自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 资源 (2)
  • 收藏
  • 关注

原创 四种线程池拒绝策略

一、前言线程池,相信很多人都有用过,没用过相信的也有学习过。但是,线程池的拒绝策略,相信知道的人会少许多。二、四种线程池拒绝策略当线程池的任务缓存队列已满并且线程池中的线程数目达到maximumPoolSize时,如果还有任务到来就会采取任务拒绝策略,通常有以下四种策略:ThreadPoolExecutor.AbortPolicy:丢弃任务并抛出RejectedExecutionException异常。 ThreadPoolExecutor.DiscardPolicy:丢弃任务,但是不抛

2021-02-25 11:25:22 1443

原创 深入理解Java自带的线程池和缓冲队列

前言线程池是什么线程池的概念是初始化线程池时在池中创建空闲的线程,一但有工作任务,可直接使用线程池中的线程进行执行工作任务,任务执行完成后又返回线程池中成为空闲线程。使用线程池可以减少线程的创建和销毁,提高性能。举个例子:我是一个包工头,代表线程池,手底下有若干工人代表线程池中的线程。如果我没接到项目,那么工人就相当于线程池中的空闲线程,一但我接到了项目,我可以立刻让我手下的工人去工作,每个工人同一时间执行只执行一个工作任务,执行完了就去执行另一个工作任务,知道没有工作任务了,这时工人就可以

2021-02-25 11:24:17 873

原创 Lombok使用@Tolerate实现冲突兼容

使用Lombok能够减少程序员的重复工作提高工作效率,而Lombok的注解基本是基于标准的(如,标准的Builder模式),而实际开发的时候有时候为了实现某些能力会对标准实现做一些变形,而这个时候Lombok的标准实现就会无法满足需求。例如,这样一个场景:使用@Builder对一个DTO实现一个构造器,但是在做Json反序列化的时候发生错误,原因就是缺少无参公共的构造函数,而手动写一个无参构造函数的时候编译错误,就是和@Builder冲突,虽然标准的@Builder没法是需要私有化构造...

2021-01-29 11:17:44 5626

原创 线程安全的单例模式

