自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2023最新!QQ接入ChatGpt!!!保姆级教程

直接先上gitee!!!由于当前chatgpt热度不断,网上众多的基于chatgpt提供的api做到chat网站层出不穷,但这些网址每次都得找,有些麻烦,我就在想能不能直接QQ接入chatgpt,想法一出,开始找资料开干!

2023-04-25 20:27:33 6617 1

原创 常见排序算法——冒泡排序,插入排序,希尔排序,归并排序,选择排序,快速排序

本文主要收集整理了一下自己学习的思路,借鉴了一些优秀博主对其的理解。

2023-03-16 19:46:48 526

原创 Spring-自己简单实现@Bean注解和@Autowired

比如转移交给了IoC容器,它就是一个专门用来创建对象的工厂,你要什么对象,它就给你什么对象,有了 IoC容器,依赖关系就变了,原先的依赖关系就没了,它们都依赖IoC容器了,通过IoC容器来建立它们之间的关系。1.我们肯定是通过ApplicationContext.getBean()来获取对象实例,所以我们得仿写这样一个接口,实现这个getBean()方法。要自己手写实现@Bean注解和@Autowired注解,其实我们就是简单实现一下Spring Ioc。实现@Be注解(仿@Bean)

2023-03-03 15:16:17 360

原创 Redis实现关注取消关注,展示共同关注及Feed流

关注这个业务是用户之间的,一个用户可以关注多个用户,所以,他们的关系是多对多的,对于多对多的关系,我们需要用一张中间表来维系他们的关系,所以,它的表结构为:这样,关注和取消关注的基本流程就清晰了,但是,这样我们怎么知道哪些是共同关注的呢?思路:就是找出我关注的人,和另一个people关注的人,然后找一个交集,这样不就可以实现了吗?那么全部用数据库来实现,方便吗?纯数据库:两个select找,再判断交集,这样显然是低效和缓慢的所以,我们用redis来进行优化。

2022-12-01 09:53:41 944

原创 使用Redis实现点赞和生成根据点赞时间的点赞排行榜

对于点赞,我们将每次点赞者都存放在redis中的set集合中,这样每次有人进行点赞请求,我们事先判断它是否在redis中有,如果有就是已经点赞了的,则直接结束

2022-11-30 16:21:43 609

原创 带你了解代理模式中的静态代理和动态代理以及cgilib代理^_^

在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。或者特定的工具自动生成源代码在对其进行编译,举个简单例子:猪八戒去找高翠兰结果是孙悟空变的,可以这样理解:把高翠兰的外貌抽象出来,高翠兰本人和孙悟空都实现了这个接口,猪八戒访问高翠兰的时候看不出来这个是孙悟空,所以说孙悟空是高翠兰代理类。

2022-11-29 20:33:29 290

原创 黑马点评项目——通过redis实现异步秒杀

未优化前,业务按照步骤依次执行,所需要的时间是所有业务时间之和,这样做的话,原本那些比如判断秒杀库存,校验一人一单的操作就会等待,直到之前的业务流程走到它时,才开始执行,这样也就会使得整个流程执行时间变长,影响体验。所以,我们优化的思路就是,

2022-11-27 16:50:59 343

原创 Java设计模式——装饰器模式

装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。具体主体:ConcreteComponent(如果具体主体太多可以再多设计一层抽象类来做缓冲),采用装饰器模式动态的添加功能。,它是作为现有的类的一个包装。抽象装饰者:Decorator。

2022-11-24 11:19:45 117

原创 秒杀项目下的各种并发情况解决

、抢购逻辑:在高并发的情况下,多个线程可能会同时拿到数据库中的值,每个线程减一,但同时写入数据库的话,抢了三件,但实际是数据库中数量减一,这时不可取的。

2022-11-23 19:44:22 288

原创 你真的了解MySQL的事务隔离机制吗?

事务(transaction),在数据库中指的是一组逻辑操作,这么操作要么全部执行,要么全部不执行。一个事务就是一个单位,不可分隔。总结来说,事务是由事务开始到结束所有的数据库操作组成。

2022-11-23 11:35:12 186

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

