自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

halazi100

总结分享,共同进步

  • 博客(534)
  • 资源 (5)
  • 收藏
  • 关注

原创 层次状态机设计指导

当前状态没有匹配到转换但其父状态可以匹配到对应的事件Event及警备条件Guard为真或无警备条件的转换,则执行父状态的转换,如果父状态仍然没有匹配到但父状态的父状态可以匹配则执行父状态的父状态匹配的转换……即当事件发生时如果子状态有匹配的转换则执行子状态的转换,否则不断向上匹配父状态的转换,直至匹配到合适的转换并执行或者所有祖先都不匹配什么转换也不执行。历史状态有向外的迁移,表示如果历史状态空白,那么迁移到指定的默认目标状态,否则迁移到原来记忆的状态。离开C时,执行C的出口活动y=1,y值为1。

2023-03-18 23:32:17 1332

原创 如何生成coredump并解析

如何生成coredump并解析。

2023-07-05 15:47:59 1377

原创 C++异步定时器设计与实现

用于创建定时器,有三个参数,分别是定时时长(单位毫秒),超时callback用于定时器到期的回调,定时器类型(单次还是循环定时器);

2023-06-12 14:20:36 2669

原创 cppcheck代码检查工具安装与使用技巧

cppcheck代码检查工具安装与使用技巧Cppcheck 是一种 C/C++ 代码缺陷静态检查工具。不同于 C/C++ 编译器及很多其它分析工具,它不检查代码中的语法错误。Cppcheck 可以检查非标准代码,包括不同的编译器扩展、内联汇编代码等。Cppcheck 可以检测到在测试和评估软件时错过的一些 bug。

2023-03-22 16:39:25 3550 1

原创 消息序列化工具-为现代C++设计的jsoncpp介绍与使用技巧

JSON 的全称为:JavaScript Object Notation,顾名思义,JSON 是用于标记 Javascript 对象的,JSON 官方的解释为:JSON 是一种轻量级的数据传输格式。本文并不详细介绍 JSON 本身的细节,旨在讨论如何使用 C++ 语言来处理 JSON。关于 JSON 更具体的信息,可参见 JSON 官网:http://www.json.org。

2023-03-22 11:28:16 533

原创 消息序列化工具-protobuf介绍及安装使用技巧

protobuf将一种结构称为一个message类型,对应C/C++中的struct;我们以电话簿中的数据为例。int32 id;其中Person是message这种结构的名称,name、id、email是其中的Field,每个Field保存着一种数据类型,=后面的1、2、3是Filed对应的id。id在1-15之间编码只需要占一个字节,包括Filed数据类型和Filed对应数字id,在16-2047之间编码需要占两个字节,所以最常用的数据对应id要尽量小一些。

2023-03-22 10:58:34 868

原创 使用clang-format工具格式化代码风格

也可以是file,此时clang-format使用当前目录或父目录下的。可以根据这个配置进行自定义,形成自己的风格。如果想查看默认配置,可以dump出来,可以自定义风格配置文件并命名为。放到当前目录或父目录,然后通过。

2023-02-13 14:01:54 905

原创 vscode安装配置clang-format插件及使用

如果只配置当前工程,可以将配置添加到当前的code-workspace文件。最新的扩展 c/c++ 里集成了 clang-format。文件放置在当前工作目录,也可以放置在父目录。确认clang-format可执行程序路径。在vscode扩展里搜索。如下基于google的风格进行的定制。如果没找到这个程序,走第3步。如果已经有这个程序,走第4步。

2023-02-13 13:58:35 8193

转载 Socket读写处理及连接断开的检测

作为进程间通信及网络通信的一种重要技术,在实际的开发中,socket编程是经常被用到的。本文主要探讨如何更好地进行socket读写处理,以及如何检测连接断开。

2022-10-20 12:51:51 2781 2

原创 git与ssh配置方法及注意事项

