自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

量子孤岛

你永远不应该停止探索,而在一切探索的尽头,你将抵达起点,对它拥有全新的认识

  • 博客(277)
  • 资源 (2)
  • 收藏
  • 关注

原创 超越bash:让你的命令行更聪明

zsh是一种类Unix操作系统下的shell,它是Bourne shell的一个替代品,并且它的设计目的是成为一个更加强大和易于使用的shell。和Bash相比,zsh具有更多的特性和更好的自定义选项,例如更好的自动补全功能、更好的命令别名等等。

2023-10-08 12:38:31 235

原创 代码对比工具,都在这了

Beyond Compare选择最好的方法来突出不同之处,文本文件可以用语法高亮和设置比较规则的方法进行查看和编辑,适用于用于文档、源代码和HTML。Beyond Compare可以很方便地对比出两份源代码文件之间的不同之处,相差的每一个字节用颜色加以表示,查看方便,支持多种规则对比。KDiff3是一个跨平台的代码对比和合并工具,具有直观的图形界面和三向合并功能,适用于多人协作项目。Meld是一个开源的跨平台代码对比和合并工具,具有直观的用户界面,允许您比较和合并文件和目录。

2023-09-17 21:27:44 566

原创 新书推荐:《AIGC未来已来——迈向通用人工智能时代》

AIGC为何引发关注?ChatGPT会成为人工智能的拐点吗?GPT-4未来已来,奇点时刻该如何面对?人类的创新能力会被AIGC替代吗?当下有哪些典型的AIGC变现手段?AIGC的不足与挑战?

2023-05-13 13:34:58 1396 1

原创 Linux物理内存模型

本文是Linux内存管理系列文章的第一篇,先对一些常见概念有一个基本的认知。Linux内存有哪三大结构?去本文中找答案吧!Multiprocessors系统设计内存架构的两种模式UMANUMALinux物理内存的三大结构Node: CPU和本地内存组成Node, 用 struct pglist_data 表示,放在一个数组里面。

2022-10-08 10:38:16 758

原创 kernel启动镜像不是vmlinux,而是它!

上一节我们介绍了vmlinux的编译过程。vmlinux是一个ELF文件,上百M,无法直接flash到板子上。由此可以发现,arm64的启动镜像为压缩后的。再进一步走到boot目录下的Makefile。

2022-10-07 17:13:49 858

原创 Linux kernel中.o文件的编译过程

在嵌入式Linux的开发过程中,内核编译是一个永远也绕不开的话题。了解整个内核的构造节省编译时间在编译报错时快速定位问题进一步了解内核的启动本文从Linux kernel中.o文件的编译探索kbuild机制。

2022-10-06 20:18:05 1495

原创 如何编译并运行Linux系统?

学习Linux内核是一件振奋人心的事情,而在学习伊始对Linux内核的成功编译并运行也更会燃起更足的动力去钻研。本文从下载并编译Linux内核、编译busybox、制作一个最小的根文件系统,最后用qemu启动你编译好的内核和根文件系统 ,初步感受Linux内核的魅力所在。

2022-10-06 20:16:27 889

原创 如何在MFC中添加一个线程

如何在MFC中添加一个线程

2022-07-17 15:57:49 623

原创 Linux内核的命令行解析机制

bootargs如何传递给kernel?kernel的cmdline如何解析?这篇文章相信会为你一扫疑惑!

2022-06-05 14:56:01 1466 1

原创 全网最全的Mac代码风格总结

全网最全的Mac代码风格总结Mac的风格的代码样式,有谁会拒绝呢?那么怎样在文章、博文、PPT汇报等界面中将代码转换成Mac风格呢?岛主这里教大家4中方法1. 一个神奇的转换网站推荐指数:⭐⭐⭐⭐⭐只要将代码贴在上面,选择好自己喜欢的代码颜色样式以及背景样式,就可以一键导出Mac风格的代码截图,非常优雅有没有!评论回复“mac”获取网址链接。2. 万能的vscode插件推荐指数:⭐⭐⭐⭐⭐如果你使用vscode,那么只需下载插件:codeSnape。使用方法极其简单。选中代码右键点击

