- 博客(41)
- 资源 (88)
- 收藏
- 关注
转载 Docker 学习笔记
一、Docker 简介Docker 两个主要部件:Docker: 开源的容器虚拟化平台Docker Hub: 用于分享、管理 Docker 容器的 Docker SaaS 平台 -- Docker HubDocker 使用客户端-服务器 (C/S) 架构模式。Docker 客户端会与 Docker 守护进程进行通信。Docker 守护进程会处理复杂繁重的任务,例如建立、
2016-10-31 13:41:28 804
转载 windows-docker介绍
part 1 docker官方给的docker for windowsGetting Started with Docker for Windows介绍了如何在windows上使用docker。 首先环境需要64bit Windows 10 Pro,然后需要开启HyperV服务。 然后下载安装包就可以了。 安装过程还是相当顺利。一路下一步就OK。 然后就可以开始体验我们的w
2016-10-31 11:30:01 533
转载 一张关于docker版本的图
今天安装了windows内测版的docker,的确是是把vitualbox换成了hyper-v,如左图,server的os 还是linux。不过之前在nanoserver上装的docker 也的确是原生的windows版本 如右图 sever的 os是windows。附 :windows docker 内测版相关网站https://beta.docker.com wi
2016-10-31 11:26:36 1101
转载 windows原生docker及windows Server Container , Hyper Container 之间的关系(学习总结)
前一段时间学习netcore的时候接触到了docker,感觉真是不错的技术。百度了不少教程。因为我用windows就下载安装了一下试试。但是没有安装成功,才发现 需要安装virtualbox虚拟机,与我的hyper-v冲突。后来看新闻出了windows版的docker,把virtualbox换成了hyper-v。也算小惊喜吧,心想如果能出原生的windows 版docker就好了。试着 注册了
2016-10-31 11:24:40 980
转载 Linux epoll模型
定义: epoll是Linux内核为处理大批句柄而作改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著的减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。因为它会复用文件描述符集合来传递结果而不是迫使开发者每次等待事件之前都必须重新准备要被侦听的文件描述符集合,另一个原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被
2016-10-31 11:11:53 513
转载 TCP长连接与短连接的区别
1. TCP连接当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次握手的,而释放则需要4次握手,所以说每个连接的建立都是需要资源消耗和时间消耗的经典的三次握手示意图:经典的四次握手关闭图:2. TCP短连接我们模
2016-10-31 11:01:39 347
转载 HTTP的长连接和短连接
一、什么是长连接 HTTP1.1规定了默认保持长连接(HTTP persistent connection ,也有翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST包、不四次握手),等待在同域名下继续用这个通道传输数据;相反的就是短连接。 HTTP首部的Connection: Keep-alive是HTTP1.0浏览器和服务器的实验性扩展,当前的HTTP1
2016-10-31 10:52:51 396
转载 Epoll模型详解
Linux 2.6内核中提高网络I/O性能的新方法-epoll I/O多路复用技术在比较多的TCP网络服务器中有使用,即比较多的用到select函数。1、为什么select落后 首先,在Linux内核中,select所用到的FD_SET是有限的,即内核中有个参数__FD_SETSIZE定义了每个FD_SET的句柄个数,在 我用的2.6.15-25-386内核中,该值是1024,搜
2016-10-31 10:04:12 368
转载 常见IO模型和epoll O(1)实现原理
同步和阻塞同步:发送方发送请求后,需要收到响应后才能接着发送下一步请求;阻塞;通常针对网络套接字socket,调用结果返回前,当前线程一直挂起等待;同步针对调用方,阻塞针对接受方;同步非阻塞:发送方发出请求后一直等待,接受方处理请求时立即返回,不用等待执行结果;异步阻塞:发送方发出请求后马上返回,接受方处理请求期间一直等待,直到返回执行结果;nginx工作进程采用了异步非阻
2016-10-31 09:47:22 880
转载 基于redis分布式缓存实现
Redis复制流程概述Redis的复制功能是完全建立在之前我们讨论过的基于内存快照的持久化策略基础上的,也就是说无论你的持久化策略选择的是什么,只要用到了Redis的复制功能,就一定会有内存快照发生,那么首先要注意你的系统内存容量规划,原因可以参考我上一篇文章中提到的Redis磁盘IO问题。Redis复制流程在Slave和Master端各自是一套状态机流转,涉及的状态信息是:
2016-10-31 09:06:12 381
转载 高可用、开源的Redis缓存集群方案
由于单台Redis服务器的内存管理能力有限,使用过大内存的Redis又会使得服务器的性能急剧下降,一旦服务器发生故障将会影响更大范围业务,而Redis 3.0 beta1支持的集群功能还不适合生产环境的使用。于是为了获取更好的Redis缓存性能及可用性,很多公司都研发了Redis缓存集群方案。现对NetFlix、Twitter、国内的豌豆荚在缓存集群方面的解决方案进行一个汇总,以供读者参考,具体内
2016-10-31 09:03:01 378
转载 JVM监控工具介绍jstack, jconsole, jinfo, jmap, jdb, jsta
jstatd启动jvm监控服务。它是一个基于rmi的应用,向远程机器提供本机jvm应用程序的信息。默认端口1099。实例:jstatd -J-Djava.security.policy=my.policymy.policy文件需要自己建立,内如如下:grant codebase "file:$JAVA_HOME/lib/tools.jar" { permission jav
2016-10-31 08:55:51 391
转载 总结网络IO模型与select模型的Python实例讲解
网络I/O模型人多了,就会有问题。web刚出现的时候,光顾的人很少。近年来网络应用规模逐渐扩大,应用的架构也需要随之改变。C10k的问题,让工程师们需要思考服务的性能与应用的并发能力。网络应用需要处理的无非就是两大类问题,网络I/O,数据计算。相对于后者,网络I/O的延迟,给应用带来的性能瓶颈大于后者。网络I/O的模型大致有如下几种:同步模型(synchronous I/O)阻
2016-10-28 18:40:42 1158
转载 使用strace, ltrace寻找故障原因的线索
在GNU/Linux环境下,当程序出现“疑难杂症”的时候,如何快速定位问题呢?本文介绍strace/ltrace的一些使用方法,内容主要来自个人的读书笔记(可见参考文献)。strace/ltrace 是一类不错的工具,在工作中经常会用到,其主要可以用于:(1) 了解一个程序的工作原理(可以了解Linux下很多常用的命令实现的原理);(2) 帮助定位程序中的问题(在开发工作时帮助
2016-10-28 15:57:19 1843
转载 Linux下java进程CPU占用率高-分析方法
今天登陆同事的一台gateway 开始以为hive环境登陆不了了,仔细一看看了下是因为机器很卡,我每次等几秒没登陆就ctrl+c了,看了下是有个java进程cpu:340.4% mem:14.6% 一般解决方法是通过top命令找出消耗资源高的线程id,利用strace命令查看该线程所有系统调用 1. 通过top命令找到可疑进程PID top 一下 可以看出java进程CP
2016-10-28 15:45:42 816
转载 linux进程高cpu问题分析
linux进程高cpu问题分析 1.用top命令查看哪个进程占用CPU高gateway网关进程14094占用CPU高达891%,这个数值是进程内各个线程占用CPU的累加值。 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 14094 root
2016-10-28 15:37:30 3440
转载 关于linux的进程中的各个线程cpu占用情况的分析和查看
我们经常会在新开的服搭建一个游戏的服务器,有时候要进行压力测试,那么如何来看呢,一般我们会通过top命令查看各个进程的cpu和内存占用情况,获得到了我们的进程id,然后我们也许会通过pstack命令查看里边的各个线程id以及对应的线程现在正在做什么事情,分析多组数据就可以获得哪些线程里有慢操作影响了服务器的性能,从而得到解决方案。比如这样的以组数据:[root@AY130816144542
2016-10-28 15:25:04 1617
转载 Linux通过PID查看进程完整信息
通过ps及top命令查看进程信息时,只能查到相对路径,查不到的进程的详细信息,如绝对路径等。先通过top查看进程PID这时,我们需要通过以下的方法来查看进程的详细信息:Linux在启动一个进程时,系统会在/proc下创建一个以PID命名的文件夹,在该文件夹下会有我们的进程的信息,其中包括一个名为exe的文件即记录了绝对路径,通过ll或ls –l命令即可查看。
2016-10-28 14:58:54 19756
转载 Linux 性能监控
一. Linux 性能监控的概述 系统由若干子系统构成,通常修改一个子系统有可能影响到另外一个子系统,甚至会导致整个系统不稳定、崩溃。所以说优化、监测、测试通常是连在一起的,而且是一个循环而且长期的过程,通常监测的子系统有以下这些:(1). CPU(2). Memory(3). IO(4). Network
2016-10-28 10:47:29 296
转载 压力测试衡量CPU的三个指标:CPU Utilization、Load Average和Context Switch Rate
Linux下cpu使用率load average的简单理解 load average一般可以通过top或者uptime观察到,格式如下: load average: 0.10, 0.05, 0.58 分别代表了最近1分钟,5分钟,15分钟CPU的平均负载情况 如果是单核CPU的话,1.00就表示CPU已经满负荷了, 如果是多核CP
2016-10-28 10:45:52 1051
转载 Linux查看物理CPU个数、核数、逻辑CPU个数
# 总核数 = 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数# 查看物理CPU个数cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l# 查看每个物理CPU中core的个数(即核数)cat /proc/cpuinfo| grep "cpu cor
2016-10-28 10:44:48 323
转载 lua的string库与强大的模式匹配
ua原生解释器对字符串的处理能力是十分有限的,强大的字符串操作能力来自于string库。lua的string函数导出在string module中。在lua5.1,同时也作为string类型的成员方法,因此,我们既可以写成string.upper(s), 也可以s:upper(),选择你喜欢的写法。string.len(s)返回s的长度。string.rep(s, n)返回重复s字
2016-10-27 16:15:07 329
转载 lua的table库中常用的函数
lua提供了一些辅助函数来操作table。例如,从list中insert和remove元素,对array的元素进行sort,或者concatenate数组中的所有strings。下面就详细地讲解这些方法。insert and removetable.insert将一个元素插入到指定位置,例如:t = {1, 2, 3}table.insert(t, 1, 4}t的结果
2016-10-27 16:13:01 457
转载 用Lua实现插入、删除和查找时间复杂度为O(1)的集合
利用下面代码可以定义一个集合S,对该集合所有的操作,比如插入、删除元素和查找元素都是O(1),代码如下:function newset() local reverse = {} --以数据为key,数据在set中的位置为value local set = {} --一个数组,其中的value就是要管理的数据 return setmetatable(set,{__inde
2016-10-27 16:09:23 1574
转载 lua随机数
Lua 生成随机数需要用到两个函数:math.randomseed(xx), math.random([n [, m]])1. math.randomseed(n) 接收一个整数 n 作为随机序列种子。2. math.random([n [, m]]) 有三种用法: 无参调用, 产生 (0,1) 之间的浮点随机数; 只有参数 n, 产生 1-n 之间的整数; 有两个参数 n, m,
2016-10-27 15:57:31 509
转载 lua中的特殊语法
变量无需声明类型(variable type), 无需在首次使用前声明以下语句是用C语言书写的.int i;i = 9;printf("%d/n",i);类似的行为在Lua中的语句是这样的:> i = 9> print(i)9不需要事先声明i及其类型, 可以直接使用此外, 变量的类型也不是固定的, 是由其当前值决定的. 可以随时赋不同
2016-10-27 15:54:18 619
转载 lua中遍历table的几种方式比较
当我在工作中使用lua进行开发时,发现在lua中有4种方式遍历一个table,当然,从本质上来说其实都一样,只是形式不同,这四种方式分别是:for key, value in pairs(tbtest) do XXX end for key, value in ipairs(tbtest) do XXX end for i=1, #(tbtest) do
2016-10-27 15:45:37 763
转载 epoll简介
Abstractepoll是Linux内核为处理大批量句柄而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。简介:epoll是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率,
2016-10-20 16:31:36 254
转载 如何构建一个简单的CAAS系统
在CAAS系统出现前企业应用架构基本被IAAS/SAAS/PAAS等模式垄断,直到docker的出现为我们打开了另一个扇大门,废话不说了,我们直奔主题我们先了解下一个简单的CAAS系统是如何为用户提供服务的企业用户上传它的应用代码或其他代码托管方式,我们生成用户应用的镜像,或者用户直接上传镜像,或者用户直接使用我们提供的基础服务镜像用户部署他的镜像应用,启动它的镜像容器
2016-10-19 16:28:38 529
转载 vim修改文件格式,查看不可见字符等
:set fileformats=unix,dos ==>unix文件格式作为第一选择,dos格式作为第二选择,尤其需要注意的是shell、python等脚本需要保存为unix格式,因为不然你在linux下直接运行时会提示:No such file or directory,因为Linux把换行符也当成脚本解释器的一部分了。:set fileformat ==>查看文件格式:set filef
2016-10-19 16:25:24 891
转载 关于非阻塞的recv的时候返回的处理
注意recv()如果读到数据为0,那么就表示文件结束了,如果在读的过程中遇到了中断那么会返回-1,同时置errno为EINTR。因此判断recv的条件: 如果read返回 如果==0 表示文件结束, 处理 如果 表示中断,处理 否则,出错我们举个例子:int safe_tc
2016-10-18 00:07:50 2790
转载 Socket/Epoll主要流程对socket错误码正确处理
以下是对相关流程和socket错误码正确处理的小结。一. Socket/Epoll主要遇到的问题:(1) 非阻塞socket下,接收流程(recv/recvfrom)对错误(EINTR/EAGAIN/EWOULDBLOCK)当成Fatal错误处理,产生频繁断连.(2)EPOLLERR/EPOLLHUP事件时,直接调用socket异常处理,产生频繁断连.(3)udp sock
2016-10-18 00:05:02 1190
转载 epoll在LT和ET模式下的读写方式
在一个非阻塞的socket上调用read/write函数, 返回EAGAIN或者EWOULDBLOCK(注: EAGAIN就是EWOULDBLOCK)从字面上看, 意思是:* EAGAIN: 再试一次* EWOULDBLOCK: 如果这是一个阻塞socket, 操作将被block* perror输出: Resource temporarily unavailable
2016-10-17 23:53:24 493
转载 完全虚拟化软件----KVM
一、KVM虚拟机简介Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux2.6.20之后继承Linux的主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM目前已成为学术界的VMM之一。Kvm仅仅是一个linux内核的模块,当在linux中安装了kvm后,linux会变成了hypervis
2016-10-15 14:39:51 1900
转载 虚拟化之QEMU与KVM
QEMU是个完全独立的虚拟环境,因为KVM的出现,使得某些同学(包括我自己)对QEMU和KVM之间的关系不是很清楚。QEMU本身可以不依赖于KVM,但是如果有 KVM的存在并且硬件(处理器)支持比如Intel VT功能,那么QEMU在对处理器虚拟化这一块可以利用KVM提供的功能来提升性能。这篇博文侧重点在QEMU这块,前期主要是考察一下其使用,以及和KVM之关系,后续的博文会涉及到两者间的
2016-10-13 21:43:53 471
转载 qemu-kvm虚拟机与宿主机之间简单文件传输方法
qemu-kvm虚拟机与宿主机之间实现文件传输,大概两类方法:1. 虚拟机与宿主机之间,使用网络来进行文件传输。这个需要先在宿主机上配置网络桥架,在qemu-kvm启动配置网卡就可以实现文件传输。2. 使用9psetup协议实现虚拟机与宿主机之间文件传输。该方法先要宿主机需要在内核中配置了9p选项,即: CONFIG_NET_9P=y CONFIG_net_
2016-10-13 21:42:57 27951 6
转载 epoll使用详解(精髓)
epoll - I/O event notification facility在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且
2016-10-11 16:59:44 300
转载 supervisor配置详解
先说说supervisor是干什么的吧?supervisor这东西,其实就是用来管理进程的。咱们为什么要用supervisor呢?因为,相对于我们linux传统的进程管理方式来说,它有很多的优势,要不然咱们也不会闲着没事去用supervisor了。OK,下面来看看supervisor有哪些好处吧。简单为啥简单呢?因为咱们通常管理linux进程的时候,一般来说都需要自
2016-10-11 16:56:34 9197
转载 Python - 简单的epoll server代码解读
本文主要是针对 《 Python中使用epoll开发服务端程序》中的代码,进行源码注释说明。从代码中至少可以学习到如下三点:logging 模块的使用;epoll 的使用;如何利用 try...catch 来处理“读穿”。server端代码: #!/usr/bin/python#-*- coding:utf-8 -*-import socket
2016-10-08 21:11:26 490
转载 python网络编程——IO多路复用之epoll
1、内核EPOLL模型讲解 首先我们来定义流的概念,一个流可以是文件,socket,pipe等可以进行I/O操作的内核对象。不管是文件,还是套接字(socket),还是管道(pipe),我们都可以把他们看作流。 之后我们来讨论I/O操作,通过read,我们可以从流中读入数据;通过write,我们可以往流中写入数据。现在假定1种情形,我们需要从流中读数据,
2016-10-08 20:34:18 576
mongo-spark-connector_2.11-2.2.0 相关jar
2017-11-23
hadoop-eclipse-plugin-2.8.1.jar
2017-11-08
生成 hadoop-eclipse-plugin-2.x 插件工具代码
2017-11-08
The_.NET_Developer_s_Guide_to_Windows_Security
2016-08-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人