분류 전체보기692 [컴퓨터 구조] 3. 컴퓨터 연산 이번 장에서는 소수와 실수의 표현과 그 연산과정에 대하여 학습하는 시간이다. 기본적인 덧셈과 뺄샘의 정리는 생략 3.3 곱셈 우선 연필로 곱셈하는 과정을 살펴보자. 0과 1로만 구성된 십진수의 곱셈을 살펴보자. 1000(ten) 곱하기 1001(ten)은 다음과 같다. 첫 번째 피연산자는 피승수(multiplicand)라고 부르고 두 번째 피연산자는 승수(multiplier)라고 부른다. 최종 결과는 곱(product)라고 부른다. 일반적으로 수학에서 우리가 곱셈을 할때 승수의 자릿수를 오른쪽에서 왼쪽으로 가면서 한 번에 하나씩 택해서 이것을 피승수와 곱한 뒤 그 곱셈의 결과를 직전의 곱보다 한 자리 왼쪽에 놓는다. 주목할 점은 최종 곱셈 결과의 자릿수가 피승수나 승수와 비교해서 상당히 크다는 것 이다... CS/Computer Organization Design (2023-1) 2023. 5. 9. [프로그래머스][Java] 택배 배달과 수거하기 (268) 직접 풀어보고 올리는 코드입니다. 지적이나 더 좋은 방향에 대한 댓글은 항상 환영합니다. 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 생각의 흐름 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 이문제를 보고 생각한 방식은 다음과 같았다. 1) 일단 10진수를 2진수로 변환한다 2) 변환된 2진수를 재귀적으로 (왼쪽, 중심, 오른쪽) 으로 나누어서 탐색하면서 판단하면 되겠다! 였다! 하지만 생각하지 못했던 부분이 있었는데, 10진수를 2진수로 변환한다고 끝나는 것 이 아니다... 변환된 2진수가 만약 포화 이진트리가 아니.. Algorithm/프로그래머스 2023. 5. 5. [AWS] AWS Summit 2023 1. 코로나 이후 첫 AWS 컨퍼런스 코로나 시국 이후에 AWS summit 2023이 오래간만에 한국에 열리게 되어 너무 기뻤다. 어떠한 새로운 서비스들을 소개받고 경험해 볼 수 있을지 많은 기대와 관심이 생겼었다~~ 지인이랑 9시쯤 만나서 이동했는데, 가장 큰 충격이 3개의 층을 모두 사용한다는 점이었다. 이전에도 몇 번 대형 컨퍼런스들을 코엑스에서 경험한 적이 있는데, 거의 다 1층만 사용했었다. 오늘 처음 3층도 방문 가능하다는 점을 알게 되었다. 이번에 느낀 게 확실히 전 세계적으로 돈을 잘 버는 기업은 컨퍼런스도 좀 다르구나를 느꼈다. 처음 기조연설시간 전에 영화 메트릭스를 패러디한 짧은 영상을 보여줬는데, 영화관 온 것 같다는 생각이 들 정도로 재미있었다. (동기 세상이라니... 감자튀김 하.. Life/컨퍼런스 2023. 5. 4. [쿠링] Multi thread를 활용한 공지 조회속도 개선 (feat 동기화) 해당 글은 개인 프로젝트를 개선해 나가면서 내용을 정리하는 글입니다. 1. 도입 배경쿠링에서는 학교의 전체 공지를 주기적으로 scrap해와야 한다.하지만 이를 동기 처리 하다 보니 특정 학과의 scrap 속도가 늦어지면, 자연스럽게 전체 작업 속도가 늦어지는 문제가 발생하였다. 문제는 학교의 API를 사용하는 방식이 아니라, 직접 scrap을 통해 정보를 긁어오는 형식이기 때문에 주기적으로 신규 공지를 확인해줘야 하는데, 단일 코어상의 싱글 스레드로 처리하기에는 작업이 너무나 오래 걸렸다. 내가 생각한 공지 확인 간격보다, 한번 업데이트하는 시간이 더 길어지는 문제가 발생한 것이다!나는 이를 해결하기 위해 Multi Thread를 도입한 비동기 처리를 해야겠다 생각하게 되었다! 2. 사전에 예상되는 문제.. BackEnd/쿠링 2023. 4. 28. [프로그래머스][Java] 택배 배달과 수거하기 (267) 직접 풀어보고 올리는 코드입니다. 지적이나 더 좋은 방향에 대한 댓글은 항상 환영합니다. 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 생각의 흐름 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 생각이고 나발이고 문제 진짜 어렵다 생각 드는데, 이거 나처럼 greedy라고 생각 못한 사람은 끝까지 이 문제 못 건들이다가 끝났을것 같다. 일단 N제한이 100,000 이라 O(N^2), 즉 완전 탐색은 절대 안된다 생각했다. 여기서 문제다. 그럼 O(logN) = 5, O(NlogN) = 500,000, O(N) = 1000.. Algorithm/프로그래머스 2023. 4. 27. [쿠링] SonarCloud와 CI 도입 해당 글은 개인 프로젝트를 개선해 나가면서 내용을 정리하는 글입니다. 1. 도입 배경 기존의 쿠링의 배포 과정에서 CI 과정이 없다는 점이 아쉬웠다. 따라서 이번에는 SonarCloud를 통한 정적분석과 코드 커버리지 측정을 위한 CI과정을 추가해야겠다는 생각이 들었다! SonarCloud공식문서를 보면서 하나하나 해결해봅시다~ https://docs.sonarcloud.io/advanced-setup/ci-based-analysis/github-actions-for-sonarcloud/ GitHub Actions To configure analysis of your project using GitHub Actions you should follow the in-product tutorial. docs... BackEnd/쿠링 2023. 4. 21. [컴퓨터 구조] 2. 명령어: 컴퓨터 언어 2.2 하드웨어 연산 다음 MIPS 어셈블리 언어는 두 변수 b, c를 더해서 그 합을 a에 넣으라고 컴퓨터에게 지시하는 것 이다. add a, b, c MIPS 산술 명령어는 반드시 한 종류의 연산자만 지시하며 항상 변수 3개를 갖는 형식을 엄격하게 지킨다. 변수 b, c, d, e의 합을 구하여 a에 집어 넣는 예를 생각해보자. add a, b, c // a에 (b + c)를 대입한다 add a, a, d // a에 d를 더한다 add a, a, e // a에 e를 더한다 따라서 네 변수의 합을 구하려면 명령어 3개가 필요하다. 덧셈과 같은 연산자의 피연산자(operand)는 더해질 숫자 2개와 합을 기억할 장소 하나, 장소가 모두 3개인 것 이 자연스럽다. 이렇게 모든 명령어가 피연산자를 반드시 3.. CS/Computer Organization Design (2023-1) 2023. 4. 17. [쿠링] 형상관리를 위한 Flyway 도입기 해당 글은 개인 프로젝트를 개선해 나가면서 내용을 정리하는 글입니다. 1. 도입 배경 이번 쿠링 전 학과별 공지 지원 과정에서 기존의 Notice 테이블이 아닌, DepartmentNotice가 추가적을 발생하게 되었다. 새로운 테이블을 기존의 Notice테이블에 Dtype으로 구분하기 시작하면서, 추가된 속성들이 있고, 새로운 값들이 추가되었다. 물론 나야 내가 변경했으니 해당 의미들 을 빠르게 파악 가능하지만, 과연 다른 이가 봐도 이를 빠르게 이해할 수 있을까? 란 의문이 들었다. 또한 서로 다른 환경(local, test, prod)간에 통일된 스키마를 가지기 위해서 많은 리소스가 사용된다. 그러한 과정 속에서 다음 3가지 목표가 생기게 되었다. 업데이트마다 운영 DDL과 개발 DDL을 하나하나 .. BackEnd/쿠링 2023. 3. 31. [쿠링] 중복코드를 Template Method Pattern으로 Refactoring 하기 해당 글은 개인 프로젝트를 개선해 나가면서 내용을 정리하는 글입니다. 1. 현 상황 (개선하기 전의 코드) 우선 다음 코드는 Notice를 Scarp 하는 코드입니다. 문제는 (scarp, scarpAll), (requestWithDeptInfo, requestAllPageWithDeptInfo) 간의 중복 코드가 너무나 많다는 점입니다. scarp : 최근 공지 조회 scarpAll : 모든 공지 조회 이렇게 2개의 메서드를 구분하다 보니 발생한 중복 코드였습니다. 템플릿 메서드 패턴, 함수형 인터페이스, 람다식을 통하여 중복을 제거할 생각입니다! 우선 개선하기 전의 코드는 다음과 같습니다! @Slf4j @Component @NoArgsConstructor public class DepartmentNo.. BackEnd/쿠링 2023. 3. 27. [Spring] @Async와 ThreadPoolTaskExecutor 1. ThreadPoolTaskExecutor 스레드 풀을 사용하는 Executor java.util.concurrent.Executor를 Spring에서 구현한 것 이다. org.springframework.scheduling.concurrent 패키지에서 제공 주로 spring에서 비동기처리를 위해 사용 스레드풀을 사용하여 멀티스레드 구현을 손쉽게 해준다. Default 생성자 하나만 존재 2. Configuration 2 - 1) Pool size configuration @Bean public ThreadPoolTaskExecutor shineTaskExecutor() { ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor(); ta.. BackEnd/Spring 2023. 3. 26. [컴퓨터 구조] 1. 컴퓨터 추상화 및 관련 기술 1.4 케이스를 열고 컴퓨터의 고전적 구성 요소 다섯가지는 다음과 같다. 1) 입력 2) 출력 3) 메모리 4) 데이터패스, datapath 5) 제어 유닛, control unit 이중 뒤의 2개를 합쳐서 프로세서라고 부르기도 한다. 위 그림은 컴퓨터의 표준 구성을 보여주는 그림이다. 이 구성은 하드웨어 기술과는 독립적이다. 1.4.1) 상자를 열고 다음 그림은 Apple iPhone Xs MAX 스마트폰의 내용물이다. 컴퓨터의 고전적인 5대 구성요소 중 입출력 장치의 비중이 큰것은 놀라울 일이 아니다. 입출력 장치로는 정전용량식 멀티터치 LCD 디스플레이 등이 있으며, 데이터패스, 제어 유닛, 메모리는 구성 요소 중의 작은 일부를 차지하고 있다. 다음 그림에는 직접회로(Intergrated circu.. CS/Computer Organization Design (2023-1) 2023. 3. 21. [쿠링] Spring에서 Custom Annotation을 사용하여 객체를 Map에 등록시키기 해당 글은 개인 프로젝트를 개선해 나가면서 내용을 정리하는 글입니다. 1. 현 상황 (개선하기 전의 코드) 우선 쿠링에서는 DepartmentName이라는 enum값과, 해당 학과의 정보를 저장하고 있는 DeptInfo객체를 저장하고 있다. 이를 통해 map을 필요한 곳에서 전달받아 enum을 key로 사용하여 해당 학과의 정보를 사용하는 코드이다. 우선 코드는 대략 다음과 같다. 이 정도만 보면 몇 개 안돼서 수동 등록할 수도 있을 것 같지만... 무려 학과가 75개.... 이걸 수동으로 다 등록하는 건 진짜 무리다... (물론 지금 코드는 그렇게 구현된 있긴 한데...) 나는 Custom Annotation을 만들어서 Reflection을 통해 configuration에서 등록하여 bean객체로 만들.. BackEnd/쿠링 2023. 3. 21. 이전 1 2 3 4 5 6 7 ··· 58 다음