🚀 OOP를 올바르계 설계해 나가는 원칙 OOP의 4대 특성 캡슐화, 상속, 추상화, 다형성은 객체지향 프로그래밍을 이어가는 동안 사용할 Tool 같은 역할이 된다. 도구가 있다면 용도에 맞게 사용해야하는데 요리를 하면 표준에 있듯이 OOP 세계에서도 원칙이라는 것이 존대한다. OOP를 기반으로 설계하는 방식을 OOD (Object Oriented Design)이라고 하며 설계 방법을 구체화 하여 정리한 원칙이 SOLID가 되는 것이다. 🌠 SOLID 원칙이 탄생한 것은 높은 응집도와 낮은 결합도 목표로 로버트 C.마틴이 확립한 개념이다. ☄ LSP(Liskov Substitution Principle) : 리스코프 치환 원칙 서브 타입은 언제나 자신의 기반 타입으로 교체할 수 있어야한다. LSP원칙의 ..
🚀 OOP를 올바르계 설계해 나가는 원칙 OOP의 4대 특성 캡슐화, 상속, 추상화, 다형성은 객체지향 프로그래밍을 이어가는 동안 사용할 Tool 같은 역할이 된다. 도구가 있다면 용도에 맞게 사용해야하는데 요리를 하면 표준에 있듯이 OOP 세계에서도 원칙이라는 것이 존대한다. OOP를 기반으로 설계하는 방식을 OOD (Object Oriented Design)이라고 하며 설계 방법을 구체화 하여 정리한 원칙이 SOLID가 되는 것이다. 🌠 SOLID 원칙이 탄생한 것은 높은 응집도와 낮은 결합도 목표로 로버트 C.마틴이 확립한 개념이다. ☄ ISP(Interface Segregation Principle) : 인터페이스 분리 원칙 클라이언트는 자신이 사용하지 않는 메서드에 의존 관계를 맺으면 안 된다...
🚀 프로그램이 메모리를 사용하는 방식 하나의 프로그램이 실행될 때 프로그램이 메모리를 사용하는 방식이다. 기계어를 포함한 모든 프로그래밍이 언어의 공통된 메모리 사용방식이며 OOP에서는 데이터 저장 영역을 다시 3개의 영역으로 나누어 사용한다. 🌠 main() 메소드 : 메소드 스택 프레임 자바가 실행되면 JRE는 프로그램 내부의 main() 메소드의 유무를 확인하고 이어서 JVM이 역할을 이어 받아 전저리 과정을 이어간다. 프로그램이 실행되면 JVM은 실행에 필요한 패키지(ex. java.lang)를 Static 영역에 저장한다. 그리고 JVM은 개발자가 작성한 모든 클래스와 패키지 역시 Static영역에 저장한다. ☄ main() 메소드가 실행되기 전 JVM에서 수행하는 전처리 작업들 java.lan..
🚀 자바의 구성 우리가 자바를 다루면서 자바가 어떻게 운영되는지 확인할 필요가 있다. 자바의 최대 장점으로 JVM이 설치되어 있는 어느 운영체제라도 JDK를 사용할 수 있다 알고있다. 우리는 여기서 더 자세하게 알고 들어갈 필요가 있다. 🌠 JVM(Java Virtual Machine) 자바 바이트코드를 실행할 수 있는 스택 기반의 가상 머신을 구현한 소프트웨어이다. JVM의 역할은 JAVA Application을 클래스 로더를 통해 읽어 들여 자바 API와 함께 실할하게된다. 때문에 JAVA와 OS에서 중계 역할을 하여 JAVA가 OS환경에 구애받지 않고 실행을 가능하게 해준다. 또한, 메모리 관리, GC(Garbage collection)을 수행한다. 🌠 JDK(Java Development kit)..
🚀 Lambda 의 등장 기술이 발전되어 가면서 커져만 가는 데이터를 처리한 방법을 필요로했고 이를 필요로 하는 CPU 의 성능 향상이 필요하게 되었다. 이후 CPU에 멀티 코어가 등장하게 되면서 모든 데이터를 빠르게 처리하기 위해 모든 코어를 동원할 수 있는 기술을 개발하게된다. 그렇게 JAVA 8에서 새롭게 등장한 병렬화 개념이 등장했고 동시에 Collection (Map / Set / List)가 더욱 강화 되었다. 이러한 컬렉션 기능을 더욱 효울적으로 사용하기 위해 등장한 함수형 프로그래밍이 오늘의 주제인 Lambda인 것이다. 그래서 람다식이란? 스프링을 위한 자바 객체 지향의 원리와 이해 에서 정의한 람다식 이란? 코드 블록을 위해 메서드를, 메서드를 사용하기 위해 익명 객체를 만드는 복잡함을..
🚀 Stream 이란? 데이터의 흐름을 정의가능한 API로 Collection을 함수로 정의할 수 있다. java8 에서 추가된 API 데이터를 다루는 영역에서 강한 측성을 보임 데이터를 처리하기 위한 내부반복을 통해 정렬 / 필터링 기능 제공 🌠 특징 ✔ 병렬 처리에 유리 병렬 처리를 위해 common fork join pool을 사용하는 parallel() 메소드 제공 common fork join pool 각 스레드가 개별 큐를 가지고 있으며, 놀고 있는 스레드가 있으면 일하는 스레드의 작업을 가져와 수행하여 최적의 성능 도출 코어의 수가 많을수록, 처리할 데이터 수가 많을수록, 데이터당 처리 시간이 길수록 병렬 처리 성능 향상 배열, ArrayList 사용 시 유리(LinkedList는 순차 진행..
WebRTC(Web Real Time Communication) 이름 그대로 웹 브러우저 간에 플러그인 없이 통신 가능한 실시간 커뮤니티 서비스이며 음성 / 영상 / p2p 파일공유 기능을 이용할 수 있다. 정리하면 서버를 통하기 않고 바로 상태 브라우저로 정보를 전달(P2P : Peer to Peer)할 수 있다는 말이다. WebRTC vs WebSocket WebSocket의 상위 기술이 WebRTC 이며 기존의 WebSocket은 서버를 중심으로 Request 와 Respond 으로 정보 전달이 이루어진다. 때문에 메모리문제, 전달속도 비용 문제가 상당하다. 이러한 문제를 해결하고자 등장한 것이 WebRTC이다. 브라우저간 빠른 정보 전달이 가능한 이 기술은 기존 서버에서 발생한 메모리 문제, 전달..
목표 나의 포트폴리오 게임 페이지는 배포까지의 괴정을 완료한 프로젝트이다. 그러나 지속적인 최적화 그리고 기능 추가를 위해 지속적 관리를 이어가고 있다. 현재는 그렇기 않지만 DB 모델링의 문제로 추후 Delay 현상이 발생한 문제가 있었다. 때문에 DB 모델링을 개성하기 위해 단일 객체 테이블 방식에서 다대일 방식을 적용하여 게시판 Table 과 댓글 Table 을 Mapping 하는 것을 목표로 한다. Before A. Account(사용자) Table public class Account { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE) private Long id; @Column(nullable = false) @NotBlank private ..
최대 부분 합 구하기 SSAFY 7기 CT 문제에 출제되었던 문제로 1차원 배열에서 가장 큰 값을 가질 수 있는 연속적인 부분 배열을 찾는 문제에 사용되는 알고리즘이다. 많은 문제들이 시간, 공간 복잡성이 적은 카디안 알고리즘을 적용한 문제풀이를 선호한다. 카디안 알고리즘에서는 시,공간 복잡성이 O(n) 으로 다음과 같이 구현한다. LeetCode 53. Maximum Subarray 문제 링크 public int maxSubArray(int[] nums) { int sum = 0; int max = Integer.MIN_VALUE; for (int i = 0; i < nums.length; i++){ sum+= nums[i]; max = Math.max(sum, max); if (sum < 0) sum..
1. 객체지향 객체지향의 개념은 1970년에 등장했으며 이전에는 C 언어처럼 실행하고자 하는 순서로 명령어를 처리하는 절차지향을 주로 사용해 왔다. 이후 프로그램의 복잡도가 높아지면서 이에 들어가는 유지보수, 개발기간 등의 다양한 부분에서 비 효율이 발생하면서 많은 개발자들이 효과적인 개발 방싱의 방법을 채택하게 되고 새로운 방식의 객체지향의 방법을 적용하게 된다 현실에 존재하는 사물을 있는 그대로 모델링하여, 이들의 행위와 속성을 정희하고, 절차적이 아닌 객체가 중심이 되어 실제 사물이 동작하는 방식으로 설계하였다. 1-1 객체 설계하기 객체의 3 요소 상대 유지(객체의 상태)객체는 상대 정보를 저장하고, 유지되어야하며 이러한 속정은 변수로 정의 되어져야한다. 이러한 속성값이 바뀜으로 인하여, 객체의 ..
- Total
- Today
- Yesterday
- CS
- Spring
- C언어
- 매트랩
- 스프링
- 수학
- 자바
- 면접
- 백준
- 알고리즘
- spring-cloud
- 디자인패턴
- nginx
- OOP
- 스프링부트
- 자격증
- Algorithm
- springboot
- 프로그래머스
- docker
- Matlab
- java
- 릿코드
- interview
- ajax
- security
- kakao
- 그래프
- JPA
- Solid
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |