自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 我花了10分钟让AI总结的20种ChatGPT玩法

ChatGPT大火之后,相信大家也都见识过它的强大之处,本文的方向也很简单,通过询问ChatGPT自身,让ChatGPT来给出你可以借助他去做的20件事情,发散以下思维;至此,一遍文章也就出来了,从我写下标题到现在,用了不到10分钟,这20种玩法都是让他自己阐述出来的,实际还会有更多的玩法,本文只是举个例子。以下的内容生成,使用的是Bito插件,强烈推荐大家去装一下,简直不要太好用!还是那句话,主要提问的艺术,引导的方式,引导的好,起到的效果往往是事半功倍的。⚠️ 还是那句话,注意去引导。

2023-05-26 15:40:51 408

原创 分享两个实用的shell脚本

各位,早上好啊~ 发现许久没有分享过技术文章了,今天分享两个部署项目时候比较实用的shell脚本一键部署shell脚本由于个人部署,会习惯把jar放到lib目录下面,如果你没有这个习惯,可以适当做一些修改。该脚本提供了一键启动、停止、重启、检查操作#!/bin/bash#这里可替换为你自己的执行程序,其他代码无需更改cd ../lib/jar_path=`pwd`APP_NAME=`ls -al *.jar | awk '{print $9}'`#使用说明,用来提示输入参数usage

2022-04-23 11:19:59 298

原创 书写高质量sql的一些建议

It’s better to light a candle than to curse the darkness老生常谈的不要使用select *如果硬要使用select *,那么就请忍受一下以下几种可能会出现的问题select * 每次都把所有的字段查询出来,但并不是每个字段都是必要的,会造成额外的传输带宽资源,性能不可取在完成分析之后,MySql会进行优化,也就是选择执行效率最高的(Mysql自己认为的,但并不一定是最优),使用select * 会阻碍优化器选择更优的执行计划,比如走索.

2022-02-18 11:43:43 329

原创 利用拦截器加缓存完成接口防刷操作

One person walks fast, but a group of people can go further为什么需要接口防刷为了减缓服务器压力,将服务器资源留待给有价值的请求,防止恶意访问,一般的程序都会有接口防刷设置,接下来介绍一种简单灵活的接口防刷操作技术解析主要采用的技术还是拦截+缓存,我们可以通过自定义注解,将需要防刷的接口给标记出来管理,利用缓存统计指定时间区间里,具体的某个ip访问某个接口的频率,如果超过某个阈值,就让他进一会儿小黑屋,到期自动解放主要代码前置环境.

2022-02-16 14:08:24 533

原创 如何优雅的定义统一响应对象

Hope is being able to see there is light despite all of the darkness目前主流开发方式都是前后端分离的,定义一种通用统一的返回格式,在前后端进行沟通时是非常有必要的,大家基于这个约定去理解,出现问题能够快速定位,接下来就介绍一下如何优雅定义统一响应对象设计统一响应对象定义一个统一响应对象,这个对象需要完成的事情有有一个响应状态码有一个响应消息串有一个泛型的数据携带体还可以定义一个方法,用来标识当前对象传递是否出错以下是.

2022-02-14 07:28:34 261

原创 介绍几个好用的工具类

The end is also the new beginning最近真的是忙的飞起啊!!年前还得更新一个版本,啊难受啊…趁今天有空,上来冒个泡????好,入正题,今天介绍几个非常实用的工具类,可以减少我们重复造轮子,专注于具体的业务编写,提升生产效率,如果你还没有使用过这些工具类,强烈推荐去使用一下,你会发现代码清爽很多1.apache-commons-lang3相信大家在写代码的时候都会遇到,需要对字符串进行各种操作,例如判断是否为空,判断字符串是否全大/小写,是否包含某个字符串,是否以某个前

2022-01-09 20:48:34 679

原创 利用docker-compose一键部署

利用docker-compose一键部署文章目录利用docker-compose一键部署前言快速编写微服务common-apinacos-server-providernacos-server-consumer编写docker-compose文件common-api的Dockerfilenacos-server-provider的Dockerfilenacos-server-consumer的Dockerfile编写docker-compose.yml文件开始部署取消部署总结The ultimate

2021-12-15 18:20:46 1198

原创 Java SPI机制,你了解过吗?

