学习这门课程首先至少需要会一门编程语言,最好是 Java 语言,因为接下来的示例程序会选择用 Java 语言编写。有一定的数学基础,可以理解一些数学定义。
简而言之:Hibernate 是一个 Java Jdbc 框架,用来简化 Java Jdbc 操作;Hibernate 也是一个ORM 框架,可以自动完成关系数据库中关系型数据到 Java 对象型数据的映射;当然,还可以说是一个持久化框架。以上说法其实是对完成同一件事情不同角度的诠释。Hibernate 的出现就是想让开发者的编码工作变得简单,这个简单指不需要在非核心逻辑编写上花费太多时间。
由于 Maven 是使用 Java 开发的工具,因此需要先安装 jdk。Maven3.6.3 版本需要 jdk1.7+ 版本来支持,本教程使用的是 jdk1.8 版本。Tips:jdk 的安装过程在这里我们就不多赘述了,同学们可以参考下慕课网相关 Wiki 进行安装。打开 cmd 运行窗口输入:java -version,如下图所示,能够正常查看 Java 版本信息即说明 jdk 安装成功:
本小节我们一起完成了第一个 Java 程序的执行,在这个过程中,我们了解了编译相关的知识,知道了使用 javac命令,可以将一个.java扩展名的源代码文件编译成.class扩展名的字节码文件,使用 java 命令,可以执行字节码文件。我们也对程序的基础语法有了大致的了解。如果你对程序的理解还有困惑,也不必担心,在后面的章节中,我们将具体学习 Java 的基础语法,随着知识的累积,你也将更加游刃有余地阅读、编写程序。
假设你的 JDK 安装目录是 D:\java\jdk1.8,可以右键单击"我的电脑",选择"属性"->“高级”->“环境变量”,新增环境变量:变量名:JAVA_HOME变量值:D:\java\jdk1.8如图所示:配置 JDK 环境变量完成之后在找到 PATH 变量,在 PATH 上追加:%JAVA_HOME%\bin;”将 JDK 路径添加的 PATH 当中,一定要记得最后的分号:记得最后的分号另外也可以通过 Windows 的终端命令行来完成配置,方法很简单,使用记事本打开 C:\autoexec.bat 文件并添加以下内容:set JAVA_HOME=D:\java\jdk1.8set PATH=D:\java\jdk1.8\bin;%PATH%
本章节会给出前后端简单代码,弱化容错性等增强性需求,重点描述前后端交互的过程和效果。本章节前端使用前面章节封装的 Ajax, 因此本章节代码不涉及封装 Ajax 的相关代码,需要了解的同学可以翻看前面章节。本章节会给出业务相关的前端代码, 前端使用 HTML、Css、和JavaScript,使用 moment.js 库进行时间的格式化。本章节提供 node 后端代码,使用框架为 Express。node 端会使用 MySQL包。本章节也提供相应的 Java 后端代码。本章节 Java 服务端使用 servlet 提供服务。引入了 fastjson 包进行 JSON 的一些列序列化和反序列化的操作;使用 mysql-connector-java 来进行 java 端数据库的连接和操作。
前面一节我们为大家介绍了什么是 Gradle?Gradle 是一个构建工具,它的构建脚本是基于 Groovy 或是 Kotlin 语言编写的。今天我们就来看下 Groovy 的基础语法。Groovy 结合了 Java、Python、Ruby 等当下几大流行语言的优点。它可以说是从 Java 中衍生出来的,为什么这么说呢?因为它的语法和 Java 非常的相似,它的文件也是可以编译为 .class 文件,而且可以使用 Java 的类库。
在 Kotlin 中的声明注解的方式和 Java 稍微不一样,在 Java 中主要是通过 @interface关键字来声明,而在Kotlin 中只需要通过 annotation class 来声明, 需要注意的是在 Kotlin 中编译器禁止为注解类指定类主体,因为在 Kotlin 中注解只是用来定义关联的声明和表达式的元数据的结构。Kotlin 注解声明package com.mikyou.annotation//和一般的声明很类似,只是在class前面加上了annotation修饰符annotation class TestAnnotation(val value: String)Java 注解声明package com.mikyou.annotation;//java中的注解通过@interface关键字进行定义,它和接口声明类似,只不过在前面多加@public @interface TestAnnotation { String value();}
本小结主要是介绍 Java NIO Selector 机制的工作原理。关于 Selector 机制,不仅 Java 支持,各大操作系统都有支持,是编写高性能服务器的利器。一般在依赖倒转模型中,充当动力源、反应器的角色。
大家好,今天我们开始一个新专题 —— Java Lambda 表达式。这是在 Java 8 中出现的一个新特性,但它并不是 Java 独有的,JavaScript、C#、C++ 等在 Java 8 之前就支持 Lambda 表达式的特性,现在的大多数程序语言也都支持 Lambda 表达式。这个专题中我们学习函数式编程的概念、Lambda 表达式的语法、以及如何在我们的代码中使用 Lambda 表达式。本文我们主要先介绍下 Lambda 表达式是什么?
前面我们介绍的 XPath 基本的语法和基本操作,下面我们通过 lxml 库,来熟悉一下 XPath 的使用。首先,我们需要一个测试文件,文件如下,文件名为 xpath_test.xml:<!--- 这是一个测试数据,方便我们后面进行解析--><div><ul><li class='item-0'><a href='a.html'>python item</a></li><li class='item-1'><a href='b.html'>java item</a></li><li class='item-inactive'><a href='c.html'><span class='bold'>C item</span></a></li><li class='item-1'><a href='d.html'>java item</a></li><li class='item-0'><a href='b.html'>java item</a></li><li class='item-0'><a href='b.html'>java item</a></li></ul></div>
我们知道 Java 是面向对象的编程语言,但为了便于开发者上手,Java 沿用了 C 语言的基本数据类型,因此 Java 数据类型被分为了基本数据类型和引用数据类型。对于简单的运算,开发者可以直接使用基本数据类型。但对于需要对象化交互的场景(例如将基本数据类型存入集合中),就需要将基本数据类型封装成 Java 对象,这是因为基本数据类型不具备对象的一些特征,没有对象的属性和方法,也不能使用面向对象的编程思想来组织代码。出于这个原因,包装类就产生了。包装类就是一个类,因此它有属性、方法,可以对象化交互。
在程序设计中,变量是指一个包含值的存储地址以及对应的符号名称。从定义上来看,变量大概可分为两部分:变量的名字和变量的值,可通过变量名来访问变量值。简单来说,变量就是存储数据的载体。对于 Java 语言来讲,Java 是一种强类型的语言,因此变量都必须有一个类型。在 Java 代码中,变量是长这个样子的:// =左侧的age是变量名,右侧的22是变量值int age = 22;
实际上 Java 中的动态代理实现已经非常精简了,所以在 Kotlin 在动态代理实现并没有特别不一样的,它和 Java 的实现没有不同。所以这里就不再重复实现,只是换了 Kotlin 语言实现没有什么不一样的。
慕课解释:mapper 是 Java 方法和 SQL 语句之间的桥梁。Java 接口方法与 SQL 语句以及 mapper 之间的关系如下图所示:
Java 有 8 种基本数据类型,Java 中的每个基本类型都被包装成了一个类,这些类被称为包装类。包装类可以分为 3 类:Number、Character、Boolean,包装类的架构图如下所示:
spring-boot 可谓是 Java 领域中最火的框架之一, 也是目前 Java 应用开发的事实标准,如果不会使用未免有些 out。本小节,我们将一起学习如何使用 spring-boot 来集成 MyBatis。
本小节我们学习了 Java 的基础语法。我们知道了 Java 语言区分大小写,类是一个程序的基本单位,所以说我们要编写 Java 代码,就要知道如何声明一个类,而类中的主方法是一个程序执行的起点。标识符是我们程序员在编程时所使用的名字,当我们为标识符命名时,一定不能使用 Java 中的关键字。理解了注释的概念和分类,另外也建议大家在编写代码的过程中多写注释,在学习别人代码的过程中多看注释。我们也将在后面的示例代码中加入大量的注释来帮助你理解程序。
我们在前面的小节中,已经学习了变量和运算符。有了这些前置知识,我们就可以学习表达式、语句和块了。运算符可用于构建表达式,表达式可以进行值的计算,它是语句的核心组成部分;而语句是指令式编程语言中最小的独立元素;多条语句又可以组成语句块。本小节我们将学习表达式的概念和常用分类,也将了解到什么是语句和块。
Java 语言的诞生,重新定义了面向对象编程(OOP)。Java 语言的创建之初,就定下了以下几个目标:简单易学,并且面向对象;必须健壮且安全;摆脱平台的依赖性;高性能执行;必须是可解释的,多线程的,动态的。
到这里有关 Kotlin 实现常见的单例模式就阐述完毕,这篇文章通过与 Java 对比,并用几种常见单例模式举例对比 Kotlin 和 Java 实现。下篇文章将继续设计模式中代理模式,看看 Kotlin 为代理模式带来什么神奇的魔法。
Java 注解(Annotation)又称为 Java 标注,是 Java5开始支持加入源代码的特殊语法元数据。Java 语言中的类、方法、变量、参数和包等都可以被标注。Java 标注可以通过反射获取标注的内容。在编译器生成class文件时,标注可以被嵌入到字节码中。Java 虚拟机可以保留标注内容,在运行时可以获取到标注内容。注解是一种用于做标注的“元数据”,什么意思呢?你可以将注解理解为一个标签,这个标签可以标记类、方法、变量、参数和包。回想我们学习继承时,子类若重写了父类的方法,可以在子类重写的方法上使用@Override注解:将@Override 注解标注在子类重写的方法上,可检查该方法是否正确地重写了父类的方法,如有错误将会编译报错。
我们都知道 Koltin 这门语言与 Java 有非常好的互操作性,并且扩展函数这个新特性可以很平滑与现有Java 代码集成。甚至纯 Kotlin 的项目都可以基于 Java 库或者 Android 中的一些第三方框架库来构建,所以扩展函数非常适合 Kotlin 和 Java 语言混合开发模式。在很多公司一些比较稳定良好的库都是 Java 开发的,也完全没必要去用 Kotlin 语言重写。但是想要扩展库的接口和功能,这时候扩展函数可能就会派上用场。使用 Kotlin 的扩展函数还有一个好处就是没有副作用,不会对原有库代码或功能产生影响。先来一个扩展函数的例子一睹为快,来实现一个给 Android 中 TextView 组件设置加粗的扩展函数://扩展函数的定义fun TextView.isBold() = this.apply { paint.isFakeBoldText = true}//扩展函数的调用activity.find<TextView>(R.id.course_comment_tv_score).isBold()
Go 语言为什么能在现有的成熟语言中脱颖而出呢?这要归功于它比 Java 还简洁的语法,接近 C 语言的编译执行速度,甚至还有不亚于脚本语言的开发速度。在目前最要求效率的当下,它无疑会是一匹黑马。但是和其它语言比起来劣势也很明显,因为它出现的时间短,学习资料少,第三方支持库虽然多,但是比起 Java 以及 C 语言还是远远不够。Go 语言不支持泛型,对于学习 Java 的开发人员来说一开始会很不适应。