개발 지식(66)
-
(운영체제) 운영체제의 개요
운영체제는 프로그래밍의 기본이 되는 것이라고 할 수 있다. 운영체제를 통해서 메모리 구조나 프로그램이 실행되는 방식을 이해하게 되면 코드를 작성할 때, 좀 더 유연한 사고방식으로 코드를 작성할 수 있다. 이 글을 쓰는 이유는 본질적으로 컴퓨터의 구조가 궁금해서 작성하는 것과 동시에 내가 공부한 내용을 정리하고, 면접에 조금이나마 도움이 되기 위해서 작성한다. 🏴 운영체제는 뭘까?1960년대의 운영체제는 '하드웨어를 제어하는 소프트웨어' 정도에 지나지 않았다.하지만 지금은 그 이상의 역할을 하고 있는 것이 사실이다. 그럼에도 불구하고 변하지 않는 진실이 있다. 바로 운영체제가 사용자와 하드웨어 사이에 중개자 역할을 한다는 것이다. 그럼 운영체제가 하드웨어에게 어떤 것을 제공할 수 있는..
2022.07.07 -
(Database) MySQL 8.0 서버 업그레이드 시 주의 사항
아직까지 많은 회사들이 MySQL 5.7 버전을 사용하고 있지만, 개인 개발자 혹은 새로 생긴 스타트업의 경우 8.0이상의 버전을 사용하는 일이 많다. 개인의 경우 크게 문제가 되지 않지만 회사의 경우 5.7버전에서 8.0버전으로 업그레이드를 할 때 문제가 발생할 수 있기 때문에 여기에 관해서 몇글자 적어보려한다. (이 글의 내용은 Real MySQL 8.0)을 참고했다. MySQL 서버를 업그레이드 하는 방법 mysql 서버를 업그레이드 하는 데는 두가지 방법을 생각해 볼 수 있다. MySQL 서버의 데이터 파일을 그대로 두고 업그레이드 하는 방법 mysqldump 도구 등을 이용해 MySQL 서버의 데이터를 SQL 문장이나 텍스트 파일로 덤프한 후, 새로 업그레이드 된 버전의 MySQL 서버에서 덤프..
2022.05.30 -
(네트워크) 간단한 TCP의 특징과 역사
연결 지향 통신 : TCP 먼저 연결 지향에 대해 얘기하기 이전에 TCP는 RFC 793, 1122, 1323, 2018, 2581의 인터넷 표준 통신 방식이다. 현재 98%라고 말해도 과하지 않을 정도로 전 세계 대부분의 통신이 TCP를 사용하고 있다. 그렇다면 왜 모두 TCP를 사용할까? 아래 TCP의 특징에 대해서 알아보자. > "연결 지향" TCP는 연결 지향 통신이다. 그렇기 때문에 반드시 수신자와 송신자 간의 연결이 되어 있어야 통신을 한다. TCP는 어떻게 수신자와 송신자가 연결되었는지 확인을 할까? 이는 3-way handshaking이라는 방식을 사용해서 송/수신자간 확인을 한다. 3-way handshaking을 진행하면서 송신자와 수신자의 상태 파라미터를 실행시킨다. 그럼 '연결'은 ..
2022.05.02 -
(네트워크) UDP에 관한 짧은 지식
네트워크를 공부하다 보면 반드시 만다는 TCP/UDP 중 이 문서에서는 UDP에 대해서 알아보려 한다. ✔️Connectionless transport: UDP 제목에서 확인할 수 있듯이 UDP는 TCP와 다르게 무연결성 통신 방식이다. 그렇기 때문에 TCP에서 하는 핸드쉐이킹(3-way handshake)를 하지 않는다. 무연결성 통신인데 어떻게 통신을 한단 말인가? 여기에 대한 의문을 차근차근 풀어가보자. 먼저 UDP의 특징들을 알아보자. 날것의 인터넷 프로토콜, 즉 IP를 '거의' 직접 사용한다. '거의'라는 표현을 썼기 때문에 당연히 IP와는 다르다. "Bare bones" Internet protocol 날것 IP에 존재하지 않는 port번호와 패킷의 길이, 그리고 checksum이 들어가있다...
2022.04.21 -
(Docker) Mysql(PostgreSQL, mariaDB 등)을 도커로 실행시키기
mysql과 postgresql은 각각 3306, 5432 포트를 기본으로 사용하기 때문에 겹칠일이 없지만, mysql과 mariaDB같은 경우 둘다 3306 포트로 실행되는데다, 같은 로컬환경에 출돌이 일어나기 쉽상이다. 그래서 이에 대한 해결책으로 도커에서 DB를 띄우는 법에 대해서 얘기하려 한다. 🏴 MySQL을 Docker에서 당연히 이 과정을 수행하기 위해서는 Docker가 기본적으로 설치되어 있어야겠다. 그리고 당연히 기본적인 docker 명령어들은 숙지가 되어 있어야 한다. // 로그인 되어 있지 않다면 로그인 docker login // 실행되고 있는 것은 무엇인지 확인 docker ps // 사실 docker 앱 보면 바로 알 수 있긴하다 먼저 로컬환경에 mysql 도커 이미지를..
2022.03.24 -
(Java) StringBuilder 문자열 만들기
왜 자바는 String += char가 안 될까? (정말 답답하다 C++도 되는데..) 고맙다고 해야할지 모르겠지만, 이와 비슷한 StringBuilder라는 것을 만들어 두었다. StringBuilder에 대해서 알아보자. import java.util.*; class Main{ public static void main(String[] args) { char[] arr = {'a', 'b', 'c', 'd'}; String s = ""; StringBuilder stringBuilder = new StringBuilder(); for(char c : arr) { stringBuilder.append(c); } s = stringBuilder.toString(); } } StringBuilder는 클..
2022.03.12