周常
超大仙在努力
热爱技术,拥抱变化
展开
-
Java配置带密码的ElasticSearch客户端
@Configurationpublic class ElasticSearchConfiguration { public static final String username = "elastic"; public static final String password = "你的密码"; //通用设置项 public static final RequestOptions COMMON_OPTIONS; static { Requ.原创 2020-08-19 11:30:48 · 3006 阅读 · 0 评论 -
ElasticSearch设置账户密码(Docker,Windows,Linux适用)
最近测试一个商场项目,隔几天ES的数据就被清空一次,碰到这种人也确实是缺德,主要原因还是ES的端口向外暴露,而且没有设置账号密码导致的,今天就给大家来提供一个解决方法.注:此方案适用于Windows,Linux或者Docker下的ElasticSearch.那么进入正题,首先使用docker exec -it elasticsearch bash进入es容器中,window下直接在docker的安装目录打开cmd即可.进入后的文件夹如下图所示:进入config文件夹编辑ela..原创 2020-08-19 11:29:08 · 7408 阅读 · 2 评论 -
Tomcat请求源码流程分析(图解及源码注释) (六)
Tomcat源码系列:本章为Tomcat请求解析流程的第二章,主要内容为在请求转交给Coyote适配器后的流程分析原创 2020-08-18 19:44:37 · 593 阅读 · 2 评论 -
Tomcat请求源码流程分析(图解及源码注释) (五)
Tomcat源码系列:本章为Tomcat请求解析流程的第一章,主要内容为请求由Endpoint捕获,并转交给Processor处理.原创 2020-08-18 17:56:30 · 547 阅读 · 2 评论 -
DCL单例模式中的volatile解析(含图解)
对不清楚单例模式的小伙伴可以参考我的另一篇文章:八种单例模式使用,最全单例模式!(优缺点分析)在Java中单例模式存在这么一种情况如下:/** * DCL双锁校验 * 线程安全 * volatile关键字用于防止指令重排序 */class Singleton { private static volatile Singleton singleton; private Singleton() {} public static Singleton getIn原创 2020-08-18 12:14:20 · 1509 阅读 · 0 评论 -
八种单例模式使用,最全单例模式!(优缺点分析)
最全Java单例模式构建,包含优缺点分析,以及推荐使用说明.原创 2020-08-18 11:41:59 · 310 阅读 · 0 评论 -
Tomcat源码运行控制台乱码解决方案
碰到Tomcat源码运行时控制台乱码的解决方案:1. Ctrl+N 找到 org.apache.tomcat.util.res.StringManager类 Ctrl+F找到getString(final String key, final Object... args)方法,将代码更改为public String getString(final String key, final Object... args) { String value = getString(ke..原创 2020-08-12 09:18:47 · 537 阅读 · 0 评论 -
23种设计模式UML图(附说明)
参考大话设计模式的23中UML类图,源文件下载(可由ProcessOn导入修改).原创 2020-07-31 21:03:56 · 1055 阅读 · 1 评论 -
JAVA反射实现委托模型(方法可以传入参数)
委托模式是软件设计模式中的一项基本技巧。在委托模式中,有两个对象参与处理同一个请求,接受请求的对象将请求委托给另一个对象来处理。委托模式是一项基本技巧,许多其他的模式,如状态模式、策略模式、访问者模式本质上是在更特殊的场合采用了委托模式。委托模式使得我们可以用聚合来替代继承. 在C#中,委托由delegate实现,在Java中并没有委托机制,所以我们可以选择用反射来实现委托,下面看看具体的代码.通知者(主题)实现:package 事件委托模式;import java.lang...原创 2020-07-28 16:34:05 · 423 阅读 · 0 评论 -
泛型的使用实例:构建随机的搜索二叉树(可以使用任意类型的数据)
使用此工具类注意事项: 用户需要自定义一个类,该类用作树节点TreeNode<T,V>的T泛型,自定义类中需要包含一个用于比较的数据. 用户自定义类中的数据需要实现Comparable接口. 用户自定义的类需要实现RandomValue接口(自定义接口,下图代码中以及包含)以及Comparable借口. 此工具类以及提供两个实例,以及两个实例的测试代码,可供参考. 该工具类仅供学习,如有不足或泛型使用不当,可以和我交流改进.package 二...原创 2020-07-23 16:59:26 · 240 阅读 · 0 评论 -
Spring Boot 2.x以上 Hikaricp连接池连接失效导致报错,第一次访问超时问题解决
在SpringBoot 2.x以上使用了Hikaricp连接池,最近在写项目时发现,在项目十分钟之内没有对数据库进行操作时,会报错 java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30000ms导致项目隔一段时间內,...原创 2020-04-09 00:22:07 · 7345 阅读 · 2 评论 -
Docker安装mysql
下载mysql镜像 docker pull mysql 默认情况下下载最新版本,即mysql8.0 允许mysql容器:注意mysql8.0与mysql5.7存在差别: 8.0 docker run -p 3306:3306 --name mysql \-v /mydata/mysql/log:/var/log/mysql \-v /mydata/mysql...原创 2020-04-02 14:54:37 · 133 阅读 · 0 评论 -
HashMap源码解析(四) removeNode方法
final HashMap.Node<K, V> removeNode(int hash, Object key, Object value, boolean matchValue, boolean movable) { //获取临时变量tab存储table数组 HashMap.Node[] tab; HashMap.Node p; ...原创 2020-03-24 11:45:33 · 386 阅读 · 0 评论 -
HashMap源码解读(三) putMapEntries方法
/** * 该函数用于将一个map赋值给新的HashMap * @param m 传入的map集合 * @param evict */ final void putMapEntries(Map<? extends K, ? extends V> m, boolean evict) { //获取传入的map集合的大小 ...原创 2020-03-24 11:30:33 · 776 阅读 · 0 评论 -
HashMap源码解读(二) putVal方法
/** * * @param key 需要存入数组中的元素键 * @param value 需要存入数组中的元素值 * @return 返回被存入的元素值 */ public V put(K key, V value) { return this.putVal(hash(key), key, value, false, t...原创 2020-03-24 11:29:01 · 217 阅读 · 0 评论 -
HashMap源码解读(一) getNode方法
/** * 该函数用于获取指定key的value * @param key 传入的key * @return 返回查找到的value对象,查找到则返回对象,没有则返回空 */ public V get(Object key) { HashMap.Node e; return (e = this.getNode(has...原创 2020-03-24 11:27:24 · 1774 阅读 · 0 评论 -
ReentrantLock源码分析(下)
序 --早年间由于synchronized关键字的效率问题,导致在jdk1.6版本之前,著名的daoglee先生编写出了ReentrantLock提供给我们使用,一方面是因为synchronized锁在jdk1.6之间是一把重量级锁,无论是线程的交替执行,或者是并发执行,都会调用OS系统的函数,导致及其耗费时间,ReentrantLock却在java的层面上大幅度的解决了这一问题,今天,我们就...原创 2020-03-07 09:58:48 · 75 阅读 · 0 评论 -
ReentrantLock源码解析(上)
序 --早年间由于synchronized关键字的效率问题,导致在jdk1.6版本之前,著名的daoglee先生编写出了ReentrantLock提供给我们使用,一方面是因为synchronized锁在jdk1.6之间是一把重量级锁,无论是线程的交替执行,或者是并发执行,都会调用OS系统的函数,导致及其耗费时间,ReentrantLock却在java的层面上大幅度的解决了这一问题,今天,我们就...原创 2020-03-06 21:31:01 · 153 阅读 · 1 评论 -
Spring Boot启动流程简要分析
在学习玩SSM三大框架之后,深刻的认识到了框架的伟大,以及使用起来的快捷以及方便,近期开始学习SpringBoot框架,在SpringBoot的框架中,它更是将框架的使用精简到了另一中地步,今天我们来简要分析一下SpringBoot的启动流程.以下是SpringBoot一个最简单的程序:@SpringBootApplicationpublic class Spri...原创 2019-12-11 01:37:25 · 111 阅读 · 0 评论 -
SSM框架整合开发踩坑(使用BootStrap在网页中不生效)
今天早上在SSM整合开发过程中,使用BootStrap框架中的css样式,发现始终无法正常使用,f12打开浏览器一直报错,发现无法找到bootstrap的css和js样式.在早期的SpringMVC中,MVC对于静态资源的访问不能很好的处理.于是在后期SpringMVC开发团队给出了多种解决方法.1.在SpringMVC.xml的配置文件中使用mvc:resources标签,使M...原创 2019-12-07 10:26:19 · 1250 阅读 · 2 评论 -
SSM框架整合整合过程中踩的坑(@Resource 出错 java.lang.NoSuchMethodError: javax.annotation.Resource.lookup())
在整合SSM框架的过程中,使用SpringMVC整合Spring在Tomcat服务器启动时,发现在Controller中无法成功注入Service层并爆出错误@Resource 出错 java.lang.NoSuchMethodError: javax.annotation.Resource.lookup().解决方案:在pom.xml文件中加入如下坐标:<depende...原创 2019-12-07 02:23:45 · 764 阅读 · 2 评论 -
BM算法(字符串匹配问题)
1.什么是BM算法 Boyer-Moore字符串搜索算法是一种非常高效的字符串搜索算法。此算法仅对搜索目标字符串(关键字)进行预处理,而非被搜索的字符串。虽然Boyer-Moore算法的执行时间同样线性依赖于被搜索字符串的大小,但是通常仅为其它算法的一小部分:它不需要对被搜索的字符串中的字符进行逐一比较,而会跳过其中某些部分。通常搜索关键字越长,算法速度越快。它的效率来自于这样的...原创 2019-10-12 15:15:49 · 595 阅读 · 1 评论 -
约瑟夫环数组模拟循环列表实现
halo各位看客老爷们大家好,今天我们要介绍的主题是约瑟夫环,那么什么是约瑟夫环呢? 约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。通常解决这类问题时我们把编号从0~n-1,最后结果+1即为原问...原创 2019-02-12 14:05:22 · 551 阅读 · 3 评论 -
优先队列的C与C++
halo,各位看客老爷们,又是我!!今天我们来学习一种我们以后经常会用到的数据结构 ——堆(也就是我们常说的优先队列) 那么什么是优先队列呢?且听我慢慢道来,在我们C语言的学习中,我们知道,在一个未知排序的数组中,我们删除最小或者最大数的时间复杂度是O(n),也就是说,每当我们希望从数组中删除最小数或者最大数,我们需要对数组进行一次遍历,找到我们要删除的数,才能删除。那么如果我们想要在...原创 2019-02-04 11:41:45 · 188 阅读 · 0 评论 -
哈夫曼编码的构建与输出
哈夫曼编码的构建与输出halo各位看客们,最近接触到了一个很有趣且神奇的东西:哈夫曼编码!!!那么什么是哈夫曼编码呢?我们以前看抗日神剧的时候可能经常接触到神秘电报密码这种东西,没错了,很多电报的破译就是由哈夫曼编码构成的,话不多说,让我们来见识一下这个神秘的东西。先上我们在开头的宏定义以及头文件:#include<stdio.h>#include<stdli...原创 2019-01-27 13:38:20 · 3039 阅读 · 0 评论 -
冒牌排序及其优化(鸡尾酒排序)
关于冒牌排序及其几种优化:初学c语言我们就知道冒泡排序这种东西,虽然冒泡排序的运行效率并不高,但是并不妨碍我们写这种排序的热情,因为好写鸭!首先是我们的主程序部分,用time函数获取随机数并赋值.不同的童鞋可以去看看rand()与time()的介绍. #include<stdio.h>#include<time.h>#include<stdl...原创 2018-12-24 20:06:50 · 210 阅读 · 0 评论 -
关于疯狂JAVA中简易聊天客户端的实现流程
Halo,各位看官老爷们大家好,时隔两个月,我终于闭关回来了. 今天要给各位看的东西就不得了了,是我多天苦修,终于修成的对一个在CMD界面下的JAVA聊天室的理解! 首先接触到Socket网络编程的时候.我也是一脸懵逼的,但是其实只要理解了客户端与服务端之间的关系就很好理解了,首先我们要知道的是服务端和客户端其实都是一个Socket实例,Se...原创 2019-05-29 16:45:23 · 267 阅读 · 3 评论 -
基于TCP,UDP的聊天室3.0版本(实现GUI界面,私聊,文件传输以及可实时变动的文件列表,用户列表)
哈喽观众老爷们,经过不懈的努力,在6月6日的早上,聊天室3.0版本终于诞生了!!!(下载地址在文章末尾) 看过我前两期的聊天室的看客们可能知道,前两期的内容涉及的东西仅只有TCP,并且智能在cmd命令下运行,但是这一次的项目已经是比较完善的聊天室了,实现了客户端:群聊,私聊,GUI界面(Swing编程),以及文件传输(UDP),可更新的在线用户列表和文件列表!服务...原创 2019-06-07 00:40:41 · 2055 阅读 · 3 评论 -
关于疯狂JAVA中聊天客户端的实现流程2(私聊与群聊)
Halo, 看客老爷们大家好, 今天我们的主题还是聊天室, 那么我们这次的聊天室会有什么不同呢! 相信大家看标题就能看出来了, 没错!我们这次的聊天室添加了私聊功能!为什么添加了私聊功能我们需要重新写一篇博客来讲述,且听我道来! 只有群聊的聊天室里,我们只需要客户端向服务端发送信息,服务端接受信息,并向所有客户端反馈接受到的信息,逻辑非常的简介明了,看似添加私聊功能...原创 2019-05-29 21:20:07 · 1381 阅读 · 1 评论 -
Java工具类的运用(使JTextField绑定到Enter)
最近在写校园导航项目的时候遇到一个小问题,怎么将Enter按钮绑定到一个容器上去,在经过八方查找以后,确实找到了最简单的实现方案,只需要加上一句话,即可使一个按钮绑定到Enter键,即在按下Enter时直接触发一个按钮事件,先来看看代码:JFrame.getRootPane().setDefaultButton(JButton); 其中JFrame是顶级容器,JButton...原创 2019-07-19 15:07:24 · 542 阅读 · 0 评论 -
2019暑期项目(校园导航系统)总结
序: HALO,各位看客们大家好,距离暑假已经过去了一周,我们实验室的暑期留校生活也已经过去了五天,在这五天内,基本完成了我的暑假第一个项目--校园导航系统!!GUI界面由java自带的swing编写,风格使用nimbus风格,谈不上好看,但是功能基本已经实现完全.经过五天,每天12小时高强度的打代码时间,总算获得了些许收获.首先看看这个项目的效果图首先是登陆界面:...原创 2019-07-19 20:06:25 · 2767 阅读 · 15 评论 -
校园导航系统---2019暑期项目第二周总结
序: HALO,各位看客们大家好,距离暑假已经过去了两周,我们实验室的暑期留校生活也已经过去了两周,在第一周之后的一个星期,对暑期项目----校园导航系统进行了最后的完善.历时两周完成了校园导航系统.首先是登陆界面:新增功能:1,记住密码,在普通用户登录时可选择记住密码,在下次登陆时,密码会在密码框内以圆点方式出现.2,自动登陆,用户登陆时可选择自动登录,在程序下...原创 2019-07-27 10:33:24 · 1413 阅读 · 15 评论 -
KMP简介以及反证法证明在KMP算法中,模式串的快速移动一定不会错过正确匹配位置
KMP算法预备知识:前缀表(next数组)建议先了解前缀表概念了解后再阅读本文文本串(被匹配的长串)模式串(子串)失配(在文本串与模式串匹配的过程中,不匹配的那个字符位置)1.什么是KMP算法: 通过前缀表的预处理,加速模式串移动的速度,达到时间复杂度的缩减.2.KMP算法的由来: 关于字符串匹配这一方面,首先我们能想到的方法也就是最简单...原创 2019-10-11 19:48:28 · 556 阅读 · 0 评论