-
temperature์top-p(๋๋ nucleus sampling)๋ ์์ฐ์ด ์์ฑ ๋ชจ๋ธ์ด ์ถ๋ ฅํ ๋จ์ด๋ฅผ ์ ํํ ๋์ ๋๋ค์ฑ ์กฐ์ ํ๋ผ๋ฏธํฐ์ ๋๋ค. ๋ ๊ฐ๋ ์ ์ ์ฌํ ์ญํ ์ ํ์ง๋ง ์๋ ๋ฐฉ์์ด ๋ค๋ฆ ๋๋ค. ์๋์ ๊ฐ ๊ฐ๋ ์ ๋ํ ์์ธํ ์ค๋ช ๊ณผ ์์ ๋ฅผ ์ ๊ณตํ๊ฒ ์ต๋๋ค.
๐ฅ Temperature: “์ ํ์ ํ๋ฅ ์ ๋ถ๋๋ฝ๊ฒ ์กฐ์ ”
๊ฐ๋
temperature๋ ๋ชจ๋ธ์ด ๋ค์ ๋จ์ด๋ฅผ ์ ํํ ๋์ ํ๋ฅ ๋ถํฌ๋ฅผ ์ผ๋ง๋ ํํํ๊ฒ ๋ง๋ค์ง๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.- ๊ธฐ๋ณธ๊ฐ์
1.0์ด๋ฉฐ, ์ด ๊ฐ์ ๋ฎ์ถ๋ฉด ๋ ๊ฒฐ์ ๋ก ์ (deterministic), **๋์ด๋ฉด ๋ ์ฐฝ์์ (random)**์ด ๋ฉ๋๋ค.
์๋ ๋ฐฉ์
-
๋ชจ๋ธ์ด ์์ฑ ๊ฐ๋ฅํ ๋จ์ด์ ๋ํด logit(์ ์)์ ๋ถ์ฌํ ํ softmax ํจ์๋ฅผ ํตํด ํ๋ฅ ์ ๋ง๋ญ๋๋ค.
CreatedTue, 13 May 2025 18:20:45 +0900 -
CQRS (Command Query Responsibility Segregation)๋ **๋ช ๋ น(Command)**๊ณผ **์กฐํ(Query)**์ ์ฑ ์์ ๋ถ๋ฆฌํ๋ ์ํํธ์จ์ด ์ํคํ ์ฒ ํจํด์ ๋๋ค. ์ด ํจํด์ ์ฝ๊ธฐ์ ์ฐ๊ธฐ์ ๋ชจ๋ธ์ ๋ถ๋ฆฌํจ์ผ๋ก์จ ํ์ฅ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ํฅ์์ํค๋ ๋ฐ ๋ชฉ์ ์ด ์์ต๋๋ค.
๐น ํต์ฌ ๊ฐ๋
-
Command (๋ช ๋ น)
- ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๋ ์์ฒญ (์: ์์ฑ, ์์ , ์ญ์ )
- ์:
createUser(),updateOrderStatus()
-
Query (์กฐํ)
- ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ์์ฒญ (๋จ์ํ ์ฝ๊ธฐ๋ง ํจ, ๋ณ๊ฒฝ X)
- ์:
getUserById(),getOrderListByUser()
-
์ฑ ์ ๋ถ๋ฆฌ
- ์ฐ๊ธฐ ๋ชจ๋ธ(Command Model): ๋๋ฉ์ธ ๋ก์ง๊ณผ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ํฌํจ
- ์ฝ๊ธฐ ๋ชจ๋ธ(Query Model): ์ฃผ๋ก DTO๋ก ๊ตฌ์ฑ๋๋ฉฐ, ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํ ์ ์ฉ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง (์: denormalized view)
๐น ์ ํต์ ์ธ CRUD ๋ฐฉ์๊ณผ์ ์ฐจ์ด์
ํญ๋ชฉ ์ ํต์ CRUD CQRS ๋ชจ๋ธ ๊ณต์ ์ฝ๊ธฐ/์ฐ๊ธฐ ๋์ผํ ๋ชจ๋ธ ์ฌ์ฉ ์ฝ๊ธฐ์ ์ฐ๊ธฐ ๋ชจ๋ธ ๋ถ๋ฆฌ ํ์ฅ์ฑ ์ ํ์ ์ฝ๊ธฐ/์ฐ๊ธฐ ๊ฐ๊ฐ ํ์ฅ ๊ฐ๋ฅ ๋ณต์ก๋ ๋ฎ์ ์๋์ ์ผ๋ก ๋์ ์ฑ๋ฅ ์ต์ ํ ์ด๋ ต๋ค ์ฝ๊ธฐ์ ์ต์ ํ๋ ๊ตฌ์กฐ ๊ฐ๋ฅ
๐น ์ฌ์ฉ ์์
- ์ด์ปค๋จธ์ค ์์คํ : ์ฃผ๋ฌธ์ ๋ณต์กํ ๋น์ฆ๋์ค ๋ก์ง์ด ๋ง๊ณ , ์ฃผ๋ฌธ ๋ด์ญ ์กฐํ๋ ๋น ๋ฅธ ์๋ต์ด ์ค์ํ ๋
- ๋ง์ดํฌ๋ก์๋น์ค: ์๋น์ค๋ณ ์ฑ ์ ๋ถ๋ฆฌ๋ฅผ ํ ๋ Command/Query ๋ชจ๋ธ์ ๊ฐ๊ฐ ๋ค๋ฅธ ์๋น์ค๋ก ๋ถ๋ฆฌ ๊ฐ๋ฅ
๐น ์ฅ์
- ํ์ฅ์ฑ ํฅ์: ์ฝ๊ธฐ์ ์ฐ๊ธฐ๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ํ์ฅ ๊ฐ๋ฅ
- ์ฑ๋ฅ ์ต์ ํ ์ฉ์ด: ์กฐํ ์ ์ฉ ๋ชจ๋ธ์ ์บ์๋ ๋น์ ๊ทํ๋ DB๋ก ๊ตฌ์ฑ ๊ฐ๋ฅ
- ๋ณต์กํ ๋๋ฉ์ธ ๋ชจ๋ธ์ ๋จ์ํ: Command ๋ชจ๋ธ์๋ง ๋ณต์กํ ๋๋ฉ์ธ ๊ท์น์ ์ ์ฉ ๊ฐ๋ฅ
๐น ๋จ์
- ๋ณต์ก๋ ์ฆ๊ฐ: ์ฝ๋ ๊ตฌ์กฐ์ ์ด์ ํ๊ฒฝ์ด ๋ณต์กํด์ง
- ๋ฐ์ดํฐ ์ผ๊ด์ฑ ์ฒ๋ฆฌ ํ์: Command/Query ๋ชจ๋ธ ๊ฐ ๋๊ธฐํ ํ์ (์ด๋ฒคํธ ๊ธฐ๋ฐ ์ฒ๋ฆฌ ๋ฑ)
- ๋ฌ๋ ์ปค๋ธ: ๋์ ์ ๊ฐ๋ฐ์์ ์ดํด๋ ์๊ตฌ
๐น CQRS์ Event Sourcing์ ์กฐํฉ
CQRS๋ ์ข ์ข Event Sourcing๊ณผ ํจ๊ป ์ฌ์ฉ๋ฉ๋๋ค.
CreatedFri, 09 May 2025 09:20:45 +0900 -
-
@Transactional์ด๋ ธํ ์ด์ ์ Java์์ ํธ๋์ญ์ ์ฒ๋ฆฌ๋ฅผ ์ํ ํต์ฌ ์๋จ์ผ๋ก,springframework.transaction.annotation.Transactional๊ณผjakarta.transaction.Transactional์ ๋น์ทํด ๋ณด์ด์ง๋ง ๋ค์๊ณผ ๊ฐ์ ์ฃผ์ ์ฐจ์ด์ ์ด ์์ต๋๋ค:
1. ํจํค์ง ์ถ์ฒ
ํญ๋ชฉ Spring ์ด๋ ธํ ์ด์ Jakarta ์ด๋ ธํ ์ด์ ์ด๋ ธํ ์ด์ ๊ฒฝ๋ก org.springframework.transaction.annotation.Transactionaljakarta.transaction.Transactional์์ Spring Framework Jakarta EE (๊ตฌ Java EE) API ๋ ๋ฒจ Spring ์ ์ฉ ๊ธฐ๋ฅ Java ํ์ค ์ฌ์ (JSR-907 ๋ฑ) ๊ธฐ๋ฐ
2. ์ ์ฉ ๋์์ ์ฐจ์ด
-
Spring
@Transactional- Spring AOP ๊ธฐ๋ฐ์ผ๋ก ๋์.
- ํ๋ก์ ๋ฐฉ์์ผ๋ก ํธ๋์ญ์ ์ ๊ด๋ฆฌ.
- Spring Data JPA, Spring JDBC, MyBatis ๋ฑ ๋ค์ํ Spring ๊ธฐ์ ์คํ๊ณผ ์์ฐ์ค๋ฝ๊ฒ ํตํฉ๋จ.
- ์ธ๋ฐํ ์ ์ด๊ฐ ๊ฐ๋ฅ:
propagation,isolation,timeout,rollbackFor,readOnly๋ฑ ์์ฑ ๋ค์.
-
Jakarta
@Transactional
CreatedThu, 01 May 2025 23:40:45 +0900 -
-
Spring Boot์์ ํ์ผ์ ์คํธ๋ฆฌ๋ฐ(Stream) ๋ฐฉ์์ผ๋ก writeํ ๋, ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆด์ง ์ฌ๋ถ๋ ์ฌ์ฉ ๋ฐฉ์์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ํ์ง๋ง ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ ์คํธ๋ฆฌ๋ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ์ต์ํํ๊ธฐ ์ํ ๊ธฐ๋ฒ์ผ๋ก, ์ ์ฒด ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ์ง ์๊ณ ์ผ์ ํฌ๊ธฐ์ ๋ฒํผ๋ฅผ ํตํด ์ ์ง์ ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค.
โ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ์ง ์๋ ๊ฒฝ์ฐ (Streaming ๋ฐฉ์)
Java์์
InputStreamโOutputStreamํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ๋ ๋ณดํต ๋ค์์ฒ๋ผ ์ฌ์ฉํฉ๋๋ค:try (InputStream in = ...; OutputStream out = new FileOutputStream("output.txt")) { byte[] buffer = new byte[8192]; // 8KB ๋ฒํผ int bytesRead; while ((bytesRead = in.read(buffer)) != -1) { out.write(buffer, bytesRead, 0); } }์ด ๋ฐฉ์์:
CreatedWed, 30 Apr 2025 13:25:18 +0900 -
Servlet์ด๋?
Servlet์ Java๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋ ์๋ฒ ์ธก ํ๋ก๊ทธ๋จ์ผ๋ก, ํด๋ผ์ด์ธํธ(์ฃผ๋ก ์น ๋ธ๋ผ์ฐ์ )์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ , ์๋ต์ ์์ฑํ๋ ์ญํ ์ ํฉ๋๋ค. ์ฃผ๋ก HTTP ์์ฒญ๊ณผ ์๋ต์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ฉฐ, Java EE (์ดํ Jakarta EE๋ก ์ด๋ฆ ๋ณ๊ฒฝ) ์คํ์ ์ผ๋ถ์ ๋๋ค.
Servlet์ ๊ธฐ๋ณธ์ ์ผ๋ก ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ(Tomcat, Jetty ๋ฑ) ์์์ ๋์ํ๋ฉฐ, ์น ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ์ค๊ฐ ์ฒ๋ฆฌ์๋ก ๊ธฐ๋ฅํฉ๋๋ค.
Servlet์ ์ฃผ์ ํน์ง
- Java ์ธ์ด ๊ธฐ๋ฐ: ํ๋ซํผ ๋ ๋ฆฝ์ ์ด๋ฉฐ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ฅ์ ์ ๊ฐ์ง๋๋ค.
- ์์ฒญ-์๋ต ์ฒ๋ฆฌ: HTTP ์์ฒญ(
GET,POST,PUT,DELETE๋ฑ)์ ๋ฐ์์ ํ์ํ ๋น์ฆ๋์ค ๋ก์ง์ ์ํํ๊ณ , ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ํด๋ผ์ด์ธํธ์ ์ ์กํฉ๋๋ค. - ํ์ฅ์ฑ: ์ถ๊ฐ ์ค์ ๊ณผ ๋ผ์ดํ์ฌ์ดํด ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํด ๋ณต์กํ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ์ค๋ ๋ ๊ธฐ๋ฐ: ํ๋์ Servlet ์ธ์คํด์ค๊ฐ ๋ค์์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฌ๋ฌ ์ค๋ ๋์ ํจ๊ป ๋์ํฉ๋๋ค.
- ๋ผ์ดํ์ฌ์ดํด ๊ด๋ฆฌ:
init(),service(),destroy()๋ฉ์๋๋ฅผ ํตํด ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
Servlet์ ๋์ ๋ฐฉ์
- ํด๋ผ์ด์ธํธ ์์ฒญ: ์ฌ์ฉ์๊ฐ ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ์๋ฒ๋ก ์์ฒญ์ ๋ณด๋ ๋๋ค.
- ์น ์๋ฒ ์ ๋ฌ: ์์ฒญ์ ์น ์๋ฒ(Tomcat ๋ฑ)์ ์ํด ํด๋น Servlet์ ์ ๋ฌ๋ฉ๋๋ค.
- Servlet ์์ฒญ ์ฒ๋ฆฌ:
service()๋ฉ์๋๊ฐ ํธ์ถ๋์ด ์์ฒญ์ ์ฒ๋ฆฌํฉ๋๋ค.- ์์ฒญ ๋ฐฉ์์ ๋ฐ๋ผ
doGet(),doPost()๋ฑ์ ๋ฉ์๋๊ฐ ์คํ๋ฉ๋๋ค.
- ์๋ต ์์ฑ: ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ
HttpServletResponse๊ฐ์ฒด๋ฅผ ํตํด ํด๋ผ์ด์ธํธ๋ก ๋ฐํํฉ๋๋ค. - ๋ผ์ดํ์ฌ์ดํด ์ข
๋ฃ: ์๋ฒ๊ฐ ๋ด๋ ค๊ฐ๊ฑฐ๋ ํน์ ์ํฉ์์
destroy()๊ฐ ํธ์ถ๋์ด ์ ๋ฆฌ ์์ ์ ํฉ๋๋ค.
Servlet์ ๊ธฐ๋ณธ ๊ตฌ์กฐ (์์ )
import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/hello") public class HelloServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html"); resp.getWriter().write("<h1>Hello, Servlet!</h1>"); } }์ด ์ฝ๋๋
/hello๊ฒฝ๋ก๋ก ์์ฒญ์ด ์ค๋ฉด “Hello, Servlet!” ์ด๋ผ๋ HTML์ ํด๋ผ์ด์ธํธ์ ๋ฐํํฉ๋๋ค.CreatedTue, 29 Apr 2025 20:19:45 +0900 -
Java์์
abstract class์interface๋ ๋ ๋ค **์ถ์ํ(abstraction)**๋ฅผ ์ํ ์๋จ์ด์ง๋ง, ์ค๊ณ ๋ชฉ์ ๊ณผ ์ฌ์ฉ ๋ฐฉ์์ ์ค์ํ ์ฐจ์ด๊ฐ ์์ต๋๋ค. ์๋์ ๊ทธ ์ฐจ์ด์ ์ ์ ๋ฆฌํด ๋๋ฆด๊ฒ์.
โ ๊ณตํต์
- ๋ ๋ค ์ธ์คํด์คํํ ์ ์์
- ๋ ๋ค ๋ฉ์๋ ์๊ทธ๋์ฒ๋ง ์ ์ธํ๊ณ , ๊ตฌํ์ ํ์ ํด๋์ค(๋๋ ๊ตฌํ ํด๋์ค)์์ ๋ด๋น
- ๋ ๋ค **๋คํ์ฑ(polymorphism)**์ ์ํ ์๋จ
๐ ์ฃผ์ ์ฐจ์ด์
ํญ๋ชฉ abstract classinterfaceํค์๋ abstract class ClassNameinterface InterfaceName๋ค์ค ์์ ๋ถ๊ฐ (๋จ์ผ ์์๋ง ๊ฐ๋ฅ) ๊ฐ๋ฅ (์ฌ๋ฌ ์ธํฐํ์ด์ค ๊ตฌํ ๊ฐ๋ฅ) ์์ฑ์ ์์ฑ์ ์ ์ ๊ฐ๋ฅ ์์ฑ์ ์์ ํ๋ ์ธ์คํด์ค ๋ณ์, ์ ์ ๋ณ์ ๊ฐ๋ฅ public static final์์๋ง ์ ์ธ ๊ฐ๋ฅ (Java 8 ์ด์ ๊ธฐ์ค)๋ฉ์๋ ๊ตฌํ ์ผ๋ถ ๋ฉ์๋ ๊ตฌํ ๊ฐ๋ฅ Java 8๋ถํฐ๋ default,static๋ฉ์๋ ๊ตฌํ ๊ฐ๋ฅ์ ๊ทผ ์ ์ด์ ๋ค์ํ ์ ๊ทผ ์ ์ด์( private,protected,public) ์ฌ์ฉ ๊ฐ๋ฅ๋ชจ๋ ๋ฉ์๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก public abstract(Java 9 ์ดํprivate๋ฉ์๋๋ ๊ฐ๋ฅ)๋ชฉ์ “IS-A” ๊ด๊ณ (์์ ๊ธฐ๋ฐ์ ๊ณ์ธตํ) ๊ธฐ๋ฅ ์ ์์ฉ, ๊ณ์ฝ ๊ธฐ๋ฐ ๊ตฌ์กฐ (๋คํ์ฑ, ํ๋ฌ๊ทธ์ธ)
โจ Java 8+ ์ดํ ๋ฌ๋ผ์ง ์
- Java 8๋ถํฐ ์ธํฐํ์ด์ค์
default๋ฉ์๋์static๋ฉ์๋ ์ถ๊ฐ ๊ฐ๋ฅinterface Vehicle { default void start() { System.out.println("Starting..."); } } - Java 9๋ถํฐ๋
private๋ฉ์๋๋ ์ธํฐํ์ด์ค ๋ด๋ถ์์ ์ ์ธ ๊ฐ๋ฅ
โ ์ธ์ ์ด๋ค ๊ฑธ ์จ์ผ ํ ๊น?
-
abstract class๊ฐ ์ ํฉํ ๊ฒฝ์ฐ:
CreatedThu, 24 Apr 2025 21:48:45 +0900