{"id":20754957,"url":"https://github.com/softleader/softleader-training-course","last_synced_at":"2025-10-08T07:06:06.895Z","repository":{"id":10073800,"uuid":"64361299","full_name":"softleader/softleader-training-course","owner":"softleader","description":"松凌科技教育訓練專區","archived":false,"fork":false,"pushed_at":"2025-09-12T12:41:26.000Z","size":97734,"stargazers_count":16,"open_issues_count":1,"forks_count":9,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-10-08T07:05:05.473Z","etag":null,"topics":["course","java","training"],"latest_commit_sha":null,"homepage":"https://www.softleader.com.tw/sl-news","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/softleader.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2016-07-28T03:28:01.000Z","updated_at":"2025-09-12T12:41:30.000Z","dependencies_parsed_at":"2025-09-12T14:43:52.739Z","dependency_job_id":null,"html_url":"https://github.com/softleader/softleader-training-course","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/softleader/softleader-training-course","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/softleader%2Fsoftleader-training-course","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/softleader%2Fsoftleader-training-course/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/softleader%2Fsoftleader-training-course/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/softleader%2Fsoftleader-training-course/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/softleader","download_url":"https://codeload.github.com/softleader/softleader-training-course/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/softleader%2Fsoftleader-training-course/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278903036,"owners_count":26065786,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["course","java","training"],"created_at":"2024-11-17T09:21:33.013Z","updated_at":"2025-10-08T07:06:06.888Z","avatar_url":"https://github.com/softleader.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.org/softleader/softleader-training-course.svg?branch=master)](https://travis-ci.org/softleader/softleader-training-course)\n[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://GitHub.com/softleader/softleader-training-course/graphs/commit-activity)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)\n\n# 松凌科技教育訓練專區\n\n[http://bit.ly/softleader-training-course](http://bit.ly/softleader-training-course)\n\n\u003cimg src=\"./qr-code.svg\" width=\"500\"\u003e\n\n![](./training.png)\n\n## Directory Structure\n\n請講師將上課教材，依照下述目錄結構擺放, **課程名稱不可以有空白!**\n\n```sh\n.\n└── \u003c年度\u003e\n    └── \u003c季\u003e\n        ├── \u003c課程A\u003e\n        ├── \u003c課程B\u003e\n        └── ...\n```\n\n如:\n\n```sh\n.\n└── 2016\n    ├── Q1\n    │   ├── spring-transaction\n    │   └── stream-and-lambda\n    └── Q2\n        ├── design-patterns\n        └── ...\n```\n\n在你的課程目錄中, 如果有放一個 *README.md*, 會自動擷取該檔案中第一個 header (`#`, `##` ... `######`) 作為課程標題\n\n```sh\n.\n└── \u003c年度\u003e\n    └── \u003c季\u003e\n        └── \u003c課程A\u003e\n             └── README.md\n```\n\n## Courses\n\n\u003e Auto-generated by *toc*\n\n#### 2025\n- Q1 - [exception](/2025/Q1/exception) - 花式Exception\n- Q1 - [java-exp](/2025/Q1/java-exp) - 講講我的Java開發心得\n- Q1 - [jpms](/2025/Q1/jpms) - Java Platform Module System (JPMS)\n- Q1 - [mapstruct](/2025/Q1/mapstruct) - mapstruct 使用技巧\n- Q1 - [spring-web-101](/2025/Q1/spring-web-101) - 講講 Spring Web\n- Q1 - [stream-exp](/2025/Q1/stream-exp) - 講講我們目前怎麼用Stream\n- Q2 - [cicd-flow](/2025/Q2/cicd-flow) - 講講我們的專案在Github按下Release後都發生了啥事\n- Q2 - [using-intellij-like-boss](/2025/Q2/using-intellij-like-boss) - 講講我如何高效運用Intellij\n- Q3 - [env](/2025/Q3/env) - 變數與注入的幾種方式整理\n- Q3 - [jcconf2025_steven](/2025/Q3/jcconf2025_steven) - JCConf 2025 壞了，系統發生錯誤了\n\n#### 2024\n- Q1 - [custom-exception](/2024/Q1/custom-exception) - 自定義Excption 啥時有用\n- Q1 - [docker-101](/2024/Q1/docker-101) - 幾乎從0開始的Docker實務\n- Q1 - [effective-using-data-jpa](/2024/Q1/effective-using-data-jpa) - 如何高效的使用Spring Data JPA\n- Q1 - [efk-usage](/2024/Q1/efk-usage) - 靈活運用EFK平台\n- Q1 - [introduce-dockerfile](/2024/Q1/introduce-dockerfile) - 講講公司用過的那些Dcokerfile\n- Q1 - [liquibase-introduction](/2024/Q1/liquibase-introduction) - Liquibase 教育訓練\n- Q2 - [how-to-goto-xxx_cloud_softleader](/2024/Q2/how-to-goto-xxx_cloud_softleader) - 去xxx.cloud.softleader的路怎麼走\n- Q2 - [kapok-security](/2024/Q2/kapok-security) - 聊聊 Spring/Kapok Security\n- Q3 - [effective-technique-in-project](/2024/Q3/effective-technique-in-project) - 我在處理大量資料的服務中使用到的一些技巧\n- Q3 - [front-back-end-data-transfer](/2024/Q3/front-back-end-data-transfer) - 前後端資料交換\n- Q4 - [bts-kapok-bootstrap](/2024/Q4/bts-kapok-bootstrap) - Behind the Scenes | Kapok: Bootstrap\n- Q4 - [good-sso-pattern](/2024/Q4/good-sso-pattern) - JCConf 2024 如何不要那麼狼狽的串接各種甲方的SSO\n- Q4 - [jcconf-practice](/2024/Q4/jcconf-practice) - Java 專案起手式 (Kyle)\n- Q4 - [jcconf-preview](/2024/Q4/jcconf-preview) - 來看看JCConf到底都有啥題目\n- Q4 - [kubernetes-101](/2024/Q4/kubernetes-101) - Kubernetes概覽\n- Q4 - [softleader-project-architecture](/2024/Q4/softleader-project-architecture) - 講講公司的各種專案架構\n- Q4 - [start-softleader-project](/2024/Q4/start-softleader-project) - 講講目前我們開新專案會用到的那些Dependencies們\n- Q4 - [tips-of-spring-data-jpa](/2024/Q4/tips-of-spring-data-jpa) - Spring Data JPA 各種雷\n\n#### 2023\n- Q1 - [access-control](/2023/Q1/access-control) - Kapok Security - Access Control\n- Q1 - [auto-managed-ingress](/2023/Q1/auto-managed-ingress) - Auto Managed Ingess\n- Q1 - [kuztomize-part1](/2023/Q1/kuztomize-part1) - Kustomize: Part 1\n- Q1 - [reducing-if-else](/2023/Q1/reducing-if-else) - 如何減少程式內的IF-ELSE\n- Q1 - [spring-data](/2023/Q1/spring-data) - Spring Data Jpa\n- Q1 - [spring-web](/2023/Q1/spring-web) - 從 Http 開始了解的 Spring Web\n- Q1 - [what-is-spring-bean](/2023/Q1/what-is-spring-bean) - 講講Spring Bean與我們Framework的前世今生\n- Q2 - [aop](/2023/Q2/aop) - 深入淺出 AOP\n- Q2 - [kubernetes-training](/2023/Q2/kubernetes-training) - 認識Kubernetes\n- Q2 - [oidc](/2023/Q2/oidc) - 認識 OAuth2/OIDC 及如何使用 Kapok 串接\n- Q2 - [oomkilled](/2023/Q2/oomkilled) - 為啥我部署到 Kubernetes 的程式被 OOMKilled 了!?\n- Q3 - [js-es6](/2023/Q3/js-es6) - JavaScript  ES6 都出了這麼久了, 這些特性這麼好用你還沒用嗎?\n- Q3 - [kubernetes-pv-pvc](/2023/Q3/kubernetes-pv-pvc) - 介紹 Kubernetes PV / PVC\n- Q3 - [oop-practice](/2023/Q3/oop-practice) - 物件導向的特性運用\n- Q3 - [release-workflow](/2023/Q3/release-workflow) - Release Workflow\n- Q3 - [simple-start-a-spring-boot-project](/2023/Q3/simple-start-a-spring-boot-project) - Spring Boot 入門 (Web + Jpa)\n- Q3 - [specification-mapper](/2023/Q3/specification-mapper) - Specification Mapper\n- Q3 - [vue-component-practice](/2023/Q3/vue-component-practice) - 在Vue寫一個Component有什麼要點\n- Q4 - [kubernetes-basic](/2023/Q4/kubernetes-basic) - K8S deployment詳解\n- Q4 - [kubernetes-network](/2023/Q4/kubernetes-network) - 我該如何Call到Pod (K8S的Servcie運用案例說明)\n- Q4 - [more-effective-coding](/2023/Q4/more-effective-coding) - 如何寫出一個優良的Method\n- Q4 - [softleader-cicd](/2023/Q4/softleader-cicd) - 講講公司CICD\n- Q4 - [spring-transaction](/2023/Q4/spring-transaction) - 講解 Spring Transaction 適用情境與運作原理\n- Q4 - [stream-collect](/2023/Q4/stream-collect) - 深度剖析 java.util.stream.Stream#collect\n- Q4 - [what-happens-when-kubectl-apply-deploy](/2023/Q4/what-happens-when-kubectl-apply-deploy) - 執行 `kubectl apply deployment` 後發生了什麼事\n\n#### 2022\n- Q1 - [unit-testing](/2022/Q1/unit-testing) - Unit Testing 手把手教學\n- Q4 - [deploy-way-at-softleader](/2022/Q4/deploy-way-at-softleader) - 我們公司的主流部屬方式以及其演進\n- Q4 - [intellij-idea-introduce](/2022/Q4/intellij-idea-introduce) - Intellij-idea使用技巧\n- Q4 - [java-data-tips](/2022/Q4/java-data-tips) - Java處理大量資料或迴圈時的注意點\n- Q4 - [k8s-series-1](/2022/Q4/k8s-series-1) - 給只知道Tomcat的人一步步開始了解Docker跟Container\n- Q4 - [k8s-series-2](/2022/Q4/k8s-series-2) - 從 docker run 開始到 kubectl apply\n- Q4 - [k8s-series-3](/2022/Q4/k8s-series-3) - 如何從SLKE上的資訊了解專案的運作內容\n- Q4 - [k8s-series-4](/2022/Q4/k8s-series-4) - Kubernetes deployment 撰寫技巧\n- Q4 - [stream](/2022/Q4/stream) - Stream Api的活用\n\n#### 2021\n- Q1 - [base-jre-image](/2021/Q1/base-jre-image) - JRE Base Image\n- Q1 - [springboot24-config](/2021/Q1/springboot24-config) - Spring Boot 2.4 Externalized Configuration\n- Q2 - [java-io](/2021/Q2/java-io) - Java-IO\n- Q2 - [react-crud](/2021/Q2/react-crud) - React CURD\n- Q2 - [spring-boot-demo](/2021/Q2/spring-boot-demo)\n- Q2 - [vue-v2](/2021/Q2/vue-v2) - vue2-training-course\n- Q3 - [build-docker-image](/2021/Q3/build-docker-image)\n- Q3 - [jdk-api](/2021/Q3/jdk-api) - JDK-API\n- Q3 - [softleader-env](/2021/Q3/softleader-env) - 松凌科技專案環境\n- Q3 - [spring-boot(jakarta99)](/2021/Q3/spring-boot(jakarta99)) - Spring-boot 學習手冊(by jakarta99)\n- Q3 - [spring-web-jpa](/2021/Q3/spring-web-jpa) - Spring-MVC \u0026 Spring-Data\n- Q4 - [api-design](/2021/Q4/api-design) - API 設計與思考\n- Q4 - [maven-structure](/2021/Q4/maven-structure) - Maven\n- Q4 - [platform-trubleshoting](/2021/Q4/platform-trubleshoting) - 各環境問題解決心得分享\n- Q4 - [react](/2021/Q4/react) - REACT\n- Q4 - [regex](/2021/Q4/regex) - 正規表示法技巧\n- Q4 - [sonar](/2021/Q4/sonar) - 我要怎麼寫好我的Code?\n- Q4 - [spring-data](/2021/Q4/spring-data)\n- Q4 - [spring-mvc](/2021/Q4/spring-mvc)\n- Q4 - [stream](/2021/Q4/stream) - Stream\n\n#### 2020\n- Q1 - [fluent-bit](/2020/Q1/fluent-bit) - Fluent Bit\n\n#### 2019\n- Q1 - [microservice](/2019/Q1/microservice) - Microservice workshop\n- Q1 - [react-redux](/2019/Q1/react-redux) - Available Scripts\n- Q2 - [a-beginners-guide-to-kubernetes](/2019/Q2/a-beginners-guide-to-kubernetes) - A Beginner’s Guide to Kubernetes\n- Q4 - [mapstruct](/2019/Q4/mapstruct) - MapStruct - Java bean mappings [WIP]\n\n#### 2018\n- Q1 - [ECMAScript6](/2018/Q1/ECMAScript6) - ECMAScript 6\n- Q1 - [logging](/2018/Q1/logging)\n- Q1 - [softleader-ldap](/2018/Q1/softleader-ldap) - LDAP 基本介紹\n- Q1 - [stream-adv](/2018/Q1/stream-adv) - 2018Q1 Stream\n- Q2 - [a-h](/2018/Q2/a-h) - A\u0026H\n- Q2 - [docker](/2018/Q2/docker) - 手把手帶你學 Docker\n- Q2 - [exception-handling](/2018/Q2/exception-handling) - Best practices to handle exceptions\n- Q2 - [microservices](/2018/Q2/microservices)\n- Q2 - [tensorflow](/2018/Q2/tensorflow)\n- Q3 - [Implements-SSO-with-Spring-Session](/2018/Q3/Implements-SSO-with-Spring-Session)\n- Q3 - [building-docker-images](/2018/Q3/building-docker-images) - Building Docker Images\n- Q3 - [jmeter](/2018/Q3/jmeter) - Jmeter功能介紹\n- Q3 - [microservice-with-springcloud](/2018/Q3/microservice-with-springcloud)\n- Q3 - [tensorflow](/2018/Q3/tensorflow) - Getting Started with TensorFlow\n\n#### 2017\n- Q1 - [redux](/2017/Q1/redux)\n- Q1 - [regex](/2017/Q1/regex) - 一上來就是最終Boss關的Regex\n- Q1 - [web-security-protection](/2017/Q1/web-security-protection)\n- Q1 - [webpack](/2017/Q1/webpack) - Webpack-Demo\n- Q4 - [softleader-day](/2017/Q4/softleader-day)\n\n#### 2016\n- Q1 - [spring-transaction](/2016/Q1/spring-transaction) - AOP基本概念\n- Q1 - [stream-and-lambda](/2016/Q1/stream-and-lambda)\n- Q2 - [design-patterns](/2016/Q2/design-patterns)\n- Q2 - [ireport](/2016/Q2/ireport)\n- Q2 - [react](/2016/Q2/react)\n- Q2 - [zookeeper](/2016/Q2/zookeeper)\n- Q3 - [APS](/2016/Q3/APS)\n- Q3 - [JPA](/2016/Q3/JPA)\n- Q3 - [RabbitMQ](/2016/Q3/RabbitMQ)\n- Q3 - [react-workshop](/2016/Q3/react-workshop)\n- Q4 - [softleader-day](/2016/Q4/softleader-day)\n\n## GitHub Action\n\n本 Repo 設有 [GitHub Action](./.github/workflows) 在 Push 或 PR 時自動的觸發 *toc*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoftleader%2Fsoftleader-training-course","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsoftleader%2Fsoftleader-training-course","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoftleader%2Fsoftleader-training-course/lists"}