WeSiGJ
码龄6年
关注
提问 私信
  • 博客:314,967
    社区:374
    问答:14
    动态:16
    315,371
    总访问量
  • 253
    原创
  • 4,628
    排名
  • 7,992
    粉丝
  • 229
    铁粉
  • 学习成就

个人简介:毕业于东莞理工学院,拥有4年的工作经验。C/C++/Python开发,嵌入式开发,Linux开发,ROS机器人操作系统开发,SLAM算法开发,手写数字识别图像处理

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:广东省
  • 加入CSDN时间: 2019-04-28
博客简介:

wesigj的博客

博客描述:
本博客旨在推送一些个人学习c++、python、嵌入式的- 些历程,包括c++boys,嵌入式boys,LeetCode、算法、 实习、工作面经等。在这里我们可以共同分享,共同交流 共同学习!
查看详细资料
  • 原力等级
    成就
    当前等级
    6
    当前总分
    2,368
    当月
    85
个人成就
  • 嵌入式领域优质创作者
  • 获得3,493次点赞
  • 内容获得132次评论
  • 获得4,172次收藏
  • 代码片获得1,820次分享
创作历程
  • 147篇
    2024年
  • 1篇
    2022年
  • 73篇
    2021年
  • 42篇
    2020年
  • 21篇
    2019年
成就勋章
TA的专栏
  • C++
    152篇
  • 设计模式
    26篇
  • 操作系统
    1篇
  • 数据结构与算法
    5篇
  • LeetCode
    49篇
  • SLAM算法
    11篇
  • 嵌入式开发
    6篇
  • STM32
    1篇
  • CAN总线
    2篇
  • UDS统一诊断服务
    2篇
  • Linux
    12篇
  • Docker 应用容器引擎
  • Git代码管理
    1篇
  • 网络编程
    7篇
  • HTTP服务器
    9篇
  • Python
    1篇
  • Python手写数字识别
    4篇
  • IDE
    1篇
  • 项目
  • ROS机器人操作系统
    4篇
  • 智能家居系统
    6篇
  • 人生哲学
    2篇
  • 修身齐家治国平天下
    2篇
  • 10000个程序员小知识
    6篇
  • BLOG
    3篇
TA的推广
兴趣领域 设置
  • Python
    pythonnumpyconda
  • 编程语言
    pythonc++c语言汇编
  • 开发工具
    eclipsegithubgitvisual studiopycharmvimdockervscodepostmanvisualstudiovisual studio code
  • 数据结构与算法
    算法数据结构链表排序算法
  • 大数据
    sqlitejsonmysql
  • 后端
    mysqlnginx
  • 云原生
    docker容器kubernetes
  • 移动开发
    小程序
  • 人工智能
    opencv语音识别目标检测机器学习人工智能深度学习神经网络tensorflow图像处理
  • 网络与通信
    httpudpsslhttpswiresharkwebsocket网络协议tcp/ip信号处理信息与通信
  • 嵌入式
    单片机stm32mcu物联网嵌入式硬件iot嵌入式实时数据库
  • 硬件开发
    驱动开发dsp开发arm开发硬件架构pcb工艺
  • 游戏
    unity游戏引擎
  • 操作系统
    linuxubuntuwindowsrisc-v
  • 设计模式
    单例模式
  • 测试
    postman
  • 云平台
    腾讯云阿里云
  • 软件工程
    设计模式
  • 运维
    linux容器
  • 服务器
    linuxubuntucentos
  • 前沿技术
    智能家居智能硬件c++20c++23chatgptAIGC
  • IT工具
    vimwordexceloutlookxmindteamviewer企业微信钉钉腾讯会议draw.io石墨文档7-zipeverything网易邮箱大师
  • 开源
    githubgit开源协议
  • 其他
    微信新浪微博微信公众平台百度微信开放平台
  • 3C硬件
    电脑智能手机智能路由器计算机外设智能手表
  • AIGC
    AI作画chatgptAIGC
