java学习
文章平均质量分 70
小小卡尔
选择很重要
展开
-
JVM运行的垃圾回收器查看姿势
一、默认垃圾回收器输入下面这行命令,可以看到当前jvm默认的垃圾回收器java -XX:+PrintCommandLineFlags -version二、运算的垃圾书回收器2.1 看启动参数下面的命令可以看进程的参数ps -ef | grep java通过看java进程参数,可以看到启动时是否有指定的垃圾回收器......原创 2022-03-30 15:37:42 · 1789 阅读 · 0 评论 -
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 · 2702 阅读 · 1 评论 -
Java编程为什么需要接口-应用层面个人解读
我就为问你接口是啥吧!!这接口是金子做的还是实现类是金子做的!!爱问不问吧!!!......原创 2021-12-07 01:57:15 · 837 阅读 · 0 评论 -
Java的并行流parallelStream之结果被收集后排序分析
一、先说结论parallelStream在中间处理时都是并行的(这里不展开说明并行的实现),所以parallelStream中间处理的结果都是乱序的,但是在使用了Collect收集器后,parallelStream被收集的结果默认都是按照集合的原序列进行排序的。二、实例测试2.1、先上代码/** * collect 收集时可以排序成原数组数据 */ @Test public void myParallelTest() { List<Inte原创 2021-11-13 17:17:49 · 3200 阅读 · 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 · 923 阅读 · 0 评论 -
简单手写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 · 643 阅读 · 3 评论 -
设计模式--单例模式--8种实现--java示例代码
文章目录一、啥是单例模式?二、为什么要有单例模式。我偏不用,不服?三、别磨磨蹭蹭的,阿姨!!上代码实操如何?1、饿汉式-1 -- 静态常量2、饿汉式-2 -- 静态代码块3、懒汉式-1 -- 线程不安全4、懒汉式-2 --同步方法,线程安全5、懒汉式-3 -- 同步代码块,线程不安全6、懒汉式-4 --双重检查,线程安全7、懒汉式-5 -- 静态内部类,线程安全8、枚举四、测试五、来个小总结一、啥是单例模式?单例模式多种设计模式中的一种,单例模式就是在一个系统中采取一种代码控制的手法,保证了某一个类在原创 2020-11-21 16:59:39 · 1255 阅读 · 7 评论 -
浅拷贝和深拷贝的理解--java代码示例
浅拷贝和深拷贝概念引出浅拷贝和深拷贝都是针对对象复制来说的,之所以有浅拷贝和深拷贝是由于原型设计模式(多例模式)这个概念上是对一个实例化对象时,若是需要属性一样的多个对象时,就需要对一个对象进行属性复制,也就是对象拷贝(举个栗子,比如克隆????,????是怎么看都是一样的,但是却是两只????)。对象的拷贝分浅拷贝和深拷贝,但是啥是浅或深拷贝呢,不急,下面我一一解释。对象拷贝的方法有很多,其中全部自己手写可以,使用Object.clone()也可,但是若是不再加以自己的控制,我们只能进行普通的浅拷贝。原创 2020-11-11 23:35:13 · 868 阅读 · 3 评论 -
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 · 380 阅读 · 0 评论 -
并发编程笔记五:线程池实现类ThreadPoolExecutor、ScheduledThreadPoolExecutor、ForkJoin
文章目录JDK线程池接口ThreadPoolExecutor线程池状态构造方法工作方式拒绝策略工厂方法任务提交关闭线程池Fork/JoinJDK线程池接口可以看到两个线程池的具体实现类ThreadPoolExecutor和ScheduledThreadPoolExecutor。ScheduledThreadPoolExecutor比ThreadPoolExecutor多继承了ScheduledExecutorService接口,ScheduledThreadPoolExecutor是具有有定时功能的原创 2020-08-25 16:48:59 · 1060 阅读 · 0 评论 -
并发编程笔记四: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 · 371 阅读 · 0 评论 -
并发编程笔记三:内存屏障、volatile的原理、final的原理
内存屏障 Memory Barrier(Memory Fence)可见性写屏障(sfence)保证在该屏障之前的,对共享变量的改动,都同步到主存当中读屏障(lfence)保证在该屏障之后,对共享变量的读取,加载的是主存中最新数据有序性写屏障会确保指令重排序时,不会将写屏障之前的代码排在写屏障之后读屏障会确保指令重排序时,不会将读屏障之后的代码排在读屏障之前volatile的原理volatile的原理: volatile 的底层实现原理是内存屏障,Memory Barrier(Memo原创 2020-08-24 14:34:16 · 649 阅读 · 0 评论 -
并发编程笔记二: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 阅读 · 0 评论 -
并发编程笔记一:线程的状态划分及其状态之间的转化
文章目录线程状态划分:以os角度划分为五种以java线程描述关键字来说划分为六种6种线程状态转换分析线程状态划分:以os角度划分为五种如下图初始状态:仅是在语言层面创建了线程对象,还未与操作系统线程关联。可运行状态:(就绪状态)指该线程已经被创建(与操作系统线程关联),可以由 CPU 调度执行。运行状态:指获取了 CPU 时间片运行中的状态,当 CPU 时间片用完,会从【运行状态】转换至【可运行状态】,会导致线程的上下文切换。阻塞状态:如果调用了阻塞 API,如 BIO 读写文件,这原创 2020-08-24 10:18:59 · 272 阅读 · 0 评论 -
反射就这么简单
什么是反射?反射就是通过动态的方式获取一个对象的类信息,前提是该类已经在jvm加载过了,反射也是面对对象的多态特性的基本原理。反射有什么用?可以通过获取到该类信息来实例化一个该类对象,实现了类之间的解耦,从而可以引出动态代理。怎么样实现反射?有多种是实现可以获取类,下面是例子是通过Class.forname()。Test.java** * *被实例化对象的类 */public class Test { public Test() { System.out.pri原创 2020-08-03 10:27:39 · 108 阅读 · 0 评论 -
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 · 44835 阅读 · 8 评论 -
NotClassDefFoundError的错误--涉及内部类的java程序在控台运行就会报的错误
545454544原创 2020-06-30 17:27:58 · 718 阅读 · 0 评论 -
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 · 1414 阅读 · 0 评论 -
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 · 4242 阅读 · 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 · 444 阅读 · 0 评论 -
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 · 817 阅读 · 0 评论 -
事务对数据库的性能有什么影响?有无索引查找对数据库性能影响多大?不跟你多bb,反手就是一波实例连招---MySql insert 2000万条数据性能测试和select有无索引查找测试
通过对mysql插入的测试可以得出的结论:增加一次事务的提交中执行多条sql可以提高速度。实测:插入300万条数据,采用一次事务提交一条sql语句,耗时2小时以上,具体没统计,提前终止了。插入1000万条数据,采用一次事务提交10万条sql语句,耗时20多分钟,将近半小时。TestDemo测试代码import mapper.TestMapper;import org.apach...原创 2020-05-15 12:28:24 · 2580 阅读 · 2 评论 -
java动态代理机制实例流程对照,翻译翻译什么是动态代理?翻译翻译!!原来这就是动态代理!!
1、什么是动态代理?动态代理就是根据对象在内存中加载的Class类创建运行时类对象,从而调用代理类方法和属性。换句话说就是程序运行时通过反射得到一个对象类,再通过代理方法得到一个反射得到的类的被代理对象,该被代理对象可以调用被代理类方法和属性。2、为什么需要有动态代理?减少代码冗余。避免冗余代码的混乱和分散。3、什么情况下需要动态代理?日志服务,日常程序的维护肯定少不了打日志,程序的每一个结点中的程序运行的每一刻发生的变化都需要日志的输出。对于每个结点打日志这项服务,可以统一通过配置原创 2020-05-14 00:45:16 · 618 阅读 · 0 评论 -
spring boot 若是在测试类中使用ioc注入bean时,需在测试类中使用@RunWith(SpringRunner.class)
原因:若是不使用@RunWith(SpringRunner.class),则会出现注入的bean为空。如下图中的activeMQUtil变量指向会为空,也就是注入失败(前提保证ActiveMQUtil已经在ioc容器中实例化)。扩展:@RunWith就是一个运行容器@RunWith(JUnit4.class)就是指用JUnit4来运行@RunWith(SpringRunner.class)意思就是指定SpringRunner来运行。我对@RunWith(SpringRunner.class)通原创 2020-05-08 17:38:36 · 859 阅读 · 0 评论 -
oauth2协议的社交登录开发--项目中引入第三方平台的账号登录,以新浪微博账号为例
文章目录1、新浪微博第三方登录应用接口申请:1.1、https://open.weibo.com1.2、https://open.weibo.com/connect1.3、填写资料1.4、填好之后邮箱认证1.5、给自己应用起名1.6、创建应用完成后,进https://open.weibo.com/apps看自己的应用。1.7、获得自己的授权id和授权密钥1.8、 修改回调地址2、具体实现过程有如下...原创 2020-04-30 21:40:44 · 1319 阅读 · 0 评论 -
Java动态增加字符串时,String明明可以通过‘+’来增加字符串,为什么还是需要是同StringBuffer呢?
原因:再使用 + 增加字符串时,实质上就是调用了StringBuffer的add()方法,那也就是说明了,每调用一次 + 都需要实例化一个StringBuffer对象。那你不禁就想,实例化新对象就实例化了,关我开发方便什么事啊。一次两次实例化新对象没什么事,但是多次之后,会造成内存资源的极大浪费,虽说java有自己的gc,但是这都是不确定性的,实例化的对象你不知道它会占用内存多久才被gc。故...原创 2020-04-09 18:25:55 · 473 阅读 · 0 评论 -
Springmvc创建跨服务器的文件上传
文章目录一、应用服务器功能1. web.xml2. springmvc.xml3. html4. Controller层二、文件服务器一、应用服务器功能应用服务器提供与用户交互,响应客户的请求。下列代码提供三种文件上传形式,第一种controller的代码块是使用不了的,因为spingmvc自身的文件解析器,将解析后的文件传给controller,第一种controller代码块又来解析一遍...原创 2020-04-03 09:09:32 · 226 阅读 · 0 评论