1.如果对精度要求不高的情况下使用如下方式获得系统时间戳。原理连接

System.out.println(LocalDateTime.now());

2.如果需要获得格式化的时间,或者将字符串转换成日期格式,按如下方式进行书写。原理连接

public class TestMain {public static final DateTimeFormatter dateTimeFormatter=DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");public static void main(String[] args) {String test=TestMain.dateTimeFormatter.format(LocalDateTime.now());System.out.println(test);}

3.在线程中可以使用threadlocal放置线程中共享的信息。

public class UserInfoThreadlocal {private static final ThreadLocal<Long> threaslocal = new ThreadLocal<>();public static void put(Long userId) {remove();threaslocal.set(userId);}public static Long get() {return threaslocal.get();}public static void remove() {threaslocal.remove();}
}

这是本人在项目中使用的方式,在对jwt进行权限验证通过以后会将一些线程共享的信息放入ThreadLocal中,springsecurity实际上使用的也是threadlocal进行权限验证。

4.为了让事务机制起作用,当service调用service方法的时候选择创建新的service,例如AService非事务方法需要调用事务方法,则创建一个Bservice,然后将BService注入到AService中。

5.数据库中的小数使用Decimal,mysql中的Decimal采用的是字符串存贮的方式,在java中使用BigDecimal进行运算,BigDecimal底层使用BigInt存储数据,BigInt使用int[]数组来存储数据。

6.可以使用枚举类定义常量。

public enum TransStatusEnum {SUCCSEE(10, "交易成功"),LOADING(20, "交易中"),FAIL(30, "交易失败"),CancelOrder(40,"撤单"),OrderFinish(50, "售卖结束");private Integer status;private String desc;private TransStatusEnum(Integer status, String desc) {this.status = status;this.desc = desc;}public static TransStatusEnum getEnumByStatus(Integer code) {for (TransStatusEnum temp : TransStatusEnum.values()) {if (code == temp.getStatus()) {return temp;}}return TransStatusEnum.LOADING;}public Integer getStatus() {return status;}public void setStatus(Integer status) {this.status = status;}public  String getDesc() {return desc;}public void setDesc(String desc) {this.desc = desc;}public static String getDesc(Integer i){return getEnumByStatus(i).getDesc();}
}

7.使用拦截器和注解结合的方式来完成业务。

/*** 不校验token* @see*/
@Documented
@Inherited
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface NoVerificationToken {}
@Component
@Slf4j
public class TokenInterceptor extends HandlerInterceptorAdapter {@Autowiredprivate TokenService tokenService;@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {// 获取方法上的注解HandlerMethod handlerMethod = (HandlerMethod) handler;Method method = handlerMethod.getMethod();PenguinLogThreadLocal.remove();if (method.isAnnotationPresent(NoVerificationToken.class)) {return true;}

8.使用一次性token来防止接口的幂等性

@PostMapping("/repeatLimNo")@ApiOperation(value = "获取请求序列", notes = "获取请求序列--拦截重复请求")public Outcome<String> getToken(@RequestHeader(value = "token") String token, HttpServletRequest request) {return Outcome.success("", repeatLimiterSeq.generateSeq());}

该接口返回一个唯一的请求序列放在redis中,请求一次失效,在需要防止接口幂等性的接口上传送,且该字段为必传字段。

