优化

java编译器对string常量表达式的处理和优化

扶醉桌前 提交于 2019-12-26 20:16:49
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 首先把问题摆出来,先看这个代码 String a = "ab"; String b = "a" + "b"; System.out.println((a == b)); 打印结果会是什么?类似这样的问题,有人考过我,我也拿来考过别人(蛮好玩的,大家也可以拿来问人玩),一般答案会是以下几种: 1.true "a" + "b" 的结果就是"ab",这样a,b都是"ab"了,内容一样所以"相等",结果true 一般java新人如是答。 2.false "a" + "a"会生成新的对象"aa",但是这个对象和String a = "ab";不同,(a == b)是比较对象引用,因此不相等,结果false ,对java的String有一定了解的通常这样回答。 3.true String a = "ab";创建了新的对象"ab"; 再执行String b = "a" + "b";结果b="ab",这里没有创建新的对象,而是从JVM字符串常量池中获取之前已经存在的"ab"对象。因此a,b具有对同一个string对象 的引用,两个引用相等,结果true. 能回答出这个答案的,基本已经是高手了,对java中的string机制比较了解。 很遗憾,这个答案,是不够准确的。或者说,根本没有运行时计算b = "a" + "b";这个操作

Java性能优化的五种方式

我的梦境 提交于 2019-12-25 04:28:41
J ava性能优化的五种方式 一,JAVA性能优化之设计优化 设计优化处于性能优化手段的上层。它往往须要在软件开发之前进行。在软件开发之前,系统架构师应该就评估系统可能存在的各种潜在问题和技术难点,并给出合理的设计方案,因为软件设计和系统架构对软件总体设计质量有决定性的影响。所以,设计调优对系统的性能影响也是最大的,假设说,代码优化。JVM优化都是对系统微观层次的“量”的优化,那设计优化就是对系统”质”的优化. 设计优化的一大显著特征是:它能够规避某一个组件的性能问题,而是改良组件的实现;比方:组件A通过循环监控不断的检測时间E是否发生,其检測行为必定会占用部分系统资源,因此,开发者必须检測频率和资源消耗上取得平衡,假设检測频率太低,尽管降低了资源消耗,可是系统实时反应性就会降低,假设进行代码层的调优,就须要优化检測方法的实现及要求得一个最为恰当的检測频率.对于这个问题我们就能够用设计模式中的观察者模式 ,当事件E发生的时刻,由事件E通知组件A,从而触发组件A的行为.这样的设计从根本上攻克了存在性能隐患的循环监控,从根本上攻克了这一问题. 进行设计优化时,设计人员和必须熟悉经常使用的设计方法,设计模式,以及主要的性能组件和经常使用的优化思想,并将其有机地集成在软件系统中. 注意:一个良好的系统设计能够规避非常多潜在在的性能问题.因此,尽可能多花些时间在系统设计上

【讨论】从技术角度分析铁路系统订票改进方案

怎甘沉沦 提交于 2019-12-25 02:08:03
针对铁路网站订票系统频繁的访问出错,无法订票问题,虽然很多讨论都是从制度,社会等方面做了分析,从技术角度是否能够完美解决呢?从技术方面分析该订票网站,可以看出,还是有很大的优化方案可以应用的。 下文只是根据自己的一些经验加上一些分析做如下方案,希望可以抛砖引玉吧,大家都来讨论下如果我们要做这样的一个系统,会如何进行系统的设计。 如果有分析不对的地方欢迎指证,但请勿恶言攻击。 优化一:前端优化 铁道部运输局的相关人士关于网站登陆难、提交订单过慢、余票无法查询等问题的解释称,是因为订票期间系统的访问量是平时的数十倍,导致出现异常。那么仅是由于这样的客观原因么? 打开订票网站首页查看网络请求:206.9 KB (112.2 KB 来自缓存),其中网页的请求只有9 KB(1.4 KB 来自缓存),JS:133 KB(81 KB 来自缓存),css:33.8 KB,图片:31.1 KB,另外网页中的CSS以及JS都未进行压缩,另外所有资源地址都是:dynamic.12306.cn,也就是说资源文件和程序文件都在一组服务器中,如果对这些信息进行压缩,那么至少可以减少50%的网络负载。另外,如果将资源文件分发到其他服务器中,并且使用CDN进行分发,打开网站的速度可以进一步优化。另外,当提交表单或刷新页面时,资源文件还需要多次加载,也进一步增加了网络访问。 优化二:排队机制 根据数据

前端面试题

