C语言
文章平均质量分 71
yaoyaohyl
lqiqi.cn
展开
-
select/poll/epoll
什么是多路I/O转接技术?多路IO转接的字面意思:原本使用socket套接字编程时,是服务器(应用程序)一直在阻塞等待客户端的连接,这样服务器端(应用程序)的压力太大。于是服务器请来了助手,即select、poll、epoll等,这几个函数借助内核来替服务器监视有无客户端的连接请求,当有客户端的连接请求时,再经select、poll、epoll等助手转接给服务器端处理,这样可以有效减轻服务器的压力。原创 2020-09-23 00:00:43 · 247 阅读 · 0 评论 -
实现简易的log日志系统
日志的级别一般分五级:ERROR(错误):此信息输出后,主体系统核心模块不能正常工作,需要修复才能正常工作。WARN(警告):此信息输出后,系统一般模块存在问题,不影响系统运行。INFO(通知):此信息输出后,主要是记录系统运行状态等关联信息。DEBUG(调试):最细粒度的输出,除却上面各种情况后,你希望输出的相关信息,都可以在这里输出。TRACE(跟踪):最细粒度的输出,除却上面各种情况后,你希望输出的相关信息,都可以在这里输出。在本文实现的简单日志系统中简单的把日志输出到屏幕和文件,屏幕上原创 2021-08-09 16:45:23 · 535 阅读 · 0 评论 -
TCP基础之三次握手
TCP协议规定的传输格式如下图所示这就是三次握手,交流三次,刚看的时候反正一脸懵逼,什么SYN,什么ACK,不了解,也不理解。SYN和ACK都是标志位标志位:SYN:请求建立连接,及tcp传输格式中的32位序列ACK:应答,及tcp传输格式中的32位确认序列三次握手:第一次握手:服务器一般是 被动等待应答,等待客户端的请求,所以第一次握手是客户端发起的客户端:客户端发送SYN(确认请求连接),SYN的值由系统随机生成,可携带数据。不过不管有没有数据,个人认为都可以当成系统随机生成**原创 2020-09-15 21:05:02 · 500 阅读 · 0 评论 -
c实现图书借阅系统
功能较为全面,但没有归还子系统。代码里有详细注释源码里有两个txt文件,一个存放管理员信息,一个存放书籍信息图书借阅系统:https://github.com/qingyiz/library原创 2020-09-14 22:04:42 · 365 阅读 · 0 评论 -
学习笔记----linux下scoket
目录:1.预备知识1.TCP/IP协议2.Scoket概念3.网络字节序4.IP地址转换函数5.sockaddr数据结构1.struct sockaddr2.struct sockaddr_in3.struct in_addr4.struct sockaddr_in65.struct in6_addr6.struct sockaddr_un2.网络套接字函数1.socket() 函数2.bind() 函数1.预备知识1.TCP/IP协议TCP/IP网络协议栈分为应用层(Application)、传输层原创 2020-09-14 21:45:54 · 135 阅读 · 0 评论 -
学习笔记--面向对象设计一些基本原则
就一句话这些原则的目的: 高内聚,低耦合一些较为重要原则案例:开闭原则案例:#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;//计算器类class Caculaor{public: Caculaor(int a, int b, string moperator){ this->m_a = a; this->m_b = b; this->m_opera原创 2020-08-06 15:07:03 · 125 阅读 · 0 评论 -
学习笔记--c++强制类型转换
类型转换的含义是通过改变一个变量的类型为别的类型从而改变该变量的表示方式。为 了类型转换一个简单对象为另一个对象你会使用传统的类型转换操作符。c 风格的强制类型转换,不管什么是什么类型,统统都是 Type b = (Type)a; c++风格的类型转换提供了 4 种类型转换操作符来应对不同场合的的应用。...原创 2020-08-03 23:03:54 · 201 阅读 · 0 评论 -
学习笔记——vim命令
ggdG ---- 清空文件内容分屏类:------------------------------------------------------日常更新原创 2020-07-30 21:04:22 · 117 阅读 · 0 评论 -
个人笔记之 ‘to_string’ is not a member of ‘std’
在linux下#include <iostream>#include <string>using namespace std;class Tree{private: int ages;public: void set_ages(int age){ this->ages = age; } int get_ages(){ return ages; } string grow(原创 2020-07-29 12:09:12 · 712 阅读 · 0 评论 -
哲学家就餐问题--互斥锁
哲学家就餐问题可以这样表述,假设有五位哲学家围坐在一张圆形餐桌旁,做以下两件事情之一:吃饭,或者思考。吃东西的时候,他们就停止思考,思考的时候也停止吃东西。餐桌中间有一大碗意大利面,每两个哲学家之间有一只餐叉。因为用一只餐叉很难吃到意大利面,所以假设哲学家必须用两只餐叉吃东西。他们只能使用自己左右手边的那两只餐叉。哲学家就餐问题有时也用米饭和筷子而不是意大利面和餐叉来描述,因为很明显,吃米饭必须用两根筷子。哲学家从来不交谈,这就很危险,可能产生死锁,每个哲学家都拿着左手的餐叉,永远都在等右边的餐叉(或者相原创 2020-07-27 22:30:38 · 862 阅读 · 0 评论 -
生产者消费者模型实现--互斥量,条件变量,信号量
1.首先,我们来理清几个概念:生产者消费者模型:生产者和消费者在同一时间段内共用同一个存储空间,生产者往存储空间中添加产品,消费者从存储空间中取走产品,当存储空间为空时,消费者阻塞,当存储空间满时,生产者阻塞。2...原创 2020-07-26 23:47:06 · 683 阅读 · 0 评论 -
力扣 3.无重复字符的最长字串 c/c++
该题使用的是滑动窗口算法,这样可以大大的缩减时间复杂度。对本题来说,滑动窗口思想简单的来说就是,其中使用的几个变量i,j,k,tmp,max。i指向窗口的头部,j指向窗口的尾部,k用来遍历窗口的元素,tmp则用来保存窗口头部移动前的窗口长度,max则用来保存最大值。举个例子: s = “bacabc”,当i= 0;j = 1此时s[i] = b,s[j] = b;s[j+1] = a;然后把s[j+1]与在s[j+1]之前的所有元素(b,a)相比较,此时不相等,j++,如下图所示此时.原创 2020-07-24 21:08:36 · 264 阅读 · 0 评论 -
力扣 2.两数相加 c/c++
C/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2){ int num1 = 0; int num2 = 0; int t = 0; struct Li.原创 2020-07-22 21:26:46 · 386 阅读 · 0 评论 -
力扣(leedcode) 35.搜索插入位置(C)
题目就不复制了今天脑袋比较灵光int searchInsert(int* nums, int numsSize, int target){ int result = -1; for(int i = 0;i < numsSize; i++){ //包含除了目标值比数组末尾值还大的所有情况 if(nums[i] >= target){ result = i; break; }原创 2020-05-29 09:26:02 · 284 阅读 · 0 评论 -
力扣 1.两数之和(C)
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/two-sum著作权归领扣网络所有原创 2020-05-28 18:04:36 · 426 阅读 · 5 评论 -
力扣 27.移除元素(C语言)
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,1,2,2,3,0,4,2]原创 2020-05-28 17:59:48 · 742 阅读 · 0 评论 -
力扣第二十题 20 有效的括号
20.有效的括号给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入: “([)]”输出: false示例 5:输入: “{[]}”输出: true来源:力扣(Le原创 2020-05-23 16:40:13 · 326 阅读 · 0 评论