Language
-
-
java : (링크) AES-256 암호화Language/Java 2023. 12. 18. 00:01
https://mogoh-developer.tistory.com/27 Cipher : java에서 암호화/복호화 구현 객체 https://scshim.tistory.com/305 초기화할 때 init() 메서드를 호출하는데, 인자로 opmode, key(certificate), params, 그리고 random을 요구한다. 여기서 중요한 것은 AlgorithmParameters 타입의 params 인자이다. 이 인스턴스는 피드백 모드의 IV 값, PBS 알고리즘의 salt와 iteration count 값 등을 저장하는 용도로 사용된다. 이 값들은 ENCRYPTION_MODE의 Cipher를 초기화하는 경우, 필수 요구사항이 아니다. ScureRandom에서 랜덤하게 생성하여 암호화 과정에 사용할 수 있..
-
Go : init() 함수Language/고 Go 2023. 12. 17. 00:01
출처 : https://inf.run/tfefs 프로그램 최초 동작 시 가장 먼저 실행되는 함수로 init() 함수를 이용하여 프로그램의 전반적인 설정을 구성하는 작업을 수행할 수 있다. 특징 main() 함수보다 먼저 실행 된다. 가장 먼저 초기화 되는 작업 작성 시 유용하다. 모든 파일에 init() 함수가 있고 모든 패키지 호출 레벨이 같은 경우 패키지 이름 -> 파일 이름의 알파벳 순서로 init()을 실행한다. 하나의 파일에서 init() 메서드의 선언 갯수는 여러개일 수 있다. 하지만 이런 경우는 거의 사용하지 않는다. package section4 import "fmt" func init() { fmt.Println("Section4 Package - init1 - 1 go go") } fu..
-
Go : 라이브러리 import 시 Alias 별칭 사용하기Language/고 Go 2023. 12. 17. 00:01
출처 : https://inf.run/tfefs Go 언어는 소스 코드 저장 시 사용하지 않은 라이브러리가 import 선언되어있을 때 컴파일러가 자동으로 삭제해버린다. 이를 방지하기 위해서는 _ 문자를 해당 라이브러리 선언문에 별칭으로 작성해주면 된다. package section4 import ( "fmt" _ "section4/lib" check100Up "section4/lib2" ) func Access2() { var num = 109 fmt.Println(num, "> 100 :", check100Up.CheckNum1(num)) fmt.Println(num, "> 1000 :", check100Up.CheckNum2(num)) }
-
Go : 접근 제어 설정Language/고 Go 2023. 12. 17. 00:01
출처 : https://inf.run/tfefs Go 언어에서는 변수, 상수, 함수, 메서드, 구조체 등 식별자에 대한 접근 제어 설정을 식별자의 명명 방법으로 설정할 수 있다. 소문자로 시작 : private 대문자로 시작 : public 다음과 같이 2개의 함수를 lib2 패키지에 정의했을 때 package lib2 func CheckNum1(c int) bool { return c > 100 } func checkNum2(c int) bool { return c > 1000 } 외부 패키지 함수에서 lib2 패키지를 import 하여 호출 가능한 함수는 public인 CheckNum1() 뿐이다. lib2 패키지 안의 다른 함수에서는 private인 checkNum1() 함수와 public인 Che..
-
Go : packageLanguage/고 Go 2023. 12. 17. 00:01
출처 : https://inf.run/tfefs 패키지 패키지 선언으로 코드 구조화(모듈화) 및 재사용 가능 응집도는 높이고, 결합도는 느슨하게 해야 유지보수가 쉽고 가독성이 좋으며 재사용이 가능한 클린 코드가 된다. 그렇기 때문에 다른 언어와 마찬가지로 go 또한 패키지 단위의 독립적이고 작은 단위로 개발한다. 패키지 이름 = 디렉토리 이름 main 함수가 들어있지 않은 소스 파일들은 디렉토리 명을 패키지 명으로 사용한다. package main main 패키지는 특별하게 인식한다. 컴파일러는 main 패키지를 공유 라이브러리가 아니라, 프로그램의 시작점 start point로 인식한다. main 함수는 무조건 main 패키지에서 작성되어야 하며, 이외의 파일들은 자신이 소속된 폴더 이름을 패키지 명으..
-
Go : Switch 조건문Language/고 Go 2023. 12. 17. 00:01
출처 : https://inf.run/tfefs 구조 switch Expression { case condition: // code case condition: // code default: // code } 특징 1. switch 절에 Expression 생략 가능 특징 2. case 절에 expression 사용 가능 특징 3. switch와 case의 들여쓰기 깊이가 같아야 함 예제 1 func main() { a := -7 switch { // expression 생략 case a 0: fmt.Println(a, "은(는) 양수") } } 예제 2 공식문서에 의하면 go 에서 switch문에 사용할 변수를 생성할 때는 예제1 처럼 switch문 밖에서 선언하는것 보다 아래와 같이 Expressio..
-
Go : if 조건문Language/고 Go 2023. 12. 17. 00:01
출처 : https://inf.run/tfefs Go 에서의 if 조건문은 다음의 특징을 갖는다. if 문의 조건절 작성 시 소괄호가 없음 컬리 브레이스 시작 문자 {를 조건절 옆에 작성해야 한다. 조건절의 결과가 정확하게 true, false인 식만 사용할 수 있다. 자동 형변환이 불가능하기 때문에 1 또는 0을 반환하는 식은 사용할 수 없음 if문 예시 1 package main import "fmt" func main() { a := 10 if a > 100 { fmt.Println("a는 100 보다 크다.") } else if a > 50 { fmt.Println("a는 50 보다 크다.") } else { fmt.Println("a는 50 보다 작거나 같다.") } if b := 1; b
-
Go : 열거형 상수Language/고 Go 2023. 12. 17. 00:01
출처 : https://inf.run/tfefs 상수를 이용할 때 java에서의 enum 처럼 열거된 상수들에 0부터 시작하는 번호를 붙여주는 iota 라는 것이 있다. iota의 사용 예시는 다음과 같다. iota를 사용하지 않고 상수만 선언해서 사용할 경우 package main import "fmt" function main() { const ( Jan = 1 Feb = 2 Mar = 3 Apr = 4 May = 5 Jun = 6 ) fmt.Println(Jan) fmt.Println(Feb) fmt.Println(Mar) fmt.Println(Apr) fmt.Println(May) fmt.Println(Jun) } 출력 값 위의 예제에 iota를 적용 package main import "fmt"..