自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(192)
  • 资源 (1)
  • 收藏
  • 关注

原创 postgres 生产问题定位sql

【代码】postgres 生产问题定位sql。

2023-05-14 17:32:47 285 1

原创 Graph 在项目中的实践

graph 图这种结构在项目中其实经常能够遇见,java 其实提供 jgrapht-core 包来进行核心功能的实现。这里就使用jgrapht-core 来对常见应用场景进行扩展。

2022-09-11 17:11:34 854

原创 SSH直接登录到docker 容器的Dockerfile的写法

docker容器中启动一个sshd服务,通过端口的方式直接登录docker容器中

2022-08-28 16:48:10 780

原创 zookeeper Unable to read additional data from server sessionid 0x0

项目是springboot项目,通过dubbo对各个模块进行调用,在项目启动的时候,zookeeper客户端报如下错误。

2022-07-17 17:20:32 3560

原创 influxdb入门

前言对于传统关系型数据库,增删改查应该是必备且常用的功能,而influxdb常用的只有insert和select,没有提供update语法,虽然有delete可以删除数据(delete语法和mysql相似),但是需求不大。influxdb 相对于对监控数据的记录,用于对数据图标的展示,influxdb 2.0 版本已经更新,但由于2.0 版本与1.+ 版本相差比较大。加上对java 等相对应配套还不完善,这里都是1.+版本。安装使用一、下载安装# docker启动influxdbdocker r

2022-05-02 16:10:47 1970 1

原创 postgres 常用函数

