自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(161)
  • 资源 (3)
  • 收藏
  • 关注

原创 为何一些包的Priority在apt-cache和deb文件当中的不一样

Debian存在一个override的机制,会覆盖掉deb文件里面的部分值,具体细节可参考: https://wiki.debian.org/FtpMaster/Override

2024-09-06 16:12:41 238

翻译 rt kernel原理简介

RT 的基本原理是分解主线内核中任意长的抢占/中断禁用部分

2024-08-14 15:50:47 73

原创 bcc,bpftrace和libbpf的关系

ref:

2024-08-05 17:17:22 160

原创 C语言以科学计数法的格式打印

前几日工作中有以科学计数法输出的需要,当时不知道库函数就有对应的格式,还自己写了一个,昨日经理说库函数自带,发现库函数的确支持。linux执行man 3 printf,可以在手册中看到如下描述e, EThe double argument is rounded and converted in the style [-]d.ddde±dd where there is one digit before the decimal-point character and the number of dig

2022-04-21 15:59:22 3374

原创 为什么一些宏不用{}而用do{}while(0)

自从工作依赖偶尔会在代码里见到一些do{}while(0)形式的宏定义,但是当初并不知道这样做的目的是什么,总觉得单单用一下{}就可以实现相同的功能了。最近在看linux内核源码,里面有一堆do{}while(0)的宏,于是查了一下,发现有的情况只能用do{}while(0)的形式来定义宏,用单纯的{}会导致报错。实验代码如下:#include <stdio.h>#define MACRO_DO_WHILE_ZERO(enable, fmt, args...)do { if (enab

2022-03-31 09:12:38 524 1

原创 3门问题以及N门问题模拟(C语言)

C语言模拟三门问题,付源码及运行结果。

2021-12-31 08:27:35 1419

原创 文件截取小工具

最近工作上有从整个flash镜像中截取某一段的需求,在网上找了一圈没找到好用的工具,于是自己写了一个小工具,在linux上编译一下即可使用,源码如下,使用方法见文章末尾。#include <stdio.h>#include <stdlib.h>unsigned long simple_strtoul(const char *cp,char **endp,unsigned int base){ unsigned long result = 0,value; if (*c

2021-11-05 15:56:11 310

原创 mt7621芯片更换ram

最近公司设备的内存占用率过高,经常性的导致设备挂掉,于是准备换一个ram。解决方案:在openwrt目录下,进入target/linux/ramips/dts目录,找到设备使用的CPU型号对应的dts文件,然后修改其中内容。将memory的reg的值改成对应的ram大小,然后重新编译即可。...

2021-08-20 11:10:51 1120 6

原创 git stash指定文件

示例:stash单个文件temp.cgit stash push temp.cgit stash -- temp.cgit stash push -m "test" temp.c注意:部分git版本无法stash,我在Windows上面用的git版本是git version 2.10.0.windows.1。这个版本是无法执行上述命令的,在这个版本上,stash的用法如下:usage: git stash list [<options>] or: git stash show

2021-07-06 16:22:26 18901

原创 《操作系统概念精要》实践题答案

答案链接

2021-06-15 10:24:26 1028

原创 c语言覆盖文件指定内容

偶尔会有覆盖文件的某一部分的需求,用c写了一个小工具,这是工具的功能实现的主要细节。代码功能:将现存的temp.txt文件的0x100到0x200地址全部填充成0xff。#include <stdio.h>int main(int argc, char **argv){ FILE *fp = NULL; int write_size = 0x100; int offset = 0x100; fp = fopen("temp.txt"

2021-02-21 14:58:31 5017

原创 linux更改使用者 shell 设定

chsh或者usermod命令chsh -s /bin/bash tempuserusermod -s /bin/bash tempuser

2021-01-25 16:38:35 290

原创 《精通git》笔记之九(重置揭密)

三棵树理解 reset 和 checkout 的最简方法,就是以 Git 的思维框架(将其作为内容管理器)来管理三棵不同的树。“树” 在我们这里的实际意思是 “文件的集合”,而不是指特定的数据结构。(在某些情况下索引看起来并不像一棵树,不过我们现在的目的是用简单的方式思考它。)Git 作为一个系统,是以它的一般操作来管理并操纵这三棵树的:树用途HEAD上一次提交的快照,下一次提交的父结点Index预期的下一次提交的快照Working Directory沙盒HE

