自定义博客皮肤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)
  • 收藏
  • 关注

原创 双重判定锁来解决缓存击穿问题

缓存击穿是指:当热点数据过期或者不存在时,此时正好有大量请求访问热点数据,这些请求就会直接访问数据库,造成数据库的压力骤增,严重时造成宕机。缓存击穿使用 lock 或者 tryLock 同样有所讲究,需要视场景而定:lock:获取锁,成功就执行操作,失败就阻塞等待。trylock:获取锁,成功返回true,失败则直接返回false,不用阻塞等待。

2024-12-25 21:10:54 423

原创 NATAPP服务器内网穿透配置本地config.ini

Web Interface 是本地Web管理界面,可在隧道配置打开或关闭,仅用于web开发测试。Avg Conn Time 0.00ms 这里不代表,不代表,不代表 延时,需要注意!Version 当前客户端版本,如果有新版本,会有提示。在同级目录下,下载一个config.ini文件。将你的authtoken填进去,其余位置不填。Total Connections 总连接数。下载后进行解压,得到natapp.exe。点击我的隧道,复制authtoken。双击natapp.exe即可。

2024-12-25 15:31:38 406

原创 【Redis实战篇】利用布隆过滤器解决缓存穿透问题

查询一个不存在的数据,mysql查不到数据也会直接写入缓存,就会导致每次请求都查询数据库海量用户如果说查询的用户名存在或不存在,全部请求数据库,会将数据库直接打满。位图所谓位图,就是用每一位来存放某种状态,适用于海量数据,整数,数据无重复的场景。通常是用来判断某个数据存不存在的。布隆过滤器概念布隆过滤器是由布隆(Burton Howard Bloom)在1970年提出的 一种紧凑型的、比较巧妙的概率型数据结构,特点是高效地插入和查询,可以用来告诉你 “某样东西一定不存在或者可能存在。

2024-11-14 21:27:27 874 1

原创 Redis入门到精通(三):入门Redis看这一篇就够了

集群脑裂是由于主节点和从节点和sentinel处于不同的网络分区,使得sentinel没有能够心跳感知到主节点,所以通过选举的方式提升了一个从节点为主节点,这样就存在了两个master,这样就会导致客户端还在旧的主节点哪里写入数据,新节点无法同步数据,当网络恢复后,sentinel会将旧的主节点降为从节点,再从新的master中同步数据,就会导致数据丢失。修改redis的配置,设置最少的从节点数量以及缩短主从数据同步的延迟时间,达不到要求就拒绝请求,就可以避免大量的数据丢失。

2024-10-20 13:23:56 2560 34

原创 Redis入门到精通(二):入门Redis看这一篇就够了

1.1。

2024-10-19 16:16:44 1261 15

原创 Redis入门到精通(一):入门Redis看这一篇就够了

赞 / 踩、粉丝、共同好友 / 喜好、推送、下拉刷新等是社交⽹站的必备功能,由于社交⽹站访问量通常⽐较⼤,⽽且传统的关系型数据不太合适保存这种类型的数据,Redis 提供的数据结构可以相对⽐较容易地实现这些功能。排⾏榜系统⼏乎存在于所有的⽹站,例如按照热度排名的排⾏榜,按照发布时间的排⾏榜,按照各种复杂维度计算出的排⾏榜,Redis 提供了列表和有序集合的结构,合理地使⽤这些数据结构可以很⽅便地构建各种排⾏榜系统。所谓位图,就是用每一位来存放某种状态,适用于海量数据,整数,数据无重复的场景。

2024-10-19 09:09:10 1094 4

原创 一篇文章带你走进Java集合中的HashMap

在计算得到在Segment数组中的下标位置后,,会进行加锁(ReentrantLock锁),然后再通过hash值定位在HashEntry数组中的位置, 性能比较低。线程二:也在读取hashmao,直接进行扩容,因为是头插法,链表的顺序会进行颠倒,比如原来是AB,扩容后是BA,线程二执行结束。线程一先将A移入新的链表,再将B插入到链头,由于另外一个线程的原因,B的next指向了A,所以B-》A-》B形成了循环。线程一: 读取到当前的hashmap数据,数据中一个链表在准备扩容时,线程二介入。

2024-10-18 21:05:43 1084 2

原创 一篇文章带你走进Java集合中的List

