본문 바로가기

java10

SOLID 원칙 SOLID 원칙? - 객체지향적으로 코드를 짜기위해 따르면 좋은 원칙 5가지 S - 단일책임원칙 클래스는 하나의 책임(목적)만을 가져야 한다.(응집도) 코드가 100줄이 넘어간다면 너무많은 책임을 할당하지 않았는지 점검할것 O - 개방폐쇄원칙(ocp, Open-closed principle) 소프트웨어개체(클래스,모듈,함수) 는 확장에 대해서는 열려있어야 하고, 수정에 대해서는 닫혀 있어야 한다는 원칙. 어떤 기능을 추가구현 하기 위해 그것과 관계없는 코드를 건드려야 하는 상황-> "확장에는 닫혀있다" 기존 코드를 건들지 않은채 기능을 추가할수 있어야 함 -> "수정에는 열려있다" 추상화가 부족한 경우에 나타나는 현상 L - 리스코프 치환 원칙 자료형 C가 자료형 M의 하위형이라면, 필요한 프로그램의 속.. 2023. 8. 8.
java - 객체에 대한 인사이트들. 순차지향 프로그래밍 (sequential oriented programming) -어셈블러 절차지향 프로그래밍 (procedure oriented programming) -c언어 -여기서 procedure 란 사실 함수라는 뜻 자바 코드컨벤션 오픈소스인 스프링 시큐리티의 코드인데 ㅈㄴ 긴거. RequestMatcherDelegatingAuthenticationManagerResolver.java ㅋㅋㅋ get 과 find 의 차이 get - 리턴타입이 객체 find - 리턴타입이 Optional vo= 불변하는 객체 dto = 데이터 트랜스퍼 객체 entity = 식별자,수명주기,저장소 세가지요소가 존재. PO = 주로 db에 저장되는 entity 디미터 법칙 모은 자신이 조작하는 객체의 속사정을 몰라야.. 2023. 6. 2.
[온라인강의] 실전 개발자를위한 spring framework - 멀티캠퍼스 스프링이란? - 가장 많이사용하는, 사실상 자바 표준 프레임워크 - 경량급 애플리케이션 프레임웍. - 경량급? : 단순한 웹컨테이너에서도 엔터프라이즈 개발의 고급기술을 대부분 사용할수 있음 - 애플리케이션? : 특정 계층,기술,도메인에 국한되지 않고 범용적으로 쓰일수있음 - 엔터프라이즈 개발이 용이하다? : 개발자가 복잡하고 실수하기 쉬운 로우레벨에 많이 신경쓰지 않으면서 비즈니스 로직 개발에 전념할수 있음 스프링 framework 특징 - 컨테이너 역할 - DI 지원 : 설정파일이나 어노테이션을 통해 객체간의 의존관계를 설정할수 있도록 지원한다. - AOP 지원 : 트랜잭션이나 로깅,보안처럼 공통적으로 필요로 하는 모듈을 핵심모듈에서 분리해서 관리하고 재사용할수 있다. -pojo 지원: 스프링 컨테이너.. 2022. 4. 10.
[코어자바9] 강의 들으면서 소소한 의문점들과 생각 당연히 array 보다 arraylist 가 좋은데 굳이 array를 쓸이유가잇나? -> 속도때문에 예전엔 적절히 array 를 썼는데, 최근에 기술발전으로 인해 거의 차이가없다. map 에서 성능향상된게 hashmap 인데, 어떤식으로 향상된걸까? arraylist 와 hashmap 사용의 용도 구분만 잘해도 좋은 개발자인 것 같다. 정말 문법과 문법이 아무 차이가 없는가? 그렇다면 다이아몬드 문법의 장점은 뭔가? 사실. 리스트에서 인덱스로 관리하고 맵에선 key로 관리하는데. 맵에서 key를 0,1,2,3으로 주면 리스트와 같은거 아닌가? -> 하지만 리스트는 순서가 정해져 있어 N번째껄 찾을때 연산이 유용하고, 맵은 키값이 0,1,2,3으로 되있을지언정 정렬이 순서대로 된게 아니라서 속도가 다른건가.. 2022. 3. 22.
자바 빌드 툴들의 개념과 종류에 대해 (feat.노예비유) 빌드 도구란? 간단히 말해서 (예를들어 Java 환경이라 했을때) 자바에서 라이브러리 들을 편리하게 추가할수 있는 도구 더 간단히 말하면? 라이브러리 = 내가 공부하기 위해 참고할 도서관에 꽃힌 책들 빌드도구 = 방대한 도서관에서 내가 필요한 책들을 내 공부의 목적과 용도에 맞게 알아서 찾아와주는 노예 제너럴 한 빌드 도구들에는 뭐가 있나? 메이븐 - 현회사에서 사용함 그래들 - 최근 많이 사용함, 메이븐과 더불어 거의 시장을 점유하는 애. build.gradle 파일로 생성. 엔트 - 2022. 1. 26.
Math.random() 함수는 진짜 랜덤일까? 대박이다. 지금까지 믿었던 랜덤함수에 뒷통수를 맞은 느낌이다. 그도 그럴것이, 컴퓨터가 난수를 발생시킨다는 거 자체가 말이안된다. 컴퓨터는 digital 한 기기인데 랜덤이라는 어떤 analogue ? soul ? 적인걸 할수가 없지. 사람이 이겼다. https://needneo.tistory.com/70 2021. 10. 14.
replace 관련 자바 함수들에 대해 replace 관련 함수를 쓰기위해 replace 를 적고 ctrl+spacebar 를 누르면 다음과 같이 4개가 뜬다. replace(CharSequence target, CharSequence replacement); replace(Char oldChar ,Char newChar); replaceAll(String regex, String replacement); replaceFirst(String regex, String replacement); 1. replaceAll은 정규식(regex)을 이용하여 replace 보다 더 다양한 처리가 가능하다. 2. CharSequence 는 String, StringBuilder, StringBuffer, CharBuffer 클래스의 인터페이스이다. 따라서 .. 2021. 10. 6.
회문(palindrome) 인지 체크할때 필요한 메소드들 String s1 = "level" 이라고 할때 if (s1.reverse().toString().equals(str)) result =1; java 라이브러리에서 제공하는 메소드 들을 적절하게 사용하면 손쉽게 회문 여부를 체크할수 있다. 2021. 8. 19.
대소문자 변경하기 (toUpperCase(), toLowerCase()) Scanner sc = new Scanner(System.in); String str = sc.nextLine(); System.out.println(str.toUpperCase()); Java 에서는 해당하는 기능을 string 클래스의 메소드로 제공하고 있다. 2021. 8. 19.
반응형