程序员的自我修养

积跬步 积小流

排序:
默认
按更新时间
按访问量

C++继承与构造函数、复制控制

每个派生类对象由派生类中定义的(非static)成员加上一个或多个基类子对象构成,因此,当构造、复制、赋值和撤销派生类型对象时,也会构造、复制、赋值和撤销这些基类子对象。         构造函数和复制控制成员不能继承,每个类定义自己的构造函数和复制控制成员。像任何类一样,如果类不定义自己的默认...

2017-07-09 09:34:51

阅读数:1816

评论数:0

C++继承相关知识点总结

1:派生类继承基类的成员并且可以定义自己的附加成员。每个派生类对象包含两个部分:从基类继承的成员和自己定义的成员。         每个派生类对象都有基类部分,包括基类的private成员。类可以访问共基类的public 和 protected 成员,就好像那些成员是派生类自己的成员一样。派生类...

2017-07-09 09:22:40

阅读数:332

评论数:0

编译时混合使用动态库和静态库

编译某个

2017-07-07 21:18:00

阅读数:606

评论数:0

STL 的 erase() 陷阱-迭代器失效总结

下面材料整理自Internet&著作。 TL中的容器按存储方式分为两类,一类是按以数组形式存储的容器(如:vector 、deque);另一类是以不连续的节点形式存储的容器(如:list、set、map)。在使用erase方法来删除元素时,需要注意一些问题。 1.list,set,ma...

2017-06-30 08:23:55

阅读数:301

评论数:0

非阻塞模式下,虽然connect出错,但是getsockopt取得的错误却是0的问题

调试项目代码时,发现了一个奇怪问题,记录如下:     非阻塞模式下,connect发起建链,返回-1(这在非阻塞模式下是很正常的现象)。然后将该socket的写事件进行监听,在写事件触发后,getsockopt函数获取错误时,没有检测到发生错误(第三个参数返回0),最后在write操作时,发生错...

2017-06-24 21:52:46

阅读数:837

评论数:0

利用backtrace和ucontex定位segment错误

C程序运行时,经常会碰到”segmentfault”错误。这是由于程序中非法访问内存导致的。当操作系统的内存保护机制发现进程访问了非法内存的时候会向此进程发送一个SIGSEGV信号,导致进程直接退出,并在shell中提示segment fault。            因此,可以通过设置SIGS...

2016-12-26 09:28:09

阅读数:1242

评论数:0

内存管理:03高端内存简介

