
java
文章平均质量分 75
lzzyok
脚踏实地,一步一步往上爬。
展开
-
springboot常用启动初始化方法
sprongboot项目启动初始化加载方式:ApplicationRunner与CommandLineRunner接口、Spring Bean初始化的构造方法、PostConstruct、init-method、InitializingBean原创 2023-01-03 20:55:29 · 3137 阅读 · 1 评论 -
Mybatis进阶之自定义TypeHandler
Mybatis进阶之自定义TypeHandler,实现个性化需求原创 2022-12-29 22:42:49 · 1141 阅读 · 0 评论 -
Java并行流ParallelStream你应了解的
parallelStream作用采用多线程可以加快处理集合操作,底层原理是使用线程池ForkJoinPool(深入原理期待你的分享)并行流一定会比Stream快吗?在处理数据量并不大的情况下,“parallelStream()”的代码有时比使用“stream()”的代码慢。因为:parallelStream()总是需要执行比按顺序执行更多的,在多个线程之间分割工作并合并或组合结果会带来很大的开销。像将短字符串转换为小写字符串这样的用例非常小,与并行拆分开销相比,它们可以忽略不计。[外链图片转存失败原创 2022-02-11 20:04:04 · 6547 阅读 · 0 评论 -
三、Java线程池原理
线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量超出数量的线程排队等候,等其它线程执行完毕,再从队列中取出任务来执行。他的主要特点为:线程复用;控制最大并发数;管理线程。Java线程池工作过程1)线程池刚创建时,里面没有一个线程。任务队列是作为参数传进来的。不过,就算队列里面有任务,线程池也不会马上执行它们。2)当调用execute() 方法添加一个任务时,线程池会做如下判断: 2.1)如果正在运行的线程数量小..原创 2021-11-14 22:45:47 · 634 阅读 · 0 评论 -
二、Java垃圾收集器
垃圾收集算法是内存回收的方法论,垃圾收集器就是内存回收的具体实现。下图展示了7种不同分代的收集器,如果两个收集器之间存在连线,就说明他们可以搭配使用。并没有最好的收集器这一说,我们需要选择的是对具体应用最合适的收集器。1)Serial垃圾收集器(单线程、复制算法)--新生代 是最基本垃圾收集器,使用复制算法,曾经是JDK1.3.1之前新生代唯一的垃圾收集器。Serial是一个单线程的收集器,它不但只会使用一个CPU或一条线程去完成垃圾收集工作,并且在进行垃圾收集的同时,必须暂停其他所有的工作线程..原创 2021-11-14 22:26:25 · 550 阅读 · 0 评论 -
一、引用算法介绍(补)
该算法会在每一个对象上记录这个对象被引用的次数,只要有任何一个对象引用了次对象,这个对象的计数器就+1,取消对这个对象的引用时,计数器就-1。任何一个时刻,如果该对象的计数器为0,那么这个对象public static void invoke() { User a = new User ();}public static void main(String[] args) { invoke();}main函数调用invoke方法,invoke方法中new了一个User的对象,原创 2021-08-20 23:59:37 · 219 阅读 · 0 评论 -
一、GC算法介绍
如何确定垃圾1、引用计数算法(见:https://mp.youkuaiyun.com/mp_blog/creation/editor/119833432)2、可达性分析为了解决引用计数法的循环引用问题,通过一系列"GC ROOTS"对象作为超点搜索。如果在“GC ROOTS”和一个对象之间没有可达路径,则认为对你是不可达的。需要注意的是:不可达对象不等价于可回收对象,不可达对象变为可回收对象至少要经过两次标记过程。两次标记后仍然是可回收对象,则将面临回收。垃圾收集算法1、标记清除2、复制3、原创 2021-11-14 21:59:48 · 373 阅读 · 0 评论 -
maven多个仓库源配置及repositories和mirrors的配置及区别详解
maven仓库配置仓库优先级为:本地仓库(localRepositories) > profile中的repositories仓库 > POM > mirrors全局仓库repositories配置repositories指定jar包下载的地点,可以是多个。repositories可以通过setting.xml方式配置,会对所有maven项目生效,也可只在本项目pom.xml中配置一个maven仓库标签来实现。当在自己的maven项目的pom.xml中添加如下配置。原创 2021-09-21 00:52:27 · 17028 阅读 · 1 评论 -
java应用占用内存高的排查
场景:生产环境运行了一个java tomcat web应用,之前没有去观察他的资源使用情况,今天在查看日志时看了一下应用的内存,发现内存占用很高(这里说明一下,这个应用没有什么人访问,理论上来说是不会占用太多内存的)。排查步骤1、top 查看当前进程的情况2、上图可以看到是线程1占用的内存高,那再定们线程问题:ps p 1 -L -o pcpu,pmem,pid,tid,time,tname,cmd当我执行这个命令时,已经发现了异常,这里有近2000个线程在(继续排查是什么线程).原创 2021-03-14 19:28:29 · 1082 阅读 · 0 评论 -
通过jstat命令查看jvm的GC情况
jstat [Options] vmid[interval] [count]参数说明:Options,选项,我们一般使用 -gcutil 查看gc情况vmid ,VM的进程号,即当前运行的java进程号interval ,间隔时间,单位为秒或者毫秒count ,采集次数,如果缺省则打印无数次示例通常运行命令如下:jstat -gc 31 1000即会每1秒一次显示进程号为31的java进成的GC情况,显示内容如下图:结果说明S0C:年轻代中第一个...原创 2020-07-10 10:08:49 · 444 阅读 · 0 评论 -
八、ES查询记录
matchQuery:会将搜索词分词,再与目标查询字段进行匹配,若分词中的任意一个词与目标字段匹配上,则可查询到。termQuery:不会对搜索词进行分词处理,而是作为一个整体与目标字段进行匹配,若完全匹配,则可查询到。...原创 2020-06-09 18:36:36 · 419 阅读 · 0 评论 -
七、Eleasticsearch内置分词器
目录标准分词器:standard tokenizer 关键词分词器:keyword tokenizer 字母分词器:letter tokenizer 小写分词器:lowercase tokenizer 空白分词器:whitespace tokenizer 模式分词器:pattern tokenizer UAX URL电子邮件分词器:UAX RUL email tokenizer 路径层次分词器:path hierarchy tokenizer详细见:https://www.cnbl...转载 2020-06-08 19:02:03 · 192 阅读 · 0 评论 -
六 Elasticsearch——常用_cat命令
当我们把ES重启生,就可以通过浏览器查看相关信息了(相关命令如下)如查看节点信息: http://es节点的IP:端口/_cat/nodes/_cat/allocation/_cat/shards/_cat/shards/{index}/_cat/master/_cat/nodes/_cat/indices/_cat/indices/{index}/_cat/segments/_cat/segments/{index}/_cat/count/_cat/count/{inde.原创 2020-06-08 14:52:22 · 507 阅读 · 0 评论 -
RockerMQ集群模式下autoCreateTopicEnable=true 为什么Topic只在一个broker上创建了?
事件同事在生产环境部署了RocketMQ 4.5,同时开启了自动创建Topic的功能。今天通过rocketmq-console-ng管理后台查看某个主题时发现,明明是两个主,但是topic怎么只在一个broker(broker-a)上创建呢?(看下面的图)出于对技术的认真,通过看源码和百度,看看RocketMQ在autoCreateTopicEnable模式下是怎么创建Topic。大体有以下几个步骤1、broker启动时创建以默认的配置信息创建默认topic;2、brok..原创 2020-05-10 23:08:15 · 3067 阅读 · 0 评论 -
Java内存调优
1、了解虚拟机内存结构 在进行内存调优之前,我们需要先了java的内存结构,见下图或查看该遍文章:Java内存导图 下面我们对关键几个部分进行说明: 虚拟机栈:是线程私有的。存储方法执行时相关信息,每个方法在调用时都会在虚拟机栈中创建一个方法帧,帧中包含了局部变量、参数、运行中间结果等信息。帧数超过限制(-Xss)就会出现StackOverFlow错误。在运...原创 2020-03-29 21:07:34 · 692 阅读 · 0 评论 -
Java虚拟机-内存管理-类加载
原创 2020-02-20 17:46:42 · 157 阅读 · 0 评论 -
三、Elasticsearch API
如何与Elasticsearch交互取决于你是否使用Java。Java API Elasticsearch为Java用户提供了两种方法:1、传输客户端(Transport client):这个更轻量的传输客户端能够发送请求到远程集群。它自己不加入集群,只是简单转发请求给集群中的节点,这个在 7.0.0 版本不建议使用,在8.0会删除这些API。2、High Level REST C...原创 2019-10-25 17:09:47 · 142 阅读 · 0 评论 -
二、Elasticsearch的安装
当前最新版本为:7.4.1 (Elasticsearch 的安装包中已经包含有JDK)下载地址:https://www.elastic.co/cn/downloads/elasticsearch在windows或Linux中将文件解压即可。禁用X-Pack修改:config/elasticsearch.ymlxpack.ml.enabled: f...原创 2019-10-25 16:22:39 · 125 阅读 · 0 评论 -
一、Elasticsearch 是什么
Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎。 Lucene可以被认为是迄今为止性能最好的、功能最全的搜索引擎库。Lucene只是一个Java 库,想要单独使用它,你必须使用Java来作为开发语言并将其直接集成到你的应用中,而且Lucene非常复杂,理解它是如何工作原理你需要深入了解检索的相关知识。Elasticsearch也使用Java开发并对Luce...原创 2019-10-25 15:29:08 · 316 阅读 · 0 评论 -
eclipse 最佳设置
http://blog.sina.com.cn/s/blog_692d0a650100wxj9.html转载 2012-08-23 14:42:16 · 707 阅读 · 0 评论 -
getResource中文或有空格路径处理
今天遇到文件路径中有中文,读取文件就找不到,查了下得到以下解决方法,记录下来。在使用类似这样: Java代码 this.getClass().getClassLoader().getResource("").getPath() 来获取文件路径时,里面的路径空格会被“%20”代替,这时候如果你用这个获取到的包含“%20”的路原创 2012-08-20 15:48:46 · 8505 阅读 · 3 评论 -
Spring容器启动后自动执行Servlet进行预处理
通常做法是定义一个Servlet,并在web.xml中配置Servlet的启动顺序的值在DispatcherServlet之后。但这样做的缺点是在Servlet中无法使用Spring的依赖注入功能,只能使用WebApplicationContext的getBean()方法获取bean。找到的解决办法如下:1、自定义一个用于代理启动Servlet的类DelegatingServlet转载 2012-07-13 18:56:15 · 2655 阅读 · 0 评论 -
java实现的常用压缩算法
http://snowolf.iteye.com/blog/465433转载 2012-06-26 09:03:12 · 904 阅读 · 0 评论 -
HttpClient通过post上传文件和提交参数
public static String getMimeType(String fileUrl) throws java.io.IOException { FileNameMap fileNameMap = URLConnection.getFileNameMap(); String type = fileNameMap.getConte原创 2012-05-23 17:49:45 · 2842 阅读 · 0 评论 -
java读取Properties文件value需要换行的处理
java读取Properties文件时碰到问题1. 资源文件中的key对应的value需要换行显示时,若直接回车,则同样丢掉回车后的部分针对上述问题找到如下解决办法:1. 内容过长需要换行时拼接个/斜杠,这样/后的内容后正常显示package test;import java.io.IOException;import java.io.InputS原创 2012-04-09 15:29:13 · 5232 阅读 · 0 评论