自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 CompletableFuture

import org.junit.Assert;import org.junit.Test;import java.util.concurrent.*;import java.util.concurrent.atomic.AtomicInteger;import java.util.function.Consumer;import java.util.function.Function;/** * CompletableFutureTest */public class Complet

2021-11-21 14:12:04 152

原创 Kafka-主题

主题主题的目的是将消息进行归类。主题创建通过shell创建主题[root@host]# ./kafka-topics.sh --zookeeper localhost:2181/myKafka --create --topic topicName --partitions 4 --replication-factor 1创建成功以后会在log.dir或者log.dirs参数所配置的目录下创建相应的主题分区,如果只有一个节点,副本因子只能为1。副本因子的个数必须小于或者等于Borker

2021-09-08 22:36:41 198

原创 Kafka-消费者

消费者基本概念消费者:消费者负责订阅Kafka中的主题,并且从订阅的主题上拉取消息。消费组:每个消费者都有一个对应的消费者组。也只属于一个消费组。如果所有消费者都属于同一个消费组,那么所有的消息都会被均衡地投递到每一个消费者,每一个消息只会被一个消费者处理。如果所有的消费者都属于不同消费组,那么消息就会被广播给所有的消费者。当某个主题中分区数小于小于消费者个数,那么就会出现有的消费者不能接收到消息。代码import org.apache.kafka.clients.consumer.*

2021-09-07 21:21:13 251

原创 Kafka生产者

Kafka生产者代码同步import org.apache.kafka.clients.producer.KafkaProducer;import org.apache.kafka.clients.producer.ProducerConfig;import org.apache.kafka.clients.producer.ProducerRecord;import java.util.HashMap;import java.util.Map;import java.util.concu

2021-09-06 22:10:36 251 1

原创 Java优雅退出

