- 博客(17)
- 资源 (1)
- 收藏
- 关注
原创 ThreadLocal源码解读
new在new ThreadLocal的时候,采用了斐波那锲散列法生成对应的hash使得hash值分布的更加平均private static int nextHashCode() { return nextHashCode.getAndAdd(HASH_INCREMENT);}setpublic void set(T value) { //从本线程拿到ThreadLocalMap Thread t = Thread.currentThread(); ThreadLocalMa
2022-03-12 09:04:49
153
原创 Semaphore和countDownLatch完全解析
Semaphore和countDownLatch差不多,都涉及到共享锁,也涉及到PROPAGATE,所以一起讲,至于ReentrantReadWriteLock以及CyclicBarrier,这个之后再说,如果不了解aqs请查看之前的博文SemaphoreSemaphore semaphore = new Semaphore(2); //设置state值semaphore.acquire();semaphore.release();初始化的时候设置一个值,如果线程acquire数量超过了这个值,
2022-03-12 09:03:56
476
原创 AQS解析(以ReentrantLock公平锁为例)
AQS解析以ReentrantLock公平锁为例AQS中进程节点的状态线程的2种等待模式:SHARED:表示线程以共享的模式等待锁(如ReadLock)EXCLUSIVE:表示线程以互斥的模式等待锁(如ReentrantLock),互斥就是一把锁只能由一个线程持有,不能同时存在多个线程使用同一个锁线程在队列中的状态枚举:CANCELLED:值为1,表示线程的获锁请求已经“取消”SIGNAL:值为-1,表示该线程一切都准备好了,就等待锁空闲出来给我(比如现在头节点的值为-1,那么说明头节点
2022-03-12 09:00:40
257
原创 红黑树完全解析(基于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
465
原创 Spring AspectJ和Schema的AOP
简单例子待增强的beanpackage 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
108
原创 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
173
原创 redis学习--docker部署
docker run -d --name redis_test -p 44444:6379 redis:latestdocker exec -it redis_test redis-cli#start with persistent storagedocker 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
158
原创 redis学习--7redis持久化
事务redis单条命令保证原子性,事务不保证原子性redis的事务:开启事务(multi)命令入队(…)执行事务(exec)放弃事务discard 命令可以放弃异常编译型异常,事务中所有命令都不会执行(如语法错误)运行时异常,其他命令可以执行,错误命令抛出(如1/0)锁悲观锁:无论做什么都会加锁乐观锁:判断一下是否有人修改数据,如果修改数据,就抛弃使用watch给变量加乐观锁,若判断在执行的时候修改了数据,则抛弃执行的操作执行成功后,watch会自动解锁
2020-08-07 02:22:13
106
原创 redis学习--6事务,锁
事务redis单条命令保证原子性,事务不保证原子性redis的事务:开启事务(multi)命令入队(…)执行事务(exec)放弃事务discard 命令可以放弃异常编译型异常,事务中所有命令都不会执行(如语法错误)运行时异常,其他命令可以执行,错误命令抛出(如1/0)锁悲观锁:无论做什么都会加锁乐观锁:判断一下是否有人修改数据,如果修改数据,就抛弃使用watch给变量加乐观锁,若判断在执行的时候修改了数据,则抛弃执行的操作执行成功后,watch会自动解锁
2020-08-07 02:21:28
110
原创 reids学习--5zset类型
Zset有序集合zset在set基础上增加了一个排序(权值),需手动指定,分数越小,越排前面zaddzadd name 序号 value 序号2 value2 .。。。依据序号的重要程度排序zrangezrange name start end 查询zset中的元素,默认从小到大排序,若要从大到小,使用zrevrangezrangescorezrangebyscore name min max [withscores] 按照范围输出由小到大排序,min-max指定范围,若要输出
2020-08-07 02:20:31
221
原创 redis学习--4hash类型
Hashmap集合,key-map存储hsethset key-outer key-inner value 在key-outer中设置key-inner value这个键值对hgethget key-outer key-inner 取出这个值hmsethmset key-outer key-inner1 value1 key-inner2 value2 … 设置多个键值对hmgethmget key-outer key-inner1 key-inner2… 取出多个值
2020-08-07 02:19:43
115
原创 redis学习--3set类型
setset中的值不能重复set中的值是无序的saddsadd+name+value 添加value进name名的setsmemberssmermbers + name 查看set中的valuesismembersismember+name+value 判断某一个值是不是在set中scardscard+ name 查看set中数量sremsrem+name+value 移除set中的valuesrandmembersrandmember+name+nu
2020-08-07 02:19:01
533
原创 redis学习--2list类型
List可以实现栈和队列所有list命令都是l开头的list中值可以重复list中无值,则自动销毁lpush 从左入,rpush从右入 (list下标由左向右)lpush+name+value 将value从左边放入名为name的list中rpush+name+value 相反lrangelrange+name+start+end 将名为name的list中下标从start到end的值读取,包括end,末尾可以使用-1,此操作不会取出vlauellenllen+name
2020-08-07 02:18:08
155
原创 redis学习--1基本使用+string类型
基本使用使用select切换数据库,默认16个数据库,可在配置databases选项更改dbsize查看数据库空间keys * 查看所有key值exists +key 查看key值是否存在flushall 清空所有数据库16个flushdb 清空当前数据库数据类型redis-keymove move+key+DBnumber 将当前数据库值移动到第几个数据库set set+key+value 设置键值对expire expire + key+ secon
2020-08-07 02:17:17
153
原创 linux--iptables学习总结
pkts:对应规则匹配到的报文的个数。bytes:对应匹配到的报文包的大小总和。target:规则对应的target,往往表示规则对应的"动作",即规则匹配成功后需要采取的措施。prot:表示规则对应的协议,是否只针对某些协议应用此规则。opt:表示规则对应的选项。in:表示数据包由哪个接口(网卡)流入,我们可以设置通过哪块网卡流入的报文需要匹配当前规则。out:表示数据包由哪个接口(网卡)流出,我们可以设置通过哪块网卡流出的报文需要匹配当前规则。source:表示规则对应的源头地址,可以是.
2020-07-28 22:34:19
776
原创 pandas.read_csv()方法参数
shkiprows=n 跳过前n行sep='::' 读取的数据使用“::”分隔读取engine='python' 使用python加载,或者cnrows=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
162
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人