<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[luoqing418的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/luoqing418</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; luoqing418]]></copyright><item><title><![CDATA[网编（数据库）]]></title><link>https://blog.youkuaiyun.com/luoqing418/article/details/144221238</link><guid>https://blog.youkuaiyun.com/luoqing418/article/details/144221238</guid><author>luoqing418</author><pubDate>Tue, 03 Dec 2024 18:37:07 +0800</pubDate><description><![CDATA[在代码中常动态创建数据库 在程序运行过程中，当需要进行数据库操作时，应用程序会首先尝试打开数据库，此时如果数据库并不存在，程序则会自动建立数据库，然后再打开数据库。但是数据库并不是随意地将数据进行存放，是有一定的规则的，否则查询的效率会很低。数据的来源有很多，比如出行记录、消费记录、浏览的。它是一个轻量级的嵌入式数据库。数据库是“按照数据结构来组织、存储和管理数据的仓库”。内的、有组织的、可共享的、统一管理的大量数据的集合。比目前流行的大多数数据库对数据的操作要快；储存在单一磁盘文件中的一个完整的数据库；]]></description><category></category></item><item><title><![CDATA[网编（头分析）]]></title><link>https://blog.youkuaiyun.com/luoqing418/article/details/144178994</link><guid>https://blog.youkuaiyun.com/luoqing418/article/details/144178994</guid><author>luoqing418</author><pubDate>Mon, 02 Dec 2024 08:43:58 +0800</pubDate><description><![CDATA[第二次握手：服务器收到SYN包，确认客户端的SYN，发送ACK确认包（ACK=1,ack=J+1）,同时发送一个同步包（SYN=1，seq=K），进入。1、发送端给每个数据包添加包首部，首部中应该至少包含数据包的长度，这样接收端在接收到数据后，通过读取包首部的长度字段，便知道每一个数据包的实际长度了。第四次挥手：主动方收到FIN包，回复一个ACK确认包（ACK=1,ack=w+1），被动方接收到主动方的ACK后，关闭连接。Ack：应答号，用于应答非应答包（握手包，挥手包，数据包）。]]></description><category></category></item><item><title><![CDATA[网编（网络检测，广播，组播）]]></title><link>https://blog.youkuaiyun.com/luoqing418/article/details/144149591</link><guid>https://blog.youkuaiyun.com/luoqing418/article/details/144149591</guid><author>luoqing418</author><pubDate>Sat, 30 Nov 2024 08:50:40 +0800</pubDate><description><![CDATA[实现某些特定协议要求，比如某些设备规定，发送请求数据后，如果多长时间后没有收到来自设备的回复，需要做出一些特殊处理。多播方式既可以发给多个主机，又能避免象广播那样带来过多的负载(每台主机要到传输层才能判断广播包是否要处理)192.168.1.0（255.255.255.0）最大主机地址：192.168.1.255（广播地址）广播方式发给所有的主机。过多的广播会大量占用网络带宽，造成广播风暴，影响正常的通信。组播是一个人发送，加入到多播组的人接收数据。如果同时发给局域网中的所有主机，称为广播。]]></description><category></category></item><item><title><![CDATA[网编（服务器）]]></title><link>https://blog.youkuaiyun.com/luoqing418/article/details/144139207</link><guid>https://blog.youkuaiyun.com/luoqing418/article/details/144139207</guid><author>luoqing418</author><pubDate>Fri, 29 Nov 2024 15:43:53 +0800</pubDate><description><![CDATA[(根据poll函数第一个参数来定，如果监听的事件为1个，则结构体数组元素个数为1，如果想监听100个，那么这个结构体数组的元素个数就为100，由程序员自己来决定)异步I/O，Epoll当有事件产生被唤醒之后，文件描述符主动调用callback(回调函数)函数直接拿到唤醒的文件描述符，不需要轮询，效率高。机制，将新连接的客户端描述符增加到描述符表中，只需要一个线程即可处理所有的客户端连接，在嵌入式开发中应用广泛，不过代码写起来稍显繁琐。监听的最大的文件描述符没有个数限制（理论上，取决与你自己的系统）]]></description><category></category></item><item><title><![CDATA[网编（liunx下的io）]]></title><link>https://blog.youkuaiyun.com/luoqing418/article/details/144108077</link><guid>https://blog.youkuaiyun.com/luoqing418/article/details/144108077</guid><author>luoqing418</author><pubDate>Thu, 28 Nov 2024 12:26:42 +0800</pubDate><description><![CDATA[select被唤醒之后需要重新轮询一遍驱动的poll函数，效率比较低（消耗CPU资源）;假设妈妈有三个孩子，分别不同的房间里睡觉，需要及时获知每个孩子是否醒了，如何做？假设妈妈有一个孩子，孩子在房间里睡觉，妈妈需要及时获知孩子是否醒了，如何做？select每次会清空表，每次都需要拷贝用户空间的表到内核空间，效率低。先构造一张有关描述符的表（最大1024），然后调用一个函数。函数返回时告诉进程哪个描述符已就绪，可以进行I/O操作。简单，空闲时间还能干点别的，但是很累。简单，空闲时间还能干点别的，但是很累。]]></description><category></category></item><item><title><![CDATA[网编（简单介绍tcp和udp并tcp实现FTP）]]></title><link>https://blog.youkuaiyun.com/luoqing418/article/details/144074048</link><guid>https://blog.youkuaiyun.com/luoqing418/article/details/144074048</guid><author>luoqing418</author><pubDate>Wed, 27 Nov 2024 09:25:18 +0800</pubDate><description><![CDATA[netstat是控制台命令，是一个监控TCP/IP网络的非常有用的工具，它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。、UDP，客户端当使用send的时候，上面需要加connect，这个connect不是代表连接的作用，而是指定客户端即将要发送给谁数据。文件名可以通过参数指定，服务器端接收客户端传来的文件（文件名随意），如果文件不存在自动创建文件，如果文件存在，那么清空文件然后写入。、对于UDP来说，服务器和客户端运行顺序没有先后，因为是无连接，所以服务器和客户端谁先开始，没有关系，]]></description><category></category></item><item><title><![CDATA[网编（ip相关知识）]]></title><link>https://blog.youkuaiyun.com/luoqing418/article/details/144050045</link><guid>https://blog.youkuaiyun.com/luoqing418/article/details/144050045</guid><author>luoqing418</author><pubDate>Tue, 26 Nov 2024 09:13:26 +0800</pubDate><description><![CDATA[DOS:即 Denial of service，拒绝服务的缩写，拒绝服务，Dos 攻击即攻击者想办法让目标机器停止提供服务或资源访问，这些资源包括磁盘空间、内存、进程甚至网络带宽,从而阻止正常用户的访问。所以为了数据安全，不能连接因特网，需要用一条自己的专用线路来传输数据，这条线路上只有自己人，不会有其他人接入，且距离很远，这个网络就叫 “广域网”。广域网，就像是大马路，分支可能少，但类型多，像国道、省道、高速、小道等，连接了很多大的局域网。一端连接运营商的入户线缆，一般是光纤，一端连接你自己的路由器。]]></description><category></category></item><item><title><![CDATA[IO相关知识]]></title><link>https://blog.youkuaiyun.com/luoqing418/article/details/144018203</link><guid>https://blog.youkuaiyun.com/luoqing418/article/details/144018203</guid><author>luoqing418</author><pubDate>Mon, 25 Nov 2024 08:42:24 +0800</pubDate><description><![CDATA[System V的信号灯是一个或者多个信号灯的一个集合。其中的每一个都是单独的计数信号灯。而Posix信号灯指的是单个计数信号灯。4）消息队列是存在Linux内核中，以链表形式来存放消息，消息队列对每个数据都有一个最大长度的限制。2）消息队列就是一个消息的列表。添加消息：按照类型把消息添加到已打开的消息队列末尾msgsnd。1）消息队列是IPC对象的一种，由消息队列ID来唯一标识。3）消息队列可以按照类型来发送(添加)/接收（读取）消息。ipcs -s：查看创建的信号灯集。消息队列的个数最多为16个；]]></description><category></category></item><item><title><![CDATA[IO相关知识]]></title><link>https://blog.youkuaiyun.com/luoqing418/article/details/144015816</link><guid>https://blog.youkuaiyun.com/luoqing418/article/details/144015816</guid><author>luoqing418</author><pubDate>Sun, 24 Nov 2024 22:52:47 +0800</pubDate><description><![CDATA[如果一个信号被进程设置为阻塞，则该信号的传递被延迟，直到其阻塞被取消时才被传递给进程。无名管道是基于文件描述符的通信方式，当一个管道被建立时，会创建两个文件描述符，fd[0]和fd[1],fd[0]固定用于读管道，fd[1],固定用于写管道。不可靠信号：也称为非实时信号，不支持排队，信号可能会丢失，比如发送多次相同的信号，进程只能收到一次，信号值取值区间为1~31。虚拟页通过页表被映射到物理页帧。可靠信号：也称为实时信号，支持排队，信号不会丢失，发多少次，就可以收到多少次，信号值取值区间为32~64。]]></description><category></category></item><item><title><![CDATA[IO相关知识]]></title><link>https://blog.youkuaiyun.com/luoqing418/article/details/143988326</link><guid>https://blog.youkuaiyun.com/luoqing418/article/details/143988326</guid><author>luoqing418</author><pubDate>Sat, 23 Nov 2024 10:31:53 +0800</pubDate><description><![CDATA[信号量代表的是某一类资源，它的值表示系统中该资源的数量，信号量>0的话，表 示有资源可以使用，可以申请到资源，继续执行程序，信号量 = 0的话，表示没有 资源可以使用，无法申请到资源，阻塞。互斥锁：通过互斥锁可以实现互斥机制，主要用来保护临界资源，每个临界资源都由一个互斥锁来保护，线程必须先获得互斥锁才能访问临界资源，访问完资源后释放该锁。循环等待，即存在一个等待队列：P1占有P2的资源，P2占有P3的资源，P3占有P1的资源。3、请求和保持，即当资源请求者在请求其他的资源的同时保持对原有资源的占有。]]></description><category></category></item><item><title><![CDATA[IO相关知识]]></title><link>https://blog.youkuaiyun.com/luoqing418/article/details/143966536</link><guid>https://blog.youkuaiyun.com/luoqing418/article/details/143966536</guid><author>luoqing418</author><pubDate>Fri, 22 Nov 2024 11:15:30 +0800</pubDate><description><![CDATA[但是需要考虑临界资源（临界资源包括同一个文件，全局变量等）访问的问题，进程间的通信相对复杂，需要借助进程间的通信机制（借助3g-4g的的内核空间）vfork(): 保证子进程先运行，在调用exec()或exit()之前，与父进程数据共享，在exec()或exit()调用之后，父进程才能运行。共享的资源：可执行的指令，静态的数据，进程中打开的文件描述符，信号处理函数。线程是一个轻量级的进程，为了提高系统的性能引入线程，线程和进程都参与统一的调度。fork创建的子进程，父进程返回子进程的PID，子进程返回0。]]></description><category></category></item><item><title><![CDATA[IO相关知识]]></title><link>https://blog.youkuaiyun.com/luoqing418/article/details/143924453</link><guid>https://blog.youkuaiyun.com/luoqing418/article/details/143924453</guid><author>luoqing418</author><pubDate>Thu, 21 Nov 2024 08:00:00 +0800</pubDate><description><![CDATA[进程创建后，进程进入就绪态，当CPU调度到此进程时进入运行态，当时间片用完时，此进程会进入就绪态，如果此进程正在执行一些IO操作(阻塞操作)会进入阻塞态，完成IO操作（阻塞结束）后又可进入就绪态，等待CPU的调度，当进程运行结束即进入结束态。该类进程经常与用户进行交互，需要等待用户的输入，当接收到用户的输入后，该类进程会立刻响应，典型的交互式进程有：shell命令进程、文本编辑器等。睡眠态（等待态）：可中断的睡眠态（S）：处于等待状态中的进程，一旦被该进程等待的资源被释放，那么该进程就会进入运行状态。]]></description><category></category></item><item><title><![CDATA[IO相关知识]]></title><link>https://blog.youkuaiyun.com/luoqing418/article/details/143900774</link><guid>https://blog.youkuaiyun.com/luoqing418/article/details/143900774</guid><author>luoqing418</author><pubDate>Wed, 20 Nov 2024 08:32:10 +0800</pubDate><description><![CDATA[文件描述符是一个非负的整数，取值范围(0-1023)，最多产生1024个文件描述符，文件IO默认打开三个文件描述符，0（标准输入）,1（标准输出）,2（标准出错）围绕文件描述符进行操作的，文件描述符是一个非负的整数，依次进行分配。文件描述符的值分配时连续，关闭之后可以分配给其他打开的文件使用。文件IO是POSIX提供的一组内核层向上的输入输出的函数接口。可以操作除了目录文件以外的任意类型的文件。默认打开了三个文件描述符：0/1/2。系统中定义的一组用于输入输出的函数。C库定义的一组用于输入输出的函数。]]></description><category></category></item><item><title><![CDATA[IO相关知识]]></title><link>https://blog.youkuaiyun.com/luoqing418/article/details/143893688</link><guid>https://blog.youkuaiyun.com/luoqing418/article/details/143893688</guid><author>luoqing418</author><pubDate>Tue, 19 Nov 2024 19:43:46 +0800</pubDate><description><![CDATA[不同的操作系统只要移植了C库就可以使用，它是在系统调用之前做了一个二次封装，相当于是间接的进行了系统调用。带有缓存机制-》应用层读写文件-》调用内核层的函数接口-》内核层与硬件层进行交互-》拿到数据后返回给应用层的缓存区-》每次读写只需要从缓存区当中读取数据。正常的系统调用-》应用层读写文件-》调用内核层的函数接口-》内核层与硬件层进行交互-》拿到数据后返回给应用程-》每次读写都需要重复这样的流程。标准IO在系统调用之前作了二次封装增加了缓存机制，减少了系统调用的次数，提高了程序的效率。]]></description><category></category></item><item><title><![CDATA[关于vi编辑器的部分指令（Linux）]]></title><link>https://blog.youkuaiyun.com/luoqing418/article/details/142577285</link><guid>https://blog.youkuaiyun.com/luoqing418/article/details/142577285</guid><author>luoqing418</author><pubDate>Thu, 26 Sep 2024 20:30:26 +0800</pubDate><description><![CDATA[]]></description><category></category></item></channel></rss>