![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 79
lllee111
这个作者很懒,什么都没留下…
展开
-
TCP的滑动窗口等提速机制
例如,A 在一次发送 上述 1 ~ 4000 的这四条数据后,如果 B 收到了 1 ~ 3000 这三条,并且 B 对这些数据的应答只传回了 针对2001 ~ 3000 的这一条,其余的都发生了丢失, 那A在收到针对2001 ~ 3000的应答之后,就认为 B 收到了 2001 ~ 3000 以及其之前的所有数据。如果数据丢失了,原创 2023-04-23 16:02:32 · 672 阅读 · 0 评论 -
网络编程套接字和 socket
在实际的客户端、服务器交互中,服务器计算响应是我们主要实现的部分,这里只是介绍 soket API,所以不对服务器功能进行设计,直接使用最简单的回显服务。传输层协议中,最主要的就是 TCP 和 UDP,这两个协议存在很大的差异,因此两组协议提供的 soket API 也存在很大的差异,这里我会通过两个简单的。中的方法解析数据报中的数据,再对这些数据进行各种操作。是一种广义的文件,相当于操作系统对网卡一类的硬件进行的扩充,我们对 socket 文件进行操作,实际上就是在对网卡等硬件设备进行操作,原创 2023-04-22 09:16:20 · 106 阅读 · 0 评论 -
多线程编程CAS与CAS中的ABA问题
这其中,第一次扣款时,CAS读取原数据值为100,与现有值100相等,进行交换,将0交换到余额中,第二次扣款时的CAS本来应该将原数据100与0比较,发现不相等,就放弃交换,但在这当中,发生了一次100的入账,导致第二次CAS将后来的100与原有的100进行比较,发现相等,于是再次将0交换到余额中,导致张三被多扣了100块钱,这就是ABA问题。这样看可能不太好理解。通过判断内存中的值是否与原有值相等,来判断变量是否被改变过,如果被改变了,那么就不进行修改,如果没有被修改过,就执行交换操作。原创 2023-03-10 17:51:36 · 102 阅读 · 0 评论 -
线程安全问题的原因及常用解决方法
这个问题是由于编译器的优化导致的。当线程A高频率的读取内存中的同一个数据,并且每次读取到的数据都是一样的,编译器就会将读内存操作优化成 读寄存器操作,因为读取寄存器中的数据要比读取内存中的数据快很多,这时,如果线程B修改了这个数据,线程A由于是在寄存器中读取这个数据,就会识别不到内存中的数据修改,那么这个修改对于线程A来说就是无效的。原创 2023-03-02 19:14:31 · 321 阅读 · 0 评论 -
Linux操作系统中的进程、线程
• 线程是操作系统执行调度的基本单位。每一个线程可以执行一个任务(一段代码)。• 进程和线程是包含关系,进程包含线程。我们可以用工厂和生产线来理解进程和线程。为了提高生产效率,我们有两种方法:1.增设工厂:增设工厂,多个工厂同时工作,工作效率就提高了,这就相当于创建多个进程,多个进程同时执行,执行速度自然比一个进程单独执行要快。2. 在工厂内部增加生产线:多条生产线当然要比一条生产线工作效率高,这就相当于创建多条线程。原创 2023-02-25 13:23:15 · 797 阅读 · 0 评论 -
数据库的索引和事务
1. 索引是一种特殊的文件,包含着对数据表中所有记录的引用指针。 2.事务是将几条SQL语句包在一起执行,有4个基本的特性。原创 2023-02-19 14:58:23 · 163 阅读 · 0 评论 -
希尔、快速、归并、堆排序
对于上述四种排序方式,稳定的排序方式是归并排序,空间复杂度由低到高为希尔O(1),堆排O(1),快排(视情况)O(logn~n),归并O(n),时间复杂度归并和堆排都在O(n*logn),快排视情况而定,如果不进行优化时间复杂度在O(n*longn~n^2),一般来说快排都是会进行优化的,希尔排序的时间复杂度在数据有序时为O(n),其余情况视分组而定,一般在O(n^1.3~n^1.5)之间。原创 2023-01-30 18:34:20 · 381 阅读 · 0 评论 -
简单介绍集合与数据结构中的栈
在这个栈中,按照a,b,c,d这个顺序存入了这四个数据,把数据存入栈中的操作叫做压栈,最先入栈的数据被压在了栈底,最后入的数据的位置叫做栈顶,从栈中删除数据或者取出数据时,是将栈顶的元素直接弹出,这样就形成了栈的先入后出的特殊性质。栈是用来存储数据的一种特殊的线性表,最特殊的一个性质是,先入栈的数据后出栈,后入的数据先出。用到的这些push、peek、pop等方法都可以通过创建对应类型的变量来接收返回值,也可以直接“.sout”来进行打印。栈的创建和一些常用的方法可以参考以下代码。原创 2023-01-19 21:01:27 · 48 阅读 · 0 评论 -
树和二叉树的基本结构与性质
树形数据结构是一种非线性的数据结构,把它叫做树,是因为这种数据结构的形态很像一颗倒着的树。树和链表类似,通过节点来存放数据,用不同的方法来表示树,节点的域也会有所不同。原创 2023-01-04 19:51:37 · 96 阅读 · 0 评论