自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 网络编程--网络理论基础(二)

路由器分为LAN口和WAN口,LAN口用来接各种家庭中的设备,而WAN口用来接运营商提供的互联网,从而连接到互联网中如果没有WAN口,那么路由器就是一台交换机,也是一个子网而WAN口,实际上是另一台交换机,只不过这台交换机是全球通信的巨大的一张网,称为互联网,是另一个子网而路由器就是网关,负责两个子网之间的通信的桥梁。

2024-06-17 17:27:45 898

原创 TCL编程

set 变量名 值其中,值可以是常量,如上图的12,也可以是从变量中拿到的值,如上图中的$a注意,如果变量名不是由字母数字和下划线组成的,那么在$时,要将变量名加上花括号[]是计算表达式的值,语法:[expr 1+2]在中括号里进行表达式运算,且表达式之前要加expr补充:如果使用[glob *v]本意是想拿到所有以v结尾的文件,但是虽然他确实返回结果是a.v b.v c.v,但是他将这三个.v合并成了一个变量进行返回,当前目录并没有名为“a.v b.v c.v”的单个文件,所以,这里想要返回三个

2024-06-05 11:15:31 328

原创 shell编程

shell是我们的linux所使用的命令行解释器,他负责程序员与Linux内核的沟通,所以可以认为shell是一个程序员与linux内核沟通的编程语言我们将命令交给shell,shell将我们的命令翻译为机器语言,交给内核,去调动内核我们还可以将多个shell命令写成在一起,存入一个文件,该文件就叫做脚本从2)可以看到,sh是当前系统的默认解释器,他默认链接到了bash上,说明centos默认的shell解析器是bash需要注意的:1、=前后不可有空格。

2024-05-26 18:14:06 737

原创 系统编程--文件IO

系统调用,就是一些操作系统所提供的函数API,通过键入man man,可以查看man手册的简介,可以看到,man手册的第二卷,都是系统调用的函数原型,即内核提供的函数。

2024-05-18 11:17:13 664

原创 B/S模式的web通信(高并发服务器)

之后,因为http协议中,对于从浏览器发送而来的文件的位置,是以启动配置的第三个参数为参考根目录的相对路径,服务器要设法拿到服务器对应的路径,而拼接路径又过于繁琐,所以,使用chdir函数,该函数可以让服务端的工作目录跳转到某个目录下(实际上就是与cd的作用一样),所以,chdir(argv[2]),就是将服务器跳转到第三个参数所指明的目录内,这样,从http协议封装出来的数据包拿到的数据,可以直接拿到当前服务器使用,因为服务器的工作目录已经跳转到第三个参数的目录了。如果是cfd,那么进行数据的读取。

2024-05-09 17:21:32 804

原创 Gradio之blocks灵活搭建页面

(在诸多水平布局之间,混入了几个没有写任何布局的组件,那是因为该行就那一个组件,所以,在只有一个组件,且目前在垂直布局的大引导下,也就无需再写一个水平布局了,但是还是建议写上,便于代码的阅读和维护)所以,我们在这里调整其最小宽度,只要保证最小宽度比我们想要设置的宽度小就可以了,我们调为1,就已经是最小的宽度了,基本上调为1之后,不会限制任何比例对宽度的下调了。可以看到,最后的效果,有一点小bug,因为那一行六个按钮,本来是写在一个row内的,也就是本就是一行,现在怎么会变成两行,

2024-05-07 16:57:25 554

原创 CMake

首先,我们知道,一个源文件生成可执行文件的步骤为:1、预处理,将源文件中的宏、头文件等展开,将注释删去2、进行编译,将源文件进行编译。3、进行汇编,汇编完成之后,就会根据源文件生成二进制文件,win平台下以“.obj”为后缀,而linux平台下以“.o”为后缀4、链接,将.obj或者.o文件进行链接,最终生成可执行文件,win平台下为.exe,linux平台下为.out文件CMake就是一个项目构建的工具,项目编译构建的工具。

2024-04-22 16:10:34 796

原创 GCC、gcc、g++辨析

GCC:GNU Compiler Collection(GUN 编译器集合),它可以编译C、C++、JAV、Fortran、Pascal、Object-C等语言。gcc是GCC中的GUN C Compiler(C 编译器)g++是GCC中的GUN C++ Compiler(C++编译器)由于编译器是可以更换的,所以gcc不仅仅可以编译C文件所以,更准确的说法是:gcc调用了C compiler,而g++调用了C++ compiler。

2024-04-22 14:56:04 258

原创 算法刷题应用知识补充---数论

