is
待办
了解下mvc AbstractHttpMessageConverter 与参数处理逻辑
与 HandlerMethodArgumentResolver 的区别
HandlerMethodArgumentResolver
参数上面如果没有@requestBody的话则会调用 resolver resolver 会缓存是否处理此方法
resolver 实现HandlerMethodArgumentResolver
重写 supports 和 resolveArgument
@Override
public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
String body = bodyLocal.get();
if(body==null) {
body = getRequestBody(webRequest);
bodyLocal.set(body);
}
}
private String getRequestBody(NativeWebRequest webRequest) {
HttpServletRequest servletRequest = webRequest.getNativeRequest(HttpServletRequest.class);
String jsonBody = (String) servletRequest.getAttribute(JSON_REQUEST_BODY);
if (jsonBody == null) {
try {
jsonBody = IOUtils.toString(servletRequest.getInputStream());
servletRequest.setAttribute(JSON_REQUEST_BODY, jsonBody);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
return jsonBody;
}
AbstractHttpMessageConverter
用来处理带有@RequestBody注解的参数的…
coverter 方法的入参 和返回都会调用 可以在这里做一些参数的处理
在返回的时候也可以对一些返回的数据做一些处理…
一个converter 命中后其他的将不会在处理… converter的顺序是先添加 的在前面判断
返回了也是一样的
package com.ant.store.config;
import org.springframework.http.HttpInputMessage;
import org.springframework.http.HttpOutputMessage;
import org.springframework.http.converter.AbstractHttpMessageConverter;
import org.springframework.http.converter.HttpMessageNotReadableException;
import org.springframework.http.converter.HttpMessageNotWritableException;
import java.io.IOException;
/**
* TOTO
*
* @author Aison
* @version V1.0
* @date 2019/1/5 14:41
*/
public class MyConverter extends AbstractHttpMessageConverter<Object> {
/**
* 是否支持
* @param clazz
* @author Aison
* @date 2019/1/5 17:36
* @return boolean
*/
@Override
protected boolean supports(Class<?> clazz) {
System.out.println(clazz);
return false;
}
/**
* 入参处理
* @param clazz clazz
* @param inputMessage inputMessage
* @author Aison
* @date 2019/1/5 17:37
* @return java.lang.Object
*/
@Override
protected Object readInternal(Class<?> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException {
return null;
}
/**
* 返回处理
* @param o o
* @param outputMessage outputMessage
* @author Aison
* @date 2019/1/5 17:37
* @return void
*/
@Override
protected void writeInternal(Object o, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException {
}
}
查看某个数据库中每个表数据的条数
use information_schema; select table_name,table_rows from tables where TABLE_SCHEMA = '数据库的名称' order by table_rows desc;
maven 排查依赖冲突
quartz的配置
full group by
select @@global.sql_mode =‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’;
set @@global.sql_mode =‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’;
secureCtr 乱码
options -> session options -> appearance -> character encoding
centos7 开放端口
firewall-cmd --zone=public --add-port=80/tcp --permanent (–permanent永久生效,没有此参数重启后失效)
https://www.cnblogs.com/hubing/p/6058932.html
linux 安装gitlab
https://www.cnblogs.com/wenwei-blog/p/5861450.html
linux安装redis
https://www.cnblogs.com/limit1/p/9045183.html
安装完后需要将bind 127.0.0.1 屏蔽掉
修改办法:protected-mode no
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
redis 快照模式不能持久化错误的问题
修改redis.conf文件中配置项stop-writes-on-bgsave-error no (默认值为yes),即当bgsave快照操作出错时停止写数据到磁盘,这样后面写错做均会失败,为了不影响后续写操作,故需将该项值改为no
这个有问题 需要整理
https://blog.csdn.net/hexieshangwang/article/details/47254087
linux 显示行号
:set nu 显示
:set nonu 取消
linux 生成 pub key
ssh-keygen -t rsa -C “jenkins@qq.com”
linux 添加字体
https://blog.csdn.net/weiguang1017/article/details/80229133
linux 修改国内源
-
cd /etc/yum.repos.d
-
mv CentOS-Base.repo CentOS-Base.repo.backup
-
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
-
mv CentOS6-Base-163.repo CentOS-Base.repo
linux 删除软件包
1、查询是否安装了软件
rpm -qa | grep -i 软件名
rpm -qa | grep php
2、删除已安装的软件包
根据第一步显示的软件包名,一个个删除
sudo rpm -e – 包名 # 普通删除模式
sudo rpm -e --nodeps 包名 #强力删除模式,如果用上面命令删除时,提示有依赖的其他文件,则用该命令可以对其进行强力删除
5.yum clean all
作者:杨鑫newlfe
来源:CSDN
原文:https://blog.csdn.net/u012965373/article/details/51313313
版权声明:本文为博主原创文章,转载请附上博文链接!
spring boot redis 整合模式
https://blog.csdn.net/plei_yue/article/details/79362372
防火墙
firewall-cmd --state 防火墙状态
linux安装lrzsz
yum install lrzsz
安装docker
yum install docker
service start docker
docker rm -f 容器 删除容器
docker ps -a 查看容器
docker exec -it 容器名称 /bin/bash 进入容器
有的时候会出现不能访问的情况 重启下docker
安装jenkins
docker pull jenkins/jenkins:lts
docker run -d -v jenkins_home:/var/jenkins_home -p 9000:8080 -p 50000:50000 jenkins/jenkins:lts
export JENKINS_HOME=/usr/jenkins home目录
java -jar jenkins.war --httpPort=8080 添加一个参数
配置完毕maven 后需要重启一下
jenkins 内置对象
BUILD_NUMBER, 唯一标识一次build,例如11;
BUILD_ID,基本上等同于BUILD_NUMBER,但是是字符串,例如20111115160621;
JOB_NAME, job的名字,例如JavaHelloWorld;
BUILD_TAG,作用同BUILD_ID,BUILD_NUMBER,用来全局地唯一标识一此build,例如jenkins-JavaHelloWorld-11;
EXECUTOR_NUMBER, 例如0;
NODE_NAME,slave的名字,例如MyServer01;
NODE_LABELS,slave的label,标识slave的用处,例如JavaHelloWorld MyServer01;
JAVA_HOME, java的home目录,例如C:\Program Files (x86)\Java\jdk1.7.0_01;
WORKSPACE,job的当前工作目录,例如c:\jenkins\workspace\JavaHelloWorld;
HUDSON_URL = JENKINS_URL, jenkins的url,例如http://localhost:8000/ ;
BUILD_URL,build的url 例如http://localhost:8000/job/JavaHelloWorld/23/;
JOB_URL, job的url,例如http://localhost:8000/job/JavaHelloWorld/;
SVN_REVISION,svn 的revison, 例如4;
使用${BUILD_NUMBER}
echo
B
U
I
L
D
I
D
可
使
用
{BUILD_ID} 可使用
BUILDID可使用{BUILD_ID}作为新生成文件的文件名
复制不提示覆盖 cp前面加反斜杠
\cp /usr/local/softi/jenkins/workspace/ant-store-web/ant-store-web/target/ant-store-web.jar /usr/local/softi/tomcat/ant-store-web.jar
java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war
-Dhudson.util.ProcessTree.disable=true 不要杀死延伸出来的进程
构建shell
BUILD_ID=DONTKILLME
cd $WORKSPACE
mv
W
O
R
K
S
P
A
C
E
/
WORKSPACE/
WORKSPACE/JOB_NAME/src/main/resources/config/config.yml
W
O
R
K
S
P
A
C
E
/
WORKSPACE/
WORKSPACE/JOB_NAME/src/main/resources/config.yml
mvn clean install
\cp
W
O
R
K
S
P
A
C
E
/
WORKSPACE/
WORKSPACE/JOB_NAME/target/
J
O
B
N
A
M
E
.
j
a
r
/
u
s
r
/
l
o
c
a
l
/
s
o
f
t
i
/
t
o
m
c
a
t
/
JOB_NAME.jar /usr/local/softi/tomcat/
JOBNAME.jar/usr/local/softi/tomcat/JOB_NAME.jar
cd /usr/local/softi/tomcat/ 加上这个 不然 boot.sh 中会出错
./boot.sh restart $JOB_NAME 9001
接口管理软件
showdoc
https://www.showdoc.cc/help?page_id=13732
springboot 接收时间格式报错
spring boot 2
extends WebMvcConfigurationSupport
@Override
protected void addFormatters(FormatterRegistry registry) {
registry.addFormatter(new DateFormatter("yyyy-MM-dd HH:mm:ss"));
}
返回时间格式而不是时间戳格式
spring boot 2
@Bean
public MappingJackson2HttpMessageConverter jackson2HttpMessageConverter() {
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
converter.setObjectMapper(mapper);
return converter;
}
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
//将我们定义的时间格式转换器添加到转换器列表中,
//这样jackson格式化时候但凡遇到Date类型就会转换成我们定义的格式
converters.add(jackson2HttpMessageConverter());
}
spring boot 2.0后设置文件大小
servlet:
multipart:
max-file-size: 100MB
max-request-size: 1000MB
注意MB 要大写
Spring boot 2 https
其中 pfx-password.txt 文件,是 当前 证书 的密码。
注意git 的那个窗口不能使用 在Linux上面转一下
证书 生成 ,需要 用到 openssl 命令。
转换 证书 命令很简单。如下
Https 证书 生成
1、 证书 的 .pfx 文件,生成 pem 文件。
命令:openssl pkcs12 -in 214309876750212.pfx -out mastra.pem
当前 命令,需要 用到 文件夹 中的 pfx-password.txt 提供的密码 。
2、 步骤 1 生成 的 pem 文件 ,生成 p12 文件
openssl pkcs12 -export -in mastra.pem -out mastra.p12
3、 根据 步骤 2 生成的 p12 文件,生成 crt 文件
openssl pkcs12 -in mastra.p12 -out mastra.crt -nokeys -clcerts
4、 根据 步骤 3 生成的 crt 文件,生成 cer 文件
openssl x509 -inform pem -in mastra.crt -outform der -out mastra.cer
之后,在 spring boot 的 application.yml 中,配置 如图下。
server:
port: 443
tomcat.uri-encoding: UTF-8
ssl:
key-store: classpath:mastra.p12
key-store-password: 214347485390212
key-store-type: PKCS12
密码 即 为 刚才 压缩包中 的 pfx-password.txt 的 密码。
mpvue 中获取formid
report-form = true
@submit = submit
submit (e) {
e.mp.detial.formid
}
微信小程序的主动推送消息
微信小程序需要传递formid 才能推送…
否则无法推送过去
nginx 安装
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum install -y nginx
sudo systemctl start nginx.service
sudo systemctl enable nginx.service
nginx 启动失败,日志里面报错信息如下:
Starting nginx: nginx: [emerg] bind() to 0.0.0.0:8095 failed (13: Permission denied)
权限拒绝,经检查发现是开启selinux 导致的。 直接关闭
getenforce 这个命令可以查看当前是否开启了selinux 如果输出 disabled 或 permissive 那就是关闭了
如果输出 enforcing 那就是开启了 selinux
1、临时关闭selinux
setenforce 0 ##设置SELinux 成为permissive模式
setenforce 1 ##设置SELinux 成为enforcing模式
2、永久关闭selinux,
修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled
重启机器即可
Tags: selinux , nginx绑定端口失败
nginx 内置核心变量
$uri:当前请求的uri,不带参数
$request_uri:请求的uri,带完整参数
$host:http请求报文中host首部;如果请求中没有host首部,则以处理此请求的虚拟主机的主机名代替
$hostname:nginx服务运行所在主机的主机名
$remote_addr:客户端IP
$remote_port::客户端port
$remote_user:使用用户认证时客户端用户输入的用户名
$request_filename:用户请求中的URI经过本地root或alias转换后映射的本地的文件路径
$request_method:请求方法
$server_addr:服务器地址
$server_name: 服务器名称
$server_port:服务器端口
$server_protocol:服务器向客户端发送响应时的协议,如http/1.1,http/1.0
$scheme:在请求中使用的scheme 映射协议本身的协议。 如https://www.tshare365.com中的https;
h
t
t
p
H
E
A
D
E
R
:
匹
配
请
求
报
文
中
指
定
的
H
E
A
D
E
R
,
http_HEADER:匹配请求报文中指定的HEADER,
httpHEADER:匹配请求报文中指定的HEADER,http_host匹配请求报文中的host首部
s
e
n
t
h
t
t
p
H
E
A
D
E
R
:
匹
配
响
应
报
文
中
指
定
的
H
E
R
D
E
R
,
例
如
sent_http_HEADER:匹配响应报文中指定的HERDER,例如
senthttpHEADER:匹配响应报文中指定的HERDER,例如http_content_type匹配相应报文中的content-type首部
$document_root:当前请求映射到的root配置
$status : 引用状态码
nginx 传递自定义header
proxy_pass_header token // 传递token
nginx 开启https
listen 9400 ssl; // 这里的 ssl不要删掉了 这个类似于 ssl on;
server_name www.aison.top;
ssl_certificate ../cert/854575_aison.top.pem;
ssl_certificate_key ../cert/854575_aison.top.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
nginx proxy
server {
listen 9400 ssl;
server_name www.aison.top;
ssl_certificate ../cert/854575_aison.top.pem;
ssl_certificate_key ../cert/854575_aison.top.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
#charset koi8-r;
#access_log logs/host.access.log main;
location /store {
proxy_pass_header token;
proxy_set_header Host $proxy_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass https://www.aison.top:9005;
}
location /common {
proxy_pass_header token ;
proxy_set_header Host $proxy_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass https://www.aison.top:9005;
}
location /supplier {
proxy_pass_header token ;
proxy_set_header Host $proxy_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass https://www.aison.top:9006;
}
}
MYSQL 备份远程数据库到本地
mysqldump -hx.x.x.x -P3306 -ux -px --max_allowed_packet=1024M -q devdatabase> devdatabase.sql
–max_allowed_packet=1024M 数据库本身的 packet 可能设置的 不够大 会出现错误所以添加一个这个
log4j2 配置
<?xml version="1.0" encoding="UTF-8"?> <RollingFile name="RollingFileDebug" fileName="../logs/ant-store-web/debug.log"
filePattern="../logs/ant-store-web/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log">
<Filters>
<!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
<ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
<PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="100 MB"/>
</Policies>
</RollingFile>
<RollingFile name="RollingFileWarn" fileName="../logs/ant-store-web/warn.log"
filePattern="../logs/ant-store-web/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log">
<Filters>
<ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY"/>
<ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL"/>
</Filters>
<PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="100 MB"/>
</Policies>
<!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 -->
<DefaultRolloverStrategy max="20"/>
</RollingFile>
<RollingFile name="RollingFileError" fileName="../logs/ant-store-web/error.log"
filePattern="../logs/ant-store-web/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log">
<ThresholdFilter level="ERROR"/>
<PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="100 MB"/>
</Policies>
</RollingFile>
</appenders>
<!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->
<loggers>
<!--过滤掉spring和hibernate的一些无用的debug信息-->
<logger name="org.springframework" level="INFO">
</logger>
<logger name="org.mybatis" level="INFO">
</logger>
<root level="all">
<appender-ref ref="Console"/>
<appender-ref ref="RollingFileInfo"/>
<appender-ref ref="RollingFileWarn"/>
<appender-ref ref="RollingFileError"/>
<appender-ref ref="RollingFileDebug"/>
</root>
</loggers>
vpc 阿里云ecs 不能远程访问的问题
https://help.aliyun.com/knowledge_detail/41489.html
git win10 下面 git bash here 的时候闪退dump 文件问题
复制null.sys 放到c:\windows\system32\drivers\null.sys
null.sys 在百度盘里面或者去其他电脑复制一份
然后管理员模式打开 cmd 输入 sc start null 记住要管理员模式 启动空服务
centos安装mysql
https://www.cnblogs.com/operationhome/p/9141881.html
yum install mysql
yum install mariadb-server
systemctl start mariadb.servie
#允许远程访问
mysql> use mysql;
Database changed
mysql> grant all privileges on . to root@’%’ identified by “password”;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql source db.sql 出现server gone away
一般是由于max_allowed_packet 太小导致的
1) 方法1
可以编辑my.cnf来修改(windows下my.ini),在[mysqld]段或者mysql的server配置段进行修改。
max_allowed_packet = 20M
如果找不到my.cnf可以通过
mysql --help | grep my.cnf
去寻找my.cnf文件。
2) 方法2
(很妥协,很纠结的办法)
进入mysql server
在mysql 命令行中运行
set global max_allowed_packet = 210241024*10
然后关闭掉这此mysql server链接,再进入。
show VARIABLES like ‘%max_allowed_packet%’;
事务锁表问题
select trx_state, trx_started, trx_mysql_thread_id, trx_query from information_schema.innodb_trx;
查询数据库中表
select table_name from information_schema.tables where table_schema=‘zmglpt’ and table_name like ‘k_%’ ORDER BY table_name desc;
gitlab安装
https://www.gitlab.com.cn/installation/#centos-7
安装wekan
https://www.cnblogs.com/mhc-fly/p/10012056.html
jira
http://blog.51cto.com/jschu/2062520
snowFlake 算法 生成id
https://www.cnblogs.com/relucent/p/4955340.html