2 Lin大坑haha~

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 13w+

tomcat哪里打破了 Java 的类加载机制?

通常 java类加载器有以下几种Bootstrap ClassLoader这是加载器中的根,任何类的加载行为,都要通过他。它的作用是加载核心类库,也就是 rt.jar、resources.jar、charsets.jar 等。当然这些 jar 包的路径是可以指定的,-Xbootclasspath 参数可以完成指定操作。随着 JVM 启动。Extention ClassLoader扩展类加载器,主要用于加载 lib/ext 目录下的 jar 包和 .class 文件。同样的,通过系统变量 java

2020-06-29 10:07:30

如何替换原来jdk中的类?

当 Java 的原生 API 不能满足需求时,例如要修改 HashMap 类,就必须要使用到 Java 的 endorsed 技术。我们需要将自己的 HashMap 类,打包成一个 jar 包,然后放到 -Djava.endorsed.dirs 指定的目录中。注意类名和包名,应该和 JDK 自带的是一样的。但是,java.lang 包下面的类除外,因为这些都是特殊保护的。...

2020-06-29 09:54:42

记录一下平时用的JVM的配置

-verbose:gc-XX:+PrintGCDetails-XX:+PrintGCDateStamps-XX:+PrintGCApplicationStoppedTime-XX:+PrintTenuringDistribution-Xloggc:/tmp/logs/gc_%p.log-XX:+HeapDumpOnOutOfMemoryError-XX:HeapDumpPath=/tmp/logs-XX:ErrorFile=/tmp/logs/hs_error_pid%p.log...

2020-06-27 18:40:32

redis的一些优化点总结

记录一下自己遇到或者学习到的一些redis性能问题以及解决方式(持续更新)一. 备份(1)推荐备份方式:主节点开启 AOF ,从节点开启 AOF + RDBbgsave(RDB) 做镜像全量持久化,AOF 做增量持久化。因为 bgsave 会耗费较长时间,不够实时,在停机的时候会导致大量丢失数据,所以需要 AOF 来配合使用。在 Redis 实例重启时,会使用 bgsave 持久化文件重新构建内存,再使用 AOF 重放近期的操作指令来实现完整恢复重启之前的状态。主节点不需要开启RDB的原因是:RDB

2020-06-20 22:39:09

redis学习笔记-线程模型

redis是一个单线程的IO复用模型,封装了一个简单的 AeEvent 事件处理框架,主要实现方式是 epoll ,kqueue 和 select文件事件处理器是redis线程模型的核心,主要包括四个部分:1.多个socket(多个连接,客户端——>服务端)2.IO多路复用(可以理解为epoll ,kqueue 和 select)3.文件事件分派器(绑定一个队列)4.事件处理器(连接应答处理器、命令请求处理器、命令回复处理器)客户端向server的socket建立连接,会生成一个AE_RE

2020-06-20 18:25:48

异步输出logback日志的配置和源码研究

通常我们可以用springboot配置文件logback-spring.xml来配置日志的输出,简单来说,分为控制台、(info、warn、debug)、error日志。同步输出日志的配置文件如下所示<?xml version="1.0" encoding="utf-8"?><configuration> <property resource="logback.properties"/> <!--ConsoleAppender代表是控制台日志--

2020-06-20 01:00:02

mysql索引失效的情况总结

1.LIKE操作中,’%xx%'不会使用索引,也就是索引会失效,但是‘xxx%’可以使用索引。在索引的列上使用表达式或者函数会使索引失效。2.在一个SELECT语句中,索引只能使用一次,如果在WHERE中使用了,那么在ORDER BY中就不要用了。3.组合索引中不能有列的值为空NULL,否则那么这一列对组合索引就是无效的。4.在查询条件中使用不等于,包括<、>、<>、!= 会导致索引失效。不排除某些引擎帮忙优化的情况,还是走索引5.在查询条件中使用IS NULL或者IS NO

2020-06-19 21:34:34

解决springboot2 RedisTemplate使用lettuce连接池配置不生效的问题

springboot2 redis默认使用lettuce,使用连接池根据网上的内容,进行如下配置:# 连接池最大连接数 使用负值表示没有限制spring.redis.lettuce.pool.max-active=8# 连接池最大阻塞等待时间(使用负值表示没有限制)spring.redis.lettuce.pool.max-wait=-1# 连接池中的最大空闲连接 默认 8spring.redis.lettuce.pool.max-idle=8# 连接池中的最小空闲连接 默认 0spri

2020-06-04 16:15:02

RedisOperations使用总结

