自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 RedisTemplate使用最详解(三)--- opsForHash()

如何key对应的map不存在,则新增到map中,存在则不新增也不覆盖。使key对应的map中,键var2对应的值以double类型d1自增。获取key对应的map中,key为var2的map的对应的值。使key对应的map中,键var2对应的值以long1自增。获取指定key对应的map集合中,指定键对应的值的长度。直接以map集合的方式添加key对应的值。判断key对应的map中是否有指定的键。获取key对应的map中所有的键。获取key对应的map中所有的值。删除key对应的map中的键值对。

2024-05-16 14:24:50 268

原创 Xmind Pro 2024 24安装教程

Xmind 应该是目前最好用的一款思维导图软件了。拥有优秀的用户体验,凭借简单易用,功能强大的特点,XMind在2013年被著名互联网媒体Lifehacker评选为全球最受欢迎的思维导图软件。2.选中“Xmind Pro 2024 24.01.exe”右键以管理员身份运行。5.打开“Crack”文件夹,复制里面的“winmm.dll”文件。6.鼠标放在软件图标上,右键选择“打开文件所在位置”3.软件正在安装中,请耐心等待安装完。①、用心打磨16年的思维导图软件。本文由博客一文多发平台。

2024-05-14 13:24:12 226

原创 SpringBoot的@Async注解有什么坑?

SpringBoot中,@Async注解可以实现异步线程调用,用法简单,体验舒适。但是你一定碰到过异步调用不生效的情况,今天这篇文章总结了@Async注解的坑点,希望对你会有所帮助。这里面,我个人认为绝大多数人会遇到的坑点集中在没有配置自定义线程池、异步方法在同一个类中调用、事务不起作用这几个问题上,在实际使用时候要注意@Async注解失效的场景。本文由博客一文多发平台OpenWrite发布!

2024-05-07 13:20:53 881

原创 24.什么是跨域?解决方案有哪些?

协议,域名(ip地址),端口。只有当协议,域名,端口都一致的时候,才被称为同源。而同源策略规定,只有发送请求的那一边和接受请求的那一边处于同源的情况下,浏览器才会接受响应。常见的跨域场景:而当我们的请求不符合同源策略的时候。往往会出现以下错误👇CORS是一个W3C标准,全称是"跨域资源共享”(Cross-origin resource sharing)。它允许浏览器向跨源(协议 + 域名 + 端口)服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。

2024-04-30 14:07:13 1546

原创 Java本地缓存技术选型(Guava Cache、Caffeine、EhCache)

对一个java开发者而言,提到缓存,第一反应就是Redis。利用这类缓存足以解决大多数的性能问题了,我们也要知道,这种属于remote cache(分布式缓存),应用的进程和缓存的进程通常分布在不同的服务器上,不同进程之间通过RPC或HTTP的方式通信。这种缓存的优点是缓存和应用服务解耦,支持大数据量的存储,缺点是数据要经过网络传输,性能上会有一定损耗。与分布式缓存对应的是本地缓存,缓存的进程和应用进程是同一个,数据的读写都在一个进程内完成,这种方式的优点是没有网络开销,访问速度很快。

2024-04-22 15:38:26 1569 1

原创 Java String字符串 与 ASCII码相互转换

ASCII (American Standard Code for Information Interchange):美国信息交换标准代码是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准 ISO/IEC 646。ASCII第一次以规范标准的类型发表是在1967年,最后一次更新则是在1986年,到目前为止共定义了128个字符。本文由博客一文多发平台。

2024-04-15 10:49:50 176

原创 Java二进制、八进制、十进制、十六进制转换

Integer.valueOf( str, N ) 方法等同于 Integer.parseInt( str, N ) 方法。Integer.valueOf( str, N ) 方法把N进制的字符str转换成十进制。本文由博客一文多发平台。

2024-04-11 13:24:52 333

原创 一文搞懂 ThreadLocal

ThreadLocal存取的数据,总是与当前线程相关,也就是说,JVM 为每个运行的线程,绑定了私有的本地实例存取空间,从而为多线程环境常出现的并发访问问题提供了一种隔离机制。ThreadLocal的作用是提供线程内的局部变量,这种变量在线程的生命周期内起作用。提供一个线程内公共变量(比如本次请求的用户信息),减少同一个线程内多个函数或者组件之间一些公共变量的传递的复杂度,或者为线程提供一个私有的变量副本,这样每一个线程都可以随意修改自己的变量副本,而不会对其他线程产生影响。