Life moves pretty fast,if you don’t stop and look around once in a while,you will miss it为什么需要SPI?思考一个场景,我们封装了一套服务,别人通过引入我们写好的包,就可以使用这些接口API,完成相应的操作,这本来没有什么问题,但是会存在使用该服务的实体有不相同的业务需求,需要进一步的扩展,但是由于api是写好的,想要扩展并非那么的简单,如果存在这样子的场景,我们该怎么办?可以使用Java 提供的SPI机制.

2021-12-10 10:07:18 218

原创 【设计模式】汉堡中的设计模式——策略模式

【设计模式】汉堡中的设计模式——策略模式文章目录【设计模式】汉堡中的设计模式——策略模式每章一句前言情景带入开始分析策略模式尝试编码如果我要新添加一种形式呢?策略模式的优点策略模式的局限解决局限性问题简单工厂+策略模式解决客户端大量if-else情况枚举策略方式总结每章一句Yesterday home runs don’t win today games前言哈喽,大家好,今天要分享的知识点是关于策略模式的使用,观看本文章可能需要耗费【8】分钟,通过本文,你可以认识到以下几个知识点什么是策

2021-12-03 13:12:50 420

原创 Linux开发中常用的命令

总结一下日常开发中常用的Linux命令忘记命令怎么使用了可以使用man指令来,例如 man ps ;man grep;基础使用1、进入目录 命令 --> cd /xxx# 例子cd /home/user 进入到home/user目录2、查看自己所在路径 --> pwd# 例子 我们在/home/user下执行pwd命令pwd3、我想看看这个文件的内容直接查看文件内容(cat)# cat命令分段查看文件内容(more)# more命令敲回车或者空格,

2021-11-29 10:18:16 1010

原创 【实战】利用多线程优化查询百万级数据

优化查询百万级数据前言日常开发中,难免会遇到需要查询到数据库所有记录的业务场景,在索引完善的情况下,当数据量达到百万级别或者以上的时候,全表查询就需要耗费不少的时间,这时候我们可以从以下几个方向着手优化优化sql利用多线程查询分库分表今天就来讨论一下使用【优化sql】和【多线程】方式提升全表查询效率⚠️注意,这只是简单测试,用于讲解思路,真实情况会更加的复杂,效率可能会相对受到影响,而且也会受硬件配置的影响,所以不是绝对的前置准备使用InnoDb作为执行引擎创

2021-11-19 20:58:52 5691 6

原创 【设计模式】汉堡中的设计模式——观察者模式

【设计模式】汉堡中的设计模式——观察者模式文章目录【设计模式】汉堡中的设计模式——观察者模式情景带入为什么关注公众号就可以发布者-订阅者模式与观察者模式观察者模式(Observer)发布-订阅模式(Publisher-Subscriber)观察者模式的落地实现总结情景带入对于爱吃麦当劳的我来说,自然是不想错过各种动态,可是我又不可能【无时无刻】的蹲在店里等新品吧(还是要搬砖的)那么有没有一种好的方法,在麦当劳【推出新品或发布动态】的时候,我能及时收到通知?或许有人会说,你把麦当劳内部员工要一下微

2021-11-16 00:22:17 361

原创 Java中的重载与重写

关于Java中的重载与重写,每一个java人肯定都学习过,这里就再梳理一遍,加深一下印象,忘记的时候拿出来看一看就好了重载与重写的区别重载发生在同一个类里面,同一个方法,拥有不同的参数列表,不同的返回值类型;可以有不同的访问权限重写发生在子类上,也是针对同一个方法,只不过参数列表和顺序必须与父类完全一致,返回值类型小于等于父类,抛出的异常也要小于父类,访问修饰符要大于等于父类方法的重写要遵循两同两小一大,解释一下两同,代表方法名和参数列表相同两小,代表返回值类型、抛异常的范围要小于或者等于.

2021-11-13 23:20:17 382

原创 String s1 = new String(“abc“) 会创建多少个字符串对象?

4.String s1 = new String(“abc”); 这句代码会创建多少个字符串对象?答案是创建 一个或者两个创建一个的情况:字符串常量池中已经存在字符串abc,就不再需要在这里创建了,直接在堆中创建对象创建两个的情况:字符串常量池中不存在字符串abc,就需要在字符串常量池和堆中都创建对象...

2021-11-11 18:54:42 659

原创 Java中Future模式的使用

