自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(117)
  • 收藏
  • 关注

原创 一场技术破案的经过

关于http Session 和 websocket Session 过期事件 源码分析

2022-08-05 10:05:37 924 1

原创 《人世间》影评

昨天熬夜看完电视剧《人世间》的大结局,趁着印象深刻,跟朋友们聊聊感触。关于演技首先是所有演员演技都在线。殷桃的表演很是亮眼,比演骆玉珠时要好很多。让我感受到了郑娟的隐忍,善良,和对丈夫毫无保留的爱。丁海峰演的常宇怀虽然镜头不多,但每一个镜头都极其真实,对军工厂的感情溢于言表,老戏骨真是演什么像什么。即使被人骂最多的周蓉,其在剧中我也不觉得违和。宋佳将一个自私清高的海参女王演的这么到位,那么这些骂声正是演员应得的的掌声。关于友情郑娟给于虹房子时,于虹表现得从不敢奢望的怯弱,到为朋友善举的感动,.

2022-03-02 20:35:13 539

原创 AQS相关问题总结

通过对AQS及相关类的源码分析,我得到以下总结。AQS 的底层原理AQS是一个同步框架,内部实现了一个同步队列,在acquire/shared和release/shared方法中,经tryRelease和tryAcquire判断,对调用线程进行了入队挂起或激活抢锁操作。而判断的细节tryRelease和tryAcquire交由子类实现,以适应不同场景的需要。基于此可以实现各种各样的锁及相关工具。对于 CountDownLatch 和 CyclicBarrier,semaphore的认识countDo

2022-01-06 11:20:01 396

原创 AQS之Condition源码刨析

