博学笃志-格物明德

我有我的滋味--

java异常处理机制

1. 引子 try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解。不过,我亲自体验的“教训”告诉我,这个东西可不是想象中的那么简单、听话。不信?那你看看下面的代码,“猜猜”它执行后的结果会是什么?不要往后看答案、也不许执行代码...

2017-11-05 19:11:52

阅读数 209

评论数 0

一次完整的HTTP事务是怎样一个过程?

当我们在浏览器的地址栏输入 www.linux178.com ,然后回车,回车这一瞬间到看到页面到底发生了什么呢? 以下过程仅是个人理解: 域名解析 --> 发起TCP的3次握手 --> 建立TCP连接后发起http请求 --> 服务器响应ht...

2017-01-17 14:43:01

阅读数 190

评论数 0

深入理解C指针与数组-总结

在C语言中,一个变量的声明和定义有什么区别。          我们知道定义只是一个特殊的声明。          定义:只能出现在一个地方,创建新对象,同时确定对象的类型并分配内存。(注意这里所说的对象跟C++中所说的对象没有任何的关系。)            声明:可以出现...

2016-09-08 15:46:50

阅读数 320

评论数 0

Valgrind简单用法

Valgrind的主要作者Julian Seward刚获得了今年的Google-O'Reilly开源大奖之一──Best Tool Maker。让我们一起来看一下他的作品。Valgrind是运行在Linux上一套基于仿真技术的程序调试和分析工具,它包含一个内核──一个软件合成的CPU,和一系列的小...

2016-07-23 19:14:06

阅读数 262

评论数 0

boost-ASIO--(2)

在上一篇博文中我们提到异步请求是从上层开始,一层一层转发到最下面的服务层的对象win_iocp_socket_service,由它将请求转发到操作系统(调用windows api),操作系统处理完异步请求之后又是如何返回给应用程序的呢,这里是通过iocp(完成端口)来实现的。让我们先来简要的看看i...

2016-07-22 15:33:52

阅读数 348

评论数 0

boost-ASIO--(1)

使用asio之前要先对它的设计思想有所了解,了解设计思想将有助于我们理解和应用asio。asio是基于proactor模式的,asio的proactor模式隐藏于大量的细节当中,要找到它的踪迹,往往有种只见树木不见森林之感,笔者将剖析asio中的proactor模式,一步一步揭开它的面纱,最终拨开...

2016-07-22 15:19:47

阅读数 300

评论数 0

用C++11的std::async代替线程的创建

c++11中增加了线程,使得我们可以非常方便的创建线程,它的基本用法是这样的: void f(int n); std::thread t(f, n + 1); t.join();   但是线程毕竟是属于比较低层次的东西,有时候使用有些不便,比如我希望获取线程函数的返回结果的时候,我就不...

2016-07-22 14:45:43

阅读数 224

评论数 0

base64

base64 阅读: 39124 Base64是一种用64个字符来表示任意二进制数据的方法。 用记事本打开exe、jpg、pdf这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多无法显示和打印的字符,所以,如果要让记事本这样的文本处理软件能处理二进制数据,就需要一...

2016-07-21 09:44:48

阅读数 186

评论数 0

Linux写时拷贝技术(copy-on-write)

COW技术初窥:       在Linux程序中,fork()会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,出于效率考虑,linux中引入了“写时复制“技术,也就是只有进程空间的各段的内容要发生变化时,才会将父进程的内容复制一份给子进程。       那么子进...

2016-07-20 11:46:05

阅读数 252

评论数 0

TCP长连接与短连接的区别

1. TCP连接 当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次握手的,而释放则需要4次握手,所以说每个连接的建立都是需要资源消耗和时间消耗的 经典的...

2016-07-18 20:54:26

阅读数 151

评论数 0

boost1.55.0在Windows下VS2013配置使用

Boost是一个和STL类似的标准库,但它扩充了STL使得泛型的优点发挥到最佳。因此现在Boost比STL更为实用。既然Boost这么实用,那么怎么去在Windows环境下去安装Boost库呢? 下面分享一下我用VS2013配置boost_1_55_0库的操作 ...

2016-07-18 15:07:26

阅读数 432

评论数 0

[协议]ICMP协议剖析

1、ICMP简介2、ICMP类型3、目的不可达(Destination Unreachable Message)4、超时(Time Exceeded Message)5、参数错误报文(Parameter Problem Message)6、源冷却(Source Quench Message)7、重...

2016-07-15 15:37:01

阅读数 170

评论数 0

Vim复制代码段

使用vim有时需要移动一大段代码,以前都是在gedit里复制粘贴,今天找了一下,方法如下: 复制特定的某一段:把光标移到要复制的文本的头部,按下“v”,往后移动光标,光标所过之处的字符>都会高亮,移到欲复制文本的尾部后,按下“y”,高亮文本全部被复制到剪粘板。按下“p”粘贴到目的地。 ...

2016-07-15 10:34:55

阅读数 201

评论数 0

linux中fork()函数详解

一、fork入门知识      一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。     一个进程调用fork()函数后,系统先给新的...

2016-07-14 17:24:25

阅读数 178

评论数 0

前摄器模式

摘 要   现代操作系统为开发并发应用提供了多种机制。同步多线程是一种流行的机制,用于开发同时执行多个操作的应用。但是,线程常常有很高的性能开销,并且需要对同步模式和原理有深入的了解。因此,有越来越多的操作系统支持异步机制,在减少多线程的大量开销和复杂性的同时,提供了并发的好处。 本论文中介...

2016-07-12 15:00:42

阅读数 1150

评论数 2

Boost::asio io_service 实现分析

Boost::asio io_service 实现分析 io_service的作用 io_servie 实现了一个任务队列,这里的任务就是void(void)的函数。Io_servie最常用的两个接口是post和run,post向任务队列中投递任务,run是执行队列中的任务,直到全部执行完...

2016-07-12 15:00:00

阅读数 228

评论数 0

Asio 核心概念和功能文档学习(一)

基本Asio解剖 Asio在I/O对象例如sockets上完成操作,即可是同步操作也可是异步操作。在开始使用Asio以前,了解Asio多个部分,你的程序,以及他们怎么一起工作的的概念图非常有用的。 我们考虑当你在一个socket上执行一个连接操作时都发生了些什么作为一个引导的例子。我们...

2016-07-12 11:24:17

阅读数 287

评论数 0

C++11中的进行线程同步的方法

《C++ concurreny in action》 第四章 Synchronizing concurrent operations 这一章主要讲C++11中的进行线程同步的方法 4.1 Waiting for an event or other condition 经常遇到的一种场景是...

2016-07-10 11:27:14

阅读数 2482

评论数 0

第五章 C++的内存模型和原子操作

5.1 Memory model basics (内在模型基础) Memory model 涉及两个方面:structural 和 concurrency structural 是基础,主要是对象的布局 5.1.1 Objects and memory location The C++ S...

2016-07-10 11:21:10

阅读数 1133

评论数 0

C++11并发编程实战

3.1 线程间共享数据的“问题” invariants 被破坏(比如说一个读一个写) 3.1.1 race conditions 条件竞争是: In concurrency, a race condition is anything where the outcome depends on...

2016-07-10 11:19:38

阅读数 600

评论数 0

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