전체 κΈ€ 82

[Clean Code] 클린 μ½”λ“œ

클린 μ½”λ“œ1. 클린 μ½”λ“œν˜Όμžμ„œ κ°œλ°œν•  λ•ŒλŠ” λ‚˜λ§Œ μ•Œμ•„λ³΄λ©΄ λ˜λŠ”, λ‚˜λ§Œ μ•„λŠ” λ³€μˆ˜λͺ…을 μ‚¬μš©ν•΄μ™”μŠ΅λ‹ˆλ‹€. λ‹€λ₯Έ μ‚¬λžŒλ“€κ³Ό νŒ€ ν”„λ‘œμ νŠΈλ₯Ό ν•΄λ³΄λ©΄μ„œ 클린 μ½”λ“œμ˜ μ€‘μš”μ„±μ„ κΉ¨λ‹«κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ 클린 μ½”λ“œλž€ 무엇인가에 λŒ€ν•΄ μ•Œμ•„λ³΄κΈ° μ‹œμž‘ν–ˆκ³ , λ‹€μ–‘ν•œ 원칙듀이 μžˆλ‹€λŠ” 것을 μ•Œκ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. κ·Έ μ€‘μ—μ„œ μ œκ°€ κ²ͺμ—ˆλ˜ 기본적인 μ›μΉ™μœΌλ‘œ ν¬μŠ€νŒ… ν•˜κ² μŠ΅λ‹ˆλ‹€. 1. 클린 μ½”λ“œμ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ°œλ°œν•  λ•Œ μ½”λ“œμ˜ 가독성, μœ μ§€λ³΄μˆ˜μ„±, ν™•μž₯성을 높이기 μœ„ν•΄ μž‘μ„±ν•˜λŠ” κΉ¨λ—ν•œ μ½”λ“œμž…λ‹ˆλ‹€. - μ£Όμš” 원칙1. λ³€μˆ˜λͺ…λ³€μˆ˜λͺ…은 μ½”λ“œμ˜ 의미λ₯Ό λͺ…ν™•νžˆ 전달해야 ν•©λ‹ˆλ‹€.ꡬ체적으둜 의미 μžˆλŠ” 이름을 μ‚¬μš©ν•˜μ—¬ λ³€μˆ˜μ˜ 역할을 μ‰½κ²Œ 이해할 수 μžˆμ–΄μ•Όν•©λ‹ˆλ‹€. 2. μ£Όμ„μ½”λ“œ μžμ²΄κ°€ 무엇을 ν•˜λŠ”μ§€ λͺ…ν™•ν•˜μ§€ μ•Šμ€ λΆ€λΆ„μ—λ§Œ μž‘μ„±ν•΄μ•Ό ν•©λ‹ˆλ‹€. μ €λŠ” νŒ€μ›λ“€κ³Ό ν˜‘μ—…μ„ ..

[DP] Knapsack μ•Œκ³ λ¦¬μ¦˜ - Cμ–Έμ–΄

Knapsack μ•Œκ³ λ¦¬μ¦˜ - Cμ–Έμ–΄1. Knapsack μ•Œκ³ λ¦¬μ¦˜2. μ½”λ“œ κ΅¬ν˜„ μ•Œκ³ λ¦¬μ¦˜ λ³΅μŠ΅ν•˜κΈ° μœ„ν•΄ ν¬μŠ€νŒ… ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.1. Knapsack μ•Œκ³ λ¦¬μ¦˜λ°°λ‚­ 문제(Knapsack Problem)은 μ œν•œλœ μš©λŸ‰μ„ κ°€μ§„ 가방에 μ—¬λŸ¬ 개의 물건을 넣을 λ•Œ, κ°€μΉ˜μ˜ 합이 μ΅œλŒ€κ°€ λ˜λ„λ‘ ν•˜λŠ” μ΅œμ ν™” λ¬Έμ œμž…λ‹ˆλ‹€. λ°°λ‚­ 문제의 μ’…λ₯˜μ—λŠ” 0/1 λ°°λ‚­ 문제(DP)와 λΆ„ν•  κ°€λŠ₯ λ°°λ‚­ 문제(그리디 μ•Œκ³ λ¦¬μ¦˜μœΌλ‘œ ν•΄κ²° κ°€λŠ₯)κ°€ μžˆμŠ΅λ‹ˆλ‹€. ν•΄λ‹Ή ν¬μŠ€νŒ…μ—μ„œλŠ” DPλ₯Ό λ‹€λ€„λ³΄κ² μŠ΅λ‹ˆλ‹€. 2. μ½”λ“œ κ΅¬ν˜„- 전체 μ½”λ“œ#include  int max(int a, int b) {    return (a > b) ? a : b;} int knapSack(int W, int wt[], int val[], int n) {    int i, w;..

