- 博客(85)
- 资源 (6)
- 收藏
- 关注
原创 kubernetes pod探针
Kubernetes 对 Pod 的健康状态可以通过三种探针来检查: LivenessProbe 、ReadinessProbe、startupProbe
2024-09-21 17:44:08
747
原创 CentOS升级内核
Linux 内核升级可能会导致系统稳定性问题或兼容性问题,建议您重启前备份重要的文件和数据,并在测试环境中验证变更。内核安装好后,需要设置为默认启动选项并重启后才会生效。说明:kernel-lt(lt=long-term)内核版本查看,可以看到内核已升级至 5.4 版本。内核 rpm 包获取。
2024-08-16 15:56:49
1082
原创 CentOS安装sentry
这套解决方案由对应各种语言的 SDK 和一套庞大的数据后台服务组成,通过 Sentry SDK 的配置,还可以上报错误关联的版本信息、发布环境。通常Sentry在线系统上面的信息,也是可以排查解决BUG的,比如sentryTest is not defined,我们只需要在项目中搜索sentryTest就可以定位到代码报错的位置,但是如果是一些比较通用的,或者信息比较含糊的,是没办法精准定位代码位置的,这个时候,就可能有想法了,怎么让才能在Sentry在线系统看到,到底是执行到哪一步的时候,报错了呢?
2024-07-31 10:49:15
1822
2
原创 大陆居民在香港纳税政策
A:中国大陆全球征税,此种情况被判定为大陆税务居民,所取得的收入,应该回到大陆需要纳税,香港申请免税。请注意:不是公司的董事,才可以申请不在香港申报(纳税),如果是董事,一定要在香港申报()纳税)。大陆和香港不双重征税,此种情况被判定为香港税务居民,所取得的收入,在香港纳税,回到大陆不需要纳税。请注意:如果是在大陆取得的收入,需要在大陆纳税。我国是全球收税的,只要您是中国公民,您在香港还是其他地方赚的钱,当地银行如果和我国的国家税务总局有CRS协议的话,银行每年年底都会向国家税务总局汇报您的收入。
2024-07-25 16:35:10
861
原创 使用geoipupdate自动更新GeoIP数据库
使用 GeoLite2-Country 数据库,IP 地址只解析到对应的国家或地区,使用 GeoLite2-City 数据库,IP 地址可以具体解析到国家/地区、州/省和城市,点击 Download GZIP 就会下载对应的最新版本 GeoLite2 数据库文件。这种方法虽然每次能下载到最新版本的 GeoLite2 数据库文件,但是每次数据库更新都依靠手动下载必然是非常麻烦的,所以我们可以使用 MaxMind 提供的官方 GeoIP 数据库更新程序 geoipupdate。添加完成后,保存并退出。
2024-07-16 10:17:31
2707
原创 SonarQube集成阿里p3c代码规范实现SAST
因为我们公司后端主用的是java语言,在进行sonar代码检测的时候默认使用的是sonar检测规则,种种原因最后需要使用阿里的p3c代码规范来进行检测java代码;重启后可以看到sonar-pmd-plugin插件已经加载了。sonarqube 9.x是没有集成p3c代码规范的。打完包后在当前目录的target目录会有一个。"包,需要将其下并放到sonarqube的。#编译打包 需要有maven环境。目录下然后重启sonar加载插件。一、下载p3c-pmd插件。
2024-07-16 10:12:44
708
原创 Jenkins整合Owasp DependencyCheck实现SCA
对于新增issue来说,Critical的达到1个,或者High的达到1个,就Unstable;注意执行顺序,先执行dependency-check,再执行sonarQube Scanner,因为sonar插件不会进行依赖扫描,需要通过dependency-check扫描完成后,读取配置文件,然后在页面展示的。然后根据收集的依赖项信息与本地的CPE&NPM库数据进行对比,如果检查发现扫描的组件存在已知的易受攻击的漏洞则标识,最后生成报告进行展示。而且该工具还是OWASP Top 10的解决方案的一部分。
2024-07-16 10:10:04
1501
原创 Linux容器时间隔离性测试
时间命名空间 (Time Namespaces):从 Linux 内核 5.6 开始,引入了时间命名空间,可以实现更精细的时间隔离。使用时间命名空间,可以为每个容器设置不同的时间。需要注意的是,这项功能需要宿主机内核支持,并且 Docker 也需要相应的支持。在宿主机和容器内同时执行date命令获取时间。在宿主机和容器内同时执行date命令获取时间。可以看到宿主机和容器内的时间一致。可以看到时间都修改为了2022年。在宿主机执行命令将时间修改回去。
2024-07-15 11:14:59
295
原创 springcloud本地服务不注册到注册中心
开发人员本地的服务如果注册到服务器的注册中心,服务器上的服务如果调用到开发本地的服务会调用不通,影响大家的开发效率。以往为了不把本地服务注册到注册中心,会采用以下几种处理方式:1、修改服务名,例如:将user-service修改为user-service-double,这样别的服务就不会调用到开发人员本地注册上去的服务了2、修改是否注册到注册中心的配置参数为false:-Dspring.cloud.service-registry.auto-registration.enabled=false第
2022-01-26 18:21:38
3933
原创 SOLID设计原则
SOLID设计原则SRPThe Single Responsibility Principle单一责任原则OCPThe Open Closed Principle开放封闭原则LSPThe Liskov Substitution Principle里氏替换原则DIPThe Dependency Inversion Principle依赖倒置原则ISPThe Interface Segregation Principle接口分离原则一、单一职责原则
2021-07-02 19:50:44
1028
原创 ThreadLocal详解
ThreadLocal详解下面引用ThreadLocal的API注释:This class provides thread-local variables. These variables differ from their normal counterparts in that each thread that accesses one (via its get or set method) has its own, independently initialized copy of th.
2021-06-21 11:18:12
1112
原创 InheritableThreadLocal详解
InheritableThreadLocal详解打开InheritableThreadLocal类的源码,InheritableThreadLocal继承自ThreadLocal,重写了三个方法:childValue,getMap,createMappublic class InheritableThreadLocal<T> extends ThreadLocal<T> { /** * Computes the child's initial val...
2021-06-21 11:16:03
1001
原创 consul-template + nginx实现动态负载均衡、故障转移
consul-template + nginx实现动态负载均衡、故障转移前置条件确保nginx服务器已安装consul客户端参考《Consul client端安装》一、Consul-Template安装wget https://releases.hashicorp.com/consul-template/0.24.1/consul-template_0.24.1_linux_amd64.tgztar -xvf consul-template_0.24.1_linux_amd64.tgzmv
2021-06-17 09:55:31
1069
转载 TransmittableThreadLocal(TTL)
???? 功能???? 在使用线程池等会池化复用线程的执行组件情况下,提供ThreadLocal值的传递功能,解决异步执行时上下文传递的问题。一个Java标准库本应为框架/中间件设施开发提供的标配能力,本库功能聚焦 & 0依赖,支持Java 17/16/15/14/13/12/11/10/9/8/7/6。JDK的InheritableThreadLocal类可以完成父线程到子线程的值传递。但对于使用线程池等会池化复用线程的执行组件的情况,线程由线程池创建好,并且线程是池化起来反复使用的;这时父
2021-06-16 20:46:52
1305
原创 内存分析工具MAT的使用
内存分析工具MAT的使用MAT下载地址http://www.eclipse.org/mat/downloads.php我使用的是mac,这里选择Mac OSX版本下载启动MAT导入dump文件导入一个1.58G的dump文件报错"Java heap space"解决方式:编辑文件MemoryAnalyzer.ini修改最大堆内存为4G,-Xmx4g重新启动MAT,导入dump文件打开Leak Suspects视图,分析内存使用情况可以看到(a) Problem Susp
2021-06-09 20:22:49
1035
1
原创 定时计算zipkin-dependencies数据
定时计算zipkin-dependencies数据创建聚合脚本创建相关目录mkdir -p /opt/server/zipkinmkdir -p /data/logs/zipkin/logsvim calc-zipkin-dependencies.sh#!/bin/bashSTORAGE_TYPE=elasticsearch ES_HOSTS=http://127.0.0.1:9200 nohup java -jar /opt/server/zipkin/zipkin-dependenc
2021-06-08 17:33:03
711
原创 Rancher下部署zipkin服务
Rancher下部署zipkin服务在rancher中新建一个服务部署指定服务名称为:zipkin配置Docker镜像为:openzipkin/zipkin:2.21.5将容器内的9411端口映射到主机的9411端口配置环境变量1、配置ES地址ES_HOSTS: http://192.168.1.228:92002、指定存储类型STORAGE_TYPE: elasticsearch3、配置kafka地址KAFKA_BOOTSTRAP_SERVERS: 192.168.
2021-06-08 14:58:06
816
原创 zipkin架构介绍
zipkin架构介绍Zipkin简介Zipkin是 Twitter 的一个开源项目,基于 Google Dapper实现。可以使用它来收集各个服务器上请求链路的跟踪数据,并通过它提供的 REST API 接口来辅助我们查询跟踪数据以实现对分布式系统的监控程序,从而及时地发现系统中出现的延迟升高问题并找出系统性能瓶颈的根源。除了面向开发的API接口之外,它也提供了方便的 UI 组件帮助我们直观的搜索跟踪信息和分析请求链路明细,比如:可以查询某段时间内各用户请求的处理时间等。上图展示了Zipkin的基础
2021-06-08 14:44:50
979
原创 优雅关闭consul
优雅关闭consulconsul关闭原理分析consul agent 在正常关闭的时候会向集群发送 leave 信令,宣告自己离开集群,那么什么才叫正常关闭呢?首先 agent 监听了三个系统信令,os.Interrupt, syscall.SIGTERM, syscall.SIGHUPos.Interrupt, syscall.SIGTERM两个信令分开处理,os.Interrupt这个信令对应的其实就是 ctrl+c, 这一般是我们在开发时才会用到,那么和这个信令配合的配置是*config
2021-05-13 13:01:08
2784
原创 docker容器优雅停机
docker容器优雅停机我们部署在docker中的springboot程序在docker停止的时候并没有执行shutdownHook的操作,正常在本地idea停止springboot服务会看到一系列的shutdownHook操作日志日志如下:2021-05-13 11:12:29.253 INFO 218 [,] [SpringContextShutdownHook] o.s.s.c.ThreadPoolTaskScheduler Shutting down ExecutorService 'cat
2021-05-13 12:54:16
2519
1
原创 Rancher下部署Consul集群
Rancher下部署Consul集群配置服务名称,docker镜像,端口映射配置数据卷映射配置启动参数启动命令设置如下:agent -server -bootstrap-expect=3 -client=0.0.0.0 -datacenter=shenzhen-dev -ui可以看到node1节点已经正常运行,集群地址为10.42.0.89,记住这个IP,后面的 consul-server-2、consul-server-3节点和client节点都需要这个IP才能加入集群。同时我们看到
2021-04-28 10:45:10
1436
原创 elasticsearch深度分页问题
elasticsearch深度分页问题一、深度分页方式from + sizees 默认采用的分页方式是 from+ size 的形式,在深度分页的情况下,这种使用方式效率是非常低的,比如我们执行如下查询curl -XGET '127.0.0.1:9200/shop/shop/_search?pretty' -H 'Content-Type: application/json' -d'{ "query":{ "match_all": {} }, "from":5000, "si
2021-04-19 15:42:28
1100
原创 elasticsearch中文分词插件IK安装
elasticsearch中文分词插件IK安装elasticsearch几种常用分词器如下:分词器分词方式StandardAnalyzer单字分词CJKAnalyzer二分法IKAnalyzer词库分词其中常用的是IKAnalyzer,但IK是第三方插件,需要安装。安装分词器下载IK软件包下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v6.3.1在tags栏选
2020-11-22 10:55:12
1228
1
原创 Google 重叠实验框架:更多,更好,更快地实验(Google A/B实验论文)
Google 重叠实验框架:更多,更好,更快地实验IntroductionGoogle是一个数据驱动型公司,这意味着所有对用户的改动的发布,都要决策者以相应的经验数据作为依据。这些数据大部分是由在线流量上的实验产生的。在web的语境下,一个实验是由一股流量(比如,用户的请求)和在这股流量上进行的相对对比实验的修改组成的。修改包括用户可见的修改(比如,修改顶部广告的背景色),以及不可见的修改,比如测试一个新的广告点击率(CTR)预测算法,都可以通过实验的方式进行的。要支持数据驱动方法论的挑战在于要跟上创
2020-11-22 10:51:12
3425
1
原创 在MAC上使用Charles抓包HTTPS接口
在MAC上使用Charles抓包HTTPS接口安装证书点击 Help – SSL Proxying – Install Charles Root Certificate可以看到“此根证书不被信任”的提示,系统默认对Charles证书是不信任的双击Charles Proxy CA证书,选择始终信任,点关闭,弹出账户密码验证,填一下就改好了回到证书列表可以看到Charles证书已经受信任了配置抓取HTTPS端口Proxy -> SSL Proxying Settings安装SSL
2020-09-05 11:02:59
2664
原创 redis定时手动执行bgsave、备份rdb
redis定时手动执行bgsave、备份rdb 每小时备份rdbvim /opt/server/redis/redis_rdb_bak_hourly.sh#!/bin/sh history_hour=`date +%Y%m%d%H`rm -rf /data/redis-data-backup/$history_hourmkdir -p /data/redis-data-backup/$history_hourcp /opt/server/redis/data/dump-6380.r
2020-08-13 20:27:45
2065
原创 MySQL like查询后置%索引失效分析
MySQL like查询后置%索引失效分析表结构CREATE TABLE `t_food_shop` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', `shop_name` varchar(50) NOT NULL DEFAULT '' COMMENT '店铺名称', `shop_img` varchar(250) NOT NULL DEFAULT '' COMMENT '店铺图片', `category_
2020-07-28 15:18:33
1796
原创 redis添加布隆过滤器插件
redis添加布隆过滤器插件概念布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。redis在4.0版本以后可通过插件的形式添加布隆过滤器 编译安装到redis安装目录创建module目录cd /opt/server/redismkdir module && cd mo
2020-07-06 20:11:41
2565
1
原创 通过gitlab Api自动下载gitLab上的所有项目
通过gitlab Api自动下载gitLab上的所有项目背景现在越来越多的公司采用gitlab来管理代码。但是公司越来越大,项目越来越多,一个个clone比较麻烦,于是写个java程序批量clone思路gitlab有提供api来获取git数据,利用这些信息clone项目参考文档:https://docs.gitlab.com/ee/api/projects.html#list-all-p...
2020-04-29 17:13:22
10678
1
原创 缓存穿透、缓存雪崩、缓存击穿场景模拟、解决方案
cache-best-practice 完整项目代码参考: cache-best-practice一、缓存穿透、缓存雪崩、缓存击穿场景模拟 1、缓存穿透缓存穿透是指查询一个根本不存在的数据,缓存层和存储层都不会命中,通常处于容错的考虑,如果从缓存层查询不到数据则不写入缓存层缓存穿透将导致不存在的数据每次请求都要到存储层去查询,失去了缓存保护后端存储层的意义缓存穿...
2020-04-16 10:31:42
2921
1
原创 接口幂等性校验
接口幂等性校验 一、概念幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。在编程中.一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。例如,“getUsername()和set...
2020-04-15 17:48:21
18529
原创 如何在github上创建一个项目
如何在github上创建一个项目 在repositories页面,点击new进入仓库创建页面,填写相关信息Repository name:仓库名Description:仓库描述类型:public 公共仓库 所有人都可访问 ,private 私人仓库,不是所有人都能访问是否初始化:如果选了是,则会自动初始化一个项目,里面有个readme.md文件,用于描述的描述说明。...
2020-04-14 14:52:59
8822
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人