一、乐观锁 VS 悲观锁 悲观锁和乐观锁大概是大家听到最多的两种锁了,这两种锁的区分更多的是思想上。 对于一个操作,悲观锁认为自己在操作过程中,一定有别的线程也要来修改这个数据,所以一定会加锁。而乐观锁则不认为会有别的线程来干扰自己,所以不需要加锁。 在Java中,synchronized关键字和L ...
分类:
编程语言 时间:
2020-06-03 17:12:16
阅读次数:
59
使用的协议是tcp,由于tcp协议传输数据的时候会有粘包现象,所以为了解决消除这个现象,又编写了两个工具函数Encode和Decode 消除粘包现象的方法是在自定义一个应用层协议,他的内容为每次发送的数据包的前4个字节表示数据的长度,然后后面才是真正发送的数据 首先是工具包: proto.go pa ...
分类:
编程语言 时间:
2020-06-01 13:49:25
阅读次数:
69
TCP是一个面向连接的协议。无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。下面会介绍一个TCP连接是如何建立的以及通信结束后是如何终止的。 一、TCP连接的建立与终止 1.1 建立连接协议 请求端(通常称为客户)发送一个SYN段指明客户打算连接的服务器的端口,以及初始序号(ISN, ...
分类:
其他好文 时间:
2020-06-01 13:28:52
阅读次数:
70
本章学习内容: 本章我们学习了一种新的数据结构,“树”结构是一类非线性数据结构。主要学习到二叉树的内容,二叉树有好几个重要的性质。刚开始学这种数据结构的时候,还是觉得比线性结构抽象很多。在后来上课和打代码的时候理解到,二叉树存储结构跟遍历有很大的关系,遍历的结果是将非线性结构的树中结点排成一个线性序 ...
分类:
其他好文 时间:
2020-05-31 19:55:21
阅读次数:
65
网络编程 基于HTTP协议的网络资源访问 这部分主要是通过requests库实现访问url以及获取相应内容,通过对内容进行进一步加工来完成。具体操作可以以后通过小项目的实现来尝试。 基于传输层协议的套接字编程 比较陌生的概念。套接字(socket)是指用c语言写成的应用程序开发库,主要用于实现进程间... ...
分类:
编程语言 时间:
2020-05-30 20:17:33
阅读次数:
99
Linux(四):虚拟机Ubuntu 卸载 1.打开虚拟机程序进入主窗口,选中要删除的虚拟机操作系统。 2.选中 VMware 软件最上方的 “虚拟机” “管理” “从磁盘中删除” 选项即可卸载该虚拟机操作系统。 3.提示警告点击“确定”,自动完成卸载,卸载后将不会再看到虚拟系统的虚拟机名称。 4. ...
分类:
系统相关 时间:
2020-05-29 21:34:37
阅读次数:
159
Socket编程(异步通讯)(Tcp,Udp) 上一章主要展示了Socket的Tcp\Udp两种协议下的基本通讯方式,属于同步通讯。至于一个服务器对应多个客户端,或者对应多个请求,我们采用的是多线程的方式来解决此问题。然而本章节我们将有更好的方式去实现它:Socket在Tcp\Udp两种协议下的异步 ...
分类:
其他好文 时间:
2020-05-28 23:43:17
阅读次数:
66
bind 客户端可以调用bind函数吗?可以,可以指定端口 详见复习资料 客户端为何不调用bind函数,什么时候像套接字分配IP和端口号 listen 它现在定义的是已完成连接队列的最大长度,表示的是已建立的连接(established connection),正在等待被接收(accept 调用返回 ...
分类:
其他好文 时间:
2020-05-28 19:39:39
阅读次数:
100
网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来。 java.net 包中 J2SE 的 API 包含有类和接口,它们提供低层次的通信细节。你可以直接使用这些类和接口,来专注于解决问题,而不用关注通信细节。 java.net 包中提供了两种常见的网络协议的支持: TCP:T ...
分类:
编程语言 时间:
2020-05-28 16:22:06
阅读次数:
73