文章目录前言能不能再快点落地一下**按照顺序的思想执行**按照异步的思想执行异步的思想今天的猪脚,jdk中的Future模式总结前言今天是1024,祝各位老板节日快乐!傍晚打算下楼买点吃的,心中打定了注意,今晚要买【鸡蛋仔】和【手抓饼】,好家伙,这不素材就有了嘛,嘿嘿嘿!于是我便迈着“六亲不认”的步伐出发了…能不能再快点❓路上,我思考了一个问题。那就是我到底需要耗费多长时间,才能握住简单的快乐?按照流程是这样子的骑着我心爱的小摩托出发到达买鸡蛋仔的摊位,点一份鸡蛋仔,然后等老板做完

2021-10-24 23:17:54 2332 2

原创 【设计模式】汉堡中的设计模式——模板方法

艺术来源于生活,有时候灵感真的就在那么一瞬间看到上图这个板烧没有,这就是我今晚的晚餐了;走进麦当劳里面,有很多很多的汉堡板烧鸡腿堡、麦辣鸡腿堡、麦香堡、深海鳕鱼堡…这些个汉堡的制作方式,似乎有着一种很明显的相似感,汉堡的制作方式非常像之前学习过的一种设计模式,今天我们就来聊一聊我们不妨更加仔细的思考一下上面的问题我要做一个【板烧鸡腿堡】取出两块面包,烤热放上烤热的腌制好的鸡腿肉,撒上独特的酱汁撒上蔬菜组合成汉堡装在纸袋里面我要做一个【麦辣鸡腿堡】取出两块面包,烤热放上炸

2021-09-24 19:17:33 308

原创 每日一记:关于Arrays.asList和Collections.unmodifiableList的一点理解

每日一记:关于Arrays.asList和Collections.unmodifiableList的一点理解1、正常创建一个List,对List进行操作List<Integer> collect = Stream.of(1 ,3 ,5 ,7 ,9).collect(Collectors.toList()); //第一位改变为9 collect.set(0, 9); //尾部插入一个值 collect.add(99); collect.forEach(System.out:

2021-09-08 18:44:33 315

原创 加密配置文件里的敏感数据

加密配置文件里面的敏感数据项目开发的时候,需要把数据存放到指定的数据库中(例如MySql、Oracle等),还有会使用缓存数据库提升性能的。连接数据库相关的信息一般都是存放在配置文件里面,spring boot会帮我们注入到具体的对象里面。但是如果配置文件里面相关的敏感信息是以【明文】的方式存储,那么就会存在安全隐患今天偶然想起是不是可以把敏感信息加密起来,然后写到配置文件里面,结果一搜,还真的有,特此记录一下!通用步骤(引入相关依赖)<dependency> <gro

2021-04-18 12:03:09 285

原创 实战: elasticsearch7.6.1版本+jsoup爬取京东商品数据并使用

实战: elasticsearch7.6.1版本+jsoup爬取京东商品数据并使用前言本文的实战需求是:从京东网页上拉去对应【关键字】的数据且存放到elasticsearch(以下简称es)中,然后通过Java操作es进行精准、分页、高亮搜索【注意】:没有了解es的,建议先去了解es的基本使用本文是基于对【狂神说Java】ElasticSearch7.6.x最新完整教程通俗易懂 课程的一个总结和分享,感兴趣的朋友可以到bilibili搜索狂神说Java;https://www.bilibili.

2021-04-16 16:45:06 295

原创 @RequestParam,@RequestBody,@ResponseBody,@PathVariable注解的一点小总结

@RequestParam,@RequestBody,@ResponseBody,@PathVariable注解的一点小总结一、前提知识:http协议规定一次请求对应一次响应,根据不同的请求方式,请求的内容会有所不同;发送GET请求是没有请求体的,参数会直接拼接保留到url后一并发送;而POST请求是带有请求体的,带着请求体一并发送,每次请求请求体只会有一个;二、注解介绍@RequestParam注解:将返回到后端的请求参数绑定到控制器方法参数,该注解有两个需要了解的属性一个是requ

2020-09-26 17:09:22 411

原创 Java8——Stream流式操作的一点小总结

