- 博客(48)
- 收藏
- 关注
原创 Spring
IOC:控制反转,其核心思想是将对象的创建和依赖关系的管理交给Spring框架来处理,而不是在对象内部进行。这样做的好处是降低了对象之间的耦合度,提高了代码的可维护性和可扩展性。AOP:面向切面,其允许开发者在不修改源代码的情况下,将横切关注点(如日志、事务管理等)从业务逻辑中分离出来。这种分离使得代码更加模块化,提高了代码的可维护性和可扩展性。
2025-02-23 12:15:09
867
原创 王者农药更新版
1.配置GPIO,所以RCC开启APB2时钟2.GPIO初始化(结构体)3.给GPIO引脚设置高/低电平(WriteBit)
2024-10-05 16:49:49
4884
5
原创 STM32
四个主动单元:DCode(数据总线)、DMA1、DMA2、系统总线四个被动单元:SRAM、Flash、FSMC(存储控制器)、AHB到APB的桥。
2024-09-27 00:19:28
1301
原创 模电(硬件)
当给三极管的发射结加上正向电压,同时给集电结加上反向电压时,发射区的多数载流子(电子或空穴)会扩散到基区,并在基区与从电源来的少数载流子复合,然后基区中的多数载流子会扩散到集电区,形成集电极电流。这个过程中,基极电流的变化会控制集电极电流的变化,从而实现电流的放大。4.场效应管:栅极、漏极、源极。11.555定时器:它是一种应用方便的中规模集成电路,为它是3个5KQ电阻分压,所以被叫做555定时器,应用:信号的产生、变换、控制与检测,55定时器具有灵活的应用,可以用作定时器、脉冲发生器、计数器、振荡器等。
2024-09-22 17:57:28
330
原创 常见单片机
STM32单片机由ST厂商推出的STM32系列单片机,行业的朋友都知道,这是一款性价比超高的系列单片机,应该没有之一,功能及其强大。其基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARMCortex-M内核,同时具有一流的外设:1μs的双12位ADC,4兆位/秒的UART,18兆位/秒的SPI等等,在功耗和集成度方面也有不俗的表现,当然和MSP430的功耗比起来是稍微逊色的一些,但这并不影响工程师们对它的热捧程度,由于其简单的结构和易用的工具再配合其强大的功能在行业中赫赫有名…
2024-09-22 14:12:05
1759
原创 51单片机——矩阵键盘
所以我们如果要选择第四列,只需要把整个P1先给高电位1,再把P10给低电位0。当按下4号按钮时,P17这一行低电位0,延迟防抖,松开后防抖。先把P1给高电位,再把P10给低电位。P17,P16,P15,P14控制行,P13,P12,P11,P10控制列。
2024-09-22 11:50:44
1026
1
原创 51单片机——数码管
由图可以看出,这个一个138译码器,我们通过控制P22,P23,P24进而控制8个LED。例如要让第三个数码管LED6亮,LED6对应Y5,5的二进制是101,所以让P22=1,P23=0,P24=1。我们可以发现每个数码管都有a,b,c,d...,正好对应下面8条线a,b,c,d...,而a,b,c,d...又对应左边P00,P01...例如要控制第三个数码管,就让LED6为0,其他为1,那LED又接到哪呢?通过一二,我们可以选择哪个数码管,现在要控制选择的数码管的显示。cd亮,对应P02,P03=1。
2024-09-22 11:26:58
1028
原创 51单片机——独立按键
独立按键按下时是有抖动的,为了防止抖动产生影响,所以给按键加上延迟。因为P20之前默认是1(高电平),通过取反,实现P20由高电平转为低电平,P20灯变亮。再次执行后,再加一,变为0000 0011,赋值给P2,使P20和P21亮。再次执行后,再加一,变为0000 0010,赋值给P2,使P21亮。松开按键后,加一,变为0000 0001,赋值给P2,使P20亮。当按键为0时,代表按下,所以当P30按下时,让P20=0(亮)当P31不等于0时,代表松开了,产生抖动,延迟20ms。如果不松,陷入死循环。
2024-09-22 02:01:41
963
原创 51单片机——LED灯篇
Delay500ms这个函数是延时函数,先让P20灯亮,延迟500ms后,再让它灭,即可实现闪烁效果。LED灯右侧接电源是正极(1),左侧给负极(0)即可点亮。再让P21亮(其他都灭),再延时500ms,先让P20亮(其他都灭),延时500ms,P2有8个管脚,对应8个二进制位。一、LED与单片机P2管脚相连。二、点亮一个LED灯。三、一个LED灯闪烁。
2024-09-22 01:26:07
968
原创 Linux(ubuntu)(文件IO——fopen)
rm./$@=rm ./fopen_test,代表删除fopen_test文件。./$@=./fopen_test,代表执行fopen_test文件。r+读写(文件必须存在),w+读写(文件可以不存在),a+读追加写。目标是把fopen_test.c编译成fopen_test文件。其中,访问模式有:r w a r+ w+ a+新建文件:fopen_test.c文件,并输入。$^=fopen_test.c(依赖)$@=fopen_test(目标),-代表不报错,$(CC)=gcc,如果报错会返回NULL。
2024-09-21 01:02:30
538
原创 Linux(ubuntu)Makefile
假设我们没有main.i main.o helloworld.i helloworld.o等文件,我们可以直接从main.c和helloworld.c自动推导到main,并生成main.i这些文件。只能用终端,我们可以用gcc,但是很不方便。在Makefile输入以上代码后,在下面终端输入make clean就可以把main.o和hello.o文件删除。在Makefile输入以上代码后,在下面终端输入make就可以创造make文件。clean就是系统一个伪目标,没有这个文件,但是能清除文件。
2024-09-20 23:40:13
704
原创 Linux(Ubuntu)(终端实现helloworld输出)
1.写好helloworld.h,helloworld.c,main.c后,打开终端,切换到保存这些文件的文件夹的目录,我把这些文件存放在helloworld的文件夹下,所以输入cd ~/helloworld。其中gcc -E代表预处理,第一句话就是预处理helloworld.c文件,然后输出到helloworld.i文件。静态链接:gcc -static main.o helloworld.o -o main。动态链接:gcc main.o helloworld.o -o main(默认动态链接)
2024-09-19 01:45:13
762
原创 Linux(ubuntu)(c语言程序)
解决方法:左侧点击.vscode,点击tasks.json,其中${file}这句话代表一个c文件,在这句话前面加上//进行注释,往后添加"*.c",(记得加引号和逗号)。11.最后补充一句,每次写完一个代码都需要保存,helloworld.h,helloworld.c,main.c都需要保存(ctrl+s),最后执行,执行结果在下面终端上显示。#define __HELLOWORLD_H_ //如果__HELLOWORLD_H_没有被宏定义过,定义__HELLOWORLD_H_9.在main.c中输入。
2024-09-19 01:06:52
278
原创 Linux(ubuntu)(C语言开发-下载篇)
点击左下角显示应用程序,找到软件更新器,点击设置,点击Ubuntu软件,找到下载至,点击其他,找到mirrors.aliyun.com,确认之后再在终端执行sudo apt install gcc即可。而gcc相当于编译器,能把vscode写的语言编译成二进制语言,供计算机识别,所以还需要下载gcc。可以先不输入--classic,会显示有风险,有风险很正常,系统会要求你加上--classoc。snap代表软件商城,install代表下载,code代表vscode。1.gcc使用的是apt下载,直接使用。
2024-09-19 00:28:42
432
原创 Linux系统(Ubuntu)(下载篇)
5.进入虚拟机之后,默认Try or install ubuntu,回车。3.点击使用ISO映像文件,找到刚才下载的Ubuntu,点击确定。7.根据自己电脑配置处理机和内核,我配置的是4处理机,2内核。9.输入用户名,密码再继续,再继续后会加载,加载后重新启动。1.创建好虚拟机后,不要直接开启,先点击编辑虚拟机设置。6.加载完后,向下找中文简体,再点击安装 ubuntu。VMware可以去官网下载,也可以看教程,教程很多。13.根据需要,默认20,将虚拟磁盘拆分成多个文件。4.选稍后安装操作系统,下一步。
2024-09-18 11:34:20
934
原创 操作系统第一章
解析:命令解释程序属于命令接口,用户在使用电脑时,win+r,输入cmd,输入命令,电脑做出回应,这就属于命令解释,所以可以在用户态下完成。发生缺页和缺页处理是不一样的,在执行一条指令时,如果发生缺页,需要把cpu转到操作系统,进行缺页处理,所以属于内核态。用户态,内核态,系统调用:在计算机设计时,因为计算机的各种硬件资源是有限的,为了更好的管理这些资源,用户进程是不允许直接操作的,所有对这些资源的访问都必须由操作系统控制。一条指令在执行时,为了区分是用户进程的还是操作系统内核的,引入了用户态和内核态。
2024-09-17 00:53:48
404
原创 Linux7-su,exit,sudo
exit命令用来实习root用户到普通用户的切换,不需要密码。sudo用于将普通用户临时以root用户执行,需要给普通用户进行sudo认证。(1)切换为根目录和普通用户后,执行mkdir test。(2)在前面加上sudo,sudo mkdir test就能添加文件。(1)切换为root用户,只有root用户才能给普通用户认证。su命令用来进行普通用户到root用户的切换,需要输入密码。切换为root用户,执行visudo,删除最后一行。(4)切换为命令模式,再输入:wq保存退出。(2)visudo命令。
2024-09-16 01:28:16
365
原创 Linux6-vi/vim
(1)进入命令模式:vim 文件名,例如:vim test.txt,在当前文件夹下创建使用test.txt文件。(2)进入插入模式:只能从命令模式下进入,输入a/A,i/I,o/O进入插入模式。a:在当前光标的下一位开始编辑 A:在当前光标的行尾开始编辑。o:在当前光标的下一行开始编辑 O:在当前光标的上一行开始编辑。(4)进入底行模式:只能从命令模式下进入,例如输入:wq,还可输入。vi/vim有三种模式:命令模式,插入模式和底行模式。插入模式:可以对文件进行编辑,输入内容。
2024-09-16 00:44:05
602
原创 Linux5-echo,>,tail
选项-f,例如tail -f test.txt,实时跟踪(如果添加数据,这里立即显示,如果要退出追踪,按Ctrl+c)例如:echo "hello world",输出hello world。选项-num,例如tail -5 test.txt,查看末尾5行。echo 'pwd',输出pwd的位置。tail用于查看末尾内容,默认为末尾10行。echo是输出命令,类似printf。例如:tail test.txt。>指把左边内容覆盖到右边。>>把左边内容追加到右边。2.重定向符> >>
2024-09-15 22:36:10
722
原创 linux4-which,find,grep,wc,|
其中6表示行数(-l),221表示单词数(-w),1464表示字节数(-c)。(2)按大小搜索格式:find 起始位置 -size [+,-]n[k,M,G],其中+-表示大于小于,n代表数字,kMG表示单位。支持模糊搜索,例如:find / -name "test*",从根目录下查找名为test开头的文件。例如:grep "a*" test.txt,在test.txt文件中找包含a开头的内容的行。例如:find / -name "test",从根目录下查找名为test的文件。wc统计文件行数,单词数等。
2024-09-15 19:26:42
486
原创 Linux3-cp,mv,rm,*
复制文件:cp test1.txt test2.txt,把当前目录下的test1.txt文件复制一份到当前目录下,并命名为text.txt。例如cp -r test1 test2,把当前目录下的test1文件夹复制一份到当前目录下,并命名为text2。强制删除:选项-f(force),普通用户用不到,root用户使用,所以如果要使用需要先切换为root用户。(在test目录下)删除文件夹:带选项-r,例如rm -r test2。(在test1目录下)删除文件:rm test3.txt。
2024-09-15 18:15:28
398
原创 Linux2-mkdir,touch,cat,more
例如:cd /home/user/public和cd public效果一样,都是将目录切换到HOME文件夹下的public文件夹。more也是查看文件内容,但是与cat不同的是,more对于文件内容很多的情况,可以翻页查看,而cat一次性全部展示。选项-p创建连续多层级目录,例如:mkdir -p test/test1,在HOME下创建test/test1文件夹。touch用于创建文件,例如touch test.txt,默认在Home 下创建test.txt文件。如果要退出more的翻页,按q退出。
2024-09-15 15:30:06
412
原创 Linux1-ls,cd,pwd
h不可单独使用,一般以-lh表示,-l以列表展示的文件夹大小是比特为单位,-lh展示的文件夹大小有K,B等。pwd查看当前工作目录(当前完整目录),和windows完整地址差不多,默认/home/user。其中,[]里面的内容可省略,默认展示HOME目录下的内容[localhost ~]cd用来切换当前目录,默认为HOME目录[localhost ~]可以使用cd /切换到根目录[localhost /]ls表示显示文件夹内容,选项有l,a,h。/表示显示的是根目录文件夹的内容。命令 [选项] [参数]
2024-09-15 13:41:29
463
原创 C语言——数组,指针,指针数组,数组指针
计算机在保存数据时,把数据放在一个个存储单元中,存储单元可以理解为一个个小房间。地址就是存储单元(小房间)的房间号,且这个房间号是唯一的。详细请学习计算机组成原理3.1。
2024-09-12 18:21:40
783
原创 信号与系统——定义与分类(1)
系统:是指若干相互关联的事物组合而成,具有特定功能的整体。换句话说就是,系统就是对输入信号进行加工和处理,将其转换为所需要的输出信号。例如:直播时,主播说出的声音为声信号,声信号通过电信号传播,电信号到你这里再变成声信号。通过这种形式,使我们即使离主播很远,也能通过手机或电脑听到主播的声音。这个转化的过程就是系统。
2024-08-26 21:22:08
1583
原创 计算机组成原理——3.3线,SRAM和SRAM区别
因为一段0.4ms,刷新0.1ms,所以先读写0.3ms,然后必须刷新0.1ms,就这样完成5轮。那么最后其实读写1ms,刷新1ms。集中刷新:因为每过2ms就必须刷新一次,2ms当一个周期,因为刷新需要0.5ms,集中刷新就是前1.5ms进行读写操作,最后0.5ms进行刷新,不进行读写操作。由二知道,刷新的意思是:DRAM用电容保存的信息,过一段时间不刷新,电容漏电,信息就没了,所以需要刷新。刷新的意思是:因为DRAM用电容保存的信息,过一段时间不刷新,电容漏电,信息就没了,所以需要刷新。
2024-08-14 18:17:19
729
原创 计算机组成原理——3.2多级存储结构
主存容量小但不是特别小,例如4GB。CPU访问时速度快,但没有特别快,例如64bit/s。价格贵,但不是特别贵。所以需要需要一些东西配合主存。于是有了外存和Cache。外存,例如硬盘,容量很大,例如256GB,价格便宜。但是速度很慢,例如5bit/sCache,容量很小,例如1GB,价格很高。但速度很快,例如128bit/s。所以形成两种层次,Cache-主存层次和主存-外存层次。前者解决CPU与主存速度不匹配问题,后者解决主存容量问题。
2024-08-14 17:18:50
314
原创 计算机组成原理——3.1存储器层次结构
1.1 按作用分类1.主存:又称内存,可以和外存、高速缓冲存储器(Cache)交换数据;CPU可对其直接访问,容量小、存取速度快、价格高2.辅存:又称外存,不能与CPU直接交换信息,存储容量大,存取速度慢,成本低3.高速缓冲存储器:简称Cache,位于主存和CPU之间,容量小,存取速度快,价格高1.2 按存取方式分类1.随机存储器(RAM):主要用作主存和Cache,分为SRAM(静态RAM)和DRAM(动态RAM),存储器的任何一个单元的内容都可以随机存取,且与存储时间无关,断电后内容丢失。
2024-08-08 22:49:09
337
原创 计算机组成原理——2.4浮点数运算
先以十进制的浮点数理解以下概念,例地球的质量是5.965*10的24次方千克基数:以几进制,基数就是几。地球的质量的基数就是10阶码E:几次方,阶码就是几。地球的质量的阶码就是24尾数M:小数点之后的数就是尾数。地球的质量的965就是尾数符号位S:表示正负,地球的质量的5是正5浮点数就是由这些元素组成,再举一个二进制的例子原码(有符号数)1.1001*2的32次方基数:2阶码E:32尾数M:1001符号位S:因为是一个有符号数,所以最高位是符号位,小数点前的1代表负号。
2024-08-07 17:09:24
376
原创 计算机组成原理——运算器ALU,移位操作
组合逻辑电路:其输出仅取决于当前输入组合,不依赖先前输出,不具备存储状态的能力时序逻辑电路:其输出不仅取决于当前输入,还取决于先前的输出,具备存储状态的能力。ALU作为运算器的核心部件,只有运算当前输入的能力,并没有存储的能力,所以属于组合逻辑电路。
2024-08-02 17:33:45
2531
原创 计算机组成原理——2.1位数扩展
原码、反码、补码、移码全是有符号数。以下全是4位的情况原码:0的表示有两种,取值范围是[-7,7]反码:0的表示有两种,取值范围是[-7,7]补码:0的表示为0000,取值范围是[-8,7],-8的表示为1000二进制的表示顺序1000,1001,1010,......,0000,0001,0010,......,0111移码:0的表示为1000,取值范围是[-8,7],-8的表示为0000。
2024-08-02 11:02:06
449
原创 计算机组成原理2.1——进制转换,有符号数与无符号数,原码、反码、补码、移码,真值与机器数
计算机组成原理第二章,考研,进制转换,有符号数与无符号数,原码、反码、补码、移码,真值与机器数
2024-07-31 17:52:45
1544
原创 计算机组成原理——1.3性能指标
指令序列二:20ns执行了5条指令=4ns执行1条指令。5.设编译器对高级语言的某条语句编译生成两种不同的指令序列,A,B,C三类指令的CPI和两种序列所含的三类指令条数如下,两条指令序列都在时钟周期为2ns的机器上运行,下列说法正确的是。早期的计算机中,机器字长,指令字长和存储字长是相等的,不过随着计算机的发展,三者是可变的(32位,64位),但必须是字节(8bit)的整数倍。CPU的执行时间:时钟周期数×时钟周期,因为CPI=时钟周期数/一条指令,所以CPU的执行时间=CPI×所有指令数×时钟周期。
2024-07-30 16:18:19
954
原创 计算机组成原理1.2
1.五大部分:输入设备,输出设备,主存储器,运算器,控制器2.冯诺依曼计算机:首次提出存储程序,以运算器为中心3.现代计算机:以存储器为中心,CPU=运算器+控制器4.运算器+控制器+存储器=主机。
2024-07-29 13:30:16
918
2
原创 python数据结构——查找方法
把一个列表排好序,取出中间值和要查找的值比较,如果中间值大,那么要找的值就一定在中间值左边。如果中间值小,那么要找的值就一定在中间值右边。如果相等,中间值就是要找的值。不断缩小查找范围,直到找到。
2024-02-05 16:16:07
541
1
原创 python——spark使用
Spark使用Scala语言进行实现,能操作分布式数据集。Spark是在借鉴了MapReduce之上发展而来的,继承了其分布式并行计算的优点并改进了MapReduce明显的缺陷。Spark的适用场景:1. 复杂的批量处理(Batch Data Processing),偏重点在于处理海量数据的能力,至于处理速度可忍受,通常的时间可能是在数十分钟到数小时;2. 基于历史数据的交互式查询(Interactive Query),通常的时间在数十秒到数十分钟之间。
2024-02-04 17:11:34
3048
2
原创 MongoDB数据库
1.1应用场景数据量大,写入操作频繁,价值密度低。1.2体系结构关系型数据库:数据库,表,行mongodb数据库:数据库,集合,文档。
2024-01-24 20:12:45
1219
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人