自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据库事务:

幻读:幻读就是指事务a 开启事务 事务b开启事务 然后事务b进行添加数据 进行提交 事务a此时进行统计数量 假如说初始统计数量为5 然后事务不是添加一条数据吗 然后提交之后 事务a在进行统计数量 此时读到的统计数量为6 此时事务a的事务并没有提交就读取到了事务b添加后的数据 此时就是幻读。一致性:一致性是保证事务在开始和结束后的数据库的数据要保持一致 在执行事务之后 数据要跟预想的数据达到符合预定的规则或者期望得到的结果 由此来确保数据的合法性和准确性。

2023-08-22 22:38:27 98

原创 线程池的常用参数:

当线程池中的活动线程数达到核心线程数时,新的任务会被放入任务队列中。如果线程池中的活动线程已达到核心线程数,而新的任务继续到达,且任务队列已满,线程池将会创建新线程,直到达到最大线程数。当线程池无法接受新的任务时(已达到最大线程数且任务队列已满),拒绝策略定义了如何处理这些被拒绝的任务。如果线程池中的请求任务数少于核心线程数,新任务将会创建新线程来处理。如果线程池中的线程数超过核心线程数,而这些线程在一段时间内都没有任务可执行,那么它们将会被终止,以节省系统资源。线程工厂负责创建线程池中的线程实例。

2023-08-21 23:00:30 112

原创 java的反射

ava的反射(Reflection)是一种机制,允许程序在运行时动态地获取类的信息、调用对象的方法、访问和修改字段等,而不需要在编译时就确定这些操作。反射使得程序可以在运行时探索和操作类的结构,以及创建和操作对象,从而实现更加灵活和动态的编程。需要注意的是,虽然反射在某些情况下可以提供灵活性,但过度使用反射可能会影响代码的可读性和性能。在使用反射时,应该仔细考虑是否有更好的替代方案,以及如何保持代码的可维护性和性能。是一个动态代理的处理器。可以使用反射来创建一个类的实例,通过调用类的构造方法。

2023-08-18 08:07:49 93

原创 什么是RPC技术?

它允许像调用本地函数一样调用远程服务器上的函数,使得分布在不同机器上的应用程序能够通过网络互相通信和交换数据。在RPC中,客户端应用程序可以发起远程调用请求,而服务器应用程序会响应并执行相应的远程函数,然后将结果返回给客户端。在远程调用时,需要将方法参数从客户端序列化(转换成字节流)后传输到服务器端,服务器端再进行反序列化(将字节流转换回对象)以执行方法。RPC技术在构建分布式系统、微服务架构和跨平台应用中起到了重要的作用,使得不同部分之间可以高效、方便地通信,实现功能的解耦和扩展。

2023-08-17 07:34:20 104

原创 正向代理与反向代理

当客户端发起请求时,请求会先发送到正向代理服务器,然后由代理服务器转发请求到目标服务器。反向代理是位于目标服务器和客户端之间的代理服务器。客户端请求发送到反向代理服务器,然后由代理服务器将请求转发到实际的目标服务器。这样,目标服务器不直接暴露给客户端,而是由反向代理来处理请求和响应。正向代理(Forward Proxy)和反向代理(Reverse Proxy)是两种代理服务器的概念,用于不同的网络架构和使用场景。总之,正向代理和反向代理在网络架构中具有不同的作用和应用场景,可以根据需要选择合适的代理方式。

2023-08-14 20:32:46 44

原创 死锁的四个必要条件,如何防止死锁?

死锁是多线程编程中一种常见的问题,它发生在两个或多个线程相互等待对方释放资源而无法继续执行的情况下。另一种方法是,当线程等待资源时,释放已经持有的资源,避免占有和等待条件。在等待资源时,设置超时时间。如果超过一定时间仍未获得资源,可以释放已占有的资源,避免长时间的死锁等待。至少一个线程已经获得了一个资源,并且在等待获取其他资源。在等待其他资源的同时,不释放已经占有的资源。允许抢占资源,即当其他线程需要资源时,可以将资源从占有线程中抢占过来。一系列线程互相持有彼此需要的资源,形成一个循环等待的环路。

2023-08-09 20:05:30 444 1

原创 redis的哨兵解决方案

它可以保证 Redis 高可用性,并在主服务器发生故障时自动将一个从服务器升级为新的主服务器,以确保系统的可用性。如果主服务器不可用,Sentinel 会选择一个从服务器升级为新的主服务器,确保系统继续运行。如果主服务器不可用,Sentinel 会从可用的从服务器中选择一个进行升级,成为新的主服务器。当主服务器恢复后,Sentinel 会将其恢复为主服务器,将前任主服务器作为从服务器加入。Sentinel 将新的主服务器的信息广播给其他从服务器,并通知客户端进行切换。

2023-08-08 20:12:44 31

