调优面试真题 首先我们来看问我的几道Java调优实战的面试问题: 使用“+” 拼接字符串为什么更快? 为什么final关键字现在无助于内联? 为什么外小内大的嵌套循环原则对性能提升并没有帮助? 指令重排序会导致什么结果? 什么是分布式系统中最耗时的操作? 为什么JDK和高性能产品的代码必须使用JMH ...
分类:
编程语言 时间:
2020-10-19 22:58:09
阅读次数:
30
在一男子给对象转账5000元,居然又退还了!和我就站在你面前,你却视而不见!文中,我们学习了线程安全的原子性和可见性,这篇文章就来说说有序性。有序性首先还是来看下概念,有序性就是指代码按照编写顺序执行。大家可能会有疑问,难道还会出现乱序执行吗?因为编译器为了程序性能,可能会改变代码中语句的先后顺序,也就是指令重排序。比如:Stringname="wupx";Integerage=18;编译器优化后
分类:
其他好文 时间:
2020-09-02 16:53:38
阅读次数:
42
背景打散是在推荐、广告、搜索系统的结果基础上,提升用户视觉体验的一种处理。主要方法是对结果进行一个呈现顺序上的重排序,令相似品类的对象分散开,避免用户疲劳。算法端传出的推荐结果,往往具有以下几个痛点:相似品类的商品易扎堆。显然的,如果商品的各特征相似,其获得的推荐分数也容易相近,而满目的同款肯定不是用户期望的结果。对用户的偏好捕捉太强。用户心理层面,对于隐私或者偏好被完美捕捉这件事是敏感的,过于精
分类:
编程语言 时间:
2020-08-28 14:33:00
阅读次数:
55
TSO Memory Model TSO Total Store Order。 TSO 就是在SC的基础上放松write-to-read的条件,即允许先写后读的重排序,将写操作延迟,让之后的读操作先执行(当然目前的讨论都是基于不同地址的,相同地址存在数据依赖性一般不允许重排序,但也有允许的模型)。除 ...
分类:
其他好文 时间:
2020-07-25 10:03:49
阅读次数:
82
单例模式相信大家都有所听闻,甚至也写过不少了,在面试中也是考得最多的其中一个设计模式,面试官常常会要求写出两种类型的单例模式并且解释其原理,废话不多说,我们开始学习如何很好地回答这一道面试题吧。 什么是单例模式 面试官问什么是单例模式时,千万不要答非所问,给出单例模式有两种类型之类的回答,要围绕单例 ...
分类:
其他好文 时间:
2020-07-19 11:32:33
阅读次数:
62
目录 指令重排序 指令重排序 java编程语言的语义允许编译器和微处理器执行优化 //重排序后的代码出现死循环 public class VisibilityDemo { private boolean flag = true; public static void main(String[] ar ...
分类:
编程语言 时间:
2020-07-18 15:58:57
阅读次数:
69
此题和之前的剑指offer32-I、II.从上到下打印二叉树大致相同在BFS的基础上只是添加了一个重排序的过程。具体代码如下: 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * st ...
分类:
其他好文 时间:
2020-07-18 11:18:07
阅读次数:
58
数组/对象方法 1、remove(元素筛选,分到两个数组) 2、sortedUniq (去重,排序) 3、takeRightWhile ( 从array数组的最后一个元素开始提取元素,直到 predicate 返回假值 ) 4、uniqBy (去重,排序) 5、groupBy(分组) const u ...
分类:
其他好文 时间:
2020-07-13 15:24:42
阅读次数:
72
volatile 变量提供顺序和可见性保证,例如,JVM 或者 JIT 为了获得更好的性能 会对语句重排序,但是 volatile 类型变量即使在没有同步块的情况下赋值也不会 与其他语句重排序。 volatile 提供 happens-before 的保证,确保一个线程的 修改能对其他线程是可见的。 ...
分类:
其他好文 时间:
2020-07-13 13:48:04
阅读次数:
70
1、synchronized 是悲观锁,属于抢占式,会引起其他线程阻塞。 2、volatile 提供多线程共享变量可见性和禁止指令重排序优化。 3、CAS 是基于冲突检测的乐观锁(非阻塞) ...
分类:
其他好文 时间:
2020-07-07 19:28:08
阅读次数:
65