전체 글 (461) 썸네일형 리스트형 스프링 프레임워크의 등장 배경 스프링 프레임워크의 등장 배경 태초에 EJB라는 Java 진영 표준 기술이 존재하였다. 잘 구성되어있는 기술이지만, 가격이 굉장히 비싸고, 서버 한대당 수천만원짜리 소프트웨어를 설치해야했다. 수많은 개발자들이 EJB 기술로 개발을 시작하였지만, 이론은 너무 좋은데 제대로 공부하기에 너무 복잡하였다. EJB 인터페이스를 제공해주는데 모든 코드가 EJB 의존적으로 개발하게 되었다. (특정 기술의 종속) POJO (Plain Old Java Object) -> 순수한 자바코드를 사용하자 라는 말이 나올 정도였다. EJB 지옥에서 놀라운 기술에서 탄생하였다. EJB 프로젝트로 많은 고통을 받았던 SI 개발자 로드 존슨 본인이 직접 책을 쓴 것을 기반으로 만든 것이 Spring framework이다. Spring.. 네트워크 https://velog.io/@majaeh43/%EB%AA%A8%EB%91%90%EC%9D%98-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-1vmql3k2 랜 (LAN: Local Area Network) 가정이나 빌딩 안에 있는 사무실 같이 지리적으로 제한된 곳에서 컴퓨터와 프린터를 연결할 수 있는 네트워크 왠 (WAN: Wide Area Network) ISP가 제공하는 서비스를 사용하여 구축된 네트워크 ISP (Internet Servcice Provider) 인터넷 서비스 제공자 : KT, SK 브로드밴드, U+ DMZ (Demilitarized Zone) 외부에 공개하기 위한 네트워크 프로토콜 통신하기 위한 규칙 각각의 계층에는 다양한 프로토콜이 있다. OSI 모델과 T.. 네트워크 시작하며 제가 전공 신입생 시절 컴퓨터 공학을 어떻게 공부해야 할지 검색을 하면 홍보성 학원 강의만 나왔습니다. 개발자가 되기 위해서 컴퓨터 공학의 기초 과목이 중요하다고 하는데 어떻게 공부해야할지 막연하게 교보문고에서, 해외 자료를 찾아가면서 공부하였습니다. 학부에서 공부 잘하는 분들은 교수님의 설명을 스펀지처럼 흡수하는 분들이기에 부족한 저로서는 막연하게 부러워하고 있었습니다. 아무도 공부자료, 공부방법에 대해서 알려주지 않아서 4학년이 올라가면서 [컴퓨터 공학] 어떻게 네트워크를 공부할 것인가?(네트워크 공부 방법에 대하여) 글을 작성하였고 그간 2만 명 이상의 분들이 글을 읽어주었습니다. 시간이 지나면서 없어진 자료를 제거하고 새로운 자료를 업로드하여 새롭게 글을 작성합니다. 개발자를 꿈꾸는 꼬꼬.. 발표자료 1. Apache 아파치 서버는 요청이 들어오면 커넥션을 형성하기 위해 프로세스를 생성합니다. 그래서 새로운 클라이언트의 요청 들어올 때마다 새로운 프로세스를 만드는데, 이는 UNIX 계열 OS가 네트워크 커넥션을 형성하는 모델을 그대로 적용한 것이라고 합니다. 그런데 프로세스를 만드는 것이 시간이 걸리는 작업이다 보니 요청이 들어오기 전에 프로세스를 미리 만들어 놓는 prefork 방식을 사용합니다. 그래서 새로운 클라이언트로부터 요청이 들어오면 미리 만들어 놓은 프로세스를 가져다 사용합니다. 만약 만들어 놓은 프로세스가 모두 할당되었다면 추가로 프로세스를 만드는 작업을 실행합니다. 그러나 시간이 지남에 따라 인터넷 트래픽이 계속해서 증가하게 되었고 이전에는 서버가 처리해야 할 요청 양이 그 당시 기술.. Nginx vs apache Nginx는 무엇일까? Nginx는 웹서버이며, 리버스 프록시, 로드밸런서 그리고 http 캐시로도 쓰일 수 있는 소프트웨어이다. 요청에 응답하기 위해 이벤트 기반 구조를 채택했고, 덕분에 현재 웹 서버 분야에서 1등을 하고 있다. 이벤트 기반 구조가 어떤 점이 좋아서 nginx를 사용했는가 웹서버 분야에서 제일 잘 나가는게 아파치 서버라고 알고 있는 ngixn와의 차이점은 무엇인가 nginx게 벤치마킹 테스트를 했을때 가볍고 성능이 좋아서 선택 그리고 아파치 서버보다 최신 기술이라서 사용 설명이 부족하다. Apache와 Nginx를 비교하면서 서로의 개념을 알아보자. NCSA HTTPd 그 당시에는 유닉스 기반으로 만들어진 최초의 웹서버 NCSA HTTPd 가 있었어요. 그런데 이 프로그램은 버그가 굉.. 바이트코드 조작 - 모자에서 토끼를 꺼내는 마술 바이트코드를 조작하는 것은 막강한 기능이다. 바이트 코드를 조작하는데 쓸 수 있는 라이브러리는 여러가지가 있지만 가장 고전적이고 널리 쓰이는 것은 asm이라는 것이 있다. userguide가 좀 어렵게 되어있다. visitor 패턴과 adapter 패턴을 잘 알고있어야 쓸 수 있다. 너무 어렵기 때문 javabuddy라는 것이 있는데 그나마 쉽다. 아무것도 없는 Moja에서 “Rabbit”을 꺼내는 마술 Moja.java public class Moja { public String pullOut() { return ""; } } Masulsa.java public class Masulsa { public static void main(String[] args) { System.out.println(new.. 바이트코드 조작 - 코드 커버리지는 어떻게 측정할까 코드 커버리지는 어떻게 측정할까? 바이트 코드를 조작해서 측정하는 것이다. 바이트 코드를 읽어서 코드 커버리지 챙겨야 하는 부분의 수를 counting 하고 코드가 실행될 때 그 중에 몇개의 로직이 지나갔는지 counting을 해서 비교해주는 것이다. 테스트 코드를 통해 확인한 소스 코드의 비율을 %로 나타낸 것이다. Moim이라는 클래스를 생성한다. Moim이라는 클래스에는 isEnrommmentFull 이라는 메서드가 존재하는데, 해당 메서드에는 세가지 로직이 존재한다. 테스트 코드를 작성해보자. 테스트 커버리지를 측정해주는 라이브러리인 JaCoCo를 사용해보도록 하자. https://www.eclemma.org/jacoco/trunk/doc/index.html http://www.semdesigns.. 클래스로더 시스템 클래스 로더 시스템 구조를 조금 더 자세하게 그리면 아래와 같이 그릴 수 있다. 여러개의 클래스 로더들이 (Bootstrap, Extension, Application) 부모 - 자식 간의 관계를 맺고 로딩을 한다. 링크라는 과정도 세부적으로 세단계로 나눠서 실행이 된다. 클래스 로더 로딩, 링크, 초기화 순으로 진행된다. 로딩 클래스 로더가 .class 파일을 읽고 그 내용에 따라 적절한 바이너리 데이터를 만들고 “메소드” 영역에 저장. 이때 메소드 영역에 저장하는 데이터 FQCN (Fully qualified class name, 패키지 경로를 포함한 클래스 이름) 클래스 | 인터페이스 | 이늄 메소드와 변수 로딩이 끝나면 해당 클래스 타입의 Class 객체를 생성하여 “힙" 영역에 저장. 플랫폼 클.. 이전 1 ··· 4 5 6 7 8 9 10 ··· 58 다음