컴퓨터 과학

콜백함수함수를 변수처럼 사용하는 개념분기문으로 다른 로직을 담긴 함수들을 선언하여 처리하기 어려운 상황에 유용void make_donut(func f){ //.. f(); //..}make_donut 함수를 사용하고 싶은 프로그래머는 자신이 정의한 현지화 함수를 전달위의 함수 변수를 콜백 함수라고 함일반적으로 인자로 사용되는 콜백 함수는 호출되는 함수를 사용하는 개발자가 작성따라서 콜백함수를 호출하는 것은 보통 다른 모듈 혹은 스레드 비동기 콜백콜백 함수의 처리 속도가 오래걸리는 상황인데 이를 기다려줄 수 없다면?// 호출 스레드make_donut(formed_D); // 아래 작업을 기다려줄 수 없을 때 -> 비동기 콜백함수를 사용하기something_important(); // 기다려..
개요운영체제 목적운영체제 없이 프로그램 실행은 가능자동 적재 및 멀티 태스킹 지원프로세스 목적프로그램 동시 실행하기 위해프로세스는 상황정보 저장된 구조체임운영체제는 이 상황정보를 통해 스레드를 효율적으로 할당스레드 목적가용 cpu를 최대한 이용하고자 프로세스 진입함수를 추가로 생성하여 스레드 활용운영체제가 스레드 할당하며 프로세스 일시 중지 및 재시작 가능코루틴 목적동기 프로그래밍으로 비동기 가능하도록코루틴 정의로 함수의 실행 일시 중지 및 재시작 가능   CPUcpu는 메모리에서 명령어를 가져오고 명령어를 실행하는 작업만 할 수 있음  운영체제프로그램을 자동으로 적재, 멀티태스킹을 실현 해주는 역할을 함운영체제가 없어도 cpu가 프로그램을 실행하도록 할 수 있지만 적절한 메모리 영역 찾기, pc 레지스..
7장 - 서비스도메인 서비스가 무엇인지?스프링에서 서비스는 왜 서비스인지?서비스 컴포넌트에 추가적으로 기대하는 역할이나 책임은 무엇인지? 서비스의 컴포넌트의 역할 크게 3가지1 도메인 객체를 불러오기2 도메인 객체나 도메인 서비스에 일을 위임하기3 도메인 객체의 변경 사항을 저장하기   스프링에서의 Service @Service의 자바독 요약@Service는 에릭 에반스의 DDD에서 영감을 받아 만들어진 애너테이션서비스는 J2EE 패턴 중 하나인 비즈니스 서비스 파사드처럼 사용될 수 있음  DDD (도메인 주도 설계)DDD에서 정의하는 '서비스'란? -> 연산을 위한 컴포넌트DDD에서의 서비스 컴포넌트 (에릭에반스가 한 말)자신의 본거지를 엔티티나 값객체에서 찾지 못하는 중요한 연산이 있다. 일부는 본질..
5장 순환참조두개 이상의 객체나 컴포넌트가 서로를 참조함으로써 의존관계에 사이클이 생기는 상황@Data class Team { private long id; private String name; private List members;} @Data class Member { private long id; private String name; private Team myTeam;}팀과 팀원의 관계를 표시한 클래스 -> 순환참조임양방향 매핑JPA Entity의 양방향 매핑은 순환참조다.  순환참조의 문제점 무한루프순환참조가 있다는 것은 무한 루프가 발생할 수 있다는 것임. 시스템 복잡도순환참조는 시스템의 복잡도를 높임. (의존성 전이 등..
https://www.yes24.com/Product/Goods/126845564이번 시간에는 자바/스프링 개발자를 위한 실용주의 프로그래밍 4장 - SOLID를 읽고 정리해보겠습니다.   SOLID 원칙의 목적 - 응집도를 높이고 의존성을 낮춘다. 본론에 들어가기에 앞서, 가장 먼저 책에서 말하고자하는 SOLID의 원칙의 목적은 무엇일까? SOLID 원칙이 추구하는 것은 바로 "객체지향의 설계".그리고 설계 원칙을 통하여 소프트웨어의 응집도를 높이고 의존성을 낮추는 것을 목표로 함. SOILD 원칙을 무작정 암기하는 것보다 "응집도를 높이고 의존성을 낮추는 것에 집중"하는 것이 좋다.   유지보수성을 판단하는 세 가지 맥락 - 영향 범위, 의존성, 확장성설계 관점에서 코드의 유지보수성을 판단하는 세 ..
안녕하세요. 이번 게시물에선 자바/스프링 개발자를 위한 실용주의 프로그래밍 3장 - 행동을 읽고 정리해보겠습니다.또한 객체지향사상에 부합하지 않는 java interface의 default 메서드에 대한 고찰도 짤막하게 해보았습니다.  데이터 위주 사고 방식 VS 행동 위주 사고 방식public class Car { //데이터 위주의 사고 방식 private Frame frame; private Engine engine; List wheels; private float speed; private float direction;}public class Car { //행동 위주의 사고 방식 public void drive(){} public void changeDirect..
안녕하세요. 이번 게시글에선 자바/스프링 실용주의 프로그래밍 2부 - 객체의 종류를 읽고 정리해보았습니다.또한 현재 개인 프로젝트로 DTO로 Record로 사용하는 것이 어떤 의의가 있는지도 알아보겠습니다. 2부 객체의 종류 VO - 값 객체값 객체 예시 코드 (엄밀히 말해서 Color 클래스는 객체가 아님. 해당 클래스로 만들어진 객체가 VO)public class Color {    public final int r;    public final int g;    public final int b;    public Class(int r, int g, int b) {        //.. 검증 로직        this.r = r;        this.g = g;        this.b = b; ..
안녕하세요. 이번 시간에는 자바/스프링 실용주의 프로그래밍 책을 읽고 정리해보고제 생각을 공유하는 게시글을 작성해보겠습니다.  1부 객체지향  객체지향에서는 복잡한 문제를 역할과 책임에 따라 '개별 객체'로 분해합니다.분해된 각기 다른 특성과 기능의 객체들이 상호작용하고 협력해 문제를 해결합니다.  01 절차지향과 비교하기 컴퓨터 공학에서 말하는 Procedure는 '함수'를 가리킵니다. (순차지향 = 어셈블리어, 절차지향 = C언어)따라서 절차지향 프로그래밍은 함수 지향 프로그래밍. 아래는 자바를 사용하지만 함수 위주의 프로그래밍으로 코딩한 절차지향 코드의 예시. @Service@RequiredArgsConstructorpublic class RestaurantChainService { priva..
꾸준함의 미더덕
'컴퓨터 과학' 카테고리의 글 목록