知行合一
Github
顺翔的技术驿站
顺翔的技术驿站
  • README
  • ABOUTME
  • Computer Science
    • 数据结构与算法
      • 位运算以及位图
      • 随机数
      • 递归
      • 经典排序算法
      • 经典查找算法
      • 数组和动态数组
      • 链表
      • 栈和队列
      • 树
      • 哈希表
    • 计算机网络
      • 物理层
      • 数据链路层
      • 网络层
        • TCP
      • 运输层
      • 应用层
      • HTTP
        • HTTPS的原理
        • DNS详解
        • file协议
        • 邮件协议
    • 设计模式
      • 单例模式
      • 建造者模式
      • 原型模式
      • 工厂模式
      • 享元模式
      • 代理模式
      • 装饰者模式
      • 桥接模式
      • 适配器模式
      • 外观模式
      • 组合模式
      • 事件驱动
      • 有限状态机
      • 备忘录模式
      • 模板方法模式
      • 策略模式
      • 迭代器模式
      • 命令模式
      • 解释器模式
    • 加密与解密
      • 数字证书原理
      • cfssl
  • Programming Language
    • 编程语言学习要素
    • Java
      • 集合
        • List
          • ArrayList
          • Vector
          • Stack
          • LinkedList
        • Iterator
        • Set
          • HashSet
          • TreeSet
        • Map
          • HashMap
          • HashTable
          • TreeMap
          • LinkedHashMap
      • 常用API
        • 日期时间处理
        • System
        • Random
        • Arrays
        • Scanner
        • 格式化输出
      • java特性
        • java5特性
        • java8特性
        • java9特性
        • java10特性
        • java11特性
      • 并发编程
        • 线程基础
        • 线程同步:synchronized及其原理
        • 线程同步: volatile
        • 锁机制
        • 锁的分类与对应的Java实现
        • JUC:同步辅助类
        • JUC: AtomicXXX
        • 线程池
        • ThreadLocal详解
      • 测试
        • 使用JMH进行基准测试
      • JVM
        • 强引用、软引用、弱引用、虚引用
        • jvm内存模型
        • jvm优化
        • GC算法与回收器
        • 静态绑定与动态绑定
      • ORM
        • Mybatis
          • IBatis常用操作
      • Web编程
        • Servlet详解(一)
        • Servlet详解(二):request和response对象
        • Servlet详解(三):会话技术与Cookie
        • JSP详解(一):页面构成、EL表达式
        • JSP详解(二):九大内置对象
        • JavaWeb的编码问题
        • Thymeleaf
      • Velocity
      • Java日志框架总结
      • Spring
        • SpringIOC
        • SpringMVC
        • SpringBoot源码
      • 其他
        • Apache Commons Lang使用总结
        • 使用FtpClient进行ftp操作
        • Java PDF操作总结
        • Java使用zip4j进行文件压缩
        • Java解析Excel总结
    • JVM Language
      • Groovy
      • Scala
    • Kotlin
      • 变量和常量
      • 数据类型
        • 基本数据类型
        • 容器类型
        • 函数类型
        • null和null安全
      • 流程控制
      • 包
      • 面向对象
    • Golang
      • 关键字与标识符
      • 变量和常量
      • 数据类型
      • 函数
      • 常用API
        • 时间日期处理
        • 字符串操作
        • 正则表达式
      • 控制语句
      • 包package
      • 面向对象
      • 错误处理
      • 命令行编程
        • Cobra
      • 文件操作
      • 测试
      • 并发编程
        • sync包详解
      • 数据格式与编码
        • 使用encoding包操作xml
        • 使用encoding包操作json
        • 使用magiconair操作properties
        • 使用go-ini操作ini
      • 反射
      • Build Tools
        • Go Module
        • Go Vendor
      • 日志框架
        • zap日志框架
      • Web编程
        • Gin
    • JavaScript
      • 数据类型
      • ECMAScript
        • ECMAScript6
      • NodeJS
    • TypeScript
      • 变量和常量
      • 数据类型
      • 函数
      • 面向对象
      • 泛型
      • Build Tools
        • tsc编译
        • 与webpack整合
    • Python
      • BuildTools
        • requirements.txt
        • Ananconda
    • Swift
      • 变量和常量
    • Script Language
      • Regex
      • BAT
      • Shell
    • Markup Language
      • Markdown
      • Yaml
  • Build Tools
    • CMake
    • Maven
      • 搭建Nexus私服
      • maven使用场景
    • Gradle
  • Version Control
    • Git
      • Git工作流
      • Git分支管理
      • Git Stash
      • Git Commit Message规范
      • .gitttributes文件
    • SVN
  • Distributed
    • 分布式基础理论
      • 互联网架构演变
      • 架构设计思想AKF拆分原则
      • CAP理论
      • BASE理论
    • 一致性
      • 一致性模型
      • 共识算法
        • Paxos
        • Raft
        • ZAB
      • 复制
        • 主从复制
        • Quorum机制
        • Nacos Distro协议
      • 缓存一致性
        • 双写一致性
        • 多级缓存一致性
    • 事务一致性
      • Seata
      • 本地消息表实现方案
      • 关于dpad的事务问题的分析
    • IO
    • RPC协议
    • 序列化
    • Session共享
    • 分布式协调
      • Zookeeper
        • zk集群4节点搭建
    • 服务治理
      • Dubbo分布式治理
    • 分布式ID
      • 分布式ID生成策略总结
    • 分布式锁
    • 应用服务器
      • Tomcat
    • Web服务器
      • Nginx
        • Nginx的基本配置
        • ab接口压力测试工具
        • nginx模块
        • 随机访问页面
        • 替换响应内容
        • 请求限制
        • 访问控制
        • 状态监测
        • nginx应用场景
        • 代理服务
        • 负载均衡
        • 缓存
        • 静态资源服务器和动静分离
        • 附录
      • Kong
    • 缓存中间件
      • Caffeine
      • memcached
      • Redis
        • Centos下安装Redis
        • RatHat下安装Redis
    • 数据库中间件
      • ShardingSphere
      • MyCat2
    • 消息中间件
      • Kafka
      • RocketMQ
  • Microservices
    • 服务发现
      • Nacos注册中心
      • Consul
    • 配置中心
      • Apollo
    • 消息总线
    • 客户端负载均衡
    • 熔断器
    • 服务网关
    • 链路追踪
      • Skywalking
  • Domain-Specific
    • Auth
      • 有关权限设计的思考
      • 认证方式
      • JWT
    • 任务调度
      • QuartzScheduler
      • Elastic-Job
      • XXL-Job
      • PowerJob
    • 工作流
      • BPM
      • Activiti
      • Flowable
    • 规则引擎
      • Drools
  • Architect
    • DDD领域驱动设计
      • 三层架构设计
      • 四层架构设计
    • Cola
    • 代码设计与代码重构
      • 重构改变既有代码设计
      • 枚举规范化
      • 接口幂等
      • 限流
      • 历史与版本
      • 逻辑删除和唯一索引
      • 业务对象设计
    • 单元测试
      • SpringBoot单元测试实践
    • 项目管理
    • APM
      • SkyWalking
      • Arthas
    • 性能优化
      • 接口性能优化
    • 系统设计
      • 流程中台
      • 短信中台
      • 权限中台
        • 智电运维平台组织架构改造二期
  • Database
    • Oracle
      • Docker下安装oracle11g
    • IBM DB2
    • Mysql
      • 安装Mysql
      • 用户与权限管理
      • MySQL的逻辑架构
      • 存储引擎
      • 索引详解
      • MySql的列类型
      • MySql中表和列的设计
      • MySql的SQL详解
      • 锁机制
      • 事务
      • Mysql函数总结
      • MySql存储过程详解
      • MySql触发器详解
      • Mysql视图详解
      • Mysql中Sql语句的执行顺序
      • 配置MySql主从和读写分离
      • MySql的备份策略
      • MySql分库分表解决方案
      • MySql优化总结
      • MySQL实战调优
        • schema与数据类型优化
    • Mongo
  • File System
    • README
    • HDFS
    • FastDFS
    • MinIO
  • Linux
    • 常用的Linux命令
    • vim
    • Linux磁盘管理
    • Linux系统编程
    • RedHat
      • rpm包管理器具体用法
    • Ubuntu
      • Ubuntu下录制屏幕并做成gif图片
      • Ubuntu20.05LiveServe版安装
  • DevOps
    • VM
      • 新建一个新的Linux虚拟机需要配置的东西
      • VMware桥接模式配置centos
      • VMwareFusion配置Nat静态IP
    • Ansible
    • Container
      • Docker
        • Dockerfile详解
        • DockerCompose详解
      • Containerd
    • Kubernetes
      • 安装k8s
        • 使用Minikube安装k8s
        • centos7.x下使用kubeadm安装k8s1.21
        • ubuntu20下使用kubeadm安装k8s1.21
        • centos7.x下使用二进制方式安装k8s1.20
        • 使用DockerDesktop安装K8s(适用M1芯片)
      • 切换容器引擎
      • 使用k8s部署项目的流程
      • 集群维护-备份升级排错
    • Gitlab
      • GitlabCI/CD
    • CI/CD
      • ArgoCD
  • Big-Data
    • Hadoop
    • MapReduce
    • HDFS
  • Front-End
    • Android
      • Log的使用、自定义Log工具类
      • Android倒计时功能实现
      • 解决ViewDrawableLeft左侧图片大小不可控的问题
      • AndroidSQLite基本用法
      • View的生命周期
      • 工具类
      • WebView详解
      • ViewTreeObserver类监听ViewTree
      • 在onCreate中获取控件的宽高等信息的几种方法
      • View的foreground属性
        • MaterialDesign
          • BottomNavigationBar
          • CardView
          • Elevation高度、shadows阴影、clipping裁剪、tint着色
          • TouchFeedbackRipple波纹动画
      • Volley完全解析——使用、源码
      • Android围住神经猫的实现
      • LookLook剖析,架构概述——MVP、Retrofit+RxJava
      • Android性能优化之渲染
    • Browser
      • 浏览器的工作原理
    • HTML
      • DOCTYPE标签、XHTML与HTML的区别
    • CSS
      • CSS的继承性、层叠性、权重
      • CSS浮动float详解(一):标准文档流
      • CSS浮动float详解(二):使用float
      • CSS浮动float详解(三):清除浮动方案
    • Tools Lib
      • JavaScript 文件下载解决方案-download.js
      • js-url 用于url的js开源库
      • jsuri 用于操作url的js开源库
      • window offset
    • React
      • 模块化和组件
      • 组件的三大核心属性
      • 事件处理
      • 表单数据收集
      • 生命周期
      • DOM的diff算法
      • 工程化
        • 脚手架create-react-app
        • 工程结构和模块化
      • 路由
  • Design
    • 产品设计
      • 交互设计
