自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 问答 (3)
  • 收藏
  • 关注

原创 《Head First设计模式》专栏-策略模式(鸭子的故事)

针对接口编程”真正的意思是“针对超类型(super type)编程”。“针对超类型编程”这句话,可以更明确地说成“变量的声明类型应该是超类型,通常是一个抽象类或者是一个接口,如此,只要是具体实现此超类型的类所产生的对象,都可以指定给这个变量。换句话说,如果每次新的需求一来,都会使某方面的代码发生变化,那么你就可以确定,这部分的代码需要被抽出来,和其他稳定的代码有所区分。下面是这个原则的另一种思考方式:“把会变化的部分取出并封装起来,以便以后可以轻易地改动或扩充此部分,而不影响不需要变化的其他部分”。

2023-02-25 11:17:33 196

原创 正则表达式符号详细汇总

正则表达式能便捷处理文本数据,降低字符类型原生api的繁琐调用,起初对于电话号码乃至文本替换总是会想到采用“成熟”的方案“借鉴”过来解决,编程其根本还是需要了解其底层核心逻辑,这里对正则表达式所涉及到的表达符号做汇总记录。正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

2023-01-12 10:17:20 286

原创 grpc protobuf接口文档生成插件

个人独立开发grpc protobuf api文档生成插件,开源项目,欢迎各位大佬试用,积极接纳优化建议,喜欢的大佬来个☆☆☆。

2022-12-29 17:29:11 695

原创 grpc调试工具grpcui