面试的时候,常常会被问到这样一个问题:请您写出一个单例模式(Singleton Pattern)吧。好吧,写就写,这还不容易。顺手写一个:publicfinalclassEagerSingleton {privatestaticEagerSingletonsingObj=newEagerSingleton();privateEagerSingleton(){ }publicstaticEagerSinglet...

2021-01-28 09:09:02 156

原创 JVM的优化

java启动参数共分为三类其一是标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容其二是非标准参数(-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容其三是非Stable参数(-XX),此类参数各个jvm实现会有所不同,将来可能会随时取消,需要慎重使用java虽然是自动回收内存,但是应用程序,尤其服务器程序最好根据业务情况指明内存分配限制。否则可能导致应用程序宕掉。举例说明含义:-Xms128m表示JVM Heap(堆...

2021-01-21 15:59:41 522 1

原创 java面试-JVM调优和参数配置,如何查看JVM系统参数默认值

一、JVM的参数类型:1、标配参数: 1 2 java -version java -help 2、X参数:-Xmixed 混合模式(先编译后执行)-Xint 解释执行-Xcomp 第一次使用就编译成本地代码3、XX参数:Boolean类型:公式:-XX:+ (+表示开启 -表示关闭) 问题:如何查看一个正在运行中的java程序,它的某个JVM参数是否开启?+ View Code 1 ...

2021-01-21 15:26:54 352

原创 linux项目日志分割配置

logrotate 程序是一个日志文件管理工具。用来把旧的日志文件删除,并创建新的日志文件,我们把它叫做“转储”。我们可以根据日志文件的大小,也可以根据其天数来转储,这个过程一般通过 cron 程序来执行。linux已经默认安装有logrotate包1./etc/logrotate.conf #主配置文件#配置参数daily 指定转储周期为每天weekly 指定转储周期为每周monthly 指定转储周期为每月rotate 转储次数,超过将会删除最老的那一个missingok 忽略错.

2021-01-20 14:28:30 859

原创 推荐五款浏览Github必备的Chrome插件

gitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名gitHub。相信很多人都知道gitHub,但小编还是要介绍一下。gitHub于2008年4月10日正式上线,除了git代码仓库托管及基本的 Web管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。目前,其注册用户已经超过350万,托管版本数量也是非常之多,其中不乏知名开源项目 Ruby on Rails、jQuery、python 等。但我们

2021-01-19 15:40:16 6386

原创 并发编程之Semaphore原理与应用

点赞再看,养成习惯,公众号搜一搜【一角钱技术】关注更多原创技术文章。本文GitHuborg_hejianhui/JavaStudy已收录,有我的系列文章。前言控制并发流程的工具类,作用就是帮助我们程序员更容易的让线程之间合作,让线程之间相互配合来满足业务逻辑。比如让线程A等待线程B执行完毕后再执行等合作策略。控制并发流程的工具类主要有:类 作用 说明 Semaphore 信号量,可以通过控制“许可证”的数量,来保证线程之间的配合 线程只有拿到“许可...

2021-01-11 09:11:58 969

原创 windows系统如何cmd查看端口被占用、杀进程

首先是启动windows的命令窗口,按键盘上的windows+R,然后在输入框中输入cmd,既可以启动命令窗口 进入windows命令窗口之后,输入命令,输入netstat -ano然后回车,就可以看到系统当前所有的端口使用情况。 通过命令查找某一特定端口,在命令窗口中输入命令中输入netstat -ano |findstr "端口号",然后回车就可以看到这个端口被哪个应用占用。 查看到对应的进程id之后,就可以通过id查找对应的进程名称,使用命令tasklist |findstr "进程id..

2020-12-29 16:31:02 602

原创 Java堆内存模型及其gc回收机制

目录[-]堆内存 GC 堆 GC 日志 JVM 参数选项堆内存Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。在 Java 中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。新生代 ( Young ) 又被划分为三个区域:Eden、From Survivor、ToSurvivor。这样划分的目的是为了使 JVM 能够更好的管理堆内存中的对象,包括内存的分配以及回收。堆的内存模型大致为:从图中可以看出:..

2020-12-22 19:52:41 79

转载 五分钟了解Mysql的行级锁——《深究Mysql锁》

延伸阅读:三分钟了解Mysql的表级锁一分钟深入Mysql的意向锁mysql锁相关讲解及其应用——《深究mysql锁》了解锁前,一定要先看这篇,了解什么是MVCC,如果我们学习锁,没有MVCC的知识,理解起来会总觉得不明朗。本来我的这个只是个记录,并不是专门的讲给别人看的,后发现有不少人看,我还是专门加上这篇文章的链接。我们首先需要知道的一个大前提是:mysql的锁是由具体的存储引擎实现的。所以像Mysql的默认引擎MyISAM和第三方插件引擎 InnoDB的锁实现机制是有区别的。Mysql有三种

2020-12-22 15:46:59 145

转载 数据库常用的几种引擎,区别和比较

面试官经常问的基础问题,就是基于MySQL数据库的这几种引擎。·MyISAM:默认的MySQL插件式存储引擎,它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。注意,通过更改STORAGE_ENGINE配置变量,能够方便地更改MySQL服务器的默认存储引擎。·InnoDB:用于事务处理应用程序,具有众多特性,包括ACID事务支持。(提供行级锁)· BDB:可替代InnoDB的事务引擎,支持COMMIT、ROLLBACK和其他事务特性。· Memory:将所有数据保存在R...

2020-12-22 15:40:46 3607

转载 分布式锁的3种实现(数据库、缓存、Zookeeper)

分布式锁的几种实现方式目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。分布式的CAP理论告诉我们,任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance),最多只能同时满足两项。所以,很多系统在设计之初就要对这三者做出取舍。在互联网领域的绝大多数的场景中,都需要牺牲强一致性来换取系统的高可用性,系统往往只需要保证“最终一致性”,只要这个最终时间是在用

2020-12-22 15:36:50 136

原创 如何为开发项目编写规范的README文件

为什么要写README文件?  对于这个问题详解,请看博客:http://www.cnblogs.com/wj-1314/p/7551184.html  这个问题很简单,因为README的编写,过了很长时间后,你仍然知道你当初写了什么;因为README的编写,其他人看你的代码不需要那么费劲;因为README的编写,你代码的质量就大大的提高;因为README的编写,你的语言水平就大大的提高了。  所以说README应该简短,大家不要以为写这个很麻烦,这个东西能够节省你和别人的很多时间。完...

2020-12-15 17:19:04 2876

原创 windows通过命令杀进程,查询端口

首先是启动windows的命令窗口,按键盘上的windows+R,然后在输入框中输入cmd,既可以启动命令窗口 进入windows命令窗口之后,输入命令,输入netstat -ano然后回车,就可以看到系统当前所有的端口使用情况。 通过命令查找某一特定端口,在命令窗口中输入命令中输入netstat -ano |findstr "端口号",然后回车就可以看到这个端口被哪个应用占用。 查看到对应的进程id之后,就可以通过id查找对应的进程名称,使用命令t...

2020-12-15 15:37:52 704

原创 SpringBoot系列——花里胡哨的banner.txt

SpringBoot系列——花里胡哨的banner.txt前言  我们注意到springboot项目启动时,控制台会打印自带的banner,然后对于部分IT骚年来说,太单调太普通太一般了;所以,是时候表演真正的技术了  项目结构  我们只需要在springboot项目的resources文件夹下面创建一个banner.txt文件,springboot启动的时候会去加载这个文件,项目结构:  banner.txt  这里有几个定制banner的网站,文字、图片...

2020-12-14 15:45:27 927 1

原创 在Linux系统上安装Git

Git是目前流行的非常好用的版本控制工具,这里介绍两种安装方式,1、yum安装,2、从github上下载最新的源码编译后安装一、yum安装1、在Linux上是有yum安装Git,非常简单,只需要一行命令yum -y install git输入 git --version查看Git是否安装完成以及查看其版本号顺便说一下,yum安装git被安装在/usr/libexec/git-core目录下至此,yum安装git完成。二、从GitHub上下载最新的源码编译后安装yum安装这么简单,为什么还要学

2020-12-12 16:33:33 450

原创 idea远程调试方法

远程调试是调试服务器的有效手段,远程服务器运行的应用可以在本地代码中打断点调试,能让开发人员准确定位服务器上的问题。一、开启远程调试前提:本地代码与服务器代码一致,二、开启远程调试步骤  1.开发工具配置  idea端打开Edit configurations,    增加Remote    配置remote  2.远程服务启动  java -jar-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,..

2020-12-02 11:29:44 629

转载 在网页中显示WORD域(eq)代码公式的思路

一、什么是EQ域?嗯,大概清楚了。它是用来编写公式用的东东。那该怎么怎么使用呢?二、EQ域的基本使用基本格式是{ eq switch}eq为域的限定符,switch代表开关,如:分数开关\f(分子,分母)。实例{ eq \f(3,4)}渲染出来的是3 4 \frac{3}{4}43​。注意:在WORD中直接输入该格式的文本是不起作用的,需要使用ctrl + f9快捷键插入一个域,此时会自动添加出一对花括号{},然后再输入eq限定符及相应的开关即可。三、EQ域开关switch明白了..

2020-09-19 14:40:57 1620 1

原创 Notepad++安装xml插件

环境: win7 64位 Notepad++7.3.3原生的Notepad++不自带xml文件的插件,所以在显示xml文件时并不分行(如下图所示),对于用户编辑,查看的操作而言,并不友好,所以需要安装一个xml的插件安装方法:关闭Notepad++ 到https://sourceforge.net/projects/npp-plugins/files/XML%20Tools/Xml%20Tools%202.4.9%20Unicode/下载xml插件的压缩包,我下载的是这个:解压后得到若干文件.

2020-09-19 13:42:56 2035

原创 项目自动脚本

项目里面经常用到的启动jar包的shell脚本,如果有错误或者优化请补充PID=$(ps -elf | grep que-service-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{print $4}');echo '重启前que-service进程号'echo $PIDkill -9 $PIDwaitgit pullecho '代码更新成功'waitecho '开始给项目打包'mvn clean package -DskipTe...

2020-09-17 15:20:26 307 1

原创 Office中数学公式用Java解析,java解析word公式

公司正在做教育类产品,在遇到数学公式时,我们一般会使用latex表达式来做保存和渲染。在其中一个项目上,遇到一个需求是要从office文档(Word或Excel)中导入题目内容至数据库,题目内容中就有可能包括数学公式,而在文档中编辑希望使用office的公式插件来写公式元素。其实公司之前的产品已经使用.net实现过此功能,不过现在公司全面转型Java,我们也要研究出一个适用Java的解决方案。office文档中的公式编辑器mathtype插件mathtype是一个第三方的数学公式插件,它能在

2020-09-07 19:35:11 3995 8

原创 理解new Thread的弊端及Java四种线程池的使用

1.new Thread的弊端执行一个异步任务你还只是如下new Thread吗?new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub } }).start();说说弊端:a. 每次new Thread新建对象性能差。b. 线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可能占用过多

