自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(65)
  • 收藏
  • 关注

转载 Mysql踩过的坑

数据表示例1.NOT IN 结果集为空①SELECT class_no FROM t_student; 结果为:②SELECT * FROM t_student where class_no not in (SELECT class_no FROM t_student);结论:查询语句中not in的结果集中不能有空值,否则查询结果与预期不...

2019-04-29 01:09:00 140

转载 maven release plugin插件

1.打包版本区别SNAPSHOT 快照版本(开发阶段,不稳定,容易出现bug)RELEASE 正式版本(外部依赖使用阶段,稳定,很少出现bug)Tag :标记每次代码提交的版本(比较稳定,类似分支)2.release plugin 插件的作用①检查本地有无未提交的代码②检查项目是否有快照版本依赖③执行单元测试,生成API文档④在本地和远程库的GIT中打上对应版本的...

2019-02-19 14:16:00 178

转载 builder模式

builder模式在Java中还是随处可见的,尤其是在阅读框架源码的过程中,为什么要采用builder模式编写代码呢?因为它有诸多好处,比如1.可读性强这是一段比较没有追求的开发同学经常的一种写法:Person p = new Person();p.setName("Zhang San");p.setSex("male");p.setAge(25);p.setHe...

2018-10-29 23:27:00 143

转载 数据库密码加密

使用DruidDataSource数据库连接池对密码加密首先我们得下载一个druid-1.0.16.jar的包其次键入命令 java -cp druid-1.0.16.jar com.alibaba.druid.filter.config.ConfigTools your_password这时候会生成privatekey,publickey,以及password,相关的截图如下...

2018-10-08 13:52:00 160

转载 spring boot自定义starter

前言我们都知道可以使用SpringBoot快速的开发基于Spring框架的项目。由于围绕SpringBoot存在很多开箱即用的Starter依赖,使得我们在开发业务代码时能够非常方便的、不需要过多关注框架的配置,而只需要关注业务即可。例如我想要在SpringBoot项目中集成Redis,那么我只需要加入spring-data-redis-starter的依赖,并简单配置一下连接信...

2018-09-04 16:53:00 100

转载 Java死锁以及命令检测