由 GitBook 提供支持
在本页
  • 编程语言基本介绍
  • 注释
  • 变量和常量
  • 数据类型
  • 是强类型还是弱类型
  • 是动态类型还是静态类型?
  • 值类型与引用类型
  • 字面量
  • 基本数据类型
  • 复合数据类型
  • 基本运算符
  • 流程控制
  • 包与模块
  • 访问修饰符
  • 面向对象
  • 类
  • 抽象类
  • 类的封装
  • 继承
  • 对象的创建过程
  • 接口
  • 多态
  • 错误与异常处理
  • 泛型
  • 集合
  • 注解
  • 标准库
  • 时间日期处理
  • 正则表达式处理
  • 文件操作
  • 函数式编程
  • 网络编程
  • 并发编程
  • 命令行编程
  • 内存管理

这有帮助吗?

在GitHub上编辑
  1. Programming Language

编程语言学习要素

  • 输入 + 程序 = 输出

  • 程序 = 数据结构 + 算法

  • 算法 = 语句 + 流程控制

  1. 输入:做一件事所需的资源

  2. 程序:做一件事的方法

  3. 输出:你得到的结果

  4. 数据结构:对资源的合理化运用,为算法服务

  5. 算法:真正做这件事的步骤与逻辑

  6. 语句:做这件事的最小的步骤单位,也是做这件事的最小的一个步骤

  7. 流程控制,是程序的基本逻辑结构,也是做事的基本方法

    1. 顺序:代码是一步一步按照顺序走的,第一个语句不执行,永远不会执行第二条语句,做事也要一步一步来执行

    2. 分支:根据资源、情况的不同,而做出不同的操作

    3. 循环:有些事情,重复去做,是得到预期结果的必要条件

  8. 输入与方法的不同,会得到不同的结果