GRPCUI[grpcui](GitHub - fullstorydev/grpcui: An interactive web UI for gRPC, along the lines of postman)grpcurl 是一个命令行工具,允许您通过浏览器与 gRPC 服务器进行交互尽管 grpcurl 是一个命令行界面,但是 grpcui 提供了一个基于 web/浏览器的 UI。能够以交互方式构造要发送到 gRPC 服务器的请求。安装grpcuigo语言环境安装[go官网](Dow

2021-11-10 10:38:38 1291

原创 PostgreSQL批量插入/批量更新时间一致问题

情景再现批量新增用户insert into "user" (user_name, user_sex, user_password, create_time, create_by, update_time, update_by, deleted)values ('张三', 1, '123456', now(), 1, now(), 1, 0), ('宋爱梅', 0, '123456', now(), 1, now(), 1, 0),

2021-07-09 21:27:15 1382 1

原创 PostgreSQL基于SCWS、Zhparser插件全文检索环境安装

Postgresql基于SCWS、Zhparser插件全文检索环境安装提到全文检索,我们会想到Elasticsearch、Lucene等功能强大的搜索引擎,但或许我们仅需要实现一些简单的全站搜索或是字符匹配功能,此时引入Elasticsearch、Lucene搜索引擎或许过于重量,使用这些重量级的搜索引擎得需要性能强悍的服务器,还需要处理数据同步与数据一致性问题。Postgresql数据库自身具备全文检索功能,PostgreSQL全文检索是通过FTS(FTS(full text search,全文检索

2021-07-03 10:42:06 1439

原创 CentOS8安装PostgreSQL 12(详细图文教程)

官网教程[PostgreSQL: The world's most advanced open source database](https://www.postgresql.org/)选择DownloadLinux->Red Hat/CentOS安装步骤# Install the repository RPM:sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpm

2021-06-05 11:15:34 626

原创 Linux安装MySQL5.7

文章目录下载地址解压安装包移动文件夹并重命名创建mysql用户组和用户并修改权限配置my.cnf初始化查看随机密码启动mysql,并更改root 密码启动MySQL修改登录密码配置远程连接配置全局环境变量下载地址https://dev.mysql.com/downloads/mysql/5.7.html#downloads解压安装包tar -xvf mysql-5.7.26-linux-glibc2.12-x86_64.tar 移动文件夹并重命名mv mysql-5.7.26-linux

2021-05-25 17:38:46 87

原创 SpringBoot配置文件

文章目录配置文件格式配置文件与配置类的属性映射方式使用注解@ConfigurationProperties映射多环境配置配置文件格式在Spring Boot中,配置文件有两种不同的格式application.propertiesserver.port=8888server.servlet.context-path=demoapplication.ymlserver:port: 8888servlet:context-path: /demo配置文件与配置类的属性映

2021-05-25 17:38:31 102

原创 VO、DTO、DO、PO 的概念、区别和用处

文章目录VO、DTO、DO、PO 的概念、区别和用处概念模型VO 与 DTO 的区别VO 与 DTO 的应用DTO 与 DO 的区别DTO 与 DO 的应用DO 与 PO 的区别DO 与 PO 的应用VO、DTO、DO、PO 的概念、区别和用处概念VO(View Object): 视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。DTO(Data Transfer Object): 数据传输对象,这个概念来源于 J2EE 的设计模式,原来的目的是为了 EJB 的分布式应用

2021-05-25 17:37:45 658

转载 java8日期处理

文章目录java8日期处理**Java 8中获取今天的日期****Java 8中获取年、月、日信息****Java 8中处理特定日期****Java 8中判断两个日期是否相等****Java 8中检查像生日这种周期性事件****Java 8中获取当前时间****Java 8中获取当前时间****Java 8如何计算一周后的日期****Java 8计算一年前或一年后的日期****Java 8的Clock时钟类****如何用Java判断日期是早于还是晚于另一个日期****Java 8中处理时区****如何表示信

2021-05-24 09:00:44 121

原创 Mybatis必学知识点

文章目录用来循环容器的标签forEachconcat模糊查询choose (when, otherwise)标签selectKey 标签if标签if + where 的条件判断if + set实现修改语句if + trim代替where/set标签foreach用来循环容器的标签forEachforeach元素的属性主要有item,index,collection,open,separator,close。item:集合中元素迭代时的别名,index:集合中元素迭代时的索引open:常用语whe

2021-05-24 09:00:19 109

转载 Java 8 Stream API

文章目录Stream简介Stream的好处演示实例数据源FilterMapFlatMapReduceCollectOptional并发调试Stream简介Java 8引入了全新的Stream API。这里的Stream和I/O流不同,它更像具有Iterable的集合类,但行为和集合类又有所不同。stream是对集合对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作,或者大批量数据操作。只要给出需要对其包含的元素执行什么操作,比如 “过滤掉长度大于 10 的字符串”、“获取

2021-05-24 08:59:44 104

转载 十大经典排序算法(动态演示+代码)

文章目录时间、空间复杂度比较冒泡排序选择排序插入排序快速排序堆排序归并排序希尔排序计数排序桶排序基数排序时间、空间复杂度比较排序算法平均时间复杂度最差时间复杂度空间复杂度数据对象稳定性冒泡排序O(n2)O(n2)O(1)稳定选择排序O(n2)O(n2)O(1)数组不稳定、链表稳定插入排序O(n2)O(n2)O(1)稳定快速排序O(n*log2n)O(n2)O(log2n)不稳定堆排序O(n*log2n)O(n*log2

2021-05-24 08:58:07 97

原创 MySQL常用知识点汇总

文章目录mysql中的join重复数据取最新数据的问题mysql中的find_in_set函数mysql locate函数mysql datetime类型求差mysql datediff(获取两个日期的时间间隔)mysql统计一年12月份数据逗号分隔字符求交集函数正则表达式匹配字符串交集mysql中的join可查出左表所有数据select * from tb_zdxm p left join tb_zdxm_plan pl on p.id=pl.pro_id and pl.plan_year=

2021-05-24 08:57:16 95

原创 设计模式-单例模式

文章目录设计模式应用场合单例模式完整设计思想单例模式的类型饿汉式步骤懒汉式步骤设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。应用场合有些对象只需要一个就足够了如古代皇帝、老婆作用配置文件、工具类、线程池、缓存、日志对象等如果创造出多个实例,就会导致许多问题,比如占用过多资源,不一致的结果等为了保证某一个类不管怎么创建,都只在堆内存中开辟一块空间保证整个应用程序中某个实

2021-05-24 08:56:40 92

原创 mysql防止重复数据的五种方法

文章目录①唯一约束②insert ignore into③replace into④insert if not exists⑤on duplicate key update①唯一约束CREATE TABLE `login` (`id` bigint unsigned NOT NULL AUTO_INCREMENT,`name` varchar(255) DEFAULT NULL,`password` varchar(255) DEFAULT NULL,PRIMARY KEY (`id`),UN

2021-05-24 08:56:10 5856

原创 对象转换-MapStruct

一、mapstruct简介官网:https://mapstruct.org/使用场景:不同领域对象之间的转换,pojo之间的相互转化不同的转换解决方案名称描述mapstruct基于jsr269实现在编译期间生成代码,性能高,精细控制,解耦orika能够精细控制,解耦org.springframework.beans.BeanUtils体系简单易用,不能对属性进行定制处理二、mapstruct使用2.1 不适用框架的缺点多而杂的代码与

2021-05-24 07:32:21 836

转载 @Transactional注解失效场景

一、事务事务管理在系统开发中是不可缺少的一部分,Spring提供了很好事务管理机制,主要分为编程式事务和声明式事务两种。编程式事务:是指在代码中手动的管理事务的提交、回滚等操作,代码侵入性比较强,如下示例:try { //TODO something transactionManager.commit(status);} catch (Exception e) { transactionManager.rollback(status); throw new Invo

2021-05-23 18:51:25 75

原创 spring常用注解

文章目录前言不使用注解@Autowired@Qualifier(指定注入Bean的名称)@Resource@Service使用注解来构造IoC容器@Component@Controller@Service@ RepositorySpring常用注解汇总前言传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop、事物,这么做有两个缺点:如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大;如果按需求分开.xml文件,那么.xml文件又会非常多。总之这将导致配置

2021-05-23 18:43:13 66

原创 Mybatis级联查询

文章目录MyBatis一对一关联查询1)创建数据表2)创建持久化类3)创建映射文件4)创建 POJO 类5)创建数据操作接口6)调用接口方法及测试Mybatis一对多关联查询1)创建数据表2)创建持久化类3)创建映射文件4)创建 POJO 类5)创建数据操作接口6)调用接口方法及测试MyBatis多对多关联查询1)创建数据表2)创建持久化类3)创建映射文件4)创建 POJO 类5)添加数据操作接口方法6)调用接口方法及测试MyBatis一对一关联查询一对一级联关系在现实生活中是十分常见的,例如一个大学生

