自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 成为git大师你应该掌握的30个命令

引言Git 是世界上最流行的分布式版本控制系统。Linux 内核的创建者 Linus Torvalds 早在 2005 年就构建了这个工具,该工具目前是一个积极维护的开源项目。大量开源和商业项目依赖 Git 进行版本控制。在本文中,我将列出作为开发人员应该知道的最基本的命令,并成为处理 GitHub 存储库的大师。初学者和经验丰富的开发人员可以从本文中受益。1.设置您的用户名和电子邮件需要用户名才能将提交与您的姓名联系起来。它与您用于登录 GitHub 个人资料的 GitHub 帐户用户名不

2022-03-16 08:57:59 251

原创 如何编写干净的Java代码

在我工作的这些年中,经常有人问我是否阅读过罗伯特-马丁的《代码整洁》这本书。当时我不知道书的具体内容,但是后来却成为了每个开发人员的“必读”书籍。保持代码结构清晰在开始编码时,请思考清楚你自己的程序,如:类,方法(函数)、结构等。在使用包名来管理类时,尽量避免在一个包中添加大多的类,除非这些类与其包的含义相符合。考虑的越清楚编写代码就越容易,否则,在将来你不得不重构你的代码。慎重命名规范你可能会说命名这件事情很明显,而且每个人都知道,对类、方法和变量进行良好的命名非常的重要。是的

2020-05-19 20:56:39 255

原创 如何系统高效地学习数据结构和算法

引言当我们在谈论事件/概念的时候,需要常常问自己三个终极的问题:是什么?(What) 为什么?(Why) 如何做?(How)什么是数据结构和算法(What)?带上上述的几个问题,我们开始逐一的解答。数据结构:数据结构简单理解其实就是一组数据的存储结构。 算法:算法就是一组操作数据的方法。数据结构与算法之间的关系:数据结构是为算法服务的,算法要作用在特定的数据结构之上。...

2018-12-14 12:03:43 991 1

转载 全球分布式数据库:Google Spanner(论文翻译)

【摘要】Spanner 是谷歌公司研发的、可扩展的、多版本、全球分布式、同步复制数据库。它是第一个把数据分布在全球范围内的系统,并且支持外部一致性的分布式事务。本文描述了 Spanner 的架构、特性、不同设计决策的背后机理和一个新的时间 API,这个 API 可以暴露时钟的不确定性。这个 API 及其实现,对于支持外部一致性和许多强大特性而言,是非常重要的,这些强大特性包括:非阻塞的读、不采...

2018-12-12 22:49:50 461

原创 VIM编辑器练级攻略

引言我个人觉得学习任何一项技能最好的方式是把学习当作一种娱乐,比如:打游戏。这样会让你有意外的收获和保持学习的激情。任何时候我们都要保持这种激情,让它成为你的一种潜意识。玩过游戏的人都知道,游戏当中涉及到打怪升级,VIM也是一样,我们将整个学习VIM的过程分为几个阶段(练级),这样有助于你更有成就感。VIM编辑器从模式上分为:静态模式(只读模式/阅读模式)和动态模式(写模式/编辑模式)...

2018-12-08 09:01:46 293

原创 初探DNS域名系统

引言网络出现的早期使用IP地址通讯的,那时就几台主机通讯。但是随着接入网络主机的增多,这种数字串标识的地址非常不便于记忆,UNIX上就出现了建立一个叫做hosts的文件(Linux和Windowss继续保留了这个文件)。这个文件中记录着主机名称和IP地址的对应表。这样只要输入主机名称,系统就会去加载hosts文件并查找对应关系,找到了对应的IP,就可以访问这个IP的主机了。但是,后来主机太...

2018-12-07 02:20:17 173

原创 ASM 3.0 编程框架

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

2018-11-26 21:23:19 353

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

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

2018-11-26 21:03:55 745

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

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

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

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

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

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

原创 Git的正确姿势

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

2018-11-25 12:30:07 324

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

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

