自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Modbus协议

Modbus由Modicon公司于1979年开发,是一种工业现场总线协议标准。Modbus通信协议具有多个变种,其中有支持串口,以太网多个版本,其中最著名的是Modbus RTU、Modbus ASCII和Modbus TCP三种其中Modbus TCP是在施耐德收购Modicon后1997年发布的。

2024-05-14 19:09:16 899

原创 网络模型与调试

● 网络采用分而治之的方法设计,将网络的功能划分为不同的模块,以分层的形式有机组合在一起。● 每层实现不同的功能,其内部实现方法对外部其他层次来说是透明的。每层向上层提供服务,同时使用下层提供的服务● 网络体系结构即指网络的层次结构和每层所使用协议的集合● 两类非常重要的体系结构:OSI与TCP/IP。

2024-04-28 16:08:10 241 1

原创 网络编程——TCP

提供了一个面向连接、可靠的数据传输服务,数据无差错、无重复、无丢失、无失序的发送且按发送顺序接收。内设置流量控制,避免数据流淹没慢的接收方。数据被看作是字节流,无长度限制。提供无连接服务、不可靠。数据包以独立数据包的形式被发送,不提供无差错保证,数据可能丢失或重复,顺序发送,可能乱序接收。可以对较低层次协议如IP、ICMP直接访问。

2024-04-28 15:52:43 579 1

原创 网络编程——基础概念

基本概念● IP地址是Internet中主机的标识● Internet中的主机要与别的机器通信必须具有一个IP地址● IP地址为32位(IPv4)或者128位(IPv6)● 表示形式:常用点分十进制,如192.168.1.109,最后都会转换为一个32位的无符号整数。

2024-04-28 15:22:13 797

原创 IO——进程间通讯 IPC

(1) 早期进程间通信:无名管道(pipe)、有名管道(fifo)、信号(signal)共享内存(shared memory)、消息队列(message queue)、信号灯集(semaphore set)(3) BSD:套接字(socket)

2024-04-20 19:33:07 1036

原创 IO——线程

线程是一个轻量级的进程,为了提高系统的性能引入线程。线程和进程都参与统一的调度。在同一个进程中可以创建的多个线程, 共享进程资源。(Linux里同样用task_struct来描述一个线程):都为操作系统提供了并发执行能力:线程是系统调度的最小单位,进程是资源分配的最小单位:同一个进程创建的多个线程共享该进程的资源;进程的地址空间相互独立:线程通信相对简单,只需要通过可以实现,但是需要考虑访问的问题;进程通信比较复杂,需要借助进程间的通信机制(借助3g-4g内核空间)

2024-04-20 19:02:10 638

原创 IO——进程

● 守护进程是一个生存周期较长的进程,通常独立于控制终端并且周期性的执行某种任务或者等待处理某些待发生的事件● 大多数服务都是通过守护进程实现的● 关闭终端,相应的进程都会被关闭,而守护进程却能够突破这种限制。

2024-04-20 18:52:29 837

原创 IO——目录&库

当使用别人的函数时除了包含头文件以外还需要有库头文件也就是.h结尾的文件,其中包含:宏定义、结构体、联合体、枚举的定义、函数声明、重命名、其他头文件、条件编译、外部引用库:把一些常用的函数的目标文件打包在一起,提供相应的函数接口,便于程序员使用。本质上来说库是一种可执行代码的二进制形式文件。

2024-04-13 11:29:25 615

原创 IO——文件属性

a. 15bit ~ 12bit 保存文件类型b. 11bit ~ 9bit 保存执行文件时设置的信息(不用管)c. 8bit ~ 0bit 保存文件访问权限。

2024-04-13 10:32:16 286

原创 IO——文件IO

又称为系统IO,是系统调用,是操作系统提供的函数接口。posix中定义的一组用于输入输出的函数。

2024-04-13 10:25:57 414

原创 IO——标准IO

注:当a+的方式打开文件时,写只能在末尾进行追加,定位操作是无法改变写的位置,但是可以改变读的位置。a+:读和追加,文件不存在创建,存在追加,读文件流定位到文件开头,写文件流定位到文件末尾。参数: ptr :是一个指针,是存放数据的存储空间的起始地址,用来存放读取元素。a:追加(在末尾写),文件不存在创建,存在追加,文件流定位到文件末尾。参数: ptr :是一个指针,保存要输出数据的空间的地址。r+:可读可写,当文件不存在时报错,文件流定位到文件开头。r:只读,当文件不存在时报错,文件流定位到文件开头。

