计算机科学精彩帖子收集
linux源码
LXR 源自“the Linux Cross Referencer”,中间的“X”形象地代表了“Cross”。与 Source Navigator 类似,它也是分析阅读源代码的好工具。不同的是,它将源代码借助浏览器展示出来,文件间的跳转过程成了我熟悉的点击超链接动作。
http://lxr.linux.no/ LXR安装过程简介
linux手册
http://linux.die.net/man/
Linux每周新闻
http://lwn.net/
linux.org 可以每天读一读,顺便提高英文水平
http://www.linux.org/forums/
MIT的64位Centos6.5下载镜像
http://mirrors.mit.edu/centos/6.5/isos/x86_64/
xinu
http://www.xinu.cs.purdue.edu/
Nginx源码
http://lxr.evanmiller.org/http/source/
src/lib/libc/源码(如果只是看libc而不局限与Linux,可以到这里看)
http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/
GUN的libc源码下载
http://mirrors.ustc.edu.cn/gnu/libc/
www.sf.net SF的C代码库(可以按编程语言等筛选)
http://sourceforge.net/directory/developmentstatus:production/language:c/os:linux/freshness:recently-updated/?q=C
xshell中文乱码:
[文件]–>[打开]–>在打开的session中选择连接的那个,点击[属性] -> [终端], 编码选择为:Unicode(UTF-8),然后重新连接服务器即可。也可以在Xshell的工具栏里面点击“编码 ”按钮,选择Unicode(UTF-8)编码即可。
Makefile:2: *** 遗漏分隔符 。停止
罗列linux所有安装包:#pkg-config --list-all
代码阅读--Source Insight
http://www.sourceinsight.com/index.html
SI3US-205035-36448
在sourceInSight中看代码时,中文注释显示有问题,因为它不支持utf8编码
方法是:用记事本打开含有中文的文件,然后另存为ANSI编码
代码来源--acme
http://www.acme.com/software/
正则:
http://www.regexper.com/
http://www.debuggex.com/
例如:html链接的正则
<a\shref=\"(https?://[^"]+)\"[^>]*>([^<]+)<\/a>
==========================
汇编语言
Linux 汇编语言开发指南
X86汇编语言学习手记(1)
汇编代码开始的andl $-16,%esp
LINUX汇编(汇编语言程序设计读书笔记)
反推函数调用栈
函数调用栈详解(good)
链接与加载(上) — 静态链接
链接与加载(下) — 动态链接
常量、指针和变量的实现机制
30天自制操作系统笔记 作者很爱学习Linux/C
==========================
计算机组成
处理器CPU
taskset: 让进程运行在指定的CPU
上海交通大学师生制作的一个关于cache映射功能、命中率计算的教学演示程序 [很好,可以点击看目录更精彩]
7个示例科普CPU Cache
计算机博物馆
============================
Linux
#uname -a 内核信息
------------------------
#man -k 函数
#man 返回的数字 函数
#man -k file | grep umask
---------------------------
抓指定端口
#tcpdump -i eth0 port 80
---------------------------
#netstat -a 查看开启了哪些端口,常用netstat -an
#netstat -n 查看端口的网络连接情况,常用netstat -an
#netstat -v 查看正在进行的工作
#netstat -p 协议名 例:netstat -p tcq/ip 查看某协议使用情况(查看tcp/ip协议使用情况)
#netstat -s 查看正在使用的所有协议使用情况
------------------------------
lsof的功能很多,特別提醒大家, -c,-g,-p,-u,这四个参数最有用。更详细的资料请参看:man lsof
# lsof abc.txt 显示开启文件abc.txt的进程
#lsof -p pid 查看侦听端口,lsof 常见的用法是查找应用程序打开的文件的名称和数目
# lsof -i :80 知道80端口现在运行什么程序
# lsof -c nsd 显示nsd进程现在打开的文件
# lsof -g gid 显示归属gid的进程情况
# lsof +d /usr/local/ 显示/usr/local目录下被进程开启的文件
# lsof +D /usr/local/ 同上,但是会搜索目录下的目录,时间较长
# lsof -d 4 显示使用fd为4的进程
# lsof -i [i] 用以显示符合条件的进程情况
#lsof -i @192.168.1.10 显示了搜索与 192.168.1.10 之间的所有连接。
--------------------------------
#cat /proc/interrupts 显示中断信息
#cat /proc/2452/fd/7
#cat /proc/net/sockstat 网络套接字使用统计
#cat /proc/sys/fs/file-max 所有运行的程序同时能打开的文件总数
------------------------------------
将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar
# tar -cvf /tmp/etc.tar /etc <==仅打包,不压缩!
# tar -zcvf /tmp/etc.tar.gz /etc <==打包后,以 gzip 压缩
# tar -jcvf /tmp/etc.tar.bz2 /etc <==打包后,以 bzip2 压缩
#tar -zxvf /tmp/etc.tar.gz 解压
---------------------------------------
#vmstat 2 第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数。主要通过收集VMSTAT的信息来展现服务器状况。
-----------------------内核----------------------------
内核之旅
http://linuxtoy.org/ [哈工大linux站]
Linux 系统内核的调试 [IBM文档库]
IBM Linux文档库
一种解读linux内核源码的入门方法
深入理解SetUID
Linux下缓冲区溢出攻击的原理及对策 [IBM文档库]
使您的软件运行起来: 防止缓冲区溢出 [IBM文档库]
struct rlimit介绍
防止内存泄露 Linux下用Valgrind做检查
内存调试 - MEMWATCH
Linux内核怎样获取进程任务结构
《Linux 核心》原著: David A Rusling翻译: Banyan & fifa
《Linux 核心》原著: David A Rusling翻译: 胡宁宁 毕昕 仲盛 赵振平周笑波 李群 陈怀临
Linux Used内存到底哪里去了?
从free到page cache
Linux内核引导参数简介
Linux (0.11版) 重新组装
Linux 内核源代码各个版本和一些工具
也谈Linux Kernel Hacking – 内核配置、编译与安装
如何加入Linux内核开发社区(1)
Linux Crontab 定时任务 命令详解
ubunttu下配置内核linux-3.6.7
使用 /proc 文件系统来访问 Linux 内核的内容 [IBM文档库]
使用异步 I/O 大大提高应用程序的性能
linux内核PID管理 [很好]
linux内核hlist分析
Linux内核spin_lock与spin_lock_irq分析
如何调试Linux内核
printk内核调试
linux上使用strace查看C语言级别的php源码【查看最终系统调用】
Linux下高并发socket最大连接数所受的各种限制 [很好]
完全用Linux工作
关于patch的总结,希望对不太了解的朋友有用
摘录:Linux打Patch的方法 [很好]
Linux性能监控(1) [总结全面] linux系统性能监控常用命令 [全面]
系统调用的实现原理 [很好]
原子操作的内核源代码剖析
--------------------------内存管理-------------------------------
内存映射文件原理探索 [很好]
Linux内存管理大图(第三稿)
简析堆内存
Linux slab 分配器剖析 [IBM文档库]
Linux Slub分配器(一)--概述 [很好]
Linux伙伴系统(一)--伙伴系统的概述 [很好]
Linux物理内存概述
[CNT]关于自己的一个小小的slab内存分配器 [很好]
[Pthread] Linux中的内存管理(一)--Paging
[Pthread] Linux中的内存管理(二)--Layout
[Pthread] Linux中的内存管理(三)--Stack
[Pthread] Linux中的内存管理(四)--Heap(brk()和mmap()) [很好]
分段和分页 [形象]
第十讲分段与分页 (图文并茂形象)
广东工大操作系统课件 [很好]
分页存储管理 [很好]
分段存储管理 [很好]
内存管理内幕 [IBM文档库]
内存分配原理 [转帖存档]
【百度分享】频繁分配释放内存导致的性能问题的分析 [写的非常好]
内存分配的原理__进程分配内存有两种方式,分别由两个系统调用完成:brk和mmap(不考虑共享内存)
malloc()_分配内存,会用到brk(用于小内存申请<=128kb,在堆上)或mmap2(用于大内存申请,一般是堆和栈中间)系统调用
内存分配的原理__Linux虚拟内存管理(glibc)_Linux的虚拟内存管理有几个关键概念_Linux 虚拟地址空间如何分布_malloc和free是如何分配和释放内存_如何查看堆内内存的碎片情况_既然堆内内存brk和sbrk不能直接释放,为什么不全部使用 mmap 来分配,munmap直接释放呢
频繁分配释放内存导致的性能问题的分析___1、缺页中断的执行过程;2、内存分配释放的原理__brk,mmap,为什么会产生内存碎片等原因
mmap内存占用问题
Linux系统调用-- mmap/munmap函数详解
Linux中brk(),sbrk(),mmap(),malloc(),calloc()的异同
-----------------------进程----------------------------
linux进程创建过程与原理
Linux启动新进程的几种方法及比较 linux编程-守护进程编写
使用ptrace跟踪进程 0号进程->1号内核进程->1号内核线程->1号用户进程(init进程)->getty进程->shell进程
linux进程创建:fork、vfork和clone联系与区别
在Linux下的进程资源的限制(struct rlimit)详解
Linux系统调用--getrlimit()与setrlimit()函数详解
窥探 kernel --- 浅析do_exit [有图很好]
------------------进程间通信----------------------
在 Linux 中使用共享对象 让共享内存为您服务,而不是为您制造麻烦
-------------------------线程-------------------------------
pthread_cond_signal和pthread_cond_wait简介
-----------------------信号----------------------------
-----------------------时间----------------------------
浅析 Linux 中的时间编程和实现原理,第 1 部分: Linux 应用层的时间编程
浅析 Linux 中的时间编程和实现原理,第 2 部分: 硬件和 GLibC 库的细节
浅析 Linux 中的时间编程和实现原理,第 3 部分: Linux 内核的工作
浅析 Linux 中的时间编程和实现原理,第 4 部分: Linux 内核的工作
-----------------------文件和锁----------------------------
硬盘分区备忘(主分区,扩展分区和逻辑分区)以及Linux硬盘分区工具parted 介绍
Linux文件IO__文件系统架构层次,IO调用链,一致性和安全性,性能问题,fclose,fflush,fsync的区别 [很好很好]
linux open 函数O_DIRECT标志位使用说明 open的O_DIRECT选项 【注意事项】
linux文件操作(一)(遇见0425的ChinaUnix博客)
linux mmap 内存映射mmap() vs read()/write()/lseek() [很好]
强制把系统缓存写入文件sync和fsync函数,, fflush和fsync的联系和区别 (c库缓冲-----fflush---------〉内核缓冲--------fsync-----〉磁盘)
Linux 2.6内核中新的锁机制--RCU [IBM文档库]
Pthreads mutex vs Pthreads spinlock
-----------------------输入输出----------------------------
对STDOUT_FILENO和STDIN_FILENO的理解
-----------------------linux图形化----------------------
----------------------小例子很好-------
-----------------------中断-------------------
-----------------------linux数据结构----------------------------
-----------------------链接与加载 动态库 静态库----------------------------
-----------------------GCC和编译----------------------------
How to Build a GCC Cross-Compiler[技术含量很高]
GCC "-fomit-frame-pointer"编译选项的含义
Introduction to PIC - (Position Independent Code)
----------------网络编程----------------------
(摘录)sockaddr与sockaddr_in,sockaddr_un结构体详细讲解
[gcc编程] socket编程——sockaddr_in结构体操作
高性能网络编程,第 2 部分: 加快客户机和服务器的处理速度
-------------------linux TCP/IP协议栈------------------------------------
linux tcp/ip协议栈研究--ip包的转发和本地传递
-----------------------------------------------------------------
LVS+Keepalived
lvs 和 keepalived的有什么区别
lvs+keepalived和haproxy+heartbeat区别
------------------ljianhui的专栏-------------------------
------------------------TCP/IP-------------------------
----------------select和poll----------------------
select系统调用与FD_SET,FD_ISSET,FD_ZERO
select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
Linux 内核的排队自旋锁(FIFO Ticket Spinlock
Ticket spinlocks
--------------------------------------
使用多线程还是用IO复用select/epoll? epoll 或者 kqueue 的原理是什么?
file-max与ulimit的关系与差别
/proc/sys/fs/file-max
epoll_create, epoll_ctl和epoll_wait
Linux网络编程一步一步学-epoll同时处理海量连接的代码
----------tcpdump-------------------
---------------------------------------------------
==========================
算法和数据结构
一致性哈希算法及其在分布式系统中的应用
一致性哈希PHP实现flexihash版 [很好]
海量数据处理算法—Bit-Map
数据结构多媒体演示
使用SquirrelMQ打造一个千万级数据更新量的应用
B树的实现
由浅入深探究mysql索引结构原理、性能分析与优化
How browsers work--Behind the scenes of modern web browsers (前端必读)
跨越千年的RSA算法
伸展树的点点滴滴
动态规划那些事
线性时间排序算法
算法系列---回溯算法
扔鸡蛋问题详解(Egg Dropping Puzzle)
MySQL索引背后的数据结构及算法原理
跳跃表(数据结构)
SkipList跳表基本原理
跳表(Skip List)的介绍以及查找插入删除等操作
Skip List(跳跃表)原理详解与实现
SkipList 跳表
Win32 环境下的堆栈
海量存储系列之七
关于位图索引
位图索引(Bitmap Index)——索引共用 [很好]
堆的相关操作-最大堆,最小堆,堆排序,优先队列等
Oracle编程高手箴言:位图索引(Bitmap Index)的故事
教你如何迅速秒杀掉:99%的海量数据处理面试题[很好]
字符串相关算法问题 [很好]
C语言单链表实现19个功能完全详解[还可以]
Unique索引优化实践
位运算符及其应用
海量数据处理 算法总结
海量数据处理算法—Bit-Map
海量数据处理算法—Bloom Filter
Trie树:应用于统计和排序
白话经典算法系列之六 快速排序 快速搞定
递归与尾递归总结
=============================
C语言
编写你的第一个垃圾收集器
ldd命令原理与使用
FastCGI开发者套件
C调用C++静态库
C和C++之间库的互相调用
C如何调用C++的库
为什么不常见include .c文件 [如果是include .c文件 在make文件中不能包含被include文件了否则编译不过去]
C/C++数组名与指针区别深入探索 [很好]
void指针 [总结的很到位]
结构体 数组名与指针区别 [很好]
《Understanding and Using C Pointers》要点先睹为快 [很好]
断言(C++大师Andrei Alexandrescu的文章)
如何定义全局变量
《C解毒》征询意见帖
C语言头文件的使用 [很好]
浅谈c语言中的字符串
50道编程题之字符串的事
C语言的变量的内存分配
typedef 心得
typedef用法小结[很好]
typedef的四个用途和两大陷阱[很好]
函数类型和函数指针类型
恼人的函数指针(一)
const限定修饰符用法总结(常量,指针,迭代器,函数参数,成员函数)
Linux C 函数手册
开源C代码
缓冲区溢出深入理解
shellcode之一:栈溢出 (很好)
shellcode之二:简述漏洞提权
初探编译器static、const之实现原理
Permanent Link to 跨越千年的RSA算法
C语言再学习之 setjmp与longjmp
日志模块的C语言实现 [还可以]
如何实现一个malloc [张洋 很全面]
指针传递内存深入探讨(一)
堆:快乐和痛苦
谁动了我的cpu——oprofile使用札记
使用 google-perftools 剖析程序性能瓶颈
const常量、指向常量的指针和常量指针
C 语言中的指针和内存泄漏
C语言字符串库函数的实现 [很好]
卓越的教练是如何训练高手的?
Linux下程序设计____命令行参数的获取argc,argv的解析(getopt的使用)
C语言函数内部改变指针本身 [很好] 改变指针内容只能用指针的指针
C语言中的作用域和生存周期 for循环定义的局部变量在循环结束后就没了
c语言中常常用到的宏
老罗的缤纷天地
C/C++ Volatile关键词深度剖析
--------------------libcurl-----------------------------
http://curl.haxx.se/libcurl/
libcurl使用心得 (不错)
libcurl应用:如何把下载内容写入内存
libcurl教程(不错)
libcurl教程(不错)
linux c libcurl的简单使用
----------------gcc----------------------------
GCC 中的编译器堆栈保护技术
AT&T的malloc实现--malloc的基础和本质 (很好)
glibc的malloc--更多的改进
malloc的可重入性和线程安全性
关于Linux平台malloc的写时拷贝(延迟分配)
----------------内存对齐----------------------
内存对齐 [很好]
内存对齐原理(讨论的很好)
cache浅析
关于cache line
如何高效的访问内存 [讲内存对齐很透彻]
---------------内存池slab分配器-----------------------------------
基于C语言的内存池的设计与实现 [讲mempool内存池实现]
一个仿照Nginx的内存池
内存池的实现(二)
内存池的实现(一)
一个简单的内存池的实现
内存池设计与实现
C++ 应用程序性能优化,第 6 章:内存池
dlmalloc解析连载完整word文档
http://blog.csdn.net/lenky0401
lenky0401个人博客
http://lenky.info/
内存池技术畅想
漫步Facebook开源C++库folly(1):string类的设计
动态内存分配(malloc/free)简单实现--隐式空闲链表
基于C语言的内存池的设计与实现 (有图很好)
Glib中slab内存管理算法实现(一)【转】 很好
Glib中slab内存管理算法实现(二)【转】
Glib中slab内存管理算法实现(三)【转】
glib的slab算法实现学习
-----------------Tcmaloc和jemalloc--------------------------------
TCMalloc与Malloc对比
TCMalloc:线程缓存的Malloc
优化的内存访问TCMalloc
tcmalloc官方说明汉化 [无暇]
2012年tcmalloc学习笔记之一 [很好]
Tcmalloc源码简单分析(1)
让Redis使用TCMalloc,实现高性能NOSql服务器
jemalloc源码解读(一)内存页的地址
jemalloc源码解读(四)长度对齐算法
jemalloc源码解读(五)内存布局
更好的内存管理-jemalloc
==================================
C++
C++ Primer 学习笔记 [很全]
==================================
lua
【转贴】通过例子学习Lua
==================================
Nginx
Nginx官网第三方模块
Emiller's Guide To Nginx Module Development
深入理解Nginx:模块开发与架构解析(陶辉)
轻量级HTTP服务器Nginx(Nginx性能优化技巧)
使用Google PerfTools 优化Nginx
Nginx 内存池(pool)分析 [图画的非常好]
nginx源码学习----内存池 [很好]
nginx(engine x) 源代码分析 徐景(rainx), 王晓哲(chaoslawful) [很好]
ncx_mempool 轻量级内存池 [很好]
github: ncx_mempool [很好]
ncx_mempool源码分析[很好]
nginx slab内存管理 [很好]
红黑树与小根堆性能对比(java)
Emiller的Nginx模块开发指南中文版
--------------------------Nginx开发从入门到精通-----------------------------------
初探nginx架构
--------------------------阿里集团数据平台-------------------------------------------
Nginx的master和worker进程间的通信
Nginx源码分析-内存池
Nginx进程管理之master进程
Nginx进程管理之worker进程
Nginx源码分析-Epoll模块
Nginx源码分析-事件循环
Nginx的connections数组
Nginx事件驱动的初始化
--------------------------张洋(Nginx模块开发入门)---------------------------------
Nginx模块开发入门
--------------------------淘雕梁---------------------------------------------------------
nginx中cache的设计和实现(一) nginx对静态文件cache的处理 Nginx配置文件解析详解 nginx的upstream分享 nginx对keepalive和pipeline请求处理分析
nginx中request buf的设计和实现 nginx的启动流程分析(二) nginx的启动流程分析(一) nginx中if命令的设计和实现 nginx中http request处理的流程
nginx中slab分配器的实现 nginx中处理http header详解(1) nginx中处理http header详解(2) nginx中处理stale event nginx源码剖析
nginx中if命令的设计和实现 nginx对TCP_CORK/TCP_NOPUSH的使用 nginx least_conn 模块源码剖析
nginx中upstream的设计和实现(一) nginx中upstream的设计和实现(二) nginx中upstream的设计和实现(三)
--------------------------jizhao----------------------------------
Nginx基础数据结构分析-ngx_buf_t Nginx基础数据结构分析-ngx_list_t Nginx基础数据结构分析-ngx_chain_t
Nginx基础数据结构分析-ngx_hash_keys_arrays_t Nginx基础数据结构分析-ngx_hash_combined_t
Nginx基础数据结构分析-ngx_pool_t Nginx基础数据结构分析-ngx_array_t Nginx超时机制 ngx_snprintf说明
-----------------------阿波(livelylittlefish)--------------------------
nginx源码分析—内存池结构ngx_pool_t及内存管理 nginx源码分析—数组结构ngx_array_t nginx源码分析—全局变量ngx_cycle的初始化 nginx源码分析—模块及其初始化
nginx源码分析—hash结构ngx_hash_t(v1.0.4) nginx源码分析—core模块callback nginx源码分析—信号初始化 nginx源码分析—如何发送信号
-------------------------编程De(jzhlin)------------------------
Nginx 源码分析-- 内存池(pool)的分析 一 Nginx 源码分析-- 内存池(pool)的分析 二 Nginx 源码分析-- 内存池(pool)的分析 三
Nginx 源码分析-- 浅谈对模块module 的基本认知 Nginx 源码分析-- ngx_array、ngx_list基本数据结构 Nginx 源码分析-- ngx_string 的一些简单分析
Nginx 源码分析-- 模块module 解析执行 nginx.conf 配置文件流程分析 一 Nginx 源码分析-- 模块module 解析执行 nginx.conf 配置文件流程分析 二
-----------------------可乐爱上咖啡(marcky)----------------------------
Nginx源码分析-数组 nginx源码分析-链表 Nginx源码分析-启动初始化过程(一) Nginx源码分析-启动初始化过程(二) Nginx源码分析-内存池
Nginx源码分析-进程管理之master进程 Nginx源码分析-进程管理之worker进程 Nginx源码分析-master和worker进程间的通信
Nginx源码分析-事件驱动的初始化 Nginx源码分析-事件循环 Nginx源码分析-connections数组 Nginx源码分析-Epoll模块
----------------------风去无痕(fll369)-----------------------------
nginx中slab实现 Nginx共享内存 nginx进程通信--共享内存 nginx进程通信 nginx进程模型
nginx配置文件解析 nginx模块解析 nginx事件机制 nginx socket初始化 nginx建立连接
-------------------------lengzijian--------------------------
nginx 源码学习笔记(一)——初识nginx helloworld模块
nginx 源码学习笔记(六)——nginx基本数据结构 nginx 源码学习笔记(七)——内存分配相关源码分析
nginx 源码学习笔记(八)——基本容器——array数组 nginx 源码学习笔记(九)——基本容器——queue
nginx 源码学习笔记(十)——基本容器——ngx_hash nginx 源码学习笔记(十一)——基本容器——ngx_list
nginx 源码学习笔记(十二)——基本容器——ngx_buf
nginx 源码学习笔记(十三)——文件读写和配置文件读取 nginx 源码学习笔记(十四)—— 全局变量ngx_cycle
nginx 源码学习笔记(十七)—— ngx_worker_process_cycle子进程执行
nginx 源码学习笔记(二十)—— event 模块(一) nginx 源码学习笔记(二十一)—— event 模块(二)
nginx 源码学习笔记(二十二)—— event 模块(三) ——epoll模块 nginx 源码学习笔记(二十三)—— event 模块(四) ——timer红黑树
-------------------钟超Michael · 个人技术笔记--------------------------------
Nginx源码完全注释(1)ngx_alloc.h / ngx_alloc.c 解剖Nginx·模块开发篇(1)跑起你的 Hello World 模块!
-------------------但行好事 莫问前程(simohayha)--------------------------------
nginx的进程模型 nginx的内存管理 nginx中request请求的解析 nginx的filter的处理 nginx中锁的设计以及惊群的处理
nginx中handler的处理(一) nginx中handler的处理(二) nginx中的output chain的处理(一) nginx中的output chain的处理(二)
----------------------从这里开始(coder2012)-----------------------------
Nginx学习笔记(三) Nginx基本数据结构 Nginx学习笔记(二) Nginx--connection&request Nginx学习笔记(七) 创建子进程
Nginx学习笔记(六) 源码分析&启动过程 Nginx学习笔记(五) 源码分析&内存模块&内存对齐 Nginx学习笔记(四) 源码分析&socket/UDP/shmem
----------------------浪湾(langwan)-----------------------------
nginx源代码分析 Nginx源代码分析-ssi模块处理(一) Nginx源代码分析-ssi模块处理(二) Nginx源代码分析-ssi模块处理(三)
-----------------------那一剑的风情(fqing)----------------------------
nginx源码分析之开篇 nginx源码分析之模块化 nginx源码分析之设计之美 nginx源码分析之事件机制 nginx源码分析之配置图解
-------------------------bollaxu--------------------------
Nginx Proxy Cache的slab page内存缓存机制 Nginx的HTTP请求处理 Nginx的upstream模块和反向代理(一) Nginx的upstream模块和反向代理(二)
Nginx spinlock互斥锁 Nginx Proxy Cache分析 Nginx事件处理(epoll)
--------------------李子的博客(lifeibo)-------------------------------
Nginx源码分析之变量 Nginx中slab分配大内存的陷阱 Nginx问题定位之监控进程异常退出
--------------------yjf512-------------------------------
nginx的HTTP模块编写 nginx的http模块开发--一个验证url参数的例子 nginx模块_使用gdb调试nginx源码 nginx源码学习资源(不断更新)
--------------------那谁-------------------------------
----------------------江南烟雨---------------------------
Nginx学习之十三-负载均衡-IP哈希策略剖析 Nginx学习之十一-Nginx启动框架处理流程 Nginx学习之二-配置项解析及编程实现
----------------------程序员的自我修养---------------------------
nginx源码学习----内存池 哈希表的C实现(一) 哈希表的C实现(二) Mina框架研究(1)
-------------------Dmee的专栏-----------------------------
nginx源码剖析(3)----nginx中的内存池(简化去掉日志)
===================================
Redis学习手册(目录) [不错,命令例子很多,排版也不错]
--------------twemproxy代理---------------------
https://github.com/twitter/twemproxy
Twemproxy – Twitter 开源的 Redis proxy
----------------------------------
Redis内存存储结构分析 (淘宝搜索技术博客) 【很好很全】
Redis运行流程源码解析 (事件分析完整参开之三)[很好]
阿里云计算运维部高级工程师阮若夷:Redis深入浅出 [很好]
Redis内存容量的预估和优化 [很好 讲jemalloc]
为啥 redis 使用跳表(ziplist)而不是使用 red-black?
------------------Redis设计与实现---------------------------------
redisObject 数据结构,以及 Redis 的数据类型
-----------------------麦子迈------------------------------------
解读Redis中ziplist、zipmap、intset实现细节
Redis核心解读-从Master到Slave的Replicantion
Redis核心解读–pubsub(发布者-订阅者模式)的实现
Redis核心解读–集群管理工具(Redis-sentinel)
--------------------curve--------------------------------
Redis源码解析4 - 数据类型之 String & List
-----------------(董的博客)----------------------
Redis源码研究—代码整体架构 (事件分析完整参开之一)[很好]
----------------------用Bollger记录技术之路的点滴...------------------------------
----------------------------运维和开发----------------------------------
redis源代码分析 – event library (事件分析完整参开之二)[很好]
----------------------------Aegeaner的专栏-----------------------------
---------------------olylakers-------------------------------
---------------------------淘宝核心系统团队博客-------------------
------------------------------igloo1986-------------------
-------------------------------------刘浩de技术博客-----------------------
===================================
===================================
thttpd轻量级web服务器(HTTP/1.1和简单的CGI支持)
php-5.3,php-5.4的thttpd2.25b补丁,及编译方法
------------------------------------------------
libevent源码浅析: http库 libevent源码浅析: 事件处理框架 libevent源码浅析: 定时器和信号 libevent源码浅析: 主要的结构体
----------------libev---------------------
PHP中spl_autoload_register函数的用法
PHP包含文件(require/include/require_once/include_once/__autoload/spl_autoload_xxx)分析总结
用PHP实现简单的控制反转(IOC) 依赖注入(DI),用JSON配置文件 [很好]
https://github.com/phpredis/phpredis [phpredis扩展]
-----------------PHP扩展----------------------------
PHP内核探索:zend_parse_parameters函数
Zend API:Zend_parse_parameters
--------------laruence-----------------------
再一次, 不要使用(include/require)_once
Yar – 并行的RPC框架(Concurrent RPC framework)
-----------------------------------------------------------
Yii PHP 框架分析 (一) Yii PHP 框架分析(二) Yii PHP 框架分析(三) Yii PHP 框架分析(四)
-----------------------------------------------------------
PHP的MVC框架哪一个性价比最高?yii2 还是 thinkphp
==================================
http://www.gruntjs.net/docs/getting-started/
大公司里怎样开发和部署前端代码 作者个人博客https://github.com/fouber/blog
百度web前端研发部 http://fex.baidu.com/
百度无线web研发部 http://mweb.baidu.com/
-----------------------------------------------------------
说说JSON和JSONP,也许你会豁然开朗,含jQuery用例
Ajax直接请求普通文件存在跨域无权限访问的问题。解决方法有JSONP,Flash等等。
以前要实现跨域访问,可以通过JSONP、Flash或者服务器中转的方式来实现,但是现在我们有了CORS。
CORS与JSONP相比,无疑更为先进、方便和可靠。
1、 JSONP只能实现GET请求,而CORS支持所有类型的HTTP请求。
2、 使用CORS,开发者可以使用普通的XMLHttpRequest发起请求和获得数据,比起JSONP有更好的错误处理。
3、 JSONP主要被老的浏览器支持,它们往往不支持CORS,而绝大多数现代浏览器都已经支持了CORS(这部分会在后文浏览器支持部分介绍)。
==================================
利用NetScaler和自行编写的健康检查脚本,完美解决多台MySQL Slave数据库的负载均衡 [张宴]
MySQL第三方复制工具 --- Tungsten-Replicator
Tungsten Replicator 的安装 2.0.4 2.0.6
第三方数据复制引擎--Tungsten-Replicator 主要特点:
1 支持高版本MySQL向低版本复制,5.1-->5.0
2 支持跨数据库系统的复制,MySQL->PgSQL ,MySQL->MongoDB
3 支持多主库向单台Slave的复制,Multi-Master-->Slave
4 G-Replicator提取数据的更新记录写到MySQL 队列表Queue;基于这个队列,可以为其他应用服务提供便利
https://code.google.com/p/tungsten-replicator/
高性能mysql(基于复制架构)(多图)高性能mysql(基于复制架构)(多图)
=================================
基于Sphinx构建准实时更新的分布式通用搜索引擎平台 [张宴]
-----------------------------------------------
http://wiki.apache.org/lucene-java/HowTo
=================================
memcached内存管理(1) ----------------slabs [很好]
memcached内存管理(2) ----------------items
memcached内存管理(3) ----------------assoc
memcached全面剖析–2.理解memcached的内存存储 [很好]
memcached全面剖析–3.memcached的删除机制和发展方向
memcached全面剖析–4. memcached的分布式算法
memcached全面剖析–5. memcached的应用和兼容程序
memcached源码学习-内存管理机制slab allocator[好]
Memcached FAQ(2) 集群架构方面的问题 [准确]
Memcached数据被踢(evictions>0)现象分析
C C++ 内存池分析 三 淘宝tair K-V 内存数据库 mem_pool
memcached server LRU 深入分析 [还不错]
==================================
==================================
FastDFS分布式文件系统点滴记录3 -- 网络模型、libevent框架使用
FastDFS分布式文件系统点滴记录4 -- tracker 、storage 入口分析
FastDFS分布式文件系统点滴记录5 -- upload上传机制剖析1
FastDFS分布式文件系统点滴记录5 -- upload上传机制剖析2
FastDFS分布式文件系统点滴记录5 -- upload上传机制剖析3
FastDFS分布式文件系统点滴记录6 -- download下载机制剖析
==================================
--------------bingfox的专栏---------------
=================分布式理论===================
以两军问题为背景来演绎Basic Paxos【最形象,paxos和两军问题,不是说paxos解决了两军问题,只是借用两军问题的背景来演绎paxos。】
Paxos算法细节详解(一)--通过现实世界描述算法【很好】
Yahoo!开源的ZooKeeper [5]是一个开源的类Paxos实现。它的编程接口看起来很像一个可提供强一致性保证的分布式小文件系统。对上面所有的场合都可以适用。但可惜的是,ZooKeeper并不是遵循Paxos协议,而是基于自身设计并优化的一个2 phase commit的协议,因此它的理论[6]并未经过完全证明。但由于ZooKeeper在Yahoo!内部已经成功应用在HBase, Yahoo! Message Broker, Fetch Service of Yahoo! crawler等系统上,因此完全可以放心采用。
CAP理论以及Eventually Consistent 解析
关于分布式事务、两阶段提交、一阶段提交、Best Efforts 1PC模式和事务补偿机制的研究
两阶段提交协议(two phase commit protocol,2PC)
BASE是指基本可用(Basically Available)、软状态( Soft State)、最终一致性( Eventual Consistency)。
软状态( Soft State)
软状态是指允许系统存在中间状态,而该中间状态不会影响系统整体可用性。
分布式存储中一般一份数据至少会有三个副本,允许不同节点间副本同步的延时就是软状态的体现。mysql replication的异步复制也是一种体现。
最终一致性( Eventual Consistency)
最终一致性是指系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。弱一致性和强一致性相反,最终一致性是弱一致性的一种特殊情况。
ACID和BASE的区别与联系
ACID是传统数据库常用的设计理念,追求强一致性模型。BASE支持的是大型分布式系统,提出通过牺牲强一致性获得高可用性。
ACID和BASE代表了两种截然相反的设计哲学
在分布式系统设计的场景中,系统组件对一致性要求是不同的,因此ACID和BASE又会结合使用。
定理:任何分布式系统只可同时满足二点,没法三者兼顾。
忠告:架构师不要将精力浪费在如何设计能满足三者的完美分布式系统,而是应该进行取舍。
关系数据库的ACID模型拥有 高一致性 + 可用性 很难进行分区:
Atomicity原子性:一个事务中所有操作都必须全部完成,要么全部不完成。
Consistency一致性. 在事务开始或结束时,数据库应该在一致状态。
Isolation隔离层. 事务将假定只有它自己在操作数据库,彼此不知晓。
Durability. 一旦事务完成,就不能返回。
跨数据库事务:2PC (two-phase commit), 2PC is the anti-scalability pattern (Pat Helland) 是反可伸缩模式的,JavaEE中的JTA事务可以支持2PC。因为2PC是反模式,尽量不要使用2PC,使用BASE来回避。
BASE模型反ACID模型,完全不同ACID模型,牺牲高一致性,获得可用性或可靠性:
Basically Available基本可用。支持分区失败(e.g. sharding碎片划分数据库)
Soft state软状态 状态可以有一段时间不同步,异步。
Eventually consistent最终一致,最终数据是一致的就可以了,而不是时时高一致。
有的架构师还说在某些场景中可以牺牲一致性呢?
通常这里说的放弃一致性指的是放弃数据的强一致性。
分布式事务是指会涉及到操作多个数据库的事务。其实就是将对同一库事务的概念扩大到了对多个库的事务。目的是为了保证分布式系统中的数据一致性。
相对于2PC,3PC主要解决的单点故障问题,并减少阻塞,因为一旦参与者无法及时收到来自协调者的信息之后,他会默认执行commit。而不会一直持有事务资源并处于阻塞状态。但是这种机制也会导致数据一致性问题,因为,由于网络原因,协调者发送的abort响应没有及时被参与者接收到,那么参与者在等待超时之后执行了commit操作。这样就和其他接到abort命令并执行回滚的参与者之间存在数据不一致的情况。
无论是二阶段提交还是三阶段提交都无法彻底解决分布式的一致性问题。只有一种一致性算法,那就是Paxos,所有其他一致性算法都是Paxos算法的不完整版。
数据库分库分表(sharding)系列(一) 拆分实施策略和示例演示
Chubby:面向松散耦合的分布式系统的锁服务 [谷歌原文翻译]
HBase vs Cassandra:我们迁移系统的原因[文章老 但是分布式理论说的还可以]
==================================
由于Java的内容太多了,单独一贴计算机科学精彩帖子收集--JAVA和分布式专栏
http://openjdk.java.net/projects/jdk8/
------------Eclipse----------------------
Eclipse自动部署项目到Tomcat的webapps下的有效方法 【重要,一定要看】
Eclipse自动部署项目到Tomcat的webapps下的有效方法 [和上面一样,纯备份]
使用$JAVA_HOME/bin/jmap -dump来触发, Eclipse Memory Analyzer是一个快速并且功能强大的Java heap分析器,能够帮助你查找内存泄漏和减少内存消耗。
在Eclipse中配置Struts2项目(二) [讲了JDK,和Tomcat的配置以及struts虽然是2007年写的不过很好]
-------------JVM-------------------------
一个优秀的Java程序员必须了解GC机制 一个优秀的Java程序员必须了解GC机制 原文
Java中三个引用类SoftReference 、 WeakReference 和 PhantomReference的区别
理解StrongReference,SoftReference, WeakReference的区别
java中的4种reference的差别和使用场景(含理论、代码和执行结果)
浅析Java虚拟机结构与机制 【全面】面向GC的Java编程
成为JavaGC专家Part I — 深入浅出Java垃圾回收机制
成为JavaGC专家Part II — 如何监控Java垃圾回收机制
JDK中的bin目录下有很多工具,这些工具可以用来检测虚拟机运行情况以及cpu,内存,线程等的监控,比如jps、jstat、jinfo、jmap、jhat、jstatck等。
-------------Java基础-------------------------
JAVA学习笔记 -- Vector, ArrayList, Array
有了内部类事件驱动模式就非常的容易实现,内部类最大的好处就是它能够达到和多重继承一样的效果。
由于WeakHashMap是在有操作的情况下才会去执行expungeStaleEntries(),将entry中对value的引用释放。
对象序列化为何要定义serialVersionUID的来龙去脉【很好】
探究内存泄露—Part1—编写泄露代码 探究内存泄露—Part2—分析问题
什么是静态(static)?什么是静态方法,静态变量,静态块和静态类?
HashMap和Hashtable的区别 HashMap的工作原理 HashMap和Hashtable的区别
对比Java.nio 和 Java.io
NIO新功能Top 10
让你明白response.sendRedirect()与request.getRequestDispatcher().forward()区别
response.sendRedirect和request.getRequestDispatcher().forward什么时候用哪个
Java抓取网页数据(原网页+Javascript返回数据)
request.getParameterValues与request.getParameter的区别
ClassNotFoundException和NoClassDefFoundError的区别
Integer的自动拆装箱的陷阱(整型数-128到127的值比较问题)
Servlet激活器和缺省Servlet Servlet激活器
在《Effective Java》这本书中也提到这个原则: float和double只能用来做科学计算或者是工程计算; 在商业计算中我们要用java.math.BigDecimal。
Java的4种代码块 java“块”的研究 javastatic块
在相同的硬件下,如果单个jvm不能完全发挥硬件的性能,通过多个jvm的集群可以,而且会超过php。
http://www.anarres.org/projects/jperf/
一个完美哈希函数(PHF)的java实现,不过没说是否最小的(MPHF)。
对所以key事先已知,key不再变化的静态字典,(M)PHF能节省内存,同时保持或提高查询时间。
---------------------Java线程--------------------------------------------------
【Java线程】锁机制:synchronized、Lock、Condition
---------------------Java json---------------------------------------
--------------------Java泛型相关----------------------------
java 泛型详解 [很全面]
Java使用泛型编程提取类名上T类型
JAVA 泛型 - Class<T>
java泛型T.class的获取
-----------------------JTA-------------------------------------------
-----------------------JNDI-----------------------------------------------
-------------------Apache Commons-----------------------------------------------
Apache Common Pool包括很多已经实现的Pool,常用的Pool有GenericObjectPool,GenericKeyedObjectPool。
采用对象池化的本意,是要通过减少对象生成的次数,减少花在对象初始化上面的开销,从而提高整体的性能。然而池化处理本身也要付出代价,因此,并非任何情况下都适合采用对象池化。
Dr. Cliff Click在JavaOne 2003上发表的《Performance Myths Exposed》中,给出了一组其它条件都相同时,使用与不使用对象池化技术的实际性能的比较结果。他的实测结果表明:
对于类似Point这样的轻量级对象,进行池化处理后,性能反而下降,因此不宜池化;
对于类似Hashtable这样的中量级对象,进行池化处理后,性能基本不变,一般不必池化(池化会使代码变复杂,增大维护的难度);
对于类似JPanel这样的重量级对象,进行池化处理后,性能有所上升,可以考虑池化。
根据使用方法的不同,实际的情况可能与这一测量结果略有出入。在配置较高的机器和技术较强的虚拟机上,不宜池化的对象的范围可能会更大。不过,对于像网络和数据库连接这类重量级的对象来说,目前还是有池化的必要。
基本上,只在重复生成某种对象的操作成为影响性能的关键因素的时候,才适合进行对象池化。如果进行池化所能带来的性能提高并不重要的话,还是不采用对象池化技术,以保持代码的简明,而使用更好的硬件和更棒的虚拟机来提高性能为佳。
------------------------------------------------------------------
JMS是一系列的接口及相关语义的集合,通过这些接口和和其中的方法,JMS客户端如何去访问消息系统,完成创建、发送、接收和读取企业消息系统中消息。
-------------------------------------------------------------------
JMX是一种JAVA的正式规范,它主要目的是让程序且有被管理的功能
------------------------------------------------------------------
-----------------------------------------------------------------
如果没有Netty?
远古:java.net + java.io
近代:java.nio
其他:Mina,Grizzly
-----------------------------------------------------------------
-------------------------------------------------------------------
Java并发框架剖析--Disruptor_51CTO.COM
剖析Disruptor:为什么会这么快?(二)神奇的缓存行填充
------------------------------------------------------------------
----------------------听课笔记----------------------------------
方立勋Java Web听课笔记--Request--Response对象
方立勋Java Web听课笔记--Cookie---Session
方立勋Java Web听课笔记--JDBC对MYSQL的应用preparedStatement和Statement的区别
方立勋Java Web听课笔记JDBC--分页、三种连接池DBCP/C3P0/TOMCAT自带的连接池
方立勋Java Web听课笔记JDBC续-可滚动的结果集-批处理-事务-JDBC执行存储过程
方立勋Java Web听课笔记十四日知识点回顾-自动获取主键-resultSet结果集的滚动
方立勋Java Web听课笔记-DBUtils-QueryRunner-ReslutSetHandler-JDBC多表操作
方立勋Java Web听课笔记-文件上传和下载-ServletFileUpload-解决上传中文乱码问题
方立勋Java Web听课笔记-ServletFilter过滤器-FilterChain过滤器链Filter生命周期
方立勋Java Web听课笔记-映射Filter-Decorator(装饰器模式)-利用Filter对数据压缩(GZIP
-----------------Java EE容器---------------------------------
四大Java EE容器(Tomcat、JBoss、Resin、Glassfish)之简单比较
----------------apache commons包简介----------------------------
--------------------------------------------
-------------------------性能分析----------------------------------
Yourkit Eclipse 3.5 plugin installation
Yourkit 使用说明
-----------------------------------------------------
protostuff 是一个支持各种格式的一个序列化Java类库,包括 JSON、XML、YAML等格式。
http://code.google.com/p/protostuff/
Unity手游之路<二>Java版服务端使用protostuff简化protobuf开发
在Android 开发中使用Protobuf的实践和经验分享
---------------------------------------------------------
dyuproject 包含一个基于Servlet的REST框架、OpenID 2.0 的RP实现、oauth 1.0a consumer and service provider, json-ioc
---------------------------------------------------------
是一个基于二进制高效的对象序列化Library用于跨语言通信。MessagePack主要用于结构化数据的缓存和存储:
1.存在Memcache中,因为它比json小,可以省下一些内存来,速度也比json快一些.2.存在可以持久化的Key-val存储中。
新型序列化类库MessagePack,比JSON更快、更小的格式
--------------------------------------------------------
--------------------------------------------------------
Maven实战(三)Eclipse构建Maven项目 [很好]
Maven3实战笔记09Maven的私服-Nexus常用功能
Maven3实战笔记13Maven Profile定制化构建
Maven3 安装使用(三)--搭建公司局域网maven服务器
---------------------------------------------------------
---------------------------------------------------------
Spring Framework Tutorial – Hello World
---------------------------------------------------------
Spring中ApplicationContext的三种不同实现
Spring ClassPathXmlApplicationContext和FileSystemXmlApplicationContext
--------------------------------------------------------
===========函数式编程======================
也许,照耀大地的永远是在众恒星中普普通通的太阳,人们永远不会知道在宇宙的某个角落里曾经诞生过一颗绝美无比的小星星。
--------------------------------------------------------
=================================
Hadoop中国用户组(HCUG)[北京]2013第1次[总第1次]线下交流活动 [视频]
从wordcount 开始 mapreduce (C++\hadoop streaming模式) [易懂]
更快、更强——解析Hadoop新一代MapReduce框架Yarn
彻底了解mapreduce核心Shuffle--解惑各种mapreduce问题
------------------------------------------------
================================
Distributed Coordination with Zookeeper
分布式服务框架 Zookeeper -- 管理分布式环境中的数据
ZooKeeper系列之二:ZooKeeper数据模型、命名空间以及节点的概念
架构设计:远程调用服务架构设计及zookeeper技术详解(上篇)
架构设计:一种远程调用服务的设计构思(zookeeper的一种应用实践)
大数据处理的基础环境(一)——zookeeper集群环境搭建
--------------Cassandra-------------------------------
分布式 Key-Value 存储系统:Cassandra 入门
==================================
Storm
flume+kafka+storm+mysql 数据流
实时计算storm流程架构总结
Storm-0.9.0.1版本安装部署
Storm集群安装部署步骤【详细版】
Storm与Spark、Hadoop相比是否有优势
Storm与Spark、Hadoop相比是否有优势?
Storm与Spark、Hadoop这三种框架,各有各的优点,每个框架都有自己的最佳应用场景。
所以,在不同的应用场景下,应该选择不同的框架。
Storm是最佳的流式计算框架,Storm由Java和Clojure写成,Storm的优点是全内存计算,所以它的定位是分布式实时计算系统,按照Storm作者的说法,Storm对于实时计算的意义类似于Hadoop对于批处理的意义。
Storm的适用场景:
1)流数据处理
Storm可以用来处理源源不断流进来的消息,处理之后将结果写入到某个存储中去。
2)分布式RPC。由于Storm的处理组件是分布式的,而且处理延迟极低,所以可以作为一个通用的分布式RPC框架来使用。
SparkSpark是一个基于内存计算的开源集群计算系统,目的是更快速的进行数据分析。Spark由加州伯克利大学AMP实验室Matei为主的小团队使用Scala开发开发,类似于Hadoop MapReduce的通用并行计算框架,Spark基于Map Reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点,但不同于MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的Map Reduce的算法。
Spark的适用场景:
1)多次操作特定数据集的应用场合
Spark是基于内存的迭代计算框架,适用于需要多次操作特定数据集的应用场合。需要反复操作的次数越多,所需读取的数据量越大,受益越大,数据量小但是计算密集度较大的场合,受益就相对较小。
2)粗粒度更新状态的应用
由于RDD的特性,Spark不适用那种异步细粒度更新状态的应用,例如Web服务的存储或者是增量的Web爬虫和索引。就是对于那种增量修改的应用模型不适合。
总的来说Spark的适用面比较广泛且比较通用。
Hadoop是实现了MapReduce的思想,将数据切片计算来处理大量的离线数据数据。Hadoop处理的数据必须是已经存放在HDFS上或者类似HBase的数据库中,所以Hadoop实现的时候是通过移动计算到这些存放数据的机器上来提高效率。
Hadoop的适用场景:
1)海量数据的离线分析处理
2)大规模Web信息搜索
3)数据密集型并行计算
=================================
Kafka消息队列
Kafka 起步
Apache Kafka系列之Kafka介绍
Apache Kafka系列之Kafka设计细节
Big Data Architecture Kafka FlumeNG Storm HBase 张鑫 [很好]
大数据处理的基础环境(四)——kafka环境搭建
Kafka学习笔记
Kafka开发环境搭建
Kafka分布式环境搭建
分布式消息系统Kafka初步
kafka第四篇--快速入门(如何使用kafka)
快速理解Kafka分布式消息队列框架
分布式消息队列(Message Queue)系统:kafka
RabbitMQ和kafka从几个角度简单的对比
flume-ng+Kafka+Storm+HDFS 实时系统搭建
==================================
RabbitMQ
RabbitMQ源码解析前奏系列
==================================
ZeroMQ
高性能的通讯库-zeroMQ的几个高性能特征
==================================
Thrift
PHP通过Thrift操作Hbase
thrift的使用介绍
thrift 轻松实现多语言跨服务器通信
开源点评:Protocol Buffers介绍
php实现的thrift socket server
Apache Avro 与 Thrift 比较
==================================
Scala
使用SBT构建Scala应用
==================================
scribe
Scribe安装
==================================
Android
Android 内存剖析 – 发现潜在问题
=================================
Swift语言
Apple Swift编程语言入门教程
=================================
.NET
一个简单的.NET MVC 实例
================================
Ruby on Rails
Ruby on Rails 實戰聖經
Ruby on Rails 指南
================================
其他服务器开发
网站加速--服务器编写篇(上)
网站加速--服务器编写篇 (下)
网站加速--动态应用篇 (上)
网站加速--动态应用篇 (下)
lighttpd1.4.18代码分析(一)--watcher,worker模型
Tokyocabinet/Tokyotyrant文档大合集
Tokyo Cabinet 安装
请注意Tokyo Tyrant (ttserver)在大数据量下的不稳定
kmemcache源码浅析
乱谈服务器编程
HAProxy内存池实现源码分析
Best Practices for Speeding Up Your Web Site
MongoDB源码概述——内存管理和存储引擎
NetBeans的远程Linux C开发实践
Apache 2.2 中文手册
千万级并发实现的秘密:内核不是解决方案,而是问题所在
================================
监控
配置snmp服务,安装mrtg流量监控
使用Cacti监控你的网络(一)- Cacti概述及工作流程
使用Cacti监控你的网络(二)- Cacti的安装
===============================
网络安全
数字签名是什么?
Web安全测试之XSS
常见的hash函数 :-D 非常经典!!
HMAC-MD5算法原理及实现
HMAC
HMAC算法安全性浅析
基于SHA-256的HMAC文件校验器
淘宝全站HTTPS 百万页面改造技术细节大起底
https原理 原文:图解HTTPS 【画图不错】
RSA性能是非常低的,原因在于寻找大素数、大数计算、数据分割需要耗费很多的CPU周期,所以一般的HTTPS连接只在第一次握手时使用非对称加密,通过握手交换对称加密密钥,在之后的通信走对称加密。
我的理解
1.客户端发起请求,服务器给公钥A+;
2.客户端拿到公钥A+,用A加密随机数B-发给服务器;
3.服务器用私钥A-解密随机数B-,得到B-,给客户端回馈;
4.客户端用B-加密信息发给服务器;
5.服务器用B-解密信息。
HTTPS证书生成原理和部署细节
HTTPS原理 【写的很好】
客户端发出安全会话请求(会同时将自己支持的一套加密规则发送给服务器)
服务器从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给客户端。证书里面包含了服务器地址,加密公钥,以及证书的颁发机构等信息。
客户端获得服务器CA证书之后浏览器要做以下工作:
用已知的CA列表来验证证书的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等),如果证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示,让用户选择自担风险。
如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串随机对称密钥,并用证书中提供的公钥加密。
使用约定好的HASH算法计算握手消息,并使用生成的随机对称密钥对消息进行加密,最后将之前生成的所有信息发送给服务器。
服务器接收客户端发来的数据之后要做以下的操作:
使用自己的私钥将信息解密取出密码,使用密码解密浏览器发来的握手消息,并验证HASH是否与浏览器发来的一致。
使用对称密钥加密一段握手消息,发送给客户端。
客户端解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束,之后所有的通信数据将由之前客户端生成的随机对称密钥并利用对称加密算法进行加密。
证书的合法性是通过证书的颁发机构权威性保证的。这引出了一个问题:怎么确保是合法的颁发机构呢?
系统有配置所谓的权威机构,就是CA root,这是安装系统时就配置在电脑上。(所以不要随便安装盗版操作系统,也不要随便安装不受信任的证书)
权威机构有级联性,即,如果证书是被机构B认证的,而机构B的证书被CA root认证,则证书也是受信的。这就是所谓的证书链(certification chain)
证书的常见格式
PKCS标准体系
X509为最常见的实现
证书最常见的后者名:cer, p12, crt, p7b
HTTPS一般使用的加密与HASH算法
对称加密算法:AES,RC4,3DES。速度快,但需要双方交换或者保存密钥,风险大。
非对称加密算法:RSA,DSA/DSS。不需要双方交换或者保存密钥,但是速度奇慢。
HASH算法:MD5,SHA1,SHA256。
一般来说服务器使用RSA非对称加密算法来生成公钥和私钥(CA证书)。
但是RSA性能是非常低的,原因在于寻找大素数、大数计算、数据分割需要耗费很多的CPU周期,所以一般的HTTPS连接只在第一次握手时使用RSA非对称加密,通过握手交换对称加密密钥,在之后的通信走对称加密。
HTTPS其实是两个过程来的
客户端通过CA证书认证服务器是否合法
双方交换对称密钥的过程(由客户端发起,具体是前面提到的5个步骤)
在每一个步骤,都有可能被伪造和欺骗。
第一个过程可以伪造证书来欺骗,所以强烈建议只安装信任机构颁发的证书(浏览器不会提醒风险的那种)。
比如12306要求安装它自己制造的证书,如果安装了,12306就能伪装google,不装12306,他就伪装不了。所以是有风险的。
第二个过程如果服务端私钥泄漏了,那么也交换私钥的过程虽然是用服务器公钥加密,也相当于明文传输了,这时候证书就可能被伪造。随后的通信过程当然也无安全可言。
此时,CA需要更换私钥和公钥,并申明所有下级CA和使用者的证书过期(revocation list)。随后,把所有过期证书重新用新的私钥签名。
在第二个过程中,很容易出错的一个步骤是步骤三:
客户端获得服务器CA证书之后浏览器要做以下工作:
1. 用已知的CA列表来验证证书的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等),如果证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示,让用户选择自担风险。
2. 如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串随机对称密钥,并用证书中提供的公钥加密。
3. 使用约定好的HASH算法计算握手消息,并使用生成的随机对称密钥对消息进行加密,最后将之前生成的所有信息发送给服务器。
使用fiddler模拟http请求
SSL协议详解
HTTPS那些事(二)SSL证书(转载)
SSL证书可以向CA机构通过付费的方式申请,也可以自己制作。
证书以证书链的形式组织,在颁发证书的时候首先要有根CA机构颁发的根证书,再由根CA机构颁发一个中级CA机构的证书,最后由中级CA机构颁发具体的SSL证书。
我们可以这样理解,根CA机构就是一个公司,根证书就是他的身份凭证,每个公司由不同的部门来颁发不同用途的证书,这些不同的部门就是中级CA机构,这些中级CA机构使用中级证书作为自己的身份凭证,
其中有一个部门是专门颁发SSL证书,当把根证书,中级证书,以及最后申请的SSL证书连在一起就形成了证书链,也称为证书路径。
在验证证书的时候,浏览器会调用系统的证书管理器接口对证书路径中的所有证书一级一级的进行验证,只有路径中所有的证书都是受信的,整个验证的结果才是受信。
根证书是最关键的一个证书,如果根证书不受信任,它下面颁发的所有证书都不受信任。操作系统在安装过程中会默认安装一些受信任的CA机构的根证书,可以在“运行”里面运行“certmgr.msc”启动证书管理器
===============================
OAuth
OAuth 2.0系列教程(十一) 客户端证书请求和响应
OAuth 2.0系列教程(十) 资源拥有者密钥证书授权请求和响应
OAuth 2.0系列教程(九) 契约请求和响应
OAuth 2.0系列教程(八) 授权码授权
OAuth 2.0系列教程(七) 请求和响应
OAuth 2.0系列教程(六) 端点
OAuth 2.0系列教程(五) 授权
OAuth 2.0系列教程(四) 客户端类型
OAuth 2.0系列教程(三) 角色
OAuth 2.0系列教程(二) 综述
OAuth 2.0系列教程(一)引言
================================
前端开发
http://www.igvita.com/ [老外个人站点技术和牛]
浏览器的工作原理:现代网络浏览器幕后揭秘 - HTML5 Rocks
Web 前后端分离的意义大吗?
这两年业界说的前后端分离,是限于偏展示类的系统(用A代替),而不是应用、管控类Web项目(用B代替),在B类项目里,前后端是天然分离的,对此,除了少部分后端开发人员,基本所有人的认识都是一致的。
讨论A类项目的前后端分离。
这个问题的核心在什么地方呢,在于模板的与数据结合的位置,以及,模板的控制权在谁手里。
经过这两年的讨论,基本上我们可以达成的共识就是:模板应当由前端人员去控制,
主要原因有两方面:- 性能优化(尤其是外部资源的管理与发布,请求合并等等)- 协作的顺畅性(已形成模板的界面片段的返工等问题)那么,模板到底应该在什么地方跟数据结合?
这个问题就比较折腾了,有部分人尝试像B类项目那样,使用js模板,然后在浏览器端执行,这是存在一些问题的,比如说seo不友好,首屏性能不够,尤其对于首页DOM量很大的电商类网站,差距很明显。
所以我们还是得把主要的模板放在服务端来执行。
在这个过程中,阿里作了一些尝试,那就是引入Node层,在这一层把模板与数据进行合成,然后浏览器拿到的就是生成好的HTML了,但也不是所有HTML都是这么生成好的,还是会有一些内容等到了浏览器之后,再用js去加载和生成。
所以这一定会是一个混合方案,同一个系统中存在两种模板,一种在服务端执行,一种在浏览器中执行,互为补充。
至于说这个方案中,是否中间层一定要是node,我觉得无所谓,只要是能正常做web项目的东西都可以,这个还是要看所在企业的技术积累方向,
当然node做这块是有一些优势的,比如对前端人员的语言友好性,前后端模板的通用性等等,但这些都是细节,重点还是整体方案和流程。
从MVC到前后端分离
我们输入的是AJAX请求,输出的是JSON数据,市面上有这样的技术来实现这个功能吗?答案是REST。
浅谈Web缓存
页面的缓存状态是由header决定的,header的参数有四种:
一、Cache-Control:
1、max-age(单位为s)指定设置缓存最大的有效时间,定义的是时间长短。当浏览器向服务器发送请求后,在max-age这段时间里浏览器就不会再向服务器发送请求了。
2、s-maxage(单位为s)同max-age,只用于共享缓存(比如CDN缓存)。
比如,当s-maxage=60时,在这60秒中,即使更新了CDN的内容,浏览器也不会进行请求。也就是说max-age用于普通缓存,而s-maxage用于代理缓存。如果存在s-maxage,则会覆盖掉max-age和Expires header。
3、public 指定响应会被缓存,并且在多用户间共享。也就是下图的意思。如果没有指定public还是private,则默认为public。
4、private 响应只作为私有的缓存(见下图),不能在用户间共享。如果要求HTTP认证,响应会自动设置为private。
5、no-cache 指定不缓存响应,表明资源不进行缓存
但是设置了no-cache之后并不代表浏览器不缓存,而是在缓存前要向服务器确认资源是否被更改。因此有的时候只设置no-cache防止缓存还是不够保险,还可以加上private指令,将过期时间设为过去的时间。
6、no-store 绝对禁止缓存,一看就知道如果用了这个命令当然就是不会进行缓存啦~每次请求资源都要从服务器重新获取。
7、must-revalidate指定如果页面是过期的,则去服务器进行获取。这个指令并不常用,就不做过多的讨论了。
二、Expires
缓存过期时间,用来指定资源到期的时间,是服务器端的具体的时间点。也就是说,Expires=max-age + 请求时间,需要和Last-modified结合使用。
但在上面我们提到过,cache-control的优先级更高。 Expires是Web服务器响应消息头字段,在响应http请求时告诉浏览器在过期时间前浏览器可以直接从浏览器缓存取数据,而无需再次请求。
三、Last-modified
服务器端文件的最后修改时间,需要和cache-control共同使用,是检查服务器端资源是否更新的一种方式。
当浏览器再次进行请求时,会向服务器传送If-Modified-Since报头,询问Last-Modified时间点之后资源是否被修改过。
如果没有修改,则返回码为304,使用缓存;如果修改过,则再次去服务器请求资源,返回码和首次请求相同为200,资源为服务器最新资源。
四、ETag
根据实体内容生成一段hash字符串,标识资源的状态,由服务端产生。浏览器会将这串字符串传回服务器,验证资源是否已经修改
================================
协程
Golang适合高并发场景的原因分析
风格之争:Coroutine模型 vs 非阻塞/异步IO(callback) 协程
说说一个新的老概念coroutine
Coroutine实现有感
Coroutines in C
在C语言中实现coroutine
Lua coroutine 不一样的多线程编程思路
Coroutine介绍
进程线程以及协程
-----------------------------------------
SEDA架构
SEDA: An Architecture for Highly Concurrent Server Applications
SEDA架构笔记 SEDA架构
SEDA性能优化的分析和模拟
SEDA介绍与分析
适于互联网的SEDA高并发架构
---------------------------------------
Rest 面向资源的架构
rest
REST wiki
REST是什么
---------------------------------------
SOA
Dubbo是阿里巴巴SOA服务化治理方案的核心框架
-------------------------------------
架构
知名互联网公司网站架构图
Bitmap的秘密
===============================
视频
HTTP Live Streaming (HLS) 不错的视频直播技术
M3U8文件简介
M3U8文件是指UTF-8编码格式的M3U文件。M3U文件是记录了一个索引纯文本文件,打开它时播放软件并不是播放它,而是根据它的索引找到对应的音视频文件的网络地址进行在线播放。
===============================
代码阅读工具
使用doxygen为C/C++程序生成中文文档(上)
doxygen使用详解
代码阅读分析工具Understand 2.0试用
Notepad++文本比较插件:Compare
=================================
编译原理
怎样写一个解释器 [王垠]
王垠的「40 行代码」
理解Continuation和CPS(Continuation Passing Style)
JavaScript中的后续传递风格
我和Google的故事
一些中文编程语言
太极语言
=================================
计算机网络
DNS 查询的工作原理
阿里为什要推出alidns? 有哪些好用的dns? 很好的讲了架构
=================================
编码解码
Base64编码及其作用
Base64 介绍及作用
=================================
HTTP协议
HTTP协议 (一) HTTP协议详解
HTTP协议 (二) 基本认证
HTTP协议 (三) 压缩
HTTP协议 (四) 缓存
HTTP协议 (五) 代理
HTTP协议 (六) 状态码详解
HTTP协议 (七) Cookie
[Fiddler教程]
12306在线买火车票为什么需要安装根证书
=================================
代码分析
linux环境下 C++性能测试工具 gprof + kprof + gprof2dot
http://code.google.com/p/gperftools/
关于gperftools
Google performance Tools (gperftools) 使用心得
使用 cloc 统计代码行数 [cloc统计代码非常好]
sublime_text2 可以画图
Graphviz+doxygen 对象调用图
=================================
Oracle
Oracle索引——索引类型
=================================
Sqlserver
查看sqlserver的端口号
======================
微信开发
微信公众平台开发入门教程
=================================
goagent软件使用:
http://tieba.baidu.com/p/2276442741
==================================
PowerDesigner
PowerDesigner逆向获取数据库字典文件
PowerDesigner连接MySQL,建立逆向工程图解
powerdesigner连接mysql,并导出其数据模型的方法
PowerDesigner 概念数据模型(CDM) 说明
===============================
Notepad++
Notepad++插件使用技巧
代码格式化插件:UniversalIndentGUI
===============================
SVN
svn的merge使用例子 [很好]
Reviewboard+StrictReviewScript使用方法图解
使用Jenkins搭建持续集成(CI)环境
SVN - 主干/分支 [很好]
================================
Git
Git 版本控制
http://pcottle.github.io/learnGitBranching/?demo
================================
综合
量子恒道 [重在数据分析 storm/hbase等]
欢迎访问HUFAN的blog -- 工作笔记
余旭
================================
好书
《Self-Service Linux》
http://book.douban.com/subject/2666819/
机械工业出版社:计算机科学丛书
电子工业出版社:国外计算机科学教材系列
清华大学出版社:世界著名计算机教材精选
国外经典教材·计算机科学与技术
国外计算机科学经典教材
高等教育出版社:国外优秀信息科学与技术系列教学用书
中国电力出版社:国外经典计算机科学教材
计算机科学精彩帖子收集相关推荐
- 计算机科学精彩帖子收集--JAVA和分布式专栏
之前收集了一个计算机科学精彩帖子收集,渐渐发现帖子越来越大,所以现在干脆把Java和分布式的部分单独一贴. Java jdk下载 http://openjdk.java.net/projects/jd ...
- 【matplotlib】条形图及垂线显示小技巧 |一些有用参考帖子收集
最近在画图.一方面看论文看思路,一方面用数据跑图出论文雏形. 有些帖子写得很好,不记录的话下次还想看就只能随缘了. 帖子 博客:nxf_rabbit75 matplotlib技巧-9.共享坐标轴.创建 ...
- 你是如何坚持读完《算法导论》这本书的?(帖子收集)
你是如何坚持读完<算法导论>这本书的? <算法导论>不够猛,答者顺便补充 "你是如何坚持读完<计算机编程的艺术>这本书的?" 罗必成: CLRS ...
- android技术帖,android好帖子
学习英文之社区,博客及源码 开发者必备的6款源码搜索引擎 内容仅为测试 Android和iOS那个好? 应该先往哪个上面投入资源? 多次被人问到此类问题,笔者刚好自己的项目也需要考虑iOS版本. An ...
- Gameres论坛里某大师的语录 (2007-7-11更新)
最近gameres越来越堕落了.变成了一个灌水乐园. 以下是某大师级人物--VB区的游戏之家---的语录,可惜别删了不少,不然更精彩啊.收集的晚了点啊.太遗憾了. ========好久没更新了. 今天 ...
- Amino——产品迭代
2019独角兽企业重金招聘Python工程师标准>>> 兴趣部落产品迭代 时间 版本号 更新内容 备注 2019年1月2日 v3.1.1 支持定制部落首页的内容tab,酋长可以将精华 ...
- Gameres论坛里某大师的语录 (2007-7-11更新) 1
<iframe align="top" marginwidth="0" marginheight="0" src="http ...
- 你什么时候使用git rebase而不是git merge?
什么时候建议使用git rebase与git merge ? 成功改造后我还需要合并吗? #1楼 在合并/ rebase之前: A <- B <- C [master] ^\D <- ...
- linux每天进步一点点-7月22日
每天3-5个题目,大家可以给与答案和解释,有争议可以到Qq群或者发帖子商量,题目深度不一.(转载注明出处,谢谢) 质疑一个谋求获得进步的人,本身就值得质疑! 现在注有一帖子收集大家对题目的意见,不需要 ...
最新文章
- Cxf + Spring3.0 入门开发WebService
- Go从入门到精通(一)go语言初识
- Kubernetes中使用CronJob定时备份etcd集群数据
- 展望10年内VR技术的盈利模式的发展历程
- 【交易技术前沿】浅析基金业推进数据治理的阻碍及应对建议
- docker常用操作(六)docker安装内网穿透nps
- 0元永久授权,etl作业批量调度必备软件 Taskctl Free应用版
- 生活随记-冬天的馈赠
- 报错解决:Reason: Failed to determine a suitable driver class
- 如何查看自己的分区是固态还是机械
- 手机泰拉瑞亚在线联机服务器ip,泰拉瑞亚1.4版本如何用IP联机
- 文字识别(六)--不定长文字识别CRNN算法详解
- HTML在线编辑器(HTML+js)
- 微赞html写入,微赞WZ-后台一键更新-授权
- 公开密钥基础设施PKI
- Hadoop重点难点:Shuffle过程中的环形缓冲区
- 网龙网络控股有限公司公布二零一八年中期业绩
- HRSC2016 数据集 L2 L3 task
- 符合自己业务场景的自定义表单自定义报表及自定义图表
- 【七夕节】html+css+JavaScript+服务器 给女朋友的七夕过节网站
热门文章
- python install scikit-image后,报错ImportError: DLL load failed: 找不到指定的模块
- QT:(3)在VS2015下配置qt
- 基于人脸识别、姿态检测、距离估计的看电视姿态检测
- 温控自动烘焙系统的研究与实现
- CS131专题-6:图像特征(Blob检测、LoG算子、Harris-Laplacian)
- P2396 yyy loves Maths VII 状压dp 变态卡常
- Miller方法产生、检验素数
- MATLAB判断三角形成立的编程,Triangulation 划分三角形网络时用到的大量算法和测试例程 matlab 259万源代码下载- www.pudn.com...
- 【从零开始的ROS四轴机械臂控制】(六)- 逻辑控制节点
- kitbash贫民区三维场景模型 Kitbash3d – Favelas