Java8——Stream流式操作的一点小总结我发现,自从我学了Stream流式操作之后,工作中使用到的频率还是挺高的,因为stream配合着lambda表达式或者双冒号(::)使用真的是优雅到了极致!今天就简单分(搬)享(运)一下我对stream流式操作的一点理解一、什么是流式操作?或者准确的说什么是“流”​ 所谓艺术来源于生活,所以不妨从一个生活中小例子展开说明一下。​ 通过组词,流可以组成流动,流水,流经,流进流出… 这些描述的都是一种状态,是一种“运动”中的状态,更加通俗的讲,流水线。以

2020-09-13 15:26:00 262

2023MySql高频面试题总结

学好mysql对于管理和分析数据非常重要。首先,mysql是一种开源的关系型数据库管理系统,具有高稳定性和安全性,可以广泛应用于企业级应用和网站中。通过学习mysql,你可以更好地理解和管理企业数据。其次,在现代企业中,数据变得越来越重要。mysql可以帮助你有效地管理数据并进行数据分析。学习mysql可以帮助你使用SQL语言对数据进行查询、筛选、排序和汇总,并提取有价值的信息。最后,mysql技能是很多职业岗位需要的技能之一,在很多行业中,数据库管理和数据分析人才需求较大,具有mysql技能可以增加你的就业机会。总之,学好mysql可以使你在管理和分析数据方面更加高效、准确,也可以提高你的工作竞争力。 本文列举了20个Mysql高频考点,希望可以助你一臂之力

2023-05-30

Java各种锁的使用方式及其对比

Java中使用锁是为了在多线程程序中保证同步访问共享资源的正确性和一致性。在多线程环境下,多个线程可以同时访问共享资源,这可能导致数据的不一致性和错误的结果。例如,如果两个线程同时更新同一个变量,那么可能会出现竞争条件的问题,导致数据错误或者程序崩溃。 Java提供了多种类型的锁,包括 `synchronized` 块,可重入锁,读写锁和印章锁等。这些锁可以用来控制对共享资源的访问,从而保证数据一致性和线程安全。 在程序中使用锁需要注意锁定的粒度和时长,过大的锁粒度或过长的锁时间可能会导致性能问题。因此,在编写并发程序时,需要根据实际情况选择合适的锁类型并合理使用锁,以充分发挥多线程程序的性能优势。

2023-05-29

20种ChatGPT玩法.pdf

ChatGPT大火之后,相信大家也都见识过它的强大之处,本文的方向也很简单,通过询问ChatGPT自身,让ChatGPT来给出你可以借助他去做的20件事情,发散一下思维; 以下的内容生成,使用的是Bito插件,强烈推荐大家去装一下,简直不要太好用!! 还是那句话,注意去引导

2023-05-26

Java利用spring aop进行监测方法执行耗时

使用 Spring AOP 进行方法耗时监测的好处有以下几点: 1. 代码实现简单,易于维护:使用 Spring AOP 可以将耗时监测的逻辑与业务逻辑进行解耦,避免业务逻辑代码的冗余和代码维护难度的提高。 2. 安全性高:使用 Spring AOP 进行方法耗时监测,可以在不修改业务逻辑代码的情况下,对业务方法进行耗时监测;避免了因为在业务代码中加入计时逻辑而导致的安全风险。 3. 可扩展性强:使用 Spring AOP 进行方法耗时监测,可以方便的对其他的切面进行扩展,例如:日志、异常处理、权限控制等切面。 4. 提高系统性能:通过对系统中的方法进行耗时监测,可以及时发现系统中的性能瓶颈,从而进行优化;避免了因为性能问题导致的系统运行效率低下和用户体验差的情况。

2023-05-25

Java商城毕业设计源码(涵数据库表设计)

钱到碗里来商城是一个由Java编写,集合Spring+SpringMVC+Mybatis等技术的毕设项目,前端渲染页面选择了JSP,编写代码的适合考虑到了安全性、扩展性和优雅程度, 源代码理解非常简单,注释写的也很明确,非常适合做学习参考

2023-05-22

Java九九乘法表优化例子

九九乘法表大家都会写,但是除了传统的写法之外,还有没有更加好的写法呢?性能才是我们需要考虑的,以下的例子就是一个优化后的九九乘法表

2023-05-21

Java实现简单LRU缓存算法

