自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

翻译 lsh Write a Shell in C 用 C 语言编写简单 Unix shell

人们很容易认为自己“不是一个真正的程序员”。有些程序是每个人都在使用的,所以很容易把开发者捧上神坛。尽管开发大型软件项目并不容易,但很多时候,软件的基本思想是相当简单的。自己实现它是一种有趣的方式,可以显示您拥有成为一名真正的程序员所需要的东西。所以,这是一个关于我如何用C编写我自己的简单Unix shell的演练,希望它能让其他人也有这样的感觉。

2024-09-13 11:59:23 62

原创 Linux从入门到开发实战(C/C++)Day14-http协议

4.可以无连接:每次tcp处理一个(1.1版本)或多个(2.0版本以上)请求。2.等待客户端连接服务器 accept。5.无状态:协议对业务的处理没有记忆能力。缺点:明文传输数据,不是很可靠、不是很稳定。1.1 创建socket。1.2 设置socket。什么是http协议:基于tcp的超文本传输协议。3.接收客户端发来的请求并解析。3.灵活:可以传输任意类型数据。方便编译运行的makefile文件(可以没有)1.支持C/S、B/S模式。优点:快速、简单、方便、效率高。

2024-09-12 09:25:16 512

原创 Linux从入门到开发实战(C/C++)Day13-线程池

监督线程:监督线程池中的线程,如果空闲线程数量过少就增加一些,过多就减少一些。管理线程:从任务池中取出任务对象,交给 线程池 中的某个线程处理。任务线程:生成任务对象并把任务对象添加到 任务池。一个程序要用到许多线程,线程池是管理线程的一种方式。添加任务到线程池中:任务线程的功能。线程函数:包含监督线程的功能。复杂一点的线程池(封装严密一些的)线程池是什么:池化技术之一。

2024-09-12 08:41:53 702

原创 Linux从入门到开发实战(C/C++)Day12-ICMP协议

网络 控制 报文 协议。ICMP协议:Internet Control Message Protocol。icmp协议只有root用户可以创建。准备好要发送的数据包。1.创建socket。作用:用来检测网络是否畅通。

2024-09-12 08:32:50 464

原创 Linux从入门到开发实战(C/C++)Day11-aio

lio_listio 阻塞式等待,第一个参数设置为LIO_WAIT,可以等所有操作都完成再返回。aio_suspend 阻塞式等待某个io操作完成,但是只要有一个操作完成了它就会返回。内核中函数执行对应io功能,执行完毕之后把数据放到执行的缓冲区中。之后用户态可以去检查缓冲区是否有数据,或者用信号方式获取数据。io多路复用没有状态切换,aio有,要切换到内核态。执行异步操作的时候,函数直接返回(可以先去做其他事情)什么是aio:异步io,让io过程异步进行,从而提升读写效率。

2024-09-12 08:22:15 431

原创 Visual Studio(vs)下载安装C/C++运行环境配置和基本使用注意事项

基本安装点击跳转到vs官网 点击箭头所指的按钮进行下载 双击运行刚才下载好的下载器 点击继续 勾选“使用C++的桌面开发”和“Visual Studio扩展开发” 点击“安装位置”,对vs的安装位置进行更改。你可以跟我一样只选择D盘或者其他你空闲的盘,然后将默认的路径复制过去,安装器在进行安装时若发现没有对应文件夹会自动创建,非常方便。其次是注意右下角的安装大小,虽然已经把能改位置的都改到非C盘了,但是vs有些东西还是必须默认安装在C盘,所以请注意一下你的C盘是否够用 点击右下角的安装,然

2024-09-12 01:10:32 6187 3

原创 Linux从入门到开发实战(C/C++)Day10-线程

pthread_t *thread, //线程id,作为返回参数。const pthread_attr_t *attr, //线程属性。pthread_join 阻塞函数,直到获取的线程结束,这个函数才返回,一般是用它等待某线程结束。pthread_create 创建线程(man pthread_create)pthread_cond_signal 向某个线程发送信号。

2024-09-10 15:09:04 1018

原创 Linux从入门到开发实战(C/C++)Day09-poll和epoll

/EPOLL_CTL_ADD 增加。//EPOLL_CTL_MOD 修改。//EPOLL_CTL_DEL 删除。//epoll要给每个监视的描述符号都注册对应的事件(和信号处理类似)struct epoll_event *event //epoll事件。/* requested events 需要监视的事件 *//* returned events 监视时产生的事件 */2.注册fd对应的事件 epoll_ctl(man epoll_ctl)//如果有事件发生,就中断。

