
后台开发
文章平均质量分 61
huangjun1989
这个作者很懒,什么都没留下…
展开
-
IP路由
IP routing1) 经过物理层发送的数据报,怎样到达目的主机(网内和网外)?根据mac地址,这个涉及到数据链路层和物理层;【交换机是在数据链路层进行数据的转发】2) 知道了mac地址,那又如何传输到目标主机?数据链路层如何找到主机,使用ARP协议,在ARP缓存中匹配。3) 不在网内的主机,应用如何知道将数据先转发到router呢?IP层只知道ip地址,而mac地原创 2016-10-08 21:49:56 · 504 阅读 · 0 评论 -
Linux IO调度算法
查看磁盘IO调度算法$cat /sys/block/sdX/queue/schedulerI/O 调度器决定 I/O 操作何时运行在存储设备上以及运行多久。它也被称为 I/O elevator(I/O 升降机、I/O电梯)。红帽企业版 Linux 7 提供三种 I/O 调度器。deadline为除了SATA盘外所有块设备的默认 I/O 调度器。Deadline 尝试为指向原创 2016-09-28 21:22:22 · 513 阅读 · 0 评论 -
常见系统调用总结
fcntl操作文件描述符#include #include Int fcntl(int fd, int cmd, …);主要的三种用途:A、 复制文件描述符 F_DUPFD(long),返回新的文件描述符B、 文件描述符标记位目前唯一被操作的标记是FD_CLOEXECF_GETFD(void)F_SETFD(long)C、 文件状态标记通过ope原创 2016-09-28 20:52:52 · 846 阅读 · 0 评论 -
LVS介绍
初识LVS什么是LVS?Linux Virtual Server,linux虚拟服务器LVS的目标?该项目的任务是:使用集群技术为linux建立一个高性能和高可用性的服务器,可以提供很好的扩展性、可靠性和服务可行性。LVS的主要内容?项目主要是开发先进的IP负载均衡软件(IPVS)、应用层负载均衡软件(KTCPVS)和集群管理组件。(对于大规模的TCP链接请求进行均衡,说到原创 2016-09-28 21:57:11 · 300 阅读 · 0 评论 -
DKMS介绍
概述DKMS是基于动态内核模块支持的可以让开发者无需使用最新的内核版本而对某个单一的内核模块做升级(比如说是修复bug)DKMS设计目标1 实现的是机制(如何更新单一的内核模块并且跟踪)而不是策略(何时应该更新一个单一的内核模块),目的在于将两者隔开2 允许系统管理员清楚地知道哪个模块、哪个版本为哪个内核以什么样的状态使用3 让模块的源码保持是在顶层的内核树在kernel.原创 2016-09-28 22:03:24 · 7491 阅读 · 0 评论 -
分布式理论
CAP理论Consistency AvaiablityPartition tolerance(分区容错性)系统无法放弃一致性,如果放弃了,说明数据不可信牺牲一致性,是说不使用强一致性,而是弱一致性分布式系统的数据复制需求:A、 可用性将数据复制到多个主机上,消除单点故障B、 性能将数据分片,分布到多台主机上,可以提高并发度,从而提高系统性能强一致原创 2016-09-28 22:18:26 · 336 阅读 · 0 评论 -
设计模式
创建型设计模式单例模式它允许一个类有且仅有一个实例 单例模式的优点:在内存中只有一个对象,节省内存空间。避免频繁的创建销毁对象,可以提高性能。避免对共享资源的多重占用。可以全局访问。适用场景:由于单例模式的以上优点,所以是编程中用的比较多的一种设计模式。我总结了一下我所知道的适合使用单例模式的场景:需要频繁实例化然后销毁的对象。创建对象时耗时过多或者原创 2016-09-28 22:20:53 · 333 阅读 · 0 评论 -
分布式文件系统基础
分布式文件系统基础技术A、 fstrim/discard调用 TRIM整理 NAND 上的碎片有两种方法,一是挂载 ext4分区时加上 discard选项,二是使用 fstrim命令。Android 4.3中的 TRIM 是用 fstrim 实现的,但一般 Linux发行版并不建议使用 fstrim的方法,而是使用 mount ext4分区时加上 d原创 2016-09-27 22:11:02 · 2645 阅读 · 0 评论 -
LXR( Linux超文本交叉代码检索工具)
Linux超文本交叉代码检索工具LXR(Linux Cross Reference),是由挪威奥斯陆大学数学系Arne Georg Gleditsch和Per Kristian Gjermshus编写的。这个工具实际上运行在Linux或者UNIX平台下,通过对源代码中的所有符号建立索引,从而可以方便的检索任何一个符号,包括函数、外部变量、文件名、宏定义等等。不仅仅是针对Linux源代码,对于C语言原创 2016-09-29 20:18:30 · 5152 阅读 · 0 评论 -
c语言结构体对齐
访问N字节的指令,需要访问的内存地址为N的整数倍比如:Int a = 4;该指令占4字节,就需要内存地址为4的整数倍;若不为整数倍,则需要填充(padding)在gcc中提供语法,可以消除结构体中的填充字节,比如struct { char a; int c; char d;} __attribute__((packed原创 2016-09-29 21:03:17 · 310 阅读 · 0 评论 -
c语言EXPORT_SYMBOL
EXPORT_SYMBOL模块可以使用如下宏导出符号到内核符号表:EXPORT_SYMBOL(符号名); EXPORT_SYMBOL_GPL(符号名) EXPORT_SYMBOL_GPL()只适用于包含GPL许可权的模块。导出的符号可以被其他模块使用,不过使用之前一定要extern声明一下。原创 2016-09-29 21:04:58 · 2997 阅读 · 1 评论 -
Boost库使用总结
auto_ptr、shared_ptr、weak_ptr、scoped_ptr用法小结智能指针,与引用计数相关auto_ptr: 主要为异常安全设计的,在程序正常退出或者异常终止,会调用类的析构函数,释放资源。复制\赋值是损坏性的操作,所以不能绑定到数组或者变量指针,也不能将auto_ptr对象存储在容器中。 auto_ptr a(new int(10));auto_ptr b;原创 2016-09-29 21:07:05 · 5291 阅读 · 1 评论 -
boost库学习总结
第8章进程间通讯 Boost.Interprocess 库,它包括众多的类,这些类提供了操作系统相关的进程间通讯接口的抽象层。第9章文件系统库 Boost.Filesystem 简化了处理文件和目录的工作。 它提供了一个名为 boost::filesystem::path 的类,可以对路径进行处理。 另外,还有多个函数用于创建目录或验证某个给定文件的有效性。常见的文件、目录原创 2016-09-29 21:13:52 · 417 阅读 · 0 评论 -
c++单元测试gtest
Ceph工程使用gtest做单元测试https://code.google.com/p/googletest/https://code.google.com/p/googletest/wiki/Primer TEST_P 测试参数专用函数 TEST_FTEST_F宏会直接生成一个类,这个类继承自上面我们写的测试类比如,定义了TestFunc类class Test原创 2016-10-07 20:49:35 · 671 阅读 · 0 评论 -
ceph测试架构
1、概述a、安装ceph-test包b、执行程序比如:测试rados 缓存池功能:ceph_test_rados_api_tier测试消息层功能:ceph_test_msgr程序分析:a、所有测试代码都在src/test目录下b、Makefile:由Makefile-client.am 和 Makefile-server.am控制原创 2016-10-07 20:52:10 · 1482 阅读 · 2 评论 -
ceph集成测试调研
Teuthology集成测试框架,ceph社区专业的自动测试架构。线上实例:http://pulpito.ceph.com/架构:安装、部署1、安装a、teuthology要求python2.7b、ceph-qa-suitec、安装adjust-limits和daemon原创 2016-10-07 21:04:10 · 2273 阅读 · 5 评论 -
git使用总结
GIT使用总结GIT官网地址:http://git-scm.com/PDF版本教程:https://progit2.s3.amazonaws.com/en/2015-01-02-24f7e/progit-en.261.pdf 从next分支创建远程分支osd-queue osd-queue/next本机:git remote add -t next osd-queuegit原创 2015-03-24 08:33:28 · 1798 阅读 · 5 评论 -
ssh服务相关问题
1、在脚本中使用ssh命令,报如下错误:ssh: Could notresolve hostname T02-OSD101: Name or service not knownlost connection但是,在shell下使用ssh 到同一主机名,却没有报错;原因是什么?使用telnet连接该机器,被拒绝了:huangjun:/bsdocfs/shell-script#te原创 2016-09-28 20:54:39 · 502 阅读 · 0 评论 -
正则表达式reg
通配符 wildchar*^$\d匹配一个数字字符。等价于[0-9]。\w匹配包括下划线的任何单词字符。等价于「[A-Za-z0-9_]」+匹配前面的子表达式一次或多次。例如,「zo+」能匹配「zo」以及「zoo」,但不能匹配「z」。+等价于{1,}。 要表示一个模式原创 2016-09-28 20:49:21 · 1255 阅读 · 0 评论 -
内存泄漏检测
内存泄漏分析当以前分配的一片内存不再需要使用或无法访问时,但是却并没有释放它,那么对于该进程来说,会因此导致总可用内存的减少,这时就出现了内存泄漏memory leak。在编程实践中,往往用到较多的是动态的内存分配,这样在程序运行的时候分配内存,而不是在创建进程的时候就分配内存,这大大提高了内存的使用率。在复杂、大型的项目程序中,很可能出现内存泄露,我们可以尽量减少内存泄露,因为这样我们的程序跑起来原创 2016-09-26 20:41:01 · 296 阅读 · 0 评论 -
kerberos安全认证模型
Kerberos安全认证模型广泛用于互联网客户端和服务器之间的双向认证。可以用于防止网络replay攻击、恶意破坏、窃听,保证了数据的完整性,是一种对称密钥体制进行密钥管理的系统。ceph分布式文件系统中的安全认证模块的原型也来源于kerbos具体的认证流程:用户登录:1) 用户输入用户名和密码到客户端2) 客户机程序在输入的密码上运行一个单向函原创 2016-09-26 20:37:44 · 1835 阅读 · 0 评论 -
cpu时间片
时间片(timeslice)又称为“量子(quantum)”或“处理器片(processorslice)”是分时操作系统分配给每个正在运行的进程微观上的一段CPU时间(在抢占内核中是:从进程开始运行直到被抢占的时间)。现代操作系统(如:Windows、Linux、Mac OS X等)允许同时运行多个进程 —— 例如,你可以在打开音乐播放器听音乐的同时用浏览器浏览网页并下载文件。事实原创 2016-09-26 20:48:25 · 1778 阅读 · 0 评论 -
linux内核态和用户态
Ø 用户态:能使用的资源较少,但是对于安全性、可靠性要求较低,程序的编写和维护也较为简单。比如:文件系统—用户的数据;用户应用程序;Ø 内核态:访问的资源多,但是可靠性、安全性要求很高,维护管理都比较复杂;比如:CPU管理和内存管理(从安全的角度考虑);诊断、测试程序(因为需要访问计算机的所有资源);IO管理(要访问各种设备和底层数据结构);文件系统---本身的数据管理,宏数据结构的管理;原创 2016-09-26 21:05:02 · 314 阅读 · 0 评论 -
linux下日志文件系统
日志文件系统介绍日志文件系统可以在系统发生断电或者其他系统故障时保证整体数据的完整性,linux是目前支持日志文件系统最多的操作系统之一。比如说:ext3、reiserfs、XFS和JFS日志技术,采用标准的测试工具PostMark和Bonnie++进行测试,根据性能进行分析。所谓日志文件系统是在传统文件系统的基础上,加入文件系统更改的日志记录,它的设计思想是:跟踪记录文件系统的变化,并将原创 2016-09-26 21:07:46 · 404 阅读 · 0 评论 -
GCC编译归纳总结
概述一般在做项目的时候,都忽略了这个步骤,因为makefile是别人写好的,自己只要执行make操作就ok了,但是真正的项目开发,需要程序员有这项基本技能。弄明白gcc/g++编译器的基本参数和使用方法,在编译make出错后会有很大的帮助。 GCC使用心得一个最为基本的工程,包含一个头文件.h和一个实现文件.c,还有一个测试文件test.cpp。那么如何让这测试文件能顺原创 2016-09-27 20:25:30 · 429 阅读 · 0 评论 -
linux内核设计与实现:系统调用
1) 函数声明中都有asmlinkage限定词,用于通知编译器仅从栈中提取该函数的参数。2) 系统调用getXXX()在内核中被定义为sys_getXXX()。这是Linux中所有系统调用都应该遵守的命名规则。 系统调用号:在linux中,每个系统调用都赋予一个系统调用号,通过这个独一无二的号就可以关联系统调用。当用户空间的进程执行一个系统调用的时候,这个系统调用号就被用来指原创 2016-09-27 20:56:37 · 380 阅读 · 0 评论 -
编程获取linux系统配置
获取系统当前的内核信息#include int uname(struct utsname *buf); 运行时获取配置信息#include long sysconf(int name);比如,要获取当前的页大小sysconf(_SC_PAGESIZE);后面继续更新原创 2016-09-27 21:10:24 · 214 阅读 · 0 评论 -
Socket通信基础
Socket通信简介Pipe、FIFO、消息队列、semaphores和shared memory等经典的IPC方法。这些方法只是允许同一机器上的不同进程间进行通信。本节,我们将会介绍不同机器上运行的进程间的通信机制(与同一网络连接):网络IPC。本章将描述socket 网络IPC的接口,进程可以使用这些接口来和另外的进程进行通信,不管是在同一机器还是在不同的机器上。这也是socket原创 2016-09-27 21:12:41 · 421 阅读 · 0 评论 -
linux进程控制
daemon守护进程 守护进程就是没有控制终端,在后台运行。在系统自举时开始运行,直到系统停止运行。 那么守护进程的处理结构?怎样写一个守护进程并且如何知晓在系统出现错误的时候能及时的报告状态。 可能是因为daemons调用了setsid导致用户层的daemons没有控制终端。 所有的用户层的daemons是进程组的leader、sessionleader和原创 2016-09-27 21:31:21 · 334 阅读 · 0 评论 -
linux 下的文件I/O方式
标准访问文件的方式Linux 中,这种访问文件的方式是通过两个系统调用实现的:read()和 write()。当应用程序调用 read()系统调用读取一块数据的时候,如果该块数据已经在内存中了,那么就直接从内存中读出该数据并返回给应用程序;如果该块数据不在内存中,那么数据会被从磁盘上读到页高缓存中去,然后再从页缓存中拷贝到用户地址空间中去。如果一个进程读取某个文件,那么其他进程就都原创 2016-09-27 20:59:50 · 301 阅读 · 0 评论 -
多线程编程基础
线程值得参考:http://www.csc.villanova.edu/~mdamian/threads/posixthreads.html线程控制创建线程#include int pthread_create(thread_id, attr, func, arg)其中func表示该线程需要执行的代码地址终止线程从线程代码处returnpthread_canc原创 2016-09-27 21:45:39 · 255 阅读 · 0 评论 -
linux信号
综述信号是软中断,大多数的重要的应用程序需要处理信号。信号为处理异步事件提供看方法:用户在终端键入中断键,来停止一个程序,或者说是下一个的程序在管道中过早地终止。POSIX标准提供了可靠的规则,我们将要讨论的是这种情况。先熟悉一般的信号和每个信号的作用。随后,我们将了解早期实现中出现的错误。信号的概念所有的信号都有一个以SIG开头的名称,比如说:SIGABRT是中断信号,当一个程序调用原创 2016-09-27 21:49:12 · 237 阅读 · 0 评论 -
网络文件系统基础
说到网络文件系统,我们大家比较熟悉的有2种:cifs和nfs先了解下nfsNFSSun RPC远程过程调用流程:A、 服务器启动,注册端口B、 客户端启动,通过端口映射器获取port,获取服务器文件系统的本地fdC、 进行数据读写时,客户端的操作会被内核识别为NFS,然后通过RPC完成。 NFS的一些操作是幂等的:read,getattr,statfs原创 2016-09-27 22:04:39 · 244 阅读 · 0 评论 -
本地文件系统基础知识
本地文件系统Btrfs多设备管理当前Linux系统,如果你想创建一个RAID-0或者RAID-1或者其他RAID级别,然后在这些设备用上LVM,你可能需要使用硬件RAID卡或者软RAID(md)来做到把多个设备合成一个虚拟的设备。而btrfs则把对多设备(RAID)的支持内嵌到文件系统里了。当前,btrfs可以做RAID-0,RAID-1,RAID-10(以后应该会增加系统RAID级别原创 2016-09-27 22:06:42 · 2206 阅读 · 0 评论 -
linux下的内存管理
概述linux内存管理基础知识,反复看深入理解linux内核内存分区 •位于最低端的 ZONE_DMA 内存区域是为 ISA 设备保留的,这些设备仅有 16MB的 DMA 寻址能力。• ZONE_NORMAL 中的页面具有 1:1 线性映射的物理地址和逻辑地址。运行在内核态的代码可以方便和高效地访问,内核中大部分数据结构的内存对象都使用这个区中的内存。• Z转载 2016-09-28 20:14:56 · 835 阅读 · 0 评论 -
linux常用工具vim
主要是总结一些常用的vim快捷键和方式先来看一张图vim快捷键选定鼠标所在的字符串,然后搜索只要设置了hlsearch,就能使用’*’符合进行搜索,选定之后,然后再使用’*’切换到下一个,作用类似n键; vim 查看函数原型可以分为系统函数和自定义函数系统函数:用shift+K 如何进行批处理:比如:将10行代码全部注释掉;V之后,选择10行原创 2016-10-07 20:02:00 · 338 阅读 · 0 评论