自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(104)
  • 资源 (20)
  • 收藏
  • 关注

原创 Web-Socket Demo

pom <!-- websocket --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency>configurationimport org.springframew

2022-05-07 15:02:59 320

原创 设计模式-01-概要

一。精髓对接口编程,而不是对实现编程优先使用对象组合,而不是继承(继承的越多风险越大)1.1设计模式的基石:封装 继承 多态顺序 判断 循环二。七大原则1.开闭原则(拓展新类,不修改旧类)2.里氏替换原则 (继承父类,而不修改父类)3.依赖倒置原则(面向接口编程,而非面向实现类)4.单一职责(每个类只负责自己管的事情,而不是万能)5.接口隔离原则(各个类建立自己的专用接口,而非建立万能接口)6.迪米特法则(无需直接交互的两个类,若想交互,使用中间者。但不能过度使用,否则系统有大量中间

2022-03-30 22:15:35 642

原创 MQ实现消息可靠投递

3个细节:1.异步刷盘改成同步刷盘2.存储介质坏了,那么采用RAID10或分布式存储。raid10:1代表把同样的数据做个备份,0代表数据分摊存储(类似负载均衡)RAID10只适合单机存储。3.手动ACK,不要自动ACK.自动ack手动ACK:保证业务代码处理完消息之后才ACK。...

2021-11-23 13:33:38 395

原创 IDEA--断点调试基本按钮--其他调试技巧笔记

1.debug模式下运行项目,2.打断点3.上侧的按钮不进入方法。进入自己写的方法,不进入类库方法。任何方法都会进入步出,执行到当前所在方法返回后的地方,(调用此方法的那个断点)点开后在Expression栏内, 输入指定方法,和自定义参数,直接得到运算结果。 调用范围为全局域4.左侧按钮放行到下一个断点★查看所有断点,并可以指定删除某些断点禁用所有断点(debug模式启动后所有断点变灰)5.实用技巧5.1不想从头开始全部遍历,设置i的指定值,从指定值开始走程序右

2021-11-15 11:23:22 740

原创 redis--io多路复用---select/poll/epoll---多路复用模型保留兜底原因

1.select()★select()优缺点小结论select方式,既做到了一个线程处理多个客户端连接,又减少了系统开销(多个文件描述符只有一次系统调用,+N次就绪状态的文件描述符的read系统调用)2.poll()优缺点★★★3.epoll()–redis采用3.1epoll_create()–建立创建一个epoll()句柄(相当于new一个集合)3.2 epoll_ctl()–监听向内核添加、修改或删除要监控的文件描述符3.2epoll_wait()–调用.

2021-10-27 18:41:45 201

原创 redis--三大删除策略--->过期淘汰策略

1.立刻删除对cpu不好,对内存友好(用cpu性能换取存储空间→时间换空间)2.惰性删除空间换时间,对内存不友好3.定期删除会存在漏网之key过期淘汰策略上图总结:2*4=8(8个选项)2个维度:1.过期键中筛选2.所有键中筛选4个方面:LRULFURansomTTL常见问题:1.redis出厂默认配置了哪个? noevcation:不删除任何key。生产环境不可以配着这个选项!★2.公司修改为了哪个 → allkeys-lru **allkeys-lru*

2021-10-23 21:15:51 563

原创 redis--bloomFilter

需求:50亿个电话号码,查找10万个,判断10w个电话号码是否存在?用bitmap/hyperloglog的话,亿级数据也是非常吃内存哟。是个啥:由一个初始值都为0的bit数组和多个哈希函数构成,用于快速判断某个数据是否存在。(多个hash函数,减少hash冲突概率)本质:用于快速判断数据是否存在于一个大的集合中。类似set,但是统计结果不太准确。特点:1.插入、查询高效,占空间少,返回结果不确定。2.一个元素,存在时,bloom来判断它不一定就存在;但是不存在的,bloom来判断,结果一定

2021-10-22 22:45:15 327

原创 redis分布式锁问题分析--解决Demo--

/** * * @author IceYan * @since 2021-10-01 */@Servicepublic class BaseBrandServiceImpl extends ServiceImpl<BaseBrandMapper, BaseBrand> implements BaseBrandService { @Autowired private RedisTemplate redisTemplate; @Autowired priv

2021-10-05 17:27:48 304

原创 多线程-ThreadLocal由浅入深--boy next door♂

1.简介是个啥:ThreadLocal提供线程局部变量。这些变量与正常的变量不同,因为每一个线程在访问ThreadLocal实例的时候(通过其get或set方法)都有自己的、独立初始化的变量副本。ThreadLocal实例通常是类中的私有静态字段,使用它的目的是希望将状态(例如,用户ID或事务ID)与线程关联起来。做啥的:实现每一个线程都有自己专属的本地变量副本(自己用自己的变量不麻烦别人,不和其他人共享,人人有份,人各一份),主要解决了让每个线程绑定自己的值,通过使用get()和set()方法,

2021-09-23 12:25:35 241

原创 多线程-Synchronized、AtomicLong、LongAdder、LongAccumulate性能对比及LongAdder简介

class ClickNum{ int number = 0; public synchronized void addInSynchr(){ number++; } AtomicLong atomicLong =new AtomicLong(); public void addInAtomicLong(){ atomicLong.incrementAndGet(); } LongAdder longAdder =

2021-09-22 13:36:43 272

原创 leetcode725-分隔链表

大体思路:遍历一遍得出链表长度,再除以组数k,make一个新的ListNode类型数组,负责盛放分隔后的链表结果。细节见注释:class Solution { public ListNode[] splitListToParts(ListNode head, int k) { int listLength = 0; ListNode current =head; while(current!=null){ current=c

2021-09-22 12:23:10 145

原创 leetCode692-前k个高频单词

class Solution { public List<String> topKFrequent(String[] words, int k) { Map<String,Integer> count = new HashMap<>(); for(String word : words){ //统计word出现次数,第一次出现该单词则次数为:(0+1)次,和前面的结果否则累加。 count.put(w

2021-09-21 10:42:35 159

原创 多线程-卖票案例--手写自旋锁--解决CAS版本号偷换问题

public class SpinLock { AtomicReference<Thread> atomicReference = new AtomicReference<>(); public void myLock(){ System.out.println(Thread.currentThread().getName()+"----come in"); while(!atomicReference.compareAnd

2021-09-19 16:51:40 228

原创 leetCode148-排序链表

友情提示:画草稿,看题解,打好基础,能解决99%以上的问题!!!主要思路:归并排序,特殊点在于数据结构为链表。1.先向下递归找到链表中间节点,再将链表一分为二;2.向上逐层返回递归,将每个被分割的子链表排序,返回最初的递归,排完两条大链表之后,合并,即为排序后的链表。class Solution { public ListNode sortList(ListNode head) { if(head==null || head.next==null) return head;

2021-09-16 13:22:19 144

原创 多线程05-LockSupport--JMM内存模型(三大特性&happens-before原则)

LockSupport是用来创建锁和其他同步类的基本线程阻塞原语。LockSupport中的park() 和 unpark() 的作用分别是阻塞线程和解除阻塞线程1.三种让线程等待和唤醒的方法:1.使用Object中的wait()方法让线程等待,使用Object中的notify()方法唤醒线程2.使用JUC包中Condition的await()方法让线程等待,使用signal()方法唤醒线程3.LockSupport类可以阻塞当前线程以及唤醒指定被阻塞的线程1.1Object中的wait()方法

2021-09-15 12:16:59 213

原创 lc86-分隔链表

友情提示:打草稿,画图,看题解,补基础,问大佬能解决99%以上的问题!题目描述:给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。你应当 保留 两个分区中每个节点的初始相对位置。大体思路:做出两个dummyHead节点,一个节点负责将小于x的原链表元素串联,另一个节点则将大于等于x的原链表元素串联,最后将两个新串联好的链表相连即为结果。/* public class ListNode { * int

2021-09-14 17:57:03 303

原创 lc1190-反转每对括号间的子串

友情提示:打草稿,画图,看题解,补基础,问大佬能解决99%以上的问题!大体思路:每匹配一次括号,就翻转一次括号内的字符串。class Solution { public String reverseParentheses(String s) { //Stack用于记录'('的下标值 Stack<Integer> stack =new Stack<>(); StringBuilder sb =new StringBuilder();

2021-09-14 14:47:59 120

原创 多线程04-公平锁-可重入锁&死锁-中断(如何优雅停止线程)

1.公平&非公平1.1卖票案例(非公平)class Ticket{ private int number = 50; private Lock lock = new ReentrantLock(); //默认用的是非公平锁,若想分配的平均一点,=--》公平一点,就构造器参数改为true public void sale() { lock.lock(); try { if(number &gt

2021-09-13 23:47:47 263

原创 lc106-从中序与后续构造二叉树

友情提示:打草稿,看题解,debug能解决99%以上的问题/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeN

2021-09-13 17:55:30 164

原创 lc109-有序链表转换二叉树

快慢指针解:class Solution { public TreeNode sortedListToBST(ListNode head) { if(head==null) return null; if(head.next==null) return new TreeNode(head.val); ListNode fast=head,slow=head, pre=null; while(fast!=null &&

2021-09-12 10:50:51 133

原创 lc124-二叉树的最大路径和

题意关键在于:从父结点延伸下来的路径,不能走左子树又掉头走右子树来两头收益class Solution { int maxRes=Integer.MIN_VALUE; public int maxPathSum(TreeNode root) { dfs(root); return maxRes; } private int dfs(TreeNode root){ if(root==null) return 0;

2021-09-11 11:02:20 160

原创 网络io02-nio阻塞模式--非阻塞模式

1.阻塞模式server:@Slf4jpublic class Server { public static void main(String[] args) throws IOException { ByteBuffer buffer = ByteBuffer.allocate(16); ServerSocketChannel ssc = ServerSocketChannel.open(); ssc.bind(new InetSocke

2021-09-09 20:23:06 132

原创 lc102-二叉树层序遍历-java实现

思路:手动构建res结果集合,以及队列;将已进入本队列的元素取出,再放入临时集合path中;按照层数添加叶子节点进入队列;循环以跳出当前层后将path放入res结果集中。需要注意的是:队列的尺寸是随着访问的树的层数而变化的,所以队列尺寸必须在内层循环之外设置为变量,再作为循环退出的条件。class Solution { public List<List<Integer>> levelOrder(TreeNode root) { List<Li

2021-09-09 19:46:56 142

原创 手撕LRU缓存结构--java代码实现

定义节点和双向链表class Node{ int key , value; Node pre,next; public Node(int key,int value){ this.key=key; this.value=value; }}class DoubleList{ Node head,tail; public DoubleList(){ head = new Node(0,0); tail

2021-09-07 19:19:28 161

原创 微服务登陆注册认证另一种方案&分布式session

一。Auth服务1.1LoginController(&验证码&注册&账密登录)@Controllerpublic class LoginController { @Autowired ThirdPartFeignService thirdPartFeignService; @Autowired StringRedisTemplate redisTemplate; @Autowired MemberFeignService.

2021-09-06 11:55:47 418

原创 多线程03-synchronized锁深入研究01

悲观锁/乐观锁:悲观:操作时不让其他线程进入干预。synchronized、lock乐观:其他线程可以干预。参考版本号机制、CAS1.八锁现象–锁静态时/锁方法时1.0 标准访问俩线程,先打印Email后打印SMS:class Phone{ public synchronized void sendEmail(){ System.out.println("-----sendEmail"); } public synchronized void send

2021-09-04 10:31:39 142

原创 多线程02-CompletableFuture深入

CompletableFuture可以做future做的事CompletableFuture优点:1.异步任务结束时,自动回调某个对象的方法;2.异步任务出错时,自动回调某个对象的方法;3.主线程设置好回调后,不再关心异步任务的执行,异步任务之间可以顺序执行。多线程异步调用/异步编排(减少阻塞及轮询):public static void main(String[] args) throws ExecutionException, InterruptedException { T

2021-09-03 12:35:46 1523 3

原创 微服务登录认证(大部分公共默认配置省略)

一。user-auth服务(多端设备登录着手点)1.1 配置类AuthorizationServerConfig、CustomUserAuthenticationConverter(略)自定义授权认证UserDetailsServiceImpl,远程调用user服务的loadFindById方法:@Servicepublic class UserDetailsServiceImpl implements UserDetailsService { @Autowired Client

2021-09-02 18:57:57 632

原创 关于认证登录的浅薄经验

第三方登录:授权页面:微信返回登录扫描二维码用户授权:扫码(直接跳过4399直接告诉微信可以授权)令牌:jwt令牌 JSON Web Token(JWT)★★jwt:1.Header头部包括令牌的类型(即JWT)及使用的哈希算法(如HMAC SHA256或RSA)2.Payload第二部分是负载,内容也是一个json对象,它是存放有效信息的地方,它可以存放jwt提供的现成字段,比 如:iss(签发者),exp(过期时间戳), sub(面向的用户)等,也可自定义字段。Signature3

2021-09-02 16:48:26 283

原创 ElasticSearch实战

商品及其属性、分页、品牌等信息的搜索controller@Controllerpublic class SearchController { @Autowired MallSearchService mallSearchService; /** * springmvc自动将页面提交过来的所有请求查询参数封装成指定的对象 * @return */ @GetMapping("/list.html") public String li

2021-08-29 23:13:04 220

原创 ★ElasticSearch07高级搜索--多字段查询--布尔查询--agg聚合查询--subagg子聚合

一。多字段查询QueryString流程:会对查询条件进行分词。然后将分词后的查询条件和词条进行等值匹配默认取并集(OR)可以指定多个查询字段1.1 restAPI例:在title和brandName字段中都包含“小米手机”分词字样的话,都查出来:GET goods/_search{ "query": { "query_string": { "fields": ["title","categoryName","brandName"], "query"

2021-08-25 13:37:28 1186 1

原创 ★ElasticSearch06高级搜索--模糊查询--范围查询--排序

一。模糊查询背景:查询手机颜色是“象牙白”的手机GET goods/_search{ "query": { "match": { "title": "象" } }}结果查不到,而title为“象牙白”才可以查到,因为:倒排索引表中对应“的没有关联文档。1.1restAPI模糊查询1.1.1 wildcardwildcard:直接去倒排索引表中找 ”象??“的分词:象牙白,象牙红…GET /goods/_search{ "query": {

2021-08-24 22:48:29 476

原创 ★ElasticSearch05高级搜索--matchAll--term查询--★match全文检索(常用)

一。matchAll注:只有ES发Get请求把请求放在请求体里1.2搜索并分页:ES默认只返回十条数据,但是可以手动设置显示多少条GET /goods/_search{ "query": { "match_all": {} }, "from": 0, //从第一条查 "size": 11 //查11条}1.2搜索分页–javaAPI@Test public void testMatchAllByPage() throws IOException {//

2021-08-24 16:57:25 404

原创 ElasticSearch04--批量操作bulk--mysql数据导入ES

Bulk 批量操作是将文档的增删改查一些列操作,通过一次请求全都做完。减少网络传输次数。

2021-08-24 11:50:43 462

原创 ElasticSearch03-java操作restAPI

一。创建索引和添加mapping(一般由运维建立,java中不用像测试方法中那样麻烦的去写,一般就复制方式一):1.启动类@SpringBootApplicationpublic class EstestApplication { public static void main(String[] args) { SpringApplication.run(EstestApplication.class, args); } @Value("${es.host}

2021-08-23 20:30:41 371

原创 ElasticSearch02--IK分词器--★全文检索

背景:ES自带的分词器只适合英文,因为英文语法使用空格进行分词。但是中文不是。所以国人开发了这款中文分词器:IK安装步骤略一。ik_max_word分词器GET _analyze{ "text":"我们在夏季的花海", "analyzer": "ik_max_word"}显示结果:{ "tokens" : [ { "token" : "我们", "start_offset" : 0, "end_offset" : 2, "

2021-08-23 11:31:42 394

原创 ElasticSearch-01--Kibana控制台进行RestAPI的CRUD

索引CRUD注:ES没有post!!!PUT /personGET /personDELETE /personput /log-20210822PUT /log-20200822/POST /log-20200822/_close (关闭日志)POST /log-20200822/_open (打开日志)

2021-08-22 22:44:16 211

原创 RabbitMQ-高级特性3--死信队列3种方式--★延迟队列(重要)

DLX:死信交换机消息成为死信的三种情况:超长、超时、拒收队列消息长度到达限制(应用:一个消费者处理不了的消息,通过设置死信,转移给另一个消费者处理。分担机器压力);消费者拒接消费消息,basicNack/basicReject,并且不把消息重新放入原目标队列,requeue=false;原队列存在消息过期设置,消息到达超时时间未被消费;*死信交换机和死信队列和普通的没有区别*当消息成为死信后,如果该队列绑定了死信交换机,则消息会被死信交换机重新路由到死信队列生产方模块代码:1.声明死.

2021-08-21 23:34:49 295

原创 RabbitMQ-高级特性2--消费者手动确认--消费者限流--TTL存活时间

如何保证消息的高可靠性传输?1.持久化• exchange要持久化• queue要持久化• message要持久化2.生产方确认Confirm return3.消费方确认Ack4.Broker高可用:启多台机器1.消费者手动确认配置文件:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="ht

2021-08-21 17:22:49 436 2

原创 RabbitMQ-高级特性1--生产者确认模式--生产者退回模式

消息可靠性:

2021-08-21 13:17:00 293

centos7系列的各种软件部署如JDK等的安装文档

centos7系列的各种软件部署如JDK等的安装文档

2021-09-04

Oauth-jwt网关鉴权等项目系统认证的知识

Oauth-jwt网关鉴权等项目系统认证的知识

2021-09-01

ThymLeaf笔记,基本标签用法及实战

ThymLeaf笔记,基本标签用法及实战

2021-08-31

RabbittMQ软件,资料及笔记

RabbittMQ软件,资料及笔记

2021-08-18

xpand-canal依赖,已经编译好,解压放入maven仓库即可引入项目中

canal包下载,啥都帮你们安装编译好了,用去吧!

2021-08-14

redis笔记包含基础和集群,常见概念及操作讲解

redis笔记包含基础和集群,常见概念及操作讲解

2021-08-08

传智健康项目源码,包含所有配置,资源文件,可以本地运行

传智健康项目源码,包含所有配置,资源文件,可以本地运行

2021-08-06

Jaspesoft studio依赖,资料,使用方法及步骤

Jaspesoft studio依赖,资料,使用方法及步骤

2021-08-05

freemarker使用笔记,从创建文件到写法指导

freemarker使用笔记,从创建文件到写法指导

2021-07-31

zookeeper集群搭建手册配置指导

zookeeper集群搭建手册配置指导

2021-07-25

dubbo上手干活基本掌握代码,配合视频食用

dubbo上手干活基本掌握代码,配合视频食用

2021-07-24

健康项目-powerdesigner使用-前端框架-项目架构雏形

健康项目-powerdesigner使用-前端框架-项目架构雏形

2021-07-22

javawebjsp文档详细笔记和常用包不包含前端三大件

javawebjsp文档详细笔记不包含前端三大件

2021-07-22

powerdesigner数据建模工具.rar

powerdesigner数据建模工具.rar

2021-07-22

清理注册表工具,专治卸载残余,安全便捷!

清理注册表工具,清理注册表神器

2021-07-20

springmvc.rar

springmvc.rar

2021-07-20

spring笔记,基本使用,基本概念

spring笔记,基本使用,基本概念

2021-07-16

maven详细笔记,包括需要注意的地方

maven详细笔记,包括需要注意的地方

2021-07-10

maven全面笔记,idea版

maven笔记,全面清晰易懂

2021-07-09

javaweb学生管理小项目,不用框架纯手撸

meta-shop.rar

2021-07-08

MySql高级.mmap

mysql优化笔记

2021-05-18

空空如也

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

TA关注的人

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