自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(171)
  • 资源 (1)
  • 收藏
  • 关注

原创 2020年的回顾和感触

2020年是我们都想从时空中删除掉的一年,原因只有一个——太糟了! 开年就受疫情的作为一名天蝎er,不会把什么事情都摆到明面上,因为拿出来的话太张扬,还是喜欢蛰伏的感觉(虽然自身也不咋样吧^_^)。最近抖音上有个段子听的快吐了,但不妨碍句子本身很有道理,“你要悄悄拔尖,然后惊艳所有人”。在今年年初遭受到人生的重大挫折,抑郁了好久,抑郁症的可怕我算是体会到了,自卑,极度的自卑,幸亏有朋友和家人开导才走出那阵阴霾。低谷之后就是上升期了,为了减肥开始健身,一个月成功...

2020-12-15 20:40:45 216

原创 本人开通个人博客,欢迎访问!

本人开通新个人博客,欢迎各位点击访问新博客地址,点击访问 ====》 JeffCheng95博客是采用Github+Hexo搭建的免费个人博客。为啥用github管理呢,采用Github管理博客的好处多多:全是静态文件,访问速度快;免费方便,不用花一分钱就可以搭建一个自由的个人博客,不需要服务器不需要后台;可以随意绑定自己的域名,不仔细看的话根本看不出来你的网站是基于github的...

2019-09-23 10:48:02 162

原创 终于开通个人公众号啦!

从大学之初就听说了一位老友开通了自己的公众号,羡慕不已,当时还处在刚会用微信的阶段,很小很单纯,觉得有了自己的公众号那岂不是天下所有人都能看到自己写的东西?不就跟新闻联播一样了,那得多么风光。 很快我就明白了自己的年少无知。到今天,看过那么多公众号,其中有一批真的对我的帮助挺大,但也有相当一批公众号毫无营养,在此我要引以为戒。 对于我...

2019-01-25 09:54:43 989 1

转载 python的protobuf 版本对repeated数据类型的处理