πŸ’‘ Algorithm 2025.01.24

[DP] 동적 κ³„νšλ²•(Dynamic Programming)

동적 κ³„νšλ²•(Dynamic Programming)1. 동적 κ³„νšλ²•2. κ΅¬ν˜„ 방법(ν”Όλ³΄λ‚˜μΉ˜ 예제)1. 동적 κ³„νšλ²•ν•˜λ‚˜μ˜ 큰 문제λ₯Ό 큰 문제λ₯Ό μž‘μ€ 문제둜 λ‚˜λˆ„μ–΄ ν•΄κ²°ν•˜κ³  κ·Έ κ²°κ³Όλ₯Ό μ €μž₯ν•˜μ—¬ 쀑볡 계산을 ν”Όν•˜λŠ” ν•˜λ‚˜μ˜ λ°©λ²•λ‘ μž…λ‹ˆλ‹€.동적 κ³„νšλ²•μ„ ν™œμš©ν•˜λŠ” λŒ€ν‘œ λ¬Έμ œλ‘œλŠ” ν”Όλ³΄λ‚˜μΉ˜ μˆ˜μ—΄, 졜μž₯ 곡톡 λΆ€λΆ„ μˆ˜μ—΄(LCS), λ°°λ‚­ 문제, μ΅œλ‹¨ 경둜, 동전 κ±°μŠ€λ¦„λˆ 문제 등이 μžˆμŠ΅λ‹ˆλ‹€. DP(Dynamic Programming) 문제λ₯Ό λ§Œλ‚¬μ„ λ•ŒλŠ” λΆ€λΆ„ 문제λ₯Ό ν™œμš©ν•  수 μžˆλŠ”μ§€, 쀑볡 계산을 쀄일 수 μžˆλŠ”μ§€ 2κ°€μ§€ 사항을 κ³ λ―Όν•˜μ—¬ μ μš©ν•˜λ©΄ λ©λ‹ˆλ‹€. ν•΄λ‹Ή ν¬μŠ€νŒ…μ—μ„œλŠ” ν”Όλ³΄λ‚˜μΉ˜ μˆ˜μ—΄μœΌλ‘œ κ΅¬ν˜„ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€. 2. κ΅¬ν˜„ 방법(ν”Όλ³΄λ‚˜μΉ˜ 예제)- Bottom-Up 방식(반볡문)μ•„λž˜(κ°€μž₯ μž‘μ€ μƒνƒœ)μ—μ„œλΆ€ν„° μœ„(큰 μƒνƒœ)둜 계산을 수..

πŸ’‘ Algorithm 2025.01.24

[IntelliJ] Debugger μ‚¬μš©ν•˜κΈ°

Debugger μ‚¬μš©ν•˜κΈ°1. Debugger2. Debugger μ‚¬μš©ν•˜κΈ°1. Debuggerν”„λ‘œκ·Έλž¨μ˜ 디버그(Debug)λ₯Ό λ•λŠ” λ„κ΅¬μž…λ‹ˆλ‹€.λ””λ²„κ·ΈλŠ” 개발 κ³Όμ •μ—μ„œ λ°œμƒν•˜λŠ” 였λ₯˜λ₯Ό μ°Ύμ•„λ‚΄κ³  μˆ˜μ •ν•˜λŠ” μž‘μ—…μž…λ‹ˆλ‹€.였λ₯˜ λ°œμƒ μ˜μ‹¬ 지점에 Break Pointλ₯Ό μ„€μ •ν•˜μ—¬ λ©”λͺ¨λ¦¬μ— μ €μž₯된 값을 ν™•μΈν•˜κ±°λ‚˜ μ‹€ν–‰ 흐름을 λ³΄λ©΄μ„œ μ½”λ“œκ°€ μ œλŒ€λ‘œ λ™μž‘ν•˜κ³  μžˆλŠ”μ§€ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. 2. Debugger μ‚¬μš©ν•˜κΈ°1. Break Point 지정디버깅을 μ›ν•˜λŠ” μ½”λ“œ 라인의 쒌츑 숫자 μ˜μ—­μ„ ν΄λ¦­ν•˜λ©΄ λΉ¨κ°„ 점(Break Point)κ°€ μƒμ„±λ©λ‹ˆλ‹€.Break Pointμ—μ„œ μ½”λ“œ 싀행이 λ©ˆμΆ”κ³  λ³€μˆ˜ 값을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. 2. Debug λͺ¨λ“œλ‘œ μ‹€ν–‰MACμ—μ„œλŠ” ctrl+option+D 단좕킀, Windowsμ—μ„œλŠ” Shift+F9..

