自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

清泉影月

技术边缘OB

  • 博客(115)

原创 整合 jasypt 加密到 springboot 工程

前言:springboot 工程涉及到一些重要的连接,涉密连接明文传参隐患很大,所以需要配置加密, jasypt 是目前最好用的加密工具。1. 官网https://github.com/ulisesbocchio/jasypt-spring-boottips: 官网目前是 3.0.3,如果你是jdk 1.8 版本可能会有问题,这个后面再说。2. maven 依赖 <dependency> <groupId>com.github.uli

2020-10-21 12:13:15 9

原创 linux 搭建 FTP 避坑指南

前言:有很多博客写过 linux 搭建 FTP,很遗憾,照着搭建出了不少故障,所以这里记录一下关键的坑怎么处理。1.需求和环境需求:基于 linux 搭建一个FTP,保证用户只能访问自有目录,可以正常进行读写操作。linux 版本: centos 72.安装 FTPyum install -y vsftpd3.启动 FTP 服务service vsftpd start其他可能用到的命令停止服务:service vsftpd stop重启服务:service vsftpd rest

2020-09-24 20:43:31 25

原创 logback + MDC 搭建 springboot 的日志系统

前言:日志的作用是什么?调试,问题定位,数据分析。日志很重要,要保证统一的样式,分级别,请求可追溯。1. springboot 自带的logback如果你是 ieda 开发工具,并且是maven工程,可以点开 pom 文件,右键 -> maven -> Show Dependencies ,可以查看整个项目的依赖关系,其中有 logback2.配置 logback.xml 文件这个文件配置好放在 resources 目录下即可(不需要其他任何地方的配置),工程可自动识别,仔细阅读文

2020-09-14 20:21:22 24

原创 linux下创建用户赋予root权限

前言:最近一直在折腾linux的脚本,用来固化一些常用的功能,本次记录创建用户赋予权限。1.创建用户useradd 和 adduser 都行eg,useradd deploy2.创建或者修改密码passwd deploy然后会提示输入密码,连续输入两次即可,一般密码要求:字母大小写、特殊字符、数字、长度大于8,不能和用户相关等要求。如果你要是想把创建密码写到脚本固化,可以这么写echo "密码" | passwd --stdin deploy3.赋予root权限修改 /etc

2020-09-09 21:00:12 89

原创 linux查看版本信息

前言:有时候需要给linux装环境依赖,版本就显得很重要了,所以这里记录一下方便以后查看。1. 输入"uname -a ",可显示电脑以及操作系统的相关信息2. 输入"cat /proc/version",说明正在运行的内核版本3. 输入"cat /etc/issue", 显示的是发行版本信息4. lsb_release -a(如果命令找不到,不建议安装 lsb,依赖包太多)...

2020-09-08 20:42:39 38

原创 linux的cat命令

前言:以前经常用 cat 进行文件的追加,正好今天有时间把cat命令好好梳理一下。1.使用实例追加 config 文件内容到 bashfile 文件cat config >> bashfile把 textfile1 的文档内容加上行号后输入 textfile2 这个文档里cat -n textfile1 > textfile2清空 /etc/test.txt 文档内容cat /dev/null > /etc/test.txt2.参数说明-n 或

2020-09-08 20:22:55 32

原创 linux删除乱码文件

前言:前段时间有一台新机器需要部署环境,结果文件 rz 进去以后发现中文名字乱码,想删掉,但是发现 rm 不管用,但是转念一想,既然linux能管理到该文件,那么肯定有文件的唯一标识可以进行操作的(这种唯一标识在linux中称为 i 节点),于是网上查找一番,这里记录一下。1 .查找文件i节点ls -i 或者 ll -i 都行,最前面的那个号码就是 i 节点标识例如(这里以正常文件来演示):2.删除find . -inum 679052 -exec rm {} -rf \;再查看一下

2020-09-08 20:13:16 18

原创 ClassFinal 对 java 代码进行混淆和加密

