自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

转载 为什么MySQL数据库索引选择使用B+树?

https://www.cnblogs.com/tiancai/p/9024351.html

2020-07-31 17:28:15 19

原创 SpringBoot基于redisson 实现分布式锁

一.启动redis servercd /Users/sunww/Documents/soft/Java/redis-2.8.17redis-server二. spring Boot 集成redisson框架此处spring Boot 版本为2.2.5<dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> ..

2020-07-29 17:28:24 37

原创 基于Zookeeper开源客户端Curator实现分布式锁

一. 启动zookeeper Servercd /Users/sunww/Documents/JAVA/Dubbo/zookeeper-3.4.12/bin/./zkServer.sh start二. 下单主要逻辑【这里主要使用了Curator来创建了一个ZK互斥锁】底层主要逻辑如下:package com.robinboot.service.facade.impl;import com.robinboot.facade.CuratorFacadeService;import

2020-07-29 10:04:20 44

转载 Java可重入锁与不可重入锁

所谓重入锁,指的是以线程为单位,当一个线程获取对象锁之后,这个线程可以再次获取本对象上的锁,而其他的线程是不可以的。synchronized 和 ReentrantLock 都是可重入锁。可重入锁的意义在于防止死锁。实现原理是通过为每个锁关联一个请求计数器和一个占有它的线程。当计数为0时,认为锁是未被占有的;线程请求一个未被占有的锁时,JVM将记录锁的占有者,并且将请求计数器置为1 。如果同一个线程再次请求这个锁,计数将递增;每次占用线程退出同步块,计数器值将递减。直到计数器为0,锁..

2020-07-15 14:54:52 81

原创 Curator与zookeeper版本问题,分布式锁

pom.xml如下: <!-- zookeeper --> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.8</version>

2020-07-15 12:18:03 53

原创 hadoop和大数据的关系?和spark的关系?

https://www.zhihu.com/question/23036370

2020-07-08 14:31:49 34

原创 Mac 下启用redis server和client

#编译rediswget http://download.redis.io/releases/redis-2.8.17.tar.gztar xzf redis-2.8.17.tar.gzcd redis-2.8.17make启动redis servercd /Users/sunww/Documents/soft/Java/redis-2.8.17redis-serverredis客户端启动 (另一个窗口的控制台)cd /Users/sunww/Documents/soft/Ja.

2020-07-03 16:08:48 53

原创 Java 编码技巧

https://mp.weixin.qq.com/s/CqVgOJGGK8hPN9FielHuRghttps://mp.weixin.qq.com/s/A1Z8YZyqQsFqK1TA1dTl2Q

2020-07-01 16:39:46 33

原创 Linux 日志打印到文件的2种方式

1. 打印日志到httx/logs/out.log中,日志一直累加,需要跑定时任务半夜1点切割日志。 如下:<?xml version="1.0" encoding="UTF-8"?><Configuration status="info" monitorInterval="30"> <Properties> <Property name="log_path">/httx/logs</Property> </Propertie

2020-06-30 09:22:46 154

转载 拦截器中,request中getReader()和getInputStream()只能调用一次,构建可重复读取inputStream的request.

由于 request中getReader()和getInputStream()只能调用一次在项目中,可能会出现需要针对接口参数进行校验等问题。因此,针对这问题,给出一下解决方案实现方法:先将RequestBody保存为一个byte数组,然后通过Servlet自带的HttpServletRequestWrapper类覆盖getReader()和getInputStream()方法,使流从保存的byte数组读取。然后再Filter中将ServletRequest替换为ServletReques.

2020-06-23 15:42:24 120

原创 Centos7下使用Docker运行SpringBoot项目

一. 将准备打包好的SpringBoot项目的Jar包上传到linux服务器(通过ftp上传)二. 创建一个文件夹docker ,里面有刚刚上传的SpringBoot jar包和Dockerfile文件docker-demo-0.0.1-SNAPSHOT.jar Dockerfile(命名必须如此,否则找不到)Dockerfile文件内容如下:FROM java:8-alpineADD docker-demo-0.0.1-SNAPSHOT.jar app.jarEXPOSE 8..

2020-06-12 10:51:17 68

转载 Centos7下安装Docker

一、安装docker1、Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。通过uname -r命令查看你当前的内核版本 $ uname -r2、使用root权限登录 Centos。确保 yum 包更新到最新。$ sudo yum update3、卸载旧版本(如果安装过旧版本的话)$ sudo yum remove docker docker-common docker-sel...

2020-06-12 10:31:49 53

原创 Mac下的虚拟机Centos7确认联网否?并设置联网

我这里Mac下用的虚拟机parallel desktop1. Centos7 确定有网络?答:ping www.baidu.com 超时的话,代表没网络。有网络返回如下界面:2.没网的话,设置如下,然后重新ping ,就可以看到有网络返回了。...

