自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Ron.Zheng

最反主流的行动不是抵制潮流,而是在潮流中不丢弃自己的独立思考.

转载 如何在三年内成长为一名JAVA架构师

工作前三年是职业生涯中成长最快的几年,在这段时间里你会充满激情,做事专注,也容易养成良好的习惯。在我们公司有些同学在前三年中就快速成为某一个领域的技术专家,有些同学也可能止步不前。本文和大家一起探讨下如何在三年内快速成长为一名技术专家。

2017-10-17 09:49:12 1292 0

原创 9、Zookeeper分布式锁原理浅析

了解Zookeeper的我们都知道,Zookeeper是一种分布式协调服务,在分布式应用中,主要用来实现分布式服务的注册与发现以及分布式锁,本文我们简单介绍一下使用Zookeeper实现分布式锁的简单原理。 使用Zookeeper实现分布式锁,主要是基于Zookeeper的临时顺序节点来实现的,因...

2019-10-08 10:16:05 143 0

原创 8、Zookeeper服务注册与发现原理浅析

了解Zookeeper的我们都知道,Zookeeper是一种分布式协调服务,在分布式应用中,主要用来实现分布式服务的注册与发现以及分布式锁,本文我们简单介绍一下Zookeeper是如何实现服务的注册与发现的。 使用Zookeeper实现服务注册与发现,主要应用的是Zookeeper的Znode数据...

2019-10-01 15:48:04 260 0

原创 Spring Boot整合Redis实现简单的分布式锁

随着微服务等分布式架构的快速发展及应用,在很多情况下,我们都会遇到在并发情况下多个线程竞争资源的情况,比如我们耳熟能详的秒杀活动,多平台多用户对同一个资源进行操作等场景等。分布式锁的实现方式有很多种,比如基于数据库、Zookeeper、Redis等,本文我们主要介绍Spring Boot整合Red...

2019-05-31 18:53:50 2890 2

转载 设计模式看了又忘,忘了又看?

设计模式收藏这篇就够了 耗时了 5 个月,终于把设计模式一整个系列写完。其实设计模式这一系列文章网上已经有很多非常好、非常优秀的文章,为什么要写呢? 一方面是为了学得更扎实,印象中设计模式学习了 2 遍,记得牢的基本就那几个众所周知的,反思前面 2 次学习过程,缺少了思考的过程,没有把知识消化掉转...

2019-05-28 11:32:24 399 0

原创 @Conditional注解详解

本文我们要陈述的是如何根据不同的条件来判定到底注入那个Bean,即@Conditional注解的用法。

2019-05-16 21:32:47 412 0

原创 @ComponentScan向Spring IOC容器中注入组件

本文我们就来详细的探索一下在使用注解配置的方式注入Bean时,@ComponentScan注解组件扫描的应用。

2019-04-10 13:00:48 490 0

原创 PGP生成秘钥对及应用

PGPDesktop下载链接:https://download.csdn.net/download/hfy19981024/10438982 1、下载安装PGP 安装很简单,根据安装包中的步骤一步一步安装破解之后即可使用。 2、生成秘钥 点击下一步输入名称和邮箱 选择Advanced,可以...

2019-04-09 11:23:46 4331 2

原创 GPG生成密钥对(Windows)及应用

PGP加密方案,密钥对生成及在java中的应用

2019-03-28 16:36:36 3304 0

原创 context:component-scan向Spring IOC容器中注入组件

本文我们就来详细的探索一下在使用XML配置方式注入Bean时,component-scan组件扫描的应用。

2019-03-28 15:07:41 295 0

原创 使用@Configuration和@Bean注解向Spring IOC容器中注入组件

在使用Spring框架开发应用的过程中,大家都知道使用Spring开发应用程序,我们应用程序中所有的Bean都是通过Spring的IOC容器来管理。将Bean注入到Spring IOC容器中的方式多种多样,如通过传统的XML方式注入,通过注解的方式注入等。本文我们就通过例子的形式看一看如何通过注解...