备注:

  1. 再庞大的系统都是由简单的语句构成的,甚至都是由0和1构成的

  2. 算法的优劣,直接决定了返回的结果以及返回的时间

  3. 先确定预期的结果,也就是确定方法的功能,才可以写一个想要的方法;所以要先有目标,才能开始行动

编程语言基本介绍

  1. 官方网址、相关资料地址

  2. 语言的历史

  3. 应用场景与运行平台

  4. 搭建本地开发环境

  5. Hello World

注释

  1. 单行注释

  2. 多行注释

  3. 文档注释

变量和常量

  1. 变量

    1. 声明变量,并初始化值

    2. 声明变量,不初始化。是否提供默认值?不初始化是否可用?

    3. 批量声明多个变量:不初始化、部分初始化、全初始化

    4. 是否有只读变量?(只读变量只能赋值一次,值不可修改)

    5. 是否有匿名变量?

  2. 常量

    1. 声明常量,并初始化值

    2. 常量的类型是否有要求?是否需要编译期间就需要确定常量的值?

    3. 批量声明常量

    4. 是否提供常量生成器

  3. 变量与常量的命名规则

  4. 变量、常量的存储位置

  5. 是否有变量逃逸行为?变量逃逸具体分析

数据类型

是强类型还是弱类型

强类型语言要求变量在使用前必须先声明其类型,且类型必须严格匹配,否则编译或运行时将会出错。而弱类型语言则允许在使用变量时自动进行类型转换。

