自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Ricky

Stay hungry, Stay foolish.

  • 博客(511)
  • 资源 (46)
  • 收藏
  • 关注

转载 程序员该有的艺术气质—SOLID原则

昨天Amazon在我们学校有场讲座,主要是跟我们分享一些经验:作为一个程序员该有的编码硬技术和工作软技术。当然他们也有来我们学校招聘人才的目的,想要吸引我们去他们公司,于我而言,这么牛逼的一个公司我当然特别想去啦,这场讲座我是必听无疑,的确学到了一些知识。没有过实际项目的在校生往往不能写出漂亮的代码(包括编码规范、注释、设计模式、性能等等),因为他们更多注重的正确性,只要结果出来了且是正确的,那么

2014-10-14 13:22:34 1881

原创 RocketMQ报No route info of this topic

最近某天突然收到报警邮件,线上某个应用发送MQ消息报错,完整异常栈如下:2018-04-08 18:17:44.126 | DubboServerHandler-10.141.6.116:20968-thread-172 | ERROR | com.xxx.node.application.mq.MqMessageProcessor | 发送MQ消息keys: 26 异常 com.aliba...

2018-04-10 14:27:47 6948

原创 Spring Boot教程 - Spring Boot Profiles实现多环境下配置切换

在后端开发中,应用程序在不同的环境可能会有不同的配置,例如数据库连接、日志级别等,开发,测试,生产每个环境可能配置都不一致。使用Spring Boot的Profile可以实现多场景下的配置切换,方便开发中进行测试和部署生产环境。 下面就大致介绍一下yml配置文件跟properties配置文件怎么使用profile配置不同环境的配置文件。开发环境JDK 1.8Maven 3.xSpring Bo

2017-11-18 17:34:29 46135 11

原创 Spring Boot教程 - Spring Boot集成Mybatis(注解配置)

上一篇文章:介绍了 Spring Boot集成Mybatis 基于XML方式的配置,本文将重点介绍 注解方式配置Mybatis 。开发环境JDK 1.8Maven 3.3Spring Boot 1.5.8.RELEASEMybatis 3.4.4配置首先引入spring-boot-starter-parent: <!-- Inherit defaults from Spring Bo

2017-11-18 16:45:27 4451

原创 Spring Boot教程 - Spring Boot集成Mybatis(XML方式)

项目开发中不可避免需要跟数据库打交道,作者开发的项目的中广泛使用Mybatis作为ORM框架。 本文主要讲解在Spring Boot项目中 如何整合Mybatis。开发环境JDK 1.8Spring Boot 1.5.8.RELEASEMybatis 3.4.4

2017-11-18 16:06:58 6167

原创 图片添加水印(Java 实现)

某些应用场景下需要对图片加上水印防止盗用,例如微博用户图片。Java中实现添加水印需要用到BufferedImage、Graphics2D 和ImageIO类。1. 添加文字水印import java.awt.AlphaComposite;import java.awt.Color;import java.awt.Font;import java.awt.Graphics2D;import

2017-05-12 19:31:41 9972 3

原创 Spring事务系列 - Spring 事务管理

一、Spring 的编程式事务管理1. 基于底层 API 的编程式事务管理根据PlatformTransactionManager、TransactionDefinition 和 TransactionStatus 三个核心接口,我们完全可以通过编程的方式来进行事务管理。代码如下:@Servicepublic class BankServiceImpl implements BankService

2017-05-12 18:20:51 2433

原创 Spring MVC HandlerInterceptor 实现原理(源码)

上一篇文章中介绍了 Spring MVC HandlerInterceptor的使用和应用场景,本篇中我们将结合Spring MVC 源码来研究一下其内部实现。本文分析使用Spring Framework源码 为 Spring Framework 4.3.4.RELEASE 。首先,我们看一下 org.springframework.web.servlet.DispatcherServlet do

2017-04-06 00:33:41 5723

原创 Spring MVC 拦截器(HandlerInterceptor)使用