一:通俗解释         内核空间和用户空间的地址都是虚拟地址,都要经过 MMU 的翻译,变成物理地址。用户空间的虚拟地址,通过查询页表来翻译,而内核空间虚拟地址是所有进程共享的,而且从效率角度看,如果同样走页表翻译的流程,速度太慢;于是,内核在初始化时,就创建内核空间的映射(因为所有进程共享...

2016-10-09 18:28:43

阅读数:486

评论数:0

内存管理:02虚拟存储器

现代系统提供了虚拟存储器的概念,它是对物理内存的抽象。虚拟存储器是硬件异常,硬件地址翻译,主存,磁盘文件,操作系统的完美交互,它为每一个进程提供了一个大的,一致的私有的地址空间。         虚拟存储器提供了下面的几种能力,1:它将主存看成磁盘的高速缓存,并且根据需要在主存和磁盘之间传送数据。...

2016-10-08 20:14:43

阅读数:992

评论数:0

内存管理:01存储器层次结构

在日常的编程中,我们简单的把存储器系统看成一个线性的字节数组,但实际的存储系统并不是这样的。          存储器系统是一个由具有不同容量,不同成本,不同访问时间的若干存储设备组成的层次结构,从上到下依次是:寄存器,高速缓存存储器,主存,硬盘,网络文件。层次越高,容量越小,成本越高,访问时间越...

2016-10-08 18:47:28

阅读数:940

评论数:0

互斥锁和内存可见性

一:引言          POSIX线程遵循一种共享状态的并发模型。在这种模型中,若干线程同时访问共享对象时,需要在线程间有合适的协调机制。特别是,需要以下特性来简化这种模型中的编程:          原子性访问:当某个线程正在修改共享对象时,需要避免另一个线程访问它;         ...

2016-08-26 17:04:34

阅读数:1650

评论数:0

条件变量用例--解锁与signal的顺序问题

我们知道,当调用signal/broadcast唤醒等待条件变量的其他线程时,既可以在加锁的情况下调用signal/broadcast,也可以在解锁的情况下调用。          那么,到底哪种情况更好呢?man手册中其实已经给出了答案:          The pthread_cond_br...

2016-08-24 16:35:37

阅读数:2069

评论数:0

服务端编程中多线程的应用

本文是陈硕的《Linux多线程服务端编程  使用muduo C++网络库》一书中,第三章的读书笔记。其中暗红颜色的文字是自己的理解,鲜红颜色的文字表示原书中需要注意的地方。   一:进程和线程          每个进程有自己独立的地址空间。“在同一个进程”还是“不在同一个进程”是系统功能划...

2016-08-11 18:52:46

阅读数:3222

评论数:0

负载均衡之加权轮询算法

在介绍加权轮询算法(WeightedRound-Robin)之前,首先介绍一下轮询算法(Round-Robin)。    一:轮询算法(Round-Robin)   轮询算法是最简单的一种负载均衡算法。它的原理是把来自用户的请求轮流分配给内部的服务器:从服务器1开始,直到服务器N,然后重新开...

2016-07-31 09:30:10

阅读数:16890

评论数:1

负载均衡的那些算法们

负载均衡的那些算法们 by:简单的老王  上周发了问卷,想了解一下大家对老王有没有什么建议,然后好多朋友都投了票,想了解编程技术和服务器架构的干货,所以接下来会先聊聊编程和架构相关的算法,然后大概在6月下旬会跟大家聊聊面试那些事儿(老王到目前大约参加了几百次的面试,可以从面试官的角度来聊聊不一...

2016-07-31 09:20:47

阅读数:666

评论数:0

进程保活方法

mysql-proxy源码中,使用了一种进程保活的方法。这种方法的基本原理是:当父进程完成基本的初始化后,创建子进程,由子进程继续后面的主体逻辑。而父进程wait子进程的退出状态。一旦发现子进程是由于收到信号而退出的,则重启子进程。          这种方法的实现代码如下:#include ...

2016-07-23 08:20:25

阅读数:1222

评论数:0

05Dockerfile简介

Dockerfile是一个用于构建Docker镜像的文本文件,其中包含了创建Docker镜像的全部指令。基于这些指令,可以使用”docker  build”命令来创建镜像。   一:用法          ”docker  build”命令通过Dockerfile,以及一个上下文环境来构建镜...

2016-07-17 08:34:15

阅读数:809

评论数:0

04使用harbor配置私仓

安装harbor之前,需要安装好Python,Docker,DockerCompose。Python需要2.7以上的版本,Docker需要1.10以上的版本;Docker Compose 需要1.6.0以上的版本。   一:安装Docker Compose          https:...

2016-07-17 08:23:53

阅读数:5148

评论数:0

Redis源码解析:30发布和订阅

Redis的发布与订阅功能,由SUBSCRIBE,PSUBSCRIBE,UNSUBSCRIBE,PUNSUBSCRIBE,以及PUBLISH等命令实现。          通过执行SUBSCRIBE命令,客户端可以订阅一个或多个频道。当有客户端通过PUBLISH命令向某个频道发布消息时,频道的所...

2016-07-13 12:52:09

阅读数:2810

评论数:0

Redis源码解析:29事务

Redis通过MULTl,EXEC,WATCH,DISCARD等命令来实现事务(transaction)功能。          事务从MULTI命令开始,之后,该客户端发来的其他命令会被排队,客户端发来EXEC命令之后,Redis会依次执行队列中的命令。并且在执行期间,服务器不会中断事务而改去...

2016-07-06 20:47:13

阅读数:1570

评论数:0

Redis源码解析:28集群(四)手动故障转移、从节点迁移

一:手动故障转移          Redis集群支持手动故障转移。也就是向从节点发送”CLUSTER  FAILOVER”命令,使其在主节点未下线的情况下,发起故障转移流程,升级为新的主节点,而原来的主节点降级为从节点。          为了不丢失数据,向从节点发送”CLUSTER  FA...

2016-07-05 12:30:44

阅读数:4077

评论数:2

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