碎片知识1
1 这不是结束的开始,只是开始的结束
public class Application {
public static void main(String[] args) {
System.out.println("hello,world");
}
}
2 项目启动使用swagger-ui
http://localhost:8080/swagger-ui.html
项目启动后的访问地址。
3 elk日志系统
在微服务的服务器上部署logstash,对日志文件数据采集
将采集的数据输出到ElasticSearch,
Kibana读取 es 数据来提供页面可视化。
4 项目启动方式
4-1 菜单栏启动

4-2 maven命令启动
mvn spring-boot:run

4-3 打包Jar包
运行
java -jar hello.jar
5 native方法
在Java中,如果一个方法是native的,那
Java就不负责具体实现它,而是交给底层的JVM使用c或者c++去实现。
6 命令优先级
1-命令行
2-apollo
3-代码中配置文件
7 打包跳过单元测试
如果使用mvn来进行打包的话,那么打包的时候会自动帮我们进行单元测试的。
因此,我们有的 时候不想他打包的时候进行单元测试,就需要写以下的参数了:
mvn clean package -Dmaven.test.skip=true
或者,鼠标点击跳过单元测试

8-接口幂等实现
查询操作
唯一索引
token机制,防止重复提交
数据库的delete删除操作
乐观锁
悲观锁
Redis、zookeeper 分布式锁(以前抢红包需求,用了Redis分布式锁) 状态机幂等
9-方法的回调
类 A 的 a() 方法调用类 B 的 b() 方法
类 B 的 b() 方法执行完毕主动调用类 A 的 callback() 方法
10 为什么要有基本数据类型
因为这些类型使用频率高
Java提供了基本数据类型,
这种数据的变量不需要使用new创建,他们不会在堆上创建,
而是直接在栈内存中存储,因此会更加高效。
基本类型(int、double、long这种)是直接将存储在栈上的,
而引用类型(类)则是值存储在堆 上,栈上只存储一个对对象的引用。
java 中万物皆对象,除8种基础数据类型 (byte,short ,int,long,float ,double,char,boolean)以外都是Object的子类
11 包装类
Java是一种面向对象语言,很多地方都需要使用对象而不是基本数据类型。
比 如,在集合类中,我们是无法将int 、double等基本类型放进去的。
因为集合的容器要求元素是Object类型。
当我们把基本数据类型放入集合类中的时候,会进行自动装箱
包装类与基本数据类型进行比较运算,是先将包装类进行拆箱成基本数据类型,然后进行比较的。
两个包装类型之间的运算,会被自动拆箱成基本类型进行。
12-Arrays.asList()
Arrays.asList("dog", "cat", "tiger")
Arrays.asList 返回的 List 并不是 ArrayList ,不支持 add 等变更操作。
13-中台
比如你们部门需要造一个轮子
其它很多部门都要同样轮子,
那把这些轮子做成一个中台,大家来公用。
中台出现之前,由于团队的分散,我们总是在重复建设一个又一个的轮子。
而如今,几乎所有的互联网巨头都在建设自 己的中台,比如支付中台、直播中台、电商中台等。
如果要开发一个新的系统,我们根本不用从零开始,直接使用中台 资源就能很方便地完成,很快啊!
14-为何字符串常量池
字符串可以说是和 8 个基本类型一样常用的类型,甚至比 8 个基本类型更加 常用,
故而频繁的创建字符串对象,对性能的影响是非常大的,
所以,用常量池的方式可以很大程度上降低对象创建、分 配的次数,从而提升性能。
就是复用.
15-用泛型来代替object
在 Java 没有引入泛型前,都是采用 Object 表示通用对象,
最大的问题就是类型无法强校验并且需要强制类型转换。
虚拟机中没有泛型,只有普通类和普通方法,
所有泛型类的类型参数在编译时都会被擦除,
泛型类并没有自己独有的 Cl a ss类对象。
比如并不存在List
.class或是List .class,
而只有List.class。
16-一致哈希
主要用来解决分布式下,动态增删节点带来的问题
具有更好伸缩性,变动不用全量修改,只需要修改局部
17 属性包装类且名字前缀不要加is
18 前后端时间问题
其实最科学的建议统一使用时间戳来代表时间。这个是最完美的
Post请求参数在body中,需要反序列化成对象。
默认是jackson类库来进行反序列化,并不触发@DateTimeFormat注解机制。
这时我们就需要使用jackson的格式化注解@JsonFormat。
19-break,continue
总结:无论break,还是continue,使用判断的是外层循环i的变量,还是内层循环j的变量,
它控制的都是最里层的循环体的跳出
20-语法糖
语法糖的存在主要是方便开发人员使用。但其实,Java虚拟机并不支持这些语法糖。
这些语法糖在编译阶段就会 被还原成简单的基础语法结构,这个过程就是解语法糖。
21 可变参数
反编译后代码可以看出,
可变参数在被使用的时候,
他首先会创建一个数组,
数组的长度就是调用该方法是传递的实参 的个数,
然后再把参数值全部放到这个数组当中,
然后再把这个数组作为参数传递到被调用的方法中。
22 代码混淆
隔离Java程序
让用户接触不到你的Class文件
对Class文件进行加密
提到破解难度
代码混淆 将代码转换成功能上等价,但是难于阅读和理解的形式

浙公网安备 33010602011771号