自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 从MVC框架看MVC架构的设计

前言 尽管MVC早已不是什么新鲜话题了,但是从近些年一些优秀MVC框架的设计上,我们还是会发现MVC在架构设计上的一些新亮点。本文将对传统MVC架构中的一些弊病进行解读,了解一些优秀MVC框架是如何化解这些问题的,揭示其中所折射出的设计思想与设计理念。MVC回顾作为一种经典到不能再经典的架构模式,MVC的成功有其必然的道理,这个道理不同的人会有不同的解读,笔者最认同的一种观点是:通过把...

2018-08-29 15:51:05 212

原创 深入解析Spring架构与设计原理-AOP

关于AOP的个人理解 AOP联盟定义的AOP体系结构把与AOP相关的概念大致分为了由高到低、从使用到实现的三个层次。关于这个体系结构,个人的理解是这样的,从上往下,最高层是语言和开发环境,在这个环境中可以看到几个重要的概念:base可以视为待增强对象,或者说目标对象;aspect指切面,通常包含对于base的增强应用;configuration可以看成是一种编织或者说配置,通过在AOP体系中提供...

2018-08-27 17:26:36 211

原创 三条路线告诉你如何掌握Spring IoC容器的核心原理

一、前言前三篇已经从历史的角度和大家一起探讨了为什么会有Spring,Spring的两个核心概念:IoC和AOP的雏形,Spring的历史变迁和如今的生态帝国。本节的主要目的就是通过一个切入点带大家一起学习一下Spring IoC的核心原理,正如从历史的角度出发讲述为什么会有Spring一样,希望通过这个切入点能让你轻松的掌握住Spring IoC的核心原理。本篇文章假设你已经可以熟练的使...

2018-08-27 15:28:05 244

原创 Spring框架自学之路——简易入门

介绍Spring框架是个轻量级的Java EE框架。所谓轻量级,是指不依赖于容器就能运行的。Struts、Hibernate也是轻量级的。轻量级框架是相对于重量级框架而言的,重量级框架必须依赖特定的容器,例如EJB框架就必须运行在Glassfish、JBoss等支持EJB的容器中,而不能运行在Tomcat中。——《Java Web整合开发 王者归来》Spring以IoC、AOP为主要思...

2018-08-25 21:24:46 241

原创 设计模式深入学习---Prototype原型模式

今天我们继续来聊下Prototype原型模式。这篇应该是关于工厂设计模式的最后一篇。下次就往内部讲解结构类型的设计模式。首先我们说下Prototype原型模式的用法。Prototype原型模式主要是用来处理依赖关系的倒置。 比如抽象A类依赖了实现细节B, 拿我们上个帖子举例,比如我们的小车依赖于汽油发动机。 但是当我们的小车不使用汽油发动机,改用电动了,那这时候修改起来就比较痛苦了...

2018-08-24 19:50:37 352

原创 你真的会写单例模式吗?

