水下功夫做透,水上才能顺风顺水。
上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 40 下一页
摘要: volatile适用场景值得一说的是volatile 变量的单次读/写操作可以保证原子性的,如 long 和 double 类型变量,但不能保证 i++的原子性,因为本质上 i++是读、写两次操作。在一些特殊的场景下可以代替 Synchronized。必须同时满足下面两个条件,才能保证线程安全。(1 阅读全文
posted @ 2020-05-18 22:09 北方寒士 阅读(1661) 评论(0) 推荐(0) 编辑
摘要: Synchronized锁的状态不可获取用于少量代码同步。Lock锁的状态可以获取,用于大量代码同步。 阅读全文
posted @ 2020-05-17 14:46 北方寒士 阅读(362) 评论(0) 推荐(0) 编辑
摘要: 一. synchronized的三种应用方式1.作用于实例方法,当前实例加锁,进入同步代码前要获得当前实例的锁;(一例一锁,两例两锁)一个对象一把锁说的就是这个,当线程获取了该对象的锁后,其他线程无法获取该对象的锁,当然就访问不了该对象的synchronized方法,可以访问该对象的其他未被sync 阅读全文
posted @ 2020-05-17 13:09 北方寒士 阅读(111) 评论(0) 推荐(0) 编辑
摘要: Map 线程安全四种方法: 1、使用 synchronized 关键字,代码如下 synchronized(anObject) { value = map.get(key); } 2、使用 JDK1.5提供的锁(java.util.concurrent.locks.Lock) lock.lock() 阅读全文
posted @ 2020-05-17 10:57 北方寒士 阅读(3006) 评论(0) 推荐(0) 编辑
摘要: 一. JVM内存结构图(JDK1.6) pc(程序计数器):保存当前线程正在执行的字节码的行号,线程私有;JVM栈:栈里面存放着方法的基本数据类型和对象的引用,线程私有; 局部变量表:方法中定义的局部变量都会存放在局部变量表。​操作数栈:操作数栈将变量之间的运算入栈,存储计算结果,再出栈赋值给局部变 阅读全文
posted @ 2020-05-16 07:08 北方寒士 阅读(432) 评论(0) 推荐(0) 编辑
摘要: 一. jdk/jre/jvm/jit关系图 二. java基本概念 Java类加载器(Java Classloader): 是Java运行时环境(JRE)的一部分, 负责动态加载Java类到JVM的内存空间中JVM:一种能够运行Java字节码(Java bytecode)的虚拟机。字节码:字节码是已 阅读全文
posted @ 2020-05-14 15:52 北方寒士 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 服务限流算法有哪些 计数器法(固定窗口):原理就是限制每秒处理请求数不超过阈值。比如一个接口一分钟可以处理1000次请求,那么可以设置一个计数器,当有一次请求过来,计数器就加1,如果一分钟以内计数器超过了1000,那么后面再过来的请求就不再处理;但是这个方法的缺点也很明显,因为请求的访问不一定是很平 阅读全文
posted @ 2020-04-25 21:47 北方寒士 阅读(1264) 评论(0) 推荐(0) 编辑
摘要: 1. i am a student《=》tneduts a ma i 两边对称 void flipString(char*arr,int lowIndex,int len) { if(len<2){ return; } int highIndex = len-1;while (lowIndex < 阅读全文
posted @ 2020-04-17 08:18 北方寒士 阅读(124) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2020-03-21 11:09 北方寒士 阅读(127) 评论(0) 推荐(0) 编辑
摘要: (1)先对数组进行快速排序 (2)左右指针查找 void findSumEqualTarget(int[] arr, int target,int len) { int first = 0; int last = len-1; int sum = 0; while(first < last ) { 阅读全文
posted @ 2020-03-17 21:42 北方寒士 阅读(600) 评论(0) 推荐(0) 编辑
上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 40 下一页