- 博客(86)
- 资源 (4)
- 收藏
- 关注
原创 自定义Resttemplate,支持添加认证,打印请求,参数和响应,支持响应内容为xml的解析成对象
【代码】自定义Resttemplate,支持添加认证,打印请求,参数和响应,支持响应内容为xml的解析成对象。
2024-07-05 10:14:24
441
原创 SpringCloud(H版&alibaba)框架开发教程之SpringCloud Stream——附源码(7)
移步到此教程:https://blog.csdn.net/qq_42107430/article/details/104788858。
2024-01-08 10:54:01
418
原创 SpringCloud(H版&alibaba)框架开发教程之config,bus——附源码(6)
移步到此教程:https://blog.csdn.net/qq_42107430/article/details/104788858。
2024-01-08 10:40:51
398
原创 SpringCloud(H版&alibaba)框架开发教程之gateway——附源码(5)
当请求通过网关的时候,由Gateway Handler Mapping通过predicate判断是否与路由匹配,当predicate=true的时候,匹配到对应的路由。虽然我们可以在网关的前面再去加一层nginx或者haproxy等负载均衡器,但是仍旧很难改变网关在一定程度上的流量集中的问题。然而性能就是Zuul的短板,因为它是基于servlet的阻塞IO模型开发的。服务访问的认证鉴权更加方便,可以放在API网关统一去做。当你使用了API网关之后,所有的请求都要多一次转发,造成一定程度上的响应时长的延长。
2024-01-08 10:39:32
1251
1
原创 SpringCloud(H版&alibaba)框架开发教程之Hystrix——附源码(4)
他的功能是,当对某个服务的调用在一定的时间内(默认10s),有超过一定次数(默认20次)并且失败率超过一定值(默认50%),该服务的断路器会打开。根据cloud-consumer-feign-hystrix-order80已经有的PaymentHystrixService接口,重新新建一个类(PaymentFallbackService)实现该接口,统一为接口里面的方法进行异常处理。(当一个窗口期过去的时候,断路器将变成半开(HALF-OPEN)状态,如果这时候发生的请求正常,则关闭,否则又打开)
2023-12-29 16:38:42
922
原创 SpringCloud(H版&alibaba)框架开发教程之Ribbon负载均衡和Openfeign远程调用——附源码(3)
因为微服务间的调用,API网关的请求转发等内容,实际上都是通过Ribbon来实现的,包括后续我们将要介绍的Feign,它也是基于Ribbon实现的工具。支持HTTP请求和响应的压缩。在Spring Cloud中使用Feign,可以做到使用HTTP请求访问远程服务,就像调用本地方法一样的,开发者完全感知不到这是在调用远程方法,更感知不到在访问HTTP请求。openfeign远程调用,当有很多实例,我们也不能直接指定id去调用服务,因为服务太多了,而且有的服务可能已经在eureka里死掉了,所以不能写死。
2023-12-29 15:18:10
888
原创 SpringCloud(H版&alibaba)框架开发教程之nacos做配置中心——附源码(2)
比方说为了容灾,将Service微服务分别部署在了杭州机房和广州机房,这时就可以给杭州机房的Service微服务起一个集群名称(HZ) ,给广州机房的Service微服务起一个集群名称(GZ),还可以尽量让同一个机房的微服务互相调用,以提升性能。在入门案例中,我们实现了配置的远程存放,但是此时如果修改了配置,我们的程序是无法读取到 的,因此,我们需要开启配置的动态刷新功能。不同为服务之间实现配置共享的原理类似于文件引入,就是定义一个公共配置,然后在当前配置中引入。
2023-12-29 10:11:48
522
原创 SpringCloud(H版&alibaba)框架开发教程,使用eureka,zookeeper,consul,nacos做注册中心——附源码(1)
启动服务,注册到eureka,可以看到支付服务有2个注册到eureka,接下来,使用restTemplate在订单服务中调支付服务,并且负载均衡,使用自定义的策略。然后在浏览器输入http://localhost:7001/ 或http://localhost:7002/现如今我们已经启动了5个微服务,如果电脑不行,可以使用单机版本,并且服务启动的时候指定好jvm参数,把内存限制的小一点。创建订单服务,支付服务,公共api服务(共用的实体),eureka服务。–来自百度网盘超级会员V7的分享。
2023-12-28 17:15:18
1176
1
原创 SpringBoot+ShardingSphereJDBC实战(读写分离,分库分表,垂直拆分、水平拆分)附源码
源码地址:git@gitee.com:jackXUYY/springboot-example.git。参考:https://www.51cto.com/article/747736.html。打开dev2的配置,执行OrderController里面的接口看控制台打印的效果。我们启用后缀名为dev的配置文件,如下,数据库链接需要改成自己的地址。垂直分片 测试 (从不同的库中加载多张不同的表在一个项目中使用)建个t_order1的表,和t_order结构一样。注意数据库链接改成自己的,库表需要先建好,
2023-12-27 15:41:43
612
原创 springboot整合rabbitmq附源码
前提是对rabbitmq有一定的了解,比如虚拟主机,交换机,队列,信道,绑定,路由键,direct,fanout,topic等。我使用的是docker部署的rabbitmq,看到简书的这个,镜像版本是rabbitmq:3.7.7-management。原因:延迟插件不支持mandatory=true参数,如果启用会同时收到延迟消息和路由失败消息。DirectConfig此类是配置direct交换机,及队列,绑定关系。延迟交换机测试,场景就是下单了,没付费,过期取消订单。发送消息,指定路由键为man,
2023-12-21 15:10:00
591
原创 springboot整合kafka附源码
我们把这个类的注释打开,同时配置文件里的,partitioner.class配置开启,把消费者组group-id改为mykafka2,再把事务的配置也注释掉把上面的方法注释掉,把此方法的注释打开发送一个符合分区的消息内容因为此时没有1号分区,消息会发送超时我们可以新建配置类,声明分区数然后在发送消息试一下后续,刚才我们是手动ack,提交偏移量我们也可以指定偏移量去消费,方法代码里都有的,这里就截图了批量消费过滤消息内容再进行消费,异常处理消息转发定时启动,停止监听器。
2023-12-21 11:07:31
582
原创 springboot启动流程图
根据这个流程再去看源码会事半功倍流程解释组装SpringApplication1.resourceLoader:设置resourceload2.设置primarySources:可以把启动类加载进入spring容器3.webApplicationType:判断当前application应该运行在什么环境下4.mainApplicationClass:找出main方法启动的class执行SpringApplication的run方法获取SpringApplicationRunListen.
2021-03-23 13:10:46
1414
原创 spring的IOC理解
refresh方法 AbstractApplicationContext的refresh方法,源码: @Override public void refresh() throws BeansException, IllegalStateException { //加个锁,容器不能进行多次refresh synchronized (this.startupShutdownMonitor) { // Prepare this context for refreshing. //准备工作.
2021-03-23 10:43:44
187
原创 mybatis入门及自定义mybatis框架实现简单查询
mybatis是一个优秀的基于 java 的持久层框架,它内部封装了 jdbc,使开发者只需要关注 sql 语句本身,而不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程。mybatis通过 xml 或注解的方式将要执行的各种statement配置起来,并通过java对象和statement 中sql 的动态参数进行映射生成最终执行的 sql 语句,最后由 mybatis 框架执行 sql 并将结果映射为 java 对象并返回。采用 ORM 思想解决了实体和数据库映射.
2021-03-21 15:43:54
191
1
原创 redission分布式锁测试
pom依赖 <dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>3.8.2</version> </dependency> <dependency> <groupId>org.springframework.bo
2020-09-21 14:04:00
590
原创 并发环境下,先操作数据库还是先操作缓存?
原文链接:https://juejin.im/post/6844903907726983181#heading-3
2020-09-18 10:53:50
164
原创 spring aop底层原理
使用的有jdk动态代理和cglib代理使用代理取决于代理的对象的是类还是接口,如果是接口-----》cglib代理如果是类------》jdk动态代理
2020-09-14 14:57:45
231
原创 base64 单文件上传,多文件上传
import org.springframework.web.multipart.MultipartFile;import sun.misc.BASE64Decoder;import java.io.*;public class BASE64DecodedMultipartFile implements MultipartFile { private final byte[] imgContent; private final String header; public.
2020-08-26 13:27:07
434
原创 单文件上传,多文件上传
需要导入相关的上传文件的依赖包相关工具类和自定义异常在下方import java.io.File;import java.io.IOException;StringUtils;import org.apache.commons.io.FilenameUtils;import org.springframework.web.multipart.MultipartFile;FileNameLengthLimitExceededException;自定义异常FileSizeLimitExceede
2020-08-24 14:20:22
362
原创 设计模式之单例模式
饿汉式,静态变量//饿汉式,静态变量class S1{ private S1(){ } public final static S1 s = new S1(); public static S1 returnS1(){ return s; }}饿汉式,静态代码块class S1{ static { instance = new S1(); ; } private static S1 ins.
2020-07-23 17:26:06
131
原创 设计模式的七大原则
设计模式的重要性软件设计中反复出现的问题,所提出的解决方案 软件可维护性,扩展性,可读性,规范性,高内聚,低耦合功能模块=设计模式+算法(数据结构)—》框架–》架构七大原则单一职责原则对于类来说,一个类应该只负责一个职责降低类的复杂度演示public class SingleRe{ public static void main(Str
2020-07-23 16:07:53
127
原创 github的骚操作,你用过几个?
1.in 关键词限制搜索范围关键字 in:name项目名字中带这个关键字的2.stars或fork数量关键词范围查找springboot stars:>=5000查找springboot项目,点赞数大于5000的3.awesome加强搜索一般是用来收集,搜索工具,书籍类相关的项目4.高亮显示某一行代码单行代码块地址+#L+代码行数多行代码块地址+#L+代码行数-L行数...
2020-07-20 10:49:33
121
原创 生产cpu占用高的定位和分析
结合linux命令和jdk命令去分析1.top命令找出占用过高的程序 找到进程id2.详细定位 jps -l pid 定位或ps -ef java3.定位到具体线程和代码·ps -mp 进程编号 -o THREAD ,tid,time·找到占用高的线程是哪一个4.将需要的线程id转为16进制格式5.jstack 线程号 | grep 16进程线程id -A60(打印前60行)就能定位到具体某一行代码...
2020-07-20 10:16:42
153
1
原创 线程池配置合理的线程数
System.out.println(Runtime.getRuntime().availableProcessors());获取处理器的数量cpu密集型处理器的核数+1io密集型处理器*2或者8/(1-阻塞系数)阻塞系数0.8~0.9
2020-07-17 14:50:58
175
原创 ReentrantLock与Sync有什么区别
阻塞和唤醒的方式不一样sync是java的关键字底层通过monitor对象不需要用户释放锁,自动释放sync不可中断,除非抛异常或运行完成默认加锁都是非公平锁lock是api层面的类需要用户主动释放锁可中断,设置超时中断默认也是非公平锁,可以设置成公平锁锁绑定多个condition,用来精确唤醒,而sync没有,要么随机唤醒一个,或者全部...
2020-07-17 14:46:21
1184
原创 java的锁
公平锁非公平锁ReentrantLock构造方法可传true默认是非公平锁公平锁先来后到,队列形式非公平锁,加塞,,加塞不成功在排队饥饿现象就是一直加载对于sync也是非公平锁可重入锁(又叫递归锁 )ReentrantLock的字面意思就是可重入锁,锁你用完了,我也可以用这把锁同步方法里的方法又调用了另一个同步方法,而此时这把锁是当前对象,所以仍然可以调用比如家门,卫生间门,家门你锁了,卫生间就不用锁了。作用:避免死锁reentrantlock与sync都是一个典型的可重入锁
2020-07-17 14:11:19
123
原创 分布式锁
N台 jvm + N线程微服务集群分布式锁实现三种myql数据库乐观锁------>并发量不够,所以不用redis---->redissionzookeeper----->临时节点demo–略
2020-07-16 16:08:38
146
原创 Linux高级指令
1.查看机器整体性能top命令结果出来后,分析下面的四个指标cpumemidleload average2 内存free -m3 硬盘df -h4 cpu 时间(s) 几次vmstat -n x y5 磁盘iostat -xdk x y util高
2020-07-16 15:11:50
116
原创 Mysql的索引优缺点
索引是帮助mysql高效获取数据的数据结构。优点:提高检索效率,降低数据路IO成本降低数据排序成本,降低cpu消耗缺点:降低了更新表的速度,如增删改 更新表时索引也会更新 实际上索引也是一张表什么情况下会创建索引1.主键自动建立唯一索引2.频繁作为查询条件的字段,3.查询中与其他表关联的外键应该建立索引4.单键/组合索引的选择问题,组合索引的性价比更好5.查询中排序的字段,若通过索引访问,将大大提高排序速度 6查询中统计或分组字段那些情况下不要建立索引1.表记录太
2020-07-16 14:19:09
291
原创 Redis持久化操作
RDB在指定的时间间隔内,将内存中的数据集快照写入磁盘,它恢复时,是将快照文件直接读到内存里。AOF是以日志的方式记录写操作,备份如何进行的redis会单独创建一个子进程来进行初始化,会先将数据写入到一个临时文件内,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件,整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能,如果要进行数据大规模恢复,且对于数据恢复的完整性不是非常敏感,那RDB的方式比AOF的方式更为高效,RDB的缺点是最后一次持久化后的数据可能会丢失。..
2020-07-16 12:23:15
178
原创 Spring事务传播行为和隔离级别
@Transional(propagation=REQUIRED)默认值是这个,使用同一个事务修改库存,修改余额修改库存是一个事务,修改库存的时候会调用修改余额的方法,而这时还会使用原来的事物,根据事务的原子性,要么都成功,要么都失败。所以失败时,就会回滚事务REQUIREDS_NEW 会开启一个新的事物,一个成功,一个失败,失败的会回滚,而成功的不会回滚常用的是这两个isolation设置事务的隔离级别...
2020-07-16 10:57:28
205
原创 原子性与CAS算法
i++问题一个,原子变量CAS算法保证数据的原子性CAS是硬件对于并发操作的支持cas包括了,内存值,V预估值,A更新值,B当且仅当V==A时,才会把B的值赋给A,否则将不做什么操作
2020-07-15 18:01:25
161
原创 Volatile关键字与内存可见性
当多个线程操作共享数据时,彼此不可见同步锁会解决这个问题,但是效率会很低volatile的出现就解决了这个问题,当多个线程操作共享数据时,可以保证内存中的数据可见,想较于sync更轻量一些。volatile不具备互斥性volatile也不能保证变量的原子性...
2020-07-15 17:53:43
81
原创 异步回调之ComplateableFuture
package juc.day03;import java.util.concurrent.CompletableFuture;import java.util.concurrent.ExecutionException;public class ComplateableFutureTest { public static void main(String[] args) throws ExecutionException, InterruptedException { /
2020-07-15 17:32:06
971
Citrix.Receiver.rar
2020-05-26
redisclient-win32.x86.1.5.zip
2020-05-26
nosqlbooster4mongo-5.1.10.exe
2019-11-05
navicatformysql.rar
2019-11-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人