2022-05-09 21:42:19 2046 21

原创 什么是overcommit_memory?

1. 前言在日常的工作中可能我们会经常遇到程序fork失败的问题。遇到fork失败往往有两种可能性:进程数超标:可以通过cat /proc/sys/kernel/threads-max查看内存不足进程数预设值往往很大,几乎不太能超标,所以fork失败的原因大部分都是由于内存不足造成的。我们知道,由于MMU实现了虚拟地址到物理地址的转换,所以我们在申请虚拟地址时往往可以申请一大块内存,这实际上是对资源的有效利用,毕竟只有内存真正被投入使用时(如memset)才会实际分配物理内存,这种允许内存超额

2022-01-23 23:05:23 2102

原创 Github+jsDelivr搭建免费快速的个人图床

香!手把手搭建免费快速的个人图床本文同步发表如下平台:CSDN:https://editor.csdn.net/md?not_checkout=1&articleId=122026285知乎专栏:经常写博文的朋友对床图肯定不陌生。岛主习惯使用markdown撰写博客,将图片放在床图网站生成外链统一管理,这样一份博文就可以发布在不同的平台。不过免费的床图网站有时不稳定,付费价格又都不便宜。最近了解到了Github+jsDelivr的方式搭建个人床图,既稳定又快速还免费,突出一个香!搭

2021-12-19 17:02:49 1605 1

原创 如何判断大小端?(C语言实现)

大端模式:是指数据的高字节保存在内存的低地址中;小端模式:是指数据的高字节保存在内存的高地址中。

2021-12-12 14:52:05 1523 1

转载 hub和交换机区别

工作层次不同集线器工作在物理层,属于1层设备,每发送一个数据,所有的端口均可以收到,采用了广播的方式,因此网络性能受到很大的限制。交换机工作在数据链路层,属于2层设备,通过学习之后,每个端口形成一张MAC地址转发表,根据数据包的MAC地址转发数据,而不是广播形式。转发方式不同集线器的工作原理是广播形式,无论哪个端口收到数据之后,都要广播到所有的端口,当接入设备比较多时,网络性能会受到很大的影响。交换机根据MAC地址转发数据,收到数据包之后,检查报文的目的MAC地址,找到对应的端口进行转..

2021-11-27 23:19:01 1368

原创 一图看懂结构体对齐

一图看懂C语言结构体对齐为什么需要结构体对齐?根本原因在于CPU访问数据的效率问题。不是所有的硬件平台都能访问任意地址的任意数据,某些硬件平台只能在某些地址处取某些特定类型的数据的,否则抛出异常。数据结构(尤其是栈)应尽可能在自然边界上对齐,因为在访问为对齐的内存时,处理器需要访问多次,而对齐的内存处理器只需要访问一次。对齐原则以 #pragma pack(x) 中 x 的大小和结构中占用空间最大的成员做比较,取小值为 n(外对齐依据)以 n 值和结构体每个成员比较,得出结果列表为 m[x

2021-11-20 22:01:24 354

原创 什么是内存乱序访问?

什么是内存乱序访问?文章目录什么是内存乱序访问?1. 编译乱序1.1 编译优化等级1.2 使用volatile1.3 编译器屏障1.4 加锁2. 运行乱序3. 总结不断深挖计算机底层的原理越发觉得有趣,今天聊聊内存乱序执行的话题。首先问个问题:我们写得程序会按照既定的顺序执行么?这似乎毫无疑问。但是了解编译、链接原理的“底层”知识,则不会轻易下定论。特别是在用到多线程涉及到内存共享没有加锁的时候,也会暴露这个问题。所以很遗憾,在某些情况下,程序指令的执行顺序会发生改变,这就产生了我们所说的内存乱序