是动态类型还是静态类型?

动态类型语言将类型检查延迟到运行时进行,而静态类型语言则在编译时进行类型检查。

值类型与引用类型

哪儿些是值类型,哪儿些是引用类型。

字面量

字面量表示
字面量会被推断的数据类型
备注

10

int

无

10L

long

无

  1. 数字类型字面量

    1. 字面量会被自动推断的数据类型

    2. 不同进制表示

    3. 字面量易读写法,比如java中,按照 _分割,以方便展示大数字

    4. 科学计数法

    5. NaN字面量

    6. 无穷大、无穷小字面量

  2. 字符、字符串类型字面量

    1. 单行字符串

    2. 多行字符串

    3. 转义字符串

    4. 原始字符串

    5. 字符串模板

  3. 布尔类型字面量

  4. 空值字面量

  5. 其他字面量

    1. 日期

    2. 正则

    3. 数组

    4. 范围

基本数据类型

原始的、基本的数据类型,用于表示和操作最基本的数据

  1. 数字类型

    1. 分类、大小、最大值、最小值、无符号有符号

    2. 数字类型之间的转换(显式转换、隐式转换)

    3. 数字类型算数运算符

    4. 数字类型位运算符

    5. 数字类型比较运算符

  2. 字符、字符串类型

    1. 转义字符

    2. 转义、原始字符串

    3. 单行、多行字符串

    4. 字符和字符串之间的转换(字符串拆分为字符、字符组装成字符串)

    5. 字符串拼接

    6. 字符串模板

  3. 布尔类型

    1. 其他类型是否可转换为Boolean?

    2. 布尔的逻辑运算

复合数据类型

例如:

  1. 指针

用于自定义数据类型的数据类型:

  1. 结构体

  2. 类、抽象类

  3. 接口

  4. 枚举