2024-09-10 14:43:17 556

原创 Linux从入门到开发实战(C/C++)Day09-select

fd_set *readfds, //输入描述符号集合。是什么:让输入/输出设备能多次使用(复用),现在因为有 阻塞(accept、recv等函数造成) 所以不能多次使用。IO操作(accept、recv)前,先判断是否有动静(有数据可读、可写)若有,再执行io操作,没有则不执行。

2024-09-10 14:35:05 471

原创 Linux从入门到开发实战(C/C++)Day08-Socket网络编程

如果按照之前的tcp测试代码,可以发现s可以连接c1,当c2打开时提示连接服务器成功,但是s收不到c2发来的信息。2.accept函数返回值,创建的socketFd接口对应客户端(一个socket对应一个客户端)1.socket函数创建,创建的socketFd接口对应服务器端的网络设备,用来接受客户端连接。tcp客户端则是只有socket函数创建的socketFd,对应服务器(注意与上面两种进行区分)5.接受客户端连接(accept) 3.连接服务器(connect)

2024-09-08 18:38:31 2035

原创 Linux从入门到开发实战(C/C++)Day07-信号

/判断某个信号是否在信号集里。//从信号集删除某个信号。//添加信号到信号集。sigqueue 高级的信号发送(man sigqueue)SIGWITCH 终端大小发生改变。

2024-09-08 18:12:26 477

原创 Linux从入门到开发实战(C/C++)Day06-IPC

1.创建key ftok 1.创建key ftok。根据操作系统(os)不同会有不同的两个版本:ANSI版本 和 POSIX版本。不同进程可以发送消息到队列中,或者从队列中获取消息(按照对应类型拿)key的本质是一个int类型的整数,保证IPC的唯一性。信号是个整数,os提供了64个信号(主要是前32个)本身信号的处理是固定的,不同信号有不同的处理方式。我们可以使用signal函数,自己注册信号的处理。

2024-08-13 17:19:26 513

原创 Linux从入门到开发实战(C/C++)Day05-管道

2)两线程分别打开管道文件(注意文件打开方式,一读一写) open。1)创建管道文件(可以是第三个进程) mkfifo。4)关闭管道 close。先关闭 写 端不会导致 读 端进程结束。用 | 把左边的命令的结果 交给 右边的命令。5)删除管道文件 unlink。单向数据传输(单工),遵循先进先出(FIFO)原则。删除管道文件会导致 写 端进程结束。使用有名管道的单独放到了一个文件夹内(头文件就复制上面的那些就行)本质是个文件,管道中的数据都是字符串。能且只能在父子进程之间使用。

2024-08-09 01:10:52 350

原创 Linux从入门到开发实战(C/C++)Day04-进程

子进程结束前会向父进程发送SIGCHILD信号,父进程可以使用wait函数等待这个信号。linux系统下每个进程在/proc目录下有进程id及其对应的目录存储进程的一些数据。getppid 获取当前进程的父进程(parent)id。子进程复制父进程的代码,会拷贝进程上下文(当前的运行状态,运行到什么时候,到哪行)运行时状态、睡眠状态、挂起状态、等待状态、死亡状态、僵尸状态、等等...父进程先于子进程结束,子进程结束的时候它的一些资源未释放。

2024-08-07 23:47:17 600

原创 Linux从入门到开发实战(C/C++)Day03-目录

就像open函数打开文件,文件内容指针在文件头,read函数读一段,文件内容指针自动往后挪一段。opendir 和 readdir 会自动维护当前读到了目录下哪个文件。文件读写耗时,io操作也比较耗时,所以直接内存操作,耗时很短。2.注意文件大小(写入时要调整文件大小,读时不用管)4.以 内存操作 方式 操作文件。找目录下的文件 readdir。关闭目录文件 closedir。打开目录文件 opendir。3.把文件映射成虚拟内存。mmap: 文件映射虚拟内存。

2024-08-07 23:24:16 226

原创 Linux从入门到开发实战(C/C++)Day02-文件

Linux文件部分的课程笔记和课程代码

2024-08-04 00:10:27 280

原创 Linux从入门到开发实战(C/C++)Day01-基础使用

小白入手linux学习day01

2024-08-03 23:40:39 404

