自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis进阶(七):分布式锁

在分布式系统下,涉及到多个节点访问同一个公共资源的情况,此时需要通过 锁 进行互斥控制:避免出现 线程安全问题。

2024-09-07 21:38:55 646

原创 Redis进阶(六):缓存

速度快的设备可以作为速度慢的设备的缓存缓存能够有意义:二八定律,20%的数据可以应对80%的请求通常使用redis作为数据库的缓存(mysql)数据库是非常重要的组件,mysql速度比较慢因为mysql等数据库,效率比较低,所以承担的并发量有限,一旦请求数量变多了,数据库的压力就会提高。服务器每次处理一个请求,一定都要消耗一定的系统资源,如果某个资源达到上限,就会出现故障。

2024-09-06 16:51:33 1296

原创 Redis进阶(五):集群

1.节点之间通过心跳包进行通信,心跳包包含每个节点持有什么slots(槽位),槽位使用位图这样的数据结构表示的,16384 (16k)是2kb字节的空间,redis留出2kb的空间来保存槽位,如果slots更多了,就需要更大的空间去保存槽位。因为是周期性通信*(非常频繁,占用带宽)2.另⼀⽅⾯,Redis集群⼀般不建议超过1000个分⽚.所以16k对于最⼤1000个分⽚来说是⾜够⽤的,同时也会使对应的槽位配置位图体积不⾄于很⼤.

2024-08-31 18:13:00 1201

原创 Redis进阶(四):哨兵

为了解决主节点故障,需要人工操作切换主从的情况;因此需要一种方法可以自动化的切换:哨兵的引入大大改变这种情况。

2024-08-04 17:53:15 798

原创 SpringCloud极限速通版

SpringCloud是分布式微服务架构的一站式解决方案注意版本一致本文将以SpringCloudAlibaba为主进行讲解简单的入门及项目运用要注意:该自定义类不需要@Configuration注释,在组件扫描范围内使用自定义负载均衡策略,name:该负载均衡器对哪个服务生效;config:该负载均衡策略用哪个策略来实现(图内是自己实现的自定义负载均衡策略)1.支持服务上下线2.支持权重的配置(非严格)3.同集群优先访问2、3前提是需要开启Nacos负载均衡OpenFeign 是⼀个声明式的。

2024-07-22 15:02:09 903

原创 RabbitMQ:基础篇

在MQ中创建虚拟主机实现数据隔离。

2024-07-17 17:04:57 656

原创 Redis进阶(三):主从复制

为了解决单点问题,实现多服务器部署redis,有几种解决方案可以实现:主从复制,主从+哨兵还有集群。

2024-03-08 21:18:21 1040

原创 Java内存模型

Java内存模型是一个抽象的概念,它只是一个规定jvm虚拟机与内存之间工作方式的规范,简单来说,它规定一个线程何时、如何查看其他线程修改过的数据,以及在必须时如何同步地访问共享变量。

2024-03-08 13:06:42 354

原创 关于反射~

在 Java 中,反射是指在运行时检查和操作类、接口、字段、方法等程序结构的能力。通过反射,可以在运行时获取类的信息,创建类的实例,调用类的方法,访问和修改类的字段等。我们知道在类中如果有私有属性的情况下,类外是无法访问到的,但反射能直接操作类私有属性。反射可以在运行时获取一个类的所有信息,(包括成员变量,成员方法,构造器等),并且可以操纵类的字段、方法、构造器等部分。反射我将其理解为将一个整体的类中成员变量 、方法等都解剖成一个一个的java对象。

2024-03-07 11:44:08 424

原创 浅谈钩子方法

钩子方法(Hook Method)是一种由父类提供的空或默认实现的方法,子类可以选择性地重写或扩展该方法,以实现特定的行为或定制化逻辑。钩子方法可以在父类中被调用,以提供一种可插拔的方式来影响父类的行为。钩子方法通常用于框架或模板方法设计模式中。框架提供一个骨架或模板,其中包含一些已经实现的方法及预留的钩子方法。具体的子类可以通过重写钩子方法来插入定制逻辑,从而影响父类方法的实现方式。

2024-03-03 15:41:56 438

原创 Redis进阶(二):事务

redis事务的原子性不像MySQL原子性一样,执行不成功的话,redis事务不会进行回滚操作。

2024-02-06 15:09:04 548

原创 笔试强训 - 错题总结

