2023
03-16
03-16
JAVA jvm系列--java内存区域
目录一、JVM的组成结构如图:二、JVM运行流程三、java内存区域详解(运行时数据区域)(一)程序计数器(二)java虚拟机栈(三)本地方法栈(四)java堆(五)方法区运行时常量池(六)直接内存总结JVM:JavaVirtualMachine,Java虚拟机,包括处理器、堆栈、寄存器等,是用来执行java字节码(二进制的形式)的虚拟计算机。一、JVM的组成JVM由以下四部分组成(两个子系统和两个组件): 类加载器(ClassLoader)执行引擎(Ex...
继续阅读 >
目录非静态代码块:没有static修饰的代码块静态代码块:用static修饰的代码块用处总结非静态代码块:没有static修饰的代码块可以有输出语句可以对类的属性声明进行初始化操作可以调用静态或者非静态的变量或方法若有多个非静态的代码块,那么按照从上到下的顺序依次执行再次创建对象的时候都会执行,且先于构造函数执行代码:publicclassPer{{System.out.println("非静态代码块1");}{...
目录1、线程是不是越多越好?2、如何正确使用多线程?3、Java线程池的工作原理4、掌握JUC线程池API总结1、线程是不是越多越好?在学习多线程之前,读者可能会有疑问?如果单线程跑得太慢,那么是否就能多创建多个线程来跑任务?并发的情况,线程是不是创建越多越好?这是一个很经典的问题,画图表示一下创建很多线程的情况,然后进行情况分析。创建线程和销毁线程都是需要时间的,如果创建时间+销毁时间>执行任务时间就很不划...
目录池化技术池化思想介绍池化技术的应用如何设计一个线程池Java线程池解析ThreadPoolExecutor使用介绍内置线程池使用ThreadPoolExecutor解析整体设计线程池生命周期任务管理解析woker对象Java线程池实践建议不建议使用Exectuors线程池大小设置线程池监控带着问题阅读1、什么是池化,池化能带来什么好处2、如何设计一个资源池3、Java的线程池如何使用,Java提供了哪些内置线程池4、线程池使用有哪些注意事项池化技术池化思想介绍池...
在优雅的使用枚举参数(原理篇)中我们聊过,Spring对于不同的参数形式,会采用不同的处理类处理参数,这种形式,有些类似于策略模式。将针对不同参数形式的处理逻辑,拆分到不同处理类中,减少耦合和各种if-else逻辑。本文就来扒一扒,RequestBody参数中使用枚举参数的原理。找入口对Spring有一定基础的同学一定知道,请求入口是DispatcherServlet,所有的请求最终都会落到doDispatch方法中的ha.handle(processedRequest,respo...
目录一、前沿二、学习Kotlin前准备三、Kotlin语法简介优秀的表达式加强版switch模板字符串空指针异常不存在了编写单例类扩展方法运算符重载四、Kotlin与Java混合开发五、Kotlin与Java总结一、前沿如果你学习过其他的编程语言,你就会发现Java的语法很是哆嗦,可是我们为什么没有放弃Java这门编程语言呢?因为JVM是一个非常好的平台,而且Java程序员目前在中国所占的比重实在是太高了。这是历史包袱导致的。暂且...
目录摘要1技术选型1.1netty1.2WebSocket1.3为什么做这样的技术选型。2实现思路2.1服务架构3实现效果3.1视频展示4代码实现4.1项目结构4.2Java服务端4.3网页客户端实现5小结摘要 2021年了,还有不支持弹幕的视频网站吗,现在各种弹幕玩法层出不穷,抽奖,ppt都上弹幕玩法了,不整个弹幕都说不过去了,今天笔者就抽空做了一个实时视频弹幕交互功能的实现,不得不说这样的形式...
目录引言主启动类的注解@SpringBootApplication1、@SpringBootConfiguration2、@ComponentScan3、@EnableAutoConfiguration3.1、@AutoConfigurationPackage3.2、@Import({AutoConfigurationImportSelector.class})spring-boot-autoconfigure中的默认配置类配置数据的绑定总结引言在使用ssm框架的时候,每每想要用到依赖的功能,都需要导入相关jar包,并且写配置文件做相关的配置,当然也可以不写配置文件,用配置类来代替配置文件...
前言有时候我们会在属性注入的时候添加@Lazy注解实现延迟注入,今天咱们通过阅读源码来分析下原因一、一个简单的小例子代码如下:@ServicepublicclassNormalService1{@Autowired@LazyprivateMyServicemyService;publicvoiddoSomething(){myService.getName();}}作用是为了进行延迟加载,在NormalService1进行属性注入的时候,如果MyService还没有生成bean也不用担心,会注入一个代理,但是在实际运行的时候,会获取...