准备create table test( id bigserial primary key not null, doc jsonb, ar jsonb default '[]'::jsonb, create_time TIMESTAMP not null default LOCALTIMESTAMP);--针对jsonb 插入部分值insert into test values(1,'{"nickname": "gs", "tags":{"name":"language","deta

2022-04-30 23:12:10 372

转载 Python调用ansible 2.8 API

参考AnsibleAPI 开发Python3 调用 Ansible2.x APIansible 封装基础类import jsonimport shutilfrom ansible.module_utils.common.collections import ImmutableDict #用于添加选项。比如: 指定远程用户remote_user=Nonefrom ansible.parsing.dataloader import DataLoader #读取

2022-04-10 17:13:53 998

原创 Linux 常用命令(三)

一、对jar 文件的编辑(1) 直接对jar 进行vim 操作export jarName='web-1.0-SNAPSHOT'export today=`date "+%Y%m%d"`cp ${jarName}.jar ${jarName}.jar.${today}vim ${jarName}.jar #需要记得如果文件多一定要使用/ 进行搜索,直接搜索最后需要编辑文件名称(2) 修改内容,在进行打包。这个打包切记不能使用jar -cvf 这样相当于对内容重新进行一次编译,会导致 MANI

2022-04-04 18:07:51 1227

原创 ansible-playbook 的使用(二)

前言这一篇ansible-playbook(二) 是紧跟上一篇ansible-playbook 的使用 来进行扩展,这一篇相对上一篇增加了 template (模板),backup(备份),register,failed_when 等情况的扩展。这一篇也是要基于上一篇关于 ansible-playbook 变量,Roles 的基础上来看。实践template 和 backup先大致介绍template 和backup 功能:template : 我们在针对一个比如像配置文件进行拷贝的时候,这个

2022-03-27 16:50:23 2515

原创 Dubbo 调用指定IP上的Dubbo服务

前言我们在使用dubbo 调用某个服务的时候,可能涉及到该服务在多台机器上面部署。但是由于一些特殊原因有时候需要调用指定IP上面的服务。实践dubbo 调用服务的时候,都是根据zookeeper 上面注册的dubbo 接口,根据在zookeeper 上面获取的注册地址,将其封装为invoker 。调用的时候根据dubbo 动态均衡的策略选择其中一个invoker 进行调用。invoker 调用主要是根据url 拼接为proxy 进行调用,我们就可以通过url 直接对url 进行拼接进行代理调用。Du

2022-03-26 16:45:44 5454

原创 yaml 文件(字符串)的解析

前言我在遇到准备将一串符合yaml 的字符串进行解析,在搜索之后发现解析yaml 基本都是对文件进行解析。但自己字符串用 new Yaml().loadAs 无法解析,按道理也是支持字符串不应该不支持。想到自己字符串的换行可能不对,那么在java中如何才认为是一个换行呢?BufferedWriter writer = new BufferedWriter(write);writer.newLine() 这样一个方法,看了这个实现方式 String lineSeparator = java.secur

2022-03-20 16:11:56 2754

原创 python3 实现应用启动及关键字检测

我们在应用的时候,经常需要实现应用启动及检测功能。我们启动命令python3 restart_and_watchlog.py “sh bin/start.sh” “logs/log.log” “Started Application in” 20第一个restart_and_watchlog.py 检测脚本sh bin/start.sh 应用启动命令logs/log.log 应用启动日志Started Application in 关键字20 过期时间10s# -*- coding: ut

2022-03-19 20:48:21 521

原创 nginx config 详解

nginx config 的整体布局如下... #全局块events { #events块 ...}http #http块{ ... #http全局块 server #server块 { ... #server全局块 location [PATTERN] #location块 { ... }

2022-03-13 14:15:57 10600

原创 Tcpdump命令的使用

tcpdump 简单来说就是一款抓包工具一、概述tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。tcpdump存在于基本的Linux系统中,由于它需要将网络界面设置为混杂模式,普通用户不能正常执行,但具备root权限的用户可以直接执行它来获取网络上的信息。因此系统中存在网络分析工具主要不是对本机安全的威胁,而是对网络上的其他计算机的安全存在威胁。不带参数的tcpdump会收集网络中所有的信息包头,数据量巨大,必须过滤。二、选项介绍-A 以AS

2022-03-06 18:20:24 3600

原创 Dubbo 获取本地ip错误

前言我们因为安全漏洞将dubbo 升级到2.7.15 版本,当环境中存在docker 部署的时候。dubbo 获取本机ip将会变成docker0的地址。实践我们查看dubbo 获取ip地址的源码org.apache.dubbo.common.utils.NetUtils#getLocalAddress0来获取本地地址。可以看到关键在于findNetworkInterface() 获取到网卡的地址我们将findNetworkInterface 这个方法贴出来,看到要获取networkInterfa

2022-02-26 20:26:26 3020

原创 java命令行编译运行带依赖jar包的main函数

对main函数进行编译当我们对java 文件进行编译的时候,可能会遇到需要同时编译多个java 文件 ,编译需要依赖包的情况。javac -Djava.ext.dirs=依赖包目录 *.java(所有需要编译java文件)-d 需要输出的目录例子:javac -Djava.ext.dirs=lib *.java -d output对main函数进行运行java -Djava.ext.dirs=依赖包目录 需要运行的main 的主函数类java -Djava.ext.dirs=

2022-02-12 15:59:41 1301

原创 Python 读写txt和excel文件及操作数据库

前言我们经常会遇到我们对数据库中数据进行拉取并处理脚本,我们如果要操作线上数据库。用java操作就过于麻烦,这个时候我们更方便的方法是直接通过一个python脚本去读取数据库,并进行处理数据。那么我们可以将读取数据库数据,写入txt文件,excel文件,读取txt文件,excel文件作为一个标板。用于后续直接修改文件内容实践我们在项目中创建如下文件夹文件conf-dev.ini 配置文件[db-config]host = localhostport = 3306username = roo

2022-01-16 20:22:10 1190

原创 IO 负载问题定位

前言在我们环境当中经常遇到负载很高的情况,负载很高的时候不一定是cpu多高。很多时候是IO负载过高导致的,我们这篇文章试着当IO负载比较高的情况去定位问题。实践toptop命令是我们定位问题的初始命令,我们经常是通过这命令来了解服务器的负载情况,我们这里需要重点了解几个指标topload average 0.22, 0.24, 0.14 系统负载,任务队列不同时间段平均长度,分别为1分钟,5分钟,15分钟前到现在那么怎么评价这个值的高低呢,主要是通过load average 与 cpu的个

2022-01-16 13:25:18 1924

原创 Python入门教程

前言python 在我们工作中遇到想拉取数据库数据,监控环境等等。特别是针对生产环境,如果针对这种写一个java 应用有点过大。如果这个时候我们跑一个python 能够很方便拿到我们自己想要数据,高级等等。实践下载一个python包https://www.python.org/downloads/windows/python下载页面现在大部分脚本都是64位的,直接选择一个合适版本64位的版本下载就好如果大家电脑为非window 电脑,那么选择一个非window 版本就好进入这个页面下载页面 h

2022-01-09 17:31:36 566

原创 从request 中解析上传参数

前言我们项目经常会在真正进入接口方法之前,对参数进行解析。进行一些预处理,比如权限校验、让接口进入到我们预定方法之中。实践1、添加依赖,这里会用到关于上传文件中依赖(处理当是form-data类型的时候),其他关于会涉及到web依赖不再贴出 <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</art

2022-01-09 13:08:52 508

原创 Arthas 教程

前言我们在定位java 一些问题的时候,经常会用到很多jdk的命令例如垃圾回收回收jstat ,查看堆内存空间jmap ,查看线程jstack这些命令。Arthas 除了对上述命令能够更加方便获取当前运行环境的情况,还能一些更加强大的功能。实践首先我们需要准备一个运行当前已经在运行java 项目,如果实在没有java 项目可以用下面demo项目替代。是一个很简单的程序,它随机生成整数,再执行因式分解,把结果打印出来。如果生成的随机数是负数,则会打印提示信息。wget https://arthas.a

2022-01-03 17:54:23 3319

原创 子网掩码,网络ID,IP之间关系

要知道子网掩码,网络ID,IP之间关系,那么我们需要了解一些基础知识。1、IP地址的种类比如我电脑IPv4 地址的地址为192.168.126.1,为了让机器识别转化为8位二进制11000000.10101000.01111110.00000001 那么如果全部都为1一共有多少个IP呢?255255255*255 那么一共是40多亿。很明显这个ip全部分给这么多设备是不够分的。为了解决公网IP地址不足的情况,于是发明了私有IP (Private IP)比如一个家庭(公司)有几台电脑,每台电脑都拥

2022-01-02 16:45:27 5163

原创 Linux 常用一些命令(二)

前言最近在工作接触到一些linux 操作命令,这里将其总结下来作为参考。linux 命令权限相关用户及用户组1、查看当前存在所有用户[root@VM-16-10-centos ~]# cat /etc/passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologin用户名:用户口令:用户id:用户所在组id:备注:用户所在目录:shell

2021-12-19 16:16:54 1316

原创 ansible-playbook 的使用

前言我在前一篇博客描述 ansible的安装和使用,可以远程对我们主机进行很多操作。ansible-playbook 其实属于ansible 一部分。用ansible-playbook 命令与 用ansible命令有不同之处,且非常适合于复杂应用的部署。在 playbooks 中可以编排有序的执行过程,甚至于做到在多组机器间,来回有序的执行特别指定的步骤.如果需要参考部署ansible的安装和使用 安装好ansible ,playbooks 也可以使用了。实践一、ansible-playbook

2021-12-12 12:57:22 8937

原创 ansible 命令的使用

前言我们在工作中经常会通过一台机器对多台机器进行管理,ansible 是一个linux 管理多台工具的利器。这里对工作常用一些命令进行展示。实践如果要使用ansible 那么第一步便是下载和安装ansible一、下载安装部分1.1 下载安装ansibleyum install ansible -y1.2 ansible 配置其余需要操作机器信息由于我们是需要操作多台机器,那么肯定是需要知道需要操作机器的信息。/etc/ansible/hosts 是主机清单配置文件,由 ansible.

2021-12-05 15:12:52 1944

原创 拦截http请求打印入参出参(Okhttp3拦截器)

前言我们应用中经常出现请求其他三方接口,这也是经常会出错,找当时请求参数,返回结果比对的情况。如果自己加打印,很多时候会忘记。这里通过对Okhttp工具添加拦截器方式,将需要入参出参进行打印。实践一、引入maven 依赖 <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId>

2021-11-27 17:35:27 2939

原创 手动创建代理实现AOP功能

前言我们在很多时候,并不能直接使用spring aop功能,需要自己实现代理对java代码进行aop操作。这里使用手动代理的方式对AOP进行处理。实践一、定义一个注解用于需要特殊处理的方法@Documented@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.METHOD)public @interface StepAnnotation { String name();}二、定义一个BeanPostProcessor

