- 博客(41)
- 收藏
- 关注
原创 spring boot 启动类加载的优化
4、将需要启动的bean写入到项目中的文件,去加载该目录下的bean文件。2、使用自定义配置bean进行加载,减少更多的不必要加载的组件。3、启动spring boot的配置懒加载模式,5、使用编译时优化,减少反射操作的开销。1减少依赖,不用的依赖去掉,
2024-05-25 13:52:48
237
原创 学习go与Java的讨论
这几天博主学习了一下go,发现比Java简单很多,go的代码更少更为简洁,并且并发问题从内部调用锁即可,此处也是一样,各位觉得用Java需要写多少行代码搞定。此处go代码各位觉得用Java怎样去解决呢,
2024-03-08 18:20:39
653
原创 springcloud的搭建和封装,已进行开源,相互学习代码知识。
gateway:网关服务,包含token认证,接口信息认证是否放行,IP白名单认证,token是否要过期,用户还没有进行退出登录。springcloud架构的统一父工程,(管理子模块,管理依赖插件,依赖版本等)abillty:能力服务块:存放一些非业务相关的微服务,比如网关,身份认证等。coommon:核心工具模块,根据不用的框架功能,划分不同的模块。config:本地的统一配置文件,管理微服务的统一配置信息。core:微服务核心模块,微服务的核心运行模块。exce: 网关中的一些异常信息处理。
2024-03-02 21:10:24
472
1
原创 springcloud和基础服务的搭建以及封装
page分页也进行了封装,只需要添加到pom中,将会自动进行分页,并且后端不需要写任何的分页数据。只需要前端自己传分页参数即可,并且里面封装了很多类型的参数类型。自定义的很多注解,并且也支持多个版本的同一个接口名称,只需要前端自己在header里传版本号即可。
2024-03-02 11:36:59
797
2
原创 springcloud搭建 初级人员的使用搭建。sentinel使用官网有详细的使用方法
共享的环境配置:api-gateway.yaml 将公共的丢到这个里面。refresh: true #是否支持动态刷新。#name: gateway 动态更新。#添加其他的配置文件的读取。
2024-02-20 13:49:42
569
2
原创 java 封装server并且一个server下多个implements使用枚举进行管理获取
之前的webscoket没有灵感进行server枚举封装的来看这人。
2024-01-21 12:55:31
481
原创 使用nginx和Lua实现分布式限流解决高并发问题
local elapsed, err =lock:lock(“limit_key”) --互斥锁 local limit_counter =ngx.shared.limit_counter --计数器。limit_counter:set(key, 1, 1) --第一次需要设置过期时间,设置key的值为1,过期时间为 else。os.time() local limit = 5 --限流大小。limit_counter:incr(key, 1) --第二次开始加1即可 end。
2024-01-13 15:04:23
592
1
原创 一般的注解aop切面解决限流问题。
/获取客户端等待令牌的时间。if(myRateLimiter == null){ //程序正常执行,执行目标方法。//设置限流速率 rateLimiter.setRate(rate);//使用反射获取方法上是否存在@MyRateLimiter注解。tryAcquire){ //服务降级。//从令牌桶获取令牌的超时时间。//判断客户端获取令牌是否超时。//实现桶的限流和aop切面。//向令牌桶放入令牌的速率。//获取到令牌,直接执行。//获取注解上的参数。
2024-01-13 14:35:36
448
1
原创 apo切面编程解决分布式限流
读取项目classpath目录下的limit.lua脚本文件来确定是否执行限流的操作,调用limit.lua文 件执行的结果返回0则表示执行限流逻辑,否则不执行限流逻辑。local current = tonumber(redis.call(‘get’, key) or “0”) if current + 1 > limit then --如果超出限流大小。if(“0”.equals(result.get(0).toString())){//List设置Lua的KEYS[1]
2024-01-13 11:18:57
415
1
原创 synchronized
通过上面两段描述,我们应该能很清楚的看出Synchronized的实现原理,Synchronized的语义底层是通过一个monitor的对象来 完成,其实wait/notify等方法也依赖于monitor对象,这就是为什么只有在同步的块或者方法中才能调用wait/notify等方法,否则 会抛出java.lang.IllegalMonitorStateException的异常的原因。指令执行时,monitor的进入数减 1,如果减1后进入数为0,那线程退出monitor,不再是这个monitor的所有者。
2023-11-30 11:04:07
47
原创 SimpleDateFormat是不是线程安全
然而看了Calendar内部机制,Calendar并没有线程安全的机制并且本身也不支持线程安全机制。并且set 和clear并没有进行原子性操作。在高并发场景下,同时操作一个SimpleDateFormat时就会发现cal会混乱。然而format()方法也是一样的效果也会导致数据缭乱。通过源码跟踪发现,SimpleDateFormat调用establish方法后,进入Calendarbuilder类,在establish方法中源码是这样进行描述的。
2023-11-29 11:15:03
46
1
原创 Base64 实例
import java.util.Base64;import java.util.UUID;import java.io.UnsupportedEncodingException;public class Java8Tester {public static void main(String args[]){try { // 使用基本编码 String base64encodedString = Base64.getEncoder().encodeToString("runoo
2023-11-25 14:34:52
105
1
原创 java8新特性
Java8Tester.java 文件import java.util.ArrayList;import java.util.Arrays;import java.util.IntSummaryStatistics;import java.util.List;import java.util.Random;import java.util.stream.Collectors;import java.util.Map;public class Java8Tester {public stat
2023-11-25 14:33:18
42
1
原创 ssm和Layui
通过业务层做逻辑判断,进行存储到list或者map集合里面。后台获取到前台的参数,从而将数据渲染到页面,页面也用ajax进行接收,js代码jsp代码<%@ page contentType=“text/html;charset=UTF-8” language=“java” %><% pageContext.setAttribute(“path”, request.getContextPath());%> 火情管理 .
2023-11-25 14:32:12
42
1
原创 linux面试题
在Linux系统中,以 文件 方式访问设备 .2. Linux内核引导时,从文件/etc/fstab 中读取要加载的文件系统.3. Linux文件系统中每个文件用 i节点来标识.4. 全部磁盘块由四个部分组成,分别为引导块 、专用块 、 i节点表块 和数据存储块.5. 链接分为: 硬链接 和 符号链接 .6. 超级块包含了i节点表 和 空闲块表等重要的文件系统信息.7. 某文件的权限为:d-rw-_r–_r–,用数值形式表示该权限,则该八进制数为: 644 ,该文件属性是 目录 .8. 前台起
2023-11-25 14:30:01
79
原创 分布式面题
两个对象相互引用会不会被GC?仍然会被GC。因为JVM按照对象在以GC root为根节点的图中的可达性来决定对象是否被GC。相互引用的两个对象,引用数虽然不为0,但如果跟外界其他对象都没有引用关系,即是一个孤岛,仍然会被GC。java中可作为GC Root的对象有1.虚拟机栈中引用的对象(本地变量表)2.方法区中静态属性引用的对象3. 方法区中常量引用的对象4.本地方法栈中引用的对象(Native对象)http://www.importnew.com/16173.html乐观锁与悲观锁悲观
2023-11-25 14:27:36
51
1
原创 ssm和layui图片的上传和读取到页面
//图片List files = filesDao.queryFilesByIdAndName(id, “Damnification”);List imgs=new ArrayList<>();for(int i=0;i<files.size();i++){imgs.add(files.get(i).getPath());}damnification.setImgs(imgs);return damnification;获取每一张图片的角标,通过角标来找到图片,从而通过控制
2023-11-25 14:25:09
117
1
原创 分布式面试题常见的
1、Dubbo的底层实现原理和机制–高性能和透明化的RPC远程服务调用方案–SOA服务治理方案Dubbo缺省协议采用单一长连接和NIO异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况2、描述一个服务从发布到被消费的详细过程务。首先先获取zk的配置信息,然后获取需要暴露的url,然后调用registry.register方法将url注册到zookeeper上去。3、分布式系统怎么做服务治理针对互联网业务的特点,eg 突发的流量高峰、网络延时、机房故障等
2023-11-25 14:24:00
40
1
原创 垃圾收集算法
原始快照就是当灰色对象要删除指向白色对象的引用关系时, 就将这个要删除的引用记录下来, 在并发扫描结束之后, 再将这些记录过的引用关系中的灰色对象为根, 重新扫描一次,这样就能扫描到白色的对象,将白色对象直接标记为黑 色(目的就是让这种对象在本轮gc清理中能存活下来,待下一轮gc的时候重新扫描,这个对象也有可能是浮动垃圾) 以上无论是对引用关系记录的插入还是删除, 虚拟机的记录操作都是通过写屏障实现的。黑色的对象代表已经扫描 过, 它是安全存活的, 如果有其他对象引用指向了黑色对象, 无须重新扫描一遍。
2023-11-25 14:22:13
39
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人