- 博客(49)
- 收藏
- 关注
原创 IMX6ULL开发板学习-06(Linux之Shell脚本)
Shell 脚本是一种为 Shell 编写的脚本程序,它将一系列命令写入一个文件,通过 Shell 解释执行,从而实现自动化任务。最常用的 Shell 是 Bash(Bourne Again Shell),本笔记以 Bash 为例。name="John" # 等号两边不能有空格age=25# 方式一commands[return n]# 方式二commands。
2026-04-13 16:58:53
473
原创 IMX6ULL开发板学习-05(Linux之Vi/Vim编辑器的使用)
在此模式下,按键执行命令(如移动光标、删除、复制),:绝大多数时间你应该停留在正常模式,仅在输入文字时切换到插入模式。(块选择)进入,结合移动键选取,然后可进行复制、删除等操作。进入,底部出现冒号,可输入命令(如保存、退出、查找替换)。进入块可视模式,可选择矩形块(常用于批量注释)。删除光标前字符(相当于 Backspace)替换光标处的一个字符(按 r 后输入新字符)进入替换模式(连续替换,Esc 退出)进入字符可视模式,移动光标选择字符。删除光标处字符(相当于 Del)在光标后插入(append)
2026-04-13 16:58:40
394
原创 超详细 Git 零基础教程
git init:初始化仓库git status:查看状态git add .:添加所有文件到暂存区git commit -m "说明":提交到本地仓库git log:查看提交历史git remote add origin 地址:关联远程仓库git push:推送到远程git pull:拉取远程代码git checkout -b 分支名:创建 + 切换分支git merge 分支名:合并分支。
2026-04-11 11:20:04
393
原创 IMX6ULL开发板学习-04(Linux磁盘管理相关命令)
但物理存储设备(如硬盘分区、U盘、光盘)或远程文件系统(如 NFS)各自拥有独立的文件系统。挂载后,通过访问该挂载点目录,即可读写对应设备上的内容。:ext4、XFS、NTFS、FAT32、ISO9660(光盘)、NFS(网络)等。通常建议使用空目录作为挂载点,否则原目录下的内容会被隐藏(直到卸载后才会重新出现)。不加参数,会列出当前所有已挂载的设备及其挂载点、文件系统类型、挂载选项。:将一个存储设备(分区、U盘等)上的文件系统关联到一个指定的空目录。:挂载后,该目录就成为访问设备上文件的入口。
2026-04-10 21:14:53
529
原创 IMX6ULL开发板学习-02(Linux用户管理)
Linux 是一个多用户、多任务的操作系统。用户管理是系统安全的基础,包括创建、修改、删除用户账户和组,以及管理用户权限和认证信息。理解用户管理有助于合理分配资源、保证系统安全、审计用户行为。
2026-04-08 00:21:56
546
原创 IMX6ULL开发板学习-01(Linux文件目录和目录相关命令)
命令主要用途常用选项示例pwd显示当前目录pwd -Pcd切换目录cd ~cd -ls列出目录内容ls -lals -d */mkdir创建目录rmdir删除空目录rm -r删除非空目录rm -rf dircp -r复制目录mv移动/重命名目录mv old newtree树状显示目录du统计目录大小du -sh *find查找目录chmod修改目录权限chown修改目录所有者dirname提取路径的目录部分basename提取路径的最后一级pushd/popd目录栈切换pushd /tmp。
2026-04-08 00:21:38
693
1
原创 Windows学习笔记-30(PE文件)
加载器在加载PE时,会遍历每个DLL描述符,找到对应的DLL,然后根据INT中指定的函数名或序号,查找函数在DLL中的实际地址,并填充到IAT中。由于 PE 文件加载时,每个节的内容会被整体映射到内存,因此给定一个 RVA,要找到它在文件中的对应位置,需要先确定该 RVA 属于哪个节,然后计算节内偏移,再映射到文件偏移。:每个节在内存中的大小(VirtualSize)可能大于在文件中的大小(SizeOfRawData),因为未初始化的数据(如 .bss 节)在文件中不占空间,但在内存中需要占用。
2026-03-05 17:34:07
697
原创 Windows学习笔记-29(内联汇编)
内联汇编(Inline Assembly)是指在高级语言(如 C/C++)的源代码中直接嵌入汇编指令的技术。它允许程序员在保持高级语言整体结构的同时,针对特定任务编写底层优化代码或直接操作硬件。内联汇编的语法和功能依赖于具体的编译器,最常见的是 Microsoft Visual C++ 的__asm关键字和 GNU Compiler Collection(GCC)的asm关键字。
2026-03-04 20:36:55
595
原创 Windows学习笔记-28(汇编指令和函数调用)
汇编语言(Assembly Language)是机器指令的符号表示,它使用助记符(mnemonic)代替二进制操作码,用标号(label)表示地址,从而让程序员更容易编写和理解程序。每条汇编指令基本上对应一条机器指令(伪指令除外)。汇编语言是低级语言,直接操作硬件资源,如寄存器、内存和I/O端口。与机器码的关系:汇编指令通过汇编器(assembler)翻译成机器码,再由CPU执行。与高级语言的区别:高级语言一次语句可能对应多条机器指令,而汇编指令一对一(或一对多,如宏指令)映射到机器指令。DB。
2026-03-04 09:38:32
632
原创 Windows学习笔记-27(CPU 工作方式、指令格式与寄存器)
x86 是指 Intel 8086 处理器开创的指令集架构,经过 40 多年的发展,如今广泛应用于桌面、服务器和嵌入式系统。它采用复杂指令集计算机(CISC)设计,具有可变长指令、多种寻址方式和丰富的寄存器。x86 经历了 16 位、32 位(IA-32)到 64 位(x86-64,也称 AMD64 或 Intel 64)的演进。当前主流是 64 位模式,但为了向后兼容,处理器启动时处于 16 位实模式,然后通过模式切换进入保护模式或长模式。
2026-03-03 10:09:01
1649
原创 Windows学习笔记-26(IOCP)
I/O 完成端口(IOCP)是 Windows 提供的一种高性能 I/O 模型,特别适合构建需要处理大量并发连接的服务器应用程序(如 Web 服务器、游戏服务器、数据库服务器)。它本质上是一个内核对象,用于高效地管理多个异步 I/O 操作的完成通知,并将完成事件分发给少量工作线程,从而实现“少量线程服务大量连接”的高扩展性目标。IOCP 的核心思想是:将异步 I/O 操作的完成通知放入一个队列(完成端口),工作线程从队列中取出完成包进行处理。
2026-03-02 13:57:11
1020
原创 Windows学习笔记-25(网络编程)
网络编程是指编写应用程序,使其能够通过网络与其他计算机上的进程进行通信。在 Windows 平台上,最核心的网络编程接口是,它基于 Berkeley Sockets 规范,并扩展了 Windows 特有的异步模型。:面向连接、可靠、基于字节流的协议。适用于需要可靠数据传输的场景,如 HTTP、FTP、邮件等。:无连接、不可靠、基于数据报的协议。适用于实时性要求高、可容忍丢包的场景,如视频通话、在线游戏、DNS 查询等。
2026-03-02 10:19:16
672
原创 Windows学习笔记-24(异步IO)
在 Windows 系统中,I/O 操作(读写文件、管道、套接字等)默认是同步的,即调用ReadFile或WriteFile时,线程会被阻塞,直到操作完成。这对于需要高并发、高性能的服务器或图形界面程序来说是不可接受的——阻塞线程会导致资源浪费或界面卡顿。异步 I/O允许应用程序发起 I/O 请求后立即返回,继续执行其他任务,当 I/O 完成时通过某种机制通知应用程序。这样单个线程可以同时管理多个 I/O 操作,大幅提升吞吐量。基于重叠 I/O (Overlapped I/O) + 事件通知。
2026-03-01 16:39:00
842
原创 Windows学习笔记-23(线程同步-信号量Semaphore)
信号量(Semaphore)是 Windows 提供的一种内核同步对象,用于资源计数和控制对共享资源的并发访问数量。它维护一个计数器,允许最多指定数量的线程同时访问受保护的资源。当计数器大于 0 时,信号量处于有信号状态,线程可以获取它;当计数器为 0 时,信号量处于无信号状态,线程尝试获取时会阻塞。信号量特别适用于以下场景:限制同时访问某个资源的线程数量(如数据库连接池、线程池任务限流)。管理有限数量的资源(如缓冲区槽位、打印机队列)。同步对象核心用途是否可跨进程是否有所有权计数器。
2026-03-01 10:30:40
752
原创 Windows学习笔记-22(线程同步-事件)
事件(Event)是 Windows 提供的一种内核同步对象,主要用于线程或进程之间的信号通知。它允许一个线程通知其他线程某个特定条件已经发生,或其他线程等待该条件成立后再继续执行。有信号(Signaled)或无信号(Nonsignaled)。同步对象核心用途是否可跨进程是否有所有权是否自动重置递归支持事件(Event)信号通知是否可选否互斥体(Mutex)互斥访问是是(线程关联)不适用是信号量(Semaphore)资源计数是否不适用否。
2026-02-28 12:26:24
790
原创 Windows学习笔记-21(线程同步-互斥体Mutex)
互斥体(Mutex,Mutual Exclusion Object)是 Windows 操作系统提供的一种内核同步对象,用于确保多个线程(或进程)对共享资源的互斥访问。它保证在任何时刻,最多只有一个线程能够拥有该互斥体,从而保护临界区代码不被并发执行,避免数据竞争和不一致。
2026-02-28 11:15:55
841
原创 Windows学习笔记-20(线程同步-临界区Critical Section)
临界区(Critical Section)是 Windows 提供的一种轻量级线程同步对象,用于保护共享资源在同一进程内的多个线程之间互斥访问。它确保同一时刻只有一个线程可以进入临界区代码段,从而避免数据竞争和不一致性。
2026-02-27 22:08:02
515
原创 Windows学习笔记-19(进程间通信(IPC)一)
是 Windows 中一个特殊的窗口消息,用于在具有窗口的进程之间传递数据。它允许一个进程将数据块复制到另一个进程的地址空间,由系统负责跨进程内存复制,接收方可以直接读取数据。该机制简单易用,常用于两个 GUI 进程间的少量结构化数据交换(如文件路径、配置信息等)。基于窗口消息,需要有窗口句柄。系统自动复制数据,接收方获得的数据是只读的。同步方式:发送方在消息处理完成前阻塞(等待接收方处理完毕才返回)。数据量不宜过大(通常建议小于 64KB,实际受系统资源限制)。
2026-02-27 17:25:47
839
原创 Windows学习笔记-18(MFC项目-制作快捷方式管理工具)
数据管理器生成的 ID 与树项存储的 ID 不一致,导致后续删除、重命名、加载列表等操作使用错误 ID,可能操作错误分组或失败。数据存储:需要将分组信息和软件项信息保存到文件(如XML、INI或数据库),以便下次启动时加载。销毁原图像列表,再重新创建。但列表控件可能仍持有旧图像列表的指针,导致图标显示异常。右侧:列表控件(CListCtrl)或自定义绘制控件用于显示软件图标和名字。经过测试,发现前面添加的文件拖拽添加功能,实际上无法使用。支持拖拽快捷方式(文件)到列表控件中,以添加新的软件项。
2026-02-14 21:01:37
1447
原创 Windows学习笔记-17(使用MFC读取程序信息并显示)
将图像列表“附加”到控件,控件绘制每一项时,根据该项指定的索引从图像列表中取出对应图标进行绘制。1、创建MFC应用程序,应用程序类型选择基于对话框,在静态库中使用MFC,生成的类选择为APP。边框:Resizing、系统菜单:True、最小化框:True、最大化框:True。:一次性设置文本、图标、数据、状态等,效率更高。:一组大小相同、索引有序的位图集合,存储在。:插入位置(索引,从0开始)。:普通图标(展开/折叠状态共用):状态图标(覆盖在项左上角):小图标模式(16×16):状态图标(如复选框)
2026-02-13 22:25:11
645
原创 Windows学习笔记-16(Windows文件操作相关)
NTFS(NT File System) - 现代Windows默认,支持ACL、加密、压缩FAT32(File Allocation Table) - 兼容性好,最大4GB文件exFAT(Extended FAT) - 大文件支持,适合闪存设备ReFS(Resilient File System) - 服务器级,数据完整性。
2026-02-10 23:47:59
687
原创 Windows学习笔记-15(进程、线程、模块)
进程是操作系统进行资源分配和调度的基本单位,是一个正在执行的程序实例。它不仅包含程序代码,还包括执行该程序所需的所有系统资源状态。视角定义关键点程序角度程序的一次执行过程动态 vs 静态资源角度拥有独立资源的基本单位隔离性、保护性系统角度操作系统调度的实体并发性、状态性一个程序可对应多个进程,一个进程只能执行一个程序。具体区别特征程序进程存在形式静态文件(.exe, .dll)动态执行实体生命周期永久存储创建→运行→终止资源占用仅磁盘空间CPU、内存、I/O等并发性无可并发执行。
2026-02-10 18:03:10
509
原创 Windows学习笔记-14(句柄(Handle) 和指针(Pointer)之间的关系,Windows对象)
Windows一个个的对象,本质上都是结构体变量,windows 系统不希望程序员能够直接访问这些结构体变量,所以使用上都有一个特点,都需要先得到他们的句柄(句柄不等于指针)然后再调用相应的 API去操作这些对象。每个内核对象都有一个引用计数,用于跟踪对象当前被引用的次数。内核中每个进程有一个句柄表,表项存储了指向内核对象(如文件对象、窗口对象)的。,而是通过系统API转换后访问资源(如窗口、文件、进程)。:直接、高效,但危险(可能访问非法内存)。:抽象、安全,但效率略低(需系统层转换)。
2026-02-10 13:09:51
404
原创 Windows学习笔记-13(MFC状态栏Status Bar)
状态栏是Windows应用程序中常见的用户界面元素,通常位于窗口底部,用于显示应用程序状态信息、提示和指示器。在MFC中,状态栏由CStatusBar类封装,它是从派生的控件栏。
2026-02-08 23:27:07
640
原创 Windows学习笔记-12(工具栏的使用)
工具栏是Windows应用程序中常见的用户界面元素,提供对常用命令的快速访问。在MFC中,工具栏由CToolBar类封装,它是从派生的控件栏。
2026-02-07 23:38:14
308
原创 Windows学习笔记-11(MFC树控件Tree Control)
树控件(Tree Control)是Windows通用控件之一,用于显示分层数据,以树形结构展示信息。在MFC中,树控件由CTreeCtrl类封装。
2026-02-07 22:55:43
294
原创 Windows学习笔记-10(初步使用MFC)
2、创建一个类继承自 CWinApp3、重写Initlnstance的虚函数4、全局范围内定义一个唯一的CWinApp子类对象。
2026-02-06 23:40:14
980
原创 Windows学习笔记-09(DLL动态链接库)
DLL(Dynamic Link Library,动态链接库)是包含可由多个程序同时使用的代码和数据的库文件。DLL不是独立的可执行文件,而是由其他可执行文件(EXE或DLL)在运行时调用的共享函数库。添加一个export.def文件LIBRARY "myd1l" //myd1l为生成的dll名EXPORTSadd @1 //add为导出的函数名同样在dllmain.cpp文件中实现。
2026-02-06 13:58:39
474
原创 Windows学习笔记-08(关于如何使用Dialog资源的简单说明)
注意:不知道如何使用的函数和消息参数,可以选中后按F1进行查看。:阻塞父窗口,用户必须处理完当前对话框才能操作其他窗口。:不阻塞父窗口,用户可以同时操作多个窗口。本代码创建的是模态对话框,使用。
2026-02-05 21:35:20
470
原创 Windows学习笔记-07(资源的添加、载入和使用)
选择资源类型(Icon、Bitmap、Dialog等)右键点击项目 → 添加 → 资源。将resource.h添加到项目。编辑资源并自动生成.rc文件。:通过解决方案资源管理器。将.rc文件添加到项目。
2026-02-05 11:08:06
718
原创 Windows学习笔记-06(窗口操作函数的使用)
例如,当按下一个键时,Windows会产生WM_KEYDOWN和WM_KEYUP消息,TranslateMessage则根据这些消息产生WM_CHAR消息。GetClientRect获取窗口客户区的大小,返回的矩形左上角总是(0,0),右下角是客户区的宽度和高度。FindWindowEx可以查找子窗口,并且可以指定父窗口和查找起始位置,实现更精确的查找。用于获取和设置窗口的扩展信息,如窗口样式、扩展样式、窗口过程、用户数据等。每个窗口类都有一个窗口过程,同一个类的所有窗口共享同一个窗口过程。
2026-02-04 20:24:07
887
原创 Windows学习笔记-05(HWND(窗口句柄)和HINSTANCE(实例句柄)的关系与区别)
HWND(窗口句柄)和HINSTANCE(实例句柄)这两个都是,但代表完全不同的对象。
2026-02-04 11:02:49
434
原创 Windows学习笔记-04(窗口控件)
/ 控件是Windows GUI编程中的基本交互元素// 每个控件本质上都是一个窗口,有自己的窗口句柄(HWND)// 控件通过窗口消息与应用程序通信。
2026-02-03 16:35:35
385
原创 Windows学习笔记-03(Windows的消息机制)
Windows消息是Windows操作系统的核心通信机制,采用事件驱动的编程模型。当用户进行操作(如点击鼠标、敲击键盘)或系统事件发生时,Windows会生成相应的消息并发送给目标窗口。// 方法1:使用WM_USER(0x0400开始)// 方法2:使用RegisterWindowMessage(系统唯一)// 发送自定义消息// 在窗口过程中处理// 处理自定义消息return 0;
2026-02-03 10:20:45
948
原创 Windows学习笔记-02(Windows编程入门:最简单的Windows程序详解)
UINT style;} WNDCLASS;DWORD dwExStyle, // 扩展窗口样式LPCTSTR lpClassName, // 窗口类名LPCTSTR lpWindowName, // 窗口标题DWORD dwStyle, // 窗口样式int x, // 水平位置int y, // 垂直位置int nWidth, // 宽度int nHeight, // 高度HWND hWndParent, // 父窗口句柄。
2026-02-02 15:58:50
1609
原创 Android_Studio学习笔记-07(ContentProvider的使用)
ContentProvider是Android四大组件之一,用于在不同应用间安全地共享结构化数据。// ContentProvider继承关系↳ android.content.ContentProvider ← 我们继承的基类。
2026-02-01 17:00:32
1039
原创 Android_Studio学习笔记-05(Service的使用)
Service是Android的四大组件之一,用于在后台执行长时间运行的操作,无需用户界面。// Service继承关系↳ android.app.Service ← 我们继承的基类显示通知:必须显示一个持续的通知高优先级:系统不太可能杀死前台服务用户可知:用户知道应用正在运行服务。
2026-01-31 21:14:11
539
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