2021-11-27 15:18:00 523

原创 Linux 常用一些命令(一)

前言最近在工作接触到一些linux 操作命令,这里将其总结下来作为参考。内容一、crontab 常用定时任务//crontab -l 展现linux cron 定时任务执行的列表//crontab -e 展现linux cron 定时任务的编辑页面,wq就会进行保存,并且生效crontab -lcrontab -ecrontab 从左到右依次是 分时日月周03 * * * * 每小时03分执行01 02 * * * 每天两点01分执行01 02 3 * * 每个月3号2

2021-11-14 17:56:20 1705

原创 Postgres 数据库常用一些sql语句

前言在使用Postgres 的时候经常会用到一些sql语句,还经常忘记。这里将比较常用sql语句做一下总结。SQL语句索引一、查询当表存在的索引select * from pg_indexes where tablename = '表名';二、创建及删除对应索引注: 这里添加CONCURRENTLY 是为防止创建索引这段时间导致操作这张表CREATE INDEX CONCURRENTLY pg_index_indrelid_index ON public.pg_index USING b

2021-11-13 17:56:25 1511

原创 oom killer理解和日志分析

前言我们环境上接到报警,我们的应用停止运行了。环境上无dump文件保留下来(配置如果发生oom保存dump 文件),当我们查看系统日志oom-killer查看各个日志含义/var/log/messages 发现 系统中有文件调用 oom-killer 这个命令。由于环境上面的日志文件不能发出来这里发出几个比较关键点用于以后直接定位日志出现Sep 28 23:50:01 VM-0-9-centos kernel: node invoked oom-killer: gfp_mask=0x201da,

