自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(90)
  • 收藏
  • 关注

原创 正则表达式高阶(四)

正则不常用的方式之使用正则匹配汉字

2023-06-27 21:53:19 2456

原创 正则表达式高阶(三)

所以,正则很强大,但是正则不是万能。在适合的场景还是很好用的。

2023-06-26 19:57:36 762

原创 正则表达式高阶(二)

前两天遇到一个场景,事情是这样的,做一个项目的迁移,本来一切是很美好的,服务都打包好了,包括数据库相关的脚本都准备好了,一切看起来很顺利,可是在启动服务的时候提示 “table xx.xx does’not exist”。这就有点懵了,sql脚本已经执行完成了(我看着执行过程的),为什么还提示没有表?随即联系运维看了下数据库,核对了下表确实存在,仔细一看又不对,错误信息提示的表不存在表名是小写的,而运维给到的表名是大写的!

2022-11-23 14:41:35 512 1

原创 正则表达式高阶(一)

很长一段时间没有写东西了,也不知道自己在忙什么,趁着今天有时间,分享一下最近学到的几个关于正则表达式的东东。其实,关于正则表达式,前面我已经分享过几篇零基础入门正则表达式的短文,感兴趣的可以去考古一下,传送门。之所以今天还是分享正则表达式的内容是因为今天的内容相对是正则表达式中比较难理解的一些概念,而且在最近的工作中我发现,之前学习(分享)的内容还不足以处理我现在遇到的问题,所以就有了今天的收获,希望给耐心看完的你带来一点小小的收获。闲话少说,我们直接进入正题。

2022-11-21 11:44:42 385

原创 springboot 自定义参数解析器,实现自定义参数的注入

作为 java web 项目,现在应该都是基于 springboot 开发了吧,最近研究了 spring 的参数解析器,发现在部分场景还是挺实用的,现把基于springboot自定义参数解析器的过程分享出来,有需要的可以直接使用现在的项目基本都是前后端分离,维持用户登录态一般都是采用 token 或类似的方法,前端请求接口的时候不需要携带具体的用户信息,只需要携带一个 token,后端校验 token的合法性以及通过token 获取用户信息。好了,今天的内容就分享到这里了,一个小技巧,希望对你有帮助。

2022-10-19 06:30:00 462

原创 数据脱敏,你会了吗(三)

前面的章节,我们通过正则表达式对复杂字符串中的敏感数据进行脱敏,但是我们又提到如果要对一个老系统进行这样的改造,工作量不是一般的大,而且还容易遗漏,那么有没有一种更加简便的方法呢?现在已经有许多成熟的日志框架,我们开发程序也往往是借助这些框架来输出日志,我们可以考虑对这些框架进行扩展,在输出日志之前对日志进行处理,这样不就实现了我们要的效果吗?这里指定了转换规则是使用我们刚才自定义这个类,同时需要注意的是这里的 conversionWord=“msg” 不是随意定义的,这里的。是和我们日志输出规则里的。

2022-09-22 07:00:00 645 4

原创 数据脱敏,你会了吗(二)

上节的内容我们说到了使用工具类对要出输出的数据进行掩码处理以达到保护数据的目的,上面的方法在一些简单场景都好使用,但是遇到类似最后提出的json字符串处理起来就 力有不逮 了。对于上一节提到的复杂字符串的匹配,可以使用正则表达式来处理,例如,手机号的正则是这样 (不考虑号段等问题,只认为手机号是一个11位的以 1 开头的数字字符串)我们发现,所有的敏感信息都按我们的规则进行了掩码处理。可以发现,手机号确实是已经被掩码处理了,但是身份证号也被处理了,而且处理的结果和我们预期不符,这是什么原因呢?

2022-09-20 07:00:00 1243

原创 基于 idea 将 springboot 应用部署到 docker环境

上一节我们学习了如何手动的构建镜像并最终把服务发布到 docker 环境,其实强大的 idea 已经为我们预制了这方面的支持,我们只需要几个简单的配置就可以一键把应用发布到 docker 环境。

