自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

L_Nan的专栏

思想有多远,我们就能走多远

  • 博客(112)
  • 资源 (7)
  • 收藏
  • 关注

原创 一致性哈希

Consistent hashing

2018-02-05 16:57:16 404

转载 HTTP状态码

状态码 含义 200 请求已成功,请求所希望的响应头或数据体将随此响应返回。 201 请求已经被实现,而且有一个新的资源已经依据请求的需要而建立,且其 URI 已经随Location 头信息返回。假如需要的资源无法及时建立的话,应当返回 ‘202 Accepted’。 202 服务器已接受请求,但尚未处理。正如它可能被拒绝一样,最终该请求可能会也可能不会被

2018-01-16 14:58:50 683

原创 烧录树莓派镜像&更新自己编译的内核

Installing imageDownload the imagehttps://www.raspberrypi.org/downloads/raspbian/$ sha256sum 2017-11-29-raspbian-stretch-lite.zip e942b70072f2e83c446b9de6f202eb8f9692c06e7d92c343361340cc016e0c9

2018-01-14 20:35:38 1569

转载 文件系统之初始共享子树

文件系统什么是udev机制?我们都知道在Linux中一切都是文件,添加的设备都会在/dev/目录下有一个唯一的文件与之对应,在Linux的早期版本中/dev包含了系统所有可能的条目,即使某些设备实际并未与系统连接,这意味着/dev会包含数以千计的未使用设备项,从而导致了两个缺点,其一,对于需要扫描该目录内容的应用而言,降低了程序的执行速度;其二,根据该目录下的内容无法发现系统实际存在哪

2018-01-14 13:17:20 508

原创 Python: 装饰器

Example#!/usr/bin/env pythonimport functoolsdef log_v1(arg): if callable(arg): func = arg @functools.wraps(func) def wrapper(*args, **kw): print 'call %s(

2018-01-08 16:31:01 247

原创 Python: GEvent

gevent is a coroutine -based Python networking library that uses greenlet to provide a high-level synchronous API on top of the libev event loop.gevent pypi/gevent 基于协程的Python网络库gevent介绍

2018-01-08 12:22:41 377

原创 Python: Flask is a micro webdevelopment framework for Python.

Example#!/usr/bin/env python# encoding: utf-8from flask import Flaskapp = Flask(__name__)@app.route('/')def index(): return 'hello world'if __name__ == '__main__': app.run(debug=Tru

2018-01-08 11:56:58 252

转载 GO: 类型断言

