自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 资源 (2)
  • 收藏
  • 关注

原创 数据库脚本可重复执行的思考

通常在项目升级迭代过程中会有许多操作数据库或是同项目发布需要执行的脚本,当一个全新的项目初始化部署时,可以不需要考虑脚本的重复执行问题,只需要初始脚本即可,但是随着不断的迭代,伴随着越来越多的脚本累积,就可能带来更多的问题数据,最终导致几个版本下来,预期的数据可能和我们的设想所不一致,或是因为脚本的重复执行,变更了(或是重新初始化)用户已经设定好的数据,这时候,脚本的可重复执行就尤为重要。脚本...

2019-11-12 19:17:28 1099

转载 Sharding-JDBC 读写分离实例

环境概览框架 版本号 Spring Boot 1.5.12.RELEASE Sharding-JDBC 2.0.3 MyBatis-Plus 2.2.0 前言介绍Sharding-JDBC是当当网的一个开源项目,只需引入jar即可轻松实现读写分离与分库分表。与MyCat不同的是,Sharding-JDBC致力于提供轻量级的服务框架,无需额外部署,底层...

2019-04-27 14:54:08 722

原创 记一次Docker的Mysql主从复制异常

具体错误打印:Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from position > file size'该错误是由于在配置主从同步时,所配置的binlog错误或是Position错误,在从库...

2019-04-24 09:33:23 355

转载 基于Docker的Mysql主从复制搭建

为什么基于Docker搭建?资源有限 虚拟机搭建对机器配置有要求,并且安装mysql步骤繁琐 一台机器上可以运行多个Docker容器 Docker容器之间相互独立,有独立ip,互不冲突 Docker使用步骤简便,启动容器在秒级别利用Docker搭建主从服务器首先拉取docker镜像,我们这里使用5.7版本的mysql:docker pull mysql:5.7然后使用此镜...

2019-04-24 09:16:18 180

原创 Redis如何做持久化

RDB(快照)持久化保存某个时间点的全量数据快照SAVE:阻塞redis的服务器进程,直到RDB文件被创建完毕 BGSAVE:Fork(创建进程,实现了Copy-On-Write)出一个子进程来创建RDB文件,不阻塞服务器进程自动化触发RDB持久化方式根据redis.conf配置里的SAVEm n 定时触发(BGSAVE方式) 主从复制时,主节点自动触发 执行Debug Re...

2019-03-24 18:06:10 485

原创 【多线程】4、notify和notifyall的区别

等待池: 假设线程A调用了某个对象的wait()方法,线程A就会释放该对象的锁,同时线程A就进入到了该对象的等待池中,进入到等待池中的线程不会竞争该对象的锁。notify和notifyall的区别:notifyAll会让所有处于等待池中的线程全部进入锁池去竞争获取锁的机会。 notify只会随机选取一个处于等待池中的线程进入锁池去竞争获取锁的机会。...

2019-03-24 16:25:27 185

原创 【多线程】3、如何实现处理线程的返回值

