c
文章平均质量分 57
LYH_1_
好好学习,天天向上。
展开
-
项目:视频存储播放修改软件
视频点播项目原创 2023-04-02 23:21:44 · 355 阅读 · 1 评论 -
UDP服务器
udp套接字群聊实现原创 2022-12-16 19:09:44 · 1008 阅读 · 0 评论 -
读写锁的学习与实验
读写锁的简单了解原创 2022-12-15 16:17:51 · 369 阅读 · 0 评论 -
Linux简化版线程池
Linux简单线程池模拟。原创 2022-12-09 11:22:37 · 492 阅读 · 0 评论 -
Linux下POSIX信号量以及基于环形队列的生产消费模型
Linux环形队列,信号量,互斥锁模型原创 2022-12-08 11:05:12 · 216 阅读 · 0 评论 -
基于阻塞队列的生产消费模型
Linux基于阻塞队列的生产消费模型原创 2022-12-07 21:05:14 · 174 阅读 · 1 评论 -
Linux线程基础
Linux线程与互斥锁的基础学习原创 2022-11-29 21:34:17 · 530 阅读 · 2 评论 -
Linux信号基础
linux信号简单学习与理解,信号原理、以及一些小测试,一些小函数的介绍,希望大家多多支持,都需回持续跟新的。原创 2022-11-29 12:27:15 · 499 阅读 · 1 评论 -
linux进程间通信之共享内存
linux进程间通信,共享内存原创 2022-11-04 15:49:55 · 783 阅读 · 0 评论 -
linux管道的应用
linux管道的简单应用原创 2022-11-01 20:21:16 · 70 阅读 · 0 评论 -
linux进程间通信之管道
linux进程间通信匿名管道和命名管道的原理以及对进程间通信的理解。原创 2022-10-31 23:04:01 · 719 阅读 · 4 评论 -
linux下动静态库的制作,打包,以及模拟第三方库使用
linux下动静态库的制作以及使用,以及自己模拟制作第三方库,以及模拟使用第三方库。原创 2022-10-29 16:41:52 · 1128 阅读 · 3 评论 -
linux下软硬链接的解读的理解
软件链接的解读与理解。俩条指令ln ;ln -s;原创 2022-10-28 10:53:35 · 1210 阅读 · 0 评论 -
剑指 Offer II 002. 二进制加法
二进制加法原创 2022-08-18 20:51:12 · 68 阅读 · 2 评论 -
减绳子一(剑指offer14)
减绳子原创 2022-08-16 21:35:01 · 146 阅读 · 2 评论 -
归并排序的新用法。
归并排序新奇用法。原创 2022-08-12 11:59:35 · 329 阅读 · 0 评论 -
排序的本质:
不一样的排序:原创 2022-08-11 13:01:13 · 92 阅读 · 0 评论 -
柱状图中最大的矩形
单调栈的应用之一。原创 2022-08-01 20:02:10 · 74 阅读 · 0 评论 -
牛客网:BM20 数组中的逆序对,一句一注释,一看就会。
详细解释每一句逻辑。原创 2022-06-02 18:26:23 · 175 阅读 · 1 评论 -
linux 初学,环境搭建及用户管理
1,环境搭建这里直接使用用服务器,可以买一个华为云,百度云,阿里云等等(学生买的话价格不是很贵,一百多到几百的都可以,目前学习的话就买一个丐版就好了,也就是最低配版本的,一核的就完全够用了),通过xshell软件进行远程登录。2,登录双击列表输入你买的账号密码进行登录:注意第一次登录都是root账号,也就是超级管理员权限,最高缺陷登录,之后我们可以创建子账号,以后我们就可以用子账号登录了,这也是公司的常态,一般在公司是不会有root账号的权限的。3,用户管理创建用户:原创 2022-05-14 14:37:50 · 283 阅读 · 0 评论 -
海量数据排序—外排序之归并实现外排序排序
一,什么是外排序1.其实外排序就是在文件中进行排序,那我们知道在文件中访问数据有很多限制,比如不可以随机访问啊,只能通过文件指针访问啊,等等。那我们为什么还要在文件中排序也就是外排序呢?【1.】数据量过大,比如海量数据:举个例子,比如又100亿整形需要你排序,我们算一算100亿个整形放在内存中要多大空间呢。1KB=1024byte;1MB=1024KB:1G=1024MB;我们知道一个整形是4个字节,也就是4byte;1024*1024*1024大概估计是10亿的样子,也就是说1原创 2022-04-24 20:38:34 · 784 阅读 · 1 评论 -
数据结构八大核心排序,详细过程。
目录一,排序种类1.直接插入排序2.冒泡排序3.希尔排序4.快排(1.)快排单趟排序三种写法【1】hoare版本单趟排序【2】挖坑法【3】前后指针法 最新的写法,写起来最简单,最不容易出错(2.)快排【1.】快排递归【2】快排非递归【3】快排的优化一三数取中优化【4】快排的优化二小区间优化5.归并排序(1.)归并排序递归写法【1】归并排序子函数【2】归并排序(2.)归并排序循环写法6.选择排序7.堆排序...原创 2022-04-23 18:51:16 · 1530 阅读 · 0 评论 -
数据结构栈和队列的实现。
目录一,结构1.栈结构2.队列结构二,函数接口1.栈的函数接口2.队列的函数接口三,函数接口的实现1.栈的接口实现(1) 初始化(2)销毁(3)插入数据(4)删除数据(5)判空(6)返回栈元素个数(7)返回栈顶数据2.队列的接口实现(1)初始化队列(2)销毁队列(3)插入数据(4)删除数据(5)判空(6)返回队列元素个数(7)返回队头数据(8)返回队尾数据三,代码链接一,结构1.栈结构t原创 2022-04-10 18:38:14 · 491 阅读 · 0 评论 -
atoi;字符串转整形的模拟实现
1.代码://1. 空指针//2. 空字符串//3. 空白字符//4. + -//5. 非数字字符//6. 超大数字////#include<LIMITS.H>#include <ctype.h>#include<assert.h>//#include<stdlib.h>enum State{ INVALID,//非法 VALID //合法};//合法情况只有一种,二非法情况有很多,所以我们先默认初始化设置原创 2022-02-26 23:22:27 · 114 阅读 · 0 评论 -
C语言实现通讯录,进阶版,动态开辟空间,简单文件操作,支持增删查改,排序,可以保存数据到文件,程序运行自动读取数据到程序等。
目录代码注释很详细,后面附带有代码链接哦!!!一,依然是为了代码规范,写在了三个文件中二.test.c三.Contact.h四.Contact.h1.初始化的同时时候把数据从文件加载到程序中2.加载数据到文件3.从文件中加载之前保存到文件的数据到程序六.成品展示1.输入展示2.删除展示3.修改展示4.排序展示,按照年龄排序六,代码链接代码注释很详细,后面附带有代码链接哦!!!一,依然是为了代码规范,写在了三个..原创 2022-02-19 20:41:41 · 453 阅读 · 0 评论 -
C语言memcpy和memmove的实现。
一,memcpy实现:void* my_memcpy(void* dest, void* src, size_t n){ void* ret = dest; assert(dest && src); //保证数据的有效性。 while (n--) { *(char*)dest = *(char*)src; dest = (char*)dest + 1; src = (char*)src + 1; } return ret;}我们来分析一下:1.函原创 2022-01-25 00:02:44 · 2054 阅读 · 0 评论 -
字符串倒置:不是逆置哦。
注意:倒置是以单词为单位的“逆置”,不是字符串的逆置;思路:第一我们把每个单词分别逆置,然后再把字符串整体进行逆置;、思路讲完我们上代码:重点是靠考虑单词结束表中,数组的越界要处理好。#include<stdio.h>#include<string.h>void reverse(char* left,char* right){ while(left<right) { char t=*left; *...原创 2021-11-28 20:46:18 · 545 阅读 · 0 评论 -
c语言数据存储:
一. 整形在内存中的存储:原码、反码、补码计算机中的整数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位1.负整数:原码,反码,补码,三种表示方法各不相同。原码直接将二进制按照正负数的形式翻译成二进制就可以。反码将原码的符号位不变,其他位依次按位取反就可以得到了。补码反码+1就得到补码。2.正整数:原、反、补码都相同。对于整形来说:数据存放内存中其实存放的是补码。计算机内部整数的运算实际上也是补原创 2021-11-27 13:44:24 · 232 阅读 · 0 评论 -
打印杨辉三角
方法一:void yangHuiTriangle(int n){ int data[30][30] = { 1 }; //第一行直接填好,播下种子 int i, j; for (i = 1; i < n; i++) //从第二行开始填 { data[i][0] = 1; //每行的第一列都没有区别,直接给1,保证不会越界。 for (j = 1; j <= i; j++) //从第二列开始填 { data[i][j] = data[i - 1][j]..原创 2021-11-24 19:07:08 · 218 阅读 · 0 评论 -
数组越界奇葩现象:初闻不知曲中意,再闻已是意中人。
数组越界死循环奇怪问题:这段极其简单的代码会造成什么样的结果呢。我们来简单分析一下:1.局部变量定义在栈区,而栈区的内存使用一般是优先使用高地址。2.a[12]的地址与i的地址一样,最后一次i被改成0了。程序就死循环了。3.由于发生了死循环,即使越界了也不会报错,程序无法停下,无法报越界错误。4,要按照不同的编译器来考虑越界几个会越界到i,不同编译器情况稍有不同。5,在release版本中,编译器会主动优化,不会形成死循环,但打印结果是不对的,会打印13个hello bit**.原创 2021-11-21 13:36:50 · 237 阅读 · 0 评论 -
扫雷小游戏,初级。
核心思路:1,我们准备俩个棋盘,这里的棋盘存储数据我们使用二维数组,第一个棋盘时用来布置雷,排查雷,第二个棋盘用来给用户展示他排查到的雷。2,我们排查到非雷时需要计算出非雷坐标周围有几个雷,但当我们遍历坐标周围时,在边缘情况就会造成越界。所以我们直接把棋盘设置比扫雷区域扩大“一圈 ”,比如我们要9*9棋盘,我们就开一个11*11的棋盘,只用中间9*9就好了。接下来就是代码实现了:一样,为了代码清晰直观,方便后期维护修改,我们把测试,声明,函数实现分在三个文件里。上带码:test....原创 2021-11-20 21:40:24 · 2225 阅读 · 0 评论 -
c语言小知识:
下面哪个是指针数组:( A)A. int* arr[10];B.int * arr[];C.int **arr;D.int (*arr)[10]; (数组指针)指针数组是一个数组,该数组的每个元素是一个指针A:正确,定义了一个数组,该数组中有10个元素,每个元素都是int*的指针类型B:错误,编译失败,定义数组时,要给出空间的大小,如果没有给时,必须要给出初始化结果C:错误,定义了一个二级指针D:错误,*和arr先结合,说明arr不是数组。实际上arr是一个指针,一个..原创 2021-11-16 22:37:08 · 509 阅读 · 0 评论 -
c语言细节。
题目:答案:细节:1.在%c的前面写一个空格会消化掉前面所有的空白字符,然后读取一个字符。,然后读取一个字符2.在%c的后边发给一个'\n',其实在输入时候就会消化掉这个\n字符,不会为下次留下空白字符的隐患...原创 2021-11-15 23:06:15 · 315 阅读 · 0 评论 -
c语言细节。
上图:答案: > 解释·:C语言中,0为假,非0即为真。全局变量,没有给初始值时,编译其会默认将其初始化为0。i的初始值为0,i--结果-1,i为整形,sizeof(i)求i类型大小是4,但是sizeof的返回值类型实际为无符号整形,因此编译器会自动将左侧i自动转换为无符号整形的数据(类型转换),-1对应的无符号整形是一个非常大的数字,超过4或者8,故实际应该>。...原创 2021-11-15 22:34:00 · 980 阅读 · 0 评论 -
看完没收获来砍我。可以重点看,最剑指 Offer 40小的k个数(按照不同的实际情况采用不同的算法)
目录题目:1,排序算法,采用效率好的堆排序。2,采用堆来计算。3,特使要求下,灵活使用堆来解决实际问题。(1)提出新的现实要求:如果现在由100亿个数据,我们要找出他的最小前100呢。*****************如果采用方法2,不合理之处**********************方法3:题目:1,排序算法,采用效率好的堆排序。我们直接使用堆排序。c语言的话,我们可以写一个向下调整算法,写一个堆排序算法。int* getLeastNu.原创 2021-11-14 18:08:05 · 455 阅读 · 7 评论 -
JZ76 删除链表中重复的结点
目录1,题目:2.代码图片:3,代码文本:4,其他思路1,题目:2.代码图片:3,代码文本:/** * struct ListNode { * int val; * struct ListNode *next; * }; *//** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param pHead ListNode类 * @return ListNode类 */str..原创 2021-11-06 21:58:51 · 100 阅读 · 0 评论 -
链表的插入排序。(147. 对链表进行插入排序)
1,题目:2.代码图:3,代码文本;/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* insertionSortList(struct ListNode* head){ if(head==NULL||head->next==.原创 2021-11-06 20:10:19 · 129 阅读 · 0 评论