부트캠프8 40일차: Section2 회고 Section1 회고를 작성한게 며칠전 같은데 벌써 한달이 또 지나버렸다. 지난 한달동안은 자료구조(알고리즘)와 네트워크, 스프링에 대해 학습했다. 확실히 Section1 보다는 생소한 개념이 많았고, 많이 어렵다는 느낌을 받았다. (Section3은 2보다 더 어렵다는데.... 잘할 수 있겠지..?🫠) 부트캠프의 1/3이 지난간것처럼 올해의 1/4이 지나갔다. 하루하루 시간이 지날수록 뭔가를 이루어내야한다는 부담감이 생기기도 하는데, 우선 지금은 현재 진행중인 부트캠프를 성공적으로 완주하는것만 생각하기로 했다. 특히 이번 세션은 지난 세션에 비해서 강의 자료가 친절하게 느껴지지는 않았다. 각 개념에 대한 간략한 설명만 제공되고 나머지 공부는 공식 홈페이지 자료를 읽어보도록 구성되어있었다. 제공된 부가자.. 2023. 4. 10. 35일차: Architecture, Spring Boot ❯ 아키텍처(Architecture) 어떤 시스템을 구축할 때 해당 시스템의 비즈니스적 요구사항을 만족하는 전체 시스템 구조를 정의하는것을 의미한다. 이미지나 도형을 사용해 표현하는 경우가 많다. 시스템 아키텍처 : 하드웨어와 소프트웨어를 모두 포함한 어떤 시스템의 전체적 구성을 표현한것 이를 통해 해당 시스템이 어떤 하드웨어로 구성되는지, 어떤 소프트웨어를 사용하는지 대략적으로 알 수 있다. 구성요소간의 상호작용이 어떻게 이루어지는지, 시스템이 정상적으로 동작하기 위한 원리 등을 표현할 수 있다. 아래 그림은 채팅 서버 시스템 아키텍처를 간단하게 나타낸 예시이다. 소프트웨어 아키텍처 : 소프트웨어의 구성을 큰 그림으로 표현한것 해당 소프트웨어가 어떤 기술을 지원하고 어떤 기능을 사용할 수 있는지 대략적.. 2023. 4. 3. 34일차: Spring Framework ❯ Framework Framework 란, 소프트웨어의 설계와 구현을 위해 재사용이 가능하게끔 협업화된 클래스를 제공하는 것을 말한다. 쉽게 표현하면 프레임(틀)을 만들기 위한 도구를 제공한다고 생각하면 된다. 이전에 사용했던 예시로는 Collection Framework 가 있다. 기본 구조가 만들어져있으므로 효율적으로 코드를 작성할 수 있다. 정해진 규약이 있어서 앱을 효율적으로 관리할 수 있다 해당 Framework 에 대한 학습이 필요하다. 정해진 규약이 있으므로 자유로운 개발이 어렵다. 여기에서, 비슷한 역할을 했던 Library 를 생각해볼 수 있다. Framework 와 Library 는 명백히 다른 개념으로, 아래와 같은 차이점을 가진다. Framework : 뼈대를 구성하는 것. 주도권.. 2023. 4. 2. 32일차: 데이터베이스 설계 ❯ Relational database (관계형 데이터베이스) 관계형 데이터베이스는 테이블(table)들이 다른 테이블과 관계를 맺고 모여있는 집합체로 이해할 수 있다. 여기서 테이블은 사전에 정의된 열의 데이터 타입에 맞는 데이터가 행으로 저장된 것을 의미한다. 열(column, field) : 테이블의 한 열을 나타내며 정해진 타입을 갖는다. 필드 또는 속성이라고도 불린다. 행(row) : 관계된 데이터의 묶음을 의미한다. 한 테이블은 같은 수의 열을 가지며 튜플, 레코드라고도 불린다. 값(value) : 각각 행과 열에 대응하는 값을 가진다. 열의 타입에 맞는 값을 가져야한다. 키(key) : 테이블에서 행의 식별자로 이용되는 열을 키(key) 또는 기본키(Primary key)라고 한다. 기본키는.. 2023. 3. 29. 26일차: 알고리즘(Algorithm)과 시간복잡도(Time Complexity) ❯ 알고리즘(Algorithm) 알고리즘이란, 문제를 해결하는 최선의 선택을 구하는 것을 의미한다. 이를 위해 문제를 정확하게 이해하고, 어떻게 해결할지 전략을 수립하고, 수립한 전략을 실제 코드로 작성할 수 있어야한다. 알고리즘 문제 풀이를 위해서는 의사코드(PseudoCode)를 잘 작성하는것이 중요하다. 자연어(혹은 프로그램언어)를 사용하여 프로그램 작동 논리를 작성하게된다. 의사코드를 구체적이고 논리적으로 작성해야 코드 작성시 시간이 단축되고 디버깅이 용이해진다. ❯ 시간 복잡도(Time Complexity) 이때까지 문제 풀이 혹은 기능 구현만 신경써서 연산 수행시간은 전혀 고려하지 않았다. 시간 복잡도란, 프로그램 입력값과 연산 수행시간의 상관관계를 나타내는 척도로 입력값의 변화에 따라 연산을.. 2023. 3. 21. 문자열을 요소로 갖는 배열의 가장 긴 글자, 작은 글자 제거하기 문제 자체는 아주 간단했는데, 처음 풀이 방향을 잡을때 놓친 부분때문에 한참을 헤맨 문제이다. String 타입의 요소를 갖는 배열에서 가장 길이가 짧은 문자열과 가장 길이가 긴 문자열을 제거한 배열을 리턴하는 메서드를 작성하는 문제였다. List를 사용한 방법과 arraycopy를 사용한 방법 두가지로 작성했는데, 동일한 부분을 놓쳐서 정답이 맞기도/틀리기도한 결과를 계속 냈다. public static String[] removeExtremes(String[] arr) { // --------------------------- 1안 --------------------------- if (arr.length == 0) return null; int[] lengths = new int[arr.lengt.. 2023. 3. 21. 이전 1 2 다음