git与ssh配置方法及注意事项。

2022-09-02 15:46:53 681

原创 浮点数探秘

浮点数在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到。

2022-07-18 17:30:57 788

原创 C语言深度剖析笔记2

函数类型加*即可直接声明函数指针类型可通过函数类型定义函数指针先定义函数指针类型,在定义函数指针变量也可以直接定义函数指针-`pointer`为函数指针变量名-`type`为指向函数的返回值类型-`parameterlist`为指向函数的参数类型列表typedef是用来定义(重命名)类型的;没有typedef会直接定义一个变量;程序中的声明可理解为预先告诉编译器实体的存在,如类型,变量,函数等等;程序中的定义明确指示编译器实体的意义;声明和定义的不同;变量与,和。......

2022-07-18 11:11:24 338

原创 C语言深度剖析笔记1

define定义宏常量可以出现在代码的任何地方;#define从本行开始,之后的代码都可以使用这个宏常量;\cpp\c.ppt\cpp\c.ppt以上宏定义都是没有语法错误的;PATH_3等价于D\cpp\c.ppt宏也可以给一个计算公式起名字;宏可以使用参数表示计算公式中未知的内容,参数的个数没有限制;宏的参数可以代表任何东西,所以宏的参数是没有类型的;带参数的宏是采用二次替换的方式处理的;用来给计算公式起名的宏中不能定义自己的变量;#define#define#define。......

2022-07-18 11:10:45 552

原创 vscode通过ssh远程连接服务器

打开vscode扩展商店,搜索直接下载安装即可。如果远程服务器没有则先创建 然后将公钥的内容追加到远程服务器的在vscode打开控制面板(Windows按,linux按)输入,选择ssh配置文件,如; 后写上远程服务器的标签,便于自己识别,如; 后写上远程服务器的实际ip地址,如; 后写上远程服务器上的实际用户名,如; 后面写上本地ssh目录下的ssh key文件,如然后打开控制面板,输入,设置为刚刚设置的ssh配置文件,如;打开控制面板,输入,然后选择远程服务器的标签如即可连接。,,输入

2022-07-07 16:09:04 4088 1

原创 C/C++ struct数据对齐补齐

struct成员对齐,总体补齐

2022-07-06 15:04:00 1408

原创 Linux系统操作基础

Linux系统操作基础Linux操作系统是一个多用户的操作系统;每一个用户需要使用对应的账号登录后才可以操作;

2022-06-13 13:28:45 345

原创 windows-bat批处理脚本编程总结

windows-BAT脚本编程总结to move one or more files:to rename a directory:在cmd中输入,如即可查看系统给出的帮助文件。REM为注释命令,该命令后的内容不被执行,但能回显。暂停执行并给出提示每个命令结束可以查看是否执行成功,默认值为0,非0表示出错。attr是代表控制台的背景色和前景色的两个十六进制值 系统变量 返回当前日期。使用与 date /t 命令相同的格式。 系统变量 返回当前时间。使用与 time /t 命令相同的格式。 系统变量 返

2022-06-09 14:24:34 2507 1

原创 Android-将stdout输出重定向到文件

Android-将stdout输出重定向到文件由于自己的代码中使用了供应商的lib文件,而供应商的lib中日志输出使用的是printf,所以无法在android系统log中查看对应的日志信息。

2022-06-08 13:49:28 1008

原创 C++UML类图的关系

C++UML类图的关系在C++中UML主要用来描述软件中类和对象以及它们的静态关系。类图主要是用来显示系统中的类、接口以及它们之间的静态结构和关系的一种静态模型。类图的3个基本组件:类名;属性;方法;可见性(visibility):+ public- private# protected实例个数(multiplicity)0..1, 无实例,或者1个实例;1, 只有一个实例;0..*, 任意个实例;1..*, 1个以上实例;常见的UML类图关系泛化(General

2022-05-26 13:49:27 745