    @Overridepublic String generateSeq() {//使用UUID生成 tokenString token = UUID.randomUUID().toString();token=token.replaceAll("-","");//存入Redis,key:token,过期时间10分钟redisUtil.set("repeatLimNo::"+token,token,20*60);PenguinLogThreadLocal.setParam(token);return token;}

java项目经验总结相关推荐

  1. 新手Java程序员找工作更看重Java项目经验?

    动力节点IT培训,全真项目实操实训,贯穿八大行业,彻底帮助学员摆脱纸上谈兵的尴尬,一技成,天下行. 新手Java程序员找工作更看重Java项目经验?这个问题,想必是很多学Java的朋友也特别好奇的地方 ...

  2. java项目经验行业_行业研究以及如何炫耀您的项目

    java项目经验行业 苹果 | GOOGLE | 现货 | 其他 (APPLE | GOOGLE | SPOTIFY | OTHERS) Editor's note: The Towards Data ...

  3. 分享一个获得Java项目经验的快速途径!

    Java作为世界上最受欢迎的编程语言,在多个领域都有非常深入的应用,使用Java编写的程序几乎可用于任何设备! 据统计全球范围内有超过30亿部设备运行Java,90%的互联网产品使用Java进行开发, ...

  4. Java项目经验——程序员成长的关键

    2019独角兽企业重金招聘Python工程师标准>>> Java就是用来做项目的!Java的主要应用领域就是企业级的项目开发!要想从事企业级的项目开发,你必须掌握如下要点: 1.掌握 ...

  5. Java项目经验是程序员成长的重要经验

    没有人愿意自己一辈子就满足于掌握了一些代码实现的技巧,别人告诉你要实现什么,你就用代码堆砌来实现别人的要求!你必须学会从整个项目的角度去思考!你必须学会假如你是项目经理,你该如何思考! 我在疯狂软件j ...

  6. Java项目经验——程序员成长的钥匙

    本文转载至:http://geek.csdn.net/news/detail/109880,像我这样的菜鸟应该多看几遍这样的文章,学起来才更加有动力和方向. Java就是用来做项目的!Java的主要应 ...

  7. java项目经验怎么写_模具工简历项目经验怎么写

    项目经验(案例一) 项目时间:2015-04 - 2015-05 项目名称:活动策划 项目描述: 项目介绍 通过策划一系列的活动来提高家具店的知名度,从而拔高家具店正式开业后的销售额. 我的职责 协助 ...

  8. java开发常用技术,java项目经验面试

    前言 关于技术人如何成长的问题,一直以来都备受关注,因为程序员职业发展很快,即使是相同起点的人,经过几年的工作或学习,会迅速拉开极大的差距,所以技术人保持学习,提升自己,才能够扛得住不断上赶的后浪,也 ...

  9. Java项目经验二:二手车系统

    1.项目简介 开发环境:IDEA+ MySQL + JDK1.8 + Git + Maven 使用技术:Spring Cloud + Mybatis Plus + MySQL + RocketMQ + ...

  10. java旅游系统项目经验_谁能跟我介绍一下Java 项目经验,刚进入这个行业。

    1. 简单地讲就是jsp就是一模板,用来生成html.一个jsp模板结合不同的数据就可以生成不同的html,浏览器只认最终的html.这种技术通常又称为动态网页,其它的像什么asp,php其实都是一个 ...

最新文章

  1. 使用spring initializr ( 4.快速创建springboot工程 )(入门结束)
  2. 【动画1】UIView动画
  3. PHP经典乱码“口”字与解决办法
  4. 学会python编程容易吗-老男孩学Python编程后薪资待遇高吗?
  5. Strings in the Pocket
  6. 安装visual studio(vs)后无法安装SQLserver问题的成功解决
  7. How is SAP CDS metadata retrieved from AG3 backend
  8. 软件工程讲义 3 两人合作(2) 要会做汉堡包
  9. 小程序中ajax返回数据,微信小程序调用接口返回数据或提交数据
  10. 影院平台搭建 - (7)读多写少数据的缓存
  11. 【软件工程习题答案】第八章 维护
  12. Win10安装Eclipse以及可能出现的问题
  13. 纯前端导出PDF分页截取问题处理
  14. 雨课堂计算机基础与应用大一,雨课堂试卷批量导入Word模板.doc
  15. 计算机组成与结构1800题,最新版数据结构1800题含完整答案详解
  16. 单代号网络图计算例题_一表多图(表格/横道图/网络图)让计划编制效率提高10倍...
  17. 美国大学倒闭危机!1/4高校或将破产,清华本科留学率下降
  18. 净化自己的内心,扫除内心的尘埃
  19. Rasa课程、Rasa培训、Rasa面试、Rasa实战系列之Toxic Language Detection
  20. 同样的实验室,硕士们进了BAT拿高工资,为什么博士却要挤破头进985高校?

热门文章

  1. multisim怎么设置晶体管rbe_multisim晶体管
  2. 无线通信里的 UAV
  3. 通过VC编程实现基于LAN的PC机与Tektronix示波器通信
  4. 【历史上的今天】7 月 3 日:人体工程学标准法案;消费电子领域先驱诞生;育碧发布 Uplay
  5. mysql5.5软件官方下载_MySQL5.5 64位下载
  6. 软件测试常见面试题汇总大纲
  7. Oracle数据恢复工具-ODU破解记录
  8. 华硕afudos刷bios_ASUS主板刷BIOS详细图解方法 包含windows和DOS两种环境
  9. mysql case when like_mysql 中casewhen用法
  10. 高等数学(第七版)同济大学 习题1-5 个人解答