4차산업혁명의 일꾼/Java&Spring웹개발과 서버 컴퓨터 263

코테, 포폴에 밀리는 OCJP(OCAJP, OCPJP)와 프로그래머스 아이패드 이벤트

https://devdocs.programmers.co.kr/references/java/docs/api/index.html?overview-summary.html Overview (Java SE 11 & JDK 11 )This document is divided into two sections: Java SE The Java Platform, Standard Edition (Java SE) APIs define the core Java platform for general-purpose computing. These APIs are in modules whose names start with java. JDK The Java Development Kit (JDK) APdevdocs.programmers..

스프링시큐리티6(OAuth2)의 속도, 자원절감, 보안향상, 권한조정의 이점

스프링 시큐리티는 버전 1~6까지 있는데, 2에서부터 SpringSecurity라는 이름으로 설정되었다. 버전 2가 되면서 공실상부 스프링의 시큐리티 담당으로 인정받은 것이다. 당연히 이 당시에는 xml 기반으로 이루어졌다. 3부터 Java Config, OAuth2의 지원이 추가되었다. OAuth는 요청마다 서명 생성하는데(요청토근,액세스토큰), OAuth2 는 더 단순한 토큰 기반인증으로 액세스 토큰을 사용하여 액세스에 접근한다. SSL/TLS사용이 필수라서 전송 중 데이터의 기밀성과 무결성을 보장한다. 확장성도 있어서 안쓸 이유가 없다.그리고 인증에 있어서 빅테크를 활용의 지평을 넓히면서 SpringSecurity의 위상이 높아졌다.  4부터 드디어 스프링부트와 통합되었다. 쓰기 편해졌다. 5에서는..

알고리즘 기초 정리