Java关闭时的回调Runtime-ShutdownHook当在JVM崩溃,无法接收到信号量和kill -9 pid时无法执行。当存在多个ShutdownHook时,JVM无法保证它们执行的先后顺序在JVM关闭期间不能动态的添加或者去除ShutdownHook不能在Shutdownhook中调用System.exit(),它会卡住JVM,导致进程无法退出。Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {

2021-09-05 22:11:44 260

原创 Kafka基本概念及体系结构

Kafka基本概念Kafka体系结构名词解释Producer: 发送消息的一方,负责创建消息然后将其投递到Kafka中Consumer: 接收消息的一方,接收消息Broker:Kafka实例。Topic: Kafka中以主题为单位进行分类,生产者负责将消息发送到特定的主题,消费者负责订阅主题并进行消费分区: 分区属于主题中的一个部分,一个主题可有多个分区,一个分区只属于单个主题,一个主题中的分区可以是不同的。...

2021-07-29 21:19:13 160

原创 RabbitMQ死信队列

RabbitMQ死信队列当一条消息变成死信的时候,该消息会发送到死信队列中代码实现Constantpublic class RabbitMQConstants { // dlx public static final String DLX_QUEUE_TEST = "dlx_queue_test"; public static final String DLX_EXCHANGE_TEST = "dlx_exchange_test"; public static

2021-07-09 12:35:37 98

原创 RabbitMQ TTL过期

RabbitMQ TTL过期设置具体的某一条消息或者队列中所有的消息过期时间SpringBoot Queue设置TTL过期@Beanpublic Queue ttlQueue() { Map<String, Object> props = new HashMap<>(); // TTL队列消息过期时间 props.put("x-message-ttl", 10000); Queue queue = new Queue(RabbitMQCon

2021-07-08 13:41:03 93

原创 RabbitMQ消息确认

RabbitMQ消息确认消息确认机制消息确认机制消息的确认,是生产者投递消息后,如果Borker接收到消息,则会给我们生产者一个应答生产者进行接收应答,用来确定这条消息是否正常的发送到Broker,这种方式也是消息的可靠性投递的核心保障消息确认使用配置文件spring: rabbitmq: publisher-confirm-type: CORRELATED publisher-returns: true生产者rabbitTemplate.setCo

2021-07-07 12:18:37 242

原创 RabbitMQ整合SpringBoot

RabbitMQ整合SpringBootpom<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> <dependency>

2021-07-06 12:20:06 51

原创 RabbitMQ工作模式代码

RabbitMQ工作模式代码队列生产者生产的消息,由消费者消费,每条消息只会被一个消费者给消费生产者public class Producer { public static void main(String[] args) throws IOException, TimeoutException { // 创建连接工厂并进行配置 ConnectionFactory connectionFactory = new ConnectionFactory()

2021-07-05 12:35:12 91

原创 RabbitMQ安装及常用命令

RabbitMQ安装安装依赖文件socat :yum install socat -yRabbitMQ和Erlang兼容性https://rabbitmq.com/which-erlang.html安装根据版本兼容性关系获取相应的安装包安装erlangrpm -ivh erlang-version.rpmerl -version安装RabbitMQrpm -ivh rabbitmq-server-version.rpmrabbitmqctl --version

2021-07-02 16:35:11 73

原创 RabbitMQ架构模型及概念

RabbitMQ架构模型及概念RabbitMQ架构模型当生产者生产一条消息的时候,消息将发布到Exchange(交换机)。交换机根据和队列的绑定规则将相应的消息路由分发到对应的队列。然后Broker将消息投递给订阅了该队列的消费者或者消费者从队列中去拉取消息RabbitMQ核心概念Server - 又称Broker,用于接收客户端连接,实现AMQP实体服务Connection - 连接,应用程序与Broekr的网络连接Channel - 网络信道,几乎所有的操作都在Channel中进行,

2021-07-01 12:24:04 191 1

原创 递归 算法

递归算法概念递归算法是函数自身调用自身函数的一种算法递归算法应用/** * 简单的递归算法 * @author freeflying * @since 1.0 */public class SimpleRecursion { /** * 求0到num的和 * @param num */ public static int recursion(int num){ if (num < 1){ retur

2021-06-30 15:51:25 101 1

原创 通过数组实现队列

package com.free.fly.algorithm.linetable;import java.util.Objects;/** * 通过数组的方式实现队列 * @author freeflying * @since 1.0 */public class ArrayQueue<E> { private Object[] elements; private int defaultSize = 10; private int len;

2021-06-30 11:26:43 53

原创 通过数组实现栈

package com.free.fly.algorithm.linetable;import java.util.Objects;/** * 通过数组的方式实现栈 * @author freeflying * @since 1.0 */public class ArrayStack<E> { private Object[] elements; private int defaultSize = 10; private int len;

2021-06-30 11:25:36 66

原创 双向链表实现

双向链表概念双向链表中节点拥有上一个节点指针和下一个节点的指针代码package com.free.fly.algorithm.linetable;import java.util.Objects;/** * 双向链表 * * @author freeflying * @since 1.0 */public class DoubleLinkedList { private Node head; private int len; public Doub

2021-06-29 13:12:28 84

原创 单向链表实现

单链表单链表概念单链表由数据和下一个节点指针组成单链表的实现package com.free.fly.algorithm.linetable;import java.util.Objects;/** * 单链表 * * @author freeflying * @since 1.0 */public class SingleLinkedList { private Node head; private int len; public SingleLi

2021-06-29 12:54:28 83

原创 生成树形菜单-通过两个map集合

1.数据库sql语句 create table company( company_id int not null auto_increment, parent_company_id int null, name ...

2018-09-03 11:16:04 530

原创 java8中的日期时间处理类

package com.freeOfFlying.java8.date;import java.time.LocalDate;import java.time.LocalDateTime;import java.time.LocalTime;import java.time.ZonedDateTime;import java.time.format.DateTimeFormatter...

2018-08-24 22:17:50 1240

转载 非公平锁

package com.freeflying.thread.reentrantlock;import java.util.concurrent.locks.ReentrantLock;public class FairAndNoFair { public static void main(String[] args) { final FairAndNoFairEx fEx=new ...

2018-08-21 22:55:17 127

转载 线程的公平锁

package com.freeflying.thread.reentrantlock;import java.util.concurrent.locks.ReentrantLock;public class FairAndNoFair { public static void main(String[] args) { final FairAndNoFairEx fEx=new ...

2018-08-21 22:53:48 189

转载 线程多对多交替打印-condition

package com.freeflying.thread.reentrantlock;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.ReentrantLock;/** * 线程多对多交替打印 * @ClassName: ManyToManyPrint * @Descr...

2018-08-20 21:56:14 495

转载 线程一对一交替打印-condition

package com.freeflying.thread.reentrantlock;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.ReentrantLock;/** * 线程一对一交替打印 * @ClassName: OneToOnePrint * @Descrip...

2018-08-20 21:44:53 336

转载 使用Condition唤醒指定种类线程

package com.freeflying.thread.reentrantlock;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class Condi...

2018-08-19 20:39:43 947 1

原创 byte[]与short/int/hex之间转换

public class HexToOther { /** * 将十六进制字符串转换为byte数组 * @param str * @return */ public static byte[] toBytes(String str) { if(str == null || str.trim().equals("")) { ...

2018-08-14 17:50:05 2062

原创 图片操作

public class PicToHex { /** * 将图片转16进制 * @param picPath * @param hexPath */ public static void pic2Hex(String picPath,String hexPath) { FileInputStream fis =null;...

2018-08-14 17:48:46 350

转载 原型模式

定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象优点:性能优良-原型模式是在二进制流的拷贝,要比直接new一个对象性能好很多,特别要在一个循环体内产生大量的对象时,原型模式可以更好地体现其优点           逃避构造函数的约束-直接在内存中拷贝,构造函数不会执行,优点就是减少约束,缺点也是减少约束使用场景:资源优化场景-类初始化需要消耗非常多的资源,这个资源包...

2018-08-13 22:37:06 100

原创 springboot打war包

添加spring-boot-starter-tomcat的provided依赖(编译时依赖)&lt;dependency&gt;&lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;&lt;artifactId&gt;spring-boot-starter-tomcat&lt;/artifactId&gt;&lt;scope&gt;...

2018-08-12 21:20:16 97

原创 建造者模式

1.定义将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示2.优点封装性:建造者模式可以让客户端不必须知道产品内部组成的细节,建造者独立,容易扩展便于控制细节风险3.使用场景相同的方法,不同的执行顺序,产生不同的事件结果时,可以采用建造者模式多个部件或零件,都可以装配到一个对象中,但是产生的结果又不同,则可以使用该模式产品类非常赋值...

2018-08-06 13:03:44 140

原创 HttpClient远程调用接口

&lt;dependency&gt; &lt;groupId&gt;org.apache.httpcomponents&lt;/groupId&gt; &lt;artifactId&gt;httpclient&lt;/artifactId&gt; &lt;version&gt;4.5.3&lt;/version&gt;&lt;/dependency&gt

2018-08-04 11:17:23 1565

原创 模板方法模式

定义:定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤类图抽象模板类package com.freeflying.designmodle.templatemethod;/** * 抽象模板类 * @ClassName: AbstractTemplateClass * @Description: ...

2018-08-01 22:25:50 96

原创 lock实现线程锁

package com.freeflying.thread.reentrantlock;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class ReentrantLockReleaseSynch { public static void main...

2018-08-01 22:21:30 98

原创 idea操作git

1.stash2.pull3.unstash4.如果在unstash时,有本地和仓库同名但是内容不一致的文件则mergemerge时三个窗口,中间是result界面,然后将你需要保留的点击箭头移动到result中间的界面上5.commit directory6.选择要提交的文件,对不需要提交的文件revert7.commit and push...

2018-07-30 23:24:49 265

原创 swagger的基本使用

Controller类上注解@Api(tags = "AberrantController",description = "设置-系统配置-异常设置")    用于在页面显示该控制器的控制器名字和中文解释方法上注解@ApiOperation(value = "异常设置-[修改A0001]")   说明该方法的定义义@ApiResponses({@ApiResponse...

2018-07-30 22:52:55 257

原创 IDEA调试接口

2018-07-30 12:40:39 4773

翻译 抽象工厂模式

1.定义为创建一组相关或相互依赖的对象提供一个接口,而无需指定他们的具体实现类2.通用代码//抽象产品类public abstract class AbstractProductA{//每个产品共有的方法public void shareMethod(){}//每个产品相同的方法,不同实现public abstract void doSomething();...

2018-07-26 21:34:37 105

原创 join方法的使用

package com.freeflying.thread.join;/** * join方法的使用 * @ClassName: JoinUse * @Description: * @author freeflying * @date 2018年7月26日 */public class JoinUse { public static void main(String[] a...

2018-07-26 21:07:22 272

原创 springboot中mybatis定义类型转换器

import org.apache.ibatis.type.JdbcType;import org.apache.ibatis.type.TypeHandler;import java.sql.CallableStatement;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQ...

2018-07-26 20:54:32 2804

原创 线程通信交叉运行

package com.freeflying.thread.communication;public class CrossBackup { public static void main(String[] args) { CrossBackupEx crossBackupEx=new CrossBackupEx(); for (int i = 0; i &lt; 10; i++)...

2018-07-24 22:37:59 262

空空如也

空空如也

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

TA关注的人

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