Date | Summary |
2020.10.17 |
|
2020.10.18 |
- Generics
- Java generics
- Supplementary materials for generics
- Pankaj, Java generics example tutorial – generic method, class, interface, JournalDev, 2018
- Oracle, Generics tutorial, guidelines for wildcard use, wildcard capture
- You can find generic programming in many languages
- See type theory and category theory if you want to know how to design generics
- Ronald Garcia, etc., a comparative study of language support for generic programming, 2003
- Exercise: object comparison
|
2020.10.24 |
- Design patterns
- Head first design patterns, 2014, O'Reilly (中文翻譯版)
- Dive Into Design Patterns
- Design patterns by example, strategy, bridge, and factory design patterns
- MVC patterns, application: free marker
- (FYR) Module design, principles of design patterns, design patterns 1, design patterns 2
- (FYR) Reactive programming: reactive programming in Java 8 with RxJava, Java 8 Stream API and RxJava comparison
- (FYR) A Design-Pattern Quick Reference
- (FYR) 蔡昇達, 設計模式與遊戲開發的完美結合, 2016 (code examples)
- (FYR) Case study: android architecture
|
2020.10.25 |
- Stream API (with lambda expressions) & Optional API
- Lambdas and streams (try StreamDemo.zip)
- Raoul-Gabriel Urma, Java SE 8's Optional, Oracle, 2014
- Marius Herring, Java 8 no more loop, 2015
- Another example: ParallelStreamWordCount.java with a text file The King James Bible
- Supplementary materials for Stream framework
- Alonzo Church, lambda calculus proposed in 1930s
- Ted Neward, Java 8: lambdas part 1 and Java 8: lambdas part 2, Oracle, 2013
- Does a lambda expression create an object on the heap every time it's executed?, StackOverflow, 2017
- Oracle tutorial: lambda expressions
- Mario Fusco, Richard Warburton, and Raoul Urma, Java 8 lambdas - a peek under the hood
- Sergey Kuksenko, JDK 8: lambda performance study, Oracle, 2014
- Baeldung, Java infinite streams
- JDK 8: stream style, Oracle
- More slides are listed below: lambda expressions and functional programming, lambdas & streams in JDK 8: beyond the basics, Java 8 lambda expressions & streams
- Parallel functional programming in Java (advanced level)
- Baeldung, guide to Java 8 Optional, 2018.4.18
- Use Java 8 parallel streams to read a file and tally word counts
- 林信良, 神秘的Monad不神秘, 2014.4.11
|
2020.10.31 |
|
2020.11.1 (2h0m) |
- Java virtual machine (JVM)
- JVM (see animated slides for Java activation records for bank account example)
- Supplementary materials for JVM
- Concurrent programming
- Basics of operating systems (OS)
|
2020.11.7 |
- Concurrent programming (cont'd)
- Multithreading basics
- Synchronization (Try SemaphoreDemo.java)
- Supplementary materials for concurrency
- Oracle tutorial: lesson: concurrency
- Brandon Skerritt, concurrent programming in Java
- Vivek Sarkar, synchronized statement, advanced locking, Java executors and synchronizers, volatile variables and Java memory model
- Jim Huang (Jserv), 作業系統概念: Concurrency 程式設計篇
- Jim Huang (Jserv), Linux kernel, 2019
- Hyunyoung Lee, concurrency in java, 2019
- Linus Torvalds, a reply to discussion about spinlock implementation and Linux scheduler (1, 2, 3, 4), 2020.1.3 (also read news)
- How to implement synchronized methods/blocks in Java?
- An Introduction to Lock-Free Programming, 2012.6.22
|
2020.11.8 |
- Concurrent programming (cont'd)
|
2020.11.15 (3h30m) |
|
2020.11.16 (3h30m) |
- Spring framework tutorial
- Dependency manager
- Misc
|