



일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 카우치코딩 #couchcoding #6주포트폴리오 #6주협업프로젝트v
- 비동기
- 코딩온라인
- taskkill
- Kakao
- address
- 자바파이썬
- github markdown
- 플젝후체크
- 파이썬
- Technical Writing
- expression statement is not assignment or call html
- Anaconda
- SSR
- 모바일웹스킨
- #스파르타코딩클럽후기 #내일배움캠프후기
- 마크다운
- khaiii
- 파이콘
- 출처: 자바의 신 8장
- github
- PID
- 서버사이드렌더링
- terminate
- 클라이언트사이드렌더링
- 필사
- gitbash
- 카우치코딩 #couchcoding #6주포트폴리오 #6주협업프로젝트
- Morphological analysis #Corpus
- Machine Learning
- Today
- Total
목록전체 글 (132)
개발 일기

Static이란? Static 변수를(클래스 변수라고도 한다) 가지는 클래스를 아무리 많이 생성하더라도, static 변수는 하나만 만들어진다. 이는 모든 객체가 공유하는(바라보는) 변수가 된다. 자바에서 static 키워드를 쓴다는 것의 장점이 뭘까? Static 으로 선언 되었을 때는, 객체를 생성하지 않고도 사용할 수 있다. 메모리에 한번 할당되고, 프로그램이 종료될 때 해제되는 것이다. 단점: GC 관리 영역은 Heap이고, static 변수는 Data 영역에 저장된다. 즉 GC 관리가 되지 않는다. 그러다보니 Static을 자주 사용하면, 프로그램이 종료 까지 메모리가 할당된 채로 존재. 자주 사용하면 시스템 퍼포먼스에 악영향을 미친다. 참고로, Static 메서드에서 접근하는 변수 역시 sta..
모든 참조 자료형은 초기화(new 라는 예약어를 써서 생성자를 부르는 작업)를 하지 않으면 null이다. 참조 자료형 배열 각각의 값은 반드시 각각의 값을 초기화해줘야만 null이 되지 않는다. public class ArrayInitValue { public static void main(String[] args) { ArrayInitValue array = new ArrayInitValue(); array.referenceTypes(); } public void referenceTypes() { String[] strings = new String[2]; ArrayInitValue[] array = new ArrayInitValue[2]; System.out.println("string[0]= " +..

503에러란: 서비스를 사용할 수 없다는 뜻. 배포가 처음이고 전체 프로세스를 이해하지 못한 채로 이것저것 시도하다보니, 에러 디버깅도 지난한 과정이었다. 503에러를 해결해보면서 시도한 해결방법을 정리해보겠다. 1. 로컬 DB 가 아닌 Heroku Postgres 를 연결해주기. 당시 Git Action Workflow 가 제대로 run 되었기 때문에, DB 를 로컬로 설정하는 치명적인 실수(?) 를 자각하지 못하고 있었다. GIT ACTION 이 된다는 것은 설정 파일에 문제가 없다는 거지, 그게 실제로 서버가 동작하는 건 아니다. Heroku 에서 Postgres Credentials 에서 정보를 업데이트해주자. 2. procfile 을 체크하자. firebaesAdmin Key를 사용하지 않는다면..

API 서버 프로젝트를 하면서, 먼저 로그인/회원가입을 구현하고 있다. FirebaseOAuth 에서는 Client가 토큰을 headers 에 넣어서 백엔드에 보내주는 로직이 있다. 백엔드만 있는 상황에서는 이 로직을 구현할 수는 없지만, 토큰 외에 로직이 완성되었음을 테스트해야하기 때문에, 임시 방편으로 local 용 환경을 만들었다. 먼저 (1) 회원 가입 컨트롤러 (users/local이라는 APi 를 만들어준다. (2) Local 용 security Config, (3) LocalJwtfilter, (4) application-local.yml 을 따로 만들었다. 이렇게 하면 profile을 local로 설정해서 따로 테스트를 할 수 있다. 컴파일 에러는 없었는데, 포스트맨 post test 를 ..

1. 프로젝트 셋업 Google -> 사용설정 -> 프로젝트 이름/ 지원 이메일을 설정하고 저장하기. Build.gradle 에 추가해주자 implementationgroup:'com.google.firebase',name:'firebase-admin',version:'8.0.1' implementation'org.springframework.boot:spring-boot-starter-security' 시스템 -> 고급 시스템 설정 -> 시스템 속성 환경변수 -> 새로 만들기 Google credentials 키 값과 함께, 변수 값은 파일 찾아보기로 직접 넣어줘도 된다 2. FireBase 초기화, 인증 토큰 검증 FirebaseInitializer 라는 Configuration 만들고, Fireba..

접근자의 종류와 기능 접근 제어자란? 객체 지향 프로그램에서는 예약어를 사용해서 클래스 내부의 변수나 메서드, 생성자에 대한 접근 권한을 지정할 수 있다. 이러한 예약어를 접근 제어자라고 한다. 접근 제어자의 종류 변수는 선언한 접근 제어자에 따라 다음과 같은 특징을 지닌다. Public: 메서드는 외부 클래스에서 접근이 가능하며, 외부 클래스가 사용할 수 있다. private: 같은 클래스내에서만 접근이 외부 클래스에서 사용할 수 없다. protected: 같은 패키지 내부와 상속 관계의 클래스에서만 접근할 수 있고 그 외 클래스에서는 접근할 수 없다. default없음: 아무것도 없을 때도 해당한다. 같은 패키지 내부에서만 접근 가능하다. private -> protected ->protected -..
오버라이딩: 상속받은 부모 클래스의 기능을 재정의한다. 용도: 상위 클래스에서 정의한 메서드가 하위 클래스에서 구현할 내용과 맞지 않을 때, 하위 클래스에서 메서드를 재정의 한다. 오버라이딩을 하려면, 반환형, 메서드 이름, 매개변수 개수, 매개변수 자료형이 같아야 한다. 그렇지 않으면 자바 컴파일러가 재정의한 메서드를 기존 메서드와 다른 메서드로 인식하기 때문이다. @Override 라는 어노테이션을 쓰면, 이 메서드가 재정의된 메서드임을 컴파일러에게 알려줄 수 있다. 만약 메서드의 선언부가 다르다면, 컴파일 오류가 발생해서 실수를 막아준다. 일반적인 주석과 다르게 검증하는 기능을 한다. 오버로딩: 상속과는 상관없고, 기존에 없던 새로운 메서드를 정의하는 것이다. 기존에 존재하는 메소드와 같은 이름의 ..
각 변수 타입이 몇 byte인지, primitive type과 reference type의 차이와 활용 변수타입을 알아야 하는 이유: 메모리에는 제약이 있기 때문이다. 메모리를 효율적으로 사용하기 위해 가장 적합한 자료형을 찾자. 똑같은 데이터를 저장하더라도, 변수 타입에 따라서 메모리 사용량이 다르다. 즉 어떤 숫자를 저장하느냐에 따라서 사용하는 메모리의 크기가 달라지는 것이 아니고, 어떤 데이터 타입으로 변수를 선언했느냐에 따라서 사용하는 메모리의 크기가 달라진다. 표현 가능 범위를 넘어서는 수를 부여하면, 오류가 뜬다. 정수형 데이터 타입 메모리의 크기 표현 가능 범위 byte 1 byte (8bits) -128 ~ 127 (2의 8승 즉 256만큼의 수를 표현할 수 있다) short 2 byte ..