2021-11-20 12:33:28 993

原创 一款练习汇编的神器——DosBox

往期回顾CPU的“三条”总线物理地址是怎么确定的?以8086为例前面两节简单地阐述了CPU和内存如何通信以及物理地址的确定方法。今天开始实战演练下如何操纵寄存器和内存,因为岛主是基于8086来学习的汇编,先不谈Linux,这里我们借助一款神器来通透的观察寄存器和内存——DosBox。DosBox体验一个裸机的环境,在一个没有操作系统的环境中直接对硬件编程是很酷的一件事情。学习汇编需要使用debug来帮助我们更好地了解计算机系统。王爽老师的《汇编语言》上级环境使用的是dos系统,我们现在一般不会装d

2021-11-20 10:42:25 2672

原创 物理地址是怎么确定的?以8086为例

物理地址我们知道,CPU 访问内存单元时,要给出内存单元的地址。所有的内存单元构成的存储空间是一个一维的线性空间,每一个内存单元在这个空间中都有唯一的地址,我们将这个唯一的地址称为物理地址。8086是16位结构的CPU,这也就是说,在8086内部,能够一次性处理、传输、暂时存储的信息的最大长度是16位。内存单元的地址在送上地址总线之前,必须在CPU中处理、传输、暂时存放。而上一篇我们讲到,地址总线的宽度决定CPU的寻址能力。8086有20根地址总线,可以传送20位地址,所以其寻址能力为2^20B,即1

2021-11-20 10:10:17 8576 3

原创 结构体初始化的四种方法

结构体初始化的四种方法从事嵌入式开发后开始使用C来编程。刚开始觉得非常拧巴,经常阅读C代码也就慢慢习惯了。由于没有类的概念,结构体在C中大量使用,今天聊聊结构体变量初始化的四种方法。C语言中结构体初始化的四种方法举例: typede struct block { char name[32]; int type; int size; }block;方法一:定义时赋值 block test = {"version", 1, 32}; 需要注意对应的顺序,不能错

2021-11-20 09:01:55 46591 3

原创 如何制作文件系统并用qemu运行linux内核

上一文我们介绍了如何编译内核和busybox:如何编译Linux内核源码?本文介绍如何制作一个简版的文件系统、制作fs镜像文件并最终通过qemu将linux内核运行起来!制作一个简版文件系统编译完成后的busybox就安装在源码根目录下的_install目录了,我们进入_install目录,补充一些必要的文件或目录,相关的shell命令如下:$ mkdir -p etc dev mnt proc sys tmp mnt$ mkdir -p etc/init.d/$ mkdir etc dev

2021-11-20 08:56:49 1320

原创 CPU的“三条”总线

年底前会集中研究汇编语言,顺便分享一波学习心得。在网上找到了一本神书:王爽老师的《汇编语言(第3版)》,内容通俗易懂,例子风趣活泼,相见恨晚。如果你也对汇编感兴趣想学一学,后台回复:汇编二字即可获取该书的电子版。汇编语言是面向机器的符号语言,也是一门低级语言……在这个不懂点Python都不好意思说话的大数据时代,学汇编是不是脑子进水了?非也!做底层开发、内核开发、驱动开发等,汇编语言扮演着及其重要的角色!汇编是直接控制硬件的唯一语言!汇编的执行速度比C还要快大概10倍!呵呵,勉强找了三个理由支撑

2021-11-14 11:01:00 4237

原创 如何编译Linux内核源码?

前言学习Linux内核是一件振奋人心的事情,而在学习伊始对Linux内核的成功编译并运行一个mini版的文件系统也更会燃起更足的动力去钻研。本文从下载并编译Linux内核、编译busybox、制作一个最小的根文件系统,最后用qemu启动你编译好的内核和根文件系统 ,初步感受Linux内核的魅力所在。Linux用途广泛,包含的内容也琳琅满目。Linux系统的基础是内核、C库、工具集合系统的基本工具(如登录程序和Shell)。应用程序通过system call陷入内核,内核又通过驱动程序来与硬件交互。