这里的应用是,将a,m,x,y带入exgcd,得到函数的返回值是gcd(a, m),且x和y会引用返回,其中,x就是我们要找的值的初态,我们还要对其处理。这里要判断,是否真正要得到的余数b是gcd(a,m)的倍数,如果不是,那么无解,如果是,则结果是x乘上倍数,即x * (b / d),这就是我们要找的x。知识点2:a在mod p时的逆元,等于 qmi(a, p - 2, p),即a * qmi(a,p - 2, p) = 1 (mod p)知识点3:要判断是否有解,若a%p!=0,则有解,否则,无解。

2024-04-10 16:09:50 363

原创 算法刷题应用知识补充--搜索与图

这里写目录标题DFS题结BFS题结一级目录二级目录二级目录二级目录一级目录二级目录二级目录二级目录一级目录二级目录二级目录二级目录DFS题结BFS题结一级目录二级目录二级目录二级目录一级目录二级目录二级目录二级目录一级目录二级目录二级目录二级目录

2024-04-07 20:49:07 216

原创 算法刷题应用知识补充--基础算法、数据结构篇

所以,初步的认知已经建立了。所以,a = a ^ b,a是第一行代码执行后变化的a,b是原来的a,所以,将a拆开(得到原来的a 和 b)并且将b换成原来的a:a ^ b ^ a,再使用交换律,得到a ^ a ^ b,最后等于原来的b。所以在求4的次幂时,因为2的偶次幂,一定是4的次幂,所以,我们在找到2的次幂数的基础上,再找到那些是2的偶次幂的数,那些数mod3==1。b = a ^ b,此时a是变化之后的a,将其拆开:a ^ b ^ b,此时a是变化之前的a,所以,就等于a ^ 0,最终等于原来的a。

2024-04-05 23:20:55 643

原创 C++算法补充---STL

printf(“%.xf”,x)可以实现四舍五入.0f,是保留到整数,四舍五入仅用于整数四舍五入如果用于小数:那么要满足要保留的位数后面还有两个有效数字,编号为1、2,2号不能为0如果是结构体,那么传入引用。

2024-04-01 09:28:17 1206

原创 算法错题本

上图中 在循环里 不要定义int i = 0;这样的话每次循环都会使其为0;低级错误 只能在for循环里设置为int i= 0;利用for循环 计数器++ 求长度终止条件(跳出循环条件):可以看到定义好了数组之后 不赋值的地方 就是乱码 以此为终止条件。

2024-04-01 09:27:49 968

原创 Linux系统下连接mysql要注意的问题

安装mysql8的话,他会默认自带四个数据库,最好不要在这四个库中进行修改。如果想要在源码中使用mysql,需要下载mysql连接库。

2024-04-01 08:41:05 203

原创 网络编程--高并发服务器(二)

之后进入while循环,在循环内,无需做任何连接相关的操作,所以我们可以直接进行数据的读写,但是这里read、write函数都无法使用了,因为我们没有connfd,且recv、send函数也不能用,因为他们只能用于TCP,所以,这里read被替换成recvfrom函数,之后进行业务代码,最后将结过通过sendto函数写回。TCP是面向连接的,可靠的数据包传输,也就是他会在复杂的网络环境中,在通信两端建立起连接,可以弥补网络层的不稳定,如果传输过程中丢包,那么会重新传递丢掉的包(主要依赖于ACK应答实现)

2024-03-29 09:37:15 709

原创 网络编程--高并发服务器

我们从客户端连接上服务端,可以进行正常的运行,但是如果此时第二个客户端也连接上服务端的话,第二个客户端是无法正常运行的,因为目前我们只能处理单进程,一对一的服务提供,无法进行多个客户端同时连接,所以,就有了高并发服务器。现在我们有了服务端和客户端(上图均以终端代替)

2024-03-15 11:04:54 501

原创 系统编程--makefile项目管理

makefile就是一个命令脚本文件,接下来我们介绍如何使用他一个规则:目标:依赖(tab缩进)命令如下图所示,是一个最简单的Makefile脚本文件目标:就是最后要生成的文件的文件名依赖:就是生成可执行文件的源文件下一行先起一个tab,之后输入正常情况下我们要在终端输入的命令假如我们按照如上所示命令,进行多个源文件的联合编译,从而生成可执行文件a.out。

2024-03-10 11:03:29 854

原创 算法考前必看

如果计算过程中出现int越界,那么就需要在等号右边计算的时候就加上(long long),之后看运算结果能不能回到int范围,如果回不到,那么等号右边的变量也要用long long 类型来接收,要是可以回到int,那么就可以使用int(建议都改为long long,因为算法对空间很宽松)比较时尽可能用乘法,可以移项的移项。

2024-03-02 21:54:05 386

原创 算法--时空复杂度分析以及各个数据量对应的可使用的算法(C++;1s内)

