JAVA—反射
说明
反射(Reflection)是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性。
举个例子:
123456789101112131415161718192021222324252627public class Apple { private int price; public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } public static void main(String[] args) throws Exception{ //正常的调用 Apple apple = new Apple(); apple.setPrice(5); System.out.println("Apple ...
nginx访问速度与并发数的限制
限制并发数在nginx的配置文件中添加如下配置:
1234567891011http{ limit_conn_zone $binary_remote_addr zone=one:10m; ... service{ ... location xxx{ limit_conn one 1; ... } }}
这里设置的并发数为 1,表示同一个ip的并发访问数为1 配置好后,重启nginx即可。
限制访问速度在nginx配置文件中添加如下配置:
1234location xxx { limit_rate 100k; ...}
重启nginx后,可以发现下载速度,确实被限制在 100k/s 左右
扩展这里介绍的是对单个ip进行访问限制,如果说想对总的访问进行限制,可以尝试使用如下方式:
通过nginx的请求转发功能,将所有的请求转发到另外一个端口,而后直接对图示中8889端口进行如上的限制即可 ...
各中间件的exporter监控对接到prometheus
各中间件exporter对接到prometheus的方式监控原理:使用prometheus监控各类中间件,则需要部署对应中间件的exporter,再将exporter暴露的指标地址告知prometheus即可首先我们需要知道如何将暴露的地址告知prometheus,主要有如下集中方式:
修改prometheus配置文件的方式
修改静态文件的方式
使用httpd方式
使用注册中心的方式
这里只提到修改prometheus配置文件的方式和静态文件的方式(其他方式可以阅读prometheus的官网)
修改prometheus配置文件如下内容:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849scrape_configs:- job_name: 'node_exporter' scrape_interval: 8s # 采集时间间隔 file_sd_configs: - files: - node_exp ...
hexo butterfly 主题搜索框问题解决
问题说明hexo 本地启动个人博客,访问没有任何问题,但是发布到github后,就会出现搜索框跑到界面的最下方
解决办法通过查询资料,发现是自己没有在本地执行 hexo clean操作导致的;参考网址:https://github.com/jerryc127/hexo-theme-butterfly/issues/101
picgo配合SMMS构建自己免费的图床
在SMMS中注册账户
注册账户,smms的访问地址: https://sm.ms/
注册好之后,获取smms中的token值
在vsCode中使用picGo
安装picGo插件
修改配置,搜索smms,填写自己的smms中的token值
保存后,即可上传文件,操作如下:
① 截图操作后,图片保存在了粘贴板中
② mac 用户的上传图片的快捷键是:option + command + u
1windowns 用户上传图片的快捷键:ctrl + alt + u
③ 上传后,vscode界面的又下角可看到如下浮动窗口
④ 并在smms中可以看到上传的图片
参考网址【图床搭配 PicGo:打造高效的图片处理工作流】https://sspai.com/post/65716【比PicGo更好用的是VSCode里的PicGo插件】https://kouss.com/2019-7-11【SMMS网址】https://sm.ms/
【BUG记录】Java连接mysql数据库报错:Communications link failure
问题描述java项目(springboot)连接mysql出现如下错误:
1Caused by: com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
项目中配置的jdbc连接地址如下:
12druid.url=jdbc:log4jdbc:mysql://172.18.xxx.xxx:3306/xxxxdb?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
但是通过navicat等工具可以正常的连接
原因查了很多资料,发现在MySQL5.7之前的版本,安全性较低,存在任何用户都可以连接上的 test 库,所以官方在5.7版本加大了对隐私的保护。并且采用了默认 useSSL = true值防止对数据库的随意修改,到了8.0版本,仍然保留了SSL,并且默认值为 true,所以只要将 “?useSSL= false” 放在url表名后即可
解决办法在配置的jdbc连接地址末尾带上如下参数即可 ...
各系统下无限重置IDEA试用版本
在Ubuntu(linux)下重置先说一下原理,在2021.2.3版本之前,我们本机使用IDEA是不需要登录什么账户的,因此IDEA无法讲试用时间的限制放在云端,也就是说,IDEA的试用时间的限制数据是放在我们本地的,只需要找到IDEA存放在我们本地的时间限制数据,并删掉就可以重置试用时间;下面就开始吧。
第一步,我们需要找到IDEA 的数据存放在哪儿
经过一番寻找,终于到找了,数据目录在我们用户目录下的 .config/JetBrains/ 目录下:
由于没办法区分那些文件是用来存放时间限制的,我们可以一把全部删掉,相当于重新安装
最新发现,只需要删除 /home/yefan/.config/JetBrains/IntelliJIdea2021.2/eval 目录下的文件即可
删除后再重启IDEA,就可以发现IDEA跟新安装一样
evaluation.key
到这里就完成了重置
这种方式同样适用于所有 JetBrains 的其他产品,但是要求版本是在 2021.2 版本以前
在windows下重置路径如下:
C:\Users\zq\AppData\Roamin ...
bind-exporter的部署
安装部署exporter下载exporter二进制包根据不同的环境,选择不同的二进制包
下载地址:https://github.com/prometheus-community/bind_exporter/releases/tag/v0.5.0
我这里使用的是这个包【bind_exporter-0.5.0.linux-amd64.tar.gz】
https://github.com/prometheus-community/bind_exporter/releases/download/v0.5.0/bind_exporter-0.5.0.linux-amd64.tar.gz
解压安装包1tar -zxvf bind_exporter-0.5.0.linux-amd64.tar.gz
解压之后的目录结构如下:
运行exporter进入解压的目录,运行二进制文件 bind_exporter
1./bind_exporter --bind.pid-file=/var/run/named/named.pid --bind.timeout=20s --web.listen-address ...
elasticsearch-exporter的部署
安装部署exporter下载exporter二进制包根据不同的环境,选择不同的二进制包
下载地址:https://github.com/prometheus-community/elasticsearch_exporter/releases/tag/v1.3.0
我这里使用的是这个包【elasticsearch_exporter-1.3.0.linux-amd64.tar.gz】
https://github.com/prometheus-community/elasticsearch_exporter/releases/download/v1.3.0/elasticsearch_exporter-1.3.0.linux-amd64.tar.gz
解压安装包1tar -zxvf elasticsearch_exporter-1.3.0.linux-amd64.tar.gz
解压之后的目录结构如下:
运行exporter进入解压的目录,运行二进制文件 elasticsearch_exporter
根据被监控的elasticsearch是否用户密码,需要分为以下两种情况进行运行:
...
prometheus监控之node各项指标
根据node-exporter采集的指标得到想要的指标
所有node节点的磁盘大小总和
1234type:SinglestatUnit: bytesmetrics:sum(node_filesystem_size_bytes{device=~"/.*"})
所有node节点的内存大小总和
1234type:SinglestatUnit: bytesmetrics:sum(node_memory_MemTotal_bytes)
所有node节点的CPU大小总和
1234type:SinglestatUnit: bytesmetrics:count(node_cpu_seconds_total{mode='system'})
node-exporter采集的指标