底层使用的是Arrays类的一个内部类ArrayLisy来构造集合,在这个集合的构造器中,将我们传入的这个集合进行了包装而已,最终指向的都是同一个内存地址。list用了toArray转为数组后,如果修改list内容,数组不会受影响,底层是进行了数组的拷贝。如果索引从1开始,寻址公式中就要增加一次减法操作,对于cpu来说,增加一次指令,性能不高。Arrays.asList转换成list之后,如果修改了数组内容,list会受影响,根据数组索引获取数据元素时,会根据索引和寻址公式来计算内存中元素所对应的数据,

2024-10-18 11:47:13 870 1

原创 Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Circular

这个报错是说在处理请求时,视图解析器(ViewResolver)试图将请求转发到一个名为 “register” 的视图,但这个视图的路径又会再次触发当前的处理器(handler),导致了一个循环。这通常是因为视图解析器无法找到一个合适的视图来处理请求,所以它默认使用了请求的URL作为视图的名称。在Spring MVC中,当控制器方法返回一个字符串时,这个字符串通常被解释为视图的名称。如果没有明确指定视图解析器,Spring MVC会使用默认的视图解析器,它可能会根据请求的URL来生成视图的名称。

2024-10-16 12:44:07 1033

原创 530 Login fail. A secure connection is requiered(such as ssl)

错误信息 “530 Login fail. A secure connection is required (such as ssl)” 表示尝试登录到SMTP服务器时失败了,因为服务器要求建立一个安全的连接,比如通过SSL加密。这通常发生在使用邮件客户端或程序发送邮件时,没有正确配置安全连接选项。在完成项目的邮件发送过程中,出现这样的报错,在网上苦苦寻找,最终解决。为了解决这个问题,你需要确保在邮件发送配置中启用了SSL。java发送短信出现这样的报错。需要在配置文件中加上如下配置。即可成功 亲测有效!

2024-10-14 21:20:47 3389 3

原创 浅入深出之了解常见的用户登录校验

前言在讲解这个问题之前,我们要先搞清楚基本的用户登录流流程。在本文中会讲解三种常见的登录校验流程1.Cookie-Session认证2.

2024-10-10 20:31:09 878 9

原创 MyBatis之TypeHandler的自定义实现

在 MyBatis 中,类型处理器(TypeHandler)扮演着 JavaType 与 JdbcType 之间转换的桥梁角色。它们用于在执行 SQL 语句时,将 Java 对象的值设置到 PreparedStatement 中,或者从 ResultSet 或 CallableStatement 中取出值。MyBatis的TypeHandler机制具有很高的扩展性。我们可以通过实现TypeHandler接口或继承BaseTypeHandler类来创建自定义的TypeHandler实现。

2024-10-09 17:21:03 1613 5

原创 对序列化反序列化在项目中的使用优化

在我上述给出的代码中,我们可以看到,每一次进行序列化反序列化操作时,都需要进行try-catch操作,那么我们观察springboot的源码,可以来借鉴改善我们的代码。如果我们需要持久化 Java 对象比如将 Java 对象保存在文件中,或者在网络传输 Java 对象,这些场景都需要用到序列化。后续所有的序列化反序列化操作都是针对这个错误类实例出的对象而完成的。,要使用 JavaType的方法 将list 和 list里面的元素 整合成一个类型。点开SpringBoot源码,找到反序列化List的方法。

2024-10-08 17:40:52 1148

原创 Redis作为单线程模型,为什么效率高、速度快呢?

效率高、速度快是相较于数据库来说的(MySQL、Orcale、SQL server)

2024-09-20 08:59:20 520

原创 Redis的Key的过期策略是怎样实现的?

在学习Redis时,我们知道可以设置Key的过期时间,我们还知道,Redis一大特点–。那么当Redis中的数据量起来时,如果直接遍历所有的Key,那么对于Key过期时间的校验应该很费时间,那么Redis究竟是怎样做的呢?本文就来探讨关于Redis中的Key的过期册策略。Redis中的过期策略有两种。

2024-09-19 16:47:21 907

原创 控制反转(IoC)是什么?

学习Spring框架的小伙伴肯定都知道Spring框架的核心是IoC容器和AOP模块。也都听说过。IoC容器是Spring框架的底层基础,负责管理对象的创建和对象依赖关系的维护IoC是一种思想,而DI就是实现这个思想的一种方法。那么本文就带大家来了解什么是IoC。

