728x90
반응형

자바 23

[ java ] 다운캐스팅( down casting)

Animal ani = new Human(); 생성된 인스턴스 Human은 Animal 형이다. 이렇게 Animal형으로 형 변환이 이루어진 경우에는 Animal 클래스에서 선언한 메서드와 멤버 변수만 사용할 수 있다. Human 클래스에서 더 많은 메서드가 구현되어 있고 다양한 멤버 변수가 있다고해도 자료형이 Animal형인 상태에서는 사용할 수 없다. 필요에 따라 다시 원래 인스턴스의 자료형(Human)으로 되돌아가야 하는 경우가 있다.이렇게 상위 클래스 형으로 형 변환되었던 하위 클래스를 다시 원래 자료형으로 형 변환하는 것을 다운캐스팅(down casting)이라고 한다.

Java 2021.02.07

[ java ] Duration.ofSeconds, Duration.ofMillis 사용법

Test를 할 때 주로 사용 Duration.ofSeconds() Duration.ofMillis() 테스트를 할 때, 해당 메서드의 실행 시간을 확인하는 역할을 한다. 예시 @Test @DisplayName("스터디 시작") void create_new_study() { assertTimeout(Duration.ofMillis(100), () -> { new Study(10); Thread.sleep(300); }); } 해당 메서드의 실행종료까지 소요시간을 확인해서 0.100s를 초과하는 경우에 테스트는 실패한다. 메서드 실행 시간을 확인하기 위해서 Thread.sleep을 사용하여 테스트 실패를 유도했다. 위의 코드는 메서드가 모두 실행이 된 후(300 millis를 잠재훈 후)까지 시간을 확인해서..

Java 2021.01.05

[ java ] 자바에서 SHA256으로 hashing 하는 방법

// SHA-256으로 해싱하는 메소드 public static String sha256(String msg) throws NoSuchAlgorithmException { MessageDigest md = MessageDigest.getInstance("SHA-256"); md.update(msg.getBytes()); return bytesToHex(md.digest()); } // 바이트를 헥스값으로 변환한다 public static String bytesToHex(byte[] bytes) { StringBuilder builder = new StringBuilder(); for (byte b: bytes) { builder.append(String.format("%02x", b)); } return..

Java 2020.12.30

[ java ] 삼항 연산자 사용법

