전체 글 55

Spring에서의 프로세스와 스레드

프로세스와 스레드만약 프로세스와 스레드에 관한 지식이 부족하다면 아래 포스트를 참고해도 좋을 거 같습니다.https://yooooonshine.tistory.com/43Spring에서의 프로세스와 스레드Spring 서버는 서버 자체로 하나의 프로세스이기 때문에, 내부 동작은 프로세싱과 거의 무관하다.대신 Spring은 멀티 스레딩 개념을 활용하여 성능 최적화를 한다.만약 멀티 프로세싱 개념을 통해 병렬 처리를 하고 싶다면, 컨테이너 기반 배포 환경을 공부하는 것이 좋을 거 같다.Spring의 스레드스프링에서는 스레드 개념을 어디서 사용하고 있을까?대략 아래와 같은 부분에서 사용하고 있다고 한다.스레드 풀비동기 작업트랜잭션 관리이것들을 중심으로 어떻게 사용되고 있는 지 알아보고자 한다.스레드 풀(threa..

Spring 2024.10.21

카카오 테크 부트캠프 Final 프로젝트 [2,3 주차 후기]

[서론]어느새 방학이 끝나버렸다. [본론]기획 발표 결과가 나왔다. 결과는 처참했다.개인적으로 개발팀이 기획 평가를 이렇게 비중있게 다뤄야 하나 의문이 들긴했지만..뭐.. 기획 피드백우선, 어느 부분에서 평가가 안좋았는지 멘토님께 여쭈어봤었다.이에 대해 두 가지 이유가 있었다.1. 기획서류 미흡2. 다른 서비스와의 차별점 부족  기획서류 미흡이에 대해서는 뭐가 부족했는 지 감이 잘 안왔었다. 그래서 주위 잘한 팀에게 조언을 받았다.조언을 바탕으로 얻은 결과는, 소프트웨어 공학론적인 문제였다. 즉 기획서류에는 기획 일정유저 플로우플로우 다이어그램기능 명세서UI/UX주요 기능 설명등 위와 같은 정보가 담겨야 했고문제점 파악해결방안 제시구체적인 실행계획(일정, 조직)기대효과위와 같은  순서대로 기획서를 준비했..

일상 2024.10.21

@ManyToMany를 사용하면 안 되는 이유