2024-04-13 10:03:30 1253

原创 数据结构——树

概念:树(Tree)是n(n>=0)个节点的有限集合T,它满足两个条件 :有且仅有一个特定的称为根(Root)的节点;其余的节点可以分为m(m≥0)个互不相交的有限集合T1、T2、……、Tm,其中每一个集合又是一棵树,并称为其根的子树(Subtree)。特征:一对多,每个节点最多有一个前驱,但可以有多个后继(根节点无前驱,叶节点无后继)

2024-04-09 20:21:06 565 1

原创 数据结构——线性表2

1.概念:只能在一端进行插入和删除操作的线性表,进行插入和删除的一端叫做栈顶,另一端叫做栈底2. 特点:先入后出,后入先出FILO,LIFO1.3.1顺序栈:seqstacksequence 顺序 stack 栈1)逻辑结构:线性结构2)存储结构:顺序存储3)操作://1.创建一个空的栈//2.入栈//3.判断栈是否为满//4.出栈//5.判断栈是否为空//6.求栈的长度//7.获取栈顶数据1.3.2链式栈1)逻辑结构:线性结构。

2024-04-09 20:11:16 359

原创 数据结构——线性表1

顺序表 链表(单向链表 单向循环链表 双向链表 双向循环链表)栈(顺序栈 链式栈) 队列(顺序队列 链式队列)1)逻辑结构:线性结构2)存储结构:顺序存储、链式存储3)特点:一对一,每个节点最多有一个前驱和一个后继首尾节点比较特殊,首节点无前驱,尾节点无后继。

2024-04-09 20:00:29 418

原创 数据结构——概念基础

3)网状关系-------》图状结构--------》多对多----------》图。2)层次关系------》树形结构---------》一对多---------》树。f(n) 算法的可执行语句重复执行的次数 用问题规模n的某个函数f(n)来表达。数组:在内存当中一段连续的内存空间中保存数据(如c语言中的一维数组)数据:不只是一个单纯的数值,而是类似于一个集合的概念。数据项:是数据的最小单位,描述数据元素的信息。数据之间的逻辑规律和数据之间的关系。数据的逻辑结构在计算机中的具体实现。

2024-04-09 19:47:59 509

原创 分文件编程——Makefile

makefile

2024-03-30 09:37:49 902

原创 Shell脚本

一般用大写,可小写进行赋值时用=,左右两边不能有空格引用变量前面加$前一个命令的退出状态(0为真,非零为假)$$正在执行进程的ID号。

2024-03-30 09:24:47 568

原创 Linux命令

man man:查看man手册1 Executable programs or shell commands 可执行程序或shell命令2 System calls (functions provided by the kernel) 系统调用3 Library calls (functions within program libraries) 库函数printf()函数即为3中函数 man 3 printf 查询。

2024-03-23 09:50:07 959

原创 Linux学习

特点:免费开源优点:模块化程度高、硬件支持广泛、安全稳定、可移植性良好本质:操作系统内核ubuntu是什么:linux的发行版。

2024-03-23 09:33:24 785

原创 C语言基础——结构体

/将int类型更名为size_tint a;结构体的数据类型名字太长,重新取个别名;}KK;即KK = =struct ABC。

2024-03-22 20:26:59 539

原创 C语言基础——函数

1.不需要参数,也不需要返回值void(){}2.需要参数,不要返回值3.不要参数,要返回值return a}4.要参数,要返回值形参:函数定义时,定义的形参变量,是形式上存在的参数,只有在调用函数时才开辟内存空间。实参:调用函数时,实际传递的值。

2024-03-20 08:48:07 435

原创 C语言基础——指针2

一级指针存放普通变量的地址二级指针存放一级指针的地址格式:存储类型 数据类型 **指针变量名int a=8;int *p=&a;//二级指针用 ** 定义,指向指针p的地址问题:访问a的值:a *p **q访问a的地址:&a p *q访问p的地址:q &p。

2024-03-16 09:24:16 1082

原创 C语言基础——指针1

本质:地址。

2024-03-15 08:44:29 231

原创 C语言基础——二维数组

/索引从0开始赋值方式//按行进行赋值//可以省略行数for(;;for(;;//错误,只有最左边的维度可以省略。

2024-03-14 08:45:26 173

原创 C语言基础——一维数组

