一只小菜鸡

欢迎指错

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

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

2019-04-11 18:51:52

阅读数 18

评论数 0

java8新特性以及guava用法

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

2019-04-08 21:04:45

阅读数 26

评论数 0

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

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

2019-03-11 19:36:37

阅读数 910

评论数 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

阅读数 37

评论数 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

阅读数 116

评论数 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

阅读数 64

评论数 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

阅读数 23

评论数 0

AtomicInteger的底层实现CAS

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

2018-12-25 20:55:51

阅读数 63

评论数 0

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

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

2018-12-20 20:25:35

阅读数 52

评论数 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

阅读数 59

评论数 0

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

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

2018-12-18 17:12:58

阅读数 47

评论数 0

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

package eureka.server.tree; public class BinarySearchTree<T extends Comparable> implements Tree<T>{ ...

2018-12-14 15:58:10

阅读数 156

评论数 0

springboot整合Mybatis项目源码分析

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

2018-12-12 17:07:00

阅读数 49

评论数 0

Springboot整合Mybatis项目搭建

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

2018-12-11 18:06:51

阅读数 86

评论数 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

阅读数 31

评论数 0

git常用操作命令

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

2018-12-06 20:47:19

阅读数 39

评论数 0

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

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

2018-12-05 11:34:13

阅读数 166

评论数 0

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

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

2018-12-04 16:07:28

阅读数 65

评论数 0

Java排序之快速排序

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

2018-12-03 16:39:12

阅读数 32

评论数 0

Centos7关闭防火墙

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

2018-12-03 10:46:52

阅读数 31

评论数 0

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