[OS] PCB, μŠ€μΌ€μ₯΄λ§, ν”„λ‘œμ„ΈμŠ€μ™€ μ“°λ ˆλ“œ, Context Switching, ꡐ착 μƒνƒœ(DeadLock), νŽ˜μ΄μ§€ ꡐ체 μ•Œκ³ λ¦¬μ¦˜

PCB, μŠ€μΌ€μ₯΄λ§, ν”„λ‘œμ„ΈμŠ€μ™€ μ“°λ ˆλ“œ, Context Switching, ꡐ착 μƒνƒœ(DeadLock),  νŽ˜μ΄μ§€ ꡐ체 μ•Œκ³ λ¦¬μ¦˜1. PCB2. μŠ€μΌ€μ₯΄λ§3. ν”„λ‘œμ„ΈμŠ€μ™€ μ“°λ ˆλ“œ4. Context Switching5. ꡐ착 μƒνƒœ(DeaLock)6. νŽ˜μ΄μ§€ ꡐ체 μ•Œκ³ λ¦¬μ¦˜1. PCBPCB(Process Control Block)λŠ” μš΄μ˜μ²΄μ œμ—μ„œ ν”„λ‘œμ„ΈμŠ€μ— λŒ€ν•œ 정보λ₯Ό κ΄€λ¦¬ν•˜λŠ” 데이터 κ΅¬μ‘°μž…λ‹ˆλ‹€.ν”„λ‘œμ„ΈμŠ€κ°€ μ‹€ν–‰λ˜λŠ” λ™μ•ˆ PCBλ₯Ό 톡해 ν”„λ‘œμ„ΈμŠ€μ˜ μƒνƒœ, CPU λ ˆμ§€μŠ€ν„° κ°’, λ©”λͺ¨λ¦¬ 관리 정보 등을 μΆ”μ ν•©λ‹ˆλ‹€. 2. μŠ€μΌ€μ₯΄λ§μš΄μ˜μ²΄μ œμ—μ„œ μ—¬λŸ¬ ν”„λ‘œμ„ΈμŠ€λ₯Ό κ΄€λ¦¬ν•˜κ³ , CPU μžμ›μ„ μ–΄λ–€ ν”„λ‘œμ„ΈμŠ€κ°€ μ–Έμ œ μ‚¬μš©ν• μ§€ κ²°μ •ν•˜λŠ” κ³Όμ •μž…λ‹ˆλ‹€. - FCFS(First-Come, First-Served)λ¨Όμ € λ„μ°©ν•œ ν”„λ‘œμ„ΈμŠ€ λ¨Όμ € μ²˜λ¦¬ν•©λ‹ˆλ‹€...

πŸ“— CS 2025.01.23

[SQL] ORM, JDBC, JPA, Hibernate, JPQL, QueryDSL

ORM, JDBC, JPA, Hibernate, JPQL, QueryDSL1. ORM2. JDBC3. JPA4. Hibernate5. JPQL6. QueryDSL1. ORMORM(Object-Relational Mapping)은 λ°μ΄ν„°λ² μ΄μŠ€μ™€ 객체λ₯Ό μžλ™μœΌλ‘œ μ—°κ²°ν•΄ μ£ΌλŠ” κΈ°μˆ μž…λ‹ˆλ‹€.SQL 문을 직접 μž‘μ„±ν•˜μ§€ μ•Šκ³ λ„ λ°μ΄ν„°λ² μ΄μŠ€μ™€ 톡신할 수 μžˆμŠ΅λ‹ˆλ‹€. 2. JDBCJDBC(Java Database Connectivity)λŠ” μžλ°”μ—μ„œ 직접 λ°μ΄ν„°λ² μ΄μŠ€μ™€ μ—°κ²°ν•˜λŠ” λ°©λ²•μž…λ‹ˆλ‹€.SELECT * FROM user; μ™€ κ°™μ€ SQL 문을 직접 μžλ°” μ½”λ“œμ—μ„œ μž‘μ„±ν•΄μ„œ λ°μ΄ν„°λ² μ΄μŠ€μ™€ μ†Œν†΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 3. JPAJPA(Java Persistence API)은 ORM을 μ‰½κ²Œ μ‚¬μš©ν•  수 μžˆλ„λ‘ λ„μ™€μ£ΌλŠ” μžλ°” ν‘œμ€€ κΈ°μˆ μž…..

