- 博客(45)
- 资源 (2)
- 收藏
- 关注
原创 【实用手记】tcprewrite用法
[root@192.168.1.232 pcap]# tcprewrite -htcprewrite (tcprewrite) - Rewrite the packets in a pcap file.Usage: tcprewrite [ -<flag> [<val>] | --<name>[{=| }<val>] ]... -r, --portmap=str Rewrite TCP/UDP ports -s, ...
2022-05-09 15:59:04
1304
2
原创 将字符数组内的空格替换为%20
将字符数组URL化,将数组内的空格全部替换为%20#include <iostream>using namespace std;class Solution {public: void to_url(char* s, int n, char* d, int m) { char* tmp = d; for (int i = 0; i < n; i++) { if (s[i] == ' ')
2021-03-14 01:45:50
253
原创 删除字符数组里的空格
计数并去除字符数组里的空格#include <iostream>using namespace std;class Solution {public: int del_space(char* s, int n) { int count = 0; if (s == nullptr || n == 0) return count; // 用tmp指向s,由于删除操作后的字符串不长于原有字符串s,
2021-03-13 23:29:06
1711
转载 vmware + centos 7安装vmtools时提示The path "" is not a valid path to the 3.10.0-xxx.el7.x86_64 kernel h
vmware + centos 7安装vmtools时提示The path "" is not a valid path to the 3.10.0-327.el7.x86_64 kernel h
2018-04-16 10:34:13
2753
转载 值得学习的C语言开源项目
值得学习的C语言开源项目- 1. WebbenchWebbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。下载链接:http://home.tiscali.cz/~cz210552/...
2018-03-29 09:05:21
676
原创 Item 11:在赋值操作符中处理自我赋值【effective C++读书笔记】
在使用赋值操作符时要注意防止自我赋值的情况发生,例如a[j] = a[i]; //是否可能存在i=j的情况*px = *py; //是否可能指向相同处理方法如下:①在函数开头先进行判断(证同测试),确定值不等再进行赋值操作 ① 实现异常安全性的同时避免自我赋值问题,详见Item 29(异常安全)。这是一个常见且足够好的赋值操作符撰写方法:class Widget
2017-11-25 01:10:21
515
原创 Item 10:令赋值操作符返回一个this指针【effective C++读书笔记】
C++中赋值遵循右结合律,即int x, y, z;x = y = z = 15;相当于x = (y = (z = 15));为了实现如上的连续赋值,赋值操作符(包括+=,-=等等)必须返回一个引用指向操作符左侧实参:class Widget{public:… Widget& operator=(constWidget& rhs)//返回类型是个引用,指向
2017-11-24 21:06:25
345
原创 Item 9:绝不在构造和析构过程中调用虚函数【effective C++读书笔记】
考虑到构造函数调用的顺序,不要在构造函数调用虚函数。原因如下:①因为派生类对象的虚函数是由派生类给出实现的,而派生类的构造函数是在基类的构造函数调用结束之后再调用的,因此在构造函数中调用虚函数相当于是要求访问对象内部尚未初始化的成分(派生类的构造函数还没执行),这在C++中是不允许的。 ②当定义一个派生类对象时,派生类构造函数会被调用,但基类的构造函数一定会在之前调用,也就是说派生类对
2017-11-24 20:26:56
388
原创 Item 8:别让异常逃离析构函数【effective C++读书笔记】
不要让异常出现在析构函数里,如果是析构函数中调用的函数导致的异常,应在析构函数中对异常作出处理(try,catch),吞下异常(不传播)或结束程序。举例中close()是需要调用的函数。 ① 如果程序遭遇一个“于析构期间发生的错误”后无法继续执行,“强迫结束程序”是个合理选项,毕竟它可以阻止异常从析构
2017-11-24 16:47:16
344
原创 Item 7:为多态基类声明virtual析构函数【effective C++读书笔记】
为防止内存泄漏,多态性质的基类应该声明虚析构函数,任何类中只要包含有虚函数那么就应该声明虚析构函数。 “给基类一个虚析构函数”这个规则只适用于带多态性质的基类上,这种基类的设计目的是通过基类接口处理派生类对象。如果一个类本身不作为基类使用,或者不是为了具备多态性质,那么就不应该声明虚析构函数。 不要试图去继承诸如std::string、所有STL容器vector、list、tr
2017-11-23 22:18:30
310
原创 Item 6:若不想使用编译器自动生成的函数,就该明确拒绝【effective C++读书笔记】
一般来说,如果不希望类实现某个功能,只要不定义相关的功能函数即可,但在Item 5 中我们知道:一旦尝试调用拷贝构造函数或拷贝赋值运算符,编译器就会自动生成默认。 如果想要阻止对象拷贝操作,我们可以自定义一个uncopyable类,将拷贝构造函数和拷贝操作符声明为私有,不给出实现,再继承它:class Uncoptable{protected: //允许派
2017-11-23 21:49:27
373
原创 Item 5:了解C++默默编写并调用哪些函数【effective C++读书笔记】
C++编译器会自动为类创建默认构造函数、默认析构函数,如果使用到了拷贝操作,编译器也会创建默认拷贝构造函数以及默认拷贝赋值运算符。如果用户自行定义了以上内容,编译器则不会进行默认创建。 拷贝赋值运算符的行为基本上与拷贝构造函数一致,但存在以下情况,编译器会拒绝生成赋值操作符:①对一个内含引用成员的类进行赋值操作(C++不允许引用更改指向)②对一个内含const成员的类进行赋值操作
2017-11-23 20:53:52
283
原创 Item 4:确定对象被使用前已先被初始化【effective C++读书笔记】
使用未初始化的值可能会导致意料之外的结果,因此在使用前最好先做好初始化工作。存在规则用于描述“对象的初始化动作何时一定会发生,何时不一定发生”。一般来说,C part of C++(Item 1)初始化可能招致运行期成本,那么就不保证发生初始化,但对于non-C parts of C++则不然。例如数组(C)不保证其内容被初始化,而vector(STL)则不然。 对于内置类型,必须
2017-11-17 15:32:07
355
原创 Item 3:尽可能使用const【effective C++读书笔记】
const出现在星号左边,表示被指物是常量;出现在星号右边,表示指针自身是常量。const显式地表明哪些部分是不应修改的,增强了代码的可读性,同时也让编译器在检测到非法的修改操作时及时报错。const某些情况下可以避免将“==”写成“=”的错误另外,const成员函数可以操作const对象(const对象只能调用const成员函数而不能调用非const成员函数,非const对象可以调用
2017-11-16 08:48:54
329
原创 Item 2:尽量以const,enum,inline替换#define【effective C++读书笔记】
“宁可以编译器代替预处理器”。当使用宏定义的常量时,该符号在预编译时被直接替换为值,一旦出错则难以追踪(出错信息值显示该值而非该符号),因此最好以一个const常量代替。以下是两种特殊情况:①定义常量指针const char* const book = “effective_C++”;//注意需要两个const或者const std::string book(“effect
2017-11-15 10:09:52
317
原创 Item 1:视C++为一个语言联邦【effective C++读书笔记】
C++一开始只是C加上面向对象的特性,后来当C++逐渐成熟,又增添了许多新的特性以及观念。如异常对函数的结构化带来不同的做法(Item 29),模版(Item 41),以及STL。*如今C++已经是一种多重范型编程语言,它同时支持面向过程、面向对象、函数形式、泛型形式、元编程形式。 我们应该把C++视为①C②面向对象的C++③模版C++④STL 以上四种
2017-11-15 10:05:40
277
转载 OpenCV边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器
站在巨人的肩膀上,我们可以看的更远。感谢毛星云大大,学习了。
2017-10-15 13:08:39
809
转载 安装OpenCV:OpenCV 3.0、OpenCV 2.4.8、OpenCV 2.4.9 +VS 开发环境配置
在巨人的肩膀上,我们能看的更远。
2017-10-11 09:09:52
340
转载 shell的种类
Shell其实是一个有特殊功能的程序,主要是提供用户与内核交互操作的一个接口。它的位置介于用户界面和内核之间,工作流程是接收用户输入的命令并且进行解释(转换为计算机可以理解的机械码),然后将命令送入内核去执行。我们一般通过ssh远程登录系统并且打开shell,也有一些是直接在图形界面上直接打开终端的方式打开shell。后者主要用于ubuntu系统中。 这里主要介绍目前较为
2017-09-25 19:00:10
1052
原创 【实用手记】如何在当前终端打开一个相同路径的终端
对于这个问题,首先应该指出的是存在现成的快捷键:ctrl + shift + n 打开一个新的终端(当前路径)ctrl + shift + t 打开一个新的终端标签页(当前路径)其实linux下还有一种自定义快捷键的办法,那就是alias命令。
2017-08-17 16:58:52
4871
原创 如何将c语言的变量传递给shell脚本使用
在shell脚本中调用shell变量当然可以用$来表示变量,但是我们也会遇到需要往shell命令中传入c语言的参数的情况。可以看到,system函数的参数其实就是一个字符串,所以我们完全可以在传参的时候先对参数进行处理。
2017-08-15 13:19:12
4397
原创 【实用手记】IO函数原型
标准IO .....返回及使用文件指针fopen #include FILE *fopen(const char *path, const char *mode); FILE *fdopen(int fd, const char *mode);fclose #include int fclo
2017-07-24 14:10:08
361
原创 ARM板实现触控幻灯片
以前看到有些同学的项目,在ARM板上接着的LCD屏幕上播放动画,效果十分酷炫。后来自己也实现了,其基本无非就是控制LCD屏幕显示图片。以下就以24位图为例,介绍让LCD显示图片的方法。24位图是指由分别用8位二进制来表示图像B、G、R值的图片,亦即每个像素点都由24位组成。环境:ARM Cortex开发板(预装有Linux系统),PC(ubuntu)首先准备一张图片,可以菜单栏打开画图
2017-07-18 22:36:57
1097
原创 【实用手记】树莓派旋转屏幕
注:带有【实用手记】标题的文章主要用于临时备忘,内容不甚详尽,但之后也会视需要对相关知识进行完善。有时候我们在树莓派上进行开发,需要让屏幕旋转90°放置,这样的话我们需要对显示内容也进行旋转。打开终端,修改树莓派的config.txt文件:sudo gedit /boot/config.txt如果需要屏幕内容旋转90°,那么在config.txt文件里添加以下内容:
2017-05-25 15:35:52
9952
原创 【实用手记】Linux如何设置在当前目录下打开终端
我们在linux下进行操作时,经常会使用文件管理器图形化的界面快速的进行文件或文件夹的查找,在找到目标文件或文件夹后需要在当前目录下用命令行进行操作,此时打开一个新终端再使用cd指令跳转到当前文件夹是相当低效率的,接下来介绍直接在当前目录下打开终端的方法。首先进行插件的安装:sudo apt-get install nautilus-open-terminal然后重启系
2017-05-04 22:46:41
9252
3
原创 【实用手记】使用sed命令替换指定文件内容
sed跟awk一样,是功能十分强大的文件处理命令,全称stream editor。这里仅介绍最常见最实用的用法,替换指定文件内容:sed -i 's/src/dest/g' filepath
2017-05-04 22:08:34
1889
原创 【实用手记】linux下命令行查看图片
linux下使用命令行查看图片:eog picturepatheog,即linux的内置图片查看器 eye of gmone 的缩写。例如:eog xin.png
2017-05-04 21:57:06
45128
10
原创 Linux下如何使用jq解析json数据
jq是linux下一个解析json格式数据的实用工具,可以将在linux下一团糟的json数据按格式输出,还可以直接选中关键字打印出它的值。首先要进行安装:1.命令行安装sudo apt-get install jq如果你也跟我一样提示找不到jq包,那么可以用第二种方式。2.网址下载https://stedolan.github.io/jq/download/
2017-04-30 11:12:37
9535
原创 Linux下如何使用awk解析json数据
近期在做一个项目,调用api后返回了一个json格式的数据,由于博主没接触过js,不懂js一般是如何解析的json格式,恰好对awk比较熟悉,考虑到awk本身也是一种用于数据处理的工具,于是就有了以下用awk解析json的尝试。我们从调用api开始讲起,以下是我对face++的一个调用,直接运用shell命令的curl发送的post请求:curl -X POST "https://api-
2017-04-29 21:17:36
31949
4
原创 shell脚本第一行:#!/bin/bash的含义
相信有接触过shell脚本的同学们都应该知道,shell脚本的第一行一般会写有以下字样:#!/bin/bash或者#!/bin/sh或者#!/bin/awk比较常见的说法是:第一行的内容指定了shell脚本解释器的路径,而且这个指定路径只能放在文件的第一行但我们也知道,在shell脚本里符号#是作为注释符出现的,在其之后的同一行内容会被视为注释进而不执行那么第一行所
2017-04-04 10:04:36
81733
15
原创 Linux Shell脚本编程
Shell为弱类型语言,在使用变量时不指定类型。Shell脚本语言不需要编译就可以直接执行,但脚本文件默认没有执行权限,需要chmod添加执行权限: chmod +x test.sh 如果希望这个脚本文件只能由文件所有者执行(所属用户组和其他用户不可执行),那么可以将上面的命令改为: chmod u+x test.sh 脚本文件开头第一行指定b...
2017-03-05 09:54:28
475
原创 Shell 命令之 awk
awk是一中用于处理文本的编程语言工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一。不同于Shell的其他一些常见命令,它可以完成相对复杂的一些操作:样式装入、流控制、数学运算符、进程控制语句甚至于内置的变量和函数。可以说它具备了一个完整的语言所应具有的几乎所有特性。本文介绍awk的常见用法。
2017-03-04 13:58:21
849
原创 stc-isp检测不到单片机
以前有段时间在玩51,使用stc-isp烧录时经常性的出现差错,通过自己的多次排查以及网上资料还有前辈的帮助,也算是摸出了点出差错的门道来。有一句话很重要必须说在前面,那就是必须坚定一个信念:不能烧录肯定是哪里出问题,只要考虑问题够全面就一定能排查出故障所在!!其实很多人不喜欢硬件就是这么一个原因,经常因出现莫名其妙的错误又找不到出错根源而懊恼,归根结底,还是多思考多尝试多总结最重要!!稍
2017-01-02 23:15:29
56628
11
cisco网络安全解决方案
2018-05-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人