自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 资源 (4)
  • 收藏
  • 关注

原创 深入Golang内存管理(二) 内存分配篇

内存布局篇前言内存分配基础概念线性分配空闲链表分配前言程序中的数据和变量都会被分配到程序所在的虚拟内存中,内存空间包含两个重要区域:栈区(Stack)和堆区(Heap).函数调用的参数,返回值以及局部变量大都会被分配到栈上,这部分内存会由编译器进行管理;不同编程语言使用不同的方法管理堆区的内存, 例如C++ 等编程语言会由工程师主动申请和释放内存, Go 以及 Java 等编程语言会由工程师和编译器共同管理, 堆中的对象由内存分配器分配并由垃圾收集器回收.本文是深入Golang内存管理的第二篇,在第

2021-04-07 18:25:23 1084

原创 深入Golang内存管理(一) TCMalloc篇

想用好Golang,需要深入Golang

2021-04-01 17:03:38 1658

原创 深入Golang内存管理(三) 内存对齐篇

这里写自定义目录标题Go struct 内存对齐举个例子原理术语为什么要关心对齐为什么要做内存对齐数据结构对齐Go struct 内存对齐你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。举个例子下面是腾讯的面试题:type S struct { A uint32 B uint64 C uint64 D uint64 E struct{}}上面的struct

2021-10-27 16:16:31 752

原创 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 2879

原创 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 7321 2

原创 Tomcat请求源码流程分析(图解及源码注释) (六)

Tomcat源码系列:本章为Tomcat请求解析流程的第二章,主要内容为在请求转交给Coyote适配器后的流程分析

2020-08-18 19:44:37 575 2

原创 Tomcat请求源码流程分析(图解及源码注释) (五)

Tomcat源码系列:本章为Tomcat请求解析流程的第一章,主要内容为请求由Endpoint捕获,并转交给Processor处理.

2020-08-18 17:56:30 531 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 1498

原创 八种单例模式使用,最全单例模式!(优缺点分析)

最全Java单例模式构建,包含优缺点分析,以及推荐使用说明.

2020-08-18 11:41:59 300

原创 Tomcat中LifecycleListener监听器原理分析(观察者模式的运用)

对于读过我Tomcat启动流程的小伙伴们应该清楚,在Host容器启动的过程中会激发HostConfig监听器,从而使得HostConfig可以根据对应的web.xml文件构建Context容器并加入Host中,那么HostConfig监听器到底是如何激发的呢?没有看过启动源码的小伙伴可以移步下文梳理一下过程:Tomcat启动源码流程分析(图解及源码注释) (三)Tomcat启动源码流程分析(图解及源码注释) (四)首先我们要知道无论是Engine,Host,Context,Server等等都

2020-08-15 11:11:51 1762

原创 Tomcat启动源码流程分析(图解及源码注释) (四)

Tomcat源码系列:本章为Tomcat初始化流程的第二章,主要内容为Connector的启动分支.

2020-08-15 09:56:55 369 2

原创 Tomcat启动源码流程分析(图解及源码注释) (三)

Tomcat源码系列:本章为Tomcat初始化流程的第一章,主要内容为Engine启动分支

2020-08-15 09:50:24 821

原创 Tomcat初始化源码流程分析(图解及源码注释) (二)

Tomcat源码系列:本章为Tomcat初始化流程的第二章,主要内容有Server的初始化,Engine的初始化以及Connector的初始化

2020-08-12 18:29:10 488

原创 Tomcat初始化源码流程分析(图解及源码注释) (一)

Tomcat源码系列:本章为Tomcat初始化流程的第一章,主要内容有Bootstrap启动类的初始化,Catalina实例的初始化,以及Server实例的初始化.

2020-08-12 17:55:24 1083 1

原创 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 522

原创 23种设计模式UML图(附说明)

参考大话设计模式的23中UML类图,源文件下载(可由ProcessOn导入修改).

2020-07-31 21:03:56 1037 1

原创 JAVA反射实现委托模型(方法可以传入参数)

委托模式是软件设计模式中的一项基本技巧。在委托模式中,有两个对象参与处理同一个请求,接受请求的对象将请求委托给另一个对象来处理。委托模式是一项基本技巧,许多其他的模式,如状态模式、策略模式、访问者模式本质上是在更特殊的场合采用了委托模式。委托模式使得我们可以用聚合来替代继承. 在C#中,委托由delegate实现,在Java中并没有委托机制,所以我们可以选择用反射来实现委托,下面看看具体的代码.通知者(主题)实现:package 事件委托模式;import java.lang...

2020-07-28 16:34:05 415

原创 泛型的使用实例:构建随机的搜索二叉树(可以使用任意类型的数据)

