Java 开发环境
Java 开发环境 📌 关键词: JAVA_HOME、CLASSPATH、Path、环境变量、IDE 下载进入 JDK 官方下载地址 ,根据自己的环境选择下载所需版本。 安装windows 环境的 jdk 包是 exe 安装文件,启动后根据安装向导安装即可。 Linux 环境的 jdk 包,解压到本地即可。 环境变量Windows计算机 > 属性 > 高级系统设置 > 环境变量 添加以下环境变量: JAVA_HOME:C:\Program Files (x86)\Java\jdk1.8.0_91 (根据自己的实际路径配置) CLASSPATH:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; (注意前面有个”.”) Path:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; Linux执行 vi /etc/profile ,编辑环境变量文件 添加两行: 12export JAVA_HOME=path/to/javaexport PATH=JAVA_HOME/bin:JAVA_HOM...
Spring 面试
Spring 面试综合篇不同版本的 Spring Framework 有哪些主要功能? Version Feature Spring 2.5 发布于 2007 年。这是第一个支持注解的版本。 Spring 3.0 发布于 2009 年。它完全利用了 Java5 中的改进,并为 JEE6 提供了支持。 Spring 4.0 发布于 2013 年。这是第一个完全支持 JAVA8 的版本。 什么是 Spring Framework? Spring 是一个开源应用框架,旨在降低应用程序开发的复杂度。 它是轻量级、松散耦合的。 它具有分层体系结构,允许用户选择组件,同时还为 J2EE 应用程序开发提供了一个有凝聚力的框架。 它可以集成其他框架,如 Structs、Hibernate、EJB 等,所以又称为框架的框架。 列举 Spring Framework 的优点。 由于 Spring Frameworks 的分层架构,用户可以自由选择自己需要的组件。 Spring Framework 支持 POJO(Plain Old Java Object) 编程,从而具备持续...
Java 容器之 List
Java 容器之 List List 是 Collection 的子接口,其中可以保存各个重复的内容。 List 简介List 是一个接口,它继承于 Collection 的接口。它代表着有序的队列。 AbstractList 是一个抽象类,它继承于 AbstractCollection。AbstractList 实现了 List 接口中除 size()、get(int location) 之外的函数。 AbstractSequentialList 是一个抽象类,它继承于 AbstractList。AbstractSequentialList 实现了“链表中,根据 index 索引值操作链表的全部函数”。 ArrayList 和 LinkedListArrayList、LinkedList 是 List 最常用的实现。 ArrayList 基于动态数组实现,存在容量限制,当元素数超过最大容量时,会自动扩容;LinkedList 基于双向链表实现,不存在容量限制。 ArrayList 随机访问速度较快,随机插入、删除速度较慢;LinkedList 随机插入、删除速度较快,随机访...
SQL 语法速成
SQL 语法速成 本文针对关系型数据库的基本语法。限于篇幅,本文侧重说明用法,不会展开讲解特性、原理。 本文语法主要针对 Mysql,但大部分的语法对其他关系型数据库也适用。 SQL 简介数据库术语 数据库(database) - 保存有组织的数据的容器(通常是一个文件或一组文件)。 数据表(table) - 某种特定类型数据的结构化清单。 模式(schema) - 关于数据库和表的布局及特性的信息。模式定义了数据在表中如何存储,包含存储什么样的数据,数据如何分解,各部分信息如何命名等信息。数据库和表都有模式。 行(row) - 表中的一条记录。 列(column) - 表中的一个字段。所有表都是由一个或多个列组成的。 主键(primary key) - 一列(或一组列),其值能够唯一标识表中每一行。 SQL 语法 SQL(Structured Query Language),标准 SQL 由 ANSI 标准委员会管理,从而称为 ANSI SQL。各个 DBMS 都有自己的实现,如 PL/SQL、Transact-SQL 等。 SQL 语法结构 SQL 语法结构...
Java 容器简介
Java 容器简介 容器简介数组与容器Java 中常用的存储容器就是数组和容器,二者有以下区别: 存储大小是否固定 数组的长度固定; 容器的长度可变。 数据类型 数组可以存储基本数据类型,也可以存储引用数据类型; 容器只能存储引用数据类型,基本数据类型的变量要转换成对应的包装类才能放入容器类中。 :bulb: 不了解什么是基本数据类型、引用数据类型、包装类这些概念,可以参考:Java 基本数据类型 容器框架 Java 容器框架主要分为 Collection 和 Map 两种。其中,Collection 又分为 List、Set 以及 Queue。 Collection - 一个独立元素的序列,这些元素都服从一条或者多条规则。 List - 必须按照插入的顺序保存元素。 Set - 不能有重复的元素。 Queue - 按照排队规则来确定对象产生的顺序(通常与它们被插入的顺序相同)。 Map - 一组成对的“键值对”对象,允许你使用键来查找值。 容器的基本机制 Java 的容器具有一定的共性,它们或全部或部分依赖以下技术。所以,学习以下技术点,对于理解 Jav...
Spring 4 升级踩雷指南
Spring 4 升级踩雷指南前言最近,一直在为公司老项目做核心库升级工作。本来只是想升级一下 JDK8 ,却因为兼容性问题而不得不升级一些其他的库,而其他库本身依赖的一些库可能也要同步升级。这是一系列连锁问题,你很难一一识别,往往只有在编译时、运行时才能发现问题。 总之,这是个费劲的活啊。 本文小结一下升级 Spring4 的连锁问题。 为什么升级 spring4升级 Spring4 的原因是:Spring 4 以前的版本不兼容 JDK8。当你的项目同时使用 Spring3 和 JDK8,如果代码中有使用 JDK8 字节码或 Lambada 表达式,那么会出问题。 也许你会问,为什么不使用最新的 Spring 5 呢?因为作为企业软件,一般更倾向使用稳定的版本(bug 少),而不是最新的版本,尤其是一些核心库。 更多细节可以参考: https://spring.io/blog/2013/05/21/spring-framework-4-0-m1-3-2-3-available/ spring 4 重要新特性Spring 4 相比 Spring 3,引入许多新特性,这里列举几条较...
Spring Web 综述
Spring Web 综述快速入门下面,通过一个简单的示例来展示如何通过 Spring 创建一个 Hello World Web 服务。 (1)pom.xml 中引入依赖 1234<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency> (2)定义 Controller Spring 构建 RESTful 服务的方法,HTTP 请求由 Controller 处理。 这些组件由 @RestController 注解标识。 【示例】下面的示例定义了一个处理 /greeting 的 GET 请求 12345678910111213141516import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.s...
Spring集成缓存
Spring 集成缓存中间件 Spring 中提供了缓存功能的抽象,允许你在底层灵活的替换缓存实现,而对上层暴露相同的缓存接口。 缓存接口Spring 的缓存 API 以注解方式提供。 开启注解Spring 为缓存功能提供了注解功能,但是你必须启动注解。你有两个选择:(1) 在 xml 中声明像上一节 spring-ehcache.xml 中的做法一样,使用<cache:annotation-driven/> 1<cache:annotation-driven cache-manager="cacheManager"/> (2) 使用标记注解你也可以通过对一个类进行注解修饰的方式在这个类中使用缓存注解。范例如下: 1234@Configuration@EnableCachingpublic class AppConfig {} 缓存注解使用Spring 对缓存的支持类似于对事务的支持。首先使用注解标记方法,相当于定义了切点,然后使用 Aop 技术在这个方法的调用前、调用后获取方法的入参和返回值,进而实现了缓存的...
Spring 集成调度器
Spring 集成调度器概述如果想在 Spring 中使用任务调度功能,除了集成调度框架 Quartz 这种方式,也可以使用 Spring 自己的调度任务框架。使用 Spring 的调度框架,优点是:支持注解@Scheduler,可以省去大量的配置。 实时触发调度任务TaskScheduler 接口Spring3 引入了TaskScheduler接口,这个接口定义了调度任务的抽象方法。TaskScheduler 接口的声明: 123456789101112131415public interface TaskScheduler { ScheduledFuture schedule(Runnable task, Trigger trigger); ScheduledFuture schedule(Runnable task, Date startTime); ScheduledFuture scheduleAtFixedRate(Runnable task, Date startTime, long period); ScheduledFuture...
Java 国际化
Java 国际化背景知识通讯的发达,使得世界各地交流越来越紧密。许多的软件产品也要面向世界上不同国家的用户。其中,语言障碍显然是产品在不同语种用户中进行推广的一个重要问题。 本文围绕国际化这一主题,先介绍国际标准的语言编码,然后讲解在 Java 应用中如何去实现国际化。 语言编码、国家/地区编码做 web 开发的朋友可能多多少少接触过类似 zh-cn, en-us 这样的编码字样。 这些编码是用来表示指定的国家地区的语言类型的。那么,这些含有特殊含义的编码是如何产生的呢? ISO-639 标准使用编码定义了国际上常见的语言,每一种语言由两个小写字母表示。 ISO-3166 标准使用编码定义了国家/地区,每个国家/地区由两个大写字母表示。 下表列举了一些常见国家、地区的语言编码: 国家/地区 语言编码 国家/地区 语言编码 简体中文(中国) zh-cn 繁体中文(台湾地区) zh-tw 繁体中文(香港) zh-hk 英语(香港) en-hk 英语(美国) en-us 英语(英国) en-gb 英语(全球) e...