2024-04-05 19:28:13 1007 1

原创 写文章 点击打开程序员子龙的主页 java全套电子书分享(可直接下载)

这里汇集如下主题的经典书籍: 编程语言、操作系统、计算机网络、系统架构、设计模式、程序员数学、测试、中间件 、前端开发、后台开发、网络编程、Linux使用及内核、求职面试、算法与数据结构、数据库、Redis、消息中间件等编程学习书籍。本仓库持续更新中,后续会陆续分享更多经典电子书,建议大家 Star 下。

2024-04-05 19:14:37 982

原创 Netty 代理TCP 转发集群方案

Nginx 1.9 已经支持 TCP 代理和负载均衡,并可以通过一致性哈希算法将连接均匀的分配到所有的服务器上。使用 Netty 自定义协议连接物联网设备,业务增大之后,势必需要使用集群方案。经过测试可以发现,设备上报的数据分配到不同服务器上。注意:stream和http是平级的。#检查配置文件语法是否正确。#nginx负载均衡。

2024-03-28 15:08:45 458

原创 Nginx超详细讲解+实操

为了有一个全面的认知,接下来我们先来看看nginx的架构以及一些特点。

2024-03-28 15:04:59 1709

原创 Redis实现排行榜功能实战

在日常的服务器开发过程中,经常会遇到排行榜的需求。这里我们主要讨论使用redis zset来实现一般的常用排行榜。也就是单key排行榜,分数为整数,一般长度不过万。Redis的ZSet(Sorted Set)是一种有序集合,它结合了Set和SortedList的特性,成员是唯一的,且按照成员的分数(score)进行从小到大排序。在ZSet中,每个元素都会关联一个分数,分数可以重复,但元素不能重复。这使得ZSet非常适合用于实现排行榜等场景。

2024-03-25 15:48:20 1127

原创 Spring Boot 实现定时任务动态管理

本文主要介绍了SpringBoot架构下动态定时任务的使用,定时任务表达式配置在数据库中,通过反射执行到目标方法。Quartz定时任务默认都是并发执行的,不会等待上一次任务执行完毕,只要间隔时间到就会执行, 如果定时任执行太长,会长时间占用资源,导致其它任务堵塞。一般设置都是禁止并发执行//禁止并发执行@Override/*** 线程本地变量*/@Overridetry {if (sysJob!= null)log.error("任务执行异常 - :", e);/**

2024-03-25 15:45:12 1548

原创 java中double类型数据加减操作精度丢失问题及解决方法

但是想像一下吧,如果我们要做一个加法运算,需要先将两个浮点数转为String,然后够造成BigDecimal,在其中一个上调用add方法,传入另一个作为参数,然后把运算的结果(BigDecimal)再转换为浮点数。你能够忍受这么烦琐的过程吗?在使用Java中double 进行运算时,经常出现精度丢失的问题,总是在一个正确的结果左右偏0.0000**1。今天在项目中用到double类型数据加减运算时,遇到了一个奇怪的问题,比如1+20.2+300.03,理论上结果应该是321.23,其实结果并不是这样。

2024-03-05 15:02:44 526

原创 一文教会你如何在SpringBoot项目里集成Hibernate

一个老项目中使用了Hibernate,是SpringMVC项目,要把定时任务拆出来,使用SpringBoot集成Hibernate,今天整理下集成的过程。Hibernate是一个流行的ORM(对象关系映射)框架,它可以将Java对象映射到数据库表,从而方便地进行持久化操作。在Spring Boot项目中,集成Hibernate可以帮助我们更轻松地进行数据库操作。我们已经成功地在Spring Boot项目中集成了Hibernate,并且可以使用它来方便地进行数据库操作。

2024-01-27 08:13:34 1642

原创 ORACLE体系结构逻辑结构-表空间、段、区和数据块

