孤尽训练营打卡日记day21--第三周总结

前言

        半城烟沙,兵临城下,金戈铁马,为谁争天下。有人说,杀人太多,就会失去自我,而总是着急赶路,就会错过风景。今天一起来回顾一下我们第三周学了那些内容。

第一次课

无尘老师给我们介绍了一些java中容易踩的坑。

Java中浮点数据的处理

        浮点数在计算机中是一个近似的数,因为计算机本身是二进制的,在十进制转二进制的时候,有一些数会出现无限小数,所以浮点数在Java中是个近似数。所以我们在使用金额计算的时候,要使用int,如果一定要使用小数的话,使用BigDecimal存储。

浮点数常见的坑

  • 浮点数之间的等值判断,基本数据类型不能用 == 来比较,包装数据类型不能使用 equals 来判断
  • BigDecimal的等值比较应使用 compareTo() 方法,而不是equals() 方法
  • equals() 方法会比较值和精度(1.0 和 1.00 比较会返回false),compareTo会忽略精度
  • 禁止使用构造方法 BigDecimal(double) 的方式把 double 值转化为 BigDecimal对象

日期的处理

        Java 8 对日期新增了LocalDate、LocalTime、LocalDateTime、Instant 等API,并且线程安全。

日期格式化不同字符代表的含义

三目运算符高度注意类型对齐时,可能抛出因自动拆箱导致的NPE异常

方法参数校验的技巧,什么时候应该增加参数校验,什么时候不应该增加参数校验

面向对象思想

        万物皆对象,你所能看到的、摸到的、听到的都可以是对象。

四大特性

继承: 继承使子类能够继承父类,获得父类的部分属性和行为,子类能代替父类存在

封装:封装是一种对象功能内聚的表现形式,是功能之间的耦合度降低,更具有维护性。每个对象都包含他能进行操作所需要的所有信息,因此对象不必依赖其他对象来完成自己的操作(最少知识原则)

多态:多态表示不同的对象可以执行相同的动作,但要通过他们自己的实现代码来执行。子类可以使用 override 关键字,将父类实现替换为他自己的实现,这就是方法重写或者方法改写。

抽象:抽象类通常代表一个抽象概念,他提供一个继承的出发点。

第二次课

孤尽老师讲解Java中的容器,HashMap 和 AQS

Java中的容器框架

HashMap

HashMap的结构:

        主干是一个Entry 数组,Entry 是HashMap 的基本组成单元,每一个Entry 包含Node内部类。

HashMap 如何分配 容量的及 哈希算法。

ArrayList 中的 subList使用注意事项。

AQS 抽象同步队列

1、竞争的是state

2、两个队列,同步队列 和 条件队列

线程池

(在这一节课中,比较偏向源码,到现在我还是一个迷迷糊糊的印象。)

第三次课

刘雪松老师给我们介绍了oauth2,第三方授权登录

Oauth2 是什么?

        OAuth(开放授权)是一个开放标准,允许用户授权第三方移动应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容。比如在微信上打开京东的小程序,这个时候就会提示是否授权。

为什么要用?

原来cookie机制的不足

  • cookie 是不能跨域的,前后端分离分布式架构实现多系统SSO非常困难
  • 移动端没有cookie,所以对移动端支持不好
  • token 基于header 传递,部分解决了CSRF攻击
  • token 要比sessionId大,客户端存储在Local Storage 中,可以直接被JS读取

书山有路勤为径,学海无涯苦作舟。

猜你喜欢

转载自blog.csdn.net/qq_35056844/article/details/121345488