- 博客(17)
- 收藏
- 关注
原创 Mybatis Generator 插件教学
Mybatis Generator PluginMybatis Generator,简称 MBG,Mybatis 三剑客之一,通过定义 generatorConfig.xml 来创建 POJO,Mapper 等类(逆向工程)但是原生生成的类不一定符合我们的需求,所以需要通过自定义插件来定制化生成的文件(通过继承 org.mybatis.generator.api.PluginAdapter)...
2020-03-08 20:34:03 395
原创 Mybatis 工作原理与拦截器机制
Mybatis PluginMybatis 插件,也被叫做 Mybatis 拦截器,使用 AOP 的原理对 Executor,StatementHandler 等接口进行切面编程快速定位Mybatis 的工作过程拦截器使用步骤示例Mybatis的工作过程SqlSessionFactoryBuilder 通过 xml 文件或 Configuration 对象组装 SqlSess...
2020-03-08 20:31:23 308
原创 通过域名实现 Windows 和 WSL2.0 的相互访问
问题当 wsl 版本切换到 2 后,内部是使用虚拟机来实现,所以无法使用 localhost 访问 windows 的资源,想要通过 url 相互访问就必须先去查双方的局域网 ip(觉得无所谓请跳过接下来的表演)解决思路向 windows 的 hosts 文件写入 wsl 的 ip,向 wsl 的 hosts 文件写入 windows 的 ip,然后双方就能通过域名访问彼此遇到的坑操作 windows 和 wsl 的 hosts 文件都需要各自的管理员权限(windows 的管理员权限无法操作
2021-01-30 17:27:03 1685
原创 Java 篇:让你的 Eclipse 飞起来
下载 Eclipse不要去官网下载,很慢,使用国内的下载地址(清华源):https://mirrors.tuna.tsinghua.edu.cn/eclipse/technology/epp/downloads/release/配置 Eclipse修改 Eclipse 的配置文件:Eclipse_Home/eclipse.ini修改 Eclipse 镜像:help > ins...
2019-03-25 14:16:11 347
原创 Bug 篇:Java 8 Parallel Stream 陷阱
误区一:Java 8 中的 Stream 只要使用 parallel() 就可以并行处理,只要使用 sequential 就可以单线程处理parallel 方法和 sequential 方法不会对流产生任何影响,只是改动了状态位而已Stream 是否并行取决于最后一次改变状态位的方法是 parallel 还是 sequential,下面两种表达式等价:stream.parallel(...
2019-03-24 17:53:04 2389 1
原创 Spring 篇:RedisTemplate 配置与使用
Maven 依赖 <!-- Redis 官方提供的 Java 驱动 --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0
2019-03-17 17:31:38 7343 1
原创 Java 篇:通过反射与代理实现 AOP
概述通过 Proxy::newProxyInstance 和 InvocationHandler 接口 来实现代理要求 被代理的对象 至少实现一个 接口代理的原理是在内存生成一个代理类的 Class 文件,可以将其保存下来,通过反编译查看// 被代理的对象的接口public interface IHello { void say();}// 被代理的对象的类publi...
2019-02-25 20:33:52 377
原创 JVM 篇:虚拟机字节码执行引擎
概述 Java 虚拟机规范规定了字节码执行引擎的规范,这个规范形成了所有具体虚拟机实现的统一外观:输入字节码,内部解析,输出结果。 执行引擎的运行其实就是栈帧的入栈和出栈的过程。每个栈帧都包括了 局部变量表 (local variable table,也称本地变量表),操作数栈 (operand stack) 和 栈帧信息 (动态连接,方法返回地址和其他一些额外信息)。栈帧结构局部变...
2019-02-23 18:17:42 181
原创 JVM 篇:类加载机制
概述 Java 和 C/C++ 这种在编译时就开始连接的语言不同,Java 是在运行期动态加载,动态连接的。(以效率换灵活度) 类的生命周期如下,其中 加载,验证,准备,初始化,卸载 这五步的顺序是确定的 (这里说的是开始的顺序,而不是等到前一个执行完再执行下一个);解析 一般来说是在 初始化 之前开始的,但有些情况会在 初始化 之后才开始 (为了支持 Java 的运行时绑定)加载...
2019-02-22 16:29:39 153
原创 JVM 篇:Java 虚拟机工具
JDK 自带的可视化工具VisualVM : $JAVA_HOME/bin/jvisualvm.exeJConsole : $JAVA_HOME/bin/jconsole.exe 这两款工具都很好用,JConsole 比较简单,但该有的功能都有;VisualVM 是官方推荐使用的工具,有一些功能要装上插件才能使用(不装插件还不如 JConsole),装插件很简单,就和 NotePad ...
2019-02-21 17:42:38 204
原创 JVM 篇:HotSpot GC
注:HotSpot 是 JDK 自带的虚拟机类型如果对垃圾回收的基本概念不是很了解,可以点击 GC 基本概念 前往了解。HotSpot 使用可达性分析算法来获知哪些对象是有用的,然后把没用的对象回收掉。具体过程为:GC 时程序中各线程会跑到 安全区域 里面离自己最近的 安全点 更新 OopMap 的数据(栈帧中引用的位置),然后阻塞自己通过 OopMap 记录的引用位置快速的枚举 GC ...
2019-02-21 17:04:42 221
原创 JVM 篇:GC 基本概念
基本概念 在谈垃圾收集器之前,我们先来捋一捋哪些内存会被当成垃圾回收。虚拟机的内存区域可以分为 程序计数器,虚拟机栈,本地方法栈,堆,方法区,直接内存。 程序计数器 和 虚拟机栈 和 本地方法栈 都为线程私有的,当线程结束之后其内存会被销毁,所以这部分不存在垃圾回收。 直接内存 是使用本地内存,所以垃圾收集器无法管理。 堆 是垃圾收集的主要区域。存储着几乎所有的对象 (现在已经有 ...
2019-02-21 14:12:52 224
原创 JVM 篇:虚拟机异常
以下内容为阅读 深入理解Java虚拟机(第2版)后的笔记及对 JDK8 的实践补充。看完这本书后最大的感觉就是,,,再看一遍,很多原来理解不了的知识点就可以看懂了,因为很多内容是前后呼应的。有兴趣的可以去阅读这本书,强推。// 虚拟机异常一般为 *Error,常见的有 OutOfMemoryError 和 StackOverflowErrorpublic class JVMError {...
2019-02-19 20:26:35 218
原创 JVM 篇:虚拟机内存分布
以下内容为阅读 深入理解Java虚拟机(第2版)后的笔记及对 JDK8 的实践补充。看完这本书后最大的感觉就是,,,再看一遍,很多原来理解不了的知识点就可以看懂了,因为很多内容是前后呼应的。有兴趣的可以去阅读这本书,强推。运行时数据区域程序计数器线程私有CPU 一般是分片运行的,线程转换的时候需要记录当前指令的位置,以便下一次运行时从中断处继续,这个就是程序计数器的作用。每一个线程有...
2019-02-19 19:47:12 233
原创 JVM 篇:虚拟机种类
通用平台的虚拟机Classic VMJDK1 与 JDK2 的官方默认虚拟机,世界第一种 java 虚拟机通过纯解释器执行 Java 代码,即时编译器只能通过外挂的形式存在,并且不能与解释器一起运行。(那个时候的 java 很慢)Exact VMSun 公司为了解决 Classic VM 的效率问题而计划研发的,但只在 Solaris 系统上发布过,后来就被 HotSpot 取代了...
2019-02-19 17:37:34 896
原创 Mavn 篇:写一个自己的模板,快速搭建项目
文章目录一,包与代码的结构二,代码中的某些属性值maven archetype 结构pom.xmlsrc/main/resources/archetype-resourcessrc/main/resources/META-INF/maven/archetype-metadata.xml创建 每次我们要使用框架写一个网站时,比如 SSM,我们总是需要手写 applicationContenxt.x...
2018-09-24 16:18:47 462
原创 Maven 篇:正确对待依赖冲突
当我们使用 maven 来构建我们的程序时,我们可以用几句配置来代替大量的 jar 包(一个依赖会引入其依赖的其他依赖,而那些依赖也会引入其依赖的依赖,所以有依赖树这种说法),同时因为这种配置在我们交流代码时可以不用自己引入 jar 包(避免了版本不一致而出错),只要更新 maven,它就会在后台帮我们解决这一切。 但是在我们享受这种方便的同时,我们也在为这种方便付出代价首先我们先来看一个例...
2018-09-24 00:30:26 4931 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人