自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 新版本jenkins根据用户区分不同项目的显示配置

打开jenkins的configure Global Security设置允许用户注册,目的是打开jenkins地址之后登陆页面实现注册功能.如下:然后授权策略选择Role-Based Strategy 如下我们在登录页面新建一个用户lifeinsurance然后登进入会发现我们通过管理员账号登录进去会发现是可以看到所有的项目的如下:现在我们要做的就是让life-service-cloud-parent这个项目单独由lifeinsurance这个用户来管理.在je..

2021-02-23 14:31:03 591

原创 unbuntu搭建新版本jenkins 2.253报错ssl证书错误解决办法

组件服务搭建新版本jenkins今天搭建jenkins的时候一直报错首先采用旧版的2.190.2版本,启动之后通过浏览器访问之后报错无法下载插件.任意一个插件都无法下载.然后进入jenkins内部去插件管理下载也都提示那些插件过期不适合2.19.3版本以前的jenkins去安装.最后不知道如何解决.决定换成jenkins的2.253版本来进行安装.相当于新版了....新版是263.然后同样采用命令进行启动.nohup java -jar /opt/jenki...

2021-01-21 22:22:51 808

原创 wait notify--看这一篇就够了

wait notify方法wait notify 方法wait notify方法前言方法讲解wait()方法notify()方法.案例:设计一个线程安全的队列当做线程池用于存储线程场景分析代码如下:执行结果如下:案例结果分析:从jvm角度分析entry set 和wait set流程图分析synchronized wait 和notify原理其他:前言要理解wait和notify方法首先要理解synchronized是什么?以及怎么用,因为三个方法是一起才能使用的.参考链接:synchroniz

2020-12-24 07:07:49 626 1

原创 LinkedList核心知识点-----源码解析

基本原理以及优缺点原理基于双向链表实现的,一个节点挂着另外一个节点.优点链表是无界的.所以大量的插入元素没有大小限制,不需要扩容. 插入元素时只需要将新节点挂上就行了.即使是中间插入,也只是小部分遍历查找到节点插入位置.不要挪动大量元素. 非常适合各种元素频繁插入的场景.缺点不适合随机读.在随机的位置获取某个位置的元素,比如linkedList.get(10)这种操作,性能比较低 因为需要遍历这个链表.从头开始遍历,直到找到index=10...

2020-12-23 20:57:17 138 2

原创 Condition案例使用及其源码解析

Condition案例使用及其源码解析文章目录Condition案例使用及其源码解析前言condition案例-结合ReentrantLock代码如下结果展示结果分析condition和ReentrantLock源码分析lock方法await方法addConditionWaiter方法fullyRelease方法release方法isOnSyncQueue方法await方法阻塞线程1完毕,线程2抢锁线程2通过signal方法主动释放线程1并cas抢占锁signal方法doSignal方法transfer

2020-12-22 16:13:06 217

原创 实际场景解读AQS读写锁ReentrantReadWriteLock

前面讲了什么是AQS.并且基于Reentrantlock已经看了一部分AQS方法.AQS是什么?基于ReentrantLock解密!但是其实真实项目中一般使用ReetrantLock,一般都是synchronized. 因为在jdk1.6之后,synchronized底层实现里面,里面做了一些计数器的维护,加锁释放锁,CAS啊.都能实现ReentrantLock一样的效果.而且使用起来相对简单. 另外读写锁ReentrantReadWriteLock其实也挺常用的下面就接着看对于Reentra..

2020-12-21 21:54:45 738 1

原创 AQS是什么?基于ReentrantLock解密!

解释AQS,AbstractQueuedSynchronizer,抽象队列同步器,ReentractLock、ReadWriteReentractLock,锁API底层都是基于AQS来实现的,一般我们自己不直接使用,但是是属于java并发包里的底层的API,专门支撑各种java并发类的底层的逻辑实现画图讲解AQS的原理步骤详解:• 首先线程1如果抢到了锁,会将AQS中的state变量加1• 同时记录当前抢到锁的线程.• 然后线程2在抢锁失败后会被阻塞住,同时加入AQS的阻塞队列中去.等待被唤醒

2020-12-20 08:02:03 530 1

原创 synchronized案例与原理分析