这里写目录标题由数据范围反推算法时间复杂度以及算法内容一级目录二级目录二级目录二级目录一级目录二级目录二级目录二级目录一级目录二级目录二级目录二级目录一级目录二级目录二级目录二级目录由数据范围反推算法时间复杂度以及算法内容一级目录二级目录二级目录二级目录一级目录二级目录二级目录二级目录一级目录二级目录二级目录二级目录一级目录二级目录二级目录二级目录

2024-02-28 20:56:44 363

原创 算法--动态规划(线性DP、区间DP)

从顶部出发,可以向左下或者右下移动,最后形成一条路径,找到一条路径使得路径上的数字之和最大例如这样一个序列,最长子序列就是 1 2 5 6,长度最长是4。

2024-02-27 21:32:03 916

原创 算法--贪心

之后,对于第二点,要证明ans >= cnt ,那么就要证明ans >= cnt的最大值,而cnt的最大值就是所有的区间都没有重复点(如下图),那么根据我们的推演算法,每个区间都要选中一点,且每个区间有且只选一点,那么在这种产生最大值的区间排列情况下,我们的推演算法是最小值,所以,ans 只能 >= ant。排完序后,定义res=0,用来存储答案,ed=-2e9,-2e9表示负无穷,ed是用来表示当前所选中的点,(注意,当前所选中的点只会保留最新的点,其他点如果被刷下去,会用res++存储,所以是合理的)

2024-02-26 20:28:13 916

原创 机器学习基础

机器学习主要类型是监督式学习和无监督式学习而监督式学习是机器学习应用最多的类型通过上面三个图可以得出,监督式机器学习,就是,首先你有一个学习算法,之后你提供这个学习算法许多带有正确答案的案例,以便算法进行学习,在大量的学习之后,你再次输入一个合理的输入,算法会给出一个合理的预测或者输出监督学习分为两类,回归式和分类式,回归式是从一个数字范围中预测可能得输出(即从无限多个可能的结果中预测出可能的结果)

2024-02-23 22:47:17 1186

原创 算法--动态规划(背包问题)

假设我们有N个物品,我们的背包的体积是V,N个物品每个物品有两个属性,分别是v体积、和w价值,或者说权重,每个物品要么不选,如果选的话,只能选一次我们的目标是:要选出一些物品,在总体积能装的下的情况下(不一定必须装满),争取价值之和最大化完全背包问题,是每个物品有无限个,每个物品都可以选无限次多重背包问题,是每个物品的个数不一样,也就是每个物品的可选次数不一样。

2024-02-21 19:22:34 926

原创 深度学习图像处理基础

人对亮度的差异的分辨能力存在极限。

2024-02-20 23:18:15 906

原创 代码编写规范

如果我们要对一个函数进行定义,之后要表明该函数的作用,可以在函数头上进行注释,注释时要用到三行,如上图所示,在第二行的星号后面加空格之后写注释,最后要以句号结束。第三行之后,都要在星号后面空格之后,加上@param,表示参数的意思,之后空格,写上参数,之后再空格,写上参数的注释(注意,最后要保证注释的汉字是对齐的)对于if、else以及for循环等其他语句,如果其管辖的代码只有一行,那么他的大括号可以省略,但是,不管有几行,都不要省略。而对于一些逻辑语句,则要在逻辑词之后加一个空格,即括号前加一个空格。

2024-02-20 17:21:02 883

原创 python入门----面向对象、文件、异常

class 空格 类名 冒号类名常使用大驼峰命名法definit(self, 参数):self.属性=参数构造函数的定义,有几个特殊的地方,首先,他的名字就叫_init_, 其次他有一个默认参数是self,效果就是c++中的this指针,下面属性的赋值都要用到this指针注意 init前后一共四个下划线而创建类的对象时,使用类名+括号,里面传入构造函数的参数仍然是def 方法名 (self,其他参数)其中第一个方法,输出时可以对字符串进行乘法运算。

2024-02-19 18:25:35 373

原创 python入门----基础

定义变量时,无需规定其类型,直接就是变量名=变量值,如下。

2024-02-18 17:15:22 840

原创 算法--数论二