一个数据库有很多表空间,一个表空间有多个段组成,一个段由多个区组成,一个区由连续的数据块组成。表空间不是表,段是用来存储数据库对象的(如表、所以、过程等),一个区用来存储特定类型的数据的(如字符、日期、数字、其他类型)。表空间、用户和表是数据库的三个重要对象,它们之间有着密切的关系。一般来说,一个用户可以拥有多个表空间,一个表空间可以包含多个表,一个表只能属于一个表空间和一个用户。

2024-01-09 08:20:40 857

原创 JVM 垃圾回收详解

什么是垃圾?垃圾是指运行程序中没有任何引用指向的对象,需要被回收。内存溢出和内存泄漏内存溢出:经过垃圾回收之后,内存仍旧无法存储新创建的对象,内存不够溢出。内存泄漏:又叫“存储泄漏”,对象不会在被程序使用了,但是GC又不能回收他们。例如:IO流不适用了但是没有被close、数据库连接JDBC没有被close。这些对象不会被回收就会占据内存,大量的此类对象存在,也是导致内存溢出的原因。垃圾回收的定义与重要性JVM内存区域划分。

2023-12-18 21:39:33 292

转载 JVM 内存区域详解

本文讲解了 JVM 内存区域划分,要掌握 JDK 8 实现方式,JDK 1.7了解即可,JVM 内存区域包括程序计数器、虚拟机栈、本地方法栈、堆、元空间、直接内存,掌握内存划分,对后续学习垃圾回收算法很有必要!

2023-12-18 21:37:52 71

原创 史上最全MySQL各种锁详解

Innodb存储引擎由于实现了行级锁定,虽然在锁定机制的实现方面所带来的性能损耗可能比表级锁定会要更高一下,但是在整体并发处理能力方面要远远优于MYISAM的表级锁定的。当系统并发量高的时候,Innodb的整体性能和MYISAM相比就会有比较明显的优势了。但是,Innodb的行级锁定同样也有其脆弱的一面,当我们使用不当的时候,可能会让Innodb的整体性能表现不仅不能比MYISAM高,甚至可能会更差。

2023-12-10 22:09:18 504

原创 别再写满屏的 try catch 了,教你如何统一处理异常!

*** 创建异常的接口,具体异常可由实现类来决定*//*** 创建异常的接口,具体异常可由实现类来决定,支持占位符参数列表*//*** 断言 obj 非空。如果 obj 为空,则抛出异常*//*** 断言 obj 非空。如果 obj 为空,则抛出异常* 异常信息 message 支持传递参数方式,避免字符串拼接操作*///更多类型自行定义它应该属于运行时异常,并且需要有错误码(code)、错误描述(message)等属性,满足这些条件应该就可以了。@Getter。

2023-12-10 22:04:05 106

原创 Spring Boot中使用AOP统一处理Web请求日志

AOP,也就是 Aspect-oriented Programming,译为面向切面编程,是计算机科学中的一个设计思想,旨在通过切面技术为业务主体增加额外的通知(Advice),从而对声明为“切点”(Pointcut)的代码块进行统一管理和装饰。,切面必须要完成的各个具体工作,比如我们的日志切面需要记录接口调用前后的时长,就需要在调用接口前后记录时间,再取差值。这种思想非常适用于,将那些与核心业务不那么密切关联的功能添加到程序中,就好比我们今天的主题——日志功能,就是一个典型的案例。

2023-11-21 11:41:10 90

原创 Sublime Text4 安装教程,亲测可用!Sublime Text 4 完美可用!

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。③、强大的快捷命令“可以实时搜索到相应的命令、选项、snippet 和 syntex, 按下回车就可以直接执行,减少了查找的麻烦。Sublime Text 可以编写html,css,js,php等等,是一个轻量、简洁、高效、跨平台的编辑器。激活成功否check。

2023-11-21 11:35:34 633

原创 Rocketmq消费消息时不丢失不重复

在消费者端,需要确保在消息拉取并消费成功之后再给Broker返回ACK,就可以保证消息不丢失了,如果这个过程中Broker一直没收到ACK,那么就可以重试。当然,RocketMQ 并不会无限重新投递消息给 Consumer 重新消费,而是在默认情况下,达到 16 次重试次数时,Consumer 还是消费失败时,该消息就会进入到。ocketMQ的每条消息都有一个唯一的MessageId,这个参数在多次投递的过程中是不会改变的,所以业务上可以用这个MessageId来作为判断幂等的关键依据。