2020-08-18 08:50:08 1082

转载 win10下修改rabbitmq默认端口

因为业务需要断网操作,之前弄了一台Windows服务器,并使用的是activemq消息队列,用于特殊业务的中转,现在外部系统重构后需要采用的是rabbitmq,所以Windows服务器上需要支持rabbitmq,于是下载安装,创建角色,授权,一通搞,单个启动rabbitmq时没有任何问题,但是activemq切启动报端口占用,闪退。经过排查发现activemq使用的默认协议端口5672,和rabblitmq的默认端口冲突了,在不影响业务的情况下,只能修改rabbltmq的tcp监听端口。各种尝试有报错,有不

2020-08-13 22:54:57 2106

转载 Windows下RabbitMQ安装及配置

rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统。它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rabbit MQ 是建立在Erlang OTP平台上。1、安装Erlang下载地址:https://www.erlang.org/downloads,本文选择OTP 21.0.1 Windows 64-bit Binary File(91707927)设置环境变量,新建ERLANG_HOME修.

2020-08-13 22:54:09 183

原创 JAVA Apache POI解析docx格式

关于JAVA Apache POI读取word文档,网上资料很多,但是大多数还是仅仅提取文档中的纯文本,好一点的,也就提取所有图片,但是,word文档本身是具有样式的,这样简单粗暴的提取就会丢失字体、字号、颜色、粗体、斜体等一系列样式,也没有办法还原图片在文档流中的位置,没有办法提取出表格。docx格式的word文件实际上是一个压缩包,通过修改后缀名为rar后可用winrar打开,里面实际上是xml文件这是因为docx文件遵循了OfficeOpenXML规范,该规范内容很多,有兴趣的同学可以自行