给你一囗甜甜゛ 提交于 2019-12-24 21:40:13
文章目录 理论题 前端页面有哪三层构成,分别是什么?作用是什么? JavaScript 的组成 对BFC规范的理解 线程与进程的区别 什么叫优雅降级和渐进增强? 请解释一下 JavaScript 的同源策略 一个页面上有大量的图片(大型电商网站),加载很慢,你有哪些方法优化这些图片的加载,给用户更好的体验。 闭包是什么,有什么特性,对页面有什么影响? 网站重构的理解 检测浏览器版本版本有哪些方式 区分什么是“客户区坐标”、“页面坐标”、“屏幕坐标”? 描述浏览器的渲染过程,DOM 树和渲染树的区别 如何进一步检测引用数据类型 documen.write和 innerHTML 的区别? 在JavaScript中使用innerHTML的缺点是什么? 把 Script 标签 放在页面的最底部的body封闭之前 和封闭之后有什么区别?浏览器会如何解析它们? DOM操作——怎样添加、移除、移动、复制、创建和查找节点。 split() join() 的区别 数组方法pop() push() unshift() shift() JavaScript有几种类型的值? Javascript如何实现继承? javascript创建对象的几种方式? Javascript作用域链? 谈谈This对象的理解。 说明this几种不同的使用场景 什么是window对象? 什么是document对象?

单调队列(多重背包优化铺垫)

