- 博客(15)
- 收藏
- 关注
原创 JDK1.8 LinkedHashMap的实现原理
LinkedHashMap,顾名思义连接的HashMap,它继承了HashMap,HashMap为了避免碰撞,因此用拉链法解决冲突,读过HashMap源码的读者可能会想:HashMap桶中的节点本来就是连接的呀?为什么还要引入LinkedHashMap呢?HashMap中的连接只是同一个桶中的元素连接,而LinkedHashMap是将所有桶中的节点串联成一个双向链表。 如下图所示: ...
2018-04-17 14:14:42 3090 2
原创 ThreadPoolExecutor源码分析
ThreadPoolExecutor继承AbstractExecutorService,层级实现了ExecutorService,ExecutorService继承了Executor1 . Executor Executor提供了一种解耦任务提交与任务如何运行的 execute(Runnable command)方法,例如创建线程并启动是这样的:new Thread(()->...
2018-04-16 10:52:52 239
原创 leetcode-删除数组重复的元素
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素必须是 1 和 2。你不需要考虑数组中超出新长度后面的元素。class So...
2018-04-13 14:49:12 1066 2
原创 leetcode-初级算法-异或
给定一个整数数组,除了某个元素外其余元素均出现两次。请找出这个只出现一次的元素。备注:你的算法应该是一个线性时间复杂度。 你可以不用额外空间来实现它吗?class Solution { public int singleNumber(int[] nums) { int result = 0; for(int i = 0;i < nums...
2018-04-13 14:47:38 246
原创 聊天-微信小程序websocket
效果图: chat.jsvar utils = require("../../utils/util.js")Page({ /** * 页面的初始数据 */ data: { newsList:[], input:null, openid:null }, /** * 生命周期函数--监听页面加载 */ onLoad: ...
2018-04-13 14:43:29 6997 5
原创 渐变色canvas-微信小程序
效果图如下: index.jsPage({ /** * 页面的初始数据 */ data: { windowWidth:null, windowHeight:null, }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { this.setData({ ...
2018-04-13 14:38:10 2137
原创 微信天气小程序
先附上成果图 index.jsPage({ /** * 页面的初始数据 */ data: { count:0, flag: true, latitude:null, location:null, longitude:null, week:[ 'Mon','Tue','Wed','Thu','Fri',...
2018-04-13 14:33:44 432
原创 linux下zookeeper集群的搭建
先把zookeeper的压缩包解压到/usr/root/solr-cloud 然后改个名字复制2份 zookeeper01 zookeeper02 zookeeper03 (zookeeper集群最少需要3个zookeeper,因为zookeeper投票选举leader是按超过总数一半来决定的) 分别在每个zookeeper目录下创建data目录用来保存一些信息 在data...
2018-04-13 14:19:42 270
原创 Activity工作流
说到工作流,我们肯定第一时间想到的是JBPM和Activity, JBPM是使用Hibernate来管理数据库的,而Activity则是 比较开放的贴近Mybatis的风格。而现在SSH框架用的也是 越来越少了,所以Activity取代JBPM也是不远的事。Activity的github地址:https://github.com/Activiti一、导入依赖这里使用的是Activ...
2018-04-13 14:14:09 3727
原创 Shiro权限框架的使用
今天项目刚好需要权限管理功能,于是就找了两个开源的权限管理框架 Spring Security 和 Shiro。 Spring Security是一款功能很强大的一款安全管理框架 而Shiro是一款小巧而功能齐全的一款安全管理框架。 Shiro基本可以实现我们的功能,那就先了解下Shiro的具体使用吧,Spring Security在Shiro的学习之后会变得更加清晰。一,导入依赖我使...
2018-04-13 14:10:04 290
原创 CountDownLatch和CyclicBarrier解决运动员赛跑多线程问题
最近有道多线程的面试题: 五个运动员(相当于五个线程),一个裁判(Main线程),满足以下三个条件,如何实现: 1.同时起跑 2.要所有运动员都到达终点以后才能进行下一个环节 3.如果有一个运动员摔跤了(异常处理),就终止这次比赛,让所有运动员都到终点进行下个环节可以使用CountDownLatch和CyclicBarrier来解决这个问...
2018-04-11 21:20:32 984 2
原创 ConcurrentHashMap之核心方法分析(JDK1.8)
ConcurrentHashMap是java.util.concurrent并发包下的一个类,相比jdk1.7,jdk1.8使用了cas来替代分段锁,其和HashMap一样底层使用了数组+链表+红黑树。字段 private static final int MAXIMUM_CAPACITY = 1 << 30;//最大容量 2^30 private static final i...
2018-04-09 10:35:54 196
原创 ConcurrentHashMap源码之tryPreSize
tryPreSize是ConcurrentHashMap扩容方法之一 private final void tryPresize(int size) { //如果大小为MAXIMUM_CAPACITY最大总量的一半,那么直接扩容为MAXIMUM_CAPACITY,否则计算最小幂次方 int c = (size >= (MAXIMUM_CAPACITY >>>...
2018-04-08 17:48:26 2042 1
原创 ArrayList源码学习
public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.SerializableArrayList继承了AbstractList抽象类,实现了List、RandomAccess、Serialzabl...
2018-03-28 08:45:15 166
原创 java中数组到底是一种怎么样的存在?
众所周知,在java中数组也是一种对象,而对象在被创建的时候会隐式地调用其构造方法,在字节码中为:new #1 //创建实例并将引用压入栈顶 #1为常量池中此类的符号引用dup //将栈顶元素复制一份并压栈invokespeclal #2 //将栈顶引用作为参数顶用构造方法 #2为常量池中构造方法的引用<init>创建数组对象的字节码有newarray,anewarray,以及m...
2018-03-25 18:48:42 2728
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人