연습 1 package algo2; import java.util.Scanner; public class Main { public static void main(String[] args) { String test = "HI"; // test가 HI와 같으면 int num은 1, HI와 같지 않다면 int num은 2 int num = ( test.equals("HI") ? 1 : 2 ); System.out.println("num : " + num ); // test가 hi와 같으면 int num2은 1, hi와 같지 않다면 int num2은 2 int num2 = ( test.equals("hi") ? 1 : 2 ); System.out.println("num2 : " + num2); } } 자바에서 ..

Java 2020.12.13

[ 알고리즘 기초 100제 ] 1번 학생이름 저장 및 검색 (예제 만든자 풀이)

public class Student { private String name; private int id; public Student(String name, int id) { super(); this.name = name; this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } } import java.util.ArrayList; import java.util.Scanner; public class main { public ..

Java 2020.11.30

[ 알고리즘 기초 100제 ] 1번 학생이름 저장 및 검색

package algo; import java.util.ArrayList; import java.util.Scanner; public class Algo { static Scanner scanner = new Scanner(System.in); static ArrayList array = new ArrayList(); public static void main(String[] args) { while (true) { System.out.print("입력해주세요. : "); String command = scanner.nextLine(); if (command.equals("저장")) { doWrite(); } else if (command.equals("검색")) { doResearch(); } else..

Java 2020.11.30

[ Spring Boot ] pom.xml에 필요한 dependency

JAVA에서 JSON 데이터 만들때 필요한 maven com.googlecode.json-simple json-simple 1.1.1 JSP 엔진(JSP 파일을 사용하기 위한? yml에 jsp 바로 연결해주는 mybatis ~ dto ~ jsp 파일로) org.apache.tomcat.embed tomcat-embed-jasper provided JSTL javax.servlet jstl SQL 로거 DriverSpy 노릇 org.bgee.log4jdbc-log4j2 log4jdbc-log4j2-jdbc4.1 1.16 https://mvnrepository.com/artifact/com.google.guava/guava com.google.guava guava 29.0-jre 메일을 발송하기 위한 org..

Java 2020.11.25

[ Java ] 상속 protected 설명

[ Java ] 상속 protected 설명 - 외부에 오픈은 되지 않지만 자식에게 상속은 가능한. - 자식이 자유롭게 변수를 사용할 수 있다. ※ private를 사용해서 getter, setter를 주로 사용했지만 일손을 줄이기 위해서 상속을 해주고 protected로 변수 선언을해서 자식 클래스가 자유롭게 사용할 수 있도록 한다. - private로 한다면 public 메서드로 getter, setter 메서드를 만들어서 사용해야 한다. - protected로 변수를 선언한다면 상속을 받은 자식 클래스는 원하는대로 변수를 사용할 수 있다. - 굳이 getter, setter를 해줄 필요가 없다.

Java 2020.09.29

이클립스 클래스 분할 관리(분리, 각 파일 생성), SQL

* static : 객체 선언하지 않고 바로 사용할 수 있는. * Class.forName(driverName); --> 이 코드는 add(catch)로 코드를 추가해야 한다. [ 이클립스 클래스 분리(분할/파일 별도 관리) ] * 별도의 클래스 파일을 생성할 클래스 위에 커서를 올려놓고 해야 한다. alt + shift + t -> move type to new file click! OR 우클릭 -> refactor -> move type to new file click ! [ MVC 게시판, SQL(DB)연동 구현 참고 사항 ] * DB, table class, 관련 변수 모두 날려버리심. * 이클립스 //TODO list : // TOTO : {임의 입력사항 : 구현해야 함} -> window ->..

Java 2020.06.18

float, double, int, long, byte, short type 범위, Byte

DataType Byte Min Max byte 1byte -128 127 short 2byte -32768 32767 int 4byte -2147483648 2147483647 long 8byte -9223372036854775808 9223372036854775807 float 4byte 1.4E-45 3.4028235E38 double 8byte 4.9E-324 1.7976931348623157E308 실수 타입 2가지 float과 double 중 소수점을 담을 수 있는 범위와 Byte에 차이가 있다. 더 많은 소수점을 담을 수 있는 double이 8byte로 더 큰 것을 확인 할 수 있다.

Java 2020.06.03

서버(server)

서버(server)란? 메인보드와 CPU, RAM 등으로 구성된 컴퓨터이다. 클라이언트에게 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터 프로그램 또는 장치(device)을 말한다. 보통 서버 하면 위와 같은 대형컴퓨터를 떠올리는데, 수- 많은 클라이언트에게 서비스와 정보를 제공 해야하고, 또 수-많은 정보를 저장해 놓아야하는 기업이 아니라면 서버를 위한 하드웨어는 컴퓨터이면 된다. 고성능 고안정성의 컴퓨터, 내 앞의 똥컴, 핸드폰 등 어떤 형태의 컴퓨터이든 정보&서비스 제공 역할을 하는 주체이면 위와 같은 대형 컴퓨터가 아니더라도 '서버컴퓨터'로 불릴 수 있다. 서버는 프린터 제어나 파일 관리 등 네트워크 전체를 감시·제어하기도 하며, 메인프레임이나 공중망을 통한 다른 네트워크과의 연결, 데이터·프로..

컴파일과 컴파일러

@컴파일(compile) 가나다...abc...123...%();등 다양한 문자를 사용하는 사람과 달리 컴퓨터는 0과 1로 구성된 2진코드로만 모든 명령을 이해하고 실행하기에, 컴퓨터에게 명령을 내리기 위해서는 우리의 언어를 컴퓨터가 이해할 수 있도록 번역이 필요하다. 이 번역 과정을 컴파일이라 한다. (프로그래밍언어,고급언어) (기계어) (ex-java) @컴파일러(compiler) java, C언어 등의 특정 프로그래밍 언어로 쓰여있는 문서를 컴퓨터가 이해할 수 있는 기계어,어셈블리어 등 다른 프로그래밍 언어로 번역해 주는 프로그램을 말한다. (a.k.a. 번역기)

Java 2020.05.14

동적할당, 정적할당/가비지컬렉터

-- 동적할당 -- 메모리 동적할당이란, 프로그램을 실행하는 중 필요한 메모리 공간을 할당하는 것을 말한다. 사용이 끝나면 운영체제가 사용 할 수 있도록 반납하고 다음 요구시 재 할당을 받을 수 있다. 동적으로 할당된 메모리 공간은 프로그래머가 직접 해제하거나 가비지 컬렉터에 의해 해제된다. -- 정적할당 -- 메모리 정적할당은, 메모리의 크기가 하드 코딩되어 있기 때문에, 프로그램이 시작 될 때 필요한 메모리의 크기를 예상해서 미리 할당(확보) 한다는 특징을 갖는다. 정적할당된 메모리의 경우 프로그램을 실행하는 도중에는 해제되지 않고 있다가, 프로그램 종료 시 운영체제가 회수해 간다. -- 가비지컬렉터(Garbage Coolector) -- '주소를 잃어버려서 사용할 수 없는 메모리', '정리되지 않은..

Java 2020.05.14

프레임워크.

프레임워크(FrameWork) 프로그램을 만들기 해 지켜야하는 기본 틀, 뼈대 기본 설계, 라이브러리를 제공하여 빠른시간 완성 유지보수 할수있는 환경제공 프레임워크는 어떠한 목적을 달성하기 위해 복잡하게 얽혀있는 문제를 해결하기 위한 구조며, 소프트웨어 개발에 있어 하나의 뼈대 역할을 한다. 원하는 기능 구현에만 집중하여 빠르게 개발 할 수 있도록 기본적으로 필요한 기능을 갖추고 있는 것으로 라이브러리가 포함되어 있다. 프레임워크만으로는 실행되지 않으며 기능 추가를 해야 되고 프레임워크에 의존하여 개발해야 되며 프레임워크가 정의한 규칙을 준수해야 한다. 프레임워크를 자동차에 비교하면은 기본적으로 구성하고있는 자동차 틀(뼈대)을 의미한다. 자동차의 기능을 하는 엔진,타이어, 기타 등(라이브러리)을 붙여야 ..

Java 2020.05.13

[자바의 의존성] 메이븐과 의존성 관리도구

메이븐(Maven)과 의존성 관리도구 메이븐은 의존성 관리도구이다. Apache Maven의 사전적 정의는 다음과 같습니다. Apache Maven은 자바용 프로젝트 관리도구로 Apache Ant의 대안으로 만들어졌다. Apache License로 배포되는 오픈 소스 소프트웨어이다. Java 기반 프로젝트의 라이프사이클 관리(논리적인 작업 흐름)를 자동화 빌드 도구이다. 즉, 자바 소스를 컴파일하고 패키지해서 배치하는 일을 자동화 해주는 것 Maven의 장점 라이브러리의 관리를 매우 용이하게 해준다. 컴파일과 빌드를 동시에 수행, 테스트를 병행하거나 서버 측 *Deploy 자원을 관리할 수 있는 환경을 제공한다. 프로젝트의 작성부터 컴파일, 페트스 등 프로젝트 라이프사이클에 포함되는 각 테스트를 지원해준..

Java 2020.05.13

기계어와 어셈블리언어 고급언어.

프로그램은 인간이 이해 할 수 있는 고급언어와 기계가 이해 할 수 있는 기계어의 번역(컴파일)을 통해 만들어 진다. @고급언어 일반적으로 언급되는 프로그래밍 언어 Java C언어, Python등 추상화 되어 있는언어 고급언어를 컴파일러가 어셈블리어로 번역 ▼ ▽ 컴파일러 ▼ @어셈블리어(assembly language) 컴파일러로 부터 생성된 기계가 이해할 수 있는 형태로 번역된 언어 기계어와 일대일 대응이 되는 낮은 사고방식의 언어 CPU의 종류에 따라 서로 다른 코드를 가짐 어셈블러는 어셈블리어를 기계어로 번역 ▼ ▽ 어셈블러 ▼ @기계어 0과 1로 이루어진, 컴퓨터가 직접 해독하고 실행 할 수 있는 언어 프로그램을 나타내는 가장 낮은 단계의 언어 CPU의 종류에 따라 서로 다른 코드를 가짐(=CPU..

Java 2020.05.13

디자인패턴(ㅇ), 스트래티지 패턴( x )

1. 디자인패턴 (디자인 패턴은 소프트웨어 공학론 안의 좋은 코드를 설계하기 위한 일종의 설계 디자인 방법론) 디자인 패턴은 객체지향 언어에서 클래스와 클래스의 메서드를 사용하는 패턴, 즉 특정 의도를 가지는 방법을 의미한다. 코딩을 혼자 하는 경우는 드물며 보통 다른 개발자와 함께 개발을 하기 때문에 내가 작성한 코드가 다른 사람이 알아볼 수 없으면 제법 곤란하지 않을 수가 없다. 그러므로 작성 코드는 최대한 간결하고 모두가 알아 볼 수 있는 내용으로 작성해야 한다. 1). 코딩이 명확하고 단순하며, 2). 모듈( class나 function 등 )은 한 가지 기능만 하도록 작게 세분화 시킬 수 있으며 3). 재사용성이 높고 4). 유지 보수가 쉬우며 5). 리소스의 낭비가 없는지 숙지하여 < 디자인패..

Java 2020.05.13
728x90
반응형
LIST