2021-10-04 16:30:56 3789

原创 df -h 和 du -h --max-depth=1 查出的磁盘大小不一致

前言对于我们很多没有系统学习过关于linux的同学都比较疑惑,为什么我们在搜的 df -h 和 du -h --max-depth=1 大小不一致,而且很多时候差距相当大。验证这是一个df -h 出来各个目录所占的目录大小。我们在进入该目录下,通过du -h --max-depth=1去查看目录大小。可以看到与当前目前挂在12G相差很远。1、有些进程会在一开始的时候open/unlink某些文件(多半是临时文件),这样du遍历目录的时候就找不到这些文件, 但是由于进程还没有退出,这部分空间

2021-10-04 15:22:38 10660 1

原创 swagger使用过程中遇到的坑

前言今天给两个项目添加swgger 都不顺利这里将,两个项目中遇到问题和解决方案贴出来。基本配置这里先贴出比较通用的swgger 的配置1、添加swgger 的配置<dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId>

2021-07-30 19:00:50 483

原创 SpringBoot 自动配置原理讲解

前言如果需要了解Springboot 那么自动配置是少不了的,自从有了 SpringBoot 之后,各种零配置自动在加载,今天我们就一起来讨论一下 SpringBoot 自动配置原理。预备知识这里的预备知识主要关注@Import 注解,@Import主要支持三种类的导入a、直接导入普通的 Java 类。b、 ImportSelector 的实现类 使用。c、ImportBeanDefinitionRegistrar 实现类。这里写一个demo来验证一下对应内容。1、一个普通类public

2021-07-14 18:58:59 179

