전체 글
-
[Java]멀티태스킹과 스레드[Java] 2024. 11. 20. 01:13
멀티태스킹이 반드시 효율적인 것은 아니다나는 멀티태스킹을 들었을 때, 여러 가지 일을 동시에 처리하면 무조건 생산성이 높아지고 효율적일 것이라는 생각을 가지고 있었다. 하지만 멀티태스킹이 항상 긍정적인 결과만을 가져오는 것은 아니라는 것을 알게 되었고, 여기서는 프로세스와 스레드에 대해서 적어볼까한다. 컨텍스트 스위칭의 비용컨텍스트 스위칭은 CPU가 한 작업에서 다른 작업으로 전환할 때 발생하는 과정입니다. 이때 CPU는 현재 작업의 상태(레지스터 값, 프로그램 카운터 등)를 메모리에 저장하고, 전환할 작업의 상태를 메모리에서 불러옵니다. 이 과정은 시간이 소요되며, 빈번한 컨텍스트 스위칭은 시스템의 전체적인 성능을 저하시킬 수 있습니다.예제: 컨텍스트 스위칭의 비용 측정public class Cont..
-
[그때살껄] 매칭 시스템(3)[그때살껄;;] 2024. 8. 21. 15:48
https://young-helloworld.tistory.com/30 [그때살껄] 매칭 시스템(2)https://young-helloworld.tistory.com/29 이글에 이어서 작성하겠습니다. 전에 임시저장만 해놓고 완료를 안눌러서 글을 바로 작성하는 것처럼 보이지만 2주 텀이 있습니다.. 내가 짠 랜덤 매칭에 적합한young-helloworld.tistory.com 대기열에 있는 많은 유저 자산이 비슷할때 성능이 매우 안좋아지는 불상사를 막기위해 고민을 몇개 해봤다. 1. 3차원 그라디언트 자산 가중치(k), 대기 시간 가중치(l), 평균 자산 가중치(m)을 파라미터로 둔다. 자산 (k)사용자의 자산에 크기를 반영한다.k가 높을수록 개개인 자산의 크기에 따라 더 공평한 게임을 할 수 있지만, ..
-
[그때살껄] 매칭 시스템(2)[그때살껄;;] 2024. 8. 21. 12:11
https://young-helloworld.tistory.com/29 [그때 살껄] 매칭 시스템(1)팀 프로젝트로 모의 코인투자를 해보기로 했다 !그 중 매칭 시스템을 맡게 되었는데 방을 생성, 수정, 삭제, 게임 시작 등 .. CRUD만 하는건 쉬웠다. 랜덤 매칭을 짤때는 머리가 좀 아팠는데 그 고young-helloworld.tistory.com 전에 임시저장만 해놓고 완료를 안눌러서 글을 바로 작성하는 것처럼 보이지만 2주 텀이 있습니다.. 내가 짠 랜덤 매칭에 적합한 유저를 찾아주는 로직이 너무 비효율적이라는 것을 깨달아버렸다.그래서 뭔가 더 좋은 방법이 없을까 알고리즘을 찾아보고 후보가 몇개 있었다. 1. 그리디 알고리즘가장 간단한 접근 방법이다. 각 단계에서 최선의 선택을 해 매칭을 시도..
-
[그때 살껄] 매칭 시스템(1)[그때살껄;;] 2024. 8. 21. 11:44
팀 프로젝트로 모의 코인투자를 해보기로 했다 !그 중 매칭 시스템을 맡게 되었는데 방을 생성, 수정, 삭제, 게임 시작 등 .. CRUD만 하는건 쉬웠다. 랜덤 매칭을 짤때는 머리가 좀 아팠는데 그 고민한 과정을 써보려고 한다. 처음 생각한 랜덤 매칭은 자산 별로 구간을 나눠서(예를 들어서 0 ~ 3천만원, 3천만1원 ~ 6천만원 이런식으로 ..) 그 구간에서만 최소인원인 4명에서 최대인원인 10명까지 인원을 구성하려고 했다. 하지만 롤이라는 게임을 생각해보니 티어가 나눠져 있지만 레이팅이라는 개념이 있어서 골드인 유저가 실버를 만날수도, 플레티넘을 만날수도 있다는걸 생각해보니 구간을 나눠서 그안에서만 인원을 구성하는건 너무 내가 편하게 짤라고 수를 쓰는거 같았다. 그래서 자산 자체를 레이팅으로 놓고 자..
-
[Spring] Task 실행과 스케쥴링[Spring] 2024. 8. 15. 21:12
팀 프로젝트로 모의 코인 투자 게임을 하기로 했다. 매칭관련해서 맡게 되었는데 랜덤매칭을 하게 되었을때 일정 시간이 경과한 후에 사용자를 매칭시키거나, 특정 조건이 충족되면 자동으로 다음 단계로 넘어가야 될때 TaskScheduler를 사용했다. 잘 모르는 상태에서 쓸라니까 오류가 많이.. 나왔는데 정리를 한번 해보려한다.Task Task 는 스프링에서 특정 작업을 의미.일반적으로 비동기 작업이나 예약된 작업으로 실행. 비즈니스 로직을 백그라운드에서 처리하거나, 일정 간격으로 실행할 수 있음.TaskExecutor 스프링에서 Task를 비동기적으로 실행하기 위한 인터페이스.다양한 구현체를 제공하여, 비동기 작업의 실행을 손쉽게 관리. 주로 비동기 작업을 위해 쓰레드 풀을 관리하는 데 사용되며, 많은 수의..
-
[Java] 결합도 / 응집도[Java] 2024. 8. 2. 00:30
결합도는 낮추고 응집도는 높여라 개인프로젝트할때 많이 들었던 말이였지만 그때 당시에는 그래서 어떻게 하라는거야 ? 그게 뭔대 라는 생각이 들었다 .그래도 한번 해보려 했지만 시간이 촉박해서 리팩토링을 하지못했다 .이번 팀 프로젝트 때는 실천해보고자 정리를 하려고 한다 .결합도와 응집도에 대해 알아보기 전 모듈과 모듈화에 대해 알아볼 필요가 있다 . 모듈화란 소프트웨어를 각 기능별로 나누는 것을 말한다 .각각의 기능별로 나눠진 모듈화의 결과를 모듈 이라고 하고 서브루틴, 소프트웨어 내의 프로그램 또는 작업 단위등의 의미로 사용된다 .좋은 모듈화는 목적에 맞는 기능만으로 모듈을 나누는 것이다. 가각의 모듈은 주어진 기능만을 독립적으로 수행하며 다른 모듈과 적게 연관되어야 한다 . 즉, 독립성이 높은 모듈일..
-
[Spring] JPA , JDBC, Hibernate, Spring data JPA 차이[Spring] 2024. 7. 2. 07:53
개인 프로젝트를 진행하면서 JPA 와 Spring data JPA 둘이 무슨 차이가 있는지 알지 못했다 .내가 지금 어떤걸 쓰고 있는건지 모를정도 ..분명 배울때 엔티티가 어쩌고 .. CRUD는 어쩌고 .. 했는데 막상 내 코드를 보니 JpaRepository만 가득했다.이렇지 않을까 저렇지 않을까 하면서 그냥 냅다 쓰기만 했었기에 정확하게 알아보고자 작성한다.JDBC :Java Data Connectivity 의 약자로 DB에 접근 할수 있도록 자바에서 제공하는 API 여러 종류의 데이터 베이스가 있을때 데이터 베이스별로 통신하는 코드가 달라지지 않고 사용하는 데이터 베이스만 교체 해도 사용할 수 있게 만들어주는 것이 JDBC이다. JDBC API는 설정한 데이터 베이스에 맞는 드라이버를 사용하여 데..
-
[Spring] @Component , @Configuration[Spring] 2024. 6. 26. 16:31
프로젝트를 진행하면서 Configuration 을 설정하며 만들었던 기억이 있는데 하나도 안쓰고 있어서 도대체 언제 쓰는건지 궁금해하던 찰나 스프링 시큐리티를 배우면서 Configuration을 설정하는 걸 보고 정리해야되겠다 싶어서 정리한다 ..Java Config 생성src/main/resources 에 있는 applicationContext.xml 파일을 대체하기 위해, config.java 파일을 생성한다. @Configuration외부 라이브러리 또는 내장 클래스를 Bean으로 등록하고자 할 경우 사용한다. ( 개발자가 직접 제어가 불가능한 클래스)해당 클래스에서 1개 이상의 @Bean을 제공하는 클래스의 경우 반드시 @Configuration을 사용한다. 스프링 설정 파일로서 스프링 컨테이너를..