- 博客(59)
- 收藏
- 关注
原创 写组件时的配置
spring在加载配置文件时,是遵循着一种加载顺序的。在工作中,有些时候,我们需要编写一个自己的组件,在组件上,需要对有些值进行配置。举个例子base.jar中,我们需要配置一个值spring.application.name =base但是我们又希望将这个值,交给服务去控制,所以,可以使用$(spring.application.name}的方式。...
2022-03-29 10:28:11
153
原创 Spring常见的注解的使用以及说明
在一个配置类中,注册了两个类型一样的bean,这种设计没什么实际意义,而@ConditionalOnMissingBean真正意义在于它的扩展性,即当你封装一个组件时,你的组件有个默认的实现类,这时为默认的实现类bean上,添加@ConditionalOnMissingBean;而在外部,开发人员根据业务定义自己的bean,这时它就有意义了,当在外部出现多个相同类型bean时,spring会为我们选择不带@ConditionalOnMissingBean注解的实现;也就是说@ConditionalOnMi.
2022-03-25 15:29:48
904
原创 2021-09-12
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0
2021-09-12 13:50:38
119
原创 MyBatis涉及的设计模式-建造者模式
1.建造者模式:mybatis在构建环境的时候,使用的是建造者模式: Environment.Builder environmentBuilder = new Environment.Builder(id) .transactionFactory(txFactory) .dataSource(dataSource);```cpp/**/package org.apache.ibatis.mapping;import javax.
2021-03-01 21:47:58
344
原创 Proxy
package com.fuck996;import com.fuck996.domain.User;import org.apache.ibatis.annotations.Select;import org.apache.ibatis.annotations.Update;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Parameter
2021-02-02 01:58:38
153
原创 虚拟机栈
每一个线程都有自己的栈,栈中的数据都是以栈帧的格式存在的。在这个线程上,正在执行的每一个方法都有各自对应的栈帧,栈帧是一个内存区域,是一个数据集,维系着方法执行过程中的各种数据。2.JVM直接对java栈的操作只有两个,入栈和出栈。3.在一条活动的线程中,一个时间点上,只会有一个活动的栈帧,即只有当前正在执行的方法的栈帧是有效的,这个栈帧被称作当前栈帧。定义这个方法的类称作为当前类。执行引擎运行的所有字节码只针对当前栈帧进行操作。如果在该方法中调用了其他方法,对应的新的栈帧会被创建出来,放在栈顶端,成为
2021-02-02 01:08:41
103
原创 CPQ与线程关系的思考
并行:相当于我们军训时走方正队,大家急头并进。、并发:假设一下我们正在使用微信和姑娘聊天。并发就相当于你疯狂地切屏,同时跟十个姑娘谈人生。串行:所以,通过类似,我们明白了,并发实际上就是一个海王。下面,我们接着聊海王的问题,不,是多线程的问题。在聊多线程这个问题之前,我们先聊一下另外一个问题,就是PC寄存器。我们都知道,PC寄存器是线程私有的,每一个线程都独占一份PC。在PC上,存储了下一条指令的地址。我们假设这样一个场景:我们通过Java在一个单核的操作系统上开启了三条线程,Java每创建一
2021-01-30 02:18:51
194
1
原创 PC registerPC
PC寄存器是用来存储下一条指令丢置的代码,接着由执行引擎根据PC提供的地址,去寻找下一条要执行的指令,并且执行。PC寄存器是每一个线程有一份,所以它的生命周期和线程保持一致。如果是执行本地方法,则指定undefine.PC 是没有垃圾回收的,因为它就是指向下一个地址的。它既没有GC,也没有OOM。CODE左边:指令地址/偏移地址(PC存储的数据),执行引擎根据地址,去取出指令,取完翻译成机器指令,交给CPU运算。右边:操作指令面试常见的问题:为什么要使用PC寄存器记录当前线程的执行地址呢?因为
2021-01-30 01:35:29
253
原创 运行时数据区(内存)
1.方法区和堆是一个进程对应一份,而像PC,虚拟机栈,本地方法栈是一个线程独享一份。2 JVM集中在堆区,5%集中在方法区(也叫非堆空间),JDK8以后方法区也叫元空间。而虚拟机栈啊,本地本地方法栈啊,PC计数器啊,可优化的空间是非常少的,我们通常是不会考虑这个点的。3.一个JVM实例对应这个一个Runtime实例。二 线程:在HotSpot JVM 里,每一个县房产都与操作系统线程有直接映射。当一个Java线程准备好执行以后 ,此时一个操作系统的本地线程也同时创建。Java线程执行终止以后,本
2021-01-30 00:58:11
145
原创 两个类是同一个类的判断标准
两个类是同一个类的判断标准:1.完整的类名必须相同,包括包名2.使用同一个类加载器加载如果一个类是由用户自定义的加载器加载的,那么JVM会将这个类的类加载器的一个引用作为类型信息的一部分保存在方法区中。类的主动使用与被动使用:1日常的操作,像new ,反射等方式属于主动使用,会初始化,但是被动使用不会初始化,也就是调用cinit方法。...
2021-01-29 23:11:53
1122
原创 类加载器的分类
1.JVM支持两种类加载器,一种是引导类加载器(用C和C++语言写的),另外一种是自定义加载器)(用java语言写的)除引导类加载器以后,其他的类加载器都叫自定义加载器,扩展类ExtClassLoad加载器和系统类加载器AppClassLoad也是自定义加载器。2. ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader(); // 获取系统类加载器 System.out.println(syst
2021-01-28 02:23:26
204
原创 类的就加载过程
加载:1.通过一个类的全限定名获取该类的二进制文件。2.将这个字节流代表的静态存储结构转化成方法区的运行时的数据jiegou3.在内存中生成一个代表这个类的jvava.lang.class对象,作为方法区的这个类的各种数据的访问入口。第二阶段:链接1 验证2.准备为类的变量分配内存并且设置该类的变量的默认初始值 0值注意:这里不包括final修饰的static ,因为final在编译的时候就会分配,准备阶段就会显示地初始化。(常量在编译的时候就会初始化值)这里也不会为实例比那里分配
2021-01-28 01:45:38
115
原创 JVM整体结构
1.一个java文件通过前端编译器编译成.class文件。字节码文件,再通过类加载器加载到JVM中,生成相应的对象。接着就交给执行引擎,解释运行。执行引擎的作用,其实就是将高级语言翻译成机器语言,教给操作系统。反编译字节码文件第一步 通过cd 切到字节码对应的文件目录下第二步骤 dir 查看目录下全部的文件第三步骤 javap -v Demo.classjava由于跨平台设计,使用了栈这样一种设计,而非使用寄存器(寄存器与硬件耦合性更高,但是性能更高),所以它的指令集相对于寄存器这样的一
2021-01-27 01:20:20
135
1
原创 补充一个简单地测试类
1.一个简单的测试类 @Test public void testFindAll() throws IOException { //读取配置文件 InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml"); //创建SqlSessionFactoryBuilder对象 SqlSessionFactoryBuilder sqlSessionFactoryBuil
2021-01-20 22:27:46
102
原创 mybatis入门配置
POM依赖:这里我只依赖了mybatis相关的jar包,因为是研究mybatis源码,没有将spring等相关的框架引入。 <!--引入相关依赖--> <dependencies> <!--MyBatis依赖包--> <dependency> <groupId>org.mybatis</groupId> <artifactId>myb
2021-01-20 22:17:23
112
原创 第三种注册系统初始化器的方法
@Order(3)public class ThreeApplicationContext implements ApplicationContextInitializer { @Override public void initialize(ConfigurableApplicationContext applicationContext) { // 获取环境 ConfigurableEnvironment environment = applicati.
2021-01-07 22:33:41
150
原创 第二种注册系统初始化器的办法
@Order(2)public class AnotherApplicationContext implements ApplicationContextInitializer { @Override public void initialize(ConfigurableApplicationContext applicationContext) { // 获取环境 ConfigurableEnvironment environment = applic.
2021-01-07 22:22:44
108
原创 自定义系统初始化器
1.2.```javapackage com.example.demo.initializer;import org.springframework.context.ApplicationContextInitializer;import org.springframework.context.ConfigurableApplicationContext;import org.springframework.core.annotation.Order;import org.springfr
2021-01-07 22:12:13
95
原创 springboot的启动
SpringApplication.run(Sb2Application.class, args);切入run方法中:public static ConfigurableApplicationContext run(Class<?> primarySource, String... args) { return run(new Class[]{primarySource}, args); }接着往下切:public static ConfigurableApp
2021-01-07 21:30:13
135
原创 快速搭建一个springboot项目
server.port=8001server.servlet.context-path=/package com.example.demo.comtroller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import java.util.Optional;@RestContro...
2021-01-07 21:23:19
98
原创 MyBatis
Pom:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="htt...
2020-05-06 13:07:37
104
原创 使用axios
一 发送[1,2,3,4,5]数据类型时候 axios.post("/brand/delBrand.shtml",app.ids).then(function (res) { })后台写法:public Result delBrand(@RequestBody Long[] ids){ System.out.println(ids); re...
2020-05-05 04:52:50
125
原创 模板方法
模板方法 也叫钩子函数package design.template; abstract class Student { public void sleep(){ tuo_yi_fu(); tuo_xie(); guan_deng(); gai_bei_zi(); ...
2020-05-01 04:25:16
102
原创 建造者模式
在开发过程中,有些对象有特别多的成员变量,每次在赋值的时候,很多属性可能用不上,这个时候,我们可以使用建造者模式处理这个问题。package design.build;import jdk.nashorn.internal.ir.CallNode;public class Materiel { private String qrcodeNo; private String...
2020-05-01 03:57:45
78
原创 原型设计模式
package design;public class Student implements Cloneable { private String name; private int age; private String sex; public Student() { } public Student(String name, int ag...
2020-05-01 01:09:24
114
原创 单例模式
package design;public class SingletonV1 { //提供私有构造方法 禁止new的方式创建、 private SingletonV1(){ } private final static SingletonV1 instance=new SingletonV1(); //向外部提供返回实例方法 public s...
2020-04-30 15:55:34
73
原创 mysql分组函数(聚合函数)
sumSELECT SUM(id) FROM studentavgSELECT AVG(salary) FROM studentmaxSELECT MAX(id) FROM studentminSELECT MIN(id) FROM studentcountSELECT COUNT(id) FROM student这几个函数都 可以搭配distinct使用```s...
2020-04-17 15:34:17
133
原创 日期函数
一 返回系统当前时间SELECT NOW();SELECT CURDATE()SELECT CURTIME()SELECT YEAR(NOW()) 年SELECT MONTH(NOW())
2020-04-16 18:39:33
100
原创 mysql 数学函数
一 四舍武入SELECT ROUND(4.565)二 向上取正SELECT CEIL(2.15)三 向下取正SELECT FLOOR(2.15)四 截断SELECT TRUNCATE(2.15546,3)结果是 2.155 小数点后保留三位五 取模SELECT MOD(10,3)...
2020-04-16 18:26:35
125
原创 mysql 字符函数
字符函数SELECT LENGTH('jjjhgjkskn')concat 拼接字符串SELECT UPPER('asdf')SELECT LOWER('asDf')姓名大写 地址小写 然后拼接SELECT CONCAT(UPPER(sname),LOWER(address)) AS message FROM student;SELECT SUBSTR('我是一个...
2020-04-16 18:16:53
130
原创 mysql基本语法
Create Table表结构:CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) DEFAULT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=...
2020-04-16 17:47:22
172
原创 增加框 删除框
<div id="app"> <table class="layui-table"> <thead> <tr> <th>关键物料唯一码</th> <th>操作</th> </tr> ...
2020-04-07 23:29:01
115
原创 Parameter 0 of method insertSelective in
Description:Parameter 0 of method insertSelective incom.ydmes.service.impl.productionmgr.dip.DipCheckSurfaceServiceImplrequired a bean of type‘com.ydmes.domain.entity.productionmgr.dip.DipCheckS...
2020-04-01 17:34:55
1130
1
原创 layui 下拉选择
HTML<div id="dipCheck"> <div class="layui-form"> <div class="layui-form-item" style="width: 100%"> <label class="layui-form-label">检测类型:</label&g...
2020-03-31 01:38:56
391
原创 回车键发异步
> mounted: function () {> var $this = this;> $(document).off('keyup').keyup(function (e) {> if (e.keyCode == 13) {> $this.doInsertion();...
2020-03-31 01:33:19
108
原创 Vue下拉
<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title></title> </head> <body> <div id="app"> <select v-model="selected">...
2020-03-30 16:49:59
109
原创 x-select的运用
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maxi...
2020-03-30 13:57:41
1655
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人