自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 镀锌镀镍和镀铬

电镀就是利用电解原理在某些金属表面上镀上一薄层其它金属或合金的过程,是利用电解作用使金属或其它材料制件的表面附着一层金属膜的工艺从而起到防止金属氧化(如锈蚀),提高耐磨性、导电性、反光性、抗腐蚀性(硫酸铜等)及增进美观等作用。

2024-11-20 11:45:48 230

原创 Reinforcement-Learning 2.State Value and Bellman Equation

• St, At → St+1 is governed by p(St+1 = s′|St = s, At = a) 由state transition probability决定。在s-state下获得Rt+1的期望,即等于在s-state采取a-action的概率乘以在s-state,a-action下Rt+1的期望的和,即全概率公式。• St, At → Rt+1 is governed by p(Rt+1 = r|St = s, At = a) 由reward probability 决定。

2024-08-25 14:07:56 710

原创 Reinforcement-Learning 1.fundamental concept

机器人在网格世界行走有四种形式,Accessible/forbidden/target cells, boundary.提出一个任务,找到一个good的方式去到target什么是good,不碰到boundary不进入forbidden最短的道路进入target。

2024-08-24 18:23:09 872

原创 MySQL(十二) Connector/C

初始化mysql_init()要使用库,必须先进行初始化!如: MYSQL *mfp = mysql_init(NULL)初始化完毕之后,必须先链接数据库,在进行后续操作。(mysql网络部分是基于TCP/IP的)//建立好链接之后,获取英文没有问题,如果获取中文是乱码://设置链接的默认字符集是utf8,原始默认是latin1第一个参数 MYSQL是 C api中一个非常重要的变量(mysql_init的返回值),里面内存非常丰富,有port,dbname,charset等连接基本参数。

2024-05-30 19:44:35 937

原创 MySQL(十一) 用户管理

MySQL中的用户,都存储在系统数据库mysql的user表中user是个表结构。

2024-05-30 10:09:14 792

原创 MySQL(十) 视图

视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表,基表的数据变化也会影响到视图。

2024-05-30 10:08:36 360

原创 MySQL(九) 事务

事务就是一组DML语句组成,这些语句在逻辑上存在相关性,这一组DML语句要么全部成功,要么全部失败,是一个整体。MySQL提供一种机制,保证我们达到这样的效果。事务还规定不同的客户端看到的数据是不相同的。事务就是要做的或所做的事情,主要用于处理操作量大,复杂度高的数据。

2024-05-29 15:08:46 1155 2

原创 MySQL(八) 索引

如何理解硬盘如何理解柱面,磁道,扇区,磁头InnoDB 主键索引和普通索引MyISAM 主键索引和普通索引其他数据结构为何不能作为索引结构,尤其是B+和B聚簇索引 VS 非聚簇索引。

2024-05-29 15:08:21 643

原创 MySQL(七) 表的内连和外连

表的连接分为内连和外连。

2024-05-25 16:05:00 374

原创 MySQL(六) 复合查询

前面我们讲解的mysql表的查询都是对一张表进行查询,在实际开发中这远远不够。

2024-05-25 16:04:45 366

原创 MySQL(五) 内置函数

创建一张表,记录生日显示所有留言信息,发布日期只显示日期,不用显示时间请查询在2分钟内发布的帖子。

2024-05-24 18:41:30 249

转载 MySQL(四) 表的增删查改

CRUD : Create(创建), Retrieve(读取),Update(更新),Delete(删除)语法:案例:6.1.1 单行数据 + 全列插入6.1.2 多行数据 + 指定列插入6.1.3 插入否则更新由于 主键 或者 唯一键 对应的值已经存在而导致插入失败可以选择性的进行同步更新操作 语法:6.1.4 替换6.2 Retrieve语法:案例:6.2.1 SELECT 列6.2.1.1 全列查询6.2.1.2 指定列查询6.2.1.3 查询字段为表达式

