- 博客(42)
- 收藏
- 关注
原创 操作系统-懒汉式单例模式
在线程不安全的单例模式实现中,确实可能会创建两个以上的对象实例。这是因为在并发环境下,多个线程可能同时检查instance变量是否为null,并且同时创建新的实例。让我们来看一下不同情况下会发生什么:第一次调用时,会创建一个新的实例并赋值给instance变量。后续调用时,由于instance变量已经不为null,直接返回之前创建的实例。因此,只会创建一个实例。多个线程同时进入方法,并且都检查到instance变量为null。这些线程会同时创建新的实例,导致最终存在多个实例。
2024-07-07 18:04:11
770
原创 力扣 最大数(贪心策略)
整体思路是基于贪心算法的原理:在每一步排序中,我们都选择当前能够得到最大数字的字符串组合方式。这种局部最优的选择,最终能够得到全局最优解,即最大的数字字符串。这就体现了贪心算法的精髓。完整代码 👇i<n;//排序});//提取结果。
2024-07-06 08:45:44
354
原创 力扣 用队列实现栈(Java)
核心思想:因为队列都是一端进入另一端出(先进先出,后进后出),因此一个队列肯定是不能实现栈的功能的,这里就创建两个队列来模拟栈的先进后出,后进先出。比如说如果是push操作我们肯定是要弹出栈顶元素(最后一个进栈的元素),而在队列中最后一个进队列的元素是在队尾,不可能实现第一个出(双端队列除外,这里我们不用双端队列)。因此我们应该有另外一个队列,我们把最后一个元素之前的所有元素都出队列,剩下那个元素就是模拟要出栈的那个元素。
2024-07-02 12:11:12
452
原创 三元表达式解析器
题意:其实本质上就是三目运算 ,只不过跟我们以往的三目运算不同的是,这一系列的运算可以把T 和 F 都参与到运算中。设x=5 表达式 x>2?T:F 最终返回T.则连续pop两次进行三目运算的判断操作,确定下一个元素是T还是F,确定后再次压入。2.如果遇到的是 非?和 非: 那么就将元素(数字和T F)压入栈。1.从后往前遍历字符数组。4.返回栈中最后一个元素。
2024-06-30 09:34:15
169
原创 TCP四次挥手——断开连接 滑动窗口-流量控制
在TCP的四次挥手中,其重要作用就是释放客户端和服务器的连接。这里的一些参数非常重要,因为这些参数的作用是为了表达TCP四次挥手断开连接的过程。
2024-05-13 14:40:59
795
1
原创 TCP连接建立与释放连接——>三次握手和四次挥手
我们在学网络的概念时,每当讲到TCP都会听到三次握手和四次挥手,一直以来可能都对这个概念模糊不清,那么什么是三次握手和四次挥手呢?简单的举一个例子,如果我们和朋友打游戏,我们要和朋友往往都是连麦打游戏,那么我们和朋友之间需要相互确认我们都开麦了。这个过程我会发出一个信号说我开麦了,与此同时呢,朋友会确认他能够听到我的说话声,同时给我发一个信号,让我能够知道他开麦了,最后我也返回一个信号说好的我能听到你也开麦了。
2024-05-11 14:06:29
1256
1
原创 TCP(1)
4个比特位最多能表示15,而首部的长度是4个字节(一个字节表示四个比特位),因此我们得出结论,首部最大的长度是60,如果去掉20个固定的,剩下的选项部分最多占40个字节。而超时重传也不是无限等待的,如果说,网络出现严重的故障,重传了若干次还是不成功,那么就进行重置连接,也就是RST,当RST=1时,表示TCP连接中出现了严重的差错(如主机崩溃)必须释放连接,然后重新的建立传输连接。如果说接收方重传的时候接收到了数据,但是丢失的数据一起传过来了,会导致重复传输,这里就会根据TCP所携带的序号来进行去重。
2024-05-08 11:29:37
869
1
原创 面试题:从第一个字符串中删除第二个字符串中的字符
字符串1: welcome to cvte。字符串2: come。结果:wl t vt。可以接受多种类型的参数,包括基本数据类型,它的参数意义如下。是一个静态方法,它用于将给定的参数转换为字符串表示形式。即删除字符串1中所有的c o m. e 这四个字符。这里顺便提一下String.valueOf()方法。要求删除字符串1中所包含的字符串2中的字符。题目描述:有两个字符。
2024-05-07 17:24:06
172
原创 Java中的Collection接口
Collection接口继承自java.lang.Iterable接口,因此它可以通过迭代器(Iterator)来遍历集合中的元素。它提供了一系列的方法,用于添加、删除、查询、遍历、判断元素是否存在等操作。这些实现类都实现了Collection接口,并根据不同的需求提供了不同的特性和行为。通过使用Collection接口及其实现类,我们可以方便地操作和管理数据集合,实现了数据的组织、存储和检索等功能。,它代表一组对象的集合。它是Java集合框架中最基本的接口之一,定义了一组操作用于管理和操作集合中的元素。
2024-05-07 16:59:18
305
原创 计算机网络通信概述
而真正的存储都是二进制,但是二进制不好看,所以就设置为点分十进制。TCP是一种面向连接的,可靠的传输协议,通过建立连接,数据分段,流量控制,错误检验,重传这些方式,确保了数据的可靠传输。往往我们看直播有的时候就感觉卡了,或者说上网课的时候,老师可能说说话就没声音了,这些情况下网络使用的就是UDP协议。2.MAC地址是一个全球唯一的地址,由网络设备的制造商分配,并用于在局域网(LAN)中唯一标识和定位网络设备。在网络编程中,客户端是我们,我们是主动的一方,我们给服务器发请求,因此服务器就是被动的一方,
2024-04-30 14:26:39
480
3
原创 Django的一些配置问题
这个分别对应三个页面 students teachers guest 页面,返回的内容在view.py中定义,可以返回HTML页面。要是想返回相应的页面,那就定义好html页面在template里!Django尝试匹配URL时发现空路径(文件中定义空路径的URL模式。)没有匹配到任何定义的URL模式。下面是views.py的代码。
2024-04-27 11:17:30
627
原创 Django数据库操作
5. python manage.py runserver 之后进入页面,在后面输入/admin就会进入框架给的管理员页面。2.在数据库setting.py中修改一些参数,修改语言和时区的参数。3.Django_,migrations的表,能够记录迁移文件的过程。6 python manage.py 中可以创建超级管理员。自己设计的密码一定要记好,要不找不回来!4.ctrl d退出终端操作。1.数据库中的一些操作。
2024-02-16 10:24:19
153
1
原创 快速排序&插入排序
通过降级成插入排序,可以避免快速排序在小规模数据上的额外开销,例如递归调用和划分子序列。快速排序的平均时间复杂度为 O(n log n),最坏情况下的时间复杂度为 O(n^2),其中 n 是待排序数组的长度。方法,通过比较轴元素和数组中其他元素的大小,将数组划分为两个部分。左侧的子数组包含小于等于轴元素的元素,右侧的子数组包含大于轴元素的元素。这样就可以逐步将整个数组划分并排序,运用到了分而治之的思想,所以快速排序也是基于轴的排序。方法选择轴元素的索引,然后将轴元素与起始位置的元素进行交换。
2024-01-31 12:49:31
422
原创 排序算法-基于比较的算法
在选择排序中,需要维护一个指针来表示当前未排序部分的起始位置,并通过遍历未排序部分找到最小(或最大)的元素,然后将其与当前未排序部分的起始位置交换。其核心思想是每次遍历数组,要找到遍历当时那次的最小值,总共遍历n次,每次都遍历一次数组找到最小值,所以时间复杂度也就是O(N^2).在不断遍历的过程中,把每次的最小值minIndex都要赋值给当时所遇到过的最小值。总结起来,冒泡排序和选择排序是两种常见的简单排序算法,它们都是基于比较的排序算法,用于将元素按照一定的规则进行排序。(2)时间复杂度O(N^2)。
2024-01-29 12:26:03
267
原创 JavaSE总结
解释:由于 animal1 指向 Cat 对象,所以调用 animal1.makeSound() 会动态绑定到 Cat 类的 makeSound() 方法,输出 "Cat meows"。2.重写(Overriding):指在子类中重新实现(覆盖)从父类继承的方法,使得子类可以根据需要改变方法的行为。6.重写方法的调用是基于对象的具体类型,在运行时动态绑定,根据对象的实际类型选择调用哪个方法。5.重载方法的调用是根据传递给方法的参数列表来选择合适的方法,根据参数类型和数量来匹配调用。
2023-12-17 11:46:44
47
1
原创 微信小程序开发者工具使用
2.添加的时候,自己写一行这个代码就行,然后要在旁边显示的话就把这个代码调到第一个就行。1.会新建页面,在这个点进去添加。
2023-12-12 11:31:14
68
原创 Java的一些回顾和总结(静态类成员方法不用实例化对象)
在学习的时候不理解静态成员方法不用实例化,并且对Java数组的使用不熟练,因此写个博客来回顾知识,并且非常感谢ChatGPT的帮忙。
2023-12-09 21:12:04
79
原创 内存&指针的基本知识
(3)数组的数组名是数组首元素的地址,地址是可以访问指针变量中 通过指针可以访问一个数组的元素。(1)指针就是指针,指针变量就是一个变量,存放的是地址,指针变量的大小是4/8个字节。&a是取变量a的地址,*p指针指向a的地址。5.在32位机器上的地址的大小是4个字节,所以指针变量的大小也是4个字节。同理:在64位机器上地址的大小是8个字节,所以指针变量的大小也是8个字节。(2)数组就是数组,可以存放一组数,数组的大小是取决于元素的类型和个数。1.内存被划分为一个个的内存单元,每个内存单元的大小是1个字节。
2023-09-30 12:44:41
66
原创 深度学习-神经网络反向传播的理解
3.在反向传播的过程中,不断更新调整输入权重,输入时不同的权重值很重要,因为很大程度上会决定你最终识别的是什么,迭代以上过程,直到误差值最小化,这就是对模型的优化。本图大致描述了神经元传递的过程,sum=x1*w1+x2*w2+x3*w3,相当于线性函数,不断调整权重,权重大的便是更有用的特征,更能识别的特征。2.输出结果会有误差,我们称之为损失值Loss,将误差从输出层向隐藏层反向传播到输入层。1.将数据集分批次传送到输入层,经过隐藏层最终输出结果,这是神经网络的正向传播过程。
2023-09-23 14:11:51
82
1
原创 字符串的一些用法-1
1.sizeof(arr)-->数组元素的大小要算上'\0‘, arr={1,2,3}---> 那么sizeof(arr=4)2. strcat(arr1,arr2),把arr2追加到arr1 之后。1.目标空间dest 必须有\0 以确保能找到目标空间的末尾。2.原字符串中也得有\0,在拷贝时将原字符串中\0也拷贝过去。3.strcmp不是比较长度,而是比较对应位置上字符的大小。strstr会返回str1中str2第一次出现的位置。如果str1中没有str2,就返回NULL。
2023-09-20 13:15:19
58
1
原创 关于变量以及指针大小的总结
1.在数组中,sizeof(arr)代表整个数组的大小,sizeof(arr[0])代表数组首元素,sizeof(arr)/sizeof(arr[0])代表数组长度。3.指针变量的大小:指针变量的大小和类型无关,不管什么类型的指针变量,大小都是4/8个字节。2. &数组名,这里的数组名表示整个数组,&数组名取出的是数组的地址。数组指针,指向数组a的指针。
2023-09-19 16:14:35
296
原创 python刷题总结
2.input()自动换行 想一起输入两个数字 a,b=input().split() 因此得出结论input()里面就是字符。1.使用与或非 print(a and b) print(a or b)字符型数字是默认True的,所以这里必须要加int x。a和b按照二进制位进行运算,a和b都是十进制数。
2023-09-01 21:11:08
86
1
原创 三子棋小游戏
1.switch 语句 不要写成case0。而要写成case 0,否则会执行default。2.static int 方法,只在这个文件里写 .c 不用写到 .h中声明了。第三段主要是主函数怎么实现的和game()函数还有 menu()函数。第一段代码是game1.h用于声明。
2023-07-26 22:32:19
69
1
原创 C语言的一些总结
比如说判断16是不是素数 可以分解成4*4 或者2 *8 数字<=4 即 根号16 判断到4就行。关于素数:除了1和自身都不能被整除,因此偶数没有素数,偶数都能除2,像7 11这种都是素数。2.写一个代码:打印100~200之间的素数,并且打印素数的个数。1.写一个代码打印1 - 100之间所有3的倍数的数字。3.有库函数可以判断大写字母 - isupper。素数(质数)-是只能被1和它本身整除的。
2023-07-21 22:30:12
84
1
原创 初识Python的一些心得
5.Python代码非常严苛,原本以为非常松垮,看来我想多了。数集——>[2, 5, 9, 7]数字前面有空格,n = len(list) 该有的空格都要有 连print不对齐都不行。suppose 我定义了一个函数 say_hello,在这个函数里我使用了备注,然后想查看备注。4.int(10.5)print输出10 float(10)print输出10.0。8.for循环默认+/n,如果想要取消,可以print(i, end=" ")2->16 则合并四位二进制 比如说1110。
2023-06-06 23:40:19
65
原创 Linux 一些命令复盘总结
例:cd /home/lebron2311/day1/ 然后我可以在这个day1文件夹里进行一系列操作 mkdir创建一个文件,rmdir删除文件。ls -a or ls -a /home/user1都是查看指定目录下所有子目录与文件(显示隐藏文件)6.删除文件:在文件夹下面怎么删除,我想删除我的day2/dir2/dir1 文件。ls .. 查看上一级目录 (相对路径,不是以/开头的) 绝对路径以/开头。显示:/home/lebron2311/day1/dir1。-r 如果要拷贝的是一个目录。
2023-06-04 10:36:45
75
1
原创 初识Linux
主目录 ls-a 查看隐藏文件 ls-l /home/lebron ls -ln读文件大小方便 (ls 后面要有空格)3 sudo 授予权限 sudo useradd wade 增加用户 userdel则是删除用户。作为大学毕业生才接触Linux很羞愧,在王道python8期,写一下每天的收获,菜鸟一个。9 cp -r /home/lebron/day1 . copy 文件。4 cat | etc |psswd 查看所有用户(可能是passed)7mkdir 创建目录 rmdir删除目录。
2023-06-01 23:23:26
79
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人