- 博客(13)
- 资源 (8)
- 收藏
- 关注
原创 Java volatile
前景提示:(多核CPU下)每次线程从内存里读写线程共享的变量,会将内存的变量复制到CPU缓存里再进行读写,导致内存的数据发生变化,处于某个CPU的线程不一定能拿到已经发生变化的实时数据,读写的是CPU缓存的数据MESI(缓存一致性协议):当CPU写数据时,如果发现操作的变量是共享变量,即在其他CPU中也存在该变量的副本,会发出信号通知其他CPU将该变量的缓存行置为无效状态,因此当...
2019-08-30 10:57:10 116
原创 Synchronized实现原理
参考1 参考21 Synchronized的三种应用方式1.1 修饰实例方法对象锁,进入同步代码需要获得当前实例对象的锁1.2 修饰静态方法类锁,进入同步代码需要获得当前类对象的锁1.3 修饰代码块对象锁,进入同步代码库前要获得给定对象的锁2 Synchronized实现互斥锁通过管程对象(又称monitor对象或监视器锁),每个对象都存在...
2019-08-29 13:34:00 162
原创 二叉树遍历
根据根节点的顺序 分为:前序/中序/后序例如上图: A:根节点 B:左节点 C:右节点前序遍历:ABC(顺序:根,左,右)中序遍历:BAC(顺序:左,根,右)后序遍历:BCA(顺序:左,右,根)案例:比如上图二叉树遍历结果前序遍历:ABCDEFGHK中序遍历:BDCAEHGKF后序遍历:DCBHKGFEA可以总结一些特点:特性A,对于...
2019-08-26 09:05:24 420
原创 Java JVM
1 运行时内存数据1.1 线程私有:虚拟机栈:每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表(基础数据类型+对象引用),操作数栈,方法返回信息等数据。从方法调用直至执行完成的过程对应着一个栈帧在 Java 虚拟机栈中入栈和出栈的过程。注:当线程请求栈的深度超过当前Java虚拟机栈的最大深度的时候,就抛出SOF异常当线程请求栈时内存用完了,无法再动态扩展会抛...
2019-08-26 09:05:08 343
原创 链表(从尾到头打印链表)
题目:输入一个链表,按链表从尾到头的顺序返回一个ArrayList public class Solution { ArrayList<Integer> arrayList=new ArrayList<Integer>(); public ArrayList<Integer> printListFromTailT...
2019-08-22 20:48:50 133
原创 字符串(替换空格)
题目:请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy思路:用String.replace函数public class Solution { public String replaceSpace(StringBuffer str) { return str...
2019-08-22 20:40:21 559
原创 数组(二维数组的查找)
题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数思路:遍历,由于从左到右,从上到下递增,那么某一个数,比它小的一定在其左下方例如:下图中,target为3时,比较到第一行的4时,由于小于4,target一定小于第3列后面的元素 ...
2019-08-22 20:07:20 128
原创 一致性Hash算法
常规Hash(散列)是通过取模将数据均匀的放置在各个节点,在网络请求里适合用于负载均衡(例如nginx里可以配置成Hash的负载,确保每个IP的请求走固定服务器)。常规hash取余(取模):这样的配置不需要Session共享,因为每次IP都是访问固定服务器。问题来了 :一旦某台机器崩掉了或者想增加一台机器抗压,此时hash取模时,原本IP访问的固定服务器会改变(可能所有已登录的用户...
2019-08-09 17:01:57 743
原创 取模运算和取余运算
对于整数 a,b 来说,取模运算(mod)或者取余运算(rem)的方法要分如下两步:1、求整数商:c=a/b2、计算模或者余数:r=a-(c*b)求模运算和求余运算在第一步不同取余运算在计算商值向0方向舍弃小数位取模运算在计算商值向负无穷方向舍弃小数位例如:1.ab符号位不一致时:4/(-3) 约等于 -1.3在取余运算时候商值向 0 方向舍弃小数位为...
2019-08-08 16:52:33 3651
原创 Java HashMap解析
HashMap:数组+链表(或红黑树)Hash碰撞:所谓“碰撞”就是多个hash值不同的元素计算得出同一个桶(相同的数组下标),在put时出现冲突桶:数组里的每一个元素Q:怎么计算key对应的数组下标?A:put()方法里,将hash值和(数组容量-1)进行异或(&)操作(取hash的低位)注:在put()方法里,需要根据hash值拿到对应的数组下标:...
2019-08-06 17:39:40 862
转载 java基础 基本位运算
1. 2进制和10进制转换1.1 2转10Java:Integer.valueOf("0101",2).toString;1.2 10转2JAVA:Integer.toBinaryString(int i);2.原码/补码/反码在Java中,所有正数/负数 的表示方式都是以补码形式来表示正数:原码、反码、补码相同负数:对原码进行符号位...
2019-08-06 13:50:25 823
原创 CAS登录登出
CAS实现CAS理论CAS:中央认证服务,解决sso单点登录问题登录:登出:A系统结束本地Session,然后通知CAS结束Session,CAS通知各个子系统结束Session...
2019-08-01 21:57:00 1367 1
原创 spring security (originalChain和additionalFilters)
Spring Security过滤器其实分成2部分:originalChain 和additionalFilters顺序就是先走我们定义的过滤器(additionalFilters),然后再走内部过滤器(originalChain)代码实例:我们配置在httpSecurity的都是在additionalFilters里,在WebSecurity里配的在originalChain里...
2019-08-01 09:26:14 2076 3
rabbitmq实战指南
2019-05-05
深入分析Java Web技术内幕
2019-03-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人