- 博客(459)
- 收藏
- 关注
原创 Day00_谷粒商城核心技术摘要
一开始商城首页使用Redis商城首页是一个非常热点的数据,redis数据过期后很容易大并发请求到数据库,容易发生缓存击穿要解决缓存击穿就需要加锁,而加本地锁不行,只能加分布式锁,但是加分布式锁又要考虑一堆分布式并发问题,于是就有了Redisson;用上Redisson后还要考虑缓存和数据库一致性问题,于是SpringCache应用而生。
2025-03-06 14:57:27
797
原创 摘要与登记
10.17:k8s,netty,dubbo,设计模式。10.30:spring事务。11.13:spring事务。11.08:设计模式。
2024-11-15 08:27:36
387
原创 使用切面来记录接口日志
*** @description: 接口日志结构化解析(接口方法中使用)* @author:/*** 服务注册中接口配置发布地址的namespace* @return/*** 服务注册中接口配置发布地址的serverCode* @return/*** 服务注册中接口配置发布地址的serverName* @return/*** 服务注册中接口配置发布地址的interfaceCode* @return/*** 服务注册中接口配置发布地址的interfaceUrl。
2024-10-14 16:34:53
174
原创 Day48_SpringSecurity
SpringSecurity能干什么?Spring Security本质上只是一堆 servlet 过滤器,Spring Security 能够完成用户认证和授权,还能防御一些常见的攻击(1)用户认证指的是:验证某个用户能否访问该系统。这就像回答问题你是谁?(2)用户授权指的是:验证某个用户是否有权限执行某个操作。比如某个接口是否运行调用,某个修改操作是否允许。它可以被认为是对用户可以做/读这个的问题的回答?(3)防御常见攻击:CSRF、HTTP Headers、HTTP Requests。
2024-09-26 14:56:59
971
原创 Day12_Spring事务
在使用@Transactional注解声明事务时,有时我们想自定义回滚的异常,spring也是支持的。可以通过设置rollbackFor参数,来完成这个功能。@Slf4j@Service如果在执行上面这段代码,保存和更新数据时,程序报错了,抛了SqlException、DuplicateKeyException等异常。而BusinessException是我们自定义的异常,报错的异常不属于BusinessException,所以事务也不会回滚。
2024-09-24 16:05:20
743
原创 Day04_JVM实战
可以看到,FullGC非常频繁,而且我们的方法区,占用了58729KB/1024= 57.8M空间,你JVM参数里面方法区设置的是60M,几乎把整个方法区空间占用,所以得出的结论是方法区空间设置过小,或者存在大量由于反射生成的代理类。这里面的OU是老年代已经使用的量,你每隔十分钟采样一次,然后比较这多组数据的OU的数值,如果这些值呈上涨趋势,则说明该Java程序的老年代内存已使用量在不断上涨,这意味着无法回收的对象在不断增加,因此很有可能存在内存泄漏。但GC频率比之前的1024M时要多了一些。
2024-09-18 10:49:43
1363
原创 Day57_K8S
每个Pod中都可以包含一个或者多个容器,这些容器可以分为两类:用户程序所在的容器,数量可多可少Pause容器,这是每个Pod都会有的一个根容器,它的作用有两个:可以以它为依据,评估整个Pod的健康状态可以在根容器上设置Ip地址,其它容器都此Ip(Pod IP),以实现Pod内部的网路通信apiVersion: v1 #必选,版本号,例如v1kind: Pod #必选,资源类型,例如 Podmetadata: #必选,元数据name: string #必选,Pod名称。
2024-09-02 20:06:15
1381
1
原创 Day15_设计模式
整个系统只能使用一个对象实例。(1)饿汉式单例模式的写法:线程安全(2)懒汉式单例模式的写法:非线程安全(3)双检锁单例模式的写法:线程安全类是public修饰的,而且类里面只有一个public,其余的都是private。如果一个对象不能处理该请求, 那么它会把相同的请求传给下一个,它们连成一条链,并沿着这条链传递该请求请求处理者(节点对象)只需关注自己感兴趣的请求进行处理即可,对于不感兴趣的请求,直接转发给下一级节点对象;链路结构灵活,可以通过改变链路结构动态地新增或删减责任;
2024-08-25 10:50:01
1376
原创 Day16_Zookeeper
ZAB协议,全称Zookeeper Atomic Broadcast(Zookeeper原子广播协议),是Zookeeper设计的一种支持崩溃恢复和原子广播的协议。集群间通过Zab协议(Zookeeper Atomic Broadcast)来保持数据的一致性;Zab协议包含两个阶段:Zab协议包含两个阶段:leader election阶段和Atomic Brodcast阶段(选举模式和广播模式)。
2024-08-25 10:32:41
1180
原创 Day17_Dubbo
SPI 是 Service Provider Interface,主要用于框架中,框架定义好接口,不同的使用者有不同的需求,因此需要有不同的实现,而 SPI 就通过定义一个特定的位置,Java SPI 约定在 Classpath 下的 META-INF/services/ 目录里创建一个以服务接口命名的文件,然后文件里面记录的是此 jar 包提供的具体实现类的全限定名。所以就可以通过接口找到对应的文件,获取具体的实现类然后加载即可,做到了灵活的替换具体的实现类。
2024-08-25 10:31:27
699
原创 Day18_Netty
Channel代表了一个网络连接,可以是客户端到服务器的连接,也可以是服务器之间的连接。每个Channel都由一个EventLoop负责处理,而一个EventLoop可以管理多个Channel。Channel中可以执行I/O操作,如读取、写入、连接和绑定等。是一个由一系列组成的处理链。如进行数据编解码、业务逻辑处理等。将这些串联起来,形成一个处理链。每个Channel都有一个关联的,用于处理入站和出站的数据。编解码器(Codec)是负责将数据在不同表示形式之间进行转换的组件。
2024-08-25 10:29:43
1031
原创 设计模式—装饰者模式
装饰者模式装饰者模式是一种结构型设计模式,它允许你动态地向对象添加新的行为而不影响其原有的行为。它在运行时给对象动态地添加一些额外的职责,通常是在原有的行为基础上,通过装饰器进行一些修饰,实现了更加灵活的代码复用和扩充。给对象添加一些职责,但是又不想改变其原有的接口和实现。在不使用继承的情况下(避免出现由于继承关系带来的类很多问题)动态地为一个对象添加一些额外的功能。需要在程序运行时动态地为对象添加不同的功能,或者为对象添加同时使用多个的功能。一句话,当遇到需要给。
2024-08-24 10:06:31
1363
1
原创 设计模式—代理模式
代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象。代理对象的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。被代理的对象可以是远程对象、 创建开销大的对象或需要安全控制的对象代理模式有不同的形式,主要有三种:静态代理、 动态代理 (JDK代理、接口代理)和Cglib代理 (可以在内存动态的创建对象,而不需要实现接口, 他是属于动态代理的范畴)。
2024-08-24 10:06:14
1074
1
原创 设计模式—工厂模式
从当前这个案例来说, 也是可以的, 但是考虑到项目的规模, 以及软件的可维护性、 可扩展性并不是特别好,因为过多的工厂类会导致整个项目类膨胀。工厂模式的意义:将实例化对象的代码提取出来,放到一个类中统一管理和维护,达到和主项目的依赖关系的解耦。项目需求:披萨项目新的需求: 客户在点披萨时, 可以点不同口味的披萨, 比如 北京的奶酪。披萨项目新的需求: 客户在点披萨时, 可以点不同口味的披萨, 比如北京的奶酪。:表示披萨商店,可以根据用户的输入,制作相应的披萨。:工厂类,根据用户输入,制作相应的。
2024-08-24 10:05:49
983
原创 IDEA相关补充
设置路径 : Settings->Editor->Color Scheme ->General->code ->Identifier under caret #694212。设置路径 : Settings->Editor->Color Scheme ->General->Editor->Caret row #261232。File–>settings–>Editor–>General -->Code Completion -->取消勾选。UTF-8 BOM又叫UTF-8 签名。
2023-11-28 09:26:57
241
原创 IDEA专栏—IDEA 接口方法不能跳转到实体类实现方法的问题
https://blog.youkuaiyun.com/mjh1667002013/article/details/123101180
2023-11-28 09:23:24
1024
原创 CompletableFuture的用法
CompletableFuture的用法请查看Day03_谷粒商城(谷粒商城高级篇二)摘要1.讲了使用线程池的好处2.讲了CompletableFuture组合式异步编程的概念。(C线程必须等A和B的返回结果才能继续运行,这就涉及到线程顺序安排问题)
2023-11-14 19:30:25
111
原创 Day10—SQL那些事(特殊场景的查询)
改动前sql:左连接时会连接所有数据SELECTsprl.*FROMWHERE改动后的sql:左连接时连接最后一条更新的数据SELECTsprl.*FROMWHERE。
2023-11-13 15:02:56
317
原创 Day02_《MySQL索引与性能优化》
单值索引:给一个字段添加索引。在user表中给name属性建个索引,复合索引:给几个字段添加索引。在user表中给name、email属性建个索引,索引的本质:索引就是排序,你对某个字段建索引数据库就会对所有数据针对这个字段做一个排序。站队从高到低站好找人就很好找,如果没有索引那就是全表扫描。建索引时注意点:由于肯定有一张表要全表扫描,被全表扫描的这个表最好是数据量很小的表。务必小表驱动大表,然后在大表上面建索引哪些情况下适合建立索引。
2023-11-12 16:27:01
885
原创 Day01_《MySQL索引与性能优化》摘要
p01-p13 讲解了MySQL在Linux系统中的安装部署,MySQL系统的架构,MySQL的SQL执行加载顺序,MySQL的几种Join之类的,属于基础知识,只做了解不做笔记。
2023-11-12 12:02:32
707
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人