LumosJ
码龄5年
关注
提问 私信
  • 博客:38,417
    38,417
    总访问量
  • 39
    原创
  • 767,255
    排名
  • 41
    粉丝
  • 0
    铁粉

个人简介:很懒,真的很懒

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:黑龙江省
  • 加入CSDN时间: 2019-11-12
博客简介:

LumosJ

查看详细资料
个人成就
  • 获得120次点赞
  • 内容获得60次评论
  • 获得157次收藏
创作历程
  • 29篇
    2021年
  • 10篇
    2020年
成就勋章
TA的专栏
  • 笔记
    3篇
  • C++
    2篇
  • 引用
    1篇
  • 动态内存分配
    1篇
  • new
    1篇
  • delete
    1篇
  • 运算符重载
    1篇
  • 日期类
    1篇
创作活动更多

HarmonyOS开发者社区有奖征文来啦!

用文字记录下您与HarmonyOS的故事。参与活动,还有机会赢奖,快来加入我们吧!

0人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

Linux项目 | 基于HTTP的自主web服务器

文章目录概览所谓的HTTP,本质就是把服务器上的文件资源想方设法的发送回给浏览器。web服务器要做的两件事:1、从http请求中提取出要访问什么资源2、找到资源且判定资源是否合法,合法情况下打开,打开之后读取,读取之后发送回去,发送完关闭。要面对的问题:1、HTTP协议本身的解析问题2、HTTP资源的返回问题概览httpserver.hpp 服务器、端口相关设置sock.hpp 对套接字的封装,满足基本通信要求Protocol.hpp 专门处理协议细节util.hpp 与逻辑业
原创
发布博客 2021.09.20 ·
401 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

网路基础Ⅲ(网络层 | 数据链路层)

文章目录网络层IP分片总结HTTP解决:构建与解析request && response ->recieve && sendTCP解决:可靠性,效率,什么时候发送,发多少,怎么发。IP:端到端(主机A到B之间)、点到点(主机A到下一跳路由器),将数据经过路径选择,送达到对方主机的过程。网络层在复杂的网络环境中确定一个合适的路径。路由查找的基本过程:是先找到目的网络,再找到目的主机。找到目标主机所在的局域网,然后在局域网内部进行报文转发,找到目标主机。
原创
发布博客 2021.09.13 ·
856 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

C++项目 | 高并发内存池

池化技术:线程池、内存池、连接池内存池解决的问题:1、提高申请和释放内存的效率 2、解决内存碎片内存碎片:频繁申请、释放小块内存,可能会导致内存碎片。分为两种场景:内碎片,外碎片(通常)高并发内存池:对比malloc在多线程并发场景下申请内存的性能,减少锁竞争——让每个线程都有一个自己独立的内存池。内存池需要考虑以下的问题:内存碎片问题。性能问题。多核多线程环境下,锁竞争问题一、高并发内存池的组成threadCache(解决锁竞争)就是一个哈希映射的内存桶(自由链表),th.
原创
发布博客 2021.09.08 ·
724 阅读 ·
1 点赞 ·
0 评论 ·
5 收藏

网络版计算器

Server.hpp#ifndef __SERVER_HPP__#define __SERVER_HPP__#include <iostream>#include <unistd.h>#include <stdlib.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>..
原创
发布博客 2021.05.27 ·
255 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

网络基础Ⅱ(应用层 | 运输层)

文章目录一、应用层一、应用层我们之前所写的程序都是在应用层。协议是一种 “约定”。如果我们要传输一些"结构化的数据"怎么办呢?网络版计算器
原创
发布博客 2021.07.03 ·
832 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

TCP 网络程序

!TCP 网络程序TCP是一种网络协议。UDP是无连接的,而TCP是面向连接的。所以客户端想和服务器通信的第一件事情不再是发数据,而是先建立连接;同时,TCP的接口调用要多一些。接口// 开始监听socket (TCP, 服务器)int listen(int socket, int backlog);// 接收请求,服务器等待客户端连接,一般是阻塞态int accept(int socket, struct sockaddr* address,socklen_t* address_len)
原创
发布博客 2021.05.21 ·
271 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

UDP 网络程序

!UDP 网络程序接口从网络中接收数据,把收到数据在本地打印出来,再经拼凑,返回给客户端,完成一个简单的echo server。效果 ↓// UDP专用,发送数据到指定的IP地址和端口int sendto(int sockfd, const void * msg, int len, unsigned int flags, const struct sockaddr * dst_addr, int addrlen);// UDP专用,接收数据,返回数据远端的IP地址和端口int recvfr
原创
发布博客 2021.05.21 ·
216 阅读 ·
1 点赞 ·
4 评论 ·
0 收藏

网络编程套接字