2019-03-26 11:12:47 1244 0

原创 XML方式向Spring IOC容器中注入组件

在使用Spring框架开发应用的过程中,大家都知道使用Spring开发应用程序,我们应用程序中所有的Bean都是通过Spring的IOC容器来管理。将Bean注入到Spring IOC容器中的方式多种多样,如通过传统的XML方式注入,通过注解的方式注入等。本文我们就通过例子的形式看一看如何通过XM...

2019-03-26 11:01:36 195 0

原创 Openssl生成RSA证书,Java实现公钥证书加密,私钥证书解密

1、证书生成过程 生成RSA私钥: genrsa -out private_key.pem 1024 把RSA私钥转换成PKCS8格式 pkcs8 -topk8 -inform PEM -in private_key.pem -outform PEM –nocrypt 生成RSA公钥 ...

2019-01-02 16:18:56 945 0

原创 细说链式存储结构

提起链式存储结构,其与数组是两个非常基础的数据结构,每当提到链式存储结构时,一般情况下我们都会将其与数组放到一块儿来比较。 对于数组与链表,从结构上来看,数组是需要一块连续的内存空间来存储数据,对内存的要求非常高,比如说我们申请一个100M大小的数组,而如果我们的内存可用空间大于100M,但是没有...

2018-10-13 13:31:49 6998 0

原创 Java面试(71-90 Spring)

71、 什么是spring? Spring是一个一站式构建企业级应用的一个轻量级解决方案框架。Spring是模块化的,允许用户根据自己需求使用特定模块。你可以使用IOC容器和一些web框架,也可以只使用Hibernate代码或者JDBC抽象层。Spring框架支持声明式事务管理,支持通过RMI或者...

2018-10-08 21:21:16 229 0

原创 Java面试题(61-70)

61、线程池的常用参数有哪些? 在Java中,我们一般通过继承Thread类和实现Runnnable接口,调用线程的start()方法实现线程的启动。但如果并发的数量很多,而且每个线程都是执行很短的时间便结束了,那样频繁的创建线程和销毁线程会大大的降低系统运行的效率。线程池正是为了解决多线程效率...

2018-08-03 09:24:25 203 0

原创 Java面试题(56-60)

56、List, Set, Map 是否继承自 Collection 接口? List, Set是继承自Collction接口,而Map不是。 57、List、Map、Set 三个接口,存取元素时,各有什么特点? 首先,List 与 Set 具有相似性,它们都是单列元素的集合,所以,它们有...

2018-07-31 09:43:36 254 0

原创 Java面试题(41-55)

41、Java语言如何进行异常处理,关键字:throws、throw、try、catch、finally分别代表什么意义?在try块中可以抛出异常吗? try块表示程序正常的业务执行代码。如果程序在执行try块的代码时出现了“非预期”情况,JVM将会生成一个异常对象,这个异常对象将会被后面相应...

2018-07-31 09:35:46 226 0

原创 Java面试题(21-40)

21、面向对象的特征有哪些方面? 计算机软件系统是现实生活中的业务在计算机中的映射,而现实生活中的业务其实就是一个个对象协作的过程。面向对象编程就是按现实业务一样的方式将程序代码按一个个对象进行组织和编写,让计算机系统能够识别和理解用对象方式组织和编写的程序代码,这样就可以把现实生活中的业务对象...

2018-07-29 12:47:30 226 0

原创 Java面试题(1-20)

1、一个”.java”源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以包含多个类,但是只能有一个public类,并且public类的类名必须与.java文件名一致 2、Java 有没有 goto? Java中的保留字,但是并未在Java 中使用。 3、说说&和&...

2018-07-29 12:21:28 315 0

原创 Spring MVC的处理流程

本文简单介绍一下Spring MVC的请求流程,因为上次在面试过程中面试官有问到这个问题,希望对大家有用。 用户发送请求至前端控制器DispatcherServlet DispatcherServlet收到请求调用HandlerMapping处理器映射器。 处理器映射器根据请求url找到具体的...