这个算法可以以n的三次方的时间复杂度来求一个线性方程组的解(即x1,x2,x3,…但是同时要注意,方程组的解有三种情况,上图。

2024-02-16 21:19:42 449 1

原创 算法--数论一

从定义出发,判断是否为质数1、小于2的数,统一返回false2、遍历 i 从2到小于n(即除去1和n)判断是否有n % i == 0 的,表示这中间有i可以整除,如果有,返回false最后返回true。

2024-01-31 12:31:01 810

原创 MongDB、Redis、C++跨平台编译

1、介于关系型数据库与非关系型数据库的中间产品,用来存储文件文档2、存储格式是json(json可以看成一个类的对象,所以有一点关系型数据库的意思)3、优点:速度快支持分片(可以实现备份)比较灵活,非结构化的数据库(不像mysql一样有表结构),他的结构随便自定义本身支持分布式4、局限性:不支持常连接(没有连接池的概念)数据大小有限制(对文档有限制)不能无限嵌套5、适用场景所存储的文件格式变化灵活存储爬虫爬取出来的数据运维监控。

2024-01-18 15:48:34 132

原创 项目框架、领域模型与接口

2、数据库、服务器等连接参数通过启动参数去设置(见自述文件1的cmake设置启动参数)1、所有的cpp文件都要先包含预编译标头 stdafx.h。见自述文件1中的 关键代码模块。见视频1:07:00之前。视频1:07:00之后。

2024-01-13 16:57:30 131

原创 Websocket、消息中间件、分布式事务管理

同时,Websocket还可以指定发送到某一个客户端或者发送到全部的客户端。如果一个项目需要有“接收通知”功能点,那么大概率会用到Websocket。而无法实时接收到服务器的通知,所以就产生了Websocket。一般我们使用的http协议,他只能从客户端向服务器发送消息。见视频0:44:00-1:19:37。

2024-01-13 14:57:50 108

原创 声明式服务、文件存储、报表

如果说 客户端(浏览器)将请求发给服务器,服务器收到请求之后,将数据文件存储到自己的磁盘上,那么如果有其他服务模块要查询数据的时候,就要去那个服务器上获取数据,这样服务之间就不是独立的,程序的健壮性以及效率受到影响,同时,如果那边是个服务器集群,那么就更加不好找到数据了,存在这样的问题,需要改善。然后调用相应的方法,同样可以点进去看详细介绍,其中上传到fsatdfs的文件所在位置不同,分为了不同的方法,一般使用“接收前端发送过来的文件”上传到fsatdfs 的这种方法。分为有配置的方式、无配置的方式。

2024-01-12 11:23:26 239

原创 MySQL--基础篇

数据库是数据的仓库,存储数据数据库管理系统,是一个大型软件,他操作着数据库,是人与数据库沟通的桥梁SQL,是数据库编程语言,通过他可以通过数据库管理系统操作数据库可以多行可以单行SQL语句可以使用空格/缩进来增强语句可读性不区分大小写注释:–单行注释/* */ 多行注释。

2024-01-06 21:03:09 1243 1

原创 C++内容补充--面向对象篇

只有一个类壳子的时候 类和对象的大小都是1当类中只有一个int数据的时候类和对象的大小都是4当类中有int数据以及一个静态变量的时候类和对象的大小还是4。

2024-01-06 16:09:39 1047

原创 C++补充内容--EasyX-UI界面

当我们绘制一张图 然后另一张图盖住前一张图的某个部分的时候 由于while的存在 会导致 两张图不停的闪烁 所以加入双缓冲可以解决这个问题开启双缓冲 之后等待Flush或者End 才会进行图片的绘制 不然不会进行图片的绘制,这样就可以保证每次while的执行 都是以一整套为单位进行的 执行到双缓冲状态结束或者flush 才将之前的内容同时绘制 也就是蓝色和白色同时绘制(这样虽然每次都在循环绘制 但是每一次绘制的效果一样 就不会出现闪烁) 而不是蓝色先绘制 之后白色再绘制有以下两种方式注意::

2024-01-06 16:06:06 1051

原创 C++补充内容--语法篇

宏定义最后端不可以加分号1、引用做函数参数 实际上就是变量的别名 传入一个实参 而形参是引用类型 那么在函数体内外 就建立了实时联系2、因为引用类型与外面的实参有实时联系 所以在数据结构里 常常认为引用类型的功能也有返回的作用。

2024-01-06 16:04:18 1450

原创 静态库与动态库

静态库:(如上图左),他的库跟随源文件一起编译到了可执行程序中,所以连接静态库的源文件编译出来的的可执行文件的大小是程序本身的大小+静态库的大小动态库:(如上图右),他的库不跟随源文件一起编译,而是放在内存中,程序调用时直接从内存调用,其他程序都调用同一个动态库,所以连接动态库的源文件编译出来的可执行文件大小是程序本身的大小(不用加“所调用的函数的那一点点大小”,因为调用函数语句就包含在程序中)

2024-01-03 12:12:54 493

原创 系统编程--gcc编译与gdb调试工具

以上是gcc编译的四步骤,每个步骤生成对应的文件。

2024-01-02 17:06:21 631

原创 系统编程--VIM特辑

注意:许多操作都是在命令模式下完成·,且操作完成之后,不会改变模式。需要注意的是,在末行模式下执行完一次命令,就可以直接回到命令模式。或者不想执行任何末行命令,直接两次ESC也可以回到命令模式。修正:gg 和 G 分别是跳转到整个文件的开头和末尾。具体可见第二章对vim的详细介绍。

2024-01-02 11:40:35 546

空空如也

空空如也

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

TA关注的人

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