使用此工具类注意事项: 用户需要自定义一个类,该类用作树节点TreeNode<T,V>的T泛型,自定义类中需要包含一个用于比较的数据. 用户自定义类中的数据需要实现Comparable接口. 用户自定义的类需要实现RandomValue接口(自定义接口,下图代码中以及包含)以及Comparable借口. 此工具类以及提供两个实例,以及两个实例的测试代码,可供参考. 该工具类仅供学习,如有不足或泛型使用不当,可以和我交流改进.package 二...

2020-07-23 16:59:26 227

原创 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 7138 2

原创 Docker安装Redis

注意,一下内容均使用root权限,可以使用suroot命令.下载Redis镜像 docker pull redis 创建配置文件 mkdir -p /mydata/redis/conftouch /mydata/redis/conf/redis.conf 启动Redis容器 docker run -p 6379:6379 --name redis \...

2020-04-02 14:58:01 70

原创 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 128

原创 Vagrant下载太慢解决方法(本地安装box文件)

在使用vagrant安装centos7时发现下载速度特别慢解决方法 :将镜像下载到本地,使用vagrant box add {title} {url}命令的方式添加本地的镜像然后使用vagrantinit {title}最后vagrantup即可完成虚拟机的安装其中title代表你给这个镜像取的名称,url代表镜像本地的存储路径镜像下载地址http://www.va...

2020-04-01 21:10:55 7400 3

原创 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 379

原创 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 768

原创 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 212

原创 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 1754

原创 ReentrantLock源码分析(下)

序 --早年间由于synchronized关键字的效率问题,导致在jdk1.6版本之前,著名的daoglee先生编写出了ReentrantLock提供给我们使用,一方面是因为synchronized锁在jdk1.6之间是一把重量级锁,无论是线程的交替执行,或者是并发执行,都会调用OS系统的函数,导致及其耗费时间,ReentrantLock却在java的层面上大幅度的解决了这一问题,今天,我们就...

2020-03-07 09:58:48 72

原创 ReentrantLock源码解析(上)

序 --早年间由于synchronized关键字的效率问题,导致在jdk1.6版本之前,著名的daoglee先生编写出了ReentrantLock提供给我们使用,一方面是因为synchronized锁在jdk1.6之间是一把重量级锁,无论是线程的交替执行,或者是并发执行,都会调用OS系统的函数,导致及其耗费时间,ReentrantLock却在java的层面上大幅度的解决了这一问题,今天,我们就...

2020-03-06 21:31:01 141 1

原创 那些年我们做过的多线程(一)

今天我们来做一道大厂面试的多线程:看到题面,很容易想到生产消费者模型,可以将字母与数字分别视为生产者以及消费者,每当生产者或者消费者活动一次,则通知另一个线程,由此便很容易得到答案.import java.util.ArrayList;import java.util.List;import java.util.concurrent.CountDownLatch;import ...

2020-03-04 07:53:01 106

原创 Spring Boot启动流程简要分析

在学习玩SSM三大框架之后,深刻的认识到了框架的伟大,以及使用起来的快捷以及方便,近期开始学习SpringBoot框架,在SpringBoot的框架中,它更是将框架的使用精简到了另一中地步,今天我们来简要分析一下SpringBoot的启动流程.以下是SpringBoot一个最简单的程序:@SpringBootApplicationpublic class Spri...

2019-12-11 01:37:25 106

原创 SSM框架整合开发踩坑(使用BootStrap在网页中不生效)

今天早上在SSM整合开发过程中,使用BootStrap框架中的css样式,发现始终无法正常使用,f12打开浏览器一直报错,发现无法找到bootstrap的css和js样式.在早期的SpringMVC中,MVC对于静态资源的访问不能很好的处理.于是在后期SpringMVC开发团队给出了多种解决方法.1.在SpringMVC.xml的配置文件中使用mvc:resources标签,使M...

2019-12-07 10:26:19 1225 1

原创 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 751 2

原创 BM算法(字符串匹配问题)

1.什么是BM算法 Boyer-Moore字符串搜索算法是一种非常高效的字符串搜索算法。此算法仅对搜索目标字符串(关键字)进行预处理,而非被搜索的字符串。虽然Boyer-Moore算法的执行时间同样线性依赖于被搜索字符串的大小,但是通常仅为其它算法的一小部分:它不需要对被搜索的字符串中的字符进行逐一比较,而会跳过其中某些部分。通常搜索关键字越长,算法速度越快。它的效率来自于这样的...

2019-10-12 15:15:49 585 1

原创 KMP简介以及反证法证明在KMP算法中,模式串的快速移动一定不会错过正确匹配位置

KMP算法预备知识:前缀表(next数组)建议先了解前缀表概念了解后再阅读本文文本串(被匹配的长串)模式串(子串)失配(在文本串与模式串匹配的过程中,不匹配的那个字符位置)1.什么是KMP算法: 通过前缀表的预处理,加速模式串移动的速度,达到时间复杂度的缩减.2.KMP算法的由来: 关于字符串匹配这一方面,首先我们能想到的方法也就是最简单...

