自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(336)
  • 资源 (8)
  • 收藏
  • 关注

原创 macos自动制作dmg安装包脚本

【代码】macos自动制作dmg安装包脚本。

2024-12-20 17:41:46 485

原创 spdlog 打印 int 变量为十六进制格式

在使用 spdlog 打印 int 变量为十六进制格式时,可以使用格式化字符串来指定输出格式。spdlog 支持 C++ 的格式化字符串,并允许你轻松地以十六进制格式打印整数。{:#x}: 以小写字母的形式打印十六进制数,并带有 0x 前缀。{:x}: 以小写字母的形式打印十六进制数,不带前缀。{:X}: 以大写字母的形式打印十六进制数。十六进制值 (小写): ff。十六进制值 (大写): FF。十六进制值: 0xff。

2024-11-26 16:06:50 407

原创 在 Ubuntu 18.04 中搭建和测试 DNS 服务器

在 Ubuntu 18.04 中搭建和测试 DNS 服务器可以通过安装和配置BIND(Berkeley Internet Name Domain)来实现。

2024-11-11 15:42:40 700

原创 macos中安装和设置ninja

这一步若报错:autoreconf: command not found,说明未安装automake,执行第2步安装automark;若执行成功直接执行第3步。(也可直接下载最新的release压缩包,并解压。下载地址:https://github.com/skvadrik/re2c/releases)/.bash_profile文件中,设置alias=/Users/mac/code/ninja/ninja,没起作用。以上步骤完成之后,接着执行第1步。

2024-11-07 21:13:33 725 1

原创 windows中使用vscode的remote-ssh连接linux失败

在Windows的目录下解压(免安装):C:\user1\Programs\PortableGit-2.46.0-64-bit\。[14:36:31.126]Install terminal quit with output:过程试图写入的管道不存在。[14:36:31.126]Received install output:过程试图写入的管道不存在。设置vscode的 Remote-SSH:Ctrl + Shift + p。过程试图写入的管道不存在。

2024-08-23 15:25:59 557 1

原创 如何在ubuntu 18.04中升级python 3.6到3.7

这意味着当我们运行python3时,它将作为python3.6执行,但我们希望将其作为python3.7执行。请记住,选择号可能会有所不同,因此请选择适用于Python 3.7的选择号。使用命令python3 -V,可发现输出为python 3.6.8, 使用以下步骤升级python3 至python 3.7。4)至此,Python 3.7已安装在您的Ubuntu系统上,可以使用了。5)将Python 3.6和Python 3.7添加到更新替代项。6)更新Python 3以指向Python 3.7。

2024-03-20 23:11:08 1127

原创 ubuntu root登陆桌面及ssh失败

1,在终端中输入如下命令,打开文件将打开的文件中第三行语句前加#,如下注释掉语句 “#auth required pam_succeed_if.so user!2,保存并退出,继续在终端执行将打开的文件中第三行语句前加#, 如下注释掉语句 “#auth required pam_succeed_if.so user!3,保存并退出。在终端继续执行将打开的文件中“mesg n 2> /dev/null || true” 改为4,保存并退出。5,重启电脑,即可以root用户登录。

2024-03-09 10:44:20 1035

原创 博客摘录「 Nginx—Linux系统配置Nginx代理服务器的详细步骤(一)」2023年12月1日

设置正向代理服务器,当然前提是要知道正向代理服务器的。

2024-02-25 20:36:31 423

原创 Linux的expect工具完成命令行参数传递及可执行文件注入shell脚本

a.out每次只能得出一个结果,且需要根据提示,手动输入不同的参数。注:__EOF__需要顶头编写。

2024-02-20 20:56:00 767

原创 gdb调试std::list和std::vector等容器的方法

GDB中print方法并不能直接打印STL容器中保存的变量,其实只要http://www.yolinux.com/TUTORIALS/src/dbinit_stl_views-1.03.txt这个文件保存为~/.gdbinit 就可以使用它提供的方法方便调试容器。2.3、添加“set auto-load safe-path ./”到./.gdbinit文件中,相当于禁用了安全路径的保护;指定启动文件:~/.gdbinit,下面的方法任选其一。/.gdbinit文件中,使该文件可以被加载;

2024-01-27 14:37:49 1331

原创 多进程的共享内存中使用互斥量同步数据

功能:父子进程在共享内存中互斥累加数据(counter)。

