forever杨的个人博客

I want to be forever young!


  • 首页

  • 文章202

  • 分类31

  • 标签175

  • 公益

  • 关于

  • 搜索

druid 开启监控

发表于 2019-11-14 | 更新于 2020-08-26 | 分类于 Java
| 字数: 2k | 时长 ≈ 2 分钟
标签 spring-boot alibaba druid

依赖包

1
2
3
4
5
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.21</version>
</dependency>
阅读全文 »

Spring JCL 的坑

发表于 2019-09-01 | 更新于 2021-04-09 | 分类于 Java
| 字数: 453 | 时长 ≈ 1 分钟
标签 spring

关于Spring-JCL日志的坑

Spring 5.x版本后,Spring-Core中加入了 Spring-JCL 库直接依赖。

目前很多三方库都会依赖 commons-logging 来输出日志,而 Spring-JCL 是对 commons-logging 拷贝复制。

所以 2 个库同时依赖进入项目,会导致冲突。

解决

由于当前项目使用的 slf4j api 来打印日志,所以 exclusion 掉 commons-logging 和 Spring-JCL,引入 slf4j-jcl 库:

1
2
3
4
5
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${version}</version>
</dependency>

阿里云仓库 + 自建私库配置

发表于 2019-08-08 | 更新于 2019-11-14 | 分类于 Maven
| 字数: 2.4k | 时长 ≈ 2 分钟
标签 Maven

项目

pom.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<repositories>
<repository>
<id>maven2-weixin-public</id>
<name>maven2-weixin-public</name>
<url>http://maven.ctim:8081/repository/maven2-weixin-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
<checksumPolicy>fail</checksumPolicy>
</snapshots>
</repository>
</repositories>
阅读全文 »

jquery.form.js 使用

发表于 2019-06-21 | 更新于 2021-04-02 | 分类于 Javascript
| 字数: 739 | 时长 ≈ 1 分钟
标签 jQuery
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
var options = {
// 把服务器返回的内容放入id为output的元素中
target : '#output',
// 提交前的回调函数
beforeSubmit : showRequest,
// 提交后的回调函数
success : showResponse,
// 默认是form的action, 如果申明,则会覆盖
url : url,
// 默认是form的method(get or post),如果申明,则会覆盖
type : type,
// json...接受服务端返回的类型
dataType : null, // html(默认), xml, script,
// 成功提交后,清除所有表单元素的值
clearForm : true,
// 成功提交后,重置所有表单元素的值
resetForm : true,
// 限制请求的时间,当请求大于3秒后,跳出请求
timeout : 3000
};
jqform.ajaxSubmit({
resetForm : true,
beforeSubmit : function() {
if ($.trim(vue.dxno) == '') {
alert('请您输入的手机号码、固话或者宽带帐号');
}
if ($.trim(vue.dxpw) == '') {
alert(vue.isrd == 'N' ? '请您输入客户密码' : '请您输入随机码');
}
}
});

Windows 默认软件不可用的问题

发表于 2019-05-22 | 更新于 2019-11-14 | 分类于 软件
| 字数: 189 | 时长 ≈ 1 分钟
标签 Windows

我是图片

阅读全文 »

jQuery 扩展新函数,增强ajax、post等方法

发表于 2019-05-21 | 更新于 2021-05-11 | 分类于 Javascript
| 字数: 6.5k | 时长 ≈ 6 分钟
标签 jQuery ajax

实现$.ajax、$.post的拦截器方法来统一操作一些加解密逻辑

  • 重写$.ajax、$.post
  • 扩展新函数$.ajaxEx、$.postEx

明显这里扩展新函数更加合理。$.get、$.load等扩展也是一样

阅读全文 »

Java 应用 JAR 包部署启动脚本

发表于 2019-05-08 | 更新于 2022-05-20 | 分类于 Java
| 字数: 3.9k | 时长 ≈ 4 分钟
标签 Java JAR

目录结构

1
2
3
4
5
6
7
8
9
10
[txrd@host-148 /data/user-center]$ tree -af 
.
├── ./project
│ └── ./user-center-server.jar
└── ./logs
│ └── ./info.log
│ └── ./error.log
│ └── ./warn.log
│ └── ./stdout.log
└── ./restart.sh
阅读全文 »

XML 使用

发表于 2019-05-08 | 更新于 2021-04-30 | 分类于 Java
| 字数: 670 | 时长 ≈ 1 分钟
标签 XML

