自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 ASM 3.0 编程框架

引言ASM 通过(Tree)树这种数据结构来表示复杂的字节码结构,并利用 Push 模型来对树进行遍历,在遍历过程中对字节码进行修改。所谓的 Push 模型类似于简单的 Visitor 设计模式,因为需要处理字节码结构是固定的,所以不需要专门抽象出一种 Vistable 接口,而只需要提供 Visitor 接口。所谓 Visitor 模式和 Iterator 模式有点类似,它们都被用来遍历一些...

2018-11-26 21:23:19 371

原创 Java动态字节码技术-ASM

引言ASM 通过树这种数据结构来表示复杂的字节码结构,并利用 Push 模型来对树进行遍历,在遍历过程中对字节码进行修改。所谓的 Push 模型类似于简单的 Visitor 设计模式,因为需要处理字节码结构是固定的,所以不需要专门抽象出一种 Vistable 接口,而只需要提供 Visitor 接口。所谓 Visitor 模式和 Iterator 模式有点类似,它们都被用来遍历一些复杂的数据结...

2018-11-26 21:03:55 781

原创 深入理解ASM-Java类文件

引言所谓 Java 类文件,就是通常用 javac 编译器产生的 .class 文件。Java 源文件经过 javac 编译器编译之后,将会生成对应的二进制文件(如下图所示)。每个合法的 Java 类文件都具备精确的定义,而正是这种精确的定义,才使得 Java 虚拟机得以正确读取和解释所有的 Java 类文件。Java 类文件是 8 位字节的二进制流。数据项按顺序存储在 class 文件中...

2018-11-26 20:56:44 412 1

原创 分布式系统架构的本质

引言最近几年,大家一直在讨论各式各样的架构,如:高并发架构、异地多活架构、容器化架构、微服务架构、高可用架构、弹性化架构。还有这些架构相关的管理型技术方法,如:DevOps、应用监控、自动化运维、SOA服务治理、去IOE等等。面对这么多的纷乱复杂的技术,很多团队都是一个个地去做这些技术,非常辛苦,但结果并不好。分布式系统架构的目的首先,我们需要搞清楚的是为什么需要分布式系统,而不是传统...

2018-11-26 12:06:26 1213 2

原创 Git的正确姿势

引言与传统的代码版本工具相比,Git有很多的优势,因而越来越多的程序员喜欢版本管理工具。Git这个版本管理工具最大的优势包含以下几个方面:Git是一个分布式的版本管理工具,而且可以是单机版的,所以,你在没有网络环境的时候同样可以提交(Commit)代码。对于我们来说,这意味着在出差途中或是没有网络的环境中依然可以工作写代码。这意味着,一方面,以后再也不能以没有网络作为不工作的借口了。另...

2018-11-25 12:30:07 346

转载 高性能网络编程(一):单台服务器并发TCP连接数到底可以有多少?

引言 曾几何时我们还在寻求网络编程中C10K问题(有关C10K问题请见文章《The C10K problem(英文在线阅读、英文PDF版下载、中文译文)》)的解决方案,但是现在从硬件和操作系统支持来看单台服务器支持上万并发连接已经没有多少挑战性了。我们先假设单台服务器最多只能支持万级并发连接,其实对绝大多数应用来说已经远远足够了,但是对于一些拥有很大用户基数的互联网公司,往往面临的并发连接...

2018-11-24 09:47:35 1998

原创 计算机内存

引言计算机的内存是一块连续的存储空间,存储空间按编号划分为存储单元了,每一个单元都有独立的编号,每一个独立的编号分别存储一个字节(8bit)的数据。寄存器与内存的区别我们可以简单的认为:快速算盘叫做寄存器。慢速的称为内存。其实他们的结构差不多,都是定宽的,最重要的一点,寄存器速度非常快,价格非常昂贵,所以在 CPU 内部。做的数量也很有限。常用的只做了 8 个:EAX,ECX,...

2018-11-23 13:13:01 1344

原创 通用寄存器

引言要想真正的了解计算机,首先要了解的便是CPU,CPU是计算机的核心部件,因为计算机的所有指令都是由CPU处理的,而CPU的核心部件之一就是寄存器。所以了解寄存器和寄存器是如何工作的才能真正明白计算机的工作原理。8/16/32位通用寄存器计算机中最经典的指令就是移动指令,如:mov ecx,eax。这条指令的意思就是将eax寄存器的值移动到ecx寄存器中。在32位操作系统中包含...

2018-11-23 12:39:31 7402

原创 计算机的逻辑运算

