- 博客(27)
- 资源 (3)
- 收藏
- 关注
原创 GitHub修炼法则:第一次提交代码教学(Liunx系统)
github是广大程序员们必须要掌握的一个技能,万事开头难,如果成功提交了第一次代码,那么后来就会简单很多。网上的相关资料往往都不是从第一次开始,导致很多新手们会在过程中遇到很多权限认证相关的问题,进而被卡住。为了解决这些问题,我整理了这个github第一次提交的教程,希望可以帮助大家掌握github的使用。需要的环境:VS code编辑环境。WMware虚拟机与ubuntu系统。这里我通过将我们本地写的一个项目ChatServer上传到github仓库来带领大家学习github的使用。
2025-04-30 17:59:48
1755
原创 Linux多线(进)程编程——番外2:信号量实现读写锁
对于数据库(可以看作共享内存)等高并发的服务器,需要同时应对很多请求,这些请求里有读请求也有写请求。如果每次来一个请求的时候就给数据库加一个锁,或者使用单一信号量限制单进程访问,那么系统的性能会受到极大的影响,失去多进程的优势。为了解决这个问题,可以考虑使用读写锁。
2025-04-30 01:20:25
1179
原创 C++11新特性篇:一篇文章让你彻底弄懂std::bind的作用
在C++11中引入了bind方法,让我们来看一下他的作用:官方解释:在 C++11 中,std::bind是一个函数适配器,它接受一个可调用对象(如函数、函数指针、lambda 表达式等),并生成一个新的可调用对象来适应原对象的参数列表。看不懂没关系,这里我们用其他方式讲解。
2025-04-27 02:36:06
1062
原创 动态规划算法:完全背包类问题
现在我们考虑下面的问题:(1)小明有一个背包,背包容积为v,有m种物品,其中第i种物品的价值为val[i],体积为t[i]每样物品有无限个,请问背包内物品总价值最大为多少?(2)小明有若干面值的硬币nums,小明需要买一个物品需要m元,小明想知道自己的硬币能否刚好凑够m元,如果可以,那么需要的最少硬币数量是多少?假设每种面值的硬币数量不做限制。分析这些问题我们发现,后两个问题仅需要一个结果,一个数字,因此可以使用动态规划来解决。而这两个问题与上一篇文章中讲的问题的区别就在于,每种物品可以放入无限次。
2025-04-22 21:32:03
1031
原创 动态规划算法:01背包问题(子集问题)
小明有一个背包,背包容积为v,有m个物品,其中第i个物品的价值为val[i],体积为t[i],每样物品只有一个,请问如何装物品能让背包内的物品价值最大?看过我回溯算法篇章的朋友没应该会有一些思路,这个其实是一个标准的子集问题,我们要从所有物品中挑选出价值最大的若干物品,且要可以装进背包中。回溯算法(1):子集问题小明有一个背包,背包容积为v,有m个物品,其中第i个物品的价值为val[i],体积为t[i],每样物品只有一个,选若干物品装入背包内,请问背包内的物品可能的最大价值是多少?
2025-04-22 01:16:53
943
原创 linux多线(进)程编程——(9)信号量(二)
上一篇文章我们讲解了信号量的基础用法,这一篇文章我们承接上面的内容,给大家进一步提升对信号量的理解。如果没有看过上一篇文章,请大家移步linux多线(进)程编程——(9)信号量(一)
2025-04-20 17:39:38
991
1
原创 linux多线(进)程编程——(9)信号量(一)
在找到了共享内存存在的问题后,进程君父子着手开始解决这些问题。他们发明了一个新的神通——信号量。
2025-04-20 01:09:07
885
原创 动态规划算法:状态压缩
首先确认dp的大小,有的同学可能条件反射的认为dp的大小应该是M,对应M个目标。但是接下来会发现举步维艰,因为都是命中i个目标,如果打中不一样的靶子,反应的是不同的状态。小明开了3枪:[1, 0, 0],[0, 1, 0],[0, 1, 1],其中为1表示命中了对应的目标。小明开了3枪:[1, 0, 0],[0, 1, 0],[1, 1, 0],其中为1表示命中了对应的目标。答:每个目标都有命中与未命中两种状态,M个目标组合起来应该是2的M次方。
2025-04-19 18:40:44
511
原创 回溯算法(3):番外篇
我分别在回溯算法(1):子集问题以及回溯算法(2):全排列问题中讲解了使用回溯算法解决子集问题与全排列问题的基本思想。但是为了建立知识体系,我只选取了比较相关的方法,并将两者联系起来。实际上这两种问题还有其他的方法解决,当然也是基于回溯算法的。为了不留下遗憾,我在这里给大家把剩下的几种方法补充一下。**注意:**对于新手朋友,还是尽可能的看我前两篇文章,不然容易学得一个四不像。
2025-04-19 15:48:25
302
原创 回溯算法(2):全排列问题
当前我们使用vector<pair<int,int>>来表示n个坐标,但是我们忽略了一点,就是由于N皇后问题的特殊性,实际上我们不可能出现两个棋子在同一轴的情况。out_put接口用于进行输出格式转换,,先生成一张空棋盘(全是 ‘.’),然后把res中的path取出来,每个path中都有n个棋子的坐标,把对应坐标上的元素变成‘Q’即可。因为索引是固定的,所以每个棋子只能在对应的列上运动,且由于使用全排列的形式,因此不可能出现棋子出现在同一行的情况。这个其实就是和子集问题一样,我们需要过滤一下重复的结果。
2025-04-19 13:58:52
1663
原创 回溯算法(1):子集问题
回溯算法的本质就是结合递归的深度遍历。基本所有的能用回溯算法解决的问题都分为两个大类:(1)子集问题,(2)全排列问题。
2025-04-18 00:55:47
1228
原创 linux多线(进)程编程——(8)多进程的冲突问题
随着时间的推移,共享内存已经在修真界已经沦为禁术。因为使用这种方式沟通的两人往往会陷入到走火入魔的状态,思维扭曲。
2025-04-18 00:17:36
585
原创 linux多线(进)程编程——(7)消息队列
现在修真界大家的沟通手段已经越来越丰富了,有了匿名管道命名管道共享内存等多种方式。但是随着深入使用人们逐渐发现了这些传音术的局限性。匿名管道:只能在有血缘关系的修真者(进程)间使用,局限性大。命名管道:需要创建出一个文件,并通过文件方式沟通,很不方便。共享内存:这个就更可怕了,传递速度太快,大量无关信息也可能会涌入脑海,而且两个人如果想法有冲突就会把各自的思路相互覆盖。(这个涉及到到进程间同步的一些知识,后续解决。无数心怀远大抱负的修士期待着能解决这些问题,从而一句成名。
2025-04-15 13:45:43
835
原创 linux多线(进)程编程——番外1:内存映射与mmap
在修真世界之外,无数异世界,其中某个叫地球的异世界中,一群人对共享内存的第二种使用方式做出了讲解。
2025-04-14 22:58:01
1317
1
原创 linux多线(进)程编程——(6)共享内存
话说进程君的儿子经过父亲点播后就开始闭关,它想要开发出一种全新的传音神通。他想,如果两个人的大脑生长到了一起,那不是就可以直接知道对方在想什么了吗,这样不是可以避免通过语言传递照成的浪费吗?下面就是它的设计思路。
2025-04-13 20:54:34
774
原创 linux多线(进)程编程——(5)虚拟内存与内存映射
进程君开发了管道这门技术后,修真界的各种沟通越来越频繁,这天进程君正与自己的孩子沟通,进程君的孩子说道:“爸爸,昨天我看他们斗法,小明一拳打到了小刚的肚子上,小刚痛的直接投降了,看得我都肚子都疼,小明下手也太狠了”。进程君笑道:“哈哈,你是不会疼的,因为虽然都是肚子,但是在你的身上和他的身上的不是一个器官,当然你也不会痛了,就像是你也有脑子,小美也有脑子,可你会知道小美再想什么吗?哈哈哈”。进程君说完这句话飘然而去,留下他的孩子在哪里若有所思。
2025-04-13 14:29:15
900
原创 linux多线(进)程编程——(4)进程间的传音术(命名管道)
进程君(父进程)在开发出匿名管道这门传音术后,解决了和自己孩子(子进程)间的沟通问题,父子关系趋于融洽。和孩子沟通后,进程君发现,自己脱离群众太久了,应该加强和群众的沟通。但是进程君与众位道友间没有血缘关系,无法使用匿名管道进行沟通。于是进程君决定改良匿名管道这种技术,让天下道友都能与自己畅通无阻的沟通,最终产生了一种无暇的传音技术——命名管道(FIFO)。
2025-04-13 12:42:51
900
原创 linux多线(进)程编程——(3)进程间的传音术(匿名管道)
之前我们学习了《linux操作系统》中的第一个神通,fork()函数,但是感觉不知道的东西越来越多了。想要和别的道友交流,但是发现不同道友(进程)间没有一种有效的沟通方式。该如何与其他道友有效沟通呢?上古流传下来的传音术大概有六种,分别为:管道,共享内存,信号,信号量,消息队列,套接字。本次我们先修炼第一种神通,管道。
2025-04-13 04:03:54
967
1
原创 linux多线(进)程编程——(2)身外化身fork()
你捡到了一个秘籍上面写着《linux操作系统》正式摆脱了练气期,并开启了修炼,突破了第一个瓶颈,你的识海中出现了岔路,应该往哪边走呢?听说在迷宫里摸着右边的墙壁是总能走出去的,我们也试一下吧。你将神识触摸了右侧的光球,一些信息进入到了你的脑海,最前面写着两个字:进程。
2025-04-12 23:47:30
550
原创 linux多线(进)程编程——(1)前置知识
学习编程就像是修仙,分为宗门的正统修士(计算机专业的学生),以及野修(半路转码)。正统修士有各大宗门的功法,保证一路修行畅通无阻。而对于野修,少部分人可以得到失落的传承(学习路线),大部分的野修都走了歪路子,对着网站的的某些某某语言基础教学视频学习了大半年,最后根基不稳,在与人斗法(面试找工作)的过程中凄惨落败。仅仅学习了语言的修士相当于练气境界,相当于低阶修士,而对于这些练气圆满的修士来说下一步该怎么做至关重要。数据结构是一种路线,修炼出来必成一方大能,但是那条路线过于凶险,对天资有这极大的要求。
2025-04-12 23:10:03
400
原创 现代控制理论到实践:一、状态空间建模(一)
现代控制理论建立在状态空间法基础上的一种控制理论,是自动控制理论的一个主要组成部分。(后面都不重要了)。看到这里,大家应该清楚了,状态空间法是现代控制理论的核心,是基础,那么什么是状态空间呢?
2025-04-12 20:38:22
518
原创 完美C语言通讯录(含代码)
C语言通讯录大作业,支持永久数据储存,无内存浪费。相关部分介绍本工程用到库文件stdio.h 、stdlib.h 、string.h 、error.h对于内存的管理使用了动态内存分配,每存入一个人的信息,就分配相应大小的空间。相对于其他工程关闭程序后就会丢失信息,本工程支持文件操作,关闭系统时会将录入的信息写入一个contact.txt文件中,下次打开系统时又会录入信息。代码详解contact.h项目头文件,声明了两个结构体struct contact{ char name[8]; //
2021-03-02 15:17:48
8302
2
原创 如何使用单片机控制直流有刷电机,制作遥控小车(船),以STM32为例(第一节)
五分钟学会如何使用单片机控制直流有刷电机,制作小车(船),以STM32为例(第一节)概述当今中国大学很多信息类专业的学生在大一大二都面对过一个难题——科技创新项目。本科学校尤其注重基础教育,相比专科学校刚大一就教C语言,单片机,本科学生在大一大二还在学微积分,线性代数,电路,模电数电等,对专业知识所知甚少。这时的科技项目对于那些没有加入实验室的同学就显得太难了。一些没有大佬带的同学只能选择上网买一个成品,或者找人代做项目。如果当初选题时选了个偏门的题目,没法找人代做或购买成品,那最后只能选择放弃。我当
2021-01-18 19:35:02
4169
原创 C语言 利用泰勒公式计算sinx(误差在0.00001内,可以更改误差)
通过泰勒公式计算sinx的值(误差在0.00001以内)#include<stdio.h>#include<math.h>main(){/y是输入的参数,a等于最后一项的绝对值,sinx是最后结果,m在循环外等于1,进入for循环后等于a,用来判断for循环条件。/double y,x,sinx,a,m=1;scanf("%lf",&y);x=(y>0)?y:(-1y); //用来计算y<0时的情况a=x;int s=1,i=-1;s
2020-06-04 23:20:51
9999
5
信号量教学项目-仪器开发
2025-04-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