文章目录一、套接字IP地址和端口号套接字网络通信二、网络字节序三、TCP协议与UDP协议(简要)TCPUDP四、一、套接字IP地址和端口号IP地址主要负责的是把数据从一台主机硬件传送到另一台主机硬件,它标识的是操作系统或者是服务器本身的唯一性。当我们把数据送到目标主机时,只是把数据送到了这台机器,这台机器上有许多运行的软件服务,那么此时该数据包该给哪个软件呢?因此,网络通信中,除了要用IP地址确认目标主机以外,还要通过某种方式去标定该主机上的特定的一个进程!把标定进程的方式叫做端口号。在前
原创
发布博客 2021.05.20 ·
292 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

网络基础Ⅰ(协议 | 传输流程 | 数据包封装和分用)

文章目录网络层状体系结构和系统的对应关系一、网络发展历程二、协议协议分层OSI七层模型TCP/IP五层模型三、网络传输基本流程1、数据包封装和分用2、同一个网段内两台主机的文件传输3、跨网段的主机文件传输网络层状体系结构和系统的对应关系网络是操作系统的一部分,与操作系统有关系。在系统的各个硬件内部会有“线”相连,进行数据的传输。网络和体系结构的差别就是“线”变长了。而计算机网络本质是解决:当“线”变长后,怎么把数据从一个机器交付给另一个机器的问题。1、“转发”:要经过若干个线路,路由器转发2
原创
发布博客 2021.05.08 ·
2142 阅读 ·
3 点赞 ·
2 评论 ·
8 收藏

线程池、读者写者模型

文章目录线程池总结线程池优点:处理任务的线程数目是稳定的,服务器不会受到大面积任务到来时而造成的冲击,进而导致宕机。线程池维护着多个线程,等待着监督管理者分配可并发执行的任务,避免了在处理短时间任务时创建与销毁线程的代价。显然,server也是一个线程或进程,后端的一批,相当于一组线程。用任务队列把它们连起来。sever收到任务,把任务放进任务队列,任务队列后端指派任务给池中的线程。线程池能够预先创建一批线程,进而提高处理业务的效率。线程池存在的价值:1、有任务,立刻就有线程进行服务,省掉
原创
发布博客 2021.04.28 ·
208 阅读 ·
4 点赞 ·
2 评论 ·
1 收藏

POSIX信号量(基于环形队列的生产消费模型)

文章目录前言POSIX信号量是什么?信号量的意义?怎么用?基于环形队列的生产消费模型总结前言POSIX信号量是什么?信号量(也叫信号灯),本质是一个在描述临界资源中,有效资源个数的计数器。如果把临界区划分成多个块儿,那么多个线程可以同时进入临界区访问不同的块。之前的锁,是我们认为临界资源只有一块。信号量可以保证让多个线程同时进入临界区,访问临界资源的不同块。申请信号量,把计数器--叫做P操作;释放信号量,计数器++叫做V操作。要保证所有的线程都得看到信号量,所以信号量本身就是临界资
原创
发布博客 2021.04.27 ·
592 阅读 ·
6 点赞 ·
3 评论 ·
2 收藏

互斥与同步(基于阻塞队列的生产消费模型)

文章目录互斥总结互斥所有的线程数据是共享的。被多个执行流访问的公共资源叫做临界资源,访问临界资源是以线程/执行流的方式去访问的,把每个线程内访问临界资源的那部分代码叫做临界区。不一定所有的共享资源都会被所有线程访问,比如main只被一个执行流访问。互斥:任何时刻,互斥保证有且只有一个执行流进入临界区,访问临界资源,通常对临界资源起保护作用。原子性:不会被任何调度机制打断的操作,该操作只有两态,要么完成,要么未完成。多个线程并发的操作共享变量,会带来一些问题:比如我们假设有ticket =
原创
发布博客 2021.04.26 ·
741 阅读 ·
4 点赞 ·
2 评论 ·
0 收藏

关于线程(概念| 优缺点| 创建| 异常| 操作)

Linux 多线程背景线程的概念线程的优缺点优点缺点Linux中线程的基本操作LWP(系统角度)线程ID(用户角度)线程异常线程用途进程与线程总结背景在创建一个进程时,操作系统做了以下的工作:1、创建一个进程所需要的各种数据结构(pcb、地址空间、页表、与文件的关系,父子关系等等)2、开辟物理内存,把硬盘上的代码和数据加载到物理内存中。3、把虚拟地址空间和物理内存通过页表建立映射关系。所以,创建一个进程就是一个执行流从无到有的过程。在这个过程中,我们申请了很多资源,创建了很多东西。当CPU调度
原创
发布博客 2021.04.21 ·
638 阅读 ·
5 点赞 ·
1 评论 ·
0 收藏

进程信号(信号产生 | 信号保存 | 信号处理 | 阻塞 未决 递达)

