202303-16 JAVA jvm系列--java内存区域 目录一、JVM的组成结构如图:二、JVM运行流程三、java内存区域详解(运行时数据区域)(一)程序计数器(二)java虚拟机栈(三)本地方法栈(四)java堆(五)方法区运行时常量池(六)直接内存总结JVM:JavaVirtualMachine,Java虚拟机,包括处理器、堆栈、寄存器等,是用来执行java字节码(二进制的形式)的虚拟计算机。一、JVM的组成JVM由以下四部分组成(两个子系统和两个组件): 类加载器(ClassLoader)执行引擎(Ex... 继续阅读 >
202303-16 JAVA代码块你了解吗 目录非静态代码块:没有static修饰的代码块静态代码块:用static修饰的代码块用处总结非静态代码块:没有static修饰的代码块可以有输出语句可以对类的属性声明进行初始化操作可以调用静态或者非静态的变量或方法若有多个非静态的代码块,那么按照从上到下的顺序依次执行再次创建对象的时候都会执行,且先于构造函数执行代码:publicclassPer{{System.out.println("非静态代码块1");}{... 继续阅读 >
202303-16 一篇文章带你了解如何正确使用java线程池 目录1、线程是不是越多越好?2、如何正确使用多线程?3、Java线程池的工作原理4、掌握JUC线程池API总结1、线程是不是越多越好?在学习多线程之前,读者可能会有疑问?如果单线程跑得太慢,那么是否就能多创建多个线程来跑任务?并发的情况,线程是不是创建越多越好?这是一个很经典的问题,画图表示一下创建很多线程的情况,然后进行情况分析。创建线程和销毁线程都是需要时间的,如果创建时间+销毁时间>执行任务时间就很不划... 继续阅读 >
202303-16 java Long类型转为String类型的两种方式及区别说明 目录javaLong类型转为String类型1、Long.ValueOf("String")返回Long包装类型数据2、Long.parseLong("String")返回long基本数据类型Java中Long、String、Date类型之间的转换1、Java.util.Date类型转换成long类型2、long类型转换成java.util.Date类型3、形如“2015-08-3121:08:06”等格式化string类型转换成java.util.Date类型javaLong类型转为String类型1、Long.ValueOf("String")返回Long包装类型数据包装类型:Byte,Integer,S... 继续阅读 >
202303-16 超详细讲解Java线程池 目录池化技术池化思想介绍池化技术的应用如何设计一个线程池Java线程池解析ThreadPoolExecutor使用介绍内置线程池使用ThreadPoolExecutor解析整体设计线程池生命周期任务管理解析woker对象Java线程池实践建议不建议使用Exectuors线程池大小设置线程池监控带着问题阅读1、什么是池化,池化能带来什么好处2、如何设计一个资源池3、Java的线程池如何使用,Java提供了哪些内置线程池4、线程池使用有哪些注意事项池化技术池化思想介绍池... 继续阅读 >
202303-16 Java SpringBoot在RequestBody中高效的使用枚举参数原理案例详解 在优雅的使用枚举参数(原理篇)中我们聊过,Spring对于不同的参数形式,会采用不同的处理类处理参数,这种形式,有些类似于策略模式。将针对不同参数形式的处理逻辑,拆分到不同处理类中,减少耦合和各种if-else逻辑。本文就来扒一扒,RequestBody参数中使用枚举参数的原理。找入口对Spring有一定基础的同学一定知道,请求入口是DispatcherServlet,所有的请求最终都会落到doDispatch方法中的ha.handle(processedRequest,respo... 继续阅读 >
202303-16 Java @Pointcut注解表达式案例详解 1表达式类型标准的AspectjAop的pointcut的表达式类型是很丰富的,但是SpringAop只支持其中的9种,外加SpringAop自己扩充的一种一共是10种类型的表达式,分别如下。execution:一般用于指定方法的执行,用的最多。within:指定某些类型的全部方法执行,也可用来指定一个包。this:SpringAop是基于代理的,生成的bean也是一个代理对象,this就是这个代理对象,当这个对象可以转换为指定的类型时,对应的切入点就是... 继续阅读 >
202303-16 Java Spring AOP之PointCut案例详解 目录一、PointCut接口二、ClassFilter接口三、MethodMatcher接口总结一、PointCut接口/**Copyright2002-2012theoriginalauthororauthors.**LicensedundertheApacheLicense,Version2.0(the"License");*youmaynotusethisfileexceptincompliancewiththeLicense.*YoumayobtainacopyoftheLicenseat**https://www.apache.org/licenses/LICENSE-2.0**Unlessrequiredbyapplicable... 继续阅读 >
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... 继续阅读 >