- 博客(21)
- 收藏
- 关注
原创 Redis缓存数据与MySql的数据不一致
Canal是阿里巴巴开源的一个 MySQL binlog 增量订阅和消费组件。它可以模拟 MySQL 主从复制的过程,从而读取主库的 binlog,实时地监控和捕获数据变更。这样就可以将数据库的更新实时同步到其他系统或缓存中。消息队列(MQ)是一种异步通信协议,允许系统之间通过队列传递消息。常见的 MQ 实现有 RabbitMQ、Kafka、ActiveMQ 等。MQ 可以用来实现数据的异步处理和分布式事务的协调。
2024-06-27 01:56:29
693
原创 MySQL 事务
在 MySQL 中,事务(Transaction)是一组 SQL 语句的集合,这些语句作为一个单元来执行。事务的主要作用是保证数据库操作的原子性、一致性、隔离性和持久性,即 ACID 特性。
2024-06-25 23:17:09
514
原创 MYSQL的优化
这种方法允许你构建一条 SQL 语句来插入多条记录,减少数据库的连接次数和事务开销。使用索引可以加速排序和分区过程,从而提升查询性能。字段添加索引可以显著提高分组操作的效率。可以限制结果集的大小,从而减少内存使用和网络传输成本。时后面拼接的应该是数据量较大的表,数据量小的应该放在。解析成表的所有字段然后再查询,增加查询解析器的成本。在查询中避免不必要的复杂计算和函数调用,特别是在。查询一般不走覆盖索引会查询大量的回表查询。这些操作会增加查询的处理时间。当查询可能返回大量数据时,使用。
2024-06-25 22:35:33
191
原创 原子性,可见性,有序性
指的是程序执行的顺序与代码的书写顺序一致。在单线程环境下,程序的执行顺序是可预期的,但在多线程环境下,线程的执行顺序可能会受到线程的执行顺序可能会受到多种因素的影响,如指令重排序、内存模型等。在缺乏同步措施的情况下,由于线程的本地缓存以及指令重排序等原因,一个线程对共享变量的修改可能对其他线程不可见,从而导致数据不一致或程序出现错误。,原子性保证了操作的完整性,可见性保证了数据的一致性,有序性保证了程序的可预测性,在多线程编程中,需要考虑如何确保这三个方面的特性以避免出现并发问题。
2024-02-28 21:52:46
418
原创 BIO,NIO,AIO的区别
总的来说,BIO 适用于连接数较少但有较高数据处理需求的场景;NIO 适用于连接数较多但数据量不大的场景;AIO 适用于连接数较多且每个连接的数据量较小的场景。
2024-02-28 21:38:12
245
原创 CentOS有关防火墙的操作
这里以minio的服务端口和控制台的端口以及redis端口为例,不开放是不能从外面访问的。如果防火墙没有启动则需要启动防火墙。
2024-01-07 18:54:53
452
1
原创 Vue整合markdown(MD)编辑器
Markdown编辑器是一种用于编辑和编写Markdown语言格式的工具。Markdown是一种轻量级标记语言,设计用来简化纯文本的写作和排版,让用户专注于内容本身而不是格式。对于程序员、写作者和学生等,Markdown编辑器是一个方便的工具,用于编写技术文档、笔记和博客。Markdown文本可以轻松转换为HTML、PDF、Word等其他格式,便于在不同平台和场景下使用。Markdown语法简单易懂,使用简单的符号和标记可以实现文本的排版,包括标题、列表、链接、图片等。
2024-01-04 10:35:29
2505
1
原创 Java的四种引用,强弱软虚
对象被虚引用指向时,即使被回收之前,也会被放入ReferenceQueue中。虚引用主要用于跟踪对象被垃圾回收的时机,而不是提供对对象的访问。当内存不足时,JVM会尝试回收软引用指向的对象,避免OutOfMemoryError的发生。强引用是我们最常见的引用方式。在内存不足时,即使是强引用指向的对象也不会被垃圾回收器回收,这可能导致OutOfMemoryError。弱引用在垃圾回收器发现对象只被弱引用指向时,会被回收。这对于实现某些特定类型的缓存或者需要对象在没有强引用时被快速回收的场景很有用。
2023-12-01 23:45:01
71
1
原创 String、StringBuffer 和 StringBuilder 的区别
不过需要注意,StringBuffer是线程安全的,它对方法或调用进行了同步锁的处理,因此适合在多线程环境中使用。但需要注意,它不是线程安全的,如果在多线程中使用,可能需要额外的同步措施来保证数据安全。类型的字符数组,一旦被创建,内容就无法改变。每次对String进行操作都会生成新的String对象,因此频繁的字符串操作可能导致内存消耗。在选择使用String、StringBuffer还是StringBuilder时,考虑到程序的性能需求和线程安全性是非常重要的。String代表不可变的字符串对象。
2023-12-01 23:15:48
193
1
原创 Java 前后端分离的项目如何传递token验证
我们在写前后端分离的java项目中经常遇到需要token来校验请求是否有效,所以当登录验证将token返回给前端后接下来的一些接口就需要将这个token重新传给后端进行校验。
2023-11-22 23:41:57
845
1
原创 在SpringBoot中实现多数据源配置
最近在做项目时遇到了一个需求,一个SpringBoot项目中需要连接多个数据库(分表分库)当把数据库分出来后至少有五个数据库,但是以前做的项目很少有用到多个数据库的情况,经过一些资料的查找终于找到了一些方法。
2023-11-21 00:11:43
781
1
原创 Docker安装Elasticsearch
6.重启Elasticsearch容器(2497db9d672f为你的Elasticsearch容器id,通过docker ps 获取)5.解压elasticsearch-analysis-ik-8.8.2.zip文件。就可以上传elasticsearch-analysis-ik-8.8.2文件了。1.Docker 拉去 Elasticsearch镜像8.8.2版本。则需要先下载rz(基于CentOS的命令)2.启动Elasticsearch。返回了容器ID,说明创建成功。
2023-10-24 09:52:33
97
原创 认识List、Set、Map
底层是红黑树结构,就是TreeMap实现,可以实现有序的集合。使用了synchronized来保证线程安全,所以效率较慢,底层是数组,使用ArrayList替代。底层是哈希表(数组+链表或数组+红黑树),在链表长度大于8时转为红黑树,在红黑树节点小于6时转为链表。增删比较慢, 线程不安全,底层是数组。底层是哈希表,可以很快的储存和检索,无序,大量迭代情况不佳。:实现了HashSet,多一条链表来记录位置,所以是有序的。底层是哈希表+链表,有序,大量迭代情况佳。线程不安全,底层是链表。
2023-09-12 14:57:18
72
原创 多线程的创建
每个线程都有自己的代码执行路径和独立的栈空间。线程池是一种管理线程的机制,它可以重用已经创建的线程,避免频繁地创建和销毁线程,从而提高性能。在Java中,可以使用Executor框架提供的ThreadPoolExecutor类来实现线程池。进程是操作系统中分配资源的基本单位,是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。好了,以上是我目前作为一个小白学习到的关于多线程的一点点知识,如有问题,欢迎各位大佬指正!线程是进程中的一个执行单元,是被包含在进程中的,是进程中的实际运作单位。
2023-09-05 11:53:10
89
1
原创 跨域的三种解决方法
在上面的代码中,我们创建了一个名为example.com的服务器块,并在其中添加了一个location块,用于匹配需要跨域访问的请求。在该location块中,我们使用proxy_pass指令将请求转发到后端服务器上,并使用add_header指令设置了响应头中的Access-Control-Allow-Origin字段为*,以允许来自任何源的跨域访问。它是由浏览器的同源策略造成的,是浏览器对JavaScript实施的安全限制。JSONP 只支持 GET 请求,不支持 POST 请求,标签来实现跨域请求。
2023-09-04 13:24:52
934
1
原创 MYSQL数据库索引认识与创建
数据库索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。索引可以提高查询速度,但是会增加存储空间的消耗,同时降低更新表的速度。
2023-09-04 11:41:49
117
1
原创 在前端将时间格式化成自己想要的格式
今天在做项目的时候在把从数据库查询出来的数据绑定到前端页面是发现了前端页面展示的时间是精确到秒的例如:2023-07-26 12:11:30 但是由于一系列原因我需要将时间展示成2023-07-26所以我需要转换时间格式。注意:row可以获取到该行的数据,所以用row.date(date表示的是获取你所用的时间字段的数据,用的什么就写什么)的组件式开发,我用的是Table 表格组件。label="日期" width="180"1.将表示时间的列加上。这样就可以将时间转换成。
2023-07-26 23:07:28
2351
4
原创 Docker的基本介绍以及使用
Docker 是一个开源的容器化平台,旨在简化应用程序的部署和管理过程。它利用操作系统层面的虚拟化技术,将应用程序及其所有依赖项(如库、配置文件等)打包到一个独立的容器中。这个容器可以在任何支持 Docker 的操作系统上运行,而不需要担心环境差异导致的问题。因此,Docker 提供了一种快速、可移植和可扩展的应用部署解决方案。Docker 是一个让开发人员和运维团队受益的容器化技术。它简化了应用程序的部署和管理过程,提供了高效、可移植和可扩展的解决方案。
2023-07-15 13:19:40
150
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人