알고리즘은 시간복잡도 빅오를 상수,로그,선형,선형로그,이차시간,지수시간,팩토리얼보고 공간복잡도를 메모리양으로 생각한다. 시간과 공간 효율성은 자료구조를 알고나서 좀더 생각해보자. 자료구조는 배열,연결리스트,스택,큐,힙(PriorityQueue- 완전이진트리),트리,그래프,해시 등이 있다.배열과 리스트는.. [] 와 index로 넘어가고스택은 LIFO로 호출에 좋고, 큐는 FIFO로 순서적인 계산대를 생각하면 되었고,힙은 최댓값, 최솟값을 구하는데 좋다. 마지막을 제외한 모든 노드에서 자식들이 꽉 채워진 이진트리이다.(중복허용)트리와 그래프는 비선형 자료구조이며 노드와 간선으로 구성된다. 그리고 둘다 특정순회방법(DFS, BFS) 등을 사용하여 노드를 방문할 수 있다. 차이점이라면 트리는 계층구조(root..

클라우드시대에 2025년부터 지원 끊기는 이유 WebFlux(Spring5), 클라우드 시대에 절약과 함께 빛나는 AOT엔진의 Spring6 ~!

SpringMVC는 전통적인 동기형이다. 그러나 스프링5에서 도입된 WebFlux는 새로운 웹프레임워크로, 비동기 및 논블로킹 애플리케이션을 개발할 수 있다. WebFlux는 리액티브 프로그래밍 모델을 기반으로 하여, 고성능,확장성, 효율성을 요구하는 어플리케이션에 적합하다. 즉, MSA,함수형프로그래밍으로 간결한 코드, 논블로킹 I/O로 동시에 더 많은 처리, Netty, jetty,tomcat 등 다양한 서버엔진이 있다. 결국 WebFlux는 실시간, MSA, 스트리밍 어플리케이션에 적합하다. 결국 스프링5는 실시간,MSA,스트리밍 등 분업화와 실시간 및 대용량 처리에 적합하다.스프링6으로 넘어가면서 자바17이 강제되고, AOT엔진으로 애플리케이션 시작시간 단축하고 메모리 사용량을 줄인다. 그리고 j..

자바의 희망 구독/서브모델의 Kafka , 대용량처리 관련 캐쉬하는 Redis, 장애예방 CircuitBreaker, 장애대응책 RetryConfig

1. Redis Redis를 보다보니까 잘 변하지 않는데이터, 즉 약국 검색시에 약국위치 같은 거를 저장하고 있는 것이다. 약국의 이름과 위치는 자주 바뀌지 않는다 그러므로 이런 데이터 중에 자주 조회하는 데이터를 Redis로 캐싱해서 저장하면 궂이 DB까지 안가도 된다. 이렇게 Redis는 비동기 메시지큐로 대규모 병렬 분산처리가 가능해서 메시지큐 역할도 할 수 있다.2. KafkaKafka는 구독/서브 모델이다.생산자와 소비자가 있고,Topic(주제)이 있다. 이를 통행 생산자와 소비자 사이에 발생하는 대용량 실시간 스트리밍을 할 수 있다. 이러한 메시지 브로커 역할은 이벤트 기반 아키텍처에 기반한다. 이것은 메시지 큐와 다르게, 라우팅도 할 수 있고 다양한 패턴으로 전송할 수 있다. 보통 블로그나 ..

스프링 기본개념과 변천사 그리고 스프링버전5이상 혹은 스프링부트3의 필요성에 관하여

스프링은 DI, IOC, AOP의 기본개념이 있다. 사실 자바는 New해서 만들어서 static main 메소드에서 제어한다. 그러나 스프링에서는 그것을 프레임워크가 다 제어한다. 이것은 프로그래머가 아닌 프레임워크가 관리하기에 IOC라는 역전제어가 일어난다. 스프링부트에서 이러한 것들을 참으로 편리하게 application.properties에서 거의 관리할 수 있게 하기에서, 수많은 xml 파일로 IOC설정하는 것들이 필요 없어진다.     DI로 인해서 자바는 의존성 주입이라는 것을 통해 객체지향 프로그래밍을 쉽게 할 수 있다. 파이썬 언어는 것은 하나의 파일 개념으로 프로그래밍 하기 편하다고 할 수 있다. 그러나 공장형태의 조립개념이라면 이러한 의존성 주입의 객체지향은 참으로 편리한 프로그래밍 방..

스프링부트3 백엔드 개발자 되기 2 편(TDD, RESTful)

1편에서https://iamipro.tistory.com/502 스프링부트3 백엔드 개발자 되기(신선영 지음) - 1. 스프링부트 입문기초신선영 리멤버 백엔드 개발자님의 책이다.shinsunyoung.tistory.com 운영중이고 깃헙도 그렇다.https://shinsunyoung.tistory.com/ 해어린 블로그공블로그shinsunyoung.tistory.comhttps://github.com/shinsunyoung shinsunyoung - Oiamipro.tistory.com 사실 Test 인 Junit 빼고는 나머지는 익히 다 안것이었다.개발을 TDD로 해본적이 없어서 저번 항해플러스에서 많이 애먹었는데백엔드 입문 기본에 TDD식 기본이 나온다.@AutoConfigureMockMvc@Spri..

스프링부트3 백엔드 개발자 되기(신선영 지음) - 1. 스프링부트 입문기초

신선영 리멤버 백엔드 개발자님의 책이다.shinsunyoung.tistory.com 운영중이고 깃헙도 그렇다.https://shinsunyoung.tistory.com/ 해어린 블로그공블로그shinsunyoung.tistory.comhttps://github.com/shinsunyoung shinsunyoung - Overviewshinsunyoung has 25 repositories available. Follow their code on GitHub.github.com 이책을 사서 한번 보다 말았는데 다시 본다구 첫 입문인 스프링4.0~5.0 대의 책을 복습하고 봐서 그런지스프링 6.0 을 보는데 이해가 좀더 잘 되는 것 같았다.  클라이언트,서버,RDB,SQL,NoSQL, IP,Port, Libr..

자바8 , 11, 17 간단 정리

스프링 5에서 자바8강제하는데자바 8은 람다, 스트림, 펑션, 옵셔널, 날짜 등이 큰 변화점이고, // 람다식 사용 일회 스레드 new Thread(()-> System.out.println("일회용 스레드 생성")).start(); // 람다식 Runnable runnable = () -> { System.out.println("test"); }; // 삼항식에 람다식 적용 //(x,y) -> x list = Arrays.asList("a", "b", "c");; // 스트림 list.stream() .filter(s -> s.equals("a..

스프링 버전 4와 5의 차이 정리

Spring 4의 주요 특징Spring 4는 2013년 12월에 릴리스되었으며, 다음과 같은 주요 기능을 포함하고 Java 8 지원, Spring WebSocket, RestController , Groovy Bean 정의, 일부 Java EE 7 지원하는 특징이 있다.Spring 5의 주요 특징Spring 5는 2017년 9월에 릴리스되었으며, Spring 4에 비해 많은 개선 사항과 새로운 기능이 포함되어 있다.Reactor 기반의 리액티브 프로그래밍 지원:Spring 5는 Project Reactor를 기반으로 리액티브 프로그래밍을 지원합니다.Flux와 Mono API를 통해 비동기식 및 논블로킹 프로그래밍 모델을 제공합니다.Spring WebFlux:Spring WebFlux는 비동기 및 논블로킹..

OAuth와 SSR

OAuth (Open Authorization)는 웹사이트나 애플리케이션이 사용자의 비밀번호를 공유하지 않고도 다른 애플리케이션 또는 웹사이트에 제한된 자원 접근 권한을 부여할 수 있도록 하는 개방형 표준으로 즉, OAuth는 안전한 위임(access delegation)을 위한 프로토콜 규약이다.주요 개념자원 소유자 (Resource Owner): 자원을 소유한 사용자입니다. 예를 들어, 사용자가 Google Drive에 저장된 파일을 가지고 있다면, 사용자가 자원 소유자클라이언트 (Client): 자원 소유자가 접근을 허락한 제3의 애플리케이션입니다. 예를 들어, 사용자가 자신의 Google Drive 파일에 접근하도록 허용한 웹 애플리케이션이 클라이언트자원 서버 (Resource Server): 보..

log와 junit5 ,validation 그리고 interceptor

junit5은 TDD방식으로 개발하는데 있어서 견고하고 탄탄한 구조의 코드를 작성할 수 있게 해준다. 기본적으로 @Test 어노테이션으로 테스트하는데 추가 조건으로 아래 조건을 주어서 테스트가 되고여러 입력값에 대해 동일한 파라미터화된 테스트도 지원이 된다.import org.junit.jupiter.params.ParameterizedTest;import org.junit.jupiter.params.provider.CsvSource;import static org.junit.jupiter.api.Assertions.*;public class ParameterizedTestExample { @ParameterizedTest @CsvSource({ "1, 1, 2", "..

java 파일 다운로드/ 엑셀및 pdf 그리고 소켓통신 그리고 JSON 복습

package com.example.demo.controller;import org.springframework.beans.factory.annotation.Value;import org.springframework.core.io.InputStreamResource;import org.springframework.http.HttpHeaders;import org.springframework.http.HttpStatus;import org.springframework.http.MediaType;import org.springframework.http.ResponseEntity;import org.springframework.stereotype.Controller;import org.springframewo..

javascript/jsp및 프론트 복습

jquery는 모바일 때문에 지양하는 추세이긴 하는데 그래도 좋은 면이 많아서, 웹프론트에서 계속 쓰는데, DOM조작하고 이벤트처리, ajax지원하는 것들을 복습하니 새롭다. javascript보다 좀더 섬세한 DOM조작이 가능하고, 애니메이션효과와 ajax요청이 쉽다. Load Data 이런식으로 하는 것을 Load Data 이렇게 간단하게 요청 할 수 있다.fetch는 promises를 사용하여 ajax 요청을 더욱 간단하고 직관적으로 처리할 수 있게 한다. Load Data  fetch가 코드가 간결하여 가독성이 좋고 비동기 요청을 더 쉽게 다룰수 있어 좋으나 구형브라우저에서 지원되지 않는다.jsp는  jquery가 link 라이브러리로 무거워지..

웹개발의 추억을 반추하며 스프링 MVC 기초공사 복습과 스프링 Security

필자가 처음 2017년에 스프링을 배울 때만 해도, 전공자들이 스프링을 잘 모르는 것을 보고 이상히 여겼다. 스프링이 신기술인가 했지만... 교수님들이 가르치기 어려운 그런 거였다. 이미 많이 쓰이고 있었는데..  자바 1.6~7이 한창이던 시절 자바 1.8로 배웠다. 날짜, 스트림, 람다 등이 주로 변화였으나 사실 자바 자체도 제대로 몰랐기 때문에 이런 버전의 변천이 어떤 영향이 있는지도 몰랐다.그래서 예전에 모델2에서 스프링으로 바뀌었고 JPA도 있는데, 학원에서 배웠던 교재를 다시 복습해 보니 신기술로 생각한 JPA도 이미 그 책에 있었다. 다만 비교적 최신기술이라 실무에서 잘 쓰이지 않았을 뿐이다. 지금은 7년여가 지나 대세가 되었다. 진리탐구니 결혼이니 아이키우기니 병행하면서 지금까지 왔는데, ..

컴퓨터를 운영하는 시스템 소프트웨어 운영체제

1. 운영체제의 구성과 유형컴퓨터의 시스템 자원을 관리하고 컴퓨터 프로그램이 동작하기 위한 서비스를 제공하는 프로그램들의 모음커널 : 응용 프로그램과 하드웨어 수준의 처리 사이의 가교 역할마이크로 커널 : 메모리 관리, 멀티태스킹, 프로세스간 통신(IPC) 등 최소한의 요소만 커널내에 남김 일체형 커널 : 커낼 내부 요소들이 서로 효율적으로 상호작용(UNIX, LINUX)일괄처리(batch) , 시분할(대화형), 실시간(증권시스템), 분산 처리프로세스는 메모리에 code 프로그램이 data(static,heap, stack)를 PCB(제어) 하도록 하는 것이다.윈도우는 자식 프로세스는 새로운 프로그램을 생성하나, UNIX,Linux는 자식프로세스는 부모 프로세스와는 다른 프로그램을 실행하는 방식으로 작동..

컴퓨터를 보호하고 정보를 지키자~! 컴퓨터 보안~!

1. 컴퓨터의 기본적인 보안개념을 살펴보자컴퓨터 보안은 정보를 여러가지 위협으로 부터 보호하기 위한 정책 및 기법이다.정보가 저장 전달 될 때 허락되지 않은 접근, 수정, 훼손, 유출 등을 하므로, 정보보호의 목표는 접근에 관한 기밀성, 수정에 관한 무결성, 사용에 관한 가용성 확보이다.해커는 컴퓨터의 세세한 부분까지 적극적으로 탐구하고 활용성을 극대화하기 위해 연구하는 것을 즐기는 사람을 말한다.요즘 보안에 위협되는 수법으로 파밍(PC에 악성코드를 설치해 주소를 올바르게 입력해도 사기 사이트로 접속)과 스미싱(문자메세지로 악성코드 심은 url 보내 스마트폰으로 소액결제 유도) 등이 있다.2. 보안을 위해 암호가 중요하니 혼돈과 확산원칙의 암호를 알아보자 두 사람이 안전하지 않은 채널을 통해 정보를 주고..

정보를 공유하고 교류하는 컴퓨팅 정보통신망~!

1. 컴퓨터 통신망과 데이터 통신 요소 서비스를 제공하는 서버 컴퓨터와 서비스를 사용하는 클라이언트 컴퓨터가 있다.통신망의 역할로는 전송(DTE), 신호변환(), 제어(DCE)가 있다. 컴퓨터 통신망은 기본적으로  전송시 data는 반송파 신호를 쓰는데 변조 및 복조를 하며, 전송코드(ASCII , Unicode, BCD) , 전송방향(단반향,반이중,전이중), 전송모드(병렬,직렬), 전송동기가 있다. 2. 통신요소통신선로(점대점, 멀티드롭, 점선)전송매체(꼬임선-STP,UTP, 동축-근거리, 광섬유-장거리, 무선통신)네트워크형태( 성형, 버스형, 환형, 그물형, 계층형)네트워크 장치(리피터, 허브, 브릿지-lan,mac, 라우터-ip, 게이트웨이-응용)네트워크 소프트웨어3. 전송기술데이터 교환(회선-통신..

컴퓨터 보안 기초 정리

컴퓨터를 쓰면서 부터 늘 보안에 관해 생각해 봤습니다. 알약으로 대두되는 한국의 대표적인 보안 프로그램이 있지만, 메일 등을 통한 여러가지 랜섬웨어 등, 악의적인 크래커들이 보안망을 뚫고 들어가서 데이터를 갈취해가는 것들을 종종 뉴스에서 많이 봐왔기 때문입니다. 데이터 보호는 정책이나 기법으로 보호가 가능하네요ㅕ 메트릭스나 이런 데 봐도 다 컴퓨터 시스템에 침투해서 여라기지 일들이 펼쳐지는데... 해킹이라는 것의 기본개념을 알고 싶습니다. 아직까지는 털려도 크게 문제가 되지 않는 개인서버를 운영하고 있지만 그래도 컴퓨터 보안과 정보보호에 대해 알고 있어야 할 것 같습니다. 정보보호의 핵심목표는 기밀성,무결성,가용성이 있네요~! 정보가 데이터 통신에 있어서 접근,수정,훼손,유출이 되지 않게 하는것이 이 과..

운영체제와 커널

운영체제가 무엇인가? 운영체제의 주요 구성요소에는 프로세스 관리자, 메모리 관리자, 장치관리자, 파일 관리자가 있다. 운영체제의 대표적인 유형으로는 일괄처리 운영체제, 시분할 운영체제, 실시간 운영체제, 분산 운영체제가 있다. 운영체제가 주로, 프로세스와 메모리 관리를 하고 있었고, 장치와 파일등을 관리할 거라고 암묵적으로 생각하고 있었다. 다만 어떤 식으로 하느냐는 일괄처리/시분할/실시간/분산 처리 방식으로 한다는 것도 어렴풋이 기억이 있다. 응용프로그램이 없다면 하드웨어를 잘 알아야 한다라... 그냥 dos 시대 정도부터 봐왔는데 cli 정도를 잘해야 한다는 것 같네요~! 이게 리눅스의 커널같은 것 같은데요 커널에서는 하드웨어를 직접제어할 수있는 CPU명령어를 사용할수 있는 모드인데... git 으로..