2024-06-13 15:42:57 1329 34

原创 【网络协议】应用层协议HTTPS

一个叫“公钥”,一个叫“私钥”,公钥和私钥之前是配对的,但是这个加密解密的过程非常慢,所以一不使用非对称加密,只是在协商密钥时使用。由于HTTP协议在网络传输中是明文传输的,那么当传输一些机密的文件或着对钱的操作时,就会有泄密的风险,从而引入HTTPS来保证数据在网络传输中的安全。HTTP 本身是不安全的,因为传输的数据未经加密,可能会被窃听或篡改,为了解决这个问题,引入了 HTTPS,即在 HTTP 上加入。这时,又又有一个问题,在客户端和服务器在沟通使用哪个密钥时,被黑客窃取到信息,那该怎么办呢?

2024-05-28 20:14:45 3142 72

原创 【网络协议】应用层协议--HTTP

既然是代理,也就是说:客户端的所有请求都要先经过Fiddler,然后转发到相应的服务器,反之,服务器端的所有响应(response),也都会先经过Fiddler然后发送到客户端,基于这个原因,Fiddler支持所有可以设置http代理为127.0.0.1:8888的浏览器和应用程序。在HTTP协议中,并没有规定键值对的数量,这样就不知道数据从哪结束,这样的空行就相当于是结束符/分隔符,告诉计算机从这儿结束,从而对粘包问题的一点处理。(小屏幕就将页面一行的内容减少,增加到列中,横屏模式和竖屏模式的转换)。

2024-05-26 18:15:43 1511 66

原创 【网络协议】网络层--IP协议

在网络中,一个主机通过网络向另一个主机传输数据,之间要经过很多的路由器(自己家中的路由器,通信厂商的地区局部路由器,总路由器等),每一个路由器在传输数据时,可能并不知道直接的路径是什么,它只知道与它相连的路由器的路径,在这些路径中会选择一个比较快(近)的来及进行传输。在网络中,数据的传输并不是直接从一方的传输层直接发送到另一方的传输层,而是需要将传输层的数据层层向下传递,经过网络层和链路层的层层封装,通过网络传输到另一方的链路层,再向上经过层层分用,最终传输层拿到数据,最后传给应用层。

2024-05-22 17:56:53 2781 74

原创 子网掩码是什么?有什么作用?

每个部分最多不超过30台,按最高的30台来算,加上一个网段地址和广播地址,总共一个部门最多需要32个地址,也就是2的5次方,也就是子网掩码后面5个0.转换为十进制也就是 255.255.255.224。子网掩码由连续的1和0组成,连续的1表示网络地址,连续的0表示主机地址,通过0的个数可以得到子网的容量。而这个子网中的可用地址只有254个,因为规定每个子网的第一个IP地址为网段地址,最后一个地址为广播地址。子网掩码是配合IP地址使用的,不能单独存在,是用来划分子网的。

2024-05-22 15:36:14 836 40

转载 什么是SD NAND?

内部使用寿命最长、性能最稳定的SLC NAND Flash晶圆,擦写次数可以达到5~10万次;硬件对外采用最为通用的SD接口。比如:贴片式T卡、贴片式TF卡、贴片式SD卡、可焊接的T卡,可焊接的SD卡,可贴片的TF卡,贴片式内存卡、贴片卡、TF NAND Flash等。今天我们雷龙也精心准备了SD NAND 的一个介绍。简单的理解为 把TF/SD卡做成了一个6*8mm LGA-8封装,可以机贴的存储芯片。针对初次使用CS创世 SD NAND样品的客户,我们雷龙提供配套的测试卡,测试座和免费样品。

2024-05-20 16:02:47 967 34

原创 【网络协议】一文带你搞懂Tcp和Udp(万字详解)

再上一篇文章中 介绍了关于网络编程中应用层的一些基本知识,本文会着重讲解传输层中Tcp和Udp两种协议。

2024-05-18 19:03:45 9996 70

原创 网络编程套接字

在本文中,会介绍一些关于网络编程的基础知识Socket的一些api会在文章末尾运用所讲知识做一个基于网络的回显的代码是UDP Socket,⽤于发送和接收UDP数据报。方法签名方法说明创建⼀个UDP数据报套接字的Socket,绑定到本机任意⼀个随机端⼝(⼀般⽤于客⼾端)创建⼀个UDP数据报套接字的Socket,绑定到本机指定的端⼝(⼀般⽤于服务端)方法签名方法说明从此套接字接收数据报(如果没有接收到数据报,该⽅法会阻塞等待)从此套接字发送数据报包(不会阻塞等待,直接发送)