2021-11-13 22:34:13 3542

原创 《OpenWrt智能路由系统开发》书摘

《OpenWrt智能路由系统开发》书摘​前不久看到一位同事在看这本书,书中对嵌入式的基础知识做了一些介绍,书名说是开发,但是大部分都是配置的贴图。本书适合查漏补缺,书中的开发板则完全没必要买,岛主替大家划了重点,想看这本书的朋友可以后台私信或留言,提供电子版链接。关于 OpenWrtOpenWrt是嵌入式设备上运行的linux系统。OpenWrt 的文件系统是可写的,开发者无需在每一次修改后重新编译,令它更像一个小型的 Linux 电脑系统,也加快了开发速度。你会发现无论是 ARM, PowerP

2021-03-06 22:24:09 2284 24

原创 程序库的制作和使用

库的概念库是二进制文件,包含的代码可被调用标准C库、数学库、线程库……库有源码,可下载后编译;也可以直接安装二进制包系统默认库的位置/lib /usr/lib库是事先编译好的,可以复用的代码win和Linux库不兼容LInux下包含静态库和共享库静态库优缺点编译(链接)时把静态库中的相关代码复制到可执行文件中程序 中以包含代码,运行是不再需要静态库程序运行时无须加载库,运行速度更快占用更多磁盘和内存空间静态库升级后,程序需要重新编译链接静态库的创建确定库中函

2020-11-22 20:42:38 423

原创 链队列实现字符串的读写

#include <stdio.h>#include <stdlib.h>#include <string.h>#define ERROR -1#define OK 0typedef char* ElemType;typedef struct Qnode{ ElemType data; struct Qnode* next;}Qnode, *QnodePtr;typedef struct LinkQueue{ Qnode* front;

2020-09-27 23:33:21 293

原创 ubuntu20.04 虚拟机连不上网

记录一下虚拟机——编辑——虚拟网络编辑器

2020-08-18 23:21:51 2978 8

原创 CPU性能篇-平均负载

建立起整体性能的全局观不需要了解每个组件的所有实现细节uptime$ uptime02:34:03 up 2 days, 20:14, 1 user, load average: 0.63, 0.83, 0.88参数解析02:34:03 //当前时间up 2 days, 20:14 //系统运行时间1 user //正在登录用户数过去 1 分钟、5 分钟、15 分钟的平均负载(Load Average)Linu.

2020-08-06 06:09:28 1132 1

原创 练习题

1. 顺时针旋转数组考点:二维数组索引的对应关系。#include <string>#include <iostream>#include <algorithm>#include <stdio.h>using namespace std;int main(){ int N; cin >> N; int f[12]...

2020-03-13 15:17:18 526

原创 Python练习记录

# -*- coding: utf-8 -*-n = eval(input())s = "Hello world"if n == 0: print(s)elif n > 0: for i in range(len(s)): if i % 2 == 0: print(s[i], end = '') else:...

2020-02-24 16:05:23 192

原创 如何阅读一篇论文

正文:如何阅读一篇论文Prof. S. Keshav, 滑铁卢大学 David R. Cheriton 计算机学院,加拿大原文链接摘要研究人员会花大量的时间去阅读研究论文,但很少有人会教读论文的方法,这造成了大量时间和精力上的浪费。本文会勾勒出一个高效可行的方法,用过三关的方式来阅读一篇论文。同时我会描述如何使用这个方法做文献调查。1. 介绍研究人员因为几个原因需要读论文:在学术会议或...

2020-01-30 16:08:05 265

原创 高精度算法总结

