QueryDSL

Maven integration <dependency> <groupId>com.querydsl</groupId> <artifactId>querydsl-apt</artifactId> <version>${querydsl.version}</version> <!-- //可不寫,由 spring 自動判斷 --> <scope>provided</scope> </dependency> <dependency> <groupId>com.

繼續閱讀

Lateinit

lateinit:延遲初始化 當不想設定 init value 又不想加上 !! , ?. , 貓王運算 時 可以使用

繼續閱讀

Curl

參數 -X/--request [GET|POST|PUT|DELETE|PATCH] 使用指定的 http method 來發出 http request -H/--header 設定 request 裡所攜帶的 header -i/--include 在 output 顯示 response 的 header -d/--data 攜帶 HTTP POST Data -v/--verbose 輸出更多的訊息方便 debug / 顯示接收及發送的訊息 - trace-ascii [fileName] [URL] 顯示更多詳細訊息 -u/--user 攜帶使用者帳號、密碼 -b/--cookie 攜帶 cookie(可以是參數或是檔案位置) -o [fileName] [URL] 下載若沒填 [fileName] 會直接用 source 原名 常用 curl [URL] curl -X POST/PUT [URL] -H "Content-Type: application/json" -d '{"key" : "value" }' curl -u [URL] <Account>:<Password> reference: Linux Curl Command 指令與基本操作入門教學

繼續閱讀

Docker Compose

docker-compose.yml docker-compose --version docker-compose -h # 查看help docker-compose up docker-compose up -d # 背景 docker-compose down docker-compose exec {自訂義的service id} /bin/bash docker-compose ps # 查看目前運行的 status docker-compose top # container 進程? docker-compose logs {id} # container log docker-compose config # 檢查 config docker-compose config -q # 檢查 config, 有error 才 alert docker-compose restart docker-compose start docker-compose stop docker-compose config -q && docker-compose down && docker-compose up -d # 選3之後的 version: "3" services: # 自訂服務名 microService: image: my_image:1.

繼續閱讀

Network

Docker network bridge: 為一個容器配置 ip, 並配置 docker0(虛擬橋接, default 為該模式) network bridge 指定, default 用 docker0 host: 容器不會虛擬出自己的網卡, 用 Machine 的 –network host 指定 none: 容器有獨立的網卡, 但不對其進行任何配置(少用) –network none 指定 container: 新創建的容器不會有自己的網卡, ip 而是與其他容器共用 ip, port –network container:NAME 或容器 ID 指定 docker network ls # bridge, host, none, container docker network prune docker network inspect {bridge, host, my_network} docker network inspect bridge | grep name docker inspect {containerID} # bridge 不寫就是 bridge ### ens33 -> bridge (docker0) -> container ### veth -> eth0 # host ### 直接用 local 端的 ip & port, 重複則遞增 # none ### 什麼都沒有, 須自己配置 # container # 坑 (下面起不起來因兩台 tomcat 都用 8080 映射出去) # 借用 tomcat_1 網路 docker run -d -p 8080:8080 --name tomcat_1 tomcat docker run -d -p 8081:8080 --network container:tomcat_1 --name tomcat_2 tomcat # 這就可以了 docker run -it --name alpine_1 alpine /bin/sh docker run -it --network container:alpine_1 --name alpine_2 alpine /bin/sh #============ # 容器內 ip 會變 # 直接起兩台 tomcat ip addr 看 ip 後, 互 ping 是會通的, 但 ip 會變, 所以要用自定義網路名 docker network create my_network # 自己創見網路 docker run -d -p 8080:8080 --network my_network --name tomcat_1 tomcat docker run -d -p 8081:8080 --network my_network --name tomcat_2 tomcat

Dockerfile - docker in docker

Docker in Docker FROM ubuntu:22.04 AS build ENV NVM_DIR /opt/nvm ENV NODE_VERSION v16.

繼續閱讀

Dockerfile

Dockerfile Basic # 首行必須要為指定的基礎映像檔,這裏使用的是ubuntu作為基礎映像檔, # 版本18.04,若不給版本號則會是latest。 FROM ubuntu:18.04 # 維護者資訊想必也是不可少,此地方也可輸入E-mail資訊, # 注意此資訊會寫入產出映像檔的Author名稱屬性中。 MAINTAINER Bill # RUN 是在 build 階段運行 # 最重要的部分,想要在映像檔上設定或安裝都須將命令寫於此, # 格式須依RUN<command>,為RUN 指令後面放 Linux 指令,如果指令太長可以使用\來進行換行。 # 在此指令為先更新確認軟件包是最新的接者安裝nginx,而-y為同意指令進行中所有出現的問題。 RUN apt-get update -y\ && apt-get install nginx -y # Shell / exec 模式 RUN [".

繼續閱讀

UML

Instance Level Dependency 依賴 Association 關聯 Aggregation 聚合 Composition 組合 Class Level Implementation 實作 Inheritance 繼承 Dependency 虛線,箭頭指向 被使用者 A ---> B Association 實線,箭頭指向 被擁有者 , 可在箭頭上增加 1-many 1-1 關西 A -> B Aggregation 空心菱形屁股箭頭,箭頭指向 整體 A <>-> B <>-> C 要有A 必須要有B,C Composition 實心菱形屁股箭頭,箭頭指向 整體 to be continued….

繼續閱讀

@Autowired is not recommended

intellij 在使用 Bean Autowired 會跳出的警告 (Eclipse 不會) Field injection is not recommended Inspection info: Spring Team recommends: "Always use constructor based dependency injection in your beans.

繼續閱讀

SOLID

SOLID 首字母 代表 概念 S 單一職責原則: 「物件應該僅具有一種單一功能」的概念。 O 開閉原則: 「軟體體應該是對於擴充開放的,但是對於修改封閉的」的概念 L 里氏替換原則: 「程式中的物件應該是可以在不改變程式正確性的前提下被它的子類所替換的」 I 介面隔離原則: 「多個特定客戶端介面要好於一個寬泛用途的介面」 D 依賴反轉原則 一個方法應該遵從「依賴於抽象而不是一個實例」的概念。依賴注入是該原則的一種實現方式。 SRP Single Responsibility Principle A class should have only reason to change it 只能有一個理由去改變它,若有多個邏輯寫在一個method 中 不符合 複雜度降低 可讀性高 可維護姓提升 只有改這個才有影響 這個類別只做這件事 一個一個 component 不是他的事 他別碰 Dependency inversion principle 依賴反轉 high-level should not depend on low-level module.

繼續閱讀