自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 关于计算机大端和小端的理解和记忆

每次看到计算机大端和小端的概念,都需要查阅资料确认下哪一种是大端,哪一种是小端。所以,特意写这个文章总结下,期望之后不用查资料也能记住大端和小端。简要记忆:大端——数据尾端是高地址,小端——数据尾端是低地址。TCP/IP协议栈采用大端字节序。以32位整数为例,具体如下:大端:小端:nginx源码验证大端和小端:#include &...

2018-07-08 11:05:20 1267

转载 一图了解网络分层模型即各层对应哪些协议

 转载出处:https://blog.csdn.net/skyroben/article/details/77073834

2018-07-05 21:45:48 424

转载 TCP建立连接和断开连接过程的理解

转载出处: https://blog.csdn.net/skyroben/article/details/74973158TCP的建立连接和断开连接过程如下所示:

2018-07-05 21:35:24 1291

转载 Linux多线程编程之pthread

转载出处:https://blog.csdn.net/skyroben/article/details/727934091.背景知识             Linux没有真正意义上的线程,它的实现是由进程来模拟,所以属于用户级线程,位于libpthread共享库(所以线程的ID只在库中有效),遵循POSIX标准。      Windows下有一个真正的数据结构TCB来描述线程。      Lin...

2018-07-05 21:32:03 54067 1

转载 多线程编程之条件变量和互斥锁

                                  互斥锁1.什么叫互斥锁?       互斥锁(也成互斥量)可以用于保护关键代码段,以确保其独占式的访问,类似于二元信号量。二者都可以称为挂起等待锁———锁资源得不到满足,就会被挂起,在信号量或互斥锁上等待。注:当前线程的PCB在互斥量的等待队列等待以便快速唤醒。进程等待的本质是将PCB列入某个队列等待。2.使用方式        ...

2018-07-05 21:21:55 293

转载 进程间通信方式——消息队列

转载出处:https://blog.csdn.net/skyroben/article/details/725205011.消息队列消息队列是消息的链接表,存放在内核中并由消息队列标识符标识。 标识符是IPC对象的内部名, 而它的外部名则是key(键), 它的基本类型是key_t, 在头文件<sys/types.h>中定义为长整型.。键由内核变换成标识符。  用户可以从消息队列中读取数...

2018-07-05 21:12:21 304

转载 进程间通信方式——共享内存

转载出处:https://blog.csdn.net/skyroben/article/details/726250281.什么是共享内存?共享内存就是允许两个或多个进程共享一定的存储区。就如同 malloc() 函数向不同进程返回了指向同一个物理内存区域的指针。当一个进程改变了这块地址中的内容的时候,其它进程都会察觉到这个更改。因为数据不需要在客户机和服务器端之间复制,数据直接写到内存,不用若干...

2018-07-05 21:06:31 238

转载 进程间通信方式——信号量(Semaphore)

转载出处:https://blog.csdn.net/skyroben/article/details/725139851.信号量信号量本质上是一个计数器(不设置全局变量是因为进程间是相互独立的,而这不一定能看到,看到也不能保证++引用计数为原子操作),用于多进程对共享数据对象的读取,它和管道有所不同,它不以传送数据为主要目的,它主要是用来保护共享资源(信号量也属于临界资源),使得资源在一个时刻只...

2018-07-05 20:59:02 588

转载 进程间的通信方式——pipe(管道)

转载出处:https://blog.csdn.net/skyroben/article/details/715133851.进程间通信 每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程A把数据从用户空间拷到内核缓冲区,进程B再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信。12不同进程间...

2018-07-05 20:46:05 206

转载 采用dlopen、dlsym、dlclose加载动态链接库【总结】

转载出处:采用dlopen、dlsym、dlclose加载动态链接库【总结】1、前言  为了使程序方便扩展,具备通用性,可以采用插件形式。采用异步事件驱动模型,保证主程序逻辑不变,将各个业务已动态链接库的形式加载进来,这就是所谓的插件。linux提供了加载和处理动态链接库的系统调用,非常方便。本文先从使用上进行总结,涉及到基本的操作方法,关于动态链接库的本质及如何加载进来,需要进一步学习,后续继续...

2018-07-01 21:28:57 134

转载 valgrind使用简介

