- 博客(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
203
原创 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
291
原创 Kafka-消费者
消费者基本概念消费者:消费者负责订阅Kafka中的主题,并且从订阅的主题上拉取消息。消费组:每个消费者都有一个对应的消费者组。也只属于一个消费组。如果所有消费者都属于同一个消费组,那么所有的消息都会被均衡地投递到每一个消费者,每一个消息只会被一个消费者处理。如果所有的消费者都属于不同消费组,那么消息就会被广播给所有的消费者。当某个主题中分区数小于小于消费者个数,那么就会出现有的消费者不能接收到消息。代码import org.apache.kafka.clients.consumer.*
2021-09-07 21:21:13
354
原创 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
440
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
361
原创 Kafka基本概念及体系结构
Kafka基本概念Kafka体系结构名词解释Producer: 发送消息的一方,负责创建消息然后将其投递到Kafka中Consumer: 接收消息的一方,接收消息Broker:Kafka实例。Topic: Kafka中以主题为单位进行分类,生产者负责将消息发送到特定的主题,消费者负责订阅主题并进行消费分区: 分区属于主题中的一个部分,一个主题可有多个分区,一个分区只属于单个主题,一个主题中的分区可以是不同的。...
2021-07-29 21:19:13
188
原创 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
140
原创 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
151
原创 RabbitMQ消息确认
RabbitMQ消息确认消息确认机制消息确认机制消息的确认,是生产者投递消息后,如果Borker接收到消息,则会给我们生产者一个应答生产者进行接收应答,用来确定这条消息是否正常的发送到Broker,这种方式也是消息的可靠性投递的核心保障消息确认使用配置文件spring: rabbitmq: publisher-confirm-type: CORRELATED publisher-returns: true生产者rabbitTemplate.setCo
2021-07-07 12:18:37
318
原创 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
80
原创 RabbitMQ工作模式代码
RabbitMQ工作模式代码队列生产者生产的消息,由消费者消费,每条消息只会被一个消费者给消费生产者public class Producer { public static void main(String[] args) throws IOException, TimeoutException { // 创建连接工厂并进行配置 ConnectionFactory connectionFactory = new ConnectionFactory()
2021-07-05 12:35:12
128
原创 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
138
原创 RabbitMQ架构模型及概念
RabbitMQ架构模型及概念RabbitMQ架构模型当生产者生产一条消息的时候,消息将发布到Exchange(交换机)。交换机根据和队列的绑定规则将相应的消息路由分发到对应的队列。然后Broker将消息投递给订阅了该队列的消费者或者消费者从队列中去拉取消息RabbitMQ核心概念Server - 又称Broker,用于接收客户端连接,实现AMQP实体服务Connection - 连接,应用程序与Broekr的网络连接Channel - 网络信道,几乎所有的操作都在Channel中进行,
2021-07-01 12:24:04
232
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
201
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
107
原创 通过数组实现栈
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
118
原创 双向链表实现
双向链表概念双向链表中节点拥有上一个节点指针和下一个节点的指针代码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
139
原创 单向链表实现
单链表单链表概念单链表由数据和下一个节点指针组成单链表的实现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
115
原创 生成树形菜单-通过两个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
576
原创 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
1307
转载 非公平锁
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
159
转载 线程的公平锁
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
232
转载 线程多对多交替打印-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
551
转载 线程一对一交替打印-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
367
转载 使用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
1012
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
2147
原创 图片操作
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
541
转载 原型模式
定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象优点:性能优良-原型模式是在二进制流的拷贝,要比直接new一个对象性能好很多,特别要在一个循环体内产生大量的对象时,原型模式可以更好地体现其优点 逃避构造函数的约束-直接在内存中拷贝,构造函数不会执行,优点就是减少约束,缺点也是减少约束使用场景:资源优化场景-类初始化需要消耗非常多的资源,这个资源包...
2018-08-13 22:37:06
122
原创 springboot打war包
添加spring-boot-starter-tomcat的provided依赖(编译时依赖)<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>...
2018-08-12 21:20:16
121
原创 建造者模式
1.定义将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示2.优点封装性:建造者模式可以让客户端不必须知道产品内部组成的细节,建造者独立,容易扩展便于控制细节风险3.使用场景相同的方法,不同的执行顺序,产生不同的事件结果时,可以采用建造者模式多个部件或零件,都可以装配到一个对象中,但是产生的结果又不同,则可以使用该模式产品类非常赋值...
2018-08-06 13:03:44
171
原创 HttpClient远程调用接口
<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.3</version></dependency>
2018-08-04 11:17:23
1617
原创 模板方法模式
定义:定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤类图抽象模板类package com.freeflying.designmodle.templatemethod;/** * 抽象模板类 * @ClassName: AbstractTemplateClass * @Description: ...
2018-08-01 22:25:50
117
原创 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
134
原创 idea操作git
1.stash2.pull3.unstash4.如果在unstash时,有本地和仓库同名但是内容不一致的文件则mergemerge时三个窗口,中间是result界面,然后将你需要保留的点击箭头移动到result中间的界面上5.commit directory6.选择要提交的文件,对不需要提交的文件revert7.commit and push...
2018-07-30 23:24:49
464
原创 swagger的基本使用
Controller类上注解@Api(tags = "AberrantController",description = "设置-系统配置-异常设置") 用于在页面显示该控制器的控制器名字和中文解释方法上注解@ApiOperation(value = "异常设置-[修改A0001]") 说明该方法的定义义@ApiResponses({@ApiResponse...
2018-07-30 22:52:55
288
翻译 抽象工厂模式
1.定义为创建一组相关或相互依赖的对象提供一个接口,而无需指定他们的具体实现类2.通用代码//抽象产品类public abstract class AbstractProductA{//每个产品共有的方法public void shareMethod(){}//每个产品相同的方法,不同实现public abstract void doSomething();...
2018-07-26 21:34:37
133
原创 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
310
原创 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
2865
原创 线程通信交叉运行
package com.freeflying.thread.communication;public class CrossBackup { public static void main(String[] args) { CrossBackupEx crossBackupEx=new CrossBackupEx(); for (int i = 0; i < 10; i++)...
2018-07-24 22:37:59
292
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人