<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[2301_80339607的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/2301_80339607</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; 2301_80339607]]></copyright><item><title><![CDATA[Spring]]></title><link>https://blog.youkuaiyun.com/2301_80339607/article/details/145740385</link><guid>https://blog.youkuaiyun.com/2301_80339607/article/details/145740385</guid><author>2301_80339607</author><pubDate>Sun, 23 Feb 2025 12:15:09 +0800</pubDate><description><![CDATA[IOC：控制反转，其核心思想是将对象的创建和依赖关系的管理交给Spring框架来处理，而不是在对象内部进行。这样做的好处是降低了对象之间的耦合度，提高了代码的可维护性和可扩展性。AOP：面向切面，其允许开发者在不修改源代码的情况下，将横切关注点（如日志、事务管理等）从业务逻辑中分离出来。这种分离使得代码更加模块化，提高了代码的可维护性和可扩展性。]]></description><category></category></item><item><title><![CDATA[王者农药更新版]]></title><link>https://blog.youkuaiyun.com/2301_80339607/article/details/142661585</link><guid>https://blog.youkuaiyun.com/2301_80339607/article/details/142661585</guid><author>2301_80339607</author><pubDate>Sat, 05 Oct 2024 16:49:49 +0800</pubDate><description><![CDATA[1.配置GPIO，所以RCC开启APB2时钟2.GPIO初始化（结构体）3.给GPIO引脚设置高/低电平（WriteBit）]]></description><category></category></item><item><title><![CDATA[STM32]]></title><link>https://blog.youkuaiyun.com/2301_80339607/article/details/142579362</link><guid>https://blog.youkuaiyun.com/2301_80339607/article/details/142579362</guid><author>2301_80339607</author><pubDate>Fri, 27 Sep 2024 00:19:28 +0800</pubDate><description><![CDATA[四个主动单元：DCode(数据总线)、DMA1、DMA2、系统总线四个被动单元：SRAM、Flash、FSMC（存储控制器）、AHB到APB的桥。]]></description><category></category></item><item><title><![CDATA[模电（硬件）]]></title><link>https://blog.youkuaiyun.com/2301_80339607/article/details/142418202</link><guid>https://blog.youkuaiyun.com/2301_80339607/article/details/142418202</guid><author>2301_80339607</author><pubDate>Sun, 22 Sep 2024 17:57:28 +0800</pubDate><description><![CDATA[当给三极管的发射结加上正向电压，同时给集电结加上反向电压时，发射区的多数载流子（电子或空穴）会扩散到基区，并在基区与从电源来的少数载流子复合，然后基区中的多数载流子会扩散到集电区，形成集电极电流。这个过程中，基极电流的变化会控制集电极电流的变化，从而实现电流的放大。4.场效应管：栅极、漏极、源极。11.555定时器：它是一种应用方便的中规模集成电路，为它是3个5KQ电阻分压，所以被叫做555定时器，应用：信号的产生、变换、控制与检测，55定时器具有灵活的应用，可以用作定时器、脉冲发生器、计数器、振荡器等。]]></description><category></category></item><item><title><![CDATA[常见单片机]]></title><link>https://blog.youkuaiyun.com/2301_80339607/article/details/142436317</link><guid>https://blog.youkuaiyun.com/2301_80339607/article/details/142436317</guid><author>2301_80339607</author><pubDate>Sun, 22 Sep 2024 14:12:05 +0800</pubDate><description><![CDATA[STM32单片机由ST厂商推出的STM32系列单片机，行业的朋友都知道，这是一款性价比超高的系列单片机，应该没有之一，功能及其强大。其基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARMCortex-M内核，同时具有一流的外设：1μs的双12位ADC，4兆位/秒的UART，18兆位/秒的SPI等等，在功耗和集成度方面也有不俗的表现，当然和MSP430的功耗比起来是稍微逊色的一些，但这并不影响工程师们对它的热捧程度，由于其简单的结构和易用的工具再配合其强大的功能在行业中赫赫有名…]]></description><category></category></item><item><title><![CDATA[51单片机——矩阵键盘]]></title><link>https://blog.youkuaiyun.com/2301_80339607/article/details/142434174</link><guid>https://blog.youkuaiyun.com/2301_80339607/article/details/142434174</guid><author>2301_80339607</author><pubDate>Sun, 22 Sep 2024 11:50:44 +0800</pubDate><description><![CDATA[所以我们如果要选择第四列，只需要把整个P1先给高电位1，再把P10给低电位0。当按下4号按钮时，P17这一行低电位0，延迟防抖，松开后防抖。先把P1给高电位，再把P10给低电位。P17,P16,P15,P14控制行，P13,P12,P11,P10控制列。]]></description><category></category></item><item><title><![CDATA[51单片机——数码管]]></title><link>https://blog.youkuaiyun.com/2301_80339607/article/details/142432561</link><guid>https://blog.youkuaiyun.com/2301_80339607/article/details/142432561</guid><author>2301_80339607</author><pubDate>Sun, 22 Sep 2024 11:26:58 +0800</pubDate><description><![CDATA[由图可以看出，这个一个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。]]></description><category></category></item><item><title><![CDATA[51单片机——独立按键]]></title><link>https://blog.youkuaiyun.com/2301_80339607/article/details/142427871</link><guid>https://blog.youkuaiyun.com/2301_80339607/article/details/142427871</guid><author>2301_80339607</author><pubDate>Sun, 22 Sep 2024 02:01:41 +0800</pubDate><description><![CDATA[独立按键按下时是有抖动的，为了防止抖动产生影响，所以给按键加上延迟。因为P20之前默认是1（高电平），通过取反，实现P20由高电平转为低电平，P20灯变亮。再次执行后，再加一，变为0000 0011，赋值给P2，使P20和P21亮。再次执行后，再加一，变为0000 0010，赋值给P2，使P21亮。松开按键后，加一，变为0000 0001，赋值给P2，使P20亮。当按键为0时，代表按下，所以当P30按下时，让P20＝0（亮）当P31不等于0时，代表松开了，产生抖动，延迟20ms。如果不松，陷入死循环。]]></description><category></category></item><item><title><![CDATA[51单片机——LED灯篇]]></title><link>https://blog.youkuaiyun.com/2301_80339607/article/details/142427767</link><guid>https://blog.youkuaiyun.com/2301_80339607/article/details/142427767</guid><author>2301_80339607</author><pubDate>Sun, 22 Sep 2024 01:26:07 +0800</pubDate><description><![CDATA[Delay500ms这个函数是延时函数，先让P20灯亮，延迟500ms后，再让它灭，即可实现闪烁效果。LED灯右侧接电源是正极（1），左侧给负极（0）即可点亮。再让P21亮（其他都灭），再延时500ms，先让P20亮（其他都灭），延时500ms，P2有8个管脚，对应8个二进制位。一、LED与单片机P2管脚相连。二、点亮一个LED灯。三、一个LED灯闪烁。]]></description><category></category></item><item><title><![CDATA[Linux(ubuntu)(文件IO——fopen)]]></title><link>https://blog.youkuaiyun.com/2301_80339607/article/details/142407828</link><guid>https://blog.youkuaiyun.com/2301_80339607/article/details/142407828</guid><author>2301_80339607</author><pubDate>Sat, 21 Sep 2024 01:02:30 +0800</pubDate><description><![CDATA[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。]]></description><category></category></item><item><title><![CDATA[Linux(ubuntu)Makefile]]></title><link>https://blog.youkuaiyun.com/2301_80339607/article/details/142407368</link><guid>https://blog.youkuaiyun.com/2301_80339607/article/details/142407368</guid><author>2301_80339607</author><pubDate>Fri, 20 Sep 2024 23:40:13 +0800</pubDate><description><![CDATA[假设我们没有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就是系统一个伪目标，没有这个文件，但是能清除文件。]]></description><category></category></item><item><title><![CDATA[Linux(Ubuntu)(终端实现helloworld输出)]]></title><link>https://blog.youkuaiyun.com/2301_80339607/article/details/142347300</link><guid>https://blog.youkuaiyun.com/2301_80339607/article/details/142347300</guid><author>2301_80339607</author><pubDate>Thu, 19 Sep 2024 01:45:13 +0800</pubDate><description><![CDATA[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（默认动态链接）]]></description><category></category></item><item><title><![CDATA[Linux（ubuntu）(c语言程序)]]></title><link>https://blog.youkuaiyun.com/2301_80339607/article/details/142341054</link><guid>https://blog.youkuaiyun.com/2301_80339607/article/details/142341054</guid><author>2301_80339607</author><pubDate>Thu, 19 Sep 2024 01:06:52 +0800</pubDate><description><![CDATA[解决方法：左侧点击.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中输入。]]></description><category></category></item><item><title><![CDATA[Linux(ubuntu)(C语言开发-下载篇)]]></title><link>https://blog.youkuaiyun.com/2301_80339607/article/details/142329013</link><guid>https://blog.youkuaiyun.com/2301_80339607/article/details/142329013</guid><author>2301_80339607</author><pubDate>Thu, 19 Sep 2024 00:28:42 +0800</pubDate><description><![CDATA[点击左下角显示应用程序，找到软件更新器，点击设置，点击Ubuntu软件，找到下载至，点击其他，找到mirrors.aliyun.com，确认之后再在终端执行sudo apt install gcc即可。而gcc相当于编译器，能把vscode写的语言编译成二进制语言，供计算机识别，所以还需要下载gcc。可以先不输入--classic，会显示有风险，有风险很正常，系统会要求你加上--classoc。snap代表软件商城，install代表下载，code代表vscode。1.gcc使用的是apt下载，直接使用。]]></description><category></category></item><item><title><![CDATA[Linux系统（Ubuntu）（下载篇）]]></title><link>https://blog.youkuaiyun.com/2301_80339607/article/details/142327976</link><guid>https://blog.youkuaiyun.com/2301_80339607/article/details/142327976</guid><author>2301_80339607</author><pubDate>Wed, 18 Sep 2024 11:34:20 +0800</pubDate><description><![CDATA[5.进入虚拟机之后，默认Try or install ubuntu，回车。3.点击使用ISO映像文件，找到刚才下载的Ubuntu，点击确定。7.根据自己电脑配置处理机和内核，我配置的是4处理机，2内核。9.输入用户名，密码再继续，再继续后会加载，加载后重新启动。1.创建好虚拟机后，不要直接开启，先点击编辑虚拟机设置。6.加载完后，向下找中文简体，再点击安装 ubuntu。VMware可以去官网下载，也可以看教程，教程很多。13.根据需要，默认20，将虚拟磁盘拆分成多个文件。4.选稍后安装操作系统，下一步。]]></description><category></category></item><item><title><![CDATA[操作系统第一章]]></title><link>https://blog.youkuaiyun.com/2301_80339607/article/details/142052032</link><guid>https://blog.youkuaiyun.com/2301_80339607/article/details/142052032</guid><author>2301_80339607</author><pubDate>Tue, 17 Sep 2024 00:53:48 +0800</pubDate><description><![CDATA[解析：命令解释程序属于命令接口，用户在使用电脑时，win+r，输入cmd，输入命令，电脑做出回应，这就属于命令解释，所以可以在用户态下完成。发生缺页和缺页处理是不一样的，在执行一条指令时，如果发生缺页，需要把cpu转到操作系统，进行缺页处理，所以属于内核态。用户态，内核态，系统调用：在计算机设计时，因为计算机的各种硬件资源是有限的，为了更好的管理这些资源，用户进程是不允许直接操作的，所有对这些资源的访问都必须由操作系统控制。一条指令在执行时，为了区分是用户进程的还是操作系统内核的，引入了用户态和内核态。]]></description><category></category></item><item><title><![CDATA[Linux7-su,exit,sudo]]></title><link>https://blog.youkuaiyun.com/2301_80339607/article/details/142291461</link><guid>https://blog.youkuaiyun.com/2301_80339607/article/details/142291461</guid><author>2301_80339607</author><pubDate>Mon, 16 Sep 2024 01:28:16 +0800</pubDate><description><![CDATA[exit命令用来实习root用户到普通用户的切换，不需要密码。sudo用于将普通用户临时以root用户执行，需要给普通用户进行sudo认证。（1）切换为根目录和普通用户后，执行mkdir test。（2）在前面加上sudo，sudo mkdir test就能添加文件。（1）切换为root用户，只有root用户才能给普通用户认证。su命令用来进行普通用户到root用户的切换，需要输入密码。切换为root用户，执行visudo，删除最后一行。（4）切换为命令模式，再输入:wq保存退出。（2）visudo命令。]]></description><category></category></item><item><title><![CDATA[Linux6-vi/vim]]></title><link>https://blog.youkuaiyun.com/2301_80339607/article/details/142291219</link><guid>https://blog.youkuaiyun.com/2301_80339607/article/details/142291219</guid><author>2301_80339607</author><pubDate>Mon, 16 Sep 2024 00:44:05 +0800</pubDate><description><![CDATA[（1）进入命令模式：vim 文件名，例如：vim test.txt，在当前文件夹下创建使用test.txt文件。（2）进入插入模式：只能从命令模式下进入，输入a/A,i/I,o/O进入插入模式。a：在当前光标的下一位开始编辑        A：在当前光标的行尾开始编辑。o：在当前光标的下一行开始编辑       O：在当前光标的上一行开始编辑。（4）进入底行模式：只能从命令模式下进入，例如输入:wq，还可输入。vi/vim有三种模式：命令模式，插入模式和底行模式。插入模式：可以对文件进行编辑，输入内容。]]></description><category></category></item><item><title><![CDATA[Linux5-echo,＞,tail]]></title><link>https://blog.youkuaiyun.com/2301_80339607/article/details/142289921</link><guid>https://blog.youkuaiyun.com/2301_80339607/article/details/142289921</guid><author>2301_80339607</author><pubDate>Sun, 15 Sep 2024 22:36:10 +0800</pubDate><description><![CDATA[选项-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.重定向符> >>]]></description><category></category></item><item><title><![CDATA[linux4-which,find,grep,wc,|]]></title><link>https://blog.youkuaiyun.com/2301_80339607/article/details/142287079</link><guid>https://blog.youkuaiyun.com/2301_80339607/article/details/142287079</guid><author>2301_80339607</author><pubDate>Sun, 15 Sep 2024 19:26:42 +0800</pubDate><description><![CDATA[其中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统计文件行数，单词数等。]]></description><category></category></item></channel></rss>