自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Rabbitmq 系列

Rabbitmq介绍Rabbitmq是一个开源的AMQP实现,服务端用Erlang语言编写,支持多种客户端,用于在分布式系统中存储转发消息,在易用性,扩展性,高可用性等方面表现不俗Rabbitmq安装#拉去镜像 management 默认带控制台docker pull rabbitmq:3.8.14-management#查看镜像docker image #运行镜像docker run -it --name rabbitmq-5672 -e -p 15672:15672 -p 5672

2022-02-20 14:48:50 128

原创 Leecode 长度最小的子数组 209

长度最小的子数组给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。示例 1:输入:target = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组 [4,3] 是该条件下的长度最小的子数组。滑动窗口class Solution { public int mi.

2021-09-27 23:18:45 87

原创 Leecode 有序数组的平方 977

有序数组的平方给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。示例 1:输入:nums = [-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为 [16,1,0,9,100]排序后,数组变为 [0,1,9,16,100]双指针解法class Solution { public int[] sortedSquares(int[] nums) { int[] re.

2021-09-27 23:00:51 96

原创 Leecode 移除元素 27

移除元素给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传递的。也就是.

2021-09-26 22:31:01 59

原创 Leecode 704二分查找

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例 1:输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4class Solution { public int search(int[] nums, int target) { int res = -1;

2021-09-26 22:16:08 71

原创 mysql索引系列(一)

索引是什么?数据库索引,是数据库管理系统(DBMS)中一个排序的数据结构,以协助快速查询、 更新数据库表中数据。首先数据是以文件的形式存放在磁盘上面的,每一行数据都有它的磁盘地址。如果 没有索引的话,要从 500 万行数据里面检索一条数据,只能依次遍历这张表的全部数据, 直到找到这条数据。但是有了索引之后,只需要在索引里面去检索这条数据就行了,因为它是一种特殊 的专门用来快速检索的数据结构,我们找到数据存放的磁盘地址以后,就可以拿到数据 了索引类型(InnoDB)普通(Normal):也叫非唯一索

2020-08-14 08:55:51 190

原创 Windows 执行curl命令删除定时删除es数据

需求来源:es每天大概要存入2000万左右的数据,但是实际只需要存储最近一个月的数据,所有创建个定时计划定时删除30天之外的数据Kibnan查询es语句删除37天前的数据,右上角可以复制为curl命令例:curl -XPOST "http://localhost:9200/datastore5/_delete_by_query" -H 'Content-Type: application/json' -d'{"query":{"range":{"dateTime":{"lte":"now-3

2020-07-29 11:42:32 818

原创 【Redis】Redis布隆过滤器安装

缓存击穿介绍我们通常使用redis作为数据缓存,当请求进来时先通过key去redis缓存查询,如果缓存中数据不存在,需要去查询数据库的数据。当数据库和缓存中都不存在的数据来查询时候,请求都打在数据库的请求中。如果这种请求量很大,会给数据库造成更大的压力进而影响系统的性能解决这类问题的方法方法一:当DB和redis中都不存在key,在DB返回null时,在redis中插入<key,null,expireTime>当key再次请求时,redis直接返回null,而不用再次请求DB方法二:使

2020-07-26 19:49:45 243

原创 LintCode 水仙花数

描述:水仙花数的定义是,这个数等于他每一位数上的幂次之和 见维基百科的定义比如一个3位的十进制整数153就是一个水仙花数。因为 153 = 13 + 53 + 33。而一个4位的十进制数1634也是一个水仙花数,因为 1634 = 14 + 64 + 34 + 44。给出n,找到所有的n位十进制水仙花数。暂时只想到这种写法public List<Integer> getNarcissisticNumbers(int n) { // write your code here

2020-06-16 21:51:01 130

原创 线程池ThreadPoolExecutor

线程池什么是线程池在 Java 中,如果每个请求到达就创建一个新线程,创建和销毁线程花费的时间和消耗的系统资源都相当大,甚至可能要比在处理实际的用户请求的时间和资源要多的多。如果在一个 Jvm 里创建太多的线程,可能会使系统由于过度消耗内存或“切换过度”而导致系统资源不足为了解决这个问题,就有了线程池的概念,线程池的核心逻辑是提前创建好若干个线程放在一个容器中。如果有任务需要处理,则将任务直接分配给线程池中的线程来执行就行,任务处理完以后这个线程不会被销毁,而是等待后续分配任务。同时通过线程池来重复管

2020-06-16 20:57:48 272

原创 LintCode[简单]二分查找

LintCode[简单]二分查找描述:给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1。例:public int binarySearch(int[] nums, int target) { // write your code here int min=0,max=nums.length; int result=-1;

2020-06-14 22:26:13 441

原创 LintCode[中等]二叉查找树中搜索区间

LintCode[中等]二叉查找树中搜索区间描述:给定一个二叉查找树和范围[k1, k2]。按照升序返回给定范围内的节点值。样例:输入:{20,8,22,4,12},10,22输出:[12,20,22]解释: 20 / \ 8 22 / \ 4 12它将被序列化为 {20,8,22,4,12}[12,20,22]介于10和22之间思路:按照中序遍历node节点获取所有数据存入list中判断输出public List&

2020-06-07 22:42:43 166

原创 LintCode[简单]合并两个有序升序的整数数组A和B变成一个新的数组。新数组也要有序

LintCode[简单]合并两个有序升序的整数数组A和B变成一个新的数组。新数组也要有序方式一: public int[] mergeSortedArray(int[] A, int[] B) { // write your code here int[] c=new int[A.length+B.length]; for(int i=0;i<A.length;i++){ c[i]=A[i]; }

2020-06-04 22:37:01 381

原创 LintCode[中等]在数组中找到第 k 大的元素。

LintCode[中等]在数组中找到第 k 大的元素。思路:这个按照题意应该是要自己手动写出排序时间复杂度为O(n),空间复杂度为O(1)的排序样例样例 1:输入:n = 1, nums = [1,3,4,2]输出:4样例 2:输入:n = 3, nums = [9,3,2,4,8]输出:4挑战要求时间复杂度为O(n),空间复杂度为O(1)。例:public int kthLargestElement(int n, int[] nums) { // writ

2020-06-02 22:48:00 100

原创 LIntCode[中等]丑数设计一个算法,找出只含素因子2,3,5 的第 n 小的数

LintCode[中等]设计一个算法,找出只含素因子2,3,5 的第 n 小的数。分析根据题目可得,丑数即由若干个2、3、5相乘所的到的数。可以写成2^a+ 3 ^b + 5 ^ ca,b,c可以取随意自然数再进一步分析,可以得到每个丑数都存在另一个丑数乘以2、3、5中的一个数,与之相等。题目要求要第n个小的丑数。思路:使用lis保存丑数,l2,l3,l5用来记录位置获取2l2,3l3,5*l5的值,获取最小的值与之比较,相等表示当前位置下标+1例:public static int

2020-06-02 22:35:21 378

原创 多线程ConcurrentHashMap

ConcurrentHashMapCHM 的使用ConcurrentHashMap 是 J.U.C 包里面提供的一个线程安全并且高效的 HashMap,所以ConcurrentHashMap 在并发编程的场景中使用的频率比较高,那么这一节课我们就从ConcurrentHashMap 的使用上以及源码层面来分析 ConcurrentHashMap 到底是如何实现安全性的put方法(初始化阶段)final V putVal(K key, V value, boolean onlyIfAbsent) {

2020-06-02 20:49:18 449

原创 LintCode[简单]统计数字

LintCode[简单]统计数字描述:计算数字 k 在 0 到 n 中的出现的次数,k 可能是 0~9 的一个值。思路:1.目前能想到的就是for循环遍历数,获取该数字出现次数进行叠加2.这个题目应该是有规律的写法的,目前还没有先到规律是什么例: public int NumberOf1Between1AndN_Solution(int n) { //蛮力法 int onenums = 0; for(int i=1;i<=n;i++){//循

2020-05-31 09:28:58 109

原创 LintCode[中等]最长公共子串

LintCode[中等]最长公共子串描述:给出两个字符串,找到最长公共子串,并返回其长度。样例样例 1: 输入: "ABCD" and "CBCE" 输出: 2 解释: 最长公共子串是 "BC"样例 2: 输入: "ABCD" and "EACB" 输出: 1 解释: 最长公共子串是 'A' 或 'C' 或 'B'思路:1.判断二个字符串是否为空2.二层for循环获取A字符串每个字符到末尾的字符3.判断B字符是否包含A字符循环中截取的字符4.使用Ma

2020-05-30 22:50:28 92

原创 LintCode[简单]反转一个只有3位数的整数

描述:反转一个只有3位数的整数思路:while对对整数!=0进行循环判断2.判断条件内对整数进行取模计数,取模完进行赋值,在除以10(因为是int类型)所以个位数会消失以此类推样例样例 1:输入: number = 123输出: 321例:public class Solution { /** * @param number: A 3-digit number. * @return: Reversed number. */ public int

2020-05-25 22:36:33 267

原创 LintCode[简单]无重复字符的最长子串

给定一个字符串,找出不含有重复字符的最长子串的长度思路:二个for循环遍历字符串,可以得到每个字符到末尾的字符将字符使用set集合存储,当存在是返回false,当字符串都可以存储在set中时返回true用一个int类型max变量使用Math.max()与该set返回true是的长度进行比较替换public class Solution { public static void main(String[] args) { System.out.println(lengthOf

2020-05-25 22:35:39 71

原创 LintCode[简单]二数之和

给定一个整数数组和一个目标值,找出数组中和为目标值的二个数,可以假设有且只有一个答案,且同样的元素不能被重复利用思路:1.把数组的值和下标当做map的key,value保存2.便利数组,用传入的和减去遍历数组的值3.使用该值去map集合中查看看是否存在该键,在判断该键存储的下标是否为当前for遍历数组的下标例:public class SumDemo { public static void main(String[] args) { Integer[] ints=new

2020-05-25 22:30:59 87

原创 多线程Condition以及并发工具使用

ConditionCondition 是一个多线程协调通信的工具类,可以让某些线程一起等待某个条件(condition),只有满足条件时,线程才会被唤醒例:public class ConditionWait implements Runnable{ private Lock lock; private Condition condition; public Condi...

2020-05-02 09:13:21 243

原创 多线程AQS(AbstractQueuedSynchronizer)介绍分析

J.U.C 简介Java.util.concurrent 是在并发编程中比较常用的工具类,里面包含很多用来在并发场景中使用的组件。比如线程池、阻塞队列、计时器、同步器、并发集合等等LockLock 在 J.U.C 中是最核心的组件lock的实现Lock 本质上是一个接口,它定义了释放锁和获得锁的抽象方法,定义成接口就意味着它定义了锁的一个标准规范,也同时意味着锁的不同实现Reetran...

2020-04-30 21:21:52 239

原创 多线程Volatile关键字

volatile的作用volatile可以是多处理器环境下保证共享变量的可见性什么是线程的可见性?在单线程的环境下,如果向一个变量先写入一个值,然后在没有写干涉的情况下读取这个变量的值,那这个时候读取到的这个变量的值应该是之前写入的那个值。这本来是一个很正常的事情。但是在多线程环境下,读和写发生在不同的线程中的时候,可能会出现:读线程不能及时的读取到其他线程写入的最新的值。这就是所谓的可见性...

2020-04-23 20:02:59 193

原创 多线程基础入门

创建线程的几种方式继承Thread类创建线程public class ThreadDemo extends Thread{ @Override public void run() { }} ThreadDemo thread=new ThreadDemo(); thread.start();实现Runnalbe接口创建线程public class ...

2020-04-20 20:43:40 208

原创 zookeeper本地伪集群搭建

Zookeeper是什么官方文档上这么解释zookeeper,它是一个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。上面的解释有点抽象,简单来说zookeeper=文件系统+监听通知机制。1、 文件系统Zookeeper维护一个类似文件系统的数据结构:...

2020-01-08 21:44:53 131

原创 SpringBoot整合ActiveMq

消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。消息形式支持点对点和订阅-发布。ActiveMQ是什么ActiveMQ是消息队列技术,为解决高并发问题而生ActiveMQ生产者消费者模型(生产者和消费者可以跨平台、跨系统)ActiveMQ支持如下两种消息传输方式点对点模式,生...

2020-01-03 21:56:49 147

空空如也

空空如也

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

TA关注的人

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