自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 尝试Ping百度域名后的思考

ping百度你会发现ping www.baidu.com的时候,会转为ping www.a.shifen.com。但是ping baidu.com的时候却是普通的ip地址,而且ip地址还会变化。那么出现www.a.shifen.com的原因是什么呢?为什么baidu.com和www.baidu.com的解析地址不同呢?从DNS查找原因首先我们需要明白www.baidu.com和baidu.com是两

2017-08-14 19:58:31 51177 7

翻译 Linux内核进程调度

CFS在Linux2.6.23之后,内核默认的调度器是CFS,也就是”Completely Fair Scheduler”。这个调度器替换了早先的o(1)调度器。APILinux提供了下面的系统调用来控制CPU调度的行为、策略和线程优先级。nice:为调用线程设置一个nice值,并返回新的nice值。getpriority:返回一个线程,或一个进程组,或一个特定用户的线程集合的nice值。se

2017-09-22 16:58:52 1653 1

原创 gcc中const变量的内存位置

const变量的存放位置并没有标准规定。 在gcc中,如果const变量是全局函数,那么它会被存到Data Segment。如果不是全局变量,而是放在函数内的变量,则是放在栈内。这时候就会出现一种很奇特的未定义操作,就是const变量放在栈内可以通过指针来进修改。试验代码如下:#include <stdio.h>const int b = 1111;int main() { const

2017-08-25 18:35:50 2060

原创 Linux中写时复制的fork和vfork的实际区别

