自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 《拥有过》问题

位运算的妙用

2024-04-18 11:50:41 105

原创 关于异步调用

CompletableFuture

2024-04-11 17:57:19 225 2

原创 Repository层面加拦截器

如何在Repository加切面。实现RepositoryProxyPostProcessor中的postProcess方法,加入自创的切面。问:假如说,缓存击穿了,或者雪崩,直击到数据库上,而且查的数据是复用性比较高的,这时候有什么好的处理方案呢。例如 MongoTemplate,里面所有的查询方法,最后都走了,doFindOne或者doFind。在这里可以进行围绕方法做后处理,如果,想要对查询条件相关的参数做处理,则需要重写。你可以在这里拿到关于查询的细节。自己的切面中invoke切面逻辑。

2023-12-07 14:19:18 110

原创 Redis+lua限流解决方案

如果,没有大于规定时间,则判断这个list的长度有没有超过规定的请求数,超过了,就拒绝请求,没超过将请求时间戳加入list中并放行。可以尝试加一个定时任务,每5秒执行一次,监控某一api的访问量,如果算法判断请求量比较大,可以逐步增加到一个极限值。以上方式,比较灵活实现了对请求来源的限制访问,使用了redis可以给key设置存活时间的特性。访问来源ip,或者访问的api,请求过来的时候从队列中取出一个令牌,放行。每当请求进来时,先拿到这个key的list的长度,长度为空时直接记录进来时的时间戳然后放行。

2023-12-06 20:04:20 165

原创 stream流实际运用

【代码】stream流实际运用。

2022-09-26 18:36:03 236

原创 spring中事物的传播行为

这个方法一定会创建自己的事务,有自己的回滚和提交,但是如果外界有一层事务那么内层事务就会嵌套进外层事务。如果没有外层事务,那么内层事务行为就和REQUIRED一样了。内层事务嵌套是意外外层事务。外层事务回滚,内层一起回滚,内层事务回滚,外界事务不一定回滚。如果已经存在事务就直接使用当前事务,如果没有事务就创建事务。这个方法不能运行在事务中,运行到这个方法,外层事务会挂起。这个方法不应该出现在事务中,如果有事务到这会就报错。这个方法必须创建自己的事务,外层的事务将会被挂起。必须有事务,并且自己不会创建事务。.

2022-08-01 10:46:13 888 1

原创 rocketMQ的使用

又或者实现implementsMessageListener接口。然后作为消费者的参数bean。如此就创建好了接收消息的消费者。消费消息只需要对接收消息的body进行操作。用map缓存生产者。

2022-07-26 10:42:27 1677

原创 查出商品时,官方api查出商品和开放搜索opnSearch查处结果进行目标位置set。

商品列表不同数据源的指定位置穿插

2022-07-06 13:42:52 111

原创 225. 用队列实现栈

225. 用队列实现栈请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。实现 MyStack 类:void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元素。int top() 返回栈顶元素。boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。注意:你只能使用队列的基本操作 —— 也就是push to back、peek/pop ..

2022-04-01 18:44:08 183

原创 两数之和 IV - 输入 BST