最近需要画UML图,从网上找了几个工具软件,比较之后发现StarUML 2 很不错,支持UML 2.0。 StarUML 2 is compatible with UML 2.x standard and supports totally 11 kinds of UML diagrams: Class, Object, Use Case, Component, Deployment, Compo

2017-02-28 16:39:52 5531

原创 MySQL 乐观锁与悲观锁

MySQL 乐观锁与悲观锁

2017-02-24 15:36:51 4509 1

原创 MyBatis源码剖析 - MyBatis 插件之拦截器(Interceptor)实现原理

在上一篇文章:MyBatis 教程 - MyBatis插件(Plugins)开发 中已经介绍了如何去开发一个MyBatis 插件,本文将结合MyBatis 源码来揭秘MyBatis Plugins内部实现原理。Mybatis3 插件采用责任链模式,通过动态代理组织多个拦截器(插件),通过这些拦截器可以改变Mybatis的默认行为(诸如SQL重写之类的)。本文分析使用的MyBatis 源代码版本为3.

2017-02-18 12:18:49 23760 1

原创 MyBatis 教程 - MyBatis插件(Plugins)开发

MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis 允许使用插件来拦截的方法调用包括:Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)ParameterHandler (getParameterObject, setP

2017-02-17 20:13:22 32066 6

原创 使用SnakeYAML读取yaml配置文件

很多应用都开始使用YAML作为程序配置文件,关于YAML详细介绍可以参考YAML 1.2 (3rd Edition),本文使用SnakeYAML。示例sample.ymlversion: 1.0released: 2017-02-14# Connection parametersconnection: driverClass: com.mysql.jdbc.Driver url:

2017-02-14 16:23:08 16576

原创 maven javadoc plugin build fails with Java 8 when Javadoc tags are incomplete

本地开发环境JDK版本是1.7,生成Javadoc没有问题,在测试环境使用Jenkins自动构建时报错(测试服务器JDK版本是1.8),log如下:/home/andreas/workspaces/cdm/cdm-vaadin/src/main/java/eu/etaxonomy/cdm/vaadin/ui/ConceptRelationshipUIRedirect.java:28: error:

2017-01-20 18:09:28 5807

原创 从零开始实现RPC框架 - RPC原理及实现

RPC概述RPC(Remote Procedure Call)即远程过程调用,允许一台计算机调用另一台计算机上的程序得到结果,而代码中不需要做额外的编程,就像在本地调用一样。现在互联网应用的量级越来越大,单台计算机的能力有限,需要借助可扩展的计算机集群来完成,分布式的应用可以借助RPC来完成机器之间的调用。RPC框架原理在RPC框架中主要有三个角色:Provider、Consumer和Registr

2017-01-19 14:30:07 42552 9

原创 Spring Boot学习笔记 - 整合Swagger2自动生成RESTful API文档

在App后端开发中经常需要对移动客户端(Android、iOS)提供RESTful API接口,在后期版本快速迭代的过程中,修改接口实现的时候都必须同步修改接口文档,而文档与代码又处于两个不同的媒介,除非有严格的管理机制,不然很容易导致代码与接口文档不一致现象。本文将介绍RESTful API的重磅好伙伴Swagger2,它可以轻松的整合到Spring生态链中,并与Spring MVC程序配合组织出

2017-01-04 19:28:17 17395

原创 Java注解处理器 - 五分钟快速入门

基本概念Java 注解(Annotation)分为两类:编译时(Compile time)处理的注解和在运行时(Runtime)通过反射机制运行处理的注解。本文将重点介绍在编译时(Compile time)处理的注解,关于在运行时(Runtime)通过反射机制运行处理的注解,比较简单这里不做介绍大家可以自行找资料学习。注解处理器(Annotation Processor)是javac的一个工具,它用

2017-01-01 21:13:38 4912

原创 Spring 动态数据源和AOP实现数据库读写分离

互联网架构演进中 数据库优化是不可或缺的一环,数据库层面优化分为两个阶段:读写分离、分库分表。今天要说的是 数据库读写分离技术,其原理就是一个Master数据库,多个Slave数据库。Master库负责数据更新和实时数据查询,Slave库当然负责非实时数据查询。因为在实际的应用中,数据库都是读多写少(读取数据的频率高,更新数据的频率相对较少),而读取数据通常耗时比较长,占用数据库服务器的CPU较多,

2016-12-30 19:17:42 5015

原创 RESTful API接口设计

RESTful API接口设计URL设计URL(Uniform / Universal Resource Locator)既统一资源定位符。数据交换格式可选:XML、JSON,Protobuf XML、JSON大家应该都很熟悉了,这里介绍一下Protobuf。 Protocol buffers are Google’s language-neutral, platform-neutral,

2016-12-29 15:10:56 6800

原创 常见的负载均衡算法及其代码实现

什么是负载均衡负载均衡,英文名称为Load Balance,指由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。通过某种负载分担技术,将外部发送来的请求均匀分配到对称结构中的某一台服务器上,而接收到请求的服务器独立地回应客户的请求。负载均衡能够平均分配客户请求到服务器阵列,借此提供快速获取重要数据,解决大量并发访问服务问题,这种集群

2016-12-29 10:35:56 6347

原创 Spring教程-Spring Bean的生命周期

Spring Bean的生命周期

2016-12-18 10:17:48 1619

原创 Spring 事务系列 - 编程式事务

Spring 事务管理

2016-12-17 22:08:02 1055

原创 Maven Ban Circular Dependencies

Maven 禁止循环依赖配置如下:<project> [...] <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <version>1.4

2016-12-16 11:28:19 920

原创 单例模式的几种实现方式总结

单例模式可能是设计模式中最容易理解,应用最广泛的模式。单例模式虽然简单,但其中的坑却不少,尤其是线程安全方面的问题。本文主要对单例的各种写法做个小结,并分析其优缺点。模式定义 保证一个类仅有一个实例,并提供一个访问它的全局访问点。在Java中,单例模式的实现分两种,一种称为懒汉式,一种称为饿汉式,其实就是在具体创建对象实例的处理上,有不同的实现方式。代码实现1、懒汉式实现当被问到要实现一个单例

2016-12-13 23:24:44 2036

原创 Maven打包生成源码包和Javadoc包

开发中我们经常需要将项目<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version

2016-12-12 19:35:46 22821 2

原创 Java扫描classpath指定包路径下所有class

在写框架时,经常需要扫描classpath指定包路径下带有 代码如下:import java.io.File;import java.io.IOException;import java.net.JarURLConnection;import java.net.URL;import java.net.URLDecoder;import java.util.*;import java.

2016-12-11 18:24:10 9535 3

原创 Curator教程(三)服务注册&发现(Service Discovery)

服务发现随着微服务的日趋火爆,系统拆分之后,各个服务模块的Provider和Consumer之间需要能够查找到对方,我们称之为服务发现。 In SOA/distributed systems, services need to find each other. i.e. a web service might need to find a caching service, etc. DNS ca

2016-12-10 16:10:54 12366 1

原创 Curator教程(二)Path Cache监听ZNode

在实际应用开发中,当某个ZNode发生变化后我们需要得到通知并做一些后续处理,Curator Recipes提供了Path Cache 来帮助我们轻松实现watch ZNode。Path CachePath Cache可以监控ZNode子结点的变化,例如:add,update,delete。 A Path Cache is used to watch a ZNode. Whenever a ch

2016-12-09 11:59:57 2296

原创 Curator教程(一)快速入门

Curator是Netflix公司开源的一个Zookeeper客户端,与Zookeeper提供的原生客户端相比,Curator的抽象层次更高,简化了Zookeeper客户端编程。它包含以下几个组件: Component description Recipes Implementations of some of the common ZooKeeper “recipes”. The i

2016-12-09 11:57:20 10756

原创 Maven Require Release Dependencies

项目上线之前必须排除所有SNAP-SHOT版本的依赖 并全部升级为RELEASE版本,手工一个一个去排效率太低,Maven提供了maven-enforcer-plugin插件来做这件事情。Require Release DependenciesThis rule checks the dependencies and fails if any snapshots are found.The foll

2016-12-01 13:31:49 1478

原创 Spring 可扩展XML配置机制实践

用过dubbo的同学应该很熟悉下面的配置:<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"

2016-11-22 18:50:08 3382 1

原创 Dubbo实战(四)服务启动依赖检查配置

启动检查Dubbo缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止Spring初始化完成,以便上线时,能及早发现问题,默认check=true。 如果你的Spring容器是懒加载的,或者通过API编程延迟引用服务,请关闭check,否则服务临时不可用时,会抛出异常,拿到null引用,如果check=false,总是会返回引用,当服务恢复时,能自动连上。关闭检查可以通过check

2016-11-22 17:52:10 2799

原创 java 优雅停机实现

某些应用场景下,我们设计服务的时候要考虑到应用停止/被停止 时做一些善后操作,比如:关闭线程、释放连接资源等。 Java语言中,我们可以通过Runtime.getRuntime().addShutdownHook()方法来注册钩子,以保证程序平滑退出,如下:Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {

2016-11-22 13:57:33 4875

原创 Servlet 3.1规范-异步处理

Servlet 3.x 新特性概述Servlet 3.1 作为 Java EE 7 规范体系中一员,随着 Java EE 7 规范一起发布。Servlet 3.x 在Servlet 2.5的基础上提供了若干新特性用于简化 Web 应用的开发和部署。主要新特性如下:异步处理支持:有了该特性,Servlet 线程不再需要一直阻塞,直到业务处理完毕才能再输出响应,最后才结束该 Servlet线程。在接收

2016-11-20 21:35:12 2257

原创 高并发后端设计-限流篇

系统在设计之初就会有一个预估容量,长时间超过系统能承受的TPS/QPS阈值,系统可能会被压垮,最终导致整个服务不够用。为了避免这种情况,我们就需要对接口请求进行限流。限流的目的是通过对并发访问请求进行限速或者一个时间窗口内的的请求数量进行限速来保护系统,一旦达到限制速率则可以拒绝服务、排队或等待。常见的限流模式有控制并发和控制速率,一个是限制并发的数量,一个是限制并发访问的速率。控制并发数量属于一种

2016-11-20 17:22:03 12837 3

原创 StringBuilder高性能用法总结

StringBuilder高性能用法总结

2016-11-09 12:01:04 10942

原创 Spring Boot学习笔记-入门篇

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。Boot对Spring应用的开发进行了简化,提供了模块化方式导入依赖的能力,

2016-11-04 21:21:25 1071

原创 分布式系统中生成全局唯一ID方案

本文主要介绍在一个分布式系统中, 如何去生成全局唯一的 ID

2016-11-02 17:36:34 1818

原创 SpringMVC文件打包下载

最近做了一个ABTest的应用,用户希望对ABTest的结果能够打包批量进行下载,这个时候就需要先对下载的多个文件进行压缩打包,再进行下载。@RequestMapping("/download")public Object export(HttpServletRequest request, HttpServletResponse response, @RequestParam String ba

2016-11-02 16:56:35 2512

原创 logback教程

Logbacklogback是一个开源的日志组件,是log4j的作者开发的用来替代log4j的。 logback由三个部分组成,logback-core, logback-classic, logback-access。其中logback-core是其他两个模块的基础。logback中三个重要概念: Logger,Appender,LayoutLogger: 日志记录器,把它关联到应用对应的con

2016-11-01 17:13:54 7747

android navigation drawer

android navigation drawer

2013-12-12

android action mode

android action mode 示例

2013-12-05

FragmentTabHost 实现新浪微博Tab效果

FragmentTabHost + Fragment 实现新浪微博Tab效果

2013-11-25

Android Fragment切换动画

Android Fragment切换动画

2013-11-25

Android-Universal-Image-Loader示例

Android UniversalImageLoader 异步加载图片

2013-11-08

android DownloadManager

android DownloadManager 支持断点续传功能

2013-10-18

android contentprovider

android contentprovider

2013-10-17

仿美丽说底部TAB实现

仿美丽说底部TAB实现

2013-10-15

仿新浪微博TAB布局

完美仿新浪微博TAB布局

2013-10-11

android viewpager

android viewpager 实现循环滚动切换效果

2013-10-10

ListView 图片异步加载

ListView 图片异步加载,使用LRCCache、DiskLRUCache

2013-09-24

android 仿新浪、腾讯弹框效果

android popupwindow 仿新浪、腾讯title弹框效果

2013-09-18

android 自定义View — 自定义组合控件

android 自定义View — 自定义组合控件

2013-08-26

android 自定义View并添加属性

android 自定义View并添加属性

2013-08-26

android 底部弹出菜单(带透明背景)

android 底部弹出菜单(带透明背景)

2013-08-24

android 多线程下载、断点续传

android 多线程下载、断点续传 实现,还有Notification 进度条 提示

2013-08-23

Android之联系人PinnedHeaderListView使用

Android之联系人PinnedHeaderListView使用

2013-08-22

仿IOS风格对话框

android 仿IOS风格对话框,效果非常不错,你可能用得上哦

2013-08-05

textview 展开收起效果

textview 展开收起效果,点击更多可以查看更多内容,点击收起只显示4行内容

2013-07-25

listview +checkbox 实现多选操作

listview +checkbox 实现单选、多选操作

2013-07-19

阿里巴巴Java开发手册

阿里巴巴Java开发手册 1.2.0,阿里巴巴Java开发手册 1.2.0,阿里巴巴Java开发手册 1.2.0,阿里巴巴Java开发手册 1.2.0

2017-09-26

Java 动态加载jar文件示例

Java 动态加载jar文件示例,轻松实现插件式开发

2015-01-23

Android AIDL

Android AIDL 完整代码

2014-12-07

Android SQLite加密

Android SQLite加密示例,使用SQLCipher

2014-11-16

Java Tess4J Demo

Java Tess4J 实现OCR 可运行Demo

2014-09-29

DBUtils 工具类

DBUtils 工具类

2014-09-04

Android Fragment嵌套使用Demo

Android ViewPager+Fragment嵌套使用Demo

2014-07-06

Thrift 示例代码_Java

Thrift0.9.1 示例代码 Java版本 Thrift0.9.1 示例代码 Java版本

2014-06-14

Android仿QQ消息列表ListView滑动删除效果

Android仿QQ消息列表ListView滑动删除效果,具体详见:http://blog.csdn.net/top_code/article/details/19084879

2014-02-11

高德Android 定位SDK示例

高德Android 定位SDK示例

2014-01-23

百度Android 定位SDK v4.0

百度Android 定位SDK v4.0

2014-01-23

Android ListView item 选中高亮显示

Android ListView item 选中高亮显示

2014-01-07

Android 仿微信对话列表滑动删除效果

Android 仿微信对话列表滑动删除效果

2014-01-07

Java Json序列化与反序列化

Java Json序列化与反序列化

2013-12-26

AndroidStaggeredGrid

AndroidStaggeredGrid 官方Sample下载

2013-12-25

Android SlidingMenu仿网易新闻布局

Android SlidingMenu仿网易新闻布局 Android SlidingMenu 仿网易新闻客户端布局 今天来模仿一下网易新闻客户端左右两边都有SlidingMenu的效果,源码打包分享给大家,共同学习

2013-12-16

SlidingMenu ViewPager

SlidingMenu ViewPager

2013-12-16

SlidingMenu Demo

SlidingMenu + Fragment 侧滑菜单Demo

2013-12-16

SlidingMenu 编译整合版

SlidingMenu 编译通过整合版

2013-12-15

ListView自定义Adapter实现多视图Item

ListView自定义Adapter实现多视图Item

2013-12-12

空空如也

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

TA关注的人

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