2023-12-22 18:14:41 502

原创 Linux的ps简单实现

原理:遍历下的/proc/%s/task/%s/status所有文件,两个%s都为pid号。注:多线程下,只打印一个pid/task下的所有目录,即可收集各个线程对应的信息。

2023-12-11 22:24:03 394

原创 __attribute__((__used__)) 和 __attribute__((__section__(“*“ “*“)))的使用

C语言注册函数和调用函数。见:haproxy代码。

2023-11-06 20:23:35 636

原创 Docker容器内用户与宿主机用户同名不同ID的问题

注:在Docker容器中,ubuntu用户登陆,不要使用sudo去修改ubuntu的uid和gid,会提示:“sudo: unknown uid 1000: who are you?”,发生骑驴找驴的问题。使用宿主机的同名用户登陆Docker容器,执行文件修改操作,提示:Permission denied.影响:会导致使用ubuntu的同名用户进入Docker容器后,修改文件和创建目录等操作没有权限。(1)在Docker容器中,使用root账户,修改ubuntu用户的uid和gid。

2023-10-24 20:17:33 1405

原创 Qt Creator使用Clang Format方法

习惯性的想格式化代码,发现Qt Creator默认居然是没有代码格式化的,只有一个缩进。Qt Creater中有个插件:beautifier,在"帮助->关于"插件中,开启“Beautifier”即可(会提醒需要重启Qt creator)。注:Qt Creator安装包中不包含这个格式化工具,它的作用是调用格式化工具进行格式化。官方的说支持三种外部格式化工具:Artistic Style、ClangFormat、Uncrustify 。这里仅以 ClangFormat 来说明:ClangFormat

2023-08-31 12:45:19 1281

原创 ubuntu freeradius 3.0 + mariadb

【代码】ubuntu freeradius 3.0 + mariadb。

2023-07-14 22:56:08 451

原创 ubuntu 18.04 radius 服务安装配置

缺点:每次新增用户都需要重启服务端服务,且用户新增用户方式不友好,需要修改/etc/freeradius/3.0/users文件。解决方案:radius + 数据库。注:注意tab对齐。

2023-07-09 16:59:22 1703

原创 在Ubuntu中安装和设置samba

1、安装Samba服务2、配置samba2.1 先备份sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak,以防改错,修改配置文件时建议养成备份的好习惯,改错了还能恢复.2.2 sudo vim /etc/samba/smb.conf 修改配置,添加共享,可直接加到文件尾4、添加samba用户添加samba用户,用于其他人或设备认证,这里添加的用户需要在系统账号中存在,否则添加失败。

2023-06-11 08:12:52 7587

原创 关于python的第一行代码的理解

usr/bin/env python3 这种用法是为了防止操作系统用户没有将 python3 装在默认的 /usr/bin 路径里。/usr/bin/python3 是告诉操作系统执行这个脚本的时候,调用 /usr/bin 下的 python3 解释器;/usr/bin/env python3 会去环境设置寻找 python3 目录,推荐这种写法。/usr/bin/python 被忽略,等同于注释。/usr/bin/python 指定解释器的路径。

2023-05-08 15:39:09 1118

原创 centos 7修改用户名

1、使用root用户进行修改devel用户名为test。2、修改sudoers中,devel为test。3、修改设备的用户名dev-1为tst-1。

2023-04-15 17:04:14 3719

原创 linux下统计网络字节数

linux下统计网络字节数。

2022-12-08 14:44:18 286

原创 Qt has modification time xxx s in the future

现象:编译Qt程序时,提示warning: File ‘/opt/Qt5.12.8/5.12.8/gcc_64/mkspecs/linux-g++/qmake.conf’ has modification time 716043631 s in the future。发现设备上的Qt目录的时间戳都是2045年,由于安装Qt时,系统没有安装ntp,导致系统没有同步时间,因此安装后的Qt文件都是2045年。(1)在unbuntu上安装ntp,获取正确的时间。(2)批量更新目录的时间戳。

2022-10-15 21:18:54 1211

原创 error: ‘make_unique‘ is not a member of ‘std‘

【代码】error: 'make_unique' is not a member of 'std'

2022-09-21 21:12:25 1919

原创 ubuntu程序崩溃时没有生成coredump文件的解决办法

