自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一只小菜鸡

欢迎指错

  • 博客(82)
  • 收藏
  • 关注

原创 leetCode之二叉树的前中后序遍历递归和非递归

leetcode算法

2022-03-27 09:37:43 678

原创 sharding-jdbc+mybatis+pageHelper分库分表实现pageHelper分页查询四

背景:上一章我们实现的自定义的分页查询,这一章我们使用mybatis的插件pageHelper实现分库分表的分页查询;一、引入pageHelper的maven依赖(这里要注意版本号,如果版本号和mybatis的版本号不一致就会报datasource错误):<!--pagehelper--> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>page

2021-04-26 20:53:49 3084 2

原创 sharding-jdbc+mybatis分库分表实现自定义分页查询三

一、先插入数据:二、实现mybatis分页接口,因为我用的数据库是db,所以分页用的limit n,m,offset是偏移量,limit是查询条数:@Componentpublic interface TUserMapper { /** * 按照age分页查询 * @param offset * @param limit * @return */ List<TUser> pageQuery(@Param("of.

2021-04-25 20:54:07 2721 1

原创 sharding-jdbc+mybatis分库分表实现查询二

一、新增mybatis的查询接口:/** * @author kcheng * mybatis对应的接口mapper文件 * */@Componentpublic interface TUserMapper { int insert(TUser user); TUser selectById(@Param("id") Integer id);}二、新增mybatis的XML配置文件:<?xml version="1.0" encoding="UTF-8

2021-04-25 19:26:26 1198

原创 sharding-jdbc+mybatis分库分表实现一

前言:大致目录如下:第一步:引入pom依赖:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.ap.

2021-04-19 19:55:41 1050

原创 Vue.js从入门到使用之第一个Vue.js小程序

<!DOCTYPE html><html><head><meta charset="utf-8"><script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script></head><body><div id="app"> <ul> <li v-for="tab in tabs"&gt.

2020-08-06 20:26:08 200

原创 Maven学习笔记

1、可选依赖: 可选依赖不会进行传递,例如:A—>B、B—>X(可选)、B—>Y(可选),那么对于A来说,X、Y都是A的可选依赖,依赖将不会得到传递,换句话来说,X、Y对A不会又任何影响,A不会像传递性依赖一样引入X、Y,传递性依赖的表示<optional><dependency> <groupId>com.ck</groupId> <artifactId>common-data</artifactI..

2020-06-09 20:36:38 188

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

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

2020-04-09 19:52:47 562

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

前言:一般情况下,假如我们在公司里面既要生成公司里面的git密钥,又要生成coding.net的密钥,可以按照下面的步骤进行配置;一、生成公司的git密钥: ssh-keygen -t rsa -C "[email protected]",这个邮箱是公司的邮箱,然后一直回车,然后你就可以在你的用户目录下查看到公私钥对,直接粘贴公钥到你的公司git账号的公钥里就行了;二、生成Codin...

2019-11-06 10:24:42 976

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

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

2019-09-12 19:39:47 4401

原创 Apollo 接入规范+Demo

先看下Apollo的官方架构图:上图简要描述了Apollo的总体设计,我们可以从下往上看:Config Service提供配置的读取、推送等功能,服务对象是Apollo客户端 Admin Service提供配置的修改、发布等功能,服务对象是Apollo Portal(管理界面) Config Service和Admin Service都是多实例、无状态部署,所以需要将自己注册到Eu...

2019-07-08 20:00:00 6463 2

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

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

2019-04-11 18:51:52 683

原创 java8新特性以及guava用法

1、提取list集合中bean的某一属性List<Integer> uniqueList = result.stream().map(ComplaintsPdMappingSource::getSourceId).distinct().collect(Collectors.toList());2、判断某一个值是否存在list集合中:/** * 转换字符串为b...

2019-04-08 21:04:45 721

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

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

2019-03-11 19:36:37 6694

原创 AIO案例详解

TimeServer :package com.ck.prefix.aio;public class TimeServer { public static void main(String[] args) { new Thread(new AsyncTimeServerHandler(8081)).start(); }} AsyncTimeSer...

2019-01-18 17:59:18 1030

原创 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 738

原创 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.gz,解压: tar -zxvf redis-3.2.4.tar.gz第二步:编译并安装cd ...

2019-01-11 15:40:35 530

原创 UDP简单实例

package com.ck.prefix;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;/** * UDP传输的Server端 */public class UDPServer { ...

2019-01-07 20:35:08 374

原创 AtomicInteger的底层实现CAS

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

2018-12-25 20:55:51 1229

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

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

2018-12-20 20:25:35 1318

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

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

2018-12-19 20:46:48 937

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

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

2018-12-18 17:12:58 333

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

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

2018-12-14 15:58:10 531

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

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

2018-12-12 17:07:00 909

原创 Springboot整合Mybatis项目搭建

实战第一,先创建一个springboot整合mybatis的简单例子:第一步:      创建完成后的maven配置依赖:&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3...

2018-12-11 18:06:51 1566

原创 Linux常用系统命令

1、load:查看系统负载,一般load不大于3都是正常的,如果load的值大于5就表示系统负载严重;命令:top或者uptime2、cpu的利用率:命令: top | grep Cpu3、磁盘剩余空间:命令:df -h(表示按单位格式化输出)4、网络traffic:命令:sar -n DEV 1 1   (-n表示汇报网络情况,DEV则表示查看各个网卡的网络情况,第一...

2018-12-07 18:32:46 409

原创 git常用操作命令

git config --global user.name "18521517220" --配置git用户名git config --global user.email "[email protected]" --配置git邮箱git config --list --查看git配置信息ssh-keygen --生成公钥和私钥(密钥的存放位置:C:\Users\v_chengkui\...

2018-12-06 20:47:19 187

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

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

2018-12-05 11:34:13 1433 2

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

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

2018-12-04 16:07:28 647

原创 Java排序之快速排序

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

2018-12-03 16:39:12 138

原创 Centos7关闭防火墙

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

2018-12-03 10:46:52 207

原创 Java排序之冒泡排序

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

2018-11-29 15:13:44 167

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

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

2018-11-23 16:42:49 177

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

package com.newnoa.cmmom.utils;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * 正则表达式工具类 */public class RegularUtils { /** * 判断日期是不是yyyy-MM-dd hh:MM:ss格式 * @...

2018-11-22 15:29:26 2291

原创 springMVC源码解析

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

2018-11-07 17:57:29 368

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

第一种:  1、 先通过maven插件打包生成jar文件、上传到linux系统上,同时在jar文件的同级目录下,生成Dockerfile文件。Dockerfile文件的内容如下:FROM java:8VOLUME ./tmpadd eureka-server-1.0-SNAPSHOT.jar app.jar#RUN bach -c 'touch /app.jar'EXPO...

2018-11-05 20:30:32 4458

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

前瞻:      首先我们知道spring Cloud Sleuth分布式服务跟踪是干什么的,在现如今的系统规模中,随着系统规模的越来越大,微服务之间的调用关系越来越错综复杂,通常一个前端的请求在系统中会经过多个微服务之间的调用最后才能返回正确的结果,而在这么多微服务之间的相互调用中,每一次微服务之间调用的延迟都可能使整个请求出现超时而导致失败,这时候,对于全链路调用的跟踪就显得尤为重要了,它...

2018-11-01 15:27:34 625

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

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

2018-10-23 14:37:20 356

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

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

2018-10-22 20:58:03 893

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

简介:我们之前创建的微服务实例的配置文件都是配置在应用程序里面的,如Application.properties等,这么做的第一个缺点是一旦修改配置文件,必须要修改应用且必须重启实例才能使配置生效,第二个缺点是加入我们要部署多个微服务实例的时候,假如使用的是同一个配置文件,那么有多少个节点我们就要修改且重新部署多少次,容易遗漏出错,效率不高。此时,Spring Cloud Config应运而生,他...

2018-10-19 16:40:56 347

空空如也

空空如也

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

TA关注的人

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