╄→尐↘猪︶ㄣ 提交于 2019-12-22 17:55:32
文章目录 我为什么想写这篇单调队列的总结 单调队列是什么、怎么理解 单调队列有什么用 先举个🌰去感受它的 操作过程 单调队列作用 单调队列实例解析 :最大子序和 思路如下: 题解如下 一: 题解如下 二: 题解如下 三: 我为什么想写这篇单调队列的总结 一个原因是我在在看背包问题里的 多重背包解题优化 的时候后看到了 一种算是我现在知道最高效的一个优化方法,了解到可以用 单调队列优化 去大大的减小运算复杂度,然后就到百度上搜索学习,看到了一些 较好的博文 、 讲解视频 ,所以有我写的这篇一些东内容是从中借用的,但是大部分文章还讲的 有难以理解。所我想先总结一下这个单调队列的用法,并以我认为简单的方式总结好,并希望能帮助其它的人 单调队列是什么、怎么理解 从字面 单调 我们可以知道它就是 从大到小 或 者从小到大 排列的一组连续的数.我认为他最重要的 核心是:它所确定的 单调性 一定是在一定是 在当前的某个限制个范围上的 (他最重要的就是这个 范围限制,否则的话 直接找就好了,何必这么麻烦呢), 在这个范围上 有最大或最小值,这是最重要的 它的应用也是建立在这个基础上的。我认为 也可以把单调队列看作是一个解题的思想来看待它。 单调队列有什么用 先举个🌰去感受它的 操作过程 举个例子:有 7 6 8 12 9 10 3 七个数字,现在让你找出范围 [ i-3,i ] (i<=1 &&

2020年搜索优化方向

半世苍凉 提交于 2019-12-19 23:04:44
转眼19年就将翻篇,跨入2020,站长们私下也都在总结一年网站运营经验,预测明年搜索优化的方向,其中就有大佬对明年的Google搜索趋势做出了一个预判,站长们可以参考下。 2020年搜索优化方向 网站优化 搜索引擎 Google 微新闻 第1张 影响力 过去的搜索,更多的是注重于具体的一个两个指标,而现在有一个趋势就是影响力营销,那些有影响力的人或者某个账号,背后可能有一个团队在运营,也可能是一个非常有创造力的有魅力的个人。其实也就是所谓的个人IP 他们通过一个网站,或者一个Blog,再或者是一个社交媒体的账号,对这个世界,这个互联网展示他们的影响力。同这些账号,这些有影响力的个人做合适的互动,他们会给你的网站带来好处的。 域名的权威性 对于 Google 搜索来说,它做出了很大的改变,E-A-T,代表了专业,权威,信赖度。 Google 搜索越来越重视单个指标,每个特殊的专业领域,Google 都希望标识出最为专业的专家,网站要有隐私政策和免责声明来保持透明度。 移动端优化 显然移动优化已经是非常重要的了,移动用户友好界面也是更加重要了,移动前端的重要性也在提升,移动设备载入网站时,减少一秒都很有用。 品牌建设 当然要建设好一个网站,建设品牌的要素也能够帮助网站获得必要的高质量链接。 人工智能 很多时候我们不知道人工智能可以帮助我们做哪些工作,现在 Google

2020年搜索优化方向

落爺英雄遲暮 提交于 2019-12-19 23:04:26
转眼19年就将翻篇,跨入2020,站长们私下也都在总结一年网站运营经验,预测明年搜索优化的方向,其中就有大佬对明年的Google搜索趋势做出了一个预判,站长们可以参考下。 2020年搜索优化方向 网站优化 搜索引擎 Google 微新闻 第1张 影响力 过去的搜索,更多的是注重于具体的一个两个指标,而现在有一个趋势就是影响力营销,那些有影响力的人或者某个账号,背后可能有一个团队在运营,也可能是一个非常有创造力的有魅力的个人。其实也就是所谓的个人IP 他们通过一个网站,或者一个Blog,再或者是一个社交媒体的账号,对这个世界,这个互联网展示他们的影响力。同这些账号,这些有影响力的个人做合适的互动,他们会给你的网站带来好处的。 域名的权威性 对于 Google 搜索来说,它做出了很大的改变,E-A-T,代表了专业,权威,信赖度。 Google 搜索越来越重视单个指标,每个特殊的专业领域,Google 都希望标识出最为专业的专家,网站要有隐私政策和免责声明来保持透明度。 移动端优化 显然移动优化已经是非常重要的了,移动用户友好界面也是更加重要了,移动前端的重要性也在提升,移动设备载入网站时,减少一秒都很有用。 品牌建设 当然要建设好一个网站,建设品牌的要素也能够帮助网站获得必要的高质量链接。 人工智能 很多时候我们不知道人工智能可以帮助我们做哪些工作,现在 Google

2020年搜索优化方向

让人想犯罪 __ 提交于 2019-12-18 17:44:15
转眼19年就将翻篇,跨入2020,站长们私下也都在总结一年网站运营经验,预测明年搜索优化的方向,其中就有大佬对明年的Google搜索趋势做出了一个预判,站长们可以参考下。 2020年搜索优化方向 网站优化 搜索引擎 Google 微新闻 第1张 影响力 过去的搜索,更多的是注重于具体的一个两个指标,而现在有一个趋势就是影响力营销,那些有影响力的人或者某个账号,背后可能有一个团队在运营,也可能是一个非常有创造力的有魅力的个人。其实也就是所谓的个人IP 他们通过一个网站,或者一个Blog,再或者是一个社交媒体的账号,对这个世界,这个互联网展示他们的影响力。同这些账号,这些有影响力的个人做合适的互动,他们会给你的网站带来好处的。 域名的权威性 对于 Google 搜索来说,它做出了很大的改变,E-A-T,代表了专业,权威,信赖度。 Google 搜索越来越重视单个指标,每个特殊的专业领域,Google 都希望标识出最为专业的专家,网站要有隐私政策和免责声明来保持透明度。 移动端优化 显然移动优化已经是非常重要的了,移动用户友好界面也是更加重要了,移动前端的重要性也在提升,移动设备载入网站时,减少一秒都很有用。 品牌建设 当然要建设好一个网站,建设品牌的要素也能够帮助网站获得必要的高质量链接。 人工智能 很多时候我们不知道人工智能可以帮助我们做哪些工作,现在 Google

重塑云上的 Java 语言

孤者浪人 提交于 2019-12-17 03:59:43
音乐无国界,但是音乐人有国界。 云原生亦如此。虽没有限定的编程语言,但应用所使用的编程语言已经决定了应用部署运行的行为。 Java 诞生于20年前,拥有大量优秀的企业级框架,践行 OOP 理念,更多体现的是严谨以及在长时间运行条件下的稳定性和高性能。反观如今,在要求快速迭代交付的云场景下,语言的简单性似乎成了首要的要求,而传统的 Java 语言显得有一些过于重量了。 本文由阿里巴巴 JVM 团队技术专家郁磊(花名:梁希)分享 JVM 团队是如何面对和处理集团巨大的业务规模和复杂的业务场景的。 ElasticHeap Java 常因为耗资源而受诟病,其中最显著一点就是 Heap 对内存的占用,即便没有请求在处理也没有对象分配,进程仍然会保留完整的堆内存空间,保障 GC 进行分配内存和操作内存的快速敏捷。 AJDK ZenGC/ElasticHeap 双十一全面支持核心链路上百应用和数十万实例。 JDK12 开始支持固定时间的触发 concurrent mark 并在 remark 中收缩 Java 堆归还内存的功能,然而并未解决在 stw 中增加暂停时间的问题,因此无法在每次 young GC 时做内存归还。 ElasticHeap 在并发异步线程中完成内存处理反复 map/unmap 以及 page fault 的开销,因此任意一次 young GC 都可以敏捷的及时归还内存

重塑云上的 Java 语言

余生颓废 提交于 2019-12-16 16:39:36
音乐无国界,但是音乐人有国界。 云原生亦如此。虽没有限定的编程语言,但应用所使用的编程语言已经决定了应用部署运行的行为。 Java 诞生于20年前,拥有大量优秀的企业级框架,践行 OOP 理念,更多体现的是严谨以及在长时间运行条件下的稳定性和高性能。反观如今,在要求快速迭代交付的云场景下,语言的简单性似乎成了首要的要求,而传统的 Java 语言显得有一些过于重量了。 本文由阿里巴巴 JVM 团队技术专家郁磊(花名:梁希)分享 JVM 团队是如何面对和处理集团巨大的业务规模和复杂的业务场景的。 ElasticHeap Java 常因为耗资源而受诟病,其中最显著一点就是 Heap 对内存的占用,即便没有请求在处理也没有对象分配,进程仍然会保留完整的堆内存空间,保障 GC 进行分配内存和操作内存的快速敏捷。 AJDK ZenGC/ElasticHeap 双十一全面支持核心链路上百应用和数十万实例。 JDK12 开始支持固定时间的触发 concurrent mark 并在 remark 中收缩 Java 堆归还内存的功能,然而并未解决在 stw 中增加暂停时间的问题,因此无法在每次 young GC 时做内存归还。 ElasticHeap 在并发异步线程中完成内存处理反复 map/unmap 以及 page fault 的开销,因此任意一次 young GC 都可以敏捷的及时归还内存