2023-11-20 20:33:46 98

原创 如何做到百万数据半小时跑批结束

跑批就是应用程序定时对数据的批量处理。跑批有以下特性:大数据量:批量任务一般伴随着大量的数据处理自动化:要求制定时间或频率自动运行性能:要求在指定时间内完成批处理任务健壮性:针对于异常数据,不可导致程序崩溃可靠性:针对于异常数据,我们后续可跟踪。

2023-11-16 10:57:07 191

原创 Mysql Explain工具介绍

使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析查询语句或是结构的性能瓶颈。

2023-11-13 19:09:05 266

转载 如何正确遍历删除List中的元素

无论什么场景,都不要对List使用for循环的同时,删除List集合元素,要使用迭代器删除元素。

2023-11-10 12:39:33 45

原创 为什么要使用分布式锁

当你释放锁(钥匙,即办理退房)的时候,则其他人可以再次申请锁。2、不具备可重入的特性,因为同一个线程在释放锁之前,行数据一直存在,无法再次成功插入数据,所以,需要在表中新增一列,用于记录当前获取到锁的机器和线程信息,在再次获取锁的时候,先查询表中机器和线程信息是否和当前机器和线程相同,若相同则直接获取锁;3、没有锁失效机制,因为有可能出现成功插入数据后,服务器宕机了,对应的数据没有被删除,当服务恢复后一直获取不到锁,所以,需要在表中新增一列,用于记录失效时间,并且需要有定时任务清除这些失效的数据;

2023-11-06 20:36:58 318

转载 几乎涵盖你需要的SpringBoot SpringCloud所有操作

模块五 微服务通信:当服务间要产生彼此通信,在 Spring Cloud Alibaba 中支持 RPC 与 RESTful 两种方案,对应的产品为 Dubbo 与OpenFeign ,本阶段我将给出这些组件的最佳实践以及原理分析。模块三 系统保护:Sentinel 是 Alibaba 提供的服务保护中间件,利用 Sentinel 可以有效预防分布式架构的系统性崩溃,本阶段我们将讲解 Sentinel 的限流、熔断、代码控制等最佳实践。更是阿里微服务最具代表性的技术之一,很多人只知道。

2023-11-05 13:12:17 48

原创 Java 的高性能缓存库-caffeine!

Caffeine是基于Java8 的高性能缓存库,借鉴了 Guava 和 ConcurrentLinkedHashMap 的设计经验,拥有更高的缓存命中率和更快的读写速度。性能比Guava更强数据结构Cache的内部包含着一个ConcurrentHashMap,这也是存放我们所有缓存数据的地方。Scheduler,定期清空数据的一个机制,可以不设置,如果不设置则不会主动的清空过期数据。Executor,指定运行异步任务时要使用的线程池。

2023-11-02 16:32:11 153

原创 API接口安全设计

数据摘要算法是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名、数据完整性校验等功能,由于其不可逆性,有时候会被用做敏感信息的加密。数据摘要算法也被称为哈希(Hash)算法或散列算法。消息摘要算法的主要特征是加密过程不需要密钥,并且经过加密的数据无法被解密,只有输入相同的明文数据经过相同的消息摘要算法才能得到相同的密文。(摘要可以比方为指纹,消息摘要算法就是要得到文件的唯一职位)消息摘要算法对称加密算法非对称加密算法国密算法。

2023-11-02 16:02:51 1394 1

原创 缓存和数据库一致性解决方案

引入缓存后,需要考虑缓存和数据库一致性问题,可选的方案有:「更新数据库 + 更新缓存」、「更新数据库 + 删除缓存」更新数据库 + 更新缓存方案,在「并发」场景下无法保证缓存和数据一致性,且存在「缓存资源浪费」和「机器性能浪费」的情况发生在更新数据库 + 删除缓存的方案中,「先删除缓存,再更新数据库」在「并发」场景下依旧有数据不一致问题,解决方案是「延迟双删」,但这个延迟时间很难评估,所以推荐用「先更新数据库,再删除缓存」的方案。

