- 博客(8)
- 收藏
- 关注
转载 操作系统相关知识
1、进程和线程的区别 进程是什么、线程是什么。 进程和线程之间的关系。 2、进程间的通信方式 管道、有名管道;信号;信号量;共享内存;消息队列;套接字 3、线程间的同步方式 互斥(Lock、synchronized);信号量;事件Wait/Notify; 4、死锁产生的四个条件 互斥、占有等待、非抢占、循环等待 5、死锁处理基本策略 死锁预防:打破四个条件 死锁避免:动态检测安全...
2019-08-18 16:11:44
162
原创 HTTP相关知识回顾
1、网络模型 1.1 OSI七层网络模型 物理层、数据链路层(MAC定位)、网络层(IP地址定义子网)、传输层(TCP/UDP)、会话层、表示层、应用层 1.2 TCP/IP四层网络模型 链路层、网络层、传输层、应用层 链路层:将网络层的数据封装成以太网帧,包含源MAC地址与目标MAC地址,以太网采取广播的方式,将数据包发给子网内的所有主机,核对MAC地址,如果成功则接受数据,否则丢弃。 ...
2019-08-14 20:28:00
195
原创 Netty启动流程总结
1、什么是netty Netty,一个异步事件驱动的网络应用框架,用于快速开发可维护的高性能服务器和客户端。(对java的NIO进行封装,简化开发) 1.1 java Nio BIO模型,一个client线程请求服务端之后,服务端accept请求,并新建线程来处理请求。当并发量变大,服务端创建线程数量过多,线程上下午切换等问题造成性能下降甚至宕机,同时,如果服务端发出读事件的动作,若数据还...
2019-08-13 21:58:37
373
原创 java虚拟机(二)
JVM函数调用机制 JVM要实现直接由C语言直接调用机器指令,通过两种方式。 第一、C语言内嵌汇编,内嵌汇编只能实现C语言直接调用汇编指令,而不是机器指令,机器指令和汇编指令还是有很大差距,例:(MOV AX,1234H 对应的机器码为:B83412)。 第二、函数指针,通过函数指针,C语言可以将一个变量指向一个函数的首地址,C语言被编译时,C函数直接被编译成为机器指令,而这个函数指针将直接指向这...
2018-12-03 12:39:53
195
原创 java并发二
1、concurrentHashMap 针对jdk1.8,主要针对put方法与扩容方法。 容器往往在第一次put的时候进行初始化,默认大小16,每次扩容n<<1,即扩大一倍,通过元素的hash值与数组容量取余找到元素index,当数组长度小于64且数组容量小于负载大小的时候扩容,扩容时,会将当前链节点与树节点分成两份分别存储在原来位置与原来位置+n(数组长度)的位置,若树节点的长度小于...
2018-11-29 23:16:17
131
原创 杂文(一)
java内存回收案例一 Vector v = new Vector(10); for (int i = 1; i < 100; i++) { Object o = new Object(); v.add(o); o = null; } 循环创建对象存入vector之后,手动将内部变量o释放,否则涉及到内存泄漏问题 ...
2018-11-28 18:36:26
222
原创 java虚拟机(一)
1、java如何不关注底层技术细节实现兼容性? 使用中间语言 ,通过中间语言实现跨平台兼容的目标。 2、中间语言不是本地机器指令,机器cpu无法直接识别,因此中间语言不能直接在物理cpu上直接执行,怎么解决? 用虚拟机来解释中间语言,将中间语言翻译成对应的本地机器指令。 3、将中间语言翻译成本地机器码的方法? 第一、用C/C++语言为每一个java字节码写一个对应的实现函数。 第二、将java字节...
2018-11-28 10:25:41
163
原创 java并发一
java 自旋锁、偏向锁、轻量级锁、重量级锁 https://blog.youkuaiyun.com/zqz_zqz/article/details/70233767 synchronized、volatile、final关键字 synchronized:满足原子性(类似事物)、有序性(禁止处理器重排序)、可见性(新改变的值对其他线程可见) volatile:满足有序性、可见性 AQS与CAS https:...
2018-11-16 15:26:59
123
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