14 delphiwcdj

尚未进行身份认证

我要认证

用代码改变生活

等级
TA的排名 940

Effective C++ - Inheritance and Object-Oriented Design

Effective C++ - Inheritance and Object-Oriented Design 前言:OOP面向对象编程(继承,单一继承,多重继承,public/protected/private,virtual/non-virtual,继承的查找规则,virtual函数是最佳选择吗,等等)有哪些坑?Effective C - Inheritance and Object-Ori

2017-10-31 22:45:13

Effective C++ - Implementations

C++实现中需要注意的一些问题。

2017-09-28 08:55:03

Redis简单入门

一提起数据库,大多数人可能想到的主要是Oracle,MySQL以及Microsoft SQL Server这三大巨头。但除了这三巨头外,很多新兴的数据库也慢慢进入开发者的眼帘。比如最近越来越火的搜索引擎式数据库Elasticsearch。DB-engines上可以看到近期数据库的一个使用排名情况。同时可以看到Redis作为一款键值对数据存储数据库(非关系型数据库)也是处在一个上升的趋势。Redis使

2017-08-06 18:30:35

Effective C++ - Designs and Declarations

前言:软件设计,是令软件做出你希望它做的事情的步骤和做法。通常以颇为一般性的构想开始,最终演变成十足的细节,以允许特殊接口的开发。这些接口而后必须转换为C++声明式。而如何实现良好C++接口的设计和声明呢?通常的一个准则是:“让接口容易被正确使用,不容易被误用”。Make interfaces easy to use correctly and hard to use incorrectlyTre

2017-07-23 22:25:38

C++11系列——函数对象(Function Object)

