728x90
반응형

성능 4

[Effective Java] 아이템 63. 문자열 연결은 느리니 주의하라.

🎯 아이템 63. 문자열 연결은 느리니 주의하라. 문자열 연결 연산자로 문자열 n개를 잇는 시간은 n^2에 비례한다. 문자열 연결을 잘못 사용한 예 - 느리다! public String statement(){ String result = ""; for(int i = 0; i < numItems(); i++) result += lineForItem(i); return result; } 품목이 많을 경우 이 메서드는 심각하게 느려질 수 있다. 성능을 포기하고 싶지 않다면 String 대신 StringBuilder를 사용하자. StringBuilder를 사용하면 문자열 연결 성능이 크게 개선된다. public String statement2(){ StringBuilder b = new StringBuilder..

Java 2023.03.28

[Database] 트랜잭션의 격리 수준(Isolation Level)

🎯 트랜잭션의 격리 수준(Isolation Level) 트랜잭션의 격리 수준(Isolation Level)은 동시에 여러 트랜잭션이 실행될 때, 각각의 트랜잭션이 서로 영향을 주지 않고 독립적으로 실행될 수 있도록 하는데 중요한 역할을 합니다. 격리 수준은 동시에 실행되는 다른 트랜잭션들과의 상호작용 방식을 결정합니다. 트랜잭션의 격리 수준 4가지 READ UNCOMMITTED 트랜잭션이 커밋되지 않은 다른 트랜잭션에서 변경된 데이터도 읽어들일 수 있는 최하의 격리 수준입니다. Dirty Read, Non-repeatable Read, Phantom Read 문제점이 발생할 수 있습니다. READ COMMITTED 트랜잭션이 커밋된 데이터만 읽어들일 수 있습니다. Dirty Read 문제는 발생하지 않지..

Database 2023.03.26

[Database] 정규화(Normalization)

🎯 정규화(Normalization) 정규화(Normalization)는 데이터베이스 설계에서 중복 데이터를 최소화하고 데이터 일관성을 유지하기 위해 데이터를 구조화하는 과정입니다. 정규화는 여러 단계로 나눠서 진행됩니다. 각 단계는 더 높은 정규화 수준을 의미하며, 보통 1NF(First Normal Form), 2NF, 3NF, BCNF(Boyce-Codd Normal Form), 4NF, 5NF까지 진행됩니다. 이 단계별로 데이터베이스 구조를 변형해나가는 것을 정규화라고 합니다. 정규화를 수행하면 중복 데이터를 최소화할 수 있어 데이터 저장 공간을 절약할 수 있고, 데이터 일관성을 유지하며 삽입, 수정, 삭제 등의 작업을 보다 효율적으로 수행할 수 있습니다. 하지만 너무 많은 정규화가 일어날 경우,..

Database 2023.03.26

[Effective Java] 아이템 53. 가변인수는 신중히 사용하라.

🎯 아이템 53. 가변인수는 신중히 사용하라. 인수 개수가 일정하지 않은 메서드를 정의해야 한다면 가변인수가 반드시 필요하다. 메서드를 정의할 때 필수 매개변수는 가변인수 앞에 두고, 가변인수를 사용할 때는 성능 문제까지 고려하자. 인수가 1개 이상이어야 하는 가변인수 메서드 - 잘못 구현한 예! static int min(int... args) { if (args.length == 0) throw new IllegalArgumentException("인수가 1개 이상 필요합니다."); int min = args[0]; for (int i = 1; i < args.length; i++) if (args[i] < min) min = args[i]; return min; } 이 방식에는 문제가 몇 개 있다...

Java 2023.03.24
728x90
반응형