synchronized使用案例并发问题的代码如下:​private static volatile int j=100; public static void main(String[] args) throws InterruptedException { updateJ updateJ = new updateJ(2, 100); updateJ updateJ1 = new updateJ(-3, 1000); updateJ.s

2020-12-16 18:00:41 117

原创 JDK1.8 HashMap源码一步一图(万字)解析

数据结构原理说明jdk1.8中的hashmap采用了数组+链表+红黑树进行数据的存储.原理图引入红黑数的好处引入原因:提升hashmap的性能:解决1.7发生hash碰撞后链表过长而导致索引效率慢的问题. 利用红黑树快速增删改查的特点将 时间复杂度由原来的O(n)变为O(logn)应用场景:在链表长度>8的时候,将链表转换为红黑树. 在扩容时桶中元素小于等于6 的时候由红黑树转换为链表。 选择6和8,中间有个差值7可以有效防止链表和树频繁转换...

2020-12-02 09:05:43 521

原创 ArrayList集合源码剖析

ArrayList源码剖析基本原理以及优缺点原理底层采用数组来实现的.因为数组都是定长的数组,默认数组大小是10,一旦arraylist大小超过10,此时会进行一个数组的扩容以及拷贝.优点:基于数组实现,非常适合随机读list的任意一个元素,因为内部直接根据元素在内存中的地址来取的.所以效率更高.缺点:数组长度固定,默认大小是10,可能在插入时涉及到一个频繁的数组扩容,搞一个更大的数组,把以前的数组拷贝到新的数组里面去 这就涉及到了数组扩容+...

2020-11-29 21:04:09 115

原创 Jdk1.7下的hashmap详解

数据结构:原理说明:jdk1.7的hashmap的底层结构是数组加单向链表实现的.将key的hash值进行取模获取index既即将存放的元素的数组的位置.然后到对应的链表中进行put和get操作.加链表的好处:因为对数组进行取模的时候可能会遇到获取index的位置是一样的,所以可能会遇到hash碰撞冲突.加上链表可以减少冲突.加链表的坏处:(这样不好,效率不高,每次都得遍历.时间复杂度为o(n),所以jdk1.8做了优化改成了链表加红黑树,时间复杂度从o(n)变为了log...

2020-11-29 13:34:11 1895

原创 RocketMQ4.7.1之NameServer源码解析

1.从NameServer的启动说起.可以看到main0才是真正的main方法.并且createNamesrvController之后直接用start方法了.可见createNamesrvController方法里面才是nameServer真正的核心加载逻辑.2.nameServer核心创建逻辑createNamesrvController方法进入createNamesrvController方法后.最主要的就是下面三行代码,这三行代码主要是用来加载nameSer...

2020-10-28 11:17:55 294

原创 nginx配置缓存时间为不缓存.

因为使用cdn的缓存,发现前端写的代码总是不生效,最后发现问题是出在nginx层.只需要在nginx层设置成下面的配置就可以让前端代码生效了location / { # First attempt to serve request as file, then # as directory, then fall back to a 404. try_files $uri $uri/ =404;...

2020-10-26 11:26:59 2455

原创 4核8g机器的jvm通用参数模板

4核8g的机器针对于这个系统的jvm参数如下:-Xms4096M-Xmx4096M-Xmn3072M-Xss1M -XX:PermSize=256M-XX:MaxPermSize=256M-XX:+UseParNewGC-XX:+UseConcMarkSweepGC-XX:CMSInitiatingOccupancyFaction=92-XX:+UseCMSCompactAtFullCollection-XX:CMSF...

2020-09-29 15:24:55 3310

原创 喵喵机器人--elasticsearch被入侵删库

前端时间笔者自己公司搭建的elasticsearch搜索引擎被删库了.一度怀疑是kibana的用户名密码泄漏了被人从kibana删掉的.然后修改账号密码,发现隔了一个星期还是被删了,并在es库将表的名字重命名为 无序字母数字-meow在想我得罪了什么人吗?还是之前写博客报漏了ip地址??可是我都写的内网地址啊?怎么可能报漏呢?时隔一个月都没有查出问题,直到有一天,发现数据被删之后除了留下了meow结尾的索引以外,还留下了一个让我哭笑不得的索引库read_me,kibana建好之后..

2020-09-04 11:07:37 1198

原创 mysql优化-oder by产生的Using temporary与Using filesort问题解决

优化前SELECT DISTINCT( tm.task_no ) task_no,tm.start_time,tm.end_time,tm.task_handler job_no,cb.claim_company_code,tc.entrust_company_code,tm.task_status,tsb.survey_city,tsb.survey_province,tsb.survey_area,tm.task_type,he.operation_

2020-09-02 15:32:09 3135

原创 记一次线程递归中thread.sleep造成的惨案

最近为了写socket补偿方案.(一旦消息发送失败,就要进行失败消息存储,并且对失败消息按照消息类型的不同补偿方案进行补偿)补偿方式就是针对如下图不同的消息主键进行不同次数,不同等待时长进行消息补偿.然后因为没考虑到线程一定要有开有关.在同一个线程中进行递归补偿.并且递归逻辑中增加了Thread.sleep(15*1000)的逻辑.造成线程池资源耗尽.消息堆积.并且因为过程中有查库操作,将数据库也给搞挂了...下面是具体的代码:package medicalshare....

2020-08-04 11:32:00 1093

原创 细述elasticsearch搭建集群后公网流量耗费过大的问题

笔者前端时间搭建了elk集群,开始用的还是没有问题的,但是后来elasticsearch查询有时候快,有时候慢,一直在兆elasticsearch本身的问题,还以为自己查询慢是代码的问题.然后偶尔上了一次阿里云,看了机器的公网流出和流入流量对比图.如下:最上面两条的流入和流出带宽直接超了,,,ecs的带宽是4兆的.然后想着有可能是带宽不足导致的es的查询变慢,毕竟es的集群间的日志数据传输有可能占大头然后就去服务器上执行了iftop -i eth1 -n -P命令,查看...

2020-07-20 10:52:27 700

原创 logstash修改日志输出的索引默认模版中的分片和备份

在kibana执行GET /_template/获取es中所有的模版信息.然后找到了名为logstash的模版如下:{ "order": 0, "version": 50001, "template": "logstash-*", "settings": { "index": { "refresh_interval": "5s" } }, "mappings": { "_default_": { "_al...

2020-05-22 11:06:13 2362

原创 elasticsearch搜索竟然比mysql慢?

最近笔者在测试elasticsearch和mysql的查询效率的时候竟然意外的发现es查询效率比mysql还慢.es查询一个简单的语句,竟然要四五百毫秒,而mysql只需要一百多毫秒.最初的判断:1.es的服务器硬件资源不足:内存不够,搭建的是两台es,用作日志收集存储,每台的es内存设置的是2g(最后查到es的内存最好设置为服务器内存的一半以内.然后查看服务器内存为16g,然后我就设置了es的内存为7g,发现查询效率还是不如mysql)2.es服务器的系统负载比较高.四核的cpu,竟然负载

2020-05-20 11:12:40 2072

原创 xxl-job定时调度任务启动报错

java.net.MalformedURLException: no protocol: 127.0.0.1:8099/xxl-job-admin/api/registry上面报错,no protocol,意思是没有执行协议类型,原因是没有加http:// 加上http协议就行了.

2020-05-18 10:52:50 4117

原创 xxl-job定时调度集群情况下区分环境来建立执行器

我们知道徐雪力老师的xxl-job定时调度任务是可以解决集群情况下的调度重复问题的...内置了轮询,单一,随机,hash等算法来实现单个机器执行定时 的需求.但是我们项目因为是多环境的....而每一个执行器都有他自己的执行器Appname,所以如果一个项目中的定时任务执行器名称就设置一个的话,回到多环境情况下使用的是同一个执行器名称.也就会造成注册的ip地址是多个环境的机器的ip.此时再进行轮询就会造成该定时任务轮询到了不同机器上面.为了解决这个问题有两种方案:方...

2020-05-17 12:38:02 1381 1

原创 xxl-job调度执行器的端口被外部频繁访问造成的错误

xxl-job调度执行器的端口被外部频繁访问造成的错误如下:[2020-05-16 16:52:54.996][ERROR][][nioEventLoopGroup-5-5][c.x.j.c.server.EmbedServer$EmbedHttpServerHandler] - >>>>>>>>>>> xxl-job provider netty_http server caught exceptionjava.io.IOExcep

2020-05-17 12:24:05 7952

原创 linux设置crontab -e定时不起作用的一次记录

设置的时候设置的每小时执行一次cron表达式为0 0 * * * ? * sh /home/idouall/cleanCache.sh > /dev/null 2>&1 &但是怎么都不执行.最后询问阿里云得知,crontab默认是分时日月周的值.必须设置为整分或者整时的0分来执行.也就是如下0 * * * * sh /home/idouall/cleanCache.sh > /dev/null 2>&1 &..

2020-05-17 12:18:48 500

原创 通用mapper插入包含基本数据类型的实体类时插入表为null

如下实体类对应的表,其中kmDistance字段采用的是double基本数据类型.此时通过插入语句进行插入.debug发现clone对象的kmDistance是有值的.但是插入到表之后却是null然后将double改为Double此时再插入,发现已经有值了.然后发现github到通用mapper上也有类似问题.总结来说因为数据库 的任何类型默认值如...

2020-04-30 14:59:57 1045

原创 nginx配置多个域名的负载均衡(kibana和xxl-job-admin配置集群)

upstream backServer{ server 127.0.0.1:5601 weight=1; #本机的kibana地址 server 116.62.13.26:5601 weight=1; #elastcisearch集群2的kibana外网地址 }server { listen 80 defaul...

2020-04-28 14:06:21 709

原创 Ubuntu 系统crontab 定时命令不执行

通过service cron status查看crontab是否已经启动root@iZbp1ig4nql7imcw4ssn7vZ:/var/log# service cron status● cron.service - Regular background program processing daemon Loaded: loaded (/lib/systemd/sy...

2020-04-27 21:32:23 2900

原创 elasticsearch删除索引时报错"wildcard expressions or all indices are not allowed"

在做es集群的索引定时7天删除的时候自己写了一个shell脚本#/bin/bash#指定日期(7天前)DATA=`date -d "1 week ago" +%Y.%m.%d`#当前日期time=`date`#删除7天前的#curl -XGET "http://ip:9200/_cat/indices/?v"|grep $DATAif [ $? -eq 0 ]...

2020-04-27 21:01:11 6042

原创 jvm堆内存年轻代触发MInorGC和和老年代触发FullGC的场景分析

了解什么是内存碎片?大量的实例对象在堆内存新生代中因为没有了栈内存的局部变量的引用,而成为新生代中需要被垃圾回收的垃圾对象.此时垃圾对象被回收之后,垃圾对象所占用的内存区域就成为了内存碎片.了解什么是新生代的复制算法?因为内存碎片的原因,可能导致大量的垃圾对象虽然被回收了.但是内存区域都是一小块一小块的,并不能被新产生的实例对象所使用.从而产生了内存浪费因此需要一种方法,能够将内...

2020-03-27 00:20:05 3286 2

原创 HashMap深挖底层原理

hashmap的1.7的底层架构从jdk1.6和jdk1.7开始,hashmap的底层结构是数组加链表实现的 .将key的hash值进行取模获取index 既即将存放的元素的数组的位置.然后到对应的链表中进行put和get操作.这里说明下为什么要加上链表.因为对数组进行取模的时候可能会遇到获取index的位置是一样的,所以可能会遇到hash碰撞冲突.此时为了将元素存放进去,采用链...

2020-03-26 15:14:07 289

原创 jvm基于生产系统进行参数调优

前言:具体来讲:Java整个堆大小设置,Xmx 和 Xms设置为老年代存活对象的3-4倍,即FullGC之后的老年代内存占用的3-4倍永久代 PermSize和MaxPermSize设置为老年代存活对象的1.2-1.5倍。年轻代Xmn的设置为老年代存活对象的1-1.5倍。老年代的内存大小设置为老年代存活对象的2-3倍。接下来基于我自己公司生产的两台负载服务器的一台进行实验....

2020-03-24 00:14:58 195

转载 JVM内存设置多大合适?Xmx和Xmn如何设置?

问题:新上线一个java服务,或者是RPC或者是WEB站点, 内存的设置该怎么设置呢?设置成多大比较合适,既不浪费内存,又不影响性能呢?分析:依据的原则是根据Java Performance里面的推荐公式来进行设置。 296d1509689688.png具体来讲:Java整个堆大小设置,Xmx 和 Xms设置为老年代存活对象的3-4倍,即FullGC之后的老年代内存...

2020-03-23 21:54:38 193

原创 jvm整体运行的流程图详解(超详细)

如下图流程图详解。第一步:程序员写出各种java文件 通过编译器编译成class字节码文件第二步:然后我们通过tomcat 或者java -jar的形式在linux或windows上运行第三步:前提安装了jdk 我们的jar或war程序就整体是一个jvm,在运行时会首先去让最顶层的父层 启动类加载器(BootStrap ClassLoader)去java的lib包下加载...

2020-03-22 00:21:49 2522

原创 (九) elasticsearch手把手搭建生产环境ELK加kafka实现分布式日志收集集群环境(终结版)

(八) elasticsearch手把手搭建生产环境ELK加kafka实现分布式日志收集总结前八个博客讲到的都是单机版日志收集. es,kafak logstash 都是基于一台机子搭建的.最近跟公司又申请了一台机器用于搭建es和kafak以及logstash的集群.以保证高可用.首先搭建es集群..因为另一台机子使用了原有机器的镜像 ,所以凡是第一台机器上面搭建过的...

2020-03-19 21:35:19 633

原创 java序列化与反序列化

首先说下序列化和反序列化的概念:序列化: 将对象转换为字节的过程.成为对象序列化反序列化:将字节转换为对象的过程,成为对象反序列化对象的持久化概念:把字节保存的硬盘上永久的存放 网络传输对象概念:客户端将对象序列化为字节(序列化),变成二进制的形式发送到服务器端端,服务器端接受到字节对象后,反序列化成对象注意序列化的类必须要实现Serializable接口 t...

2020-03-18 21:21:12 101

转载 Socket和Http之间的区别和概述

socket和http的区别:Http协议:简单的对象访问协议,对应于应用层。Http协议是基于TCP链接的。tcp协议:对应于传输层ip协议:对应与网络层TCP/IP是传输层协议,主要解决数据如何在网络中传输;而Http是应用层协议,主要解决如何包装数据。Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TC...

2020-03-18 10:58:39 145

原创 Netty框架基础

不选择Java原生NIO编程的原因1.NIO的类库和API繁杂,使用麻烦,你需要熟练掌握Selector、ServerSocketChannel、SocketChannel、ByteBuffer等。2.需要具备其他的额外技能做铺垫,例如熟悉Java多线程编程。这是因为NIO编程涉及到Reactor模式,你必须对多线程和网路编程非常熟悉,才能编写出高质量的NIO程序。...

2020-03-18 10:30:02 607

转载 IO和NIO的区别

题外话看到NIO一堆繁杂的API瞬间就不想学这个NIO了,但是我们可以先从模糊的认识上先理解下NIO和IO的区别。初识IO特点:采用面向流的操作。IO流是没有缓存的概念,所以就需要每次从流中一个一个字节的去读或者每次从流中一个一个字节的去写。而且我们知道流本身是单工的数据通信。IO可以分为文件IO和网络IO。文件IO是中的read和write都是阻塞的,网络IO中的read、...

2020-03-18 10:08:41 134

原创 NIO多路复用底层实现原理

Bio演变的NIO的过程Bio是一个阻塞式的io,不能够支持并发请求访问;可以多线程优化代码这种方式也存在缺点:如果每个请求过来都使用一个线程,这时候非常浪费CPU的资源。所以在网络编程服务器中,是否使用单线程提高响应的效率问题,所以nio出现; public class ServerTcpSocket { static byte[] bytes = new b...

2020-03-16 23:50:30 2923

原创 网络编程基础

OSI七层模型应用层:Http协议、电子文件传输、文件服务器等表示层:解决我们不同系统之间语法的通讯会话层:建立与应用程序之间的通讯传输层:提供了端口号和接口协议TPC/Udp网络层:为数据包选择路由 路由器、交换机定义了ip地址,可以根据ip地址找到对应的服务器数据链路层:传输有地址的帧以及错误检测功能物理层:以二进制形式,在物理机器上实现传输(光...

2020-03-16 20:57:54 124

kafka集群管理工具 kafka-manager

kafka集群管理工具 kafka-manager,解压后修改zookeeper地址后即可启动运行.然后可以直接运行了.具体可以看我的博客.https://blog.csdn.net/qq_25933841/article/details/104395644

2020-02-19

kafka压缩包解压直接可用

kafka_2.12-2.1.1 下载可以直接使用

2020-02-19

空空如也

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

TA关注的人

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