自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

leonliu06的博客

我本可以忍受黑暗,如果我不曾见过太阳

  • 博客(95)
  • 资源 (1)
  • 收藏
  • 关注

原创 读懂HashMap源码

1 HashMap源码(jdk7)详见:HashMap类主要由一个Entry数组Entry<K,V>[] table构成2 HashMap源码(jdk8)HashMap类主要由一个Node数组Node<K,V>[] table`构成;put操作时,如哈希碰撞,元素插入链表是从尾部插入(jdk7是从头部插入)put操作时,如第一次put,即table为空时,则先调用resize,然后put,非第一次,即table.length > 0时,则先put,再resiz

2020-07-11 01:23:23 305

原创 Linux下编译OpenJDK源码以及在Eclipse中调试Hotspot虚拟机

Linux下编译OpenJDK源码以及在Eclipse中调试Hotspot虚拟机

2017-11-09 22:48:04 4765 2

原创 ShardingSphere学习手册

https://shardingsphere.apache.org/document/legacy/4.x/document/cn/overview/概念&功能.1 数据分片.1.1 核心概念SQL逻辑表Logic Table真实表Actual Table数据节点Data Node绑定表Binding Table  指分片规则一致的主表和子表。绑定表之间的分区键要完全相同。广播表Broadcast Table  指所有的分片数据源中都存在的表,表结构和表中的数据在每个数.

2020-10-21 21:22:21 737 1

原创 gitlab api 使用

PRIVATE-TOKEN 设置:登录gitlab 进入 User Settings -> Access Tokens查看自己拥有的projectcurl --header "PRIVATE-TOKEN:your-private-token" https://your-gitlab-server/api/v4/projects查看project的membercurl --header "PRIVATE-TOKEN:your-private-token" "https://your-git

2020-10-21 21:18:19 1103

原创 ReentrantLock源码阅读jdk1.8

ReentrantLock(jdk1.8)源码阅读  ReentrantLock,即可重入锁(Java环境下,synchronized也是可重入锁),是唯一实现了Lock接口的类。ReentrantLock主要构成为:含有一个抽象内部类Sync,它继承自AbstractQueuedSynchronizer,即AQS,Sync有两个子类,分别是FairSync和NonfairSync。主要方法有:ReentrantLock类的lock(),unlock(),tryLock()和AQS类的acquire(

2020-07-24 11:30:15 350

原创 HashMap在多线程并发情况下不安全的原因

为什么HashMap不是线程安全的线程T1和T2同时对一个HashMap进行put操作,如产生hash碰撞,正常情况下,会形成链表,并发情况下,有可能T2线程会覆盖T1线程put的元素。线程T1和T2同时对一个HashMap进行resize操作,因jdk1.7中,扩容时,移动元素生成新链表是按头插法进行的,可能出现循环链表,使得get一个不存在的元素,且该元素索引位置在循环链表位置时,造成对环形链表的死循环遍历,在jdk1.8中不会。所以,HashMap的线程不安全主要体现如下:在JDK1.7中

2020-07-11 01:22:51 944 1

原创 ConcurrentHashMap源码阅读jdk1.8

ConcurrentHashMap源码(jdk1.8)阅读ConcurrentHashMap由一个Node数组table构成table元素Node是一个链表结点,在table槽位上的链表元素大于等于8,并且Node数组table的长度大于64时,会转化为树形链表,扩容时,树元素个数小于等于6时,会转化为链表ConcurrentHashMap通过transfer方法扩容,扩容时,先从高位索引遍历数组table,然后再遍历索引处的链表或树,将链表(或树)上结点分成两个链表,一个保留在原来位置,一个向后移

2020-07-11 00:24:35 187

原创 ConcurrentHashMap源码阅读jdk1.7

ConcurrentHashMap源码(jdk1.7)阅读ConcurrentHashMap类主要由一个Segment数组(Segment<K,V>[] segments)构成;Segment是一个ReentrantLock类,含有一个HashEntry<K,V>[]数组(HashEntry<K,V>[] table);Segment的数量size为并发级别concurrencyLevel的大小,默认为 DEFAULT_CONCURRENCY_LEVEL = 16

2020-07-11 00:23:09 173

原创 HashMap源码阅读jdk1.8

HashMap源码(jdk1.8)阅读HashMap类主要由一个Node数组Node<K,V>[] table构成put操作时,如哈希碰撞,元素插入链表是从尾部插入(jdk7是从头部插入)put操作时,如第一次put,即table为空时,则先调用resize,然后put,非第一次,即table.length > 0时,则先put,再resizeresize重新分配元素时,链表上的元素,最多会分为两部分,一部分分配在原来的低位位置,另一部分分配到新扩容的高位位置1. put方法

2020-07-11 00:20:53 153

原创 HashMap源码阅读jdk1.7

HashMap源码(jdk1.7)阅读HashMap类主要由一个Entry数组Entry<K,V>[] table构成;1. put方法 public V put(K key, V value) { // 如果table为空,则初始化 if (table == EMPTY_TABLE) { inflateTable(threshold); } // 这里可以看出HashMap的key可以为空

2020-07-11 00:18:10 160

原创 CentOS7上安装Confluence构建企业Wiki

  Confluence可以用于构建企业Wiki,安装Confluence需要依赖JDK和MySQL,所以安装前,CentOS7上应先安装好JDK和MySQL。在此基础上,安装Confluence步骤如下。1. 开始前的准备工作  Confluence可以用构建企业Wiki,安装Confluence需要依赖JDK和MySQL,所以安装前,CentOS7上应先安装好JDK和MySQL。在此基础上...

2020-01-22 00:27:04 396

原创 js函数定义、调用、闭包

1. 函数定义方法:1.1 具名函数:  1.1.1 function 函数名(参数列表){函数体;}  如:function foo(p){alert(p);}  1.1.2 var 函数名 = function(参数列表){函数体;}  如:var bar = function(p){alert(p);}  1.1.3 var baz = new Function(“x”,...

2020-01-21 01:17:22 313

原创 Confluence数据迁移

   将Confluence数据从一台服务器迁移到另一台服务器,总体讲分为三步:复制Confluence安装目录和Confluence Home目录到另一台服务器迁移MySQL数据库到另一台服务器修改Confluence配置文件confluence.cfg.xml数据库连接1. 迁移Confluence1.1 迁移Confluence安装目录[root@localhost ~]# ...

2020-01-21 00:47:48 8374

原创 CentOS7配置阿里云yum源

1 备份系统原源文件$ cd /etc/yum.repos.d/$ mv CentOS-Base.repo CentOS-Base.repo.bak2 下载阿里云源文件$ wget http://mirrors.aliyun.com/repo/Centos-7.repo  如果提示没有wget命令,说明需要安装wget$ yum -y install wget  如果安装失败...

2020-01-21 00:40:19 216

原创 CentOS7 防火墙相关命令

  CentOS 7.0默认使用的是firewall作为防火墙,代替了原来CentOS6的iptables。查看防火墙状态:$ firewall-cmd --state# 或者$ systemctl status firewall开启/关闭防火墙:# 开启$ systemctl start firewalld.service# 关闭$ systemctl sto...

2020-01-21 00:36:47 142

原创 CentOS7安装MySQL

CentOS7安装MySQL1 先检查系统是否装有MySQL$ rpm -qa | grep mysql  返回空值,说明没安装,如果有安装,则删除可用:$ yum remove mysql  注意:这里执行安装命令yum install mysql是无效的,因为centos-7默认是Mariadb,所以它只是更新Mariadb数据库。2 下载MySQL  从 MySQL 官网选...

2020-01-21 00:29:09 136

原创 MySQL创建数据库指定编码与排序规则和授权连接

1. 创建数据库,指定utf8编码和utf8_bin排序mysql> create database if not exists mall default character set utf8 collate utf8_bin;2. 添加新用户mysql> create user 'username'@'%' identified by '123456';# ormysql...

2020-01-21 00:25:24 767

原创 CentOS7安装SonarQube6.7

0. 准备工作  前提需要安装好JDK8及MySQL5.6+。1. 下载  从官网https://www.sonarqube.org/downloads/下载sonarqube-6.7.3.zip压缩包。2. 解压  上传到服务器后,解压。[root@localhost sonar]# unzip sonarqube-6.7.3.zip -d /opt3. 配置MySQL数据库 ...

2020-01-21 00:22:57 412

翻译 内置Tomcat还是外部Tomcat?

1. 来自 www.quora.com 的答案原文: https://www.quora.com/Is-it-better-to-run-a-Spring-Boot-application-in-an-external-Tomcat-compared-to-internalIs it better to run a Spring Boot application in an extern...

2019-12-25 13:35:10 558

原创 Spring Boot + MySQL + MyBatis + Maven + Logging + Thymeleaf 项目搭建、配置、运行、部署完整教程

1. 创建一个springboot应用1.1 创建  springboot应用没有相应的archetype,不能通过mvn generate:archetype创建,一般有两种方式创建一个springboot应用:访问 https://start.spring.io/,选择Web依赖,点击Generate Project 创建一个springboot应用。通过IDEA:File -&gt...

2019-12-25 12:52:32 546

原创 Redis 下载、安装、启动

1. 下载  从地址:https://github.com/MicrosoftArchive/redis/releases 下载文件Redis-x64-3.2.100.zip。2. 解压  解压文件 Redis-x64-3.2.100.zip 得到文件夹 Redis-x64-3.2.100。3. 启动  在 Redis-x64-3.2.100 路径下:2.1 在一个d...

2018-03-30 23:06:23 407

原创 Git 版本回退

  版本回退问题,不同场景下,解决方案是不一样的。总的来说,涉及两个Git命令,即 git revert 和 git reset,所以要想掌握版本回退,必须理解这两个命令到底做了什么。1. git revert 与 git reset 的比较  理解这两个命令的区别,参看 git revert 与 git reset 的比较:https://blog.csdn.net/leonliu0...

2018-03-29 19:03:20 362

原创 git revert 与 git reset 的比较

git revert 与 git reset 的比较  这两个命令的操作完全不同。设当前分支是dev1。1. 对于git revert  以如下命令为例, $ git revert c1  该命令会重新生成一个新的提交 c2,其父提交是当前dev1指针指向的提交(如果当前指向c1,则父提交就是c1),c2 的内容与 c1 的内容相反,即生成一个反向提交,并向前移动 dev1...

2018-03-29 18:51:07 1026

原创 查看端口占用及相关进程信息

1. Windows系统 1.1 netstat 查看某一端口占用情况$ netstat -o活动连接 协议 本地地址 外部地址 状态 PID TCP 10.0.102.71:4559 223.167.166.59:https ESTABLISHED 4968  如查看 8080 ...

2018-03-27 21:23:19 786

原创 Git内部原理

Git内部原理  从根本上讲Git是一个内容寻址(content-addressable)文件系统,并在此之上提供了一个版本控制系统的用户界面。  内容寻址文件系统,意味着,Git的核心部分是一个简单的键值对数据库(key-value data store)。  .git目录包含了几乎所有Git存储和操作的对象。如若想备份或复制一个版本库,只需把这个目录拷贝至另一处即可。初始.gi...

2018-03-27 10:33:42 626

原创 ActiveMQ安装与使用

ActiveMQ  ActiveMQ是一款开源的JMS(Java Message Service)的具体实现。ActiveMQ是一个易于使用的消息中间件(Message Orient Middleware, MOM)。 Apache ActiveMQ ™ is the most popular and powerful open source messaging and Integ...

2018-03-23 19:50:34 296 1

原创 git tag 应用(打标签)

Git 可以给历史中的某一个提交打上标签,以示重要。比较有代表性的是人 们会使用这个功能来标记发布结点(v1.0 等等)1. git tag 列出标签$ git tag2. 创建标签2.1 标签类型:附注标签(annotated)  附注标签是存储在Git数据库中的一个完整对象。它们是可以被校验的;其中包含打标签者的名字、电子邮件地址、日期...

2018-03-23 06:25:13 6505

原创 git log 应用

查询某次提交的修改内容# 显示某次提交的修改内容$ git show &lt;commit-ID&gt;# 显示某次提交的某个文件的修改内容$ git show &lt;commit-ID&gt; filename查看Git上个人代码量git log --author="username" --pretty=tformat: --numstat | awk '{ ad...

2018-03-23 06:21:18 578

原创 Git分支

1. Git的分支  Git的分支,其实本质上仅仅是指向提交对象的可变指针。它会在每次的提交操作中自动向前移动。 由于 Git 的分支实质上仅是包含所指对象校验和(长度为 40 的 SHA-1 值字符串)的文件,所以它的创建和销毁都异常高效。创建一个新分支就像是往一个文件中写入 41 个字节(40 个字符和 1 个换行符),如此的简单能不快吗?2. HEAD指针  Git...

2018-03-23 06:18:20 271

原创 git reset 重置

  git reset &lt;commit id&gt;命令,如get reset 831b92会以特定的顺序重写HEAD、Index和Working Directory。有三个选项:--soft 仅仅移动HEAD指针指向提交831b92。仅仅意思是单纯移动指针,不更新INDEX索引区,所以此时git status时会看到绿色的索引区的数据(即上一次提交的内容)。--mixed 会更新I...

2018-03-23 06:16:19 788

原创 Git应用笔记整理(全)

1. Git 配置1.1. git config  git config 语法:git config [–环境参数] key value   有三个环境参数:–global 全局配置,写到~/.gitconfig中,即用户路径C:\Users\li.liu下的.gitconfig文件。–local 工作目录配置,即所在仓库的配置,写到当前仓库下的.git/config文件中。...

2018-03-23 06:10:54 923

翻译 SQL索引剖析

SQL索引剖析  “索引使查询更快”是我曾见到过的对索引的最基本解释。尽管它很好地描述了索引最重要的一面,但不幸地是,并不足以体现本书。本章以不是那么肤浅的方式来描述索引结构,但也不会深挖细节。它为本书中讨论的SQL性能方面提供足够的洞察力。  索引是使用create index语句在数据库中建立的一个不同的数据结构。它需要自己的磁盘空间来保存索引表数据的副本。这意味着索引是纯粹的冗余。创...

2018-03-18 23:44:41 454 1

原创 IntelliJ IDEA 对 @Autowired 代码检查报错

1. 问题  IntelliJ IDEA 对@Autowired代码检查报错。 @Autowired private DemoBusinessService businessService;2. 解决(两种方案)方案1:添加注解 @SuppressWarnings("SpringJavaAutowiringInspection") @Autowi...

2018-02-22 10:39:57 17810 2

原创 测试插件maven-surefire-plugin

1. 配置1.1 参考:http://maven.apache.org/surefire/maven-surefire-plugin/ 1.2 配置: plugin> groupId>org.apache.maven.pluginsgroupId> artifactId>maven-surefire-pluginartifactId

2018-02-02 14:03:00 341

转载 Gradle仓库

转自:https://docs.gradle.org/4.4.1/userguide/dependency_management.html#sec:repositories25.6. RepositoriesGradle repository management, based on Apache Ivy, gives you a lot of freedom regarding r

2018-01-10 19:43:22 3191

原创 一个简单的Gradle脚本文件

通过一个简单的Gradle脚本文件理解其主要语法:// build.gradle 文件// 建议运行在JDK1.8下,Gradle5.0将不再支持JDK1.7的运行// Support for running Gradle using Java 7 has been deprecated and is scheduled to be removed in Gradle 5.0.// 定

2018-01-09 17:32:50 3967

原创 Gradle应用简介

1. 存储库 默认情况下,Gradle不定义任何存储库。我们必须至少明确地定义一个存储库。2. 显示帮助信息$ gradle --help  执行 gradle --help 可查看gradle命令语法及各选项意义,如下:$ gradle --helpUSAGE: gradle [option...] [task...]-?, -h, --help

2018-01-09 17:12:42 565

原创 Gradle多项目构建

1. 多项目构建的结构在项目的根目录或主目录中都有一个settings.gradle文件。根目录或主目录都有一个build.gradle文件。具有自己的*.gradle构建文件的子目录(某些多项目构建可能会省略子项目构建脚本)。1.1 列出构建文件中的所有项目$ gradle -q projects2. 指定常规构建配置 在根项目中的build.grad

2018-01-09 15:16:17 425

原创 Gradle构建Java项目

1. 添加Java插件 使用Gradle构建文件来构建一个Java项目。首先,我们必须向构建脚本中添加Java插件,因为它提供了编译Java源代码,运行单元测试,创建Javadoc和创建JAR文件的任务。 在build.gradle文件中使用以下代码行。apply plugin: 'java'2. Java默认的项目布局 每当添加一个插件到构建中,它会假设一个特定

2018-01-08 19:29:34 527

原创 Java编程思想读书笔记(八)第21章-并发

线程可以驱动任务,因此你需要一种描述任务的方式,这可以由Runnable接口来提供。要想定义任务,只需实现Runnable接口并编写run()方法,使得该任务可以执行你的命令。当从Runnable导出一个类时,它必须具有run()方法,但是这个方法并无特殊之处——它不会产生任何内在的线程能力。要实现线程行为,你必须显式地将一个任务附着到线程上。线程的一个额外好处是它们提供了轻量级的执行上下文切换(大约100条指令),而不是重量级的进程上下文切换(要上千条指令)。

2018-01-06 22:32:40 2547 1

visualstudiotheme.jar

visualstudiotheme.jar

2021-08-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除