1。实现了抽象和实现部分的分离,从而极大的提供了系统的灵活性,让抽象部分和实现部分独立开,有助于系统进行分层设计,从而产生更好的结构化系统2.对于系统的高层部分,只需要知道抽象部分和实现部分的接口就可以了,其他的部分由具体业务来完成3.桥接模式替代多层继承方案,可以减少子类的个数,降低系统的管理和维护成本4.桥接模式的引入增加了系统的理解和设计难度,由于聚合关系建立在抽象层,要求开发者针对抽象进行设计和编程。

2022-11-23 10:59:00 358

原创 Redis实现全局唯一id

这样好像说的对,但是这样如果数据量一大,你用long型,最多也就2^64个不一样的数,平常可能够用,但对大项目来说,这显然有点不够了,同时,这种数又容易被猜测,知道了一个,下一个也就知道了,不安全,所以,这种方案适合小业务,同时又不是很重要的业务来使用。在数据库中,对于mybatis-plus,它自带了雪花算法生成id的工具包来为我们使用,并生成唯一id。ID是一个唯一标识,在业务开发中,我们要保证ID是唯一的,不容易猜测的。既然我们不导这样的工具包,那我们自己写一个这样的工具包,总可以吧!

2022-11-20 14:59:59 368

原创 设计模式——适配器模式

什么是适配器呢?很简单,就是当我们出去旅游时,充电器有不同的型号插座,国标,美标,欧标,当我们要在外带的是国标的充电器,但插座是欧标的,为了充电,没办法一定要用这个插座,这时该怎么办呢?土豪做法:直接买新的,哈哈哈,这种做法显然是最可行的,那不是每个人都是土豪,那么,我们就只能用个转接头,这样我们就可以使用这个插座了。这么说还是有点抽象,我们逐一举例子写代码帮助理解下面我们设计一个场景。

2022-11-19 20:37:19 129

原创 优雅使用函数式编程实现先查redis,再查数据库

优雅的实现了先查redis再查数据库,以后根据业务需求,自己传入相应的业务查询方法,和各种参数值即可!新手小白,还望指教!

2022-11-18 11:38:07 870

原创 Redis缓存及缓存更新,缓存穿透,缓存雪崩,缓存击穿具体解决方案

缓存就是数据交换的缓冲区,是临时储存数据的地方,读写性能高。

2022-11-17 20:50:03 364

原创 黑马点评项目——redis短信登录功能

2.通过手机号封装Key,在redis中查找是否存在如果有就不再执行发送操作,避免多次发送。第一个拦截器用来刷新token,第二个拦截器对登录状态进行判断,拦截。有就直接登录,没有就给他创建一个保存到数据库,再返回登录状态。刷新,判断请求头是否有token,没有就让登录拦截器拦截就行。判断redis中是否有用户信息,没有就让登录拦截器拦截就行。4.在redis中保存脱敏用户数据,用来校验登录。4.将验证码设置过期时间保存到redis。3.根据手机号查询用户,判断是否有用户。1.获取手机号,判断其合法性。

2022-11-16 22:03:58 380

原创 自定义注解及反射

注解是一种能被添加到java源代码中的元数据,方法、类、参数和包都可以用注解来修饰。注解可以看作是一种特殊的标记,可以用在方法、类、参数和包上,source:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃;class:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期。表明使用了@Inherited注解的注解,所标记的类的子类也会拥有这个注解。ElementType.TYPE:允许被修饰的注解作用在类、接口和枚举上。

2022-11-16 16:57:10 290

原创 springboot整合redis