首先定义出proto文件:syntax = "proto2";package tutorial;message Person { required string name = 1; required int32 id = 2; optional string email = 3; enum PhoneType { MOBILE = 0; HOME = 1; WORK = 2; } message PhoneNumber { r...

2022-01-06 19:09:50 336

原创 Linux查看可执行程序所在路径

首先通过命令获得进程PID:如6998,然后执行下述命令cd /proc/6998ls -l或直接ls -l /proc/6998其中exe所在行即为可执行文件的全路经。如图

2021-10-26 20:08:34 390

转载 mac下编译ffmpeg

1、源码地址下载下载地址git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg2、进入下载目录cd ffmpeg目录3、configure配置./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-nonfree --enable-libfdk-aac --enable-libx264 --enable-libx265 --enable-filter=delogo --

2021-09-28 19:42:11 73

原创 如何使用proto序列化cv::Mat对象?

要使用protobuf序列化OpenCV矩阵,可以通过使用FileStorage类从OpenCV中的XML/YAML/JSON序列化中获得灵感。要实现标题目的所有需要的信息是行数、列数、元素类型、元素大小和矩阵的原始数据。例,proto定义如下:syntax = "proto3";package opencv;message OcvMat { int32 rows = 1; int32 cols = 2; int32 elt_type = 3; int32.

2021-09-08 11:48:38 234 1

转载 Core了咋办啊?

一、背景在我们日常的开发生成环境中,常常能见到程序突然间的core掉,程序core会带来非常严重的风险,程序为什么会core?core分为那些场景?如何去追根溯源这些core的发生?我将在这个wiki中简单介绍下在查core过程中的一些工具以及小技巧。二、Core分类线上的core分为很多场景,主要涉及启动core、运行core、退出core,每种场景对应程序运行的不同阶段,每个阶段又可以细分为具体小场景,这里做了个大概分类。 运行阶段 可能原因

2021-07-06 18:44:19 128

转载 如何快速定位程序Core?

1. 程序Core定义及分类程序core是指应用程序无法在保持正常running状态而发生的崩溃行为。程序core时会生成相关的core-dump文件,core-dump文件是程序崩溃时程序状态的数据备份。core-dump文件包含内存、处理器、寄存器、程序计数器、栈指针等状态信息。我们可以借助core-dump文件分析定位程序Core的原因。这里我们从三个方面对程序Core进行分类:机器、资源、程序Bug。下表对常见的Core原因进行了分类: 分类 原因

2021-07-06 18:36:54 241

原创 如何只cherry-pick 一个commit里面的某几个文件而不是全部?

问题描述:有时候我们做cherry pick的时候不想把整个commit 都pick过来,典型的原因比如:commit里面只有一个或几个文件对我们自己的branch是有用的。解决方案:试验下来,觉得最简单的方式是:git cherry-pick -n <commit_id>-n 的意思是:-n, --no-commit don't automatically commit如果commit里面有多个文件,执行此命令后需要先unstage 并恢复不想要...

2021-04-06 23:36:43 319

转载 kubectl logs和docker logs输出日志不同的问题

kubectl logs用来查询pod日志docker logs用来查询容器日志问题描述但是近期在分析日志时发现一个问题,kubectl logs查询pod日志输出的不全,和对应容器docker logs查询输出的日志相去甚远,kubectl logs查询出来的日志比查询容器日志少了将近三分之一。而且容器的日志也会出现丢失的现象,日志并不是从容器启动的那一刻开始记录的,貌似部分日志被清理了。问题分析首先,当看到kubectl logs输出的日志的时候,就觉得不对,开始时间就有问题,没有pod

2021-04-04 11:36:59 1492

转载 Linux 命令中 more、less、head、tail 命令的用法

more 命令功能类似 cat ,cat 命令是将整个文件的内容从上到下显示在屏幕上。 more 命令会一页一页的显示,方便使用者逐页阅读,而最基本的指令就是按空白键(space)往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能 。more 命令从前向后读取文件,因此在启动时就加载整个文件。(1)命令格式more [选项] 文件(2)常用参数参数 描述+n 从笫 n 行开始显示-n 定义屏幕大小为 n 行+/pattern 在每个档...

2021-04-04 11:35:20 109

转载 Gflags开源库使用--解析命令行参数

一、简介gflags是Google的一个命令行参数处理的开源库,使用C++开发,具备Python接口,可以替代getopt。gflags支持从环境变量、配置文件读取参数。gflags使用起来比getopt方便,但是不支持参数缩写(例如getopt支持--list缩写成-l,gflags不支持)。gflags不支持列表,用户可通过借助string参数实现:可看作以逗号分隔的参数列表:DEFINE_string(languages, “english, french, german, chi.

2021-03-27 01:45:52 386

原创 C++宏定义中#和##的用法

前段时间很到了宏定义中的新知识:#与##,感觉打开了新天地的大门。首先来介绍一下这两种功能:##的用法是负责将其后面的东西转化为字符串,比如:#define TO_STRING(str) #strint main(){ cout << TO_STRING(this is a string) << endl; return 0;}这段代码中,TO_STRING宏就会将括号中的内容转化为字符串,生成"this is a string",然后由co...

2021-03-27 01:09:49 812

原创 Linux下常用压缩 解压命令和压缩比率对比

常用的格式有: tar, tar.gz(tgz), tar.bz2,不同方式,压缩和解压方式所耗CPU时间和压缩比率也差异也比较大。1. tar 只是打包动作,相当于归档处理,不做压缩;解压也一样,只是把归档文件释放出来。(1)打包归档格式:tar -cvf examples.tar files|dir#说明:-c, --create create a new archive 创建一个归档文件-v, --verbose verbosely list files processed

2021-03-21 18:13:44 1570 1

转载 Kubectl常用命令大全

参考:https://www.jianshu.com/p/07455dbfd6bbKubectl 常用参数分类基础命令:create,delete,get,run,expose,set,explain,editcreate 命令:根据文件或者输入来创建资源# 创建Deployment和Service资源$ kubectl create -f demo-deployment.yaml$ kubectl create -f demo-service.yamldele..

2021-03-19 13:44:53 449

原创 生成独立的gcc调试文件及利用调试文件调试core文件

1、生成独立的gcc调试文件编译调试信息:gcc -g -o main main.c分离调试信息:objcopy--only-keep-debug main main.debug或者cp main main.debug strip--only-keep-debug main.debug从原始文件中剥离调试信息:objcopy --strip-debug main或者strip --strip-debug --strip-unneeded main通过..

2021-03-18 22:41:51 903

原创 linux如何将一个正在运行的进程转入到后台执行

要求:将一个正在当前前台执行的进程转入后台执行,并且要求退出shell后依然保持不退出进程。 ctrl+zto stop (pause) the program and get back to the shell bgto run it in the background disown -h [job-spec]where [job-spec] is the job number (like%1for the first running job; find about your n

2021-03-11 13:31:00 2209

原创 ProtoBuf 语法简介

一、简介。protobuf是由Google开发的一套对数据结构进行序列化的方法,可用做通信协议,数据存储格式,等等。其特点是不限语言、不限平台、扩展性强,就像XML一样。与XML相比,protobuf有以下特点:1、操作更简单。例如,我们要定义一个个人信息的结构,其中包括名称和邮箱地址两个部分。用XML定义如下:<person><name>John Doe</name><email>jdoe@example.com&...

2021-02-20 20:18:28 7976 1

转载 ProtoBuf 官方文档(二)- 语法指引(proto2)

翻译查阅外网资料过程中遇到的比较优秀的文章和资料,一是作为技术参考以便日后查阅,二是训练英文能力。此文翻译自 Protocol Buffers 官方文档 Language Guide 部分翻译为意译,不会照本宣科的字字对照翻译以下为原文内容翻译语法指引(proto2)本指南介绍如何使用 protocol buffer 语言来构造 protocol buffer 数据,包括 .proto 文件语法以及如何从 .proto 文件生成数据访问类。它涵盖了 protocol buffer 语言.

2021-02-20 19:40:05 335

原创 netstat命令查看 进程占用的端口 以及某个端口是否被占用

1 查看进程占用的端口(需要用到进程的pid)[root@localhost ~]# netstat -ntlp | grep 1221tcp 0 0 0.0.0.0:8750 0.0.0.0:* LISTEN 1221/./bin/sub_vid进程1221 占用端口8750;2 查看某个端口是否被占用[root@localhost ~]# netstat -ntlp | grep 8750t...

2021-02-20 17:46:32 1009

转载 C++11新增alignas关键字作用

alignas关键字用来设置内存中对齐方式,最小是8字节对齐,可以是16,32,64,128等。下面先写个alignas对齐的实际代码,等下再来说为什么会这样。#include <iostream>using namespace std; struct struct_Test1{ char c; int i; double d;}; struct alignas(8) struct_Test2{ char c; int i; double d;};

2021-02-20 11:36:26 685

转载 本地文件夹关联(添加)到git上

最近放假在家呆的有些废了,今天在家上完班打算把过去一年写的代码都整理一下,结果又忘了怎么把本地的文件夹上传到git上了。好吧好吧,这回记录下来,下次忘了再看吧。。。1、在git上新建一个project2、找到要上传的文件夹路径,右键空白处打开git bash3、git初始化$ git init4、git remote add origin "自己在三方代码托管平台上所创建仓库对应的地址"$ git remote add origin git@gitlab.com:thematic

2020-10-29 14:38:02 844

转载 C++11新特性:参数绑定——std::bind

概述std::bind函数定义在头文件functional中,是一个函数模板,它就像一个函数适配器,接受一个可调用对象(callable object),生成一个新的可调用对象来“适应”原对象的参数列表。一般而言,我们用它可以把一个原本接收N个参数的函数fn,通过绑定一些参数,返回一个接收M个(M可以大于N,但这么做没什么意义)参数的新函数。同时,使用std::bind函数还可以实现参数顺序调整等操作。函数原型std::bind函数有两种函数原型,定义如下:template< cl.

2020-10-22 22:08:18 319

转载 C++11之Lambda表达式

Lambda表达式C++11的一大特性就是引入了Lambda表达式,并在后续的C++14进行了加强。利用Lambda表达式,可以方便定义和创建匿名函数。一个Lambda表达式表示一个可调用单元,我们可以将其理解为一个未命名的内联函数。Lambda语法定义[capture list] (paramters list) mutable exception-> return type{function body}其中——capture list,捕获外部变量列表; paramte

2020-10-22 19:48:17 403

转载 关于typedef void (*sighandler_t)(int)的理解

最近,在学习Linux信号量时,看到signal函数中typedef的一个用法,觉得很有意思。于是就拿出来说道说道。 它定义了一个类型sighandler_t,表示指向返回值为void型(参数为int型)的函数(的)指针。它可以用来声明一个或多个函数指针。 sighandler_t sig1, sig2; 这个声明等价于下面这种晦涩难懂的写法: void (*sig1)(int), (*sig2)(int); 1. 关于typed...

2020-10-22 19:45:19 376 1

转载 C++17之『折叠表达式』

C++11 提供了可变模板参数包, 使函数可以接受任意数量的参数. 但在 C++11中展开参数包稍显麻烦, 而 C++17 的折叠表达式使得展开参数包变得容易,其基本语法是使用(...)的语法形式进行展开.支持的操作符折叠表达式支持 32 个操作符:+,-,*,/,%,^,&,|,=,<,>,<<,>>,+=,-=,*=,/=,%=,^=,&=,|=,<<=,>>=,==,...

2020-10-22 17:56:00 341

原创 VSCode不能C++代码跳转

把扩展插件 C/C++和C++ Intellinsense卸载在安装一下。

2020-10-22 16:19:46 4275

转载 SignalHandler 处理系统信号

在服务器端后台开发中,常常需要写 daemon 程序在后台默默执行一些任务。除了正常的逻辑之外,还需要考虑处理异常退出时怎么办。这时可以用到 signal 这个函数来注册异常信号的回调函数。示例#include <iostream>#include <csignal>#include <time.h>#include <stdlib.h>#include <unistd.h>using namespace std;void

2020-10-20 11:22:18 1430

转载 BOOST 之filesystem, path

目录[-]使用 boost::filesystem 的第一个程序 清单 1. 用于确定某个文件的类型是否为 Directory 的代码 了解 Boost path 对象 清单 2. 创建 Boost path 对象的方法 清单 3. 使用本机格式初始化 path 清单 4. 使用可移植格式初始化 path path 成员函数概述 清单 5. 使用 path::iterator(begin 和 end 接口) 清单 6. 路径字符串的串联 错误处理 清单 7. Boost 中的错误处理

2020-10-19 17:25:03 866

转载 prctl函数的应用

intprctl( intoption,unsigned long arg2,unsigned long arg3,unsigned long arg4,unsigned long arg5 )这个系统调用指令是为进程制定而设计的,明确的选择取决于option:PR_GET_PDEATHSIG :返回处理器信号;PR_SET_PDEATHSIG :arg2作为处理器信号pdeath被输入,正如其名,如果父进程不能再用,进程接受这个信号。PR_GET_DUMPABLE :返回处理器标...

2020-10-14 16:58:23 326

转载 TCP流量控制-滑动窗口机制

TCP窗口机制TCP header中有一个Window Size字段,它其实是指接收端的窗口,即接收窗口。用来告知发送端自己所能接收的数据量,从而达到一部分流控的目的。其实TCP在整个发送过程中,也在度量当前的网络状态,目的是为了维持一个健康稳定的发送过程,比如拥塞控制。因此,数据是在某些机制的控制下进行传输的,就是窗口机制。窗口缩放因子(Window Scaling)以前,window size最大为2的16次方,为65535,随着宽带不断提高,65535字节已经小了,为了突破限.

2020-09-03 10:07:32 971

原创 TCP拥塞控制算法分析

TCP拥塞避免拥塞控制就是防止过多的数据注入网络中,这样可以使网络中的路由器或链路不致过载。拥塞控制是一个全局性的过程,和流量控制不同,流量控制指点对点通信量的控制。超时重传机制超时重传机制主要是为了解决数据包在传输过程中丢失的问题。TCP每发送一个报文段,就会为这个报文段开启一个定时器,如果定时器溢出时仍然没有收到接收端的应答报文,那么TCP就认为这个报文段在传输过程中丢失,然后重新发送这个报文段。这便是超时重传机制举例:客户端请求发送”and hi”报文段时启动了定时器,..

2020-09-03 09:33:28 1073

转载 C++ 数值最大最小标识符一网打尽,INT_MIN/ INT_MAX/LONG_MIN/LONG_MAX 等等

Constant Meaning Value CHAR_BIT Number of bits in the smallest variable that is not a bit field. 8 SCHAR_MIN Minimum value for a variable of typesigned char. -128 SCHAR_MAX Maximum value for a variable of typesigned char. 12..

2020-08-24 14:58:41 286

转载 C++11模版元编程

1.概述  模版元编程(template metaprogram)是C++中最复杂也是威力最强大的编程范式,它是一种可以创建和操纵程序的程序。模版元编程完全不同于普通的运行期程序,它很独特,因为模版元程序的执行完全是在编译期,并且模版元程序操纵的数据不能是运行时变量,只能是编译期常量,不可修改,另外它用到的语法元素也是相当有限,不能使用运行期的一些语法,比如if-else,for等语句都不能用。因此,模版元编程需要很多技巧,常常需要类型重定义、枚举常量、继承、模板偏特化等方法来配合,因此编写模版元编程比

2020-08-12 23:08:01 627

转载 MySQL在线模拟平台

MySQL在线模拟平台1. http://sample.jimstone.com.cn/xsql/2. http://sqlfiddle.com/3. https://sqlbolt.com/lesson/select_queries_introduction4. https://www.w3resource.com/sql-exercises/sql-retrieve-from-table.php...

2020-08-10 17:23:10 459

原创 C/C++在程序中获取CPUID+网卡Mac的几种方法

直接上代码。命令行获取到结果之后需要将16值字符串转换成整数:int tolower(int c){ if (c >= 'A' && c <= 'Z') { return c + 'a' - 'A'; } else { return c; }}unsigned long htoul(char s[]){ int i; unsigned long n = 0; if (s[0] == '0' && (s[1]=='x' ||

2020-07-31 21:02:14 948 1

原创 基于ARM架构的芯片获取CPU信息(cpuID)的多种方法

由于工作的原因,要获取到ARM芯片的cpuid。了解下存储cpu信息的寄存器内容:CPUID寄存器内容:字段名:Implementer(venter 销售ID)|Variant(大版本号) | Architecture(架构版本)| Part Num(产品代码)|Revision(小版本号)基址偏移量: [31-24] | [23-20] | [19-16]

2020-07-31 20:52:30 5920 3

转载 SQL 语法速成手册

本文针对关系型数据库的一般语法。限于篇幅,本文侧重说明用法,不会展开讲解特性、原理。一、基本概念数据库术语 数据库(database)- 保存有组织的数据的容器(通常是一个文件或一组文件)。 数据表(table)- 某种特定类型数据的结构化清单。 模式(schema)- 关于数据库和表的布局及特性的信息。模式定义了数据在表中如何存储,包含存储什么样的数据,数据如何分解,各部分信息如何命名等信息。数据库和表都有模式。 列(column)- 表中的一个字段。所...

2020-07-06 09:17:02 99

原创 网络编程——C++实现socket通信(TCP)高并发之epoll模式

相关链接:TCP连接与释放、网络编程——C++实现socket通信(TCP)相关函数:服务端:socket()bind()listen()epoll_create() 高并发poll模式epoll_ctl()epoll_wait()accept()read() 或 recv()等write() 或 send()等close()客户端:socket()connect()write() 或 send()等read() 或 recv()等close()着重说明下epol

2020-06-29 14:15:49 1863 1

MFC实现高仿画板、绘图软件功能(带详细注释)

在VS2015环境下,利用MFC框架实现的一款高仿“画图”工具,实现绝大部分功能甚至更多创新点。(注释超详细) 实现了点、直线、曲线、折线、矩形、圆形、多边形等等形状,并且具有区域限制、鼠标捕捉等功能; 实现了不同笔型,包括铅笔、圆珠笔、荧光笔等等; 可以根据不同的笔设置不同的笔宽和笔色以及虚线、点线等等功能; 实现了多种画图工具,包括不限于橡皮、笔刷子、油漆桶、部分区域颜色填充、设置字体和颜色、添加文字; 实现放大镜功能等; 添加多个资源文件,制作工具栏,设置工具栏,实现滚动条滚屏操作等; 实现保存图片、关闭保存等等功能。 一句话概括一下,“画图”有的这里基本都有,“画图”没有的,这里还有。

2018-10-26

空空如也

空空如也

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

TA关注的人

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