原创 ubuntu-2204 gerrit ssh 报错Permission denied (publickey).分析及解决

ubuntu-2204 gerrit/git ssh 报错Permission denied (publickey).分析及解决使用repo init/sync下载代码时遇到报错: Permission denied (publickey).分析排查步骤通过以下步骤排查以下user及10.100.1.115为化名$ ssh -p 29418 [email protected] authenticity of host '[10.100.1.115]:29418 ([10.100.1.1

2022-04-29 14:56:42 8423 9

原创 为ubuntu创建一个管理用户用来管理user用户

为ubuntu创建一个vmsetup用户用来管理user用户系统安装时创建user用户如果没有创建可以用以下命令sudo useradd -m -s /bin/bash -G sudo usersudo passwd user登录user后创建vmsetup用户sudo useradd -m -s /bin/bash -G sudo vmsetupsudo passwd vmsetup为user和vmsetup用户添加权限sudo visudo命令sudo visudo实际是在修改

2022-04-25 16:11:22 1386

原创 一个简单的vim配置文件

以下展示一个简单的vim配置文件,请保存到用户宿主目录下的~/.vimrcset nu"" the general indentation settingset tabstop=4set shiftwidth=4set softtabstop=4" set expandtabset noautoindent"" match and display for searchingset ignorecaseset smartcaseset incsearchset nohlsearch

2022-04-25 15:34:47 593

原创 Android-Hal-C++打印调用栈

Android-Hal-C++打印调用栈debuggerd是android的一个daemon进程,负责在进程出错异常时,将进程的运行时信息给dump出来供分析。debuggerd的core dump数据,被保存在 /data/tombstone/ 目录下,共可保存10个文件,当超过10个时,会覆盖最早生产的文件。在debug时,一般情况下,当程序出现异常时会自动将core dump信息保存起来。当需要手动调试自己的程序并需要主动打印调用栈时,可以使用Android的callstack库。使用步骤如下

2022-04-14 17:40:15 3632

原创 undefined reference to xxx 问题总结

undefined reference to xxx 问题总结GCC编译过程预处理Pre-Processing;宏展开等,可以生成.i文件编译Compiling(狭义的编译);进行语法分析,转换成汇编语言,生成.s文件汇编Assembling;把汇编语言代码转换成目标代码,生成.o文件连接Linking;连接器ld将as创建的目标文件转换为可执行文件,生成a.out文件代码的基本语法与格式错误一般是在前几个阶段被发现的,在最后一步即连接时才会报错 undefined reference

2022-03-30 19:15:07 1012

原创 C++string与vector及buffer互相转换

1. char buffer[] 与 string 互转buffer --> stringstring str(buffer);str.assign(buffer);str.assign(buffer, strlen(buffer)); // (char *start, length)str.assign(buffer, sizeof(buffer)/sizeof(buffer[0])-1); // (char *start, length)string --> buffer

2022-03-17 13:26:20 1224

原创 C++ Lambda表达式

