GO 언어가 실행되기 까지 GO언어는 우선 강타입을 가지는 정적언어이다. 기본적으로 컴파일을 가지고 있으며, 타입 검사에 있어 엄격한 언어이다. GO언어가 실행되기 까지의 과정은 아래와 같다. 폴더 생성 .go파일 생성 및 작성 Go모듈 빌드 빌드 실행 폴더 생성 GO언어에서 모든 코드는 '패키지 단위'로 작성된다. 같은 폴더에 속한 .go파일은 모두 같은 패키지에 포함되고, 패키지 명으로 폴더명을 사용한다. .go파일 생성 및 작성 Go언어의 코드는 .go라는 확장자로 끝나야 한다. Go모듈 생성 1.16버전부터 모든 Go코드는 빌드 전에 모듈을 생성해야한다. go mod init (프로젝트 / 모듈명) 명령어를 이용해 모듈을 생성해 준다. 모듈을 생성하면 go.mod라는 파일이 생성되는데, 이 파일에..
Language
* 모든 설명은 M1맥북 기준으로 설명이 이루어집니다. 개발환경 구축하기 GO언어 개발환경을 구축해봅시다. https://go.dev/dl/ Downloads - The Go Programming Language Downloads After downloading a binary release suitable for your system, please follow the installation instructions. If you are building from source, follow the source installation instructions. See the release history for more information about Go releases go.dev 이곳을 들어가 최신 버전의 ..
Collection Framework란 데이터 군을 저장하는 클래스들을 표준화한 설계를 의미한다. 컬렉션은 다수의 데이터를 의미하고, 프레임워크는 표준화된 프로그래밍 방식을 의미한다. 컬렉션 프레임 워크에서는 컬렉션데이터 그룹을 크게 3가지 타입이 존재한다 인식하고, 각 컬레션을 다루는데 필요한 기능을 가진 3개의 인터페이스를 정의한다. 여기서 세가지는 아래와 같다. List Set Map 이중 인터페이스 List,Set의 공통적인 부분을 뽑아 Collection을 추가로 정의하였다. Map은 공통적인 면이 아예 없어 독립적 인터페이스이다. 컬렉션데이터 그룹의 각각의 특징은 아래와 같다. List : 데이터 중복을 허용하고, 저장 순서가 유지된다. Set : 데이터 중복을 허용하지 않고, 저장 순서가 유..
예외와 에러의 차이점 에러(Error) : 프로그램 코드에 의해서 수습될 수 없는 심각한 오류. StackOverflow에러나 OutOfMemory오류와 같이 발생하면 복구가 불가능한 심각한 오류이다 예외(Exception) : 발생하더라도 수습이 되는 덜 심각한 오류. 예외는 발생하더라도 적절한 코드를 작성해 비정상적 종료를 막을 수 있다. 자바 예외 클래스 계층 구조 Exception클래스도 기본적으로 Object클래스의 자손클래스이다. 또한 예외 클래스는 두 그룹으로 나눌 수 있다 Exception클래스와 그 자손들(RuntimeException, 이의 자손 제외) : 사용자의 실수와 같은 외적인 요인에 의해 발생되는 예외를의미한다. 존재하지 않는 파일을 입력한다거나(FileNotFoundExcep..
상속?? 포함관계?? 클래스를 작성하는데에 있어서 상속관계를 맺어줄 것인지, 포함관계를 맺어줄것인지를 고민해야한다. //상속 package Interface2; class point{ private int x; private int y; } class Circle extends point{ } public class inheritex { public static void main(String[] args){ } } //포함관계 package Interface2; class point{ private int x; private int y; } class Circle{ point p = new point(); } public class inheritex { public static void main(Stri..
내부클래스란 내부 클래스는 클래스 내에 선언되는 클래스 형태이다. 내부 클래스의 장점은 아래 두가지로 볼 수 있다. 내부 클래스에서 외부클래스의 멤버들을 쉽게 접근할 수 있다 코드의 복잡성을 줄 일 수 있다. package Interface2; class A{ class B{ } } 내부 클래스의 종류, 특징 내부 클래스종류는 변수 선언위치에 따른 종류와 동일하다. 종류와 특징은 아래와 같다. 내부클래스 특징 인스턴스 클래스 멤버변수 선언위치와 동일한 위치에 선언, 인스턴스 멤버처럼 다뤄진다. 주로 외부 클래스의 인스턴스 멤버들과 관련된 작업에 사용 스태틱 클래스 static멤버처럼 다루어진다. static메소드에서 사용될 목적으로 사용 지역 클래스 외부클래스 메소드나, 초기화 블록 안에 선언, 선언된 ..
인터페이스란? 인터페이스는 일종의 추상클래스이다. 추상클래스처럼 추상 메소드를 갖지만, 추상화 정도가 높아, 추상 클래스와 달리, 몸통을 갖춘 일반 메소드 또는 멤버변수를 구성원으로 가질 수 없다. 오직 추상 메소드와 상수만 멤버로 가질 수 있다. 추상 클래스를 미완성 설계도로 본다면, 인터페이스는 기본 설계도라고 할 수 있다. 인터페이스 작성하기 인터페이스 작성은 클래스와 동일하다. 단, 키워드로 class가 아닌, interface를 작성한다. 인터페이스의 멤버들에는 일반적인 클래스, 멤버들과 달리 제약사항이 있다. 모든 멤버변수는 public static final이어야 하며(인터페이스는 멤버변수로 상수만 가질 수 있다) 이를 생략할 수 있다. 모든 메소드는 public abstract이어야하며, ..
추상클래스 추상클래스란, 미완성 설계도에 비유할 수 있다. 이는 단지, 미완성 메소드(추상메소드)를 포함하고 있다는 의미이다. 추상클래스 자체는 클래스로서 역할은 못한다. 하지만, 새로운 클래스를 만들때 바탕이 되는 클래스이다. 기본적인 형태는 이와같이 abstract를 붙여 클래스를 선언해 주면 된다.. abstract class test1{ } 추상클래스는 일반 클래스와 다르지 않다 생성자도 있으며, 멤버변수, 메소드도 가질 수 있다. 추상 메소드 추상 메소드는 선언부만 작성하고, 구현부는 작성하지 않은채로 남겨둔 것이다. 실제 수행할 내용을 작성한게 아니기 때문에 미완성 메소드인것이다. 이를 만든 이유는, 상속받는 클래스에서 내용이 달라질 수 있기 때문이다. 선언부만 작성하고, 주석으로 어떤부분을 ..
다형성 다형성은 객체지향의 특징중 하나이다(객체지향의 특징 : 캡슐화, 다형성, 상속성, 동적바인딩, 추상화). 다형성이란, 여러가지 형태를 가질 수 있는 능력을 의미한다. 자바에서 다형성이란, 한 타입의 참조변수로 여러 타입 객체를 참조하는것을 의미한다. 좀 더 자세한 의미로는 조상클래스 타입의 참조변수로 자손타입 인스턴스를 참조할 수 있다. 아래코드를 예시로 들어보자 class tv{ private boolean power; private int channel; tv(int channel){ this.channel = channel; } public boolean getPower(){ return this.power; } public int getChannel(){ return this.channel..
Selenium을 이용해 chrominum web driver를 실행시키니까 ''chromedriver'는 Apple에서 악성 소프트웨어가 있는지 확인할 수 없기 때문에 열 수 없습니다' 라는 문구가 뜨면서 중간에 코드가 멈춘다. 이 오류가 나는 경우에는 chromedriver가 있는 디렉토리에서 아래 명령어를 입력해 주면 된다. 단 이 명령어는 해당 디렉토리에만 적용되므로, 만약 다른 디렉토리에 새로 chromedriver를 이동시켜 실행한다고 하면 해당 디렉토리에 가서 다시 명령어를 입력해 주어야 한다. xattr -d com.apple.quarantine chromedriver
제어자는 클래스, 변수 또는 메소드 선언부에 함께 사용하여 의미를 부여해주는 역할을 한다 크게 두가지로 나누어 진다. 접근제어자 : public, protected, default, private 일반 제어자 : static, final, abstract, native,synchronized,... 제어자는 클래스나 멤버변수, 메소드에 주로 사용되며, 하나의 대상에 대해 여러 제어자를 조합해 사용할 수 있다. 단 접근 제어자는 한번에 네가지 중 하나만 선택해 사용할 수 있다. 대표적인 일반 제어자 1. static : 멤버변수, 초기화블록 , 메소드 static은 클래스의, 공통적인 이라는 의미를 가지고 있다. 이는 클래스 변수 혹은 클래스 메소드를 선언할 때 사용한다. 그리고 한가지 더, 초기화 블록..
super은 자손 클래스에서 조상 클래스로부터 상속받은 멤버를 참조하는데 사용되는 참조변수이다. this가 자신이 속한 인스턴스를 가리키는 것처럼 super는 자신의 부모 클래스에 대한 참조를 하는 변수이다. super또한 static으로 선언된 클래스 변수 / 메소드에 대해서는 사용할 수 없으며 인스턴스 변수 / 메소드에 대해서만 사용이 가능하다. class Parent1{ int x = 20; int y = 30; } class Child1 extends Parent1{ int y = 10; void method(){ System.out.println("x = " + x); System.out.println("this.x = " + this.x); System.out.println("super.x =..