- 博客(105)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 JVM运行的垃圾回收器查看姿势
一、默认垃圾回收器输入下面这行命令,可以看到当前jvm默认的垃圾回收器java -XX:+PrintCommandLineFlags -version二、运算的垃圾书回收器2.1 看启动参数下面的命令可以看进程的参数ps -ef | grep java通过看java进程参数,可以看到启动时是否有指定的垃圾回收器......
2022-03-30 15:37:42 1781
原创 重写equals方法就必须重写hashcode的方法的思考
一、为SET或者MAP量身定做的约束我理解这个不是java本身定义,主要Set或者Map中对其key的判断上有两个条件key是相等的条件:hashcode方法返回值一样 && equals方法返回也是true。基于以上的java对于Set或者Map的实现要求,所以建议所以需要重写equals方法的类都要同时重写hashcode方法。二、疑问这时就会有人问,我就不重写,能发生啥?那我就来装个逼下面是我个人理解1、若是重写equals方法,不重写hashcode方法。1.1、这
2022-02-24 01:25:28 886
原创 Java的==和equals()的区别-个人总结
文章目录一、写这个原因二、== 和 equals()意义2.1 == 运算符2.2 equals()方法三、== 运算符见解与例子3.1 个人见解3.2 例子3.2.1 基础数据类型3.2.2 引用类型3.2.3 基础类型和引用类型3.3 结果分析四、equals()方法总结与例子4.1 总结4.2 常见重写equals方法的java类4.2.1 String4.2.2 基本类型的各个包装类4.2.2.1 Integer4.2.2.2 Character4.2.2.3 Boolean4.2.2.4 Shor
2022-02-16 02:04:13 2695 1
原创 Java的并行流parallelStream之结果被收集后排序分析
一、先说结论parallelStream在中间处理时都是并行的(这里不展开说明并行的实现),所以parallelStream中间处理的结果都是乱序的,但是在使用了Collect收集器后,parallelStream被收集的结果默认都是按照集合的原序列进行排序的。二、实例测试2.1、先上代码/** * collect 收集时可以排序成原数组数据 */ @Test public void myParallelTest() { List<Inte
2021-11-13 17:17:49 3175 6
原创 Spring的自带的消息监听机制
文章目录一 @EventListener 注解1.1 简介1.2 应用实例1.2.1 事件对象1.2.2 监听器1.2.3 事件发布者1.2.4 测试1.2.5 结果1.3 结论二 @TransactionalEventListener 注解1 简介2 应用实例2.1 监听器2.2 测试2.3 结果2.3 结论一 @EventListener 注解1.1 简介@EventListener 是 Spring提供的消息监听注解。通过建立事件对象,当事件发布者发布了消息,监听对应事件对象的监听
2021-06-20 18:36:16 914
原创 简单手写Spring--启动、扫描、容器管理bean
文章目录1、思路2、实现2.1、@ComponentScan 注解2.2、@Component注解2.3、@Scope注解2.4、BeanDefinition2.5、SanApplicationContext2.6、SpringConfig3、测试3.1、在SpringConfig配置的被扫描的包路径下建立需要被Spring管理的类3.2、Test3.3、结果分析4、总结1、思路1.1、Spring通过读取配置文件或者配置类获取需要Spring管理的Bean信息。1.2、通过配置类获取需要被扫描的配
2021-04-18 19:05:49 639 3
原创 Spring 控制接口多个实现类Bean问题。
一、接口、实现类关系接口:MoreImplService抽象类:AbstractMoreImplTestService实现类:MoreImplTest1ServiceImpl、MoreImplTest2ServiceImpl二、直接使用实现类接收Bean实现类 MoreImplTest1ServiceImpl//@Component("moreImplTest1Service")@Componentpublic class MoreImplTest1ServiceImpl ext
2021-01-21 16:58:07 2235 1
原创 设计模式--单例模式--8种实现--java示例代码
文章目录一、啥是单例模式?二、为什么要有单例模式。我偏不用,不服?三、别磨磨蹭蹭的,阿姨!!上代码实操如何?1、饿汉式-1 -- 静态常量2、饿汉式-2 -- 静态代码块3、懒汉式-1 -- 线程不安全4、懒汉式-2 --同步方法,线程安全5、懒汉式-3 -- 同步代码块,线程不安全6、懒汉式-4 --双重检查,线程安全7、懒汉式-5 -- 静态内部类,线程安全8、枚举四、测试五、来个小总结一、啥是单例模式?单例模式多种设计模式中的一种,单例模式就是在一个系统中采取一种代码控制的手法,保证了某一个类在
2020-11-21 16:59:39 1249 7
原创 事务回滚失效例子--扁平事务或扁平带保存点事务中只能有一次”rollback;“,第二次及之后的回滚失效!!
一、扁平事务回滚现象分析开启事务(以下定位事务a)。事务a执行 select * from user where id = 1;事务a执行update user set name = 5 where id = 1;事务a执行 select * from user where id = 1;,这时name字段已被修改。事务a执行rollback回滚。事务a执行 select * from user where id = 1;,这时查到的记录是事务回滚成功的记录。事务a再次执行update
2020-11-14 17:41:51 535
原创 mysql 事务可重复读(RR)隔离级别验证
一、可重复读(RR)隔离这是MySQL的默认事务隔离级别,它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行。二、用两个并行的事务进行比较验证。以下我对左右窗口事务分别用a、b事务表示:左边开启事务a。右边开启事务b。a事务执行select * from user where id = 1;b事务执行select * from user where id = 1;第3、4步中可见a和b事务查到的结果是一样的。a事务执行update user set name = ‘4’
2020-11-14 12:17:43 2392
原创 浅拷贝和深拷贝的理解--java代码示例
浅拷贝和深拷贝概念引出浅拷贝和深拷贝都是针对对象复制来说的,之所以有浅拷贝和深拷贝是由于原型设计模式(多例模式)这个概念上是对一个实例化对象时,若是需要属性一样的多个对象时,就需要对一个对象进行属性复制,也就是对象拷贝(举个栗子,比如克隆????,????是怎么看都是一样的,但是却是两只????)。对象的拷贝分浅拷贝和深拷贝,但是啥是浅或深拷贝呢,不急,下面我一一解释。对象拷贝的方法有很多,其中全部自己手写可以,使用Object.clone()也可,但是若是不再加以自己的控制,我们只能进行普通的浅拷贝。
2020-11-11 23:35:13 858 3
原创 Spring Bean的生命周期,Spring Boot的启动过程
Spring Bean的生命周期1、对bean进行实例化2、对bean注入属性3、注入Aware接口4、前置处理,若还想在对象被使用之前再进行一些自定义的处理,可以通过BeanPostProcessor接口实现。5、前置处理之后,我们还可以通过实现initializingBean接口进行设置自己的代码逻辑让bean正式被构造之前可以先执行我们的逻辑,比如可以输出日志等。6、之后仍然可以使用BeanPostProcessor接口来实现后置处理。7、这是bean就可以被使用了8、当bean要销毁
2020-10-24 18:35:44 349 1
原创 2020-09-27 总共四面
8:30、道通科技hr面,没啥特点,浪费了时间9:00、招商银行因为第一个面试时间耽搁了14:00、恒生电子1、自我介绍2、说说分布式3、分布式系统搭建需要注意什么4、Spring Bean的生命周期5、Spring事务控制接口(我直接回答了其内部的实现)6、说说redis和mysql交互需要注意的问题7、redis里面的数据结构8、说说mysql的优化9、想去做底层技术还是想做业务加技术10、自己的缺点11、与同班同学相比,你有什么优势12、反问17:15、华数1、自我
2020-09-28 00:09:58 251
原创 2020 09-22 (步步高 一面)
2020 09-22 面试官莫得感情1、自我介绍2、面试官自己介绍一下岗位,问我为什么选择java开发3、int类型和Integer类型有什么区别4、引用数据类型基本数据类型有什么区别5、==和equle有什么区别6、并发中会有死锁存在,你能讲讲死锁和我们该怎么防止死锁7、说说SpringBoot怎么样自动化配置的8、我们怎么保证线程安全9、main线程执行结束,其他线程会也结束吗10、怎么样使其他线程结束后main线程才结束11、Mybatis怎么不写where条件,过滤掉被逻辑删除
2020-09-22 16:27:00 283 2
原创 2020-09-17 大华(电话短面)
发挥的不好,还需锻炼自己的表达逻辑1、说说你最近的参与的项目(没自我介绍)我说的比较乱,这里逻辑表达不太行2、说说tcp和udp吧3、本来想问java,又不问了4、数据库innodb存储引擎,若是主键不采用自增的方式,则会发生回表吗?我当时解释是,回表操作是索引是否达到索引覆盖有关。跟主键无关,主键不自增只会降低查询效率。5、今天面试就到这吧!!!估计没了...
2020-09-19 15:51:00 263
原创 RC4源码,java实现!!!
RC4源码/** * @author: linjianshan * @date: 2020/9/11 * @description: RC4andRijndael * @version: 1.0 */public class RC4 { public static void main(String[] args) { String inputStr = "be a good man"; String key = "lbwnb"; St
2020-09-15 16:34:20 220
原创 SHA算法,懂的都懂!!!
java实现源码package SHA;import java.nio.ByteBuffer;import java.util.Arrays;/** * @author: linjianshan * @date: 2020/9/15 * @description: SHA * @version: 1.0 * Offers a {@code hash(byte[])} method for hashing messages with SHA-256. */public class Sh
2020-09-15 10:42:39 143
原创 java中重载时,若参数列表中重载的,一个方法参数是另一个的方法参数的父类,这是传入不同参数会发生什么?
结论探讨我们以实例来看,以下的测试代码,分别会输出什么呢?代码测试代码public class Test0901 { public static void main(String[] args) { Object obj = new Object(); new Test0901().check(null); //输出c1 new Test0901().check(obj); //输出c2 } public void
2020-09-01 12:57:19 379
原创 并发编程笔记五:线程池实现类ThreadPoolExecutor、ScheduledThreadPoolExecutor、ForkJoin
文章目录JDK线程池接口ThreadPoolExecutor线程池状态构造方法工作方式拒绝策略工厂方法任务提交关闭线程池Fork/JoinJDK线程池接口可以看到两个线程池的具体实现类ThreadPoolExecutor和ScheduledThreadPoolExecutor。ScheduledThreadPoolExecutor比ThreadPoolExecutor多继承了ScheduledExecutorService接口,ScheduledThreadPoolExecutor是具有有定时功能的
2020-08-25 16:48:59 1058
原创 并发编程笔记四:Monitor原理、synchronized原理、synchronized 原理进阶
文章目录Monitor原理synchronized原理synchronized 原理进阶synchronized锁对象升级批量重偏向批量撤销锁消除Monitor原理Monitor 被翻译为监视器或管程每个java对象都可以关联一个Monitor对象,如果使用synchronized给对像上锁(到重量锁级别)之后,该对象的MarkWork中的值被设置指向Monitor对象的指针。Monitor结构刚开始 Monitor 中 Owner 为 null当 Thread-2 执行 synchroni
2020-08-24 16:49:03 368
原创 并发编程笔记三:内存屏障、volatile的原理、final的原理
内存屏障 Memory Barrier(Memory Fence)可见性写屏障(sfence)保证在该屏障之前的,对共享变量的改动,都同步到主存当中读屏障(lfence)保证在该屏障之后,对共享变量的读取,加载的是主存中最新数据有序性写屏障会确保指令重排序时,不会将写屏障之前的代码排在写屏障之后读屏障会确保指令重排序时,不会将读屏障之后的代码排在读屏障之前volatile的原理volatile的原理: volatile 的底层实现原理是内存屏障,Memory Barrier(Memo
2020-08-24 14:34:16 642
原创 并发编程笔记二:wait/notify原理、join原理、park/unpark原理
文章目录wait/notify原理join原理park/unpark原理wait/notify原理wait/notify是本地方法,不是jdk实现的,所以看不到它的源码。wait/notify是基于synchronized的,所以先介绍synchronized,synchronized修饰到对象之后,锁对象会关联一个Moniror对象:WaitSet是等待队列,当前线程获取到锁对象后调用wait方法后会进入该WaitSet等待队列。EntryList是阻塞队列,当前线程获取不到该锁对象会进入该
2020-08-24 11:54:47 589
原创 并发编程笔记一:线程的状态划分及其状态之间的转化
文章目录线程状态划分:以os角度划分为五种以java线程描述关键字来说划分为六种6种线程状态转换分析线程状态划分:以os角度划分为五种如下图初始状态:仅是在语言层面创建了线程对象,还未与操作系统线程关联。可运行状态:(就绪状态)指该线程已经被创建(与操作系统线程关联),可以由 CPU 调度执行。运行状态:指获取了 CPU 时间片运行中的状态,当 CPU 时间片用完,会从【运行状态】转换至【可运行状态】,会导致线程的上下文切换。阻塞状态:如果调用了阻塞 API,如 BIO 读写文件,这
2020-08-24 10:18:59 269
原创 快排的递归实现和非递归实现、归并排序、堆排序(java)
文章目录递归版本非递归版本快排是我们必须要掌握的排序算法之一,面试也是常问的考点。快排的思想时采用双指针和选取key不断地去交替值,达到????为小于key的值;????为大于key的值。这样说很抽象,直接上代码了。递归版本本方法写的还有点小优化,比传统快排的值的替换的次数少。import java.util.Arrays;/** * @author: linjianshan * @date: 2020/8/15 * @description: top.san.java.algor
2020-08-19 10:46:17 288
原创 反射就这么简单
什么是反射?反射就是通过动态的方式获取一个对象的类信息,前提是该类已经在jvm加载过了,反射也是面对对象的多态特性的基本原理。反射有什么用?可以通过获取到该类信息来实例化一个该类对象,实现了类之间的解耦,从而可以引出动态代理。怎么样实现反射?有多种是实现可以获取类,下面是例子是通过Class.forname()。Test.java** * *被实例化对象的类 */public class Test { public Test() { System.out.pri
2020-08-03 10:27:39 105
原创 Required String parameter ‘xxx‘ is not present 错误解决
原因关键点在@RequestParam注解比如:String test(@RequestParam("account") String acot){ testService.testA(acot); return "lbwnb" }这个@RequestParam(“account”)代表需要获取到前端传来的参数里面必须需要有"account" ,且不能为空的。解决方案以上面的代码例子修改,在@RequestParam加入require=“flase”,
2020-07-17 16:03:42 44825 8
原创 Swagger---接口文档维护---简单使用教程
使用Swagger,就是把相关的信息存储在它定义的描述文件里面(yml或json格式),再通过维护这个描述文件可以去更新接口文档,以及生成各端代码。而Springfox-swagger,则可以通过扫描代码去生成这个描述文件,连描述文件都不需要再去维护了。所有的信息,都在代码里面了。代码即接口文档,接口文档即代码。原文链接:https://www.jianshu.com/p/349e130e40d5...
2020-06-30 17:55:12 938
原创 class文件打包成jar,并且执行jar
1、单一class->jarjar -cf 自定义的jar包名.jar 需打包的class名字.classjar -cf xx.jar xx.class示例:jar -cf Server.jar Server.class将当前路径下的Server.class打包成Server.jar2、打包某一路径下的所有classjar cvf 自定义的jar包名.jar 需打包的某一路径jar cvf xx.jar [path]示例:jar cvf C:\test.jar C:\java即是
2020-06-30 16:40:08 1387
原创 sql对已有表结构修改小总结
1、 以下是对主键描述的删除和添加操作其中 “mc_action”是我的表名 “ID” 为我主键的列名注意点 :1.1、要想删除某一列的主键描述,若当前主键列有自增长属性,需要将该列的自增长属性去掉,可以使用modify 字段对列的属性重新定义来实现。1.2、使用modify或是change对列的属性改变时,要加一个必要的条件,那就是 字段类型 ,你想啊,若是一个没有字段类型,那你这个列可以存什么呢?所以这时必要条件。alter table mc_action MODIFY ID int(10);
2020-06-24 13:44:47 409
原创 redis设置登录密码,提高安全性--生产环境必备良药--老哥不会还不知道吧,不会不会吧!!!
文章目录1、修改redis.conf2、重启reids3、客户端重新连接redis3.1、不输入密码登录3.2、输入密码登录4、修改密码4.1、修改redis.conf4.2、redis客户端命令修改4.3、验证1、修改redis.conf将 #requirepass foobared 中的 # 去掉,表示登录时redis客户端需要密码验证,密码就是 foobared。2、重启reids这我就是不说了,方法很多,直接使用redis开关或是重启的命令,或者杀死进程。还说说一种最有效的吧,不然被??
2020-06-18 10:35:00 1328 2
原创 spring cloud——Feign为GET请求时的多个对象参数传递--问题解决
在?解bug,挺急的。1. 添加依赖不使用maven的大佬,自己去找下其他的吧。依赖查找 <!-- https://mvnrepository.com/artifact/io.github.openfeign/feign-httpclient --> <dependency> <groupId>io.github.openfeign</groupId> <artifactId>
2020-06-15 12:57:15 4229 10
原创 socket(套接字)编程--java实战------不得不会的socket编程套路(附有聊天室实现思路)
1、socket是啥套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合。–这波百度百科怎么说来点直观的吧,不然不会大伙还是不会!!win+r ->输入:cmd ->在命令台输入:netstat -ano 就可以看到你当前电脑的所有套接字了哦,也就是socket == ip号+端口号!!!2、为什么会socket这个
2020-06-06 20:14:53 440
原创 RabbitMq七种工作模式,结合简单的java实例使用,答应我不要再说你不会RabbitMq了,好吗,宝贝?
文章目录一、Maven依赖添加二、七种工作模式的java实例1、简单模式1.1.1、EasyRecv.java1.1.2、EasySend.java1.2.1、RabbitmqConnectionUtil .java1.2.2、UtilSend.java1.2.3、UtilRecv.java2、工作队列2.1.1、Sender1.java2.1.2、Sender2.java2.1.3、Receiver1.java2.1.4、Receiver2.java2.1.5、结果3、发布/订阅(fanout)3.1.1
2020-06-05 17:15:21 816
原创 双非学子第一次java实习面试--弱小、无助
我会将整个流程都写出来,可能我这个经历是更符合大多数人,个人经过三个月的学习,第一次面试实习,公司叫我明天来上班。个人大概情况:双非本科,没获过什么大奖,考试成绩也非年级前10%这种,这或许就是普通的味道吧。###面试...
2020-06-04 16:15:52 484
卡尔java.xmind
2020-08-25
java中引导类加载器能加载我自己写的类吗
2022-05-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人