[DB] νŠΈλžœμž­μ…˜, SQL μ‘°μž‘μ–΄, JOIN, μ •κ·œν™”

νŠΈλžœμž­μ…˜, SQL μ‘°μž‘μ–΄, JOIN, μ •κ·œν™”1. νŠΈλžœμž­μ…˜2. SQL μ‘°μž‘μ–΄3. JOIN4. μ •κ·œν™”1. νŠΈλžœμž­μ…˜(Transaction)νŠΈλžœμž­μ…˜(Transaction)은 λ°μ΄ν„°λ² μ΄μŠ€μ˜ μƒνƒœλ₯Ό λ³€ν™”μ‹œν‚€κΈ° μœ„ν•΄μ„œ μˆ˜ν–‰ν•˜λŠ” μž‘μ—…μ˜ λ‹¨μœ„μž…λ‹ˆλ‹€. - νŠΈλžœμž­μ…˜ νŠΉμ§•1. μ›μžμ„±(Atomicity)νŠΈλžœμž­μ…˜μ΄ λ°μ΄ν„°λ² μ΄μŠ€μ— λͺ¨λ‘ 적용이 λ˜κ±°λ‚˜ λͺ¨λ‘ 적용이 λ˜μ§€ μ•Šμ•„μ•Όν•©λ‹ˆλ‹€. A κ³„μ’Œμ—μ„œ B κ³„μ’Œλ‘œ λˆμ„ μ΄μ²΄ν•˜λ €κ³  ν•  λ•Œ, A κ³„μ’Œμ—μ„œ κΈˆμ•‘μ„ μ°¨κ°ν•˜κ³  B κ³„μ’Œμ—μ„œ κΈˆμ•‘μ„ μΆ”κ°€ν•΄μ•Όν•©λ‹ˆλ‹€.A κ³„μ’Œμ—μ„œ κΈˆμ•‘μ„ μ°¨κ°ν•œ ν›„, B κ³„μ’Œμ— κΈˆμ•‘μ„ μΆ”κ°€ν•˜λŠ” 도쀑 μ‹œμŠ€ν…œ μž₯μ• κ°€ λ°œμƒν•˜λ©΄ A κ³„μ’ŒλŠ” μ°¨κ°λ˜μ—ˆμ§€λ§Œ B κ³„μ’ŒλŠ” κΈˆμ•‘μ΄ μΆ”κ°€λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ μ›μžμ„±μ— μ˜ν•΄μ„œ 두 μž‘μ—…μ΄ λͺ¨λ‘ μ™„λ£Œλ˜κ±°λ‚˜ λͺ¨λ‘ μ™„λ£Œλ˜μ§€ μ•Šμ•„μ•Ό ν•©λ‹ˆλ‹€. 2. 일관성(C..

πŸ“— CS 2025.01.23

[DataStructure] μŠ€νƒ, 큐, μ—°κ²° 리슀트

μŠ€νƒ, 큐, μ—°κ²° 리슀트1. μŠ€νƒ2. 큐3. μ—°κ²° 리슀트 μžλ£Œκ΅¬μ‘° λ³΅μŠ΅ν•˜λ©° μž‘μ„±ν–ˆμŠ΅λ‹ˆλ‹€.1. μŠ€νƒLIFO(Last in First Out)의 ν›„μž…μ„ μΆœ κ΅¬μ‘°μž…λ‹ˆλ‹€.D (제일 λ§ˆμ§€λ§‰μ— λ“€μ–΄μ˜¨ μš”μ†Œ)CBA (제일 처음 λ“€μ–΄μ˜¨ μš”μ†Œ) AλΆ€ν„° μ°¨λ‘€λŒ€λ‘œ 제일 처음 λ“€μ–΄μ˜¨ μš”μ†ŒλΆ€ν„° B -> C -> D μˆœμ„œλŒ€λ‘œ λ“€μ–΄μ˜€κ²Œ λ©λ‹ˆλ‹€.좜λ ₯될 λ•ŒλŠ” DλΆ€ν„° 늦게 λ“€μ–΄μ˜¨ μš”μ†ŒλΆ€ν„° C -> B -> A μˆœμ„œλŒ€λ‘œ λ‚˜κ°€κ²Œ λ©λ‹ˆλ‹€. 2. 큐FIFO(First in First Out)의 μ„ μž…μ„ μΆœ κ΅¬μ‘°μž…λ‹ˆλ‹€.ABCD λ“€μ–΄μ˜¬ λ•ŒλŠ” μŠ€νƒκ³Ό 같이 AλΆ€ν„° μ°¨λ‘€λŒ€λ‘œ A -> B -> C -> D μˆœμ„œλŒ€λ‘œ λ“€μ–΄μ˜΅λ‹ˆλ‹€.λ‚˜κ°ˆ λ•ŒλŠ” AλΆ€ν„° μ°¨λ‘€λŒ€λ‘œ A -> B -> C -> D μˆœμ„œλŒ€λ‘œ λ‚˜κ°€κ²Œ λ©λ‹ˆλ‹€. 3. μ—°κ²° 리슀트- μˆœμ°¨λ¦¬μŠ€νŠΈλ°°μ—΄(Array)라고 뢈..

πŸ“— CS 2025.01.23

[Vue.js] Vue.js (feat. React.js)

Vue.js (feat. React.js)1. Vue.js2. React.js1. Vue.jsVue.jsλŠ” ν”„λ‘ νŠΈμ—”λ“œ ν”„λ ˆμž„μ›Œν¬둜 Javascript 문법을 μ‚¬μš©ν•©λ‹ˆλ‹€.Vue Router, Vuex λ“± 라이브러리λ₯Ό μ œκ³΅ν•˜μ—¬ 섀정이 κ°„λ‹¨ν•©λ‹ˆλ‹€.VueλŠ” React에 λΉ„ν•΄ μ—μ½”μ‹œμŠ€ν…œκ³Ό 도ꡬ가 적은 편이기 λ•Œλ¬Έμ— λŒ€κ·œλͺ¨ ν”„λ‘œμ νŠΈμ—μ„œλŠ” λ³΅μž‘ν•œ μš”κ΅¬ 사항을 μ²˜λ¦¬ν•˜κΈ° μœ„ν•œ λ‹€μ–‘ν•œ 툴과 νŒ¨ν‚€μ§€κ°€ ν•„μš”ν•  κ°€λŠ₯성이 μžˆμ–΄μ„œ μ†Œκ·œλͺ¨ ν”„λ‘œμ νŠΈμ— μ ν•©ν•©λ‹ˆλ‹€. 2. React.jsReact.jsλŠ” 라이브러리둜 Javascript와 HTML을 κ²°ν•©ν•œ JSX 문법을 μ‚¬μš©ν•©λ‹ˆλ‹€.ReactλŠ” μ‹€μ œλ‘œ λ·°(View)만 닀루기 λ•Œλ¬Έμ— λΌμš°νŒ…μ΄λ‚˜ μƒνƒœ κ΄€λ¦¬λŠ” Redux, React Router, Context API, Mobx λ“±μ˜ λ³„λ„μ˜ 라..

[Iinux] λ¦¬λˆ…μŠ€ λ§ˆμŠ€ν„° 2κΈ‰ ν•„κΈ°(1μ°¨) 합격

2025. 1. 23. κΈ°μ€€μœΌλ‘œ λ¦¬λˆ…μŠ€ λ§ˆμŠ€ν„° 2κΈ‰ 1μ°¨λ₯Ό ν•©κ²©ν–ˆμŠ΅λ‹ˆλ‹€. μ΄λ•ŒκΉŒμ§€ 전곡 κ΄€λ ¨ 자격증으둜 μ •λ³΄μ²˜λ¦¬κΈ°μ‚¬('23), SQLD('24)λ₯Ό μ·¨λ“ν–ˆμŠ΅λ‹ˆλ‹€. 1년에 1개 μ”© μžκ²©μ¦μ„ μ·¨λ“ν•˜λ©΄μ„œ 자기 κ³„λ°œμ„ μœ„ν•΄ λ…Έλ ₯ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. μ˜¬ν•΄('25)μ—λŠ” λ¦¬λˆ…μŠ€μ™€ κ΄€λ ¨λœ 지식을 μŒ“κΈ° μœ„ν•΄ 자격증 μ·¨λ“μ΄λΌλŠ” λͺ©ν‘œλ₯Ό 두고 λ¦¬λˆ…μŠ€ λ§ˆμŠ€ν„° 2κΈ‰ μ‹œν—˜μ— μ‘μ‹œν•˜κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ, μ•žμ„  μžκ²©μ¦λ“€μ„ μ·¨λ“ν•˜λ©° 얻은 지식을 μžƒμ§€ μ•ŠκΈ° μœ„ν•΄ κΈ°λ‘ν•˜λŠ” μŠ΅κ΄€μ„ 듀이고 μžˆμŠ΅λ‹ˆλ‹€.

πŸ”– Review 2025.01.23