Condition是AQS的一个内部类里面维护了一个等待队列public class ConditionObject implements Condition, java.io.Serializable { private transient Node firstWaiter; private transient Node lastWaiter; public ConditionObject() { }...

2022-01-05 21:07:55 134

原创 CopyOnWriteArrayList 与CopyOnWriteArraySet详解

CopyOnWriteArrayList一,类基本属性public class CopyOnWriteArrayList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable { //可重入锁 final transient ReentrantLock lock = new ReentrantLock(); //底层是个volatile修饰的array private

2021-12-23 16:36:17 1575

原创 linux正则非贪婪模式不起作用的处理办法

在Linux正则使用过程中,默认使用的是贪婪模式,如贪婪模式常用的量词有:{m,n}{m,}?*+如果改成非贪婪模式要量词后面加上一个问号?,只需这样:{m,n}?{m,}???*?+?在我执行的时候发现?不起作用,加上后匹配不到任何内容了。需要用[^/]* 代替*?,来使用非贪婪模式,如下:sed -i 's@abc-\([^/]*\)-\([^\]*\)\.ef@abc-\1-cde-\2.ef@g'其中括号是用来获取字串,\1,\2是用来展示对应的字串。...

2021-12-16 11:29:39 1733

原创 influxdb 内存溢出,常驻内存集占用过高等常见问题排查

一,influxdb内存溢出,启动报错现象:检查influxdb.log文件,看到如下错误:fatal error: runtime: out of memoryruntime stack:runtime.throw(0x12dae55, 0x16) /usr/local/go/src/runtime/panic.go:608 +0x72runtime.sysMap(0xc480000000, 0x164000000, 0x21cb618) /usr/local/go/src/runtim

2021-12-06 16:39:11 13697 2

原创 http慢速攻击漏洞修复

原理漏洞原理HTTP慢速攻击也叫slow http attack,是一种DoS攻击的方式。由于HTTP请求底层使用TCP网络连接进行会话,因此如果中间件对会话超时时间设置不合理,并且HTTP在发送请求的时候采用慢速发HTTP请求,就会导致占用一个HTTP连接会话。如果发送大量慢速的HTTP包就会导致拒绝服务攻击DoS。3种攻击方式Slow headers(也称slowloris):Web应用在处理HTTP请求之前都要先接收完所有的HTTP头部,Web服务器再没接收到2个连续的\r\n时,会认为客户端

2021-10-15 14:21:01 5095 2

原创 几次jvm问题排查,cpu飙高,oom等

在项目中经常遇到的jvm问题,排查经历记录如下。一,cpu飙高,频繁full gc,内存泄漏cpu飙高,看下gc情况,发现频繁full gcjava cpu占用cpu较高的线程也是gc线程。如此,则排查full gc的原因。根据堆转储分析,首先找占内存最大的类。发现有一个hashmap占内存巨大,其中存在大量不同的key,但value相同的键值对。对照代码,查出此处存在内存泄漏,存入方式key生成机制存在问题,且没有清理机制。导致该map持续增长,不能得到回收。内存持续泄漏,最终导致超过堆内存

2021-10-09 17:42:06 764

原创 第十二篇:读《经济学的思维方式》

这本书比较厚,上下本加起来有九百多页,断断续续读了一个多月。好在确实提高了我的一些认知,所以尽管时间长些,感觉还是很值得的。毕竟相当一部分书都只是告诉你一些知识,只有很少一部分才能改变自己的思维方式。通过此书,我学到了以下几点:一,经济学并不是关于钱的学问,而是研究具有不同用途的稀缺性的资源使用的学问。有些经济决策不一定会涉及到金钱,但依然是经济问题。比如在战地医院上如何用有限的资源拯救最多的人。二,商品并不存在一个“真实的价值”。就像我爷爷经常感叹的,这个商品这么贵,它真的值这么多钱吗?这个问.

2021-09-30 15:04:55 300

原创 第十一篇:读《文明,现代化,价值投资与中国》

读完本书,我有以下几点启发。一,自由市场和科技的结合,使人类进入了经济可以无限累进增长的时期。自由交换对双方都有利,从而创造价值,即1+1》2。知识的交换,双方都没有失去知识,得到的新知识还会与已有的知识合作激发新的知识,从而实现1+1》4。知识的交流,促进了科技的进步,与自由市场中人类贪婪用不满足的本性相结合,造就了经济无限累进增长的现象。二,人类基因的目的在于基因的自身延续最大化,为了使基因最大化的传播,人们被设定为用不满足。此用不满足的心理,造成的追求没有尽头,跟我们理性所知的知足常乐是有冲突

2021-09-30 14:56:18 9936

原创 第十篇:读《这才是心理学-看穿伪科学的批判性思维》

伪科学流毒已久,有些伪科学生命力极其顽强,甚至成为了社会共识,并一代代传递下去。在小孩还没有鉴别力的时候,灌输给小孩的观念,很容易成为一个人信仰,不再怀疑这个概念的正确与否。而今天,互联网的繁荣使得每天都有大量信息推送给自己,其中相当一部分是伪科学的,在科学的外表下夹杂着自己的私货。如果不去甄别,或者没有能力甄别,最终蜜汁毒药一起吃,能有什么效果不一定。轻则浪费点时间与部分金钱,重则倾家荡产搭进性命。百度魏则西事件,固体饮料大头娃娃事件,水变汽油“中国第五大发明”事件,等等,无法一一列举。那么怎.

2021-09-30 14:51:34 318

原创 第九篇:读《大概率思维》

信仰概率和信仰真理,长期来看几乎没有区别。首先做大概率能赢的事情,即使赢的概率比输的概率只高出一点点,只要做的次数足够多,最终你总能获胜。这也是赌场的阳谋,即使每局的庄家优势只有1%-2%,最终也可以从无数次对决后获取丰厚的回报。同样的道理,即使庄家和玩家获胜概率一样,但是庄家会有“抽水”,所以等于每局会有几个点的优势,长久下来,胜负早已决定。所以,一个良好的决策肯定是基于概率的最终期望值的所作出决定的。其次,良好的决策未必就一定会带来良好的结果。即使你赢的概率有90%,你依然会输。但你输了,不.

2021-09-30 14:45:25 241

原创 第八篇:读《反脆弱》

《反脆弱》一书对我最有益的地方,在于它提出了一个我从未意识到的概念,反脆弱。它将事物分为三类,脆弱,强韧,反脆弱。面对一定程度的波动或者变化时,脆弱类会被损坏,强韧类会基本保持不变,而反脆弱类会趁机生长。这让我想起《权利的游戏》的人物,如托曼,瑟曦,小指头。面对混乱时,托曼自杀,瑟曦不被打败,小指头正是借由混乱一步步走向权利的中心。如果说到当今职业划分的话,本次新冠疫情就是一块试金石,很多职业无疑是脆弱的,不必一一列出。不过有些职业在本次疫情中表现出了强韧性,比如国企职工。同时,有些商人或者投资者.

2021-09-30 14:43:16 184

原创 第七篇:读《被讨厌的勇气》

这是一本讲如果获得人生幸福的书。书中的阿德勒心理学我第一次接触,跟之前接触的佛洛依德心理学截然相反,所以读来觉得观点很新颖。由于书中的观点难以证实或者证伪,所以我只好先假设作者的观点是正确的,看能得出什么结论。最终我得到以下几点收获。一,关于心里创伤。阿勒德明确反对心理创伤,认为决定我们自身的并不是经历,而是我们赋予经历的意义。坚决反对由于某些历史创伤决定了自己的不幸的观点。历史问题确实会有些影响,不过这不是你不能获取幸福生活的理由。真正的原因是改变所需勇气的缺乏,因为改变自己太困难了。所以总有人.

2021-09-30 14:39:34 99

原创 第六篇:读​《亲密关系》

一.这本书适合谁读?一切希望拥有亲密关系的人,想知道为什么相当一部分爱情都以分手而结束的人。二.这本书如何评价?书里的有些观点让我很受启发,值得阅读。三.这本书主要讲些什么?主要讲进入热恋或者婚姻的人们,是怎么一步步将关系走向破裂的。导致这么多的分手和离婚的背后原因是什么?我们该如果避免这样的结局,从而拥有终身的亲密关系。四.本书带给我什么收获?1.亲密关系,就像所有艺术一样,也需要个人天分(这每个人都不缺),基本教育和不断的练习。2.通往地狱之路,是用期望铺成的。每个人都希望找到梦中情.

2021-09-30 14:35:01 104

原创 第五篇:读《原则》

这本书适合谁读?生活总是一个问题接着一个问题,让人焦头烂额。然而,在这应接不暇的问题背后,有着可以归纳的规律,掌握了这些规律,你就拥有了解决生活问题的法门。从而避免头痛医头脚痛医脚的低效行为。另外,这本书中很大量篇幅在讲如何打造一个优秀的组织,包括公司独特文化的打造和员工的选用育留,推荐每一位管理者阅读。这本书如何评价?作者瑞达利欧,是截止到2019年1月,全世界最富有的100人中的第79位。他创办的桥水基金管理着1600亿美元的资产。这样一个特别成功的人,必然有其独特的人生观和实践方法。他发现,.

2021-09-24 12:23:31 119

原创 实操tomcat 启动性能优化

1.如果存在多个war包程序,开启并行加载在server.xml中 Host部分加入startStopThreads="0"<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" startStopThreads="0">tomcat 不设置此值的话,默认单线程加载。设置为0,tomcat会获取当前cpu核心数,使用该值作为多线程数,进行并行加载。实测大大提高部署

2021-07-16 11:15:54 631

原创 第四篇:读《穷查理宝典》

本书适合谁读?查理芒格和巴菲特联手创造了有史以来最优秀的投资纪录,目前个人财富17亿美元。如果你想知道查理芒格是怎么取得这么出色的成就的,想听他总结自己的人生心得,或者你对投资有兴趣,建议阅读本书。这本书如何评价?本书是连岳重点推荐的书籍之一,书价一百多元,内容的价值远远超出这点成本。阅读本书,像听取一个优秀的长辈,讲述他的生活理念,正是这些理念是他获得幸福的生活,和世俗的成功。这些人生智慧的影响因人而异,小则给人以启发,大则可以改变一个人生活。豆瓣评分8.9。这...

2021-05-17 21:05:59 228

原创 第三篇:读《今日简史》

这本书适合谁读?人类社会当下正在经历些什么?这些现象发生的原因是什么?人类的哪些革命性的科技将会带来什么样的问题?以及我们应该为此做些什么准备?如果你对以上问题感兴趣,那么推荐你阅读这本书。这本书如何评价?这本书是尤瓦尔·赫拉利的简史三部曲的最后一部。之前读过《人类简史》《未来简史》,观点新颖又令人信服。至于读这本书,犹如听高人讲座。当下社会正在经历数千年来未有之大变局,我们都是这场变局的亲历者。但当局者迷,我们日常关注的都在于细节,难以从全局的角度看待当今世界。恰如大象上的蚂蚁...

2021-05-17 21:02:26 160

原创 kong 网关插件response-transformer 不处理gzip压缩内容的解决办法

在插件开发时,发现kong自带插件不处理压缩内容。需要自己定制开发。使用zlib,新增处理脚本myCompression.lualocal zlib = require "zlib"-- see https://stackoverflow.com/questions/45216069/lua-how-to-gzip-a-string-gzip-not-zlib-in-memory-- and https://github.com/brimworks/lua-zliblocal _M = {

2021-04-22 14:09:08 902 2

原创 第二篇:读曹德旺《心若菩提》

最近看曹德旺的自传《心若菩提》,里面有件事情让我印象特别深刻,就是正直。01曹德旺的选择曹德旺在一次次面对利益的选择时,都选择了坚守自己的正直。而代价是一次次损失金钱,最多的一次损失高达22亿人民币。中国有句老话,叫利令智昏。就是说人在短期利益面前,容易做出长期来看会影响自己声望的事情。我并不是在说曹德旺的道德有多高尚,从而值得我们学习,不是的。正如富兰克林说过,诚实并非最好的品德,而是最好的策略。我是说,曹德旺在利益面前做选择时,是相信自己的正直更加有价值的。曹德旺至今捐款已超百亿。从结果

2021-04-19 08:57:54 1917 3

原创 第一篇:读梁启超《李鸿章传》

以前对李鸿章是没什么了解的。从初中课本里知道李是卖国贼,从电视剧里了解到李也有自己的无奈。仅此而已了。你无法评价一个你几乎不了解的人,否则就是妄言。对于这位清末中国第一人,我突发兴趣,于是读了梁启超写的《李鸿章传》,颇有收获。梁启超在精彩的绪论中写了这句知名的评价:吾敬李之才,惜李之识,而悲李之遇。李鸿章有帅才,以三城开始打天下,在群帅束手无策的时候,一年便荡平江苏,又一年便歼灭太平天国,结束了长达十余年的战乱。不过即使这么有才的李鸿章,有机会施展抱负的时候,也已经三十八岁了。这样说来,即使你有才华,也

2021-04-19 08:55:30 495 2

原创 rancher helm-controller 源码解析

一,首先下载helm-controller源码helm-controller二,找到helm.go方法,这是一切的开始func main() { //生成一个新的配置结构体 actionConfig := new(action.Configuration) //将所有命令集成进来,找到具体的命令,下文详说 cmd, err := newRootCmd(actionConfig, os.Stdout, os.Args[1:]) if err != nil { warning("%+v",

2021-04-12 20:59:50 762

原创 kubernetes webhook 本地调试避坑指南

本文着重介绍本人在测试webhook过程中遇到的问题,及最终解决方案。我在linux机器上测试,安装kubebuilder,kustomize等问题不再赘述。一,安装项目1.首先在gopath下新建目录,并进入目录mkdir mywebhookcd mywebhook/2.初始化项目[root@host mywebhook]# kubebuilder init --domain zander.com3,生成kind,crdkubebuilder create api --group

2021-03-11 17:53:46 3705

原创 使用pongo进行kong plugin 测试

我使用docker启动,命令如下一,启动docker 并挂载目录docker run -it --rm -v //var/run/docker.sock:/var/run/docker.sock -v E:\dockers\pongo\plugins:/pongo_wd -v E:\dockers\pongo\kong-pongo:/root/kong-pongo pongo-1.0 /bin/bash其中需要测试的插件放入宿主机E:\dockers\pongo\plugins目录并将https

2021-03-04 14:17:54 298 1

原创 Kong插件session分析

因为最近要开发自定义kong认证插件,比如使用casbin鉴权或者cas sso 单点登录等功能。遇到避免二次登录的问题,故考虑使用Kong 自带的session插件。那么就遇到了第一个问题,session插件是怎么工作的?一,获取源码kong session 源码地址 https://github.com/Kong/kong-plugin-session在plugins目录我们看到一个标准的kong插件文件列表二,handler.luahandler.lua定义了优先级为1900,并将he

2021-03-04 10:57:48 555 1

原创 KONG 使用go 插件 实战

一,Dockerfile####################### Go plugins - https://github.com/Kong/docker-kong/issues/326#####################FROM kong:2.0-ubuntu as compilerUSER rootRUN sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.listRUN sed -i s

2021-01-05 14:49:33 1707

原创 dockerfile RUN apk add 卡住问题解决

由于仓库镜像资源问题引起的,换成阿里云资源即可。具体操作,在RUN apk add 命令之前加以下代码RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories重新build即可

2021-01-05 10:46:07 7800 3

原创 InetAddress.getLocalHost()卡住的bug解决办法

今天发现一个服务在新环境中特别卡,经过排查,定位到InetAddress.getLocalHost()引起的,其中调用了native方法去获取本机的hostname,Ip等信息,如果本机配置的resolv.conf文件有问题的话,就有可能会卡住。测试办法,在服务器上查看本机hostnamehostname -i该方法如果特别卡,那么java InetAddress.getLocalHost()方法就会同样卡住。这是一个DNS客户机配置文件,用户配置DNS服务器地址。改为配置一个能够使用的地址即可了

2020-12-11 16:52:45 3410

原创 spingcloud gateway 请求流程 源码分析

一,源起@SpringBootApplicationpublic class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); }}进入了SpringApplication.run()二,SpringApplication public static ConfigurableApplicati

