记录

Effective Java 条款1

读书笔记  2019年11月17日

ITEM 1: Consider static factory methods instead of constructors

属于 “创建和销毁对象” 那章。静态工厂方法跟“四人帮”设计模式里面的工厂方法模式是不同的。

阅读更多📰

Java 并发

基础内容  2019年11月15日

Concurrency 并发

Synchronized 语句块

package synchronizing;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class SheepManager {
	
	private int sheepCount = 0;
	
	// private void incrementAndReport() {
	private void incrementAndReport() {
		synchronized(this) {
        System.out.print((++sheepCount)+" ");
        }
	}

	public static void main(String[] args) {

		ExecutorService service = null;
		try {
			service = Executors.newFixedThreadPool(20);
			
			SheepManager manager = new SheepManager();
			for(int i = 0; i < 10; i++) 
				service.submit(()-> manager.incrementAndReport());
			} finally {
				if (service != null) service.shutdown();
			}
	}
}

使用 Monitor 或称为 Lock,使用 synchronized 的时候,注意🔒的对象是那个。保证同步,就要去要锁同一个对象。

阅读更多📰

升级到 Java SE 11 开发者考试大纲

考点准备  2019年11月14日

升级到 Java SE 11 开发者考试大纲

Understanding Modules

  • Describe the Modular JDK
  • Declare modules and enable access between modules
  • Describe how a modular project is compiled and run
阅读更多📰

Java 中级试题

记录过程  2019年11月11日

你们的试题要求

中级试题

使用我们的脚手架工具生成项目mini-system,实现一个系统最基本的功能:用户认证+权限控制,要求:

  • 根据RBAC模型进行数据库设计
  • 用户密码非明文存储
  • 使用JWT进行认证控制
  • 使用你喜欢的框架实现接口级的权限控制
  • 为重要的逻辑添加单元测试保护

考虑到工作量的问题,不强制要求实现数据的CRUD相关接口,你可以直接往数据库中添加数据来测试上述功能。

阅读更多📰

JDK 的 jpackage 早期预览版

Java 应用新的打包方式  2019年11月11日

在 Windows 测试

jpackage --type exe --name javafx-library --description "Demo of jpackage" --vendor "Zhao Wentao" --app-version 0.0.1 --input input --dest output --main-jar app.jar --win-shortcut --win-menu

需要 Wix Toolsets

阅读更多📰

Java 多线程编程

回顾 Java 多线程编程的基础知识  2019年11月7日

多线程编程

Java 的线程模型

线程的优先级
线程同步问题
线程的消息机制
Thread 类 和 Runnable 接口
阅读更多📰

Java Lambda 表达式

深入理解 Lambda  2019年11月6日

Lambda Expressions

Introducing Lambda Expressions

Lambda Expression 基础
函数式接口
一些函数表达式例子

演示一个简单的 Lambda 表达式

// Demonstrate a simple lambda expression. 
 
// A functional interface. 
interface MyNumber { 
  double getValue();  
}

使用 Lambda 表达式

阅读更多📰

Java 泛型回顾

深入理解泛型  2019年11月4日

Generics

JDK 1.5 版本开始引入,加强了类型安全(Type safety),强化了语言本身,更加强化了集合框架(Collections Framework)。Java 8 开始加入 Lambda、Stream 更加进一步增强了语言的表达能力。

什么是泛型?

泛型(Generics)意思是参数化类型(Parameterized types)。泛型允许在创建类、接口和方法的时候,以提供参数的形式指定其能操作的数据类型。它的对象是类、接口、方法。这三者都可以泛型化。

在没有泛型特性之前,可以通过 Object 类实现泛型编程,但是不能保证类型安全。

阅读更多📰

回顾 protected 访问修饰符

重读一下 OCA Guide 访问控制符内容  2019年11月2日

使用 protected 访问控制符

这是基础内容了,但是不能轻视,越基础越要清晰理解。

阅读更多📰

回顾 Maven 的一些基本操作

记录一下方便以后查看  2019年10月31日

使用 Maven 创建最简单的项目

在安装好了 Maven 之后,可以在命令行窗口输入以下命令创建一个简单的 Maven 项目:

mvn archetype:generate -DgroupId=io.zwt.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false

可以看到结果生成了一个目录为 my-app 的项目:

阅读更多📰