9. 숫자만 추출 문자와 숫자가 섞여있는 문자열이 주어지면 그 중 숫자만 추출하여 그 순서대로 자연수를 만듭니다. (만약 “tge0a1h205er”에서 숫자만 추출하면 0, 1, 2, 0, 5이고 이것을 자연수를 만들면 1205이 됩니다. 추출하여 만들어지는 자연수는 100,000,000을 넘지 않습니다.) import java.util.ArrayList; import java.util.Scanner; public class Main { //아스키번호 48 ~ 57 public static int solution(String str){ /*int answer= 0; for(char x : str.toCharArray()){ if(x>=48 && x=48 && x= 0; i--) { if (str.char..
1. - 한 개의 문자열을 입력받고, 특정 문자를 입력받아 해당 특정문자가 입력받은 문자열에 몇 개 존재하는지 알아내는 프로그램 작성 - 대소문자 구분 x - 첫 줄에 문자열이 주어지고, 두 번째 줄에 문자가 주어진다 - 문자열은 영어 알파벳으로만 구성 import java.util.Scanner; public class Main { public static int solution(String str, char c){ int answer = 0; str = str.toUpperCase(); c = Character.toUpperCase(c); System.out.println("str : " +str); System.out.println("c : "+ c); /*for(int i=0;iminVal){ m..
올해 3월에 끝났던 독서 스터디 할 때마다 대강 기억에 남았던 것들 정리해서 저장만 해놨던 건데 드디어 정리한다 가상 면접 사례로 배우는 대규모 시스템 설계 기초 / w. 알렉스 쉬 1장 사용자 수에 따른 규모 확장성 - 로드밸런서 : 부하 분산 집합에 속한 웹 서버들에게 트래픽 부하를 고르게 분산하는 역할(6p) - CDN(콘텐츠 전송 네트워크) : 이미지 비디오 CSS JavaScript 파일 등을 캐시. 정적 콘텐츠는 CDN을 통해 서비스 - 무상태(stateless) 웹 계층(17p) - 메세지 큐 : 메시지의 무손실 즉, 메시지 큐에 보관된 메시지는 소비자가 꺼낼 때까지 안전히 보관된다는 특성을 보장하는 비동기 통신을 지원하는 컴포넌트 - 샤딩 : 대규모 데이터베이스를 샤드라고 부르는 작은 단위..
Every derived table must have its own alias 문장 그대로 서브쿼리 사용시 alias를 주지 않아 발생하는 에러다. 간단한 오류인데 서브쿼리를 두개 이상씩 사용하게되면 마지막 서브쿼리에 자꾸 alias 빼먹어버려서 자주 보는거 같다. 좀 찾아보니까 오라클을 사용할 경우에는 alias가 없어도 정상적으로 동작하자만, Mysql은 필수적으로 적어줘야 된다고 한다 이렇게 서브쿼리 뒤에 alias가 없으면 오류 alias를 붙여주면 정상적으로 작동
로깅 라이브러링 - 스브링 부트 라이브러리를 사용하면 스프링 부트 로깅 라이브러리(spring-boot-starter-logging)가 함께 포함되고, 이는 기본적으로 SLF4J와 Logback를 사용한다. 지금 보니까 log4j 포함되어 있다 * 로그 라이브러리는 Logback, Log4J, Log4J2 등등 수 많은 라이브러리가 있는데, 그것을 통합해서 인터페이스로 제공하는 것이 바로 SLF4J 라이브러리다 쉽게 이야기해서 SLF4J는 인터페이스, 그 구현체로 Logback 같은 로그 라이브러리를 선택하면 된다 (실무에서는 Logback 많이 쓴다함) package hello.springmvc.basic; import lombok.extern.slf4j.Slf4j; import org.slf4j.Lo..
15장 JUnit 들여다 보기 - 책에서 소개해주는 모듈은 문자열 비교 오류를 파악할 때 유용한 코드 ex) ABCDE와 ABXDE를 받아 로 반환 - 소스 흉내내면서 책에서 하라는대로 같이 수정해봤는데 되게 재미있었다 최종 ComparsionCompactor.java public class ComparisonCompactor { private static final String ELLIPSIS="..."; private static final String DELTA_END="]"; private static final String DELTA_START="["; private int contextLength; private String expected; private String actual; priva..
14장. 점진적인 개선 Args 클래스를 소개하며 초창기의 소스와 비교하며 점진적으로 개선되는 모습을 보여준다. 소스를 그냥 냅다 붙여넣기 해버려서 진짜 읽기 싫게 해놨다. 그냥 제일 앞에 잘 짜여졌다는 소스라도 따라 쳐보면서 이해하는게 빠르다. Args 구현 public static void main(String[] args) { try { Args arg = new Args(“l,p#,d*”, args); boolean logging = arg.getBoolean(‘l’); int port = arg.getInt(‘p’); String directory = arg.getString(‘d’); executeAppliocation(logging, port, directory); } catch (ArgsE..
13장 동시성 * 동시성? - 한 cpu안에서 동시에 여러 작업을 하는 것처럼 보이게 만드는 것처럼 보이게 만드는 것 1. 동시성이 필요한 이유 - 동시성은 결합을 없애는 전략이다. 즉, 무엇(what)과 언제(when)를 분리하는 전략 - 무엇과 언제를 분리하면 애플리케이션 구조와 효율이 극적으로 나아진다 - 구조적인 관점에서 프로그램은 거대한 루프 하나가 아니라 작은 협력 프로그램 여럿으로 보인다 2. 동시성에 대한 오해 - 동시성은 항상 성능을 높여준다 -> 동시성은 때로 성능을 높여준다 대기시간이 아주 길어 여러 스레드가 프로세서를 공유할 수 있거나, 여러 프로세서가 동시에 처리할 독립적인 계산이 충분히 많은 경우에만 성능이 높아진다 - 동시성을 구현해도 설계는 변하지 않는다 -> 단일 스레드 시..
- Total
- Today
- Yesterday