널널한 개발자
@nullnull8537
수강생
47,456
수강평
2,753
강의 평점
4.9
강의
로드맵
전체 4수강평
- 곰책으로 쉽게 배우는 최소한의 운영체제론
- 외워서 끝내는 SSL과 최소한의 암호기술
- 넓고 얕게 외워서 컴공 전공자 되기
- 기초 탄탄! 독하게 시작하는 Java Part 3(하) : 소켓과 파일 I/O
게시글
질문&답변
08_chatServerSelector 코드 중 오류를 발견하여 문의 남깁니다.
아, 그렇군요. 버그 제보 고맙습니다. 😄
- 0
- 2
- 21
질문&답변
안녕하세요~
실무 경험이라 할 수는 없을 것 같습니다. 개인적으로 C/C++ 기반 개발을 자주 했었고 웹 서비스를 직접 만들어 본 것은 책에서 예제를 따라하는 정도 였기 때문입니다. 그런 이유로 여러 상황을 기반없이 고민했던 것 같습니다. 그러던 중 다음 몇 가지 이유로 PostgreSQL을 선택했습니다.유연한 데이터 타입: JSON, 배열, 범위 타입 등 다양한 데이터 타입을 네이티브로 지원하는데 그 중 JSON 형식은 웹에서 흔히 등장하는 형이이라 일반 TEXT와 구별 할 수 있다는 점이 마음에 들었습니다. 어쩌면 NoSQL이 가진 장점을 일부 가질 수 있다 판단했습니다.MVCC(Multi-Version Concurrency Control): 읽기와 쓰기가 서로를 간섭하지 않는 구조를 제공해 동시성 환경에서 안정성이 높습니다.라이선스: 상업적 사용에 제약이 거의 없습니다. 이 점은 상용 서비스를 개발해야 하는 입장에서 의미가 크다 하겠습니다.그 외에도 여러 장점이 있겠습니다만...지금 말씀드린 정도가 가장 직접적인 이유였습니다. 만일 정말 고성능 시스템을 구축하겠다고 작정한다면 AWS 환경에 올리기에 앞서 물리적 환경에서 다양한 입/출력 테스트를 해볼 것 같습니다. 실제 서비스에서 회원 수가 10만 명 정도가 되지 않는 이상 어지간한 문제를 서비스에서 경험하기는 쉽지 않을 것으로 생각하고 있습니다. 아무튼 성능에 관한 이슈는 AWS 환경에서 향후 얼마든지 대응 할 수 있으리라 판단했습니다.그리고 AWS에서 이미 Read Replica를 지원하기 때문에 어지간한 문제는 없으리라 예상한 것도 있습니다. 개인적으로 가장 고민하지 않았던 부분은 의외로 API 서버 부분입니다. ALB를 적용해 스케일 아웃만 잘 해줘도 될 것이며 무엇보다 멀티스레딩 구조를 만들 이유가 거의 없고 높은 성능을 내기 위해서는 OS의 지원을 받는 비동기 입/출력 구조로 가는 것이 적절하다고 판단했습니다. 포트폴리오로 확장할 생각을 가지고 있다면 무조건 DB에 과부하를 걸어 성능을 개선하는 것에 대해 경험해 보시기를 권합니다. 그래야 캐싱에 대해서도 고민하게 될 것입니다. 만일 카카오톡 같은 것을 만들겠다면 프론트 수준에서 부하를 분산하는 문제도 고민해야 할 것입니다. 그러나 그것은 특수한 경우가 아닐까 싶습니다. 이 답변이 조금이라도 도움이 되기를 진심으로 바랍니다. 아직 시간이 있으니 얼른 취업도 잘 해내시기를 응원합니다. 😄
- 0
- 2
- 26
질문&답변
메모리 비교에 관한 질문
네. 가능합니다. C언어에서 비교 연산자는 피연산자 중 좌항에서 우항을 빼서 그 결과가 0인지 확인하는 방식으로 작동합니다. 그러나 메모리의 주소나 포인터에 대해서 단순 뺄셈을 하는 것은 주소값 자체가 같은 것인지 비교하는 것이지 주소가 가리키는 메모리에 저장된 값이 같은지 비교하는 것이 아닙니다. 그리고 for루프를 돌면서 각 요소를 비교하도록 직접 구현 할 수도 있습니다. 그런데 이는 매우 잘못된 생각입니다. 이미 표준함수가 존재한다면 그 함수를 사용해야 합니다. 그렇지 않고 memcpy() 함수를 특별한 이유 없이 구현해 사용한다는 것은 매우 부적절하며 리팩토링 대상입니다. 끝으로 상등연산 대신 뺄셈을 수행하는 것은 결과적으로 같다 할 수 있습니다. AI 답변과 더불어 참고하시기 바랍니다. 😄
- 0
- 2
- 31
질문&답변
이동생성자의 매개변수로 넘어가는 임시객체의 값 유지 관련하여 질문이 있습니다.
AI 답변을 참고하시면 되겠습니다. 😄
- 0
- 2
- 42
질문&답변
인터페이스 상속과 추상 자료형 2:00 질문
설계하기 나름입니다. 만일 파생형식에서 절대로 deviceId를 변경하지 못하게 할 생각이라면 private로 묶어 접근을 막아야 합니다. 참고하시기 바랍니다. 😄
- 0
- 1
- 26
질문&답변
문자열 Null
네. 맞습니다. Console 입/출력 버퍼는 기본적으로 Stream 형식입니다. 문자열에 끝에 null을 넣는 것은 그 끝을 알리기 위한 것으로 입/출력 버퍼에서 추출한 데이터를 문자열로 만드는 과정에서 끝에 null이 붙는 것으로 보면 되겠습니다. 이는 처리가 그렇게 되도록 라이브러리 코드가 만들어진 것일 뿐 RAM이나 CPU 같은 하드웨어와는 무관한 것입니다. 참고하시기 바랍니다. 😄
- 0
- 1
- 26
질문&답변
C, C++
네. 상관없습니다. C언어를 처음 입문하는 분들을 위한 강의 입니다. 그러나 결코 만만치는 않습니다. 😄
- 0
- 2
- 30
질문&답변
문자열 입출력 코드 에러
AI 답변을 참고하시면 되겠습니다. 😄
- 0
- 2
- 25
질문&답변
"이전 시간 강의 예제코드 실행시 왜 0bytes가 나오는지"에 대한 설명에 대한 질문 남깁니다!
C++ 같은 Native 코드 환경에서 IOCP 같은 비동기 입/출력을 시도할 때는 전달되는 메모리의 주소를 일종의 키처럼 사용합니다. 그래서 같은 메모리를 줄 수 없어야 합니다. 그리고 비동기 요청은 때로 마치 동기 입/출력 처럼 즉시 처리될 수도 있습니다. 앞에 대기하고 있는 것이 없는데다 요청을 내린 스레드 코드가 잠시 스케쥴링되어 우선순위가 밀렸다 다시 CPU 타임을 할당 받는 경우 간발의 차이로 비동기 입출력이 다 처리가 끝난 후 상태가 될 수도 있습니다. AI 답변과 마찬가지로 이는 동기화 문제로 볼 것은 아닌 것 같습니다. 동기화를 시도하기 위한 코드를 작성한 것이 아니기 때문입니다. AI 답변과 더불어 참고하시기 바랍니다. 😄
- 0
- 2
- 32
질문&답변
병행성 제어
애석하게도 현재 그와 관련된 내용을 주제로 다루고 있는 강의 없다고 봐야 합니다. 다만 'Windows 시스템 프로그래밍 - 기본' (https://inf.run/tinU9)에서 Win 32 API를 이용한 멀티스레딩 및 동기화에 관해 다루고 있습니다. 그러나 원자성에 대해서 깊이 다루지는 않습니다. 참고하시기 바랍니다. 😄
- 0
- 2
- 26










