- 博客(170)
- 收藏
- 关注
原创 springCloud bean的加载流程
总的来说,Spring Cloud的Bean加载过程与Spring框架的Bean加载过程基本一致,主要通过读取配置文件、创建Bean实例、装配、解析和初始化等步骤来完成。3、Bean实例装配:Spring Cloud根据配置文件中的Bean依赖关系,将相关的Bean实例装配在一起。比如,如果一个Bean A依赖于另一个Bean B,那么在加载Bean A时,Spring会先加载Bean B,并将Bean B的实例注入到Bean A中。解析过程中会对Bean进行一些额外的处理,比如自动装配、自定义初始化等。
2023-09-08 17:21:01
547
1
原创 sql优化一般步骤
in查询在进行cost代价计算时(代价 = 元组数 * IO平均值),是通过将in包含的数值,一条条去查询获取元组数的,因此这个计算过程会比较的慢,所以MySQL设置了个临界值(eq_range_index_dive_limit),5.6之后超过这个临界值后该列的cost就不参与计算了。mobile是字符类型,使用了数字,应该使用字符串匹配,否则MySQL会用到隐式替换,导致索引失效。对于推送业务的数据存储,可能数据量会很大,如果在方案的选择上,最终选择存储在MySQL上,并且做7天等有效期的保存。
2023-08-31 15:20:42
393
原创 BeanFactory与ApplicationContext的区别
就可以发现spring存在的配置问题,因为他是一次性加载的,有利于检测依赖属性是否注入(也因为其一次性加载的原因,导致占用内存空间,当Bean较多时,影响程序启动的速度)。BeanFactory与ApplicationContext是spring的两大核心接口,都可以当做spring的容器。的接口,是IOC的核心,其功能包含了各种Bean的定义、加载、实例化、依赖注入和生命周期的管理。,也就是说在容器启动时不会注入bean,而是在需要使用bean的时候,才会对该bean进行加载实例化。
2023-08-31 11:42:35
877
原创 mybatis使用乐观锁和悲观锁
可以先调用/update/{time}接口,延迟执行,然后马上调用/update接口,会发现,/update接口不会等待/update/{time}接口执行完成,读取完版本号能够成功更新数据,但是/update/{time}接口等待足够时间以后,更新的时候会失败,因为它的版本和数据库的已经不一致了。乐观锁:不上锁,读取的时候带版本号,写入的时候带着这个版本号,如果不一致就失败,乐观锁适用于多读的应用类型,因为写多的时候会经常失败。数据库要实现悲观锁,就是将sql语句带上for update即可。
2023-08-30 15:07:48
1117
转载 mysql悲观锁和乐观锁实际应用
2.乐观锁定的第二种实现方式和第一种差不多,同样是在需要乐观锁控制的table中增加一个字段,名称无所谓,字段类型使用时间戳 (timestamp), 和上面的version类似,也是在更新提交的时候检查当前数据库中数据的时间戳和自己更新前取到的时间戳进行对比,如果一致则OK,否则就是版本冲突。但是如果发生有不同的业务操作对同一版本的数据进行修 改,那么,先提交的操作(图中B)会把数据version更新为2,当A在B之后提交更新时发现数据的version已经被修改了,那么A的更新操作会失 败。
2023-08-30 14:49:49
129
原创 vue+element Ui 树型组件tree懒加载+搜索框远程请求数据为平铺类型
vue+element Ui 树型组件tree懒加载+搜索框远程请求数据为平铺类型
2023-04-28 18:20:26
2998
原创 MultipartEntityBuilder发送文件
pom: <!-- httpclient --> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.4&l
2021-12-01 16:25:21
1546
原创 获取bean并执行目标方法
废话不多说,都在代码中 @ApiOperation(value = "调用bean方法", httpMethod = "POST") public Result<?> invoke( @RequestParam String passwd, @RequestParam String beanClass, @RequestParam String methodName, @RequestPar
2021-10-11 18:17:14
567
原创 在普通类中获取spring容器中的bean
如果我们需要在一个类中使用spring提供的bean对象,那么我们需要把这个bean注入到spring容器中,交给spring容器来管理。但是在实际应用中我们往往会碰到在普通的java类中,需要直接使用spring提供的对象或者说有一些对象不需要交给spring容器来管理,但是需要用到spring容器中的一些对象。如果这是spring框架的独立应用程序,我们通过ApplicationContext对象即可获取到:ApplicationContext applicationContext = new Fi
2021-02-03 14:37:21
515
原创 java回调函数
案例:老板与员工 背景:老板把手中的工作交给了员工去做,自己出去玩了,员工干完之后,通知老板。看代码。步骤1:先定义一个包含了回调函数的回调接口,方法就是回调函数。public interface CallBack { //这就是回调函数,回调函数也就是别人干完帮你做的事后,调用你(通知你)。 public void call(String info);}步骤2:定义一个员工类,该类的一个方法就是自己的工作,也就是帮老板做的事,需要传入一个老板的引用。public cl
2020-12-30 17:17:25
224
原创 Groovy脚本语法检测、编译、及运行
Java中运行Groovy,有三种比较常用的类支持:GroovyShell,GroovyClassLoader以及Java-Script引擎(JSR-223).GroovyShell: 通常用来运行"script片段"或者一些零散的表达式(Expression)GroovyClassLoader: 如果脚本是一个完整的文件,特别是有API类型的时候,比如有类似于JAVA的接口,面向对象设计时,通常使用GroovyClassLoader.ScriptEngine: JSR-223应该是推荐的
2020-10-27 19:15:50
3657
原创 导出excel
pom文件 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.9</
2020-10-26 11:11:27
143
原创 SQL性能优化
MySqls数据库的优化是多个方面的,原则是减少系统的瓶颈,减少资源的占用。增加系统的反应速度。例如,通过优化文件系统提高磁盘I/O的读写速度;通过优化操作系统调度策略提高MySql在高负荷情况下的负载能力;优化表结构、索引、查询语句使查询响应更快。1. 查询mysql数据库的性能参数> SHOW STATUS LIKE 'VALUE'其中value是要查询的参数值,一些常用的性能参数如下:Connections:连接mysql服务器的次数Uptime:MySql服务器上线的时间Slo
2020-09-04 17:04:47
139
原创 先获取百分比再保留小数点后两位数
/** * @author: wb-xw750640 * @date: 2020/7/12 10:14 * @description: 先得到百分比,保留小数点后两位 **/public class DigitalConvertUtil { public static String percentConvert(String pre){ float number=Float.parseFloat(pre); NumberFormat percentInst
2020-07-14 17:03:25
332
原创 log4j.xml配置打印指定数据到指定文件中
1. 指定某个特殊功能的日志打到独立的日志文件<?xml version="1.0" encoding="GBK"?><!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"><!-- Log4j配置文件。--><log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="DEFAULT
2020-06-22 14:51:20
604
原创 Spring定时任务的实现方式(程序启动后运行)--ScheduledExecutorService
本方式会在程序启动后单独开启一个线程去执行,慎用建立一个Java类,并实现Runnable接口import java.util.Date;public class StartupTask implements Runnable{ @Override public void run() { System.out.println(new Date()+" ScheduledExecutorTask..."); }}Spring配置<!
2020-06-19 11:09:10
851
原创 Calendar工具类的日常使用--保持持续更新中
import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;public class CalenderUtils { public static boolean isThisWeek(Long time) { if (time == null) { return false; } Calendar calendar
2020-06-01 16:49:42
196
原创 集合实现先归类再排序
实现思路:先将数据转换成对象,再将数据通过Map归类,最后通过实现集合的compare方法实现排序import java.text.SimpleDateFormat;import java.util.*;public class SortTest001 { public static void main(String[] args) throws Exception { SimpleDateFormat simpleDateFormat=new SimpleDateForm
2020-06-01 16:47:26
264
原创 Spring并发访问的线程安全性问题
由于Spring MVC默认是Singleton的,所以会产生一个潜在的安全隐患。根本核心是instance变量保持状态的问题。这意味着每个request过来,系统都会用原有的instance去处理,这样导致了两个结果:一是我们不用每次创建Controller,二是减少了对象创建和垃圾收集的时间;由于只有一个Controller的instance,当多个线程同时调用它的时候,它里面的instance变量就不是线程安全的了,会发生窜数据的问题。当然大多数情况下,我们根本不需要考虑线程安全的问题,比如d
2020-05-08 17:59:49
204
转载 事务
事务:事务指的是逻辑上的一组操作,组成这组操作的各个单元要么全都成功,要么全都失败。作用:保证在一个事务中多次操作数据库表中数据时,要么全部成功,要么全部失败。事务的特性(ACID)数据库的事务必须具备ACID特性,ACID是指 Atomic(原子性)、Consistensy(一致性)、Isolation(隔离型)和Durability(持久性)的英文缩写。1、原子性(Atomicity...
2020-05-07 14:14:25
133
原创 数组扩容的实现
public class MyArrayList { int size; int arr[]; public MyArrayList() { arr=new int[10]; } void add(int i){ if (size>=arr.length){ //默认扩容是1.5倍扩容,初始大小 是...
2020-04-30 19:55:20
167
转载 Spring Boot 项目优化和 JVM 调优
项目调优:在SpringBoot项目中,调优主要通过配置文件和配置JVM的参数的方式进行。修改配置文件:关于修改配置文件application.properties。SpringBoot项目详细的配置文件修改文档其中比较重要的有:server.tomcat.max-connections=0 # Maximum number of connections that the server ...
2020-04-01 16:51:01
232
转载 数组模拟环形队列
利用数组通过取模的方式来实现环形队列:尾索引的下一个为头索引时表示队列满,即将队列容量空出一个作为约定,在判断队列满的时候为:(rear+1)%maxSize==front空:rear==front分析示意图代码实现:队列:package com.souche.replacement.report.test;/** * @Author:xuwei * @Date:2020...
2020-01-19 10:01:43
129
原创 Mybatis源码解读--9种设计模式总结
虽然我们都知道有26个设计模式,但是大多停留在概念层面,真实开发中很少遇到,Mybatis源码中使用了大量的设计模式,阅读源码并观察设计模式在其中的应用,能够更深入的理解设计模式。Mybatis至少遇到了以下的设计模式的使用:Builder模式,例如SqlSessionFactoryBuilder、XMLConfigBuilder、XMLMapperBuilder、XMLStatementB...
2020-01-14 14:22:37
611
原创 Builder模式和工厂模式的区别
1、Builder模式Builder模式的定义是“将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。”,它属于创建类模式,一般来说,如果一个对象的构建比较复杂,超出了构造函数所能包含的范围,就可以使用工厂模式和Builder模式,相对于工厂模式会产出一个完整的产品,Builder应用于更加复杂的对象的构建,甚至只会构建产品的一个部分。在Mybatis环境的初始化过程中...
2020-01-13 14:25:59
2232
转载 为什么MySQL用B+树做索引?
索引这个词,相信大多数人已经相当熟悉了,很多人都知道MySQL的索引主要以B+树为主,但是要问到为什么用B+树,恐怕很少有人能把前因后果讲述的很完整。本文就来从头到尾介绍下数据库的索引。索引是一种数据结构,用于帮助我们在大量数据中快速定位到我们想要查找的数据。 索引最形象的比喻就是图书的目录了。注意这里的大量,数据量大了索引才显得有意义,如果我想要在[1,2,3,4]中找到4这个数据,直接对全数...
2020-01-10 11:07:22
208
转载 什么是B树?为啥文件索引要用B树而不用二叉查找树?
最近看了帅地的一篇关于面试时B树的文章,感觉他的风格特别有趣,给大家分享一下一、面试被怼面试官:你知道文件索引、数据库索引一般用什么数据结构来存储吗?小秋:知道啊,一般都是用树形结构来存储的。面试官:可以说说为啥用树形结构来存储吗?小秋:树形结构例如想 B 树,B+ 树,二叉查找树都是有序的,所以查询效率很高,可以再 O(logn) 的时间复杂度查找到目标数据。面试官:那可以问问文件索...
2020-01-10 10:46:07
477
原创 单向循环链表应用场景
Josephu(约瑟夫、约瑟夫环)问 题:Josephu问题为: 设编号为1, 2, … n的n个人围坐一圈,约定编号为k (1<=k<=n) 的人从1开始报数,数到m的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。提示:用一个不带头结点的循环链表来处理Josephu问题:先构成-一个有n个结点的单循环链表,然...
2020-01-09 15:32:32
873
原创 双向链表的实现
定义双向链表:// 定义HeroNode2 ,每个HeroNode 对象就是-一个节点class HeroNode2 { public int no; public String name; public String nickname; public HeroNode2 next;//指向下-一个节点,默认为null public HeroNode2 ...
2020-01-09 14:33:34
139
原创 单链表的实现及实现链表的反转、逆序、倒数查询
链表是有序的列表,但它在内存中的存储如下:小结:链表是以节点的的方式来存储,是链式存储每个节点包含data域,next域:指向下一个节点链表各个节点不一定是连续存储链表分为带头节点的链表和没有头节点的链表,根据实际的需求来确定。带头节点的逻辑结构示意图如下:单链表的应用实例:定义实体类:/定义HeroNode,每个HeroNode对象就是-一个节点class HeroN...
2020-01-09 13:53:50
314
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人