Java每个对象都有一把锁,当前进程使用对象锁1,没有释放该锁,又想要去获取另一把对象锁2,而对象锁2被另外一个线程持有,没有释放,这就很容易出现死锁1.死锁实例public class DeadLockTest { private static Object object1 = new Object(); private static Object object...

2018-07-15 23:48:00 475

转载 Java线程状态切换以及核心方法

1.Java线程状态1.1 线程主要状态①初始(NEW):新创建了一个线程对象,但还没有调用start()方法。②运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的成为“运行”。线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权,此...

2018-07-15 22:42:00 79

转载 java集合遍历删除指定元素异常分析总结

在使用集合的过程中,我们经常会有遍历集合元素,删除指定的元素的需求,而对于这种需求我们往往使用会犯些小错误,导致程序抛异常或者与预期结果不对,本人很早之前就遇到过这个坑,当时没注意总结,结果前段时间又遇到了这个问题,因此,总结下遍历集合的同时如何删除集合中指定的元素;1.错误场景复原public class ListRemoveTest { public static...

2018-07-15 12:46:00 173

转载 PowerMock单元测试

在Java程序的单元测试中常用的mock工具有Mockito和EasyMock。但是这两种mock工具都无法实现对静态、final、私有方法或类的mock。因此有了功能强大的PowerMock工具。PowerMock并不是一个独立、全新的工具而是在Mockito和EasyMock的基础上进行的扩展,它分别有针对Mockito级EasyMock的扩展实现。本文主要介绍Po...

2018-07-10 18:57:00 127

转载 Java虚拟机内存模型

在Java应用开发过程中,我们经常会遇到OutOfMemoryError异常,而不知道是啥原因,此时就要知道Java的内存模型啦,找了些资料,把Java内存模型总结一下;Java的内存结构,也就是运行时的数据区域;Java虚拟机在执行Java程序的过程中,会把它管理的内存划分为几个不同的数据区域,这些数据区域都有各自的用途,创建时间销毁时间,Java运行时的数据区域可以大致分为如下几个区...

2018-07-08 00:32:00 72

转载 docker中部署mongodb副本集

1.基本信息如下服务器地址 192.168.73.129副本集名称 rs容器节点及端口映射 m0 37017:27017 m147017:27017 m257017:27017注:机器环境安装docker2.部署步骤2.1下载mongo镜像docker pull mongo2.2 启动三个节点...

2018-07-04 17:48:00 154

转载 在centos7上搭建mongodb副本集

1.安装副本集介绍副本集(Replica Set)是一组MongoDB实例组成的集群,由一个主(Primary)服务器和多个备份(Secondary)服务器构成。通过Replication,将数据的更新由Primary推送到其他实例上,在一定的延迟之后,每个MongoDB实例维护相同的数据集副本。通过维护冗余的数据库副本,能够实现数据的异地备份,读写分离和自动故障转移。也就是说如...

2018-07-04 16:58:00 301

转载 kafka 高可靠

1.集群高可靠①搭建kafka集群(略)②重点配置项(每个broker配置相同,只有broker.id不一样)broker.id=1 当前机器在集群中的唯一标识,和zookeeper的myid性质一样listeners=PLAINTEXT://10.22.0.13:9092 最好用真实的IPadvertised.listeners=PLAINTEXT:/...

2018-07-03 16:43:00 73

转载 kafka 配置

1.broker 服务端配置配置值描述优先级broker.id1当前机器在集群中的唯一标识,和zookeeper的myid性质一样高delete.topic.enablefalse是否允许删除topic,此动作比较危险,默认为false高listenersPLAINTEXT://ip:9097根据最新官网配置...

2018-07-03 16:39:00 148

转载 linux上MongoDB安装部署

①下载安装包 mongodb-linux-x86_64-rhel62-3.6.3.tgz②解压: tar zxvf mongodb-linux-x86_64-rhel62-3.6.3.tgz③重命名:mv mongodb-linux-x86_64-rhel62-3.6.3/ mongodb-3.6.3④进入目录:cd mongodb-3.6.3/...

2018-05-27 12:24:00 108

转载 docker环境部署

docker环境部署1 查看当前系统版本只支持CentOS7版本的系统[root@bogon bin]# cat /etc/redhat-releaseCentOS Linux release 7.3.1611 (Core)2 安装docker-cesudo yum install -y yum-utils device-mapper-persistent-d...

2018-04-09 16:11:00 93

转载 定时任务线程的使用

实现定时任务线程有如下三种方式:①普通线程死循环 /** * 普通thread * 这是最常见的,创建一个thread,然后让它在while循环里一直运行着, * 通过sleep方法来达到定时任务的效果,这样可以快速简单的实现 */ Thread thread = new Thread(new Ru...

2018-03-01 17:05:00 178

转载 Eureka的功能特性及相关配置

1.服务提供者1.1服务注册服务提供者启动时,会通过rest请求的方式将自己注册到Eureka Server上,同时带上了自身服务的一些元数据信息。Eureka Server接收到请求后,将元数据信息存储在一个双层结构的Map中,其中与第一层的key是服务名,第二层的key是具体的服务实例名eureka.client.register-with-eureka=false 是否向注册中心注...

2018-02-27 16:11:00 214

转载 Eureka的基本功能和用法

1.基础架构eueka按逻辑上可以划分为3个模块,eureka-server,service-provider,service-consumereureka-server:服务端,提供服务注册和发现eureka-client-service-provider:服务端,服务提供者,通过http rest告知服务端注册,更新,取消服务eureka-client-service-consu...

2018-02-27 16:05:00 592

转载 java日志文件用法总结

1.基本概念日志门面(接口):commons logging ; slf4j ;日志具体实现:log4j ; logback(Spring 系列在使用) ; log4j2(添加了异步logger的实现,提高了性能)2.具体使用(门面:slf4j 实现 : log4j2)①添加maven依赖<dependencies> <depen...

2018-02-27 15:22:00 118

转载 java 关闭钩子函数的应用

Runtime.getRuntime().addShutdownHook(shutdownHook);说明:这个方法的意思就是在jvm中增加一个关闭的钩子,当jvm关闭的时候,会执行系统中已经设置的所有通过方法addShutdownHook添加的钩子,当系统执行完这些钩子后,jvm才会关闭。所以这些钩子可以在jvm关闭的时候进行内存清理、对象销毁等操作。用途1应用程...

2018-01-30 14:10:00 302

转载 线程间通信

线程之间需要一些协调通信,来共同完成一件任务。Java多线程中,线程之间通信最常用的两个方法是wait()与notify()使用wait()与notify()实现线程间的通信,需注意:①wait()与notify()必须配合synochnized关键字使用②wait()会释放锁,notify()不会释放锁1.不使用notify()与wait()实现通信:参照de...

2017-10-23 16:11:00 89

转载 hystrix 请求合并(6)

hystrix支持N个请求自动合并为一个请求,这个功能在有网络交互的场景下尤其有用,比如每个请求都要网络访问远程资源,如果把请求合并为一个,将使多次网络交互变成一次,极大节省开销。重要一点,两个请求能自动合并的前提是两者足够“近”,即两者启动执行的间隔时长要足够小,默认为10ms,即超过10ms将不自动合并。请求合并使多个请求可以批量化成单个HystrixCommand实例执...

2017-10-17 15:39:00 80

转载 hystrix 结果缓存机制(5)

hystrix支持将一个请求结果缓存起来,下一个具有相同key的请求将直接从缓存中取出结果,减少请求开销。要使用hystrix cache功能第一个要求是重写getCacheKey(),用来构造cache key;第二个要求是构建context,如果请求B要用到请求A的结果缓存,A和B必须同处一个context。通过HystrixRequestContext.init...

2017-10-17 11:30:00 134

转载 hystrix隔离策略(4)

hystrix提供了两种隔离策略:线程池隔离和信号量隔离。hystrix默认采用线程池隔离。1.线程池隔离不同服务通过使用不同线程池,彼此间将不受影响,达到隔离效果。例如:我们可以通过andThreadPoolKey配置使用命名为ThreadPoolTest的线程池,实现与其他命名的线程池天然隔离,如果不配置andThreadPoolKey则使用withGroupKey配...

2017-10-13 16:51:00 101

转载 hystrix基本配置项(2)

①配置HystrixCommand HystxixCommand支持如下的配置:GroupKey:该命令属于哪一个组,可以帮助我们更好的组织命令。CommandKey:该命令的名称ThreadPoolKey:该命令所属线程池的名称,同样配置的命令会共享同一线程池,若不配置,会默认使用GroupKey作为线程池名称。CommandProperties:该命令的一些设置,包括...

2017-10-13 15:05:00 90

转载 hystrix服务降级(3)

Hystrix使用fallback机制很简单,继承HystrixCommand只需重写getFallback(),继承HystrixObservableCommand只需重写resumeWithFallback(),比如上篇文章的HelloWorldHystrixCommand加上下面代码片段:@Overrideprotected String getFallback() {...

2017-10-13 14:25:00 85

转载 hystrix基本介绍和使用(1)

一、hystrix基本介绍Hystrix(https://github.com/Netflix/Hystrix)是Netflix(https://www.netflix.com/global)的一个开源项目,主要作用是通过控制那些访问远程系统、服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。 其可以看做是Netflix团队对分布式系统运维的各种理念和实践的总结。二、基...

2017-10-12 14:10:00 110

转载 Java SPI机制用法demo

①构建一个maven工程包含如下目录结构:src/main/javasrc/main/resourcessrc/test/javasrc/test/resources②在src/main/resources目录下新建META-INF/services目录③在src/main/java中新建包,然后新建一个接口例如package com.liu.sp...

2017-10-10 11:29:00 68

转载 volatile关键字

①volatile关键字:保证线程之间的变量的可见性例如:public class RunThread extends Thread{ private boolean isRunning = true; private void setRunning(boolean isRunning){ this.isRunning = isRunning; } ...

2017-09-29 14:00:00 59

转载 tomcat7支持https配置

基本环境:centos7.0 jdk1.8 tomcat71.下载tomcat,解压到指定目录例如:/home/test/apache-tomcat-7.0.812.生成证书首先进入JAVA_HOME的bin目录下输入如下代码: cd /usr/java/jdk1.8.0_121/bin/ keytool -genkey -alias ...

2017-09-28 16:52:00 161

转载 线程池的使用

Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。new...

2017-09-28 11:29:00 66

转载 RPC基于http协议通过netty支持文件上传下载

本人在中间件研发组(主要开发RPC),近期遇到一个需求:RPC基于http协议通过netty支持文件上传下载经过一系列的资料查找学习,终于实现了该功能通过netty实现文件上传下载,主要在编解码时处理,具体的代码如下:①文件上传 @Override public RPCRequest doDecodeRequest(FullHttpRequest reque...

2017-09-28 11:08:00 373

转载 netty基本用法

1.客户端①HelloClient.javapublic class HelloClient { public static String host = "127.0.0.1"; public static int port = 7878; /** * @param args * @throws Inte...

2017-09-28 10:50:00 112

转载 zipkin+kafka+elasticsearch

1.安装zookeeper(3.4.6)安装过程(略)启动zookeeper ./bin/zkServer.sh start或者bin/zookeeper-server-start.sh conf/zoo.cfgnetstat -tunlp|grep 2181 #查看zookeeper端口2. kafka 安装部署(kafka_2.12-0.11.0.0)2.1 ...

2017-09-27 17:06:00 219

转载 nginx安装部署(支持https)

1 安装环境准备1.1 准备环境清单以下是基本环境清单列表:软件名称版本号说明信息Linux CentOS6.7部署机器只需为Linux系统即可,无严格要求1.2 安装gcc和gcc++该步骤使用root用户直接安装即可,系统必须 yum能使用。...

2017-09-27 15:54:00 74

转载 线程安全

线程安全1.synchronized:保证线程安全,但会有大量的线程竞同一把锁,导致CPU飙升,资源浪费,甚至宕机;2.一个对象有一把锁private (static) synchronized void print(String arg){ System.out.println(arg); try { Thread.sleep(1000); Syste...

2017-08-24 10:34:00 62

转载 服务网关基于RPC的用法

企业为了保护内部系统的安全性,内网与外网都是隔离的,企业的服务应用都是运行在内网环境中,为了安全的考量,一般都不允许外部直接访问。API网关部署在防火墙外面,起到一层挡板作用,内部系统只接受API网关转发过来的请求。网关通过白名单或校验规则,对访问进行了初步的过滤。相比防火墙,这种软件实现的过滤规则,更加动态灵活。API网关作为对外提供服务的入口,就像企业服务的大门。一方面...

2017-08-22 18:02:00 610

转载 zookeeper基本命令

集群角色:Leader:客户端提供读和写服务Follower:提供读服务,所有写服务都需要转交给Leader角色,参与选举Observer:只提供读服务,不参与选举过程,一般是为了增强zk集群的读请求并发能力相关基本命令: bin:./zkServer sh start/stop/status./zkCli.sh 客户端连接客户端连接之后:ls ...

2017-08-22 17:58:00 66

转载 eclipse使用Git基本流程

1.安装GIT2.Git的使用①下载代码到eclipse(右键导入工程)②提交代码到本地(commit)③更新代码到本地(pull)④当本地出现冲突时,解决冲突,没有冲突当然就最好啦⑤提交代码到远程服务器上(push)注意:一般都没有mastert合并的权限,会新建一个分支,然后在服务...

2017-07-05 10:40:00 102

空空如也

空空如也

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

TA关注的人

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