go里面的类型断言写法:x.(T)其中x为interface{}类型 T是要断言的类型。 类型断言有个非常好的使用场景:当某个类型为interface{}的变量,真实类型为A时,才做某件事时,这时可以使用类型断言 下面有个例子。只有当某个interface{}的类型 存储的是int时才打印出来。package mainimport ( "fmt" "ma

2018-01-05 15:00:58 947

原创 开源项目源码在线阅读

busybox / linux / uboot 源码在线阅读 http://elixir.free-electrons.com/linux/latest/source

2018-01-03 13:02:53 659

原创 2018 *精读书单 -选读

2018 *精读书单 -选读苏格拉底的申辩 柏拉图 回忆苏格拉底游叙弗论拉凯斯篇会饮篇理想国阿里斯托芬喜剧六种哲学的慰藉重塑自我: 如何成为一个很幸福的人谢谢你迟到 托马斯-弗里德曼 世界是平的世界又热又平又挤深度工作掌握大趋势爆裂论美国的民主优秀的绵羊 威廉 德雷谢维奇 教育思想的演进生命中最简单又困难的事教养的迷思为博雅教育辩护麦田守望者白板 人性

2017-12-31 17:39:29 377

原创 webs about storage

The Linux Storage Stack Diagram

2017-12-29 18:47:12 292

原创 GO: struct tag Examples

获取tag的内容是利用反射包来实现的,直接上 Example Example01package mainimport ( "fmt" "reflect")type People struct { Name string "name" //引号里面的就是tag Age int "age"}type S struct { F string `species

2017-12-28 18:37:46 386

转载 GO: golang sync WaitGroup

golang 的 sync 包,有一个很有用的功能;就是 WaitGroup 。 WaitGroup的用途:它能够一直等到所有的goroutine执行完成,并且阻塞主线程的执行,直到所有的goroutine执行完成。WaitGroup总共有三个方法:Add(delta int),Done(),Wait()。简单的说一下这三个方法的作用。Add:添加或者减少等待goroutine的数量Done:

2017-12-28 16:47:46 355

原创 打patch: fibre channel NPIV重新编译 systemd 源码包

物理机安装的是 ubuntu14.04-5 版本,有个项目遇到个udev的bug,导致使用fc san的volume在重启vm后,无法正确挂载,该 bug 已经 Fix: udev: path-id: fibre channel NPIV - use fc_vport’s port_nameubuntu14.04/16.04 的官方 systemd-udevd 没有包含该 patch,需要打补丁,步

2017-12-28 12:34:37 333

转载 GO: 语言并发与学习笔记

这这两篇文章写的很好,记得看评论 :) GO语言并发与并行学习笔记(一) GO语言并发与并行学习笔记(二)

2017-12-26 16:34:19 241

原创 Go: Logrus is a structured logger for Go (golang)

Logrus is a structured logger for Go (golang), completely API compatible with the standard library logger.

2017-12-26 10:48:24 541

转载 How to Mount NTFS File System in CentOS 7 / RHEL 7

Step-1 Enable EPEL Repository # wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm# rpm -ivh epel-release-latest-7.noarch.rpmOR# yum install epel-release# yum clean all# yum

2017-12-24 22:46:43 457

原创 打开VT-x/VT-d功能

在BIOS中可以打开CPU的VT-x/VT-d功能(这里默认CPU支持VT-x/VT-d虚拟化技术)。 如果不想重启电脑,我们如何判断是否开启了CPU的虚拟化支持呢?在Linux系统,可以通过下面的方法判断。首先判断CPU是否支持VT-x技术? 如果grep --color vmx /proc/cpuinfo执行结果flags中有 vmx ,那么该CPU支持VT-x技术。 flags中有 vmx

2017-12-24 13:18:41 28415

原创 Nested KVM

Nested KVM在Intel处理器上,KVM使用Intel的vmx(virtual machine eXtensions)来提高虚拟机性能,即硬件辅助虚拟化技术。如果一台虚拟机能够和物理机一样支持”vmx”,那么就可以在这台虚拟机上再次安装虚拟机。Nested KVM是一个可通过内核参数来启用的功能。它能够使一台虚拟机具有物理CPU特性,支持vmx或者svm(AMD)硬件虚拟化。物理服务器开启N

2017-12-24 13:13:55 694

转载 Cache与主存之间的全相联映射、直接映射和组相联映射的区别

Cache与主存之间的全相联映射、直接映射和组相联映射的区别高速缓冲存储器的功能、结构与工作原理高速缓冲存储器是存在于主存与CPU之间的一级存储器, 由静态存储芯片(SRAM)组成,容量比较小但速度比主存高得多,接近于CPU的速度。 Cache的功能是用来存放那些近期需要运行的指令与数据。目的是提高CPU对存储器的访问速度。为此需要解决2个技术问题:一是主存地址与缓存地址的映象及转换; 二是按一定原

2017-12-24 11:04:50 41077 5

转载 #欢迎使用CSDN-markdown编辑器#

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

2017-12-24 10:50:13 717

原创 Go: Yaml support for the Go language

go run yaml_v2.go

2017-12-22 15:37:31 271

原创 [Hardware Error]: Hardware error from APEI Generic Hardware Error Source: 4

kernel: [946277.337433] {5}[Hardware Error]: Hardware error from APEI Generic Hardware Error Source: 4

2017-12-18 12:35:08 16202 2

原创 python操作postgre数据库

连接postgresql数据库http://initd.org/psycopg/

2017-01-12 16:28:55 1338

原创 神奇的系统请求键SysRq

什么是SysRqIt is a 'magical' key combo you can hit which the kernel will respond toregardless of whatever else it is doing, unless it is completely locked up.如何使能SysRq?内核配置SysRq若使用SysRq,需

2016-05-08 09:27:29 4567

转载 linux下逻辑地址-线性地址-物理地址图解

一、逻辑地址转线性地址    机器语言指令中出现的内存地址,都是逻辑地址,需要转换成线性地址,再经过MMU(CPU中的内存管理单元)转换成物理地址才能够被访问到。我们写个最简单的hello world程序,用gccs编译,再反编译后会看到以下指令:mov    0x80495b0, %eax这里的内存地址0x80495b0 就是一个逻辑地址,必须加上隐含的DS 数据段的基地址,才能

2016-04-19 10:44:04 3367

转载 Linux内存管理之三 页的分配和释放

Linux对内存区内的页框的分配和释放,采用的算法是伙伴系统。如上图,Linux分配页时,只能分配2^n个页。内核维护MAX_ORDER个链表,每个链表记录着连续的空闲页。第一个链表中的每一项为1个空闲页,第二个链表中的每一项为2个空闲页,第三个链表中的每一项为4个空闲页。。。,依次类推。分配页时,从对应的链表上摘除空闲页;释放页时,将对应的页归还到对应的链表。分配释放页的过程中,可能

2016-04-18 16:02:29 574

转载 Linux内存管理之二 内存节点和内存分区

UMA和NUMA:UMA(Uniform Memory Access),即一致性内存访问。这种情况下,CPU访问内存的任何位置,代价都是一样的。NUMA)(Non Uniform Memory Access),即非一致性内存访问。这种情况下,CPU访问不同位置的内存,代价是不一样的。在多CPU情况下,对每个CPU来说有本地内存和远端内存,访问本地内存的代价比访问远端内存的代价小。确保CPU

