当前位置: 首页 > news >正文

设计发明的网站网站开发一定要用框架吗

设计发明的网站,网站开发一定要用框架吗,游戏类网站备案需要前置审批吗,那个网址怎么找在项目开发中,经常会碰到一些数据量小、但使用频率极高的数据。比如,团队到BU的映射表。此类数据通常不会变动,使用频率高且数据量较小,如果每次使用都去数据库查询,代价比较大,可以考虑在项目启动时将此类…

在项目开发中,经常会碰到一些数据量小、但使用频率极高的数据。比如,团队到BU的映射表。此类数据通常不会变动,使用频率高且数据量较小,如果每次使用都去数据库查询,代价比较大,可以考虑在项目启动时将此类数据加载到缓存中,并定时进行增量更新

项目中本身没有用redis,也没必要上,java的本地缓存完全可以满足需求。当然,数据量较大的情况下,还是不推荐这样使用的,可能会造成OOM。

下面是一个缓存的抽象类,子类继承并实现toHandler()方法后,相关数据就会在项目启动时被加载到缓存中,然后通过getEntityById()方法获取。

public abstract class BaseCache<T> {// 用于定时执行更新任务ScheduledExecutorService timer = Executors.newSingleThreadScheduledExecutor();// map存储数据Map<Object, T> cacheMap = new HashMap<>();BaseMapper<T> baseDao;// 用于记录上一次缓存更新的时间protected Date currentTime = DateUtil.getDate(2000, 1, 1);public BaseCache() {this.baseDao = baseDao;//定时获取缓存timer.scheduleAtFixedRate(() -> {List<T> results = getList();if (results.size() > 0) {T result = results.get(results.size() - 1);if (result instanceof Map) {currentTime = (Date) ((Map) result).get("DataChange_LastTime");} else {currentTime = (Date) ReflectionUtils.getFieldValue(result, "datachangeLasttime");}toHandler(results);}}, 1000, 1000, TimeUnit.MILLISECONDS);   // 时间可以根据业务需要进行变更}// 根据数据变更时间,获取增量数据protected List<T> getList() {QueryWrapper<T> queryWrapper = new QueryWrapper<>();queryWrapper.gt("DataChange_LastTime", currentTime);queryWrapper.orderByAsc("DataChange_LastTime");return baseDao.selectList(queryWrapper);}// 此抽象方法由子类实现,往缓存中(cacheMap)存放所需要的值protected abstract void toHandler(List<T> results);// 从缓存中获取数据public T getEntityById(Object id) {return cacheMap.get(id);}
}

下面是一个BaseCache的子类,功能是将userid和username放入内存进行映射,并提供【根据id获取name】和【根据name获取id】两个get方法。

ps: 实际业务代码肯定不是这种鸡肋的内容啦,数据脱敏。

UserCache类被@Repository@Lazy注解修饰,在第一次被用到的时候会被注入到IOC容器中,此时会调用其(父类BaseCache)构造函数,开始执行定时任务,调用toHandler()方法,将数据存入idCacheMap中。

因为业务的需要,既要通过key获取到value,又要通过value获取到key,因此我在这里没有复用父类中的map,而是添加了一个BiMap

@Lazy
@Repository
public class UserCache extends BaseCache<User>{// Map<userid, username>private BiMap<Long, String> idCacheMap = HashBiMap.create();@Autowiredpublic void setDao(UserDao entityDao) {this.baseDao = entityDao;}@Overrideprotected void toHandler(List<User> results) {results.stream().forEach(p -> {this.idCacheMap.put(p.getUserid(), p.getUserName());});}public Long getUsername(Long userid) {return idCacheMap.get(userid);}public Long getUserid(String username) {return idCacheMap.inverse().get(username);}
}
http://www.yayakq.cn/news/684190/

相关文章:

  • 网站建设山东聚搜网络阿里巴巴外贸网站首页
  • 银川市住房城乡建设局网站wordpress更换头像插件
  • 长春企业模板建站做策划网站推广怎么写简历
  • 常德投诉网站做网站一定要用云解析吗
  • 昆明网站建设服务wordpress repay
  • 怎样做一个自己的网站济南网站优化小黑
  • 织梦网站建设阳泉 网站建设合作
  • 临淄网站制作首选专家在线资源搜索引擎
  • 威海临港区建设局网站wordpress仿天涯主题
  • 网站建设合同书模板如何查看网站开发商
  • 花生棒 做网站动画设计图片
  • 网站统计哪个好用网站建设0doit
  • 怎么免费建网站新手学做网站的书
  • 浙江省住房和城乡建设厅网站打不开网站建设销售人才简历
  • 学校 网站建设招聘中天建设中瑞物资网站
  • 个人网站模板大全乾安网站建设哪家专业
  • 在线做ppt的网站c2c网站有哪些平台
  • 龙华建设网站公司企业信息系统查询系统
  • 奎屯市住房和城乡建设局网站微信公共平台官网
  • 汽配人网做网站建一个鲜花买卖网站多少钱
  • 微信对接网站群网站源码免费分享
  • 网站建设 个人模板论文中参考文献对不上
  • 网站推广优化公司深圳.网站建设
  • 有趣的网站设计合肥网站设计服
  • 哪里有网站开发企业wordpress怎么备份按在
  • 网站分站系六安电商网站建设价格
  • 五华区网站河南官网网站建设报价
  • 网站群建设目标域名买卖违法吗
  • 淄博做网站小程序的公司网站效果检测
  • 怎么建投票网站济南网站建设推荐搜点网络NO1