自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

不只会拍照的程序猿

致力分享linux、设计模式、C语言、嵌入式、编程相关知识,也会抽空分享些摄影相关内容,同样也分享大量摄影、编程相关视频和源码,欢迎大家订阅关注。

  • 博客(120)
  • 资源 (11)
  • 收藏
  • 关注

原创 《嵌入式AI筑基笔记04:python函数与模块01—从C的刻板到Python的灵动》

写了十几年C,习惯了函数必声明类型、返回值只能一个。直到遇见Python,才发现函数可以这么灵活:不声明类型、返回多个值、参数可缺省、函数内还能定义函数。本文从C程序员视角,拆解Python函数的核心机制,帮你避开常见的坑。

2026-04-01 07:59:39 509

原创 《嵌入式AI筑基笔记02:Python数据类型01,从C的“硬核”到Python的“包容”》

从C到Python,最大的变化不是语法,而是思维,python世界里内存自动管理,数据结构开箱即用,代码行数大幅减少。但自由的背后是规则——理解可变与不可变、有序与无序,才能真正用好Python的数据结构。

2026-03-19 10:24:01 397

原创 《嵌入式AI筑基笔记03:Python流程控制,从C的严谨到Python的简洁》

C语言的流程控制,靠的是括号、花括号和严谨的语法;Python则用缩进、冒号和更人性化的关键字,让代码如诗般简洁。

2026-03-17 21:24:06 290

原创 《嵌入式AI筑基笔记02:Python数据类型02,从C的“硬核”到Python的“包容”》

从C到Python,最大的变化不是语法,而是思维,python世界里内存自动管理,数据结构开箱即用,代码行数大幅减少。但自由的背后是规则——理解可变与不可变、有序与无序,才能真正用好Python的数据结构。

2026-03-16 08:30:18 395

原创 《嵌入式AI筑基笔记01:Python语法,一个C视角的翻译》

写了十几年C,转学Python才发现处处是坑?本文用C程序员视角逐条对比语法差异,总结7条必知潜规则。关注我,一起从底层跨界AI!

2026-03-08 19:50:19 318

原创 《AI学习计划:一个奔四嵌入式工程师的“自救”指南》

如果你也正在迷茫,也想在这个时代里对AI多一些掌控感,欢迎一起交流。我们时而分享心得,时而互相打气——讨论,本就是最好的学习。

2026-03-07 13:05:27 280

原创 选择排序和计数排序