spring-data-redis它是可以对redistemple进行自定义的,这样我们就可以对Redistemple进行自定义的序列化规则@Bean{// 使用StringRedisSerializer来序列化和反序列化redis的key值// 值用Json来进行序列化value值// Hash的key也采用StringRedisSerializer的序列化方式}我们可以将对象Json序列化,进行存储,但是,这样有什么缺点呢?

2022-11-16 11:10:20 1093

原创 spring二刷----@Bean注解

在spring中,@Bean主要在@Configuration标记的配置类中去注入一些我们所需要的对象,将这些对象交给spring来管理。其实就是代表@Bean所标注的对象的实例化依赖于参数中的类,需要先。从容器中的bean默认是单例模式//singleton单例饿汉式。同时@Bean修饰的方法,如果有参数,这种情况是怎么样的呢?也就是说,容器中必须得有参数中的类。和xml配置中的bean标签的作用是一样的。这样每次从容器中拿到的对象就是不同的。才能实例化@Bean所标注的对象。这是需要加上一个注解。

2022-11-15 23:45:23 179

原创 设计模式——建造者模式

缺点:设计的程序结构过于简单,没有设计缓存层对象,程序的扩展和维护不好,也就是说,这种设计方案,把产品(即:房子)和创建产品的过程(房子创建流程)封装在了一起,耦合性更强。:构建一个使用Builder的对象,它主要是用于创建一个复杂的对象,它主要有两个作用,一是:隔离了客户与对象的生产过程,二是:负责控制产品对象的生产过程。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。:创建一个Product对象的各个部件指定的接口/抽象类。

2022-11-14 22:18:02 265

原创 浅谈序列化和反序列化

序列化可以序列化为字节流的形式,另外引用一些库,如阿里巴巴fastjson,就可以实现JSON类型的序列化和反序列化。序列化就是,当一个类,你使用它时,就new出来,并且给它的相应属性赋值,用完了,java内存回收掉,当你想对之前创建的对象进行持久化存储,这时就需要对这个类进行。在学习原型模式中深拷贝时,采用序列化的方式实现深拷贝,这时,就不懂什么是序列化了,特此学习了一下什么是序列化,什么是反序列化。序列化前的对象和反序列化后得到的对象,内容是一样的(且对象中包含的引用也相同),

2022-11-14 13:10:36 195

原创 java设计模式——原型模式

Object类是所有类的根类,它提供了一个clone方法,重写它实现自己的功能即可。就是对象通过请求原型对象拷贝,来实现克隆,即克隆对象=对象.clone()一个对象创建另一个可定制对象,无需知道其创建细节。之后要克隆的话只要调用其clone方法即可。让原型类继承该接口,并重写克隆方法。

2022-11-13 13:09:31 66

原创 设计模式——工厂模式

终极目的是为了解耦,实现创建者和调用者的分离。这种类型的属于设计模式中创建型模式,它提供了一种创建对象的最佳方式。工厂模式的定义:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。这满足创建型模式中所要求的“创建与使用相分离”的特点。将创建对象的任务交给工厂类让工厂决定创建何种对象调用即可。举个例子:点pizza。

2022-11-12 20:24:10 81

原创 设计模式——单例模式

设计模式——单例模式

2022-11-11 10:36:56 80

原创 java设计模式七大原则---7、合成复用原则

java设计模式七大原则---7、合成复用原则

2022-11-09 20:00:52 216

原创 java设计模式七大原则---6、迪米特原则

java设计模式七大原则---6、迪米特原则

2022-11-09 19:54:55 116 1

原创 java设计模式七大原则---5、开闭原则

java设计模式七大原则---5、开闭原则

2022-11-09 19:45:33 93

原创 java设计模式七大原则---4、里氏替换原则

java设计模式七大原则---4、里氏替换原则

2022-11-09 17:08:03 90

原创 java设计模式七大原则---3、依赖倒置原则

java设计模式七大原则---3、依赖倒置原则

2022-11-09 16:53:08 228

原创 java设计模式七大原则---2、接口隔离原则

java设计模式七大原则---2.接口隔离原则

2022-11-09 16:30:28 116

原创 java设计模式七大原则---1、单一职责原则

java设计模式七大原则---1、单一职责原则

2022-11-09 16:20:55 126

原创 浅谈 (依赖、关联、聚合和组合)

浅谈 (依赖、关联、聚合和组合)

2022-11-09 10:00:00 241

原创 springsecurity+jwt+redis+vue的后台系统权限方案

springsecurity+jwt+redis+vue的后台系统权限方案

2022-11-03 15:17:01 306

原创 springboot实现文件上传到liunx服务器

springboot实现文件上传到liunx服务器上保存1.首先配置服务器环境,这时候我们要在服务器上安装tomcat服务器通过tomcat来进行2.安装好tomcat服务后,对tomcat进行配置:1)找到tomcat文件所在位置打开conf文件夹下的server.xml 加上一个context标签,表示/img路径可以访问到/home/img下的文件正在上传…重新上传取消2)修改conf文件夹下的web.xml文件,如果没有设置readonly为false会报错409正在上传…重

2022-05-29 00:02:51 1639

空空如也

空空如也

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

TA关注的人

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