我们知道fork是创建一个子进程,需要拷贝大量的内存和进程上下文,而vfork则不需要拷贝父进程内容,因为它立马就会调用execve()等函数,执行新的程序。但是在Linux内核中(几乎是所有现代操作系统中)实现了一种叫做copy_on_write的技术,就是fork()了之后,并不拷贝父进程实际的内存数据。只有当父进程或子进程对这个数据进行了修改,才会进行真正的拷贝。那么vfork()和fork(

2017-08-21 21:40:25 1035

翻译 fork()的继承内容

子进程完全复制了父进程的内容,除了下面的东西(posix标准):PIDPPIDmemory lock (mlock, mlockall) mlock主要是用来防止部分虚拟地址空间被交换到交换空间。Process resource utilizations 和 CPU time counters 系统资源使用率是指像CPU使用时间,内存使用大小,IPC消息传递数量,上下文切换次数等,这

2017-08-21 21:19:49 952

原创 Linux线程的内存布局

Linux线程的内存布局在Linux的glibc中,通过pthread结构实现线程。由于线程和主进程是使用同一个虚拟地址空间,所以我们可以通过pmap -X <pid>来比较线程运行前和运行后的虚拟地址空间变化。// gcc main.c -lpthread && ./a.outsem_t* sem;void* thread_func(void *arg) { printf("wait

2017-08-20 16:40:50 2391 1

原创 Linux X86_64位虚拟地址空间布局与试验

Linux虚拟地址布局x64 layout在x86_64下面,其实虚拟地址只使用了48位。所以C语言里,输出地址都是12位16进制的地址。48位地址长度也就是对应了256TB的地址空间。而在Linux下有效的地址区间是从0x0 ~ 0x00007FFF FFFFFFFF还有0xFFFF8000 00000000 ~ 0xFFFFFFFF FFFFFFFF两个地址区间。而每个地址区间都有128TB的地

2017-08-15 23:35:54 11897 2

原创 lua与c++的class绑定

一个naive的方法static int newSprite(lua_State *L) { int n = lua_gettop(L); // Number of arguments if (n != 4) return luaL_error(L, "Got %d arguments expected 4", n); double x = luaL_c

2017-08-14 22:03:56 655

原创 Cookie与Session

由于Web及HTTP的短连接性,Cookie和Session是使用户会话持久化的两种技术。 Cookie是由浏览器维持的,存储在客户端的一小段文本信息 Cookie是有时间限制的,根据生命期不同分成两种:会话Cookie和持久Cookie; 如果不设置过期时间,则表示这个Cookie生命周期为从创建到浏览器关闭止,这种Cookie一般保存在内存中。 如果设置了过期时间,浏览器就会把Cooki

2017-08-14 21:36:23 398

原创 golang的原始套接字

RawSocket是原始套接字,即可以接受并处理到网卡上的原始数据帧或数据包,而不经过内核的TCP/IP层的处理。 在Go语言的net库里,我们可以使用iprawsocket里的ListenIP来获得创建原生Socket的能力。监听数据包package mainimport ( "fmt" "net")func main() { protocol := "icmp"

2017-08-14 21:23:00 4094

原创 golang net包基础解析

这里主要介绍网络包内主要的几个类型。 net包是提供了底层的网络接口的,但是平时我们需要就是两个主要的接口,Listener和Conn。1. ConnConn是一个基本的接口类型,以数据流为向导的网络连接接口。注意他是接口类型,不需要我们来手动构造实现Conn接口。 生成满足Conn接口的类型的函数func Dial(network, address string) (Conn, error)

2017-08-14 20:55:00 10192

原创 CMake配置工程链接库

CMake是一款优秀的C/C++项目编译管理工具。而C/C++项目经常使用一些第三方库,如boost、luajit等。而在CMake下大致有3种方式将C/C++库引入工程。find_packagefind_package是CMake原生使用的库查找命令。使用方式如下find_package(Boost REQUIRED)find_package(SDL2 REQUIRED)if(Boost_FO

2017-08-14 20:30:52 3823

原创 ubuntu下的resolvconf命令

dns地址的存放地址是/etc/resolv.conf 这是一个链接文件但是如果直接写这样有点蛋疼,最后你会发现他有时会被抹去。为什么呢,因为这是ubuntu里 resolvconf这个脚本命令的原因。resolvconf是debian系里一个管理dns的命令,dhclient,ifup等命令都是支持用它来管理dns的目录:/run/resolvconf/resolv.conf

2015-03-22 21:09:54 7443

原创 linux下dbus的理解学习

最近在设计一个linux桌面程序。而进程间的交互准备使用dbus来解决。介绍:有那么个组织叫freedesktop,它是专门为linux桌面制定标准的。什么KDE,GNOME都是按他的标准来的。而dbus是其中的桌面消息机制的一个标准。dbus是一个IPC的管理系统,其实就底层来说就是本地socket通信。但是他是将所有的消息都通过总线的方式来管理分发,易于管理和安全。dbus一般

2015-03-21 15:51:10 11682

原创 mint-kde卸载破损的wicd包,恢复被删除的network-manager

linux发行版:mint17-kde 最近想学习网络连接器设计。下载了wicd的最新源码。后来像尝试wicd,因为冲突将network-manager卸载,但发现断网无法apt-get wicd。只能源码安装wicd。通过python setup.py后发现 wicd安装出错。可以打开wicd,但是里面的无线网络配置功能无法使用,所以断网。且无法卸载(因为是源码安装,而其自带的卸载失

2014-12-10 00:00:16 1820

原创 KDE解决Could not start d-bus. Can you call qdbus?

最近linuxmint-kde更新,不知怎么进不去KDE桌面。弹出Could not start d-bus. Can you call qdbus我尝试了sudo apt-get install qdbussudo apt-get install qdbus-qt5因为都正常安装所以没解决。后来搜索网上发现了这个BUG的讨论https://bugs.launchpad

2014-12-07 19:45:01 6705 2

原创 cocos2dx-3.0 环境安装

这里我只是简单写下如何在wondows下运行例程。环境要求:windowscocos-2dx-3.0(http://www.cocos2d-x.org/download)Visual Stduio 2013Python 2.7其实这里vs2013或者2012都可以。因为cocos-2ds-3.0使用C++11的特性。所以不建议使用vs2010。直接在build目录下

2014-05-03 10:58:48 973

原创 web.py HTML javascript 多附件上传实现

最近在做网站

2014-04-30 11:34:44 1362

原创 C语言的模块编写规范

最近在linux下编写FTP,

2014-04-25 19:39:57 1007

空空如也

空空如也

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

TA关注的人

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