一、简介sqlite3非常小,轻量级,就几百K大小;不需要用户名,密码,直接就可以对数据库进行操作。二、安装sqlite31.安装sqlite3sudo apt-get install sqlite32.安装库文件sudo apt-get install libsqlite3-dev不安装库文件的话,直接在C语言中包含头文件#include<sqlit …
技术教程
在本文的开头,我必须声明这是一篇有目的性的文章。我有一个长辈最近得了尿毒症,所以我联系芯片之家的管理员并且得到他非常爽快的允许,在芯片之家的平台将人体的肾功能与开发技术结合起来写一篇文章发表在这里,希望得到更多人的帮助。所以,请记住:不管您是转发本文,点在看,还是点击原文轻众筹给予帮助或者转发,都是一次善举。程序的形态非常之多,不管是可以作为一个操作系统,还 …
Redis安装部署下载编译*本测试系统环境为:CentOS_7_2009,X86_64下载源码包:https:redis.iodownload上传离线压缩包或者下载到公共目录:usrlocalredis$ cd usrlocalredis $ wget https:download.redis.ioreleasesredis-6.2.6.tar.gz$ ta …
C 的指针强转“好用又危险”。它像一把瑞士军刀:紧急时刻能救你,但用错了照样会“自残”。本文不讲花哨技巧,专讲哪些转换是标准允许的、哪些会把你带进未定义行为(UB, Undefined Behavior)深坑,并配套可落地的写法与排雷清单。一、先把地基打牢:三个关键概念1)对象表示(object representation) 内存里只是比特位,怎么解释这些 …
我们在面对一个大项目时,会常常因为各种内存问题导致很多麻烦事情,调试内存的分配与释放是很常见的事情,其中比较常见的一个办法是用自己的内存管理函数来替换C语言库函数的内存管理函数。由于内存函数是自己的,你可以自己记录内存的分配和使用情况,很多事情都能做。对于比较小的项目来说,直接把malloc和free等函数用自己的版本去替换,然后在自己的版本中在去调用系统的 …
介绍要搞明白 Go 语言的内存管理,就必须先理解操作系统以及机器硬件是如何管理内存的。因为 Go 语言的内部机制是建立在这个基础之上的,它的设计,本质上就是尽可能地发挥操作系统层面的优势,而避免导致低效情况。操作系统内存管理其实现在计算机内存管理的方式都是一步步演变来的,最开始是非常简单的,后来为了满足各种需求而增加了各种各样的机制,越来越复杂。这里我们只介 …
虽然android源码里有android::CallStack用来打印堆栈,但是NDK里面并没有包含它,所以不能直接调用它,所以要尝试用动态调用的方式来实现。我测试的手机是安卓8.1.0版本,android::CallStack位于systemliblibutils.so库中,使用ida pro打开libutils.so,找到android::CallSt …
很多人学指针,是被“星号的数量、括号的位置、方括号的优先级”三连击劝退的。本文不堆概念,而是搭一套能落地的心智模型 + 语法规则 + 高频用法 + 易错警示。看完后,你能读懂(乃至写出)大多数复杂的指针声明。一、先立根:指针的“值”和“类型”值:一个地址(内存中的编号)。类型:描述“这个地址指向什么”。它决定三件事 1)*p 解引用后的结果类型; 2)p+1 …
在学习CC++的过程中,malloc、realloc和free这些函数,都是内存操作方面最基本的函数,使用非常广泛。今天本文主要是浅显地介绍一点这些函数的原理。Realloc先来介绍一下realloc,因为这个函数实际上是malloc和free的二次封装。void *realloc(void *__ptr, size_t __size)Realloc函数接受 …
对于有C或Go编程经验的开发者而言,学习Zig语言是一次充满趣味与挑战的旅程。Zig融合了C的底层操控能力和Go的现代编程特性,为系统编程、嵌入式开发等领域带来全新思路。接下来,通过对比C和Go,帮助你快速掌握Zig的核心要点。 语法基础:熟悉与创新的交织 变量声明与类型 在C语言中,变量声明需明确类型,如 int num; ,且类型转换有时需显式进行,如 …