高精度算法总结(C++)A+a,A−a,A∗a,A/aA+a,A-a,A*a,A/aA+a,A−a,A∗a,A/a 四种大整数运算核心:将A的每一位放在数组里,且第0位存放个位数字,即逆序存放高精度加法核心:Ai+Bi+tAi + Bi + tAi+Bi+t参考题目:LeetCode989#include <iostream>#include <cstrin...

2019-12-22 15:31:16 237

原创 二叉树的遍历总结

二叉树的遍历总结前序遍历[leetcode144]遍历方式:“根结点-左孩子-右孩子”递归(Recursive)/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeN...

2019-12-09 16:48:09 236

原创 Shell编程--运算符

02- Shell编程–运算符标签: Shell文章目录02- Shell编程--运算符Shell运算符算术运算符关系运算符布尔运算符字符串运算符文件测试运算符Shell运算符Bash 支持很多运算符,包括算数运算符、关系运算符、布尔运算符、字符串运算符和文件测试运算符。算术运算符原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk和 expr,expr 最常用...

2019-11-27 15:59:14 168

原创 Shell编程--入门

01- Shell脚本学习–入门标签: Shell文章目录01- Shell脚本学习--入门简介Hello World注释打印输出变量定义定义变量使用变量变量类型特殊变量`$*` 和 `$@` 的区别退出状态转义字符命令替换变量替换一个完整的shell示例简介Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本。Unix/Linux上常见的Shell脚本解释器有bash、s...

2019-11-27 15:09:06 146

原创 vim的私人订制

最近恶补嵌入式的知识,希望能做一些嵌入式和机器视觉相结合的有意思的东西。习惯了IDE,vim编写需要一些插件才能更高效。今天总结一下。安装插件管理Vundle克隆项目到本地git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim配置vimrc文件set nocompatible...

2019-11-21 15:54:25 326

原创 docker的安装和配置

第一次接触docker这个词是中兴的HR面时,今年的秋招虽然已经结束了,但是中兴的那位软件工程师还是让我印象深刻,他给了我很多未来的建议,在这由衷得感谢他。虽然没有成为同事,他向我推荐的docker我还是决定学一下。Docker是个啥?Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可...

2019-11-20 11:27:14 158

原创 ubuntu开机出现initramfs解决办法

造成原因:虚拟机强制关机后Windows主机同时强制关机造成的!第一步:执行命令:fsck /dev/sda1 -y第二步:当出现FILE SYSTEM WAS MODIFIED这个的时候,就表示已经成功了第三步:reboot,重启即可...

2019-11-20 10:09:38 1672

原创 最大公约数和最小公倍数的极简代码

最小公倍数int lcm(int a, int b){ for (int i = a;; i++) if (i % a == 0 && i % b == 0) return i;}最大公约数int gcd(int a, int b){ for (int i = a; i; i--) if (a % i =...

2019-11-14 15:01:46 444

原创 愿我们每天都持续进步

1.01365=37.81.01^{365} = 37.81.01365=37.80.99365=0.030.99^{365} = 0.030.99365=0.03

2019-11-11 22:34:32 153

原创 如何保存Windows10锁屏聚焦的图片

保存Windows聚焦锁屏图片win + E — 切换到查看选项卡 — 勾选隐藏的项目复选框,以便显示所有隐藏的文件和文件夹。在系统盘搜索路径:C:\Users\guitar27\AppData\Local\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets其中guita...

2019-11-04 20:09:56 1321

Computer Vision with OpenCV 3 and Qt5

《Computer Vision with OpenCV 3 and Qt5》目前国内还没有电子版资源,本人通过.epub转换成pdf。因为最近在学习OpenCV在Qt5上的搭建,苦恼没有学习的资源,最终在一个国外网站上找到,2018年1月最新出版,内容绝对够新鲜。

2018-07-21

《guide to high quality CPP and C programming》高质量的CPP和C程序

guide to high quality CPP and C programming一书有效的告诉我们高质量的代码究竟应该怎么写,你真的会写代码么,这本书给你答案。

2018-03-25

空空如也

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

TA关注的人

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