2024-05-15 18:26:16 1898 68

原创 初识网络编程

在本文中,会对网络编程的一些术语进行解释,例如什么是IP,什么是协议,什么是端口号。并且会对计算中各个协议的交互有一个初步的介绍计算机网络:计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。网络编程的目的:传播交流信息、数据交换、通信。想要达到什么效果需要什么如何准确定位网络上的某台主机。IP地址+端口。定位到计算机上的某个资源。找到这台主机,如何传输数据。概念。

2024-05-09 11:49:13 1043 54

原创 【Java】IO流:字节流 字符流 缓冲流

流”是一个抽象的概念,是对输入输出设备的一种抽象理解,在Java中,对数据的输入输出都是以“流”的的方式进行的。这个例子中,小推车可以视为缓冲区,小推车的存在,减少了我们装车次数,从而提高了效率。这是因为我们在创建流后,在流使用后,需要对流进行关闭,在写入到try后面的小括号内时,我们就可以不必手动的来进行流的关闭,减少一些情况下我们忘记关闭流这一操作带来的风险,字符流:数据流中的最小的数据单元是字符,一次读入读出16位二进制,java中的字符是Unicode编码,一个字符占用两个字节。

2024-05-07 11:12:37 1931 42

原创 Java中一个汉字究竟占几个字节?

因为当时各个国家都像中国这样搞出一套自己的编码标准,结果互相之间谁也不懂谁的编码,谁也不支持别人的编码,连大陆和台湾这样只相隔了150海里,使用着同一种语言的兄弟地区,也分别采用了不同的 DBCS 编码方案——当时的中国人想让电脑显示汉字,就必须装上一个"汉字系统",专门用来处理汉字的显示、输入的问题,但是那个台湾的愚昧封建人士写的算命程序就必须加装另一套支持 BIG5 编码的什么"倚天汉字系统"才可以用,装错了字符系统,显示就会乱了套!但是,对于某些特殊的、不常用的字符,UTF-16会用四个字节来表示。

2024-04-29 11:55:15 2087 23

原创 【Java】文件操作

什么时候会用到临时文件的呢, 比如这里打开一个word文档, 在打开的同时就会在同级目录下生成出一个临时文件, 关闭word, 这个临时文件被删除了, 临时文件发挥的功能是实时保存我们实时编辑的内容(尤其是没有保存的内容), 防止我们编辑了很多内容但由于一些问题导致我们没有进行保存, 比如工作一半突然停电了, 东西还没来得及保存, 但由于临时文件中实时保存了我们编辑的内容, 等到再次启动word文档时, 就会提醒我们是否要恢复之前的编辑内容.文件权限与用户权限共同决定了用户对文件的实际操作权限。

2024-04-24 21:45:28 1698 42

原创 【Java】HashMap、HashTable和ConcurrentHashMap的区别

HashMap是基于哈希表实现的,通过哈希函数将键映射到索引位置,实现快速查找。与HashTable不同,HashMap允许使用null作为键和值。HashMap不是线程安全的,因此在多线程环境下使用时需要注意数据一致性问题。

2024-04-21 17:22:29 1822 35

原创 【Java】常见锁策略 && CAS机制 &&锁优化策略

synchronized是非公平锁,也就是机会均等的竞争锁。

2024-04-19 18:16:13 2467 33

原创 【Java】线程池

线程池是一种利用池化技术思想来实现的线程管理技术,主要是为了复用线程、便利地管理线程和任务、并将线程的创建和任务的执行解耦开来。我们可以创建线程池来复用已经创建的线程来降低频繁创建和销毁线程所带来的资源消耗。在JAVA中主要是使用ThreadPoolExecutor类来创建线程池,并且JDK中也提供了Executors工厂类来创建线程池(不推荐使用)。线程池的优点降低资源消耗,复用已创建的线程来降低创建和销毁线程的消耗。提高响应速度,任务到达时,可以不需要等待线程的创建立即执行。提高线程的可管理性。

2024-04-17 15:14:18 1633 28

原创 【Java】内存可见性问题是什么?

