- 博客(51)
- 收藏
- 关注
原创 springboot3-日志整合
Spring使用commons-logging作为内部日志,但底层日志实现是开放的。可对接其他日志框架。a. spring5及以后 commons-logging被spring直接自己写了。支持 jul,log4j2,logback。SpringBoot 提供了默认的控制台输出配置,也可以配置输出为文件。logback是默认使用的。虽然日志框架很多,但是我们不用担心,使用 SpringBoot 的默认配置就能工作的很好。SpringBoot怎么把日志默认配置好的。
2025-01-24 17:17:27
1256
原创 springboot3-快速入门
● Java17● Spring、SpringMVC、MyBatis● Maven、IDEA SpringBoot 帮我们简单、快速地创建一个独立的、生产级别的 Spring 应用(说明:SpringBoot底层是Spring)大多数 SpringBoot 应用只需要编写少量配置即可快速整合 Spring 平台以及第三方技术特性:快速创建独立 Spring 应用SSM:导包、写配置、启动运行直接嵌入Tomcat、Jetty or Undertow(无需部署 war 包)【Servlet容器】l
2025-01-24 17:16:24
1400
原创 Redis高阶6-预热、雪崩、击穿、穿透问题
缓存预热是一种在程序启动或之后,主动将热点数据加载到缓存中的策略。这样,在实际请求到达程序时,热点数据已经存在于缓存中,从而减少了缓存穿透和缓存击穿的情况,也缓解了SQL服务器的压力。
2025-01-24 10:25:46
1103
原创 Redis高阶5-布隆过滤器
由一个初始值都为零的bit数组和多个哈希函数构成,用来快速判断集合中是否存在某个元素布隆过滤器(英语:Bloom Filter)是 1970 年由布隆提出的。它实际上是一个很长的二进制数组(00000000)+一系列随机hash算法映射函数,主要用于判断一个元素是否在集合中。通常我们会遇到很多要判断一个元素是否在某个集合中的业务场景,一般想到的是将集合中所有元素保存起来,然后通过比较确定。链表、树、哈希表等等数据结构都是这种思路。但是随着集合中元素的增加,我们需要的存储空间也会呈现线性增长,最终达到瓶颈
2025-01-23 17:09:28
821
原创 Redis高阶3-缓存双写一致性
如果Redis中有数据需要和数据库中的值相同如果redis中无数据数据库中的值要是最新值,且准备回写redis按照操作分为两种只读缓存读写缓存实现双检加锁策略多个线程同时去查询数据库的这条数据,那么我们可以在第一个查询数据的请求上使用一个 互斥锁来锁住它。其他的线程走到这一步拿不到锁就等着,等第一个线程查询到了数据,然后做缓存。后面的线程进来发现已经有缓存了,就直接走缓存。Code数据库和缓存一致性的几种更新策略目的:达到最终一致性 给缓存设置过期时间,定期清理缓存并回写,是保证最终一致性的
2025-01-23 10:20:22
1476
原创 Redis高阶2-BigKey
尝试keys * 花费时间key * 这个指令有致命的弊端,在实际环境中最好不要使用生产上限制keys */flushdb/flushall等危险命令以防止误删误用通过配置设置禁用这些命令,redistribution。conf在SECURITY这一项中SCAN命令 Redis Scan命令基本语法如下: cursor -游标 pattern -匹配的模式 count -指定从数据集里返回多少元素,默认值为10。
2025-01-22 11:53:46
1132
原创 Redis高阶1-单线程与多线程
在Redis6/7中,非常受关注的第一个新特性就是多线程。这是因为,Redis一直被大家熟知的就是它的单线程架构,虽然有些命令操作可以用后台线程或子进程执行(比如数据删除、快照生成、AOF重写)。但是,从网络IO处理到实际的读写命令处理,都是由单个线程完成的。
2025-01-22 09:39:35
766
原创 SpringBoot集成Redis
故障演练】RedisCluster集群部署采用了3主3从拓扑结构,数据读写访问master节点,slave节点负责备份。当master宕机主从切换成功,redis手动OK,but2个经典故障。故障演练】RedisCluster集群部署采用了3主3从拓扑结构,数据读写访问master节点,slave节点负责备份。当Redis集群节点发生变化后,Letture默认是不会刷新节点拓扑。当Redis集群节点发生变化后,Letture默认是不会刷新节点拓扑。刷新节点集群拓扑动态感应(官网)
2025-01-20 09:10:37
292
原创 Redis基础5-集群分布
解决均匀分配的问题,在数据和节点之间又加入了一层,把这层称为哈希槽(slot),用于管理数据和节点之间的关系,现在就相当于节点上放的是槽,槽里放的是数据。 槽解决的是粒度问题,相当于把粒度变大了,这样便于数据移动。哈希解决的是映射问题,使用key的哈希值来计算所在的槽,便于数据分配。
2025-01-17 16:46:47
971
原创 Redis基础4-哨兵机制
Sentinel是一中运行模式,不提供任何的读写过程,它只负责运行特殊的Redis命令执行自动化的故障转移。默认运行在26379端口上,依赖于Redis工作,可以通过以下命令让Redis以Sentinel的形式运行。
2025-01-17 09:35:14
707
原创 Redis基础3-主从复制
为了避免单点Redis服务器故障,准备多台服务器,互相连通。将数据复制多个副本保存在不同的服务器上,连接在一起,并保证数据是同步的。即使有其中一台服务器宕机,其他服务器依然可以继续提供服务,实现Redis的高可用,同时实现数据冗余备份。提供数据方:master主服务器,主节点,主库 主客户端 从服务器,从节点,从库 从客户端 数据同步 master的数据复制到slave中主从复制即将master中的数据即时、有效的复制到slave中。
2025-01-16 16:19:42
792
原创 Redis基础2-持久化
redis的数据全部在内存中,如果突然宕机,数据就会全部丢失,因此必须有一种机制来保证redis的数据在发生突发状况时不会丢失、或者只丢失少量,于是必须根据一些策略来把redis内存中的数据写到磁盘中,这样当redis服务重启时,就会将硬盘中的数据恢复到内存中。Redis持久化的意义就是为了保证突然宕机,内存数据不会全部丢失。
2025-01-16 11:35:46
792
原创 redis基础1-简介与安装
Redis,英文全称是远程字典服务),是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。与MySQL数据库不同的是,Redis的数据是存在内存中的。它的读写速度非常快,每秒可以处理超过10万次读写操作。因此redis被广泛应用于缓存,另外,Redis也经常用来做分布式锁。除此之外,Redis支持事务、持久化、LUA 脚本、LRU 驱动事件、多种集群方案。
2025-01-15 14:34:17
770
原创 SSM整合原理
微观:将学习的Spring SpringMVC Mybatis框架应用到项目中!SpringMVC框架负责控制层Spring 框架负责整体和业务层的声明式事务管理MyBatis框架负责数据库访问层宏观:Spring接管一切(将框架核心组件交给Spring进行IoC管理),代码更加简洁。SpringMVC管理表述层、SpringMVC相关组件Spring管理业务层、持久层、以及数据库相关(DataSource,MyBatis)的组件使用IoC的方式管理一切所需组件实施。
2025-01-14 10:56:07
1009
原创 MyBatis-Plus
Wrapper: 条件构造抽象类,最顶端父类: 用于查询条件封装,生成 sql 的 where 条件: 查询条件封装: Update 条件封装: 使用Lambda 语法:用于Lambda语法使用的查询Wrapper: Lambda 更新封装Wrapper上面调用的是MyBatis-Plus提供的带有分页的方法,那么我们自己定义的方法如何实现分页呢?在UserMapper接口中定义一个方法/*** 根据年龄查询用户列表,分页显示。
2025-01-13 09:51:40
1040
原创 MyBatis
Mybatis简介MyBatis历史MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下,iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到GithubiBatis一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBatis提供的持久层框架包括SQL Maps和Data Acces
2025-01-13 09:50:44
967
原创 SpringMVC
文章目录一、SpringMVC简介1、什么是MVC2、什么是SpringMVC3、SpringMVC的特点二、HelloWorld1、开发环境2、创建maven工程a>添加web模块b>打包方式:warc>引入依赖3、配置web.xmla>默认配置方式b>扩展配置方式4、创建请求控制器5、创建springMVC的配置文件6、测试HelloWorlda>实现对首页的访问b>通过超链接跳转到指定页面7、总结三、@RequestMapping注解1、@RequestMap
2025-01-09 17:48:09
1196
原创 Spring AOP
AOP(Aspect Oriented Programming)是一种设计思想,是软件设计领域中的面向切面编程,它是面向对象编程的一种补充和完善,它以通过预编译方式和运行期动态代理方式实现,在不修改源代码的情况下,给程序动态统一添加额外功能的一种技术。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
2025-01-09 09:25:56
701
原创 spring的IOC简单理解
容器:IoCIoC 是 Inversion of Control 的简写,译为“控制反转”,它不是一门技术,而是一种设计思想,是一个重要的面向对象编程法则,能够指导我们如何设计出松耦合、更优良的程序。Spring 通过 IoC 容器来管理所有 Java 对象的实例化和初始化,控制对象与对象之间的依赖关系。我们将由 IoC 容器管理的 Java 对象称为 Spring Bean,它与使用关键字 new 创建的 Java 对象没有任何区别。IoC 容器是 Spring 框架中最重要的核心组件之一,它贯穿了
2025-01-06 09:31:12
1066
原创 Ajax简单理解
AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。AJAX 不需要任何浏览器插件,但需要用户允许 JavaScript 在浏览器上执行。XMLHttpRequest 只是实现 Ajax 的一种方式。
2024-12-17 14:25:59
888
1
原创 过滤器和监听器(Fiter、Listener)
监听器:专门用于对域对象对象身上发生的事件或状态改变进行监听和相应处理的对象监听器是GOF设计模式中,观察者模式的典型案例观察者模式: 当被观察的对象发生某些改变时, 观察者自动采取对应的行动的一种设计模式监听器使用的感受类似JS中的事件,被观察的对象发生某些情况时,自动触发代码的执行监听器并不监听web项目中的所有组件,仅仅是对三大域对象做相关的事件监听监听器的分类web中定义八个监听器接口作为监听器的规范,这八个接口按照不同的标准可以形成不同的分类按监听的对象划分。
2024-12-13 17:16:31
424
原创 会话管理-Cookie-Session-三大域对象
cookie是一种客户端会话技术,cookie由服务端产生,它是服务器存放在浏览器的一小份数据,浏览器以后每次访问该服务器的时候都会将这小份数据携带到服务器去。服务端创建cookie,将cookie放入响应对象中,Tomcat容器将cookie转化为set-cookie响应头,响应给客户端客户端在收到cookie的响应头时,在下次请求该服务的资源时,会以cookie请求头的形式携带之前收到的Cookiecookie是一种键值对格式的数据,从tomcat8.5开始可以保存中文,但是不推荐。
2024-12-11 16:59:26
771
原创 JAVAWeb中的Servlet学习
Servlet(serverapplet)是运行在服务端(tomcat)的java小程序,是sun公司提供的一套定义动态资源规范;从代码上将Servlet就是一个接口。用来接收、处理客户端请求、响应给浏览器的动态资源。在整个Web应用中,Servlet主要负责接收处理请求、协同调度功能以及响应数据。我们可以把Servlet称为web应用中的控制器。不是所有的JAVA类都能用于处理客户端请求,能处理客户端请求并做出响应的一套技术标准就是Servlet。
2024-12-06 15:56:46
1211
原创 http简单理解
HTTP超文本传输协议(HTTP-Hyper Text transfer protocol),是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几十年的使用与发展,得到不断地完善和扩展。它是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。客户端与服务端通信时传输的内容我们称之为报文。HTTP协议就是规定报文的格式。
2024-12-02 16:42:18
1043
原创 Java8新特性3:Optional
到目前为止,臭名昭著的空指针异常是导致Java应用程序失败的最常见原因。以前,为了解决空指针异常,Google公司著名的Guava项目引入了Optional类,Guava通过使用检查空值的方式来防止代码污染,它鼓励程序员写更干净的代码。受到Google Guava的启发,Optional类己经成为Java8类库的一部分。Optional类(java.util.ptional)是一个容器类,它可以保存类型T的值,代表这个值存在。或者仅仅保存null,表示这个值不存在。
2024-11-27 11:20:40
414
原创 java8新特性2:Stream
Java8中有两大最为重要的改变。第一个是Lambda表达式:另外一个则是 Stream API。Stream APl ( java.util.stream)把真正的函数式编程风格引入到Java中。这是目前为止对Java类库最好的补充。因为Stream API可以极大提供Java程序员的生产为,让程序员写出高效率、干净、简洁的代码。Stream 是 Java8中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用。
2024-11-26 18:20:32
732
原创 java8新特性1:lambda表达式
- 速度更快- 代码更少(增加了新的语法:Lambda表达式)- 强大的Stream API- 便于并行- 最大化减少空指针异常:Optional- Nashorn引擎,允许在JVM上运行JS应用
2024-11-25 18:17:05
451
原创 MyBatis使用技巧
bind元素的作用是通过OGNL表达式去自定义一个上下文变量,这样更方便使用。在进行模糊查询时,如果是Mysql数据库,常常会用到的是一个concat,它用%和参数相连。然而在Oracle数据库则没有,Oracle数据库使用||进行连接。这样SQL就需要提供两种形式去实现。但是有了bind元素,就不必使用数据库的语言,而是使用MyBatis的动态SQL实现。根据不同的数据库使用不同的连接方式。这就使得,如果更换数据库,就需要修改源码。1.3. bind元素的引入。1.2. 存在的问题。
2024-07-11 09:29:17
296
原创 Java-String源码解析
String类代表字符串。Java程序中的所有字符串文字(例如"abc" )都被实现为此类的实例。字符串不变;它们的值在创建后不能被更改。字符串缓冲区支持可变字符串。因为String对象是不可变的,它们可以被共享。String类包括用于检查序列的各个字符的方法,用于比较字符串,搜索字符串,提取子字符串以及创建将所有字符翻译为大写或小写的字符串的副本。案例映射基于Character类指定的Unicode标准版本。Java语言为字符串连接运算符(+)提供特殊支持,并为其他对象转换为字符串。
2024-02-21 17:34:40
840
原创 Java-Object类源码解析
Class Object是类层次结构的根。每个Class都有Object作为超类。所有对象(包括数组)都实现了这个类的方法。
2024-02-20 11:32:36
994
1
原创 自定义瀚高数据库字段类型隐式转换解决PSQLException: column “***_“ is of type numeric but expression is of type boolean
由于前两种都需要修改代码或者表结构,在某些情况下不能满足业务需求,因此选择第三种方式,给瀚高数据库添加boolean转化数字类型的隐式转换规则。解决方案有三个,第一种是将相关字段类型修改为boolean,第二种在SQL语句中加上类型转换,第三种是给瀚高数据库添加boolean转化数字类型的隐式转换规则。修改完成后,再次查看当前数据库boolean类型的转换规则,可以看到,boolean类型有了转换integer和smallint类型的隐式转换规则。如果创建错误,或者不需要相关转换规则,可以删除规则。
2023-11-29 17:52:53
1766
2
原创 人大金仓登录错误
com.kingbase8.util.KSQLException:致命错误: 用户“system" Password认证失败(kbjdbe: autodetected server-encoding to be GB2312, if the message is notreadable, please check database logs and/or host, port, dbname, user,password, pg_hba.conf)
2023-11-09 16:07:23
2097
1
原创 spring使用ftp常见问题
执行 setsebool -P allow_ftpd_full_access on。Server Reply: SSH-2.0-OpenSSH_7.4错误。ftpd_full_access为off。连接端口号问题:换成21。
2023-11-06 09:09:51
930
原创 MySql数据库基础知识(一)
3.JOIN:如果指定了LEFT JOIN,那么保留表中未匹配的行就会作为外部行添加到虚拟表2中,产生虚拟表3。8.UNION:UNION连接的两个SELECT查询语句,会重复执行步骤1~7,产生两个虚拟表7,UNION会将这些记录合并到虚拟表8中。5.GROUP BY:根据GROUP BY子句中的列,对虚拟表2中的记录进行分组操作,产生虚拟表5。4.WHERE:对虚拟表3进行WHERE条件过滤,符合条件的记录会被插入到虚拟表4中。2.ON:ON是JOIN的连接条件,符合连接条件的行会被记录在虚拟表2中。
2023-05-23 22:49:24
105
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人