接口public interface CacheManager { <K, V> V get(String prefix, K key, Type clazz, SingleCacheLoader<K, V> loader); <K, V> Map<K, V> batchGet(String prefix, List<K> keys, Type clazz, BatchCacheLoader<K, V> loa

2020-05-16 13:18:29

spring-boot-starter-data-redis原理总结

当使用spring-boot-starter-data-redis的时候感到十分方便,1.pom中引入spring-boot-starter-data-redis,并配置application.properties。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starte

2020-05-16 13:14:15

mysql ddl是否会锁表的问题

今天和同事讨论mysql在线ddl是否会锁表的问题,查了下资料 Mysql在5.6版本之前,直接修改表结构的过程中会锁表,具体的操作步骤如下: (1)首先创建新的临时表,表结构通过命令ALTAR TABLE新定义的结构 (2)然后把原表中数据导入到临时表 (3)删除原表 (4)最后把临时表重命名为原来的表名 具体ddl如何工作Mysql 5.6 虽然引入了Online DDL,但是并不是修改表结构的时候,一定不会导致锁表,在一些场景下还是会锁表的,比如 ①某个慢SQL或者比较大的结果集的SQL在..

2020-05-12 00:59:48

一个简单的接口降级方式

有个场景要通过http调用外部系统的接口,那个外部系统在压力大的时候可能会返回超时,例如信安审核相关的。这时候业务处理可能就会报错,在这个时间段就算不断去重试也是会不断报错的,意义不大。所以想能否直接通过这个环节让业务进行下去,相当于一个服务降级。刚开始的思路是写两个接口,一个正常逻辑,一个是直接跳过这个外部调用,使用类似Hystrix的组件进行降级。后面经过提点发现还有更简单的方案:外部接口通过...

2020-05-06 21:10:01

ElasticSearch resthighlevelclient 对输入的字符串进行解析分词

使用关键词匹配做智能客服机器人的时候,后台需要输入一些问题,并且提供一些关键词供运营去选择。做完这个以后才能正式完成一个问题的录入。那么智能客服的后台需要对输入的问题做一些分词让运营去选择。可以这样使用,返回list给前端,让运营选择问题的关键词即可。public List<String> getAnalyze(String text) throws Exceptio...

2020-05-06 20:21:33

elasticsearch 7 使用笔记1 RestHighLevelClient

场景IM机器人或者公众号智能客服es里面存有三个字段,问题question,问题所包含的关键词keywords,用户查询该问题的频度hits使用springboot+RestHighLevelClient构建索引 // 创建索引请求 CreateIndexRequest request = new CreateIndexRequest(index); ...

2020-05-05 23:34:23

MacOS 安装flink中遇到的问题

系统MacOS Catalina1.安装步骤brew install apache-flink2.默认安装位置/usr/local/Cellar/apache-flink/1.10.0和直接从官网下载的压缩包解压不一样,通过brew安装的flink,真正的安装位置不在bin,而在/usr/local/Cellar/apache-flink/1.10.0/libexec/下面。...

2020-05-05 13:06:28

docker pull太慢的解决方案

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.iosystemctl restart docker

2020-04-01 17:04:24

一次消息组件内存泄漏的排查

记录以下导致的原因,rocketmq中使用MappedByteBuffer处理大文件,其所对应的内存使用的是JVM堆外内存,JVM young gc和CMS gc并不能触发回收MappedByteBuffer对应的内存,只有full gc(stop the world的方式)可以使其回收内存,堆外直接内存会根据自己的情况(当需要新分配直接内存时,如果所剩堆外内存空间不够,第一次产生OutOfMem...

2020-02-27 01:33:37

Activiti工作流引擎,关于百万级单表分页查询的一些优化实践

在Activiti工作流引擎项目Saas改造中,会遇到说多租户多用户的情况,那么每个表单数据量也会变多,单表百万级需求就成为一个必须要解决的问题。 别说可以用分库分表的方案,分库分表已经解决了千万级大表数据的情况了,总不能总是依赖数据库中间件分库分表方案,因为该方案分片是需要预先设定好的,如果改动分片策略或者分片数量,需要重新导数据,十分麻烦。那么使单表能够支持多一些数据的查询就尤为重...

2020-02-26 00:52:43

Netty相比JAVA NIO——学习笔记

总所周知,netty是脱胎于java nio的。总是会被问到,为什么要使用netty呢?1.支持应用层协议2.粘包、半包的问题解决,nio需要自己编写代码解决3.完善的断连、空闲的情况处理4.API更友好、强大,屏蔽了和很多nio的使用细节5.如果自己使用nio实现一样的功能,需要解决自己很多问题。nio bug1.epoll 异常唤醒空转导致cpu 100%netty怎么解决这...

2020-02-13 12:00:34

Rocketmq和Kafka用到的zero copy,以及存储方面的相关思考

因为项目原因做过消息组件的研发,总结以下rocketmq和kafka涉及到的零拷贝技术。RocketMQ1.mmap内存映射文件传统的读写数据,write/read系统调用, 必须先把数据从磁盘拷贝至到内核缓冲区中(页缓冲),然后再拷贝到用户进程(内核态-》用户态)。用了mmap,把内核中特定部分的内存空间映射到用户级程序的内存空间去。用户空间和内核空间共享一块相同的内存。内核在这块地址内...

2020-02-01 20:16:25

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。