반응형
제육's 휘발성 코딩
반응형
[Clean Code] Chap 2. 의미 있는 이름
Book/Clean Code 2021. 9. 1. 17:10

나쁜 코드 성능이 나쁜 코드 불필요한 연산이 들어가서 개선의 여지가 있는 코드 의미가 모호한 코드 이해하기 어려운 코드, 네이밍과 그 내용이 다른 코드 중복된 코드 비슷한 내용인데 중복되는 코드들은 버그를 낳는다. 깨진 유리창 법칙 - 나쁜 코드는 유리창 처럼 계속 나쁜 코드가 만들어지도록 한다. 생산성 저하 - 나쁜 코드는 팀 생산성을 저하시킨다. 기술부채를 만들어 수정을 더 어렵게 한다. 결국 새로운 시스템을 만들어야 한다. 시간이 없다고 나쁜 코드를 사용하면, 결국 일정을 못맞춘다. 클린 코드 성능이 좋은 코드 의미가 명확한 코드 - 가독성이 좋은 코드 중복이 제거된 코드 보이스카우트 룰 : 전보다 더 깨끗한 상태로 만든다. 의미가 분명한 이름 짓기 이름을 잘 짓는 간단한 규칙 소프트웨어에서 이름은..

[Database] 데이터 모델링
CS/데이터베이스 2021. 8. 29. 21:00

데이터 모델링 데이터 모델링이란 현실 세계를 데이터베이스로 표현하는 것을 의미한다. 특징 추상화 (Abstraction) : 현실 세계를 간략하게 표현 단순화 (Simplification) : 누구나 쉽게 이해할 수 있도록 표현 명확성 (Clarity) : 명확하게 의미 해석, 한가지 의미만 가짐 단계 1. 개념적 모델링 Entity와 Attribute를 도출하고 개념적 ERD를 작성 복잡하게 표현하지 않고 중요한 부분을 위주로 모델링 추상화 수준이 가장 높으며, 전사적 관점에서 모델링 2. 논리적 모델링 개념적 모델링을 논리적 모델링으로 변환하는 작업 식별자를 도출하고 필요한 모든 릴레이션 정의 정규화를 통해 데이터 모델의 독립성 확보 3. 물리적 모델링 실제 데이터베이스를 구축 (테이블, 인덱스, 함..

CH1. 문자열
🔷 Java/Algorithm 2021. 8. 26. 14:15

문자 찾기 public class Main { public int solution(String str, char t) { int answer = 0; str = str.toUpperCase(); t = Character.toUpperCase(t); for (char x : str.toCharArray()) { if ( x == t ) answer ++; } return answer; } public static void main(String[] args) { Main T = new Main(); Scanner kb = new Scanner(System.in); String str = kb.next(); char c = kb.next().charAt(0); System.out.print(T.solution..

static 이란?
🔷 Java/Basic 2021. 8. 24. 04:06

JVM 메모리 구조 JVM : 자바 바이트 코드들을 OS에서 어떻게 실행할 지에 대한 표준 스펙 static 키워드를 이해하기 위해선 JVM의 메모리 구조 및 실행 단계에 대한 선행되어야 한다. JVM 구조 Garbage Collector : Heap 영역에 더이상 사용 하지 않는 객체 제거 Execution Engine : .class 파일을 하나의 명령 단위로 읽어 컴퓨터가 이해할 수 있는 기계어로 번역 후 실행 Class Loader : .java 파일을 .class로 (바이트코드)로 컴파일된 바이트 코드들을 운영체제를 통해 메모리를 할당 받아둔 Runtime Data Area로 적재하는 역할 Runtime Data Area : JVM 메모리 영역으로 OS로 부터 별도로 메모리 공간을 할당 받고 J..

객체지향 프로그래밍 3요소
🔷 Java/Basic 2021. 8. 17. 01:02

객체지향 프로그래밍 - OOP 현실 세계를 객체로 모델링하여 소프트웨어를 개발하는 방법 소프트웨어를 개발할 때 시스템에 대한 요구사항이 계속해서 추가되고 변경된다. 이를 객체지향에 대입 장점 : 객체마다 유연하게 프로그래밍하여 시스템의 확장이나 변경에 쉽게 대응(안정적인 유지 보수 가능) 단점 : 처리 속도가 상대적으로 느리고 설계할 때 많은 시간과 노력 필요 객체지향 프로그래밍의 3요소 캡슐화(Encapsulation) - 정보은닉 public class Ex1 { private int id; private String name; private String password; public int getId() { return id; } public void setId(int id) { this.id = ..

[Spring JPA] - 연관 관계 매핑 (단방향, 양방향)
🔷 Spring/JPA 2021. 8. 14. 22:55

목표 객체와 테이블 연관관계의 차이를 이해 객체의 참조와 테이블의 외래 키를 매핑 용어 이해 방향 : 단방향, 양방향 다중성 : 다대일, 일대다, 일대일, 다대다 연관관계의 주인 : 객체 양방향 연관관계는 관리 주인이 필요 연관관계가 필요한 이유 객체지향 설계의 목표는 자율적인 객체들의 협력 공동체를 만드는 것이다. 예제 시나리오 회원과 팀 존재할 때, 회원은 하나의 팀에만 소속 = 하나의 팀에는 여러 회원 소속 회원과 팀은 다대일 관계를 갖는다. 테이블 중심 설계시 문제점 다음과 같이 설계했을 때 발생하는 문제점에 대해 알아보자. 회원 테이블 @Entity public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long..

[Spring JPA] - 엔티티 매핑 종류
🔷 Spring/JPA 2021. 8. 14. 14:02

엔티티 매핑 종류 객체와 테이블 매핑 : @Entity, @Table 필드와 컬럼 매핑 : @Column 기본 키 매핑 : @Id 연관관계 매핑 : @ManyToOne,@JoinColumn 객체와 테이블 매핑 @Entity @Entity가 붙은 클래스는 JPA가 관리하는 클래스로 엔티티라고 부른다. 즉, 테이블과 매핑할 클래스는 반드시 @Entity를 적용해야 한다. 기본 생성자 필수 (파라미터가 없는 public 또는 protected) final 클래스, enum, interface, inner 클래스 사용할 수 없다. 저장할 필드에 final 키워드를 사용할 수 없다. @Table 기본 값은 클래스 이름을 그대로 사용한다. 유니크 제약 조건 추가 : @Table(uniqueConstraints = ..

[Spring JPA] - 영속성 컨텍스트
🔷 Spring/JPA 2021. 8. 13. 20:13

영속성 컨텍스트 "엔티티를 영구 저장하는 환경"이라는 뜻 (DB의 저장이라기보다, 영속성 컨텍스트에 저장한다는 의미) EntityManager.persist(entity); - 엔티티 매니저를 통해 영속성 컨텍스트에 접근 JPA 에서 가장 중요한 2가지 객체와 관계형 데이터베이스 매핑하기 (Object Relational Mapping) 영속성 컨텍스트 엔티티의 생명주기 비영속 (new/transient) - 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 // 객체만 생성한 상태 (비영속) Member member = new Member(); member.set~ 영속(managed) - 영속성 컨텍스트에 관리되는 상태 - DB에 저장되는게 아니다. 저장은 commit EntityManager em =..

반응형
반응형