653. 两数之和 IV - 输入 BST难度简单385收藏分享切换为英文接收动态反馈给定一个二叉搜索树root和一个目标结果k,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回true。class Solution { public boolean findTarget(TreeNode root, int k) { Set<Integer> setqd=new HashSet<>(); ret...

2022-04-01 17:20:46 142

原创 744. 寻找比目标字母大的最小字母

744. 寻找比目标字母大的最小字母给你一个排序后的字符列表 letters ,列表中只包含小写英文字母。另给出一个目标字母 target,请你寻找在这一有序列表里比目标字母大的最小字母。在比较时,字母是依序循环出现的。举个例子:如果目标字母 target = 'z' 并且字符列表为 letters = ['a', 'b'],则答案返回 'a'class Solution { public char nextGreatestLetter(char[] letters, char t

2022-04-01 16:38:31 60

原创 1832. 判断句子是否为全字母句

全字母句 指包含英语字母表中每个字母至少一次的句子。给你一个仅由小写英文字母组成的字符串 sentence ,请你判断sentence 是否为 全字母句 。如果是,返回 true ;否则,返回 false 。示例 1:输入:sentence = "thequickbrownfoxjumpsoverthelazydog"输出:true解释:sentence 包含英语字母表中每个字母至少一次.class Solution { public boolean checkIfP.

2022-04-01 16:00:01 86

原创 力扣面试题 10.01. 合并排序的数组

给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法,将 B 合并入 A 并排序。初始化 A 和 B 的元素数量分别为 m 和 n。示例:输入:A = [1,2,3,0,0,0], m = 3B = [2,5,6], n = 3输出: [1,2,2,3,5,6]一。直接全部放在a数组中然后使用api排序。class Solution { public void merge(int[] A, int m, int[] ...

2022-04-01 15:51:05 90

原创 jvm之gc流程

对象存放判断首先,到Edan判断空间是否足够。够,就创建对象, 不够就:MinorGC。回收完空闲空间再判断。够,创建对象 不够:将Edan中存活对象存放到Surviver去然后再判断Edan空间。够,就创建对象, 如果存活区空间也不够了。也还是不够创建。这个时候就将存活区的年龄到达对象转移致老年区,将Edan区活跃对象存到存活区。然后哦按段够,就创建对象, 如果Edan还是不够创建,老年代也不够了。就fullgc。然后再将存活区的对象存放在老年区将edan空出空间.

2022-03-28 20:40:41 345

原创 jvm类加载

加载通过一个类的全限定名来获取定义此类的二进制字节流。 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。 在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。在java虚拟机规范中并没有强行要求这三点具体实现;所以就可以很开放的出现各种形式; 就比如,去字节流过程,可以从jar,ear,war等格式的文件中取出。 可以从网络中取出 动态代理等 验证因为虚拟机不只是额能运行java的class文件。任何...

2022-03-28 20:00:41 1070

原创 spring mvc实现流程原理

没有主方法,依赖于tomcat启动。tomcat 也是Java写的,有主方法。 先有tomcat,servlet,后出现Springmvc框架 //mvc是用来前后交互。model ,views,ctrl. tomcat 和Springmvc如何交互? tomcat启动查看web.xml。 tomcat只识别servlet。 linux之下 statr.sh启动,5. 然后,调用******catalina.sh记录了主方法所在路径也就是bootstrap所在路径。.

2022-03-28 19:51:02 746

原创 Synchronized与Java Lock

Synchronized由什么样的缺陷? Java Lock是怎么弥补这些缺陷的?Synchronized缺陷:效率低:锁的释放情况少,只有代码执行完毕或者异常结束才会释放锁。不能中断一个正在使用锁的线程。 不够灵活:加锁和释放时机单一。 无法知道是否成功获得锁,lock可以拿到状态。lock功能:lock(): 加锁 unlock(): 解锁 tryLock(): 尝试获取锁,返回一个boolean值 tryLock(long,TimeUtil): 尝试获取锁,可以设置超时Syn

2022-03-28 16:40:20 360

原创 为什么tcp连接是安全的

序列号和确认号对于传输的包有自己的序列号。超时重传机制每当发送一个报文启动一个计时器没有接收到ack确认报文就会重传该报文。快速重传机制当接受方接受的序列号不对时会发送三个序列号相同的ack报文,来告诉发送方丢包了。不用等了,马上重传。流量控制(滑动窗口)通过维护一个滑动窗口,来确认对方不会由于发送报文太快就受访无法及时处理问题 。拥塞控制慢启动:拥塞窗口大小<拥塞阈值 ,此时cwnd呈指数形式增长拥塞避免:拥塞窗口大小>拥塞阈值,此时cwnd呈线性增长,

2022-03-28 16:11:00 3127

原创 spring boot启动流程

0. 启动main方法开始1.初始化配置:通过类加载器,(loadFactories)读取classpath下所有的spring.factories配置文件,创建一些初始配置对象;通知监听者应用程序启动开始,创建环境对象environment,用于读取环境配置 如 application.yml2.创建应用程序上下文-createApplicationContext,创建 bean工厂对象3.刷新上下文(启动核心)3.1 配置工厂对象,包括上下文类加载器,对象发布处理器,beanFactor.

2022-03-28 15:59:15 939

原创 当浏览器的地址栏输如域名发起请求后都发生了什么

DNS域名解析在浏览器DNS缓存中搜索 在操作系统中搜索 读取系统hosts文件,查找其中是否有对应ip 像本地配置的首选DNS服务器发起域名解析。建立tcp连接为了准确的传输数据,tcp选取三次握手和四次挥手的策略。发送端首先发送一个带SYN(synchronize)标志的数据给接收方,接受方接受返回SYN/ACK(acknowledegment)标志的数据表达确认。最后发送方一个带有ack的数据包标志握手结束。发起http请求请求方法:GET:获取资源 POST:传

2022-03-28 15:56:03 3740

原创 mq的选用标准

特性 ActiveMQ RabbitMQ RocketMQ Kafka 单机吞吐量 万级,吞吐量比RocketMQ和Kafka要低了一个数量级 万级,吞吐量比RocketMQ和Kafka要低了一个数量级 10万级,RocketMQ也是可以支撑高吞吐的一种MQ 10万级别,这是kafka最大的优点,就是吞吐量高。 一般配合大数据类的系统来进行实时数据计算、日志采集等场景 topic数量对吞吐量的影响

2022-03-27 11:16:23 135

原创 kafka

简介kafka是分布式的,基于发布订阅的消息系统。主要目标一时间复杂度为o(1)的方式提供持久化的能力,对于百万级别的数据也能保证常数时间复杂的访问性能。 高吞入率 消息分区,以及分布式消费。同时保证每个Partion内的消息顺序传输。 支持离线数据的处理和试试数据处理。 支持水平扩展基础概念一。生产者消费者对于kafka来说,客户端有生产者和消费者除此之外,还有一些做数据集成的connect api和流式处理的告诫客户端。二。主题与分区 消息以...

2022-03-27 11:05:14 1153

原创 RocketMQ

队列模型就是一个先入先出的队列。生产者放入,消费者取出。单个队列无法满足“广播”的需求主题模型或者称之为,发布订阅模型。在主题模型中,生产者称之为发布者,消费者称之为订阅者,存放消息的容器称之为主题。发布者将消息发送到指定主题中,订阅者需要提前订阅带能接受到特定主题的消息。RocketMQ其实他的消息模型就是主题模型实现。Produce Group 生产者组。代表一类生产者,比如我们有多个秒杀下同作为生产者...

2022-03-27 10:06:38 5968

原创 RabbitMQ

简介rabbitMq采用Erlang语言实现的消息队列。特点可靠性:使用一些机制保证消息可靠性,如持久化,传输确认。灵活路由:在消息进入队列之前通过交换器来路由信息。RabbitMq提供内置交换机。扩展性:多个RabbitMq节点可以组成一个集群,也可以根据实际业务情况动态的扩展集群中的节点,高可用:队列可以在集群中的机器上设置镜像使得再部分节点出现问题下任然可用。支持多种协议:他除了原生的AMQP协议还支持STOMP,MQTT等多种消息中间件的协议,多语言客户端:它支持常用

2022-03-27 10:04:14 2419

原创 sso单点登录

背景:当下架构网站,大多是微服务架构。分布式架构。很多功能都是单独的项目。那么验证是否登录就会变得麻烦。分类:cookie的顶级域名共享。设置sso项目单点登录。sso单点登录 当浏览器访问系统1,首先判断是否有登录信息。 没有访问sso系统判断是否登录,没有登陆。 跳转登录页面拿到用户名密码。 在sso登录留下登录信息。返回系统1登陆令牌. 系统1拿着令牌访问sso检验令牌是否正确。 访问正确,sso注册系统1。系统1留下登录信息。 统一用户访问系统2

2022-03-17 20:49:34 940

原创 socket通信

简介在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据网络通信有三要素。协议,ip和端口。而socket就是基于此的网络通信。通信方式Socket通信的数据传输方式,常用的有两种:   a、SOCK_STREAM:表示面向连接的数据传输方式。数据可以准确无误地到达另一台计算机,如果损坏或丢失,可以重新发送,但效率相对较慢。常见的 http 协议就使用 SO

2022-03-17 20:46:19 288

原创 mysql索引

索引优点可以大大加快 数据的检索速度(大大减少的检索的数据量), 这也是创建索引的最主要的原因。毕竟大部分系统的读请求总是大于写请求的。 另外,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。缺点 创建索引和维护索引需要耗费许多时间:当对表中的数据进行增删改的时候,如果数据有索引,那么索引也需要动态的修改,会降低 SQL 执行效率。 占用物理存储空间 :索引需要使用物理文件存储,也会耗费一定空间。 MyISAMB+Tree叶节点的data域存放的是数据记录的地址。在

2022-03-12 10:18:24 70

原创 linux常用命令

磁盘管理pwd 显示当前路径 ll 显示目录下的文件详细信息。开头是 ‘-’是文件,是‘d’是文件夹。ll 可以加上一个目路径。显示一个目录下的列表。 ls 显示文件的文件名。不同颜色是不同的文件或文件夹。也可以加上一个路径名。显示路径下的文件。 cd 路径 跳转。文件管理命mkdir 创建一个目录 rm 删除文件。参数删除一个目录,需要参数 -rf cp 文件名 新文件名 复制文件为新名字的文件。 cp 文件名 /路径/路径/ 将源文件 以原名方式复制 cp -rf 文件夹 。复制

2022-03-12 09:35:41 79

原创 spring事务

事务:事务是指是程序中一系列严密的逻辑操作,而且所有操作必须全部成功完成事务四特性:  ● 原子性(Atomicity):操作这些指令时,要么全部执行成功,要么全部不执行。只要其中一个指令执行失败,所有的指令都执行失败,数据进行回滚,回到执行指令前的数据状态。  ● 一致性(Consistency):事务的执行使数据从一个状态转换为另一个状态,但是对于整个数据的完整性保持稳定。  ● 隔离性(Isolation):隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户

2022-03-12 09:30:51 89

原创 当同一个接口的有多个实现类时如何知道注入哪一个

@Qualifier 注解当有多个相同类型的bean却只有一个需要自动装配时,将@Qualifier 注解和@Autowire 注解结合使用以消除这种混淆,指定需要装配的确切的bean。

2022-03-12 09:18:25 381

原创 spring bean生命周期

spring容器从xml文件中读取bean的定义并实例化bean,spring根据bean的定义填充所有属性。如果bean实现了BeanNameAware接口,spring传递bean的id到setBeanName方法。如果bean实现了beanFactoryAware接口,spring传递beanfactory给setBeanfactory方法如果有任何玉 bean相关联的beanpostprocessprs,springpostProcesserBeforeInitialization(

2022-03-12 09:15:13 325

原创 spring模块组成

spring-core:core包是框架最基础的部分,提供依赖注入管理bean容器的功能context:核心模块bean工厂使得spring成为一个容器。上下文模块使他成为一个框架。这和模块消息,事务传播以及验证的支持。aop面向切面编程,实现了业务和系统服务的解耦和。可以不修改源代码的情况下增强代码逻辑。spring dao对传统JDBC进行抽象mvc为构建web提供功能全面的mvc框架。orm关系映射模块。为流行的关系对象映射api提供集成层...

2022-03-12 09:02:36 70

原创 使用Spring的好处

轻量级:spring的大小基本只有2mb;控制反转:对象给出他们的以来而不是创建或查找以来的对象们面向切面aop:将应用业务逻辑和系统服务分开容器:spring 包含并管理应用中对象放入生命周期和配置。mvc框架事务管理:spring提供持续的事务管理接口异常处理...

2022-03-12 08:50:37 151

原创 dubbo测试注入没有成功解决办法

网上说的 启动顺序 依赖问题 使用注解没有导对包 配置中没写好 都很常见比较容易解决。 有一个很偏的知识。有时候服务提供方没有提供服务你可以试试。在提供方的启动类上加一个注解@EnableDubbo...

2022-02-15 18:15:54 280

原创 并发-Lock接口,AQS同步队列,重入锁,读写锁

Lock接口 介绍:java中并发包JUC中的lock接口是很多锁的老祖宗,它提供了锁的规范和标准。在java lock接口出现之前,都是依靠synchronized实现多线程的同步访问和资源共享。在java se1.5之后并发包中新增了lock接口以及相关实现类来实现锁的功能,它提供了和synchronized关键字以及相关实现类来实现锁的功能。他和synchronized有相似的同步功能,但是在使用时需要显示的获取和释放锁。synchronized的同步块或者方法都是隐式的获取和释放锁,jvm控制不需

2022-02-11 17:45:21 298

原创 redis-安全设置

设置密码:在配置文件中,redis.conf中的requirepass 密码。密码要超级复杂,因为redis速度相当快,说不定会暴力破解;设置了密码之后,启动时照常启动;进入客户端就需要密码了。如果直接进入,而不是用密码。在执行命令就会出错;这个时候就可以使用如下命令:就好了;绑定ip:在配置文件中,修改此处。也可以空格,接多个ip地址;修改默认端口:...

2022-02-11 17:41:47 2749

原创 redis-下载安装和使用

从官网下载压缩包 将压缩包上传至服务器并解压缩 下载gcc以用来编译src下的文件 启动redis ./redis-server:前台启动 再使用./redis-cli之后,就可以进行操作; 前台启动后,在输入./redis-cli shutdown;就可以关闭; kill -9 redis的服务号;可以强行关闭; ./redis-server & :后台启动 ps -ef | grep redis 查看进程详细信息 ./...

2022-02-11 17:39:44 186

原创 redis-高可用哨兵

哨兵的主要任务:监控:不断检查主服务器和从服务器是否按照预期正常工作;提醒:被监控的redis出问题,哨兵会通知管理员或其他应用程序;自动故障转移:主挂掉了,选择一个从变为主,其他从,从到新主,原主变为从,从到新主;哨兵至少是三个,并且必须是奇数个;哨兵通过心跳机制,检查是否故障;就比如,每个一秒发送给一个ping;哨兵配置文件的修改;哨兵启动命令:./redis-sentinel 配置文件所在位置;...

2022-02-11 17:39:08 106

原创 redis-主从复制

部署redis集群:通常从服务器要多于主服务器;通常主服务器负责写,从服务器负责读,应为读功能的需求一般都比较大;如果主服务器出了故障,从服务器会肩负起写的功能不会导致直接故障;redis主从复制的实现:修改配置文件,启动时读取配置文件,并自动成为指定服务器的从服务器;在一台服务器上模拟主从复制:首先每一个redis都要有不同的端口号;1024以下的端口号是操作系统占用;1025到65535都可以使用;第一步先把原有的配置文件复制几份;第二布编辑配置文件主:.

2022-02-11 17:37:37 43

原创 redis-持久化

RDB方式:每隔一段时间,将内存中的数据集快照以二进制方式存入磁盘;他适合用来做数据备份;蔽日每一天储存一次;AOF方式:记录数据修改的命令到一个文本;当redis重启时再执行一遍命令来恢复数据;...

2022-02-11 17:35:49 42

空空如也

空空如也

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

TA关注的人

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