Web开发笔记:JAVA
学了一年的JAVA了,再来重新总结一下JAVA
历史
语言特点
- 简单:相对于C,C++摒弃了难度语法
- 稳定强健:强类型, 内存管理,垃圾收集,异常处理,丢弃指针…
- 跨平台:解释型语言(编写完后为中间代码,必须在某个编译环境编译解释才能运行),JAVA程序运行的是时候必须靠虚拟机,虚拟机是运行在操作系统中的(不同JAVA程序通讯难)
- 面向对象:大系统
- 提供分布式特性:高速系统
概念
- JDK: JAVA开发工具包,编译,打包,运行,调试,反编译,大量库
- JNI:JAVA原生接口,与外部程序与Java交互,比如与C,C++,硬件(增加了风险性)
- JavaSE/JavaEE:社区驱动的“企业软件标准”
- JRE:JAVA运行环境
- JVM:运行的基本环境,实现跨平台,虚拟机技术(沙盒形式)
技术点
JAVA编译
- JAVA编译器先编译为中间码(可以打包为Jar/War,之后可以使用容器技术将 JVM包括在内)
- 目标机器上运行时使用JIT技术进行实时编译
Spring
主要的ioc,衍生出SSH,SSM,Springboot(框架的框架,可以将不同类型的构建整合进来)
- microservices:微服务,将常规的功能设计成内聚的服务,服务与服务之间相互调用,对于服务可以使用一些列手段进行负载均衡等,可以对服务管理服务控制,注册与发现等(进一步降低耦合,原本两个模块需要整合一起,而微服务两者是分离的,分别跑,只需可以通信)(解耦到功能)
- reactive:异步非阻塞,这种对于吞吐量需求大的有好处
- cloud:springboot演化出来springcloud,可以搭建云计算系统,十分灵活;microservices加持springcloud使得服务更好地管理
- web apps:就是搭建网页
- servrless:比microservices更细,甚至可以将方法不以完整的service发布,完全当成独立函数的发布出去(比如一种算法经常要变,那么只需要更新这个函数,而不是像微服务更新整个服务)(解耦到方法)
- event driven:事假驱动,如何根据不同的时间分配不同的资源
- batch:批处理,大数据的爆发离不开批处理
Spring的一些案例
-
Restful
-
restful web服务监控
-
定时任务
-
maven或者gradle
-
jdbc连数据库
-
文件上传(比如前端给文件后端)
-
权限认证
-
消息系统
-
图数据库(便于处理多对多关系)
-
input验证
-
安全认证(spring security)
-
数据处理
-
使用注解的方式来对数据库事务管理
-
数据持久层的接口
-
连接MongoDB
-
使用springmvc建网
-
使用springboot建网
-
jar包变war包
-
异步方法
-
取得数据直接用对用表示
-
前端配合
-
跨域访问
-
spring缓存
-
容器技术
-
使用idea
-
服务的注册与发现
-
配置中心
-
服务的路由与过滤
-
熔断技术
-
客服端的负载均衡(这个服务端是调用端)
-
MVC层次测试
-
restful生成接口文档
-
响应式
- 接口协议
-
数据流