工具
文章平均质量分 86
还是转转
这个作者很懒,什么都没留下…
展开
-
Cpu负载高导致Redis(Redisson)超时问题的分析
Redisson客户端超时有几种原因,nettyThreads线程数不足,连接池太小,应用服务器CPU受限等等。原创 2023-10-20 17:38:57 · 8152 阅读 · 0 评论 -
开源软件license介绍与检测
从整体上看,开源许可证大致分为宽松式(Permissive)许可证和著作权(copyleft)许可证两类。两者的差别主要在于宽松度以及使用开源软件组件相关的要求和许可权限的多少。比如说Copyleft类型的license,拥有该类型license的开源组件可以免费使用,但是一旦代码中使用了这类组件,在将该代码分发给其他人时,就必须开放你的源代码。GPL许可证族就是这类许可证的代表。与之相对的是宽松式许可证,它保证了使用、修改和重新分发的自由,几乎没有任何限制条件,如MIT。原创 2023-11-29 15:31:00 · 2510 阅读 · 0 评论 -
Jenkins Pipeline使用指南
Jenkins Pipeline 实际上是一套插件,通过这些插件,用户可以持续集成和交付。原创 2023-06-28 11:22:31 · 294 阅读 · 0 评论 -
AWS概述
从2006年开始,AWS就开始以web服务的形式对外提供IT基础设施的商业化服务–即现在的云计算。云计算的一个重要的优势就是以与业务规模匹配的较少变化的成本取代了前期为了搭建基础设施而投入的巨量资金。有了云平台,公司就无需提前几个星期或者几个月就开始计划怎么获取生产服务器和其他IT基础设施。而是可以快速获取成百上千台服务器,从而实现快速交付。现如今,AWS通过其高可靠,可伸缩,低成本的基础平台为全球190多个国家和地区的几十万家公司提供了服务和支持。原创 2023-06-27 17:56:06 · 4812 阅读 · 0 评论 -
k8s指南-DNS与服务发现
在k8s中,ip是随时可能发生变化的,特别是pod的ip,服务的ip也是可以改变的。因此服务或pod之间相互访问一般是通过域名来实现的原创 2023-03-14 19:11:19 · 2082 阅读 · 0 评论 -
Hibernate懒加载问题
Hibernate懒加载获取到的是代理对象,只包含id。只要在实际使用时才会触发真正的数据库操作。原创 2023-02-14 11:43:28 · 264 阅读 · 0 评论 -
Maven生命周期和插件
maven的生命周期就是对所有的构建过程就行抽象和统一。maven从大量项目和构建工具中总结了一套高度完善的、易扩展的生命周期。这个生命周期包含项目的清理、初始化、编译、测试、打包、集成测试、验证、部署和站点生成等几乎所有的构建步骤。Maven的生命周期是抽象的,其实际行为都是由插件来完成。转载 2022-11-23 17:57:42 · 281 阅读 · 0 评论 -
Prometheus: 通过ConfigMap来添加Grafana仪表盘
如果你通过部署了Prometheus/Grafana,那么Grafana中的仪表盘就是通过边车(sidecar)来动态获取的。Sidecar的观察对象是ConfigMap,当ConfigMap中配置的仪表盘发生变更时,可以动态更新Grafana的仪表盘,而无需重启pod。在本文中,我将向你展示如何在Prometheus中识别要衡量的指标,在Granfa中创建一个仪表盘来显示该指标,并将仪表盘导出为json文件。翻译 2022-09-06 16:17:45 · 968 阅读 · 0 评论 -
Prometheus基本原理和使用
Prometheus是一个开源的监控和告警系统原创 2022-06-28 14:33:36 · 2658 阅读 · 0 评论 -
k8s指南-概述
Kubernetes是一个可移植的,可扩展的开源平台,用于管理容器化的工作负载和服务,为声明式配置和自动化带来了巨大便利。它拥有着巨大而快速增长的生态系统,其相关的服务和工具得到了广泛的应用。原创 2021-12-04 20:45:57 · 1172 阅读 · 0 评论 -
postgres操作指南
安装使用mac可以通过命令行用brew来安装或者直接下载安装包来安装,网上资料很多,这里就不介绍了。如果通过brew来安装的,可以通过brew services start/stop postgres来开启或停止。还有一种方法是通过docker来跑,这里以mac桌面版为例,创建启动脚本pg-docker-compose.yml:# Use postgres/example user/password credentialsversion: '3.1'services: pgsql:原创 2021-11-26 11:11:56 · 7157 阅读 · 0 评论 -
OpenAPI指南
OpenAPI指南基本介绍什么是OpenAPIOpenAPI规范(以前叫swagger规范)是一个接口文档规范,它用一个文件来描述API接口,包括:可用的api接口(如/users) 和接口方法 (GET /users, POST /users)输入和输出参数鉴权方法联系信息, 代码许可, 使用条款和其他信息等.文件可是可以是json或yaml的,完整的规范参见: OpenAPI 3.0 Specification什么是swaggerSwagger is a set of open-翻译 2021-11-07 22:29:54 · 23136 阅读 · 0 评论 -
k8s部署失败常见原因
1. 错误的容器镜像/非法的仓库权限其中两个最普遍的问题是:指定了错误的容器镜像。使用私有镜像却不提供仓库认证信息。这在首次使用 Kubernetes 或者绑定 CI/CD 环境时尤其棘手。让我们看个例子。首先我们创建一个名为 fail 的 deployment,它指向一个不存在的 Docker 镜像:$ kubectl run fail --image=rosskukulinski/dne:v1.0.0然后我们查看 Pods,可以看到有一个状态为ErrImagePull或者ImageP转载 2021-10-22 16:28:00 · 5278 阅读 · 0 评论 -
postman测试
一、Pre Request ScriptsPostman v0.10+ 版本支持pre-request scripts。pre-request scripts是一个关联了收藏夹内request,并且在发送request之前执行的代码片段。这对于在request header中包含时间戳或者在URL参数中发送一个随机字符串都是非常有用的。例如:如果要在request的header中包含一个时间戳,你可以设置一个环境变量由一个函数返回它的值postman.setEnvironmentVariable(转载 2021-09-18 13:49:53 · 430 阅读 · 0 评论 -
TestContainer介绍
在日常开发过程中,经常会用到第三方组件或中间件,如redis,mq,db等。因为这些第三方组件的引入,测试过程会变得复杂起来。可能换了一个环境之后,因为中间件的缺失,测试用例就跑不起来了。而TestContainer可以通过和docker结合,很方便的在代码中启动docker容器,在docker容器中运行这些第三方组件,从而方便进行测试。基本使用以maven构建的springboot工程为例,引入依赖<dependency> <groupId>org.testco原创 2021-09-09 10:18:05 · 2400 阅读 · 0 评论 -
gRpc指南
本文翻译自官网。原文:https://grpc.io/docs/languages/java/quickstart/快速开始下面通过一个简单的样例,让你快速上手基于java的gRpc的使用。前置条件JDK7以上版本获取示例代码示例代码是grpc-java的一部分。从github仓库下载gprc代码压缩文件并解压,或者直接克隆代码:$ git clone -b v1.40.0 https://github.com/grpc/grpc-java进入示例代码路径:$ cd gprc-ja翻译 2021-08-26 23:13:20 · 468 阅读 · 0 评论 -
zookeeper原理与实践
zookeeper安装和使用从清华镜像站下载zookeeper3.6.3版本,地址:https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.6.3:下载到本地并解压缩后(注意下载3.6.3-bin.tar.gz),进入zk目录修改配置文件名:cp conf/zoo_sample.cfg conf/zoo.cfg接着进入bin目录启动服务端:./zkServer.sh start服务端启动后,继续启动客户端:./zkC原创 2021-07-20 23:42:22 · 152 阅读 · 0 评论 -
docker入门
本文主要介绍基本的docker操作。原创 2021-03-01 18:04:05 · 869 阅读 · 0 评论 -
本地缓存
在分布式系统中,分布式缓存如redis,memcache使用比较多。实际上,本地缓存在很多场景下也有使用的必要。本文主要介绍google的工具包guava中的缓存工具的使用。本地缓存应用场景:(1)对性能有非常高的要求(2)不经常变化或者存在热词(3)可以接受数据的非实时性本地缓存可以通过几种方式来实现:ConcurrentHashMap,Guava cache或Ehcached。这里说说Guava cache的使用。其特性如下:使用LRU缓存过期机制并发处理能力:类似于Concurr原创 2021-01-06 16:54:14 · 483 阅读 · 0 评论 -
Zipkin安装和使用
在前面的blog中介绍过apm原理和开源apm框架,这里继续介绍Zipkin的安装使用。Zipkin官网:https://zipkin.io/pages/quickstart。前文导航:分布式跟踪系统选型与实践Elastic APM安装和使用Cat的安装和使用...原创 2020-12-01 11:44:35 · 4777 阅读 · 0 评论 -
Cat安装和使用
CAT(Central Application Tracking)是原大众点评基于eBay的CAL改进而来的分布式服务链路监控平台。CAT自2004年开源以来,在携程、陆金所、平安银行、拼多多、OPPO、猎聘网、找钢网等100多家公司、企业的生产环境中落地应用。以2016年的一组数据为例:美团点评,2016年,3000+应用服务,7000+服务器,100+TB/天,单机峰值QPS 16w携程,2016年,4500+应用服务,10000+服务器,140TB/天,单机峰值QPS 10w。目前,CAT(作原创 2020-11-13 11:39:47 · 5143 阅读 · 0 评论 -
Elastic APM安装和使用
在上文中,简单介绍过APM系统,这里记录一下Elastic APM的安装和使用过程。搭建elk按照es官网说明分别部署。部署elasticsearch通过命令行下载elasticsearch:curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.0.1-linux-x86_64.tar.gz解压到指定目录,如/usr/local目录。进入elasticsearch的bin目录,运行ela原创 2020-11-12 09:22:31 · 5572 阅读 · 1 评论 -
分布式跟踪系统选型与实践
APM(Application Performance Management & Monitoring)即应用性能管理和监控,主要通过对程序的性能指标进行分析和监控,来帮助开发、测试、运维人员来掌握程序的性能和运行情况。APM原理与简介APM通过汇聚业务系统各个处理环节的实时数据,分析业务系统各事务处理的路径和处理时间,实现对应用的全链路性能监测。APM工具与传统的性能监控工具的区别在于,它不仅仅提供一些零散的资源监控点和指标,而是关注于系统内部执行和系统间调用的性能瓶颈分析。目前市面的A原创 2020-11-11 09:26:52 · 599 阅读 · 0 评论 -
布隆过滤器
在之前的分布式缓存一文中,提到过缓存穿透一个解决方案是布隆过滤器。本文将对布隆过滤器进行一个详细的介绍。布隆过滤器原理布隆过滤器(BloomFilter)实际上是一种数据结构,包括一个很长的二进制向量和一系列随机映射函数。主要用于检索一个元素是否在一个集合中。优点是空间效率和查询时间效率都很高,缺点是有一定的误判率,并且不支持元素删除。在布隆过滤器的内部,维护了一个位数组bitArray。开始时所有的位都为0。当插入一个元素时,通过多个哈希函数计算该元素的哈希值,在哈希值对应的数组下标处,将0置原创 2020-10-31 22:24:30 · 116 阅读 · 0 评论 -
(2006,Mysql Server has gone away)问题处理
最近遇到了一个奇怪的问题,更换mysql db的连接地址之后,偶尔出现简单的sql查询语句报(2006,Mysql Server has gone away)错误。暂未找到原因,不过大概的排查过程可以记录下。原因分析根据Mysql官网的描述,可能的原因如下:1.Mysql服务宕机可通过show status like ‘uptime’;来查询服务器运行时间:排除服务器宕机问题。2.Mysql连接超时通过show global variables like '%timeout';查看超时参数原创 2020-08-01 22:11:13 · 2903 阅读 · 0 评论 -
maven的settings配置不生效
最近更换了maven仓库后,发现仍然是从原来的仓库拉取jar包。修改settings.xml文件名等方式仍然不生效。通过mvn help:effective-settings命令查看配置,发现与当前使用的配置文件 ~/.m2/settings.xml不一样。然后再查看全局的settings.xml(maven安装目录下),才找到了问题。原来旧的仓库配置在全局的settings.xml中也有一份。将全局settings.xml恢复为默认配置,删除本地仓库下的jar包之后重新拉取,这次就正常了。配置优先级原创 2020-07-21 16:10:28 · 9982 阅读 · 0 评论 -
redis原理和使用-安装和分布式配置
在之前的blog中,介绍过redis分布式锁实现。在日程的工作中,redis也使用得非常频繁,包括缓存,分布式锁,消息队列等。本文将系统性地对redis做一个完整的介绍和总结。Redis服务安装和远程访问Redis安装网上教程很多,这里就不介绍了。安装好之后可通过redis-server启动,通过客户端redis-cli进行访问,默认使用6379端口(本文环境为ubuntu+redis3....原创 2020-03-31 23:49:58 · 261 阅读 · 0 评论 -
远程仓库版本回退
转载自:http://blog.csdn.net/fuchaosz/article/details/521701051 简介最近在使用git时遇到了远程分支需要版本回滚的情况,于是做了一下研究,写下这篇博客。2 问题 如果提交了一个错误的版本,怎么回退版本? 如果提交了一个错误的版本到远程分支,怎么回退远程分支版本? 如果提交了一个错误的版本到公共远程分支,又该怎么...转载 2017-09-12 13:53:20 · 301 阅读 · 0 评论 -
记录一次自定义参数绑定错误问题的解决过程
问题背景先说一下问题背景:整个项目是一个大的分布式系统,由十几个子系统组成,我负责其中两个系统。分布式服务框架采用了公司封装好的jar包,当然还有一些其他的底层框架。由于某些原因,公司更换了底层分布式服务框架和一些其他的框架,其中分布式服务框架主要是更改了一些包名和类名,其他基本没变。在更换底层框架之前,系统已经经过了两个版本的迭代,并且已在生产环境上线。在更换底层框架之后,系统跑起来没问题,经过简原创 2017-08-29 17:14:19 · 2425 阅读 · 0 评论 -
mysql 5.7 免安装版设置
之前一直使用mysql安装版,按照自动指引设置好参数一般就没有问题了,最近下了一个免安装版来用,解压之后按照网上的设置发现有好多问题,导致试了好多种方案才解决,记录如下: 版本是mysql-5.7.19-win64.解压后放到本地文件夹D:\Program Files\mysql下。在主目录即D:\Program Files\mysql\mysql-5.7.19-winx64下创建my.ini文件原创 2017-09-07 15:40:55 · 276 阅读 · 0 评论 -
日志组件
项目开发时,日志系统是必不可少的东西,不管是开发过程中的调试还是生产环境中的问题跟踪,都离不开日志。在日常的工作中,接触过了Commons logging,JDK logging,Log4J,slf4J还有logback,大概知道怎么用,但对很多细节都不太了解,下面系统地整理一遍。首先要明确的是,Apache的commons logging和另外一个slf4j是日志控件,是日志接口,本身并没有具体的原创 2017-05-23 16:08:31 · 441 阅读 · 0 评论 -
Failed to execute goal maven-javadoc-plugin-----在JDK8下maven-javadoc-plugin插件报错的问题
在JDK 8中,Javadoc中添加了doclint,而这个工具的主要目的是旨在获得符合W3C HTML 4.01标准规范的HTML文档,doc生成机制比之前的要严谨许多,导致打包时报错。解决办法是: 1.在pom文件中properties节点下添加:<properties> <maven.javadoc.skip>true</maven.javadoc.skip></ propertie原创 2017-08-17 16:35:46 · 1188 阅读 · 0 评论 -
maven在不同环境下打包
在开发项目时,项目的开发环境,测试环境,灰度环境和生产环境的各个配置项可能有所不同,如数据库连接相关信息,日志记录等,因此要使用不同的配置文件。然后通过maven打包时就应根据不同的环境打不同的包。具体做法如下(IDE为idea2017.1.2): 在resources/config/resource文件夹下新增dev,test,prd文件夹,对应的文件夹存放对应环境的配置文件,例如ly.prop原创 2017-08-16 17:35:27 · 436 阅读 · 0 评论 -
线程日志标记和接口日志标记
线程维度 当我们的项目中同一时间打印的日志较多,例如同一时间有5个线程在执行,每个线程分别要打出1到20这几个数字,这样三个线程的日志就会互相穿插,除了系统自动生成的线程标识,根本不能清晰地看出具体的单个线程的执行流程。假入一个线程在执行过程中出现异常中断且不打印异常,在大量日志中就很难判断该线程在哪里中断。而系统自动生成的线程标识这东西,在实际的生产中,基本不可能用这玩意儿。所以得有另外一个方法原创 2017-12-14 16:32:18 · 739 阅读 · 0 评论 -
Drools规则引擎
0. 背景最近接到一个根据配置的规则进行路由的需求,实现方案中考虑过drools。然后大致研究了一下规则引擎Drools,借助本文进行一个总结和整理。1. Drools简介Drools是用Java编写的开源的规则引擎。规则引擎是什么?百度百科里面定义如下:规则引擎是由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语言模块编写...原创 2018-03-06 18:53:18 · 962 阅读 · 0 评论 -
linux搭建sftp服务器
众所周知SFTP账号是基于SSH账号的,所以在默认情况下访问服务器的权限是非常大的。下面为SFTP用户权限设置方法 在Centos 6.9 环境使用系统自带的internal-sftp搭建SFTP服务器。 注:SFTP和FTP是不同的服务器,不要混淆。打开命令终端窗口,按以下步骤操作 请注意: sftp的根目录都必须是root权限。 Sftp的用户名以@{username}代替, 密...原创 2018-03-21 20:34:17 · 592 阅读 · 0 评论 -
JDK8版本时间和日期API简介
在Java8之前的版本中,Java处理日期、日历和时间的方式一直为社区所诟病,将Java.util.Date设定为可变类型,以及SimpleDateFormat的非线程安全使其应用非常受限。所以Java8引入了全新的处理时间日期的API。全新API的好处之一是明确了日期时间概念,例如:瞬时(Instant)、长短(duration)、日期、时间、时区和周期。不同于老版本,新API基于ISO标准日历...原创 2018-05-03 20:31:09 · 821 阅读 · 0 评论 -
Hystrix-介绍与使用(上)
在博主另一篇文章-“SpringCloud基础(2)”中简单介绍过Hystrix在SpringCloud中的作用。实际上Hystrix是Netflix的分布式套件之一,该框架目标在于通过控制那些访问远程系统、服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。Hystrix具备拥有回退机制和断路器功能的线程和信号隔离,请求缓存和请求打包,以及监控和配置等功能,即使不使用SpringClou...原创 2018-09-26 21:22:03 · 4607 阅读 · 0 评论 -
Hystrix-介绍与使用(下)
上篇中对hystrix的隔离和熔断作了基本的介绍,本文将说明Hystrix在项目中的实际使用。在开发中很多时候需要调用第三方接口或依赖,而第三方接口或依赖的响应时间是无法被调用方控制的。如果调用方发出大量的请求而长时间无响应,很可能会导致大量线程资源在阻塞中,拖垮服务器的性能。因此在调用第三方接口或依赖时使用hystrix进行隔离和熔断是有必要的。注解使用最常用的方式就是通过Hystrix注...原创 2018-09-29 16:28:48 · 2007 阅读 · 1 评论 -
使用idea比较分支代码差异提示contents are identical问题解决
在使用idea自带的比较工具进行分支代码比较时,明明代码内容相同,但仍然出现在差异文件列表中,并且提示Contents are identical。Stackoverflow上有人提出过这个问题(https://stackoverflow.com/questions/28068511/idea-intellij-compare-between-branches-contents-are-ident...原创 2018-10-31 19:31:03 · 19135 阅读 · 1 评论