- 博客(40)
- 收藏
- 关注
原创 使用maven-shade-plugin relocation解决包冲突
项目中使用了org.springframework.cglib.beans.BeanCopier进行JavaBean的复制操作,此操作不会进行类型转换操作,及类型不一致时,属性无法赋值,包括基本类型和包装类型,需要使用Converter进行类型转换。查看Converter时发现没有参数名的描述,于是在github上查询Spring-core的源码,发现源码与Jar中文件差异很大spring-core.jarspring-core源码许多jar中的class文件在源码中不存在,怀疑为打包时进行了某
2021-11-24 15:13:59 2474 1
原创 AbstractRoutingDataSource实现动态数据源切换
AbstractRoutingDataSourcespring-jdbc的包中,提供了AbstractRoutingDataSource用于数据源路由操作public abstract class AbstractRoutingDataSource extends AbstractDataSource implements InitializingBean {该类实现了InitializingBean接口,说明初始化时会调用afterPropertiesSet方法@Overridepublic
2021-11-24 13:39:57 1420 1
原创 RedisTemplate使用Jackson序列化及反序列化
@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate<String, Object> redisTemplate = new RedisTemplate(); this.initDomainRedisTemplate(redisTemplate, redisConnectionFact
2021-11-22 23:52:24 2041
原创 Redis数据类型及使用场景
一共有8中数据类型,常用的是5种StringString字符串Int整数Float字符串常用操作命令set young 2673 [EX 过期时间(秒)| PX 过期时间 毫秒] [NX key 不存在操作才能成功| XX 只有Key存在的时候才能成功]mset young 2673 hui 666 批量setmget young hui 批量getstrlen young value长度append young good 给value后面追加getrange young 0 8 返回
2021-11-22 23:45:56 576
原创 redis java客户端
https://redis.io/clients#java星标为推荐客户端Jedishttps://github.com/xetorthio/jedis<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.3.0</version></dependency>
2021-11-22 23:40:12 667
原创 CentOS 7 安装redis 6
安装1、下载redishttp://download.redis.io/releases比如把Redis安装到/usr/local/soft/cd /app/toolswget http://download.redis.io/releases/redis-6.2.6.tar.gz2、解压压缩包tar -zxvf redis-6.2.6.tar.gz3、安装gcc依赖Redis是C语言编写的,编译需要yum install gcc4、编译安装cd /app/tools/redi
2021-11-22 23:36:21 406
原创 SpEL表达式的使用
Spring Expression LanguageSpEL是Spring提供的一种的表达式语言,支持在运行时查询和操作对象。SpEL并不直接与Spring相关联,可以独立使用。SpEL解析器SpEL提供了对应的解析器SpelExpressionParser用于解析SpEL表达式EvaluationContextEvaluationContext用于计算表达式以解析属性、方法、字段,并帮助执行类型转换。Spring提供了两个实现SimpleEvaluationContext和StandardE
2021-11-21 18:16:07 7213 2
原创 Nginx防盗链配置
作用放置其他人盗用系统静态资源正常访问location ~* .\(png|gif|png)${ root /usr/static;}此时可以通过浏览器可以正常访问到静态资源也可以通过命令行访问curl --referer http://baidu.com -| http://192.168.12.120/logo.png在curl通过–referer选项来指定我们是从哪里跳转的 -|参数则只显示 http response的头信息表示是通过baidu.com来访问这个地址的加防
2021-11-20 14:43:39 773
原创 nginx跨域配置
当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域当前页面url被请求页面url是否跨域原因http://www.test.com/http://www.test.com/index.html否同源(协议、域名、端口号相同)http://www.test.com/https://www.test.com/index.html跨域协议不同(http/https)http://www.test.com/http://www.baid
2021-11-20 14:31:11 1054
原创 Nginx动静分离
server{ listen 80; server_name local_host; location /{ proxy_pass http://127.0.0.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_fo
2021-11-20 14:28:54 930
原创 Nginx负载均衡配置
网络负载均衡的大致原理是利用一定的分配策略将网络负载平衡地分摊到网络集群的各个操作单元上,使得单个负载任务能够分担到多个单元上并行处理,使得大量并发访问或者数据流量分担到多个单元上分别处理,从而减少用户的等待响应时间upstream是nginx的http Upstream模块,这个模块通过一个简单的调度算法来实现客户端IP到后端服务器的负载均衡upstream与server同级# 负载均衡配置upstream yhsblog { # 列举负载均衡的服务器列表 server 127.0
2021-11-20 14:27:41 624
原创 Nginx反向代理
概念正向代理:是一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并制定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。(类似于访问谷歌,请求代理服务器,代理服务器请求谷歌,谷歌响应到代理服务器,代理服务器返回给浏览器)。客户是知道代理服务器和原始服务器的存在的反向代理:位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获取目标服务器的资源。同时,客户不需要知道目标服务器的地
2021-11-20 14:24:59 902
原创 Nginx location匹配规则
location会尝试根据用户请求中的URI来匹配上面的uri表达式,如果可以匹配,就会选择location{}块中的配置来处理用户请求。匹配方式是多样的。location[=||*] /uri/ { …}~ 波浪写表示执行一个正则匹配,区分大小写~* 表示执行一个正则匹配,不区分大小写= 进行普通字符精确匹配URI匹配模式location的指令分为两种匹配模式普通字符串匹配:以=开头或者没有带正则引导符号(~)规则location /uri 普通匹配前缀匹配匹配采用最长匹
2021-11-20 14:22:38 1109
原创 SpringBoot基于Redis使用SpringCahe
Spring Cache 官方文档注解@Cacheable作用于方法或者类上。作用于类上表示该类中所有方法都会走缓存操作cacheNames/value缓存名称,可配置多个,调用方法前,会检查是否有命中的缓存,如果有命中至少一个缓存,则返回缓存值,不执行方法操作。更新缓存时,value中所有的缓存名称对应的缓存都会更新。@Cacheable(value={"a","b"})public String a(){.....}@Cacheable(value="b")public Stri
2021-11-18 13:16:21 923
原创 CentOS 7 搭建mysql 5.7
下载mysql源安装包wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm安装mysql源yum localinstall mysql57-community-release-el7-8.noarch.rpm安装mysqlyum -y install mysql-community-server启动mysql服务systemctl start mysqld查看mysql状态..
2021-11-18 13:12:53 568
原创 Nginx配置文件说明
nginx.conf组成main块 配置错误日志、进程及权限等信息设置worker进程的归属 用户 用户组#user nobody;指定worker进程的数量worker_processes 1;错误日志路径 后面是日志级别 debug info notice warn error crit#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info
2021-11-18 13:08:34 511
原创 CentOS 7 安装Nginx
安装gccyum install gcc-c++安装 PCRE pcre-develyum install -y pcre pcre-devel安装zlibyum install -y zlib zlib-devel安装OpenSSLyum install -y openssl openssl-devel下载nginx安装包,地址: https://nginx.org/en/download.htmlwget https://nginx.org/downlo..
2021-11-18 12:15:52 216
原创 SpringBoot上传文件限制
项目中需要控制上传文件的大小,采用了SpringBoot中的配置进行配置,并添加了相关的异常拦截处理。application.yamlspring: servlet: multipart: max-file-size: 5MB # 文件上传大小限制为5MB max-request-size: 5MB # 请求大小限制为5MB全局异常配置@RestControllerAdvicepublic class CustomExceptionHand
2021-11-17 20:38:17 2178
原创 Spring AOP
注解开启AOP@EnableAspectJAutoProxy(proxyTargetClass = true, exposeProxy = true)proxyTargetClass默认值为false,表示默认使用JDK动态代理,未实现接口的类使用CGLIB,为true表示默认使用CGLIB代理exposeProxy默认值为false,为true表示通过aop框架暴露该代理对象,aopContext能够访问相关注解@Aspect声明切面bean,加在类上,配合@Component使用,否则Sp
2021-11-17 20:33:09 835 1
原创 SpringBoot Mybatis多数据源配置
生产环境数据源配置为jndi,故代码中的多数据源配置基于jndiJndi数据源配置类public class JndiDataSourceConfig { /** * 自定义全局mybatis配置 */ @Autowired private MybatisConfig mybatisConfig; /** * 创建数据源 * @param jndiDataSouceProperties 数据源配置配 * @return *
2021-11-17 00:29:54 279
原创 CentOS 7安装NodeJs
安装nodejs通过国内镜像地址下载NodeJscd /app/toolswget https://npm.taobao.org/mirrors/node/v16.13.0/node-v16.13.0-linux-x64.tar.xz解压压缩包xz -d node-v16.13.0-linux-x64.tar.xztar -xvf node-v16.13.0-linux-x64.tar进入bin目录cd /app/tools/node-v16.13.0-linux-x64/bin此时
2021-11-17 00:27:09 1032
原创 自定义注解的基本操作
编写自定义注解需要一定的反射相关知识元注解作用在其他注解上的注解@Retention - 标识这个注解怎么保存,是只在代码中,还是编入class文件中,或者是在运行时可以通过反射访问。@Documented - 标记这些注解是否包含在用户文档中。@Target - 标记这个注解应该是哪种 Java 成员。@Inherited - 标记这个注解是继承于哪个注解类(默认 注解并没有继承于任何子类)@Repeatable - Java 8 开始支持,标识某注解可以在同一个声明上使用多次。其中@
2021-11-17 00:08:59 174
原创 Java反射的基础使用
java.lang.reflect的包中,提供了反射相关的类,常用的为Field:字段,Method:方法,Annotation:注解,Constructor:构造器,我们平常最常见到的Class类则在java.lang目录下。Field,Method,Constructor都与Class相关,可以通过Class获取到Class常用获取方式class常用的获取方式有3种类型.class对象的getClass方法()Class.forName(className),使用此方法需传入对
2021-11-17 00:03:20 300
原创 NacosConfig配置中心手动添加监听
使用Nacos做注册中心,会遇到如html,json,txt这类数据的监听,或者需要对数据进行特殊处理的情况,此时需要采用通过手动获取配置中心的数据初始化并且添加监听手动添加Nacos监听public void addNacosListener(String dataId, String group) { try { Properties properties = new Properties(); // gatewayConfig为配置的需要监听的参数 // nacos地址
2021-11-16 13:30:46 3403
原创 ElasticSearch基于Oracle数据库动态更新IK分词器词库
环境系统:CentOSElasticsearch:7.6.2IK:7.6.2DB:Oracle步骤下载指定版本IK的source code ,地址:https://github.com/medcl/elasticsearch-analysis-ik/releases在config目录下增加jdbc-reload.propertiesjdbc.url=jdbc:oracle:thin:@10.10.200.42:1521:orcljdbc.user=credit_lawjdbc.pas
2021-11-15 21:41:39 2017
原创 Java根据属性排序时的null值处理
@Datapublic static class ProjectFileType { private String value; private String name; private Integer order;}针对ProjectFileType这个类,在返回给前端时需要通过order进行排序处理考虑到order字段可能为空,使用了nullsLast处理List<ProjectFileType> list;list.sort(Comparator.null
2021-11-15 19:35:12 3320 1
原创 nginx配置ssl及http强制转发https
查看nginx是否有ssl模块sh /usr/local/nginx/sbin/nginx -Vnginx version: nginx/1.21.3built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) configure arguments:进入nginx.tar.gz解压后的目录cd /app/tools/nginx-1.21.3添加ssl模块./configure --prefix=/usr/local/nginx ..
2021-11-15 13:21:16 1489
原创 脚本管理工具-DBDeploy
环境搭建1.基本环境Java、Maven、数据库2.初始化控制表创建CHANGELOG表create table CHANGELOG( CHANGE_NUMBER NUMBER(22) not null, COMPLETE_DT TIMESTAMP(6) not null, APPLIED_BY VARCHAR2(100) not null, DESCRIPTION VARCHAR2(500) not null)/alter table CHANGELOG
2021-11-15 10:40:56 1570
原创 使用supervisor进行进程管理
环境:ContOS 7 ,python 2.7安装安装环境yum -y install epel-release安装supervisoryum install -y supervisor启动supervisord服务systemctl start supervisord设置开机自启systemctl enable supervisord检查supervisord进程ps -ef|grep supervisord配置vim /etc/supervisord.conf在最
2021-11-14 18:24:05 188
原创 使用Cglib的BeanCopier复制对象失败
使用BeanCopier进行对象属性的复制,在对某一部分代码进行重构之后发现一部分POJO使用BeanCopier进行属性赋值失败。进行资料查找,发现Cglib中通过Introspector获取BeanInfo,再获取对应的getter和setter方法,其中获取setter方法时,只会获取返回类型为void的setter方法 else if (argCount == 1) { if (int.class.equals(argTypes[0]) && name.startsWit
2021-11-14 15:59:11 1714
原创 利用无头浏览器phantomjs生成echarts图
场景后端生成报告中需要插入与前端相同的echarts图,请求不由前端触发,故无法传入前端生成好的echarts图网上提供解决方案:phantomjs无头浏览器+echarts-convert.js环境搭建参考: https://www.cnblogs.com/yestreenstars/p/5511212.html1.安装依赖软件yum -y install wget fontconfig2.下载PhantomJSwget -P /tmp/ https://bitbucket.org/ar
2021-11-11 13:28:25 1308
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人