自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

youbingchen的博客

这个博客可能更新比较慢 ,主战场迁移到:http://youbingchenyoubing.leanote.com/

原创 Java基础知识

出来混,要学习java,本人原先具有C++的功力,所以学习java并不觉得难,但是还有一些特性难以时刻记住,所以在此做一些笔记,方便以后快速查询。注解(元数据) 第一次接触注解的概念,先了解一下注解的使用地方生成文档,这个是最常见的功能,常用的注解有@param @return @see 跟踪...

2017-08-10 23:42:42 304 1

原创 Linux 虚拟内存机制

华为面试官问了我一个问题就是关于Linux虚拟内存机制,虽然我多少是回答上来,感觉好久没看操作系统的我是时候将其拿起来重温一遍 。 每个进程都有自己独立的4G内存空间,各个进程的内存空间具有类似的结构。 Linux内存管理采用的是页式管理,使用的是多级页表,动态地址转换机构与主存、辅存共同实现...

2016-08-09 21:31:01 10866 0

原创 触发器

触发器的作用是在执行insert、delete和update命令之前或之后自动调用sql命令或存储过程,最多一个表可以建立6个触发器,因为触发器的类型主要分为: 1.Before 2.After before 和 after代表触发器发生的时间是在每行操作的之前还是之后。其中after触...

2016-08-05 13:50:36 1372 0

原创 Go安装

Go的三种安装方式 Go源码安装:这是一种标准的软件安装方式 Go标准包安装:Go提供了方便的安装包,支持Windows、Linux、Mac等系统。这种方式适合快速安装,可根据自己的系统位数下载好相应的安装包,一路next就可以轻松安装了。 第三方工具安装:目前有很多方便的第三方软件包工具,例如U...

2016-08-02 16:46:31 12146 0

原创 Go语言的特性

关于特性丢失 为了简化设计,不支持函数重载和操作符重载 为了避免c/C++开发中的一些bug和混乱,不支持隐式转换 Go语言通过另一种途径实现面向对象设计放弃了类和类型的继承 尽管在接口的使用方面可以实现类似变体类型的功能,但本身不支持变体类型 不支持动态加载代码 不支持动态链接库 不支持泛型 ...

2016-08-02 16:45:07 714 0

原创 golang编译器的准备

????????????????????????????????????,???????????????http??,??????http??,????????????,????????????,?????,????????????????,????????????????????????????...

2016-08-01 13:41:40 642 0

原创 第一讲 go 语言简介

没有停止学习脚步的程序员,这篇博客这要介绍为什么要学习go语言,go语言是一种新的语言,一种并发的,带垃圾回收的、快速编译的语言 不仅就有上述特点,更重要的是,在我面试几家公司之后,面试官反复提到如果会go语言的话会更好。(这样学习的动力马上就有)Go有什么优势 可直接编译成机器码,不依赖其他库...

2016-07-28 15:25:39 334 0

原创 Linux 下几款程序内存泄漏检查工具

