- 博客(14)
- 收藏
- 关注
原创 消息中间件
1.什么是消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流;并基于数据通信来进行分布式系统的集成;通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信;2.消息中间件的应用场景跨系统数据传递、高并发流量削峰、数据异步处理3.常用的消息中间件AcitveMQ,RabbitMQ,Kafka,RocketMQ4.本质一种具备接收请求、保存数据...
2019-07-02 15:26:13
129
原创 性能优化-笔迹
一.JVM参数调优 (目的:事前预防,事前准备)(1)事前预防的内容:-Xms4096m 最小堆大小-Xmx4096m 最大堆大小 不要超过物理内存的3/5,因为发生oom时要快照存储,超过3/5后则有可能快照存储不了。程序启动时操作系统并不会立即分配4G的大小,而是随着程序的运行慢慢分配到4G的空间。-XX:+AlwaysPreTouch 一启动就要分配最小堆大小的空间。...
2019-06-30 15:15:11
241
原创 类加载机制
类的生命周期:1.加载(读取二进制内容)2.验证(验证class文件格式规范,语义分析,引用验证,字节码验证)3.准备(分配内存,设置类static修饰的变量初始值)4.解析(类,接口,字段,类方法等解析)5.初始化(为静态变量赋值;执行静态代码块)6.使用(创建实例对象)7.卸载(从jvm方法区中卸载)类加载器负责装入类,搜索网络,jar,zip,文件夹,二进制数...
2019-05-29 17:51:41
400
原创 TCP/IP协议
OSI网络七层模型:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层。低三层:物理层:使原始的数据比特流能在物流介质上面传输数据链路层:通过校验,确认和反馈重发等手段,形成稳定的数据链路(01010101)网络层:进行路由选择和流量控制(IP协议)传输层:提供可靠的端口到端口的数据传输服务。(TCP/UDP)高三层:会话层:负责建立、管理和终止进程之间的...
2019-05-25 16:44:43
138
原创 线程池
线程是不是越多越好?1.线程在java中是一个对象,更是操作系统的资源,线程创建,销毁需要时间,如果创建时间+销毁时间>执行任务的时间,则不合算。2.java对象占用堆内存,操作系统线程占用系统内存,根据jvm规范,一个线程默认最大栈大小为1M,这个栈空间需要从系统内存中分配,线程过多,会消耗更多的内存。3.操作系统需要频繁切换线程上下文(大家都想被执行),影响性能。线程池管...
2019-05-22 20:23:22
133
原创 线程封闭
数据被封闭在各自的线程之中,就不需要同步,这种通过将数据封闭在线程中而避免使用同步的技术称为线程封闭。1.ThreadLocal,线程级别的变量2.局部变量,局部变量的固有属性之一就是封闭在线程中。它们位于执行线程的栈中,其他线程无法访问这个栈。也叫栈封闭。...
2019-05-22 19:17:36
163
原创 线程通信
1.文件共享2.网络共享3.共享变量3.JDK提供的线程协调API(细分:suspend/resume,wait/notify/,park/unpark)多线程协作的典型场景是:生产者-消费者模型。(线程阻塞,线程唤醒)suspend和resume容易出现死锁代码(弃用):1.在同步代码中,suspend不会释放锁。2.如果resume早于suspend调用,则不会恢复...
2019-05-22 17:49:40
219
原创 CPU缓存和内存屏障
CPU性能优化的手段-缓存为了提供程序运行的性能,现代CPU在很多方面对程序进行了优化。例如CPU高速缓存。尽可能避免处理器访问主内存的时间开销,处理器大多数会利用缓存以提高性能。CPU缓存分为3级缓存,L1,L2,L3,L1的访问速度最快,然后递减。如果机器是多核,则每个CPU对应相对的L1,L2, 而L3一般是多核共享一个。CPU在读取数据时候是按照L1,L2,L3,主内存...
2019-05-22 15:35:22
170
原创 wait和notify/notifyAll
1.wait和notify是属于Object类的方法2.需要配合synchronized关键字使用,也就是在synchronized的代码块里面使用wait,notify/notifyAll3.wait是使线程阻塞,前提是必须要获取一把锁,调用wait方法后,会释放锁,让出CPU,进入waiting状态,让其他线程去调度。4.wait和notify方法需要配合使用,都需要同一个对象去掉...
2019-05-22 14:46:29
139
原创 线程中止
不正确的线程中止方式:stop:中止线程,并会清除监控器锁的信息,但是可能会导致线程安全问题。JDK不建议使用。destory:jdk未实现此方法正确的线程中止方式:1.interrupt,如果目标线程在调用Object.wait(),wait(long)或者wait(long,int)方法、join(),join(long,int)或sleep(long,int)方法时被阻塞,那...
2019-05-22 14:13:47
220
原创 线程的状态
之前学习这块知识从网上搜了好多资料,感觉说法不一,自己也搞不清到底有哪几种状态,现在终于搞明白了,直接看jdk源码吧!在Thread类中 有个state的枚举:NEW,RUNNNABLE,BLOCKED,WAITING,TIMED_WAITING,TERMINATED的6种线程状态。这个可是官方最正确的线程状态的解释了。这些状态之间是如何转换的呢?画个图给大家解释下...
2019-05-22 11:10:43
106
原创 线程安全--synchronized和锁的理解 笔记
锁的相关概念:锁消除:比如StringBuffer 是线程安全的,里面的方法是带synchronized,在没有竞态条件的情况下,在真正执行的过程中JIT做了优化,把锁消除掉了。锁粗化:锁的范围扩大。偏向锁:避免每个对象都创建ObjectMonitor浪费资源,提出了偏向锁轻量锁(自旋锁),重量锁(监视器锁)自旋锁:为了不放弃CPU执行事件,循环的使用CAS技术对数据尝试进行更...
2019-05-13 19:51:34
109
原创 多线程编程-课堂笔记
CountDownLatch 倒数计数器public CountDownLatch(int count); //指定计数的次数,只能被设置1次public void countDown(); //调用此方法则计数减1public void await() throws InterruptedException //调用此方法会一直阻塞当前线程,直到计时器的值为0,除非...
2019-05-13 16:18:58
114
转载 线程安全--原子性理解
考虑线程安全,肯定是在多个线程并发执行的时候才会考虑线程安全,单线程的情况下是没有线程安全问题的。线程安全的一些概念:举个例子public class Test { public int i = 0; public void incr(){ i++; }}多个线程访问了相同的资源,向这些资源做了写操作时,对执行顺序有要求。临界区:incr方...
2019-05-08 17:45:12
628
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人