在Ubuntu中编译和调试OpenJDK
构建编译环境
安装GCC编译器:
sudo apt install build-essential
安装OpenJDK依赖库:
工具
库名称
安装命令
FreeType
The FreeType Project
sudo apt install libfreetype6-dev
CUPS
Common UNIX Printing System
sudo apt install libcups2-dev
X11
X Window System
su...
Spring MVC整合PageHelper
具体见官方教程,本文仅为实践小记。
引入pagehelper依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.11</version>
</dependency>
配置applicationContext.xml文件
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
&l...
Spring的Bean后置处理器与Bean创建流程
BeanPostProcessor
BeanPostProcessor使所有Bean后置处理器的子接口,包含两个方法:
postProcessBeforeInitialization与postProcessAfterInitialization。
在Spring创建Bean的过程中,依次调用了如下的Bean后置处理器:
1.InstantiationAwareBeanPostProcessor
InstantiationAwareBeanPostProcessor接口继承BeanPostProcessor接口,它内部提供了3个方法,再加上BeanPostProcessor接口的2个方法,所以实现这个接口需要实现5个方法。InstantiationAwareBeanPostPro...
Java 并发底层源码分析
本文借鉴了:Java并发之基石篇、死磕Synchronized底层实现等文章,并做了一些修改,仅作为个人的学习笔记。非常感谢createchance、wangzhi等作者的分享
导读
声明:本文所有的分析内容基于 OpenDK 的 Java 11 版本的 HotSpot JVM 源代码。
在阅读本文之前,你需要:
了解 Java 中的基本的线程使用方式以及注意点
了解 Java 中的基本线程间通讯的方式
了解 Java 中的 volatile 的基本语义
了解 C/C++ 编程
了解 JNI 的相关开发知识
了解一些 x86 的汇编(仅仅是很简单的内容,要求能读懂)
本文重点分析内容:
共享内存多核系统基本架构与设计
Java 内存模...
微服务概念学习笔记
参考链接
微服务概念学习笔记
微服务架构风格
简单来说,微服务架构风格是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制(通常用HTTP资源API)。这些服务围绕业务能力构建并且可通过全自动部署机制独立部署。这些服务使用不同的编程语言书写,以及不同数据存储技术,并且仅保持最低限度的集中式管理。
和单体风格的对比
单体应用程序被构建为单一单元。系统的任何改变都将牵涉到重新构建和部署服务端的一个新版本。该单体的水平扩展可以通过在负载均衡器后面运行多个实例来实现。
单体风格存在的问题
变更周期被捆绑在一起 —— 即使只变更应用程序的一部分,也需要重新构建并部署整个单体。
微服务架构风格
构建应用程序为服务套件。除了服务...
Git学习笔记
参考链接
Git学习笔记
Git是什么
Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。
创建版本库(Repository)
创建一个空目录,并使用命令行进入当前目录:
$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit
通过git init命令把这个目录变成Git可以管理的仓库:
$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/
把文件添加到版本库
用命令git add告诉Git,把文件添加到仓库:
$ git add readme.txt...
共计 18 篇文章,3 页。