TA的社区
  • cplusplusboys
    2 成员 146 内容
    创建者
创作活动更多

AI大模型如何赋能电商行业,引领变革?

如何使用AI技术实现购物推荐、会员分类、商品定价等方面的创新应用?如何运用AI技术提高电商平台的销售效率和用户体验呢?欢迎分享您的看法

186人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

记录STM32的GPIO 的坑 复用引脚PB3 PB4

如果需要将PB4用作普通的GPIO,需要通过重映射配置来关闭JTAG功能,使其可以作为普通IO口使用。请注意,这段代码应该在任何可能依赖于这些引脚配置的外设初始化之前执行。如果你在程序的后面或者不确定的位置使用这段代码,可能会导致外设初始化失败或者引脚行为异常。因此,建议在程序的最前面,确保所有必要的初始化都已完成。:如果你使用的是STM32 HAL库,这段代码应该放在HAL库初始化之后,因为HAL库的初始化可能会依赖于AFIO的配置。:在配置任何依赖于这些引脚的外设之前,确保引脚映射已经被设置。
原创
发布博客 2024.11.04 ·
928 阅读 ·
23 点赞 ·
0 评论 ·
8 收藏

C++ 4.编程风格-copy and swap

总的来说,Copy and Swap 技术在多线程环境中是安全的,只要涉及到的资源交换是线程安全的或者在同步的上下文中进行。总的来说,在多线程环境中,Copy and Swap技术本身是安全的,但是需要确保涉及到的资源交换操作是线程安全的。这个过程是线程安全的,因为它不涉及共享数据,每个线程都有自己的临时对象副本。例如,如果一个类的对象被多个线程共享,并且你需要使用 Copy and Swap 技术来实现线程安全的赋值操作,那么你可能需要使用互斥锁来保护 swap 操作,以防止同时的访问导致数据竞争。
原创
发布博客 2024.11.03 ·
547 阅读 ·
26 点赞 ·
0 评论 ·
30 收藏

C++ 5.编程风格-pImpl (指针指向具体实现)

pImpl 模式是一种有效的技术,用于分离接口和实现,提高代码的模块化和可维护性。它特别适用于大型项目和需要频繁更新实现的库。通过使用 pImpl,可以减少编译依赖,提高编译速度,并保护实现细节不被外部访问。
原创
发布博客 2024.11.03 ·
1990 阅读 ·
54 点赞 ·
0 评论 ·
41 收藏

C++ 2.编程风格-枚举类替换命名空间 enum class

