能力说明:
了解变量作用域、Java类的结构,能够创建带main方法可执行的java应用,从命令行运行java程序;能够使用Java基本数据类型、运算符和控制结构、数组、循环结构书写和运行简单的Java程序。
暂时未有相关云产品技术能力~
码匠,编码的匠人,程序的艺术家。
MyBatis 是一款优秀的持久层框架,有自定义 SQL、高级映射等功能,支持 XML 方式或注解方式来配置映射。
Spring 的 AOP 中的一个核心概念是切点(Pointcut),切点表达式定义通知(Advice)执行的范围。
Spring 的 AOP 功能中一个关键概念是通知(Advice),与切点(Pointcut)表达式相关联在特定节点织入一些逻辑,Spring 提供了五种类型的通知。
IDEA(IntelliJ IDEA)不仅支持快速基于当前类创建单元测试,还支持代码测试覆盖率的统计,以及生成报告和标记测试运行命中的代码。
我们通过对线性表进行扩展实现常用的其他数据结构,比如限制线性表的一些基本操作来实现栈和队列。
线性结构是最基本和最常用的一种,它表示的是线性结构,元素之间存在一对一的关系,数据元素之间按照某种规定存在一个顺序关系。
算法复杂度用于分析算法运行所需计算机资源的量,需要的时间资源为时间复杂度,需要的空间资源为空间复杂度。 在判断一个算法的优劣时,可以抛开软件和硬件因素,只考虑问题的规模。编写程序前预先估计算法优劣,可以改进并选择更高效的算法。
在计算机科学中,数据结构(Data Structure)是计算机中存储、组织数据的方式。为什么数据结构和算法经常放在一起讨论?算法用来设计一种使用计算机来解决问题的方法。设计高效的算法又是怎么来实现的?在我们学习了计算机编程后,也要学习数据结构与算法这些基础内容。
Spring 的 AOP 功能是基于 AspectJ 实现的,支持使用 XML 方式定义 AOP 切面。
Spring 的 AOP 功能是基于 AspectJ 实现的,支持使用注解声明式定义 AOP 切面。
Spring 除 IoC 容器外的另一个核心功能是 AOP,面向切面编程是对编程结构的另一种思考。
Spring 提供了简单的接口来管理资源,并支持多种资源类型。
Spring 容器提供了事件管理机制,Spring 容器内部很多节点都会发布事件,也支持自定义事件。
Spring 通过 Environment 接口提供了容器的环境抽象,该接口包含两个关键部分 Profiles 和 Properties。
Spring 的核心是 IoC 容器,了解 Bean 的生命周期非常重要,这对 Spring 在项目中的应用和扩展都很有帮助。
Spring 容器中的 Bean 之间会有很多依赖关系,在注入依赖的时候,容器需要明确知道注入的是哪一个 Bean。
Spring 容器的配置方式有三种,在实际项目中,可能会遇到混合使用的情况,也可能需要从一种方式迁移到另一种方式。 《Spring基于 XML 配置的容器》 《Spring基于注解配置的容器》 《Spring基于Java配置的容器》
Spring 容器的元数据可以基于 Java 代码配置,它像 XML 配置一样不侵入源代码,同时也支持注解配置。 你可以在项目中任意选择哪种配置方式,或者多种方式共存。
Spring 容器的元数据可以基于注解配置,它比 XML 配置更简洁,而且提供了更多的上下文配置。 两种配置方式各有优缺点,XML 配置不会侵入源代码,配置修改后不需要重新编译源文件。 你可以在项目中任意选择哪种配置方式,或者两者混合使用。
Spring 的核心功能就是提供一个 IoC 容器,用于管理应用程序中的 bean,在容器中配置元数据来管理 Bean 之间的依赖关系,Java 程序中的类都可以交由 Spring 容器管理。
这一章讲解如何使用 Spring 来整合测试框架,并且讲解单元测试在 Spring 下的最佳实践,Spring 团队非常注重测试驱动开发,Spring IoC 也可以使得测试变得非常简单。
Lombok 是一种Java 实用工具,可以帮助开发人员消除冗长的重复代码,尤其是对于简单的 Java 对象。它在代码编译阶段就会自动生成相应的代码,所以对性能没有任何影响。
MySQL 是世界上最受欢迎的开源数据库。凭借其可靠性、易用性和性能,MySQL 已成为 Web 应用程序的数据库优先选择。我们在写 Demo 项目或者学习的时候,都经常会使用到 MysQL 数据库或集群,使用 Docker 能方便随时随地的搭建数据库环境。
Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,同时也提供了 IMAP/POP3/SMTP 服务,我们在学习的时候可以利用 Docker 来省去复杂的环境搭建流程,比如做负载均衡、反向代理等实验。
:单元测试(Unit Testing)是指对软件中的最小可测试单元进行检查和验证,一般要根据实际情况去判定其具体含义,比如在 Java 语言中,单元可以指一个类或一个方法。JUnit 是一个 Java 语言简单、开源的单元测试框架,在 Java 开发中比较流行且常用的测试框架,希望读者能通过这篇文章来深入了解 JUnit 的特性与使用。
单元测试(Unit Testing)是指对软件中的最小可测试单元进行检查和验证,一般要根据实际情况去判定其具体含义,比如在 Java 语言中,单元可以指一个类或一个方法。JUnit 是一个 Java 语言简单、开源的单元测试框架,在 Java 开发中比较流行且常用的测试框架,希望读者能通过这篇文章来深入了解 JUnit 的特性与使用。
面向切面编程(AOP)对编程结构提供了另一种思考方式,给面向对象编程(OOP)进行了补充。OOP 模块化的关键单元是类(Class),而 AOP 的模块化关键单元是切面(Aspect),切面实现的模块可以横切多个类型和对象,例如事务管理。AOP 框架是 Spring 的关键组件之一,Spring IoC 容器不依赖于 AOP,AOP 给 Spring IoC 提供了一个强大的中间件解决方案。
面向切面编程(AOP)对编程结构提供了另一种思考方式,给面向对象编程(OOP)进行了补充。OOP 模块化的关键单元是类(Class),而 AOP 的模块化关键单元是切面(Aspect),切面实现的模块可以横切多个类型和对象,例如事务管理。AOP 框架是 Spring 的关键组件之一,Spring IoC 容器不依赖于 AOP,AOP 给 Spring IoC 提供了一个强大的中间件解决方案。
后面我们会讲到很多种类的二叉树,它们都是为了弥补原有二叉树结构的缺陷或者解决一些实际问题而演变而来的,所以掌握好二叉树的基本操作对后面的学习是非常重要的。上一章已经讲到二叉树的三种存储结构:顺序存储、二叉链表存储和三叉链表存储,这里选择使用二叉链表存储来实现关于二叉树的基本操作。
SpEL(Spring Expression Language)是支持运行时计算和操作对象的表达式语言,它和传统的EL表达式语法相似,还提供了方法调用,字符串模板等更强大的功能。
JDK 提供了许多命令行工具来用于程序运行时的内存分析,这些工具能在处理应用程序性能问题、定位故障时发挥很大的作用。当 JDK 版本不同,操作系统不同,工具所支持的功能会有差别,这篇文章是基于Windows 10 的 JDK8 版本的环境。
JDK 提供了许多命令行工具来用于程序运行时的内存分析,这些工具能在处理应用程序性能问题、定位故障时发挥很大的作用。当 JDK 版本不同,操作系统不同,工具所支持的功能会有差别,这篇文章是基于Windows 10 的 JDK8 版本的环境。
单例模式是最简单的设计模式之一,它的核心就是类只存在一个实例,这在很多应用场景中有些类只需要创建一个全局对象,比如一个数据库连接,一个配置文件的资源,等等,可以节省不必要的内存开销。 单例模式设计时要注意两点: 类的构造方法私有化 定义公共静态方法(getInstance())来获取实例
工厂模式是创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,创建对象不会对客户端暴露创建逻辑,隐藏创建对象的详情,从而实现客户端与具体实现的解耦。工厂模式设计时需求注意的点: 工厂类提供公共的方法来创建对象,无论静态,而不是客户端直接创建 方法的参数可选,但参数只用来决定哪种实现,不应该存在业务参数 方法的返回一般是被创建的接口对象,也可以是抽象类或具体类 常见的工厂模式有工厂方法模式、简单工厂模式和抽象工厂模式等,并不要拘泥于哪种,在实际业务中根据需求设计。
排序是将一组数据元素序列重新排列,使得数据元素序列按某个数据项(关键字)有序。不管是在数据处理中,还是别的应用场景中,对数据的排序都是很有必要的。对于任意的数据元素序列,若排序前后所有相同关键字的相对位置不变,则称该排序算法为稳定的排序方法,否则为不稳定的排序方法。例如对下面数据做排序操作: 3, 2, 3, 4 -> 2, 3, 3, 4 带下划线的3的位置发生了变化,则该排序方法是不稳定的。
目前内存的动态分配与内存回收技术已经相当成熟,可能平时开发不用关注这些,当需要排查各种内存溢出、内存泄漏问题时,当垃圾收集成为系统达到更高并发量的瓶颈时,我们就需要对这些技术实施必要的监控和调节。 前面介绍了Java内存运行时区域,其中程序计数器、虚拟机栈、本地方法栈三个区域随线程而生,这些区域的内存分配和回收都是确定的,不用考虑回收问题。而Java堆和方法区则不一样,只有在程序运行期间才知道对象的情况,这部分内存的分配和回收都是动态的,垃圾收集器关注的就是这部分内存。
Java虚拟机存在自动内存管理机制,所以程序员不需要用代码去控制内存的使用,正是因为如此,程序出现内存异常问题的时候,如果不了解虚拟机是怎样使用内存的,会很难排查问题。所以,了解虚拟机的内存模型是很重要的
查找算法在计算机程序设计中占据着主要的核心位置,查找算法的效率直接影响着计算机程序设计与开发的结果与速度。本章主要会讲到顺序查找、二分查找、索引查找和哈希查找这四种查找算法以及效率分析。掌握了相关查找算法,不管是在代码编程计算机技术上面,还在日常生活中都会有很大的用处。
前面一章讲了栈的定义与实现,我们一样可以通过限制线性表的一些基本操作来实现另一种常用的数据结构---队列,这一章简单来讲讲队列的定义与实现。
栈是限定在表的同一端进行插入或删除的线性表,进行插入或删除操作的一端称为栈顶,另一端为栈底,插入数据元素的操作叫做入栈,删除数据元素的操作叫做出栈,它具有先进后出(First In Last Out,FILO)的特性。
假设我们有 n 个同类型数据元素的有限序列,记为: L = (a1, a2, a3, ..., ai, ..., an) 它就构成了一个线性表。前面说过任何一种逻辑结构都可以使用两种存储结构(顺序存储,链式存储)来实现,使用顺序存储时,会在内存中分配连续的空间来存储数据元素,在程序代码中经常使用数组来实现。但问题来了,很多时候我们无法知道到底预先分配多大的空间合适,如果数据量较大时,内存中不存在那么大的连续空间,所以会导致内存分配失败。这个时候,就可以使用链式存储来实现,具体选用哪种方案根据需求决定。
算法复杂度用于分析算法运行所需计算机资源的量,需要的时间资源为时间复杂度,需要的空间资源为空间复杂度。在我们判断一个算法的优劣时,可以抛开软件和硬件因素,只考虑问题的规模。编写程序前预先估计算法优劣,可以改进并选择更高效的算法。
在计算机科学中,数据结构(Data Structure)是计算机中存储、组织数据的方式。为什么数据结构和算法经常放在一起讨论?算法用来设计一种使用计算机来解决问题的方法。设计高效的算法又是怎么来实现的?在我们学习了计算机编程后,也要学习数据结构与算法这些基础内容。
密码学是数学和计算机科学的分支,同时其原理涉及大量信息论。密码学的发展促进了计算机科学,特别是在于电脑与网络 安全所使用的技术,如访问控制与信息的机密性。信息的加密几乎在所有的信息通讯中都是很有必要的,尤其是金融类、机密类信息。所以,了解密码学和加密算法对于开发人员来说,也是很有必须的。
Redis 是一个开源(BSD许可)的内存中的高性能Key-Value数据结构存储系统,它可以用作数据库、缓存和消息中间件。支持多种类型数据结构,包括字符串(String)、列表(List)、集合(Set)、有序集合(Sorted Set)和散列(Hash)等。
正则表达式(Regular Expression)是计算机科学的一个概念,它使用单个字符串来描述、匹配一系列符合某个句法规则的字符串,在现在很多文本编辑器或IDE开发工具里,正则表达式通常被用来查找或替换某个模式的文本。因此,灵活运用正则表达式,对某些问题可以另辟蹊径地快速解决。
Linux 操作系统是最受开发人员欢迎的电脑操作系统,现在市场上有很多个发行版本,由于 Linux 系统是开源的,所以任何人都可以免费下载安装。这篇文章以安装 Ubuntu 发行版系统为例,解决如何安装 Linux 操作系统,其他 Linux 发行版系统的安装都类似。
Windows 操作系统是最受欢迎的电脑操作系统,现在最新版本是 Windows 10 系统,这篇文章解决如何安装最新版本 Windows 10 操作系统。
Python的优势:语法简洁优美, 功能强大, 标准库跟第三方库灰常强大,建议大家事先了解一下Python的基础; unittest是python的标准测试库,相比于其他测试框架是python目前使用最广的测试框架。 Requests 是用Python语言编写,基于urllib,采用Apache2 Licensed开源协议的HTTP 库。它比urllib 更加方便,可以节约我们大量的工作,完全满足HTTP 测试需求。
前面说过,容器创建的文件保存在容器可写层中,这意味着: 移除容器后数据不存在,并且别的进程很难访问容器中的数据 容器可写层与运行主机紧密耦合,很难迁移数据 容器可写层需要存储驱动来管理,比数据卷直接访问主机文件系统性能低下