2023-10-31 15:03:17 255

原创 面试官:聊聊kafka线上使用会有哪些问题?

如果发送端配置了重试机制,kafka不会等之前那条消息完全发送成功才去发送下一条消息,这样可能会出现,发送了1,2,3条消息,第 一条超时了,后面两条发送成功,再重试发送第1条消息,这时消息在broker端的顺序就是2,3,1了 所以,是否一定要配置重试要根据业务情况而定。大数据统计报表场景,对性能要求很高,对数据丢失不敏感的情况可以用这种。如果消费这边配置的是自动提交,万一消费到数据还没处理完,就自动提交offset了,但是此时你consumer直接宕机了,未处理完的数据 丢失了,下次也消费不到了。

2023-10-31 14:54:53 93

转载 面试官:你能聊聊高并发下的接口幂等性如何实现吗?

是一个数学与计算机学概念,在数学中某一元运算为幂等时,其作用在任一元素两次后会和其作用一次的结果相同。“ 在计算机中编程中,一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数或幂等方法是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。

2023-10-29 15:51:55 109

原创 优雅的接口防刷处理方案

为了防止恶意访问接口造成服务器和数据库压力增大导致瘫痪,接口防刷在工作中是必不可少的。给大家介绍几种设计方案。

2023-10-25 10:37:29 879

原创 mysql索引为啥使用B+tree?

索引数据结构二叉树红黑树Hash表B-Tree每个节点最多只有两个子节点, 左边的子节点都比当前节点小,右边的子节点都比当前节点大。一棵深度为k,且有2^k-1个结点的二叉树,称为满二叉树。可能变成链表,查询效率低它是一种排序的二叉树。主要特征:左右子树的树高差绝对值不能超过1本质上也是一种二叉树。特性:1)每个结点要么是红的,要么是黑的。2)根结点是黑的。3)每个叶结点(叶结点即指树尾端NIL指针或NULL结点)是黑的。4)如果一个结点是红的,那么它的俩个儿子都是黑的。

2023-10-25 10:36:28 66

原创 RabbitMQ 入门教程看这一篇就够了

RabbitMQ是一个开源的,在AMQP基础上完整的,可复用的企业消息系统。支持主流的操作系统,Linux、Windows、MacOX等多种开发语言支持,Java、Python、Ruby、.NET、PHP、C/C++、node.js等AMQP,即 Advanced Message Queuing Protocol(高级消息队列协议),是一个网络协议,是应用层协议的一个开放标准,为面向消息的中间件设计。

2023-10-24 11:13:23 175

转载 几本霸占我休息时间的Java PDF 手册

465页,涵盖Java编程性能调优,Java多线程性能调优,JVM性能检测及调优,设计模式调优,数据库性能调优,实战演谷歌大佬的算法刷题手册阿里的高并发编程手册最新的大厂面试真题.....

2023-10-19 16:48:01 53

原创 ELK处理 SpringBoot 日志,太优雅了!

ELK 是一个开源的实时日志分析平台,它主要由 Elasticsearch、Logstash 和 Kiabana 三部分组成。

2023-10-16 10:18:12 66

原创 centos 7 安装 JDK

在打开的页面中,下载jdk-8u211-linux-x64.tar.gz,下载之前需要先同意Oracle的安装协议(点击Accept License Agreement)。如果先要更换之前的jdk从第一步开始,之前没下载过从第二步开始,建议先检查一下系统有没有自带jdk的。如果有就卸载,卸载的包名通过(rpm -qa | grep java)获取,包名要全部输入。2.然后会出现好多支持的版本,选择想要安装的版本进行安装,这里安装jdk11。点击后,会弹出一个窗口,点击协议,并点击下载。

2023-10-14 21:23:04 255

转载 扔掉工具类!MyBatis 一个简单配置搞定加密、解密,好用!

在我们数据库中有些时候会保存一些用户的敏感信息,手机号、银行卡等信息,如果这些信息以明文的方式保存,那么是不安全的。黑客黑进了数据库,那么就可能导致这些敏感数据的泄漏。因此我们就需要找到一种方法来解决这个问题。

2023-10-14 16:16:55 750

空空如也

空空如也

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

TA关注的人

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