2021-05-23 18:41:25 385

原创 设计模式-责任链模式

文章目录简介优点缺点销售团队的小例子代码实现责任链模式的应用简介在责任链模式中,作为请求接收者的多个对象通过对其后继的引用而连接起来形成一条链。请求在这条链上传递,直到链上某一个接收者处理这个请求。每个接收者都可以选择自行处理请求或是向后继传递请求。Handler为一个抽象接口【广义概念,并非单纯接口,抽象类、接口】优点发出请求的客户端并不知道链上的哪一个接收者会处理这个请求,从而实现了客户端和接收者这件的解耦。责任链模式转训OO中的开闭原则开闭原则:对扩展开放,对变更

2021-05-23 18:33:02 67

原创 设计模式-模板方法模式

模板方法模式的实现要素抽象基类提供基本的实现方法,具有共性的方法抽象方法,不知道具体实现的方法,由子类进行具体实现可选钩子函数,基类中提供默认或空实现Template方法(final),将所有方法汇总而成的模板方法好莱坞原则:子类可以替换掉父类可变逻辑,但不能改变整体逻辑具体子类实现基类中的抽象方法,提供具体的,个性化的实现可选的覆盖钩子函数,个性化的影响局部行为总结准备一个抽象类,将部分逻辑以具体方法的形式实现,然后声明一些抽象方法交由子类实现剩余逻辑,用钩

2021-05-23 17:20:19 73

原创 SQL语法优化方法及实例详解

MySQL执行策略使用复合索引select *from table1where column1 = value1 and column2 = value2 and column3 = value3;如果经常执行如上查询,那么建立三个单独索引不如建立一个复合索引,因为三个单独索引通常数据库每次执行只能使用其中一个,虽然这样比不使用索引而进行全表扫描提高了很多效率,但使用复合索引因为索引本身就对应到三个字段上的,效率会有更大提升。那么为什么数据库只支持一条查询语句只使用一个索引?简单的讲

2021-05-23 17:18:09 193

原创 异步编程-CompletableFuture

异步编程所谓异步其实就是实现一个无需等待被调用函数的返回值而让操作继续运行的方法创建任务并执行任务无参创建 CompletableFuture<String> noArgsFuture = new CompletableFuture<>();传入相应任务,无返回值runAsync方法可以在后台执行异步计算,但是此时并没有返回值。持有一个Runnable对象。CompletableFuture noReturn = CompletableFuture.runAsyn

2021-05-23 17:13:24 1027

原创 Springboot Redis消息队列

