- 博客(62)
- 资源 (7)
- 收藏
- 关注
原创 代码质量分析利器之SonarQube【史上最全】
写在前面随着业务的发展,程序员维护的系统会越来越庞大。原本一个简单稳定的功能,可能在迭代几次后复杂度上升,导致潜在的风险随之暴露,最终导致服务不稳定,造成业务价值的损失。因此,各位大佬们一致认为需要从源头抓起,从个人技术成长到工作流程标准化去提供系统稳定性。与此同时,我也在代码质量这个方向进行挖掘,试图通过代码质量分析去反向要求程序员提高代码编程能力,降低错误风险,这才有了今天的主角-SonarQube文章目录写在前面背景代码质量分析的痛点调研调研结果Sonarqube介绍工作原理功能介绍项目项目-总览
2022-05-04 10:14:51 8541 6
原创 getInputStream has already been called for this request 问题记录
*** @desc 重复读取HttpServletRequest reader/inputstream/**try {if(ins!if(isr!} }/*** @desc 重复读取HttpServletRequest reader/inputstream/**try {if(ins!
2023-07-27 11:36:59 4131
原创 Arthas线上故障案例分析——内存使用率上升,负载突然变高
arthas是阿里的一款线上故障分析工具,对jvm当前的上线文可以进行实时监控,下文会介绍我在实际过程中是如何使用arthas来定位问题的。
2023-06-20 10:00:30 5019
原创 Java并发编程系列(一)-Synchronized和ReentrantLock爱恨纠葛
Java提供了两种锁机制来控制多个线程对共享资源的互斥访问。
2022-11-16 09:16:14 254 1
原创 JVM虚拟机知识点(保姆级教程)
字节码:即.class文件。javac工具将,java文件进行编译,产生的.class文件即为字节码机器码:机器指令。操作系统能够识别的语言本地代码:机器指令。操作系统能够识别的语言垃圾回收器指的是标记-清除、复制算法、标记-整理的具体实现年轻代老年代在实际工作中,我们可以直接将初始的堆大小与最大堆大小相等,这样的好处是可以减少程序运行时垃圾回收次数,从而提高效率。初始堆值和最大堆内存内存越大,吞吐量就越高,但是也要根据自己电脑(服务器)的实际内存来比较。
2022-11-15 10:54:42 725
原创 自定义注解(切面实现)
假如开发人员新增了一个接口httpService.post(),那上述方式切面的方式就不够用了,我还得在Pointcut里指定新的切点。如果接口耗时功能的入口不在切面,而在方法上,那开发人员就可以根据自己的需要,自己选择是否启用了,这样的动态配置,谁不喜欢呢?随着时间发展,有越来越多的系统要对接,每个接口的http请求都要写一撮low low的代码,自己看了怪恶心的🤮。于是我另起炉灶,把埋点的方式抛弃掉,使用spring切面的方式去实现,通过上面描述的,大家应该可以知道切面的由来,以及切面和注解的关系了。
2022-11-11 09:08:38 1257
原创 苹果认证Apple Store Connenct api的使用
苹果应用商店支持下载财务报告和销售报告,官方有提供两种下载方式方式一:Reporter.jar方式二:Api(Http)先定个结论,推荐使用Api的方式去调用。下文会介绍原因。
2022-10-19 10:35:58 3564 3
原创 自定义函数模板实现动态创建字符串、动态加密
前言最近开发一个中间平台,用于对接各种平台系统,其他平台需要向中间平台注册就会自动发起调用。而项目上遇到了一个比较棘手的问题——认证(Authentication)为了安全沟通,降低风险,这是系统交互间必不可少的认证环节。而问题恰恰就出在这里,认证机制一般由接口暴露者提供,也可以理解为服务端。情况:当其他系统调用我方系统时,认证方式由我方提供。这样我只需要设计一套认证方式即可,其他系统必须按照我的意思来对接(主场优势)当我方系统调用其他系统时,认证方式由对方提供。此时场景就比较尴尬了😓(俺不得
2022-03-28 11:19:32 1016 2
原创 spring-kafka集成demo
前言java应用程序接入kafka的方式非常多,在不同的架构体系有着不同的接入方式。比如SpringMVC项目,可以使用kafka-clientsSpringBoot项目,可以使用Spring-kafkaSpringCloud项目,可以使用Spring-cloud-starter-stream-kafka其中kafka-clients的通用性比较强,生产者、消费者都需要程序员手动去配置,也比较灵活,对于初学者而言,还是比较推荐此方式去开发。不过,当我们使用SpringBoot项目时,尽可能以“规
2022-03-24 14:07:09 5221
原创 Pipeline流水线-通过Jenkinsfile构建任务
写在前面作为CI/CD工具的宠儿,jenkins深受java程序员、k8s领域的喜爱。jenkins有广泛的插件,可以支撑多种应用场景。虽然jenkins的权限管理让人感到可惜,但是基于庞大的用户群,小强给大家介绍一下何为Pipeline目录索引文章目录写在前面Pipeline流水线什么是流水线流水线的好处?流水线配置文件-JenkinsfileJenkinsfile语法如何创建流水线任务如何优化玩耍JenkinsfilePipeline流水线什么是流水线Pipeline也称之为流水线,在je
2021-11-19 17:17:58 815
原创 docker手把手搭建prometheus+grafana+alertmanager做服务监控/告警系统
简介node-exporter:服务信息exporter,暴露一个http接口,输出服务器信息prometheus:为时间序列数据库,常用于存储与时间相关的指标数据,并且提供告警功能,可以用于监控系统grafana:提供仪表板,方便观测数据三者结合:node-exporter将数据提供给prometheus做持久化,prometheus将数据提供给grafana做数据看板,数据指标分析。ps:注意,本案例使用的服务器IP为10.14.8.157,若下列见到相关的ip,可以替换为你们自己的服务器信
2021-08-23 13:28:39 1474 2
原创 Springmvc整合prometheus+grafana
写在前面springmvc老项目了…真蛋疼我们的项目使用的是springmvc4.x,时间序列数据库使用的是prometheus,仪表板使用的是grafana。网上prometheus for spring boot的资料一大把,grafana dashboard for spring boot的资料也有很多模板可以套用。可怜springmvc没人在乎…想使用现有的micrometer-registry-prometheus去暴露服务指标,并直接在grafana的模板仪表盘中直接套用springboo
2021-08-23 13:25:24 4737 8
原创 单元测试之Spring-boot-starter-test在项目中的使用
写在前面三流的团队做项目,二流的团队做产品,一流的团队做标准许多技术团队为了敏捷开发,很少关注代码质量、代码稳定性与健壮性,由此导致的后果就是系统上线后,bug频发,引起用户的反感,从而造成商业价值的流失。为了解决这一现象,我们需要成熟的单元测试工具,测试流程,开发规范等去约束自己。so~小强书写✍️以下demo,用来引导大家使用规范化的单元测试技术栈springbootjunitmockito核心包spring-boot-starter-test项目依赖<depend
2021-07-03 23:11:36 6739 1
原创 maven:clean package install的使用场景
写在前面学习编程至今也有好些年头了,一直以来,maven作为java的jar包管理工具发挥着十分重要的作用。而我们总是知道使用工具,缺不知道工具本身做了什么事情。特此,小强将maven的几个常用命令以及它背后的故事写在这里,希望对大家有所帮助。语法语法:mvn [操作指令…]例如:mvn cleanmvn clean packagemvn clean install工作流工作流参考runoob.com解释各个命令的含义名称描述建议常用指数clean将编译/
2021-07-03 22:42:59 722 2
原创 Nexus3.x忘记密码处理方式
书山有路勤为径,学海无涯苦作程序猿????写在前面最近国家在做网络安全攻防演练,很荣幸的我司被选为防守方。随即,公司内部各种平台密码开始加固,所以弱密码都清理干净了。而因为这个,我把Nexus3的用户admin,密码改得很复杂以至于自己都忘了…特此谷歌了N多文章,最终得出以下方案,大家可以参考使用哈密码重置Nexus3若是忘记密码,需要连接到Nexus3的OrientDB控制台进行密码重置,操作方式如下:(声明本人工作目录 NEXUS_HOME:/home/nexus/nexus-3.29.0
2021-06-02 18:31:31 490
原创 自动化部署利器jenkins(CICD)
书山有路勤为径,学海无涯苦作程序员什么是CICDCICD称之为持续集成、持续交付/部署,CI、CD应该分成两个步骤来阐述CICI(Continous Integration)持续集成,指的是频繁地把代码集成主干中。这样做的好处有:快速发现错误:每提交一点更新,就集成到主干,由CI系统告诉你集成成功或者失败(举例:java代码提交后,由CI系统帮忙编译+打包,若整个流程执行顺利,则本次提交的代码集成成功)防止分支大幅度偏离主干:通过频繁把代码集成到主干中,可以实现产品的快速迭代。C.
2021-05-15 00:56:44 4422
原创 Substring_index字符串拆分,一行变成多行处理
书山有路勤为径,学海无涯苦作程序猿首先看下样例数据,FWF_DEF_001存在字符串拼接,现在需要将一行变成多行,变成下列方式脚本实现脚本模板SELECT substring_index(substring_index(t.${fieldName},';', b.help_topic_id + 1), ';', -1) as resultFROM ${tableName} t join mysql.help_topic b ON b.help_topic_id < (LENGT.
2021-05-08 14:26:16 557
原创 Mysql设置超时时间
书山有路勤为径,学海无涯苦作舟说到mysql,不提版本号就是耍无赖,所以先贴一下本文mysql版本:mysql Ver 14.14 Distrib 5.7.31最近项目开发的时候使用了一个定时任务,一个线程开启一个事务,且事务内处理逻辑较多,比较耗时,最终在进行事务提交时报链接丢失异常。报错信息如下:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failureThe last pa.
2021-05-08 14:23:40 8414
原创 如何正确使用工具类java.util.Arrays
大家最常用的应该是使用jdk自带工具类Arrays来生成链表比如List list = Arrays.asList("winnie");注意:这个方法必须慎用。先看下这种方式会导致什么问题。List list = Arrays.asList("winnie");// throw UnsupportedOperationExceptionlist.add("Jhon"); 看我精心给大家截的几张图哈我看到不少帖子说Arrays.asList()生成的对象长度不可变。我直接呜呼哀哉,
2021-04-08 16:43:20 204
原创 jenkins安装部署
环境:jdk1.8jenkins最新就行安装登录官网https://www.jenkins.io/zh/download/选择一款匹配自己系统型号的jenkins,比如:jenkins-2.270-1.1.noarch.rpm拷贝链接在服务器上执行#下载安装包wget http://mirrors.jenkins-ci.org/redhat/jenkins-2.270-1.1.noarch.rpm#安装rpm -ivh ./jenkins-2.270-1.1.noarch.rpm
2021-01-16 14:17:59 131
原创 tomcat动态配置端口
tomcat的配置涉及到的文件过多,每次修改都要操作server.xml和setenv.sh两个文件,这样显得工程量太多。本着解放工作量的原则,这里将server.xml用变量配置,将涉及到的配置采用动态配置的方式,统一给setenv.sh管理配置默认的,tomcat容器关闭端口8005和监听端口8080,如果我们要在一台机器上配置多个tomcat实例的话,则需要替换这些配置替换成变量内容通过JAVA_OPTS传入编辑 vi /bin/setenv.sh (没有的话就创建一个)JAV.
2021-01-16 14:16:01 549
原创 jenkins通过git parameter进行版本回滚
在进行项目开发中,大佬非常关注故障恢复的能力,尤其是严重bug导致版本回退,必须要有合理的解决方案,快速恢复显得尤其重要。于是小强搜集了网上一些常用的方法,记录在wiki上以便自己回顾。回滚策略容器化回滚。容器化技术日新月异,回滚也是通过tag进行操作的。效率高,若项目使用了容器技术,推荐使用此方式。备份回滚。每次版本发布都会保存以往备份文件,将备份文件用作回滚时使用,可以免去编译、打包的过程,直接发布。git回滚。使用branch或者tag、通过切换到指定的commit-id回到当时的开发节点,
2021-01-05 15:19:16 1163 1
原创 深处浅出分布式锁的实现方案--小强出版
内容大纲什么是锁什么是分布式锁分布式锁的几种常用设计方案如何实现分布式锁什么是锁我们举一个现实生活中的场景。当我们离开家门的时候需要给门上一把锁,防止小偷,保证屋内安全。假如门不上锁,小偷(可能)会上门偷东西,家里就不安全了所以,我们得到一个结论,“锁是为了保证安全而存在的”。进而得出另一个结论“有安全隐患的地方可以考虑上锁”。那么在我们的工作中的,锁是如何应用的呢?我们从最容易的地方入手,假如有这么一个场景(经典的电商场景):在网上购买一只牙刷。涉及到的程序逻辑有,查询库存(2
2020-12-30 15:52:42 110 2
原创 git源码管理工具-分支模型-开发流程
本小强使用的是github专业术语branch:区分工作环境,常用的有master主分支、develop开发分支tag:发行版本feature:功能分支(基于develop分支进行功能性开发)hotfix:热修复分支(用于解决master分支上的bug)release:发布分支(用于合并到masger上)[图片来源:https://blog.csdn.net/hherima/article/details/50386011]案例场景分析一般的,git项目会为我们自动创建一个master分
2020-12-22 18:07:00 231
原创 jenkins丢弃旧的构建配置详解
jenkins每次构建的时候,都会将上次生成的文件存储到这个路径下:/var/lib/jenkins/jobs/{你的job名称}/modules/org.example${你的job远程目录}/builds# eg# /var/lib/jenkins/jobs/springbootweb-测试/modules/org.example$springbootweb/builds生成的路径如上图所示,每个数字目录保存着上一次构建的存档,这样会带来一个问题,就是备份文件一直存在占用磁盘空间。所以我们需
2020-12-16 10:17:54 2333
原创 HashMap1.8源码解读(细品版)
HashMap作为最常用集合框架,我们应该知道它的组成部分是什么,使用场景是什么,这样我们才能更加合适地使用它大家都知道(顶级)接口Map的数据结构是key:value,而HashMap作为Map的子类,自然也是以键值对的形式存在。接下来,让我们来看看hashmap里面有什么我们需要注意的地方基础知识集成自AbstractMap,实现了Cloneable,Serializable接口。 那么就有Object.clone的对象拷贝、还有序列化的能力public class HashMap<
2020-12-04 15:17:21 201
原创 Spring-aop切面编程收集接口日志
场景:项目需要实现每个接口请求都把url、所有参数、ip记录下来。实现:业务埋点,编码不优雅(否决)基于spring aop注解方式拦截请求(pick~!)实现流程编写注解类编写切面类验证编写注解类InterfaceMsgAnnotation.javapackage com.winnie.annotion;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;impor
2020-11-27 14:22:50 168
原创 k8s部署javaweb集群并实现负载均衡(Kubernetes)
流程说明准备好web应用,打包成jar包创建Dockerfile并发布到仓库中编写application-deployment.yaml文件,声明式配置k8s测试web集群资料说明服务器:10.10.10.10(替换成你们自己的服务器)Web应用端口:8080web准备javaweb项目使用springboot开发,测试接口如下(为了方便介绍,本项目就叫做javaweb)通过输出本地服务器的ip来判断是否做到服务器的负载均衡mvn clean package将生成javawe
2020-11-25 15:32:19 925
原创 使用minikube安装k8s-v1.9.0
2020-11-23 15:36:09 成功启动k8s经历,后续会更新最新内容安装流程简介安装kubectl安装minikube使用minikube start启动k8s容器启动dashboard WEBUI安装kubectl指令检查是否已经有该指令,如果有则不用安装kubectl version如果没有,则进行安装kubectl# 以下方式二选一# 安装最新版本的kubectlcurl -LO https://storage.googleapis.com/kubernetes-
2020-11-23 15:40:23 206
原创 nexus批量导入仓库
背景:在nexus webui界面上,只能一个一个导入文件,效率低下。于是搜罗了网上一些可靠性比较强的方法推荐给大家使用1. 在nexus机器上, 找一个地方创建临时目录mkdir -p /opt/nexus/repo/repository2. 上传仓库包scp 本地仓库 远程仓库效果如下:3. 编写批量上传脚本vi /opt/nexus/repo/repository/mavenimport.sh内容如下:#!/bin/bash```shell# copy and run th
2020-11-19 13:27:34 1318
原创 Nexus部署【winnie版简单教程】
官网http://www.sonatype.org/downloads/下载 nexus-3.28.1-01-unix.tar.gz解压tar -zxvf nexus-3.28.1-01-unix.tar.gz -C /opt/nexus/启动# 默认占用端口8081/opt/nexus/nexus-3.28.1-01/bin/nexus start浏览器访问web界面:http://{host}:8081/nexus/设置开机自动启动vi /lib/systemd/system/n
2020-11-19 12:29:12 194
原创 Flink隐式转换报错
如果在Flink编程中遇到以下报错, 不要慌。 这只是一个隐式转换的问题, 要求我们导入一个包就可以了。 【最后给出】Error:(9, 32) could not find implicit value for evidence parameter of type org.apache.flink.api.common.typeinfo.TypeInformation[String] val value = dataSet.flatMap(_.split(" "))Error:(9, 3
2020-11-19 12:22:56 535
原创 docker安装kafka【winnie版简单教程】
观前须知:kafka依赖zookeeper环境,所以要先安装zookeeper、再安装kafka本文流程:docker安装zookeeper(以下简称zk)启动zkdocker安装kafka启动kafka验证环节安装zookeeper下载zookeeper镜像$ docker pull wurstmeister/zookeeper解决docker pull 速度慢问题将docker镜像源修改为国内的:在 /etc/docker/daemon.json 文件中添加以下参数(没
2020-11-19 12:10:46 217
原创 Docker安装flink
使用docker-compose启动filnk编写docker-compose.yml文件vi /usr/local/flink/docker-compose.yml内容如下:version: "2.1"services: jobmanager: image: flink:scala_2.11 expose: - "6123" ports: - "8081:8081" command: jobmanager environment
2020-11-19 11:52:39 391
原创 docker-compose找不到解决方式
方式一1.安装扩展源 sudo yum -y install epel-release 2.安装python-pip模块 sudo yum install python-pip 3.查看docker-compose版本 docker-compose version #提示未找到命令4.通过以命令进行安装 cd /usr/local/bin/ wget https://github.com/docker/compose/releases/download/1.14.0-rc2/docker
2020-11-19 11:50:41 2974
原创 docker安装Tomcat并部署javaweb应用
安装tomcat8服务docker pull tomcat:8做好宿主机目录挂载<!-- tomcat目录下tomcat8080,是为了以后做集群,方便区分 -->mkdir -p /usr/local/webserver/tomcat/tomcat8080/logs创建tomcat容器docker create --name tomcat8080 \ -p 8080:8080 \ -v /usr/local/webserver/tomcat/tomcat8080/logs:
2020-11-19 11:48:07 211
原创 docker安装mysql8.0【winnie版简单教程】
下载MySQL image:docker pull mysql创建MySQL container:docker create --name mysql -p 0.0.0.0:3306:3306 -v /home/mysql/data:/var/lib/mysql -v /home/mysql/conf:/etc/mysql/ -v /home/mysql/mysql-files:/var/lib/mysql-files/ -e MYSQL_ROOT_PASSWORD=“root.
2020-11-19 11:45:43 118
原创 docker安装kong网关
参考官方说明:https://docs.konghq.com/install/docker/前期准备:需要一个数据库做配置支持,这里选择pg10创建一个networkdocker network create kong-net启动数据库docker run -d --name kong-database –network=kong-net -p 5432:5432 -e “POSTGRES_USER=kong” -e “POSTGRES_DB=kong” -e “POSTGR
2020-11-19 11:44:48 215
原创 Presto集成Kylin
源码https://github.com/poiyyq/presto-kylin环境presto:0.237.2若需要更高版本,只需要更换pom文件版本即可。使用下载源码,使用maven打包后,将生成的jars上传到presto_home/plugin新建一个文件夹kylin,然后push进去eg: 配置catalog文件vi ./etc/catalog/kylin.propertiesconnector.name=kylinconnection-url=jdbc:k
2020-08-24 21:32:30 517 1
原创 Presto安装部署教程(附hive集成教程
Presto安装部署教程前言环境安装配置config.propertiesjvm.configlog.propertiesnode.propertiescatalog启动并验证前言作为OLAP的一员,presto发挥着连接异构数据源的重要作用,目前presto已经集成了20多种数据源,可谓是非常丰富,官方还提供了自定义插件开发接口。所以,倘若你的数据源支持jdbc且使用的是标准的sql语法,那么只需要简单几步就可以整合其他数据源,比如clickhouse/kylin等。本文只介绍presto安装部署教
2020-08-24 21:23:18 1060
jenkins-multijob.zip
2020-12-17
jenkins离线安装中文插件包jenkins-zh.zip
2020-12-15
jenkins 离线安装maven插件集合jenkins-maven.zip
2020-12-15
picasa39-setup.zip
2020-02-29
node-v12.9.1-linux-x64.tar.xz
2020-02-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人