引言上一节《十六进制与数据宽度》我们提到,计算是有宽度的。比如:一个二进制数:1111 1111 1111 1111 B我们用4位,4位书写形式FFFF这样比较简单。逻辑运算计算机除了算术运算外,还有逻辑运算,只有二进制才能进行逻辑运算。逻辑运算只有对与错,成与败两个结果(也就是0和1)。 或运算: 0+0=00+1=11+1=1(1+1=2不等于0,就是1...

2018-11-23 10:58:30 21351

原创 十六进制与数据宽度

引言通过前两篇的文章《进制的本质》和《进制运算》,相信大家对进制有了真正的理解。在自然界都只有二进制存在。就如《易经》一中当中提到的[道生一,一生二,二生四,四生八,八生万物].有二进制已经足够了,完全没有必要有其它的进制。其实,自然界也是按这个发展的。学过生物的都知道细胞的分裂。没有说细胞一次性分成三个细胞,4个细胞的吧?只有一个细胞一次分成两个细胞,两个细胞分成4个细胞,然后再分成...

2018-11-23 10:16:23 1951

原创 进制运算

引言上一节我们从《进制的本质》深刻的理解了什么是进制,本节我们着重介绍进制之间是如何进行运算的。相信,十进制是大家小学时就会的:0,1,2,3,4,5,6,7,8,9。那么九进制大家也应该都会:0,1,2,3,4,5,6,7,8。十进制可以加(+),减(-),乘(×),除(/),那么九进制照样可以加减乘除,直接算出结果,十一进制也可以。既然小于十进制都会,大于十进制都会,那就是说N...

2018-11-23 09:10:36 1334

原创 进制的本质

引言进制跟我们生活息息相关,比如:月份,时钟,星期等,那么计算机也离不开进制,计算机是通过二进制进行操作和运算的。为什么要学习进制理解了进制与现实世界的关系后,为了使我们真正的了解计算机和计算机的运行原理。我们必须忘掉呆板的十进制!说到进制,其实大家都会,只是生活中的运用把其它的进制都丢弃了,只留下了十进制。进制的本质是什么?在开始探讨进制的本质,我们先用我们日常生活当中最为熟...

2018-11-23 08:53:23 583

原创 Teach Yourself Programming in Ten Years

引言一大早看到一幅很搞笑的图集,“21天教你学会C++”。第一感觉我是觉得搞笑,第二是觉得类似于以这样的标题命名的书籍,我个人对此非常的讨厌,相信看过《一万小时天才理论》这本书的人都知道,技能这东西根本不可能速成,它需要我们反复的练习与思考。我在想,我学习C++也有10多年了,好像C++也没有学得特别的懂,看到STL和泛型,偶而还会觉得很头大。当然,有可能我是天资愚笨。当然,在这里需要特别提醒...

2018-11-23 05:39:43 267

原创 可视化的数据结构和算法

引言今天在网上又看到了一个旧金山大学David Galles做的各种可视化的数据结构和基本算法的主页,网址在这里,大家可以看看。我把这个页面的目录列在下面并翻译了一下,大家可以直接点击了。不知道国内的教育有没有相关的教学课件,至少在我大学的时候是没有的,我甚至觉得如果国内的大学如果以这样的课件进行教学,我相信国内的学生对数据结构与算法这门课程会觉得非常的有趣,不至于感到乏味。基础算法...

2018-11-23 05:06:02 379

原创 代码重构的一个示例

还记得以前和大家提到过的《各种流行的编程风格》吗?有一些人问我那些编程风格具体是什么样子的。下面是一个代码重构的实例,让我们看看那个流行的编程风格是实践是什么样的。下面的这个实践不是虚构,如有雷同,请对号入座。首先,我们有一个表达式如下所示:s = 7;很明显,这个表达式的变量名太没意义了,很不利于程序的可读性,所以,我们需要取一个有意义的变量名:slots = 7;很好,...

2018-11-22 21:00:30 255

原创 面向对象是个骗局?

引言今天在网上看到网页叫“Object Orientation Isa Hoax”——面向对象是一个骗局,标题很有煽动性(注:该网站上还有一个网页叫Object Orientation Is Dead),好吧,打开看看上面有些 什么,发现这个网页是在收集一些关于“面向对象的反动言论”,没想到的是,很多言论出自很多大师之口。比如:Alexander Stepanov和Bjarne Stroust...

2018-11-22 20:49:43 1533

原创 趣谈面向对象设计思想

引言从Rob Pike 的 Google+上的一个推看到了一篇叫《Understanding Object Oriented Programming》的文章,我先把这篇文章简述一下,然后再说说老牌黑客Rob Pike的评论。先看这篇教程是怎么来讲述OOP的。它先给了下面这个问题,这个问题需要输出一段关于操作系统的文字:假设Unix很不错,Windows很差。这个把下面这段代码描述成是H...

2018-11-22 20:44:46 302

原创 各种流行的编程风格

引言在过去的N年中,我遇到了很多使用囧然不同风格的开发者,下面是我所知道的一些,你还知道其它的吗?散弹枪编程这种编程风格是一种开发者使用非常随意的方式对待代码。“嗯,这个方法调用出错了……那么我会试着把传出的参数从 false 变成 true!”,当然依然出错,于是我们的程序员会这样:“好吧,那我就注释掉整个方法吧”,或是其它更为随意的处理方式,直到最后让这个调用成功。或是被旁边的某个...

2018-11-22 20:06:28 185

原创 Unix背后的软件设计模式

什么是模式在正式说明GoF的那23个经典的设计模式其实和OO关系不大并和Unix的设计思想很相似的这个观点之前,让我先来说说什么是模式?设计模式的英文是Design Pattern,模式是Pattern的汉译。所谓Pattern就是一种规则,或是一种模型,或是一种习惯。Pattern这个东西到处都是,并不只有技术圏子里才有。比如:文章有文章的Pattern。如新闻有新闻的Pattern(第...

2018-11-22 19:59:40 403

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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