写这篇博客的原因呢是因为自己在编写基于Nginx磁盘缓存管理程序,目前已经进入测试阶段,关于这个程序的测试分为几个主要步骤:1.内存管理是否正确(因为这个程序本身开辟很多内存空间进行缓存管理,同时这个程序程序本身就是基于C/C++开发的,内存管理机制一直是程序员头痛的东西) 2.程序的健硕性如何(...

2016-07-23 10:15:06 22193 1

原创 静态库和动态库

有一篇博客专门介绍程序编译过程,在程序编译步骤中有一个很重要的步骤就是链接,这篇博客主要比较静态库和动态库的差别。 在了解两者的区别,我们先学习一下基础知识 库是什么库就是写好的,现有的,成熟的可以 复用的代码,现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都是从零开始,本质...

2016-07-21 14:33:30 401 0

原创 C 程序编译过程

通常我们使用gcc来生成可执行程序,命令为: gcc hello.c,默认生成可执行文件a.out,其中经过下面几个步骤:预处理(processing) 编译(compilation) 汇编 (Assembly) 链接(Linking) 接下来将介绍每个步骤相应都做了那些工作 预处理(pre...

2016-07-21 14:27:26 535 0

原创 C++ 中的sprintf和snprintf 函数的区别

在编程过程中经常有字符串转数字和数字转字符串,相应的函数大家最经常见到可能是atoi和itoa。但是itoa不是标准库里面的函数,所以接下来介绍下面两个函数sprintf和snprintf函数,并将它们比较一番。最近写的博客目前就是一些自己在实现基于 Nginx磁盘缓存的一些知识总结 sprint...

2016-07-21 10:59:31 5990 0

原创 Nginx 模块自主开发十: 设计一个基于NGINX 的缓存服务

计算机不仅需要对计算机理论有一定的要求,同时要学以致用,这篇博客将结合公司给我的一个问题,我自主设计一个初步的方案 ,如何 有什么bug或是想法,可以提出来,我一直秉承一个思想:good idea worth spreading.只有将自己的学习计划放在互联网上,才会进步得更快。 问题 将磁盘...

2016-07-06 09:10:30 582 3

原创 Nginx 模块自主开发八: 总结 Nginx框架的流程

前面两篇博客:Nginx 模块自主开发六:源码剖析配置文件解析过程和 Nginx 模块自主开发七:源码剖析整个Nginx框架从源码层面上解析Nginx框架,这样导致太过于 细节,所以本篇博客将带领你系统上过一遍Nginx框架 Nginx主框架的流程当启动Nginx程序时候,Nginx从入口函数Ma...

2016-07-01 15:16:06 902 0

原创 C++ 类型转换运算符

C语言存在两种类型转换(隐式转换,显式转换) 隐式转换,是针对不同类型之间的赋值和运算,函数调用传递参数 这些的转换都是由编译器自动完成char ch; int i=ch; 显式转换 由程序员在变量前面添加型转换 char *pc=(char *)pb void *ps=(voi...

2016-07-01 09:20:42 863 0

原创 Nginx 模块自主开发七:源码剖析整个Nginx框架

在博客提到的Nginx 模块自主开发四: 模块数据结构一个很重要的数据结构ngx_module_s,所有的模块都是用这个结构体来表示。ngx_module_t结构体 模块又分为ngx_core_module_t和ngx_xxx_module_t,而在ngx_module_t中会包含这两个结构,...

2016-06-30 11:40:51 11970 11

原创 Nginx 模块自主开发六:源码剖析配置文件解析过程

Nginx源码实现有一个很好的优点就是模块化,有点像面向对象语言的设计模式,实现“高内聚,松耦合”,这篇博客主要讲解模块的共有流程 集中在ngx_cycle.c、 ngx_process.c、 ngx_process_cycle.c 和 ngx_event.c代码中。 共有流程开始...

2016-06-29 13:43:23 7526 0

原创 从流程解析Nginx对 Native aio支持

强烈建议这篇博客和从源码解析Nginx对 Native aio支持一起阅读异步I/O 异步IO就是把IO提交给系统,让系统替你做,做完了再用某种方式通知你(通过信号,或者其他异步方式通知,这时候,操作系统已经帮你完成IO操作,具体来说就是你那个作为传入参数的的buffer的指针所指向的空间已经...

2016-06-27 16:12:18 2381 0

原创 从源码解析Nginx对 Native aio支持

使用异步I/O大大提高应用程序的性能 linux下有两种aio,一种是glibc实现的aio,这个比较烂,它是直接在用户空间用pthread进行模拟的。还有一种就是内核实现的aio,这些系统调用是以io_xxx开始的。下面将针对 同步和异步模型,以及阻塞和非阻塞的模型进行介绍。而native ...

2016-06-27 11:43:59 6575 0

原创 C++中的重载,重写, 重定义 差别

一、重载(overload)指函数名相同,但是它的参数表列个数或顺序,类型不同。但是不能靠返回类型来判断。 (1)相同的范围(在同一个作用域中) ; (2)函数名字相同; (3)参数不同; (4)virtual 关键字可有可无。 (5)返回值可以不同;二、重写(也称为覆盖 overrid...

2016-06-26 21:15:38 1997 0

原创 hadoop之Hbase简介

HBASE的发展从bigtable讲起bigtable 是一个分布式存储系统 利用mapreduce分布式并行计算模型处理海量数据 使用分布式文系统GFS作为底层数据存储 采用Chubby提供协同服务管理 扩展到PB级别的数据和上千台机器,具有广泛应用性, 可扩展性,高性能和高应用的特点 很多项目...

2016-06-26 10:18:11 782 0

原创 MapReduce 之一:MapReduce体系结构

MapReduce是一种分布式并行编程。分布式程序运行在大规模计算机集群上,可以并行执行大规模数据任务,从而获得海量的计算能力。MapReduce相对传统的并行计算框架 传统并行计算框架 MapReduce 集群架构容错性 共享式(共享内存/g共享存储).容错性差 硬件/价格/扩...

2016-06-25 14:11:03 2763 0

原创 Nginx 缓存机制 详解之二 缓存加载进程

上一篇博客已经详细讲解了缓存管理进程,接下来详细讲解缓存加载进程机制缓存加载进程机制ngx_cache_loader_process_handler函数 加载进程 和管理进程都是从函数ngx_cache_manager_process_cycle进入,只是接下来的流程函数不一样 ngx_pro...

2016-06-24 19:05:48 1587 0

原创 Nginx 缓存机制 详解之一 缓存管理进程

Nginx缓存的基本思路就是利用请求的局部性原理,下次访问不再连接后端服务器。 Nginx是通过设置xxx_cache_path(比如proxy_cache_path),主要用来创建管理cache的共享 内存数据结构(红黑树和对列),另一个是xxx_cache主要 用来前面的参数创建内存空间...

2016-06-24 18:12:22 10669 0

原创 Nginx 模块自主开发四: 模块数据结构

其中,ngx_module_s,这 个是 每个新的模块的定义 struct ngx_module_s { /*ctx_index表示当前模块在这类模块中的序号。这个 成员常常是由管理模块的 一个Nginx核心模块设置的,对于所有的http模块而言,ctx_index是由核心模块ngx_htt...

2016-06-24 11:07:44 1017 0

原创 Nginx 模块自主开发二:Nginx的类型命名封装

我们在看Nginx源代码的时候,看不到我们以前在写C语言的类型名称(比如int,char等),其实是Nginx为了跨平台习惯将一些 C语言的东西进行了封装,所以在编写自己的模块的 时候,建议尽量沿用Nginx的习惯。 整型封装typedef intptr_t ngx_int_t; t...

2016-06-23 14:29:49 597 0

原创 Nginx 模块自主开发一:开发前的了解

个人觉得要真正理解源码,如果 只停留在理论是远远不够,所以从现在起,要开始学习自己开发Nginx模块,再反过来理解Nginx本身代码。 Nginx 发送文件或转发 请求到其他服务器,有处理模块处理,但需要压缩或在服务端添加一些东西时,可以采用过滤模块,还是有一些核心模块主要负责管理网络层...

2016-06-23 11:02:23 431 1

原创 Hbase实战二:编程实战

在安装后HbaseHbase实战一:安装配置,大家快乐的编程实践把1.利用Shell编程在HBase用create命令创建表 create 'student','Sname','Ssex','Sage','S...

2016-06-22 21:45:51 511 0

原创 四:深入Nginx之事件和连接 (之三:连接池)

在Nginx中的connection就是对TCP连接的封装,包括连接的socket、读事件、写事件。利用Nginx封装的connection,我们 可以很方便的使用nginx处理与连接相关的事情 ,所以Nginx不仅可以作为 一个 web服务器,也可以邮件服务器,同时也可以利用nginx提供的co...

2016-06-22 16:56:21 4202 1

原创 epoll之二:epoll实战

epoll_create系统调用int epoll_create(int size);epoll_create返回 一个句柄,之后epoll的 使用都将依靠这个 句柄 来 标识,参数 size是告诉epoll所要处理的大致事件数目,不再使用epoll时,必须调用close 关闭这个句柄。size这...

2016-06-22 14:56:29 657 0

原创 epoll之一:epoll的原理

之前 我写过一篇博客IO复用之select poll epoll 函数,大概介绍了一下epoll和select,poll的一些区别,接下来要 从原理剖析epoll的强大的原因 select和poll的工作机制在某一时刻,进程收集有事件连接时,大部分的连接是没有发生事件,但是 select和poll...

2016-06-22 13:36:33 432 0

原创 四:深入Nginx之事件和连接 (之二)

ngx_events_module 核心事件 定义新的事类型,并定义每个事件模块都需要实现的ngx_event_module_t接口,还需要管理这些事件模块生成的 配置 项结构体,并 解析事件类配置项,解析配置项时会调用其在ngx_command_t数组 中 定义的回调方法。 假设定义一...

2016-06-22 10:40:18 974 0

原创 Hbase实战一:安装配置

HBase 的安装和配置前面的博客大数据处理架构Hadoop配置已经详细介绍如何安装Hadoop,但是安装完Hadoop,只包含HDFS和MapReduce等核心组件,并不包含HBase,因此,HBase需要独立安装。HBase下载地址 友情提示:前面的博客大数据处理架构Hadoop配置 Ha...

2016-06-21 16:44:11 800 0

原创 四:深入Nginx之事件和连接 (之一)

Nginx 本质上是基于事件驱动的Web服务器,事件 处理框架所要解决的问题就是如何收集、管理、分发事件。 事件主要 以 网络事件(TCP网络事件为主 ) 定时器事件 Nginx 定义一个 核心模块ngx_event_module,参考博客一深入理解Nginx的 模块化 ,全局观,Nginx在...

2016-06-20 15:21:12 6885 0

原创 三:深入理解Nginx的模块化 (结合源码详解)

盗用前面用到的流程图 第二步实际上是调用 ngx_add_inherited_sockets() //文件名: Nginx.cint ngx_cdecl main(int argc, char *const *argv) { ... if (ngx_add_inherited_sock...

2016-06-20 10:56:16 1665 0

原创 大数据处理架构Hadoop配置

title: 大数据处理架构Hadoop date: 2016-06-02 tags: HardoopHadoop简介 Hadoop是Apache软件基金会旗下的一个开源分布式计算平台,为用户提供了系统底层细节透明的分布式基础架构 Hadoop是基于Java语言开发的,具有很好的跨平台特性,并...

2016-06-18 23:28:30 3462 0

原创 分布式文件系统HDFS 之一

分布式文件系统在物理结构上是由计算机集群中的多个节点构成的。HDFS实现的目标 兼容廉价的硬件设备 流数据读写 大数据集 简单的文件模型 强大的跨平台兼容性 HDFS自身的局限性 不适合低延时数据访问 无法高效存储大量的小文件 不支持多用户写入及任意修改文件(只允许追加,不允许修改) HDFS默...

2016-06-16 22:52:36 3124 0

原创 Linux 防火墙之iptables

防火墙最主要的任务就是规划出: + 切割被信任(子域)与不被 信任(Internet)的 网段 + 切分出可提供Internet的服务与必须受到保护的服务 + 分析出可接受与不可接受的封包状态。Linux 系统上 防火墙的主要类别 Netfilter(封包过滤机制) 就是分析进入主机...

2016-06-16 15:34:08 489 0

原创 一深入理解Nginx的 模块化 ,全局观

Nginx源码目录结构. ├── auto 自动检测系统环境以及编译相关的脚本 │ ├── cc 关于编译器相关的编译选项的检测脚本 │ ├── lib nginx编译所需要的一些库的检测脚本 │ ├── os ...

2016-06-15 14:44:28 4702 0

原创 Nginx配置正向代理

前面 已经有一篇博客 Nginx 代理缓存阐述了Nginx的正反向代理的差别(同时那篇主要也是讲解如何配置nginx反向代理),那么这篇博客就简单介绍一下Nginx配置正向代理(http proxy和https proxy) 废话不多说,进入正题nginx前向代理在 配置文件nginx.conf...

2016-06-15 12:38:08 8464 1

原创 Nginx TCP/UDP 代理

这个模块可以实现基于TCP、UDP和Unix域的socket的协议的代理服务。这个 模块是在nginx-1.9 以后版本才添加的模块,如果要使用这个模块的话,要重新编译这个源代码,参考之前的的博客nginx安装,添加编译选项--with-stream。就可以使用 这个模块配置基于TCP连接和UDP...

2016-06-14 14:26:33 11080 4

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