2022-09-19 07:00:00 346

原创 数据脱敏,你会了吗(一)

数据脱敏是一种保护数据安全的技术,指对某些敏感信息通过脱敏规则进行数据转换,目的是使数据不可为第三方使用,实现敏感隐私数据的可靠保护。

2022-09-15 07:30:00 510

原创 将 springboot应用部署到 docker环境

前面季节我们学习了 mongodb 的一些基本操作,上一节我们又用 springboot 整合 mongodb 完成了一个小 demo,这节我们将从基础开始把这个 springboot 项目部署到 docker 环境。

2022-09-09 07:00:00 4206

原创 springboot 整合 mongodb

前言前面通过 5 节的内容,我们学习了 mongodb 的使用,这节我们通过学过的知识运用 springboot 整合 mongodb 搭建一个小项目。项目搭建springboot 基于 maven 项目搭建的具体过程这里就不再赘述了,首先来看下 pom 文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w

2022-09-07 06:51:10 672

原创 mongodb入门(五)

前言本机内容是关于 mongodb 学习的最后一节,经过前面4小节的学习,我相信里面的内容已经可以处理工作中 90%(保守估计) 的场景了,这节我们来了解一些 mongodb 优化的问题。索引我们知道,适合的索引对 mysql 数据查询效率的提升有非常大的作用,mongodb 也一样。1.1 查看集合的索引语法:db.集合.getIndexes();db.user.getIndexes();可以看到默认情况下,一个集合只有一个索引,字段是 _id。1.2 新建索引语法:db.use

2022-09-05 09:08:10 98

原创 mongodb入门(四)

经过前面的小节,我们已经了解了 mongodb 的大部分功能,今天这节我们来进一步挖掘 mongodb 聚合查询的功能。

2022-09-02 07:00:00 1132

原创 mongodb入门(三)

前面两节我们学习了 mongo 的一些基本操作以及多条件查询等,简单的业务拿前两节的内容组合基本已经可以实现了,但是 mongodb 的强大之处还没有体现出来,这节我们来学习 mongodb 强大的聚合查询功能。...

2022-08-31 07:00:00 271

原创 mongodb入门(二)

上一节我们分享了使用 mongodb 完成一些基础的增删改查操作,这节将分享一些 mongo 的进阶操作。

2022-08-29 07:00:00 144

原创 mongodb入门(一)

前面分享了一键搭建 mysql、redis、mongo 服务,因为笔者之前的工作中比较少接触到 mongo,以前也都是自己云服务器上搭个 demo 玩玩,但是因为实际工作中没用到,学完很快又忘记了。这次,趁着这个机会,找了一份 mongo 的资料,好好学习了一遍,发现其中还是有很多蛮有意思的东西,于是写下此文记录,以备不时之需。感兴趣的小伙伴也可以那它当个 mongo 入门案例,快速入门 mongodb。

2022-08-26 07:00:00 375

原创 搭环境太麻烦?试试一键跑个mongodb

有了前面搭建 redis、mysql 服务的经验,相信大家对类似的操作已经是轻车熟路了。这里笔者之所以选择搭建 mongo 是因为笔者在之前的工作中接触 mongodb 的机会不多,这次就顺便搭个 mongo 服务玩玩。

2022-08-25 07:00:00 360

原创 搭环境太麻烦?试试一键跑个mysql

上一节我们通过准备好的 docker 环境,使用一个 shell 脚本完成了一键搭建 redis 服务,这节我们通过同样的方式搭建一个mysql服务。

2022-08-23 07:00:00 89

原创 搭环境太麻烦?试试一键跑个redis

经过前面一节的内容,我们已经做好了前置准备工作,这里我们来认识一些docker 中常用的命令,最后我们写一个脚本实现一键起一个redis服务,妈妈再也不用担心我搭环境的问题了。

