- 博客(11)
- 资源 (1)
- 收藏
- 关注
转载 并发编程可见性解决方案-MESI
在目前主流的计算机中,cpu执行计算的主要流程如图所示:数据加载的流程如下:1.将程序和数据从硬盘加载到内存中2.将程序和数据从内存加载到缓存中(目前多三级缓存,数据加载顺序:L3->L2->L1)3.CPU将缓存中的数据加载到寄存器中,并进行运算4.CPU会将数据刷新回缓存,并在一定的时间周期之后刷新回内存缓存一致性协议发展背景现在的CPU基本都是多核CPU,服务器更是提供了多CPU的支持,而每个核心也都有自己独立的缓存,当多个核心同时操作多个线程对...
2021-02-20 08:21:25
195
原创 IO多路复用模型
NIO的问题上一节通过分析及测试BIO和NIO的原理与性能,虽然NIO胜过BIO,但是随着连接的增多,每次需要遍历的连接数增大,新建立连接的速度和IO读写的速度都在降低。随着历史长河的流动,IO多路复用模型被提出BIO模型,Server端处理每一个新的连接需要抛出新线程NIO模型,解决了多个线程的问题,可以在一个线程中处理多个连接,缺点在于每次遍历所有的连接,一个一个查看有没有数据到来,假设有10K个连接,实际有数据的只有10个,那9990次read是不必要的调用展望:如果应用程序只做一
2020-12-27 16:28:44
952
原创 BIO&NIO&C10K
前言Socket通信的步骤:1,Server端服务启动,得到fd,处于LISTEN状态;2,Client端服务启动,向Server端发起连接,建立连接的第一步是Server端内核和Client端内核进行三次握手,三次握手完成之后,连接放在BACKLOG队列中,等待Server调用accept;3,Server调用accept,得到新的fd,用于Server和Client交互数据;4,Server和Clinet read、write数据内核Socket函数 SOCK_NONBLOCK. SOC
2020-12-20 10:36:02
192
1
原创 Socket通信涉及的TCP常用参数
说明:涉及参数为TCP层配置参数,与具体语言无关Server端参数public static void main(String[] args) { try { ServerSocket server = new ServerSocket(); server.bind(new InetSocketAddress(9090), BACK_LOG); server.setReceiveBufferSize(RECEI.
2020-12-19 16:18:29
923
1
原创 代码&抓包看SOCKET通信的过程
测试环境10.188.40.230 部署SocketServer10.188.40.231 部署SocketClientJDK环境:jdk8运行代码Server端import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.InetSocketAddress;impo.
2020-12-13 21:45:11
1047
原创 SocketIO基础
声明文中提到的应用程序特指JAVA应用程序本文涉及的Linux基础命令netstat -natp 查看端口相关信息lsof -p pid 查看某个进程打开的fd相关信息ls -l /proc/pid/fd 查看某个进程打开的fd相关信息什么是TCPTCP是一种面向连接的、可靠的传输协议Client(客户端)和 Server(服务端)建立连接需要经过三次握手,断开连接需要完成四次挥手什么是SocketLinux一切皆文件,Socket是其中一种文件类型ls -l..
2020-12-13 18:18:34
480
2
原创 排序算法之插入排序
原理:数组arr,1,目标:0~0有序,必然成立;2,目标:0~1有序,如果arr[1]<arr[0],交换;3,目标:0~2有序,如果arr[2]<arr[1],交换,如果arr[1]<arr[0],交换;4,目标:0~i有序,如果arr[i]<arr[i-1],交换,如果arr[i-1]<arr[i-2],交换,以此类推。。。代码:pu...
2019-01-28 21:43:03
957
原创 排序算法之冒泡排序
原理:与选择排序类似,选择排序是将小的数字往数组头部换,而冒泡排序是将大的数字向数组尾部换时间复杂度O(N2),空间复杂度O(1)代码:public static void bubbleSort(int[] arr){ for(int i=arr.length-1 ; i>=0 ; i--){ int maxIndex=i; ...
2019-01-28 20:47:11
195
原创 排序算法之选择排序
原理:某数组arr,从0开始遍历,假设当前下标为i,与之后的所有数字比较大小,如果arr[j]<arr[i],则交换位置时间复杂度O(N2),空间复杂度O(1)代码实现1://swap次数太多,性能差public static void selectionSort(int[] arr){ for(int i=0 ; i<arr.length-1 ; ...
2019-01-28 20:36:43
236
原创 Maven常用命令与Maven聚合
1,mvn -v:查看maven版本,位置,java版本、位置;2,mvn -compile :编译maven项目.java文件,生成target文件夹,包含编译后的.class文件以及运行报告等;3,mvn -test:运行测试;4,mvn -package:打包项目,生成jar包;5,mvn clean:删除项目目录下的target文件夹;6,mvn -install:安装
2016-07-19 08:50:11
876
原创 hibernate建立复合索引
1,hibernate执行复合索引两种方式在一对多的关系中,在多的一方产生做为连接的外键(只是当做外键用,数据表里边是没有外键的),当从一的一端向多的一端查询时,可能在多的一端造成全表查询问题,影响性能,所以在多的一端添加索引如下:xml:user_id_seq建立复合索引则如下,一般不会与外键复合在一起:annotati
2016-06-18 15:59:40
6694
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人