重复读(Repeatable Read)是数据库的一种事务隔离级别,它保证在同一个事务中多次读取同一数据时能够得到相同的结果,即保证了在同一个事务内,多个查询操作返回的数据集合是一致的。在此事务中读取数据时,只能访问该视图中的数据,而不能访问其他事务未提交的数据。用sum表示A和B俩个数相异或的结果,carray 为 A和B与后左移一位的结果,得到sum和carray后,看carray是不是为0,如果不为0就让sum变成A,carray变成B进入循环,只要等到carray为0时,输出sum就是结果了。

2024-02-02 17:23:06 748

原创 Redis进阶(一):持久化

MySQL的事务有四个比较核心的特征:原子性、一致性、持久性和隔离性,这里的持久性和持久化说的是一个事,简单来说,数据存储在硬盘上就是持久,存在内存上那就是不持久(重启之后,这个数据还在就是持久),但是redis是一个内存数据库,在内存中想要实现持久化,就需要redis将数据存储到硬盘上。但是redis一大优势就是快,而快的前提是将数据存储到内存上,似乎二者发生了冲突,于是redis决定:插入数据,内存、硬盘都插入数据,取出数据,只从内存读取数据。redis重启,内存恢复数据就是从硬盘中恢复就ok了。

2024-02-02 17:21:59 983

原创 初识Redis

先看一下官方给的解释:从上面的英格力士可以了解到Redis是将数据存储到内存中,但如果是在内存中存储数据,直接定义一个变量不是更好吗?当然,在单机环境下,定义一个变量确实好使,但如果是在分布式的情况下,Redis就发挥神威了。我们都知道进程是有隔离性的,想要进行进程之间的通信,我们常常 使用网络来实现,Redis就是基于网络来实现的,可以把自己内存中的变量给别的进程,甚至别的主机进程也能进行使用。上面还提到作为一款数据库,那Redis和MySql有啥区别,换句话说有啥优劣呢?

2024-01-31 15:36:04 850 1

原创 算法专栏——双指针

那如果从后往前遍历的话,right指标肯定要先指向原数组最后的一个位置就比如上述的数据,right应该指向 val数据是 4。也可以用双指针从前往后,找到right最后的位置,然后left不需要进行换数据啥的,主要就是为了找到位置。看到这个题第一个想到的是:创建一个新的数组,遍历原数组然后普通数字直接复制到新数组上,0就复制俩次呗。我们发现left会往前越过right,并且覆盖掉了 2这显然不可以的,那我们就试着从后往前遍历。像这样子的将一整块数组划分很多部分可以称为数组划分,常用的解法可以是双指针。

2023-09-03 21:54:19 308

原创 Linux 三剑客

grep主打的就是查找功能 ,它能够在一个或者多个文件中搜索某一特定的字符模式。

2023-08-27 09:22:08 460

原创 WebSocket

在实现聊天室项目的时候,我遇到了一个问题,那就是消息是如何从服务器端自己推送给客户端的呢?一开始我的想法是每隔一段时间,就让客户端向服务器端请求数据,也就是所谓的“轮询”机制,但这种方式显然是太耗费资源的,我在查阅资料后,发现有一个应用层协议专门服务于这种情况的:WebSocket。(依旧是基于传输层的TCP实现的)

2023-08-09 19:24:10 824

原创 自动化测试的简单认识

自动化测试指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最后评估运行结果。将人为驱动的测试行为转化为机器执行的过程。

2023-05-23 14:22:51 557

原创 Spring 事务和事务传播机制

事务就是将一组操作封装成一个执行单元(封装到一起),要么一起成功,要么一起失败。在打账的情景上,A向B转账200 元,A的账户-200.B的账号+200,但是如果是一些特殊情况,A的账号-200之后,但是B账号并没有加上这个200元子的话,就会出现很大的问题,而出现这一大问题的原因,就是没有将转账这个业务变成事务。这里也体现了事务的原子性一大特征。

2023-05-18 14:32:07 875

原创 Spring Boot :统一功能处理

在用户登陆验证的业务中,如果只是使用Spring AOP的话,session无法获取的,还有各种参数(request等)很难获取,这时候Spring拦截器就发挥了重大的作用了。

2023-05-16 14:36:40 1407

原创 Spring AOP - 初识AOP