2022-08-19 06:30:00 146

原创 搭环境太麻烦?试试一键跑个redis -- 环境准备

docker部署应用基础组件环境准备

2022-08-17 06:30:00 125

原创 昨天看到一个人提了一个多线程调度问题,有兴趣的可以去尝试下

题目如下: 有线程A B C D,其中A打印A并sleep3秒;B打印B并sleep4秒,C打印C并sleep1秒,D打印D并sleep2秒。现要求A B同时执行,C,D在A B执行完之后同时执行,打印结果为A B,等4秒后再打印C D。要求:不能让C D直接sleep4秒后执行。同时符合以上预期。 昨晚下班的时候试着实现了一下,感兴趣的可以试试,明天

2022-08-12 10:43:22 113

原创 springboot 处理 filter 中抛出的异常

springboot web项目开发中,全局异常处理是一个必不可少的组件,而且springboot 本身已经对此提供了很好的支持,我们只需要一个 配合 一个 就可以很好的实现全局异常的拦截处理了。今天接到一个需求,需要对用户进行过滤,满足要求的才放行。听到这个需求,第一反应是这不是一个过滤器就搞定的事嘛,so easy! 十分钟不到,代码就出来了。然而现实狠狠滴给了我一巴掌。......

2022-07-06 15:05:31 6755 7

原创 java冷知识