XML 报文换行

正常换行

1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<ns1:message xmlns:ns1="MessageServer">
<ns1:arg0>191</ns1:arg0>
<ns1:arg1>标题:My alert title&#x000A;状态:alerting&#x000A;信息:webfronts</ns1:arg1>
</ns1:message>
</soapenv:Body>
</soapenv:Envelope>

前提,不能用<![CDATA[]]>把内容包起来,也不能使用\r\n等

1
2
<!-- 这样是不能换行的,会原样显示&#x000A;字符出来 -->
<ns1:arg1><![CDATA[标题:My alert title&#x000A;状态:alerting&#x000A;信息:webfronts]]></ns1:arg1>
阅读全文 »

CommonsRequestLoggingFilter

发表于 2019-05-06 | 更新于 2021-04-09 | 分类于 Java
| 字数: 3.1k | 时长 ≈ 3 分钟
标签 spring

注册 bean

1
2
3
4
5
6
7
8
9
10
@Bean
@ConditionalOnMissingBean
public CommonsRequestLoggingFilter commonsRequestLoggingFilter(){
CommonsRequestLoggingFilter filter = new CommonsRequestLoggingFilter();
filter.setIncludeClientInfo(true);
filter.setIncludeQueryString(true);
filter.setIncludePayload(true);
filter.setIncludeHeaders(true);
return filter;
}

在logback.xml配置

1
<logger name="org.springframework.web.filter.CommonsRequestLoggingFilter" level="DEBUG"/>

日志打印

1
2
19-05-06 14:37:23 DEBUG o.s.w.f.CommonsRequestLoggingFilter.beforeRequest(47) | Before request [uri=/szim/triple.do?action=getJsonUserFeeInfo&encrypt=TJ943tVLlkJmwouCRnJgj6aDOGqm5VBxeLiNqpcIOdUHaByb%2FJ0RK%2FFQvzJcK3TL0aPmKvSdKhNL%2FUl6ZvHznEFR2ohRKF8HTxwaqss9KCZ66AQ4Dx60ZBWrXdju2nlIohMo9O2d0Ia5Bvl6HEpmhQ%3D%3D&ak=0f882bab896ca50e10ef389f12c279c195d7c1810dc3e9e55db6a0057335f148b61761ab383957431d94d5e9982cff0d389021fdf17e25a5843f96cd0a448ef22e47d6abae9bacb5cc7e1cb2ba30a7c0b08d423a5fcb644e2e9392d0a685d0f73a416470d9a074eff6582ad7d05fb2eadb925d798093519c6f1351455dc84296;client=0:0:0:0:0:0:0:1;session=B6FBF9F2B61AA8F5C715A90C2FB1D328;headers={host=[localhost:8080], connection=[keep-alive], pragma=[no-cache], cache-control=[no-cache], accept=[application/json, text/javascript, */*; q=0.01], dnt=[1], x-requested-with=[XMLHttpRequest], user-agent=[Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1], referer=[http://localhost:8080/szim/triple.do?U=ybFlMQgKMvBjGbYIUs+dhtVOInHIaCqdM3ZmiOQn/r0GvzWE2sMZdzaCSHhclamx56V86dWa+JB3unGmNOwvKQ==&t=1557124281371], accept-encoding=[gzip, deflate, br], accept-language=[zh-CN,zh;q=0.9,en;q=0.8], cookie=[JSESSIONID=B6FBF9F2B61AA8F5C715A90C2FB1D328]}]
19-05-06 14:37:23 DEBUG o.s.w.f.CommonsRequestLoggingFilter.afterRequest(55) | After request [uri=/szim/triple.do?action=getJsonUserFeeInfo&encrypt=TJ943tVLlkJmwouCRnJgj6aDOGqm5VBxeLiNqpcIOdUHaByb%2FJ0RK%2FFQvzJcK3TL0aPmKvSdKhNL%2FUl6ZvHznEFR2ohRKF8HTxwaqss9KCZ66AQ4Dx60ZBWrXdju2nlIohMo9O2d0Ia5Bvl6HEpmhQ%3D%3D&ak=0f882bab896ca50e10ef389f12c279c195d7c1810dc3e9e55db6a0057335f148b61761ab383957431d94d5e9982cff0d389021fdf17e25a5843f96cd0a448ef22e47d6abae9bacb5cc7e1cb2ba30a7c0b08d423a5fcb644e2e9392d0a685d0f73a416470d9a074eff6582ad7d05fb2eadb925d798093519c6f1351455dc84296;client=0:0:0:0:0:0:0:1;session=B6FBF9F2B61AA8F5C715A90C2FB1D328;headers={host=[localhost:8080], connection=[keep-alive], pragma=[no-cache], cache-control=[no-cache], accept=[application/json, text/javascript, */*; q=0.01], dnt=[1], x-requested-with=[XMLHttpRequest], user-agent=[Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1], referer=[http://localhost:8080/szim/triple.do?U=ybFlMQgKMvBjGbYIUs+dhtVOInHIaCqdM3ZmiOQn/r0GvzWE2sMZdzaCSHhclamx56V86dWa+JB3unGmNOwvKQ==&t=1557124281371], accept-encoding=[gzip, deflate, br], accept-language=[zh-CN,zh;q=0.9,en;q=0.8], cookie=[JSESSIONID=B6FBF9F2B61AA8F5C715A90C2FB1D328]}]

spring-cloud-sleuth

发表于 2019-04-29 | 更新于 2019-11-14 | 分类于 docker
| 字数: 2.3k | 时长 ≈ 2 分钟
标签 spring-cloud sleuth

sleuth输出的日志格式

1
2019-04-29 16:37:54.849  INFO [sleuth,fd6f9ebb8f69ab75,fd6f9ebb8f69ab75,false] 1616 --- [ctor-http-nio-2] t.y.sc.sleuth.service.UserServiceImpl    : list: [{id=1, name=test_1}, {id=2, name=test_2}, {id=3, name=test_3}, {id=4, name=test_4}, {id=5, name=test_5}, {id=6, name=test_6}, {id=7, name=test_7}, {id=8, name=test_8}, {id=9, name=test_9}, {id=10, name=test_10}]

可以看到内容是由[appname,traceId,spanId,exportable]组成的, 具体含义如下:

  • appname:服务的名称,也就是spring.application.name的值
  • traceId:整个请求的唯一ID,它标识整个整个请求的链路
  • spanId:基本的工作单元,发起一起远程调用就是一个span
  • exportable:是否导入数据到Zipkin中
阅读全文 »

druid 打印慢 sql 日志

发表于 2019-04-18 | 分类于 Java
| 字数: 2.7k | 时长 ≈ 2 分钟
标签 spring-boot alibaba druid

依赖包

1
2
3
4
5
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.16</version>
</dependency>
阅读全文 »

Linux traceroute 命令

发表于 2019-04-11 | 更新于 2023-10-12 | 分类于 Linux
| 字数: 122 | 时长 ≈ 1 分钟
标签 shell traceroute

traceroute

1
2
traceroute <ip> -nT -p <port>
traceroute baidu.com

windows使用

1
2
tracert <ip>
tracert baidu.com

Linux telnet 命令

发表于 2019-04-11 | 更新于 2022-06-21 | 分类于 Linux
| 字数: 147 | 时长 ≈ 1 分钟
标签 shell telnet

telnet

1
telnet <ip> <port>

ctrl+c 不退出问题解决

1
2
3
4
# 先输入
$ ctrl+]
# 在输入
$ quit

下载地址

http://www.rpmfind.net/linux/rpm2html/search.php?query=telnet

logback 踩坑

发表于 2019-04-02 | 更新于 2019-04-03 | 分类于 Java
| 字数: 2.8k | 时长 ≈ 3 分钟
标签 logback
  1. totalSizeCap 配置大于 2GB 时,不生效的问题

logbakc.xml 配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<appender name="info_rolling"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${logger.path}/info.log</File>
<encoder charset="${logger.charset}">
<pattern>${logger.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>
${logger.path}/info.%d{yy-MM-dd}.%i.log
</fileNamePattern>
<maxHistory>${logger.maxHistory}</maxHistory>
<maxFileSize>512MB</maxFileSize>
<totalSizeCap>5GB</totalSizeCap>
</rollingPolicy>
</appender>
阅读全文 »

jstack

发表于 2019-03-30 | 更新于 2021-04-09 | 分类于 Java
| 字数: 51 | 时长 ≈ 1 分钟
标签 JVM jstack

jstack

导出线程信息到文件

1
$ jstack <pid> > pid.txt
1…567…14
forever杨

forever杨

开心又过一日,唔开心又过一日

202 文章
31 分类
175 标签
GitHub
友情链接
  • Tidy的个人博客
© 2024 forever杨 | 站点总字数: 706k