1、使用@Async 注解 ,使用spring 异步处理方法(https://blog.csdn.net/hry2015/article/details/67640534)
2、使用@Qualifier(用哪个),多个实例实现了一个接口,在注入的时候告诉spring用哪个
(https://www.cnblogs.com/smileLuckBoy/p/5801678.html)
3、幂等性,就是多次操作,结果都一样。比如,读取一个文件,1次和10次,读出来的内容应该是一样的。
4、RestTemplate,简单来说就是,spring的一个操作rest风格的工具类,get,post,put,delete 随便选择

5、AtomicInteger

6、使用了静态代码块,静态代码块,会在加载类的时候就将静态代码块的内容加载到内存中。

7、使用了Map来做单例模式,抽象工厂模式

public class SendPrizeStrategyFactory {private static Map<Integer, SendPrizeStrategy> sendPrizeStrategyMap = Maps.newHashMap();//这里定义一个空的Mapstatic {ApplicationContext applicationContext = ApplicationContextHolder.context; //使用团贷网封装好的工具SendPrizeStrategy baoxiangSendPrizeStrategy = applicationContext.getBean(TuanBaoxiangSendPrizeStrategy.class);//获取实例,cglib实现原理,动态代理TuanBiSendPrizeStrategy tuanBiSendPrizeStrategy = applicationContext.getBean(TuanBiSendPrizeStrategy.class);SendPrizeStrategy ticketSendPrizeStrategy = applicationContext.getBean(TicketSendPrizeStrategy.class);// 红包、实物类奖品使用 团宝箱服务发送奖品sendPrizeStrategyMap.put(PrizesTypeId.RED_BONUSES_TYPE_ID, baoxiangSendPrizeStrategy);// 用Map装入实例sendPrizeStrategyMap.put(PrizesTypeId.MATERIAL_GITF, baoxiangSendPrizeStrategy);// 团币奖品使用 团币服务发送奖品sendPrizeStrategyMap.put(PrizesTypeId.TUANBI_TYPE_ID, tuanBiSendPrizeStrategy);// 抽奖券使用,补偿抽奖券sendPrizeStrategyMap.put(PrizesTypeId.CARDS_TYPE_ID, ticketSendPrizeStrategy);}private SendPrizeStrategyFactory() {}public static void addSendPrizeStrategy(Integer prizesTypeId, SendPrizeStrategy sendPrizeStrategy) {if (!sendPrizeStrategyMap.containsKey(prizesTypeId)) {sendPrizeStrategyMap.put(prizesTypeId, sendPrizeStrategy);}}public static SendPrizeStrategy findStrategy(Integer prizesTypeId) {SendPrizeStrategy sendPrizeStrategy = sendPrizeStrategyMap.get(prizesTypeId);if (sendPrizeStrategy != null) {return sendPrizeStrategy;  //获取实例}throw new AppBusinessException(Activity518ErrorCode.SEND_PRIZE_STRATEGY_NOT_FOUND);}}

8、多次使用String.format(%sAAAA%s) ,来拼接字符串,这样性能会高些吗?

9、多次使用策略模式,先定义一个抽象类,在这个抽象类里面写一些公用方法。新创建的类就继承这个抽象类,并重写抽象方法。这样可以用调用不同的类,使用不同的方法。(这样做法,在功能上来说,和switch的功能差不多,只是把case的内容放到一个类里面去了,当然用继承的方法去做的话,在别人看你的代码的时候就显得更加高大上些,但是本质还是一样的事情)

10、使用过了分布式锁,目的,防止用户多次提交。

// 获取分布式锁boolean isLock = jedisService.tryGetDistributedLock(coinLockKey, requestId, 100);
    /*** 尝试获取分布式锁* @param lockKey 锁* @param requestId 请求标识* @param expireTime 超期时间* @return 是否获取成功*/public boolean tryGetDistributedLock(String lockKey, String requestId, int expireTime) {RedisConnection conn = jedisConnectionFactory.getConnection();Jedis jedis = (Jedis) conn.getNativeConnection();String result = jedis.set(lockKey, requestId, "NX", "PX", expireTime);conn.close();if (LOCK_SUCCESS.equals(result)) {return true;}return false;}

11、包装类就使用包装类的方法来进行比较数字

12、

TDW-JAVA-研发技术点纪录相关推荐

  1. Java研发技术学习路线

    Java研发技术成长路线 作为一名Java研发者,深感Java技术的学习是一个漫长过程,从一名Java菜鸟开始,加之持之以恒的耐心和脚踏实地的精神,不间断理论的学习,不停止技术实践,终成为一名技术佼佼 ...

  2. Java研发方向如何准备BAT技术面试(超级干货)

    背景: 最近BAT等各大互联网巨头们的校招陆陆续续都准备开始了,可能对于在校的大多数学生来说,不知道如何正确衡量自己掌握的技术,更不知道BAT这样的公司会要求自己必须具备什么样的技术能力.对于Java ...

  3. JAVA高级研发技术栈

    一.基础篇 JVM JVM内存结构 堆.栈.方法区.直接内存.堆和栈区别 Java内存模型 内存可见性.重排序.顺序一致性.volatile.锁.final 垃圾回收 内存分配策略.垃圾收集器(G1) ...

  4. 2021年4月16日 阿里供应链Java研发实习面试(二面)

    title: 2021年4月16日 阿里供应链Java研发实习面试(二面) tags: 面经 2021年4月16日 阿里供应链Java研发实习面试(二面)(70min) 自我介绍 介绍自己的研究生项目 ...

  5. Java Web技术经验总结(二)

    该系列的第一篇在此:Java Web技术经验总结一,主要包含我在日常工作中的经验和心得体会(如有不足之处欢迎指出). Maven的使用经验 依赖的scope有test.provided.compile ...

  6. **Java有哪些悲观锁的实现_阿里秋招Java研发工程师岗:来自校友的面试还原(已拿Offer)...

    前言 本篇题材来自我的校友投稿,他在最近的秋招校招中拿到了蚂蚁金服的实习生Offer,整体思路和面试题目由面试本人--小林提供(译名) 由于作者面试过程中高度紧张,本文中只列出了自己还记得的部分题目. ...

  7. java前沿技术_互联网百强企业架构师告诉你,Java应该这么学!云和数据超全面Java中级程序员学习路线图重磅发布!...

    作为常居编程语言排行榜第一名的编程语言,Java语言以其稳定性.健壮性著称,是一门非常成熟的编程语言,多年来一直是国际上众多企业的首选编程语言. Java语言不仅吸收了C++语言的各种优点,还摒弃了C ...

  8. 字节JAVA研发面试

    面试4轮字节Java研发岗 面试4轮字节Java研发岗 讲一下线程池参数的含义 Innodb的索引实现 为什么是B+树? Redis的使用,分布式锁的实现 操作系统虚拟内存换页的过程 TCP三次握手 ...

  9. Java研发知识图谱

    不同行业不同公司不同岗位所用到的技术千差万别,所以该图谱不具有普适性. 该图谱基于笔者从业(电子商务/互联网金融后端)以来工作经验画出,具有一定的局限性,不过对于互联网行业Java研发知识体系具有一定 ...

  10. Java后端技术栈,到底如何深入学习?

    Java,是现阶段中国互联网公司中,覆盖度最广的研发语言.有不少朋友问,如何深入学习Java后端技术栈,今天分享一个,互联网牛人整理出来的Java深入学习路线图,以及免费学习资料. 一.阅读源码 深入 ...

最新文章

  1. opencv中的createsamples.exe生成vec文件注意事项
  2. 光伏双反闹剧何时休?
  3. fortran subroutine_Fortran:派生数组与数组传递进子程序耗费时间比较
  4. 基于 Docker Compose 实践 .NET Core 的现代化架构 2:在容器中集成 Skywalking APM
  5. 1013 数素数 (20分)
  6. 《大道至简》周爱民读后感
  7. 2017年AR大会上海站干货分享
  8. 侧边栏配置_企业微信上线“聊天侧边栏”功能,可在外部会话时快捷使用应用...
  9. 在未来人类在计算机行业中扮演什么角色,刘慈欣:未来人类可能生活在计算机里...
  10. python中circle函数_从Python3.6 Zelle Graphics中的另一个函数调用circle函数
  11. spring security 的 logout 功能
  12. 关于下载 GAE High Replication Datastore 数据[实战篇]上
  13. dom4j解析XML文件,通过属性查找节点,出现异常
  14. TimesTen 介绍
  15. java 添加 psd_psd缩略图生成上传解决方案
  16. iphone双重认证关闭不了怎么办_Apple id双重认证,没有关闭的选项?
  17. 《tensorflow实战》6——强化学习之策略网络
  18. 使用mmdetection做实例分割
  19. 来自T00ls的帖子-XSS的奇技淫巧
  20. 可爱的灯泡眨眼表情动画特效

热门文章

  1. 游戏开发学习笔记——lua脚本语言——安装、汉化与小测试(解决lua运行代码乱码问题)
  2. ac2100 反弹shell无法粘贴_手把手带你玩转NAS 篇二十一:小米Redmi AC2100路由器刷机padavan保姆级教程...
  3. 【写作能力提升】写作小白需要避免的五个写作误区和灵魂五问
  4. 三星 P600 android,三星p600报价及测评介绍
  5. Html5的新增特性
  6. 快来看,手把手教学 满意度调查如何抽样
  7. python-numba库
  8. 第一篇 php ImageMagick 扩展错误
  9. mysql命令行工具打开文件_使用命令行工具mysqlimport导入数据
  10. matlab基础学习记录之阶跃函数、单矩形脉冲函数、周期矩形脉冲函数的构造与画图