2018-07-09 10:02:10 975 0

原创 通过实例说设计模式——原型模式(Prototype Pattern)

在我们的现实的生活中,有很多的东西都是大致类似的,只有少许的特征不一样,比如说杯子,可能同一个品牌的杯子,除了深度不一样之外,其他的无论是口径、直径等都是一致的;再比如我们同一个型号、同一个品牌的汽车,高配版、中配版、低配版,他们除了一些少许的特征不一样之外,其他的都是一样的。 我们以汽车(Ca...

2018-07-05 12:14:00 268 0

原创 通过实例说设计模式——单例模式

所谓单例模式,也就是说在整个系统中,对于设计成单例模式的类,在创建对象时都只返回一个实例,对于整一个类,系统中只会生成一个对象。比如说在我们的Spring中,创建Bean的实例默认都是单例模式; 为了能够说清楚单例模式,我们通过一个例子来向大家描述单例模式如何实现以及单例模式的相关场景。 比如...

2018-06-21 09:37:27 261 0

转载 Spring中@Transactional事务回滚

一、使用场景举例 在了解@Transactional怎么用之前我们必须要先知道@Transactional有什么用。下面举个栗子:比如一个部门里面有很多成员,这两者分别保存在部门表和成员表里面,在删除某个部门的时候,假设我们默认删除对应的成员。但是在执行的时候可能会出现这种情况,我们先删除部门,...

2018-06-16 10:32:24 416 0

原创 Java高级系列——异常(Exception)

在解释Java中的异常时,首先我们来看一张图 上图是我们Java中,异常类的一个继承关系图,从图中我们可以看到Java标准库内构建的这些通用的异常,他们都是以Throwable为顶层父类。 Throwable又派生出Error类和Exception类。 错误:Error类以及他的...

2018-06-16 10:00:49 756 0

转载 Java高级系列——强引用、软引用、弱引用、虚引用

强引用 只要引用存在,垃圾回收器永远不会回收 Object obj = new Object(); //可直接通过obj取得对应的对象 如obj.equels(new Object()); 而这样 obj对象对后面new Object的一个强引用,只有当obj这个引用被释放之后,对象才会...

2018-06-15 21:37:20 365 0

原创 通过实例说设计模式——抽象工厂模式

工厂方法模式引入工厂等级结构,解决了简单工厂模式中工厂类职责过重的问题,但由于工厂方法模式中每个工厂只创建一类具体类的对象,这将会导致系统当中的工厂类过多,这势必会增加系统的开销。此时,我们可以考虑将一些相关的具体类组成一个“具体类族”,由同一个工厂来统一生产,这就是我们本文要说的“抽象工厂模式”...

2018-06-15 16:51:07 11913 1

原创 通过实例说设计模式——工厂方法模式(Factory Method Pattern)

上文我们简单介绍了简单工厂模式,本文我们将会聊一聊工厂方法模式(Factory Method Pattern)。 在介绍工厂方法模式之前,我们先来看一下简单工厂模式的样例代码。 //具体类的抽象接口 public interface Shape { /** * 绘制图形 ...

2018-06-14 10:39:20 209 0

原创 通过实例说设计模式——简单工厂模式

本文我们通过实例的方式来简单描述一下简单工厂模式的由来及其作用,话说我们现在需要开发一个图形界面工具,然后将这个工具提供给一个客户去使用,系统初期我们只需要画一个圆(Circle)和一个三角形(Triangle)即可。那么我们的工具就按照如下的方式设计。 public class Shape...

2018-06-10 22:50:44 1247 0

原创 Atlas实现MySQL读写分离

Atlas安装 mkdir /data/atlas cd /data/atlas wget https://github.com/Qihoo360/Atlas/releases/download/2.2.1/Atlas-2.2.1.el6.x86_64.rpm 安装命令 rpm -i...

2018-06-07 17:30:41 711 0

原创 MySQL 8.0主从(Master-Slave)配置

MySQL 主从复制的方式有多种,本文主要演示基于基于日志(binlog)的主从复制方式。 MySQL 主从复制(也称 A/B 复制) 的原理 Master将数据改变记录到二进制日志(binary log)中,也就是配置文件log-bin指定的文件, 这些记录叫做二进制日志事件(binar...

2018-06-04 16:43:02 19703 2

原创 Linux上安装MySQL

本文主要演示在Linux系统上如何安装MySQL最新版本MySQL 8.0 自带MySQL卸载 安装前,我们可以检测系统是否自带安装 MySQL,如果自带安装,那么卸载原来安装的MySQL rpm -qa | grep mysql 如果显示安装了MySQL,那么可以卸载 ...

2018-06-04 16:30:48 834 0

原创 持久化存储-MySql拓展

先说一个概念 ACID,是指在可靠数据库管理系统(DBMS)中,事务(transaction)所应该具有的四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability). 这是可靠数据库所应具备的几个特性. 一、MyS...

2018-06-04 16:24:22 2481 0

原创 系统持续集成-SonarQube+Maven 分析器插件的配置与使用

安装完成SonarQube之后,我们的系统中是没有项目的。 那么接下来我们来使用SonarQube+Maven 分析器插件来使用SonarQube分析我们的代码。 1、Maven配置 在 Maven 本地库中的 settings.xml 配置文件中的节点中添加如下配置: &...

2018-05-16 15:57:16 2864 1

原创 系统持续集成-SonarQube安装

SonarQube介绍 SonarQube是一个管理代码质量的开放平台,它可以从七个维度检测代码质量(为什么要用SonarQube): - 复杂度分布(complexity): 代码复杂度过高将难以理解、难以维护 重复代码(duplications): 程序中包含大量复制粘贴的代码是质量低...

2018-05-16 15:51:27 295 0

原创 Java多线程编程——线程创建方式

在Java中,创建线程有以下几种方式: 通过实现 Runnable 接口; 通过继承 Thread 类本身; 通过 Callable 和 Future 创建线程。 通过实现 Runnable 接口来创建线程 创建线程最简单的方式就是直接实现Runnable接口,该接口定义了一个run()...

2018-04-26 17:43:01 186 0

原创 Java多线程编程——为什么需要多线程编程

谈到为什么需要多线程编程,可能需要从并发这个概念的历史来说起。 在很久以前,计算机并没有操作系统,同一个时刻他们只能执行一个单独的程序,而且这些程序直接访问所有的计算机资源。在计算机刚面世的那个年代,程序的这种处理方式其实并没有什么不对。但是随着计算机以及软件的快速发展,操作系统以及多核处理器的...

2018-04-26 17:37:38 957 0

原创 JavaMail使用(检测邮箱是否能收件和发件)

使用过JavaMail我们都知道,通过JavaMail这个工具,我们可以在自己的系统中实现邮件收发功能。本文我们将给出如何检测我们所设置的邮箱是否能接收和发送邮件。 首先、如果您想要实现邮件接受和发送功能,您需要在邮箱中开启POP3和SMTP协议。一般情况下,POP3协议用于邮件的接受,SMTP...

2018-04-18 14:26:21 3160 0

转载 8张图带你轻松温习Java知识

1、字符串不变性 String s = "abcd"; s = s.concat("ef"); 2、equals()方法、hashCode()方法的区别 HashCode被设计用来提高性能。equals()方法与hashCode()方...

2018-04-14 13:35:34 172 0

原创 Spring Boot打Jar包部署

对于传统的Web项目,可能大部分都要部署到web容器中,如Tomcat。Spring Boot提供了一种超级简单的部署方式,就是直接将应用打成jar包,在生产上只需要执行java -jar就可以运行了。 一般情况下,如果我们的应用只是作为一个服务、工具类、API的形式存在,那么我们一般将其打包成...

2018-04-12 13:14:08 8760 0

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