- 博客(84)
- 收藏
- 关注
原创 cookie
和Cookie一样,去买一件上衣,这个时候就会把上衣这个对象存入的开辟的Session空间中, Session空间为此对象生成一个唯一的Key值,当再去购买裤子的时候会带着这个唯一的Key值存入到Cookie空间中,同时为它绑定唯一的Key值。同样去买一件上衣,这个时候就会把上衣这个对象存入的开辟的Cookie空间中, Cookie空间为此对象绑定一个唯一的标识然后以响应头方式返回给客户端,当再去购买裤子的时候会带着这个唯一标识以请求头的方式存入到Cookie空间中,同时为它绑定唯一的标识。
2023-10-31 11:53:34 161
原创 操作系统-I/O设备
中断允许计算与I/O重叠,因此可以一边执行其他进程,一边进行I/O,提高CPU利用率,可以理解为开始I/O后,程序抛出中断指令,操作系统切换进程,完成I/O后,程序再次抛出中断指令,操作系统恢复进程,但中断以及进程切换本身也比较耽误时间,另外网络数据传输最好不要使用中断,,硬件将设备寄存器作为内存地址提供,当需要写入数据时,写道这个地址上就行了,即所有的设备都拥有一个虚拟的内存地址(他的区别是这段内存是不能被分配的,是设备独有的),如汇编语言中在特定地址写入数据就可以在显示器上呈现。寻道和旋转的时间很长。
2023-10-20 14:55:01 199
原创 各种视觉障碍的模拟
青光眼, 周边视野的黑色斑点,中间也有(周边视野逐渐丧失)色盲: 一些颜色不可见,老视 一般的老视。白内障: 高斯模糊。老年黄斑病变, 扭曲,视力模糊,黑斑。糖尿病视网膜病变, 随机分布的黑斑。
2023-10-19 23:53:26 150
原创 分页操作系统
而进程的页表,则是一个哈希表,进程内部的每一个虚拟页会对以一个真实的物理页,这样造成一种错觉,页表由页表项组成,页表项里不仅有物理页帧,还包括对该页的描述,如该页是否允许读,写,执行,该页是否被分配,该页是否被访问过(注意到每一个描述都为是或否,因此正好使用一位来记录),这些描述被称为位:如有效位,保护位,存在位,参考位,脏位。操作系统将空间分割为固定长度的分片,称为页,每一页有固定的地址空间,分页将进程的地址空间分割成固定大小的单元,每个单元称为一页,也叫做页帧(页并不会完全用完,页内参与有一些碎片)。
2023-10-13 18:00:59 174
原创 MYSQL
(如果存在就不创建了)排除null:select 字段名3,字段名1 +ifnull(字段名2,代替值)....from 表名;update 表名 set 列名1=值1,列名2=值2 [where 条件];修改名称和类型 alter table 表名 change 列名 新列名 数据类型。列名2 数据类型2,修改数据库的字符集:alter database 数据库名称 character set 字符集名。insert into 表名(列名1,列名2...列名n)values(值1,值2.....值n)
2023-10-04 22:50:50 1356
原创 汇编语言——王爽
从上面可以看出,如果要访问一个内存单元,需在指令中使用[...]来表示内存单元,如果在[]里用一个常量idata直接给出内存单元的偏移地址,就要在[]前现实的给出段地址所在的寄存器;如果[]里使用寄存器,则段地址默认在ds中,当然也可以显式的给出段地址所在的寄存器。(P112)
2023-09-28 23:18:12 416
原创 java多线程
流程:创建Callable对象->Callable对象作为FutureTask对象的构造参数,创造FutureTask对象,->将FutureTask对象作为参数创建Thread对象->Thread对象调用start启动线程->FutureTask对象调用get方法返回线程的结果值;Callable和FutureTask可以返回线程的结果,并对线程进行管理;守护线程的生命周期与非守护线程 一样,非守护线程结束,守护线程也会结束;将线程插入到当前线程之前,只有线程执行完后,当前线程才会执行;
2023-09-28 14:13:48 77
原创 操作系统——李治军
检查硬件,将操作系统读入内存内——这些指令都在BIOS内,因此开机后,将执行BIOS里的指令,完成后开始执行操作系统,命令包括:检查硬件,读入操作系统代码(将set-up,system模块读入内存,之后执行set-up的命令,)打印LOGO四大部分。可以看到分成了若干个进程,采用int中断指令来实现。
2023-09-19 21:44:05 152
原创 汇编语言——标志寄存器
ZF标志:存储运算指令的结果,如add,sub,dec等指令,结果为0则为ZR,(zero),非0则为(NZ);PF标志:记录相关指令执行后,其结果中所有bit位中1的个数是否为偶数。如1的个数为偶数则pf=1(PE),如果为奇数,则为0(PO);SF标志:相关指令执行后,结果是否为负,如果为负,记录为NG(negative),非负则为(PL)OF标志:记录是否有溢出,如果发生溢出(NV),运算的结果将不正确,没有进位是(NC)CF标志:运算时是否有进位,有进位是CY,无进位是NC;
2023-09-13 01:04:04 221
原创 Map集合
Entry集合就是pair对象;java没有tuple;Entry是Map的内部接口;不写Map时要导入Map包;put方法:添加数据时键不存在则添加,返回null,如果存在则覆盖原有键值对对象,并返回被覆盖的值对象。containsKey,containsValue:判断键或值是否存在;Map是接口,不能直接创建对象,可以创建它的实现类的对象;remove:返回被删除的值对象,如果不存在返回null;Map是双列集合顶层集合是所有双列集合都可以使用的。size:返回集合中键值对的个数;
2023-09-12 22:28:31 136
原创 平衡二叉树
平衡二叉树的纠正左左,右右可以解决,左右,右左需要先转换成左左,右右。即递归的解决左左,右右。红黑树是一种二叉查找树,但不是高度平衡的,平衡二叉树的查找效率很高,但维护平衡二叉树的时间较多。红黑树的维护成本低。红黑树:1.二叉查找树,满足大小关系,但不是高度平衡的,需要满足特定的红黑规则。红黑规则:1.每一个节点要么是红色,要么是黑色的;2.根节点必须黑色。3.某一结点是红色,那么子节点应该是黑色(不能出现两个红色节点相连的情况)
2023-09-12 21:21:30 170
原创 java-hashcode,equals,getclass
散列码是由对象导出的一个整型值,如果x,y是两个不同的对象,那么x.hashCode()和y.hashCode()基本不同,hashCode定义在object里,每一个对象都会有一个默认的散列码,其值为对象的存储地址(指针值),而有些类有自己定义的hashCode(),如String,那他的散列码就不是地址值,因此String对象的散列码有可能相同,但没有定义hashCode()的类的对象的散列码肯定不同,如StringBuilder。并打印得到的字符串,即重载;为了简单,子类可以直接调用父类的方法,
2023-08-07 05:37:17 127
原创 【无标题】
进程之间是链表的存储方式,子进程是父进程的后继,创建完成后,系统会出现两个完全相同的进程,这两个进程没有固定的先后顺序(除非是用wait()),每个进程都有一个进程标识符(PID),通过getpid()获得,通过getppid()可以获得父进程的值;(这么看来子进程可以访问父进程,父进程可以了解子进程的信息,似乎是一种双向链表或者说有向图的形式;子进程 将会复制 fork()函数以后的部分,而不会从#include处复制,因此子进程没有调用fork函数,在父进程中,fork返回新创建的子进程的PID;
2023-08-05 11:53:33 39
原创 【无标题】
因此返回值为shared_ptr的函数必须调用shared_ptr()或者make_shared();shared_ptr的初始化:参数要么时内置类型指针,要么是智能指针,前者必须通过构造函数或者make_shared(args),使用构造函数时参数只能是(p)进行赋值。推荐使用make_shared(args)来初始化智能指针,使用new将会导致同一块内存绑定到多个独立创建的智能指针上,这就会导致内存被delete;
2023-07-15 08:01:27 203
原创 关联容器Primer
使用insert,emplace函数,有时我们有想要插入的数据,但没有现成的元素,可以使用构造函数来插入,或者使用emplace函数传入相应的参数;value_type:对于set与key_value相同,对于map,为pair<const key_type,mapped_type>;为了使用自己的定义,在定义multiset时必须提供两个类型,关键字类型,以及比较操作类型——一种函数指针类型;set是关键字的简单集合,当只想知道一个值是否存在时,使用set,如一个企业可以使用set保存开过支票的人;
2023-07-14 20:23:52 282
原创 顺序容器Primer
emplace,使用元素类型的构造函数在容器的某位置直接创建一个元素,其参数类型与类型构造函数参数特征一致,但对于push_back()则是使用临时对象来在容器内插入元素,过后该变量即被释放;将迭代器b,e范围内的元素插入到迭代器p指向的元素之前,b,e不能指向c中的元素,返回新添加的第一个元素的迭代器;在迭代器p指向的元素之前创建n个值为t的元素,返回指向新添加的第一个元素的迭代器,若n为0,返回p;类型别名:通过类型别名,即使我们不了解容器中元素的类型,我们也可以定义相同类型的变量;
2023-07-11 00:49:51 117
原创 操作系统——虚拟机,进程,线程
当多个进程运行在一个操作系统上时,由于指针等问题,此进程可能会影响另一进程的数据安全,是不安全的,操作系统获得硬件的大小是根据其下进程的要求来的,同一操作系统下不同进程是共享内存资源的,因此如果有不同的操作系统,两个在不同操作系统下运行的进程就不会共享内存资源了,这就引出了虚拟机;各个进程对于管道的访问是互斥的;操作系统所需要的所有信息都被放在PCB中,他是PCB存在的唯一标志,进程被创建时操作系统将会为他创建PCB,操作系统根据PCB进行各种进程的切换,硬件资源的划分等,PCB可能会使用数组,
2023-07-09 17:48:55 878
原创 类模板代码重用
虚基类相当于单独继承了该基类,在派生类的构造函数中必须显式调用其构造函数,不能使用间接类来传递参数,所以相当于又继承了一次,混合使用虚基类和非虚基类当导致拥有多个基类对象;继承类通过using声明使用私有继承类的方法;模板:同级之间的代码重用使用模板;除此之外还要重新修改基类的方法;
2023-07-07 19:59:37 77
原创 虚函数,抽象基类
给每个对象添加一个隐藏成员,隐藏成员保存了一个指向函数地址的数组指针,数组被称为虚函数表,虚函数表存储了为类对象声明的虚函数的地址,比如基类包含一个指针,该指针指向基类中所有的虚函数的地址查找表,派生类将继承这个虚函数地址表,如果重新定义了虚函数,那么派生类的虚函数表中相应的函数地址会被替换,调用虚方法的时候,函数调用的就是这个虚地址里的函数,由于被替换,所以可以用基类指针调用派生类方法,调用虚函数时,程序将查看虚函数表中的地址,并转向相应的函数地址表,由于虚函数表的存在,他只与对象有关,
2023-06-26 15:59:16 179
原创 算法——查找表
查找算法评价指标:关键字的平均比较次数,也称平均查找长度;每个关键字查找数的总和除以关键子数目;查找,根据一个值查找另一个值,value值可以是容器,结构,这样可查找的元素就更多;此关键词:可以识别若干记录的关键字是此关键字,如一个姓名对应多个学生信息;主关键字:可以唯一的标识一个记录的关键字,如准考证号;查找成功:得到信息或指示该记录在查找表中的位置;查找的关键是:如何提高查找效率;查找失败:得到空指针或空记录;插入 在查找表中插入一个元素;检索 元素的各种属性;删除 删除一个元素;
2023-06-26 14:46:15 396
原创 【无标题】
维护两个指针i,j表示[l,mid]里第i个位置和[mid+1,l]里第j个位置,如果nums[i]<=nums[j],就将nums[i]放进临时数组tmp中并让i+=1,否则就将nums[j]放进tmp中然后j+=1;归并排序利用了分治的思想对序列排序,对一个长为n的待排序序列,将其分解为长度为n/2的子序列,每次递归的调用使两个子序列有序,然后在线性合并两个序列使得整个序列有序;每次把两个两个序列中较小的数放到临时数组中,这样就达成了排序;最后再把区间里的数重新赋值;
2023-06-26 10:53:20 528
原创 快速排序——C++
l,r] 的部分进行划分,并返回分界值的下标 pos,然后按上述将的递归调用 randomized_quicksort(nums, l, pos - 1) 和 randomized_quicksort(nums, pos + 1, r) 即可。关键在于划分函数的实现:选定一个值(数组里任意一个值),大于它的在一组,小于他的在另一组,其实挺简单的,为了方便我们都选取序列最后一个元素作为选定值;快速排序:将序列划分成两个部分,前一部分的值都小于后一部分,然后递归的调用两部分序列进行排序,一分二,二分四;
2023-06-26 00:48:57 148
原创 哈夫曼树——数组实现
选择权值最小的两个构成叶子节点,根节点权值为两叶子节点之和,重复这两部直到只有一棵树为止,此树就是哈夫曼树;删除原有的两棵树,将这棵树加入森林中;构造n个给定值节点构成的森林;
2023-06-23 09:57:55 109
原创 内存模型和名称空间
这让不同的变量,常量都能被定义了,但他的缺点在于需要包含头文件,因此extern还是很有用的,可以减少编译所需的时间和内存空间,当我们需要“file.h”里的一个函数时,我们不必将整个“file.h"包含进来;尤其是当多个头文件定义了相同名称的常量时,因为这是不可避免地,这条主要是针对常量的,因为没有头文件会把变量放在里面,但会有许许多多的常量;只有一个例外:内联函数,内联函数的定义在头文件里,C++允许内联函数的链接性是外部的,声明包括:引用声明(extern),定义声明,区别在于是否分配内存空间;
2023-06-22 16:50:00 497
空空如也
求C语言刷题学习以及课程推荐
2022-12-25
TA创建的收藏夹 TA关注的收藏夹
TA关注的人