2020-06-11 18:48:35 62

原创 Spring Security 官方demo学习

Spring Security https://spring.io/projects/spring-security#learn1. 查看文档,如下:2. 这个界面一直拉到底,可以看到如下界面,Guides会教你创建一个 Spring Security 的demo3. 点开Securing a Web Application,进入到具体的创建步骤界面,如下:...

2020-06-09 17:14:10 74

原创 java 设置Excle导出数字格式

import jxl.Workbook;import jxl.WorkbookSettings;import jxl.write.*;import jxl.write.Number;WorkbookSettings settings = new WorkbookSettings();settings.setGCDisabled(true); // 关闭GCWritableWorkbook workbook = Workbook.createWorkbook(os, settings);Wr.

2020-05-27 15:14:38 75

原创 通过GC日志查调用GC的代码

线上反馈GC比较频繁。然后我们通过GC.log来锁定GC代码。1. 打印GC日志文件到磁盘:-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/Users/sunww/Desktop/logs/gc.log2. 查看GC日志:cat gc.log锁定发生GC的时间:“2020-05-11T16:42:02”然后在日志文件中查找这个时间左右的接口调用日志:可以看出是导出订单列表接口,触发了GC。然后通过查看导出Exc...

2020-05-11 17:03:25 67

原创 BoolQueryBuilder 和 wildcardQuery withFilter 查询

利用BoolQueryBuilder的must,should实现精确查找 /** * must,should查找 * @param keyword * @return */ @GetMapping("/blog/search/title") public JsonResult<List<BlogModel>&gt...

2020-04-30 09:56:18 419 2

原创 ElasticSearchTemplate 中文筛选 无结果的解决办法

// 精确查找,ElasticSearchTemplate加中文筛选后无结果 String field = "title"; BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder(); boolQueryBuilder.should(QueryBuilders.termsQ...

2020-04-29 17:30:23 71

原创 SpringBoot 集成 elasticsearch 实现精确查询

在上面几篇elasticsearch文章的基础上,本篇将SpringBoot 集成 elasticsearch 。在集成前,先放一张图,这个要严格遵守,否则会出现各种各样的问题。我本地使用的是红框标出来的这个版本。pom.xml文件如下:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://mav...

2020-04-29 09:36:17 442

原创 elasticsearch IK 中文分词器 精确查询

IKAnalyzer: 免费开源的java分词器,目前比较流行的中文分词器之一,简单,稳定,想要特别好的效果,需要自行维护词库,支持自定义词典。安装ik分词器插件https://github.com/medcl/elasticsearch-analysis-ik/releases?after=v6.4.2...

2020-04-27 11:18:55 137

原创 Java PDF文件生成

通过本地的Excle模版和运单数据生成PDF文件。思路是先把数据填入到Excle模版中,然后通过Excle转为PDF文件。Excle模版内容如下: <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> &...

2020-04-24 16:22:37 58

原创 FutureTask 和 Future

FutureTask例子如下:【异步计算一个列表的数字之和】package com.robinboot.service.test;import java.util.HashMap;import java.util.Map;import java.util.Random;import java.util.concurrent.*;/** * @auther: TF12778 ...

2020-04-09 15:35:21 48

原创 Java SPI 学习

先定义一个接口LJSPIServicepackage com.robinboot.service;/** * @Auther: TF12778 * @Date: 2020/3/27 16:56 * @Description: */public interface LJSPIService { public void prinfMessage();}写2个基于接口...

2020-03-27 17:34:06 40

原创 一键启动Spring Boot项目的shell脚本

编写shell脚本,分为两个脚本,一个底层shell,一个Web层脚本一. 脚本startMt.sh脚本如下:#!/bin/bash# 构建web#read appnameappname="robinbootService"echo "input="$appnamePID=$(ps -ef | grep $appname | grep -v grep | awk '{pri...

2020-03-25 16:26:14 80

原创 SpringBoot多Module项目 命令打包

一. 项目介绍我这个SpringBoot项目分为2个Jar项目:一个底层MT项目(包含公共的Api层,Service层),一个上层Web项目,具体如下截图:二. 各层POM文件配置如下api层的pom.xml打包配置: <build> <plugins> <plugin> ...

2020-03-25 16:01:51 104

原创 Java lombok配置安装

Maven配置如下: <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.8</version> </dependency>确...

2020-03-24 13:53:04 47

原创 Spring获取Bean的两种方式