学到了现在,我们开启新的篇章:Spring AOP的学习,那么说到Spring AOP就要先知道什么是AOP?AOP(Aspect Oriented Programming),即面向切面编程,是一种程序设计思想和开发方法,它将业务逻辑和横切关注点进行分离,使系统更具模块化、可重用性和维护性。在传统的OOP(Object Oriented Programming)中,业务逻辑通常被包含在对象的方法中,而横切关注点(如日志、安全、事务等)则分散在各个模块之间,难以管理和维护。

2023-05-15 17:10:34 87

原创 MyBatis - 基础使用Ⅰ

这篇文章将讲解MyBatis的基础使用,MyBatis的学习是非常重要的,在前面学习servlet的时候,我们就能感受到将数据持久化存储的重要性,当时在使用JDBC的时候非常繁琐麻烦,但是在Spring里,提供了一种框架可以轻松且惬意的实现数据存储的功能:MyBatis。MyBatis的学习只分为俩部分:1.配置MyBatis的环境 2.设置配置信息。

2023-05-12 14:11:36 302

原创 测试用例常见的几种设计方法

我们将从以下几种常见的方法入手,讲解测试用例的设计方法:基于需求的设计方法、等价类、边界值、因果图、正交排列、场景设计法、错误猜测法。

2023-05-08 11:08:49 2662

原创 Spring-MVC:基础知识

请求转发是发生在服务器内部的,当客服端发送请求之后,服务器会先向目标地址发送请求之后,再将结果返回给客户端的,也就是说,转发的过程是服务器代替实现的;重定向是发生在客户端层面的,会将临时响应头返回给客户端,客户端需要再次发送请求(重定向)的 URL 地址,客户端再收到了地址之后,会将请求发送到新的地址上,这就是请求重定向。2.请求方不同请求转发的向目标地址的请求发是服务器,而重定向的向目标地址的请求发是客户端,

2023-05-06 15:10:03 79

原创 Spring-Boot:日志文件

日志在Spring root中有什么作用?在普通的业务中,如果发现代码出现bug,你不打开控制台看日志,你纯纯的看哪里有bug是一件可以说是不可能的事情,因此除了发现和定位问题之外,我们还可以通过⽇志实现以下功能:记录⽤户登录⽇志,⽅便分析⽤户是正常登录还是恶意破解⽤户。记录系统的操作⽇志,⽅便数据恢复和定位操作⼈。记录程序的执⾏时间,⽅便为以后优化程序提供数据⽀持。以上这些都是⽇志提供的⾮常实⽤的功能。

2023-04-22 21:29:27 95

原创 Spring-Boot:创建与简单使用&配置文件

我们学习了一些Spring简单的相关知识,接下来开启新的章节:Spring-Boot,关于啥是Spring-Boot呢?Spring-Boot其实就是Spring的脚手架,是为了更加方便使用Spring快速开发和使用的脚手架~~那我们在学习Spring-Boot简单使用的之前,我们先学习一下Spring-Boot的优点:1.快速的集成框架:快速的添加外部jar包2.内置Web框架:可以直接运行(是有main启动类的)3.快速部署:不依赖任何Web容器4.抛弃传统的xml文件。

2023-04-20 17:51:41 535

原创 软件测试——基础概念篇

开启新副本软件测试环节~~本文将从需求、bug、测试用例等方向入手,了解软化测试的一些基本概念。

2023-04-16 22:19:13 369

原创 Spring:Bean对象的作用域与生命周期

场景:⽤户回话的共享Bean, ⽐如:记录⼀个⽤户的登陆信息备注:限定SpringMVC中使⽤。

2023-04-16 15:50:06 146

原创 Spring:更简单的存储与读取Bean对象

上节课我们简单了解一些Spring非常基础的使用,但是在存储与读取Bean对象这个操作上来看还是有点麻烦滴~~ 我们有更方便的方法去实现存储与读取Bean对象。

2023-04-16 13:43:28 114

原创 初始Spring框架

Spring是当今企业最常见最常使用的框架。我们通常所说的 Spring 指的是 Spring Framework(Spring 框架),它是⼀个开源框架,有着活跃⽽庞⼤的社区,这就是它之所以能⻓久不衰的原因。Spring ⽀持⼴泛的应⽤场景,它可以让 Java 企业级的应⽤程序开发起来更简单。在官方网站里介绍到何为Spring:好像还是有点晦涩难懂,可以用更简单的一句话来概括:Spring就是包含了众多工具方法的IoC容器。Ioc是啥?容器又是啥?

2023-04-10 11:01:38 107

原创 浅浅理解JVM虚拟机

