自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(83)
  • 资源 (3)
  • 收藏
  • 关注

原创 基于JDK8的ArrayList源码剖析

前言ArrayList是我们开发过程中经常用到的集合类,一般涉及到集合操作的业务都会想到它,在java的集合家族中,知名度最高的集合类非他莫属。但是人无完人,ArrayList也存在利与弊,在开发过程中如何权衡呢?让我们通过源码对ArrayList进行一个深入的了解,了解底层实现,这样就能在使用过程中根据需求来决定是否使用该集合类。走近ArrayListArrayList基于数组实现,在普通数组基础上增加了自动扩容等功能。实现了List, RandomAccess, Cloneable, java.i

2021-07-21 17:35:43 196 1

原创 深入了解JVM垃圾回收机制

Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里 面的人却想出来。-《深入理解Java虚拟机:JVM高级特性与最佳实践(第三版)》要对Java程序进行性能调优,就不得不理解JVM内部的垃圾回收机制。JVM就像一位勤劳的环卫工人,帮我们清理Java程序运行过程中产生的各种垃圾。接下来就让我们深度剖析这位环卫工人清理垃圾的过程。从而能帮我减少无用垃圾的产生。本文只讨论JDK8下的堆内存空间垃圾回收。1、什么是JVM垃圾回收垃圾回收(Garbage Col.

2021-07-04 16:41:55 610 3

原创 java同步神器-Synchronized锁升级优化

前言相信大家对Synchronized这个关键字并不陌生,在解决多线程并发操作下数据安全问题时,都会想到这个关键字,用来对共享资源进行加锁。但在JDK1.6版本之前,Synchronized是一个重量级锁,阻塞或唤醒java线程需要操作系统切换CPU状态来完成,这种状态转换需要耗费处理器时间。如果同步代码块中的内容过于简单,状态转换消耗的时间有可能比执行用户代码的时间还要长。JDK1.6对Synchronized加锁进行了优化,引入了 “偏向锁” 和 “轻量级锁”。于是目前Synchronized加锁共

2021-06-20 14:54:27 323

原创 深入分析MySQL索引优化导致的死锁问题

死锁是我们在大学时就接触过的概念,由于鄙人资历尚浅,毕业后的开发过程中几乎没有碰到过死锁问题。然而常在河边走,哪有不湿鞋,最近就碰到了一个诡异的死锁问题,于是就抓住这次难得机会,对这次的死锁问题好好研究了一番。于是就总结出了这篇博客。发现问题某一天,我一如既往地对一个批量并发操作相关的业务进行自测,在自测过程中发现有两个线程执行失败了,通过日志发现是更新状态时导致的死锁问题。第一眼见到这个问题,我有点纳闷,明明更新的不是同一行记录,为什么会出现死锁呢?于是带着这个问题在网上找了一些大佬的文章,发现是索引

2021-06-14 16:05:19 1203 2

原创 小白理解HashMap线程非安全

小白理解HashMap线程非安全JDK1.7线程非安全JDK1.8线程非安全总结面试官总是喜欢问我这个小白HashMap为什么线程非安全,经过几次打击的的我下定决心要理解HahsMap线程非安全的原因。经过多方面的了解,我了解到HashMap线程非安全在不同JDK有不同的体现:JDK1.7:多个线程进行扩容时会出现链表死循环,数据丢失问题JDK1.8:数据被覆盖下面结合源码详细了解其中的奥秘JDK1.7线程非安全jdk7中线程非安全主要是因为在扩容函数 HashMap#transfer()

2021-06-12 17:00:15 219 2

原创 el-upload在chrome浏览器下上传文件ERR_UPLOAD_FILE_CHANGED问题

参考 https://stackoverflow.com/questions/57516930/prevent-html-file-input-from-selecting-files-in-google-drive-while-using-android.

2020-05-28 10:11:23 9146 2

原创 大话设计模式之建造者模式(Java总结)

设计模式之建造者模式前言场景建造者模式代码示例前言  如果需要将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示的意图时,我们需要应用一个设计模式,建造者模式,又叫生成器模式。场景  复杂产品的构建过程建造者模式  将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。代码示例产品类public class Product { ...

2020-04-12 19:31:03 195

原创 大话设计模式之外观模式(Java总结)

设计模式之外观模式前言场景外观模式代码示例何时使用外观模式前言  当我们处理某个业务需要调用多个接口时,可以将这些接口封装在一个高层接口里,通过这个高层接口来调用内部的一组接口。这个高层接口相当于提供给对外的一个界面。因此这种模式就是外观模式。场景  子系统调用外观模式  为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。代码示例...

2020-04-06 09:51:42 234

原创 大话设计模式之模板方法模式(Java总结)

设计模式之模板模式前言场景模板方法模式代码示例前言  我们有时会定义一套简单的业务流程,但是流程的每个步骤具体实现会有区别。模板方法模式就能很好地实现该逻辑。固定的业务流程就相当于是一套模板,每个步骤的具体实现相当于模板的具体内容。场景  抄试卷答题模板方法模式  定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步...

2020-04-05 17:13:18 343

原创 Springboot集成RabbitMQ

Springboot集成RabbitMQ概述项目搭建概述Springboot作为一个流行的轻量级框架,对RabbitMQ提供了很好的支持。本篇我们就介绍如何在Spring Boot中集成RabbitMQ。项目搭建1、pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apa...

2020-02-09 08:28:05 149

原创 linux搭建RabbitMQ服务器

linux搭建RabbitMQ服务器前言环境准备安装RabbitMQ环境配置基本命令前言RabbitMQ采用Erlang语言开发,是基于AMOP标准开发的最受欢迎消息中间件之一。它轻巧,易于部署,并且支持多种消息传递协议,受到大多数程序员的青睐。下面就分享一下在linux上搭建RabblitMQ的流程。环境准备系统: Linux 3.10.0-957.21.3.el7.x86_64Rab...

2020-02-06 15:27:01 689

原创 Mongodb 忘记密码

Mongodb 忘记密码前言相关环境解决方法解决过程前言在自己linux服务器上安装了mongodb,很久没用过了,今天连接时发现忘了密码,于是记录下修改密码的过程。分享给遇到相同问题的伙伴们。相关环境系统: Linux 3.10.0-957.21.3.el7.x86_64mongodb: v4.0.10解决方法我重置密码的方法是删除所有当前帐户,然后添加一个账户,方法有点暴力,有更...

2020-01-27 11:17:14 432 1

原创 docker常用命令

1、yum安装docker:yum -y install docker2、查看docker版本:docker version3、启动 Docker 后台服务service docker start4、测试运行 hello-world,由于本地没有hello-world这个镜像,所以会下载一个hello-world的镜像,并在容器内运行。docker run hello-world5...

2019-12-02 21:16:38 169

原创 Java8使用Stream操作集合运算

前言Srteam是Java 8提供的一个强有力的工具,可以让你以一种声明的方式处理数据。从而写出高效率,干净,简洁的代码。本文记录了使用Stream代替java集合的一些常用繁琐操作。准备工作集合初始化List<String> strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl");List<I...

2019-10-01 15:34:12 2191

原创 解决hexo d命令报错 ERROR Deployer not found: git

解决hexo d命令报错 ERROR Deployer not found: git问题乍现探索过程柳暗花明完美句号问题乍现本来想开开心心搭一个属于自己的博客网站,于是按照网上的教程搭建hexo环境,刚开始一切都很顺利,然而天降大坑,执行hexo d命令部署的时候报如下错误:ERROR Deployer not found: git探索过程根据网上热心人士提供的方法使用以下命令安装he...

2019-07-18 21:39:16 4902 8

原创 Linux安装MongoDB

Linux安装MongoDB前言环境准备安装前言MongoDB是用C++等语言编写的一种面向文档的非关系型数据库,用于解决应用程序开发社区中的大量现实问题,是非关系数据库当中功能最丰富,最像关系数据库的。本文介绍MongoDB在linux系统下的安装。环境准备系统:CentOS 7.4.1708安装包:mongodb-linux-x86_64-4.0.10安装包下载:https://...

2019-07-07 10:09:17 299

转载 区块链-Linux下USDT测试节点搭建

本文转载自https://lhalcyon.com/blockchain-usdt-node/Tether Limited 公司基于 Omni Layer 这层协议(Omni Layer protocol)发行tetherUSD . Omni Layer 是基于比特币区块链的通信协议 , 它实现了智能合约的特性 , 也就是说 tetherUSD是 Omni Layer的一个智能合约 ....

2019-06-20 16:15:38 3222

原创 大话设计模式之原型模式(Java总结)

设计模式之原型模式前言场景原型模式前言  在项目开发中,会遇到多次实例化同一个类的情况,java中每次实例化一个对象都要执行一次构造函数,如果构造函数的执行时间很长,这个初始化操作就会影响代码运行的效率。设计模式中的原型模式就能很好地避免这种情况.场景  简历的复制原型模式  用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。...

2019-06-08 21:55:01 256

原创 大话设计模式之工厂方法模式(Java总结)

设计模式之工厂方法模式前言场景工厂方法模式代码示例优点前言  说到工厂方法模式,就不得不提到简单工厂模式。后者违背了开放-封闭原则,所以才有了后者,即工厂方法模式。场景  加减乘除计算器工厂方法模式  定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例延迟到其子类。代码示例工厂接口public interface IFactory { Op...

2019-05-29 21:07:56 258

原创 大话设计模式之代理模式(Java总结)

设计模式之代理模式前言场景代理模式代码示例前言  代理是我们在开发中经常用到的功能。例如WebService中的远程代理。里面涉及到的设计模式就是代理模式。场景  追求者通过第三方送礼物给被追求者代理模式  为其他对象提供一种代理以控制对这个对象的访问。代码示例代理接口public interface GiveGift { void giveDolls(); ...

2019-05-22 20:35:32 207

原创 大话设计模式之装饰模式(Java总结)

设计模式之装饰模式前言场景策略模式代码示例优点前言  在开发过程中,我们会遇到要将某一个功能赋予额外的职责,并把这些增加了额外职责的功能按照正确的顺序串联起来进行控制,且可以灵活地调换这些顺序,输出最后执行的结果,装饰模式就是这样一个非常有意思的设计模式。场景  衣服、鞋子、领带、披风都可以理解为对人的装饰。而且可以选择先穿衣服再穿鞋子,或者先穿鞋子,再穿衣服策略模式  动态地给一个对...

2019-05-19 14:01:46 213 1

原创 大话设计模式之策略模式(Java总结)

设计模式之策略模式前言场景策略模式代码示例优点前言在项目开发过程中,我们经常会遇到为了达到一个目的会有多种实现方法,并根据需求调用不同的算法去实现。为了能让这个过程更灵活,策略模式就可以派上用场了。场景商场搞促销活动,不同商品有不同的优惠,比如八折、七折、五折、满300送100,满200送50等等。这些活动最终目的只有一个,就是提供优惠。策略模式就能很好地处理这个业务。策略模式策略模...

2019-05-10 22:52:53 194

原创 linux重启oracle数据库

linux重启oracle数据库前言重启流程重启步骤前言在开发过程经常遇到oracle出现问题的情况,很多时候重启可以恢复正常,所以记录一下linux下的oracle重启步骤还是很有必要的。重启流程重启oracle数据库的一般流程是先关监听器,再停数据库实例,然后启动数据库实例,再开监听。重启步骤切换成oracle用户su - oracle进入监听器控制台lsnrctl关闭监...

2018-09-20 16:04:54 1003

转载 基于java类库的3DES加密算法实现

本文转自https://blog.csdn.net/super_cui/article/details/70821138别看3DES的代码很复杂,其实和DES代码一样,核心代码就那么几行加密部分的核心Cipher cipher = Cipher.getInstance("DESede/ECB/PKCS5Padding");cipher.init(Cipher.ENCRYPT_MODE,...

2018-08-19 16:46:42 862

原创 Java实现文本文档的读和写

文件文档的操作在开发过程中很经常要用到。Java中封装了许多非常有用的文件操作API,非常方便。下面我就展示Java简单读写文本文档(txt文件)的示例代码。环境JDK1.8示例代码import java.io.*;import java.util.ArrayList;import java.util.List;/** * @author huangh...

2018-08-19 09:21:19 1501

原创 判断list集合中是否包含某个元素

前言    在开发的过程中,会涉及到很多判断一个数组集合是否包含某个元素的需求。强大的list集合框架通过contains这样一个方法实现了我们的需求。list元素类型是基本类型则可以直接调用contains方法来实现。但是如果元素类型是一个类则需要对这个类做一些处理才能实现我们预想的需求。分析    通过分析contains方法的源码可知,该方法是通过遍历集合中的每一个元素并用equals方法比...

2018-07-15 09:50:34 197056 13

转载 IDEA 下开发web项目部署时,配置文件没有编译的问题

本文转自:https://blog.csdn.net/dennk/article/details/51834508#commentBox以前用eclipse开发web项目时,配置文件直接放在src目录下面,部署的时候会把配置文件也编译到classpath下面。用IDEA可不同了,同样的做法部署时classpath下没有找到配置文件。解决方案:将配置文件放在resources路径下即可(如果没有则新...

2018-06-26 16:23:16 5954

原创 linux系统安装jdk1.7(压缩包)

一、前言        java中想要将项目部署到linux系统的服务器上就免不了要安装jdk,linux上安装jdk主要有两种方式,一种是rpm格式安装,另一种是压缩包安装,我下面介绍后者的安装方法安装jdk1.7。二、下载jdk-7u80-linux-x64.tar.gz    该压缩包可以上jdk官网下载,下载好后将压缩包上传到服务器的某个目录。三、解压安装    在li...

2018-06-18 17:02:59 9143

转载 Centos7升级安装openssh7.5

本文转自https://blog.csdn.net/kwame211/article/details/80111593前言:因centos7自带的ssh版本较低,存在高危漏洞,故升级到最新版本(目前是7.5pl)。注:升级ssh存在一定的危险性,一旦不成功可能无法通过远程连接到系统,因此在升级之前最好先安装vnc或者telnet等远程服务,安装方法可以查看我的其它相关文档。1、准备工作:查看下当前...

2018-06-06 19:38:08 1742

原创 linux运行jar包

要运行java的项目需要先将项目打包成war包或者jar包,打包成war包需要将war包部署到tomcat服务器上才能运行。而打包成jar包可以直接使用java命令执行。在linux系统中运行jar包主要有以下四种方式。一、java -jar XXX.jar这是最基本的jar包执行方式,但是当我们用ctrl+c中断或者关闭窗口时,程序也会中断执行。二、java -jar XXX.jar &amp;...

2018-05-20 16:43:39 40961 2

原创 IntelliJ IDEA中maven打包配置

前言maven不仅是个导包工具,还是个很实用的打包工具。IntelliJ IDEA是目前最好用的ide,里面有自带的maven插件,仅需简单的几步配置,就可以使用maven进行打包。1、编辑配置2、添加maven配置3、输入maven配置的相关信息Command line:clean validate compile packageProfiles(separated with space):-D...

2018-04-17 18:32:29 13950 1

转载 centos7.3安装与配置SVN

转自:http://blog.csdn.net/allyli0022/article/details/73741269参考:http://www.centoscn.com/image-text/config/2016/0429/7146.htmlhttp://blog.csdn.net/u012486840/article/details/525243891、yum命令即可方便的完成安装$ sud...

2018-02-22 17:08:18 493

原创 大话设计模式之简单工厂模式(Java总结)

设计模式是一套被反复使用,多人知晓的,经过分类的,代码设计经验的总结。熟练地运用设计模式可以优化你的代码结构,增强代码的稳定性和扩展性。简单工厂模式是设计模式中比较简单,也比较经常用的一种设计模式。接下来我就用计算器运算的例子来讲解这个模式。

2017-11-25 10:20:28 297

原创 在linux上安装redis

redis是一个非关系型数据库,使用key-value存储数据,可以用来做数据的缓存,提高数据的查询效率。下面我就讲解一下如何在Linux系统上安装redis,非常简单,前提是要将安装的环境配好。安装准备:linux系统(装有gcc编译器)redis安装包(可从官网https://redis.io/下载,我下载的是4.0.2版本)我将redis的安装包放在opt文件

2017-11-12 18:01:08 328

原创 简单的tomcat集群

前言现在的大型网站每天的访问量都很大,要想承受这么大的访问量,就必须有一个方案,解决访问量过大导致的服务器崩溃问题,tomcat集群就是其中的一个解决方案,下面我就用比较简单的tomcat配置方式来实现tomcat的集群。环境准备Tomcat9.0,JDK1.8,Apache  2.4.27 x64,tomcat-connectors-1.2.40-windows-x86_64

2017-10-31 10:16:54 2239 4

转载 CentOS安装图形界面

本文转自:http://blog.csdn.net/gxiaop/article/details/52865176最近想了解一下Linux系统,于是在虚拟机下自己安装了一个,但是由于安装过程中可能漏掉一些配置 导致安装的CentOS系统只有字符界面。 于是在网上查找了一些解决方法,最终橙装安装;下面针对字符界面下安装图形界面可能遇到的问题做一下记录。系统:win

2017-10-01 19:59:14 454

原创 MyBatis的逆向工程

前言与Hibernate不同,MyBatis是一个半自动映射的框架,之所以称它为半自动,是因为它需要手工匹配提供POJO、SQL和映射关系,而全表映射的Hibernate只需要提供POJO和映射关系便可。Mybatis现在还没有正向工程,我下面就分享一下MyBatis的逆向工程。逆向工程就是根据数据库设计的表来自动生成对应的实体类和一些映射配置文件,以及一些简单的增删改查操作,大大地提高了开发

2017-09-23 15:34:16 456

原创 使用maven整合Spring,Spring mvc,mybatis框架

ssm框架(即Spinrg + Spring mvc + mybatis)是现在比较主流的框架,使用maven整合这三个框架非常简单,下面就给大家分享使用maven整合ssm框架的过程。使用的环境jdk1.8tomcat9STS(带有spring插件的eclipse)新建maven项目若pom.xml报 web.xml is miss

2017-09-09 14:32:23 842

原创 如何在eclipse里配置maven插件

前言昨天已经正式开始实训了,现在整理一下实训学过的内容和笔记,方便以后查阅,同时也分享给大家参考一下。实训第一天主要是搭建maven项目,maven是一个很好用的构建工具,尤其是它的自动导包功能,给我们的框架整合带来了极大的方便。现在就分享一下在eclipse中搭建maven项目的经验。下载mavenmaven的下载地址:http://maven.apache.or

2017-09-08 21:33:41 535

原创 PDF.js的使用教程

PDF.js是为html5实现的在线预览pdf框架,所以你的浏览器要支持html5才能使用这个框架。PDF.js要构建后才能使用,以下网址有PDF.js的基本简介,如何获取源码和构建过程GitHub: https://github.com/mozilla/pdf.js/但是我们只需要使用构建后的PDF.js就行了,大家可以通过以下网址下载:

2017-08-31 14:53:36 24353 13

tomcat-connectors-1.2.40-windows-x86_64-httpd-2.4.x

tomcat集群可以用到的tomcat连接,若资源有问题,欢迎在评论区留言

2017-10-31

Apache 2.4.27 x64

tomcat集群可以用到的apache服务器,若资源有问题欢迎在评论区留言

2017-10-31

使用maven搭建的ssm框架

ssm框架是spring,spring mvc,mybatis三大框架的整合,是现在主流的框架。使用maven构建工具整合这三个框架非常容易,如果大家下载后有什么问题或错误欢迎留言评论,谢谢

2017-09-09

空空如也

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

TA关注的人

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