原创 解决DevC++出现to_string()函数报错

老问题了,我在网上找的大部分办法都不太管用,这里我从网上总结了两个办法,我用5.11的dev只用方法一就能解决。工具->编译选项->勾选“编译时加入以下命令” 并 在下面的文本框中输入 -std=c++11。工具->编译选项->代码生成/优化->代码生成->语言标准 选中 ISO C++11。

2023-12-22 16:25:05 749

原创 C/C++实现洛谷P1308 [NOIP2011 普及组] 统计单词数 题目(题解)

我们也要在待匹配的长字符串的开头和结尾各加上一个空格:"_toto tototo to toto to_"假如要在"toto tototo to toto to"中匹配单词"to",仔细一想这代码估计挺复杂的。由此我们可以不匹配"to"而是前后都有一个空格的"_to_"(为了显示明显我这里用_代替空格)这样就可以直接用find函数直接查找,不必担心是否完全匹配的问题。因为像末尾的to如果后面没有空格的话那跟"_to_"匹配不上了就。1.必须完整匹配单词"to",像"toto"这种就不行。

2023-11-21 17:18:46 225 1

原创 C/C++实现洛谷P3741 honoka的键盘 题目(题解)

我们可以先遍历找出VK,计数后将符合条件的替换成其他字符,这样就可以避免符合条件的跟可以变换的混在一起,不好区分。1.如果当前位置和下一个位置连起来是VV或者KK,并且可改变次数为1,那么改成VK,可改变次数归零,计数器+1。1.第一次遍历:如果当前位置和下一个位置连起来是VK,计数器+1,更改这两个位置为其他字符占位。2.第二次遍历:如果当前位置和下一个位置连起来是VV或者KK,计数器+1,跳出循环。2.如果当前位置和下一个位置连起来是VK,计数器+1。如果按照上面的思路那么结果就是1。

2023-11-15 18:18:34 523

原创 Inno Setup 6打包后安装程序改为中文教程

Inno Setup 6 生成中文安装程序

2023-11-09 20:08:07 1965 1

原创 C/C++实现洛谷P5731 【深基5.习6】蛇形方阵 题目(题解)

这道题刚开始本来想直接打表过的,整一手面向结果编程哈哈哈,不过仔细一想这样就失去了刷题的意义,我就从头开始自己一步一步想着写出了通用的写法,可能不是最优解(起码是AC代码),但是我感觉要比题解里的更好理解些~3.每次循环开始时,在判断前往数组中填入数字,然后进行走下一步的行动。2.定义一个变量用来控制行径方向,避免一直在一个方向判断里打转。(1)最外围一圈的判断。(2)其余内圈的判断。

2023-11-06 18:30:18 461

原创 C/C++实现洛谷P5729 【深基5.例7】工艺品制作 题目(题解)

C/C++实现洛谷P5729 【深基5.例7】工艺品制作 题目(题解)

2023-11-02 18:03:49 430

原创 C/C++实现洛谷P1217 [USACO1.5] 回文质数 Prime Palindromes 题目(题解)

C/C++实现洛谷P1217 [USACO1.5] 回文质数 Prime Palindromes 题目(题解)

2023-10-28 15:46:48 205 1

原创 C/C++实现洛谷P1009 [NOIP1998 普及组] 阶乘之和 题目(题解)

C/C++实现洛谷 [NOIP1998 普及组] 阶乘之和 题目(题解)

2023-10-26 12:03:23 390 1

原创 C++实现高精度乘法(高精度乘积)

C++实现高精度乘法(高精度乘积)

2023-10-25 17:58:43 1092 1

原创 C++实现高精度加法(高精度求和)

C++实现高精度加法(高精度求和)

2023-10-25 17:05:52 572 1

原创 C语言数据结构-链表版学生管理系统

有头有尾双向链表版学生管理系统

2023-10-02 17:08:46 343 2

原创 C语言数据结构-顺序表版学生管理系统

萌新纯手搓的学生管理系统,C语言,存储结构用顺序表实现

2023-09-26 19:34:45 1036 2

Inno Setup 6打包后安装程序改为中文教程

Inno Setup 6打包后安装程序改为中文教程

2023-11-09

C语言数据结构-链表版学生管理系统

源码+可运行exe程序

2023-10-02

C语言数据结构-顺序表版学生管理系统

C语言数据结构-顺序表版学生管理系统

2023-09-26

空空如也

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

TA关注的人

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