분류 전체보기 64

스프링을 배우기 전, 알아두면 좋은 지식 (feat. 서버, 클라이언트, ip, port, 라이브러리, 프레임워크, 데이터베이스)

서버와 클라이언트인터넷 서비스는 서버와 클라이언트가 관계를 맺는다.클라이언트는 서버에 다양한 요청을 진행하고, 서버는 클라이언트가 요청한 내용을 처리하여 응답(결과 전달)을 해준다.클라이언트서버로 요청하는 프로그램을 모두 일컫는다.우리가 사용하는 웹 브라우저가 바로 대표적인 클라이언트 중 하나.우리가 주소를 입력하여 홈페이지로 이동하는 행위 자체가 '서버에 요청을 보내는' 행위이다. 그러면 서버는 이 요청을 받고 우리가 입력한 주소에 맞는 화면으로 응답을 보내준다. 우리는 그 화면을 보고 있는 것이다.서버클라이언트의 요청을 받아 처리하는 주체클라이언트가 데이터를 요청했다면, 데이터를 주고/ 단지 서버 내에서 처리만 해달라는 요청을 했다면 해당 요청만 처리할 수도 있다.위에서 말했듯, 우리가 웹 브라우저에..

gradle 및 스프링 부트3 프로젝트 생성

인텔리제이 설치 먼저 인텔리제이를 설치했다. 설치 방법은 여기를 참고바란다.https://to-mypage.tistory.com/51  gradle 프로젝트 생성 1. New Project 클릭 ➡️ Build system을 Gradle로 설정 ➡️ 'download JDK...' 클릭책에서 JDK17버전을 사용하고 있었는데, 나는 Azul Zulu JDK11버전을 사용중이었어서 새롭게 다운로드 받아야 했다.JDK에서 'download JDK...'를 누른다.이미 JDK17버전을 쓴다면 아래 과정 스킵 가능  2. version: 17로 선택 ➡️ Vendor는 아무거나 가능하다. 나는 Azul Zulu Community를 선택했다.   3.언어: JavaName(프로젝트 이름): springboot-d..

gradle 설정 파일 오류 발생(feat. JDK버전) Dependency requires at least JVM runtime version 17. This build uses a Java 11 JVM.

gradle 설정파일을 실행하는데, 아래와 같이 오류가 발생했다. Dependency requires at least JVM runtime version 17. This build uses a Java 11 JVM. 당황했지만.. 읽어보니 JDK 버전이 맞지 않아서 발생한 듯 보였다.기존에 나는 JDK 11을 사용 중이었고, 새로운 프로젝트에서는 JDK 17을 다운로드 받았기 떄문. 우선은 project Structure 탭에 들어갔다.SDK는 17로 잘 설정되어 있었다. Language level 이 11로 되어있었는데.. 이것 때문인가? 싶어서 SDK default로 바꾸었다.근데 지금 생각해보니 이렇게 확신이 없는 채로 정확히 알고 있지 않은 환경설정을 바꾸는 것은 정말.. 위험한 행동이라는 생각이..

삽질의 기록 2025.02.25

인텔리제이 커뮤니티 버전 설치(IntelliJ IDEA CE)

나는 맥북프로 M3를 사용하는 macOS 유저라 이를 기준으로 작성해보겠다.인텔리제이를 무료로 사용하기 위해서는 두 가지 방법이 있다.1. 대학생임을 인증해서 교육용 리밋 버전을 1년간 무료로 사용할 수 있다.2. 인텔리제이 커뮤니티 버전을 설치하는 것이다.나는 이미 1번을 사용 중이었고 기간이 만료되어 커뮤니티 버전을 새로 다운로드 받았다.기존에 있던 인텔리제이에 덮어씌워지는 건가.. 걱정했지만 새롭게 다른 앱이 깔렸다. 인텔리제이 커뮤니티 설치 방법  1. 아래 링크로 들어가서 홈페이지 접속https://www.jetbrains.com/ko-kr/idea/download/?section=mac IntelliJ IDEA 다운로드 www.jetbrains.com  2. 위 링크에 접속하면 유료버전이 먼저..

Postman 포스트맨 설치하기

설치 방법 링크: https://www.postman.com/downloads/ Download Postman | Get Started for FreeTry Postman for free! Join 35 million developers who rely on Postman, the collaboration platform for API development. Create better APIs—faster.www.postman.com 위 페이지로 들어가면 다운로드 받을 수 있다. 나의 경우 맥 프로 M3를 사용중이라 apple chip으로 다운로드 받았다.다운로드 받고 보니... 이미 homebrew로 다운 받아놓은 적이 있었다.아무튼 앱을 실행해주니 계정 생성 창이 먼저 떴는데, 우선 x를 눌러서 껐다...

[Mac] Docker ''com.docker.vmnetd'에 악성 코드가 포함되어 있어서 열리지 않았습니다. 이 동작은 Mac을 손상시키지 않았습니다.' 오류 해결 방법

