전체 글 34

[코틀린] async 비슷해서 헷갈리는 것

연속성(Concurrency)1번suspend fun main() = coroutineScope { async { someService.callAPI1() }.await() async { someService.callAPI2() }.await()}위 코드는 두 API 호출이 순차적으로 이루어집니다.첫 번째 async 블록은 callAPI1()를 호출하고, 그 결과를 기다린 후, 두 번째 async 블록이 시작됩니다.이 방식은 두 번째 API 호출이 첫 번째 API 호출의 결과에 의존적인 경우 또는 순차적 실행이 필요한 경우에 사용하기 적합합니다. 2번suspend fun main() = coroutineScope { async { someService.callAPI1() ..

카테고리 없음 2024.06.18

도커와 쿠버네티스

docker , 도커 컨테이너 기반의 오픈소스 가상화 플랫폼으로, 백엔드 프로그램, 데이터베이스 서버 등 어떤 프로그램도 컨테이너로 추상화할 수 있고, 조립PC, AWS, Azure, Google cloud등 어디에서든 실행할 수 있다. .. 라고 하면 넘 어렵고 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼이다. 도커에 중요한 개념 2가지 컨테이너 컨테이너는 격리된 공간에서 프로세스가 동작하는 기술이다. 하나의 서버에 여러개의 컨테이너를 실행하면 서로 영향을 미치지 않고 독립적으로 실행되어 가벼운 VM을 사용하는 느낌을 준다. 이미지 이미지는 컨테이너 실행에 필요한 파일과 설정값 등을 포함하고 있는 것으로 상태값을 가지지 않고 변하지 않는다. 컨테이너는 이미지를 실행한 상태..

용어 정리 2021.10.17

[React] 리액트Error Cannot update a component (`App`) while rendering a different component (`XXX`).

1.문제 콘솔창에 다음과 같은 에러가 떴다. 2.원인 - 컴포넌트 렌더링 하는 동안 함수를 호출했기 때문에 컴포넌트를 그리다 말다 에러가 남 3.해결 방안 - 화살표 함수를 통해 parameter를 지나가게 하기 4.참고한 공식 문서 https://www.notion.so/doggo-finder-f0555183b960422eb6ce630bf3bd95cd#f223cf3a0e2e46f4b30d3100c084ebb2

React 2021.10.17

[java] 중첩 클래스

내부클래스(Inner class) 일반 클래스의 내부에 생성된다. Non-static nested class라고도 불린다. outer 클래스는 inner 클래스를 멤버변수처럼 사용할 수 있다. 사용하려면 new로 인스턴스 만들면 된다. inner 클래스는 outer에 있는 자원을 직접 사용할 수 있다. class Outer { 변수; 메소드; public class Inner{ } } // 객체 생성 시 Outer 객체1 = new Outer(); Outer.Inner 객체2 = 객체1.new Inner(); 정적 중첩클래스 (Static nested class) 내부 클래스와 비슷하나, static으로 선언한다. 밖에있는 클래스의 변수와 메소드 중, static이 붙은 것을 사용할 수 있다. 내부 클래..

java 2021.05.25

[코어자바9] 입출력 스트림, Reader와 Writer

🔸 입출력 입출력이란 컴퓨터 내부 또는 외부의 장치와 프로그램 간의 데이터를 주고 받는 것으로, java의 모든 입출력은 스트림을 통해 이루어진다. 자바 API에서 바이트를 읽어 올 소스를 입력 스트림(input stream)이라고 한다. 바이트는 파일, 네트워크 커넥션, 메모리에 있는 배열에서 읽어올 수 있다. 🔸 스트림 얻기 파일에서 스트림을 얻는 가장 쉬운 방법은 아래와 같다. Files.newInputStream(path) Files.newOutputStream(path) URL이 있을 떄는 URL 클래스의 openStream 메서드로 얻는 입력 스트림에서 해당 URL의 콘텐츠를 읽을 수 있다. URL url = new URL(""); InputStream in = url.openStream();..

java 2021.05.24

[코어자바9] 동기와 비동기, 블로킹과 논-블로킹

🔸 블로킹 & 논-블로킹 CPU는 명령어를 읽어들이며 수행한다. CPU는 명령을 실행하는 동안 다른 일을 못한다... 명령어가 많아지거나 loop가 있으면 CPU가 점유하는 시간이 길어진다. CPU가 실질적으로 액션을 취하지 않고, 감지만 하고 있어도 CPU가 점유한다고 말한다. 이를 CPU 타임이라고 말할 수 있다. 이 CPU 타임이 길어지는 것을 블로킹이라고 한다. 사실 블로킹과 논-블로킹은 상대적인 개념이다. (사실상 논블로킹이라는 것은 없다‼️) 논-블로킹은 일을 덜 시키는 애를 기준으로 말하면 된다. 예를 들면, mainUI thread를 논-블로킹을 하는게 좋겠다. 많은 일을 시키면 부하가 오기 때문에, 클라이언트 측면에서 부하오는 모습을 확인할 수가 있다. 이를 피하기 위해서는 backgro..

java 2021.05.24

[백준] 2740번: 행렬 곱셈

문제 N * M 크기의 행렬 A와 M * K 크기의 행렬 B가 주어졌을 떄, 두 행렬을 곱하는 프로그램을 작성하시오. 입력 첫째 줄에 행렬 A의 크기 N과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 순서대로 주어진다. 그 다음 줄에는 행렬 B의 크기 M과 K가 주어진다. 이어서 M개의 줄에 행렬 B의 원소 K개가 차례대로 주어진다. N과 M, 그리고 K는 100보다 작고, 행렬의 원소는 절대값이 100보다 작거나 같은 정수이다. 출력 N * M 크기의 행렬 A와 M * K 크기의 행렬 B가 주어졌을 떄, 두 행렬을 곱하는 프로그램을 작성하시오. 문제 원본 바로가기 https://www.acmicpc.net/problem/2740 우선 행렬의 곱셈 방법을 알아보자. A라는 행렬 N x..

코테 2021.05.15

[코틀린] 이것만은 알고 시작하자!

1. 코틀린의 함수, 변수, 클래스, 인터페이스, enum은 Java와는 다르게 전역에서 인식할 수 있다. 2. main 메소드로 진입함수를 할 수 있어 클래스가 필요하지 않다. 3. 코틀린은 데이터 타입을 뒤에다 쓴다. fun 이름 (a:Int, b:Int) 4. 코틀린의 스마트 캐스팅은 데이터 타입을 명시하지 않아도 자동으로 데이터 타입을 추론해주는 것이다. 5. 자바에서 Optional 개념은 null을 허용할지 말지 정했다면, 코틀린에서 데이터 타입?을 하면 null을 허용한다. (null은 타입을 무력화하기 때문에 위험하다) 6. 변수 선언 시, var은 변수 -> 선언시 값이 없어도 가능 val은 상수 -> 선언 시반드시 값이 지정되어야 하지만, 클래스의 필드로 선언될 때는 꼭 값이 할당되지 ..

코틀린 2021.05.01

[코틀린] 오버라이딩과 추상화 그리고 인터페이스

오버라이딩 코틀린에서는 상속받은 sub 클래스가 오버라이딩을 하고싶다면 super 클래스의 함수에는 open 키워드를 사용하고, sub 클래스의 함수에는 override 키워드를 쓰면 된다. ※오버라이딩: 이미 구현이 끝난 함수의 기능을 서브클래스에서 변경하는 것 지난 시간에 만든 Son 클래스에 introduce 함수를 오버라이딩 해보자. open class Person(var name:String, var age:Int){ open fun introduce(){ println("나는 ${name}이고 ${age}살이야") } } class Son(name:String, age:Int, var school:String):Person(name, age){ override fun introduce(){ p..

코틀린 2021.01.31