C++Lambda表达式C++ 11 中的 Lambda 表达式用于定义并创建匿名的函数对象,以简化编程工作。1. Lambda 的语法形式如下:[参数捕获列表] (函数参数列表) mutable 或 exception 声明 -> 返回值类型 { Lambda函数体 }可以看到,Lambda 主要分为五个部分:[参数捕获列表](函数参数列表)mutable 或 exception 声明-> 返回值类型{ Lambda函数体 }2. Lambda 语法分析2.1 [

2022-02-15 14:45:53 1051

原创 C/C++中枚举值转字符串的技巧

在C、C++中经常需要定义枚举值,或根据枚举值来获取对应的枚举字符串,以下示例巧妙的利用宏的特性来实现,请参考。

2022-02-09 14:47:03 11675 4

原创 vscode安装配置与应用技巧总结

vscode安装配置总结安装VSCode下载链接: https://code.visualstudio.com/比如 version=1.63.0https://update.code.visualstudio.com/{version}/win32-x64-user/stableWindows 64 bit User installerhttps://update.code.visualstudio.com/{version}/linux-deb-arm64/stableLinux...

2022-01-05 12:08:55 1829

原创 安全驾驶学习实践总结

点刹成金、备刹成性、跟刹必行、缓刹推进。:量化后视镜盲区,后视镜盲区消除技巧,周期性瞟内扫外。和操作熟练,停位准确。

2021-12-10 17:30:09 2523

原创 virtualbox虚拟磁盘disk管理-转vdi-压缩空间

virtualbox虚拟磁盘disk管理-转vdi-压缩空间linux系统侧的操作给分区设置LABEL,可以使用以下命令$ sudo tune2fs -L toolkits /dev/sdf1查看结果$ sudo blkid /dev/sdf1/dev/sdf1: LABEL="toolkits" UUID="3c0633c0-fc64-4252-adae-c124ebeb2962" TYPE="ext4"修改分区UUID号,可以使用以下命令$ uuidgen73cd2ce6-99ec

2021-12-09 13:10:32 1003

原创 virtualbox虚拟机添加虚拟磁盘disk的步骤

virtualbox虚拟机添加虚拟磁盘disk的步骤1. 创建虚拟硬盘为virtualbox虚拟机添加虚拟硬盘打开virtualbox-> 管理 -> 虚拟介质管理 -> 创建 ->确认虚拟文件位置和文件大小上限如500G,类型选VDI,动态分配 -> 创建;也可以选择向导模式为VMware虚拟机添加虚拟磁盘打开虚拟机-> 虚拟机设置 -> 磁盘 -> add -> hard disk -> next -> next -

2021-12-09 12:57:38 4639

原创 OpenEuler-21.09安装vscode/vscodium

vscode 发布的二进制包并不是MIT许可证的,并且包含了遥测和跟踪,这对于一部分自由软件信仰者来说难以接受。VSCodium 是微软流行的 Visual Studio Code 编辑器的一个分支。它与 VS Code 完全相同,唯一不同的是,VSCodium 不跟踪你的使用数据。以下给出vscode/vscodium的安装方法,可择一安装。安装vscodium方式1. 在线安装vscodium参考自 https://vscodium.com/安装密钥和仓库sudo rpmkeys .

2021-11-29 13:11:21 2518 1

原创 OpenEuler-21.09安装chrome浏览器

OpenEuler-21.09安装chrome浏览器从官网上下载rpm安装包,如 google-chrome-stable_current_x86_64.rpm然后使用dnf localinstall命令安装sudo dnf localinstall google-chrome-stable_current_x86_64.rpm安装完成后打开chrome浏览器(主要要使用普通用户才能打开,root用户无法启动chrome浏览器);第一次打开chrom会有个弹窗提醒: 将google chrom

2021-11-26 15:23:38 3341

原创 virtualbox添加共享目录的方法

virtualbox添加共享目录的方法在virtualbox中安装linux系统后设置共享目录以便在windows主机和linux虚拟机共享目录1. 安装虚拟机增强工具启动linux虚拟机后回到virtualbox菜单栏选择[设备]-[安装增强工具],然后VBoxGuestAdditions.iso会被挂载到虚拟机上;进入虚拟机linux系统打开文件浏览器,找到挂载VBoxGuestAdditions.iso的节点并进入目录;双击autorun.sh或者右击选择[在终端中打开]打开终端并自动cd

2021-11-10 15:15:53 1350

原创 openEuler-21.09 dnf update时EPOL仓库报错解决

问题现象$ sudo dnf updateEPOLErrors during downloading metadata for repository 'EPOL': -Status code: 404 for htpp://repo.openeuler.org/openEuler-21.09/EPOL/repomd.xml (IP: 159.138.**.***)Error: Failed to download metadata for repo 'EPOL': Cannot downlo

2021-11-10 10:35:56 1564

原创 Linux常用发行版

大众的Ubuntu锐意的Fedora老牌的RedHat优雅的LinuxMint华丽的OpenSUSE稳健的OpenEuler自由的Debian简洁的Slackware本土化的Deepin其中OpenEuler和Deepin为国内主导的发行版。OpenEuler主要应用于服务器、边缘计算、云计算与嵌入式场景。Deepin主要应用于个人及办公桌面。...

2021-11-10 10:07:43 755

原创 C++函数调用栈使用进阶

函数调用栈高级用法当程序运行异常退出时自动打印当前的函数调用栈,便于分析定位问题;设计思路:设计一个C++类 CallStack, 该类封装函数调用栈相关信息的搜集与组装;设计一个C函数 callstack_dump(), 该接口创建一个函数调用栈类实例对象并输出函数调用栈;设计一个信号处理函数 signal_SEGV_handler(int),该接口用于调用上一步的API;使用上一步设计的函数,注册为信号处理函数;模仿android封装一个callstack类CallStack头文件

2021-07-20 13:26:05 753

原创 C++中记录并解析函数调用栈callstack

glibc中提供了backtrace()和backtrace_symbols()两个函数来输出和解析程序的call stack,输出程序运行时调用栈信息可以通过命令man backtrace查看具体帮忙信息。#include <execinfo.h>int backtrace(void **buffer, int size);char **backtrace_symbols(void *const *buffer, int size);使用backtrace()函数获取调用栈

2021-07-13 15:57:42 2346

原创 编译连接技巧-使用pkg-config配置选项

pkg-config是一个linux下的命令,用于获得某一个库/模块的所有编译相关的信息。如果要使用第三方的头文件和库文件,在编译、链接的时候,必须要指定这些头文件和库文件的位置。对于一个比较大第三方库,其头文件和库文件的数量是比较多的。如果我们一个个手动地写,那将是相当麻烦的。所以,pkg-config就应运而生了。pkg-config能够把这些头文件和库文件的位置指出来,给编译器使用。pkg-config命令是通过查询XXX.pc文件获得某一个库/模块的所有编译相关的信息的。但pkg-conf

2021-07-06 14:04:30 1443

原创 Ubuntu更换国内镜像源

Ubuntu更换163镜像源以20.04(focal)为例,首先将原来的/etc/apt/sources.list文件备份sudo cp /etc/apt/sources.list /etc/apt/sources.list.bk然后将以下内容覆盖到/etc/apt/sources.list文件deb http://mirrors.163.com/ubuntu/ focal main restricted universe multiversedeb http://mirrors.1

2021-04-19 14:57:22 1370 2

AnalysePlugin-v1.12-R43-all.zip for notepad++

Features Filtering log files It is designed to treat log-files of typical size like 60MB. More features can be found in the help dialogue of the plugin. https://sourceforge.net/projects/analyseplugin/

2020-02-11

vim使用入门进阶教程

文本编辑器概述 vi编辑器简介 模式切换与使用 基本操作命令 高级功能及其他选项 配置 插件使用 文本编辑器概述 vi编辑器简介 模式切换与使用 基本操作命令 高级功能及其他选项 配置 插件使用

2015-10-30

linux应用基础学习笔记

该文献为本人自学Linux所整理笔记,可任由传播复制以承Linux开源精神,特此声明。 该文献为本人自学Linux所整理笔记,可任由传播复制以承Linux开源精神,特此声明。 该文献为本人自学Linux所整理笔记,可任由传播复制以承Linux开源精神,特此声明。

2015-10-30

git-2.6.1-32bit

git是一个功能强大的分布式版本管理系统

2015-10-12

vim完全配置包括配置文档及plugins,解压到适当位置即可

vim完全配置,包括配置文档及plugins,解压到适当位置即可;

2015-10-12

空空如也

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

TA关注的人

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