- 博客(63)
- 收藏
- 关注
原创 Redis__事务
在上面的例子中, Redis中的两个用户, 分别对同一个数据进行操作, 用户1 set 了name 这个值, 用户2 又对这个值进行操作, 如然后在客户1这边获取name值, 会发现不是自己设置的值, 值是用户2的值。Redis事务是指将多条命令加入队列,一次批量执行多条命令,每条命令会按顺序执行,事务执行过程中不会受客户端传入的命令请求影响。那么,我如果在用户1将他的操作作为一个整体, 有序的进行, 其他客户的命令不能插入到这个整体里, 那不就解决这个问题了吗?并且,Redis 事务是不支持回滚操作的。
2024-05-02 22:29:42 748
原创 Redis__数据持久化
以日志的形式来记录每个写操作,将 Redis 执行过的所有指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis 启动之初会读取该文件重新构建数据,换言之,redis 重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作与快照持久化相比,AOF 持久化的实时性更好。如何持久化开启 AOF 持久化后每执行一条会更改 Redis 中的数据的命令,Redis 就会将该命令写入到 AOF 缓冲区 server.aof_buf 中然后再写入到 AOF 文件中。
2024-05-01 23:11:47 1147
原创 Redis__三大日志
在MySQL新增、修改、删除数据的时候, 在事务开始之前, 就会将数据写入到Undo Log 中. 事务在提交的时候, 并不会立刻删除Undo Log, InnoDB存储引擎 会对事务对应的Undo Log放入到待删除的列表中, 之后就通过后天的线程对删除列表进行删除处理.Undo Log 能够实现MySQL事务的原子性, 在事务的处理过程中, 如果MySQL出现了错误或者我想执行事务的回滚操作(执行rollback操作), MySQL可以利用Undo Log日志将数据库的数据恢复到之前的状态。
2024-04-30 20:33:04 940
原创 Redis__数据类型
HyperLogLog(基数统计)、Bitmap (位图)、Geospatial (地理位置)。数据类型DSCBitmap你可以将 Bitmap 看作是一个存储二进制数字(0 和 1)的数组,数组中每个元素的下标叫做 offset(偏移量)。通过 Bitmap, 只需要一个 bit 位来表示某个元素对应的值或者状态,key 就是对应元素本身。我们知道 8 个 bit 可以组成一个 byte,所以 Bitmap 本身会极大的节省储存空间。
2024-04-28 23:49:13 1240
原创 MySQL__深度分页问题
不过,当查询的结果集占表的总行数的很大一部分时,可能就不会走索引了,自动转换为全表扫描。在我一次测试中, 100万条数据, 一次偶然的数据展示中, 发现响应数据特别慢, 从前端到后端的一个问题检查上, 最终我是将问题锁定在了一个SQL语句上面. 也就是导致。在复杂分页场景,往往需要通过 过滤条件,筛选到符合条件的 ID,此时的 ID 是离散且不连续的。而在覆盖索引中,二级索引的键值中可以获取所有的数据,避免了对主键的二次查询(回表),减少了 IO 操作,提升了查询效率。
2024-04-27 22:38:46 738 2
原创 MySQL__锁
锁是一种常见的并发事务的控制方式。如果需要用到表锁的话,如何判断表中的记录没有行锁呢,一行一行遍历肯定是不行,性能太差。我们需要用到一个叫做意向锁的东东来快速判断是否可以对某个表使用表锁。意向共享锁 :事务有意向对表中的某些记录加共享锁(S 锁),加共享锁前必须先取得该表的 意向共享锁。意向排他锁:事务有意向对表中的某些记录加排他锁(X 锁),加排他锁之前必须先取得该表的意向排他锁。
2024-04-27 22:01:32 754
原创 Mysql_数据库事务
事务就是由单独单元的一个或多个sql语句组成,在这个单元中,每个sql语句都是相互依赖的。而整个单独单元是作为一个不可分割的整体存在,类似于化学当中的原子(一种不可分割的最小单位)。往通俗的讲就是,事务就是一个整体,里面的内容要么都执行成功,要么都不成功。不可能存在部分执行成功而部分执行不成功的情况。就是说如果单元中某条sql语句一旦执行失败或者产生错误,那么整个单元将会回滚(返回最初状态)。
2024-04-26 13:29:49 1306 1
原创 关于索引的使用
▶不为 NULL 的字段:索引字段的数据应该尽量不为 NULL,因为对于数据为 NULL 的字段,数据库较难优化。对于频繁被连接查询的字段,可以考虑建立索引,提高多表连接查询的效率。这就是MySQL再server层的优化功能, 由优化器来决定,如果由多个索引, 那么优化器就需要产生非常多次的计划, 并从中选出最优的, 给SQL优化器带来不小的压力。频繁需要排序的字段:索引已经排序,这样查询可以利用索引的排序,加快排序查询时间。▶被频繁查询的字段:我们创建索引的字段应该是查询操作非常频繁的字段。
2024-04-24 22:35:11 348
原创 SQL的基础架构
连接器连接器主要和身份认证和权限相关的功能相关,就好比一个门禁一样。主要负责用户登录数据库,进行用户的身份认证,包括校验账户密码,权限等操作,如果用户账户密码已通过**,连接器会到权限表中查询该用户的所有权限**,之后在这个连接里的权限逻辑判断都是会依赖此时读取到的权限数据,也就是说,后续只要这个连接不断开,即使管理员修改了该用户的权限,该用户也是不受影响的。查询缓存(MySQL 8.0 版本后移除)查询缓存主要用来缓存我们所执行的 SELECT 语句以及该语句的结果集。
2024-04-24 17:55:16 778
原创 MySQL__索引
●MySQL高效获取数据的数据结构。更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。● 一般来说索引本身也很大,不可能全部存储在内存中,因此索引往往是存储在磁盘上的文件中的(可能存储在单独的索引文件中,也可能和数据一起存储在数据文件中)。我们通常所说的索引,聚集索引、覆盖索引、组合索引、前缀索引、唯一索引等,没有特别说明,默认都是使用B+树结构组织的索引。
2024-04-23 23:47:35 1376
原创 Atomic原子类总结
这里 Atomic 是指一个操作是不可中断的。即使是在多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程干扰。所以,所谓原子类说简单点就是具有原子/原子操作特征的类。
2024-04-22 20:51:14 1041
原创 volatile是如何禁止指令进行重排序的
为了保证能正确实现volatile的内存语义,JMM在采取了保守策略:在每个volatile写的后面,或者在每个volatile读的前面插入一个StoreLoad屏障。虽然StoreStore屏障主要作用于防止store-store重排序,但在volatile写操作中实际会使用更复杂的内存屏障组合,以确保volatile写之前的普通读不会被重排到volatile写之后。***第1步:***在每个volatile写操作的前面插入一个StoreStore屏障,后面插入一个StoreLoad屏障。
2024-04-13 15:53:09 470
原创 快速排序与归并排序
先从右向左找比基准数pivot小的数,再从左向右找比基准数pivot大的数,进行交换。归并排序是一种分而治之的思想,分到最后是一个元素,逐渐合并两个数组,一次次往回合并。先走右边再走左边,因为基准数本来就在最左边。
2024-03-24 00:09:00 265
原创 分布式锁_redis实现
其含义是 SET IF NOT EXIST,即如果 key 不存在,才会设置它的值,否则什么。此时就算程序运行时间超过了设置的时间,RLock锁也会添加时间,防止其他线程进入;要实现分布式锁,必须要求 Redis 有互斥的能力。两个客户端进程可以执行这个命令,达到互斥,就可以实现一个分布式。在微服务中, 例如一个订单系统需要调用不同的商品库, 商品库里的。,那么在不同的微服务之间, 一次只能由一个请求来访问, 那么在。●使用 Redisson 实现加锁,释放锁.,这即使分布式锁的思想。
2024-03-09 13:13:17 435
原创 消息队MQ
为了提高性能和吞吐量,引入了 Message Queue,一个 Topic 可以设置一个或多个 Message Queue,这样消息就可以并行往各个Message Queue 发送消息,消费者也可以并行的从多个 Message Queue 读取消息 Message Message 是消息的载体。开发比较灵活,采用 C 语言 实现,实际上只是一个 socket 库的重新封装,如果做为消息队列使用,需要开发大量的代码。Broker 是 RocketMQ 的核心,负责消息的接收,存储,投递等功能.
2024-03-09 12:46:44 1044
原创 严刑拷打_微服务
在现在这个网络飞速发展的时代, 网站请求量也是越来越大, 从而导致系统架构也在不断发生变化;在早期的单体架构, **由于业务需求量,以及项目的拓展问题, 项目业务要求解耦, 代码的可维护性…**摒弃了原来单体架构,升级为微服务架构正文微服务,顾名思义就是很多个微小的服务;何为很多个微小的服务呢?就是将一个项目的功能分割开,将不同的功能抽离出来,实现低耦合,把一个功能相关的代码合并在一起.实现高内聚;将各个功能不相干扰, 各个功能已于维护.如图: 是一个商品订单服务至此,从前到后一共整合。
2024-03-08 21:06:50 1073
原创 Linux的环境安装以及项目部署
是在发行版是CentOS下安装通常使用yum安装,可以在rpm上增加了自动解决依赖的功能PATH●使文件生效安装tomcat●安装包:将.gz文件通过Xftp传输到/opt目录下准备安装●解压: tar -zxvf apa…●启动tomcat: 进入bin目录,使用./startup.sh使用yum方式安装mysql安装mysql●添加rpm源,并且选择较新的源●安装第一步下载的rpm包的依赖●使用yum安装● 查看当前是否为开机服务。
2024-03-08 14:47:57 973
原创 实现数据的搜索( 筛选 )功能
在后端我们可以判断接收到的参数account是否为空, 为空就不拼接查询的sql语句, 不为空就要拼接上sql 语句, 这里要明白mybatis里的mapper文件的书写规则。搜索功能主要还是后端的SQL语句的拼接, 查出满足需求的数据, 再展示给前端。可以根据搜索框对数据进行搜索, 筛选出满足条件的数据,这里与发送到后端的表单数据里的account进行绑定。ElementUI里获取对应的功能组件。, 作为后端查询条件给传给后端。
2023-06-23 14:35:16 466
原创 管理系统总结(前端:Vue-cli, 后端Jdbc连接mysql数据库,项目部署tomcat里)
根据所学的知识, 写一个管理系统, 顺便总结一些知识点准备:前端用vue-cli的框架, 后端用jdbc连接数据库, 项目部署tomcat服务器来完成交互●前端的vue-cli框架搭建可以看的第二小结●后端的tomcat在idea里的相关的配置与集成,可以看。
2023-05-30 22:34:37 1391 1
原创 springBoot搭建
Spring Boot是由Pivotal团队提供的在spring框架基础上开发的框架, 目的简化应用的初始搭建与开发过程Spring Boot不提供Spring的框架的核心特性以及拓展功能, 只是用于快速灵敏的开发新一代的基于spring框架的框架, 可以快速的搭建, 并且集成其他框架与组件即并不是来代替Spring, 而是与spring框架紧密结合提升Spring在spring Boot中是约定大于配置创建独立的 spring 应用程序。
2023-05-25 18:08:29 1045
原创 springWEB搭建
注解@RestController 类似@Service 这些注解标签 表示此类是控制层类,并且会创建对象放进spring容容器里@RequestMapping(path = “/loginCtl”) 用来为类和方法定义映射地址, 必须是整个项目里唯一的可以使用value=""或者path=""都可以使用来定义对外访问地址@RequestMapping(path = “/loginCtl”) 在方法上使用时, 还可以添加访问的类型。
2023-05-23 22:43:32 1549
原创 前端框架(Vue.js&&vue-cli项目框架&&element-ui使用)
vue.js 是前端的一个框架框架: 框架就是技术, 代码的封装, 在框架的基础上进行开发, 语法简单高效特点: 双向数据绑定, , 简化Dom操作, 通过MVVM思想实现数据的双向绑定, 不再操作DOM对象MV_VM:Model-view-viewModel 是前端的一种架构思想Vue 实例:要使用前要进行js文件的导入进入下载vue.js文件之后,导入项目的js下面注意:1、2、演示:3、4、 v-on:click=“被调用函数” @click=“被调用函数”5、v-show=“iss
2023-04-16 17:28:11 448
原创 javaScript简介
它是一种直译式的语言, 用来为网页添加各种各样的动态功能不需要编译直接通过浏览器直接运行, 通常javaScript脚本是通过嵌入HTML里来实现功能的。
2023-04-16 14:59:35 4083
原创 Spring学习
Spring: 春天,也就是给软件行业带来了春天!Spring理念: 他使得现有的计数更加容易使用, 本身是一个大杂烩, 整合现有的技术框架!导入对应jar包1.2 优点●Spring是一个来源的免费框架(容容器)●Spring是一个轻量级的, 非入侵式的框架,!●控制翻转(IOC), 面向切面编程(AOP)!●支持事务的处理, 对框架整合的支持!总结: Spring就是一个轻量级的控制反转(IOC) 和面向切面编程(AOP)的框架!1.3 拓展○一个快速开发的脚手架。
2023-04-10 23:55:56 465
原创 零碎知识点
首先是Arrays.stream将数组转化成流的格式,forEach是取出每一个元素, item是取出的临时元素样例,–>是实际操作,就是添加到stringBuilder里面。所以,今天寻找了一个,不管是正还是负都可以转化的方法。由于字符串类型的数字转化为int类型只能是正数。通过正则表达式判断字符串是否是一个数字。
2023-04-03 11:49:09 83
转载 substr与substring的区别
如果为负值,则被看作 str.Length + start,其中 str.Length 为字符串的长度(例如,如果 start 为 -3,则被看作 strLength + (-3))。(2)indexEnd,可选。而substring(a,b),是从下标为a的位置开始截取,截取到下标为b-1的位置,(取头取不到尾)。(1)indexStart为需要截取的第一个字符的索引,该索引位置的字符作为返回的字符串的首字母。substr(a,b),可以从下标为a的位置开始截取,一直截取到下标为b的位置,(取头取尾);
2023-03-31 20:30:03 308 1
原创 前端与Servlet交互 详解
浏览器不让从一个域名的网页去请求另一个域名网页的资源,这是浏览器的同源策略造成的, 是javaScript加的安全限制跨域的定义是: 只要协议 域名 端口 有任何一个不同 就是跨域 为什么要限制跨域访问万一是另外一个恶意网站响应的数据,会导致服务器出问题 为什么要跨域公司的不同子域需要相互调用资源时后端解决跨域后端可以实现过滤器接口,告诉浏览器此次的访问是安全的location.assign 并不会出现跨域问题, 他会重新开一个窗口,跟原服务器没关系如下图。
2023-03-15 18:25:49 3646 4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人