- 博客(167)
- 收藏
- 关注
原创 jdk的SPI(Service Provider Interface)
1、定义 SPI是Java提供的一种服务发现机制,用于在运行时动态查找和加载实现特定接口的服务提供商。按照字面的意思是服务提供接口将接口与具体业务独立开来。实现调用方与实现方解耦。1.1API与SPI 最简单的区别就是接口的属于哪一方,API接口属于实现方,SPI接口属于调用方,SPI是调用方定义接口,由实现方去实现接口。API是实现方定义接口,由实现方实现接口。2、实现 ...
2024-04-01 15:52:00
491
1
原创 mysql用户权限
mysql创建用户权限创建用户 MySQL中的用户帐号由用户名,以及使用@字符分隔的主机名组成。CREATE user user_account IDENTIFIED BY password;例:create user super@localhost IDENTIFIED BY '123456'; //localhost主机连接到MySQL数据库服务器create user s...
2023-10-09 15:48:00
201
原创 git硬重置(hard reset)重找回
首先进行git版本回退1、git log查找历史commit_idgit log2、版本回退git reset --hard commit_id3、找回你的提交(commit), 因为Git对每件事都会有日志,且都会保存几天。git reflog4、选择你想要回到的提交(commit)的SHA,再重置一次:git reset --hard commit...
2023-09-15 14:35:00
1047
原创 git远程版本回退
注意回退前保留一份代码git回退分为三部分一、查找回退版本git log二、确定要回退的版本,本地先进行回退git reset --head commit id三、远程仓库进行回退git push origin remote --force...
2023-09-06 17:38:00
402
原创 16进制转字节数组为负数问题
举例:B9 转换成字节数组为 -73或者185为什么如果是-73字节数组 再转回为16进制为 :0xFFFFFFB9,与原来的B9相差解析:在java里面B9转换成二进制为:00000000 00000000 00000000 10110101Int转换为Byte的过程,也是将Int里32个bit的前24个“砍掉”,只留下最后8个bit的过程 即为:10110101因为...
2023-05-16 18:06:00
587
原创 &(按位与运算)、|(按位或运算)、^(异或运算)
按位与运算符(&)对俩个数据进行二进制按位与运算。二进制规则:0&0=0;0&1=0;1&0=0; 1&1=1 双1为1,否则为0.例:102&255即:01100110&11111111=01100110 十进制为:102 01100110 11111111-------...
2023-02-08 14:21:00
654
原创 认识工作流
三大主流工作流ActiviteFlowableCamunda特点:1. Activiti ⽬前是侧重云,他⽬前的设计会向 Spring Cloud、Docker 这些去靠拢。2. Flowable 核⼼思想还是在做⼀个功能丰富的流程引擎⼯具,除了最最基础的⼯作流,他还提供了很多其他的扩展点,我们可以基于 Flowable 实现出许多我们想要的功能。3. Camunda 相对于前两...
2023-02-06 14:12:00
133
原创 mybatis中in的坑
在mybatis的in查询分为三种传入参数1、string 字符串传入,以逗号分割:优点:简单方便,高效,缺点:不能防止sql注入,注意,传入的参数为字符串,如('A123','B123','C123')需要提前把数据封装好<foreach item="item" index="index" collection="codes.split(',')" open="(" separa...
2023-01-06 18:01:00
121
原创 supervisor的用法
supervisor是什么:守护进程的一个工具;比如PM2、Forever、 Python底层写的supervisor 等等...用法:1、安装我用的是yum安装,还有其他的很多安装方式就不一一介绍,有兴趣的中级查yum install supervisor2、Supervisor配置文件echo_supervisord_conf > /disk/supervis...
2022-11-08 18:08:00
243
原创 动态代理
绪论一、什么是动态代理是使用反射和字节码的技术,在运行期创建指定接口或类的子类,以及其实例对象的技术,通过这个技术可以无侵入的为代码进行增强(代码无侵入的增强)举例:卖车,工厂把车生产出来,经销商4s店买车,工厂就是被代理的类,4s就是代理类,4s店对车进行送膜,送脚垫,送保养就是做增强。二、jdk动态代理1、jdk实现动态代理主要是俩个类,Proxy、InvocationHandle...
2022-09-29 17:55:00
135
原创 logback知识点
一、依赖首先是maven项目,引入框架 针对ssm项目:<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId><version>1.1.11</version></dependenc...
2022-09-07 15:59:00
378
原创 entity命名规则
以下内容转自:http://www.hollischuang.com/archives/553PO(persistant object) 持久对象在 o/r 映射的时候出现的概念,如果没有 o/r 映射,没有这个概念存在了。通常对应数据模型 ( 数据库 ), 本身还有部分业务逻辑的处理。可以看成是与数据库中的表相映射的 java 对象。最简单的 PO 就是对应数据库中某个表中的一条记录,多...
2022-06-17 14:01:00
327
原创 有用的工具类
1. Collections首先出场的是java.util包下的Collections类,该类主要用于操作集合或者返回集合,我个人非常喜欢用它。1.1 排序在工作中经常有对集合排序的需求。看看使用Collections工具是如何实现升序和降序的:List<Integer>list=newArrayList<>();list.add(2);list...
2022-06-10 12:03:00
110
原创 @component与@Configuration创建bean
@configuration配置针对@configuration,首先@Configuration与@Bean搭配使用,一般在项目中定义配置累才会使用这个注解@Configuration代表这个类是一个配置类,可理解为用spring的时候xml里面的<beans>标签@Bean用来定义一个bean,可以指定初始、销毁方法,及bean范围等,可理解为用spring的时...
2022-03-10 15:45:00
969
原创 @AutoWired与@Resource注解
首先对于这俩个注解:自动绑定(Autowiring)模式:模式说明no默认值,未激活 Autowiring,需要手动执行依赖注入对象byName根据被注入属性的名称作为Bean名称进行依赖查找,并将对象设置到该属性byType根据被注入属性的类型作为依赖类型进行查找,并将对象设置到该属性...
2022-03-04 14:49:00
265
原创 decimal相关知识
一、初始化decimal 的初始化方式有四种1、new decimal(int);2、new decimal(long);3、new decimal(dubbo);会有精度丢失的风险;使用BigDecimal d= BigDecimal.valueOf(dubbo);初始化dubbo4、new decimal(String);小数最好使用字符初始化二、计算方式//加法BigDe...
2021-12-29 18:18:00
3685
原创 杀死进程
#####windwos下杀死进程tasklist taskkill pid#####linux下杀死进程ps -ef 查看进程 ps -ef | grep 条件kill pidjava自带jps 查看所有java程序jstock pid 查看某个java进程的所有线程情况jconsole 通过图形查看进程中线程的情况...
2021-12-13 21:42:00
318
原创 idea快捷方式
一、Ctrl 快捷键Ctrl + F 在当前文件进行文本查找 (必备)Ctrl + R 在当前文件进行文本替换 (必备)Ctrl + Z 撤销 (必备)Ctrl + Y 删除光标所在行 或 删除选中的行 (必备)Ctrl + X 剪切光标所在行 或 剪切选择内容Ctrl + C 复制光标所在行 或 复制选择内容Ctrl + D 复制光标所在行 或 复制选择内容,并把复制内容插入光标位置下面 (...
2021-12-02 09:18:00
366
原创 针对Integer的IntegerCache
首先举个例子: Integer a = 1000, b = 1000; System.out.println(a == b);//1 Integer c = 100, d = 100; System.out.println(c == d);//结果falsetrue基本知识:我们知道,如果两个引用指向同一个对象,用==...
2021-11-30 14:02:00
100
原创 代码优化细节
1、尽量指定类、方法的final修饰符2、尽量重用对象、3、及时关闭流4、尽量使用局部变量,实例变量等创建是在堆中,效率较慢,局部变量在方法中创建,方法的运行结束消失而消失5、减少变量的重复运算,比如在for循环中,调用size(),每次都要进行调用6、尽量采用懒加载,在需要的时候创建7、慎用异常8、不要在循环中使用try catch9、集合类等指定初始长度10、当复制大量数据...
2021-11-30 12:50:00
89
原创 sql中字符串与数字的比较坑
------------恢复内容开始------------今天在弄sql中发现一个问题,先上图,如我们所见字符串'card'=0是相等的,为什么呢?如果是时间开发中的sql代码没有任何问题,查询处理的数据也是会有问题的,这个是很严重的事故!在经历了百度查询MySQL中字符串与数字比较的坑 - 活在夢裡 - 博客园 (cnblogs.com)这篇文的解决了我的疑惑,以此来保留一下自己所...
2021-11-23 15:09:00
1725
原创 重复请求处理方案
处理方案1、数据库建立唯一性索引,可以保证最终插入数据库的只有一条数据2、token机制,每次接口请求前先获取一个token,然后再下次请求的时候在请求的header体中加上这个token,后台进行验证,如果验证通过删除token,下次请求再次判断token3、悲观锁或者乐观锁,悲观锁可以保证每次for update的时候其他sql无法update数据(在数据库引擎是innodb的时候...
2021-09-28 10:14:00
219
原创 java缓存
一、几种常见的缓存方式1、java缓存形式/介质众所周知,缓存之所以访问速度快,是因为把缓存的交互介质是内存。而常规的例如mysql数据交互介质是磁盘。那么常见的java中或者中间件供我们可以用来做缓存的开发的工具有几种呢?2、jvm本地内存jvm本地内存常见使用为定义一个全局静态变量,保证后端服务在运行过程中,对应的对象空间直接保持被引用,不会被GC给回收。3、guava缓存工具...
2021-09-15 14:07:00
658
原创 JS中的反斜杠 (\)是什么意思
JS中的反斜杠 (\)是什么意思在js中我们经常能看到“\”。让人有一种看不懂的错觉。那么,为什么本来正常的代码,要加上反斜杠呢,他的作用是什么呢我们先来看一段代码"<input id=\"countCost\" name=\"countCost\" class=\"mini-textbox\" value=\"" + countCost + "\" allowInput=\...
2021-08-27 10:31:00
8251
原创 controller单例模式
单例模式(Singleton)是程序设计中一种非常重要的设计模式,设计模式也是Java面试重点考察的一个方面。面试经常会问到的一个问题是:SpringMVC中的Controller是单例还是多例,很多同学可能会想当然认为Controller是多例,其实不然。根据Tomcat官网中的介绍,对于一个浏览器请求,tomcat会指定一个处理线程,或是在线程池中选取空闲的,或者新建一个线程。Each...
2021-08-26 18:03:00
723
原创 SpringBoot+Redis幂等性拦截
在实际的开发项目中,一个对外暴露的接口往往会面临很多次请求,我们来解释一下幂等的概念:任意多次执行所产生的影响均与一次执行的影响相同。按照这个含义,最终的含义就是 对数据库的影响只能是一次性的,不能重复处理。如何保证其幂等性,通常有以下手段:数据库建立唯一性索引,可以保证最终插入数据库的只有一条数据create unique index uniqueName on tableName(f...
2021-08-26 17:48:00
304
原创 拦截器与过滤器
一、拦截器与过滤器的区别:1、拦截器基于java反射,过滤器基于函数回调2、拦截器不依赖servlet容器,过滤器依赖servlet容器3、拦截器只能对action请求拦截,过滤器对所有请求拦截4、拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。5、在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。6、拦截器可以获取IOC容器中...
2021-08-19 14:18:00
102
原创 mybatis-plus学习
mybatis-plus一、简介通过maven项目,springBoot构建学习,官方地址文档简介 | MyBatis-Plus (baomidou.com)官方讲解,mybatis的优点:无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作强大的 CRUD 操作:内置通用 Mapper、通用 S...
2021-08-17 15:36:00
578
原创 代码规范系列
一、MyBatis 不要为了多个查询条件而写 1 = 1二、迭代entrySet() 获取Map 的key 和value三、使用Collection.isEmpty() 检测空四、初始化集合时尽量指定其大小五、使用StringBuilder 拼接字符串六、若需频繁调用Collection.contains 方法则使用Set七、使用静态代码块实现赋值静态成员变量八、删除未使用的局部...
2021-08-11 10:35:00
53
原创 Error:Abnormal build process termination:
D:\jdk1.8.0_202\bin\java.exe -Xmx2800m -Djava.awt.headless=true -Djava.endorsed.dirs=\"\" -Djdt.compiler.useSingleThread=true -Dexternal.project.config=C:\Users\Administrator\.IntelliJIdea2019.3\sys...
2021-08-05 18:06:00
1694
原创 SpringBoot常用注解
Spring Web MVC 与 Spring Bean 注解@RequestMapping,请求处理类还需要使用@Controller或@RestController进行标记注解对请求处理类中的请求处理方法进行标注,有六大属性配置1、value:映射的请求URL或者其别名2、method:兼容HTTP的方法名3、params:根据HTTP参数的存在、缺省或值对请求进行过滤4、he...
2021-08-02 10:30:00
173
原创 git深度学习
git在我们的日常项目中用的也是十分的广泛Git简介Git是一种分布式版本控制系统,它可以不受网络连接的限制,加上其它众多优点,目前已经成为程序开发人员做项目版本管理时的首选,非开发人员也可以用Git来做自己的文档版本管理工具。Git的api很多,但其实平时项目中90%的需求都只需要用到几个基本的功能即可,所以本文将从实用主义和深入探索2个方面去谈谈如何在项目中使用Git...
2021-07-20 11:50:00
275
1
原创 spring中创建bean的方式
一、常见的bean创建方式(1)基于xml配置bean(2)使用@Component派生注解(3)使用@Configuration和@Bean注解1、常见的使用xml中setter方法创建beanbean.xml文件中配置bean时,加上<property>标签设置bean所需参数 <bean id="bookManageDao" class="com.swys...
2021-07-20 10:26:00
2393
原创 spring事务的失效场景
一、针对spring来说可以使用@transactional来开启事务二、常见Spring事务失效的场景:1、注解@Transactional配置的方法非public权限修饰;(1)、官方定义:使用代理时,您应该只将@Transactional注释应用于具有公共可见性的方法。如果使用@Transactional注释对受保护的、私有的或包可见的方法进行注释,则不会引发错误,但带注释的方法不会...
2021-05-06 15:28:00
191
原创 String的不可变理解
一、什么是不可变 如果一个对象它被创建后,状态不能改变,则这个对象被认为是不可变的。二、怎么实现不可变当使用final修饰基本类型变量时,不能对基本类型变量重新赋值,因此基本类型变量不能被改变。但对于引用类型变量而言,它保存的仅仅是一个引用,final只保证这个引用变量所引用的地址不会改变,即一直引用同一个对象,但这个对象完全可以发生改变。例如某个指向数组的final引用,它必须从...
2021-04-19 09:45:00
254
原创 自旋锁与适应性自旋锁
java中根据某一特性定义的锁进行分类,2、自旋锁与适应性自旋锁分类定义:锁住同步资源失败,要不要进行阻塞1、概念自旋锁的概念。阻塞或唤醒一个Java线程需要操作系统切换CPU状态来完成,这种状态转换需要耗费处理器时间。如果同步代码块中的内容过于简单,状态转换消耗的时间有可能比用户代码执行的时间还要长。减少cpu切换在许多场景中,同步资源的锁定时间很短,为了这一小段时间去切换线程,线...
2021-04-15 16:41:00
348
原创 悲观锁与乐观锁
java中根据某一特性定义的锁进行分类,1、悲观锁与乐观锁 分类定义:根据线程要不要锁住同步资源 针对于同一并发数据操作 悲观锁:悲观锁认为自己在使用数据的时候一定有别的线程来修改数据,因此在获取数据的时候会先加锁,确保数据不会被别的线程修改。Java中,synchronized关键字和Lock的实现类都是悲观锁。 乐观锁:乐观锁认为自己在使用数据时不会有别的线程修改...
2021-04-15 16:15:00
78
原创 BIO,NIO,AIO学习
一、认识同步与异步1、同步,异步是指应用程序和内核的相互交互而言的同步:是指用户进程触发io操作等待或者轮训的方式查看io操作是否就绪异步:异步调用发出调用之后,不会立刻得到结果,而是通过被调用者通知调用者,或者回调函数处理调用。二、阻塞和非阻塞阻塞和非阻塞是针对于进程访问数据的时候,根据IO状态采取不同方式阻塞:读写操作一直等待,非阻塞:读写会返回一个状态值,进行下一步例:洗...
2021-04-14 10:36:00
108
原创 final修饰类
final修饰类,表示类不可变,不可继承比如,String,不可变性final修饰方法,表示该方法不可重写final修饰变量,这个变量就是常量注意:修饰的是基本数据类型,这个值本身不能修改修饰的是引用类型,引用的指向不能修改比如下面的代码是可以的 final Recharge recharge = JsonUtil.decode(data, Recharge.class...
2020-12-23 09:38:00
2721
原创 反射
方法用途getField(String name)获得某个公有的属性对象getFields()获得所有公有的属性对象getDeclaredField(String name)获得某个属性对象getDeclaredFields()获得所有属性对象Field 类定义了如下方法设置成员变量的信息方法用途equals(Object ob...
2020-12-11 09:41:00
117
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人