ubuntu程序崩溃但没有生成core文件1、下载工具:2、开启产生core3、如果程序发生了core dump,使用coredumpctl list查看有没有产生core文件。4、查看core文件的压缩包5、使用liblz4-tool提供的命令解压lz4文件。

2022-06-01 09:28:50 2857

原创 c++ priority_queue的简单使用

1、priority_queue<float, vector< float>, less< float>> 注:默认是less#include <iostream>#include <queue>#include <vector>using namespace std;void test_1(void){ cout << endl << "test_1: " << endl;

2022-04-19 10:20:25 926

原创 【shell】 =~的使用

如下:read -p "need compile OEM installatoin package?yes/[no]" IS_OEMif [[ "Yes" =~ $IS_OEM || "yes" =~ $IS_OEM ]]then ...fineed compile OEM installatoin package?yes/[no]yneed compile OEM installatoin package?yes/[no]Yneed compile OEM install

2022-03-31 16:23:33 14151 2

原创 Linux系统中通过流量定位进程

问题:系统的虚拟网卡有一个莫名的流量一直存在,不知道是系统中的什么进程发出的?目标:根据流量的dst+dport查找对应的进程。1、在系统中,使用tcpdump工具,锁定流量的目的IP地址(11.178.11.150:80)。#sudo tcpdump -i tun0 -n09:04:47.452332 IP 111.111.111.100.32980 > 111.178.11.150.80: Flags [S], seq 2183603593, win 64240, options [mss

2022-03-22 09:45:55 1134

原创 c++ 移动语义与拷贝

移动语义:传统 C++ 通过拷贝构造函数和赋值操作符为类对象设计了拷贝/复制的概念,但为了实现对资源的移动操作, 调用者必须使用先复制、再析构的方式,否则就需要自己实现移动对象的接口。 试想,搬家的时候是把家里的东西直接搬到新家去,而不是将所有东西复制一份(重买)再放到新家、 再把原来的东西全部扔掉(销毁),这是非常反人类的一件事情。传统的 C++ 没有区分『移动』和『拷贝』的概念,造成了大量的数据拷贝,浪费时间和空间。 右值引用的出现恰好就解决了这两个概念的混淆问题,例如:移动语义:~/tes

2022-03-09 10:53:42 950

原创 c++ lambda的按值访问和按引用访问

$ cat test2.cpp#include <iostream>using namespace std;void lambda_test(void){ int x = 2; int y = 10; auto lambda = [x, &y] { //此处x = 2,会影响测试1和测试2中的x。 cout << "x: " << x << endl; cout <&l

2022-03-02 09:52:27 938

原创 c++中关于默认值的设置

测试代码:$ cat test4.cpp#include <iostream>using namespace std;void func(int a, int b, int c = 10);void func2(int a, int b, int c);int main(int argc, char *const argv[]){ func(1, 2); func(1, 2, 3); func2(1, 2); //oops !!!!! fun

2022-02-28 10:30:42 1652

原创 cmake CMAKE_CXX_COMPILER_VERSION 检查失败

1、CMakeLists.txt文件:$ cat ../CMakeLists.txtcmake_minimum_required(VERSION 2.8)project(MyTinySTL)# versionset(MyTinySTL_VERSION_MAJOR 2)set(MyTinySTL_VERSION_MINOR 0)set(MyTinySTL_VERSION_PATCH 0)set(MyTinySTL_VERSION "${MyTinySTL_VERSION_MAJOR}.${

2022-02-19 12:54:39 3777

原创 c++ map用法

#include <iostream>#include <map>using namespace std;class Test_t { private: int a; public: Test_t(int a) { this->a = a; } ~Test_t() { cout << "des

2022-02-16 10:45:21 343

原创 Qt使用命令行编译pro

1、无pro文件的情况下:该情况下,一般是纯代码编写程序,写好程序后,需要生成pro文件后,才能编译。生成pro文件的方法:$ qmake -project注: 生成pro文件后,需要手动在pro文件的最后添加一行代码:greaterThan(QT_MAJOR_VERSION, 4):QT +=widgets2、有pro文件的情况下:该情况下,是已经根据代码((纯命令行程序或带图形化界面程序))生成pro文件,使用Qtcreator可正常编译,但想通过shell脚本替代Qtcreator进

2022-01-21 10:12:28 4097

原创 多线程的条件变量使用