2024-05-24 17:55:37 1692

原创 MySQL(三) 表的约束

真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的,从业务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。表的约束很多,这里主要介绍如下几个:。

2024-05-23 11:39:21 707

原创 MySQL(二) 数据类型

而且出于效率考虑,这些值实际存储的是“数字”,因为这些选项的每个选项值依次对应如下数字:1,2,3,…而且出于效率考虑,这些值实际存储的是“数字”,因为这些选项的每个选项值依次对应如下数字:1,2,4,8,16,32,…如果d被省略,默认没有小数点后面的数,如果m被省略,默认是10,小数点后也无。有一个调查表votes,需要调查人的喜好, 比如(登山,游泳,篮球,武术)中去选择(可以多选),(男,女)[单选]如果我们有这样的值,只存放0或1,这时可以定义bit(1)。

2024-05-23 11:38:07 993

原创 MySQL(一) 库和表的基础操作

存储数据用文件就可以了,为什么还要弄个数据库?

2024-05-21 11:29:30 1025

原创 Linux(十四) 线程池

一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。可用线程数量应该取决于可用的并发处理器、处理器内核、内存、网络sockets等的数量。

2024-05-21 11:29:12 519

原创 读写锁的使用

在编写多线程的时候,有一种情况是十分常见的。那就是,有些公共数据修改的机会比较少。相比较改写,它们读的机会反而高的多。通常而言,在读的过程中,往往伴随着查找的操作,中间耗时很长。给这种代码段加锁,会极大地降低我们程序的效率。那么有没有一种方法,可以专门处理这种多读少写的情况呢?有,那就是读写锁。

2024-05-17 17:24:17 302

原创 Linux(十三) 生产者消费者模型

比如有两个进程A和B,它们共享一个固定大小的缓冲区,A进程产生数据放入缓冲区,B进程从缓冲区中取出数据进行计算,那么这里其实就是一个生产者和消费者的模式,A相当于生产者,B相当于消费者。

2024-05-17 17:00:06 905

原创 Linux(十二) 线程同步

调用解锁之后,pthread_ cond_ wait之前,如果已经有其他线程获取到互斥量,摒弃条件满足,发送了信号,那么pthread_ cond_ wait将错过这个信号,可能会导致线程永远阻塞在这个pthread_ cond_ wait。等于,就把互斥量变成1(即解锁),直到cond_ wait返回,把条件量改成1,把互斥量恢复成原样(加锁)。例如一个线程访问队列时,发现队列为空,它只能等待,只到其它线程将一个节点添加到队列中。竞态条件:因为时序问题,而导致程序异常,我们称之为竞态条件。

2024-05-16 17:24:23 319

原创 Linux(十一) 线程互斥

为了实现互斥锁操作,大多数体系结构都提供了swap或exchange指令,该指令的作用是把寄存器和内存单元的数据相交换,由于只有一条指令,保证了原子性,即使是多处理器平台,访问内存的 总线周期也有先后,一个处理器上的交换指令执行时另一个处理器的交换指令只能等待总线周期。加锁之后,线程在临界区里,依然会被OS切换,但不会有问题,因为线程虽然被切换了,但是是持有锁被切换的,其他抢票的线程要执行临界区的代码必须先申请锁,但此时锁无法申请成功。为了保证锁的安全,锁的申请和释放必须是原子的。

2024-05-16 16:45:15 840

原创 Linux(十) 线程,线程控制

在Linux下,PCB

2024-05-15 13:58:13 1025 1

原创 Linux(九) 信号

输入命令,在Shell下启动一个前台进程。用户按下Ctrl+C,键盘输入产生一个硬件中断。如果CPU当前正在执行这个进程的代码,则该进程的用户空间代码暂停执行, CPU从用户态切换到内核态处理硬件中断。终端驱动程序将Ctrl+C解释成一个SIGINT信号,操作系统OS将其记在该进程的PCB中(也可以说发送了一个SIGINT信号给该进程)。