各位,请听题,请阅读下面的代码:package com.info.csdndemo;import java.text.MessageFormat;public class Car { private String name; private String brand; public Car(String name, String brand) { this.brand = brand; this.name = name; }

2022-03-12 09:20:36 555

原创 设计模式 ---- 策略模式实践(二)

本來策略模式只写了上边一篇文章的,文章发出来以后经过大佬指导,代码可以更加简化,趁着今天有时间就按大佬的提示修改了一版,请各位品鉴(案例还是用上文的案例)。废话少说,直接上代码首先定义接口,接口中就只有一个方法了,即获取商品的促销价格。package com.info.examples.strategy;import java.math.BigDecimal;public interface PromoteSalesService { /** * 获取商品促销价

2022-03-02 17:20:09 279

原创 awk编程?let‘s go(八) ---- 数据处理

目录前言数据转换与归约列求和前言经过前面几节的学习,我们对 awk 的基础功能以及 awk 语言有了一定的认知,虽然前面有很大一部分属于理论的东西,l老是让我看理论,从这节开始,我们将更加深入的学习 awk。Awk 最初的设计目标是用于日常的数据处理, 例如信息查询, 数据验证, 以及数据转换与归约,所以这节我们将来学习 awk 的数据处理,利用前面学习的知识实现更加强大的功能。数据转换与归约Awk 最常用的一个功能是把数据从一种形式转换成另一种形式, 通常情况下, 是把一种程序的输出格式,

2022-02-24 07:15:00 279

原创 重学正则表达式(六)-- 习题篇

目录前言习题1. 去除字符串首尾的空格前言其实,之前没想过写这一篇的内容,只是最近发现工作的时候有时候遇到的一些需要使用正则表达式解决的问题好像并不是一下子就能写出一个正确的正则,需要多次的修改,调整,当然,这和我的正则水平不到家有很大的关系,所以就有了这篇内容,我打算把工作中遇到的一些有意思的正则表达式记录下来。可能有大佬看到这些文章,不喜勿喷,谢谢。习题1. 去除字符串首尾的空格这个需求,对于经常编程的同学来说,一个函数即可搞定,例如使用我最喜欢的大 java ,一个 trim 函数即可pu

2022-02-23 10:57:38 157

原创 awk编程?let‘s go(七) ---- 输入

目录输入输入分隔符输入为 awk 提供输入数据有若干种方式. 最常见的是把输入数据放在一个文件中。如果没有指定输入文件, awk 就从它的标准输入读取数据; 所以, 另一种常用的方法是把另一个程序的输出以管道的方式输送给 awk. 举例来说, 实用程序 egrep 从输入行中挑选具有指定正则表达式的行, 虽然 awk 也可以做同样的工作, 但是与前者相比就慢得多了. 我们可以输入命令egrep ‘Asia’ countries | awk ‘program’egrep 挑出那些含有 Asia 的

2022-02-22 07:15:00 125

原创 awk编程?let‘s go(六) ---- 输出

目录输出print 语句输出分隔符printf 语句输出到文件输出到管道关闭文件与管道输出print 与 printf 语句可以用来产生输出. print 用于产生简单的输出; printf 用于产生格式化的输出。来自 print 与 printf 的输出可以被重定向到文件, 管道与终端. 这两个语句可以混合使用。输出语句print将 $0 打印到标准输出print expression, expression, …打印各个 expression, expression 之间由 OFS

2022-02-18 07:15:00 287

原创 awk编程?let‘s go(五) ---- 动作

目录动作表达式常量变量内建变量字段变量算术运算符比较运算符自增与自减内建算术函数字符串运算符内建字符串函数表达式运算符流程控制语句delete 语句split 函数多维数组动作在一个 模式–动作 语句中, 模式决定动作什么时候执行。有时候动作会非常简单: 一条单独的打印语句或赋值语句. 在有些时候, 动作有可能是多条语句, 语句之间用换行符或分号分开。表达式表达式是最简单的语句, 大多数其他语句都是由不同类型的表达式组合而成。初等表达式是最原始的构造块: 它们包括常量, 变量, 数组引用, 函数调

2022-02-16 07:15:00 263

原创 awk编程?let‘s go(四) ---- 模式

目录前言说明程序格式模式1. BEGIN{ statements}2. END{ statements}3. expression{ statements}4. /regular expression/ { statements}5. compound pattern { statements}6. pattern1, pattern2 { statements}BEGIN 与 END将表达式用作模式字符串匹配模式复合模式范围模式前言经过前面的学习,我们对 awk 已经有了基础的认知,同时也学会了使用

2022-02-14 07:15:00 229

原创 awk编程?let‘s go(二) ---- awk的基础操作(一)

目录使用awk进行计算计数计算总和与平均数操作文本变量的存储字符串拼接打印最后一行内建函数流程控制语句If-else 语句While 语句For 语句温馨提示,本文适合有一定编程基础的人阅读。使用awk进行计算一个动作就是一个语句序列, 语句之间用分号或换行符分开。 前面已经见过只有一条单独的 print 语句的动作。 接下来的例子所包含的语句可以用来进行简单的数学或字符串计算。 在这些语句里, 不仅可以使用内建变量, 比如 NF, 还可以自己定义变量, 这些变量可以用来计算, 存储数据等。在 awk

2022-02-09 07:15:00 608

原创 awk编程?let‘s go(三) ---- awk的基础操作(二)

目录数组"一行" 实用技巧1. 输入行的总行数2. 打印第 5 行3. 打印每一个输入行的最后一个字段4. 打印最后一行的最后一个字段5. 打印字段数多于 2 个的输入行6. 打印最后一个字段值大于 4 的输入行7. 打印所有输入行的字段数的总和8. 打印包含 张三、王五 的行的数量9. 打印具有最大值的第二个字段, 以及包含它的行 (假设 $2 总是 正的)10. 打印至少包含一个字段的行11. 打印长度超过 21 个字符的行12. 在每一行的前面加上它的字段数13. 打印每一行的第 1 与第 2 个字段

2022-02-08 14:57:36 355

原创 awk编程?let‘s go(一) ---- 初识awk

目录前言快速开始AWK 程序的结构运行 AWK 程序AWK的简单的输出打印每一行打印某些字段NF, 字段的数量打印行号将文本放入输出中更精美的输字段排列BEGIN 与 END前言在学习本文之前,相信有一部分人和我之前一样,对awk的认知停留于对某个简单命令的使用。对于我们做 java 开发的,最经典的一个案例莫过于重启服务时经常看到的一个脚本#!/bin/bash# 重启xx服务ps -ef | grep application | grep -v grep | awk '{print $2}'

2022-01-29 10:00:00 345

原创 Shell脚本基础从头开始(完结篇)── 利用shell编写监控脚本以及shell操作数据库

目录前言shell编写监控邮件报警脚本shell操作数据库完结感言前言经过前面的学习,我们已经可以使用shell脚本在对应场景完成大部分的需求了,这节我将介绍另外两个shell脚本的使用场景,希望对你有帮助。shell编写监控邮件报警脚本日常工作中,服务的正常运行往往依赖很多的中间件,例如mysql、redis、mq等,这时可能就需要一些监控机制来监控中间件的运行,如果中间件出现异常能够及时反馈给相关人员,以便能快速恢复服务。一个简单的监控数据库服务脚本:#!/bin/bash# 监控数据库服

2022-01-25 15:27:28 1530

原创 Shell脚本基础从头开始(十二)── 制作一个字符菜单

目录

2021-12-28 07:00:00 865

原创 Shell脚本基础从头开始(十一)── shell的文本过滤(二)

目录sed 命令sort 命令uniq 命令split 命令sed 命令sort 命令uniq 命令split 命令

2021-12-27 07:00:00 619

原创 Shell脚本基础从头开始(十)── shell的文本过滤

目录find 命令grep命令awk命令find 命令作用: find命令主要用于查找满足某种条件的文件。语法:find 查找的起始目录 选项 查找的关键字例如:在当前目录下查找以.txt结尾的文件find . -name "*.txt"在当前目录下查找以字母A到Z开始的文件find . -name "[A-Z]*"# 或者是find -name "[A-Z]*"在当前目录下找属性为755(权限)的文件find . -perm 755在当前目录下找属主为root的文件fin

2021-12-24 07:00:00 1728

原创 Shell脚本基础从头开始(九)── shell的循环语句控制

目录前言continuebreak前言通过前面的条件判断以及循环语句的学习,我们已经可以使用shell脚本做很多事了。但是很多时候,循环语句可能需要一些特别的控制,比如说我要求 1 加到 100 偶数的和,当然,你可以使用普通的循环,把每次循环增加的值(步长)改为 2 就可以做到,这样确实可以做到。那如果我需要做这样一个需求,从一堆文件中内容里面找到某个内容,这肯定需要循环,把每个文件的内容读出来确认是不是要找的,如果我的运气特别好,读到第一个文件发现就找到了想要的内容,这时候余下的文件是不是就没必要去

2021-12-23 07:00:00 411

原创 Shell脚本基础从头开始(八)── shell的循环语句

目录前言for语句常规 for 语句for in 语句while语句前言shell的循环控制语句和其他语言类似,主要氛围 for 语句 以及 shell语句,但是shell脚本的语法和其他语法还有些不一样,相信通过前面的学习已经看出来了。循环语句主要是用来做一些需要多次执行类似事情的操作,比如我要求从 1 加到 100 的和。for语句shell脚本的for语句主要分为两种,一种是和常规语言那种,一种是for in语句,接来下我们分别看两个例子。常规 for 语句就拿上面的例子来说,求从 1 加

2021-12-22 07:00:00 404

原创 Shell脚本基础从头开始(七)── shell的流程控制

目录前言`shell`流程控制`if` 语句单条件 if 语句多条件 if 语句`case` 语句前言前面我们已经学习了shell的条件测试,回忆一下,有针对文件状态的测试,有针对整数的测试以及字符串的测试,还有逻辑测试,其实条件测试主要就是用在程序的流程控制,今天我们就来学习怎么使用条件测试来控制程序的执行流程。shell流程控制if 语句单条件 if 语句基本语法:if 条件成立(条件测试)then 做什么事(需要执行的程序)else 做什么事(需要执行的程序)fi多条件

2021-12-21 07:00:00 409

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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