前言:最近公司突然对代码混淆关注起来了,不混淆不能发版,在网上找了下混淆工具,主流的 java 混淆是 proguard,但是不太好用,后来就发现一个好用的 classfinal 工具包,本质上 classfinal 不是做混淆的,是对生成的 jar 或者 war 重新加密生成一个新的包,但是你想啊,加密比混淆更高端,肯定是满足要求的。1.简介ClassFinal是一款java class文件安全加密工具,支持直接加密jar包或war包,无需修改任何项目代码,兼容spring-framework;可避

2020-09-08 19:53:02 102

原创 mybatis 传入Integer类型0时导致参数丢失

场景:数据表里面有一个整型字段 type,参数为 0 或者 1,使用 mybatis 的 xml 文件写 sql 时发现传参为0时不起作用。1.部分代码 <if test="userType != null and userType != ''"> AND s.`type` = #{userType} </if>大家一般也都是上面的写法,但是 userType 被声明为 Integer传参为 0 时,userType

2020-08-26 17:18:19 79

原创 tar 打包隐藏文件

前言:先说一下遇到的场景:前段时间在配合做 DevOps,组内有块代码是 php 的,需要用 tar 命令打包归档上传到 nexus 库,后来发现解压出来的包居然缺失了隐藏文件(配置文件),查了一下资料解决了,这里记录一下。1. tar 命令常规用法-c 创建新的档案文件-C 指定到要解压到的目录。注意:该目录必须存在-f 指定打包的文件名。在f之后要立即接打包文件名!不能再加参数!-x 解压-O 将文件解压到标准输出-p 使用原文件的原来属性-P 创建归档文件,使用绝对路径-t 列出档

2020-08-03 10:19:13 104

原创 linux安装指定版本jdk

前言:安装jdk,无论在 windows 还是linux都是一套流程,下载对应包 -> 安装jdk -> 配置系统环境 -> 校验最近赶着活动在某里云搞了一个入门的云主机,搭建一下基础环境,以后可以开发小工具自己用。1.下载地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html找到系统对应的版本,例如 linux x64,这里同一个版本包的类型不同,不同的包安装方式会有差异,推荐

2020-07-31 17:46:38 164

原创 Java 策略模式(strategy)

前言:问:啥是“策略”答:不同情况不同处理呗问:那不就是 if…else 或者 switch 吗答:本质上差不多吧问:总有区别的吧,“策略”听起来感觉高级些答:那肯定啊问:到底啥区别答:高级的东西用起来舒服,价格也贵问:…,可以不用吗答:可以啊,又没人逼你问:那么豪横吗,来一套试试1.策略模式举例“策略”就如前言所说,这里举一个常见的栗子,我们去超市买东西,结账的时候会被各种询问,收银妹子:您是会员吗鄙人:不是收银妹子:会员九五折,只需要登记一下手机号就行了呢,要不要开通一下

2020-06-19 10:52:17 78

原创 mysql 使用 like 模糊查询时通配符处理

前言:mysql 的like查询有两个通配符 % 和 _,这两个在查询的时候会把不需要的结果查询出来,怎么处理?1.问题描述模糊查询语句如下:select name from table where name like '%字符串%';一般我们会用查询的字符串替换后可以进行模糊查询,如果字符串中有 % 或 _,怎么办?2.分析问题下划线 _ 在 mysql 中是匹配任意一个字符的意思(可为空),百分号 % 是匹配任意长度的字符串(可为空),直接传到 mysql 语句中不会被当做要查询字符串的

2020-06-12 12:57:05 160

原创 Java 深浅拷贝和原型模式

前言:本来是在学习原型模式的,后来发现它就是一个拷贝,然后就去研究了下深浅拷贝以及它们的实现,这里不说大道理,尽量通俗易懂地把它们都讲清楚。1.引入问:java 对象拷贝的意义何在?为啥要拷贝?答:因为懒,不想实例化一个,所以拷贝生成一个新的对象现实实例:本科学习的时候有很多课程是讲 ppt 进行考核的,有些人忙(其实嘛…)没做 ppt,所以就会拷贝一份室友(室长)的;A室友拷贝了一份 ppt 就放在室友电脑里面同一个目录下,改了些个人信息,并把 ppt 链接的素材裁剪了一番;B室友把所有 pp

2020-06-12 11:15:59 78

原创 vim 上下翻动查找字符串

