自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ES高可用及集群管理

ES高可用及集群管理Elasticsearch 是一个分布式、高扩展、高实时、RESTful 风格的搜索与数据分析引擎。服务可用性:允许有节点停止服务数据可用性:部分节点丢失,不会丢失数据水平扩展集群容错一、分片1、什么是分片及其作用节点:一个运行中的ES实例成为一个节点;集群:由一个或者多个拥有相同cluster.name配置的节点组成;分片:分片(shard)是一个最小级别“工作单元(worker unit)”,它只是保存了索引中所有数据的一部分。​ 一个索引可以存储

2021-07-18 11:00:24 1269

原创 ThreadPoolExecutor线程池异常被吞问题分析

一、起因:在使用ScheduledThreadPoolExecutor执行一个定时任务时,发现执行一次后,任务就不再执行。代码举例:private static final ScheduledExecutorService executorService = new ScheduledThreadPoolExecutor(1); private static final CountDownLatch countDownLatch = public static void main(String[

2021-04-04 17:20:46 1801 1

原创 使用freemarker生成静态html文件

一、引入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> <version>2.1.10.RELEASE</version></dependency>二、yml配置#freemarker相关配置属性

2021-02-13 12:05:07 3084 2

原创 使用apache ftpClient 进行文件上传下载

引入依赖<!-- apache FTPClient --><dependency> <groupId>commons-net</groupId> <artifactId>commons-net</artifactId> <version>3.7.2</version></dependency>ftpservice 接口public interface FTPSe

2021-02-13 11:42:22 747 1

原创 mac安装homebrew、jdk、git、maven

一、安装homebrew进入官网:https://brew.sh然后按照提示在终端输入/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"如果出现443 connection refuse,连接不上可以改用国内镜像。/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/mast

2020-06-20 17:43:49 963

原创 Jira使用LDAP授权认证,并且连接到内部目录(关联原来jira上的数据)

一、概述公司使用了jira,上面已经创建了很多账户、项目、任务等,现在为了管理公司内部各个应用程序的登录认证,接入了LDAP进行认证,但是ldap上创建的账户和jira上的账户不是同一个账户,即如果我们直接使用ldap创建的账号登录,那么原来jira上面的数据都没了,这肯定是无法接受的,下面来讲如何使用ldap认证登录,并且关联到原来的数据。二、jira配置ldap认证1、使用有管理权限的账号,进入 管理->用户管理->用户目录,然后点击添加目录,添加内部LDAP认证( Internal

2020-06-11 11:31:42 4144

原创 linux上zookeeper单机搭建伪集群

Zookeeper一、下载zookeeper解压到指定文件夹下:tar -zxvf apache-zookeeper-3.5.8-bin.tar.gz -C /home/zk/改个名字(这个随意) rename apache-zookeeper-3.5.8-bin.tar zookeeper二、将解压后的zookeeper复制两份(一共三份)* cp -r zookeeper zookeeper2* cp -r zookeeper zookeeper3三、修改配置文件进入zookeeper

2020-06-02 16:18:20 317

原创 通过jira Api注册webHook(钩子),触发事件后接收jira回调信息

需要在jira上注册一个钩子,当issue状态变更,或者新增issue等操作时,接收jira回调信息,触发系统其他操作。参考文档:https://developer.atlassian.com/server/jira/platform/webhooks/一、注册webHook请求url:<JIRA_URL>/rest/webhooks/1.0/webhook,发送post请求,需...

2020-04-29 11:27:48 8950

原创 使用Java client对接jira api

通过java程序,实现在jira上增删改查项目、issue等操作。一、使用curl的方式直接调用jira api(非本文重点)参考资料:https://docs.atlassian.com/software/jira/docs/api/REST/7.7.1/#api/2上面记录了各种操作的需要调用的url 以及请求类型。使用方式就像这样:public static String getI...

2020-04-28 17:34:47 6603 18

原创 java面试笔记

一、Synchronized关键字和Lock的区别1、Synchronized关键字不会造成死锁(出现异常释放锁),而Lock可能会造成死锁。2、Lock可以让等待锁的线程响应中断,Synchronized不行。3、通过Lock可以知道是否获取锁成功,而Synchronized不行。4、Lock可以提高多个线程读的效率(读写锁)。5、性能上,竞争不激烈,两者差不多;竞争非常激烈,Lock...

2020-04-02 17:36:26 263

原创 Java高并发下请求合并如何处理

场景描述:在大并发量下每秒有一万个请求向后端查询数据,这样我们就需要向后端请求一万次,甚至查询一万次数据库。我们要做的请求合并就是每隔一段时间(10ms)将这段时间内的请求合并到一起进行批量查询,减少查询数据库的次数。思考:1、如何存放一段时间内的请求?这里我们可以用队列。2、如何每隔一段时间执行任务?用定时任务线程池。3、每个请求都是单独的线程,如何保证各个请求能得到自己的查询结果?这里...

2020-04-01 11:07:12 3066 3

原创 ThreadLocal学习与内存泄漏解析

一、ThreadLocal是干嘛的ThreadLocal是一个线程局部变量,也就是属于线程私有,在不同线程之中不共享,在同一个线程之中是共享的。可以想象,一个变量会在该类的多个方法中使用,就可以把这个变量设计到形参中,各个方法传递使用。但在多个方法设计中,都增加那样的参数,接口变得复杂,维护成本也增大。这时候就可以用上ThreadLocal。ThreadLocal可以使用的地方很多,后面再细说。...

2019-12-03 10:59:27 516

原创 RocketMQ消费者端消息列队六种负载均衡算法分析

在RocketMQ启动的时候会启动负载均衡线程,过程如下://DefaultMQPullConsumerImpl.start() mQClientFactory.start(); //上面点进去 ->MQClientInstance.start(),rebalanceService继承了ServiceThread, //ServiceThread实现了Runnable接口 this...

2019-11-13 14:11:46 3328

原创 RocketMQ订阅关系一致性分析

RocketMQ的消费者,在订阅topic的时候需要遵循“订阅关系一致性”原则,即:一个消费者分组(group)下的所有消费者实例的处理逻辑必须一致,一旦订阅关系不一致就会导致消费混乱,甚至消息丢失。对大多数分布式应用来说,一个group下通常会挂有多个consumer实例。由于RocketMq的消费者订阅关系由Topic+Tag组成,因此保持订阅一致就意味着,所有consumer实例需要保证:...

2019-11-04 19:58:38 3817

原创 基于Zookeeper的分布式锁实现

一、分布式锁使用场景当我们的系统使用集群部署、在多台服务器上部署的时候,我们java提供的synchronized关键字和Lock接口这种基于单jvm的锁就无法满足我们的需求了。这个时候就需要使用到分布式锁。二、分布式锁需要具有哪些条件1、互斥性:和我们本地锁一样互斥的是最基本的,但分布式锁得保证在不同的节点的不同线程互斥。2、可重入性:同一个节点的同一个线程获得锁后,可再次获得锁。3、...

2019-08-11 14:46:48 248

原创 mybatis拦截器学习-手写一个分页插件

一、我们先来看一下mybatis的执行流程。从图中可以看出在Excutor之前都是在加载配置,创建SqlSeesion等工作.所以mybatis允许拦截的地方只有四处:1、Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)2、ParameterHandler...

2019-07-29 15:57:10 580

原创 Spring AOP加注解实现redis缓存

今天来做一个通过注解的形式实现redis缓存在我们平时的redis的使用中经常会有一种写法,就是先查redis,如果redis中没有,再查数据库。 String key = KEY + "showButton"; if (redisClient.hasKey(key)) { String str = redisClient.get(key, String...

2019-06-28 17:20:12 913 1

原创 了解redis客户端,手写一个简单的Jedis

Redis通信协议使用的是RESP协议,协议具有容易实现、解析快、人类可读等特点,协议的每部分都是以\r\n结尾。redis客户端与服务器端通信也是通过socket网络编程,我们先来模拟一个redis服务器端拦截请求,使用socketServer开启一个6379端口,接收打印信息@SpringBootApplicationpublic class RedisdemoApplication {...

2019-06-23 15:05:11 481

原创 java I/O流的一些常用操作

java i/o 的一些操作文件流:FileInputStream/FileOutputStream, FileReader/FileWriter这四个类是专门操作文件流的,用法高度相似,区别在于前面两个是操作字节流,后面两个是操作字符流。它们都会直接操作文件流,直接与OS底层交互。因此他们也被称为节点流。package com.lw.study.excelTest;import ...

2019-05-22 14:36:25 231

原创 spring AOP + redis实现一个url拦截器,防止重复提交

为了防止重复提交请求造成的问题,这里我们使用aop加上redis缓存做一个拦截器。为了方便使用,我们以注解的形式来使用。一、新建一个自定义注解import java.lang.annotation.*;/** * 针对Controller的Action拦截, * 关键字是RequestMapping第一个value, * 如无value将不进行拦截 */@Target({Elem...

2019-05-10 17:40:50 1224

原创 Mybatis批量更新出现BadSqlGrammarException错误

进行批量更新操作,xml文件如下: <update id="batchUpdateByPrimaryKeySelective" parameterType="java.util.List"> <foreach collection="list" item="record" separator=";"> update qs_capital_platfor...

2019-03-27 16:45:25 2756

原创 SpringBoot集成RocketMQ(进阶版)

上一篇文章我们讲了如何简单的springboot集成rocketmq(建议先看上一篇,此篇实在上一篇的基础上改进的),但在实际应用中,往往不会只有一个消息处理类,MessageProcessorImpl。消费者会收到不同topic,不同tag的的消息,这里我们来对我们的consumer类和消息处理类进行扩展一下。一、修改我们的MessageProcessor接口。改造一下:package c...

2019-01-21 15:44:36 10633 6

原创 SpringBoot集成RocketMQ(简单版)

本文讲解SpringBoot如何集成RocketMQ(简单版),合适初学者。一、首先新建一个maven项目(也可以直接新建一个springboot项目)导入如下jar包&amp;amp;lt;parent&amp;amp;gt; &amp;amp;lt;groupId&amp;amp;gt;org.springframework.boot&amp;amp;lt;/groupId&amp;amp;gt; &amp;amp;lt;ar

2019-01-17 10:57:55 4481 3

原创 java 日期工具类DateUtil

import org.apache.commons.lang3.time.DateUtils;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;pub...

2019-01-09 17:16:46 677 1

原创 使用freemarker模板,将数据库表转换生成枚举类。

前言:在数据库中配置了一个枚举类,然后想把数据库中的数据,导出生成一个枚举类。数据库表结构:CREATE TABLE qs_account_trade_oper_config( id INT(10) AUTO_INCREMENT COMMENT '全局Id' PRIMARY KEY, oper_name VARCHAR(64) ...

2018-12-29 11:15:44 1274 4

原创 java查看日志的基本命令tail,less以及查看本机IP,ifconfig

查看日志的方式有很多,这里记录几个常用的tail和less命令。一、首先进入测试服务器。打开终端。ssh root@xxxxxxxxx运行上一步之后输入密码,我们可以通过ssh-copy-id root@xxxx命令来记住密码,以后登录就不需要在输入密码了。二、 常用tail命令使用tail(尾巴)命令是查看文件的最后几行,也是我们最常用的,一般就是查看最新的日志文件。 1、监控...

2018-10-25 15:41:57 4993 4

原创 Java并发编程——ReentrantLock重入锁解析

重入锁所谓重入锁,即支持重入性,表示能够对共享资源重复加锁,即当前线程获取该锁再次获取不会被阻塞。重入性在线程获取锁的时候,如果已经获取锁的线程是当前线程的话则直接再次获取成功; 由于锁会被获取n次,那么只有锁在被释放同样的n次之后,该锁才算是完全释放成功。ReentrantLock分为公平锁与非公平锁,默认选择的是非公平锁(无参构造函数),另一种构造方式,可传入一个boolean值。tr...

2018-09-20 15:00:16 245 3

原创 springboot 2.x版本Redis设置JedisConnectionFactory.setHostName()过时

一、今天新建一个项目用以前的方式集成redis时,发现JedisConnectionFactory.sethostName等方法提示过时,并且RedisCacheManager的配置构造方法也改变了,显示错误。2.X版本可以使用RedisStandaloneConfiguration、RedisSentinelConfiguration、RedisClusterConfiguration三种方式配...

2018-09-12 15:00:37 11921 8

原创 SpringBoot使用JavaMailSenderImpl发送邮件

一、首先在pom中添加依赖&lt;dependency&gt; &lt;groupId&gt;javax.mail&lt;/groupId&gt; &lt;artifactId&gt;javax.mail-api&lt;/artifactId&gt; &lt;version&gt;1.5.6&lt;/version&g

2018-08-29 14:17:46 1713

原创 设计模式(5)-适配器模式(Adapter Pattern)

适配器模式(Adapter Pattern),顾名思义,就像变压器,转接头差不多。就像美国的生活电压是110V,中国是220V,就需要一个变压器将220V转换成110V,或者一个Type-C接口想插如USB接口的东西,你就需要一个转换器,而这就是我们适配器模式干的事情。 适配器常用的有:类适配器,对象适配器,接口适配器。 通常包含三个角色: 目标(Target)角色:客=客户端所期待的接口,...

2018-07-26 16:28:36 213

原创 设计模式(4)-原型模式(Prototype Pattern)

所谓原型模式就是从原型实例去复制克隆出新的实例,而绝不是去从类去实例化。就好比打飞机的游戏,我们操作的主角飞机只有一架,可以用单例模式去实现,而敌机好多都是一样的,如果每出一个敌机我们就去new一个敌机的对象,一下来个三十个,就去new三十个敌机的对象吗?那显而会造成极大的内存浪费,这个时候考虑使用原型模式是非常好的。 如何去使用原型模式呢?,java中所有的类都是从java.lang.Obje...

2018-07-25 14:58:03 207

原创 设计模式(3)-建造者模式(Builder Pattern)

建造者模式是对象的创建模式,可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表下那个的产品对象。 也就是说使用建造者模式,可以使客户端不需要知道所生成的产品对象有哪些零件,每个产品对应两件彼此有何不同,是怎么建造出来的,以及怎样组成产品。建造者模式涉及四个角色1、抽象建造者(Builder):给出一个抽象接口,以规范产品对象的各个组成成分的建造,...

2018-07-24 18:43:02 200

原创 设计模式(2)-单例模式

确保某各类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类成为单例类。单例模式的要点:1、某各类只能有一个实例。2、它必须自行创建这个类的实例。3、它必须向整个系统提供这个实例。比如每台计算机可以有若干个传真卡,但是只应该有一个软件负责管理传真卡,以避免出现两份传真作业同事传到传真卡中的情况。单例模式的先实现方式1、饿汉式单例public class...

2018-07-24 09:59:02 198

原创 设计模式(1)-工厂模式

工厂模式可以将其分为三种。 1.简单工厂模式。 2.工厂方法模式。 3.抽象工厂模式。下面我们一个一个来说。一、简单工厂模式简单工厂模式,或称静态工厂方法模式,是类的创建模式。简单工厂模式是由一个 工厂对象根据收到的消息决定要创建哪一个类的对象实例。工厂类负责创建的对象比较少,客户只需要传入工厂类参数,对于如何创建对象(逻辑)不关心。简单工厂模式很容易违反高内聚低耦合的原...

2018-07-23 09:13:40 214

原创 maven配置setting.xml文件,使用阿里云下载地址

简简单单,直接复制过去代替掉原来的就可以使用了。&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;!--Licensed to the Apache Software Foundation (ASF) under oneor more contributor license agreements. See the NOTICE fil...

2018-06-28 10:57:52 15326 13

原创 Java进阶笔记

此篇文章主要是把一些在学习开发过程中遇到的坑记在小本本上(会不断更新)。一、IDEA中使用lombok1.下载插件、导入jar包。 2.将Annotation Processors中的Enable annotation processing勾上。 3.将Java Compiler中的 Use compiler选择为Javac(切记,不然注解不会生效)。二、写SQL时limi...

2018-05-04 16:41:42 335

原创 Effective java学习笔记一:考虑使用静态工厂方法代替构造方法

一个类允许客户端获取其实例的传统方法就是提供一个公共的构造方法。也就是通过new调用构造器。其实大多数情况下,更好的方法应该是自己写一个公共静态工厂方法,返回类的实例。比如下面这个例子。public static Boolean valueOf(boolean b) { return b ? Boolean.TRUE : Boolean.FALSE;}提供公共静态工厂方...

2018-04-24 17:26:27 347

原创 Android Studio 导入Eclipse项目

将Eclipse项目或者其他的Android项目导入Android,会因为项目结构不一样,或者下载的grandle版本不一致,经常会导致import project卡死。解决的简单办法首先,打开Android studio 然后import project,选择你要导入的Eclipse项目,这个时候AS会帮你自动生成一些文件,但是因为下载相应的版本它是到国外的网站下载,所以项目会卡死,...

2018-03-08 16:05:40 356

原创 springBoot集成redis

定义Redis 是一个高性能的key-value数据库。它支持存储的value类型很多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)。reids的优点以下是Redis的一些优点。异常快 - Redis非常快,每秒可执行大约110000次的设置(SET)操作,每秒大约可执行81000次的读取/获

2018-01-05 14:35:09 17979 24

原创 创建SpringBoot工程并集成Mybatis

今天我们在springboot上集成mybatis。首先创建一个maven项目。添加依赖dependency>groupId>org.springframework.bootgroupI>artifactId>springbootstarterartifactId>dependency>dependency>groupId>org.springframework.bo

2018-01-05 14:09:17 2086 2

空空如也

空空如也

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

TA关注的人

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