原创 Redis缓存淘汰机制

这些策略包括noeviction(不淘汰,直接返回错误)、allkeys-lru(在所有键中使用LRU策略淘汰)和volatile-lru(在设置了过期时间的键中使用LRU策略淘汰)等。同时,Redis还提供了一些命令和配置选项来监控缓存的使用情况和调整淘汰机制的行为,您可以参考Redis的官方文档以获取更详细的信息。每个键都有一个计数器,每次访问时计数器会增加,当需要淘汰键时,选择计数器最小的键进行淘汰。Random(随机):随机淘汰机制是一种简单的方法,它随机选择一个键进行淘汰。

2023-07-23 21:10:24 164

原创 Redis的缓存穿透,缓存击穿,缓存雪崩

缓存穿透是指在缓存中查找一个不存在的数据,导致请求直接访问数据库或其他数据源。攻击者可以通过故意请求不存在的数据来触发缓存穿透问题,从而对数据库造成压力。为了解决缓存穿透,可以在查询数据库之前,对请求进行有效性校验,比如使用布隆过滤器(Bloom Filter)来判断请求的数据是否存在。缓存击穿是指一个热点数据在缓存中过期或被删除,同时又有大量并发请求同时访问该数据,导致所有请求都直接访问数据库。缓存雪崩是指缓存中的大量数据同时过期或失效,导致大量请求直接访问数据库,从而对数据库造成巨大压力。

2023-07-20 22:50:45 28

原创 java的类加载机制:一个Class是如何加载到内存中的

当ExtClassLoader检查完之后发现没有问题之后 会继续向上传递 让ExtClassLoader的父类加载器进行检查 接下来让我们看一下 ExtClassLoader的父类加载器是谁。其实 在我们看不到的地方 AppClassLoader加载器加载过后认为没有问题之后 然后再向上传递 让他的父类 也就是。只有当最后一个加载器进行安全审核之后 它觉得可以 那么此时就是把类真正的加进内存了!我们自己创建的类:是先经过:AppClassLoader加载器加载的。

2023-07-20 00:12:55 45

原创 CAP分布式的理论:

是指在遇到网络分区故障的时候 系统依然能够正常运行程序 系统把数据分布到各个节点 然后一个节点发生错误 另一个节点可以正常运行 保证系统的可用性 如果保持一致性的话 会给用户造成不好的体验感 这些是要看不同环境下 该怎么运用CAP。它是在单调一致性的基础上 只保证单个用户单个会话的内的单调一致性,不能保证在多个用户或单个用户的不同会话的单调一致性。是指系统提供的服务必须一直处于可用的状态,对于用户的每一个操作请求"都能够在有限的时间内" "返回结果"任何时刻 任何用户都能读取到最近一次更新信息的数据;

2023-07-17 22:42:35 32 1

原创 Redis记录的主从搭配:

接昨日创建Redis容器以及进行Redis配置,今天我们来配置一下Redis的从,昨天主Redis:redis_6379,今天从Redis:redis_6380 进行redis主从的配置!然后使用tree命令查看一下结构 看看结果对不对 ,接下来cd 6380/log 进入到log文件夹 然后创建log文件。创建完成后 cd .. ,cd.. 退到6379文件夹的位置 然后cd conf 进入后上传。(2)conf文件修改完成后 创建redis_6380容器,如果看到是这样的结果 就证明主从配置成功了。

2023-07-13 22:34:40 32 1

原创 redis的docker搭建过程:

3:创建redis文件夹 进行相关配置 我的路径是在/usr/local/software/下创建redis文件夹 然后进入到redis文件夹 一般redis默认端口号是6379 这里我们就在redis这个文件夹下创建 mkdir -p 6379/conf 6379/data 6379/log 然后进行使用。这个地址是下载配置文件的,往下拉会有下载版本 然后将下载好后的文件上传到conf文件夹里。出现 Pong后就代表着我们redis安装和配置成功。在这里redis后不加版本后就代表拉取的是最新版本。

2023-07-12 23:57:27 84 1

原创 单例模式的几种实现方式:

今天,来说一下著名昭著单例模式,相信大家应该也对单例模式也有所耳闻,单例模式就是再用到这个模式的时候是只创建一个对象。

2023-07-11 21:16:06 34

原创 VS-Code:前端工程化的开发过程

在components文件夹下, 第一个字母大写.vue。

2023-07-10 22:34:11 395 1

原创 Springboot缓存 注解@CachePut,@Cacheable,@CacheEvict 的作用及用法。

Cacheable:相当于取出缓存中的内容 ,可以保证数据库的安全 不用一直大量的去访问数据库,它也是有cacheNames这个属性,指定在哪个分组下面进行取出数据的操作。@CachePut:这个注解是更新缓存中的内容,有一个cacheNames的属性是给数据缓存到哪一个组下面 相当于分组。@CacheEvict:这个注解是删除缓存数据的,每当我们调用这个指定的方法时,我们就可以对指定缓存进行清除。