关于JVM虚拟机的内容在面试中经常被提问到,因此写下这篇博客来记录最近在研读的《深入理解JVM虚拟机》,但由于知识广度深度都不足,就先浅谈关于JVM内存划分、类加载过程、垃圾回收。这三个点对于整本书来说仅仅是九牛一毛~~

2023-04-03 16:35:56 276

原创 Linux 常用指令

今天给大家带来简单的一些linux指令~~ 众所周知,linux主要是以命令行的形式进行交互的,当然有图形化界面的Linux系统,但是bug过于多,生产效率低,命令行形式还是我们学习的重中之重~~

2023-03-28 11:30:55 83

原创 HTTP协议

http协议是应用层方面最常见的一种协议,而当我们在浏览器输入一个网址后,浏览器在背后帮我们做了很多的事情,根据你输入的网址按一定的方法,打包成一个HTTP请求发送给网站的服务器。服务器在接受到请求之后,会发送给浏览器HTTP响应,其中可能会包含文本图片等。浏览器再进行渲染,将完整网站呈献在我们面前~~

2023-03-06 14:40:04 137

原创 HTML 基础

head:就是表示页面中的属性body:表明页面中有哪些元素tittl:这个网页叫啥这样的形式构成层级树结构,当然这个框架的话也是有快捷方式的~~ 输入。

2023-02-24 11:59:14 89

原创 网络原理(2)——网络层 数据链路层

上篇文章我们讲解了关于传输层里面的常见的协议内容,本文将继续延续网络原理的讲解 : 网络层中的IP协议 以及传输层重要协议 网络层有俩大作用:1.地址管理 2.路由选择我们先学习一下,协议头格式吧:终于到了最终要环节~~

2023-02-21 16:59:26 116

原创 网络原理(1)——UDP/TCP协议

对于程序员来说,应用层才是发挥的舞台,为啥呢?因为每一个app或者说是软件,它们的协议需求都不尽相同,因此需要特定的一些协议来实现它们,这时候自定义协议就发挥了重要作用~1.明确业务需求,比如说你要写一个关于外卖的程序,当你打开列表的时候,就需要出现一些商家介绍等信息,需求分析是非常重要的环节2.明确要响应的数据以什么形式或者说是格式表达出来,准确一点说是 明确传递的信息以何种方式来组织。常见的有XML,json等。

2023-02-21 10:20:33 162

原创 文件操作- IO

buffer的长度是1024,将buffer传进方法之后,read方法会想尽办法读取文本将1024个位置占满,但是并不是每一个文件都有这些数据的,如果不够的话,有多少填多少,返回值是当前填入了多少个数据,如果超过了就返回1024.可以将数据的读写操作想象成一大盆里面的水,水就是数据,当我们往里加水的时候,想加多少加多少,只要不超过盆的限度,这时候就叫写操作——输出流,反之把水(数据)放出的过程就是——读操作,输入流。把读写文件的相关对象就叫流对象,而java中流对象主要分为俩大类:字节流,字符流。

2023-01-15 15:30:05 58

原创 网络的一些基本概念

IP地址标识了网络上设备的位置,而端口号就是标识了计算机上面具体应用程序协议是啥呢?协议是网络通信中重要的概念,协议也可以理解为一种约定:发送方约定好以什么样的形式发送这个数据,接收方以何种方式来解读这份数据,这就是协议。然而协议是一个复杂的东西,直接使用的话不利有后期维护,学习等,因此我们将一个大的协议分成很多小的协议,然而在这堆小的协议中,发现了很多的具有相似功能的协议,将这类归为一种进行分类(分层),这个操作就是协议分层。

2023-01-12 16:46:33 94 1

原创 JAVA EE - 多线程进阶

上一章我们较为详细的讲解了多线程初阶的内容。这一章,我们要开始继续猛干多线程~~首先我们要明确一点,这里的锁策略不是语法内容,而是任何关于“锁”这个话题,都会牵扯到的这个锁策略。

2023-01-08 18:26:28 113

原创 JAVA EE - 多线程初阶(2w字)

上一个文章我们了解到 多进程编程已经可以解决了并发编程问题了,已经可以利用起来cpu多核资源了,但是进程太重了,其消耗资源重(消耗资源多,速度慢)因此,线程应运而生,线程就是进程的轻量化,(为啥轻呢?把申请资源/释放资源的操作给省下了)总而言之,线程会复用资源。

2022-11-23 15:06:12 500 1

空空如也

空空如也

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

TA关注的人

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