工作中碰到的问题

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 修改国内源

  1. cd /etc/yum.repos.d

  2. mv CentOS-Base.repo CentOS-Base.repo.backup

  3. wget http://mirrors.163.com/.help/CentOS6-Base-163.repo

  4. 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:HEADERhttp_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:HERDERhttp_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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值