202301-31 Kotlin 和 Java 混合开发入门教程 目录一、前沿二、学习Kotlin前准备三、Kotlin语法简介优秀的表达式加强版switch模板字符串空指针异常不存在了编写单例类扩展方法运算符重载四、Kotlin与Java混合开发五、Kotlin与Java总结一、前沿如果你学习过其他的编程语言,你就会发现Java的语法很是哆嗦,可是我们为什么没有放弃Java这门编程语言呢?因为JVM是一个非常好的平台,而且Java程序员目前在中国所占的比重实在是太高了。这是历史包袱导致的。暂且... 继续阅读 >
202301-31 Java中List.of()和Arrays.asList()的区别及原因分析 目录Java中List.of()和Arrays.asList()的区别及原因1.Arrays.asList()可以插入null2.用List.of的List自然是不包含null3.List.of生成的List不能修改4.关于数组修改对List的影响原因javalistof报错处理Java中List.of()和Arrays.asList()的区别及原因动手写一下,让自己更有印象1.Arrays.asList()可以插入null而List.of()不可以importjava.util.List;importjava.util.Arrays;classSolution{publicstaticvoidmain(String[]... 继续阅读 >
202301-31 java并发编程JUC CountDownLatch线程同步 目录java并发编程JUCCountDownLatch线程同步1、CountDownLatch是什么?2、CountDownLatch如何工作3、CountDownLatch代码例子java并发编程JUCCountDownLatch线程同步CountDownLatch是一种线程同步辅助工具,它允许一个或多个线程等待其他线程正在执行的一组操作完成。CountDownLatch的概念在java并发编程中非常常见,面试也会经常被问到,所以一定要好好理解掌握。CountDownLatch与其他并发编程工具类,如CyclicBarrier、Sem... 继续阅读 >
202301-13 Java基于websocket协议与netty实时视频弹幕交互实现 目录摘要1技术选型1.1netty1.2WebSocket1.3为什么做这样的技术选型。2实现思路2.1服务架构3实现效果3.1视频展示4代码实现4.1项目结构4.2Java服务端4.3网页客户端实现5小结摘要 2021年了,还有不支持弹幕的视频网站吗,现在各种弹幕玩法层出不穷,抽奖,ppt都上弹幕玩法了,不整个弹幕都说不过去了,今天笔者就抽空做了一个实时视频弹幕交互功能的实现,不得不说这样的形式... 继续阅读 >
202301-13 JAVA Spring Boot 自动配置实现原理详解 目录引言主启动类的注解@SpringBootApplication1、@SpringBootConfiguration2、@ComponentScan3、@EnableAutoConfiguration3.1、@AutoConfigurationPackage3.2、@Import({AutoConfigurationImportSelector.class})spring-boot-autoconfigure中的默认配置类配置数据的绑定总结引言在使用ssm框架的时候,每每想要用到依赖的功能,都需要导入相关jar包,并且写配置文件做相关的配置,当然也可以不写配置文件,用配置类来代替配置文件... 继续阅读 >
202301-13 Java OOM原因以及解决方案 1)什么是OOM? OOM,全称“OutOfMemory”,翻译成中文就是“内存用完了”,来源于java.lang.OutOfMemoryError。看下关于的官方说明: ThrownwhentheJavaVirtualMachinecannotallocateanobjectbecauseitisoutofmemory,andnomorememorycouldbemadeavailablebythegarbagecollector.意思就是说,当JVM因为没有足够的内存来为对象分配空间并且垃圾回收器也已经没有空间可回收时,就会抛出这个... 继续阅读 >
202301-13 Java Spring @Lazy延迟注入源码案例详解 前言有时候我们会在属性注入的时候添加@Lazy注解实现延迟注入,今天咱们通过阅读源码来分析下原因一、一个简单的小例子代码如下:@ServicepublicclassNormalService1{@Autowired@LazyprivateMyServicemyService;publicvoiddoSomething(){myService.getName();}}作用是为了进行延迟加载,在NormalService1进行属性注入的时候,如果MyService还没有生成bean也不用担心,会注入一个代理,但是在实际运行的时候,会获取... 继续阅读 >
202301-13 Java Spring之@Async原理案例详解 目录前言一、如何使用@Async二、源码解读总结前言用过Spring的人多多少少也都用过@Async注解,至于作用嘛,看注解名,大概能猜出来,就是在方法执行的时候进行异步执行。一、如何使用@Async使用@Async注解主要分两步:1.在配置类上添加@EnableAsync注解@ComponentScan(value="com.wang")@Configuration@EnableAsyncpublicclassAppConfig{}2.在想要异步执行的方法上面加上@Async@ServicepublicclassCycleService2{@Autowir... 继续阅读 >
202301-13 Java Spring循环依赖原理与bean的生命周期图文案例详解 前言Spring是如何处理循环依赖的,又是怎么做到,互相注入对方的proxybean而不是rawbean的?现在就分析一下一、循环依赖是什么Spring中放入两个Service,分别是C1和C2,然后C1和C2又互为对方的成员变量。这种情况C1和C2就可以说是相互循环依赖了二、源码图解1.bean的主要生命周期图解上图是一个没有循坏依赖的bean的主要生命周期节点,下图的循坏依赖可以结合该图解一起看2.循环依赖图解可以看到里面有一个很重要的逻辑:当一个... 继续阅读 >
202301-03 java 排序算法之冒泡排序 目录基本介绍图解冒泡排序算法的过程代码实现演变过程优化封装算法大量数据耗时测试基本介绍冒泡排序(BubbleSorting)(时间复杂度为O(n²))的基本思想:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就像水底下的旗袍一样逐渐向上冒。优化点:因为排序过程中,个元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有... 继续阅读 >
202301-03 java 一键部署 jar 包和 war 包 目录java一键部署jar包和war包一、创建打包命令gateway-package.bat二、创建启动文件gateway.xml三、一键打包并部署脚本gateway-deploy.bat文件内容四、双击打包部署bat文件gateway-deploy.bat五、执行vue打包并且上传部署六、安装7z压缩工具并配置系统环境变量七、创建上传部署文件webConfig.xml九、双击执行部署vue-deploy.batjava一键部署jar包和war包一、创建打包命令gateway-package.bat@echooffcd... 继续阅读 >
202301-03 java 排序算法之选择排序 目录基本介绍基本思想思路分析代码实现演变过程优化算法函数封装大量数据耗时测试基本介绍选择排序(selectsorting)也属于内部排序法,是从欲排序的数据中,按指定的规则选出来某个元素,再依规定交换位置后达到排序的目的。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。基... 继续阅读 >
202301-03 java 排序算法之快速排序 目录简单介绍基本思想思路分析代码实现推导实现完整实现大数据量耗时测试性能分析简单介绍快速排序(Quicksort)是对冒泡排序的一种改进。基本思想快速排序算法通过多次比较和交换来实现排序,其排序流程如下:(1)首先设定一个分界值(基准值),通过该分界值将数组分成左右两部分。(2)将大于或等于分界值的数据集中到数组右边,小于分界值的数据集中到数组的左边。此时,左边部分中各元素都小于或等于分界值,而右边部... 继续阅读 >
202301-03 java 排序算法之归并排序 目录简单介绍基本思想思路分析代码实现对代码的一些改进大数据量耗时测试复杂度简单介绍归并排序(mergesort)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略:分(divide):将问题分成一些小的问题,然后递归求解治(conquer):将分的阶段得到的各答案「修补」在一起即:分而治之该算法是采用分治法(DivideandConquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有... 继续阅读 >
202211-02 Java Condition类案例详解 一condition介绍及demoCondition是在java1.5中才出现的,它用来替代传统的Object的wait()、notify()实现线程间的协作,相比使用Object的wait()、notify(),使用Condition的await()、signal()这种方式实现线程间协作更加安全和高效。因此通常来说比较推荐使用Condition,阻塞队列实际上是使用了Condition来模拟线程间协作。Condition是个接口,基本的方法就是await()和signal()方法;Condition依赖于Lock接口,生成一个Conditi... 继续阅读 >
202211-02 Java之Error与Exception的区别案例详解 首先,Error类和Exception类都是继承Throwable类Error(错误)是系统中的错误,程序员是不能改变的和处理的,是在程序编译时出现的错误,只能通过修改程序才能修正。一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢等。对于这类错误的导致的应用程序中断,仅靠程序本身无法恢复和和预防,遇到这样的错误,建议让程序终止。Exception(异常)表示程序可以处理的异常,可以捕获且可能恢复。遇到这... 继续阅读 >