单例模式可能是代码最少的模式了,但是少不一定意味着简单,想要用好、用对单例模式,还真得费一番脑筋。本文对Java中常见的单例模式写法做了一个总结,如有错漏之处,恳请读者指正。饿汉法顾名思义,饿汉法就是在第一次引用该类的时候就创建对象实例,而不管实际是否需要创建。代码如下:public class Singleton {     private static Singleton = ...

2018-08-23 20:00:17 191

原创 设计模式之简单工厂模式

Simple Factory Pattern:Returns different instances based on different parameters.简单工厂模式:  简单工厂模式又称为静态工厂方法模式,它是一种类创建型模式。在简单工厂模式中可以根据参数的不同返回不同类的实例。简单工厂模式专门定义了一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。简单工厂...

2018-08-23 16:47:08 233

原创 详解 Java 中的三种代理模式

代理模式代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法.举个例子来说明代理的作用:假设我们想邀请一位明星,那么并不是直接连接明星,而是联系明...

2018-08-23 16:13:33 214

转载 罗辑思维首席架构师:Go微服务改造实践

一、改造的背景得到最早的APP就是一个单体的PHP的应用,就是图中最大的黄色块,中间蓝色块代表不同模块。下面的黄色部分代表passport 和支付系统,这个是在做得到之前就存在的系统,因为公司早期有微信里的电商业务。后来发现有一些业务逻辑并不需要从得到走,还有一些数据格式转换的工作也不需要跟业务完全耦合,所以加了一层PHP的网关就是下图看到的V3那部分。但是这样做也有一些问题,PHP后...

2018-08-23 15:36:19 290

原创 程序员必须知道的字符集与字符编码详解

在软件的编码和实现中,我们可能会碰到个 一个比较头疼的问题--编码,不同字符间的编码和解码,你确定了解各种字符的编码吗?一个朋友问到了我这 个问题,我虽然能回答一两个出来,但是感觉已经有点模糊,混乱了,在网上搜了搜,在书上翻了翻,总结一下吧。首先按照字符编码的历程来看:1.  ASCII我们需要了解的最早编码是ASCII码。它用7个二进制位来表示,由于那个时期生产的大多数计算机使用8位大小...

2018-08-21 19:30:57 532

原创 自学java和上java培训班分别看什么书?

最近有许多的同学们准备或已开始学习java,然而不少人对于学习java看什么书很是困惑。事实却是如此,在北京图书大厦和中关村图书大厦销售的Java教程有几百本,如何选择?经过我们对许多初中高级java程序员的访问和调查,得出了最受java学习者欢迎的图书。这些图书要么是国外经典,要么是国内畅销,这些书是经过大量师兄师姐们学习并传诵的,是带着口碑传播的精品。它们都具备统一的特性“精辟”“易懂”“...

2018-08-21 17:47:45 1808

原创 Mysql分库分表方案

Mysql分库分表方案 1.为什么要分表:当一张表的数据达到几千万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了。分表的目的就在于此,减小数据库的负担,缩短查询时间。mysql中有一种机制是表锁定和行锁定,是为了保证数据的完整性。表锁定表示你们都不能对这张表进行操作,必须等我对表操作完才行。行锁定也一样,别的sql必须等我对这条数据操作完了,才能对这条数...

2018-08-21 17:31:59 177

原创 程序媛眼中的程序猿原来是这样子的!

一直都想写一篇关于描述程序员的文章,但是一直没能开头,一来因为文笔不好,更主要的原因是貌似对程序员既熟悉又不熟悉,很怕写出来的是以偏概全,给大家造成对程序员的既定印象,不过,管他呢,写了再说,我就主要写写我眼中的程序员,我想应该算是一篇洗刷大家对程序员既定印象的文章吧~一、没大家刻板印象中的那样呆板网络上有太多段子和图文说程序员呆板、没激情、不浪漫……,虽说大多都是程序员自黑,但是却给非I...

2018-08-20 19:58:38 1334

原创 谈一谈我所了解的HTTPS

前言这篇文章我想写很久了,本来想等应用用上https之后再进行阐述。但是时不我待,感觉我们的项目在需求的压力下,暂时没有人、精力来完善这一块。但是我并不想我之前的研究白费,所以我就在这里写下,我所了解的https。http协议首先我并不会很深入的去探讨这个东西,即使我曾经花了很长的时间去研究这个东西。主要是我考虑到1、 自己没有系统的去学习这一块的知识,讲解的会比较的肤浅。...

2018-08-20 17:53:59 227

原创 深入理解OkHttp源码及设计思想

前言用OkHttp很久了,也看了很多人写的源码分析,在这里结合自己的感悟,记录一下对OkHttp源码理解的几点心得。整体结构网络请求框架虽然都要做请求任务的封装和管理,但是最大的难点在于网络请求任务的多样性,因为网络层情况复杂,不仅要考虑功能性的建立Socket连接、文件流传输、TLS安全、多平台等,还要考虑性能上的Cache复用、Cache过期、连接池复用等,这些功能如果交错在一起,...

2018-08-20 17:31:40 295

原创 TreeMap源码分析,看了都说好

一、简介TreeMap最早出现在JDK 1.2中,是 Java 集合框架中比较重要一个的实现。TreeMap 底层基于红黑树实现,可保证在log(n)时间复杂度内完成 containsKey、get、put 和 remove 操作,效率很高。另一方面,由于 TreeMap 基于红黑树实现,这为 TreeMap 保持键的有序性打下了基础。总的来说,TreeMap 的核心是红黑树,其很多方法也是对...

2018-08-20 16:44:49 245

原创 怎样回答技术面试题?

阅读目录1. 听清题,勿抢答2. 从全局到具体3. 不要骄傲自负,也不妄自菲薄4. 简历切勿太夸张,更不要全是产品描述5. 广度与深度6. 积极主动7. 有证明更佳最近一段时间团队也在招人,这期间筛选了不少简历,面试了一些候选人。这里谈谈我自己的对「怎样回答面试题」的理解。欢迎各位各位老司机,新司机一起留言交流,我们一起探讨下,无论做为「面试官」,或者是「求职者...

2018-08-20 16:22:20 367

转载 想要成为大牛应该做到以下几点

1 前言王镜鑫是山东大学软工专业大三学生,学校ING工作室后台组组长,工作党,参加了18年实习生春招,在三周的时间内"收割"了三家大厂的Offer:美团、百度和阿里巴巴, 最后选择了心仪的阿里。联想到近期我接触到的几位优秀年轻人,我觉得他们都有一个共同的特质:确定目标,并且全力以赴地朝目标前行。说起来简单,做起来真不容易。人和人之间的差距也许就是这么形成的吧!友情提示: 文章长达万字,...

2018-08-19 16:00:10 389

原创 为什么程序员千万不要重写代码?

你所做的事情,也许暂时看不到成果,但不要灰心或焦虑,你不是没有成长,而是在扎根。图片来自网络0 前言程序员都有一颗工程师的心,所以当他们到一片新的场地想做的第一件事就是,将旧的一切推倒重来。是的,他们决不会满足于简单的增量劳动。或许这种微妙的心理定位可以解释:为什么程序员进入新项目组后宁愿丢掉旧代码重新写,也不愿意修修补补,他们认为旧代码简直一团糟。但是,事实上真是这样吗?...

2018-08-19 14:59:11 1792 1

原创 浅谈微服务基建的逻辑

 前言这篇文章主要目的是面向初接触微服务的朋友简单介绍微服务基础建设所需要的各个模块以及缘由。起点首先,我们得有一个“服务”。根据定义,我们可以把每个服务实例都视作一个黑盒。这个盒子有着明确的输入点和输出点,并且(理想情况下)仅通过这些输入和输出点和外界产生关联。每个服务实例会拥有专属的网络地址、独立的计算资源,并且独立部署。客户端通过访问服务实例的地址来调用服务 API。不同服务也可...

2018-08-17 22:28:06 182

原创 Spring Cloud Gateway真的有那么差吗?

前言Spring Cloud从一开始最受大家质疑的就是网关性能,那是由于Spring Cloud最初选择了使用Netflix几年前开源的Zuul作为基础,而高性能版的Zuul 2在经过了多次跳票之后,对于Spring这样的整合专家可能也不愿意再继续等待,Spring Cloud Gateway应运而生,那么这个由Spring社区自己开发推出的网关又如何呢?最近一篇《实测 | 转型微服务,这4大...

2018-08-17 22:03:03 2782

原创 怎样回答技术面试题?

一、听清题,勿抢答面试,首先也是一个人与人交流沟通的过程。有些时候,面试官还没说完问题,面试者就会打断说「这个问题我知道...」。打断不利于沟通,同时,这样其实导致面试题没听清。比如面试题是「如何理解Java 的 JMM,...」后面还没说的时候,面试者打断说「你说的这个我会。。。,包括方法区,堆,栈 balabala」这就答的都跑偏了。二、从全局、到具体如果问题是「 Spring 是...

2018-08-17 20:48:54 182

原创 浅谈微服务基建的逻辑

这篇文章主要目的是面向初接触微服务的朋友简单介绍微服务基础建设所需要的各个模块以及缘由。起点首先,我们得有一个“服务”。根据定义,我们可以把每个服务实例都视作一个黑盒。这个盒子有着明确的输入点和输出点,并且(理想情况下)仅通过这些输入和输出点和外界产生关联。每个服务实例会拥有专属的网络地址、独立的计算资源,并且独立部署。客户端通过访问服务实例的地址来调用服务 API。不同服务也可以相互调用...

2018-08-15 22:28:17 166

原创 自学编程需要注意什么?

前几天在知乎上看到这么一个问题,一位在读学生,自己非常想自学编程,但是很怕走一些弯路,于是提问「自学编程需要注意什么?」,我看了一圈回答,看起来都不是自学过来的,很多回答抓不到重点。我的读者都知道,我是非科班 0 基础自学过来的,我很清楚一个人自学编程有哪些误区,有哪些需要注意的地方,以及哪些可以提升效率的地方。所以,我从我的自学经历给一些自学编程的后来者总结了一些建议,希望给正在自学编程或者...

2018-08-15 17:08:00 525

原创 跳槽时,这些Java面试题99%会被问到

我在 Oracle 已经工作了近 7 年,面试过从初级到非常资深的Java工程师,且由于 Java 组工作任务的特点,我非常注重面试者的计算机科学基础和编程语言的理解深度,可以不要求面试者非要精通 Java。所以,如果你对 C/C++ 等其他语言能够掌握得非常系统和深入,也是符合需求的。工作多年以及在面试中,我经常能体会到,有些面试者确实是认真努力工作,但坦白说表现出的能力水平却不足以通过面试...

2018-08-15 15:13:56 165

原创 浅谈微服务基建的逻辑

起点首先,我们得有一个“服务”。根据定义,我们可以把每个服务实例都视作一个黑盒。这个盒子有着明确的输入点和输出点,并且(理想情况下)仅通过这些输入和输出点和外界产生关联。每个服务实例会拥有专属的网络地址、独立的计算资源,并且独立部署。客户端通过访问服务实例的地址来调用服务 API。不同服务也可以相互调用。配置管理器:统一管理配置在微服务体系中,每个服务都独立部署和运行,团队可以根据...

2018-08-14 21:54:44 170

原创 SpringBoot中使用ShardingJdbc切分数据库表

本文主要将业界知名的开源分库分表中间件—ShardingJdbc集成至SpringBoot工程中,利用ShardingJdbc的数据库切分能力来实现库表水平切分和扩展的目标,提高分布式系统整体的并发量,解决数据库中的单表因数据量过大而带来得各种瓶颈和影响(本文所述的ShardingJdbc中间件以其1.X版本为参考,2.X版本和1.X版本有较大区别,在后面的文章中会有介绍)。分库分表中间件Sh...

2018-08-14 21:27:52 657

原创 Netty-在-Dubbo-中如何应用

前言众所周知,国内知名框架 Dubbo 底层使用的是 Netty 作为网络通信,那么内部到底是如何使用的呢?今天我们就来一探究竟。1. dubbo 的 Consumer 消费者如何使用 Netty注意:此次代码使用了从 github 上 clone 的 dubbo 源码中的 dubbo-demo 例子。代码如下:System.setProperty("java.net.pref...

2018-08-14 20:42:06 294

原创 哪些技术好书值得一读再读?阿里大牛列了一份经典书单

推荐书籍:《Effective Software Testing》 推荐者:霜波(资深测试开发专家)推荐理由:和其他传统软件测试书籍相比较,对自动化和持续集成的方案研究比较深入,能直面自动化和持续基础现阶段的一些问题,将软件测试的周期提前到需求,设计和开发的阶段,估计产品和开发一起加入测试的工作。同时对于质量的管理有一些自己的见解和实践经验,推荐给所有技术同学一起共享。天猫双1...

2018-08-14 16:07:50 354

原创 理解大型分布式网站你应该知道这些概念

1. I/O优化增加缓存,减少磁盘的访问次数。优化磁盘的管理系统,设计最优的磁盘方式策略,以及磁盘的寻址策略,这是在底层操作系统层面考虑的。设计合理的磁盘存储数据块,以及访问这些数据库的策略,这是在应用层面考虑的。例如,我们可以给存放的数据设计索引,通过寻址索引来加快和减少磁盘的访问量,还可以采用异步和非阻塞的方式加快磁盘的访问速度。应用合理的RAID策略提升磁盘I/O。2. ...

2018-08-14 15:27:46 157

原创 再有人问你Java内存模型是什么,就把这篇文章发给他。

  网上有很多关于Java内存模型的文章,在《深入理解Java虚拟机》和《Java并发编程的艺术》等书中也都有关于这个知识点的介绍。但是,很多人读完之后还是搞不清楚,甚至有的人说自己更懵了。本文,就来整体的介绍一下Java内存模型,目的很简单,让你读完本文以后,就知道到底Java内存模型是什么,为什么要有Java内存模型,Java内存模型解决了什么问题等。本文中,有很多定义和说法,都是笔者自己...

2018-08-13 22:08:37 195

原创 网站开发人员应该知道的62件事

有人在Stack Overflow上发问,动手开发网站之前,需要知道哪些事情?不出意料地,他得到了一大堆回答。通常情况下,你需要把所有人的发言从头到尾读一遍。但是,Stack Overflow有一个很贴心的设计,它允许在问题下方开设一个wiki区,让所有人共同编辑一个最佳答案。于是,就有了下面这篇文章,一共总结出六个方面共计61条"网站开发须知"。我发现,这种概述性的问题,最适合这种集...

2018-08-13 21:39:14 195

原创 如何快速开发一个 Dubbo 应用

背景本文将以 Dubbo 为例,介绍如何快速开发一个 Dubbo 应用。为了便于读者理解:首先会介绍一下传统的 RMI 的基本概念然后比较下现代的 RPC 框架与 RMI 的区别再基于 Dubbo 提供的 API 展示最基本的 Dubbo 应用如何开发最后介绍如何通过 start.dubbo.io 快速搭建 Dubbo 的脚手架工程Java RMI 简介 Java ...

2018-08-13 21:00:20 180

原创 成为阿里P9专家,只因做到以下几点

为何要持续学习,靠经验积累不行吗?很多人都说程序员的薪资水平不错,可以媲美医生和律师。而程序员和医生、律师的不同点在于持续学习上。不是说医生和律师不需要学习,医生、律师能够凭之前的case积累非常多的经验(这也是大家看病喜欢找年纪大的医生的原因之一),而且这些经验很大程度上可以被复用(很多病因和判罚案例带有相似性)。程序员这个职业则不同,主要是因为行业更新得太快,积累的经验很快就不适用了。...

2018-08-13 20:45:23 3964 4

原创 再有人问你volatile是什么,就把这篇文章发给他

  Java语言为了解决并发编程中存在的原子性、可见性和有序性问题,提供了一系列和并发处理相关的关键字,比如synchronized、volatile、final、concurren包等。在前一篇文章中,我们也介绍了synchronized的用法及原理。本文,来分析一下另外一个关键字——volatile。本文就围绕volatile展开,主要介绍volatile的用法、volatile的原理,以...

2018-08-13 17:42:32 417

原创 一篇文章带你学习分布式事务

一. 事务1.1 什么是事务数据库事务(简称:事务,Transaction)是指数据库执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。事务拥有以下四个特性,习惯上被称为ACID特性:原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。一致性(Consistency):事务应确保数据库的状态从一个一致状态转变为另...

2018-08-11 22:03:53 179

原创 Java中的多线程你只要看这一篇就够了

如果对什么是线程、什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内。用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现。说这个话其实只有一半对,因为反应“多角色”的程序代码,最起码每个角色要给他一个线程吧,否则连实际场景都无法模拟,当然也没法说能用单线程来实现:比如最常见的“生产者,消费者模型”。很多人都对其中的一些概念不...

2018-08-11 20:30:03 95

原创 我对分布式多中心架构的几点看法

每天都在谈SOA和微服务,但你真的理解什么是服务吗?服务的技术架构之争服务应该去版本化,不管是微服务还是SOA任何架构的调整只是拆了东墙补西墙,无法解决效率问题先厘清服务治理与组织架构的关系,再来谈微服务吧由于我们一直从事的是传统企业的架构改造工作,所以对新兴的互联网企业如何实施微服务架构并没有实践过。在写这一章之前,我在架构群里和曾经实施过微服务架构的互联网企业的架构师进行了...

2018-08-11 17:16:55 514

原创 深入浅出泛型,框架设计的基础

泛型在 Java 5 出现,实现了参数化类型,主要作用是使得类或接口更加通用。比如 Java 中的容器类,通过泛型实现了对各种类型的兼容,成为极其通用的类库。如果我们要设计自己的框架,泛型基本上已经算是标配了。类使用泛型在类型上使用泛型,非常简单,只需要使用 <> 声明类型即可。如下 TestDO 类型声明了泛型 T,并使用 T 声明了字段 value。这样做的好处便是,Tes...

2018-08-10 21:29:36 254

原创 初识分布式服务管理框架-Dubbo

    Dubbo是阿里下面的一个开源分布式服务管理框架。它的产生是因为分布式的产生而产生的。下面将几点分享一下我对Dubbo的初步认识。通过dubbo的官方文档可以了解一下怎么使用以及基本的设计思想。http://alibaba.github.io/dubbo-doc-static/User+Guide-zh.htm下面分享一下我对Dubbo的理解,可能其中存在误导,还望指正。一、Dubbo...

2018-08-10 20:38:57 191

空空如也

空空如也

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

TA关注的人

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