- 博客(181)
- 收藏
- 关注
原创 玩转 Markdown 所有特性
:package: 本文已归档到:「blog」目录目录标题文本样式列表分割线链接引用代码高亮表格Emoji 表情注脚数学公式Diff流程图HTML编辑器参考资料标题Markdown 支持六个级别的标题。语法:# 一级标题## 二级标题### 三级标题#### 四级标题##### 五级标题###### 六级标题文本样式...
2020-02-01 16:28:24
1171
原创 深入理解 Java 并发锁
???? 本文以及示例源码已归档在 javacore一、并发锁简介确保线程安全最常见的做法是利用锁机制(Lock、sychronized)来对共享数据做互斥同步,这样在同一个时刻,只有一个线程可以执行某个方法或者某个代码块,那么操作必然是原子性的,线程安全的。在工作、面试中,经常会听到各种五花八门的锁,听的人云里雾里。锁的概念术语很多,它们是针对不同的问题所提出的,通过简单的梳理,也不难理...
2020-01-13 09:30:58
1166
原创 全面了解 Java 原子变量类
???? 本文以及示例源码已归档在 javacore一、原子变量类简介为何需要原子变量类保证线程安全是 Java 并发编程必须要解决的重要问题。Java 从原子性、可见性、有序性这三大特性入手,确保多线程的数据一致性。确保线程安全最常见的做法是利用锁机制(Lock、sychronized)来对共享数据做互斥同步,这样在同一个时刻,只有一个线程可以执行某个方法或者某个代码块,那么操作必...
2019-12-27 18:18:26
1103
1
原创 Java 并发核心机制
???? 本文以及示例源码已归档在 javacore一、J.U.C 简介Java 的 java.util.concurrent 包(简称 J.U.C)中提供了大量并发工具类,是 Java 并发能力的主要体现(注意,不是全部,有部分并发能力的支持在其他包中)。从功能上,大致可以分为:原子类 - 如:AtomicInteger、AtomicIntegerArray、AtomicReferen...
2019-12-27 13:14:37
370
原创 Java 内存模型
???? 本文以及示例源码已归档在 javacoreJava 内存模型(Java Memory Model),简称 JMM。JVM 中试图定义一种 JMM 来屏蔽各种硬件和操作系统的内存访问差异,以实现让 Java 程序在各种平台下都能达到一致的内存访问效果。一、物理内存模型物理机遇到的并发问题与虚拟机中的情况有不少相似之处,物理机对并发的处理方案对于虚拟机的实现也有相当大的参考意义。...
2019-12-26 11:55:01
881
原创 Java 线程基础
???? 本文以及示例源码已归档在 javacore一、线程简介什么是进程什么是线程进程和线程的区别二、线程基本用法创建线程线程休眠线程礼让终止线程守护线程FAQ三、线程间通信wait/notify/notifyAlljoin管道四、线程状态参考资料一、线程简介什么是进程简言之,进程可视为一个正在运行的程序。它是系统运行程序...
2019-12-25 08:57:30
959
原创 深入理解 Java 线程池
一、简介什么是线程池线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。为什么要用线程池如果并发请求数量很多,但每个线程执行的时间很短,就会出现频繁的创建和销毁线程。如此一来,会大大降低系统的效率,可能频繁创建和销毁线程的时间、资源开销要大于实际工作的所需。正是由于这个问题,所以有必要引入线程池。使用 线程池的好处 有以下几点:降低资源消耗 -...
2019-12-24 10:28:14
931
原创 深入理解 Java 注解
深入理解 Java 注解本文内容基于 JDK8。注解是 JDK5 引入的,后续 JDK 版本扩展了一些内容,本文中没有明确指明版本的注解都是 JDK5 就已经支持的注解。???? 本文已归档到:「javacore」???? 本文中的示例代码已归档到:「javacore」1. 简介1.1. 注解的形式Java 中,注解是以 @ 字符开始的修饰符。如下:@Overridevoid my...
2019-12-16 15:33:43
1106
原创 深入理解 Java 异常
???? 本文已归档到:「javacore」???? 本文中的示例代码已归档到:「javacore」1. 异常框架1.1. ThrowableThrowable 是 Java 语言中所有错误(Error)和异常(Exception)的超类。Throwable 包含了其线程创建时线程执行堆栈的快照,它提供了 printStackTrace() 等接口用于获取堆栈跟踪数据等信息。主要方法:...
2019-12-16 15:31:40
942
原创 深入理解 Java 数组
???? 本文已归档到:「javacore」???? 本文中的示例代码已归档到:「javacore」1. 简介1.1. 数组的特性数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。几乎所有程序设计语言都支持数组。数组代表一系列对象或者基本数据类型,所有相同的类型都封装到一起,采用一个统一的标识符名称。数组的定义和使用需要通过方括号 []。Ja...
2019-12-16 15:27:07
920
原创 深入理解 Java 枚举
???? 本文已归档到:「javacore」???? 本文中的示例代码已归档到:「javacore」1. 简介enum 的全称为 enumeration, 是 JDK5 中引入的特性。在 Java 中,被 enum 关键字修饰的类型就是枚举类型。形式如下:enum ColorEn { RED, GREEN, BLUE }枚举的好处:可以将常量组织起来,统一进行管理。枚举的典型应用场景:...
2019-12-16 15:24:23
935
原创 Java 控制语句
Java 控制语句???? 本文已归档到:「javacore」???? 本文中的示例代码已归档到:「javacore」Java 控制语句大致可分为三大类:- 选择语句- if, else-if, else- switch- 循环语句- while- do...while- for- foreach- 终端语句- break- continue- return1. ...
2019-12-16 15:18:28
885
原创 深入理解 Java 方法
方法(有的人喜欢叫函数)是一段可重用的代码段。???? 本文已归档到:「javacore」???? 本文中的示例代码已归档到:「javacore」1. 方法的使用1.1. 方法定义方法定义语法格式:[修饰符] 返回值类型 方法名([参数类型 参数名]){ ... 方法体 ... return 返回值;}示例:public static void m...
2019-12-16 15:07:31
885
原创 深入理解 Java 基本数据类型
???? 本文已归档到:「javacore」1. 数据类型分类Java 中的数据类型有两类:值类型(又叫内置数据类型,基本数据类型)引用类型(除值类型以外,都是引用类型,包括 String、数组)1.1. 值类型Java 语言提供了 8 种基本类型,大致分为 4 类整数型byte - 8 位。short - 16 位。int - 32 位。long - 64 位...
2019-12-16 15:06:23
883
原创 深入理解 Java 泛型
???? 本文已归档到:「javacore」???? 本文中的示例代码已归档到:「javacore」1. 为什么需要泛型JDK5 引入了泛型机制。为什么需要泛型呢?回答这个问题前,先让我们来看一个示例。public class NoGenericsDemo { public static void main(String[] args) { List list = n...
2019-12-16 15:01:02
870
原创 深入理解 Java 反射和动态代理
???? 本文已归档到:「javacore」???? 本文中的示例代码已归档到:「javacore」1. 简介1.1. 什么是反射反射(Reflection)是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性。通过反射机制,可以在运行时访问 Java 对象的属性,方法,构造方法等。1.2. 反射的应用场景反射的主要应用场景...
2019-12-16 14:55:00
917
原创 Mysql 运维
环境:CentOS7版本:1. 部署本文仅介绍 rpm 安装方式1.1. 安装 mysql yum 源官方下载地址:https://dev.mysql.com/downloads/repo/yum/(1)下载 yum 源$ wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rp...
2019-12-16 12:21:50
1039
原创 UML 教程
UML 教程关键词:部署图, 组件图, 包图, 类图, 复合结构图, 对象图, 活动图, 状态机图, 用例图, 通信图, 交互概述图, 时序图, 时间图简介UML 图类型UML 图类型如下图所示:结构式建模图结构式建模图(Structure diagrams)强调的是系统式的建模。结构图定义了一个模型的静态架构。它们通常被用来对那些构成模型的‘要素’建模,诸如:类,对象,接口和...
2019-03-05 13:16:18
2943
原创 一篇文章让你彻底掌握 shell 语言
Shell 快速指南███████╗██╗ ██╗███████╗██╗ ██╗██╔════╝██║ ██║██╔════╝██║ ██║███████╗███████║█████╗ ██║ ██║╚════██║██╔══██║██╔══╝ ██║ ██║███████║██║ ██║███████╗███████╗███████╗概...
2019-02-28 10:42:22
1746
原创 Python 快速指南
Python 快速指南解释器注释数据类型操作符算术运算符比较运算符赋值运算符位运算符逻辑运算符成员运算符身份运算符运算符优先级控制语句条件语句循环语句函数函数变量作用域关键字参数可变参数列表返回值异常异常处理抛出异常自定义异常面向对象面向对象技术简介类定义类对象类的方法继承多继承方法重写类属性与方法...
2019-02-28 10:42:07
172
原创 使用 Gitbook 打造你的电子书
本文详细讲解了 Gitbook 生成电子书的完整过程,内容包括:安装、命令、配置、文档结构、生成电子书、部署。限于篇幅,本文不介绍任何 Gitbook 定制化页面的内容。想看看 Gitbook 在线电子书效果,请猛戳这里:gitbook-notes概述GitBook 是使用 GitHub / Git 和 Markdown(或AsciiDoc)构建漂亮书籍的命令行工具(和Node.js库)
2017-09-01 10:01:23
32709
原创 sql 语言
sql 语言DDLDDL 全称 Data Definition Language,即数据定义语言。DATABASE创建数据库CREATE DATABASE 语句用于创建数据库。CREATE DATABASE database_name;撤销数据库DROP DATABASE 语句用于撤销数据库。DROP DATABASE database_name;TABLE创建表CREAT
2017-09-01 10:01:18
305
原创 Babel 入门指南
Babel 入门指南⚠️ 注意:Babel 可以与很多构建工具(如 Browserify、Grunt、Gulp 等)进行集成。由于本教程选择 Webpack ,所以只讲解与 Webpack 的集成。想了解如何与其它工具集成,请参考:官方文档 - installation简介Babel 是一个通用的多用途 JavaScript 编译器。Babel 能做什么?Babel 通过
2017-09-01 10:01:13
304
原创 Webpack 开发工具与模块热替换
Webpack 开发工具与模块热替换⚠️ 注意:永远不要在生产环境中使用这些工具,永远不要。devtool当 JavaScript 异常抛出时,你常会想知道这个错误发生在哪个文件的哪一行。然而因为 webpack 将文件输出为一个或多个 bundle,所以 追踪这一错误会很不方便。Source maps 试图解决这一问题。它有很多选择,各有优劣:devtoolbuild
2017-09-01 10:01:08
343
原创 Webpack 入门
Webpack 入门**Tip:**本文所有示例基于 webpack2。文中的示例代码说明可以参考:Webpack 示例代码说明安装本地安装$ npm install --save-dev webpack$ npm install --save-dev webpack@version>如果你在项目中使用了 npm ,npm 首先会在本地模块中寻找 webpack。这是一个实用的
2017-09-01 10:00:56
223
原创 Webpack 概念
概念webpack 是一个现代的 JavaScript 应用程序的模块打包器(module bundler)。当 webpack 处理应用程序时,它会递归地构建一个依赖关系图表(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成少量的 bundle - 通常只有一个,由浏览器加载。学习 webpack,需要先了解几个核心概念,下面会一一道来。模块化
2017-09-01 10:00:52
362
原创 如何学习 Webpack
webpack-howtoTip:本文是 webpack-howto 的原文,我觉得这篇文章写得非常好,确实算是目前学习 webpack 入门的必读文章。直接收录之。本教程的目标这是一本教你如何应用webpack到你的项目中的工具书。它包含了我们在Instagram中用到的绝大多数的内容。我的建议:这个教程作为你第一个webpack的文档,学习完以后去看它的官方文档,了解更详细的说明
2017-09-01 10:00:49
461
原创 React基础篇 - 02.JSX 简介
JSX 简介请观察下面的变量声明:const element = Hello, world!;这种看起来可能有些奇怪的标签语法既不是字符串也不是HTML。它被称为 JSX, 一种 JavaScript 的语法扩展。 我们推荐在 React 中使用 JSX 来描述用户界面。JSX 乍看起来可能比较像是模版语言,但事实上它完全是在 JavaScript 内部实现的。JSX 用来声明 Reac
2017-09-01 10:00:44
311
原创 Intellij实用技巧
快捷键Tradition快捷键介绍Ctrl + Z撤销Ctrl + Shift + Z取消撤销Ctrl + X剪切Ctrl + C复制Ctrl + S保存Tab缩进Shift + Tab取消缩进Shift + Home/End选中光标到当前行头位置/行尾位置Ctrl + Home/End跳到文件头/文件尾
2017-09-01 10:00:39
323
原创 一行代码搞定图片缩放、旋转、加水印
概述Thumbnailator 是一个开源的 Java 项目,它提供了非常简单的 API 来对图片进行缩放、旋转以及加水印的处理。有多简单呢?简单到一行代码就可以完成图片处理。形式如下:Thumbnails.of(new File("path/to/directory").listFiles()) .size(640, 480) .outputFormat("jpg")
2017-09-01 10:00:34
377
原创 ZXing 生成、解析二维码图片的小示例
概述ZXing 是一个开源 Java 类库用于解析多种格式的 1D/2D 条形码。目标是能够对QR编码、Data Matrix、UPC的1D条形码进行解码。 其提供了多种平台下的客户端包括:J2ME、J2SE和Android。官网:ZXing github仓库实战本例演示如何在一个非 android 的 Java 项目中使用 ZXing 来生成、解析二维码图片。安装maven项目只需引
2017-09-01 10:00:32
435
原创 npm 使用小结
本文内容基于 npm 4.0.5概述npm (node package manager),即 node 包管理器。这里的 node 包就是指各种 javascript 库。npm 是随同 Node.js 一起安装的包管理工具,所以不需要独立安装。可以通过查看版本号来检测 npm 是否已经安装成功:npm -v如果已经安装了npm,想要升级,只需要一条命令即可:npm install
2017-09-01 10:00:27
968
原创 [译] MongoDB Java异步驱动快速指南
导读mongodb-java-driver是mongodb的Java驱动项目。本文是对MongoDB-java-driver官方文档 MongoDB Async Driver Quick Tour 的翻译(原创翻译)。mongodb-java-driver 从3.0版本开始同时支持同步、异步方式(分别是不同的驱动应用)。异步的好处,众所周知,就是支持快速、非阻塞式的IO操作,可以提高处理
2017-09-01 10:00:17
528
原创 maven全局配置文件settings.xml详解
概要settings.xml有什么用?如果在Eclipse中使用过Maven插件,想必会有这个经验:配置settings.xml文件的路径。settings.xml文件是干什么的,为什么要配置它呢?从settings.xml的文件名就可以看出,它是用来设置maven参数的配置文件。并且,settings.xml是maven的全局配置文件。而pom.xml文件是所在项目的局部配置。Set
2017-09-01 10:00:13
361
原创 Spring整合Ehcache管理缓存
前言Ehcache 是一个成熟的缓存框架,你可以直接使用它来管理你的缓存。Spring 提供了对缓存功能的抽象:即允许绑定不同的缓存解决方案(如Ehcache),但本身不直接提供缓存功能的实现。它支持注解方式使用缓存,非常方便。本文先通过Ehcache独立应用的范例来介绍它的基本使用方法,然后再介绍与Spring整合的方法。概述Ehcache是什么?EhCache 是一个纯Java的进
2017-09-01 09:59:53
283
原创 细说Java主流日志工具库
概述在项目开发中,为了跟踪代码的运行情况,常常要使用日志来记录信息。在Java世界,有很多的日志工具库来实现日志功能,避免了我们重复造轮子。我们先来逐一了解一下主流日志工具。java.util.logging (JUL)JDK1.4开始,通过java.util.logging提供日志功能。它能满足基本的日志需要,但是功能没有Log4j强大,而且使用范围也没有Log4j广泛。Log4j
2017-09-01 09:59:43
200
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人