数组的空间大小:若已明确数组大小,则空间就为多大。若没明确如c[],则输入字符串就多一个’\0’,但字符不多;而char a2[]={“abc”} 数据类型是字符串型,sizeof(a2)==4 要加上’\0’如char a1[]={‘a’,‘b’,‘c’} 数据类型是字符型,sizeof(a1)==3。完全初始化: int a[5]={2,3,5,8,9};字符串结束标志’\0’ 而单纯字符则没有’\0’(重要)参数:数组首地址,c替换的数据,n:清空的字节大小。int a[5]={9},其余部分为0;

2024-03-13 19:56:00 392

原创 C语言基础——控制语句

执行顺序:判断表达式的结果,和case后的常量值(case后必须是常量)进行匹配,匹配成功则执行对应语句块,如果没有匹配成功的则执行default的语句块,遇到break结束。执行顺序:首先执行表达式1进行赋值,然后判断表达式2是否成立,如果成立就进入循环执行语句块,再执行表达式3进行增值或减值然后继续判断表达式2是否成立,直到表达式2不成立退出循环。每个对应的case语句后边要加上break,不加会继续向下执行,直到遇到break结束。判断表达式1是否成立,如果成立执行代码段1,不成立执行代码段2;

2024-03-12 08:50:58 312 1

原创 C语言基础——输入输出

输入功能:向终端输入一个字符参数:无返回值:输入字符的ASCII值输出功能:向终端输出参数:输出字符的ASCII值返回值:输出字符的ASCII值。

2024-03-11 18:50:10 287

原创 C语言基础——词法符号

struct(结构体)union(共用体)enum(枚举)

2024-03-11 17:30:02 856

原创 C语言基础——数据的表示

0x1568<–>0001 0101 0110 1000 一位十六进制替4位二进制。按上图所示:十进制数8对2取余直到无法取余,从商开始倒取余数,二进制表达为1000。Linux终端中,输入man可打开帮助手册查询。十六进制 0-9 a-f 16:0x10。2所得,所以在第三,四位上为1,一二位为0。二进制 0 1 2:10。1.3 计算器法(数据过大,不易计算)‘\0’ 0 字符串结束标志。十进制 0-9 10:10。若有更大的数(>15)也可。

2024-03-09 16:57:25 283

原创 Linux下Vi编辑器的基础命令

命令行模式插入模式底行模式三种模式完成不同指令(这里主要讲述利用vi编辑器进行gcc编译的过程)

2024-03-09 15:14:23 841

原创 Linux基础命令

若rwx:可读可写可执行 二进制111 十进制7 (其他权限类似)例rw-rw-r–即自己可读可写不可执行 组内也是 其他只可读。打开终端:ctrl+shift+n 新终端位置处于当前位置。若rw-:可读可写不可执行 即二进制表示为110 十进制为6。若权限为r-- :只可读 即二进制100 十进制为4。ls -a 显示当前目录所有文件(包括隐藏文件)rwx 可读可写可执行 rw-可读可写不可执行。** rw-rw-r–:代表文件的权限**-:代表文件类型(共7种bcd-lsp)

2024-03-08 19:42:23 303 1

原创 Git的简单使用

1.版本控制:个人使用时,通过对个人项目的修改保存,使其在出现问题时可前进或后退到其他项目版本,便于开发。如果项目出现问题或者想返回之前的项目版本,可以通过日志重置版本(回退后,日志只存储当前版本之前的版本)如果回退版本后,发现回退前的版本还有用处,或者想再回原先版本,可以进行版本前进。国内一般用码云(gitee)国外类似(github)git commit -m +日志信息 提交新版本。通过日志,可以了解到存储到版本库的各个版本信息。git log显示当前版本之前的版本。创建新的版本库(存储自己的项目)

2024-03-08 19:17:31 273 1

原创 Html简单命令

* 行高与文字高度相同时,文字竖直对齐(行数多,行间距也变大,所以可根据行数进行对齐(行高=总高/行数)) *//* 背景颜色 颜色写法:1.单词 2.rgb 3.16进制0-9 a-f*//*class标注某块时,并不唯一,可多次调用,<style>里前面用.前缀*//* id唯一标识某块,在样式(style)里用#前缀*//* border 边框 宽度 样式 颜色 */1.块标签如div可以设置宽高等。/* 文本水平对齐 */HTML主要分三个层次。/* 字体颜色 *//*字体大小 */

2024-03-06 19:01:13 368

原创 2021-10-03