需求描述:在 linux 下用 vim 命令查找字符串,可能有很多个满足条件,怎么定位上一个或者下一个?解决之道:首先进入 vim 后进入 normal 模式,键入如下命令后按 Enter 键进行查找字符串:/搜索字符串查找下一个按 n,往上找上一个按 N...

2020-06-09 19:55:13 460

原创 Java 设计模式之桥接模式

前言:Bridge 模式以前看过,看到最后发现这就是一个继承嘛,居然还能搞个模式出来,不科学啊,当时没弄清楚,后来就没关注了;今天突然热血来潮,决定搞清楚这个模式,仔细研究后发现以前我被坑了。1.为啥被坑好多博主写过 bridge 模式,不少写的都有问题,有些是核心思想写对了,但是举例写错了;有些画了一堆图把人绕晕了,最后完全看不懂。当然还有一个原因是平时用的少,很少人去研究,写博客纯粹就是抄别人的,别人错他也错,然后看的人似是而非,糊里糊涂。2.bridge核心思想核心:解耦对象描述,让对象可

2020-06-01 21:11:56 85

原创 java:随机生成符合要求的复杂密码

前言:密码要求:大写字符、小写字符、数字、特殊符号,必须要包含,密码长度在 8-20 位。设计结果:输入密码长度,返回符合要求的随机密码。1.需求拆分需求可分为两点:四种字符必须包含长度 8-20 位2.逻辑设计声明一个 list把 4 种字符每种随机选一个放进 list根据密码长度要求再随机选择4种字符放进listlist 重新排序list 遍历组合成字符串输出逻辑设计 2 满足需求 1;逻辑设计 1、3、4满足需求23.代码设计首先写 4 个函数用于生成 4

2020-05-25 18:03:09 268

原创 IDEA 重复启动springboot 项目报端口被占用的错

前言:描述一下状况:IDEA 启动了 springboot 程序,想重启,但是关闭上次程序的时候选择了 disconnect,虽然运行窗口关了,但是程序却再也起不起来了。1.报错信息Description:Web server failed to start. Port xxxx was already in use.Action:Identify and stop the process that's listening on port 8888 or configure this app

2020-05-25 14:16:06 457

原创 防止 crontab 定时任务重复执行

前言:crontab 定时任务很好使用,它的定时是很强硬的,直接跟系统时间打交道,不会去管程序本身执行是否需要时间。举个栗子:一个脚本执行需要 1 小时,使用 crontab 每隔2小时执行一次,一般情况下下次执行脚本时上次脚本执行肯定是跑完了的;但是,假如,程序卡住了呢?下次执行时上次脚本还在,会咋样?会再启动一个脚本,这时候就有两个脚本在执行,如果产生冲突会把事情搞得更复杂。咋整?1.flock 来帮忙直接在 linux 输入 flock 命令,就会获取使用说明:Usage: floc

2020-05-20 19:50:39 403

原创 springboot从零开始:定时任务

前言:描述一下场景:微信公众号发送模板消息的时候需要 accesstoken,这个字段的值两个小时以后会过期,所以需要每一个小时去请求一次accesstoken存到 redis,用的时候直接去 redis 取就行了。这里只把定时代码写出来,其他的逻辑不在这里说。1.springboot 自带注解实现定时在类上使用 @EnableScheduling 注解,在定时的方法上使用 @Scheduled()import org.springframework.context.annotation.Conf

2020-05-19 20:12:24 101

原创 java 设计模式之建造者模式

前言:Builder 模式平时开发用的少,主要原因是有很大的缺陷

2020-05-18 19:48:42 78

原创 Java 设计模式之单例模式

前言:单例模式,就是在程序运行过程中某一个对象只能有一个实例。说一个场景,你手中有一套房要卖,委托了好几家门店销售,假如同一时间两个销售员把你的房以同一价格销售给不同的人,这时候你卖给谁?这个场景带来的其实是两个问题,一套房(涉及单例),两个销售员(涉及多线程)。1.懒汉模式简述懒汉模式,单例模式的入门讲解就从这个开始的,几乎所有的人都会跟你说这个是线程不安全的,今天我们来测一下为啥不安...

2020-04-29 22:07:11 89

原创 Java 设计模式之工厂模式