2020-12-10 14:49:23 400

原创 spring cloud 实现灰度发布,多个服务指向同一个路由的错误解决及源码分析

前文中,我自定义一个gatewayRule,实现了根据参数进行路由,从而实现灰度发布的功能。在本地自测的时候,运行良好。放到测试环境后,发现一个重大bug。所有的服务都会走同一个路由,所以服务A请求服务B时,却会调用到服务C!自己引入的bug,自己跪着也要解决。开始经历了层层排查历史,并最终解决问题。一,接着前文讲起,RibbonLoadBalancerClient中public ServiceInstance choose(String serviceId, Object hint) {//查询s

2020-12-08 14:00:58 361

原创 spring cloud Ribbon 源码分析

前两文写了ribbon的根据传参进行自定义负载均衡,今天要解释一下,为什么能够这样做。将这几天的源码查看,做一个记录,以备日后分享。当我们使用了@LoadBalanced注解后,就具有了负载均衡的能力。现在开始解密之旅。一,@LoadBalanced@LoadBalanced@beanpublic RestTemplate restTemplate() { return new RestTemplate();}发生了一些神秘的变化,一切开始不同。看一下这个注解/** * Anno

2020-11-26 20:46:41 168

原创 springcloud gateway 根据请求参数自定义路由,实现灰度发布

gateway 实现灰度发布比单纯的ribbon 更简单一些。一,实现一个自定义的路由import com.netflix.client.config.IClientConfig;import com.netflix.loadbalancer.AbstractLoadBalancerRule;import com.netflix.loadbalancer.Server;import org.springframework.stereotype.Component;import java.ut

2020-11-25 16:57:26 3041 2

原创 ribbon按参数路由,实现灰度发布功能

遇到一个问题,需要根据请求参数进行自定义路由。看了ribbon的实现源码,发现ribbon 在路由时,根本没有地方可以传参,以实现根据参数路由的功能。唯一的参数loadBalancerKey,是永远为null的坑爹设计。所以只好自己实现。我的实现方式如下:一,首先定义自定义RequestInterceptor,将参数传入到ThreadLocal里@Componentpublic class MyRequestInterceptor implements RequestInterceptor {

2020-11-24 20:26:26 698 2

原创 git从入门到精通

基本概念工作区-暂存区-本地版本库-远程仓库分支管理master,develop,issue*一,基础命令git clone 克隆git status 查看git状态,工作区,暂存区状态git pull 从远程仓库拉最新代码git push 推送到远程仓库 ,指定源及分支 origin mastergit branch 查看分支/新建分支/查看远程分支-agit checkout 切换分支/新建并切换分支 -bgit merge branch 合并某分支git ad

2020-10-28 16:53:51 130

原创 springboot自定义静态目录文件,自动跳转目录,及thymeleaf修改模板地址导致的bug的始末

一,本次项目需要自定义一个静态目录文件,而不是在classpath下面代码如下@Configurationpublic class MyWebMvcConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/static/**").addRe

2020-10-16 16:50:49 484

原创 websocket failed One or more reserved bits are on: reserved1 = 0, reserved2 = 1, reserved3 = 1

最新使用websocket 经gateway转发后报错WebSocket connection to 'ws://192.168.0.153:9000/socket_listener_1_WINDOWS.php' failed: One or more reserved bits are on: reserved1 = 0, reserved2 = 1, reserved3 = 1经常一遍google,结果是一堆杀毒软件问题,真是奇怪,回头看报错栈信息,一行行追踪,终于发现是请求格式问题,转发消息时,

2020-10-14 20:49:56 3193

原创 springcloud gateway自定义断言规则,以后缀结尾进行路由

因工作需要,需要使用springcloud gateway ,以.html结尾的进行路由进行websocket转发。gateway自带的8种路由规则都不能满足,故需要自定义断言规则。一,新建一个路由断言工厂ExtCheckRoutePredicateFactory@Componentpublic class ExtCheckRoutePredicateFactory extends AbstractRoutePredicateFactory<ExtCheckRoutePredicateFacto

2020-10-14 20:38:46 1919

原创 2020年Java面试题

并行流底层实现和问题底层使用forkjoinpool,默认线程数为核心数,拆分使用对半递归拆分。问题,1.同用一个池子,线程数有限,如果有IO阻塞任务,将会导致其他任务长时间等待。sql执行流程连接-查询缓存-语法解析器和预处理-查询优化器-执行计划-执行SQL连接:tcp连接,权限验证查询缓存:根据query进行hash运算,存储结果语法解析器和预处理:验证语法是否正确,库表字段是否存在查询优化器:基于成本选择成本最小的语句执行计划:生成查询的指令树执行sql: 调用存储引擎的API进

2020-08-27 10:12:37 222

空空如也

空空如也

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

TA关注的人

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