Training Materials - vinhtbkit/bkit-kb GitHub Wiki
Each of the training content should qualify the following targets
- The content should clearly specify what learners are expected to achieve by the end of the training
- Label each content with
REQUIRED
orOPTIONAL
tag
- Participants will be assessed through quizzes, assignments, and a final project.
- The training is expected to last in , including both theoretical learning and doing hands-on exercises.
This section provides an overview of the essential content that a trainee should grasp and comprehend.
- Overview:
- Java, JDK, JRE
- Java CLI: javac, classpath, arguments, setting up environments
- Basic syntax
- Data types
- Class, Interface, Enum, Record
- modifier: static, private, public, protected, default, final
- Collections framework
- Streams, Optional, Functional interfaces
- Date/Time
- Java 8 DateTime library
- Zoned, Offset, Instant, Period, Duration, Clock
- Date Time formatting
- Blocking I/O: InputStream, OutputStream,Socket...
- Multi-threading
- Thread, Runnable, Callable
- ExecutorService
- Future, CompletableFuture
- Annotation
- Annotation processing
- Working with process, environments
- Log4j 2
- Logback
- Sl4j
- java.util.logging
- Log Appenders, Log level
- Log format
- JUnit 4, JUnit 5
- Assertions
- Mocking with Mockito
- TestSuite, Tags
- Synchronized, volatile, ThreadLocal
- Reflections
- Classloading
- Non-blocking I/O: Buffer, Channel, Selector...
- Garbage Collections
- JVM under the hood
- Virtual Thread
- Basic:
- pom.xml
- Blocks: parent, properties, dependency, dependencyManagement, plugins
- Maven Lifecycle
- Phase, goal
- Repository, mirrors
- Maven archetype
- Maven plugins
- Maven wrapper
- mvnd
Topics:
- What is a transaction
- ACID
- How it works: PostgreSQL, MySQL, MSSQL
Reference materials
- ACID and database transactions: https://vladmihalcea.com/a-beginners-guide-to-acid-and-database-transactions/
- Database Locking and Lost Update: https://vladmihalcea.com/a-beginners-guide-to-database-locking-and-the-lost-update-phenomena/
- Configuration
- ConfigurationProperties
- Validating configuration properties on startup
- Externalized configuration
- Relaxed Bindings
- Authentication and authorization basics
- Authentication method: basic, OAuth,...
- OAuth authorization flows
- OAuth models
- Filters, Security Filter Chain, Security Context
- Tokens: access tokens, refresh tokens, ID tokens. JWT, opaque tokens,...
- CORS, CSRF
- Authorization: PreAuthorize, hasRole, hasPermission
- Third party integration: Keycloak, Firebase Authentication,...
Within this section, you will discover assignments related to the previous training topics. These assignments provide you with an opportunity to apply your knowledge and reinforce your coding skills.
Common Format
- Required knowledge: Describe necessary knowledge prior to working on this assignment
- Overview: What needs to be done
- Acceptance Criteria: list out specific conditions that need to be met for a user story to be considered complete
- Required knowledge: Java, Spring, Database, JPA
- Overview: Setup Spring Boot (without security) + JPA + Postgres DB to build RESTFul API to transfer money from account A to account B.
- Acceptance Criteria:
- The program must expose an API to allow a user to transfer money to another user
- The program must allow users to transfer money within accounts correctly when execute requests concurrently using pessimistic locks
- Must include ab script for testing multiple concurrent requests https://httpd.apache.org/docs/2.4/programs/ab.htmlMust include ab script for testing multiple concurrent requests https://httpd.apache.org/docs/2.4/programs/ab.html