- 博客(13)
- 收藏
- 关注
原创 泛型的应用
如在List<Object>,List<String>等类型,在编译后都会变成List,JVM看到的只是List,而由泛型的附加信息对JVM是看不到的。这个设计是为了兼容Java旧版本的字节码,因为泛型是在Java 5引入的,早期的Java版本并不支持泛型。总结来说,泛型擦除是为了在引入泛型后保持与旧版本Java代码的兼容性,并通过编译时的类型检查确保类型安全,尽管它在运行时会导致泛型类型信息丢失的情况。这是因为在运行时,JVM需要知道数组的确切类型,而由于类型擦除,这个信息是不可知的。
2024-08-03 23:23:59 1063
原创 根据springBoot自动配置原理,编写starter组件
return "姓名:"+this.name+",性别:"+this.sex+",科目:"+this.subject;return sex;return sex;@ConditionalOnClass(Teacher.class) // 加载到Teacher这个类的话,就自动装配@EnableConfigurationProperties(TeacherProperties.class) //加载配置类/*** 将教师实体交给spring管理*/
2024-07-27 21:10:58 395
原创 积累知识库:线程池的使用
使用此线程池无法实现线程重用,每次调用都会新建一条线程。若系统中不断的创建线程,最终会导致系统占用内存过高,引发。CountDownLatch这个类能够使一个线程等待其他线程完成各自的工作后再执行。新建配置类(开启异步那个配置类)--配置线程池。使用的话可以把异步的放在一个类中,加上直接。在需要使用的类中注入这个异步类,调用方法。开启异步 :在启动器或者新建配置类。, 在需要异步的方法上加上注解。@Async自定义线程池。注解,在默认情况下用的是。
2024-07-21 09:33:06 400
原创 积累知识库:责任链模式实现数据多重校验
责任链模式(Chain of Responsibility): 使多个对象都有机会处理同一请求,从而避免请求的发送者和接受者之间的耦合关系,每个对象都是一个处理节点,将这些对象连成一条链,并沿着这条链传递该请求。原始概念中,是直到链上的某个接收对象能够处理它为止。实际使用中,链上的所有对象都可以对请求进行特殊处理。
2024-06-30 09:29:30 454
原创 积累知识库:ThreadLocal在工作中是怎么使用
每个线程在往ThreadLocal里设置值的时候,都是往自己的ThreadLocalMap里存,读也是以某个ThreadLocal作为引用,在自己的map里找对应的key,从而实现了线程隔离。如果你创建了一个ThreadLocal变量,那么访问这个变量的每个线程都会有这个变量的一个本地拷贝,多个线程操作这个变量的时候,实际是操作自己本地内存里面的变量,从而起到线程隔离的作用,避免了线程安全问题。上面源码的时候,大家有看到Entry ,这是ThreadLocalMap的内部类。2.存储用户登录信息。
2024-06-23 19:37:33 805
原创 拓展大文件上传(分片上传、断点续传、秒传):上传阿里云OSS
上篇将大文件上传到文件服务器,本篇在上篇基础上结合阿里云api实现将大文件上传大阿里云OSS。阿里云分片示例地址:阿里云。
2024-06-22 16:32:52 546
原创 积累知识库:大文件上传(分片上传、断点续传、秒传)
文件上传 小文件(图片、文档、视频)上传可以直接使用很多ui框架封装的上传组件,或者自己写一个input 上传,利用FormData 对象提交文件数据,后端使用spring提供的MultipartFile进行文件的接收,然后写入即可。但是对于比较大的文件,比如上传2G左右的文件(http上传),就需要将文件分片上传(file.slice()),否则中间http长时间连接可能会断掉。
2024-06-16 12:11:47 1174
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人