ssh(secure shell) 원격 제어 클라이언트와 서버가 있다. 클라이언트에는 ssh client가 있어야 하고 서버에는 ssh server가 있어야 한다. 클라이언트에서 rm과 같은 명령을 보내면 ssh server가 자기가 설치돼있는 컴퓨터에게 명령을 전달하고, 그 컴퓨터는 그 명령을 하고 결과를 ssh server에 보낸다. 그러면 다시 ssh client에게 결과를 전달해준다. Port 웹은 80, ssh는 22번 포트를 사용한다. 모든 컴퓨터에는 포트가 있다. 0부터 65000까지가 있다. 클라이언트 웹브라우저에서 웹서버에 접속할 때 기본적으로 80번 포트로 접속을 한다. naver.com이라고 치면 자연스럽게 naver.com:80으로 접속하는 것이다. 웹서버는 요청을 처리하고 마찬가지로 80번 포트로 전해준다. 1024까지의 포트는 well-known port이다. 고정된 포트 번호이다. 그 나머지의 포트는 사용자가 임의로 정해서 쓴다. 만약 웹서버의 포트번호를 80이 아니라 8888로 하면 naver.com:8888로 해줘야만 들어갈 수 있다. Port Forwarding ISP(Internet Service Provider)에서 인터넷을 받아서 라우터(공유기)를 통해 집 안 각각의 컴퓨터들이 연결된다. ISP에서 public IP가 들어온다. 그 IP는 라우터의 IP가 된다. 그 라우터에 연결된 각각의 컴퓨터들은 또 고유한 private IP address를 받게 된다. Public IP는 외부에서도 그 IP를 알고 있으면 접근이 가능하다. Private IP는 외부에 공개되지 않는 IP이기 때문에 그 아이피만 갖고는 접속이 안된다. 포트 포워딩: 사용자가 라우터에 9000번 포트로 접근을 하면 그 포트는 라우터에 연결된 컴퓨터 중 하나로 연결되도록 라우터를 설정할 수 있다. router IP는 환결설정 tcp/ip 칸이나 어딘가에 나와있다. 192.168.0.1 라우터 ip에 접속하면 공유기 ...
기본적으로 SQLite는 embedded 데이터베이스이다. 즉, 앱 안에서 돌아간다. 반면 PostgreSQL은 클라이언트 서버를 바탕으로 작동한다. 따라서 세팅을 하고 실행하기 위해서 DB 서버가 필요하다. <SQLite> <PostgreSQL> SQLite는 다섯가지의 타입을 지원한다: BLOB, NULL, INTEGER, TEXT, REAL Postgresql은 거의 모든 타입을 지원한다. 라이브러리 측면에서는 PostgreSQL이 훨씬 크다. SQLite는 500kb정도로 작다. SQLite는 데이터베이스를 그냥 하나의 디스크 파일에 저장해서 복사 이동이 용이하다. PostgeSQL은 파일로 export하고 다른 서버에 업로드해야 이동이 가능하다. SQLite는 minimal design이기 때문에 속도가 빠르다. 하지만 복잡한 작업에서는 PostgreSQL이 효율적이다. PostgreSQL은 ACID를 따른다. ACID stands for Atomicity, Consistency, Isolation, Durability. SQLite는 기본 작업에 제한되는 반면 PostgreSQL은 확장이 용이하다. SQLite를 쓰는 것이 좋은 경우: 다른 앱과의 상호 작용이 없고 단독으로 동작하는 앱. 확장할 일이 없는 작은 앱. 디스크에서 바로 읽거나 써야되는 앱 IoT 장치. PostgreSQL를 쓰는 것이 좋은 경우: 데이터의 integrity와 reliability가 중요할 때. 복잡한 작업을 할 수 있어야 할 때. ------------------------------------------- Reference https://tableplus.com/blog/2018/08/sqlite-vs-postgresql-which-database-to-use-and-why.html
class vs object class가 그 자체로 선언되면 object이고, 그 object를 실체화시키면 instance가 되어 메모리에 할당된다. public class Animal{ // class //....... } int main(){ Animal cat; //object cat = new Animal(); //instance } overloading vs overriding overloading: 두 메서드가 같은 이름을 갖고 있으나 인자의 수나 자료형이 다른 경우이다. overriding: 상위 클래스의 메서드와 이름과 용례가 같은 함수를 하위 클래스에 재정의 한 것이다. 개발자의 실수를 방지하기 위해 @Override라는 annotation을 쓴다. Garbage Collector Java에서는 GC라는 알고리즘을 통해 메모리가 관리되기 때문에 개발자가 메모리를 처리하기 위한 로직을 만들 필요가 없다. 안드로이드 액티비티 생애주기 onCreate() - onStart() - onResume() - onPause() - onStop() - onDestroy() onCreate: 처음 실행할 때만 호출된다. 변수 초기화 및 클래스의 인스턴스화를 한다. 위젯에 대한 id를 참조하는 등의 작업을 한다. onStart: 액티비티가 포그라운드로 나오기 위해 수행되는 단계이다. BroadcastReceiver를 등록하는 등의 작업을 한다. onResume: 현재 실행중인 액티비티에 포커스가 맞춰져 있는 동안 onResume의 상태를 유지한다. 포커스가 다른 곳으로 이동되면 onResume의 상태가 꺼지고 종료되지 않은 상태에서 다시 포커스가 돌아오면 onPause를 거쳐 onResume이 된다. onPause: 액티비티의 포커스가 다른 곳으로 이동했을 때 호출된다. 액티비티가 백그라운드에 있다는 뜻이며 개발자가 상황에 따...
댓글
댓글 쓰기