2019-10-11 19:48:28 540

原创 校园导航系统---2019暑期项目第二周总结

序: HALO,各位看客们大家好,距离暑假已经过去了两周,我们实验室的暑期留校生活也已经过去了两周,在第一周之后的一个星期,对暑期项目----校园导航系统进行了最后的完善.历时两周完成了校园导航系统.首先是登陆界面:新增功能:1,记住密码,在普通用户登录时可选择记住密码,在下次登陆时,密码会在密码框内以圆点方式出现.2,自动登陆,用户登陆时可选择自动登录,在程序下...

2019-07-27 10:33:24 1364 15

原创 2019暑期项目(校园导航系统)总结

序: HALO,各位看客们大家好,距离暑假已经过去了一周,我们实验室的暑期留校生活也已经过去了五天,在这五天内,基本完成了我的暑假第一个项目--校园导航系统!!GUI界面由java自带的swing编写,风格使用nimbus风格,谈不上好看,但是功能基本已经实现完全.经过五天,每天12小时高强度的打代码时间,总算获得了些许收获.首先看看这个项目的效果图首先是登陆界面:...

2019-07-19 20:06:25 2698 15

原创 Java工具类的运用(使JTextField绑定到Enter)

最近在写校园导航项目的时候遇到一个小问题,怎么将Enter按钮绑定到一个容器上去,在经过八方查找以后,确实找到了最简单的实现方案,只需要加上一句话,即可使一个按钮绑定到Enter键,即在按下Enter时直接触发一个按钮事件,先来看看代码:JFrame.getRootPane().setDefaultButton(JButton); 其中JFrame是顶级容器,JButton...

2019-07-19 15:07:24 525

原创 基于TCP,UDP的聊天室3.0版本(实现GUI界面,私聊,文件传输以及可实时变动的文件列表,用户列表)

哈喽观众老爷们,经过不懈的努力,在6月6日的早上,聊天室3.0版本终于诞生了!!!(下载地址在文章末尾) 看过我前两期的聊天室的看客们可能知道,前两期的内容涉及的东西仅只有TCP,并且智能在cmd命令下运行,但是这一次的项目已经是比较完善的聊天室了,实现了客户端:群聊,私聊,GUI界面(Swing编程),以及文件传输(UDP),可更新的在线用户列表和文件列表!服务...

2019-06-07 00:40:41 2020 3

原创 关于疯狂JAVA中聊天客户端的实现流程2(私聊与群聊)

Halo, 看客老爷们大家好, 今天我们的主题还是聊天室, 那么我们这次的聊天室会有什么不同呢! 相信大家看标题就能看出来了, 没错!我们这次的聊天室添加了私聊功能!为什么添加了私聊功能我们需要重新写一篇博客来讲述,且听我道来! 只有群聊的聊天室里,我们只需要客户端向服务端发送信息,服务端接受信息,并向所有客户端反馈接受到的信息,逻辑非常的简介明了,看似添加私聊功能...

2019-05-29 21:20:07 1370 1

原创 关于疯狂JAVA中简易聊天客户端的实现流程

Halo,各位看官老爷们大家好,时隔两个月,我终于闭关回来了. 今天要给各位看的东西就不得了了,是我多天苦修,终于修成的对一个在CMD界面下的JAVA聊天室的理解! 首先接触到Socket网络编程的时候.我也是一脸懵逼的,但是其实只要理解了客户端与服务端之间的关系就很好理解了,首先我们要知道的是服务端和客户端其实都是一个Socket实例,Se...

2019-05-29 16:45:23 261 3

23种设计模式UML类图.pos

23种设计模式UML类图 参考于大话设计模式,其中加入了自己的理解,并实现中文化,方便阅读. 下载后可食用ProcessOn网站进行类图导入,可自行修改.

2020-07-31

GuideMap.rar

基于Swing的java校园导航系统,实现了用户登陆,注册.游客注册登陆,管理员对节点的管理. 用户四种路径的查询,最短,最快,最美,最绿(基于Dijkstra以及dfs).

2019-07-27

GuideMap.rar

基于Swing的java校园导航系统,实现了用户登陆,注册.游客注册登陆,管理员对节点的管理. 用户四种路径的查询,最短,最快,最美,最绿(基于Dijkstra以及dfs).

2019-07-27

聊天室3.0.zip

客户端:群聊,私聊,GUI界面(Swing编程),以及文件传输(UDP),可更新的在线用户列表和文件列表!服务端:可将指定用户移除聊天室,将所有用户移除聊天室,对聊天室中的文件进行增删.

2019-06-07

空空如也

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

TA关注的人

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