原创 liquibase 的数据库版本管理实践

前言之前项目中数据库管理混乱,导致上线的时候数据库执行频繁出问题,这里引入数据库管理工具liquibase,这里对liquibase 进行简单介绍。实践一、引入maven依赖 <dependency> <groupId>org.liquibase</groupId> <artifactId>liquibase-core</artifactId> <versio

2021-07-08 19:31:46 412 2

原创 open-dingtalk和nginx 做内网转发

前言我们有服务部署在我们内网服务,需要暴露给合作方演示这种服务。之前找了open-dingtalk 找了挺多配置没有发现关于做除了127.0.0.1 之外域名做转发, nginx 能够很好对域名进行转发。实践http://nginx.org/en/download.html nginx下载修改nginx.conf 配置监听9999 端口 和 localhost,127.0.0.1 域名server { listen 9999; server_na

2021-07-01 17:45:45 864 1

原创 DelayQueue 实现单机延迟任务处理

前言我们有一些项目需要单机获取延迟处理一些任务,延迟的时间并不长。也没有延迟队列支持,项目本身docker部署利用redis 实现又存在队列锁竞争问题,该资源也不是非常重要如果不小心丢失部分也无关紧要。当然也可以先存入数据库,项目启动将数据加载的内存中。实践1、配置线程池处理处理数据,可以根据自身内部数据多少配置线程池,不确定可以进行配置方式处理。@Componentpublic class ParkingConfig { public static DelayQueue<

2021-07-01 16:04:17 235

原创 XXL-Job动态添加任务

前言最近项目中涉及到了定时任务相关需求,最终选择了分布式任务调度框架xxl-job,由于我们在使用xxl-job。这里对xxl-job 一些使用做一下简单介绍。实践xxl-job 主要分为一个展示web的独立服务,另外一个是我们项目引入xxl-job依赖,对定时任务做监听。这里不对xxl-job 部署独立服务做介绍,主要介绍如何引入xxl-job依赖进行创建定时任务。一、配置yml# 定时任务中心配置信息job: server: enabled: true # 校验令牌,和

2021-06-22 10:49:42 10548 4

原创 AOP源码解析

前言我之前在看源码都是局限于其中一步、两步没有一个整体观,我们在看源码的时候如果能在一个整体观去看,很多时候有些内容就豁然开朗了。介绍我们先看一下,整改spring容器启动这个流程,其中AOP 就在 初始化Bean后面由BeanPostProccessor 进行后置处理将Bean替换为AOP的代理类进行操作。如果我们认识到这一点那么我们就有两个需要重点关注:第一个是关于BeanPostProccessor 实现类对容器的注入。第二个是BeanPostProccessor 的实现类对Bean本身代

2021-06-17 14:56:01 1022 1

原创 spring源码框架解析

前言我们很多时候在阅读源码之前对源码的大体结构没有一个认识,导致在看源码的时候迷失在各个代码的细节里。这篇文章试着介绍一下spring源码的大体框架。让我们能在框架里面进一步认识spring源码。介绍IOC 和AOP 的关系说起spring源码我们都会想到AOP 和IOC ,IOC 实际上就是spring 构造一个容器,将各个bean 对象初始化到这个容器的过程。AOP 是IOC的构建容器中bean的一小步,这里主要介绍关于IOC构建容器和bean 中的过程。实例化和初始化在开始这个IOC 构

2021-06-10 15:36:12 379

原创 Api 接口统计工具类

前言我们遇到公司让统计接口,一个项目中接口很多不能真的一个一个统计吧,为了提高统计效率。写一个统计工具类。实践一、添加maven依赖 <dependency> <groupId>org.reflections</groupId> <artifactId>reflections</artifactId> <version>0.9.11</version&

2021-05-11 18:29:07 855 1

所辖行政区对应的表和数据

我们很多时候都需要所辖行政区的查询的接口,我们大部分都有已经存在的接口供我们调用。

2020-12-30

空空如也

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

TA关注的人

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