自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(95)
  • 收藏
  • 关注

原创 高性能播放器(一)

返回值:主进程中,会返回子进程的pid。子进程中,返回值为0。如果失败,返回-1。

2024-02-21 22:33:24 757

原创 堆的实现。

【代码】堆的实现

2024-02-15 19:05:17 358

原创 队列的实现

【代码】队列的实现。

2024-02-15 19:00:13 376

原创 二叉树遍历的实现

【代码】二叉树遍历的实现。

2024-02-15 18:55:32 340

原创 单链表实现

【代码】单链表实现。

2024-02-15 18:48:26 303

原创 栈(Stack)的实现

【代码】栈的实现。

2024-02-15 18:45:09 446

原创 顺序表实现

【代码】顺序表实现。

2024-02-15 18:42:20 381

原创 【计算机网络】socket编程

1.不是所有的进程都要进行网络通信,只有部分进程可能会网络通信,若用进程PID来作为网络标识该进程,就很难区分清楚那些是进行网络通信的,那些不是进行网络通信的。在进行发和收数据时,在TCP层没有报文的概念,收到一堆的数据,把这一堆的东西一次将给上层的应用层,也可一个字节一个字节交。进程PID在系统层面上每个进程也是唯一的,也能表示该系统上进程的唯一性,所以用进程PID可以代替端口号的。如:收快递,收一个就是一个完整的快递,具体的快递不可能收半个或者一个半,若对方发了三次,你就必须收三次。

2024-02-15 17:51:42 865

原创 【计算机网络】网络基础

