自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一只小菜鸡

欢迎指错

原创 替换字符串中的占位符之MessageFormat用法

1、假如我们有以下这个链接字符串“http://127.0.0.1:8080/add?name={0}&age={1}”,在程序中我们要替换{0},{1}为真实的name和age,那么可以用MessageFormat操作! 例子如下: import java.text.Message...

2020-04-09 19:52:47 39 0

原创 windows环境下git生成多套密钥

前言:一般情况下,假如我们在公司里面既要生成公司里面的git密钥,又要生成coding.net的密钥,可以按照下面的步骤进行配置; 一、生成公司的git密钥: ssh-keygen -t rsa -C "xxx@xxx.com",这个邮箱是公司的邮箱,然后一直回车,然后...

2019-11-06 10:24:42 116 0

原创 fastjson解决反序列化字符串和bean字段不一致时如何反序列化

一、首先我们来看一下正常的反序列化的用法,我们有一个Person类: 1、Person类: @Data class Person{ String name; int age; } 下面通过一个字符串反序列化成一个java对象; public class Test { ...

2019-09-12 19:39:47 652 0

原创 Apollo 接入规范+Demo

先看下Apollo的官方架构图: 上图简要描述了Apollo的总体设计,我们可以从下往上看: Config Service提供配置的读取、推送等功能,服务对象是Apollo客户端 Admin Service提供配置的修改、发布等功能,服务对象是Apollo Portal(管理界面) C...

2019-07-08 20:00:00 2169 0

原创 springBoot以外部tomcat作为容器方式部署启动

前言:springBoot采用约定大于配置的规则,使开发人员可以快速部署启动web项目,包括tomcat容器,springBoot启动时使用的是springBoot的内嵌容器,那么加入我们需要使用自定义的外部容器启动springBoot项目,那么应该这么实现呢?往下看! 1、第一步: 打包...

2019-04-11 18:51:52 249 0

原创 java8新特性以及guava用法

1、提取list集合中bean的某一属性 List<Integer> uniqueList = result.stream().map(ComplaintsPdMappingSource::getSourceId).distinct().collect(Collectors.toL...

2019-04-08 21:04:45 95 0

原创 equals和hashCode的关系,equals相等,hashCode就必须要相等吗?

我们经常听见hashCode相等,那么equals可以不相等,但是equals相等,那么hashCode就一定相等这2个定理,没有看源码的同学就会认为jdk保证了equals相等,那么hashCode就一定相等,但是事实真的是这样吗?答案是否定的,equals相等,hashCode也是可以不相等的...

2019-03-11 19:36:37 2438 0

原创 AIO案例详解

TimeServer : package com.ck.prefix.aio; public class TimeServer { public static void main(String[] args) { new Thread(new AsyncTimeSe...

2019-01-18 17:59:18 297 0

原创 NIO案例详解

一、 NIO解释:NIO官方的解释是NEW I/O,意思是相对与BIO(同步阻塞I/O)来说是全新的,但是大部分人更喜欢叫他no-block I/O(同步非阻塞I/O),因为他相对于BIO的最大改变就是非阻塞的,我们知道传统的Socket下的流都是阻塞I/O,也就是客户端的一个请求对应服务端的一...

2019-01-18 14:17:38 195 0

原创 Centos 6.1下安装部署redis-cluster集群和哨兵模式

环境: Centos 6.1、redis 3.2.4; 注释:查看Centos命令:cat /etc/issue 第一步:下载并解压 cd root目录下,下载redis的jar包:wget http://download.redis.io/releases/redis-3.2.4.tar....

2019-01-11 15:40:35 167 0

原创 UDP简单实例

package com.ck.prefix; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; /*...

2019-01-07 20:35:08 111 0

原创 AtomicInteger的底层实现CAS

我们都知道在Java中i++操作是线程不安全的操作,虽然他看起来只有一行,像是只有一步操作,其实可以拆分开出来三步: 第一步:从内存中读出值i; 第二步:计算i的值; 第三步:将计算得到的i的值替换内存中原有的i; 但是以上的3个步骤不是一个原子操作,所以就会出现线程安全的问题,看下面的例...

2018-12-25 20:55:51 262 0

原创 Spring AOP实现多数据源动态切换

前言:前面的一篇文章我们实现了mysql数据库的主从同步,那么这一篇开始我们用AOP来简单实现多数据源的动态切换; 要实现的功能:设置读数据库和写数据库,当查询数据的时候从读数据库读取,当插入数据的时候插入写数据库,读写数据库是主从关系,这样就可以实现读写分离了; 首先看一下我的项目目录结构,...

2018-12-20 20:25:35 337 0

原创 Mysql 5.7实现主从(Master/Slave)同步安装与配置

前言:我的主数据库是安装在Centos6.1上的,从数据库是安装在window上的; 第一步:centos安装mysql: 1、参考文档:https://jingyan.baidu.com/article/9f63fb91728616c8400f0eed.html              ...

2018-12-19 20:46:48 259 0

原创 JDK的动态代理和Cglib的动态代理比较

1、讲动态代理之前,我们先了解下什么叫代理,从字面意思我们也能看出来意思就是代替某人做事情,看下面的例子: package eureka.server.proxy; public interface UserService { void printName(); } 这是一个Us...

2018-12-18 17:12:58 116 0

原创 二叉查找树的基本操作与实现(二叉链表实现)

package eureka.server.tree; public class BinarySearchTree&lt;T extends Comparable&gt; implements Tree&lt;T&gt;{ //根节点 prote...

2018-12-14 15:58:10 271 0

原创 springboot整合Mybatis项目源码分析

我们先来看看Mybatis的几个核心类SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession之间的关系;     大致流程是这个样子的,mybatis通过SqlSessionFactoryBuilder类的build方法和配置文件生成S...

2018-12-12 17:07:00 209 0

原创 Springboot整合Mybatis项目搭建

实战第一,先创建一个springboot整合mybatis的简单例子: 第一步:          创建完成后的maven配置依赖: &lt;?xml version="1.0" encoding="UTF-8"?&gt;...

2018-12-11 18:06:51 371 0

原创 Linux常用系统命令

1、load:查看系统负载,一般load不大于3都是正常的,如果load的值大于5就表示系统负载严重; 命令:top或者uptime 2、cpu的利用率: 命令: top | grep Cpu 3、磁盘剩余空间: 命令:df -h(表示按单位格式化输出) 4、网络traffic: 命...

2018-12-07 18:32:46 48 0

原创 git常用操作命令

git config --global user.name "18521517220" --配置git用户名 git config --global user.email "18521517220@163.com" --配置git邮箱 git confi...

2018-12-06 20:47:19 55 0

原创 源码解析ThreadLocal如何做到线程之间的数据隔离

前言: 我们都知道ThreadLocal能做到线程数据隔离,那么底层到底是怎么做到的,通过解析源码来一探究竟! 首先我们来看看ThreadLocal的最重要的set方法,源代码如下: public void set(T value) { Thread t...

2018-12-05 11:34:13 498 1

原创 Java如何捕获线程的非受检异常

考虑这样的一个问题: 在主线程main方法里面,启动一个子线程,这个子线程抛出了一个非受检异常,那么我们如何捕获这个异常呢,可能大部分读者可能想在主线程里面使用try、catch的方法,像下面这样: package eureka.server.paixu; /** * 捕获java线程的...

2018-12-04 16:07:28 182 0

原创 Java排序之快速排序

快速排序的思想:快速排序是冒泡排序的升级版本,他的基本思想是分而治之、迭代; 一、排序步骤: 1、先选一个基准元素(一般是数组的最后一个元素),一这个基准元素为基准对剩下的元素依次进行比较,对于比基准元素小的元素,放到基准元素的左边,比基准元素大的元素放到基准元素的右边,这样经过一轮排序之后基...

2018-12-03 16:39:12 42 0

原创 Centos7关闭防火墙

查看防火墙的状态: systemctl status firewalld.service 关闭防火墙: systemctl stop firewalld.service 禁止开机启动防火墙: systemctl disable firewalld.service

2018-12-03 10:46:52 42 0

原创 Java排序之冒泡排序

动态图解:   代码实例: package eureka.server.paixu; import java.util.Arrays; /** * 冒泡排序 * */ public class MaoPaosort { /** * 冒泡排序 * ...

2018-11-29 15:13:44 85 0

原创 Lock Condition 和 synchronized 实现生产者消费者问题

第一种: Lock Condition实现生产者和消费者问题: package eureka.server; import java.util.ArrayList; import java.util.List; import java.util.concurrent.locks.Condit...

2018-11-23 16:42:49 56 0

原创 正则表达式-命名捕获组

package com.newnoa.cmmom.utils; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 正则表达式工具类 */ public class RegularUtils { ...

2018-11-22 15:29:26 751 0

原创 springMVC源码解析

前沿:       我们需要知道什么是springMVC,简单的来说,他是一个web框架,实现了视图(view)-模型(model)-控制器(controller)的解耦,但是怎么解耦的呢,今天我们就一边debug,一边从源码来解析springMVC的运行过程; 1、我们都知道,springM...

2018-11-07 17:57:29 139 0

原创 Docker生成web项目镜像image的三种方式

第一种:   1、 先通过maven插件打包生成jar文件、上传到linux系统上,同时在jar文件的同级目录下,生成Dockerfile文件。 Dockerfile文件的内容如下: FROM java:8 VOLUME ./tmp add eureka-server-1.0-SNAP...

2018-11-05 20:30:32 2077 0

原创 spring Cloud Sleuth 分布式服务跟踪

前瞻:       首先我们知道spring Cloud Sleuth分布式服务跟踪是干什么的,在现如今的系统规模中,随着系统规模的越来越大,微服务之间的调用关系越来越错综复杂,通常一个前端的请求在系统中会经过多个微服务之间的调用最后才能返回正确的结果,而在这么多微服务之间的相互调用中,每一次微...

2018-11-01 15:27:34 207 0

转载 centos忘记root或者用户密码,如何重新设置

最近在使用centos6.5系统,需要进入root根用户下去操作指令,可是输入su命令并输入密码后,一直提示密码错误,无论如何就是进入不了root下。应该是在虚拟机开始安装的时候,没有设置root密码,或者密码记错了。那么,遇到这种情况,如何在忘记root或者用户密码的情况下修改centos系统的...

2018-10-23 14:37:20 84 0

原创 Java排序之快速插入排序

 1、快速插入排序交换法,从第2个元素依次和它前面的元素比较,如果后面的元素小于前面的元素,则交换位置,这个方法交换次数比较多 // 交换次数较多的实现 public static void insertionSort(int[] arr) { for (int i ...

2018-10-22 20:58:03 347 0

原创 Spring Cloud Config配置中心使用及介绍

简介:我们之前创建的微服务实例的配置文件都是配置在应用程序里面的,如Application.properties等,这么做的第一个缺点是一旦修改配置文件,必须要修改应用且必须重启实例才能使配置生效,第二个缺点是加入我们要部署多个微服务实例的时候,假如使用的是同一个配置文件,那么有多少个节点我们就要...

2018-10-19 16:40:56 118 0

原创 SpringCloud之网关Zuul的使用以及简介

说明: Spring Cloud Zuul是SpringClud的网关,我们知道,网关一般是应用的入口,做一些公共的和业务无关的校验工作,例如加验签、加解密等一些操作,而zuul作为微服务的网关,有如下原因: 1、作为系统的统一入口,屏蔽了微服务内部的实现细节; 2、与服务治理框架相结合(例...

2018-10-17 21:01:28 511 0

原创 java设计模式之观察者模式

观察者模式的定义:定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,他的所有依赖都会收到通知并自动更新; 观察模式的设计原则:为了交互对象之间的松耦合而努力,观察者模式为什么能实现对象之间的松耦合,因为被观察者(或者叫主题Subject)Observable和观察者Observer之间...

2018-10-15 20:47:22 37 0

原创 spring负载均衡自动配置类LoadBalancerAutoConfiguration

/* * Copyright 2013-2015 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may...

2018-10-12 11:31:52 564 0

转载 Serializable序列化中serialVersionUId的作用

Serializable是java所提供的一个序列化接口,它是一个空接口,为对象提供标准的序列化和反序列化操作,使用Serializable来实现序列化很简单,只要在类的声明中指定一个类似下面的标识即可自动实现默认的序列化过程。   private static final long ser...

2018-09-26 10:18:47 282 0

原创 分布式事物的实现

解释分布式事物之前,我们先来说说什么是"事物”; 一、我们先简单了解下”事物“的四大特性: 事物的4大特性(这里我主要以简单通俗的例子解释这4个特性),也叫acid特性: 原子性(atomicity):就是一个方法中的操作,要么全做,要么全不做,不存在做一半的情况,以经典的转账为例...

2018-09-21 18:34:11 58 0

转载 Java正则 Mathcer 获取第N次出现某个字符的位置

public static void main(String[] args){ String string = "213213/13123/14432432"; //这里是获取"/"符号的位置 ...

2018-09-20 20:16:03 844 0

原创 java设计模式之代理模式

抽象类: package proxy; /** * 抽象接口 */ public interface Subject { void proxyMethod1(); void proxyMethod2(); } 真实对象: package proxy; /...

2018-09-18 18:57:34 31 0

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