- 博客(196)
- 资源 (1)
- 收藏
- 关注
原创 通过iptables限制docker 容器的运行端口
假如起一个mysql镜像,暴露在宿主机的端口为9000,容器实际使用为3306端口,这个时候,应该禁止3306端口。通过在iptables DOCKER-USER 添加规则禁止特定端口访问,主要是有两个点。1.添加 DOCKER-USER 链添加。2.禁止端口是映射到。
2024-12-28 15:46:12
503
原创 调整docker bridge地址冲突,通过bip调整 bridge地址
( 指定docker bridge地址(不能以.0结尾),生产中建议采用 1,也尽量不使用172开头地址,因为172是回传地址很容易出现和其他应用冲突情况)我们在使用docker 过程中,docker 默认bridge地址可能会和一些业务地址相互冲突,需要调整docker bridge 的默认值。1.清除当前所有镜像(这一步非常关键)4.修改daemon.json。3.删除docker0。2.停止docker。3.启动docker。
2024-12-21 14:17:44
607
原创 Graph 在项目中的实践
graph 图这种结构在项目中其实经常能够遇见,java 其实提供 jgrapht-core 包来进行核心功能的实现。这里就使用jgrapht-core 来对常见应用场景进行扩展。
2022-09-11 17:11:34
1202
原创 zookeeper Unable to read additional data from server sessionid 0x0
项目是springboot项目,通过dubbo对各个模块进行调用,在项目启动的时候,zookeeper客户端报如下错误。
2022-07-17 17:20:32
4222
原创 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
2241
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
453
转载 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
1172
原创 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
1321
原创 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
2663
原创 Dubbo 调用指定IP上的Dubbo服务
前言我们在使用dubbo 调用某个服务的时候,可能涉及到该服务在多台机器上面部署。但是由于一些特殊原因有时候需要调用指定IP上面的服务。实践dubbo 调用服务的时候,都是根据zookeeper 上面注册的dubbo 接口,根据在zookeeper 上面获取的注册地址,将其封装为invoker 。调用的时候根据dubbo 动态均衡的策略选择其中一个invoker 进行调用。invoker 调用主要是根据url 拼接为proxy 进行调用,我们就可以通过url 直接对url 进行拼接进行代理调用。Du
2022-03-26 16:45:44
5804
原创 yaml 文件(字符串)的解析
前言我在遇到准备将一串符合yaml 的字符串进行解析,在搜索之后发现解析yaml 基本都是对文件进行解析。但自己字符串用 new Yaml().loadAs 无法解析,按道理也是支持字符串不应该不支持。想到自己字符串的换行可能不对,那么在java中如何才认为是一个换行呢?BufferedWriter writer = new BufferedWriter(write);writer.newLine() 这样一个方法,看了这个实现方式 String lineSeparator = java.secur
2022-03-20 16:11:56
3039
原创 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
630
原创 nginx config 详解
nginx config 的整体布局如下... #全局块events { #events块 ...}http #http块{ ... #http全局块 server #server块 { ... #server全局块 location [PATTERN] #location块 { ... }
2022-03-13 14:15:57
11090
原创 Tcpdump命令的使用
tcpdump 简单来说就是一款抓包工具一、概述tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。tcpdump存在于基本的Linux系统中,由于它需要将网络界面设置为混杂模式,普通用户不能正常执行,但具备root权限的用户可以直接执行它来获取网络上的信息。因此系统中存在网络分析工具主要不是对本机安全的威胁,而是对网络上的其他计算机的安全存在威胁。不带参数的tcpdump会收集网络中所有的信息包头,数据量巨大,必须过滤。二、选项介绍-A 以AS
2022-03-06 18:20:24
3926
原创 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
3406
原创 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
1460
原创 Python 读写txt和excel文件及操作数据库
前言我们经常会遇到我们对数据库中数据进行拉取并处理脚本,我们如果要操作线上数据库。用java操作就过于麻烦,这个时候我们更方便的方法是直接通过一个python脚本去读取数据库,并进行处理数据。那么我们可以将读取数据库数据,写入txt文件,excel文件,读取txt文件,excel文件作为一个标板。用于后续直接修改文件内容实践我们在项目中创建如下文件夹文件conf-dev.ini 配置文件[db-config]host = localhostport = 3306username = roo
2022-01-16 20:22:10
1288
原创 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
2316
原创 Python入门教程
前言python 在我们工作中遇到想拉取数据库数据,监控环境等等。特别是针对生产环境,如果针对这种写一个java 应用有点过大。如果这个时候我们跑一个python 能够很方便拿到我们自己想要数据,高级等等。实践下载一个python包https://www.python.org/downloads/windows/python下载页面现在大部分脚本都是64位的,直接选择一个合适版本64位的版本下载就好如果大家电脑为非window 电脑,那么选择一个非window 版本就好进入这个页面下载页面 h
2022-01-09 17:31:36
686
原创 从request 中解析上传参数
前言我们项目经常会在真正进入接口方法之前,对参数进行解析。进行一些预处理,比如权限校验、让接口进入到我们预定方法之中。实践1、添加依赖,这里会用到关于上传文件中依赖(处理当是form-data类型的时候),其他关于会涉及到web依赖不再贴出 <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</art
2022-01-09 13:08:52
611
原创 Arthas 教程
前言我们在定位java 一些问题的时候,经常会用到很多jdk的命令例如垃圾回收回收jstat ,查看堆内存空间jmap ,查看线程jstack这些命令。Arthas 除了对上述命令能够更加方便获取当前运行环境的情况,还能一些更加强大的功能。实践首先我们需要准备一个运行当前已经在运行java 项目,如果实在没有java 项目可以用下面demo项目替代。是一个很简单的程序,它随机生成整数,再执行因式分解,把结果打印出来。如果生成的随机数是负数,则会打印提示信息。wget https://arthas.a
2022-01-03 17:54:23
3517
原创 子网掩码,网络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
5784
原创 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
1391
原创 ansible-playbook 的使用
前言我在前一篇博客描述 ansible的安装和使用,可以远程对我们主机进行很多操作。ansible-playbook 其实属于ansible 一部分。用ansible-playbook 命令与 用ansible命令有不同之处,且非常适合于复杂应用的部署。在 playbooks 中可以编排有序的执行过程,甚至于做到在多组机器间,来回有序的执行特别指定的步骤.如果需要参考部署ansible的安装和使用 安装好ansible ,playbooks 也可以使用了。实践一、ansible-playbook
2021-12-12 12:57:22
9219
原创 ansible 命令的使用
前言我们在工作中经常会通过一台机器对多台机器进行管理,ansible 是一个linux 管理多台工具的利器。这里对工作常用一些命令进行展示。实践如果要使用ansible 那么第一步便是下载和安装ansible一、下载安装部分1.1 下载安装ansibleyum install ansible -y1.2 ansible 配置其余需要操作机器信息由于我们是需要操作多台机器,那么肯定是需要知道需要操作机器的信息。/etc/ansible/hosts 是主机清单配置文件,由 ansible.
2021-12-05 15:12:52
2077
原创 拦截http请求打印入参出参(Okhttp3拦截器)
前言我们应用中经常出现请求其他三方接口,这也是经常会出错,找当时请求参数,返回结果比对的情况。如果自己加打印,很多时候会忘记。这里通过对Okhttp工具添加拦截器方式,将需要入参出参进行打印。实践一、引入maven 依赖 <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId>
2021-11-27 17:35:27
3380
原创 手动创建代理实现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
596
原创 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
1784
原创 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
1785
原创 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
4345
原创 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
12464
1
原创 swagger使用过程中遇到的坑
前言今天给两个项目添加swgger 都不顺利这里将,两个项目中遇到问题和解决方案贴出来。基本配置这里先贴出比较通用的swgger 的配置1、添加swgger 的配置<dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId>
2021-07-30 19:00:50
581
原创 SpringBoot 自动配置原理讲解
前言如果需要了解Springboot 那么自动配置是少不了的,自从有了 SpringBoot 之后,各种零配置自动在加载,今天我们就一起来讨论一下 SpringBoot 自动配置原理。预备知识这里的预备知识主要关注@Import 注解,@Import主要支持三种类的导入a、直接导入普通的 Java 类。b、 ImportSelector 的实现类 使用。c、ImportBeanDefinitionRegistrar 实现类。这里写一个demo来验证一下对应内容。1、一个普通类public
2021-07-14 18:58:59
245
原创 liquibase 的数据库版本管理实践
前言之前项目中数据库管理混乱,导致上线的时候数据库执行频繁出问题,这里引入数据库管理工具liquibase,这里对liquibase 进行简单介绍。实践一、引入maven依赖 <dependency> <groupId>org.liquibase</groupId> <artifactId>liquibase-core</artifactId> <versio
2021-07-08 19:31:46
594
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
1019
1
原创 DelayQueue 实现单机延迟任务处理
前言我们有一些项目需要单机获取延迟处理一些任务,延迟的时间并不长。也没有延迟队列支持,项目本身docker部署利用redis 实现又存在队列锁竞争问题,该资源也不是非常重要如果不小心丢失部分也无关紧要。当然也可以先存入数据库,项目启动将数据加载的内存中。实践1、配置线程池处理处理数据,可以根据自身内部数据多少配置线程池,不确定可以进行配置方式处理。@Componentpublic class ParkingConfig { public static DelayQueue<
2021-07-01 16:04:17
307
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人