数据容器:

  1. 数组(长度不可变)

    1. 数组是否可变

    2. 数组的创建与表示

    3. 数组的长度

    4. 数组下标访问、数组下标修改

    5. 数组的循环

  2. 可变列表,一般称作list、切片

  3. 映射,一般称作map

  4. 元组,一般称作tuple

部分编程语言的函数也是一种数据类型,可以将函数存储在变量中:

  1. 函数

    1. 函数作为类型的标识

    2. 函数的定义

      1. 函数的命名规则

      2. 函数的参数

        1. 有参函数定义

        2. 无参函数定义

        3. 参数默认值

        4. 可变参数函数

        5. 输出参数

        6. 参数传递规则(值类型、引用类型传递问题)

      3. 函数的返回值

        1. 无返回值函数

        2. 单返回值函数

        3. 多返回值函数

    3. 调用函数

    4. 嵌套函数/局部函数

    5. 匿名函数

  2. 闭包(Closure),是指在函数内部定义的函数,该内部函数可以访问外部函数的变量,并且可以在外部函数返回后仍然保持对这些变量的访问。

    1. 闭包的定义

    2. 闭包的调用

    3. 闭包在该语言中的实现原理

  3. lambda表达式

基本运算符

  1. 赋值运算符

  2. 算数运算符

    1. 加法运算符

    2. 减法运算符

    3. 乘法运算符

    4. 除法运算符

    5. 取余运算符

    6. 自增运算符

    7. 自减运算符

    8. 一元负号运算符

    9. 一元正好运算符

  3. 位运算符

    1. 按位与

    2. 按位或

    3. 按位非

    4. 按位抑或

    5. 左移运算符

    6. 右移运算符

    7. 无符号右移运算符

  4. 组合赋值运算符(比如 +=)

  5. 比较运算符

    1. 等于、恒等

    2. 不等于、恒不等

    3. 大于,大于等于

    4. 小于,小于等于

  6. 逻辑运算符

    1. 与、短路与

    2. 或、短路或

    3. 非

    4. 异或(相同为true,不同为false)

  7. 三目运算符

  8. 空合运算符(是对三目的补充,用于判断目标是否为空值进行后续操作的)

  9. 区间运算符

    1. 闭区间

    2. 开区间、半开区间,比如左闭右开

    3. 单侧区间,比如0到正无穷

  10. 运算符的重载

流程控制

  1. 顺序结构,任何程序语句都是顺序结构

  2. 分支结构

    1. if 条件判断

    2. switch、when 选择判断

  3. 循环结构

    1. for循环及其扩展:fori、foreach、forin

    2. while循环及其扩展: while、doWhile

  4. 流程控制语句

    1. 跳出循环,比如break语句

    2. 继续循环,比如continue语句

    3. 调到标签位置,比如goto语句,java的break lable语句

    4. 贯穿,比如 fallthrough,switch语句中默认不贯穿的语言,需要使用该关键字贯穿

包与模块

访问修饰符

面向对象

类

  1. 定义类

  2. 定义构造器

  3. 定义类属性

  4. 定义类方法

  5. 定义成员属性

  6. 定义成员方法

  7. 属性访问控制(getter、setter、下标访问、属性名访问等)

抽象类

类的封装

  1. 封装示例

  2. 成员访问限制

继承

  1. 继承的实现

  2. 防止继承策略

  3. 重写类属性、类方法

  4. 重写实例属性、实例方法

  5. 防止重写策略

  6. 是否支持多继承,多继承的实现

对象的创建过程

接口

  1. 定义接口

  2. 实现接口

多态

  1. 多态表示

错误与异常处理

泛型

  1. 函数、方法泛型

  2. 类、接口泛型

  3. 泛型的上限与下限

  4. 泛型的原理

集合

注解

标准库

时间日期处理

正则表达式处理

文件操作

函数式编程

网络编程

并发编程

命令行编程

内存管理

上一页cfssl下一页Java

最后更新于1年前

这有帮助吗?