2020-07-30 09:27:54 1540 2

原创 Git命令实现本地文件推送到git仓库

前提:①确定本机(windows环境)已经安装git(https://git-scm.com/downloads)②建立好远程Git仓库1、在你想推送的文件夹下:右键→选择Git Bath Here 弹出如下命令框:2、输入:git init (在当前文件夹下初始化一个git仓库)3、输入:git add . (将当前工作区的所有文件存放到暂存区) 4、输入:git commit -m "cuihan测试"...

2020-06-18 08:39:49 696

原创 Idea代码注释模板

这篇文章记录一下自己常用的代码注释模板以便翻阅类注释/** * TODO * Created on $date$ $time$ * @author $author$ * @version V1.0 */其中$$符号中间的函数参见idean中的内置函数方法注释/** * TODO * Created on $date$ $time...

2020-04-09 12:55:47 1177

原创 ES的基本用法

ES的基本概念 1> 集群和节点一个es集群是由一个或多和es节点组成的集合每一个集群都有一个名字, 如之前的wali每个节点都有自己的名字, 如之前的master, slave1, slave2节点是可以存储数据, 参与索引数据等的独立服务2> 索引(类似于数据库里面的database)索引是含有相同属性的文档集合索引在es中是通过一个...

2020-03-30 03:06:18 3127

原创 ES的程序开发

背景描述:系统搜索推广活动,由以前的数据库模糊匹配的方式切换为搜索引擎的方式,选用的内容以ElasticSearch为主,本篇文档主要记录了使用ES进行单节点部署以及开发ES搜索的代码讲解,最后会上传部分代码供大家参考。系统环境:部署环境:CentOS 6.7 + JDK 1.7 + ElasticSearch 2.3.5开发环境...

2020-03-30 02:59:17 786

原创 git常用命令查询

正常的拉取代码就是git clone + (git的仓库地址)而有时候你可以不需要提前切换好分支,直接使用如下命令进行指定分支下代码的拉取。git clone -b +hzh(这个括号里的是注解:分支名) + git仓库地址比如我的仓库地址是git@git.labs.zhonghao.com:services/xxx.git,分支是hzh-v1则拉取该分支下代码的方式就是:...

2020-03-30 01:02:04 141

原创 ActiveMQ的安装与使用

1、什么是ActiveMQ 1 ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。 2 主要特点: 3   1). 多种语言和协议编写客户端。语言: Java, C, C...

2020-03-29 21:06:35 339

原创 yum安装jdk环境变量配置

系统版本[root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) #安装之前先查看一下有无系统自带jdkrpm -qa |grep javarpm -qa |grep jdkrpm -qa |grep gcj#如果有就使用批量卸载命令rpm -qa | gre...

2020-03-29 20:36:37 1320

原创 elasticsearch(ES)的安装部署及其插件安装

安装方式curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.2.tar.gz 修改elasticsearch.yml[hadoop@hadoop004 config]$ vim elasticsearch.yml cluster.name: my-ap...

2020-03-29 13:37:45 1012

原创 pm2怎么使用,pm2启动npm的命令

pm2 start npm --name 别名 -- run start:prodnpm run start 变成pm2的模式 就是 pm2 start npm -- run start其中 --watch 是监视代码改动就自动重启--name 是指定pm2项目名 pm2 start npm --name nest -- run start:prod pm2 st...

2020-03-29 13:29:01 4821

原创 Intellij热部署插件JRebel

Intellij热部署插件JRebel安装JRebel激活JRebel相关设置Intellij热部署插件JRebel项目需求,一直用eclipse的我,也要改用IDEA了,一开始,很不习惯。经过几天的慢慢摸索和习惯之后,发现IDEA确实很好用。dark的界面是我喜欢的,智能的提示也让写代码不再枯燥。遗憾的是IDEA本身没有集成热部署工具,一开始改动代码之后,都需要重新run或者deb...

2020-03-26 15:19:22 86

原创 MySQL安装之yum安装

在CentOS7中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB。1. 下载并安装MySQL官方的Yum Repository 1 [root@BrianZhu /]# wget -i -c http://dev.mysql.com/get/mysql57-commun...

2020-03-25 19:27:42 94

原创 在Nginx/Tengine服务器上安装证书

阿里云SSL证书服务支持下载SSL证书安装到IIS服务器上,从而使IIS服务器支持HTTPS安全访问。本文介绍了证书安装的具体操作。前提条件申请证书时需要选择系统自动创建CSR。申请证书时如果选择手动创建CSR,则不会生成证书文件。您需要选择其他服务器下载.crt证书文件后,使用openssl命令将.crt文件的证书转换成.pfx格式。操作步骤在SSL证书页面,单击已签发标签,...

2020-03-11 22:45:09 162

原创 Nginx 实现按域名分类转发

通过nginx配置不同的域名来实现转发到不同的tomcatbook.felix.com -> 127.0.0.1:8001movie.felix.com -> 127.0.0.1:8002#配置负载均衡池#Demo1负载均衡池upstream book_pool{ server 127.0.0.1:8001;}#Demo2负载均衡池upstream...

2020-03-08 12:57:42 548

word的Mathtype的latex文本解析

已经在csdn上传原文 https://blog.csdn.net/qq_41536778/article/details/108454415 百度搜索 "java解析mathtype" " OMath解析" 顺位第一名的文章 能找到这里,怎么你已经对word公式解析已经有一定认识了 这里应该你已经拿到了mathtype的图片.如果没拿到可以看下上面的连接文章, 剩下的就是拿取到Matype的公式文本了, 经过分析xml,发现需要解析公式文本的本质是解析二进制文件 xxx.ole 所以以上程序就是负责解析这个的 命令: mteg - f xxx.ole 直接解析ole文件输出控制台

2021-01-14

验证码图片生成器,java源码

验证码生成器,可以一键生成验证码!简单实用,适用于大部分需要验证码的场景,并且可以自己设置验证码的类型

2020-09-26

空空如也

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

TA关注的人

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