- 博客(20)
- 收藏
- 关注
原创 个人简易博客测试用例
简易博客系统是⼀个基于 Web 的博客发布和管理系统,⽤户可以使⽤该系统创建⾃⼰的博客,发布⽂章和管理,提供了登录、发布⽂章、查看⽂章、显示博客列表功能;
2024-04-01 23:19:39
722
1
原创 HTTP请求
从服务器来的,当我们的浏览器访问服务器的时候,服务器就会在HTTP响应中通过Set-Cookie字段,把Cookit的键值对,返回给浏览器,浏览器收到这个数据,就会在本地存储。如果看见以上这种情况,响应可能是压缩过的 ,本身http是文本,压缩了就成二进制了,带宽是比较贵(字面),压缩能够减少网络传输的数据量,节省带宽.不仅仅是html,包括css,jstup,字体…1.先看颜色 , 黑色的包,响应的是普通数据, 蓝色的包,响应的是html, 咱们关注的是搜狗的主页,响应应该是html。
2023-09-27 20:52:03
111
1
原创 初识网络原理
面对复杂环境,就需要复杂协议,但是协议太复杂也不好,一个协议太复杂了,就可以拆分成多个协议.协议是拆分出很多了,但是存在有些小的协议,作用或者定位是类似的,就可以针对这些小协议,进行“分类”,同时在针对这些不同的类别,进行分层。如图所示比如他们都用的是汉语协议和电话机协议,语言是一层 电话机是一层,所以这里面的协议就分成了两层,后续就可以比较容易的针对这里的某一层协议进行替换,比如左下角就把通讯设备给替换了,右下角就把语言协议给替换了,都不影响了。
2023-09-26 23:01:44
83
原创 网络原理 二
先杀死所有的用户进程,socket也会随之关闭,也会触发四次挥手,如果过会挥完更好,比如对方发来fin过来了,咱们没来得及ack就关机了,此时对端就会重传fin,重传几次之后,发现都没有ack,尝试重置连接,如果还不行,就直接释放连接。(当收到2001这个ack的时候,此时发送方就知道了,2001之前的数据都收到了,1-1000这个数据也受到了,1001这个ack丢了就丢了,无所谓!如果承载的数据,长度超过MTU,就会在IP层进行分包 ,是每个分出来的结果,都能在MTU之内。这种情况,啥事没有!
2023-08-18 23:32:50
111
1
原创 网络原理 一
对于TCP来说自身也承担了这个整队的任务,TCP会有个接收缓冲区(一块内核中的内存空间),每个socket都有一份自己的缓冲区. TCP就可以按照序号针对收到的消息进行整队了(也是TCP序号的一个重要用途) 后续 应用程序对数据,读到的一定是有序的(和发送顺序一样的)什么叫做后发先制,打个比方 结婚时的接亲,头车还在路上,后面的车已经到了新郎家里.,叫“后发先制”这个时候就比较乱 往往都是后车到村口了等头车来了在进行整队,然后驶往新郎家,这样一个流程.不是100%可以传过去!这就是后续可靠传输的基石!
2023-08-07 23:15:57
149
原创 java网络编程 二
DatagramSocket :所谓的socket,是一个特殊的文件,是网卡 这个硬件设备的抽象表示(遥控器) 构造方法,绑定一个端口号(服务器),也可以不显示指定(客户端) receive(接收) send(发送) close 释放资源。2.客户端启动时,会调用socket的构造方法,和服务器建立连接,连接成功之后,服务器accept就会返回了。4.客户端:当用户真的输入内容,客户端真正发送了请求出去,同时往下执行,读取服务器响应,再次阻塞。UDP:无连接,不可靠传输,面向数据报,全双工。
2023-08-03 23:52:17
42
原创 Java 网络编程
1.1程序员写网络编程,主要编写的应用层代码,真正要发这个数据,需要上层协议,调用下层协议,应用层要调用传输层,(传输层给应用层提供一组api)统称为socket api。借助socket这个文件对象,才能够间接的操作网卡,而socket就相当于是那个“遥控器”,往这个socket对象中写数据,就相当于通过网卡发送消息。Socket文件并非对应到硬盘上的某个数据存储区域,而是对应到,网卡这个给硬件设备!Socket也是文件 ,文件用完了就得记得关闭,否则就会出现文件资源泄露的问题!
2023-07-31 23:53:27
100
1
原创 Java中的文件Io操作
Java标准库,给我们提供了一个类进行文件操作File,File对象是硬盘上的一个文件的”抽象”表示,因为文件是存储在硬盘上的,直接通过代码操作硬盘不太方便,就在内存中创建一个对应的对象,操作这个内存中的对象,就可以间接的影响到硬盘的文件情况了。文件路径:就是从树的根节点触发,沿着树杈,一路下走,到达目标文件,此时这经过的内容, 因为windows都是从此电脑开头的,表示路径的时候可以把“此电脑”省略,从盘符开始表示。这个关闭操作,非常重要,不要忘记,这个给操作就相当于释放资源,资源主要指“文件描述符”
2023-07-27 23:56:29
274
1
原创 java多线程锁的概念
偏向锁:非必要不加锁,偏向锁,只是让线程针对锁,有个标记,如果代码运行中没有遇见别的锁和我竞争锁,此时就不用真加锁,但是如果又别的线程来竞争锁,偏向锁就升级为真加锁(轻量级锁),此时别的线程只能等待。针对锁进行编号,如果需要同时获取多把锁,约定加锁顺序,务必先对小编号进行加锁,后对大编号进行加锁, 只有约定了加锁顺序,循环等待自然破除,死锁就不会形成了!Synchronized 即使悲观锁也是乐观锁,即使轻量级锁也是重量级锁,轻量级锁部分基于自旋锁实现,重量级锁部分基于挂机等待锁实现。
2023-07-25 00:55:44
77
原创 Java多线程中的JUC
ConcurrentHashMa他是化整为零的策略,并不是一次性把元素都搬运过去,而是每次搬运一部分,当put触发扩容的时候,此时就会创建一个更大的内存空间但是 每次止搬运一小部分,此时就相当于存在两份hash表了,此时插入就插到新的表 删除就删除旧的表里的元素,查找两个表都查,并且每次操作过程中都会搬运一小部分。4.CopyonWriteArrayList支持“写时拷贝”的集合类,他是线程安全是多个线程修改不同的变量(没加锁),他是修改的时候拷贝了一份!
2023-07-22 23:13:22
76
原创 【CAS】
这个循环里干了些啥事(如果value和oldvalue值相同,此时就把oldvalue的值+1 设置到value中这个操作就相当于++,然后cas返回ture,循环结束,反之,如果value和oldvalue不相同,cas啥都不做并返回false,进入循环重新设置oldvalue的值!如果需求要求该数值既能增加也能减少该如何解决:此时我们可以引入一个版本号变量,约定版本号只能增加,每次CAS对比的时候就对比的不是数值而是版本号(这里的版本号是:每次修改,都会增加一个版本号)。
2023-07-19 23:36:49
57
原创 【多线程锁的概念】
偏向锁:非必要不加锁,偏向锁,只是让线程针对锁,有个标记,如果代码运行中没有遇见别的锁和我竞争锁,此时就不用真加锁,但是如果又别的线程来竞争锁,偏向锁就升级为真加锁(轻量级锁),此时别的线程只能等待。针对锁进行编号,如果需要同时获取多把锁,约定加锁顺序,务必先对小编号进行加锁,后对大编号进行加锁, 只有约定了加锁顺序,循环等待自然破除,死锁就不会形成了!Synchronized 即使悲观锁也是乐观锁,即使轻量级锁也是重量级锁,轻量级锁部分基于自旋锁实现,重量级锁部分基于挂机等待锁实现。
2023-07-15 23:58:10
117
1
原创 线程的中断与等待
当前interrupt方法,效果不是让线程立即结束,而是告诉他你该结束了,至于他是否针对结束,立即结束还是等会结束都是通过代码控制的,这里我们要明白interrupt是通知而不是命令。t.join执行还没结束的时候main线程就会堵塞等待,main线程中调用t.join意思是让mian线程等待t先执行完,再往下执行!此处这俩线程的指令的排序,(执行的先后)就会有很多种可能的排序情况,在排列顺序的不同情况下,执行结果,可能就是截然不同。t先执行3s 然后main执行 interrupt 此时t线程抛异常。
2023-06-09 19:13:37
369
原创 Java多线程
2.进程包含线程一个进程可以有一个线程一个进程也可以有多个线程每个线程都是一个独立的执行流,之间,也是并发执行的。这里的多个线程是指:多个线程可能是在多个CPU核心上同时运行,也可能是在一个CUP核心上通过快速调度进行运行。
2023-06-08 15:51:01
57
原创 进程与进程调度
1,首先冯诺依曼体系结构是描述了一个计算机是有什么构成的首先计算机是由中央处理器(CPU)和内存还有外存 ,其次就是输入设备和输出设备,这是一个计算机最核心的部分。其中最重要的就是cpucpu是一台计算机的大脑。
2023-06-07 21:07:51
130
1
原创 【C语言扫雷的实现】
上面我们定义了一个变量input 他就是来判断用户的选择 当然循环的调节也是input 选择为真进入循环 选择为假则直接结束程序。再次函数内部使用do while语句 用户玩完一把不过瘾可以再次选择玩第二把直到用户现在退出游戏。实现游戏我们需要一个二维数组以及怎样对游戏进行实现。创建一个名为game的函数去实现调用其他函数。第三步实现游戏界面打印使用jiemian函数。扫雷游戏要用的头文件已经函数。这样一个低配版的扫雷就实现了。连起来就可以实现扫雷游戏。第二步使用game函数。
2022-11-20 16:56:13
602
原创 【C语言三子棋的实现】
用户如果玩完不过瘾想在玩 所以我们这里用do while循环 循环条件是input如果用户输入1 (为真)则进入游戏 输入0则(为假)则跳出此次循环 .srand((unsigned int )time(NULL));//随机值 srand返回 time 时间戳。前面的time函数就是搭配rand函数返回的时间戳来生成随机数。类型强制转换成 int整形 NULL表示0 空指针的意思。我们这里只有三中选择所以直接用Switch语句。先创建一个变量 input用于用户对游戏选择。test函数再去调用其他函数。
2022-11-11 19:22:31
842
原创 C语言的关键字
字符型在其本质上就是整形,我们在C语言中使用char表示一个字符型,他占用一个字符的存储空间,字符型在存储时其内部存储的依旧是二进制数据,当我们读出时将会得到一个整形数据,而我们输出时会得到一个字符是因为我们人为的定义了一个对照表,这个表规定字符a的数值就是97,所以当我们遇到97时我们有两种读出方式,第一种以整数形式读出就是97,另一种就是以字符型读出,使用%c指定读出形式,则对照表则为a。(2)32位平台下long 是4个字节,long long 是8字节;long :声明长整型变量或函数返回值类型。
2022-11-06 17:51:55
217
原创 如何学好编程
第二部如何学习编程:我想有很多的小伙伴和我一样,想学又不知道从哪入手,看着学习老师拿着老旧的教材,而且讲的又快 估计已经开始懵逼怀疑自己是不是选择错了专业,其实学习编程就很多的方法 比如B站上就有很多相关的视频 可去观看跟着里面的老师一起慢慢的学着敲又或者对于自学能力比较强的同学 可以买相关的书籍看,比如C语言程序设计,里面讲了从安装到C语言的各种语法,C语言学会以后就进入了计算机领域的大门,对于日后的C++,java等面向语言都大有益处。
2022-10-30 15:08:55
100
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人