上面的例子来自《Linux环境高级程序设计》- 黄茹,会出现死锁等待的情况,如下两个例子中,一个是对上面的问题的优化,另一个用于熟悉条件变量的使用。#include <stdio.h>#include <stdlib.h>#include <pthread.h>#include <string.h>#include <unistd.h>pthread_mutex_t mutex;pthread_cond_t empty;pthr.

2021-10-20 11:18:04 196

原创 centos7安装mariadb

参考:https://www.cnblogs.com/yhongji/p/9783065.html# yum install mariadb-server# yum install mariadb-devel问题:cannot find -lmysqlclient;(1)先确认一下是否已安装mariadb-devel,执行:# rpm -qa | grep mariadbmariadb-server-5.5.68-1.el7.x86_64mariadb-5.5.68-1.el7.x86_64

2021-10-11 20:10:38 468

原创 c++从一个map复制到另一个map

$ cat test_map.cpp#include <iostream>#include <map>using namespace std;class Test { public: int a; int b; Test(int a, int b) { this->a = a; this->b = b; }

2021-08-09 17:04:43 11324

原创 使用PuTTY上传和下载文件

使用PuTTY(C:\Program Files\PuTTY)上传或下载文件;双击运行该psftp.exe,可使用open打开远程主机、cd改变远程目录、lcd改变本地目录、ls查看远程文件列表、put上传文件、get下载文件等命令login in and upload file:psftp> open 192.168.3.13login as: useruser@192.168.3.13's password:Remote working directory is /home/user

2021-08-07 10:05:18 10941

原创 Linux下Perf的使用

Perf安装:Perf的源代码,一般都是内置在linux内核源码的tool目录下的。一般如下是可以的:sudo apt-get install linux-sourcecd /usr/srccd tools/perfmake && make install

2021-07-25 23:25:43 266

原创 centos8安装汇编环境

nasm安装官网:https://www.nasm.us/su -c 'curl https://www.nasm.us/nasm.repo | tee /etc/yum.repos.d/nasm.repo'yum install nasm注:su -c command : 切换到root用户并执行command。tee: 用于重定向到文件

2021-07-25 10:30:59 355

原创 Linux 配置6rd过程

3.2 Linux的配置步骤:三台Linux虚拟构建网络拓扑。#配置CE设备ip address add 192.168.110.27 dev eth0ip link set eth0 upip tunnel add kali006rd mode sit local 192.168.110.27ip tunnel 6rd dev kali006rd 6rd-prefix 2012:db8::/32 6rd-relay_prefix 192.168.147.136/32ip link set k

2021-05-13 14:45:11 764

Flex_&_Bison.zip

介绍Flex及Bison使用的高清pdf。

2021-04-21

Linux’s IPsec implementation.pdf

描述IPsec 在Linux下的实现及背景内容,包含Linux下IPsec工具,内核IPsec支持等内容。

2021-04-21

the java programming language fourth editionArnoldGoslingHolmes06

the java programming language fourth editionArnoldGoslingHolmes06 Direct from the creators of the Java™ programming language, the completely revised fourth edition of The Java™ Programming Language is an indispensable resource for novice and advanced programmers alike. Developers around the world have used previous editions to quickly gain a deep understanding of the Java programming language, its design goals, and how to use it most effectively in real-world development. Now, Ken Arnold, James Gosling, and David Holmes have updated this classic to reflect the major enhancements in Java™ 2 Standard Edition 5.0 (J2SE™ 5.0). The authors systematically cover most classes in Java's main packages, java.lang.*, java.util, and java.io, presenting in-depth explanations of why these classes work as they do, with informative examples. Several new chapters and major sections have been added, and every chapter has been updated to reflect today's best practices for building robust, efficient, and maintainable Java software.

2014-08-30

vivi-boot loader

