公众号:畅游码海更多高质量原创文章都在里面主机字节序和网络字节序:在32位机器上,累加器一次能装载4个字节,这四个字节在内存中排列顺序将影响它被累加器装载成的整数的值大端字节序(网络字节序):一个整数的高位字节存储在内存的低地址处小端字节序(现代PC大多数采用):整数的高位字节存储在内存的高地址处即使是同一台机器上不同语言编写的程序通信,也要考虑字节序的问题Linux下字节序转换函数:cinclu
类类是 C++ 中代码的基本单元. 显然, 它们被广泛使用. 本节列举了在写一个类时的主要注意事项.构造函数的职责总述不要在构造函数中调用虚函数, 也不要在无法报出错误时进行可能失败的初始化.定义在构造函数中可以进行各种初始化操作。优点无需考虑类是否被初始化.经过构造函数完全初始化后的对象可以为const 类型, 也能更方便地被标准容器或算法使用.缺点如果在构造函数内调用了自身的虚函数,
大家好,我是小杰。2. 作用域2.1 命名空间 鼓励在 .cc 文件内使用匿名命名空间或 static 声明. 使用具名的命名空间时, 其名称可基于项目名或相对路径. 禁止使用 using 指示(using-directive)。禁止使用内联命名空间(inline namespace)。定义:命名空间将全局作用域细分为独立的, 具名的作用域, 可有效防止全局作用域的命名冲突.优点:
大家好,我是小杰。我们在写代码的时候,应该保证代码有以下特性:正确性,语法正确,结果正确可读性,通用的,必须的习惯用语和模式可以让代码更加容易理解。可维护性,程序应对变化的能力,容易优化。因此,一种好的编程规范可以让团队的合作效率提高,这里推荐Google的编程 Google C++ style guide感谢译者Yang.Y和 YuleFox做出的贡献接下来进入正题:1. 头文件通常每一个 .c
配置文件读取思路(CConfig类):配置文件读取应该在程序的开始进行初始化,从配置文件中读取程序的相关配置和用户自定义的信息。如:程序的进程的启动个数、每个进程应该启动的线程数的个数、程序在Linux中是否以守护进程方式进行启动等。配置文件的设计应该具有美观、整洁等特点。以'#'开始的每一行配置应该当作提示内容,在读取时应该直接跳过当读取到“[” 符号时,应该进行跳过方便我们对配置文件的分组其次
大家好,我是小杰。接着上篇:上次说完了TCP的三次握手和四次挥手,接下来我们接着实验。TCP的最大报文长度MMS上篇提到了以太网协议有MTU的概念,会限制IP数据包的大小不能超过MTU否则会进行ip数据包的分包,TCP协议中的选项部分包含MSS的概念,在连接建立的时候进行MMS大小互通,这样发送时候以最小的MSS来决定发送数据报的大小。实验走起: 下面的截图是我使用两个服务器A和服务器B,从服务器
特性TCP又名传输控制协议,属于TCP/IP协议中的传输层,与其下层网络层的最重要区别在于它提供了一种面向连接的和可靠的字节流服务。面向连接怎么理解面向连接呢,其实就类似于打电话,拨号然后响铃,直到接通后,双方就建立起了一个连接。如何支撑起TCP的可靠性首先应用数据被分割成TCP认为最适合发送的数据块,再传输给网络层,数据块被称为报文段或段。当TCP发出一个段以后,它会启动一个定时器,等待目的端确
什么是负载均衡负载平衡(Load balancing)是一种电子计算机技术,用来在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到优化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。 使用带有负载平衡的多个服务器组件,取代单一的组件,可以通过冗余提高可靠性。负载平衡服务通常是由专用软件和硬件来完成。 主要作用是将大量作业合理地分摊到多个操作单元上进行执
线程池设计思路线程池是什么我们先来打个比方,线程池就好像一个工具箱,我们每次需要拧螺丝的时候都要从工具箱里面取出一个螺丝刀来,有时候需要取出一个来拧,有时候螺丝多的时候需要多个人取出多个来拧,拧完自己的螺丝那么就会把螺丝刀再放回去,然后别人下次用的时候再取出来用。也许我的例子不是太完美,但是我想我已经基本阐述清楚了线程池。说白了线程池就是相当于提前申请了一些资源也就是线程,需要的时候就从线程池中取
大家好,我是小杰。 本文并没有涉及IP地址分类和子网掩码内容。IP协议格式IP是TCP/IP协议中的核心协议。它包含两大特性:不可靠、无连接。不可靠指的是它本身不会保证数据一定完整送达,需要依靠上层协议解决。无连接指的是每个IP数据报之间没有关系,相互独立。 至于为什么会这样涉及,我的理解是分层的思想就是为了让每层各司其职,自己负责自己的事情,否则会把某一层弄得很臃肿失去了分层的意义,我们在涉及功
大家好,我是小杰。在这个系列里,我们将详细学习计算机网络相关的知识。 这次要讲的是数据链路层 为什么要有数据链路层所谓存在即合理,经过了这么多年实践的考验,那这一层也定有它不可或缺的原因:为IP模块发送和 接收IP数据报为ARP模块发送ARP请求和接收ARP应答为RARP发送RARP请求和接收RARP应答 ARP和RARP分别为地址解析协议和逆地址解析协议什么是RFCRequest For Co
一、 TCP/IP协议族TCP/IP主要组成,自底而上分别是:数据链路层:实现了网课接口的网络驱动程序,以处理数据在物理媒介(以太网、令牌环等)上的传输。不同的物理网络具有不同的电气特性,网络驱动程序隐藏了这些细节其中包括两个常用的协议:ARP(地址解析协议)和RARP(逆地址解析协议)它们实现了IP地址和机器物理地址(通常是MAC地址)直接的相互转换网络层:实现了数据包的选路和转发。WAN(广域
大家好,我是小杰。背景今天想起来QQ好久没有登录了,我默默的点开了我的QQ,熟练的输入账号,若有所思后输入了我的密码。密码错误?? 不慌,再试亿遍,终于登录成功了,泪目。点击了上面的微云,我看到了我的回忆与青春,看到了个压缩包,snake.zip。突然想起了我高考结束的假期自学了C语言,然后自己写了个贪吃蛇游戏 ··· ···运行效果可以先来看看它的运行效果,接着来以现在的眼光和水平来审视一下这个
大家好,我是小杰。终于在C++11中引入了lambda表达式,lambda最早来源于函数式编程,现代语言慢慢都引入了这个语法,C++也不甘落后,在新标准中加入了lambda表达式。为什么要有lambda表达式?使用方便,就地声明函数或函数对象,尤其是和bind配合食用更佳简洁,可以匿名创建,语法看起来极其舒适可以实现功能闭包,使用起来更加灵活使用语法lambda的通用语法:[ 捕获列表] ( 参数
旧标准的缺陷学习新标准的语法之前,先来聊聊旧标准存在的缺陷,这样就可以理解为什么要在C++11中存在std::funtion和std::bind了,这就是所谓——知其然,并知其所以然繁杂的调用对象C++中可以调用的对象有很多,包括但不限于以下:函数指针仿函数(重载了"( )" 运算符)可被转换为函数指针的类对象类成员函数问题浮出水面这些调用对象在使用的时候具有比较统一的时候,但是定义的方式却是五花
列表初始化由于旧标准初始化方式太过繁杂,限制偏多,因此在新标准中统一了初始化方式,为了让初始化具有确定的效果,于是提出了列表初始化概念。旧标准初始化方式普通数组初始化:int i_arr[3] = {1, 2, 3}POD类型初始化(即plain old data类型,可以直接使用memcpy复制的对象): struct A { int x; struct B {
大家好,我是小杰。如果读完这篇感觉到有用的知识增加了,不妨点个赞和在看,鼓励一下auto类型推导C++旧标准:具有自动存储的局部变量auto int i = 0 //C++98 实际上我们一般不这样写,因为非static变量默认就是具有自动存储的局部变量C++11:让编译器自动推断出这个变量的类型,而不需要显式指定类型auto基本用法演示:auto x = 5
接上篇运算符优先级高 * / % << >> & &^ + - | ^ == != < <= > >= && ||低 二元运算符中,除了位移操作符外,操作数类型必须相同。如果其中一个是无显示类型声明的常量,那么该常量操作数会自动转型。func main() { const v
为什么要学Go语言?开发效率和运行效率二者的完美融合,天生的并发编程支持。完善的标准库包括互联网应用、系统编程和网络编程。部署起来非常的方便拥有强大的编译检查、严格的编码规范和完整的软件生命周期工具编译程序 方式一:直接运行go run xxxx.go 方式二:build方式go build xxx.go变量声明Go 语言的变量的声明都是类型信息放在变量之后/// 如下:var v1 int va
普通汉诺塔 感兴趣的童鞋可以与我联系和交流~汉诺塔(港台:河内塔)(Tower of Hanoi)是根据一个传说形成的数学问题:有三根杆子A,B,C。A杆上有 N 个 (N>1) 穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至 C 杆:每次只能移动一个圆盘;大盘不能叠在小盘上面。可以将圆盘临时置于 B 杆,也可将从 A 杆移出的圆盘重新移回 A 杆,但都必须遵循上述两条规则
我的主页:畅游码海欢迎大家点赞、收藏和关注我! 我会不断更新更多的高质量原创文章!一、让自己习惯C++条款01:视C++为一个语言联邦C++并不是一个带有一组守则的一体语言:他是从四个次语言( C、Object-Oriented C++、Template、STL ) 组成的联邦政府,每个次语言都有自己的规约。记住这四个次于语言你就会发现C++容易了解得多。条款02:尽量以const,e
大家好,我是小杰。我的主页:畅游码海欢迎关注,共同进步! 我们在手捧那两本经典的《C++ primer plus》和《C++ primer》书籍的时候,书上清楚地写着我们在堆中申请和释放内存的时候需要使用new和delete,new [] 和 delete [] 并且必须要配对使用。但是我们只是知道要记住,但是大多都是只知其然,而不知其所以然,那么今天就来深入的聊聊,为什么要配对使用,我要
大家好,我是小杰。Winsows中的批处理我们在需要的时候也会用到,可解燃眉之急,今天来整理一波儿!Windows批处理(cmd/bat)常用命令小结批处理文件(batch file)包含一系列 DOS命令,通常用于自动执行重复性任务。用户只需双击批处理文件便可执行任务,而无需重复输入相同指令。编写批处理文件非常简单,但难点在于确保一切按顺序执行。编写严谨的批处理文件可以极大程度地节省时间,在应对
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号