C语言指针-从底层原理到花式技巧,用图文和代码帮你讲解透彻

这是道哥的第014篇原创 一、前言 如果问C语言中最重要、威力最大的概念是什么,答案必将是指针!威力大,意味着使用方便、高效,同时也意味着语法复杂、容易出错。指针用的好,可以极大的提高代码执行效率、节约系统资源;如果用的不好,程序中将会充满陷阱、漏洞。 这篇文章,我们就来聊聊指针。从最底层的内存存储 ... »

COW技术重置虚拟机

最近使用COW技术做虚拟机重置,结果成功了,特地来给大家分享一下这次的成果! 文章目录 一、COW技术是什么? 二、重置虚拟机步骤 总结 往期杂文 一、COW技术是什么? Copy On Write,写时复制 ——针对随时变化的数据进行备份前端盘:永远显示在制作出前端盘那一瞬间原始盘所有数据内容直接 ... »

C语言实现的多线程定时器

(c语言制作定时器库) 1. 大致功能介绍 实现任务列表,定时器会间隔一段时间遍历列表发现要执行的任务 任务列表中的所有任务并行执行 每个任务都可以有自己的定时器,并且可以选择是否要重复执行 定义方便的任务函数实现接口 定时器可以由用户自定义何时启动和停止 提供等待功能,保证任务列表中的所有任务执行 ... »

个人总结的一些C++基础理论

我自己整理的一些C++基础理论知识,面试的同学可以用到: 主要是针对那些基础理论知识比较薄弱的同学吧,希望会对大家面试有些帮助,排版什么的有点乱,大家多多包涵: 类和对象-封装-属性和行为作为整体 C++认为万事万物都皆为对象,对象上有其属性和行为 封装的意义一:a. 将属性和行为作为一个整体,表现 ... »

一步步分析:C语言如何面向对象编程

这是道哥的第009篇原创 一、前言 在嵌入式开发中,C/C++语言是使用最普及的,在C++11版本之前,它们的语法是比较相似的,只不过C++提供了面向对象的编程方式。 虽然C++语言是从C语言发展而来的,但是今天的C++已经不是当年的C语言的扩展了,从2011版本开始,更像是一门全新的语言。 那么没 ... »

Linux杂谈: 实现一种简单实用的线程池(C语言)

基本功能 1. 实现一个线程的队列,队列中的线程启动后不再释放; 2. 没有任务执行时,线程处于pending状态,等待唤醒,不占cpu; 3. 当有任务需要执行时,从线程队列中取出一个线程执行任务; 4. 任务执行完成后线程再次进入pending状态,等待唤醒; 扩展功能 1. 线程的队列大小可设 ... »

Redis数据结构之跳跃表

1、简介 我们先不谈Redis,来看一下跳表。 1.1、业务场景 场景来自小灰的算法之旅,我们需要做一个拍卖行系统,用来查阅和出售游戏中的道具,类似于魔兽世界中的拍卖行那样,还有以下需求: 拍卖行拍卖的商品需要支持四种排序方式,分别是:按价格、按等级、按剩余时间、按出售者ID排序,排序查询要尽可能地 ... »

Redis数据结构之字典

1、说明 当我们使用 Redis 的 Hash 操作时,底层的实现就是字典。 在介绍字典之后,我们先回忆一下 Redis 中的 Hash 操作。最常用的就是 HSET 和 HGET 了 127.0.0.1:6379> HSET user name sherlock (integer) 1 127.0 ... »

Linux杂谈:进程锁核+实时线程导致的读写锁死循环

发现问题 公司项目测试的时候,发现运行一段时间后会出现cpu百分之百的情况。 想着可能是哪里出现了死循环,于是打算用gdb跟一下,结果gdb居然无法attach到进程。。。。。。 定位问题 查了查去,原来有一个优先级为RT的实时线程出现了死循环,并且由于配置了CPU的亲和属性,使得进程只运行在第一个 ... »

二分查找(递归与非递归)

#include <stdlib.h> #include <stdio.h> //二分查找非递归 int Binary_Search(int list[],int key,int length){ int low=0,high=length-1; while (low<=high){ int mid ... »

新基地

https://www.whyfi.top/blog 1. 技术分享 2. 文化讨论 3. 工程项目 ... »

结构体指针中的一点困惑

在学习32中的滴答定时器的时候,我进入底层去分析代码,然后就遇到了拦路虎。我遇到了这样的代码 1 //core_cms.h中的宏定义 2 #define SCS_BASE (0xE000E000) 3 #define SysTick_BASE (SCS_BASE + 0x0010) 4 #defin ... »

《UNIX环境高级编程》(APUE) 笔记第十一章 - 线程

11 - 线程 Github 地址 1. 线程概念 典型的 UNIX进程 可以看成只有一个 控制线程 :一个进程在某一时刻只能做一件事情。有了 多个控制线程 ,就可以把进程设计成在某一时刻能够做不止一件事,每个线程处理各自独立的任务。 每个线程都包含有表示执行环境所必需的信息: 进程中表示线程的 线 ... »

内存节省机制C演示

编写代码实质是通过指令对计算机内存进行操作,计算机的硬件设备往往十分有限,尤其是内存。如何使有限的存储空间利用效率达到最大,成为了代码优化首先要考虑的事情。 比如,输入三个数比较大小并输出最小值。下面写段代码: 使用条件语句嵌套比较 #define _CRT_SECURE_NO_WARNINGS # ... »

拿来即用:用C+JS结构来处理JSON数据

【面对的问题】 在物联网产品的开发过程中,对JSON格式的数据处理是一个强需求,例如亚马逊的 AWS IOT平台,设备与后台之间的通讯数据都是JSON格式,先瞄一眼大概的样子: 这是一个真实产品的通讯数据,设备端的代码C代码中利用cJSON这个开源工具来完成JSON字符的解析和组装工作。代码我这里就 ... »

C/C++语言的学习方向

这个世界上有太多的坑,如果我们不具备查阅资料的能力和对现实世界的思考能力,入坑是大概率的事情。 C/C语言能做什么?C/C程序员在做什么?企业需要什么样的C/C++程序员?对初学者来说,要搞清楚这些问题并不容易。 一个农民种菜之前,会考虑菜的行情(包括销量和价钱),如果您打算学习C/C语言,也应该先 ... »

SDL2 gif动态图加载

参照 https://tieba.baidu.com/p/3569073088?tpl=5&red_tag=1777318765 使用mingw工具链 #include <stdbool.h> #include <stdio.h> #include <SDL2/SDL.h> #include <SD ... »