到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层.(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测。划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层.数据链路层的标准是不一样的,因为数据链路层的具体实现是在网卡驱动实现的。

2024-02-15 16:30:03 368

原创 基于环形队列的生产消费模型

【代码】基于环形队列的生产消费模型。

2024-02-07 06:00:33 346

原创 【Linux】生产者 消费者模型

【代码】【Linux】生产者 消费者模型。

2024-02-07 05:58:32 394

原创 【Linux】线程互斥

第二种,若锁为局部变量,就必须调用pthread_init 进行初始化,用完后也必须调用 pthread_destroy 进行销毁。此时的tickets的值为0,CPU就会再次执行还未执行完的线程a 的剩余步骤,tickets-- 即 0-1 =-1。第一种,锁为全局变量 ,直接用PTHREAD_MUTEX_INITIALIZER,对锁进行初始化。不会,我不在期间,其他人没有办法进入临界区,因为无法成功申请到锁,锁被我拿走了。为了保证访问时不能被别人去抢走,所以就把门窗都关上,直到访问完,才让别人进来。

2024-02-07 05:55:52 825

原创 【Linux】线程分离

即 线程默认被创建出来时,必须被join的, 若不能被join,线程对应的资源就无法释放,进而造成内存泄漏问题。若不关心线程的返回值,join是一种负担,创建一个线程时,提前告诉它,要分离这个线程。整体红色的框 作为一个结构体 等同于 线程的TCB 结构 进行描述。struct pthread 描述的是线程的其他的一些属性。找线程,找红色框的起始地址即可 称为 线程ID。默认情况下,新创建的线程是joinable的。线程库也需要管理线程,先描述再组织。线程库创建类似的管理线程的TCB。

2024-02-07 05:45:01 386

原创 【Linux】线程控制

1.进程是资源分配的基本单位2.线程是调度的基本单位3.线程共享进程数据,但也拥有自己的一部分数据。

2024-02-07 05:40:47 342

原创 多线程概念

创建子进程时,只创建PCB,创建出来的PCB继续指向父进程的地址空间代码区假设有很多函数存在,让不同的PCB执行不同的函数相当于在一个进程内部包含多个执行流,指向同一个进程内的不同代码区域每个PCB都是单独的线程线程在地址空间内运行,所以该线程属于进程。

2024-02-07 05:33:37 361

原创 【Linux】进程信号(下)

若为用户态,想要去访问操作系统里面的代码和数据时,CPU就会拒绝执行代码,操作系统就可以识别非法访问,即硬件异常,向目标进程发送信号终止进程。当进程从内核态切换回用户态的时候,进程会在操作系统的指导下,进行信号的检测与处理。操作系统提供的所有的系统调用,内部在正式执行调用逻辑的时候,会去修改执行级别。当执行完某种任务时,先找到对应的进程,检测对应的信号。内核态:执行操作系统的代码的时候,进程所处的状态。若为3,则表征正在运行的进程,执行级别为用户态。用户态:执行你写的代码的时候,用户所处的状态。

2024-02-07 05:28:45 293

原创 【Linux】进程信号(上)

信号产生什么叫做信号呢?生活当中认为是信号的是:红绿灯 闹钟 下课铃 鸡叫 手势1.当红灯亮的时候, 你会停下来 即匹配的动作那为什么会有这个匹配动作呢?因为曾经有人培养过你所以信号没有被产生,也知道怎么该处理它。

2024-02-07 05:20:49 333

原创 【Linux】system V 共享内存

进程A和进程B都通过自己的页表映射到物理内存中的特定区域,进而找到该进程匹配的代码和数据。并不是在内存中开辟空间即可,系统为了管理共享内存,构建对应的描述共享内存的结构体对象。想办法把物理内存中新开辟空间 通过页表 映射到 进程A和进程B的共享区中。就完成了让进程A和进程B看到同一份资源,这份资源就被称为共享内存。进程A和进程B就可以通过起始的虚拟地址,对应页表访问到内存。为了让进程A和进程B通信,前提是两者要看到同一份资源。进程A和进程B在自己的地址空间中都有自己的共享区。可以,其他进程也可以通信。

2024-02-07 05:17:46 329

原创 【Linux】 基础IO(下)——自己实现文件接口FILE

【代码】【Linux】 基础IO(下)——自己实现文件接口FILE。

2024-02-07 05:11:51 388

原创 【Linux】基础IO ——文件(上)

文件= 内容+属性对应文件的操作,对内容的操作,对属性的操作当文件没有被操作的时候,一般在磁盘中当对文件进行操作的时候,一般在内存中,因为冯诺依曼体系规定当我们对文件进行操作的时候,文件需要提前加载到内存中,提前加载的是属性当我们对文件进行操作的时候,文件需要提前加载到内存中,不只有你在load,内存中一定存在大量的不同文件属性打开文件本质就是将需要的属性加载到内存中,OS内部一定会同时存在大量的被打开的文件,操作系统就会通过先描述,在组织的方式管理这些被打开的文件。

2024-02-07 05:07:25 319

原创 【Linux】进程的程序替换

编写极简版本的shell(bash)目标:为了深刻的理解shell的运行原理: mybash.c????buffers102464//在commandstr以空格作为分割符if(argv[0]==NULL)//切割失败return -1;int i=1;while(1)//继续切割空格break;i++;W>}int i=0;for(i=0;argv[i];(void)s;

2024-02-07 05:05:02 838

原创 【Linux】进程控制

写时拷贝本质是一种资源筛选,当子进程尝试去修改子进程要用的空间,才进行分配.是一种按需所取资源的策略。崩溃的本质:进程因为某些原因,导致进程收到来自操作系统的信号。操作系统不允许浪费或者不高效的行为出现的。正常执行分为 结果正确, 结果不正确。供用户进行进程退出健康状态的判定。正确就返回0,不正确就返回非0。

2024-02-07 04:56:56 338

原创 【Linux】孤儿进程 | 环境变量 | 命令行参数 | 进程优先级

目录1. 孤儿进程2. 环境变量3 . 命令行参数4. 进程优先级1. 孤儿进程正常来说,若父子进程中子进程结束,父进程要接收子进程的退出码结果,所以子进程处于僵尸状态但是 父子进程中父进程结束,为什么父进程没有进入僵尸状态呢?如果父子进程中父进程先退出,而子进程没退出,子进程在父进程退出后,要被1号进程领养,1号进程称为操作系统,而被领养的进程称为孤儿进程如果不领养,子进程后续退出,就无人回收了2. 环境变量在操作系统当中由系统在开机之后帮我们维护的一些系统运行时的动态参数我们自己写的代码

2024-02-03 23:15:19 293

原创 【Linux】进程状态

阻塞:阻塞就是不被调度一定是因为当前进程等待某种资源就绪一定是进程task_struct结构体需要在某种操作系统管理的资源下进行排队。

2024-02-03 22:20:16 935

原创 【linux】进程|查看进程|PID值|fork原理

进程是内核关于进程的相关数据结构+当前进程的代码和数据。

2024-02-03 18:59:32 988

原创 静态库和动态库

链接的时候,如果是动态链接,找到动态库,拷贝动态库中的我所需要的代码地址到自己的可执行程序中。链接的时候,如果是静态链接,找到静态库,拷贝静态库中的我所需要的代码到自己的可执行程序中。动态库:因为可以被共享,所以真正的实现永远都是在库中,程序内部只有地址,比较节省空间。静态链接成功:我们的程序,还是依赖动态库,一旦动态库缺失,我们的程序就无法运行。静态链接成功:我们的程序,不依赖任何库,自己就可以独立运行。动态库为专门让编译器,对用户的程序进行动态链接。静态库为专门让编译器,对用户的程序进行静态链接。

2024-02-03 18:37:30 331

原创 linux小程序—进度条

2 #include<unistd.h>//usleep函数。

2024-02-03 18:32:55 341

原创 Linux项目自动化构建工具-make/makefile

退出vim,使用make后,会自动在当前目录下查找对应的makefile文件,再去执行内置好的gcc命令。clean目标文件中含有.PHONY,clean即可称为伪目标 而mytest目标文件中不含有。说明makefile是一个围绕依赖关系和依赖方法构建的一个自动化编译工具。使用 touch makefile 创建一个makefile文件。.PHONY : 代表总是被执行的,被修饰的称之为伪目标。mytest作为目标文件,test.c作为依赖文件列表。使用test.c形成mytest,两者称之为依赖关系。

2024-02-03 10:25:52 376

原创 linux权限

第三个6对应other, 以二进制表示为: 110 读为真,写为真,执行为假。第三个7对应other, 以二进制表示为: 111 读为真,写为真,执行为真。第二个6对应所属组,以二进制表示为: 110 读为真,写为真,执行为假。第二个0对应所属组,以二进制表示为: 000 读为假,写为假,执行为假。第一个7对应拥有者,以二进制表示为: 111 读为真,写为真,执行为真。第二个7对应所属组,以二进制表示为: 111 读为真,写为真,执行为真。输入 su +普通用户名。输入root用户密码。

2024-02-03 10:19:55 296

原创 linux的重定向与xshell原理

外壳程序通过指令的方式收到,外壳程序把收到的指令传递给操作系统 操作系统进行处理,执行完后 再通过shell 返回给用户。把file.txt文件的内容 you can see me 打印后,cat < file.txt :从fille.txt文件中读取数据。cat < file.txt 与 cat file.txt等价。用户并不是直接访问操作系统,而是通过外壳程序。使用 >> 发现会在文件结尾 追加内容。

2024-02-03 10:01:04 332

原创 linux基本指令(下)

1.拷贝到当前目录。

2024-02-03 09:53:21 349

原创 linux基本指令(上)

用来显示当前命令下的所有文件(只会显示一般文件的文件名/目录)若此时只有root现,说明当前只有一个超级权限用户root。touch +文件名 即可创建一个文件。一般的cd指令+想要进入的目录内容。

2024-02-03 09:38:41 352

原创 【MySQL】事务(下)

(如在终端1中查询数据,数据A是属于 50-100 范围内的,并且已经检测到数据A存在于50-100范围内, 但终端2在检测后修改数据A的范围 在100 -200 ,就会导致 终端1中继续检测时,发现 数据A还会存在于100-200 范围内)( 以插入举例,最近一次 插入记录的事务 是谁插入的,对应的事务ID是谁,把对应的事务ID放入表中)在终端1 启动事务后,插入 田七的数据到表中 ,此时在终端2启动事务的表中 是查询不到田七的数据。

2024-02-02 08:56:22 997

原创 【MySQL】事务(中)

说明 任何一个人 不一定 要看到 最新的世界,也不一定 要 看到比较老的世界,只要看到在自己生命周期之内的事情即可。事务1 将表的数据删除 或 提交,事务2 都是看不到的表的变化 ,直到事务2也提交,才可以看到表的变化。所有事务都要有执行过程 ,那么在 多个事务 各自执行多个SQL的时候,就有有可能出现相互影响的情况。因为在学习过程中,是很容易受到干扰的,所以就需要将你的学习环境隔离开,保证你的学习环境是良好的。比如:你妈妈跟你说 ,那么就别学,要学就学到最好,至于你的学习过程,你妈妈是不关心。

2024-02-02 08:39:17 891

原创 【MySQL】事务(上)

编写sql语句时,有可能一条sql语句是解决不掉问题的,需要一批sql语句共同组合才能完成如:从银行卡A中提钱,向银行卡B转账,将银行卡A中的钱减100,再将银行卡B中的钱加100使用两条sql 语句 才能完成,单独一条语句是完不成操作的事务 是由 一条或者多条事务 构成的集合体,这个集合体 需要共同完成某种任务构成这个集合体的语句,要么全部失败,要么全部成功同样事务规定不同的客户端 看到的数据是不同的事务主要处理 操作量大、复杂度高的数据。

2024-02-02 08:39:01 1046

原创 【MySQL】索引(下)

create index idx_name on user10(name)– 创建一个索引名为 idx_name 的索引。即将name变为普通索引。MySQL除了会默认建立主键索引,也可能会按照其他列信息建立的索引,一般这种索引称为 普通索引。key_name表示索引名称为primary ,column_name 表示打在 id这一列上。对于 储存引擎 myisam,普通索引和主键索引是没有区别的。index(name) –在表的定义最后,指定某列为索引。在创建表的最后,指定某列或者某几列为主键索引。

2024-02-01 16:36:41 848

原创 【MySQL】 索引(上)

(如:查找 20 -30 区间内的数据,只需找到20 和30 ,以20为起点 ,30作为终点,因为是有序的,所以只需遍历即可)这棵树 一定是 一颗 矮胖型的树,就意味着 途径上的节点 减少,找到目标所需更少的page ,IO次数也变少了。( 拥有的目录项的数量是相同的,每个路上节点保存的目录项变少了, 经过的节点就会变多,整颗树就会变高)单个page大小是固定的,随着数据不断增大,16KB不可能存下所有的数据,必定会有多个页来存储数据。

2024-02-01 16:32:01 1160

原创 【MySQL】 复合查询 | 内外连接

输入 select ename ,sal,dname from emp,dept where emp.deptno =dept.deptno;select 字段 from 表1 inner join 表2 on 连接条件 and 连接条件;左侧表完全显示 右侧的表按条件拼接(条件满足拼接,条件不满足拼NULL)左侧的表按条件拼接(条件满足拼接,条件不满足拼NULL) 右侧表完全显示。表示从 emp (员工表) 和dept (部门表) 中获取信息。在查询语句在from子句中,把一个子查询当作一个临时表使用。

2024-02-01 16:21:49 318

原创 【MySQL】内置函数

date_add(date,interval d_value_type) (interval后的数值单位 可以是 year minute second day)date_sub(date,interval d_value_type) interval后的数值单位 可以是 year minute second day。replace (str,search_str,replace_str) 即 将str中的search_str 替换成 replace_str。将字符a与字符b连接起来,形成ab。

2024-02-01 16:13:33 876

原创 【MySQL】表的增删查改

输入 insert into students values(14,1,‘赵六’,‘8888’),(15,2,‘田七’,‘9999’);可以使用* 将所有行全部列举出来,也可以使用 逗号 隔开一列或者多列 按照指定筛选。即可获得对应的表中指定列的信息。因为 查询的越多,意味着需要传输的量越大,可能会影响索引的使用。若使用update时 ,不使用where ,则对整个表进行修改。(若没有ober by 子句的查询,则返回的顺序是未定义的)当单个插入后,还想继续插入,就需要加上 逗号进行分割。

2024-02-01 16:08:17 843

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除