- 博客(43)
- 收藏
- 关注
原创 Spring-狂神说
视频链接:https://www.bilibili.com/video/BV1WE411d7Dv?spm_id_from=333.788.videopod.episodes&vd_source=0faa2381e3249b7581543247dcfa1e31官网:https://spring.io/projects/spring-framework#overview官方下载地址: http://repo.spring.io/release/org/springframework/spring官方文档:h
2025-07-24 20:43:11
934
原创 Mybatis-狂神说
参考视频:环境:https://www.bilibili.com/video/BV1NE411Q7Nx?spm_id_from=333.788.videopod.episodes&vd_source=0faa2381e3249b7581543247dcfa1e31回顾:SSM框架:配置文件的。 最好的方式:看官网文档;MyBatis 是一款优秀的持久层框架。它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的
2025-07-16 10:42:08
648
原创 JavaWeb-狂神说
web开发:web应用程序:可以提供浏览器访问的程序。页面会动态展示: “Web的页面展示的效果因人而异”;缺点:假如服务器的动态web资源出现了错误,需要重新编写后台程序,重新发布;优点:微软:国内最早流行的就是ASP;在HTML中嵌入了VB的脚本, ASP + COM;在ASP开发中,基本一个页面都有几千行的业务代码,页面极其混乱,维护成本高!C#IISPHP开发速度很快,功能很强大,跨平台,代码很简单 (70% , WP)无法承载大访问量的情况(局限性)B/S:浏览和服务器C/S:
2025-07-09 00:41:52
621
原创 MySQL-狂神说
视频链接:https://www.bilibili.com/video/BV1NJ411J79W/?spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=0faa2381e3249b7581543247dcfa1e31JavaEE:企业级Java开发、Web关系型数据库:(SQL)非关系型数据库(NoSQL)not onlyDBMS(数据库管理系统)为什么要说这个呢?概念 : 是现在流行的开源的,免费的 关系型数据
2025-07-04 18:02:38
501
原创 Vue-狂神说
MVVM(Model-View-ViewModel)是一种软件架构设计模式,由微软 WPF(用于替代 WinForm,以前就是用这个技术开发桌面应用程序的)和 Silverlight(类似于 Java Applet,简单点说就是在浏览器上运行的 WPF) 的架构师 Ken Cooper 和 Ted Peters 开发,是一种简化用户界面的事件驱动编程方式。由 John Gossman(同样也是 WPF 和 Silverlight 的架构师)于 2005 年在他的博客上发表。
2025-06-24 11:51:46
666
原创 JavaScript笔记-狂神说
JavaScript是一门世界上最流行的脚本语言。一个合格的后端人员,必须要精通JavaScript定义方式一绝对值函数return x;一旦执行到 return 代表函数结束,返回结果!如果没有执行return,函数执行完也会返回结果,结果就是undefined定义方式二return x;function(x) {...} 这是一个匿名函数。但是可以把结果赋值给 abs,通过 abs 就可以调用函数!
2025-06-20 00:29:33
894
原创 前后端分离开发 和 前端工程化
来源:黑马程序员JavaWeb开发教程,实现javaweb企业开发全流程(涵盖Spring+MyBatis+SpringMVC+SpringBoot等)_哔哩哔哩_bilibili前后端混合开发:需要使用前端的技术栈开发前端的功能,又需要使用Java的技术栈编写后端的实现,还需要操作数据库。前后端分离开发:当前最为主流的开发模式:前后端分离。将项目拆成两个部分:一个为前端工程,一个为后端工程。两者之间需要交互:为了能正常的交互,在开发的时候必须遵循接口文档。介绍:YApi 是高效、易用、功能强大的 api
2025-06-08 23:25:25
978
原创 Ajax入门
概念:Asynchronous JavaScript And XML,异步的JavaScript和XML。作用:数据交换:通过Ajax可以给服务器发送请求,并获取服务器响应的数据。异步交互:可以在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术,如:搜索联想、用户名是否可用的校验等等。同步与异步:同步:在服务器处理数据的过程,客户端浏览器一直处于等待状态,直到服务器处理完毕,响应数据给客户端,客户端才能继续执行其他操作。
2025-06-08 10:12:40
988
原创 JavaScript
定义格式var 对象名 = {属性名1: 属性值1,属性名2: 属性值2,属性名3: 属性值3,函数名称: function(形参列表){}age:20,alert("用膳~");// 这个形式也可以// eat(){// alert("用膳~");// }调用格式// 对象名.属性名;// 对象名.函数名();user.eat();概念:JavaScript Object Notation,JavaScript对象标记法。
2025-06-06 01:05:21
1034
原创 SPI通信
W25Qxx系列是一种低成本、小型化、使用简单的非易失性存储器,常应用于数据存储、字库存储、固件程序存储等场景存储介质:Nor Flash(闪存)时钟频率:80MHz / 160MHz (Dual SPI) / 320MHz(Quad SPI)存储容量(24位地址):W25Q40W25Q80W25Q16W25Q32W25Q64W25Q128W25Q256硬件电路。
2024-10-14 11:23:43
1151
原创 USART串口数据包
大量字符可以作为包头包尾,有效地避免了包头包尾和载荷数据重复的问题。如果载荷数据和包头包尾会出现重复的情况,就选择固定包长。包头为0xFF,包尾为0xFE。
2024-10-09 17:32:03
673
原创 USART串口协议
也是类似的,数据从RX引脚通向接收移位寄存器,在接收器控制的驱动下,一位一位地读取RX电平,先放在最高位,然后向右移,移位八次之后,就能接收一个字节了。然后接收部分也是类似的,RX引脚的波形,通过GPIO输入,在接收控制器的控制下,一位一位地移入接收移位寄存器,移完一帧数据后,数据就会统一转运到接收数据寄存器,在转移的同时,置一个RXNE标志位,检查这个标志位就可以知道是不是收到数据了,同时这个标志位也可以去申请中断,这样就可以在收到数据时,直接进入中断函数,然后快速地读取和保存数据。为低电平,低位先行。
2024-10-07 22:40:45
1272
原创 DMA直接存储器存取
DMA)直接存储器存取DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输,无须CPU干预,节省了CPU的资源12个独立可配置的通道:DMA1(7个通道),DMA2(5个通道)每个通道都支持软件触发和特定的硬件触发存储器到存储器的转运:一般使用软件触发外设到存储器的数据转运:一般使用硬件触发STM32F103C8T6 DMA资源:DMA1(7个通道)
2024-10-06 10:00:36
1171
原创 ADC模数转换器
模拟数字转换器ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁12位逐次逼近型ADC,1us转换时间输入电压范围:0~3.3V,转换结果范围:0~409518个输入通道,可测量16个外部和2个内部信号源规则组和注入组两个转换单元模拟看门狗自动监测输入电压范围STM32F103C8T6 ADC资源:ADC1、ADC2、10个外部输入通道。
2024-10-03 12:06:52
2793
原创 TIM输入捕获
IC(Input Capture) 输入捕获输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存到CCR中,可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数。一旦有边沿,比如上升沿,那输入滤波和边沿检测电路就会检测到这个上升沿,让输入捕获产生动作,让CNT的值锁存到CCR中。(这一块的作用和外部中断差不多,都是检测电平跳变,然后执行动作,只是中断的动作是向CPU申请中断)每个高级定时器和通用定时器都拥有4个输入捕获通道。可配置为PWMI模式,同时测量频率和占空比。
2024-10-01 23:40:32
2286
原创 PWM驱动LED呼吸灯
配置PA0引脚,对于普通的开漏/推挽输出,引脚的控制权是来自于输出数据寄存器的,如果想让定时器控制引脚,就需要使用复用开漏/推挽输出的模式。复用开漏/推挽输出,这里输出数据寄存器将被断开,输出控制权转移给片上外设。TIM2的通道1引脚复用在了PA0引脚。
2024-10-01 16:27:22
410
原创 TIM输出比较
PWM脉冲宽度调制在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常应用于电机控速等领域。PWM参数:频率=1/Ts 占空比=Ton/Ts 分辨率=占空比变化步距。
2024-10-01 09:37:24
736
原创 定时器定时中断&定时器外部中断
在每次复位时,发现值都是从1开始的,我们发现在TIM_TimeBaseInit()函数内部,最后会生成一个更新事件,来重装装载预分频器和重复计数器的值。因为预分频器是有个缓冲寄存器的,写入的值只有在更新事件时才会真正起作用,所以为了让值立刻起作用,就在这最后,手动生成了一个更新事件。但是由于更新事件和更新中断是同时发生的,更新中断会置更新中断标志位,当我们之后一旦初始化完了,更新中断就会立刻进入。解决的方法:在TIM_TimeBaseInit()函数的后面,手动调用一下TIM_ClearFlag()函数。
2024-09-30 19:34:06
925
原创 TIM定时中断
基本定时器(APB1):TIM6、TIM7拥有定时中断、主模式触发DAC的功能。通用定时器(APB1):TIM2、TIM3、TIM4、TIM5拥有基本定时器全部功能,并额外具有内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等功能。高级定时器(APB2):TIM1、TIM8拥有通用定时器全部功能,并额外具有重复计数器、死区生成、互补输出、刹车输入等功能。STM32F103C8T6定时器资源:TIM1、TIM2、TIM3、TIM4。
2024-09-28 07:56:07
785
原创 EXTI外部中断
中断函数的地址是由编译器分配的,不固定的,中断跳转由于硬件的限制,只能跳到固定的地址执行程序。所以为了让硬件跳转到一个不固定的中断函数里,这就需要在内存中定义一个地址的列表。列表地址是固定的,中断发生后,就跳转到这个固定位置,在这个固定位置由编译器,再加上一条跳转到中断函数的代码,这样中断跳转就可以跳到任意位置了。中断地址的列表就叫中断向量表。比如中断发生时,会跳转到固定的位置A,在这个位置由编译器,再加上跳转到中断函数的代码,就可以跳转到中断函数那里。
2024-09-27 08:31:42
975
原创 LED闪烁
参数为GPIOA,GPIOB等等,调用函数,所指定的GPIO外设就会被复位。AFIO外设,可以复位AFIO。:用第二个结构体参数来初始化第一个参数GPIO口。把结构体变量赋一个默认值。:GPIO的4个读取的函数。:GPIO的4个写入的函数。
2024-09-24 23:47:14
484
原创 UNIX体系结构
广义上来说,操作系统包括了内核和一些其他软件(包括系统实用程序、应用程序、shell以及公用函数库等),这些软件使得计算机能够发挥作用,并使计算机具有自己的特性。从严格意义上来说,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境。通常将这种软件称为内核,因为它相对较小,而且位于环境的核心。例如Linux是GNU操作系统使用的内核,一般该操作系统称为GNU/Linux操作系统,简称为Linux。shell是一个特殊的应用程序,为运行其他应用程序提供了一个接口。内核的接口被称为系统调用。
2024-09-20 22:03:54
374
原创 Linux系统编程-UFS文件系统解析
一个磁盘下面有若干个分区,一个分区下面有若干个柱面组(块组)。假设块中一个小格为1k,通常在实际生产中一个小格子为4k起。几乎所有的信息都存放在一个inode中,inode中的一个小格子存放的是结构体。在inode的小格子中,有stat、亚数据、无关、数据块指针组。数据块指针组有15个指针,前12个是直接的数据块指针,有一级、二级、三级间接块指针。在前面12个数据块指针,每个都指向块中的一个小格子,所以前面12个指针都用上的话,就可以保存一个12k大小的文件。
2024-08-20 11:31:24
785
原创 Linux系统编程-文件属性和FAT文件系统
将big.c的权限修改为666。a是all,是将所有加上可执行的权限。也可以u+x,g+x,o+x。
2024-08-18 11:16:08
416
原创 Linux系统编程-文件属性
2到4是user的权限,5到7是group的权限,8到10是other的权限,所以基本位有9位。u+s位,g+s位,o+t位。文件类型有7种,用位图来表示的话,3个二进制位就足够了。没有15位的位图,所以一定是16位。第一位为0,表示是八进制数,有5位,3*5再加上最高位的1,一共16位。st_mode是一个16位的位图。st_mode是一个16位的位图,用于表示文件类型,文件访问权限,及特殊权限位。这个红色框中的信息都存放在stat结构体的st_mode中。运行,flen.c是常规文件,所以结果为-。
2024-08-17 13:51:11
380
原创 Linux系统编程-stat函数
第一个参数是获取的文件属性的名字,第二个参数是结构体指针。将pathname指针指向的文件属性信息,填到statbuf中。
2024-08-13 23:38:54
695
原创 Linux系统编程-dup,dup2,原子操作
原子操作:不可分割的操作。原子:不可分割的最小单位。原子操作的作用:解决竞争和冲突。如tmpnam,其操作不原子。程序中的重定向:dup,dup2。
2024-08-07 21:45:39
442
原创 Linux系统编程-文件共享
文件共享:多个任务共同操作一个文件或者协同完成任务。写程序删除一个文件的第10行。类似于删除数组的某一个元素,要做的是将后面的元素都往前移,覆盖要删除的那个元素。找到第10行的行首和第11行的行首,从第11行开始一个一个往前覆盖。
2024-08-05 06:07:15
373
原创 Linux系统编程-系统IO和标准IO的区别
有特殊情况,比如还未达到信的上限,但是有人比较急,这时就直接去送,有点类似与刷新缓冲区fflush。标准IO具有缓冲的机制,看着已经写进去了,实际上是放到了输出的缓冲区中。系统调用IO每一次都是从user态切换到kernel态,实时性高。标准IO吞吐量大,系统调用IO响应速度快。从用户的角度,用户体验感觉到程序变快是指吞吐量。所以在相同情况下,标准IO和系统调用IO都能解决问题的情况下,尽量使用标准IO。
2024-08-04 08:01:01
740
原创 Linux系统编程-open,close,重载和变参
第一个参数是待打开的文件名,第二个参数是位图。flags(位图)必须包含以下三项:只读,只写,读写。0个或多个文件的创建选项和文件的状态选项,可以以按位或的方式放到文件中去。第一个为只读。第二个为读写。第三个为只写,并且文件不存在的话要创建,而且文件存在的话要截断。第四个为读写,而且有则清空,无则创建。
2024-08-02 18:27:23
704
原创 Linux系统编程-文件描述符
文件描述符(fd)是在文件IO中贯穿始终的类型,实际上是整形数、数组下标。文件描述符优先使用当前可用范围内最小的一个,如果0,1,2,3,4,5,6都已被占用,但此时3关闭了,那么此时打开文件会占用3,而不是7。
2024-08-02 10:44:49
613
原创 Linux系统编程-getline函数
getline函数实际是由malloc和realloc函数共同封装而成的,一开始用malloc分配一块空间,不够之后再用realloc函数扩充。
2024-08-01 17:17:48
506
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人