选择排序和计数排序选择排序定义选择排序是一种简单直观的排序算法。它的基本思想是在每一趟遍历中找到未排序部分中的最小元素,并将其放到正确的位置上。操作步骤初始化:设数组长度为 n。外层循环:控制需要选择的位置 i,从 0 到 n-2。在每一轮 i 中,假设前 i 个元素已经排好序,剩下的部分是从 i 到 n-1 的子数组。内层循环:在当前未排序的部分中找到最小(大)值的位置 min_index(ma...

2025-02-21 16:08:49 844

原创 <span class=“js_title_inner“>选择排序和计数排序</span>

从第 2 个元素开始,遍历序列,找到剩下序列中的最大值(8),将其与第 2 个元素(8)交换。选择排序是一种简单直观的排序算法。从第 3 个元素开始,遍历序列,找到剩下序列中的最大值(7),将其与第 3 个元素(5)交换。从第 5 个元素开始,遍历序列,找到剩下序列中的最大值(6),将其与第 5 个元素(2)交换。从第 6 个元素开始,遍历序列,找到剩下序列中的最大值(5),将其与第 6 个元素(2)交换。从第 7 个元素开始,遍历序列,找到剩下序列中的最大值(3),将其与第 7 个元素(3)交换。

2025-02-21 16:08:49 646

原创 快速排序的缺陷及优化

快速排序(Quick Sort)是一种基于分治法的排序算法,由Tony Hoare于1960年提出。其基本思想是通过多次划分操作将一个数组分成较小的子数组,每个子数组中的元素比基准值更接近其最终位置。

2025-02-20 11:35:36 1222

原创 <span class=“js_title_inner“>快速排序的缺陷及优化</span>

3. 假设 left 指针找到数据,right 指针未找到,此时 right 移动到 left 指针位置结束遍历,指向数据本身应该交换到基准值右边,所以交换基准值和 right 指向值是合理的。假设 right 指针找到数据,left 指针未找到,此时 left 移动到 right 指针位置结束遍历,指向数据本身应该交换到基准值左边,所以交换基准值和 left 指向值是合理的。选定基准值,arr[0] = 3 (第 1 个元素)作为基准值,prev 指向基准值,curr 指向基准值的下一 1 个数据位置。

2025-02-20 11:12:29 618

原创 从插入排序到希尔排序

从插入排序到希尔排序插入排序原理插入排序是一种简单直观的排序算法,其基本思想是通过将每个元素逐个插入到已排序的部分中,逐步构建一个有序序列。操作步骤初始化:将第 1 个元素视为已经有序的部分(初始时长度为 1)。遍历数组:从第 2 个元素开始,依次将其视为待插入的“新”元素。查找位置:在已排序部分中找到该元素的正确位置,并将其插入到适当的位置。从已排序部分的末尾向前查找,找到第 1 个小(大)于等...

2025-02-14 21:09:46 984

原创 <span class=“js_title_inner“>从插入排序到希尔排序</span>

希尔排序主要还是引入了分组的概念,通过分组将序列拆分成小序列,并且根据间隔实现远距离数据的快速排序,从而减少数据比较与移位的处理,降低时间复杂度。:在内层循环中,如果当前已排序部分的第一个元素已经小于等于待插入元素,则无需继续比较,直接结束内层循环。在某些特定的数据分布下,希尔排序的时间复杂度可能退化到O(n²),这与普通的插入排序相当,无法发挥其高效的理论优势。希尔排序是一种改进的插入排序,它允许在远距离的元素之间进行比较和交换,从而减少排序的时间复杂度。希尔排序的性能严重依赖于步长序列的选择。

2025-02-14 21:09:46 634

原创 冒泡排序的缺陷及优化

冒泡排序的缺陷及优化定义:冒泡排序(Bubble Sort)是一种简单且常用的排序算法。其基本思想是通过多次遍历待排序的序列,依次比较相邻的两个元素,并根据需要交换它们的位置,使得较大的元素逐渐向后移动,较小的元素逐渐向前移动。这个过程类似于水中的气泡逐渐上升,因此得名“冒泡排序”。操作步骤比较第 1 个和第 2 个元素,按大小排序。移动到下 1 个对(第 2 和第 3),继续比较和排序。重复这...

2025-02-13 17:57:04 949

原创 <span class=“js_title_inner“>冒泡排序的缺陷及优化</span>

其基本思想是通过多次遍历待排序的序列,依次比较相邻的两个元素,并根据需要交换它们的位置,使得较大的元素逐渐向后移动,较小的元素逐渐向前移动。由上图可以看出,在第 1 轮遍历完成,就已经得到我们需要的排序顺序,此时第 2 、3、4 轮遍历数据完全无交换过程(浪费时间)。当某一轮遍历数据完全无交换即可表示此时我们的排序已完成,可以完全跳过后序遍历。在每 1 轮中进行 2 次扫描——从左到右将较大的元素移到右边,再从右到左将较小的元素移到左边。在冒泡的基础上,加入短路判断,若当前排序已完成,提前退出排序。

2025-02-13 17:57:04 629

原创 <span class=“js_title_inner“>冒泡排序的缺陷及优化</span>

其基本思想是通过多次遍历待排序的序列,依次比较相邻的两个元素,并根据需要交换它们的位置,使得较大的元素逐渐向后移动,较小的元素逐渐向前移动。由上图可以看出,在第 1 轮遍历完成,就已经得到我们需要的排序顺序,此时第 2 、3、4 轮遍历数据完全无交换过程(浪费时间)。当某一轮遍历数据完全无交换即可表示此时我们的排序已完成,可以完全跳过后序遍历。在每 1 轮中进行 2 次扫描——从左到右将较大的元素移到右边,再从右到左将较小的元素移到左边。在冒泡的基础上,加入短路判断,若当前排序已完成,提前退出排序。

2025-02-13 17:57:04 578

原创 斐波那契数求解引发的思考

定义:斐波那契数列是指这样一个数列:0,1,1,2,3,5,8,13,21,34,55……这个数列从第3项开始 ,每一项都等于前两项之和。表达式:F(n) = F(n-1) + F(n-2)。基例:F(0) = 0,F(1) = 1。求解方法 1. 递归法代码使用递归的方法,编写代码如下/*** @ 方法 1:递归的方法* @ num - 用于求解的斐波那契数参数* @ 返回...

2025-02-12 17:49:04 608

原创 实时系统vxWorks - 双向链表(含源码分析)

vxworks操作系统为我们提供的双向链表,你确定不拿来用一下吗?

2023-12-28 21:33:20 1205

原创 设计UI - Adobe xd剪切蒙版

剪切蒙版剪切蒙版是一个可以用其形状遮盖其他图稿的对象,因此使用剪切蒙版,您只能看到蒙版形状内的区域,从效果上来说,就是将图稿裁剪为蒙版的形状。简单来说就是通过组合,显示下方形状范围内上面图片的内容。

2023-03-23 09:00:12 4551

原创 <span class=“js_title_inner“>设计UI - Adobe xd剪切蒙版</span>

剪切蒙版是一个可以用其形状遮盖其他图稿的对象,因此使用剪切蒙版,您只能看到蒙版形状内的区域,从效果上来说,就是将图稿裁剪为蒙版的形状。简单来说就是通过组合,显示下方形状范围内上面图片的内容。方法二操作步骤:选中矢量图形和图片,右键->带有形状的蒙版;图片和矢量图形组合:无论图片在上还是在下,均显示矢量图形范围内的图片内容。矢量图形和矢量图形组合:上方矢量图形作为范围,下方矢量图形作为显示内容。方法一操作步骤:画出矢量图形,将图片直接拖入矢量图形内即可。操作步骤:双击图片,进行位置和大小调整。

2023-03-23 09:00:12 13

原创 设计UI - Adobe xd文本和钢笔

本文介绍Adobe xd中文本工具及钢笔工具的使用。

2023-03-13 20:13:01 2272

原创 <span class=“js_title_inner“>设计UI - Adobe xd文本和钢笔</span>

操作步骤:选择选择工具,双击路径,点击路径锚点可以修改锚点路径,也可按del键删除锚点。同时在路径其它区域也可增加锚点。当线条端点重合时,自动闭合路径,退出钢笔工具,当绘制完成后,也可选择钢笔工具,在路径上添加锚点且改变路径。区域文本,点击文本工具,快捷键T,点击画板,在画板位置拖动鼠标,划出区域,然后输入对应的文本即可。操作步骤:点文本,选择文本工具,快捷键T,点击画板,在画板位置,输入对应的文本即可。操作步骤:选择文本,在右侧边栏,选择对应的字体,字号,以及是否加粗等。别忘了答应自己要的远方。

2023-03-13 20:13:01 27

原创 设计UI - Adobe xd对象介绍

ui设计中对象包含,矩形,椭圆,多边形以及直线,各对象之间的操作基本上大同小异。

2023-03-09 23:56:31 19667

原创 设计UI - Adobe xd画板及参考线

本文介绍了Adobe XD工具中的画板及参考线用法

2023-03-08 22:28:55 8302

原创 <span class=“js_title_inner“>设计UI - Adobe xd画板及参考线</span>

操作步骤:选中画板,勾选版面,设置列宽,间距,以及上下左右边距等参数,也可以设置布局网格颜色及透明度。操作步骤:选择画板,右键选择显示或隐藏布局网格,快捷键shift+ctrl+’用于显示或隐藏布局网格。操作步骤:选中画板工具,选择需要建立的画板模版,没有则拖动鼠标建立画板,然后输入宽度和高度即可。操作步骤:选中画板,右键画板->参考线->锁定所有参考线。快捷键:shift+ctrl+;操作步骤:选择要复制参考线的画板,右键->参考线->复制参考线;选择要粘贴参考线的画板,右键->参考线->粘贴参考线。

2023-03-08 22:28:55 15

原创 浅谈linux - cond条件变量应用

条件变量不是一个把锁,它实质上一个类似信号的东西,与锁相互配合使用,因为锁所能达到的功能就只有加锁和解锁,并不能实现线程之间的一些关联,于是条件变量就出现了,与锁相互配合使用。这与共享内存与信号量配合使用有些许相似之处。

2022-12-02 08:57:04 391

原创 浅谈linux - mutex锁应用

概述互斥锁是专门用于处理线程之间互斥关系的一种方式,它有两种状态:上锁状态、解锁状态。如果互斥锁处于上锁状态,那么再上锁就会阻塞到这把锁解开为止,才能上锁。解锁状态下依然可以解锁,不会阻塞。注意另外,小编所有文章均是自己亲手编写验证,由于文件太多,小编就不在公众号后台一一回复列举了,若需要小编的工程代码,请关注公众号,后台回复需要的工程文件。小编看到后会第一时间回复。接口初始化锁静态初始化/**...

2022-12-01 09:07:53 677

原创 浅谈linux - 线程的基本应用

线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。

2022-11-30 15:33:17 367

原创 浅谈linux - RT Linux解决方案

RT-Linux(Real-Time Linux)亦称作实时 Linux,是 Linux 中的一种硬实时操作系统

2022-11-29 11:20:58 11991

原创 浅谈linux - samba实现linux与windows文件共享

Samba最大的功能就是可以用于Linux与windows系统直接的文件共享和打印共享,Samba既可以用于windows与Linux之间的文件共享,也可以用于Linux与Linux之间的资源共享

2022-11-28 10:36:11 2674 3

原创 浅谈linux - vs code搭建运行调试环境

在Linux开发过程中,用不惯vim的用户往往会选择vs code软件或者source insight软件编写相关的源代码,由于vs code对linux系统的支持及界面的美观,所以小编往往会选择使用vs code来编写代码,但是,代码编写完成后,需要进行调试,除了gdb还有没有其它方式呢?答案是肯定有,vs code结合gdb就可以实现在线调试功能。

2022-11-08 11:45:49 1588

原创 浅谈linux - 库文件制作与使用

本质上来说,库文件就是可执行代码的二进制形式,可以被操作系统载入内存中执行。

2022-11-07 15:12:11 373

原创 我用C语言玩对象,封装相似算法的策略模式

在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。

2022-08-25 16:26:19 556

原创 通信协议 - ARINC615A加卸载协议

ARINC615A加卸载端系统由加载端软件和目标端软件组成,通过加载端软件和目标端软件的通信共同完成端系统设备的数据加卸载功能。加载端软件运行于大容量设备中,被加载端即目标端软件运行于AFDX交换机内和其他端系统设备中。

2022-08-24 09:00:54 12237 6

原创 通信协议 - ntp时间同步

NTP(Network Time Protocol)网络时间协议基于UDP,用于网络时间同步的协议,使网络中的计算机时钟同步到UTC,再配合各个时区的偏移调整就能实现精准同步对时功能。提供NTP对时的服务器有很多,比如微软的NTP对时服务器,利用NTP服务器提供的对时功能,可以使我们的设备时钟系统能够正确运行。

2022-08-23 13:56:37 3368

原创 开发工具 - 设置vs code显示中文

本文主要针对像小编一样对于英文看着比较吃力的小伙伴,如果你对自己英文很有信心,那么建议忽略此文章。

2022-07-29 09:00:56 2261

原创 开发工具 - 设置vs code主题

不可否认,良好的界面风格能给程序员带来更好的软件体验。对于小编这种颜值至上的人来说,一个高颜值的软件会让人心情愉悦,编写代码效率提高。这也是VS code和Source Insight软件的对比优势之一。...

2022-07-28 09:00:45 2535

原创 开发工具 - 离线安装VS code插件

VSCode具有丰富的插件库,程序猿们可以根据自己需要安装插件,大大提高VS code工具的生产力。

2022-07-27 09:00:25 3465

原创 开发工具 - Ubuntu版本VS code离线安装

概述VSCode(全称:Visual Studio Code)是一款由微软开发且跨平台的免费源代码编辑器。该软件支持语法高亮、代码自动补全(又称 IntelliSense)、代码重构、查看定义功能,并且内置了命令行工具和 Git 版本控制系统。用户可以更改主题和键盘快捷方式实现个性化设置,也可以通过内置的扩展程序商店安装扩展以拓展软件功能。VS Code 使用 Monac.........

2022-07-26 10:52:32 3238 3

原创 实时系统vxWorks - tcp服务器通讯

概述接上一篇文章,本文主要展示vxWorks下TCP服务器的编程方法。

2022-07-01 16:06:07 1134

原创 实时系统vxWorks - tcp客户端通讯

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。

2022-06-30 12:14:19 1220 4

TM1624的文档

TM1624的文档,开发文档,数据手册,值得研究下,应该还不错吧

2018-04-18

从vxWorks源码中提取,一种通用化双向链表设计,亲测可用

《也没想象中那么神秘的数据结构-一种通用化双向链表设计》文章系列源码,包含底层源码、对象设计、测试例程

2021-04-26

自动提取pdf指定页项目源码,亲测有效

python实现自动提取pdf指定页项目源码,包括界面设计,pdf处理,文件处理等功能

2021-05-01

C语言 观察者模式,包括基类设计、示例代码、通用化链表设计,亲测可用

C语言 观察者模式,文章《我用C语言玩对象,观察者模式》系列示例代码

2021-04-27

C语言 状态模式,包括基类设计、示例代码、通用化链表设计,亲测可用

C语言 状态模式,文章《我用C语言玩对象,状态模式》系列示例代码

2021-04-25

C语言实现队列源码,包含顺序队列,链式队列,循环队列,亲测可用

队列源码,文章《也没想象中那么神秘的数据结构-先来后到的“队列”》系列示例代码

2021-04-25

C语言 栈的实现,包含顺序栈和链栈,亲测可用

C语言 栈的实现,文章《也没想象中那么神秘的数据结构-后来居上的“栈”》系列示例代码

2021-04-25

C语言版本 单例模式,亲测可用

C语言实现 设计模式-单例模式,博客中《我用C语言玩对象,独一无二的单例模式》示例代码

2021-04-25

C语言版本 单链表实现,亲测可用

单链表操作较全面,代码风格良好,注释清晰

2021-04-25

双向链表示例,C语言实现,亲测可用

C语言版本的双向链表示例,也没想象中那么神秘的数据结构-一环扣一环的“链表”(双链表)中的示例

2021-04-25

template.zip

C语言版本的设计模式 - 模板模式源码,代码亲测可用

2021-04-25

空空如也

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

TA关注的人

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