- 博客(17)
- 资源 (1)
- 收藏
- 关注
原创 ThreadLocal源码解读
new 在new ThreadLocal的时候,采用了斐波那锲散列法生成对应的hash使得hash值分布的更加平均 private static int nextHashCode() { return nextHashCode.getAndAdd(HASH_INCREMENT); } set public void set(T value) { //从本线程拿到ThreadLocalMap Thread t = Thread.currentThread(); ThreadLocalMa
2022-03-12 09:04:49
181
原创 Semaphore和countDownLatch完全解析
Semaphore和countDownLatch差不多,都涉及到共享锁,也涉及到PROPAGATE,所以一起讲,至于ReentrantReadWriteLock以及CyclicBarrier,这个之后再说,如果不了解aqs请查看之前的博文 Semaphore Semaphore semaphore = new Semaphore(2); //设置state值 semaphore.acquire(); semaphore.release(); 初始化的时候设置一个值,如果线程acquire数量超过了这个值,
2022-03-12 09:03:56
512
原创 AQS解析(以ReentrantLock公平锁为例)
AQS解析以ReentrantLock公平锁为例 AQS中进程节点的状态 线程的2种等待模式: SHARED:表示线程以共享的模式等待锁(如ReadLock) EXCLUSIVE:表示线程以互斥的模式等待锁(如ReentrantLock),互斥就是一把锁只能由一个线程持有,不能同时存在多个线程使用同一个锁 线程在队列中的状态枚举: CANCELLED:值为1,表示线程的获锁请求已经“取消” SIGNAL:值为-1,表示该线程一切都准备好了,就等待锁空闲出来给我(比如现在头节点的值为-1,那么说明头节点
2022-03-12 09:00:40
293
原创 红黑树完全解析(基于TreeMap)
红黑树的例子 在线例子网址 https://www.cs.usfca.edu/~galles/visualization/RedBlack.html 内部节点及类定义 Get/Set方法省略 static class RBNode<K extends Comparable<K>, V> { private RBNode parent; private RBNode left; private RBNode right; private boolean color;
2022-03-09 12:16:33
523
原创 Spring AspectJ和Schema的AOP
简单例子 待增强的bean package com.smart; import com.smart.anno.NeedTest; public class NaiveWaiter implements Waiter { public void greetTo(String clientName) { System.out.println("NaiveWaiter:greet to "+clientName+"..."); } } 前置增强 package com.smart.aspectj
2021-09-12 23:00:00
159
原创 Spring AOP增强的注意
在同一个类的内部方法之间调用增强方法增强会无效,比如: 待增强的bean: package com.smart.advisor; public class Waiter{ public void serveTo(String name){ System.out.println("waiter serving "+name+"..."); //内部调用greetTo方法 greetTo(name); } public void greetTo(String name) { S.
2021-09-12 22:50:49
206
原创 redis学习--docker部署
docker run -d --name redis_test -p 44444:6379 redis:latest docker exec -it redis_test redis-cli #start with persistent storage docker run -d --name redis_test -p 44444:6379 --appendonly yes -v /home/cjs/docker/redis/redis_test_data:/data redis:latest #加
2020-08-07 02:23:24
185
原创 redis学习--7redis持久化
事务 redis单条命令保证原子性,事务不保证原子性 redis的事务: 开启事务(multi) 命令入队(…) 执行事务(exec) 放弃事务 discard 命令可以放弃 异常 编译型异常,事务中所有命令都不会执行(如语法错误) 运行时异常,其他命令可以执行,错误命令抛出(如1/0) 锁 悲观锁:无论做什么都会加锁 乐观锁:判断一下是否有人修改数据,如果修改数据,就抛弃 使用watch给变量加乐观锁,若判断在执行的时候修改了数据,则抛弃执行的操作 执行成功后,watch会自动解锁
2020-08-07 02:22:13
125
原创 redis学习--6事务,锁
事务 redis单条命令保证原子性,事务不保证原子性 redis的事务: 开启事务(multi) 命令入队(…) 执行事务(exec) 放弃事务 discard 命令可以放弃 异常 编译型异常,事务中所有命令都不会执行(如语法错误) 运行时异常,其他命令可以执行,错误命令抛出(如1/0) 锁 悲观锁:无论做什么都会加锁 乐观锁:判断一下是否有人修改数据,如果修改数据,就抛弃 使用watch给变量加乐观锁,若判断在执行的时候修改了数据,则抛弃执行的操作 执行成功后,watch会自动解锁
2020-08-07 02:21:28
128
原创 reids学习--5zset类型
Zset有序集合 zset在set基础上增加了一个排序(权值),需手动指定,分数越小,越排前面 zadd zadd name 序号 value 序号2 value2 .。。。依据序号的重要程度排序 zrange zrange name start end 查询zset中的元素,默认从小到大排序,若要从大到小,使用zrevrange zrangescore zrangebyscore name min max [withscores] 按照范围输出由小到大排序,min-max指定范围,若要输出
2020-08-07 02:20:31
246
原创 redis学习--4hash类型
Hash map集合,key-map存储 hset hset key-outer key-inner value 在key-outer中设置key-inner value这个键值对 hget hget key-outer key-inner 取出这个值 hmset hmset key-outer key-inner1 value1 key-inner2 value2 … 设置多个键值对 hmget hmget key-outer key-inner1 key-inner2… 取出多个值
2020-08-07 02:19:43
136
原创 redis学习--3set类型
set set中的值不能重复 set中的值是无序的 sadd sadd+name+value 添加value进name名的set smembers smermbers + name 查看set中的value sismember sismember+name+value 判断某一个值是不是在set中 scard scard+ name 查看set中数量 srem srem+name+value 移除set中的value srandmember srandmember+name+nu
2020-08-07 02:19:01
563
原创 redis学习--2list类型
List 可以实现栈和队列 所有list命令都是l开头的 list中值可以重复 list中无值,则自动销毁 lpush 从左入,rpush从右入 (list下标由左向右) lpush+name+value 将value从左边放入名为name的list中 rpush+name+value 相反 lrange lrange+name+start+end 将名为name的list中下标从start到end的值读取,包括end,末尾可以使用-1,此操作不会取出vlaue llen llen+name
2020-08-07 02:18:08
177
原创 redis学习--1基本使用+string类型
基本使用 使用select切换数据库,默认16个数据库,可在配置databases选项更改 dbsize查看数据库空间 keys * 查看所有key值 exists +key 查看key值是否存在 flushall 清空所有数据库16个 flushdb 清空当前数据库 数据类型 redis-key move move+key+DBnumber 将当前数据库值移动到第几个数据库 set set+key+value 设置键值对 expire expire + key+ secon
2020-08-07 02:17:17
179
原创 linux--iptables学习总结
pkts:对应规则匹配到的报文的个数。 bytes:对应匹配到的报文包的大小总和。 target:规则对应的target,往往表示规则对应的"动作",即规则匹配成功后需要采取的措施。 prot:表示规则对应的协议,是否只针对某些协议应用此规则。 opt:表示规则对应的选项。 in:表示数据包由哪个接口(网卡)流入,我们可以设置通过哪块网卡流入的报文需要匹配当前规则。 out:表示数据包由哪个接口(网卡)流出,我们可以设置通过哪块网卡流出的报文需要匹配当前规则。 source:表示规则对应的源头地址,可以是.
2020-07-28 22:34:19
949
原创 pandas.read_csv()方法参数
shkiprows=n 跳过前n行 sep='::' 读取的数据使用“::”分隔读取 engine='python' 使用python加载,或者c nrows=n 只读前n行 na_values = 'NULL' # 将NULL识别为空值 parse_dates=['date_colume_name1','date_colume_name2'] 读取为日期timedelta格式 name=['colume_name1','colume_name2'] 给读取的列命名 index_col = ['...
2020-06-28 15:26:53
195
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