2024-05-15 13:57:49 1119

原创 Linux(八) 进程间通信

Linux 管道使用竖线 | 连接多个命令,这被称为管道符。以上这行代码就组成了一个管道,它的功能是将前一个命令(command1)的输出,作为后一个命令(command2)的输入,从这个功能描述中,我们可以看出管道中的数据只能单向流动,也就是半双工通信,如果想实现相互通信(全双工通信),我们需要创建两个管道才行。另外,通过管道符 | 创建的管道是匿名管道,用完了就会被自动销毁。并且,匿名管道只能在具有亲缘关系(父子进程)的进程间使用。也就是说,匿名管道只能用于父子进程之间的通信。

2024-05-11 18:56:10 1160 3

原创 Linux(七) 动静态库

的时候才去链接动态库的代码,在可执行程序装载或运行时,由操作系统的装载程序加载库,多个程序共享使用库的代码。命令查看可执行程序的依赖库,动态链接生成的可执行程序才有依赖库,静态链接升序的可执行程序不依赖任何库文件,因为库文件的代码已经复制进可执行程序了。上面这两个步骤其实就把静态库打包好了,下面我们还有做一个工作就是发布静态库,简单地说,就是把头文件和静态库组织起来,头文件放在。可以看到的是,使用静态库静态链接成的可执行程序比动态链接生成的可执行程序要大很多。: Linux下,以.so为后缀的文件。

2024-05-11 18:56:03 975 2

原创 Linux(六)文件系统

这样一个数据块连着一个数据块,从链头开始就可以顺着指针找到所有的数据块,所以存放的方式可以是不连续的。隐式链表的存放方式的。

2024-05-06 22:38:18 717

原创 Linux(五) 进程控制

WIFEXITED(status) 检查子进程是否退出,返回一个非零值表示进程正常退出,否则返回0这个宏会检查status中的低 8 位,如果为 0 则表示子进程正常退出。使用这个宏可以方便地判断子进程的退出状态,而无需直接操作status。WEXITSTATUS(status)用于获取子进程的退出状态码WIFSIGNALED(status)用于检查子进程是否因为信号终止的宏这个宏会检查status。

2024-03-24 21:58:04 2016 1

原创 Linux(四) 进程

任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括:内核(进程管理,内存管理,文件管理,驱动管理)其他程序(例如函数库, shell程序等等)感性的理解:操作系统是一个搞管理的软件例如:管理进程,管理硬件(将显卡、键盘、显示器抽象成一个个文件),管理文件那么操作系统是怎么管理的呢?先描述再组织内核观点:担当分配系统资源(CPU时间,内存)的实体。当可执行程序从磁盘加载到内存就成为了进程即正在执行程序,或在等待队列中的程序。

2024-03-19 09:03:16 1840 1

原创 Linux(三) Linux基础开发工具的使用

版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。简单来说就是用于管理多人协同开发项目的技术。

2024-03-18 12:19:29 402 1

原创 make和makefile(Makefile) + ACM时间

make是一个命令makefile(Makefile)则是一个文件。

2024-03-18 11:07:50 330 1

原创 Linux gcc编译器默认C99标准编译

可以在bash配置文件(如.bashrc或.bash_profile)中设置一个别名来简化编译命令。第四步、需要重新加载该文件令该文件生效。之后再使用gcc命令进行编译时就是默认c99标准了。可以使用如下代码查询你的gcc编译器默认标准。如果没查到,则默认支持的是 C89 标准。,则默认支持的是 C99 标准;,则默认支持的是 C11 标准;,则默认支持的是 C17 标准;因为gcc默认c89版本编译。第二步、在文件中添加别名。第一步、打开配置文件。

2024-02-29 20:04:09 3101 1

原创 Linux(二) 权限

权限是针对人的,事物的基本属性决定权限的相关概念即人是否可以读写执行一个文件权限的核心:人+事物属性。

