Windows 무한 재부팅으로 일어난 글로벌 IT 대란
·
개발자 커리어 및 교육/뉴스 및 트렌드
2024년 07월 19일, 미국 마이크로소프트(MS)사의 운영체제(OS)인 Windows가 먹통이 되는 사건이 발생했다.이는 개인 PC 뿐만 아니라 해당 OS를 사용하는 전 세계의 공항과 은행·방송·통신 서비스 등까지 영향을 미쳐, 곳곳에서 블루스크린 쇼크로 업무가 마비되는 사태가 발생했다. 어떤 결과를 초래하였는가블루스크린이 뜨며 재부팅을 하라는 메시지가 계속 노출되는 무한 재부팅의 굴레에 빠져, 항공사의 전산망이 마비되며 전 세계 수천 편의 항공편 운항이 중단되었다.증권거래소 및 은행 시스템이 멈춘 곳도 있을 뿐더러, 방송사의 방송 송출, 병원 운영, 작게는 전광판 및 마트 계산대에 블루 스크린이 속속들이 노출되었다. 왜 이런 일이 발생했는가초기에는 MS 클라우드 서비스에서 발생한 오류라 알려졌으나,..
map과 unordered_map 비교
·
프로그래밍 언어/C++
C++에서 키-값 쌍으로 데이터를 관리하는 자료구조는 특이하게 map과 unordered_map 두 가지가 있다.이 두 컨테이너는 얼핏 봐서는 비슷해 보이지만, 내부 구현 방식이나 성능 측면에서 간과할 수 없는 차이점이 존재한다.map과 unordered_map의 차이점과 사용 사례, 성능을 비교해보며 자신의 프로젝트에 어느 자료구조를 쓰는 것이 더욱 적합한지 판단할 수 있도록 해보자.std::mapmap은 내부적으로 균형 이진 검색 트리(BST)를 사용해 데이터를 저장한다.이로 인해 키는 항상 정렬된 상태로 저장되어 요소에 대한 삽입/삭제/검색에 O(log n)의 시간복잡도를 가진다. 추가적인 트리 구조로 인하여 메모리 사용률 또한 높다. map은 보통 키의 정렬이 필요할 때, 범위 기반의 검색이 자주..
데이터베이스 명명 규칙 (약어 사용 규칙)
·
데이터베이스/SQL
개발자라면 (혹은 데이터 엔지니어라면) 데이터베이스 설계 중 이름짓기에 많은 시간을 투자한 경험이 필시 있을 것이다.한 번 붙인 이름은 해당 데이터가 필요한 동안에는 지속적으로, 빈번하게 사용될 것이 분명하므로협업자들이 어떤 데이터인지 단번에 파악할 수 있도록 가독성 있는 이름을 지어야 한다. 이번에는 가독성과 유지보수성에 중요한 역할을 하는 데이터베이스 객체의 명명 규칙과 그 예시를 살펴보고자 한다. 1. 의미 있는 이름 사용당연하게, 각 객체의 이름은 그 목적과 의미를 명확하게 나타내어야 한다. 학생들의 정보를 저장하는 테이블이 존재한다고 가정하자.내가 알아볼 수 있다는 이유만으로 해당 테이블의 이름을 AAA라고 지으면 어떻게 될까?팀원은 물론이고, 나중에 자신이 해당 테이블을 다룰 때조차 이 테이블..
The package * collides with a type 오류 해결
·
프로그래밍 언어/Java
사내 솔루션을 건드려보며 학습하던 중 아래와 같은 오류를 만나게 되었다. 오류의 원인해당 오류는 패키지명과 클래스명이 충돌할 때 발생한다고 한다. 그렇다면 왜 패키지명과 클래스명이 같면 안 될까?그 이유는 Java에서 동일한 이름을 가진 패키지와 클래스가 있을 때 컴파일러가 혼동을 일으키기 때문이다. 깊은 이해를 위해 필자의 상황으로 예시를 들어보자. package com.my.example.test;public class Example { // 클래스 내용} 필자는 `com.my.example` 패키지에 새롭게 `test`라는 패키지를 생성하였다.그런데 생성 후 패키지 내에 파일을 만드니 위처럼 컴파일 오류가 발생한 것이다. package com.my.example;public class Test..
파이썬에서 큐(Queue)를 구현하는 방법
·
프로그래밍 언어/Python
LeetCode에서 알고리즘 문제를 푸는 사람들이라면 무조건 한 번 쯤은 접해봤을 TreeNode.Queue를 사용하면 각 노드들의 방향을 알면서 BFS 탐색이 가능하기 때문에오늘의 문제에서는 Python, C++, Java 각기 다른 언어를 사용해 Queue를 사용한 알고리즘 문제를 풀었다.Java를 사용한 큐 구현엔 익숙하지만, 아직 Python으로 구현하는 자료 구조들엔 익숙하지 않아블로그에 포스팅하며 제대로 사용하는 방법을 복기하고자 한다.Queue란 무엇일까 큐는 데이터를 순서대로 처리하기 위해 사용하는 FIFO 구조의 선형 자료 구조이다. 큐의 가장 큰 특징은 FIFO 구조이다. FIFO(피포; First-In First-Out)란 가장 먼저 온 데이터가 가장 먼저 나가고, 가장 늦게 온 데이..
RuntimeException : Cannot invoke "*" because "*" is null 해결
·
프레임워크 및 라이브러리/Spring
2024-07-17T16:37:31.387+09:00 ERROR 18908 --- [nio-8080-exec-1] c.d.s.global.exeption.ExceptionAdvice : RuntimeException : Cannot invoke "com.donghaha.server.villager.model.service.VillagerService.readVillagerList(com.donghaha.server.villager.model.dto.ReadVillagerListCommandDto)" because "this.villagerService" is null 토이 프로젝트 개발 중 위와 같은 오류를 만나게 되었다.위와 같은 에러는 처음 만나게 되어 당황스러웠는데, 이유는 간단했다. @Res..
유영웅
영차영차