- 博客(37)
- 收藏
- 关注
原创 Charles修改iOS的host文件
Charles安装和抓包1.何为抓包抓包(packet capture)就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。抓包也经常被用来进行数据截取等。2.下载charles,下载对应版本的破解补丁可以去charles官网下载,下载地址:http://www.charlesproxy.com/download/ 根据自己的操作系统下载对应的版本,然后进行安装.目前最新的是4.1.2破解补丁直接百度就行 比如我直接百度Charles 4.1.2 破解
2021-06-23 16:29:41
959
原创 python的错误 ——ImportError: No module named requests下载完包以后还是报错
运行的时候报了这个错一般情况下这个问题下载一个python的包就可以了https://blog.youkuaiyun.com/ceovip/article/details/81940125但是我下载以后还是报了这个错误,而且我的系统和我的pycharm都有这个requests的包了,为什么还是这个错误?是因为环境问题导致的新建项目的时候,选择环境,venv是虚拟环境,pipenv是系统的环境,我选择的是venv,再去看用的解释器也是venv下的,应该是没问题的,环境是匹配的但是我的.
2021-05-26 11:15:55
680
原创 jmeter保存失败如何解决的
下载完jmeter,写完测试用例,保存的时候出问题了,2021-05-19 11:09:47,157 ERROR o.a.j.JMeter: Uncaught exception in thread Thread[AWT-EventQueue-0,6,main]java.lang.NoClassDefFoundError: Could not initialize class org.apache.jmeter.gui.util.FileDialoger at org.apache.jmete...
2021-05-19 11:31:09
2662
1
原创 c++中同名函数的关系之覆盖
覆盖(override):1.不同作用域下(特指基类和派生类中);2.函数名相同;参数列表列表相同;返回类型相同;3.基类函数必须有virtual修饰;4.父类和子类的访问限定可以不同。 满足以上条件时,称子类这个函数覆盖了父类的这个虚函数。完全相同代表着两个函数的函数名、参数个数、参数类型、返回值类型都相同(协变除外)覆盖的作用:实现动态的多态(同一接口,不同实现...
2018-08-02 00:08:40
1434
原创 sendfile实现零拷贝
sendfile函数在两个文件描述符之间直接传递数据,完全在内核操作,从而避免了内核缓冲区和用户缓冲区的数据拷贝,效率很高,被称为零拷贝。ssize_t sendfile(int out_fd , int in_fd ,off_t* offset ,size_t count );out_fd 是待写入内容的文件描述符,它必须是一个socketin_fd 是待读出内容的文件描述符,它必...
2018-08-01 23:49:11
697
原创 异常处理
try 放置可能发生异常的代码块catch 处理异常代码块throw 抛出异常对象好处:1.异常发生以后,抛到相应的处理块,处理完以后,程序继续往下运行2.异常栈展开:首先在当前函数栈帧上找try catch,如果当前没有或者没有被匹配,就往上抛,就到调用这个函数栈帧上找,往复循环,如果一直到main函数还没有找到,就会将异常抛给系统,系统调用abort处理...
2018-07-27 17:21:34
253
原创 图解tcp三次握手四次挥手
tcp是面向连接的协议。分三个阶段:建立连接,数据传送,连接释放。Tcp建立连接的过程叫握手,释放连接的过程叫挥手。1.Tcp三次握手: 刚开始两端都处于close状态,然后客户端主动打开连接,服务器被动打开连接,因为服务端创建传输控制块tcb,准备接受连接请求,然后服务器就处于listen状态,等待客户的连接请求。客户端调用connect()函数向服务器发送连接请求,发送请求报文段,首部同...
2018-05-26 16:42:15
847
原创 fork函数的使用
看一个简单的代码int main(){ int i=0; for( ; i<2 ; ++i ) { fork(); printf("a\n"); }return 0;} 这个代码会怎样打印呢?运行结果如上图所示,先打印出两个a以后,出现提示符,接着又打印了四个a,为什么会出现这样的结果呢? ...
2018-05-23 09:24:32
1252
原创 模板的用法
模板是c++中的泛型编程test1.cpptemplate<typename T>T sum(T a ,T b)//定义点,编译模板的头部,调用点,编译模板体{ return a+b;}//template<typename T,typename L=double>//仅允许在类模板上使用默认模板参数,c++11添加了函数模板的默认值template<typename...
2018-04-29 23:15:39
304
原创 详解C++中对象的生存周期
临时对象,局部对象,静态局部对象,全局对象,静态全局对象的生成周期class Test{public: Test(double c = double()) { cout << "c:" << c << endl; ma = mb = 0; mc = c; cout << "Test(double):" << mc &am
2018-04-18 13:08:48
447
原创 signal()函数
signal(参数1,参数2);引用<signal.h>的头文件void (*signal (int signr,void (*handler)(int))) (int)参数1:我们要进行处理的信号signr。系统的信号我们可以再终端键入 kill -l查看(共64个)。其实这些信号时系统定义的宏。参数2:信号处理函数指针void (*handler)(int)。新的信号处理句柄或者说...
2018-04-07 11:56:15
994
原创 指针和数组的区别
下面的声明出自某个源文件(1):int a[10];int *b=a;但在另一个源文件(2)中,发现这样 的代码:extern int *a;extern int b[];...x=a[3];y=b[3];请解释一下,当两条赋值语句执行时会发生什么?(假定整型和指针的长度都是四个字节) 先说结论,每一条语句的执行都会导致程序的崩溃。
2018-03-22 13:40:45
492
转载 僵死进程
僵死进程,是指子进程退出时,父进程并未对其发出的SIGCHLD信号进行适当处理,导致子进程停留在僵死状态等待其父进程其收尸,这个状态下的子进程就是僵死进程。 在fork()/execve()过程中,假设子进程结束时父进程仍存在,而父进程fork()之前既没安装SIGCHLD信号处理函数调用waitpid()等待子进程结束,又没有显式忽略该信号,则子进程成为僵死进程,无法正常结束...
2018-03-17 23:42:00
382
原创 对字符串进行排序
给三个字符串,对它们进行排序,之前写过对三个数排序,定义一个中间变量,a,b,c依次比较,如果不是顺序,就用临时变量对它们进行交换。字符串也可以用这样的方法进行排序。void Sort(const char *a,const char *b,const char *c)//字符串不能被修改,应该用const修饰{ const char *tmp;//指针变量,用于交换两个指针,
2018-01-31 17:25:49
23995
1
原创 BF算法查找子串
S:'abcabcdP:'abcd'将s称为主串,p称为子串,在主串中查到子串,如果找到,返回子串在主串中的位置,即下标,如果没有找到,返回-1.算法一:BF算法(朴素查找算法)很容易想到的方法是定义两个循环变量,i标记主串,j标记子串,两个变量往后走,进行比较,相等就往后走,不相等的话,主串就返回到原来位置的下一个位置,子串返回到起点,继续比较,如果是子串先比较完了,就说明找到了
2018-01-31 14:41:40
2335
原创 修改文件属性和文件权限
1.Linux是一个多用户的操作系统:(1)Linux 操作系统允许多个用户同时登陆操作并工作 (2)Linux 操作系统对权限管理很严格,每一个文件对不同的用户提供不同的访问权限查看文件的属性信息: ls -l ( ll )文件的属性: type mode link user group size
2018-01-24 17:50:49
1701
原创 简析编译与链接
做开发都要有特定的环境,windows一般用IDE(集成开发环境),Linux一般用gcc。一个源代码生成一个可以运行的程序,要经过以下几步:.c / .cpp------------> .i ---------->.s /.asm ----------->.0/.obj ... .lib .dll ----------->.exe 1
2018-01-14 23:07:44
236
原创 浅析布尔类型的用法
布尔类型布尔类型是一种数据类型,在C99中引入了布尔类型(bool)。bool型只有两种状态,真和假,用true和false表示。例如:判断一个年份是否为闰年思路: 不管是多少年,都只有两种状态,是闰年和不是闰年,所以就可以用布尔类型。什么是闰年呢? 规定如果一年可以被4整除但不能被100整除,或者可以被400整除的为闰年(数学知识)算法: 只需加一个判断语句,然后用bool
2017-11-17 12:06:03
8542
2
原创 浅谈函数
为什么要用函数? 我们刚刚开始写程序的时候,直接放在了主函数中,感觉功能也都能实现,那我们为什么还要用函数呢?因为在实际编程中,代码的规模是非常庞大的,我们都写在主函数中,可读性会变得非常差,而且我们也会遇到重复使用一段代码实现特定功能,如果全在主函数中写就太繁琐了,所以我们引入了函数,用函数来实现模块化的程序设计。我们用到的库函数也是函数,它们是已经写好了的函数,我们使用就会觉得
2017-11-17 10:58:43
285
原创 运算符和结合性
第一级:结合方向自左向右,()[] :只用于数组,作用:1.定义数组,先定义后使用;2.通过数组下标访问数组元素。int a=10;int arr[10];. : 自定义数据类型 ,通过结构体的变量访问内部成员; struct Student{ char name[10]; int age;}; struct Student S
2017-11-17 10:46:08
5817
原创 浮点数在计算机中的存储形式
IEEE754规定,对于32位浮点数(float),最高的一位是符号位s,接下来8位是指数位E,剩下的23位为有效数字位M; 对于64位浮点数(double),最高的一位是符号位s,接下来11位是指数位E,剩下的52位为有效数字位M。 具体是怎么存放的呢?下面就以一个float型的数据12.5为例来看存储方式。 12.5转换成二进制是1100.1,规范化指数形式为1.1
2017-11-17 10:42:40
1216
原创 浅析大端模式和小端模式
我们看书的时候会遇见两个名词,大端模式和小端模式,那它们有什么区别呢?让我们以一个32位的数字在内存中的存放方式来解析大端与小端。 在内存中每个地址对应一个字节,每个字节又是由8位二进制组成,所以可以用两个十六进制数字来表示一个字节。但是对于位数大于8的处理器,由于寄存器的宽度大于一个字节,就会存在如何存储的问题,就引入了大端模式和小端模式。对于一个32位的数字,例如 0X1234567
2017-11-17 10:09:56
419
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人