프로그래밍

프록시 패턴대상 객체에 접근하기 전 그 접근에 대한 흐름을 가로채 대상 객체 앞단의 인터페이스 역할을 하는 디자인 패턴 프록시 서버서버와 클라이언트 사이에서 클라이언트가 자신을 통해 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해줌 Nginx비동기 이벤트 기반의 구조와 다수의 연결을 효과적으로 처리 가능한 웹 서버Node.js 서버 앞단의 프록시 서버로 활용 CloudeFlare전 세계적으로 분산된 서버가 있고 이를 통해 어떠한 시스템의 콘텐츠 전달을 빠르게 할 수 있는 CDN 서비스CDN (Content Delivery Network) : 지리적으로 분산된 서버들을 연결한 네트워크웹 서버 앞단에 프록시 서버로 두어 DDOS 공격 방어나 HTTPS 구축에 쓰임 CORS (Cross-Origin Re..
개선전 코드 (코드 리뷰 및 개선점을 요청받은 코드)더보기import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.Collection;import java.util.List;import java.util.Optional;import kwan.utility.customException.CustomReflectionException;public class Utility { static Connection con; static PreparedStatement ps; s..
소프트웨어 공학학문적 의미높은 품질의 소프트웨어를 효율적으로 개발하는 방법을 탐구하는 학문/연구 분야실천적 의미소프트웨어를 제품화함에 있어서 적용할 수 있는 품질보증 및 개선 활동을 규현하는 프로세스 CMMI (Capability Maturity Model Integrated)미국 국방부에 의하여 개발되어 지금까지 수천 개의 기업이 평가/인증받고 있음Level 존재SPICE(Software Process Improvement and Capability Determination)ISO/IEC 15504에 의하여 규정되어 프로세스 개선과 조직 평가 모델로 활용  소프트웨어 개발 및 유지관리 프로세스개발 방법론소스코드를 포함한 형상관리단계별 산출물 관리요구사항 관리테스트 및 검증  소프트웨어 개발 방법론 폭포..
바이트 입출력 // 문자 동일(try catch)InputStream is = new FileInputStream("파일경로");OutputStream os = new FileOutputStream("파일경로");byte[] array = new byte[1024];while(true) { int num = is.read(data) if (num == -1) break; os.write(array, 0, num);}os.flush();os.close();is.close();  보조 스트림// InputStream To ReaderReader reader = new InputStreamReader(new FileInputStream("경로"));// OutputStream To WriterWri..
표현 및 기호설명[]한개의 문자[abc] // a,b,c 중 하나의 문자[^abc] // a,b,c 이외의 하나의 문자[a-zA-Z] // a~z, A-Z 중 하나의 문자\d한 개의 숫자, [0-9]와 동일\s공백\w한 개의 알파벳 또는 한 개의 숫자, [a-zA-Z_0-9]와 동일\...모든 문자 중 한 개의 문자?없음 또는 한개의 문자*없음 또는 한 개 이상+한 개 이상{n}정확히 n개{n,}최소한 n개{n,m}n개부터 m개까지a|ba 또는 b()그룹핑  String regExp = "(02|010)-\\d{3,4}-\\d{4}";String data = "010-123-4567";boolean result = Pattern.matches(regExp, data); // true
Kotlin에서의 var 개념 도입 switch문의 Null 처리switch(object) { case null -> {} // object가 null일 경우 case null, default -> {} // object가 null이거나 선택되지 않은 경우}  switch문의 Instance 확인String data = switch(obj) { case Integer i -> String.valueOf(i); case String s -> "\" + s + "\"; case null, default -> "unknow";};// 이런식으로 obj의 타입을 확인해서 case에 있는 해당 변수로 return할 수 있음  가상 스레드
외운다기 보다 이 흐름을 생각하면 더 좋을 것 같다Connection으로 부터 conn을 받아온다이때 DriverManager의 도움을 받아 사용하고자 하는 DB와 Connection을 생성한다Connection이 생겼으면 하고자 하는 동작에 대한 것이 필요해진다PreparedStatement를 준비하고 원하는 동작(SQL)문을 등록해준다PreparedStatement(pstmt)에 필요한 것들을 setXXX를 통해 세팅해준다이후 execute를 해주면 된다  public class Main4 { public static void main(String[] args) throws IOException { String SQL; PreparedStatement pstmt = nu..
클래스의 멤버로 선언된 인터페이스\해당 클래스와 긴밀한 관계를 맺는 구현 객체를 만들기 위함public class Button { public static interface ClickListener{ void OnClick(); } private ClickListener clickListener; public void setClickListener(ClickListener clickListener) { this.clickListener = clickListener; } public void click() { this.clickListener.onClick(); }}(main)Button btnOk = new Button();cla..
public class A { void method1(int arg) { // final int arg //로컬 변수 int var = 1; // final int var = 1 //로컬 클래스 class B { static int field = 1; // 정적 필드(Java 17) (B 생성자) static void method2() { sout(arg); // 읽기 가능 // arg = 1; // 불가능 } // 정적 메소드(Java 17) } // 로..
// sealed 키워드를 사용하면 permits 뒤에 상속 가능한 자식 클래스를 지정해야 함public sealed class Person permits Employee, Manager {}// sealed 처리된 Person 을 상속하는 Employee, Manager는// final 또는 non-sealed 키워드를 쓰거나 sealed 키워드를 사용해서 또 다른 봉인 클래스로 선언해야함public final class Employee extends Person {}public non-sealed class Manager extends Person{}
yield 키워드의 경우 Java13부터 사용 가능하고yield가 있으면 default가 만드시 존재해야 함int score = 0;switch(grade) { case 'A': case 'a': (print) break; case 'B': case 'b': int result = 100 - 20; score = result; break; case 'C': case 'c': (print) break; default: score = 60;}switch(grade) { case 'A', 'a' -> (print); case 'B', 'b' -> { int result = 100 - 20; ..
람다식@FunctionalInterfaceinterface MyLambdaFunction { int max(int a, int b);}public class Main { public static void main(String[] args) { // 람다식을 이용한 익명함수 MyLambdaFunction lambdaFunction = (int a, int b) -> a > b ? a : b; System.out.println(lambdaFunction.max(3, 5)); }}  람다식 메소드 참조(x, y) -> Math.max(x, y)(x, y) 중복 , 리턴 값이 또 다른 메서드 호출Math::max;@FunctionalInterfaceinter..
류가든
'프로그래밍' 카테고리의 글 목록