中文名称 | 关键字 | 封装类 | 注意事项 |
---|---|---|---|
整型 | int | Integer | |
长整型 | long | Long | java中最大的整数 |
短整型 | short | Short | |
字节 | byte | Byte | 这个是最小的整型数据 |
单精度浮点 | float | Float | |
双精度浮点 | double | Double | java中最大的数字 |
布尔 | boolean | Boalean | 逻辑判断 |
字符 | char | Charactor | 不是String字符串 |
注意事项:
- java中没有无符号数定义,所以java中最大值小2倍
- String(字符串不是基础数据类型)
- java处理数字型数据是按照int->long->double顺序处理,即使使用short和byte,java也是按照int处理,float默认按照double处理,float不能直接使用
- 自从JDK1.5 开始关键字和封装类通用,不过尽量不要用关键字和封装类直接==或者equals
-
if
- 介绍使用boolean 结果,处理分支,注意一个if只有一个分支,if else只有两个分支
- if(){}
- if (){}else{}
- if (){}else if{}
-
switch
- 一个多分支处理,不过建议使用枚举或者常量
- case 条件,不过只能是固定条件
- default 默认条件 ,只有case不能匹配到时才会执行
- break 如果没有return 用于退出switch
switch注意事项
- 自从JDK 1.7 开始 case可以使用字符串,但是不能使用封装类,请使用里面的API转换成关键字
- JDK 13 新增模式匹配功能,这个功能在很多语言中存在了,加上这个以后,可以很大程度上扩展语法
- 介绍,用于重复执行,一段代码
- for( ; ; )
- foreach for(Object object : Iterable/Array)
- Iterable是可迭代的统配,集合类中的List和Set都是可迭代
- Array数组
- foreach 不能再往遍历的数据中写入数据,也就是说foreach是只读的
- while(boolean)
- do{} while(boolean)
- break 跳出循环
- continue 跳过一次循环
- void 无返回值
- void无参数
- void 有参数
- 一个参数
- 多个固定参数
- 不定项参数
- 混合使用,不定项最多一个且在最后
- 有返回值
- 返回值为基础数据类型和封装类
- 返回值为封装类数组
- 返回值为封装集合
- 返回自定义类或者接口
- 返回自定义类或者接口数组或集合
- 参数处理
- 一个参数
- 多个固定参数
- 不定项参数
- 混合使用,不定项最多一个且在最后
-
类的定义,用来描述一种事物,他的实例化被称为对象,会分配堆内存
- 基础原则,高内聚,低耦合,单一责任
-
存在形式
-
class 基础类
-
final class 终结类 不能继承
-
abstract class 抽象类,不能直接实例化,专门用继承扩展
-
inner class 内部类
- 类中类
-
-
访问控制
- public 只要声明就能在任何外部类中访问
- protected 必须是继承的子类可以内部访问
- private 只能在类内部使用
- default 只能在同一个包下面使用,这个是默认就是上面三个都不存在时,jdk1.8 在接口上有特殊定义
-
接口
- 一种特殊的存在,使用上与抽象类相似,在JDK1.8以前,可以说只有声明,但是1.8以后增加默认实现default功能,简单来说就像抽象类了
-
反射
-
自省
-
应用实战
-
集合类
- List
- Set
- Map
- Iterable
- Collection
-
String三剑客
- StringBuilder
- StringBuffer
- StringJoiner JDK8 新增
-
IO类
- IO是两个部分,I-> Input,O->Output,
- 使用注意 In和Out两个是相对概念,如果是程序往外输出就是Out,接收方就是In
- 字节流 InputStream和OutputStream
- 字符流 Reader和Writer
- 随机流
- NIO与BIO(NIO非阻塞IO,BIO阻塞IO,我们常用的是阻塞IO,所以一般实际使用的时候,非常占用资源)(NIO部分我自己还没有学习)
-
线程
- Thread
- Runnable
- Callable
- Future
- JUC 并发工具
-
socket(主要是TCP和UDP内容,还有基础工具类使用)
-
GUI(已过时,基本不会学了)
-
JDBC
- 用于关系型数据库连接统一接口
- 适用数据库 MySQL,Oracle,SQL server ,Postgres,MariaDB
-
Servlet
- Java web基础 最新版本4.1
- 域对象(九个,目前常用五个个)
- request 请求
- response 响应
- session 回话,用于保存用户信息
- application 全局信息
- out 输出,一般是用在JSP或者模板上,现在基本上只是用来输出JSON或者XML
- filter 过滤器,又称连接器
- listener 监听器,用于全局动态配置
-
JDK8 特性
-
Stream API
-
Function 从JDK8开始可以直接把函数作为参数使用了,总计六个扩展
-
Optional 可选放空判断
上面三个是组合使用的
-
-
JDK9 特性(no LTS,非长期支持下同)
- 模块化 没什么卵用
- JShell 即时编程
- 增加HTTP 客户端
- 增加RX编程API
-
JDK10 特性(no LTS)
增加 var自动推断关键字,这个关键字必须实例化,如果是低于这个版本可以用lombok的扩展
-
JDK11 特性(LTS)
增加ZGC(实验性)
扩展Stream
-
JDK12 特性(no LTS)
switch扩展(实验性)
-
JDK13 特性(no LTS)
switch 模式匹配
- Apache Commons 主要是一些方便的工具集
- Jadd 工具及扩展
- Google Guava 主要是集合,缓存扩展,功能大量使用建造者模式
- Hutool国内集成不错的
- Java Web
- Spring
- Spring
- Spring MVC
- Spring Boot
- Spring MVC
- Spring Webflux
- Spring Cloud
- 微服务应用
- Spring Cloud Data Flow —— ETL工具
- Spring Cloud Function —— Serverless
- Spring 生态圈
- Spring Data
- Spring Data JDBC
- Spring Data JPA
- Spring Security
- Spring Cache
- Spring Session
- Spring Task
- Spring AMQP
- Spring Kafka
- Spring Boot
- 基础组件
- 自定义Starter
- Spring Data
- 技术栈
- Spring Servlet
- Spring Reactor
- Mybatis
- 基本使用
- 功能扩展(拦截器,插件机制)
- 常用扩展
- Pagehelper
- SQLHelper
- TkMapper
- Mybatis Plus
- Hibernate
- Spring
- Spring
- 大数据
- Hadoop
- HDFS
- Yarn
- MapReduce
- HBASE
- Hive
- Spark
- Scala API、Python API、Java API
- Spark RDD
- Spark SQL
- Spark Straming
- Flink
- Java API 、Scala API
- Flink Stream
- Flink SQL
- Solr与ES
- Hadoop
- Android
- Java 和 Kotlin
- 其他扩展
- Groovy与Grails(全栈开发框架)
- Scala与Play(全栈开发框架)
- Helidon(Micro Profile 基于Java EE定制的微服务与云原生开发组件)
- Micronaut(Grails作者做的微服务框架)
- quarkus(基于Kubernetes 的Java微服务框架,由Kubernetes的运维组织制作)
- 关于Java是分成Java语言和JVM两个部分只要是能编译成JVM使用的字节码就能使用使用JVM环境
- Kotlin
- 由目前最流行的Java IDE工具IDEA的开发商Jetbrain开发的语言,推出之后得到谷歌深度支持成为安卓第一开发语言,而且Spring官方也深度支持,另外很多其他框架也在深度支持,所以现在做java的不单单是学习Java一种语言了,必要时候也得学习下Kotlin,他和Java是100%兼容的,所以基本上能够无缝使用java的依赖库,可以使用Maven和Gradle构建环境,不过比较建议使用Gradle构建
- 相比Java 最大的进步主要是协程结束,还有一些灵活定义
- Kotlin生态
- Kotlin JVM
- 也就是在JVM上运行
- Kotlin JS
- 使用Kotlin JVM语法配置JS和TS的API实现,可以在浏览器和Node上运行
- Kotlin Native(试验中)
- 主要是面向无虚拟机环境使用,比如IOS
- Kotlin Data Science(新增)
- 这个是新增功能,开始挑战Python
- 总结,不服就干,生死看淡
- Kotlin JVM
- Scala
- 一个高扩展JVM语言,其实还有JS版本,不过主要是使用JVM版本,这个语言灵活度很高,不过有些地方概念深,不好入门,入门的话灵活度很强,就是概念多,灵活度高,所以入门难,主要是用在Spark分布式计算上
- 优势是高扩展
- 国内除了使用在Spark上,其他很少使用
- Groovy
- JVM脚本语言,作者也是看着Java表达繁琐,所以想像JS那样简单直接,所以做了Groovy,不过现在Groovy这个语言用的很少了
- 加入函数式语法和模板语法
- 当前现状,除了Gradle 和Grails 其他的平台很少使用了
-
Maven
- Maven使用
- 创建项目
- basic
- 基础版本
- archtype
- 模板版本
- 常用
- WEB
- basic
- 生命周期
- 三个
- 清理生命周期
- pre-clean 预清理
- clean 清理
- post-clean 清理后
- 默认生命周期
- process-resources 复制并处理资源文件,至目标目录,准备打包。
- compile 编译项目的源代码。
- process-test-resources 复制并处理资源文件,至目标测试目录
- test-compile 编译测试源代码
- test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。
- package 接受编译好的代码,打包成可发布的格式
- install 将包安装至本地仓库,以让其它项目依赖
- deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享。
- 站点生命周期
- pre-site(预站点):执行一些需要在生成站点文档之前的工作。
- site(站点): 生成项目的站点文档。
- post-site(后站点):执行一些需要在生成站点文档之后完成的工作,并且为部署做准备。
- site-deploy(站点部署):将生成的站点文档部署到特定的服务器上
- 清理生命周期
- 插件
- 有些通用操作有可以使用专用插件,这个也是配合生命周期来的,maven自己也提供了很多默认的插件
- 默认插件
- clean
- compile 编译插件,提供基本的编译功能,比如java版本
- package 打包
- jar 打包成jar包,jar分成lib和exe两种类型,exe的要配置mainClass
- war javaweb特制的jar,现在基本上没有用的了
- shade 定制打包
- denpendency 依赖管理
- install 将package打包以后的jar放入本地maven仓库
- deploy 将本地仓库的jar推送到远程仓库,一般用于企业仓库私服
- 常用插件
- versions 用于模块的版本控制,依赖升级等
- 多模块
- maven是支持多模块module的,而且可以多级嵌套
- 预配置
- profile
- 构建语法 XML POM
- 三个
- 使用 mvn
- 创建项目
- MVNW
- 解决问题 mvnw是为了解决本地没有maven或者不满足版本要求使用的,使用时会自动下载对应的maven版本进行上面的生命周期操作和插件操作
- 生成 maven官方未提供生成,不过也基本上不用担心这个我用了2年基本没发现不兼容,可能是现在maven整体定型和稳定了
- 使用 mvnw 加上原来mvn命令即可
- Maven使用
-
Gradle
- Gradle使用
-
创建项目
- basic
- java
- groovy
- kotlin
- cpp
- swift
-
生命周期
-
Initialization
-
Configuration
-
Execution
-
-
basic project
-
插件
-
多模块
-
构建语法
- Groovy DSL
- Kotlin DSL
-
- Gradlew
- 解决问题 同 mvnw,gradle本身可以生成,gradle每个大版本都有API变化,所以为了防止不兼容所以经常使用这个
- 生成 gradle wrapper
- 使用 gradlew 加上gradle基本命令
- Gradle使用
-
Maven和Gradle对比
- Maven 约束规范严格,插件多,省资源,因为使用XML约定,所以语法上比较啰嗦
- Gradle 语法灵活,构建快,但是冷启动慢,大项目因为要常驻一个java后台,所以比较费内存,小内存慎用,使用Groovy或者Kotlin的定制DSL语法,使用灵活高效,可以使用必要的编程特点实现
-
Spring
-
Spring
- 简介:一个用于快捷依赖注入的框架,核心内容是IOC(控制反转)和AOP(面向切面)
- IOC:一个注入模式,核心是工厂模式和单例模式,这个有多种模式,如果不和MVC一起用可以有单例和原型模式,加入Web后可以用Session和Request
- APO:核心是装饰器模式,用于整个方法执行过程的包装监控,经典使用就是MVC和事务处理
- Reactor:Spring 5.0 新增技术栈,以观察者模式实现异步高吞吐量技术,不是直接提升性能,而且将并发能力提升
-
Spring WEB
- Spring MVC
- 简介:Spring中 Web模块扩展,可以直接实现HTTP访问,使用Servlet标准实现
- Spring WebFlux
- 简介:Spring中 Web模块扩展,可以直接实现HTTP访问,全新Reactor技术栈实现
- 其他扩展
- Struts
- Spring MVC
-
Spring JDBC与Spring ORM
- 简介:Spring提供的基本关系数据库访问功能
-
Spring Data
- 简介:Spring 在JDBC和ORM基础上增加的统一访问功能
-
Spring Cache与Spring Session
- Spring Cache
- 简介:缓存抽象,用于数据缓存
- Spring Session
- 简介:用于Session管理控制
- Spring Cache
-
Spring Security
- 简介:Spring自己的权限框架,细粒度很高,可以与Spring Session无缝组合
-
Spring Boot
- 简介:以约定大于配置方式实现自动化配置的方案,目前主要方案,提供可执行jar方式部署
-
Spring Cloud
- 简介:在Spring Boot基础上扩展出来的微服务方案
-
Spring On K8S
-
-
Hibernate
- 简介: 一个持久框架,提供常用数据库的快捷操作,提供分页列表操作,但是没有分页模型
- JPA :JPA是个Java 的标准,用于持久层实现,他的第一实现就是Hibernate,但是Hibernate也增加了自己的东西
- Spring Data Jpa :Spring Data 组件之一,在Jpa上封装
-
Mybatis
- 简介 一个持久层框架
- Mybatis Mapper:Mybatis扩展 ,一个Mybatis单表操作框架,使用类似Mybatis 逆向工程的Example风格编程
- Mybatis Plus: Mybatis 扩展,这个扩展做的应该算是非常好了,主要是集成了分页
- Mybatis Enhance:Mybatis扩展,作者仿造Spring Data Jpa和QueryDSL 风格制作,需要使用生成器
- FastMybatis: Mybatis 扩展,单表操作方便,提供分页功能,只限制为单表
- PageHelper: Mybatis 分页助手,直接能在mybatis查询时实现分页,提供分页模型
- SqlHelper:Mybatis 分页助手,可以转换为PageHelper 风格,提供Mybatis Plus集成
- Pageable:Mybatis 分页助手
- 特殊用法 插件机制,可以实现自动添加功能
- 类型处理器,比如JSON,Array的处理
-
JOOQ
- 简介:以Fluent API 风格进行数据库操作,跟使用SQL基本相同,提供分页列表,但是没有分页模型,只有Mysql和Postgres时免费使用,Spring Boot 提供自动配置
-
Query DSL
- 简介:一个通用安全查询框架,有JDBC,JPA等多个版本,其中Spring Data Jpa 提供扩展接口
-
数据库中间件
- Apahce Sharding
- 简介 一个数据分片框架
- 使用 根据官方说明使用即可
- bug 主键策略一直是个问题
- MyCat
- Apahce Sharding
-
Redis
-
MongoDB
-
ElaticSearch
-
CouchBase
-
FluxDB
-
Hadoop
- 简介:通用计算分析,储存框架
- 计算
- MapReduce, 离线计算,模型已经过时,同时性能低
- Hive,目前Hive已经基本放弃MapReduce了
- 储存
- HDFS, 分布式文件系统,可以多副本,一般用于大数据缓存,一次写入,多次读取
- HBASE, 在HDFS基础上建立的高性能列族数据库
- Hive, Hive可以说是计算也是一个结构化数据储存
- ETL 数据抽取,转换、加载
- Sqoop 分成两个版本,两个版本几乎完全不同,用于多个数据源直接ETL
- Flume 日志收集ETL
-
Spark
-
Flink
1.介绍
结构化查询语言,广泛应用于数据库软件中,用于查询统计增删改
2.标准定义
SQL的标准不是一直不变,现在新版本的标准中增加了JSON,Array,开窗函数等定义,但是并不是所有库都实现了
3.学习
- 整体分成四个部分
- DCL 权限控制 这个很多是使用工具来做,不过Oracle要使用SQL配置,不同数据库完全不同
- DDL 结构定义 一般用工具做,还有关系生成公具做,不同数据库,总体一样,数据类型不一样
- DQL 查询统计 最常用的 select,不同数据库存在自己特异的查询统计函数
- DML 数据操作 也就是增删改
4.常见数据库与相关
- 数据库:MySQL(标准SQL),Oracle(PLSQL+标准SQL)、SQL Server(TSQL+标准SQL)、PostgresSQL(PSPLSQL+标准SQL)、MariaDB(标准SQL)
- 仓库类:Hive
- 类SQL库:Cassandra
5.误区
- 拥有SQL或者类SQL解析执行能力的数据库,都有自己特有的部分和公共基础的部分,基础实现都不同,部署方式也有差别
6.具体数据库
- MySQL
- 最流行数据库
- 功能实现基本按照标准来
- Oracle
- 大型数据库代表,在高性能服务器上能够成分发挥性能,不过授权非常规
- 功能强大
- SQL Server
- 第三大数据库,由微软开发,在分布式上有点优势,应用与企业项目和工业项目多
- Postgres
- 被称为最先进数据库,因为他是实现SQL标准最完善的,同时他是完全开源的,被称为开源的Oracle
- 了解发行版
- RH 红帽
- Federa 红帽弄得专门用于云原生的发行版
- CentOS 红帽源码重编版本
- Debian
- Ubuntu 最流行的桌面Linux
- 区别红帽和Debian是两个不同的大发行版,因为内部实现不相同
- 基础命令
- mv 移动文件或者重命名问价
- mv 源文件或者目录 新文件名或者目录
- cp 拷贝文件
- cp 源文件或者目录 新文件或者目录
- rm 删除
- -r 删除目录
- -f 强制删除
- 常用 rm -rf 组合使用,但是切记不要早root权限下使用 rm -rf /*
- ln 软链接(与windows的快捷方式一样就是个指针)
- mv 移动文件或者重命名问价
- 安装软件
- yum (红帽系,cent os,federa,rhel)
- apt(debain系,debain,Ubuntu)
- 账户与授权
- group 用户组
- groupadd
- groupdel
- groupmod
- user 添加账户
- useradd
- userdel
- usermod
- chmod 授权
- 三组RWX
- 用户 u
- 组 g
- 同组 o
- 使用
- chmod -R 777 目录或者文件
- 三组RWX
- chown 授权所属用户
- chgrp 授权所属组
- group 用户组
- 压缩与解压缩
- tar
- 参数
- -c 创建压缩包
- -x 解压缩
- -z tar.gz
- -j tar.bz
- -f 文件名
- -O 输出目录
- 参数
- zip
- 安装unzip
- rar
- tar
- 打包镜像,不过现在主要是容器化了
- 集中式
- 全集中
- 垂直分离
- 集群负载均衡
- 垂直分离+集群负载均衡
- 分布式
- SOA
- MSA
- FSA(Serverless 核心点)
- JS Javascript
- TS TypeScript
- Node 基于Chrome V8 引擎制作的服务端JS运行环境
- 这个是个标准定义,但是并不是完全实现,语法很灵活,受不了
- Express Web开发框架
- Koa Web开发框架,Express 团队新作
Cordova
Electron
Flutter由谷歌开发的通用应用层框架,一套语法,多端开发,使用Dart语言
IOS是苹果开发的手机iPhone的操作系统,目前iPad使用的操作系统改名为iPad OS,电脑Mac系列成为Mac OS,Swift是由苹果自己开发的用于自己平台的开发语言,目前已经开源,Windows平台非官方支持
- 关于人工智能为什么使用Python的误解,这个主要是Python在发展过程长期被用于数据科学计算,加上语法简单,产生了相关库特别多,但是Python几乎所有与人工智能相关的组件都是有更高性能的语言开发,加上Python的壳,所以Python常常被说成胶水语言
- 一般用于做报表用
由谷歌开发,开发人员为C语言作者,所以性能很高,是个用基础软件开发的语言,特别是多核心并发并行上有特殊之处,不过针对对象化、泛型、依赖管理是个劣势,主要是用于容器软件(Docker,Kubernetes ),区块链
新语言,微软将用它重构基础组件,这个我看了评论确实不错,不过微软重构是自己在Rust 的基础上改进,就像微软喜欢Java,自己弄了个.Net,这个新语言的维护者就是C#的作者
这个语言和python基本一个性质,其实主要是Vue那边有个CSS框架
-
- 忽略大小写
-
maven配置
-
gradle配置
-
常用插件
- lombok
- allsetter
- mybatiscodehelperpro(付费)
-
快捷键
- 配置
- maven
- gradle
- 常用插件
- 快捷键