2021-01-19 15:50:28 206

原创 《精通git》笔记之九(重写历史)

先确认默认编辑器不是nano,nano编辑器可能用不习惯,需要改一下默认的编辑器git默认的编辑器为nano,不常用,需要修改为vim,方法如下:打开.git/config文件,在core中添加 editor=vim即可。或者运行命令 git config –global core.editor vim 修改更加方便。重写历史你可以在将暂存区内容提交前决定哪些文件进入提交,可以通过 stash 命令来决定不与某些内容工作,也可以重写已经发生的提交就像它们以另一种方式发生的一样。这可能涉及改变提交

2021-01-18 16:13:01 228

原创 ahk捕捉连续按esc键

~Esc:: if (A_PriorHotkey <> "~Esc" or A_TimeSincePriorHotkey > 400) { return } Send Esc quick click{enter}return

2021-01-15 15:22:57 948 1

原创 《精通git》笔记之九(储藏与清理、签署工作、搜索)

储藏与清理储藏会处理工作目录的脏的状态 - 即修改的跟踪文件与暂存改动 - 然后将未完成的修改保存到一个栈上,可以在任何时候重新应用这些改动。储藏工作示例$ git statusChanges to be committed: (use "git reset HEAD <file>..." to unstage)modified: index.htmlChanges not staged for commit: (use "git add <file>..."

2021-01-15 15:16:24 330

原创 《精通git》笔记之八(选择修订版本、交互式暂存)

选择修订版本简短的 SHA-1Git 十分智能,只需要提供 SHA-1 的前几个字符就可以获得对应的那次提交,当然,提供的 SHA-1 字符数量不得少于 4 个,并且没有歧义——也就是说,当前仓库中只有一个对象以这段 SHA-1 开头。例如查看一次指定的提交,假设执行 git log 命令来查看之前新增一个功能的那次提交:$ git logcommit 734713bc047d87bf7eac9674765ae793478c50d3Author: Scott Chacon <schacon

2021-01-14 15:25:22 166

原创 《精通git》笔记之七(服务器上面的git)

此外,希望合作者们即使在你的电脑未联机时亦能存取仓库 — 拥有一个更可靠的公用仓库十分有用。因此,与他人合作的最佳方法即是建立一个你与合作者们都有权利访问,且可从那里推送和拉取资料的共用仓库。一个远程仓库通常只是一个裸仓库(bare repository)— 即一个没有当前工作目录的仓库。因为该仓库仅仅作为合作媒介,不需要从磁碟检查快照;存放的只有 Git 的资料。简单的说,裸仓库就是专案目录内的 .git 子目录内容,不包含其他资料。协议Git 可以使用四种主要的协议来传输资料:本地协议(Local

2021-01-11 14:45:38 179

原创 《精通git》笔记之六(变基)

在 Git 中整合来自不同分支的修改主要有两种方法:merge 以及 rebase。整合分支最容易的方法是 merge 命令。它会把两个分支的最新快照(C3 和 C4)以及二者最近的共同祖先(C2)进行三方合并,合并的结果是生成一个新的快照(并提交)。可以提取在 C4 中引入的补丁和修改,然后在 C3 的基础上再应用一次。在 Git 中,这种操作就叫做变基。可以使用 rebase 命令将提交到某一分支上的所有修改都移至另一分支上。$ git checkout experiment$ git reb

2021-01-07 11:24:21 137

原创 《精通git》笔记之五(分支新建与合并、分支管理、与分支有关的工作流、远程分支)

分支新建与合并分支的新建想要新建一个分支并同时切换到那个分支上,你可以运行一个带有 -b 参数的 git checkout 命令:$ git checkout -b iss53Switched to a new branch "iss53"它是下面两条命令的简写:$ git branch iss53$ git checkout iss53执行命令:$ vim index.html$ git commit -a -m 'added a new footer [issue 53]'

2021-01-05 16:14:40 250

原创 《精通git》笔记之四(分支简介)

分支简介Git 保存的不是文件的变化或者差异,而是一系列不同时刻的文件快照。在进行提交操作时,Git 会保存一个提交对象(commit object)。该提交对象会包含一个指向暂存内容快照的指针。但不仅仅是这样,该提交对象还包含了作者的姓名和邮箱、提交时输入的信息以及指向它的父对象的指针。首次提交产生的提交对象没有父对象,普通提交操作产生的提交对象有一个父对象,而由多个分支合并产生的提交对象有多个父对象。示例$ git add README test.rb LICENSE$ git commit

2020-12-17 16:49:32 204

原创 《精通git》笔记之四(git基础)

撤销提交有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。此时,可以运行带有 --amend 选项的提交命令尝试重新提交:$ git commit --amend例如,你提交后发现忘记了暂存某些需要的修改,可以像下面这样操作:$ git commit -m 'initial commit'$ git add forgotten_file$ git commit --amend最终你只会有一个提交 - 第二次提交将代替第一次提交的结果。取消暂存命令:git reset

2020-12-16 15:29:33 145

原创 《精通git》笔记之三(git基础 git log)

想回顾下提交历史.执行 git log 命令。$ git loggit log常用选项选项意义-p按补丁格式显示每个更新之间的差异。–stat显示每次更新的文件修改统计信息。–shortstat只显示 --stat 中最后的行数修改添加移除统计。–name-only仅在提交信息后显示已修改的文件清单。–name-status显示新增、修改、删除的文件清单。–abbrev-commit仅显示 SHA-1 的前几个字符,而非所有的 40 个字

2020-12-16 14:56:06 182

原创 《精通git》笔记之二(git基础)

如果你打算使用 Git 来对现有的项目进行管理,你只需要进入该项目目录并输入:$ git init该命令将创建一个名为 .git 的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件,这些文件是Git 仓库的骨干。克隆仓库的命令格式是 git clone [url] 。比如,要克隆 Git 的可链接库 libgit2,可以用下面的命令:$ git clone https://github.com/libgit2/libgit2这会在当前目录下创建一个名为 “libgit2” 的目录

2020-12-14 14:47:05 128

原创 linux kernel学习笔记(hrtimer使用示例)

#include <linux/module.h>#include <linux/hrtimer.h>struct hrtimer timer;int called_cnt = 0;static enum hrtimer_restart monitor_handler(struct hrtimer * hrtimer){ printk("timer function called %d times\n", ++called_cnt); hrtimer_forwar

2020-12-14 13:41:02 439

原创 《精通git》笔记(一)

分布式版本控制系统(Distributed Version Control System,简称 DVCS)中,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。每一次的克隆操作,实际上都是一次对代码仓库的完整备份。如果文件没有修改,Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。Git 对待数据更像是一个 快照流。Git 中所有数据在存储前都计算校验和,然后以校验和来引用。Git 有三种状态:已提交(committed)、已修改(modified)和已暂存(stag

2020-12-11 14:38:55 263

原创 linux kernel学习笔记(打印所有进程部分信息)

//task_struct.c#include <linux/init.h>#include <linux/module.h>#include <linux/kernel.h>#include <linux/init_task.h>#include <linux/sched.h>MODULE_LICENSE("GPL");static int __init print_pid(void){ int task_cnt = 0;

2020-12-10 15:49:19 688

原创 内核学习笔记(打印,加载,卸载)

helloword.c#include <linux/init.h>#include <linux/kernel.h>#include <linux/module.h>static int __init lkm_init(void){ printk("hello world\n"); return 0;}static void __exit lkm_exit(void){ printk("bye bye\n");}module_init(l

2020-11-12 10:41:05 218

原创 枚举子集的一种算法

int main() { int flipState = 0xb; cout << bitset<5>(flipState) << endl; for (int subState = flipState; subState; subState = flipState & (subState - 1)) { cout << bitset<5>(subState) << "\t";

2020-10-23 08:09:32 179

原创 git log --stat显示全部文件路径

--stat[=<width>[,<name-width>[,<count>]]] Generate a diffstat. By default, as much space as necessary will be used for the filename part, and the rest for the graph part. Maximum width defaults to terminal width, or 80 columns if not

2020-10-13 16:32:40 2837

原创 linux挂载windows文件夹以及部分相关问题

步骤:1、在windows上设置某一个文件夹为共享。2、而后在linux上切换到root用户进行挂载操作:执行命令:mount -t cifs -o username="user",password="userPassword",gid="user",uid="user" //192.168.1.164/share ./windows

2020-09-28 10:45:52 203

原创 chown递归更改

今天用别人的环境编译代码,图省事直接用了root用户,导致了别人无法继续编代码了(─.─||)解决方式如下:执行命令:获取组名id递归更改当前文件夹以及子文件夹的所有者chown -R mister:mister *...

2020-09-22 14:10:03 6984

原创 运算符优先级导致的bug

没记清楚运算符的优先级,第一次写出了这行代码。cpld_led_reg = cpld_led_reg&0x00ff + reg_val<<8;出现了bug,然后改写成cpld_led_reg = (cpld_led_reg&0x00ff) + reg_val<<8;又出现了bug,然后改写成cpld_led_reg = (cpld_led_reg&0x00ff) + (reg_val<<8);解决了。决定了,以后凡是用到了两种以

2020-09-15 11:34:41 149

原创 二叉树后续遍历(非递归版本)

刷题发现了一个没见过的后序遍历代码,很有趣,mark一下,以后复习。 vector<int> postorderTraversal(TreeNode* root) { vector<int> ans; if(root==NULL) return ans; stack<TreeNode*> nodes(root); while(!nodes.empty()) { root=nodes.top(); nodes.pop(); i

2020-08-24 16:42:56 118

原创 ahk数值型变量、数值型转字符串、循环控制、条件判断 综合小示例

^b:: num:=0 while (num < 8) { num++ Send %num% is an if (mod(num, 2) = 1) Send {space}odd number else Send {space}even number Send {space}{enter} Sleep 100 }Return运行效果:

2020-06-22 17:10:40 2160

原创 git每日提交的小脚本

#!/bin/bashdate_str=`date +%Y/%m/%d/%H:%M`user_name=`whoami`git add .git commit -m "$date_str $user_name daily commit"每天执行的效果如下所示(名字、hash已经打码)

2020-05-13 17:58:48 251

原创 git回滚单个文件到指定版本

长话短说,获取hash值,checkout到对应的hash,后面记得带文件路径。

2020-05-13 15:15:52 1169

原创 C语言dbm和mW相互转换算法

double dbmToMw( double dbm ){ double mW; mW = dbm/10; mW = pow( 10.0, mW ); return mW;}double mwToDbm( double mW ){ double dbm; dbm = 10*log10(mW); return dbm;}

2020-05-13 14:19:20 1138

原创 git基本操作

基本概念:treemeans工作区存放当前写的代码暂存区临时存储,提交时需要先将修改增加至此本地库存储着历史提交的版本,可用于历史版本恢复将远端的更改拉取到本地git pull将工作区的修改增加至暂存区git add <file>将暂存区的数据提交至本地库git commit -m "log message"将本地库的更改...

2020-04-01 16:26:01 266

原创 CRC校验代码简单注解

unsigned short CRC16_CCITT(unsigned char *puchMsg, unsigned int usDataLen){ ;//根据CRC16的标准选择初值CRCIn的值 unsigned short wCRCin = 0x0000 unsigned short wCPoly = 0x1021; unsigned char wChar = 0; whil...

2020-03-26 15:33:18 564

Object.zip

QTimeLine使用的案例,从其他项目中提取出来的,其中还有三个类似仪表盘的控件。 博文:https://blog.csdn.net/The_perfect_world/article/details/98333147

2019-08-03

qt实现简易计算器

qt实现简易计算器,实现简单加减乘除,并可以实现乘除优先运算。

2019-04-25

qt入门学习之一:登陆框居中,判断name与password是否相同

qt入门学习之一:登陆框居中,判断name与password是否相同,若相同用qDebug输出字符串,否则不做处理。个人练手,没有实际用途,不要下载。

2019-04-22

空空如也

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

TA关注的人

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