전체 글 42

[JAVA 고급1] 2. 스레드의 생성과 실행

Java 메모리 구조 Java 메모리는 3가지 영역으로 구성되어 있다 - 메서드 영역 Method Area 프로그램을 실행하는데 필요한 공통 데이터를 관리한다 그러므로 프로그램의 모든 영역에서 공유 안에 있는 3가지는 각각 클래스 정보 : 클래스 실행 코드, 필드, 메서드, 생성자등 모든 실행코드 static 영역 : static 변수 보관 런타임 상수 풀 : 공통 리터럴 상수 - 스택 영역 Stack Area 스레드 별 하나의 실행 스택이 생성된다 (스레드 수 만큼 스택이 생성된다) 네모칸 하나가 스택 프레임이고 지역 변수, 중간 연산 결과, 메서드 호출 정보를 포함한다 메서드를 호출할 때 마다 하나의 스택 프레임이 쌓이고, 메서드가 종료되면 해..

SUMMARY/JAVA 2025.08.11

[JAVA 고급1] 1. 프로세스와 스레드

자바 멀티 스레드를 이해하기 위해 OS 수준의 프로세스와 스레드 환경을 이해해야 한다학교 운영체제 시간에 다 배우기는 했지만 맨날 헷갈리니 다시 정리 멀티 태스킹 멀티 태스킹과 프로세싱을 이해하기 위해 단일 CPU라고 가정하자 (하나의 CPU 코어) 하나의 코어가 하나의 일만 할 수 있다면?즉 하나의 프로그램만 실행할 수 있다면 A프로그램이 다 돌아가고 B프로그램이 돌아가게 될 것이다.밑에 그림처럼 이를 해결하기 위한 것이 멀티 태스킹이다. 멀티 태스킹이 가능하다면 위 사진처럼프로그램 A, B를 짧은 시간동안 번갈아가며 실행한다그리고 사용하는 입장에서는 A와 B가 동시에 실행되는 것 처럼 느껴질 것이다. (현대 CPU는 1초에 수십억번의 연산이 가능하기 때문에 우리는 이렇게 번갈아 가며 수행하는 ..

SUMMARY/JAVA 2025.08.11

[알고리즘] JAVA 코테 정리 - 자료구조 편

급하게 정리해보자 기본이라도급하게 공부하면서 쓴거라 가독성 좋지 못함 주의,,, - import java.util.*; 문자열 정렬 - 로그파일 재정렬https://leetcode.com/problems/reorder-data-in-log-files/ 기억할 포인트- arrayList를 array로 반환할때 -> letterList.toArray(new String[0]); - 정렬할때 람다 (추가 로직이 필요해서) -> letterList.sort((o1, o2) -> { ; }); - Compare 로직 스플릿 하고int compare = split1[1].compareTo(split2[1]);여기서 같으면 0크면 1작으면 -1 그냥 return compare 하면 정렬이 되는데..

ALGORITHM 2025.06.26

[포스트맨] OAuth 테스트

사용법 정리 맨날 찾으면서 하는게 귀찮아서 구글을 예시로 써놔야겠다 https://oauth.pstmn.io/v1/callback https://oauth.pstmn.io/v1/callbackYour call is authenticated A new window should open directing you back to the Postman app. If nothing happens, check to make sure your browser allows pop-ups.oauth.pstmn.iohttps://accounts.google.com/o/oauth2/v2/auth 로그인 - Google 계정 accounts.google.com https://oauth2.googleapis.com/tok..

PROJECT 2025.06.17

[회고] 25-1 회고

1학기인생에서 제일 바빴던 1학기가 끝났다. 평점 60점 이하는 F이고 70점만 맞으면 A+인 교양수업이 있는데너무 불안하다.. 설마ㅜㅜㅜㅜ A+ 받았다 ㅎㅎ:) 이번에 했던거- 학교 수업- 졸업 프로젝트- 세오스 활동- 팝업싸이클(룹즈)- 알고리즘- AWS 스터디- 농림 축산 공모전 개발- 배리어프리 서류작성 -> 탈락ㅜ- 갭이어 서류+면접 -> 합- 하나 소셜벤처 서류 + 면접 -> 합- 인턴 서류 넣기 -> 탈락.... 뭘 이렇게 많이 했니..이제 고만 일 벌이고 하고 있는 것만 잘하자 평가- 깊이 있는 기술 시도 지난 학기에는 스스로 기술적으로 깊이 들어가본 적이 없다고 생각해 아쉬웠는데 이번엔 나름 파본 것 같다. (아직 부족) - 서류 이번에 가장 서류를 많이 써본 것 같은데 서류 ..

