- 博客(38)
- 资源 (7)
- 收藏
- 关注
原创 Mysql系列(一) - Mysql的架构体系
从互联网发展至今20几年,mysql这个数据库系统也一直伴随着我们一起发展。mysql是在我们开发过程中常用的数据库利器,也是最让人耳熟能详的,大中小型的业务项目几乎都能胜任,用的多,用的广,大厂面试也常问。我们今天先聊下Mysql架构体系,后续逐渐了解其他方面的知识。...
2022-07-30 19:39:55
1341
1
原创 Linux IO体系、零拷贝和虚拟内存关系的重新思考
经常看到网上的文章讲IO体系和零拷贝的时候前面大篇幅在讲虚拟存储和虚拟内存的事情,所以看这些文章感觉有点重点抓不住,要点不突出,关系连不起来,今天我根据自己的理解,重新梳理下这三者的关系: 讲IO和零拷贝的时候讲到虚拟内存是因为涉及到用户进程在用户态和内核态的转换,离开进程谈虚拟内存就没任何意义。 IO体系和零拷贝是有有关系,但是跟虚拟内存没有直接关系。 我们先看虚拟内存到底解决什么问题? 虚拟内存是计算机系统内存管理的一种技术。 它使得应用程序认为它拥有连续的可用的内存(一个连续完整的
2021-03-06 21:54:31
712
原创 kubernetes最佳实践(四) - nginx-ingress-controller
前言k8s有了kubedns解决了k8s集群内部通过dns域名的方式相互访问容器服务,但是集群内部的域名无法在外部被访问,也没有解决域名7层负载均衡的问题,而nginx-ingress就是为了解决基于k8s的7层负载均衡nginx-ingress也是已addon方式加入k8s集群,以pod的方式运行,多个副本,高可用现在一般使用nginx-ingress-controlle
2018-02-07 13:35:26
8952
原创 kubernetes最佳实践(三) - kubedns部署
1. 服务发现kubernetes 提供了 service 的概念可以通过 VIP 访问 pod 提供的服务,但是在使用的时候还有一个问题:怎么知道某个应用的 VIP?比如我们有两个应用,一个 app,一个 是 db,每个应用使用 rc 进行管理,并通过 service 暴露出端口提供服务。app 需要连接到 db 应用,我们只知道 db 应用的名称,但是并不知道它的 VIP 地址。
2018-02-07 13:33:56
969
原创 kubernetes最佳实践(二) - dashboard ui和heapster监控部署
前言本章节主要包行两个部分官方dashboard部署,版本是1.6.3(1.5.0我也试过成功的)给dashboard加上仪表盘监控,我们安装heapster为dashboard安装统计功能和仪表盘 如下图1.安装dashboard 这是官方的dashboard地址: https://github.com
2018-02-07 13:32:11
1848
原创 kubernetes最佳实践(一) - 集群部署
1.机器和软件版本 两台Ubuntu16.04服务器:ip分别为10.145.84.68(bjyz-coparch20.epc)和10.145.84.64(bjyz-coparch21.epc) Kubernetes版本:1.5.5 Docker版本:1.12.6 etcd版本:2.2.1 flannel版本:0.5.6 其中160服务器既
2018-02-07 13:31:33
1142
转载 Linux网络处理“零拷贝”技术&mmap()&内核进程间通信设计&8086分页管理——摆在一起来谈谈
转自:http://blog.youkuaiyun.com/freas_1990/article/details/9173713Jack:最近听说了网络处理的“零拷贝”技术,觉得非常神奇,在网上查阅了很多资料。不过,并不是太明白——知其然,而不知其所以然。你能通俗地解释一下吗?我:这是一个相对比较复杂的话题,说起来话就多了。本质上来说,其实就是80386的分页管理变异而已。
2015-03-27 23:43:07
942
转载 java的DirectBuffer源码分析(主要是DirectBuffer的资源分配和回收)
可以看到淘宝的一个说明:http://www.tbdata.org/archives/801Java 2 SE 6 doc :Given a direct byte buffer, the Java virtual machine will make a best effort to perform native I/O operations directly upon it. T
2013-07-19 16:39:23
839
转载 DirectBuffer及内存泄漏
创建Buffer对象时,可以选择从JVM堆中分配内存,也可以OS本地内存中分配,由于本地缓冲区避免了缓冲区复制,在性能上相对堆缓冲区有一定优势,但同时也存在一些弊端。两种缓冲区对应的API如下:JVM堆缓冲区:ByteBuffer.allocate(size)本地缓冲区:ByteBuffer.allocateDirect(size)从堆中分配的缓冲区为普通的Java对象,生命周期与
2013-07-19 16:34:58
847
转载 千万级并发实现的秘密:内核不是解决方案,而是问题所在!
转自:http://www.youkuaiyun.com/article/2013-05-16/2815317-The-Secret-to-10M-Concurrent-Connections摘要:C10K问题让我们意识到:当并发连接达到10K时,选择不同的解决方案,笔记本性能可能会超过16核服务器。对于C10K问题,我们或绕过,或克服;然而随着并发逐渐增多,在这个后10K的时代里,你是否有想过如何去克服
2013-05-19 01:59:24
720
转载 深入理解Java内存模型(七)——总结
处理器内存模型转自:http://www.infoq.com/cn/articles/java-memory-model-7顺序一致性内存模型是一个理论参考模型,JMM和处理器内存模型在设计时通常会把顺序一致性内存模型作为参照。JMM和处理器内存模型在设计时会对顺序一致性模型做一些放松,因为如果完全按照顺序一致性模型来实现处理器和JMM,那么很多的处理器和编译器优化都要被禁止,这对执行
2013-04-06 22:59:14
555
转载 深入理解Java内存模型(六)——final
转自:http://www.infoq.com/cn/articles/java-memory-model-6 与前面介绍的锁和volatile相比较,对final域的读和写更像是普通的变量访问。对于final域,编译器和处理器要遵守两个重排序规则:在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重
2013-04-06 22:58:25
648
转载 深入理解Java内存模型(五)——锁
锁的释放-获取建立的happens before 关系转自:http://www.infoq.com/cn/articles/java-memory-model-5锁是java并发编程中最重要的同步机制。锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息。下面是锁释放-获取的示例代码:class MonitorExample {
2013-04-06 22:56:33
643
转载 深入理解Java内存模型(四)——volatile
volatile的特性转自:http://www.infoq.com/cn/articles/java-memory-model-4当我们声明共享变量为volatile后,对这个变量的读/写将会很特别。理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个监视器锁对这些单个读/写操作做了同步。下面我们通过具体的示例来说明,请看下面的示例代码:
2013-04-06 22:55:02
537
转载 深入理解Java内存模型(三)——顺序一致性
数据竞争与顺序一致性保证转自:http://www.infoq.com/cn/articles/java-memory-model-3当程序未正确同步时,就会存在数据竞争。java内存模型规范对数据竞争的定义如下:在一个线程中写一个变量,在另一个线程读同一个变量,而且写和读没有通过同步来排序。当代码中包含数据竞争时,程序的执行往往产生违反直觉的结果(前一章的示例正是如此)。
2013-04-06 22:38:23
645
转载 深入理解Java内存模型(二)——重排序
数据依赖性转自:http://www.infoq.com/cn/articles/java-memory-model-2如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依赖性。数据依赖分下列三种类型:名称代码示例说明写后读a = 1;b = a;写一个变量之后,再读这个位置。写
2013-04-06 22:02:07
568
转载 深入理解Java内存模型(一)——基础
并发编程模型的分类转自:http://www.infoq.com/cn/articles/java-memory-model-1在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公
2013-04-06 21:08:32
553
转载 纪念田健
转自:http://blog.sina.com.cn/s/blog_c29a283b0101bzwc.html?tj=1 个人认为写得很好,多谢舒迅老师 正文如下: 九年前,田健是我老板,我记忆最深的事是他提拔我为Yahoo3721市场总监,月薪11000元,那时我刚大学毕业三年。在他手下不到一年的时间里,我跟他学会了之后赖以谋生的几个方法论,
2013-02-15 16:18:06
507
转载 互联网造富亲历者讲述:“屌丝”富了以后
转自:http://tech.sina.com.cn/i/2012-12-14/11137888026.shtml全球化和互联网,在拉近世界距离的同时,也缩短了中国人从穷到富的过程,把这个过去需要十几年、几十年甚至几代人的漫长财富积累过程,浓缩到了35年的时间。“我有钱了”这件事已经从一个小概率事件变成一个“人人都是哥伦布”的群体狂欢。 互联网行业因为其特殊性,是最近十几年里产生一夜
2012-12-14 23:56:17
591
转载 VC十大忽悠用语:创业者,我看好你!
原文地址:http://tech.sina.com.cn/i/csj/2012-09-29/08497669540.shtml编者注:这是一篇三年前的“旧文”。有趣的是,这些“忽悠术”即使今天看起来仍不过时,“我一会儿还有个会”、“很看好你,可惜内部讨论没通过”……这些话好像总在哪里听过。最近在微博上被翻出重提,看得人十分欢乐,仔细想想又全是经验之谈。重新发布,并欢迎补充。 桂曙
2012-09-30 11:30:15
2163
转载 优化Map Reduce Jobs,技术实现投资回报
摘要:一说到大数据,就不得不提Hadoop;一提到Hadoop,就必要关注Map/Reduce。作为一个使用简易的软件框架,基于Map/Reduce的应用程序能够运行在由上千个商用机器组成的大型集群上,并以一种可靠容错的方式并行处理TB级别以上的数据集。本文教你如何优化一个大型Map/Reduce Jobs,并将其立即转化为投资回报。一说到大数据,就不得不提Hadoop;一提到Hadoop,就
2012-09-24 19:38:43
699
转载 内存屏障与JVM并发
转自:http://www.infoq.com/cn/articles/memory_barriers_jvm_concurrency内存屏障,又称内存栅栏,是一组处理器指令,用于实现对内存操作的顺序限制。本文介绍了内存屏障对多线程程序的影响。我们将研究内存屏障与JVM并发机制 的关系,如易变量(volatile)、同步(synchronized)和原子条件式(atomic conditi
2012-09-18 16:29:47
840
转载 java多线程和并发编程(三)--- 从JVM并发看CPU内存指令重排序(Memory Reordering)
前言: Dennis Byrne 写的一片博文Memory Barriers and JVM Concurrency (中译文内存屏障与JVM并发)。中提到:对主存的一次访问一般花费硬件的数百次时钟周期。处理器通过缓存(caching)能够从数量级上降低内存延迟的成本这些缓存为了性能重新排列待定内存操作的顺序。也就是说,程序的读写操作不一定会按照它要求处理器的顺序执行。这段话是作者
2012-09-18 16:17:23
1265
原创 java多线程和并发编程(二)--- java内存模型详解
(请注意文章中加粗的字体)1. 计算机体系结构,多处理器,高速缓存和内存 图1.1 从计算机的体系结构我们可以知道,在处理器和主内存直接都会有高速缓存,这层高速缓存的存在是因为内存存储设备与处理器的运算速度之间有着几个数量级的差距,所以现代计算
2012-09-18 16:03:48
819
转载 单例模式与双重检测(Double-Checked Locking, DCL)
首先要解释一下什么是延迟加载,延迟加载就是等到真真使用的时候才去创建实例,不用时不要去创建。 从速度和反应时间角度来讲,非延迟加载(又称饿汉式)好;从资源利用效率上说,延迟加载(又称懒汉式)好。 下面看看几种常见的单例的设计方式:第一种:非延迟加载单例类Java代码 public class Singleton { private Singleto
2012-09-18 15:59:52
664
转载 java多线程和并发编程(一)--- java 线程小结
1, 为什么wait与notify之前必须要加synchronized?答案其实很简单,也是为了防止等待-通知机制出现race condition为什么会出现race condition ?答: 对象在被wait之前已经被另一线程notify , 之后的wait 会永久停止,并导致deadlock(死锁)理想情况:1, 第一个线程判断该对象是否要wait2, 第一个线程将对
2012-09-17 19:40:23
632
转载 java多线程设计wait/notify机制 (synchronized与对象锁) ---- 转
转载自一篇经典的终结,忘记出处了……百看不厌,真的很经典synchronized(obj) { while(!condition) { obj.wait(); } obj.doSomething();}当线程A获得了obj锁后,发现条件condition不满足,无法继续下一处理,于是线程A就wait() , 放弃对象锁.之
2012-02-03 00:27:00
374
原创 Hadoop下远程调试Child子进程 --- 原创
在网上想找Hadoop远程调试Child子进程的文章,但是都没有见到具体步骤是如何操作的,对于初学者来说,要想真正理解MapReduce的shuffle的过程,对Child子进程的调试是必不可少的一项任务,至少对我来说是这样。费了九牛二虎之力,最后终于调试成功,在这里写下经验,分享给后面的hadoop学习爱好者。我的环境:hadoop-0.20.2
2012-01-28 03:15:05
1240
3
原创 U盘安装Windows XP,悲惨的过程,还是成功了。原先是XP和Ubuntu双系统。
1、下载一个老毛桃的WinPE启动盘 http://www.duote.com/soft/8624.html制作过程如下:http://wenku.baidu.com/view/d79992b269dc5022aaea0060.html2、制作完成后打开:开始》程序》
2011-08-27 21:02:39
1979
转载 Ubuntu -wine中文乱码的解决方法
新装的wine中文全是乱码,需要修改一下几个配置文件,找到一篇比较详细的配置说明,分享一下:步骤: 1. 初始设置运行 winecfg,把模拟的 Windows 系统设置为 Windows XP 或者 Windows 2000。2. 准备字体为了让 Windows 应用程序看上去
2011-07-27 17:16:27
649
原创 MongoDB与CouchDB全方位对比
本文见于MongoDB官方网站,MongoDB与CouchDB很相似,他们都是文档型存储,数据存储格式都是JSON型的,都使用Javascript进行操作,都支持Map/Reduce。但是其实二者有着很多本质的区别,本文透过现象追寻本质,让你更好的理解MongoDB与CouchDB。1.MVCC(Multiversion concurrency control)MongoDB与
2011-06-14 12:14:00
1566
原创 Threadlocal理解
今天看了ThreadLocal机制,写一点读书笔记。 首先解释下ThreadLocal的含义,ThreadLocal很容易让人望文生义,想当然地认为是一个“本地线程”。其实,ThreadLocal并不是一个Thread,也不是Thread的局部变量,其实他是作为Thread内部一个Map的key值来存在的。每个线程内部都会有一个
2011-06-10 16:55:00
671
原创 【半ZZ】红黑树 VS AVL树
<br /><br />1 好处 及 用途<br /> 红黑树并不追求“完全平衡”——它只要求部分地达到平衡要求,降低了对旋转的要求,从而提高了性能。<br />红黑树能够以O(log2 n) 的时间复杂度进行搜索、插入、删除操作。此外,由于它的设计,任何不平衡都会在三次旋转之内解决。当然,还有一些更好的,但实现起来更复杂的数据结构 能够做到一步旋转之内达到平衡,但红黑树能够给我们一个比较“便宜”的解决方案。红黑树的算法时间复杂度和AVL相同,但统计性能比AVL树更高。<br /> <br /
2011-02-16 21:03:00
751
原创 Vim配置外一篇(中文化、输入法、代码补全等)
<br /><br />Vim不愧是地球上最强的文本编辑器之一(不加之一恐怕Emacs用户会有意见- -),用Vim就像用Foobar一样,必须先调教一番,使之很好的符合自己的习惯才能达到最高的效率。<br />之前(前情提要:非中文系统下Gvim中文化解决方法)提到了Vim在其他语言Win32平台下的中文化实现,这里再做一些补充修订:多语言平台下的中文化实现<br />首先是编码设置"设置内核为UTF-8set enc=utf-8"设置解码顺序,这个顺序经测试可以很好的识别UTF-8,JIS,GB
2011-02-12 19:31:00
1979
原创 ECHO网络程序的演变史 (1) --- Socket地址
<br />Andrew Huang bluedrum@163.com 转载请注明作者及联络方式. 网络Socket编程的主要技能,可能通Echo程序可以不断演进来描述网络开发的各个细节。Echo程序是指在一个C/S模型中,当客户端通过IP网络向服务器服务器发送一个字符串,服务器再原样把字符串发送出来。此谓Echo. 在应用一级进行编程主要采用Socket库,而且Socket库的基本技能是处理Socket地址。 一.Socket地址的表示------------------------------
2011-02-12 19:30:00
654
原创 ssh自动断开解决办法
<br /> <br />用putty/SecureCRT连续3分钟左右没有输入, 就自动断开, 然后必须重新登陆, 很麻烦.<br />在网上查了很多资料, 发现原因有多种, 环境变量TMOUT引起,ClientAliveCountMax和ClientAliveInterval设置问题或者甚至是防火墙的设置问题. 所以可以这么尝试:<br />1, echo $TMOUT<br />如果显示空白,表示没有设置, 等于使用默认值0, 一般情况下应该是不超时. 如果大于0, 可以在如/etc/profile之
2011-02-12 19:28:00
688
转载 缓存系统MemCached的Java客户端优化历程
<br />Memcached 是什么?<br />Memcached是一种集中式Cache,支持分布式横向扩展。这里需要解释说明一下,很多开发者觉得Memcached是一种分布式缓存系统,但是其实Memcached服务端本身是单实例的,只是在客户端实现过程中可以根据存储的主键做分区存储,而这个区就是Memcached服务端的一个或者多个实例,如果将客户端也囊括到Memcached中,那么可以部分概念上说是集中式的。其实回顾一下集中式的构架,无非两种情况:一是节点均衡的网状(JBoss Tree Cache
2011-02-07 12:44:00
711
原创 memcached 高性能服务器架构
1.memcached详细介绍。引用通常的网页缓存方式有动态缓存和静态缓存等几种,在ASP.NET中已经可以实现对页面局部进行缓存,而使用memcached的缓存比 ASP.NET的局部缓存更加灵活,可以缓存任意的对象,不管是否在页面上输出。而memcached最大的优点是可以分布式的部署,这对于大规模应用来 说也是必不可少的要求。LiveJournal.com使用了memcached在前端进行缓存,取得了良好的效果,而像wikipedia,sourceforge等也采用了或即将采用memcached作为缓
2011-02-07 01:08:00
633
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人