Java技术栈
文章平均质量分 73
飞鸟还巢
。
展开
-
记录一次SpringBoot项目启动问题
更换idea后,第一次启动这个工程,启动顺利完成。但是页面发起请求之后,出现了上述的日志,请求并不成功。检查filter的init,发现Servlet上下文配置器没有加载。原创 2023-02-21 10:50:44 · 223 阅读 · 0 评论 -
idea中需要勾选provided的情况
启动springboot项目的时候java.lang.NoClassDefFoundError: org/apache/flink/api/common/serialization/DeserializationSchema说明有些flink依赖没有编译则需要在启动的时候勾选Provided加入依赖原创 2020-07-03 16:00:23 · 2233 阅读 · 0 评论 -
JVM学习笔记 05 - 垃圾回收器
CMS 的全称是 Mostly Concurrent Mark and Sweep Garbage Collector(主要并发标记清除垃圾收集器),它在年轻代使用复制算法,而对老年代使用标记-清除算法。你可以看到,在老年代阶段,比起 Mark-Sweep,它多了一个并发字样。CMS 的设计目标,是避免在老年代 GC 时出现长时间的卡顿(但它并不是一个老年代回收器)。如果你不希望有长时间的停顿,同时你的 CPU 资源也比较丰富,使用 CMS 是比较合适的。原创 2023-03-31 14:57:43 · 210 阅读 · 0 评论 -
JVM学习笔记 05 - JMM简述
JVM 试图定义一种统一的内存模型,能将各种底层硬件,以及操作系统的内存访问差异进行封装,使 Java 程序在不同硬件及操作系统上都能达到相同的并发效果。原创 2023-03-24 16:04:02 · 485 阅读 · 0 评论 -
JVM学习笔记 04 - 内存管理和垃圾回收
=========================================================================================原创 2023-03-17 17:33:18 · 419 阅读 · 0 评论 -
JVM学习笔记 02 - JDK的类加载
案例一:tomcattomcat 通过 war 包进行应用的发布,它其实是违反了双亲委派机制原则的。简单看一下 tomcat 类加载器的层次结构。tomcat 是怎么打破双亲委派机制的呢?可以看图中的 WebAppClassLoader,它加载自己目录下的 .class 文件,并不会传递给父类的加载器。但是,它却可以使用 SharedClassLoader 所加载的类,实现了共享和分离的功能。但是你自己写一个 ArrayList,放在应用目录里,tomcat 依然不会加载。原创 2023-03-16 16:53:30 · 494 阅读 · 0 评论 -
JVM学习笔记 01 - JVM是啥?JDK是啥?JRE是啥
一般情况下,使用 C++ 开发的程序,编译成二进制文件后,就可以直接执行了,操作系统能够识别它;但是 Java 程序不一样,使用 javac 编译成 .class 文件之后,还需要使用 Java 命令去主动执行它,因为操作系统并不认识这些 .class 文件。也就是我们耳熟能详的 Java 虚拟机。它能识别 .class后缀的文件,并且能够解析它的指令,最终调用操作系统上的函数,完成我们想要的操作。是 Java 开发的核心,让不了解机器代码和二进制文件的人,能够通过工具去编程,实现应用功能。原创 2023-03-16 16:40:38 · 417 阅读 · 0 评论 -
【转】java编译期和运行期
何为运行期?何为编译期?编译期是指编译器将源代码翻译为机器能识别的代码,java为编译为jvm认识的字节码文件。运行期则是指java代码的运行过程。编译期编译期举个例子,当我们作为开发人员,在电脑上拼死拼活写了一个版本的代码,然后将代码提交到git上去,当我们用jekins或其他工具将代码从git上clone下来,使用mvn package,或者mvn intall打包的过程就...原创 2019-03-12 14:16:48 · 413 阅读 · 0 评论 -
java编译期、运行期、字节码和机器码自整理
1.编译期:词法分析→语法分析→语义分析→代码生成。词法分析: 读入字符→组成词素→生成词法单元序列→分析序列。词法分析: 扫描程序→获取源代码(几号形式)→语法分析(定义程序结构元素及其关系)→绘制语法树。语义分析: 分析静态语义(声明和类型检查)→添加额外信息(“注释”或“装饰”到语法树,属性添加到符号表)。代码生成: ...原创 2019-03-12 17:13:19 · 692 阅读 · 0 评论 -
【转】ConcurrentHashMap分段锁原理
前言:在分析ConcurrentHashMap的源码的时候,了解到这个并发容器类的加锁机制是基于粒度更小的分段锁,分段锁也是提升多并发程序性能的重要手段之一。在并发程序中,串行操作是会降低可伸缩性,并且上下文切换也会减低性能。在锁上发生竞争时将通水导致这两种问题,使用独占锁时保护受限资源的时候,基本上是采用串行方式—-每次只能有一个线程能访问它。所以对于可伸缩性来说最大的威胁就是独占锁。我...转载 2019-04-02 10:49:17 · 2887 阅读 · 0 评论 -
【转】Spring Boot 乐观锁加锁失败 - 使用AOP恢复错误
之前写了一些辅助工作相关的Spring Boot怎么使用AOP。这里继续正题,怎么减少Spring Boot 乐观锁加锁报错的情况(基本可以解决)。1. 包依赖 spring-boot-starter-data-jpa, Spring Boot的JPA starter h2, H2内存数据库 spring-boot-starter-test,Spring Boo...原创 2019-03-04 00:13:45 · 537 阅读 · 0 评论 -
SpringMVC 简单运行流程归纳(RDMCMDVR)
1、客户端(类似甲方),发出request请求——》Dispatcher Servelet(类似项目经理);2、Dispatcher Servlet接受请求,——》委托MappingHandler(类似开发组长)处理请求;3、MappingHandler根据请求内容,——》寻找到对应的Controller去处理逻辑业务(后台开发出场了);4、Controller完成逻辑处理之后,将数据...原创 2018-07-16 11:27:25 · 271 阅读 · 0 评论