分类: java

37 篇文章

thumbnail
自己设计缓存,主要注意的点
数据结构 首要考虑的就是数据该如何存储,用什么数据结构存储,最简单的就直接用Map来存储数据;或者复杂的如redis一样提供了多种数据类型哈希,列表,集合,有序集合等,底层使用了双端链表,压缩列表,集合,跳跃表等数据结构; 对象上限 因为是本地缓存,内存有上限,所以一般都会指定缓存对象的数量比如1024,当达到某个上限后需要有某种策略去删除多余的数…
thumbnail
Spring中都用到了哪些设计模式
工厂设计模式 : Spring使用工厂模式通过 BeanFactory、ApplicationContext 创建 bean 对象。 代理设计模式 : Spring AOP 功能的实现。 单例设计模式 : Spring 中的 Bean 默认都是单例的。 模板方法模式 : Spring 中 jdbcTemplate、hibernateTemplate…
thumbnail
Spring BeanFactory 和 FactoryBean 的区别
BeanFactory 是一个接口,public interface BeanFactory,提供如下方法: Object getBean(String name) <T> T getBean(String name, Class<T> requiredType) <T> T getBean(Class<T…
thumbnail
lombok的@Accessors注解3个属性说明
Accessors翻译是存取器。通过该注解可以控制getter和setter方法的形式。 @Accessors(fluent = true) $\color{red}{使用fluent属性,getter和setter方法的方法名都是属性名,且setter方法返回当前对象}$ @Data @Accessors(fluent = true) class…
thumbnail
主线程等待子线程的几种实现方式
问题 多线程编程里面一个常见的问题:“如何让主线程在全部子线程执行完毕后再继续执行?” 方案 方法一:主线程sleep 主线程等待子线程执行完最简单的方式当然是在主线程中Sleep一段时间,这种方式最简单,我们先看下实现 private static class MyThread extends Thread { @Override public …
thumbnail
java RestTemplate put和delete请求无返回值问题解决
前言 最近的项目中涉及到使用RestTemplate 调用请求方式为delete和put的接口,但是RestTemplate提供的delete()和put()方法都没有返回值,但是我要调用的接口是有返回值的,网上的资料很多都是写的调用exchange()方法来实现,但是基本上都没有给出完整实例,导致我在参考他们的代码的时候会出现参数无法传递的问题,…
thumbnail
Aurora 自定文件下载
Aurora 自带的文件下载只能按照框架定义的方式去下载指定目录的文件,这样非常的不方便,不能实现一些自定的下载方式 这里提供一种方式可以按照自己的方式下载自定义的文件列表 BM 文件 bm 查询出文件列表 <?xml version="1.0" encoding="UTF-8"?> <bm:model xmlns:bm="htt…
thumbnail
Aurora 导出 Excel 慢 修改为导出 txt 和 csv
为什么要导出 txt 和 csv文件 当遇到上十万及百万数据量时,导出会非常慢,经常会导不出来。如修改为 txt 和 csv 则会快很多 如何输出 txt 和 csv 文件 项目中遇到大数据量输出 excel 时性能较慢,耗用大量内存,可以考虑采用直接输出 txt 和 csv 格式的方式快速导出数据。 导出 txt,可在 button 中加入 ty…
thumbnail
Aurora 汉德移植到新版 Eclipse
前言 aurora 初始版本的eclipse比较老,如果用惯了新的eclipse,或者想用新的特性,可以将 aurora 组件移植到新版本 eclipse 上,方法非常简单 移植方法 1 将原有带 Aurora 插件的 eclipse 中的 dropins 复制出来,安装新版的 eclipse , 复制进去直接覆盖 2 再次打开 eclipse.e…
thumbnail
Aurora 下载 base64 文件
主要代码 // base64转blob function base64ToBlob(code) { let parts = code.split(';base64,'); let contentType = parts[0].split(':')[1]; let raw = window.atob(parts[1]); let rawLength …