前言:工厂模式是设计模式中比较常见的模式,想象一个万能的工厂,你输入不同的原料产出不同的产品,这就是工厂模式。1.三种工厂很多讲设计模式都会讲三种工厂,分别是:简单工厂、工厂方法、抽象工厂。这种理解是不对的,看外文书或直译书一般很难看到三种工厂这种概念,国内这么讲是为了更好理解工厂模式。真正的工厂模式是第二种情况,第三种可以看作是工厂模式的引申,第一种算是入门。2.工厂模式工厂模式涉及...

2020-04-28 21:02:36 71

原创 springboot从零开始:引入 dynamic 整合多 mysql 数据源

前言:多数据源在开发的过程中偶尔会用到,本博客也给出一个稍微简单的配置的方式。1.基础前面我写过 springboot 整合 mybatis-plus 的博客,有需要的先看一下,本次博客在此基础上进行阐述。整合 mybatis-plus 和其分页查询功能2.依赖<dependency> <groupId>com.baomidou</groupId&...

2020-04-23 21:13:28 118

原创 mysql 模糊查询 like 使用索引状况分析

前言:mysql 创建索引大部分是为了快速查询,但有时候会发现查询语句并没有大多提升,这里面终究是有些故事的。模糊查询 like 引用索引分析先直接给个结论,然后我们再分析select * from table where name like 'jonny%';select * from table where name like '%jonny%';如果 name 字段加了索引,第...

2020-04-23 19:45:53 170

原创 mysql 的翻页查询

前言:前段时间在写 mybatis-plus 的翻页查询功能的时候突然想到,mysql 语句本身肯定是有翻页查询的功能的,所以研究一波。limit 实现翻页sql 语句还是正常写,但是要在后面加上 limit 语句的限制平时我们 limit 这样用:select * from table where id>0 limit 10;这默认查询选择 id 大于0 的前 10 条数据...

2020-04-23 11:07:40 139

原创 springboot从零开始:整合 mybatis-plus 和其分页查询功能

前言:本系列博客记录 springboot 求学之路:写接口肯定是绕不开数据库连接,无论 mysql、redis、es都有涉及到,本次博客讨论 mysql 的记住连接配置,下个博客写一下多数据库的连接。1.声明依赖<!-- mysql 链接库 --><dependency> <groupId>mysql</groupId> ...

2020-04-21 20:12:00 237

原创 curl 命令 get 请求丢失参数问题

在 linux 下想测试一下另一台 linux 机器的接口访问是否有效,过程如下接口描述:ip:port/get?name=jonny&age=18因为接口做了兼容处理,所以并没有报错,但是结果却不对查看接口的日志发现请求链接是下面这个/get?name=jonny这是直接把 & 后面的参数全丢了linux 下 & 有特殊含义,curl 请求会把 &amp...

2020-04-21 17:06:46 469

原创 base64 编码传参避坑指南

前言:描述一下项目需求:前端传入 url 链接,查询库里面跟 url 相关的信息1.接口传参设计按照约定查询肯定用 get 请求,接口设计用 info 接受参数,设计如下/query?info=样例传参/query?info=http://www.shayebushi.com/key?name=jonny&job=nurse稍微懂点的应该就知道在这个链接有问题(/,=,...

2020-04-20 14:04:58 221

原创 springboot从零开始:打 war 还是 jar 包的控制以及打包名的修改

前言:本系列博客记录 springboot 求学之路:现在一般都是打 jar 包,老的工程可能有 war 包需求;springboot 打包的名称默认是 artifactId 标签 + version 标签,不太方便。1.打 war 还是 jarspringboot 新版本(我的 2.2.6),是默认打 jar 包的,就是打包选项不写也是 jar一般老的项目或者有特殊需求的可能需要 w...

2020-04-16 19:28:50 169

原创 springboot从零开始:properties 文件替换成 yml 文件