2018-11-24 09:47:35 1977

原创 计算机内存

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

2018-11-23 13:13:01 1311

原创 通用寄存器

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

2018-11-23 12:39:31 7281

原创 计算机的逻辑运算

引言上一节《十六进制与数据宽度》我们提到,计算是有宽度的。比如:一个二进制数: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 20819

原创 十六进制与数据宽度

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

2018-11-23 10:16:23 1889

原创 进制运算

引言上一节我们从《进制的本质》深刻的理解了什么是进制,本节我们着重介绍进制之间是如何进行运算的。相信,十进制是大家小学时就会的: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 1190

原创 进制的本质

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

2018-11-23 08:53:23 550

原创 Teach Yourself Programming in Ten Years

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

2018-11-23 05:39:43 249

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

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

2018-11-23 05:06:02 364

原创 代码重构的一个示例

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

2018-11-22 21:00:30 239

原创 面向对象是个骗局?

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

2018-11-22 20:49:43 1513

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

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

2018-11-22 20:44:46 287

原创 各种流行的编程风格

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

2018-11-22 20:06:28 170

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

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

2018-11-22 19:59:40 385

翻译 Eureka服务注册与发现组件介绍

什么是Eureka?Eureka is a REST (Representational State Transfer) based service that is primarily used in the AWS cloud for locating services for the purpose of load balancing and failover of middle-tier...

2018-10-30 11:06:10 704

原创 我们总能识别出团队中的坏苹果

引言2015年左右我曾负责过一个项目,这个项目必须在2〜3个月左右开发统一认证系统。很快我们从公司研发中心挑选了一些较为优秀的程序员组成了一个团队——我们的团队成员很快达成了一致意见和采用的技术栈,除了一个人,在这里叫他“wesin”。在整个技术评审阶段,wesin不停的鼓吹采用Ruby,即使所有的成员持反对的意见。然而,这并没有阻止wesin鼓吹Ruby——他的方式很粗暴,每当我们的项目...

2018-10-28 13:08:08 265

转载 How to Hire a Programmer

There's no magic bullet for hiring programmers. But I can share advice on a few techniques that I've seen work, that I've written about here and personally tried out over the years.1. First, pass a ...

2018-10-27 16:30:25 365

转载 Advice on Attracting Good Developers

introductionDuring the dot-com boom of the late 90’s, much ado was made about the many perks offered by companies used to attract developers: ping pong and pool tables, catered lunches, video game r...

2018-10-27 16:28:12 191

原创 SpringBoot+Zipkin(定制AsyncHttpClient)

引言由于原有业务服务中使用的是第三方的HttpClient组件调用业务服务接口,而SpringCloud-Sleuth本身没有对AsyncHttpClient提供类似于ClientRequestInterceptor和ClientResponseInterceptor,所以需要我们定制,而ServerRequestInterceptor和ServerResponseInterceptor是在B...

2018-10-26 13:56:11 891

原创 SpringCloud-Eureka配置详解

引言SpringCloud是一套完整的微服务治理框架,包含服务发现与注册,服务网关,熔断限流,负载均衡,链路追踪等组件。SpringCloud-Eureka提供了服务注册与发现,本文主要对组件的配置做一个全面的详解。术语及概念Eureka server:服务注册中心。并管理各服务的中心 Eureka instance:一个服务,如:订单系统,会部署多台服务器,而每台服务器上提供...

2018-10-26 13:29:12 2204 1

原创 如何做集成测试?