转载出处:https://blog.csdn.net/justenjoyitpy/article/details/77877038valgrind是什么?Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合。Valgrind由内核(core)以及基于内核的其他调试工具组成。内核类似于一个框架(framework),它模拟了一个CPU环境,并提供服务给其他工具;而其他工...

2018-07-01 21:18:41 208

转载 深入学习HBase架构原理

转载出处:https://www.cnblogs.com/qiaoyihang/p/6246424.htmlHBase定义        HBase 是一个高可靠、高性能、面向列、可伸缩的分布式存储系统,利用Hbase技术可在廉价PC Server上搭建 大规模结构化存储集群。    HBase 是Google Bigtable 的开源实现,与Google Bigtable 利用GFS作为其文件存...

2018-06-17 20:41:13 142

转载 Kafka史上最详细原理总结

本想把原作者博客链接贴出来的,但是度娘了下一直没找到,因为度娘罗列出来的都是转载的。感觉作者写的不错,所以收藏下。KafkaKafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于hadoop的批处理系统、低延迟的实时系统、...

2018-06-17 20:35:54 603

转载 Zookeeper的功能以及工作原理

转载出处:https://blog.csdn.net/xqb_756148978/article/details/522593811.ZooKeeper是什么?ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系...

2018-06-17 20:24:22 104

转载 IO模式和IO多路复用

转载出处:https://www.cnblogs.com/zingp/p/6863170.html阅读目录1 基础知识回顾2 I/O模式3 事件驱动编程模型4 select/poll/epoll的区别及其Python示例  网络编程里常听到阻塞IO、非阻塞IO、同步IO、异步IO等概念,总听别人装13不如自己下来钻研一下。不过,搞清楚这些概念之前,还得先回顾一些基础的概念。回到顶部1 基础知识回顾...

2018-06-17 20:08:21 165

原创 在c++程序中调用被C编译器编译后的函数,为什么要加extern“C

分析:    C++语言支持函数重载,C语言不支持函数重载,函数被C++编译器编译后在库中的名字与C语言的不同,      假设某个函数原型为:void foo(int a, int b);    该函数被C编译器编译后在库中的名字为:  _foo    而C++编译器则会产生像: _foo_int_int   之类的名字。    为了解决此类名字匹配的问题,C++提供了C链接交换指定符号 ext...

2018-06-16 20:26:54 1468

原创 进程间通信方式和线程间通信方式

一、进程间通信方式1. 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。2.信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。3.消...

2018-06-16 20:15:29 362

原创 C和C++的特点与区别

(1)C语言特点:1.作为一种面向过程的结构化语言,易于调试和维护;2.表现能力和处理能力极强,可以直接访问内存的物理地址;3.C语言实现了对硬件的编程操作,也适合于应用软件的开发;4.C语言还具有效率高,可移植性强等特点。(2)C++语言特点:1.在C语言的基础上进行扩充和完善,使C++兼容了C语言的面向过程特点,又成为了一种面向对象的程序设计语言;2.可以使用抽象数据类型进行基于对象的编程;3...

2018-06-16 20:02:28 7030

转载 linux守护进程

转载出处:https://blog.csdn.net/lianghe_work/article/details/47659889什么是守护进程?守护进程(Daemon Process),也就是通常说的 Daemon 进程(精灵进程),是 Linux 中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是个特殊的孤儿进程,这种进程脱...

2018-06-16 19:57:10 269

原创 float型变量和“零值”比较的方法

千万要留意,无论是float还是double类型的变量,都有精度限制。所以一定要避免将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”形式。假设浮点变量的名字为x,应当将 if (x == 0.0) // 隐含错误的比较转化为 if ((x>=-EPSINON) && (x<=EPSINON))其中EPSINON是允许的误差(即精度)...

2018-06-16 19:03:28 436

原创 c++内存基本构造,以及内存分配方式

有3种内存分配方式:1) 从静态存储区域分配。在程序编译的时候就已经分配好内存,并且这块内存在程序的整个运行期间都存在。例如全局变量,static 变量。2) 在栈上创建。在执行函数时函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元会自动被释放。另外,栈内存分配运算内置于处理器的指令集。3) 从堆上分配,也就是动态内存分配。程序在运行的时候用malloc 或new 申请任意多少...

2018-06-16 18:46:45 1281

转载 Linux常用命令大全