2023-07-10 08:01:46 83 1

原创 数据库SQL优化的方案有哪些?

在 MySQL 5.0 之前的版本要尽量避免使用 or 查询,可以使用 union 或者子查询来替代,因为早期的 MySQL 版本使用 or 查询可能会导致索引失效,在 MySQL 5.0 之后的版本中引入了索引合并,简单来说就是把多条件查询,比如 or 或 and 查询的结果集进行合并交集或并集的功能,因此就不会导致索引失效的问题了。索引是数据库中最重要的概念之一,也是提高数据库性能最有效的手段之一,它的诞生本身就是为了提高数据查询效率的,就像字典的目录一样,通过目录可以很快找到相关的内容。

2023-07-07 08:38:15 55 1

原创 SpringBoot整合Mybatis-Plus

这里dao继承的是整合在一起的sql语句 有了mybatis-plus整合过这些之后就不用自己再写sql语句 直接调用就可以了。没有启动类的话就会报这样的错。

2023-07-05 23:45:39 102 1

原创 linux系统:docker搭建mysql主从服务器!

在根目录 查看所有文件夹和文件 然后cd /usr/local 进入到local,在local创建software文件夹,再在software文件夹下创建mysql文件夹,然后再在mysql文件夹下创建3315和3316两个子文件夹,然后在子文件夹中创建conf和data两个子文件夹。登录mysql客户端 就是在进入容器后 输入命令 : mysql -用户名 -p密码。当前显示的是/var/lib/mysql日志文件中的最后一个文件。登录mysql客户端:mysql -uroot - p123。

2023-07-05 00:55:29 538 1

原创 JVM最多能够创建的java对象个数及如何扩张堆、栈的默认大小

因此,无法给出一个确切的数字来表示JVM最多能够创建的Java对象个数,它受到多个因素的限制。然而,由于堆空间的大小是有限的,一旦堆空间耗尽,就会触发垃圾回收(Garbage Collection),释放不再使用的对象来腾出空间。JVM最多能够创建的Java对象个数并没有一个确定的限制,它受到多个因素的影响,包括可用的内存大小、堆空间的设置、系统资源限制等。需要注意的是,具体的配置文件和参数名称可能因JVM版本和操作系统而有所不同,请根据你的环境进行相应的修改。参数设置堆的最大大小,使用。

2023-06-21 05:54:11 103

原创 面试时Redis的问题解决方法!

雪花ID(Snowflake ID)是一种分布式唯一标识符生成算法,它可以在分布式系统中生成全局唯一的标识符。雪花ID的设计目标是在分布式环境中生成高性能、有序且不重复的标识符。1位标识符:固定为0,用于区分正数和负数。41位时间戳:精确到毫秒级,可以支持长达69年的使用。10位工作机器ID:用于标识不同的机器,可以支持1024个机器。12位序列号:表示在同一毫秒内生成的序列号,可以支持每台机器每毫秒产生4096个ID。

2023-06-18 23:49:00 77 1

原创 Redis内存用完了会发生什么?

例如,当 Redis 没有配置内存淘汰策略、配置的最大内存限制为 0、或者其他配置问题导致无法执行淘汰策略时,Redis 可能会抛出 Out-of-Memory 错误并终止服务。总之,当 Redis 的内存用完时,写操作将失败,读操作仍可继续,Redis 将尝试执行内存淘汰策略以腾出空间,并且可能抛出 Out-of-Memory 错误。写操作失败:当 Redis 内存用尽时,无法再接受新的写入操作。通过配置合适的内存淘汰策略,可以在内存耗尽时保持系统的正常运行,并根据业务需求决定哪些数据是可以牺牲的。

2023-06-14 23:39:12 1541

原创 Redis是单线程的如何保证其速度

需要注意的是,Redis适用于许多场景,尤其是对于读多写少、对性能要求较高的应用程序。为了进一步提升性能,可以通过使用Redis集群或将热点数据缓存到Redis中,以实现水平扩展和分布式处理。此外,Redis还使用了一些高效的算法,如快速列表、跳跃表和布隆过滤器等,以提高查询和存储的效率。例如,Redis使用了自己的内存分配器,减少了频繁的系统调用,同时它也避免了多线程带来的线程切换开销。相比于将数据存储在磁盘上的数据库系统,Redis的内存存储极大地提升了数据访问的速度。

2023-06-13 00:16:24 118 1

原创 Redis,Mysql数据库每秒的访问量

Redis数据库缺点:MySQL数据缺点:

2023-06-13 00:13:58 57 1

linux系统:docker搭建mysql主从服务器!

linux系统:docker搭建mysql主从服务器!

2023-07-04

空空如也

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

TA关注的人

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