引言通常情况下,当我们为了完成某一项目具体业务功能时,需要多个组件之间协同完成。所以集成测试只对那些组件很多的较大系统才有意义,这些测试将组件装配成组,测试它们彼此之间是否能正常通信。正如组件(component)一词就像零件一样,将各个零件进行组装协同进行工作,然后观察它们之间的运行情况。常用工具使用合理的模拟对象和测试辅助,与系统的其它组件进行解耦。目的集成测试是编排性(c...

2018-10-20 04:47:58 7321

原创 如何做组件测试?

引言组件测试是验收测试的一种,通常情况下是针对系统的各个组件而编写的。系统组件封装了业务规则,因些,对这些组件的测试便是对其中业务规则的验收测试。目的组件测试围绕组件而编写的。它向组件中传入数据,然后收集输出数据。它会测试实际输出是否符合预期输出。在组件测试中,需要使用合适的模拟(mocking)或测试辅助(test doubling)技术,解开与系统的其它组件的耦合。常用工具...

2018-10-20 04:32:38 5800

原创 如何使用SpanReporter接口生成链路数据

引言Spring-Cloud-Sleuth作为微服务链路跟踪组件,默认的实现方式是RestTemplate的调用链路跟踪。原有项目中调用外部服务接口大多数采用的是使用了第三方的HttpClient库,如:Apache HttpClient或Asynchronous Http Client。为了保证不影响现有业务接口的稳定性和少量的代码修改达到链路跟踪目的,接下来本文会介绍改造的过程。...

2018-10-17 16:30:13 1098

原创 如何使用LoadBalancerClient接口调用外部业务服务接口?

引言Spring-Cloud-Ribbon作为微服务框架的负载均衡组件,默认使用RestTemplate接口调用外部服务接口。原有项目中调用外部服务接口大多数采用的是使用了第三方的HttpClient库,如:Apache HttpClient或Asynchronous Http Client。为了保证不影响现有业务接口的稳定性和无须修改原有业务接口代码,接下来本文会介绍如何改造。原...

2018-10-17 15:44:52 5576 2

转载 SpringCloud-Ribbon工作原理分析

由于历史原因,原有业务系统的大部分接口都是通过SpringBoot RESTFul暴露服务的且能过Nginx做网关。微服务架构近几年也非常的火,各个公司开始将业务服务在使用Ribbon进行服务消费的时候,我们用到了RestTemplate,但是熟悉Spring的人是否产生过这样的疑问:RestTemplate不是Spring自己就有的吗?跟Ribbon的客户端负载均衡又有什么关系呢?带着...

2018-09-28 17:05:11 12357 4

原创 Springboot中如何启用多个监听端口

@Configurationpublic class EmbeddedTomcatConfiguration { @Value("${server.additionalPorts}") private String additionalPorts; @Bean public EmbeddedServletContainerFactory servletCon...

2018-08-14 16:56:11 15292 1

原创 互联网背后的商业模式

谈到互联网产品的商业模式,gem 同学也认同这是很重要又极其困难的一点。吴军在《浪潮之巅》里面提到过一个观点,所有 Web 2.0 的公司都没有在真正意义上找到自己的商业模式,并最终将被能成功演变为 Web 2.0 的传统互联网 1.0 巨头所超过。不过,这里的“Web 2.0”所指的对象似乎比我们通常所说的要狭义。它更看重提供开放平台,并允许其他用户使用、交互,且完全依靠 UGC ,仅提供生态环...

2013-07-26 15:20:47 141

原创 java.lang.NoClassDefFoundError错误解决

1参考文献文献1:http://topic.csdn.net/u/20070812/16/b24350b6-3db4-4f7e-9861-1a113f53adff.html文献2:http://doc.linuxpk.com/4703.html2错误描述javac helloworld.java能够通过。但是java helloworld出现错误:[cpp] view pl...

2013-06-18 14:19:39 1500

原创 Ehcache开源解读

Ehcache 是现在最流行的纯Java开源缓存框架,配置简单、结构清晰、功能强大,最初知道它,是从Hibernate的缓存开始的。网上中文的EhCache材料以简单介绍和配置方法居多,如果你有这方面的问题,请自行google;对于API,官网上介绍已经非常清楚,请参见官网;但是很少见到特性说明和对实现原理的分析,因此在这篇文章里面,我会详细介绍和分析EhCache的特性,加上一些自己的理解和思...

2013-05-30 14:22:51 103

空空如也

空空如也

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

TA关注的人

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