2016-04-18 16:01:30 992

转载 Linux内存管理之一 分段与分页

现代操作系统的内存管理机制有两种:段式管理和页式管理。段式内存管理,就是将内存分成段,每个段的起始地址就是段基地址。地址映射的时候,由逻辑地址加上段基地址而得到物理地址。纯粹的段式内存管理的缺点很明显,就是灵活性和效率比较差。首先是段的长度是可变的,这给内存的换入换出带来诸多不便,如何选择一个段的长度是一个棘手的问题;其次进程在运行过程中,可能会扩充地址空间,这就要增加段,从而造成进程的地

2016-04-18 15:59:07 1380

转载 Linux Kernel 学习路线

看了下各位大神的推荐路线,总结如下: 0. 跟着项目走;1. 学会用、熟练用linux系统;2. Linux Kernel Development.3. Understanding the Linux Kernel.4. Linux Device Driver.5. 找一个感兴趣的子系统研究,认真研究代码,这里的建议是可以看提交的每个change。比如网络子系统:Und

2016-03-17 23:02:39 1946

转载 vim script for kernel coding

vim的一个插件, 对于编写kernel代码很有帮助使用方法就是简单的放在~/.vim/plugin目录下=======================================Subject: vim script for kernel codingthis is the original onehttp://www.vim.org/scripts/script.p

2016-03-10 17:59:44 737

转载 深入理解软件包的配置、编译与安装【转】

从源代码安装过软件的朋友一定对 ./configure && make && make install 安装三步曲非常熟悉了。然而究竟这个过程中的每一步幕后都发生了些什么呢?本文将带领你一探究竟。深入理解这个过程将有助于你在LFS的基础上玩出自己的花样来。不过需要说明的是本文对 Makefile 和 make 的讲解是相当近视和粗浅的,但是对于理解安装过程来说足够了。概述用一句话来解释这个

2016-03-03 11:38:09 4696

原创 Building System之 get_abs_build_var() && get_build_var()

1、get_abs_build_var() 和 get_build_var()的实现都在build/envsetup.sh中。2、在buld目录下grep这两个函数可知:这两个函数只在build/envsetup.sh脚本中使用。言归正传,贴代码# Get the value of a build variable as an absolute path.function get_a