前言:本系列博客记录 springboot 求学之路:一般你去看稍微新点的springboot工程,它的资源配置文件都是 yml,而不是自带的 properties;一方面是 yml 文件书写格式比较清晰简洁(和 python 书写格式很像),另一方面多种环境(测试、开发、生产等)配置也方便。1.properties 文件使用毕竟是自带的文件嘛,我们先用一下看看效果,然后再丢掉嘛(有点渣,...

2020-04-15 19:44:00 763

原创 springboot从零开始:新建springboot工程

前言:本系列博客记录 springboot 求学之路:万事开头难,第一步创建一个基础工程1.环境和工具描述开发工具:IDEA,版本 2018.03JDK:版本1.8Spring Boot:版本 2.262.新建工程File -> New -> Project -> Spring Initializr点击 Next,简单配置一下工程信息点击 Next,初学者...

2020-04-14 21:29:06 74

原创 springboot从零开始:spring-boot-devtools 热部署工具怎么在IDEA下使用

前言:热部署貌似是一个比较有意思的东西,监控程序的变化,然后自动重新启动,不过使用的过程中偶尔有些小问题,最开始我的就是不起作用的,查了不少 博客,这里记录一下过程。1.当前使用版本,版本不同选项可能有些许差别IDEA:版本 2018.03Spring Boot:版本 2.252.maven依赖:<dependency> <groupId>org.spr...

2020-03-27 16:02:01 188

原创 springboot从零开始: @RequestMapping与@GetMapping区别

前言:最近在研究 spring boot,产生了大量疑问,每个疑问记录一下,本次疑问如题1.概说@GetMapping@PostMapping@PutMapping@DeleteMapping@PatchMapping从名字不难看出这些是定义路由的访问方式,get、post等,点进去查看他们的上层代码,例如 @GetMapping,在最上面有几行注释,如下@Target({El...

2020-03-26 19:17:14 533

原创 springboot从零开始: @RestController和@Controller 区别

前言:最近在研究 spring boot,产生了大量疑问,每个疑问记录一下,本次疑问如题1.问题的由来学习就要看书,书上有个例子,如下:@Controllerpublic class TestController { @GetMapping("/get") public @ResponseBody Object getName() { return "h...

2020-03-26 15:01:05 111

原创 linux:清空日志无法改变日志文件大小

问题描述:用 nohup 起了一个代码,把打印重定向到 run.log 中,但是使用清空文件命令以后,用 ll 命令查看,显示 run.log大小并没有改变1.问题梳理跑代码命令nohup python -u run.py > run.log 2>&1 &ll -h 查看显示 run.log 大小 16M;du -sh 查看当前目录大小 16.1M使用清空...

2020-03-12 16:18:30 495

原创 python 中 sql 语句包含%怎么格式化

问题描述:python中sql语句包含 % 时,格式化会出问题,怎么破# 举例sql = "select * from test_db where name like '%%s%'" % ('真真',)我们希望用“真真”替换 sql 语句中的 %s,但实际中会报错,处理的方式就是对 % 进行转义,用 %% 代替 % 如下sql = "select * from test_db wher...

2020-03-10 14:19:28 575

原创 pymysql 操作 mysql 样例

前言:python 中常用的连接 mysql 的包有两个 MySQLdb 和 pymysql,用法大致相同,这里只介绍 pymysql 用法。1.安装pip install pymysql2.获取连接import pymysql # 连接databaseconn = pymysql.connect( host=“你的数据库地址”, user=“用户名”,pass...

2020-03-09 10:24:15 65

原创 gb2312编码导致爬虫解析乱码的问题

解决之道:gb2312编码导致的乱码,只需要做一个转码就可以了,一般我们转成utf8,转码如下:response = requests.get(url=url)response_code = response.text.encode('iso-8859-1').decode('gbk')即可完成把 response.text 转码为 utf8...

2020-03-03 10:38:19 119

原创 linux 进程守护工具 supervisor 使用概述

前言以前跑代码,为了不被杀掉经常用 nohup,后来发现,系统认为该死的程序都得死,这就很郁闷了,市面上有很多进程守护的小工具,只是写的语言不同而已(例如pm2,用node搞的),supervisor用python写的,以前支持py2,现在py3也支持,所以不用担心版本问题。我这里把一些常规的使用介绍一下,顺便说一下有任何问题查阅官网:supervisor官网一. 安装安装方式多种多样,...

2020-02-03 13:54:12 549

空空如也

空空如也

空空如也
提示
确定要删除当前文章?
取消 删除