Redis listRedis 的 list(列表) 数据结构常用来作为异步消息队列使用,使用rpush/lpush操作入队列,使用 lpop和 rpop来出队列。rpushRPUSH key value [value …]将一个或多个值 value 插入到列表 key 的表尾(最右边)。如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表尾:比如对一个空列表 mylist 执行 RPUSH mylist a b c ,得出的结果列表为 a b c ,等同于执行命令

2021-05-23 16:57:24 751

原创 Java文件写入的六种方式

在 Java 中操作文件的方法本质上只有两种:字符流和字节流,而字节流和字符流的实现类又有很多,因此在文件写入时我们就可以选择各种各样的类来实现。流Java 中的“流”是一种抽象的概念,也是一种比喻,就好比水流一样,水流是从一端流向另一端的,而在 Java 中的“水流”就是数据,数据会从一端“流向”另一端。根据流的方向性,可以将流分为输入流和输出流,当程序需要从数据源中读入数据的时候就会开启一个输入流,相反,写出数据到某个数据源目的地的时候也会开启一个输出流,数据源可以是文件、内存或者网络等。字节流

2021-05-23 16:55:25 2845

转载 SpringBoot解决跨域问题

一、什么是跨域访问说到跨域访问,必须先解释一个名词:同源策略。所谓同源策略就是在浏览器端出于安全考量,向服务端发起请求必须满足:协议相同、Host(ip)相同、端口相同的条件,否则访问将被禁止,该访问也就被称为跨域访问。虽然跨域访问被禁止之后,可以在一定程度上提高了应用的安全性,但也为开发带来了一定的麻烦。比如:我们开发一个前后端分离的易用,页面及js部署在一个主机的nginx服务中,后端接口部署在一个tomcat应用容器中,当前端向后端发起请求的时候一定是不符合同源策略的,也就无法访问。二、跨域访问

2021-05-23 16:52:16 426

原创 Springboot @Cacheable自定义缓存过期时间

文章目录pomymlRedisConfigCustomRedisCacheManager使用pom<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency> <groupId

2020-12-17 22:51:35 2581 5

原创 设计模式之【代理模式】详解

文章目录代理模式概念常见的代理模式静态代理代码实现普通方式采用继承方式实现静态代理采用聚合方式实现静态代理聚合比继承更适合代理模式采用继承方式实现功能叠加JDK动态代理代理模式-动态代理动态代理类图代码实现JDK动态代理总结CGLIB动态代理JDK动态代理和CGLIB动态代理代码实现代理模式概念为其他对象提供-种代理,以控制对这个对象的访问为其他对象提供一种代理以控制对这个对象的访问。代理对象起到中介作用,可去掉功能服务或增加额外的服务。常见的代理模式虚拟代理根据需要将资源消耗很大的

2020-07-21 21:44:47 177

原创 Springboot AMR格式音频转换MP3

文章目录html5中audio支持音频格式Java AMR格式音频转MP3html5中audio支持音频格式HTML5 Audio标签能够支持wav, mp3, ogg, acc, webm等格式但有个很重要的音乐文件格式amr(扩展名amr)却在各大浏览器中都没有内置的支持。音频格式ChromeFirefoxIE9OperaSafariOGG支持支持支持不支持不支持MP3支持不支持支持不支持支持WAV不支持支持不支持支

2020-07-18 21:33:12 846

原创 简洁 RESTful API 设计规范

文章目录URL设计动词+宾语动词的覆盖宾语必须是名词复数 URL避免多级 URL状态码状态码必须精确2XX状态码3xx 状态码4xx 状态码5xx 状态码服务器回应不要返回纯本文发生错误时,不要返回 200 状态码提供链接URL设计动词+宾语RESTful的核心思想就是,客户端发出的数据+操作指令都是“动词+宾语”的结构,比如GET /articles这个命令,GET是动词,/articles是宾语,动词通常就有5种HTTP请求方法,对应CRUD操作,根据 HTTP 规范,动词一律大写。# GET:

2020-07-18 21:25:28 130

原创 企业级开发框架Spring

目录Spring概述Spring体系结构Spring概述  Spring 是最受欢迎的企业级 Java 应用程序开发框架,数以百万的来自世界各地的开发人员使用 Spring 框架来创建性能好、易于测试、可重用的代码。  Spring 框架是一个开源的 Java 平台,它最初是由 Rod Johnson 编写的,并且于 2003 年 6 月首次在 Apache 2.0 许可下发布。...

2019-11-04 11:44:29 490

空空如也

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

TA关注的人

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