2015-09-23 20:58:09 2746

原创 Makefile和Makefile.sh在同一级目录下引发的问题

问题描述:.├── Makefile└── Makefile.shfile:Makefileall: @bash Makefile.shfile:Makefile.sh#!/bin/shecho "test"ls -l 查看Makefile 和 Makefile.sh的时间如果Makefile的时间 >= Makefile.sh的时间,那么执行mak

2015-09-23 10:50:51 1715

原创 Building System之编译前的准备工作

1、设置JAVA_HMOE环境变量export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd642、source build/envsetup.sh该shell脚本实现了许多有用的shell函数,执行hmm(hmm是envsetup.sh实现的第一个shell函数)可查看envsetup.sh实现的所有函数。下面是hmm命令显示的一部分

2015-09-22 16:22:38 2469 1

转载 Special Shell Variables

The Bourne shell has a number of special “automatic” variables that it maintains for informational purposes. These variables provide information such as the process ID of the shell, the exit status of

2015-09-22 15:47:20 659

转载 cat proc/version在内核中是如何实现的?

平时的时候我们都在用cat /proc/version来获得我们内核的版本号,但是是如何产生的呢?let's see see fs/proc/version.c。 static int version_proc_show(struct seq_file *m, void *v) { seq_printf(m, linux_proc_banner,

2015-09-01 21:15:15 1442

原创 Valgrind —— Android使用摘要

## valgrind 官网地址:http://www.valgrind.org/

2015-07-22 14:37:17 1322

转载 C++异常以及错误处理

计算机应用程序中离不开错误处理,尤其是生产型大型软件系统。应用软件系统运行属于循环处理事务,出错后需要保证不能让软件程序直接退出。这就需要使用一定的程序容错处理来应对。一般情况下,大型软件开发中的软件系统容错处理会结合异常处理、错误代码定义的使用与相应的出错处理日志记录,包括一定的参与大型生产系统的监控系统等配合保障系统的稳定性。下面本章将会就C++软件系统中提供的异常处理作详细的讲述,包括基本概

2015-03-03 10:47:12 12820

转载 Android中native进程内存泄露的调试技巧(一)

基于Android5.0版本Android为Java程序提供了方便的内存泄露信息和工具(如MAT),便于查找。但是,对于纯粹C/C++ 编写的natvie进程,却不那么容易查找内存泄露。传统的C/C++程序可以使用valgrind工具,也可以使用某些代码检查工具。幸运的是,Google的bionic库为我们查找内存泄露提供了一个非常棒的API--get_malloc_leak_info。利用它

2015-02-04 18:03:26 13132 2

TCP Tuning for HTTP draft-stenberg-httpbis-tcp-03

This document records current best practice for using all versions of HTTP over TCP.

2017-12-26

Low Latency Performance Tuning Guide for Red Hat Enterprise Linux 6

Low Latency Performance Tuning Guide for Red Hat Enterprise Linux 6

2017-12-26

Tuning ToolBox

Tune up your systems and search out bottlenecks with handy performance tools.

2017-12-26

dia-setup-0.97.2-1.exe

Dia是一款免费的画图工具,可以辅助开发着设计;该软件既有Linux平台的版本,又有Windows平台的,想要下载Windwos平台的,来这里下载,就找对地方了。

2014-11-24

memtest内存测试工具

memtest是检测DDR内存正确性的一款开源软件

2014-09-09

Android OS之使用alarm

Android OS手机,C语言编程使用alarm定时器;若手机echo mem > /sys/power/state即将进入deep! Z状态时,启动alarm定时器,当到达设定的时间点,手机暂时被唤醒(若不进行resume操作,稍等片刻,系统再次进入deep! Z状态),紧接着执行echo on > /sys/power/state唤醒手机,系统将进入runtime状态,不再睡眠。

2014-07-23

UNIX 环境高级编程(源代码)

此为第二版的源代码apue是指Advanced Programing in UNIX Environment

2010-03-17

空空如也

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

TA关注的人

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