ETC 2025.06.17

[소프트웨어 공학] 12. 품질

소개품질을 높이는 활동으로 - 테스트 테스트는 코드 품질만 향상시킨다- 리뷰 이래서 extreme programming이 좋다고 하셨다. 리뷰를 많이 하니깐- 품질보증 즉 품질의 모델은(품질의 속성은) 작업 관점이 어디 있는가에 따라 달라질 수 있다. 고객 만족이 품질에 들어가 있기 때문에 요구사항을 더욱 명확하게 정해야 한다고 하셨다. 요구 사항을 잘 검토 하는것 자체가 품질 관리에 들어가 있다. 구체적인 설명이 필요한 속성들만 적어보면 효율성- 성능이 좋지 않은 cpu와 적은 메모리로도 돌아가는가재사용성- 품질이 구조적인가 그동안 배웠던 결합도, 응집도, 디자인 패턴의 적용 유무 등 품질 특성 위에 있는 항목은 각각- 품질 요소 : 사용자에 의한 외부 관점- 품질 ..

[소프트웨어 공학] 10. 테스팅 추가

검토, 확인 개정판에서 검증 -> 검토로 바뀌었다 - 검토 verification 이게 리뷰다 올바르게 하고 있는가? 과정을 전부 검토 - 확인 validation 이건 결과물에 대한 확인 테스트 기초 용어로 4가지가 있다- 버그 문제, 결함을 나타내는 일반적인 용어 - 오류 개발자가 잘못하여 설계나 코딩에 실수한 것 EX) 오버플로우를 고려하지 않고 설계한 것 - 결함 시스템이 고장을 일으키게 하는 오류의 결과 - 고장 시스템이 원하는 작업을 수행할 수 없는 상황 테스트 하네스 Test Harness시스템 일부 기능만 시험하기 위해 소프트웨어에 변경을 가하는 경우이다. 키워드 기반 테스팅테스트 자동화 프레임워크의 일종으로테스트의 각 단계를 설..

[소프트웨어 공학] 10. 테스팅, 11. 유지보수

Junit 단위 테스트 실습을 진행했다스프링은 아니고, 순수 자바 코드이고 쉬운 실습 public class StudentManager { private Set students = new HashSet(); //학생 추가 public void addStudent(String name) { if (students.contains(name)) { throw new IllegalArgumentException("이미 존재하는 학생입니다: " + name); } students.add(name); } //학생 제거 public void removeStudent(String name) { if (!stu..

[소프트웨어 공학] 9. 코딩

기초여기서 단위 테스트와 QA의 차이점함수들의 기본적인 인풋과 아웃풋을 확인해 주는게 단위 테스트그걸 통합하면서 발현되어야 하는 기능들을 통합적으로 테스팅하는게 QA 자주 발생하는 오류 메모리 누수 Memory Leak메모리가 프리 되지 않고 프로그램에 계속 할당되는 현상 구체적으로, 힙 영역에 올린 후 내리지 않으면 해당 메모리 공간에 OS가 할당하지 않으므로 사용할 메모리가 없어지는 상황을 말한다. 예시로, java를 사용한다면 JVM GC가 가비지 콜렉팅을 하면서 free를 해주지만 그게 즉각적인 free는 아니기 때문에 시스템에 장애가 오는 경우가 있다고 하셨다.JVM과 GC에 대해 공부해 봐야겠다고 생각했는데 이번 방학때 꼭!! 해야겠다 중복된 free 선언free를 안하는것도 문제지만 2번..