具体说来, JVM中存在一个主存区(Main Memory或Java Heap Memory),对于所有线程进行共享,而每个线程又有自己的工作内存(Working Memory),工作内存中保存的是主存中某些变量的拷贝,线程对所有变量的操作并非发生在主存区,而是发生在工作内存中,而线程之间是不能直接相互访问,变量在程序中的传递,是依赖主存来完成的。由于线程之间的交互都发生在主内存中,但对于变量的修改又发生在自己的工作内存中,经常会造成读写共享变量的错误,我们也叫。如上t1读的是自己的工作内存中的内容。

2024-04-14 22:58:13 1137 17

原创 【Java】单例模式

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。

2024-04-08 21:30:15 2016 34

原创 【Java】线程安全问题

在之前的文章中,已经介绍了关于线程的基础知识。我的主页: 🍆🍆🍆欢迎各位大佬来到我的主页进行指点一同进步!!!

2024-04-05 21:59:46 1479 32

原创 【Java】线程的状态

在之前的文章中,已经介绍了关于线程的基础知识。我的主页: 🍆🍆🍆。

2024-04-03 18:28:01 1029 16

原创 【Java】Thread详解

本文将从以下五方面来展开对Thread的介绍。在前面的文章中,已经总结了关于Thread的一些理解。在阅读本文之前,最好对其有一些基础的了解。

2024-04-01 17:07:20 2056 31

原创 【MySQL】事务是什么?事务的特性又是什么?

当事务A在对数据进行修改时,事务A等待一段时间,此时在等待过程中,事务B记录下了A对数据修改的结果,等待时间过后,事务A继续修改,此时事务B误将这次的结果作为最终结果记录下来。事务A对数据进行修改,接下来事务B进行读取数据(事务B的多个SQL都要进行读操作),在执B的过程中,又有一个事务C对数据进行了修改。事务是由一个或多个SQL语句构成的,在事务中,这些的SQL不可分割,是一个整体,整个事务类似于物理中的原子结构,不可再分。),数据库会将先前执行的SQL语句给一句一句恢复回去,这里的操作叫做。

2024-03-30 21:14:22 1593 15

原创 【JavaSE】Thread类中run和start的区别

当你想要创建一个新的线程并执行某些任务时,你应该重写run方法以提供任务的具体实现,并通过调用start方法来启动新线程。在main方法中,创建了MyThread的一个实例,并调用其start方法来启动一个新的线程。相反,它只是在当前线程中顺序执行run方法中的代码,这与普通的方法调用没有区别。这样,run方法中的代码就会在新的线程中并行执行,而不是在当前线程中顺序执行。当你创建一个新的线程时,你需要重写run方法,以提供线程应该执行的具体任务。然而,直接调用run方法并不会启动新的线程。

2024-03-29 18:55:59 623 6

原创 【JavaSE】初识线程,线程与进程的区别

和虚拟机栈所发挥的作用非常相似,区别是: 虚拟机栈为虚拟机执行 Java 方法 (也就是字节码)服务,而本地方法栈则为虚拟机使用到的 Native 方法服务。在上文中,我们提到“并发执行”,在执行过程中,会产生很多的“中间结果”,在进程切出于CPU之前,需要把这些“中间结果”(CPU的寄存器中的各种值),保存到PCB的上下文中。进程中的一个执行任务(控制单元),负责当前进程中程序的执行。,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,线程也被称为轻量级进程。

2024-03-28 18:21:32 1661 15

原创 【Java扫盲篇】String、String Buffer和String Builder的区别

你在面试时,面试官让你讲讲r的区别,你是否能流畅的、完整的叙述出他们三者的区别?

2024-03-28 17:18:09 1215 15

原创 【JavaSE】进程是什么?

对于计算的CPU来说,现在的科技水平只能达到4nm的精度,这对于庞大的需求来说,确实是有些吃力,所以人们开始思考,当CPU的制造水平有了一定限制时,一个CPU解决不了的事情,我们可以交付给多个CPU来处理,也就是我们现在所谓的多核计算机。在上文中,我们提到“并发执行”,在执行过程中,会产生很多的“中间结果”,在进程切出于CPU之前,需要把这些“中间结果”(CPU的寄存器中的各种值),保存到PCB的上下文中。当下一次CPU再次调度这个进程时,就要把之前的数据读取出来,放入寄存器中,也就是所谓的【读档】。

2024-03-25 23:15:50 1721 23

空空如也

空空如也

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

TA关注的人

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