- 博客(21)
- 收藏
- 关注
原创 9.3.信号(信号捕捉和信号处理的原理,4次内核态和用户态的切换)
合适的时候”处理信号,指的是什么时候?(根据流程pending->block->handler分析)什么时候处理信号,一定是在内核态中处理信号,“合适的时候”就是指从(即执行完系统调用接口的代码或者内核处理完异常,准备返回用户态时),这个时候进行信号检测(检查pending表)和处理。为什么会进入内核态,程序执行自己编写的代码的时候是用户态,执行到系统调用接口或者遇到缺陷陷阱异常时,就由用户态切换到内核态。
2024-09-04 14:04:30
777
原创 9.2信号(信号的保存、对信号集的处理)
阐述linux下信号的3个表:block表、pending表、handler表,以及这个3各表的内容什么时候修改,怎么修改
2024-09-02 00:28:12
760
原创 8.信号量
互斥的引出:让不同的进程看到同一份资源,比如共享内存,也带来一些时序问题,造成数据不一致问题1.我们把多个进程(执行流)看到的公共的一份资源成为临界资源2.我们把自己的进程,访问临界资源的代码,成为临界区3.多个执行流,互相运行的时候会互相干扰,因为我们不加保护的访问了同样的资源(临界资源),在非临界区的多个执行流互相是不影响的4.为了更好的进行临界区的保护,可以让多执行流在任何时刻都只能有一个进程进入临界区,这种行为称为,方式是加锁。
2024-08-31 19:56:34
336
原创 高并发内存池(仿谷歌tcmalloc)
本项目是实现一个高并发的内存池,原型是google的一个开源项目tcmalloc,tcmalloc全称Thread-Caching Malloc,即线程缓存的malloc,实现了高效的多线程内存管理,用于替代系统的内存分配相关的malloc、free函数。本篇所讲的项目是把tcmalloc最核心的框架简化后模拟实现,实现出一个化简版的高并发内存池,目的就是学习tcamlloc的精华,而不是完全的实现tcmalloc。
2024-08-19 22:34:59
706
1
原创 java接口
在Java中,接口可以看成是:多个类的公共规范,是一种引用数据类型。接口不能被实例化接口中成员默认public static final,接口中方法默认public abstract,方法不能有具体实现,接口不能有构造器和静态代码块,接口中可以有static 修饰的方法如果类中没有重写接口方法,必须将该类设置为抽象类//成员变量默认static//抽象方法()相当于公共标准的意思//不能有具体实现,默认Publid abstract。
2023-12-12 10:01:55
871
原创 静态库和动态库的制作和使用
其中-I(大写i)./表示在当前目录下搜索头文件,-L./告诉链接器在当前目录下搜索库文件,-l (小写L)后面根静态库的名字test (去掉前缀和后缀)源文件(.h ,.c)-》预编译-》编译-》汇编-》目标文件(.o)—》ar命令打包生成静态库。假设测试文件为test.c,静态库文件为libtest.a,头文件为head.h。libtest.a为加了前缀和后缀的静态库名字。将头文件、test.c、动态库文件发给客户,ar命令把目标文件打包生成静态库文件。静态库需要将.a文件和头文件发给客户。
2023-12-01 19:47:49
385
1
原创 String类
从后往前寻找空格,返回最后一个空格的下标,然后从该下标+1的位置截取后面字符,统计长度//获取最后一个空格的下标return -1;
2023-11-20 14:33:37
72
1
原创 Java类学习
成员变量:定义在类里面,方法外面的变量叫成员变量//创建类格式: class 类名 {}//例如创建一个人的类//这叫成员变量public void eat(){//这叫成员方法System.out.println("吃饭");在另一个public类中创建包含主函数的类,实例化对象后,可以用对象名.的方式访问对象中的属性以及方法//类名 自定义对象名字,这叫实例化对象person1.name="张三";
2023-10-29 16:08:18
65
1
原创 JAVA习题
left指向arr[n-1],right也指向arr[n-1],mid=((n-1)+(n-1))/2=n-1,mid也等于数组下标的最后一个,此时arr[mid]依然比val小,继续执行left=mid+1,那么left就大于一直没动的right,越界了,不符合循环执行条件,退出循环。此时arr[mid]依然大于val,继续执行right=mid-1,那么right就小于一直没动的left,越界,不符合循环执行条件,退出循环。不同元素异或,结果≠0,0异或除0以外的数,结果等于该数,
2023-10-25 20:44:51
40
1
原创 Java学习数组
所以虽然传入的时arr1数组,当执行arr=new int[]{89,23,56}这条语句时,arr指向的不是arr1的地址,因此没有改变arr1的元素。当把arr1数组传入fun2的函数后,在主函数内打印arr1时会发现依然是打印出[12,34,54,67]数据类型[] 数组名=new 数据类型{data,data,data};在fun2内当new了一个新的数组时,新创建数组的地址也是新的,然后把这个新的地址再赋值给arr。静态:数据类型[] 数组名={data,data,data};
2023-10-25 10:24:34
54
1
原创 JAVA实现猜数字游戏
GuessInt函数用来获取生成的随机数,并在最后把生成的随机数传入GuessGame函数。可以自定义两个函数来实现游戏功能,分别是GuessInt和GuessGame。生成一个0到99的整数,你需要不断输入数字来猜想这个随机数是什么。执行完RanNum函数,直到猜中正确数字,则退出循环。导入所需包,包括生成随机数所需包和从键盘输入所需包。猜大猜小都给出反馈,猜正确则由break退出循环。GuessGame函数用来实现游戏功能。
2023-10-24 20:08:31
541
原创 c语言猜数字游戏
c语言提供了rand函数生成随机数,随机数范围在0~RAND_MAX之间,这个RAND_MAX在大部分编译器上是32767,而题目要求在1~100之间(需使用头文件stdlib.h)给你生成一个1~100的数,你需要不断输入另一个数字来判断生成的数字是多少,输入的数大于生成的数,提示猜大了,小于,提示猜小了,输入正确,提示猜对了,并退出循环。如果time是NULL,就只返回这个时间的差值。程序运行的时间是时刻发生变化的,符合随机,C语言中time函数可以获得这个时间。首先游戏开始菜单界面设计。
2023-10-24 10:48:01
69
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人