初始实例:public class CycleWait implements Runnable { private String value; public static void main(String[] args) { CycleWait cycleWait = new CycleWait(); Thread thread = new...

2019-03-19 21:58:52 1318

原创 【多线程】2、Thread和Runnable是什么关系

Thread是一个类,Runnable是一个接口 Thread类实现Runnable接口 Runnable接口仅有一个run()抽象方法,故并无多线程特性,依赖于Thread类的start方法来创建一个子线程,在子线程里调用Thread实现好的run方法去执行相应的逻辑 因为java的单一集成原则,推荐使用Runnable接口...

2019-03-19 21:22:07 295

原创 【多线程】1、进程和线程的区别

进程和线程的由来:1、串行:初期的计算机智能串行执行任务,并且需要长时间等待用户输入2、批处理:预先将用户的指令集中成清单,批量串行处理用户指令仍然无法并发执行3、进程:进程独占内存空间,保存各自运行状态相互间不干扰并且可以互相切换,为并发处理任务提供了可能4、线程:共享进程的内存资源,相互间切换更快速,支持更细粒度的任务控制,使进程内的子任务得以并发执行进程与线程的区别...

2019-03-19 21:06:36 313

原创 Window下Docker安装RabbitMQ

1、首先将docker环境安装好,然后去rabbitMQ官网(https://hub.docker.com/_/rabbitmq/)查找对应的版本2、启动docker,打开控制台,输入命令docker pull rabbitmq:management这里可以选择输入你所选的版本号,如下安装完毕3、输入命令,查看已安装列表,再次确认安装成功docker images...

2019-03-03 15:53:42 1973

原创 静态方法中调用Spring注入的方法

import org.springframework.beans.factory.annotation.Autowired;import javax.annotation.PostConstruct;public class InitMethod { /** * 需要调用的服务 */ @Autowired private SpringServ...

2019-01-09 17:01:03 1281

原创 java利用反射获取对象前后修改的内容(用于日志记录)

import java.beans.PropertyDescriptor;import java.lang.reflect.Field;import java.lang.reflect.Method;public class BeanChangeUtil<T> { public static <T> void main(String[] args) {...

2018-10-08 15:36:07 4404

原创 《Spring实战》bean的生命周期

在传统的Java应用中,bean的生命周期很简单。使用Java关键字new进行bean实例化,然后该bean就可以使用了。一旦该bean不再被使用,则由Java自动进行垃圾回收。相比之下,Spring容器中的bean的生命周期就显得相对复杂多了。正确理解Spring bean的生命周期非常重要,因为你或许要利用Spring提供的扩展点来自定义bean的创建过程。1.Spring对bean进...

2018-09-08 09:15:56 280

原创 《Spring实战》使用应用上下文

Spring自带了多种类型的应用上下文。下面罗列的几个是你最有可能遇到的:AnnotationConfigApplicationContext:从一个或多个基于Java的配置类中加载Spring应用上下文。 AnnotationConfigWebApplicationContext:从一个或多个基于Java的配置类中加载Spring Web应用上下文。 ClassPathXmlApplic...

2018-09-08 08:56:32 307

原创 ngrok搭建web服务器(内网穿透)

ngrok可以做web服务器,可以做内网穿透,如公司内网外面的网络不能访问,这时候就需要到它了。可以上官网(https://ngrok.com/)或者中文网(http://www.ngrok.cn/)下载ngrok 。下载解压后得到这样一个文件,我把它放在了D盘根目录;win+r输入cmd打开控制台, 输入命令 : d:先切换盘符目录,随后输入命令: ngrok http ...

2018-09-07 14:01:06 1052

原创 内存屏障的四种类型

LoadLoad屏障:抽象场景:Load1; LoadLoad; Load2Load1 和 Load2 代表两条读取指令。在Load2要读取的数据被访问前,保证Load1要读取的数据被读取完毕。 StoreStore屏障:抽象场景:Store1; StoreStore; Store2Store1 和 Store2代表两条写入指令。在Store2写入执行前,保证Store1的...

2018-09-05 16:20:20 3047

原创 获取当前正在运行的所有线程组

private Thread[] findAllThreads() { ThreadGroup group = Thread.currentThread().getThreadGroup(); ThreadGroup topGroup = group; /* 遍历线程组树,获取根线程组 */ while (group != null) { t...

2018-08-31 14:49:44 3467

原创 面向对象基本原则(S.O.L.I.D 原则)

单一职责(Single Responsibility),类或者对象最好是只有单一职责,在程序设计中如果发现某个类承担着多种义务,可以考虑进行拆分。 开关原则(Open-Close, Open for extension, close for modification),设计要对扩展开放,对修改关闭。换句话说,程序设计应保证平滑的扩展性,尽量避免因为新增同类功能而修改已有实现,这样可以...

2018-08-30 08:42:42 290

原创 ArrayList_add( ) 方法源码分析

以下为ArrayList的基础参数:/** * 默认初始容量 */private static final int DEFAULT_CAPACITY = 10;/** * 用于空实例的共享空数组实例 */private static final Object[] EMPTY_ELEMENTDATA = {};/** * 数组缓冲区中存储ArrayList元素的数组缓冲区...

2018-08-27 17:46:40 300

原创 JSON传输协议制定

通常情况下,大到系统与系统间的通信,小到控制器的返回,我们现在都是采用的json传输,但是单单传输需要的数据,往往不能达到对返回结果成功与否的判断,或是出现解析错误,这时候就需要制定一套标准的传输协议: status 字符串 状态码 0:成功;1:错误 msg 字符串 错误信息 ...

2018-08-24 09:35:53 3430

原创 java线程池配置(ThreadPoolTaskExecutor)

corePoolSize : 线程池维护线程的最少数量,哪怕是空闲的。maximumPoolSize :线程池维护线程的最大数量。keepAliveTime : 线程池维护线程所允许的空闲时间。unit : 线程池维护线程所允许的空闲时间的单位。workQueue : 线程池所使用的缓冲队列,改缓冲队列的长度决定了能够缓冲的最大数量。拒绝任务:拒绝任务是指当线程池里面的线程数量达到 m...

2018-08-20 18:24:39 925

原创 java重入锁的实现方法

为每个锁关联一个获取计数值和一个所有者线程。当计数值为零时,这个锁就被认为是没有被任何线程所持有,当线程请求一个未被持有的锁时,JVM将记下锁的持有者,并将获取计数值置为1。如果同一个线程再次获得这个锁,计数值将递增,而当线程退出同步代码块时,计数器会相应的递减,这个锁将被释放。 ...

2018-08-20 18:18:40 376

原创 JAVA构建器模式

在实例化一个类的过程中,通常会遇到多个参数的构造函数,但如果有些参数是非必需的呢?每次都要初始化那么多参数么?public class Person { private int id;//身份证号 private String name;//姓名 private int age;//年龄 private boolean sex;//性别 private...

2018-08-20 18:16:36 626

转载 40 个 Java 多线程问题总结

1、多线程有什么用?一个可能在很多人看来很扯淡的一个问题:我会用多线程就好了,还管它有什么用?在我看来,这个回答更扯淡。所谓”知其然知其所以然”,”会用”只是”知其然”,”为什么用”才是”知其所以然”,只有达到”知其然知其所以然”的程度才可以说是把一个知识点运用自如。OK,下面说说我对这个问题的看法:(1)发挥多核CPU的优势随着工业的进步,现在的笔记本、台式机乃至商用的应用服务器至少...

2018-08-17 08:30:09 174

原创 js使用jsonp跨域回调实例(异步结果一致性)

因为js跨域仅能异步,所以操作返回值存在时间上的差异,故使用回调函数的方式解决,以下简单示例:domain(val,function(json){ console.log(json);})var domain = function(val, callback) { //瞎写的链接 var url = 'http:/www.baidu.com?val=val&a...

2018-08-15 16:10:51 1343

原创 js利用script标签进行跨域请求

ajax的jsonp虽然可以进行跨域,但是由于返回的数据问题,可能存在无法正确捕捉回执结果,即:成功请求且在控制台Network中看到结果,但是ajax始终捕捉为错误信息且无法拿取返回值。下面直接上代码:var correct = function(address) { var script = document.createElement('script'); scri...

2018-08-14 17:41:41 2304

原创 SpringCloud使用Hystrix模式设置(服务容错、超时设置、服务熔断)

优先核心服务,非核心服务不可用或是弱可用通过HystrixCommand注解指定fallbackMethod(回退函数)中具体实现降级逻辑Hystrix如何解决依赖隔离:Hystrix使用命令模式HystrixCommand(Command)包装依赖调用逻辑,每个命令在单独线程中/信号授权下执行。 可配置依赖调用超时时间,超时时间一般设为比99.5%平均时间略高即可.当调用超时时...

2018-08-01 08:47:44 5932

转载 Spring Cloud实战小技巧(解决feign GET传pojo、继承接口方法参数注解等问题)

spring cloud 实践项目结构config 配置中心端口:8888,方便起见直接读取配置文件,生产环境可以读取git。application-dev.properties为全局配置。先启动配置中心,所有服务的配置(包括注册中心的地址)均从配置中心读取。eureka 注册中心端口:8761,/metadata端点实现metadata信息配置。zuul 网关端口:8...

2018-07-30 15:20:58 1875

转载 SpringCloud微服务完整实例

转自:https://blog.csdn.net/ittechnologyhome/article/details/73824784,侵删一微服务架构概述1.1 微服务特性以及优点每个服务可以独立运行在自己的进程里 一系列独立运行的微服务(goods,order,pay,user,search…)共同构建了整个系统 每个服务为独立的业务开发,一个微服务只关注某个特定的功能,例如...

2018-07-30 14:18:41 18660 2

原创 java保留两位小数

double f = 0;BigDecimal b = new BigDecimal(f);double num = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();System.out.println(num); public static void main(String[] args) { Bi...

2018-07-27 10:30:03 1716

原创 No default constructor for entity解决方法

错误信息:No default constructor for entity: org.tongda.busonline.schedule.domain.DhMdispatchcommandExt【原因】The no-argument constructor, which is also a JavaBean convention, is a requirement for all ...

2018-07-25 16:49:51 2515

转载 FeignClient与RestTemplate的区别比较简单研究

JAVA 项目中接口调用怎么做 ?Httpclient Okhttp Httpurlconnection RestTemplate上面是最常见的几种用法,我们今天要介绍的用法比上面的更简单,方便,它就是FeignFeign是一个声明式的REST客户端,它的目的就是让REST调用更加简单。Feign提供了HTTP请求的模板,通过编写简单的接口和插入注解,就可以定义好HTTP请求的...

2018-07-24 09:40:34 1088

原创 feign访问微服务

Feign声明式REST客户端(伪RPC) 采用基础接口的注解 使用ribbon做负载均衡/** * 访问接口 */@FeignClient(name = "client") // application.namepublic interface ClientService { @GetMapping("home/hello") String helloCli...

2018-07-24 09:36:08 273

原创 restTemplate访问微服务

首先添加实现负载均衡的ribbon依赖包<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-ribbon</artifactId></dependency>配置RestT...

2018-07-24 09:34:53 1073

原创 Redis Hset 命令 - HashGet方式获取以及HashSet写入(将哈希表 key 中的字段 field 的值设为 value )

简单来说就是用一条查询拿出存储在redis中的value -> map对应的key的值:redis是key-value的数据的Nosql数据库,这个例子的redis某一个key的value就是上述的map,不使用fieldKey的话只能是先将整个map的值拿出来,再取对应的key的值,这样造成了资源和性能的浪费,使用field可以很好解决这个问题,以下分为原有逻辑以及改进之后的逻辑...

2018-07-23 09:07:32 10104

原创 Redis实现分布式锁

在集群等多服务器中经常要使用到同步处理一下业务,这时普通的事务是满足不要业务需求,需要分布式锁。分布式锁的实现方式有多种,如redis实现分布式锁,zookeeper实现分布式锁等,这篇先实现redis分布式锁。实现原理通过setnx(lock_timeout)实现,如果设置了锁返回1,已经有值没有设置成功返回0。 死锁问题:通过时间来判断是否过期,如果已经过期,获取到过期时间get(l...

2018-07-23 09:01:34 222

原创 SpringBoot集成Redis

一:MAVEN依赖<dependencies> <!-- Redis客户端 --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>

2018-07-23 08:58:09 223

原创 《Spring实战》跟踪Spring MVC的请求

每当用户在Web浏览器中点击链接或提交表单的时候, 请求就开始工作了。 对请求的工作描述就像是快递投送员。 与邮局投递员或FedEx投送员一样, 请求会将信息从一个地方带到另一个地方。请求是一个十分繁忙的家伙。 从离开浏览器开始到获取响应返回, 它会经历好多站, 在每站都会留下一些信息同时也会带上其他信息。 下图展示了请求使用Spring MVC所经历的所有站点。  Dispa...

2018-07-18 18:16:26 359

原创 【实际项目】根据时间范围查询优化

根据所传条件在SQL中添加时间范围:sql.append("and (stationDateB) >= (\'" + detailreportpojo.getStartdate() + "\') and (stationDateE) <= (\'" + detailreportpojo.getEnddate() + "\') ");需要两个时间字段都...

2018-07-17 17:52:02 1400

原创 java中数字转字符串的效率问题

public static void main(String[] args) { long start = System.currentTimeMillis(); for (int i = 0; i < 1000000; i++) { String a = i + ""; } System.out.println(System.currentTimeMillis() - sta...

2018-07-17 17:47:19 1747

JAVA核心知识点整理.zip

涵盖各类java知识点:基础/jvm/集合/并发/spring/微服务/网络/MQ/分布式 很多

2019-07-25

RedisTemplate 用法

详细介绍RedisTemplate5种数据结构,并且有每种不同数据结构的用法的例子

2018-07-09

空空如也

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

TA关注的人

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