2024-02-29 19:28:38 337 1

原创 Linux(一) 操作指令

Access time (atime):当我们访问该文件时,就会更新这个时间为最后一次访问该文件的时间。Change time (ctime):当该文件的『状态 (status)』改变时,就会更新这个时间,举例来说, 像是文件权限、属性、inode号等被更改了,都会更新这个时间。Modification time (mtime):当该文件的『内容数据』变更时,就会更新这个时间!zip name.zip xxx -r #将目录里所有文件或目录压缩,不加-r只能压缩xxx。>>:追加重定向(追加式的写入)

2024-02-29 16:31:44 1415 1

原创 C语言实现扫雷

第一步需要打印一个雷盘,初步定为9×9。第二步需要初始化棋盘内容第三步随机在雷盘里布置十颗雷第四步扫雷结束后,在格子中显示周围九个格子里有多少雷。

2023-09-03 18:56:21 78

原创 STM32 USART 代码部分

【代码】STM32 USART 代码部分。

2023-09-03 13:06:04 149

原创 用c语言实现库函数

模拟实现strstr模拟实现strcat模拟实现strcmp模拟实现strcpy3种方法实现strlen

2023-08-31 14:49:02 398 1

原创 c语言实现通讯录-结构体的运用

1.保存1000个联系人的信息2.增加联系人3.删除联系人4.修改联系人5.查找联系人6.排序7.打印其中一个人的信息包括:名字 性别 年龄 电话 住址。

2023-08-15 20:52:31 354 1

原创 C语言小游戏 - 三子棋的实现

本文使用模块化编程,可以更加清晰明了,分了三个文件,两个.c文件,一个.h文件将不同的功能封装在不同的函数,这种习惯方便以后开发大项目时分工更明确,别人可以更容易的去使用你的函数。游戏思路:进入游戏后,先显示一次菜单界面,选择是否进入游戏,选择离开则终止游戏结束程序,选择进入则开始游戏。在游戏环节需要先显示棋盘格,然后玩家先下棋,电脑后下棋,当一方三个棋子连成一条直线该方胜利,当下满是也没有一方连成直线,平局。此时可以再次选择是否进入游戏。判断输赢那里写的不是很完美,以后学的更好了再改。

2023-06-02 13:30:10 62

原创 STM32 USART串口外设

双工就是既可以从A到B,也可以从B到A ,全双工就是有两根数据线可以同时实现从A到B和从B到A。异步就是没有时钟线,需要通信双方有相同波特率。电平:单端则是与地比较,这种电平模式通常通讯双方需要接同一根地线。差分则是两根线相比较。

2023-05-10 16:51:22 292 1

原创 STM32定时器(二)

6.荣一个定时器不同通道输出的PWM,由于共用一个计数器,所以PWM频率是一样的,可以修改各自CCR的值修改占空比,相位也相同,由于更新PWM同时跳变。分辨率越小变化越细腻。CCR的值取决于ARR+1,CCR取值范围越广越好。5.舵机的PWM相当于通信协议,与占空比什么的关系不大。不需要上一节的中断申请,输出PWM不需要申请中断。CC1P给0,信号从上走,给1信号取反从下走。PWM频率等于计数器溢出频率。这两个地方都可以配置极性。

2023-05-09 14:19:09 336 1

原创 STM32 定时器(一)

中断函数需要在startup里找,函数名是固定的,例如TIM2_IRQHandler,中断来了会自动调中断函数,函数里只需要查询和清除标志位。中断信号会在状态寄存器里置一个中断标志位,这个标志位会通过中断输出控制到NVIC申请中断,(向上的箭头都是要申请中断),中断输出控制使用。滤波器工作方式为在一个固定的频率f下进行采样(f越小,采样时间越长),如果连续采取N个点都为相同电平,则代表输入信号稳定。的功能),并额外具有内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等功能。

2023-05-06 22:24:37 532 1

空空如也

空空如也

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

TA关注的人

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