自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Google 的开源技术protobuf 简介与例子

今天来介绍一下“Protocol Buffers ”(以下简称protobuf)这个玩意儿。本来俺在构思“生产者/消费者模式 ”系列的下一个帖子:关于生产者和消费者之间的数据传输格式。由于里面扯到了protobuf,想想干脆单独开一个帖子算了。   ★protobuf是啥玩意儿?   为了照顾从没听说过的同学,照例先来扫盲一把。   首先,protobuf是一个开源 项 目(官方站点在“这里

2017-02-12 13:53:09 777

原创 SSH远程登录入门-原理

首先说明一下 SSH是什么 ? 很简单的,SSH就是一种协议,就像TCP,UDP之类的一样,只是一种通信的约定.进而产生的一个问题就是协议的实现方式是有很多种的,多个厂商(甚至你我)都可以实现这个协议. 然后这个协议的作用在哪里?好吧,我们从计算机的发展历史来说吧,早期的计算机在网络上是明文传输消息,因此显然存在以下问题数据可以让人随意截获并且很轻易地修改并且重新发送.对于一些数据,举例子

2017-01-14 17:01:00 801

转载 如何高效的访问内存

影响内存访问速度的因素主要有: 1.内存带宽:每秒读写内存的数据量,由硬件配置决定。 2.CACHE高速缓冲:CPU与内存之间的缓冲器,当命中率比较高时能大大提供内存平均访问速度。 3.TLB转换旁视缓冲:系统虚拟地址向物理地址转换的高速查表机制,转换速度比普通转换机制要快。我们能够优化的只有第2点和第3点。由于CACHE的小容量与SMP的同步竞争,如何最大限度的利用高速缓冲就是我们的明确优化

2016-05-22 21:52:22 514

原创 操作系统进程与线程之进程篇

1.1进程模型进程就是一个正在运行的程序,它由程序计数器、寄存器、当前变量的值组成。在单CPU环境下,操作系统利用了多道程序设计,来使得进程在一个时间片内快速的进行切换,进而达到了并行的效果,这只是一种模拟的“并发”,因而称之为并行。 问题1:物理寄存器只有固定的几个,程序计数器也是每个CPU人手一个,根本没法做到每个进程人手一个程序计数器,一套寄存器。因而给出的解决方案是:把一套寄存器,一

2016-05-15 22:10:58 2036 1

翻译 Nginx的模块开发指南

原文:http://www.evanmiller.org/nginx-modules-guide.html 译文:http://blog.csdn.net/tab_tab_tab/article/details/51407418 解蝙蝠侠的漫画人物有助于充分认识Nginx、Web服务器。首先,蝙蝠侠快。 Nginx也快。 然后,蝙蝠侠同犯罪做斗争,Nginx和浪费CPU周期和内存泄漏做斗争。 最

2016-05-14 18:41:54 8546 1

原创 利用VS2013构搭linux0.11内核调试环境

VS2013的下载链接:链接:http://pan.baidu.com/s/1mh7iLfy 密码:ir2o linux 0.11的工程 链接:http://pan.baidu.com/s/1eRUvAUY 密码:ue3h 下载完成后然后从打开刚刚的Linux0.11工程。 再然后设置image为启动项目 再按ctrl+F5直接执行,弹出两个窗口,其中这个窗口就是linux0.11的调

2016-05-10 17:24:16 539

原创 操作系统进程与线程之线程篇

1.1为什么要引入多线程?从多个角度去分析下 - A.从用户角度分析 ,有得程序员需要写一个经常阻塞(比如I/O的程序),没人希望自己程序阻塞一次就挂起。 - B.从系统设计角度分析 ,许多系统搞出来的线程切换的速度都是远远大于进程切换速度的。而且线程切换好处是Cache里面的数据可以不抛弃,而进程切换后必须抛弃Cache里的数据,呃,总之是快…具体的差别请看下面 - C.从硬件上分析

2016-05-10 17:00:35 751

原创 KMP算法

串′ababaaababaa′的next数组为:011234223456 先从人的分析角度去分析怎么做。。。。 next数组下标从1开始计算 next[1] 肯定是 0 next[2] 肯定是 1 next[n] 的情况,将前面n-1个字符,计算从首尾开始组成最大的相同子串的长度,如果找到,那么next值是该长度加1,否则next值是1。举例 next[6]的计算,字符串第六位是 a

2016-05-06 23:51:12 347

转载 malloc是线程安全的吗

只在Linux下查看了malloc的使用情况:GCC版本4.6.1libc-dev 3.0.0-14.23//============================================================libc中有非线程安全/线程安全两个版本malloc函数下面的链接对此有描述,几年前的版本可能是这样的:通过 -pthre

2016-05-06 09:58:07 5735

原创 GO语言学习系列1

1.1GO语言的安装 链接:http://pan.baidu.com/s/1hsjkmSO 密码:5m1f 然后一路狂点安装。。。 最后在CMD中 已经成功安装。。。 1.2GO语言之顺序编程 呃,GO语言和C++之类的语言有点不同。 1.2.1声明:首先体现在变量的声明上 C:int x; GO:var x int C:int x,y,z; GO:

2016-05-03 20:23:40 749

原创 深度分析C++默认构造函数、拷贝构造函数

对于C++初学者来说,时常不难看到他们说: 1.任何class如果没有定义默认构造函数,那么就会由编译器来合成一个出来。 2.编译器合成来的构造函数会明确确定里面所有成员的值。(比如int类型成员会初始化成0) 呃,这当然是一部分C++新手的一厢情愿吧、其实C++里面对于构造函数的诞生与否是取决于编译器是否需要必须要为其产生构造函数。。。或者说是有点类似被迫不得已时候,编译器才会合成构造函

2016-05-02 01:11:36 615

原创 程序员的自我修养第三章笔记

windows可执行文件格式:PE-COFF linux的可执行文件格式:ELF — —!还有其他系统的可执行文件格式..强调一点吧,某系统的可执行文件不能执行在其他不同可执行文件格式系统的上面…比如windows和Linxu —> —>当然,不单可执行文件是用这个格式,动态库和静态库也是用这个格式来存储的! 准确来说,很多文件都是用同一个文件格式存储的,距离来说吧,linux下的ELF文件

2016-04-29 23:15:00 380

原创 程序员的自我修养笔记第二章

拿出我们最爱的代码#include <stdio.h>void main(){printf("hello world!\n");}然后使用各种IDE,点击编译,点击链接,点击执行。。看似简单的点击背后究竟执行了什么?隐藏在背后的编译器默默帮你做了多少的事情? 好吧,这个有点抽象,估计对初学者来说。现在描述一个生活中的场景吧。假设存在一个汽车制作厂(对应一个软件工程),里面有各种的独立的组件,比如

2016-04-29 21:52:17 323

原创 几个玩具代码(不用main的编程)

打印编译时间#include <stdio.h>int main(){ printf("本程序的编译时间为:%s %s\n",__DATE__,__TIME__); // printf("%d\n",__LINE__); return 0;} 主函数main为空的情况下输出helloworld/*********/void main(){}/*******

2016-04-29 13:27:55 1248

原创 微型Top源码剖析

简单来说就是通过读取/proc下面的文件来进行,然后进行操作的。 感觉也就那回事 分别读取了 /proc/stat /proc/loadavg /proc/meminfo 还有就是/proc/进程ID/stat这几个文件 全部都是纯文本操作 其中 /proc/loadavg可以读取5、10、15分钟内CPU的平均均衡、运行的进程数、进程总数、最后一次运行的进程ID /proc/sta

2016-04-28 21:21:50 1152

原创 【算法】字符串交替

给定两个字符串,打印所有由这两个字符串的字符交替组成的字符串,要求保持原有字符的相对顺序 例如 输入”AB“和”CD”打印 ABCD ACBD ACDB CABD CADB CDAB 好蛋疼的一说,其实也是用分治法,和本系列中的产生括号几乎有着惊人的相似。。。所以本人就直接基于那个产生括号来进行了一点点修改,再产生了答案。。。#include<iostream>using name

2016-04-27 23:12:43 498

原创 【算法】打印N对合理括号组合

题目:打印N对合理括号组合,比如输入3 输出 ((())) ()(()) ()()() (())() (()())void PrinAr(char *str,int pos,int left,int right){//pos为写入的位置 if(NULL == str || left < 0 || right < left) return; if(left == 0 &&

2016-04-27 22:45:42 455

原创 程序员的自我修养笔记第一章

1.2万变不离其宗早期的计算机体系的硬件设计: 虽然经过N年变化变成这样: 看似复杂,却没有摆脱原来的框架模型,和原来的模型核心几个点:IO、内存、CPU始终没有没有改变。因此是可以看成是最早的模型,或者说标题= = 万剑不离其宗。。。 好吧。。。总的也就这么多。现在记录下这一节学到的东西吧 1.计算机历史:早期的计算机CPU频率和内存频率几乎保持着一致性,所以看图1-1发现内存竟

2016-04-27 20:53:46 427 1

原创 C语言如何获得变量的物理地址以及简单的写时拷贝测试

基本的思路:linux下的/proc/self是对自身进程映射的文件夹,里面的pagemap允许查看到每个虚拟页映射到的物理页。#include <stdio.h>#include <unistd.h>#include <inttypes.h>intptr_t Mytop(uintptr_t vaddr) { FILE *pagemap; intptr_t paddr = 0

2016-04-27 14:49:16 5610 3

转载 Map Reduce – the Free Lunch is not over?

原文发表于 2006 年 11 月 15 日  微软著名的 C++大师 Herb Sutter 在 2005 年初的时候曾经写过一篇重量级的文章——The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software,预言OO之后软件开发将要面临的又一次重大变革——并行计算。  摩尔定律统治下的软件开

2016-04-27 10:57:53 348

转载 Vmware下Linux如何ping通Windows

http://www.68idc.cn/help/a/vmware/20150414321731.html

2015-10-16 19:42:02 370

转载 多进程和多线程的优缺点

原文:http://www.91linux.com/html/2014/cpp_0703/14633.htmlLinux内核对多进程和多线程的支持方式: 线程机制支持并发程序设计技术,在多处理器上能真正保证并行处理。而在linux实现线程很特别,linux把所有的线程都当作进程实现。linux下线程看起来就像普通进程(只是该进...Linux内核对多进程和多线程的支持方式:

2015-10-03 21:03:15 375

原创 12硬币中有一个不知道轻重的假币,用天平将它找出来

问题1:假设有8个硬币,里面有一个硬币是假币,并且知道它是重了还是轻了(假设是轻了),现在给你一个天平,要求用最小次数将这个硬币找出来.     这时候可以用一种类似二分法的算法来找出这个假币.将左边4个和右边4个比较,因为知道硬币是轻了,所以很快就能确定那堆硬币里面有假币,这时候问题的规模由原来的8变成了4....然后对4个硬币也采用同样的办法...最终3次找出那个假硬币  问题

2015-09-30 01:47:43 8369

空空如也

空空如也

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

TA关注的人

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