- 博客(97)
- 收藏
- 关注
原创 【网络原理】TCP/IP四层模型中的重点网络协议
实际上,每个程序对协议的数据格式进行自定义,但是如果每个程序都定义的不一样没那么就不太灵活,双方都要按照不太的方式去解析和编码请求和响应内容,于是大佬们对一些常用的应用场景做了一些特殊协议并确定下来,形成了标准常见的应用层协议,原因:消息在网络传输的过程中:操作系统->网卡->交换机->路由器->其他的网络设备,每个设置都有自己的负载能力,如果超出了范围,当前的数据包就可能阻塞或者丢弃。四次是可以的,不过三次就足够了。,先发少量的数据,探探路,摸清当前的网络拥堵状态,再决定按照多大的速度传输数据;
2023-06-01 14:44:51
1802
原创 【网络编程二】UDP与TCP协议你学会了吗~
网络编程,指的是网络上的主机通过不同的进程以程序的方式来实现网络通信(网络数据传输)。也可以是同一个主机的不同进程。比如MySQL的服务端和客户端,在开发环境中一般都是同一台主机上运行的两个不同的程序。(1)客户端:服务的使用方-->请求:一般是客户端主动发起,表示目的;(2)服务器:服务的提供方-->响应:一般是服务器根据客户端的请求计算出来的结果。
2023-05-30 14:59:15
289
原创 【网络编程一】初识网络:IP与端口号 && 网络模型
将多个计算机通过网线(传输介质)连接在一起就形成了初级的网络。连接方式主要有以下几种:(1)基于网线直连:(2)基于集线器组建:(集线器是一种网络设备)(3)基于交换机组建:(4)基于交换机和路由器组建:2、根据网络规模的大小分为局域网和广域网。(1)局域网:一般指网络规模较小;比如一个公司,一个学校;(2)广域网:一般指网络规模较大,通常我们指的是国际互联网。
2023-05-26 18:02:39
1155
1
原创 【每日编程】跳石板 && 参数解析
(注意标志位的使用,自己写的时候关于双引号中间的空格一直没有输出成功。2、对于双引号,通过添加flag来保证中间的空格可以进行输出。1、通过双引号和空格为间隙,统计参数个数。❎2、跳石板(动态规划,难)
2023-05-26 16:08:19
96
原创 【文件操作与IO】
需要知道一些简单的概念:1、狭义上的文件硬盘上保存的数据,都是“文件”来组织的,本质上都是二进制或者字符组织的数据,被打包成一个文件存储在硬盘中。常见的文件有图片(png),文本(txt),可执行文件(exe),音频和视频等(mp3)。其中的文件夹也是一种特殊的文件,也叫作目录。通常说的文件都是存储在硬盘上的(实现数据的持久化),原因主要在于硬盘的特点:(1)硬盘容量大,内存容量小;(2)硬盘读写速度慢,内存读写速度快;(3)硬盘造价低,内存成本高;
2023-05-24 20:48:53
1094
原创 【每日编程】最近公共祖先编号&&求最大连续bit数
用count来记录1的个数,不断与maxNum比较,maxNum中保存的是最大值。当碰见0的时候,count就要重新开始计数。2、在两个节点中找出大的和小的,只要两者不相等,就一直让两者/2下去,直到找到公共节点。1、在二叉树中树根编号是1,那么除了树根外的所有节点的父节点编号都是子节点/2;比如200的二进制数是11001000,输出为2。❎2、求满二叉树的最近公共祖先编号。
2023-05-24 10:18:24
133
原创 【每日编程】二进制插入&&查找组成偶数最近的两素数
2、00001001100 与 n = 1024:10000000000 进行或运算 得到的结果就是10001001100,转为十进制就是1100。2、用一个变量与不同情况下两素数的差值做比较,不断更新该变量,该变量一定存储的是最小值。1、将m = 19:10011 左移j位,变为00001001100。1、先找出所有满足条件的两素数:双指针+判断素数。比如输入为20,输出为13,7。
2023-05-24 09:26:10
188
原创 【每日编程】排序子数组 && 逆序字符串
同时虽然是最后一个子字符串,但是也要更新第一个指针的位置为子字符串的结束位置,否则在第一个while循环中陷入死循环,一直出不来。(2)while(i
2023-05-22 21:23:26
143
原创 【多线程进阶二】JUC工具类 && 线程安全的集合类 && 死锁
(4)创建线程,线程的构造方法传入FutureTask,此时新线程就会执行FutureTask内部的Callable接口中的call方法,完成计算。(4)循环等待:线程1等待线程2释放锁,线程2要释放锁要先等待线程3释放锁,线程3释放锁要先等待线程1释放锁...形成了循环关系。(1)Vector,Stack,HashTable是线程安全的,是JDK中提供的线程安全的类,但是强烈不推荐使用。(2)锁竞争激烈的时候,使用ReentrantLock,搭配trylock更加灵活的控制加锁的行为,而不是死等;
2023-05-22 16:57:50
1701
原创 【每日编程】组队竞赛 && 删除公共字符
2、获取第一个字符串中的每一个字符(key值)在map中的对应的value值(也就是次数)。1、用哈希表存储第二个字符和它每个字符出现的次数。3、如果获取到的次数为null就写入新的字符串。❎2、删除公共字符(多解法:用哈希表实现)❎1、组队竞赛(看思路)方法2:用哈希表解决。
2023-05-20 21:11:53
183
原创 【多线程进阶一】常见的锁策略
解决ABA问题:给预期值加一个版本号,在做CAS操作的时候同时更新预期值的版本号,版本号只增不减。预期值 A B A版本号 1 2 3关于CAS:(1)先获取预期值(2)通过CAS指定完成比较并交换(3)如果在CAS的过程中,预期值与真实值不相等,就进入自旋操作;(4)如果出现ABA问题,就是给预期值加一个版本号,在比较的时候同时比较预期值和版本号。
2023-05-15 15:23:24
853
原创 【多线程初阶四】单例模式&&阻塞队列
是类似于棋谱一样的东西。而单例是什么?单例指的是在全局范围内只有一个实例对象。比如之前数据库的JDBC中就只有一个DataSource。定义数据库的用户名,密码,连接串之后就可以通过DataSource的实例对象获取数据库的连接。
2023-05-12 16:35:26
789
原创 【MySQL】数据库的基础操作二:增删改查CURD
CURD在SQL表示增加(Create),删除(Delete),修改(Update)和查询(Retrieve)。
2023-05-08 17:04:17
922
原创 【MySQL】数据库基础操作一:建库与建表
数据库描述ACCESS微软出的一个在OFFICE里继承的一个小型数据库。SQLITE常在手机的APP里面,桌面程序。SQL Server微软真正意义上的大型数据库。MySQL用的最多的数据库:开源,免费。PostgreSql具体效率比MySQL高一点,部分公司在使用。Oracle业内最强的数据库。收费。非关系型数据库(了解):不规定基于SQL实现,更多的是指NoSQL数据库。
2023-05-06 21:44:19
4910
2
原创 【测试学习二】软件测试&&开发模型与测试模型&&软件测试模型
测试是一个过程,这个过程是由测试人员来验证软件的特性是否符合需求。特性包括:功能相关和非功能相关。最常见的理解就是:软件测试就是找UG,发现缺陷。软件测试只是一个样本试验,具有不可穷尽性。🌈2、软件测试与开发的区别(常考)当且仅当规格说明是存在的并且是正确的,但是程序与规格说明之间不匹配那就说明出现了软件错误。当程序没有实现其最终用户合理预期的功能需求时,就是软件错误。
2023-05-06 18:15:17
1350
原创 【多线程初阶三】简单了解wait和notify方法~
等到所有的资料都打印完毕,辅导员这时候喊一声:所有的班长都过来,怎么就是notifyAll(),唤醒了所有的线程;如果是只喊了一个一班的班长来一下,那就是notify(),只唤醒了一个线程,其他的线程还在等待。(1)wait与sleep是完全没有可比性的🤣一个是用于县城之间的通信,另一个是让线程阻塞等待的。(2) wait()是Object类中的方法,sleep()是Thread类中定义的方法;(1)wait()是Obejct类中的方法,join()是Thread类中的方法;
2023-05-06 10:48:26
843
原创 【多线程初阶二】多线程带来的风险~线程安全
(1)线程在获取到锁之后开始执行锁中代码;(2)其他线程在执行代码之前要先检查锁的状态;(3)如果该锁被其他线程占用,那么就要阻塞等待,对应的线层状态我们就称为BLOCK;(4)当锁被释放之后,其他线程才可以继续竞争锁资源。
2023-05-06 09:54:00
1101
原创 【数据结构】反射
反射允许对成员变量,成员方法和构造方法的信息进行编程访问。简单来说,就是可以从类中获取到成员变量,成员方法,构造方法。的class对象来描述该类的属性或者方法等。每个类的class对象有且只有一个,由JVM产生。每个类加载到JVM之后,由JVM产生这个类的class对象。Class类是反射的核心类,反射的入口。反射是非常重要的,没有反射就没有java的任何框架。我们在java中写代码IDEA会自动提示的功能也是利用了反射。参数2:覅用方法的传递参数,如果没有就不写。->当已有这个类的对象时,才可以使用。
2023-05-04 11:11:32
555
原创 【数据结构】七大排序总结
今天学习的内容主要是七大排序方法,属于面试中经常被问到的问题😃。首先我们需要知道排序方法主要分为几类,可以看下面这张图。我们说的七大排序也是指内部排序的方式。其中,关于算法的稳定与不稳定,主要是指在排序过程中的元素位置是否发生变化。[9,2,5a,7,5b,4,3,6]在经过直接选择排序后变为[2,3,4,5b,5a,6,7,9]其中5a与5b虽然是相同的值,但是相较于开始位置,两者之间的顺序已经发生变化,所以我们说直接选择排序算法是不稳定的。
2023-04-30 18:21:18
1079
原创 【数据结构】JDK HashMap源码解析
两个对象的hashCode虽然返回的数值相同,但是不同的数字经过哈希函数运算完全是有可能得到相同的索引值的,因此很有可能不是同一个对象,所以equals不一定相同;这其实也就是前文说到的哈希函数设计中的稳定性,一个相同的值经过哈希函数得到的值一定是相同的,因此两个对象是一样的,经过hashCode计算得到的值一定是相同的。可以看见,在定义构造函数的时候,无论hi无参还是有参,这两种方式都并没有将数组容量进行初始化,那什么时候进行数组的初始化呢?如果是链表形式,就将该节点作为链表的最后一个节点插入。
2023-04-30 12:10:15
707
原创 【数据结构】哈希表
通过上述操作:将数组的具体数值转化为了新布尔数组的下标,此时要查找某个元素,在新数组中已经知道了该数组的索引下标,因此查找起来非常快。但是这样也有一个问题,就是如果我这个数组中的数据范围很分散,比如[10,100000,1000000000]这种,那我最少要创建一个1000000000+1大小长度的新数组,太不划算了。JDK中的HashMap的factor默认是0.75,而在阿里的实验室论证中,在一般的商用系统中,factor为10是比较合适的设置。比较好的方式就是n取素数,这样能显著降低哈希碰撞的概率。
2023-04-29 21:00:42
6475
原创 【多线程初阶一】认识线程(Thread)
在学习之前,我们先简单的了解一下计算机中的常见的概念。1、冯诺依曼结构体系现代的计算机大多遵循冯诺依曼体系结构。主要由运算器,控制器,存储器,输入设备,输出设备组成。2、操作系统操作系统是一组做计算机资源管理系统的统称。常见的操作系统由Windows系列,Linux系列,OSX系列,ISO系列,Android系列。操作系统的作用主要有:(1)向上为应用程序提供一个稳定的运行环境;(2)向下管理所有的硬件设备;(3)为用户提供一个人机交互的界面。3、进程。
2023-04-28 15:22:44
891
原创 【MySQL】Java的数据库编程:JDBC编程
五部曲:创建数据库连接Connection -> 创建操作命令Statement -> 使用操作命令来执行SQL ->处理结果集ResultSet - > 释放资源。🌰栗子:查询studnet表中的学号为X的学生信息:实现过程:(1)文件1:a01_Connection.java文件(其中,关闭资源的时候要按照从后往前的顺序)/** 构建数据源——>获取连接——>写sql语句——>执行sql语句并获取结果——>释放数据源*///定义一个数据源对象//数据库的用户名。
2023-04-26 20:01:45
533
原创 【MySQL】索引与事务
问题1:什么是索引?索引是为了提高查询效率而使用的一种数据结构是为了将数据组织起来。可以将索引理解为书的目录,通过索引可以快速找到想要查找的内容。问题2:为什么要使用索引?目的是为了提高查询效率。如果没有索引,那么查找的时候就要遍历整个数据集,时间复杂度大大增加。数据库的索引是一个单独的文件,在保存索引的时候也需要空间。可以理解为这是一个典型的空间换时间的操作:因为创建索引也要占用一定的空间,而且在数据新增和删除时的开销也很大,因为不但要更新数据行,还要更新索引。
2023-04-25 16:56:11
248
原创 【数据结构】Map与Set的简单使用
Map和Set是专门用来进行搜索的容器或者数据结构。其中,我们一般将搜索的数据称为关键字(Key),和关键字对应的称为值(Value),所以称其为Key-Value的键值对。所以一般分为两种模型:(1)纯Key模型比如:快速查找某个姓名在不在通讯录中,快速查找某个单词在不在字典中;(2)Key-Value模型比如:统计一段文本中每个字的出现次数,要求统计结果是;那么Map中存储的就是Key-Value的键值对,而Set中存储的就是Key。
2023-04-06 21:30:00
250
原创 【数据结构】java对象的比较与TopK问题
java中我们最常熟知的就是基本数据类型的比较,引用数据类型:对于用户实现的自定义类型,一般默认情况下调用equal方法,比较引用变量的地址。但是equal只能按照相等进行比较,不能按照大于,小于的方式进行比较。
2023-04-05 22:00:00
340
原创 【数据结构】二叉搜索树BST -> 基础实现篇
二叉搜索树(Binary Search Tree)简称BST。BST主要有三个特性:(1)对于BST的每一个节点node,左子树节点值
2023-04-05 14:01:09
491
原创 【数据结构】堆与优先级队列
但是在有些情况下,操作的数据可能带有优先级,那么出队列时,就需要优先级高的元素先出队列。思想:我们可以认为最后的叶子节点每个都满足最大堆的要求(因为左右子树都是null), 那从不断的从最后一个不是叶子节点的 节点让它满足最大堆,也就是元素下沉,使得每个子树为堆。最大堆:堆中的某个节点的值总是不大于其父节点的值,堆顶保存的是最大值;最小堆:堆中的某个节点的值总是不大于其父节点的值,堆顶保存的是最小值。同样的,根据堆的性质,通过给定的节点编号k,我们可以获取父节点,左孩子和右孩子的编号。
2023-04-03 22:30:00
223
原创 【数据结构】二叉树非递归问题【下】
上一节简单学习了二叉树,以及递归方式来完成二叉树的遍历和高度,节点数等问题的求解。今天的主题主要是非递归方式来解决二叉树中的一些问题,个人感觉初学理解起来还是比较困难的。希望今天下午能够攻克它们!!!
2023-04-03 16:14:39
239
原创 【数据结构】链表的模拟实现【上】
链表是一种在物理存储结构上非连续存储的结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的。链式结构在逻辑上是连续的,在物理上不连续。对于单链表来说,每个节点不仅存储自身的值,还存储下一个节点的地址值;带头单链表就是比无头单链表多了一个头结点,我们把它叫做"虚拟头结点";对于双链表来说,每个节点存储上一个节点的地址值,自身节点的值和下一个节点的地址值。
2023-03-27 14:48:20
271
原创 【数据结构】队列的实现
E poll();E peek();//定义链表的头,尾E val;Node next;/*** /入队列:链表的尾插*/@Override//产生新节点//如果链表为空,此时新节点就是头和尾//如果链表不为空,此时size++;/*** /出队列:出的是链表中的头结点*/@Overridesize--;return val;/*** 查看队首元素*/@Override/*** 重写ToString方法*/@Override。
2023-03-24 23:00:00
969
原创 【数据结构】栈(Stack)的实现
/定义一个数组//当前栈中有效元素的个数//无参构造方法:默认栈的大小this(10);//注意:这里的this就是下面的MyStack//有参构造方法。
2023-03-24 21:00:00
1047
原创 【数据结构】List接口
1、List系列集合的特点 List系列集合的特点:元素有序,可重复,有索引2、List接口的常用方法这些方法都比较简单,其中要注意的是remove方法:为什么说它要注意呢?比如我们现在用ArrayList实现类实现了List接口,创建了一个Integer集合list,里面存储了三个元素1,2,3,我希望删除元素为1的这个值,如果用remove(1)方法,我们可以发现这里的1指的并不是元素值,而是集合中的索引值,也就是说实际删除的是2这个元素。这主要是因为发生方法的重载
2023-03-14 22:10:10
152
原创 【数据结构】Collection接口
(2)注意Contains方法中:如果是自定义的类如Student类,那么添加元素时要重写equals方法,否则比较的是元素的地址值。底层原理:其实自己也会遍历集合,依次得到每个元素把得到的每一个元素,传递给下面的accept方法,s依次表示集合中的每一个元素。只有单列集合(List)和数组才能使用, s就是一个第三方变量,在循环过程中依次表示集合中的每一个数据。* (4)迭代器遍历的时候,不能用集合的方式进行删除或者增加,可以用迭代器的方式删除 */注意:这里的有序指的是存储和取出数据的顺序是一致的。
2023-03-14 21:39:50
214
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