文章目录一、信号概念信号处理常见的方式二、总结信号是事件发生的一种通知机制,即便是信号没有发生,进程也知道怎么处理。信号也算是通信。那它与通信有什么区别?通信是以传输数据为目的,信号本质是想要把事件通知给进程。一、信号概念我们来看个例子,这是一个死循环。#include<stdio.h>int main(){while(1){ while(1) { printf("i am running
"); sleep(1); } return 0;}当一个
原创
发布博客 2021.04.12 ·
830 阅读 ·
4 点赞 ·
0 评论 ·
3 收藏

进程间通信(匿名管道 | 命名管道 | 共享内存)

进程通信的目的数据传输:一个进程需要将它的数据发送给另一个进程资源共享:多个进程之间共享同样的资源。通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程所有的陷入和异常,并能够及时知道它状态的改变。进程是具有独立性的(进程的代码和数据与另外一个进程的代码和数据是没有关系的)。可是,要通信,就意味着两个进程要进行数据交互,那么数据便有可能
原创
发布博客 2021.04.05 ·
1245 阅读 ·
5 点赞 ·
3 评论 ·
0 收藏

基础IO(文件描述符 | 重定向 | 文件系统 | inode | 软硬链接)

文章目录复习C文件IO一、系统文件IO接口介绍二、文件描述符fd文件描述符的分配规则重定向使用 dup2 系统调用三、理解文件系统inode复习C文件IO文件的读写#include<stdio.h>#include<string.h>int main(){ // 写 FILE *wfp = fopen("myfile.txt", "w"); if (!wfp){ printf("fopen error!
"); } const char *str =
原创
发布博客 2021.03.29 ·
559 阅读 ·
5 点赞 ·
1 评论 ·
2 收藏

进程控制(进程创建与终止 | 进程等待 | 程序替换)

文章目录一、进程创建1. fork函数2. fork创建进程3. 写时拷贝二、进程终止1. 进程退出有三种情况2. 常见进程终止方法三、进程等待背景(必要性)1. 进程等待的方法(1)wait在之前的学习中,我们至少应该明确进程的概念:是一些数据结构(PCB+地址空间+页表)+ 代码和数据这样的一个集合。一、进程创建1. fork函数初识进程时,我们对fork也有过一些简单的了解。#include<unistd.h> //头文件 pid_t fork() fork返回值
原创
发布博客 2021.03.21 ·
665 阅读 ·
3 点赞 ·
0 评论 ·
0 收藏

进程地址空间(虚拟地址 | 物理内存)

文章目录前言一、简单理解地址空间二、虚拟地址现象解释三、三个问题搞懂地址空间1. 什么是地址空间?2. 为什么要有地址空间?3. 地址空间是如何工作的?四、一些补充前言在之前的学习中,我们只学习了图中的下半部分(用户空间),当时还并未涉及到操作系统。我们写一段代码来验证一下这张图。#include<stdio.h>#include<stdlib.h>int g_val = 100; //初始化int g_unval; //未初始化int main(int ar
原创
发布博客 2021.03.17 ·
5072 阅读 ·
21 点赞 ·
6 评论 ·
71 收藏

进程优先级及环境变量(是的,main函数是有三个参数~)

文章目录一、进程优先级1. 了解优先级2. 进程优先级3. 查看系统进程优先级4. PRI和NI5. 独立、竞争、并行、并发二、环境变量1. PATH2. 常见环境变量:查看环境变量方法关于环境变量的清晰认知3. 使用语言如何操纵环境变量?4.通过系统调用获取或设置环境变量5. 环境变量的全局性一、进程优先级1. 了解优先级(1)区分优先级和权限:优先级:是使用某种“事物”的先后顺序。权限:能不能使用某种“事物”。(2)优先级的存在目的:在被管理对象很多的时候,优先级起到仲裁的作用。2.
原创
发布博客 2021.03.16 ·
1736 阅读 ·
4 点赞 ·
6 评论 ·
0 收藏

关于进程(PCB | 父进程 | 子进程 | fork深层探讨 |僵尸进程与孤儿进程)

文章目录一、进程与PCB1. 进程的概念:2. 什么是PCBtask_structtask_ struct内容分类4. 查看进程5. 进程概念的加深二、父进程与子进程1. 通过系统调用获取进程标示符2. 进程的创建 - fork3. fork的深层探讨(关键)(1)如何理解进程创建?(2)如何深刻理解fork为什么会有两个返回值?(3)fork父子进程执行顺序、代码和数据复制问题?三、进程的状态一、进程与PCB1. 进程的概念:在一个程序运行之前,要先加载进内存中,称之为,进程。2. 什么是PC.
原创
发布博客 2021.03.14 ·
4389 阅读 ·
8 点赞 ·
9 评论 ·
16 收藏
加载更多