初始化本阶段要使用到的硬件设备。 检测系统内存映射(memory map)。 将 kernel 映像和根文件系统映像从 flash 上读到 RAM 空间中。 为内核设置启动参数。 调用内核。 1.1 Boot Loader 的 stage1 1.1.1 基本的硬件初始化 这是 Boot Loader 一开始就执行的操作,其目的是为 stage2 的执行以及随后的 kernel 的执行准备好一些基本的硬件环境。它通常包括以下步骤(以执行的先后顺序): 1. 屏蔽所有的中断。为中断提供服务通常是 OS 设备驱动程序的责任,因此在 Boot Loader 的执行全过程中可以不必响应任何中断。中断屏蔽可以通过写 CPU 的中断屏蔽寄存器或状态寄存器(比如 ARM 的 CPSR 寄存器)来完成。 2. 设置 CPU 的速度和时钟频率。 3. RAM 初始化。包括正确地设置系统的内存控制器的功能寄存器以及各内存库控制寄存器等。 4. 初始化 LED。典型地,通过 GPIO 来驱动 LED,其目的是表明系统的状态是 OK 还是 Error。如果板子上没有 LED,那么也可以通过初始化 UART 向串口打印 Boot Loader 的 Logo 字符信息来完成这一点。 5. 关闭 CPU 内部指令/数据 cache。 VIVI在第一阶段完成以下任务

2014-08-30

BootLoader技术内幕

本文详细地介绍了基于嵌入式系统中的 OS 启动加载程序 ―― Boot Loader 的概念、软 件设计的主要任务以及结构框架等内容。 一、引言 在专用的嵌入式板子运行 GNU/Linux 系统已经变得越来越流行。一个嵌入式 Linux 系统 从软件的角度看通常可以分为四个层次: 1. 引导加载程序。包括固化在固件(firmware)中的 boot 代码(可选),和 Boot Loader 两大部分。 2. Linux 内核。特定于嵌入式板子的定制内核以及内核的启动参数。 3. 文件系统。包括根文件系统和建立于 Flash 内存设备之上文件系统。通常用 ram disk 来作为 root fs。 4. 用户应用程序。特定于用户的应用程序。有时在用户应用程序和内核层之间可能还会包 括一个嵌入式图形用户界面。常用的嵌入式 GUI 有:MicroWindows 和 MiniGUI 懂。 引导加载程序是系统加电后运行的第一段软件代码。回忆一下 PC 的体系结构我们可以知 道,PC 机中的引导加载程序由 BIOS(其本质就是一段固件程序)和位于硬盘 MBR 中的 OS Boot Loader(比如,LILO 和 GRUB 等)一起组成。BIOS 在完成硬件检测和资源分配后 ,将硬盘 MBR 中的 Boot Loader 读到系统的 RAM 中,然后将控制权交给 OS Boot Load er。Boot Loader 的主要运行任务就是将内核映象从硬盘上读到 RAM 中,然后跳转到内核 的入口点去运行,也即开始启动操作系统。

2014-08-30

ascii-码表

ASCII码使用指定的7位或8位二进制数组合来表示128或256种可能的字符。标准ASCII码也叫基础ASCII码,使用7位二进制数来表示所有的大写和小写字母,数字0到9、标点符号,以及在美式英语中使用的特殊控制字符(这里需要特别注意:ASCII码与标准ASCII码的位数上的区分,标准ASCII码是7位二进制表示)。 十进制编码 (对应)缩写字符(或功能/解释) 0 NUL(null) 空字符 1 SOH(start of headline) 标题开始 2 STX (start of text) 正文开始 3 ETX(end of text) 正文结束 4 EOT (end of transmission) 传输结束 5 ENQ (enquiry) 请求 6 ACK (acknowledge) 收到通知 7 BEL (bell) 响铃 8 BS (backspace) 退格 9 HT (horizontal tab) 水平制表符 10 LF (NL line feed, new line) 换行键 11 VT (vertical tab) 垂直制表符 12 FF (NP form feed, new page) 换页键 13 CR (carriage return) 回车键 14 SO (shift out) 不用切换 15 SI (shift in) 启用切换 16 DLE (data link escape) 数据链路转义 17 DC1 (device control 1) 设备控制1 18 DC2 (device control 2) 设备控制2 19 DC3 (device control 3) 设备控制3 20 DC4 (device control 4) 设备控制4 21 NAK (negative acknowledge) 拒绝接收 22 SYN (synchronous idle) 同步空闲 23 ETB (end of trans. block) 传输块结束 24 CAN (cancel) 取消 25 EM (end of medium) 介质中断 26 SUB (substitute) 替补 27 ESC (escape) 换码(溢出) 28 FS (file separator) 文件分割符 29 GS (group separator) 分组符 30 RS (record separator) 记录分离符 31 US (unit separator) 单元分隔符 32 space 空格 33 ! 34 " 35 # 36 $ 37 %

2014-08-30

空空如也

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

TA关注的人

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