- 博客(194)
- 收藏
- 关注
原创 在企业级开发中为什么要使用Redis缓存?有哪些实际的业务场景可能用到Redis缓存?
Redis 缓存在医药连锁后端管理系统中具有重要的作用,能够有效提升系统性能、减轻数据库压力,并支持复杂的数据结构和分布式扩展。通过合理使用 Redis 缓存,可以显著优化系统的整体性能和用户体验。
2025-03-19 08:00:00
553
原创 Redis常用数据类型和使用常见以及基本操作举例(适合初学者,以医药连锁管理系统为背景)
Redis的常见数据类型,包括等,这些数据类型都有各自的特点和适用场景。接下来,将这些数据类型与进行匹配。,适合。在医药连锁管理系统中,药品库存数量,需要实时更新和查询,所以可以使用String类型来存储药品的库存数量。。在医药连锁管理系统中,用户信息通常包含多个字段,如用户名、密码、电话等,所以可以使用Hash类型来存储用户信息。,是一个。在医药连锁管理系统中,药品的出入库记录是一个有序的过程,可以使用List类型来存储药品的出入库记录。,是一个无序的唯一元素集合,。
2025-03-18 21:00:00
662
原创 MyBatis在企业级开发中的应用举例:MySQL和MyBatis是怎么交互的?
在这个实际企业级开发的案例中,展示了 MyBatis 如何通过动态 SQL、批量操作 和 事务管理 与 MySQL 深度交互的过程,解决了企业级场景中的复杂查询、数据一致性和性能问题。MyBatis框架的核心优势在于:SQL 灵活性:直接控制 SQL 细节(如索引命中)。代码可维护性:XML 与 Java 代码分离,便于 DBA 参与 SQL 优化。性能可控:通过 MyBatis 暴露的底层能力(如批处理)针对性优化。
2025-03-18 08:15:00
594
原创 如何使用MySQL快速定位慢SQL问题?企业级开发中常见业务场景中实际发生的例子,涉及分页查询问题。(二)
然后,设置合适的阈值,比如超过2秒的查询记录下来。接着,通过日志分析工具,比如mysqldumpslow(Percona的pt-query-digest也可以),来找出最耗时的查询。接下来,优化方法可能需要使用延迟关联,或者基于游标的分页,比如记录上一页的最大ID,这样避免使用大的offset。同时,添加合适的索引,比如在查询条件和排序字段上建立复合索引,可能覆盖查询所需字段,减少回表操作。在企业级开发中,尤其是涉及到订单查询的业务时,经常会发生慢查询的问题。
2025-03-17 12:08:55
641
原创 如何使用MySQL快速定位慢SQL问题?企业级开发中常见业务场景中实际发生的例子。(一)
使用EXPLAIN分析SQL执行计划,以及常见的导致SQL变慢的原因,比如索引失效、多表连接等。按照定位慢SQL的一般流程,先开启慢查询日志,设置合适的阈值,接着通过日志找到具体的慢SQL语句。在找到慢SQL后,使用EXPLAIN来分析它的执行计划,重点关注type、possible_keys、key、rows、extra这些指标,判断是否存在索引未使用、全表扫描等问题。最后,针对分析出的问题,给出相应的优化建议,像添加索引、优化查询语句、分库分表等,可以通过这个思路一步步定位和解决慢SQL问题。
2025-03-17 10:56:41
938
原创 一条MySQL语句在InnoDB底层是如何执行的?
(9)后台I/O线程刷盘:Innodb的后台I/O线程会定期将缓存池中的脏数据页随机刷写到磁盘,最终使磁盘上的数据文件与内存中的数据一致。(4)更新内存数据:在缓存池中更新该行的积分值,此时缓存池中的数据变为脏数据(Dirty Page),因为与磁盘上的数据不一致。该语句表示将用户表中id为1的用户的积分增加10分,这是企业级开发中常见的业务操作,比如在电商系统中用户完成一次购物后增加积分。(8)redo日志提交标记:在binlog日志写入成功后,将redo日志的提交标记写入磁盘,确保事务的持久性。
2025-03-15 23:46:09
217
原创 LeetCode199:二叉树的右视图
LeetCode199:二叉树的右视图给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
2022-08-17 13:52:58
590
原创 LeetCode42:接雨水
LeetCode42:接雨水给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。
2022-08-16 19:07:09
716
原创 LeetCode力扣题目总结(题目编号:53、3、141、面试题022、剑指offer链表中环的入口节点、20、19、牛客NC1、103、1143、牛客127)
LeetCode力扣题目总结(题目编号:53、3、141、面试题022、剑指offer链表中环的入口节点、20、19、牛客NC1、103、1143、牛客127)
2022-07-19 22:17:03
469
原创 LeetCode力扣刷题回顾(题目编号:94、17、面试题17、102、215、1、21)
LeetCode刷题回顾(题目编号:94、17、面试题17、102、215、1、21)链表,快速排序,Java优先队列,树的遍历
2022-07-10 01:26:19
267
1
原创 Spring 使用AspectJ实现AOP前置通知
什么是AOP?AOP面向切面编程,是基于动态代理的。AOP就是动态代理的规范化,把动态代理的实习按步骤和方式都定义好了,让开发人员用一种统一的方式使用动态代理。Aspect Orient Programming:面向切面编程Aspect:切面。给目标类增加的功能就是切面。添加的日志信息和事务都是切面。切面的最大特点就是:非业务方法,和我们的业务功能没有关系,可以独立使用的。怎么理解面向切面编程:(1)需要在分析项目时,找出切面。(2)合理的安排切面的执行时间(是在目标方法前执行,还是在目标方.
2022-01-13 16:44:05
618
原创 Spring的事务处理
方便使用的IDEA设置-b站主要内容:背景主题、鼠标修改代码字体大小设置、鼠标悬浮提示(关于类的介绍)、自动导包设置、方法间分隔符、忽略大小写提示、取消单行显示tabs(类文件太多文件被隐藏,多行显示)、设置字体行间距、file header头部信息、设置项目文件编码、设置自动编译、版本控制、插件、快捷键等。...
2022-01-10 17:34:09
1145
2
转载 IDEA快捷键大全
1.Ctrl快捷键 介绍 Ctrl + F 在当前文件进行文本查找 (必备) Ctrl + R 在当前文件进行文本替换 (必备) Ctrl + Z 撤销 (必备) Ctrl + Y 删除光标所在行 或 删除选中的行 (必备) Ctrl + X 剪切光标所在行 或 剪切选择内容 Ctrl + C 复制光标所在行 或 复制选择内容 Ctrl + D 复制光标所在行 或 复制选择内容,并把复制内容插入光标位置下面 (必备) Ctr
2022-01-02 18:26:03
319
原创 Spring5事务操作
什么是事务?事务是数据库操作的最基本单元,是逻辑上的一组操作,要么都成功,如果有一个失败,所有都失败。银行转账例子就是一个典型的事务场景。lucy转账100给marry。lucy少100,marry多100,这叫做逻辑上的一组操作,当两个操作都完成后才构成我们的转账。如果过程中出现了异常,转给marry的钱还没有转过去,要保证此时lucy的钱不会少,marry的钱也不会多,即要么都成功,要么都失败。事务的4大特性(ACID)原子性:值得是转账这个过程不可分割,要么都成功(lucy...
2021-12-28 16:27:26
714
原创 Spring JdbcTemplate模板介绍和准备工作以及使用JdbcTemplate操作数据库
什么是JdbcTemplate Spring对JDBC进行了封装——JDBC模板,通过它实现对数据库的增删改操作。 准备工作 引入jar包:(1)mysql依赖:在哪下载Mysql数据库的JDBC驱动jar包__清风明月的博客-优快云博客_mysql驱动jar包在哪(2)德鲁伊druid连接池:Central Repository: com/alibaba/druid(3)spring jdbc(4)spring tx(事务)(5)spring orm(整合Mybatis操作数据库需..
2021-12-23 21:23:57
781
原创 Spring IOC底层原理
IOC底层原理:xml解析、工厂模式、反射(通过操作类的字节码文件操作类中所有内容)1.使用工厂模式完成解耦操作:原始方式耦合度太高了,使用工厂模式降低了Dao和Service之间的耦合度。2.IOC过程xml配置文件,配置创建的对象 有service类和dao类,创建工厂类 class UserFactory { public classValue = class属性值;//1.xml解析 Class clazz = Class.fo.
2021-12-23 17:19:49
334
原创 Spring5框架入门案例
Spring框架概述:轻量级(相比于引入很多jar包的情况)开源(免费提供源代码)的J2EE应用程序框架(让开发更简洁)。 Spring框架解决企业应用开发的复杂性。 Spring有两个核心部分:IOC和AOP。 IOC:控制反转,之前原始方式创建对象要new一个对象,现在让Spring帮我们创建对象,进行对象的实例化。 AOP:面向切面,在不修改源代码的情况下实现功能的添加或者功能的增强。 Spring框架特点: 方便解耦,简化开发。 AOP编程的支持。 方便程序的测试,整合
2021-12-22 21:47:24
166
原创 回溯算法模板
class Solution { //1.全局变量 List<List<Integer>> lists=new ArrayList<>(); List<Integer> list= new ArrayList<>(); public List<List<Integer>> combinationSum2(int[] candidates, int target) { //2.
2021-07-22 10:51:52
132
原创 Java实现归并排序(非递归)
public class Main{ //归并排序的非递归实现 public static void main (String[] args) { System.out.println("this is java test"); int[] array = {6,5,3,8,1,7,2,9,4}; for (int i = 0; i < array.length; ++i) { System.out.println(array[i] + " "); } .
2021-07-13 15:36:35
428
1
原创 Java实现快速排序
public class Main{ public static void main (String[] args) { System.out.println("this is java test"); int[] array = {19,97,9,17,1,8}; int L = 0; int R = array.length - 1; quickSort(array, L, R); for (int i = 0; i < array.length; ++i) {...
2021-07-12 15:56:48
129
原创 Java递归实现归并排序
public class Main{ public static void main (String[] args) { int[] array = {2,5,6,1,4,3,9,6}; int L = 0; int R = array.length - 1; //int M = L + (R - L) / 2; mergeSort(array, L, R); for(int i = 0; i < array.length; ++i) { System.ou.
2021-07-12 10:39:21
186
转载 JVM类加载器的双亲委派机制
相关视频链接:类加载器及双亲委派机制JVM体系结构JVM结构图类加载器双亲委派机制Java是运行在Java的虚拟机(JVM)中的,但是它是如何运行在JVM中了呢?我们在IDE中编写的Java源代码被编译器编译成.class的字节码文件。然后由我们得ClassLoader负责将这些class文件给加载到JVM中去执行。 JVM中提供了三层的ClassLoader: Bootstrap classLoader:主要负责加载核心的类库(java.la...
2021-06-23 15:36:53
136
转载 大顶堆的构造过程
转载????:大顶堆的构造过程堆是一种特殊的完全二叉树,使用数组存储二叉树时,若某个非叶子节点存储在下标为i的位置,其左右孩子节点分别存储在下标为2i+1和2i+2的位置。堆可以分为大顶堆和小顶堆,对大顶堆来说,任意非叶子节点不小于其左右孩子节点,对于小顶堆来说,任意非叶子节点不大于其左右孩子节点。若使用数组存储大顶堆,则满足:arr[i] >= arr[2i+1] && arr[i] >=arr[2i+2](i为非叶子节点的在数组中的下标)构造大顶堆基本思想:
2021-06-22 17:08:03
6598
1
转载 彻底理解数据库事务
转载????:事务事务(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。在计算机术语中,事务通常就是指数据库事务。概念一个数据库事务通常包含对数据库进行读或写的一个操作序列。它的存在包含有以下两个目的:1、为数据库操作提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持一致性的方法。2、当多个应用程序在并发访问数据库时,可以在这些应用程序之间提供一个隔离方法,以防止
2021-06-20 12:23:19
184
原创 什么是数据持久化?
1.什么是持久化? 狭义的理解:“持久化”仅仅指把域对象永久保存到数据库中; 广义的理解,“持久化”包括和数据库相关的各种操作。 ● 保存:把域对象永久保存到数据库。 ● 更新:更新数据库中域对象的状态。 ● 删除:从数据库中删除一个域对象。 ● 加载:根据特定的OID,把一个域对象从数据库加载到内存。 ● 查询:根据特定的查询条件,把符合查询条件的一个或多个域对象从数据库加载内在存中。2.为什么要持久化? 持久化技术封装了数据访问细节
2021-06-19 21:30:09
1633
原创 使用JAVA8 filter对List多条件筛选
//查找身高在1.6米及以上的女生List<StudentInfo> boys = studentList.stream().filter(s->s.getGender() && s.getHeight() >= 1.6).collect(Collectors.toList());//输出查找结果StudentInfo.printStudents(girls);
2021-06-03 16:33:03
1771
转载 java 8 流处理字符串之分割字符串str.chars()
public static List<Character> splitToListOfChar(String str) { return str.chars() .mapToObj(item -> (char) item) .collect(Collectors.toList());}chars()方法转换字符串至Integer流,每个Integer值代表字符序列的ASCII值。所以我们需要显示使用mapToObj()方法进行类型转换。...
2021-06-03 16:28:01
979
原创 Java 中>>和>>>的区别
Java中的位运算符:>> 表示右移,如果该数为正,则高位补0,若为负数,则高位补1;>>>表示无符号右移,也叫逻辑右移,即若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0。表达式为:result = exp1 >> exp2;result = exp2 >>> exp2;表示把数exp1向右移动exp2位。例如:res = 20 >> 2;20的二进制为 0001 0100,右移2位后.
2021-05-28 12:48:46
2034
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人