Java语言相关
整理java相关文章
BatmanWayne
看的越多,越不敢写代码。
展开
-
RabbitMQ学习(四)-- 消息的可靠性投递
目录一、confirm模式1、配置2、添加callback回调方法3、测试结果二、return 模式1、配置2、添加returnCallBack代码3、测试结果一、confirm模式1、配置在新版rabbitMQ中,publish-confirms配置过时了,如果要使用confirm模式,则使用如下配置publisher-confirm-type: correlated即spring: redis: host: 10.211.55.原创 2020-12-15 23:31:39 · 196 阅读 · 0 评论 -
RabbitMQ学习(三)-- Spring boot 集成 RabbitTemplate
1,引包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> <version>2.4.0</version> </dependency>2,原创 2020-12-14 00:18:11 · 1106 阅读 · 1 评论 -
Spring boot集成xxl-job
1st 原始网址https://www.xuxueli.com/xxl-job/2nd 下载源码原创 2020-12-11 23:02:28 · 619 阅读 · 0 评论 -
RabbitMQ学习(一)-- producer&&consumer
目录一、producer1,引入包2,创建main3,测试二、consumer1,代码2,测试一、producer1,引入包 <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>5.原创 2020-12-09 01:23:43 · 254 阅读 · 0 评论 -
SpringCloud学习(九)-- 引入配置中心
目录1,创建git仓库2,添加应用配置文件3,增加config-server服务工程1)引入配置包2)开启配置中心服务3)添加相关配置4)测试4,普通工程引入配置中心1)引入config包2)删除application,yml,添加bootstrap.yml3)测试1,创建git仓库目前笔者使用的是gitee码云,在国内可以避免出现被墙的情况。地址:传送门2,添加应用配置文件添加user-dev.yml,代码如下server: por原创 2020-12-06 16:28:43 · 211 阅读 · 0 评论 -
SpringCloud学习(八)-- Gateway服务引入
1,引入必要的包 <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> <depen原创 2020-12-05 21:32:12 · 935 阅读 · 0 评论 -
SpringCloud学习(七)-- Feign客户端的ribbon和hystrix
1,配置文件#由于feign中已经集成rebbion和hystrix,所以可以不用额外引入包ribbon: ConnectTimeout: 1000 #连接超时时长 ReadTimeout: 2000 #数据通信时长 MaxAutoRetries: 0 #当前服务重试次数 MaxAutoRetriesNextServer: 0 #重试多少次服务 OkToRetryOnAllOperations: false #是否对所有的请求方式都重试feign: hystrix:原创 2020-12-03 00:40:52 · 190 阅读 · 0 评论 -
SpringCloud学习(六)-- Feign客户端
一、添加依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>二、打开Feign调用@SpringBootApplication@Enab原创 2020-12-02 00:20:32 · 131 阅读 · 0 评论 -
SpringCloud学习(四)-- Ribbon使用
一、服务提供方启动两个服务二、服务消费方,restTemplate增加注解 @Bean @LoadBalanced//开启Ribbon的负载均衡,调用时,可以通过user-service名字,找到对应的服务。 public RestTemplate restTemplate(){ return new RestTemplate(); }三、服务消费方以服务提供方名字进行调用 @GetMapping("/{id}") publ原创 2020-11-27 00:12:46 · 246 阅读 · 0 评论 -
SpringCloud学习(三)-- Eureka的高可用
目录一、Eureka配置二、服务配置1)user-service2)consumer-demo三、测试一、Eureka配置server: port: ${port:10086}spring: application: name: eureka-servereureka: client: service-url: # eureka服务地址,如果是集群的话;需要指定其他集群的eureka地址 defaultZone: ${de原创 2020-11-26 00:34:12 · 745 阅读 · 1 评论 -
SpringCloud学习(一)--环境搭建
目录一、建立工程二、添加依赖三、添加服务提供者1)工程结构2)pom依赖3)核心controller四、添加服务消费者1)工程目录结构2)pom文件依赖3)核心controller五、测试一、建立工程建立之后的工程如下二、添加依赖<parent> <artifactId>spring-boot-starter-parent</artifactId> <groupId&g原创 2020-11-25 01:19:56 · 179 阅读 · 0 评论 -
SpringCloud学习(二)--Eureka注册中心
一、新建Eureka-server工程新建完成后工程结构如下二、添加依赖 <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId&原创 2020-11-25 00:48:44 · 152 阅读 · 0 评论 -
利用redission延时队列,实现指定时长后,再执行其他操作
1,核心原理redission-delayQueue原创 2020-11-15 13:45:07 · 1410 阅读 · 0 评论 -
多线程下载或者复制文件
1,核心类RandomAccessFile2,核心思想 a)在目标处建立一个和源文件大小一致的空文件。//File file = new File("/Users/waynezhao/Downloads/PCQQ2020.exe");File file = new File("/Users/waynezhao/Downloads/temp.log");RandomAccessFile ref = new RandomAccessFile(file,"rws");ref.setLe..原创 2020-11-01 23:15:02 · 156 阅读 · 0 评论 -
硬币兑换
1,原文地址https://leetcode-cn.com/problems/coin-change/2,题目给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回-1。示例1:输入: coins = [1, 2, 5], amount = 11输出: 3 解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2], amount = 3输出...原创 2020-06-24 14:49:05 · 360 阅读 · 0 评论 -
二叉树层次遍历
1,原文地址https://leetcode-cn.com/problems/binary-tree-level-order-traversal/2,题目给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]来源:力扣(L...原创 2020-06-09 23:11:03 · 148 阅读 · 0 评论 -
电话号码的字母组合
1,原文地址https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/2,题目给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].说明:尽管上面的答案是按字典序排列的,但是你..原创 2020-05-25 22:13:20 · 175 阅读 · 0 评论 -
求Pow(x,n)
1,原文https://leetcode-cn.com/problems/powx-n/2,题目实现pow(x, n),即计算 x 的 n 次幂函数。示例 1:输入: 2.00000, 10输出: 1024.00000示例2:输入: 2.10000, 3输出: 9.26100示例3:输入: 2.00000, -2输出: 0.25000解释: 2-2 = 1/22 = 1/4 = 0.25说明:-100.0 <x< 100.0n是 32...原创 2020-05-18 23:56:57 · 708 阅读 · 0 评论 -
验证二叉搜索树
1,原文https://leetcode-cn.com/problems/validate-binary-search-tree/2,题目给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。3,源码解法一class Solution { public boolean isValidBST(TreeNode root) {原创 2020-05-17 18:42:35 · 169 阅读 · 0 评论 -
括号生成
1,原文https://leetcode-cn.com/problems/generate-parentheses/2,题目数字 n代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例:输入:n = 3输出:[ "((()))", "(()())", "(())()", "()(())", "()()()" ]通过次数126,603提交次数167,996来源...原创 2020-05-17 15:04:01 · 204 阅读 · 0 评论 -
二叉树遍历
1,原文https://leetcode-cn.com/problems/binary-tree-inorder-traversal/2,题目给定一个二叉树,返回它的中序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]进阶:递归算法很简单,你可以通过迭代算法完成吗?3,解法解法一:递归class Solution { public List<Integer> ino...原创 2020-05-10 17:30:20 · 153 阅读 · 0 评论 -
字母异位词分组
1,网址https://leetcode-cn.com/problems/group-anagrams/2,题目给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"]输出:[ ["ate","eat","tea"], ["nat","ta...原创 2020-04-30 00:20:36 · 165 阅读 · 0 评论 -
有效的字母异位词
1,原文地址https://leetcode-cn.com/problems/valid-anagram/solution/you-xiao-de-zi-mu-yi-wei-ci-by-leetcode/2,题目给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例1:输入: s = "anagram", t = "nagaram"输出: tr...原创 2020-04-28 00:41:48 · 147 阅读 · 0 评论 -
柱状图中最大的矩形
1,原文地址https://leetcode-cn.com/problems/largest-rectangle-in-histogram/2,题目给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为[2,1,5,6,2,3]。...原创 2020-04-25 13:46:58 · 159 阅读 · 0 评论 -
最小栈
1,原文https://leetcode-cn.com/problems/min-stack/2,题目设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop()—— 删除栈顶的元素。top()—— 获取栈顶元素。getMin() —— 检索栈中的最小元素。示例:MinStack min...原创 2020-04-17 23:28:12 · 178 阅读 · 0 评论 -
Latch模式--多线程同步
1,相关文章推荐Java多线程---CountDownLatch用法实例POI结合线程池批量处理导入减少导入时间2,直接源码package com.wayne.latchPattern;import java.sql.Time;import java.util.concurrent.TimeUnit;public abstract class Latch { ...原创 2020-04-12 23:34:57 · 243 阅读 · 0 评论 -
生产者消费者---简易消息队列实现
目录1,场景2,源码a)消息体b)消息队列c)生产者d)消费者e)测试用例f)结果输出1,场景适用场景太多,不做描述。直接上源码2,源码a)消息体package com.wayne.producerConsumer;public class Message { private String data; ...原创 2020-04-12 00:40:21 · 419 阅读 · 0 评论 -
反转链表--迭代和递归
1,leetcode网址https://leetcode-cn.com/problems/reverse-linked-list/2,题目反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL3,源码:class Solution { p...原创 2020-04-11 21:18:27 · 154 阅读 · 0 评论 -
三数之和---左右指针中间移动
1,leetcode原文https://leetcode-cn.com/problems/3sum/2,题目给你一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -...原创 2020-04-09 23:37:53 · 139 阅读 · 0 评论 -
爬台阶---算法汇总
1,leetcode网址https://leetcode-cn.com/problems/climbing-stairs/submissions/2,题目假设你正在爬楼梯。需要 n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1....原创 2020-04-07 22:57:57 · 928 阅读 · 0 评论 -
最多装水---双向指针往中间移动
1,leetCode题目地址https://leetcode-cn.com/problems/container-with-most-water/2,题目给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画 n 条垂直线,垂直线 i的两个端点分别为(i,ai) 和 (i, 0)。找出其中的两条线,使得它们与x轴共同构成的容器可...原创 2020-04-07 22:15:27 · 149 阅读 · 0 评论 -
自动保存--Balking模式
1,什么是Balking?类似放弃作用,即本身有个线程准备响应时,发现另外一个线程已经响应,故当前线程放弃响应。2,代码举例:自动保存和手动保存文档类import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.util.ArrayList;import jav...原创 2020-04-04 17:53:33 · 154 阅读 · 0 评论 -
线程保险箱--ThreadLocal模式
1,作用ThreadLocal为每个线程提供了一个独立的副本。这样,线程之间的数据就相互隔离。2,使用场景由于和线程绑定,故在一些使用责任链模式的场景下,可以将上下文对象,放入ThreadLocal中。3,代码示例a)上下文对象public class Context { private String name; private String id;...原创 2020-03-29 16:45:30 · 276 阅读 · 0 评论 -
一天的事情---GuardSuspension模式
1,什么是GuardSSuspension模式这是一种队列模式,即当前事情还未处理完成,但有新的事情发生时,先将刚发生的事情,放入一个队列中,手头上的事情处理完成后,再来处理新的事情。2,好处,具有一定的顺序,先请求,先处理。生活就会比较有规律。3,举例a)请求public class Request { private String value ; ...原创 2020-03-26 22:53:20 · 174 阅读 · 0 评论 -
做蛋糕--Future模式
一、什么是future模式future模式可以认为是一种票据。这个票据是在任务提交时,就获得,可先继续处理其他事情。过一段时间后,再使用票据查询任务的执行结果,或者利用callback机制,任务告知己方处理结果。二、好处:避免己方系统的卡顿充分利用系统资源,提高系统效率。三、适用的场景在和第三方系统对接的过程中,为了避免因为调用第三方系统的延迟,导致整个系统的卡顿。将第三方...原创 2020-03-25 23:29:08 · 228 阅读 · 0 评论 -
多线程下的不可变对象模式
1,针对共享资源而言,多线程访问,存在线程安全性问题。2,除了使用synchronized关键字对共享资源上锁外,还可以在线程之前不共享资源状态。3,代码示例如下package com.wayne.unchangeable;import java.util.concurrent.TimeUnit;import java.util.stream.IntStream;publi...原创 2019-10-31 00:17:32 · 189 阅读 · 0 评论 -
动态数组的创建与维护
说是动态数组,其实就是在满容量时,再创建创建一个一定容量的数组(实例代码中是原数组容量的一倍),并将对数组的引用指向新的数组。而当数组容量比较小时,则创建一个一定容量的数组(示例代码中是原数组容量的1/4),并将对数组的引用指向新的数组。示例代码如下:import java.util.Iterator;import java.util.List;public class Fix...原创 2018-11-17 22:02:27 · 538 阅读 · 0 评论 -
JAVA设计模式——对象数量有限的多例模式
此模式是单例模型的变形。核心思想:1,构造器私有化,外部不能随意new该对象;2,对外提供获得改对象的方法。3,使用一个类变量记录允许的最大的对象数量。4,使用一个类变量记录当前对象的序号。5,使用一个list记录所有产生的对象,每次使用时,都用这个List中取该对象。源码如下:package com.wayne;import java.util.ArrayList;import java....原创 2018-05-07 17:12:03 · 1217 阅读 · 0 评论 -
POI结合线程池批量处理导入减少导入时间
话不过多说,直接上代码。核心思想1,利用ExecutorService service = Executors.newFixedThreadPool(10);创建一个长度为10的线城池,用以导入开线程导入 2,创建两个计数器CountDownLatch rowLatch = new CountDownLatch(1);CountDownLatch exceLatch = new CountDow原创 2017-12-28 11:44:27 · 891 阅读 · 0 评论 -
Java多线程---CountDownLatch用法实例
java中,除了传统的wait()、notify()、notifyAll()外,还有一个CountDownLatch类,此法相比上述三个,是程序更加易懂。特别是需要某线程需要依赖其他线程执行时,可以使用该类。其中最关键的方法是: countDown(),使得计数器-1; await() 方法,当计数器不为0时,则调用该方法的线程阻塞;当计数器为0时,可以唤醒等待的一个或者全部线程。具体代码如下:原创 2017-12-24 14:22:59 · 1158 阅读 · 0 评论