본문 바로가기

전체 글215

코드스테이츠 백엔드 부트캠프 43기 (16,17일차-자바 심화 회고) 자바 심화 애너테이션, 람다, 스트림을 배웠다. 학부시절 별로 사용하지 않는것 같아(어려웠음...) 제대로 배우지 않고 넘어갔던 부분 그리고 코딩테스트를 준비하면서 몇 알고리즘은 정말 말도 안되게 짧은 코딩이 있었다. 그리고 나는 그걸 보고 "와 야무지다... 저건 무슨 문법이지? " 라고 했던게 바로 스트림 이였다. 그런데 오늘 딱 마침 자바심화에서 람다와 스트림을 배우게 되었다. 아직 람다, 스트림을 완벽히 내 몸으로 흡수하지 못하여 오늘은 간단한 개념정도만 정리하려고 한다. 람다 람다는 우리가 사용하는 메서드를 좀 더 간단하고 편리하게 사용하기 위한 문법이다. // 기존 방식 int sum(int num1, int num2) { return num1 + num2; } // 람다식 -> * 메서드 이.. 2023. 1. 7.
코드스테이츠 백엔드 부트캠프 43기 (14,15일차-컬렉션 회고) 열거형 상수들을 관리하기 위함 타입에 대한 안정성을 보장 - 아직 활용을 해보지 않아 몸소 와닿지 않는다. 제네릭 해시맵이나 어레이리스트를 생성해보면 ArrayList ?? = new ArrayList(); 이런식으로 선언이 된다. 여기서 이 안에 고정값이 아닌, String 이나 Integer 참조타입을 사용자가 원하는 타입을 넣을 수 있다. 이 같은 기능을 제네릭이라고 한다. 설정으로 ArrayList가 밑에 코드인거 처럼 가정한다면, T라고 선언을 하면 어떤 타입으로든 받을수 있다. class ArrayList { private T item; public ArrayList(T item) { this.item = item; } public T getItem() { return item; } publi.. 2023. 1. 5.
KISA 대학생 영상 서포터즈 2기 (1) 다양한 활동을 하고 경험을 하는게 대학생활의 묘미 아닌가? 내가 다양한 활동을 통해서 배우는 부분들이 많았고 다양한 분야를 경험할 수 있는 좋은 경험이 되었다. 그래서 컴퓨터 전공인 나는 다양한 대외활동을 참여하고 있으며 이번에는 KISA에서 진행했던 영상 서포터즈 후기를 남기려고 한다. 영상 서포터즈는 동영상 촬영, 편집과 관련되어 보안과 KISA에 대한 홍보영상을 만드는 활동이다. 그래서 나와 동기들은 컴퓨터전공인 우리가 할 수 있을까? 싶었지만 그냥 도전해 보았다. 결국은 왜 합격되었는지는 모르겠지만 합격이 되었고 KISA의 요구사항에 맞춰 영상을 제작하는 임무를 맡았다. -> KISA에서 주제를 주면 그 주제중 마음에 드는걸 골라서 영상을 제작한다. (총 2개의 영상을 제작) Ex) 한글도메인, .. 2023. 1. 2.
코드스테이츠 백엔드 부트캠프 43기 (13일차-버거퀸 프로젝트 회고) 버거퀸 프로젝트 버거퀸 프로젝트를 진행하면서 패키지를 나누고 그 안에 적절한 class를 넣으면서 모든 기능을 분리하는 역할을 프로젝트를 하면서 배우게 되었다. 하나의 클래스를 만들면서도 그 클래스는 자신의 역할만 수행해야하는 개념을 배우게 되었고 그렇게 되기 위해서는 추상화와 다형성은 필수였다. 추상화를 통하여 클래스간 인터페이스 역할을 해주었고 다형성을 통하여 추상화된 객체들을 하나의 변수에 받을 수 있게되므로 외부에서 객체를 주입할 수 있게되었다. -생성자를 통하여 객체를 외부로부터 주입받아 사용하자. 어떤 클래스를 자신의 역할만 수행해야 한다. 자신의 역할안에서 다른 인스턴스를 생성하고 그의 기능을 수행하는 거는 객체지향 역할에서 벗어나는 행위이다. 그렇기에 다른 객체를 받을때는 생성자를 통해 외.. 2023. 1. 2.
코드스테이츠 백엔드 부트캠프 43기 (11,12일차-객체지향심화 회고) 객체지향심화 객체지향심화를 배우면서 많은 것을 배우고 느끼게 되었다. 객체지향심화에는 상속, 다형성, 추상화, 캡슐화가 대표적인 주제였다. 대학시절 자바응용을 배우면서 배운 내용이긴 하지만 중요하게 생각하지 않아 대충 보고 넘기게 되었었다. 하지만 이번 객제치향심화를 배우면서 내가 잘 못된 객체지향코딩을 하고 있었구나 하고 깨닫게 되었다. 객체지향에 있어 위의 4가지 키워드는 매우 중요했으며 객체지향적 프로그램 관리를 하기위해서 꼭 필요한 키워드이다. 상속 쉽게 말해 물려 받는다. class Person { String name; int age; void learn(){ System.out.println("숨을 쉰다"); }; void walk(){ System.out.println("공부한다."); }.. 2022. 12. 31.
코드스테이츠 백엔드 부트캠프 43기 (10일차-객체지향 회고) 생성자 클래스에는 적어도 하나 이상의 생성자가 존재한다. 생성자를 통하여 객체 인스턴스의 변수들을 초기화 할 수 있다. - 생성자 명은 클래스 이름 - 리턴 타입은 없다. - 오버로딩 가능 - this() -> 생성자 내부에서만 생성이 가능, 다른 생성자를 호출할 때 사용 - this는 객체자신의 변수 tip // 클래스는 와 그리고 (생성자)와 (이너 클래스)로 구성 될 수 있다. // 클래스 메서드(스태틱) 안에서는 this를 사용할 수 없다. this 키워드는 인스턴스가 자기 자신을 가리킬 때 사용 객체지향 프로그래밍 기초를 배우면서 확실히 개념을 알고있는 상태에서 공부를 하니 이해가 더욱 잘 되며 모르는 부분에 집중을 할 수 있어 공부가 계획대로 잘 되가고 있다. 내일 부터는 객체지향 프로그래밍 .. 2022. 12. 29.
코드스테이츠 백엔드 부트캠프 43기 (9일차-객체지향 회고) 객체지향 프로그램을 객체로 나누어 결합도는 낮추고 응집도는 높이기 위한 프로그래밍. 자바는 클래스를 통하여 객체를 생성한다. 먼저 자바의 작동원리 (운영체제의 종류에 상관없이 JVM을 통해 실행) .java 파일은 컴파일을 통해 .class 파일로 바뀌어 JVM에 입력된다. JVM 내부에서 Class Loader를 통하여 Runtime Data Area에 로딩된다. Runtime Data Area 내부에는 대표적으로 (스택, 힙)이 있다. 1. 일반 변수를 선언시 변수와 변수의 값은 스택에 저장이 된다. //코드에서 int age = 29; 을 선언했을 때 2. new를 통해 참조변수를 생성하면 주소값은 스택에 저장이 되고 주소값의 내용은 힙에 저장이 된다. //코드에서 String name = new .. 2022. 12. 27.
코드스테이츠 백엔드 부트캠프 43기 (8일차-Java 회고) 배열 오늘 배운 배열 메서드 System.arraycopy(src, srcPos, dest, desPos,length) // 새로운 배열을 리턴하는게 아님 , 두 배열을 합칠때 유용함 arr1 = {1,2} arr2 = {3,4} 두 ARRAY 배열을 붙여서 하나의 ARRAY3 배열로 만들고 싶을 때 ARRAY3 = {1,2,3,4} 되기를 원함 System.arraycopy(arr2, 0, arr1, 0, arr1.length); // arr1 배열의 0번째 부터 arr2배열에, 0번째 위치부터 시 작, 복사하려는 길이인 arr1.length 길이만큼 복사 // 최종적으로 array3 에는 [1],[2] 로 복사됨 int[] arr1 = {1,2,0,0}; int[] arr2 = {3,4}; Syste.. 2022. 12. 26.
코드스테이츠 백엔드 부트캠프 43기 (7일차-Java 회고) 내가 해야되는일, 나의 역할 지금까지 성능이 좋은 코드를 짜야 좋은것을 알고 있었지만 나도 모르게 신경을 안쓰고 있었다. 계속 가독성이 좋고 짧은 코드만 생각, 성능은 생각을 안하고 코드를 짜고있었다. 코드 강사님이 알고리즘을 설명하면서 문득 깨닫게 되었다. 문제를 풀면서 내 코드는 Reference의 코드보다 짧았지만 Reference코드의 설명을 들으면서 내가 짧고 가독성이 좋은 코드에만 집중했다는걸 깨닫게 되었다. 성능을 높이고 안정성있는 코드를 짜야하는게 백엔드의 역할인데 그 역할을 잠시 잊고 코드를 짜고 있게된 나에 대해 다시 한번 회고할 수 있게되는 계기가 되었다. 2022. 12. 23.