之前总结过一篇Boost之高阶函数——函数对象,介绍了几个用于处理函数对象的 Boost C++ 库。而目前C++11的标准库std已经提供了函数对象的一些功能。根据wiki可以知道Higher order funciton的定义如下: In mathematics and computer science, a higher-order function (also functional, f

2017-06-29 00:36:29

Effective C++ - Resource Management

前言:如何有效运用C++,包括一般性的设计策略,以及带有具体细节的特定语言特性。知道细节很重要,否则如果疏忽几乎总是导致不可预期的程序行为(undefined behavior)。本文总结对于如何使用C++的一些建议,从而让你成为一个有战斗力的C++程序员。以对象管理资源在资源管理中小心coping行为在资源管理类中提供对原始资源的访问成对使用new和delete时要采取相同形式以独立语句将

2017-04-30 23:21:09

Effective C++ - Constructors, Destructors, and Assignment Operators

Effective C++ - Constructors, Destructors, and Assignment Operators 前言:如何有效运用C++,包括一般性的设计策略,以及带有具体细节的特定语言特性。知道细节很重要,否则如果疏忽几乎总是导致不可预期的程序行为(undefined behavior)。本文总结对于如何使用C++的一些建议,从而让你成为一个有战斗力的C++程序员。E

2017-03-31 22:40:33

Effective C++ - Accustoming Yourself to C++

前言:如何有效运用C++,包括一般性的设计策略,以及带有具体细节的特定语言特性。知道细节很重要,否则如果疏忽几乎总是导致不可预期的程序行为(undefined behavior)。本文总结对于如何使用C++的一些建议,从而让你成为一个有战斗力的C++程序员。

2017-02-04 21:49:04

高并发实时后台服务技术架构杂谈

高并发实时后台服务设计杂谈 摘要:双十一剁手节、新年微信红包、游戏限时营销活动等场景都离不开一个可靠和稳定后台服务,针对高并发(每秒上万的QPS),低延迟(毫秒级应答)的业务场景,后台架构是否合理对业务的成败以及用户体验起到了至关重要的作用。本文根据笔者已有的工作经验总结一些可参考的实时高并发后台架构解决方案。流控根据No Silver Bullet理论,在软件工程里是没有万能的终极武器,只有

2017-02-01 17:51:08

MySQL数据导入 — LOAD DATA

启动MySQL客户端(通过–local-infile=1选项)和服务器端(通过修改配置文件)都需要指定可以从LOCAL导入数据,例如:/mysqld_safe --datadir=/data/mysqldata --skip-grant-tables --local-infile=1例子原始数据:1 Heart disease kills·1.2 2 one out of every

2017-01-08 18:57:54

Linux的线程创建限制

导言:现网有个版本上线一段时间后,通过SSH重新登陆时显示Cannot allocate memory错误,结果只能通过重启机器来恢复服务。通过分析发现是新的版本引入一个bug,某个进程会不停地创建新的线程,那么问题是Linux下一个进程可以创建多少个线程,从而会导致这个错误出现。问题重现,通过一个测试程序,验证错误是否会重现。#include <iostream>#include <pthre

2016-12-11 11:43:21

分布式锁调研

分布式锁调研分布式锁调研数据库锁Redis实现分布式锁SETDELRedlockZooKeeperEtcd导言:分布式锁,是控制分布式系统之间同步访问共享资源的一种方式。调研目标是找到一种合适的DLM (Distributed Lock Manager)方法,主要考虑性能和可用性。下面是调研的几种方法,优劣对比。数据库锁思想:使用订单号(唯一)作为数据库表的主键或索引,每笔订单在访问共享

2016-11-17 15:28:24

Introduction to coroutine

导言:本文是在小组内的一个分享,介绍协程实现的几种方法和优化策略,对比GoLang中goroutine实现方式及调度器的设计,与常见后台服务器设计模式对比,使用协程的优劣分析。some questionsQ1: multitasking ? time-sharing (1960s,voluntarily/hardware interrupt to relinquish the CPU)

2016-10-14 09:54:51

Linux IPC之内存映射mmap()

导言:如何使用mmap()系统调用来创建内存映射,它可以用于IPC以及其他很多方面。概述mmap()系统调用,在调用进程的虚拟地址空间中创建一个新内存映射。映射分为两种:文件映射(内存映射文件) 将一个文件的一部分直接映射到调用进程的虚拟内存中。一旦一个文件被映射之后就可以通过在相应的内存区域中操作字节来访问文件内容了。映射的分页会在需要的时候从文件中自动加载。这种映射也被称为,基于文件的映射

2016-10-11 22:54:25

Linux IPC之POSIX共享内存

导言:System V共享内存和共享文件映射,允许无关进程共享内存区域以便执行IPC通信。但这两种技术都存在一些不足:1. System V共享内存模型使用的是键和标识符,这与标准的UNIX I/O模型使用文件名和描述符的做法是不一致的,这种差异意味着使用System V共享内存段需要一整套全新的系统调用和命令。2. 使用一个共享文件映射来进行IPC要求创建一个磁盘文件,即使无需对共享区域进行持久存

2016-09-17 21:05:27

Linux IPC之System V共享内存

导言:共享内存允许两个或多个进程共享物理内存的同一块区域(段)。由于一个共享内存段会成为一个进程用户空间内存的一部分,因此,这种IPC机制无需内核介入。所有需要做的就是让一个进程将数据复制进共享内存中,并且这部分数据会对其他所有共享同一个段的进程可用。与管道或消息队列要求发送进程将数据从用户空间的缓冲区复制进内核内存和接收进程将数据从内核内存复制进用户空间的缓冲区的做法相比,共享内存的速度更快(每个

2016-09-11 22:37:31

Linux IPC之管道和FIFO

导言:管道是UNIX系统上最古老的IPC方法,管道提供了一种优雅的解决方案:给定两个运行不同程序的进程,在shell中如何让一个进程的输出作为另一个进程的输入?管道可以用来在相关(一个共同的祖先进程创建管道)进程之间传递数据。FIFO是管道概念的一个变体,它们之间的一个重要差别在于FIFO可以用于任意进程间的通信。概述每个shell用户都对在命令中使用管道比较熟悉,例如,统计一个目录中文件的数目:

2016-08-31 23:16:21

MySQL读书笔记-安装初始化操作

导言:本文主要记录MySQL在Linux服务器上安装时,一些关键操作和步骤。安装RPM 优点:简单 缺点:不灵活,缺少个性化设置二进制 优点:优化版本 缺点:安装比RPM麻烦源代码 优点:个性化 缺点:需要知道如何构建# 创建必要的组和拥有者groupadd mysqluseradd -g mysql mysql# 下载解压cd /usr/srcgunzip < /us

2016-08-24 23:28:41

Linux IPC之Socket网络编程I/O多路复用相关模型及区别

导言:大部分程序使用的I/O模型(传统的阻塞式I/O模型)都是单个进程每次只在一个文件描述符上执行I/O操作,每次I/O系统调用都会阻塞直到完成数据传输。但是,有些场景需要: 以非阻塞的方式检查文件描述符上是否可进行I/O操作。 同时检查多个文件描述符,看它们中的任何一个是否可以执行I/O操作。 对应的解决方法分别是,使用非阻塞式I/O和多进程(多线程)。

2016-08-22 23:59:29

网络工具之netstat

导言:netstat可以显示系统中Internet和UNIX域套接字的状态,当编写套接字程序时,netstat是个非常有用的调试工具。关于netstat的具体用法,请查看具体手册man netstat。例如,一些常用选项:# 显示所有套接字的信息-a# 只显示监听套接字的信息-l# 显示进程ID号,以及套接字所归属的程序名称-p# 显示IP地址,端口号,并以数字形式显示出用户名称-n# 连

2016-08-21 19:57:41

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 分享小兵
    分享小兵
    成功上传3个资源即可获取
  • 黄花
    黄花
    子板块内专家分月排名榜第二