- 博客(48)
- 收藏
- 关注

原创 JVM类加载、概念和高级特性
目录虚拟机类加载机制概念类加载过程:加载验证准备解析初始化类加载器双亲委派模型虚拟机字节码执行引擎栈帧局部变量表操作数栈动态链接程序编译与代码优化虚拟机类加载机制概念1、类加载机制:描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。2、类型的...
2019-07-07 13:33:23
257
1

原创 JVM内存分配和GC
目录说明内存分配一、Java虚拟机栈二、Java堆三、方法区四、运行时常量池五、程序计数器六、本地方法栈七、直接内存对象内存划分一、本地线程分配缓冲(TLAB)二、对象创建流程三、JVM调参1、堆内存2、栈内存3、方法区4、本地直接内存5、其它对象内存布局1、对象头2、实例数据3、对其填充对象访问定位垃...
2019-05-10 11:35:14
849
1

原创 Java多线程基础
目录同步方式常用对象一、volatile变量二、ThreadLocal三、Future四、ExecutorCompletionService五、Thread并发容器一、ConcurrentHashMap二、CopyOnWriteArrayList线程池一、ExecutorService疑问基础一、概念二、注意点三、其它java...
2018-11-02 11:59:36
256

原创 Java多线程并发工具类
目录 AbstractQueuedSynchronizer一、闭锁CountDownLatch二、栅栏CyclicBarrier三、信号量Semaphore四、FutureTask五、Exchanger AbstractQueuedSynchronizer是一个用于构建锁和同步器的框架;CountDownLatch、Semaphore、FutureTask都...
2018-10-18 21:16:24
401

原创 Java线程池的使用
一、设置线程池的大小考虑因素1、计算密集型(可考虑设置线程池大小为:cpuNum+1)、IO密集型2、任务等待时间、任务计算时间两者的比值3、其它:内存、文件句柄、套接字句柄、数据库连接等线程池大小 = cpuNum*目标cpu使用率*(1+任务等待时间/任务计算时间)0<=目标cpu使用率<=1获得CPU个数:int cupNum = Runtime.g...
2018-10-18 17:14:32
283
原创 四舍五入方法耗时排序
public static void main(String[] args) { double d = (double) 250 / 365; long t33 = System.currentTimeMillis(); String aa33= formatDouble3(d); System.out.println("值:"+aa33+";耗时:"+ (System.currentTimeMillis() - t33)+"ms ; :"+ d); System.
2020-09-11 14:43:35
190
原创 LoadingCache注意点
一、expireAfterWrite和refreshAfterWrite区别1、expireAfterWrite每次缓存失效LoadingCache都会去调用我们实现的load方法去重新加载缓存,在加载期间,所有线程对该缓存key的访问都将被block。所以如果实际加载缓存需要较长时间的话,这种方式不太适用。从代码中还可以看到,即使在CacheLoader实现了reload方法,也不会被调用,因为reload只有当设置了refreshAfterWrites时才会被调用。2、refreshAfte
2020-08-13 11:47:10
2110
原创 如何保证Redis与数据库的一致性
1、参考缓存更新的套路:https://coolshell.cn/articles/17416.html#Write_Behind_Caching_Pattern先上一个错误操作示范操作方法:先删除缓存,然后再更新数据库,而后续的操作会把数据再写入到的缓存中。存在的问题:查询请求没hit到缓存会把旧数据更新到缓存中。解释:两个并发操作,一个是更新操作,另一个是查询操作,更新操作删除缓存后,查询操作没有命中缓存,先把老数据读出来后放到缓存中,然后更新操作更新了数据库。于是,在缓存中的.
2020-06-28 23:22:50
591
原创 统一身份管理系统
1、什么是SSO单点登录的英文名叫做:Single Sign On(简称SSO)CAS (Central Authentication Service)https://zhuanlan.zhihu.com/p/660373422、平台级 SAAS 架构的基础:统一身份管理系统https://www.jianshu.com/p/990d8acfdb69...
2020-04-15 00:22:58
3707
原创 秒杀系统设计
一、稳1、流量洪流的拦截前端1、前端静态资源缓存、cdn、按钮置灰、ip限流、一段时间内现在用户ip2、同一userid限制访问频率,超过频率返回同一个页面,进行限流。利用验证码防止恶意攻击。后端1、请求丢到mq中按照消息队列进行处理,进行削峰2、因为秒杀是读多写少,把库存数据预先加载到Redis中,库存数据和相关计算在redis中进行。在redis中查询:总库...
2019-10-06 10:37:44
243
原创 频繁full gc cpu 100%
toptop命令查看后,发现cpu占用比较高,对应的pid是205494top -Hp 205494查看对应进程下,是哪些线程占用的cpu比较高,发现pid为205599printf "%x\n" 205599把对应的pid转成16进制便于查看,得到3231fjstack205494 > mylog.txt查看线程Java堆栈信息,猜测可能和cp...
2019-08-27 11:54:01
871
原创 数据结构
1、数据结构基础(数组、链表、栈、队列)https://www.cnblogs.com/jimoer/p/8783604.html2、排序算法https://blog.youkuaiyun.com/hellozhxy/article/details/799118673、treemap和红黑树https://blog.youkuaiyun.com/cyywxy/article/details...
2019-08-23 11:45:23
238
原创 Nginx
1、反向代理:https://www.cnblogs.com/ysocean/p/9392908.html2、线程模型:https://www.jianshu.com/p/adc35c1393c63、epoll:https://www.jianshu.com/p/397449cadc9aLinux中提供的epoll相关函数如下:int epoll_create(int size)...
2019-08-20 00:59:54
151
原创 Mysql事务隔离级别
一、事务的基本要素(ACID) 1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位。 2、一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 。比如A.........
2019-07-25 17:25:58
162
1
原创 mysql innodb索引和myisam索引区别
myisam1、不支持事务和行级锁,崩溃后无法安全恢复,将数据写到内存中,等待操作系统定期将数据刷到磁盘上。2、压缩表,解压时不需要解压整个表(甚至不解压行所在的整个页面)3、插入速度快,适合一次insert后只查询的场景。4、使用前缀压缩来减少索引的大小,从而让更多索引放入内存中,默认只压缩字符串,可以通过参数设置对整数进行压缩。1、前缀压缩参数pack_keys,在IO...
2019-07-21 00:27:26
284
原创 面试题
java必看:https://blog.youkuaiyun.com/zengshaotao/article/details/84859560java :https://blog.youkuaiyun.com/qq280130640/article/details/86706331面试题必看:https://www.cnblogs.com/java1024/p/8594784.html...
2019-07-14 21:53:34
163
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人