한 한달 전인가.. 갑자기 맥 노트북을 켤 때마다 이런 경고창이 떴다.  ​뭐지? 내 노트북에 악성코드 깔렸다고? 하고 심장이 두근거렸다.곧바로 구글에 쳐봤는데 오류가 전세계적으로 발생했던 건지이미 스택오버플로우와 도커 커뮤니티에 외국분들이 막 이래저래 해결방법을 찾고 공유하는 모습이 보였다. 그렇게 한달이 지난 지금..​이젠 뭔가 해결방법이 많이 나왔겠지 싶어서 다시 검색해보았다.역시나 공식에서도 해결책을 제시해놓았다.​그럼 이제 해결을 해보자.​참고로 나의 노트북은 맥북 프로 M3이다.1. 기존에 깔려있던 도커 지웠다가 4.37.2 이상 버전으로 다시 설치(해결 실패)먼저 새 버전을 설치해보라고 하길래기존에 깔려있던 도커를 지웠다. https://docs.docker.com/desktop/releas..

삽질의 기록 2025.02.11

스트림 요소 처리

스트림이란?여태 컬렉션, 배열에 저장된 요소를 반복처리 하기 위해 for문을 사용하거나 iterator 반복자를 이용했다면, 또 다른 방법으로는 스트림을 사용할 수 있다.스트림은 요소들이 하나씩 흘러가면서 처리된다는 의미를 가지고 있다.List 컬렉션에서 요소를 반복처리 하기 위해 스트림을 사용// List의 stream()메소드로 Stream객체를 얻음Stream stream = list.stream();// forEach메소드로 요소를 어떻게 처리할 지 람다식으로 제공한다.stream.forEach( item -> // item 처리); 특징내부 반복자이므로 처리 속도가 빠르고 병렬 처리에 효율적이다.람다식으로 다양한 요소 처리를 정의할 수 있다.중간 처리와 최종 처리를 수행하도록 파이프 라인을 형성..

Lang/Java 2024.12.26

람다식

람다식이란?함수형 프로그래밍이란 함수를 정의하고 이 함수를 데이터 처리부로 보내 데이터를 처리하는 기법을 말한다. 데이터 처리부는 데이터만 가지고 있을 뿐, 처리 방법이 정해져 있지 않아 외부에서 제공된 함수에 의존한다.데이터 처리부는 제공된 함수의 입력값으로 데이터를 넣고, 함수에 정의된 처리 내용을 실행한다. 이것이 바로 메소드동일한 데이터라도 각 함수의 처리 내용에 따라 결과가 달라질 수 있는 것이다.이것은 함수형 프로그래밍의 특징으로, 데이터 처리의 다형성이라고도 볼 수 있다. 람다식은 데이터 처리부에 제공되는 함수 역할을 하는 매개변수를 가진 중괄호 블록이다. 데이터 처리부는 람다식을 받아 매개변수에 데이터를 대입하고 중괄호를 실행시켜 처리한다.람다식: (매개변수, ...) -> { 처리 내용 ..

Lang/Java 2024.12.17

스레드

멀티 스레드, 멀티 프로세스 개념운영체제는 실행중인 프로그램을 프로세스로 관리한다.운영체제는 멀티 프로세스를 생성해서 멀티 태스킹처리한다.하나의 프로세스 내에서 멀티 태스킹(두가지 일을 동시에 처리)할 수 있도록 하기 위해서 만들어진 프로그램:  메신저 채팅작업 + 파일 전송 동시 작업하나의 프로세스가 두가 이상의 작업을 처리할 수 있는 이유는 멀티 스레드가 있기 때문이다. 스레드: 코드의 처리 흐름을 말한다. 프로세스 내에 스레드가 두 개라면, 두 개의 코드 실행 흐름이 생긴다는 의미이다.멀티 프로세스가 프로그램 단위의 멀티태스킹이라면 멀티 스레드는 프로그램 내부에서의 멀티태스킹이라고 볼 수 있다. 멀티 프로세스서로 독립적으로, 하나의 프로세스에서 오류가 발생해도 다른 프로레스에게 영향을 미치지 않는다..

Lang/Java 2024.12.16

제네릭

클래스 생성 전 우리는 이 클래스에 어떤 내용물을 넣을지 미리 알고 있다. 따라서, 저장할 내용물의 타입을 미리 알려주면 Box라는 클래스는 content 필드에 무엇이 대입되고, content를 읽을 때 어떤 타입으로 제공할지 알게 됨 → 이것이 제네릭제네릭: 결정되지 않은 타입을 파라미터로 처리하고, 실제 사용할 때 파라미터를 구체적인 타입으로 대체시키는 기능// Box클래스에서 결정되지 않은 content의 타입을 T라는 타입 파라미터로 정의함public class Box { // BOX의 내용물에는 다양한 것이 들어갈 수 있기 때문에 T라는 타입 파라미터로 정의 public T content;}// Box클래스는 T가 무엇인지는 모르나, 객체가 생성될 시점에 다른 타입으로 대체된다는 것을 알고 있..

Lang/Java 2024.12.06