转载出处:http://www.cnblogs.com/yjd_hycf_space/p/7730690.html#3997629Linux常用命令大全(非常全!!!)最近都在和Linux打交道,感觉还不错。我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制,当然,这也是很多人喜欢linux的原因,比较短小但却功能强大。我将我了解到的命令列举一下,仅供大家参考: 系统信息 a...

2018-06-16 18:42:08 146

原创 new/delete和malloc/free的区别

delete会调用对象的析构函数,和new对应。free只会释放内存,new调用构造函数。malloc与free是C++/C语言的标准库函数。分别负责分配内存和释放内存。new/delete是C++的运算符。分别负责分配内存和调用构造函数  以及  调用析构函数和释放内存;由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc...

2018-06-16 18:34:49 185

转载 C++虚函数表的分析

转载出处:https://www.cnblogs.com/hushpa/p/5707475.html先看代码:#include <iostream>using namespace std;class Base {public: virtual void f() {cout<<"base::f"<<endl;} virtual void ...

2018-06-16 18:06:56 138

原创 C++ inline用法以及与宏的区别

函数内联的工作过程:对于任何内联函数,编译器在符号表里放入函数的声明(包括名字、参数类型、返回值类型)。 如果编译器没有发现内联函数存在错误,那么该函数的代码也被放入符号表里。 在调用一个内联函数时,编译器首先检查调用是否正确 (进行类型安全检查,或者进行自动类型转换,当然对所有的函数都一样)。 如果正确,内联函数的代码就会直接替换函数调用,于是省去了函数调用的开销一、inline用法1. 关键字...

2018-06-11 21:23:16 313

原创 c++ 重载 覆盖 隐藏的区别和执行方式

一、区别1. 重载的特征:(1)函数在同一个类中; (2)函数名字相同; (3)函数参数不同; (4)virtual 关键字可有可无。 2. 覆盖是指派生类函数覆盖基类函数,特征是:(1)函数分别位于派生类与基类; (2)函数名字相同; (3)函数参数相同; (4)基类函数必须有virtual 关键字。 3. “隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下:(1)如果派生类的函数与基类...

2018-06-11 20:55:56 133

原创 非静态的Python main函数

主函数调用函数的小程序:testMain.pyimport sysdef Fuc(param1,param2):    print("param1 is %s, param2 is %s."%(param1,param2)) if __name__ == '__main__':    if len(sys.argv) != 3:        print('Usage: python t...

2018-06-11 20:35:19 173

原创 有81个选手,9个赛道,要求选出前4名。最快需要多少场?

面试题目:有81个选手,9个赛道,要求选出前4名。需要多少场?不考虑计算具体成绩,不然9场就够了。分析:最直观的解题步骤是:1. 先将81个选手,分成9组进行比赛,每组都有9名选手。由于只需要选出前4名,则可从每组挑出前4名继续比较,需要比赛人数为36个2. 将36个选手,分成4组进行比赛,每组仍旧是9名选手。继续从每组挑出前4名,则需要比赛人数为16个。3. 将16个选手,分成2组进行比赛,每组...

2018-06-10 20:55:01 483

原创 101个硬币中区分真假币重量的问题

问题:当前有101个硬币,其中一枚是假币,且真币和假币必然不一样重。假设手头上有个天平,请问在仅仅使用天平2次的情况下,如何区分出真币和假币哪个重。分析:题目的要求是:需要区分出假币重还是真币重,而不是找出哪个是假币。这个很关键。天平的存在,目的就是判断两边物体是否等重。基于上述两点,可以简单的将101个硬币分成3堆,分别是50/50/1。先称两堆50的硬币,此时存在两种情况:1. 如果这两堆硬币...

2018-06-10 20:23:05 1652

原创 用魔法币机器生产N个魔法币的问题

问题:有两台魔法机器可以通过投入X个魔法币产生更多的魔法币。X可以为零,因为首次投魔法币的时候X必然为零。机器1:投入x个,生产2*x+1个机器2:投入x个,生产2*x+2个请设计一个方案,使得最后刚好拥有N个魔法币。输入:输入包括一行,包括一个正数N(1<=N<=10^9)输出:输出一个字符串,每个字符表示选取的机器编号。其中1表示机器1,2表示机器2。示例:输入:10输出:12...

2018-06-10 19:43:35 156

空空如也

空空如也

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

TA关注的人

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