这里的LRUCache类维护了一个双向链表和一个哈希表,用于实现LRU算法。具体实现细节如下: - get方法:首先在哈希表中查找对应的键值对,如果不存在,则返回-1;如果存在,则将对应的节点从双向链表中删除,并将其添加到链表头部。最后返回节点的值。 - put方法:首先在哈希表中查找对应的键值对,如果存在,则将该节点的值更新,并将其从双向链表中删除并添加到链表头部;如果不存在,则判断当前链表是否已满(达到容量上限),如果是,则删除链表尾部的节点并在哈希表中删除对应的键值对;然后创建一个新的节点,并将其添加到链表头部和哈希表中。 - addNode方法:将新节点添加到链表头部。 - removeNode方法:从链表中删除指定节点。 - Node类:表示双向链表中的节点,包含了键值对、前驱节点和后继节点。 另外,需要注意哈希表和双向链表的一致性维护。在put方法中,当新建节点或者更新节点时,都需要更新哈希表中的键值对,并将节点添加到链表头部;同样,在删除节点时,也需要从哈希表中删除对应的键值对。

2023-05-20

利用Java手写一个布隆过滤器Bloom Filter

布隆过滤器是一种数据结构,主要用于判断一个元素是否可能在一个集合中存在。它可以在插入和查询数据时快速地判断一个元素是否可能在这个集合中,比如在缓存中查询一个元素是否存在。 它的原理是使用多个哈希函数对元素进行哈希,然后将哈希值映射到一个位数组中的多个位置上。当查询一个元素时,它会通过哈希函数得到多个哈希值,并检查这些哈希值对应的位数组上的值是否都为1。如果都为1,则认为这个元素可能存在于集合中;如果有一个为0,则认为这个元素一定不存在于集合中。 由于哈希函数的特殊性,可能会出现误判的情况。即使元素不存在于集合中,也有可能所有哈希值对应的位数组上都是1,导致误判。但是,误判的概率可以通过调整哈希函数的个数和位数组的大小来控制,可以在不增加太多空间开销的情况下,大大提高查询效率。 本例子给出使用多个seed作为计算质数,大大减低误判的情况,推荐给大家参考

2023-05-19

elasticsearch7.6.1版本+jsoup爬取京东商品数据并使用

Java+spring boot+elasticsearch爬取网站数据写到es中,再从es中根据关键字搜索的简单例子

2023-05-18

Java策略模式的使用(枚举策略与简单工厂策略)

后端同学在开发过程中,势必会遇到多条件判断的情况,大部分时候都会直接采用if-else的形式去处理,这样的操作会存在不易扩展的问题,那么如何解决这个问题呢? 这里给出策略模式的例子,以汉堡打折为原型设计,存在优惠券、买一送一、打折、免费等场景的时候,该如何精简代码? 对比枚举策略与简单工厂+策略模式的不同使用,抛砖引玉,引发你更多的思考

2023-05-18

Java高级玩法-SPI的基本使用

为什么需要SPI? 思考一个场景,我们封装了一套服务,别人通过引入我们写好的包,就可以使用这些接口API,完成相应的操作,这本来没有什么问题,但是会存在使用该服务的实体有不相同的业务需求,需要进一步的扩展,但是由于api是写好的,想要扩展并非那么的简单,如果存在这样子的场景,我们该怎么办? 可以使用Java 提供的SPI机制 什么是SPI?SPI和API的区别 SPI SPI的全称是Service Provider Interface,是Java提供的可用于第三方实现和扩展的机制,通过该机制,我们可以实现解耦,SPI接口方负责定义和提供默认实现,SPI调用方可以按需扩展 API的全称是Application Programming Interface,广义上来看就是接口,负责程序与程序之间进行协作的通道,就好比上面给的例子,【我们封装好了一套服务,通过API的形式提供给他人使用,别人使用API就能得到想要的】 所以他们俩的区别就很明显了,API的调用方只能依赖使用提供方的实现,SPI就如同可定制化的API一样,调用方可以自定义实现替换API提供的默认实现 此处为SPI基础例子

2023-05-18

Java利用注解进行接口防刷操作

接口防刷是后端同学都必须了解的,本例子通过集合注解和拦截器的方式进行接口防刷控制,通过注解的形式,标记要防刷的接口,具体的限制次数可通过属性进行配置,灵活方便

2023-05-17

Java多线程优化百万级数据

通过实例给出利用Java多线程优化读取数据库百万级别数据

2023-05-17

空空如也

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

TA关注的人

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