高精度算法学习总结由于做题的需要,需要算到21次方的和。很明显,整形已经不能满足需要。这时候就需要用到高精度算法。高精度理解很简单,主要就是将原本的很多位的数字以数组的形式存放(每一个数字都用一个数组)这样就可以对单独的每位数处理,而不用担心超过整形范围。处理方法:1.定义字符串,输入整数。2.定义数组分别存放其各个位3.计算高精度主要分加减乘除四类算法加法:从个位开始加,每次都存入新数组。最后再遍历一遍新数组,数字>10则向前进位(和乘法的处理很相似)乘法则是二重循环构建新数组,加法只是

2021-10-03 19:20:32 77

原创 2021-09-26

日常总结开学回来后的第一次总结,说一说自己这两天的收获。1. next_permutation();能按字典序返回不同组合。如a,b,c返回abc acb…函数主要用于寻找符合不同标准的序列。这样的函数,降低了函数的复杂程度(o(n))给定序列要求就可求出要求序列。2.递归函数的应用这些天java的学习也复习了递归函数。递归函数就是在函数里调用函数,这样极大的缩减了程序运行时间。可能就由on2到了on。重新做了求斐波那契函数,求n的阶乘。3.并查集写一个看的例子说说我的理解how many

2021-09-26 21:09:21 68

原创 2021-09-19

暑假总结算法竞赛这本书大概看了几十页。去掉前面几页,回顾了stl的几类结构。主要是写了写用法,做了几个例子(如圆桌问题)。再往后是递归排列问题,关于如何去构造一个递推式也是大概写了写,之后继续看了关于搜索的问题,有关深搜和广搜。最后也没能坚持下去,学了几天也就放松了。说说自己的总结,暑假确实是没做什么。到了最后几天,做了次cf的比赛。题目很简单,但是自己想半天也没理解,很长时间没做题,确实上学期学的东西也就落得差不多了。再说今天,和同学组队参加了比赛。实话说,题目很难,但也有两个几乎不用算法的题目,也

2021-09-19 21:02:45 48

原创 2021-05-23

ACM第十二周总结本周的学习主要是搜索复习递归,总结一下递归形式1.找到递归关系,前一状态与后一状态的关系,直到已知状态。2.设置边界,找到初末递归状态。(知道什么时候停止)3.设计递归函数。形式:f(n){if(n<=1)return 1;else n+f(n-1);}其次学习搜索,刚开始,感觉搜索就像是枚举(尤其深度优先搜索)从第一种情况开始再到子情况…再返回上一级for(i=1;i<n;i++)for(j=1;j<m;j++)for(k=1;k<z;k++

2021-05-23 15:20:35 43

原创 2021-05-16

ACM第十一周总结这一周主要学习二分查找,其次继续做了背包问题,接下来对一周做些总结。二分查找学习体会:我认为二分查找主要需要解决几个问题,排序,左右边界和对答案的判断。1.排序: 既然要二分查找 ,如果不以(大小)排序,则失去二分意义。2.边界问题 :左右边界要确定好,查找从左右(大小)开始,if(mid<x(待查找值))left(low)=mid+1;if(mid>x(待查找值))right(high)=mid-1;当然要确保left<=right3.判断:这就是

2021-05-16 22:53:02 74

原创 2021-05-09

ACM周总结学习感悟:这一周主要学习背包dp包括有01背包,完全背包,多重背包。01背包:f[i][v]=max(dp[i-1][v],dp[i-1][v-c[i]]+w[i])即i件物品放到体积为v的背包里状态转移公式表示第i件放与不放时的最优i:1-n v:V-0完全背包:n种物品,有无限件可用,装入容积为V的背包,求价值最大。原理和01背包差不多,我理解的是二维时,相当于01背包每一种的物品价值有(kw[i],2kw[i],3kw[i]…)所以在原基础上加入for(k=0;

2021-05-09 10:08:42 81

原创 2021-04-24

ACM第七周学习总结这一周正式进入区间dp的学习,有了前两周周的基础,对区间dp还是比较容易理解。区间dp在线性dp的基础上,以点变成区间。问题一般解决方法:三重循环:第一重 列举区间(从小到大)第二重 从初始到末尾(由左至右或者其他方式)第三重 动态转移 实现每一区间最优题目收获:这几天主要做了几个例题1.合并石子问题(1)一条直线上放有n堆石子,现将其两两合并,合并后的和即为合并花费。求合并到最后(只有一堆)的花费最大和最小是多少?问题分析:当只有一堆时,花费必然为0。当两堆

2021-04-24 19:14:36 56

C语言的学生成绩管理(课后作业C+Makeflie的使用)

C语言课后作业,实现简单,参考学习

2024-03-30

空空如也

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

TA关注的人

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