- 博客(65)
- 收藏
- 关注
原创 HTTPS的工作过程
HTTP在传输网络数据的时候是明文传输的,信息容易被窃听甚至篡改,因此他是一个不安全的协议(但效率高)。在如今的网络环境中,数据安全是很重要的(比如支付密码又或者各种私密信息等)因此,为了解决这一安全问题HTTPS由此诞生。HTTPS(Hyper Test Transfer Protocol Secure)在HTTP的基础上加入了SSL/TLS加密机制,通过对传输数据的加密,来确保数据传输过程中的安全性,从而降低信息被窃听和篡改的风险,进而确保用户数据的安全,他是目前网络上应用最广泛和安全的协议。
2024-12-06 10:30:43
1285
原创 java垃圾回收机制中的引用计数算法
java 语言中一个显著的特点就是引入了java回收机制,是c++程序Q员最头疼的内存管理的问题迎刃而解,它使得java程序员在编写程序的时候不在考虑内存管理。由于有个垃圾回收机制,iava中的额对象不在有“作用域”的概念,只有对象的引用才有“作用域”。垃圾回收可以有效的防止内存泄露,有效的使用空闲的内存。:指该内存空间使用完毕后未回收,在不涉及复杂数据结构的一般情况下,java的内存泄露表现为一个内存对象的生命周期超出了程序需要它的时间长度,我们有是也将其称为“对象游离”;
2024-12-05 08:00:00
599
原创 TCP三次握手,四次挥手
第三次的ACK在网络中丢失,那么服务端该TCP连接的状态为SYN_RECV,并且会根据 TCP的超时重传机制,会等待3秒、6秒、12秒后重新发送SYN+ACK包,以便客户端重新发送ACK包。如果重发指定次数之后,仍然未收到 客户端的ACK应答,那么一段时间后,服务端自动关闭这个连接。客户端认为这个连接已经建立,如果客户端向服务端发送数据,服务端将以RST包(Reset,标示复位,用于异常的关闭连接)响应。此时,客户端知道第三次握手失败。
2024-11-28 11:50:07
1636
原创 HashTable·HashMap·ConcurrentHashMap 之间的区别
HashMap是基于哈希表实现的,通过哈希函数将键映射到索引位置,实现快速查找。与HashTable不同,HashMap允许使用null作为键和值。HashMap不是线程安全的,因此在多线程环境下使用时需求注意数据一致性问题。1.2工作原理与实现HashMap使用哈希函数将键转换为索引,该函数需要满足确定性,高效性和散列性。采用链地址法处理哈希冲突,即多个键哈希到同一个索引时,它们会被链接到一个链表中。
2024-11-12 11:33:49
649
原创 ReentrantLock 和 Synchronized 区别总结
如果这个对象没被锁定, 或者当前线程已经拥有 了那个对象锁, 把锁的计算器加1, 相应的,在执行monitorexit指 令时会将锁计算器就减1,当计算器为0时,锁就被释放了。多个线程等待同一个锁时,必须按照申请的时间顺序获得锁,Synchronized锁非公平锁,ReentrantLock默认的构造函数是创建的非公平锁,可以用过参数true设为公平锁,但是公平锁表现的性能不是很好。锁竞争激烈的时候,使用ReentrantLock,搭配trylock更灵活控制加锁的行为,而不是死等。
2024-11-11 12:11:58
802
原创 线程安全的单例模式
单列模式是校考中最长考的之一设计模式就好比好比向其中的“棋谱”,红方当头炮,黑方马来跳。针对红方的一些走法黑方有一些固定的套路。按照套路来走局势就不会吃亏。软件开发中有很对常见的“问题场景‘:针对这些场景,大佬总结出了一些固定的套路,按照这个套路来实现代码也不会太吃亏。单列模式能保证某个程序中只存在唯一一份实例,而不会创建出多个实例。
2024-11-04 22:07:34
901
原创 关于synchronized死锁问题
死锁”大家先猜一下下面这个代码是否可以成功运行?从直观上感觉,这个加锁应该是不能成功呀!!此时locker对象处于已经加锁的状态~~这个时候,如果你要是再尝试对 locker 加锁 不就会出现“阻塞” 情况吗~~为啥最终没出现阻塞呢??最关键问题,在于说,这两次加锁,其实是在同一个线程上进行的!!当前由于是同一个线程,此时锁对象,就知道了第二次加锁的线程,就是持有锁的线程,第二次操作,就可以直接放行通过不会出现阻塞~~ 这个特性,称为“可重入”
2024-10-30 22:54:12
822
原创 Thread 类的基本用法
Thread类是java中实现多线程编程的重要类之一,通过Thread类可以创建,启动和控制线程的执行。在多线程中,合理使用Thread类可以实现并发执行,资源共享和协作等功能。
2024-10-29 15:59:02
747
原创 进程与线程的区别
进程是一个具有一定独立功能的程序在一个数据集合.上依次动态执行的过程。进程是一个正在执行的程序的实例,包括程序计数器、寄存器和程序变量的当前值。进程有哪些特征?1.进程依赖于程序运行而存在,进程是动态的程序是静态的。2.进程是操作系统进行资源分配和调度的一个独立单位 (CPU除外, 线程是处理器任务调度和执行的基本单位)。3.每个进程拥有独立的地址空间,地址空间包括代码区、数据区和堆栈区,进程之间的地址空间是隔离的,互不影响。
2024-10-27 12:17:46
287
原创 B树与B+树
1.N叉搜索树。2.每个节点上有M个key,划分出了M+1个区间。3.进行查询的时候,就可以直接从根节点出发,判定当前要查的数据在节点上的哪个区间中,决定下一步往哪里走。4.进行添加/删除元素可能就涉及到节点的拆分和节点的合并。
2024-10-24 17:05:54
549
2
原创 super与this的区别
3.在构造方法中:this(...)用于调用本类构造方法,super(...)用于调用父类构造方法,两种调用不能同时在构造方法中出现。1.this是对当前对象的引用,当前对象即调用实例方法对象,super相当于是子类对象从父类继承下来的部分成员的引用。4.构造方法中一定会存在super(...)的调用(用户没有写编译器也会增加),但是this(...)用户不写则没有。2.在非静态成员方法中,this用来访问本类的方法和属性,super用来访问父类继承下来的方法和属性。1.他们都是Java中的关键字。
2024-10-24 15:50:15
204
原创 5.17数据结构第五章(哈夫曼树与哈夫曼编码)
1.哈夫曼树1.1定义1.2编码1.3构造小结2.并查集2.1基本操作2.2代码展示并---查2.3时间复杂度分析2.4优化操作小结3.并查集进一步优化
2024-05-17 15:43:50
262
原创 5.16数据结构第五章(树,深林)
1.树的存储结构1.1双亲表示法1.2孩子表示法1.3孩子兄弟表示法小结2.树,深林与二叉树的转换2.1树->二叉树的转换过程2.2深林->二叉树的转换过程2.3二叉树->深林的转换过程2.4二叉树->树的转换过程小结3.树和深林的遍历3.1树的遍历3.1.1树的先根遍历3.1.2树的后根遍历3.1.3树的层次遍历3.2深林的遍历3.2.1深林的先序遍历
2024-05-16 15:03:46
239
原创 (45)5.13数据结构第五章(二叉树的概念)
1.二叉树的定义和特征2.几种特殊的二叉树2.1满二叉树和完全二叉树2.2二叉排序树2.3平衡二叉树小结2.二叉树常考的性质3.二叉树的存储结构3.1二叉树的顺序存储3.2二叉树的链式存储知识点回顾
2024-05-13 15:54:05
252
原创 (44)5.11第五章树和二叉树(树的基本概念)
1.树的基本概念2.基本术语2.1结点之间的关系2.2结点,树的属性描述2.3数和森林2.4有序树和无序树小结3.树的性质3.1树的常考性质小结
2024-05-11 11:15:40
236
原创 (42)5.9数据结构第四章串(定义和基本实现)
/扫描过所有字符都相同,则长度长的串更大。//S中不存在与T相等的子串。//返回子串在主串中的位置。
2024-05-09 11:53:18
329
原创 (41)5.6-5.8数据结构(栈和队列的应用和数组)
/计算整数n!return 1;elseint main()printf("奥里给");//递归调用时;函数调用时函数栈可称为“递归工作栈”//每进入一层递归,就将递归调用所需的信息压入栈中;//每退出一层递归,就从栈顶弹出相应信息;//缺点:太多层递归可能会导致溢出//2.斐波那契数return 0;//边界条件return 1;//边界条件else//递归表达式//优点:代码简单容易理解//缺点:效率低下。
2024-05-07 10:46:10
741
1
原创 (40)4.30数据结构(队列)
SqQueue;//初始化 队头,队尾指针指向0//队空条件elseSqQueue Q;//..后续操作。。////队满则报错//新元素插入队尾//队尾指针加1取模//3.出队(删除一个队头元素,并用x返回)//获得队头的元素值,用下返回//队空则报错//队列元素个数://方案二判断队列已满/已空。
2024-04-30 15:44:32
1854
原创 (39)4.29数据结构(栈,队列和数组)栈
/****做题的时候一定要注意top指针指向的位置,看看是指向栈顶元素还是指向栈顶元素后面一个位置****///////声明一个顺序栈(分配空间)//先出栈,指针再减一。//静态数组存放栈中元素。
2024-04-29 10:26:57
481
原创 (38)4.27 数据结构第二章线性表(循环链表和静态链表)
/分配一个头结点//头结点next指向头结点//判断结点p是否为循环单链表的表尾结点else//判断循环链表是否为空else。
2024-04-27 12:11:04
1831
原创 4.26(37)数据结构第二章,线性表(单链表和双链表)操作实现
if (L == NULL) //内存不足分配失败。if (i == 1) //插入第1个结点的操作与其他结点操作不同。if (q->next == NULL)//q 结点不是最后一个结点。//当p指向的是第几个结点*****(区别)//指针指向下一个结点。//L指向头结点,头结点是第0个节点(不存数据)//(不带头结点区别->)//L指向头结点,头结点是第0个节点(不存数据)//L指向头结点,头结点是第0个节点(不存数据)
2024-04-27 11:00:19
1515
原创 (36)4.20 数据结构(线性表)初始化,输入,删除,查找
printf("位序不合法,删除失败\n");printf("已删除第3个元素,删除元素的值为=%d\n", e);//指示动态分配数组指针。int* data;//指示动态分配数组指针。//顺序表的最大容量。int length;//顺序表的当前长度。int length;//顺序表的当前长度。if (ListDelete)//删除数据。SeqList L;
2024-04-20 15:22:05
442
原创 (35)4.18 作业课
printf("非法返回:%d\n", ret);printf("合法转化:%d\n", ret);//////3.以第n为1,分一组,0分一组,然后异或。//////2.找出异或结果二进制的哪一位是1。//2.计算二进制中左右边的第几位是1。//////1.所有数先异或。//2. 把字符串转换成整数。
2024-04-18 15:10:25
383
原创 (34)4.17 作业课
/弓箭型int main()int n = 0;int i = 0;for (i = 0;i < n;i++)int j = 0;for (j = 0;j < n - i;j++)for (j = 0;j <= i;j++)for (i = 0;i < n+1;i++)int j = 0;for (j = 0;j <i;j++)for (j = 0;j <=n+1-i;j++)return 0;
2024-04-17 15:26:22
504
原创 (31)通讯录动态版4.11
printf("%-20s\t%-5s\t%-5s\t%-12s\t%-30s\n", "名字", "年龄", "性别", "电话", "地址");printf("%-20s\t%-5s\t%-5s\t%-12s\t%-30s\n", "名字", "年龄", "性别", "电话", "地址");printf("要删除的人不存在\n");printf("要修改的人不存在\n");printf("删除成功\n");// printf("请输入手机号");// printf("增加成功\n");
2024-04-11 16:28:09
669
原创 (29)4.11通讯录
printf("%-20s\t%-5s\t%-5s\t%-12s\t%-30s\n", "名字", "年龄", "性别", "电话", "地址");printf("%-20s\t%-5s\t%-5s\t%-12s\t%-30s\n", "名字", "年龄", "性别", "电话", "地址");printf("要删除的人不存在\n");printf("要查找的人不存在\n");printf("要修改的人不存在\n");printf("请输入要删除人的名字");printf("请输入要修改人的名字");
2024-04-11 10:13:55
691
原创 (27)4.8 习题课
/2.小乐乐该数字(把奇函数改成1,偶函数改成0)1.//my_memmove制作。//3.带空格的直角三角形图案。////5.杨辉三角。
2024-04-08 15:31:52
589
原创 (26)4.7 字符函数和字符串函数
//memcpy两块独立数据之间的拷贝函数,不能对同一块空间重叠拷贝与之对应的memmove。//指针有效性,不能为空指针。//指针有效性,不能为空指针。printf("子串不存在\n");这个算法也是用来实现一个字符串中查找字符串的。B站搜索:比特大博哥,可以找到KMP算法实现。效率高,但实现难度大。
2024-04-07 14:27:10
722
原创 (24)4.1 指向函数指针数组的指针
/ printf("请输入2个操作数:>");// printf("选择错误\n");// printf("退出计算机");// printf("请选择:>");//测试使用qsort来排序结构数据。// //指向【函数指针数组】的指针。//测试使用qsort来排序数据结构。// //函数指针数组。// //函数指针数组。//把数组排列成升序。// //转移表。
2024-04-01 15:41:01
444
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人