1. 利用@Configuration注解加载Bean(建造者模式的Car见上一篇)package com.JXWork.test;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;/** * @auther...

2020-03-21 15:05:25 52

原创 Java Builder 模式

package com.JXWork.test;/** * @auther: TF12778 * @date: 2020/3/21 13:17 * @description: */public final class Car { /** * 必需属性 */ final String carBody;//车身 final String t...

2020-03-21 13:43:23 50

转载 深入理解synchronized底层原理,一篇文章就够了!

前言 一、synchronized的特性 1.1 原子性 1.2 可见性 1.3 有序性 1.4 可重入性 二、synchronized的用法 三、synchronized锁的实现 3.1 同步方法 3.2 同步代码块 四、synchronized锁的底层实现 五、JVM对synchronized的优化 5.1 锁膨胀 5.1.1 偏向锁 5.1....

2020-03-10 11:13:58 38

原创 Mycat 水平拆分----分表

mycat和mysql环境搭建如前几篇文章。主从机IP如下说明:192.168.1.111 主机 dn1192.168.1.109 从机 dn2分表:1. 修改schema.xml,将orders表挂载在两个节点(dn1,dn2)上vim /usr/local/mycat/conf/schema.xml<table name="o...

2020-03-01 22:44:31 145

原创 Mycat 垂直拆分--分库

mycat和mysql环境搭建如前几篇文章。主从机IP如下说明:192.168.1.9 主机 dn1192.168.1.109 从机 dn2一. 先配置scheme.xml二. 分别登录主从机的mysql,创建2个空的数据库orders# 在数据节点 dn1、dn2 上分别创建数据库 orders# 登录mysql,创建表cd /u...

2020-03-01 19:25:55 65

原创 Mycat 读写分离,主从切换

如上篇文章,在搭建好mysql主从数据库的基础上,现在开始利用mycat实现一主一从读写分离。主机:192.168.1.10 从机:192.168.1.108修改主从机的名字:hostnamectl set-hostname 192.168.108hostnamectl set-hostname 192.168.108修改完毕通过hostname,查看ji qi一. my...

2020-02-27 19:00:46 50

原创 MAC下Centos7 搭建Mysql主从数据库

准备条件:2台Mac电脑,通过虚拟机都装有Centos7,首先在给2个Centos7系统装好Mysql8.0,安装方法见我前面的文章。Mac-A的Centos地址为192.168.1.103,为主数据库。Mac-B的Centos地址为192.168.1.106,为从数据库。因为我们这边的linux系统是装在虚拟机上的,为了实现主从复制,首先确保192.168.1.103和192.168...

2020-02-25 18:21:48 165

原创 Mac ssh: connect to host 192.168.1.4 port 22: Connection refused

我用MAC1去连接MAC2电脑,然后报connect to host 192.168.1.4 port 22: Connection refused错误,如下图:解决办法:选择系统偏好设置->选择共享->点击远程登录然后再输入命令ssh 192.168.1.4发现已经解决问题...

2020-02-23 15:15:53 397

原创 Spring Cloud 网关

工程结构如下:1. 启动eureka-server源码如下:package com.didispace;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.builder.SpringApplicationBuilder;im...

2020-01-19 16:39:21 52

原创 Spring Cloud 服务注册,负载均衡

Eureka:注册中心(类似于Zookeeper)Ribbon: 负载均衡,通过RestTemplate来发起url的请求。比如:restTemplate.getForEntity("http://COMPUTE-SERVICE/add?a=10&b=20", String.class).getBody();Fegin: 负载均衡,通过接口来发起请求。类似于dubbo的那种调用方式...

2020-01-19 16:28:12 36

原创 Mac下Gitlab和Sourcetree使用之拉取代码时,报密码错误

通过Sourcetree拉取代码时,git报密码错误,解决:删除这个git的钥匙串(gitlab.xxx.lo Access Key for git),然后退出sourcetree,重新打开sourcetree,会提示你输入git密码,此时输入通过ssh生成的git公钥的密码(123456),然后拉取就可以了Mac下 Gitlab和Sourcetree使用 2018...

2020-01-17 16:47:15 372

原创 Java 多线程的正确使用姿势

昨天线上的导出文件数据出现了问题(导出的数据= A表通过sql查出来+B表通过异步接口查询出来数据拼装),经过排查是由于我使用了Spring core包中的ThreadPoolTaskExecutor类去异步获取另一个B表中的数据,B表中的数据还没有完全返回回来。接口就已经返回了,所以导致导出数据问题。1. 导出数据会丢失的代码如下:<!-- 通用异步执行器 --> &lt...

2020-01-17 11:00:37 67

原创 ThreadPoolExecutor的LinkedBlockingQueue 大小设置为10000,会溢出吗?

1 . ThreadPoolExecutor的LinkedBlockingQueue 大小设置为10000(如下申明),会溢出吗?private final ExecutorService es = new ThreadPoolExecutor(8, 10, 100, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(...

2020-01-16 18:12:18 1420

原创 Java 导出excle(中文名的excle)

@SuppressWarnings("unchecked") @ResponseBody @RequestMapping(value = "/exportOrderList", method = RequestMethod.GET) public String exportOrderList(@RequestParam Map<String, Obje...

2020-01-08 15:15:55 37

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