@ManyToMany 를 실무에서 사용하면 안된다는 얘기를 많이 들었고, 그래서 항상 관계를 풀어서 사용했었다.이번에 다시 관계를 풀어 사용하면서 왜 풀어야하나 생각해보니 답이 떠오르지 않아 이를 정리해본다.@ManyToMany@Entitypublic class Student { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; @ManyToMany @JoinTable( name = "student_course" // 중간 테이블의 이름 ) private List courses = new ArrayList(); // 기본 생성..

Spring/Spring Jpa 2024.10.15

[연합 동아리 코테이토 9기] 마무리 및 회고

[서론]사실 9기가 끝난 지 벌써 2달이 다 되어 간다..ㅋ.ㅋ써야지 써야지..하다가 너무 바빠서 미루고 미뤄왔다.(그만큼 고농축 회고록이 되지 않을까!?)카테부 휴가 기간이기도 하고, 감성 충만한 밤 12시라 회고록을 충만하게 쓱싹 적어보려고 한다.어쩌면 내 자랑글이 될지도...[본론]1. OT첫 OT는 강남역에서 이뤄졌다. 처음 보는 사람들과 처음 인사를 했다. 그리고 앞으로 진행될 IT 발표, 스터디, 프로젝트에 대한 안내를 받았다. 이 날의 기억은 별로 없다. 굉장히 어색했던 것만 기억에 남는다. 다만, 뒷풀이가 기억에 남는다! 운영진들한테 나는 폭풍의 전학생(?)이었던 거 같다.윤찬호가 누구야?운영진 분들 말씀으로는, 내가 누군지 모르겠지만 계속 칭찬이 자자했다고 뒷풀이에서 말해주셨다.한 번 떨..

일상 2024.10.10

프로세스와 스레드

목차프로세스(Process)란?프로세스의 종류프로세스의 구조정적 할당 vs 동적 할당프로세스의 실행프로세스의 상태스레드(Thread)란?멀티 프로세스와 멀티 스레드프로세스 간 통신(IPC, Inter-Process Communication)프로세스(Process)란?프로세스는 운영체제로 부터 자원을 할당받는 작업의 단위이다.프로세스가 실행되기 위해서는 CPU가 필요하다.여러 프로세스는 번갈아가며 CPU를 할당받아 실행된다. 예를 들어 메이플과 카트라이더라는 두 개의 프로세스가 있다면,두 프로세스는 번갈아가며 실행되면서 동시에 실행되는 거 처럼 보이게 한다.(즉 CPU가 하나라면 매 순간은 하나의 게임만 돌아가고 있는 것이다. 이를 빠르게 왔다갔다하며 동시에 실행되는 거 처럼 보이게 하는 것.) 프로세스의..

OS(운영체제) 2024.10.09

추상 클래스(abstract class) vs 인터페이스(interface)

목차1. 추상 클래스란?2. 인터페이스란?3.언제 추상 클래스를 사용하고, 언제 인터페이스를 사용해야 할까?  추상 클래스란?추상 클래스(abstract class): 공통된 속성이나 메서드를 포함한 클래스. 일부 메서드는 구현할 수 있고, 다른 메서드는 추상 메서드로 선언하여 하위 클래스에서 반드시 구현하도록 강제한다.단일 상속만 지원한다.추상 클래스는 객체를 직접 생성할 수는 없으나, 생성자를 가질 수 있고 하위 클래스에서 생성자를 통해 상위 클래스의 필드를 초기화 할 수 있다.예시1.추상 클래스public abstract class myAbstractClass { // abstract를 통해 추상 클래스임을 명시 public static int myField = 5; // 추상클래스는 초기화된..

java 2024.10.04

좋은 팔로워란 어떤 사람일까?

좋은 팔로워란 어떤 사람일까?좋은 팔로워란,일단 팀장이 일을 결단을 내렸을 때그 결정을 지지하며, 그 상황에서 어떻게 하면 더 좋은 결과를 만들 수 있을까 고민하는 사람.위 내용은 최근, 연합 동아리 지원 면접관으로 참여하면서 들은 답변이다.난 팔로워보다 리더가 더 좋은 것이라고 무의식 중에 생각했었는 데,저 답변을 듣고 많은 생각을 하게 되었다. 요즘 카카오 테크 부트캠프 내에서의 멘토님들과 교육생들과의 갈등,팀  내에서의 팀원들 간의 갈등등 많은 갈등들이 발생하는 거 같다. 특히 멘토님들과 교육생들 간의 갈등은 생각보다 골이 깊은 거 같다.가장 큰 이슈는 팀 리빌딩이었다.사실 갑작스럽게 찾아온 팀 리빌딩이어서, 나 또한 많이 당황했다. 이에 대해 우연히, 멘토 Eddy와 대화할 수 있는 기회가 있었다..

일상 2024.09.29

카카오 테크 부트캠프 Final 프로젝트[1주차 후기]

이번 주는 새 팀원들과 인사 후,새 프로젝트 주제 선정, 그라운드 룰, 컨벤션 설정을 앞으로 프로젝트를 진행해나기기 위한 초기 세팅을 위주로 진행했었다.1️⃣풀스택 회의우선 팀원들 중, 풀스택 분만 따로 만나남은 3개월 동안 어떤 것을 배워가고 싶은 지 대화를 했었다.팀원 분은 코드 컨벤션, 코드 리뷰, MSA 쪽으로 이번에 얻어가고 싶다고 하셨다.나는 최근에 학교 선배와 애기하면서 내가 앞으로 하면 좋을 것들에 대해 적었다.PR에 자신이 구현한 것을 상세히 명시해 포트폴리오화 하기.매 주 블로그를 통해 협업 회고 하기기존 코드를 리팩토링하여 성능 최적화하기또 저번 프로젝트 발표를 보면서 저건 나도 해보고 싶다고 생각했던 것들도 명시했다.테스트 커버리지 높이기깃허브 프로젝트로 협업 관리하기그리고 마지막으..

일상 2024.09.29

카카오 테크 부트캠프 1차 프로젝트 회고

벌써 카카오 테크 부트캠프에 들어온지 3달이 다 되어간다.다음 주부터는 2주간 휴가 기간이다.리프레시도 하고, 내 지난 기간들을 되돌아 보고자 회고록을 작성해봤다.첫 출근처음 카카오 테크 부트캠프 판교 교육장에 가는 날이었다.잘 적응할 수 있을까 걱정도 됐고,내가 살던 틀을 넘어, 더 열정적인 사람들과 함께 성장해나갈 수 있다는 기대도 했다.그리고 좋은 팀원들을 만났으면 좋겠다는 생각도 했다.지하철 타고 첫 출근하는 지하철에서 갑자기 Butterfly 노래가 듣고 싶어졌었다.나비처럼 날아가 볼까~ 변덕 부리는 바람을 넘어~이 노래에 맞춰 둠칫둠칫하면서 판교로 갔다 ㅋ.ㅋ 그리고 내 자리에 입성했다.약간우오오, 장난 아니다. 개인 자리에, 개인 모니터, 시디즈 의자까지.. 나 완전 K 직장인이잖아~라는 생..

일상 2024.09.29

Spring에서 @Async를 통한 비동기 처리하기

비동기(Asynchronous)란?작업이 시작된 후 그 결과를 기다리지 않고 다른 작업을 계속 진행할 수 있는 처리 방식을 의미한다.즉, 작업이 실행되는 동안 해당 작업이 완료될 때 까지 기다리지 않고, 다른 작업을 수행한다.예를 들어 이메일 보내기 서비스를 개발한다고 하면,사용자가 서버에 요청했을 때 이메일 보내는 기능은 비동기로 처리하고 이메일 보내는 것과 무관하게 200을 응답한다. 따라서 사용자는 이메일이 보내지는 것을 기다릴 필요 없어진다.작업: 이메일 보내기, 200 응답 보내기시간이 오래 걸리는 작업, 비동기 시킬 직업: 이메일 보내기비동기와 별개로 바로 수행할 작업: 200 응답 보내기왜 사용할까?응답성 향상: 비동기를 사용하면 사용자가 상호작용 하는 동안에도 백그라운드에서 작업을 계속 진..

Spring 2024.09.26