使用enum关键字定义枚举类型,可以指定底层的整数类型(如int、unsigned int等),如果不指定,默认为`int。
原创
发布博客 2024.11.02 ·
756 阅读 ·
8 点赞 ·
0 评论 ·
27 收藏

C++ 3.编程风格-RAII (资源获取即初始化)

可以创建自定义的RAII类来管理任何类型的资源,如数据库连接、网络连接、文件描述符等。
原创
发布博客 2024.11.02 ·
1173 阅读 ·
34 点赞 ·
0 评论 ·
28 收藏

C++ mutex in C++ Threading

# C++ mutex in C++ Threading
原创
发布博客 2024.11.01 ·
863 阅读 ·
13 点赞 ·
0 评论 ·
26 收藏

C++11 1.编程风格-初始化列表 initializer list

在 C++11 及更高版本中,使用初始化列表来初始化自定义类是一种推荐的做法,特别是对于类中包含常量成员或者需要高效初始化的场景。初始化列表确保成员变量按照声明的顺序进行初始化,并且可以在构造函数体内直接初始化成员变量。首先,定义你的类,并在构造函数中使用初始化列表来初始化成员变量。// 构造函数使用初始化列表return 0;
原创
发布博客 2024.11.01 ·
1224 阅读 ·
30 点赞 ·
0 评论 ·
12 收藏

C++ 创建线程的五种类型

点击直达——文章总目录在 C++ 中,创建线程可以通过多种方式实现,每种方式有其特定的用途和特点。以下是五种常见的创建线程的方法:这是 C++11 引入的最直观的线程创建方式,允许你直接在 C++ 代码中创建和管理线程。示例代码:1.2. 使用 是基于 的一个封装,它不仅创建了一个线程,还返回一个 对象,可以用来获取异步操作的结果。示例代码:1.3. 使用 POSIX 线程()这是在 UNIX-like 系统中使用的标准线程库。虽然 C++11 提供了 ,但在某些情况下,你可能仍然需要使用 P
原创
发布博客 2024.10.31 ·
686 阅读 ·
15 点赞 ·
0 评论 ·
13 收藏

C++ Join 与 Detachs

点击直达——文章总目录在 C++ 的多线程编程中, 和 是 类的两个成员函数,它们用于管理线程的生命周期和执行方式。示例代码:1.2.作用:让线程在后台独立运行。行为:当一个线程对象被 后,该线程将独立于主线程运行,主线程不需要等待它结束就可以继续执行。如果主线程结束, 后的线程将继续执行直到完成。使用场景:当你不需要等待线程结束或者需要线程在后台长时间运行时使用。注意事项:一旦线程被 ,就不能再对它进行 或 操作。必须确保 的线程在程序结束前完成执行,否则程序退出时可能会导致
原创
发布博客 2024.10.31 ·
1095 阅读 ·
42 点赞 ·
0 评论 ·
19 收藏

C++11 04-并发编程 Concurrent programming

在共享资源的同一作用域中定义一个std::mutex对象。定义一个互斥锁(std::mutex)和一个条件变量(),以及一个用于存储数据的队列。生产者函数将数据放入队列,并通知消费者数据已准备好。i < 5;++i) {// 通知一个等待的消费者消费者函数从队列中获取数据进行处理。});// 等待直到队列不为空。
原创
发布博客 2024.10.30 ·
1195 阅读 ·
41 点赞 ·
0 评论 ·
26 收藏

C++ 多线程和多进程 介绍

在 C++ 中,多线程和多进程是两种常见的并行计算方式,它们各自有不同的用途和实现方式。
原创
发布博客 2024.10.30 ·
581 阅读 ·
23 点赞 ·
0 评论 ·
12 收藏

C++11 35-tuple

点击直达——文章总目录在 C++11 中, 是一个非常灵活的模板类,它允许你将多个值组合成一个单一的对象。这在函数需要返回多个值或者你需要将多个相关数据项组合在一起时非常有用。 支持各种操作,包括访问、赋值和比较等。你可以通过直接初始化或使用 函数来创建 对象。例如:1.2.访问 中的元素你可以使用 函数按索引访问 中的元素:1.3.使用 进行结构化绑定你还可以使用 来创建一个 的引用,这样可以将 中的元素分别绑定到不同的变量上:1.4. 的哈希函数如果你想在哈希表中使用 作
原创
发布博客 2024.10.29 ·
699 阅读 ·
35 点赞 ·
0 评论 ·
20 收藏

C++14 1-二进制字面量 Binary literal

在 C++14 标准中,引入了二进制字面量(binary literals),允许开发者使用更直观的方式表示二进制数。这个特性在 C++11 中并不存在,但经常被误认为是 C++11 的一部分。来表示一个数字是二进制的,后面跟着一个或多个二进制数字(0 或 1)。这种表示法在处理二进制数据时非常有用,因为它提供了一种更清晰、更易于阅读的方式来表示二进制数。这种新的字面量表示法在编写涉及二进制操作的代码时非常有用,比如在硬件编程、底层系统开发或任何需要直接操作位的场景中。二进制字面量使用前缀。
原创
发布博客 2024.10.29 ·
319 阅读 ·
6 点赞 ·
0 评论 ·
5 收藏

C++11 33-move aware class

移动构造函数接受一个右值引用作为参数,用于从另一个同类型对象中“窃取”资源。public:// 构造函数// 移动构造函数// 将源对象的资源指针置空,避免双重释放// 析构函数private:int* data_;移动赋值运算符同样接受一个右值引用参数,并需要处理自赋值的情况。// 移动赋值运算符if (this!= &other) { // 检查自赋值// 释放现有资源// 窃取资源// 将源对象的资源指针置空。
原创
发布博客 2024.10.28 ·
762 阅读 ·
26 点赞 ·
0 评论 ·
20 收藏

C++11 34-Hash Function

为自定义类型编写一个合适的哈希函数,以确保哈希表的高效性,需要考虑几个关键因素:分布均匀性、快速计算、以及尽量减少哈希冲突。
原创
发布博客 2024.10.28 ·
924 阅读 ·
24 点赞 ·
0 评论 ·
14 收藏

C++11 31-nullptr and nullptr_t

nullptr是一个空指针字面量,表示一个不指向任何对象的指针值。是nullptr的类型。nullptr可以被转换为任何指针类型,也可以转换为布尔类型(在布尔上下文中为false),但不能转换为整数类型。通过使用nullptr和,C++11 提供了一种更安全和表达性更强的方式来处理空指针。
原创
发布博客 2024.10.27 ·
605 阅读 ·
18 点赞 ·
0 评论 ·
15 收藏

C++11 32-type alias

在模板元编程中,类型别名(Type Aliases)和类型推导(Type Deduction)都是用来简化复杂类型表达式的工具,但它们的用途和工作方式有所不同。类型别名在优化模板函数重载中非常有用,因为它们可以简化复杂的类型表达式,使得重载的模板函数更加清晰和易于管理。类型别名在模板元编程中非常有用,因为它们可以简化复杂的类型表达式,增加代码的可读性和可维护性。类型别名可以用于基础类型、模板、类、函数指针等。使用类型别名可以为复杂的模板参数列表创建一个简短的名称,这样可以减少模板定义中的冗长类型表达式。
原创
发布博客 2024.10.27 ·
744 阅读 ·
9 点赞 ·
0 评论 ·
24 收藏

C++11 29-外部模板 Extern Template

内部模板和外部模板的主要区别在于它们如何被实例化和管理。内部模板提供了灵活性但可能导致编译效率问题,而外部模板有助于优化编译过程,特别是在大型项目中。正确使用外部模板可以显著提高编译效率和减少二进制大小。首先,将模板类或函数的定义放在一个头文件中,并确保不在头文件中进行任何模板的显式实例化。
原创
发布博客 2024.10.26 ·
942 阅读 ·
8 点赞 ·
0 评论 ·
28 收藏

C++11 30-可变参数模板 Variadic Templates

可变参数模板可以用于创建类型安全的函数封装器,这些封装器可以接受任意数量和类型的参数,并将其转发给另一个函数。在 C++11 之前的版本中,如果需要处理不同数量的参数,你需要为每种情况编写不同的模板。在泛型编程中,可变参数模板允许开发者编写可以接受任意数量参数的函数或类模板。使用可变参数模板实现一个函数,使其能够处理任意数量和类型的参数,可以通过递归模板展开和折叠表达式来完成。可变参数模板可以用于创建函数包装器,这些包装器可以接受任意数量的参数,并将它们转发给另一个函数,这在实现高阶函数时非常有用。
原创
发布博客 2024.10.26 ·
959 阅读 ·
15 点赞 ·
0 评论 ·
29 收藏

C++11 28-纯虚函数的默认实现 The default implementation of pure virtual functions

C++11 28-纯虚函数的默认实现 The default implementation of pure virtual functions
原创
发布博客 2024.10.25 ·
785 阅读 ·
10 点赞 ·
0 评论 ·
24 收藏
加载更多