본문 바로가기
반응형

Language99

코딩 테스트 - 프래그래머스 코딩 테스트를 풀어보자:) https://programmers.co.kr/ 문자열 출력하기 난이도 0레벨 ㅋㅋ 아래처럼 소스를 짜고! 코드를 실행! 와우! 점수를 준다 ㅋㅋㅋ 굿~최대 점수가 3점인가?? 14점도 있었다..ㅎㅎ 다른 사람의 풀이도 볼수 가 있다! ㅋㅋ 역시 코딩에 정답이 없어! 여러가지 답이 나올수 있다! 대학교때 생각이 물씬 난다 ㅎㅎ 다른소스를 보니 a.length()가 중복이라 변수로 처리했다. 굿! 앞으로 종종 풀어보자:) 2023. 7. 18.
Producer-Consumer 패턴 더보기 Runnable과 Callable의 차이점은? acet.pe.kr/819 > 상황 성능이 좋지 않은 부분이 발생하여 그 부분을 해소하기 위해 멀티 쓰레드로 처리하려고 했다. 그런데 멀티 쓰레드 처리 후 나오는 리스트형 데이터가 재사용 되어지는 문제가 발생. > 결론 생산자-소비자 패턴을 사용하기로 함. 생상자 - 멀티쓰레드 처리 및 리스트형 데이터를 블라킹 큐에 넣어줌. 넣기만 함! 소비자 - BlockingQueue에 넣어진 것들을 사용함. 사용만 함! > 간단한 프로젝트 만들어서 테스트 함. @SpringBootTest class DemoApplicationTests { @Test void producerAndConsumerMethodTest() { BlockingQueue q = new Li.. 2021. 3. 18.
Runnable과 Callable의 차이는? Runnable과 Callable의 차이는? - Runnable : 객체와 Exception을 발생 시키지 않음. - Callable : 특정 타입의 객체와 Exception을 발생 시킴. ㅇㅋ! 2021. 3. 18.
AtomicInteger&LongAdder&Thread-Safe 자바에서 Thread-Safe 즉, 데이터에 대해 동시 접근을 제어하기 위해 Lock( 2020/11/24 - [Language/Java] - Java thread에서의 Lock의 종류?) 을 사용한다. 그런데 이 데이터가 그냥 값을 읽거나 업데이트 정도의 기능일 경우에는 Lock보다는 원자성(Atomic) 변수가 더 성능도 좋고 효율적이다. 아래는 Thread-Safe 이야기 하다가 나옴 ㅋㅋ 오늘 포스팅은 AtomicInteger와 LongAdder에 대해 알아보고자 한다. LongAdder의 경우 실제 서비스에서 사용하고 있다. 위의 사진에서 보면 여러가지 정보가 있는데 하나씩 살펴보면..! int a = 0; thread-1 thread-2 a+=1 a+=1 의 경우 CPU에 의해 처리가 되는데 .. 2020. 12. 1.
Java thread에서의 Lock의 종류? 자바에서 2개의 Lock이 있는데 첫번째는 자바에서 thread간 동기화를 위해 synchronized 키워드를 사용하는것을 사용 합니다. 이런 synchronized 키워드를 사용하는 lock을 Intrinsic Lock 또는 Built-in Lock이라고 한다. // Mutual Exclusion public synchroized void intrinsicLockfunc(){ ... } // Wait synchronized(this){ ... this.wait(); ... } // signal synchronized(this){ ... this.notify(); ... } 두번째는 Java 1.5에서 java.util.concurrent.locks 패키지를 통해 제공되는 Explicit Lock이 있.. 2020. 11. 24.
http dump log.WithField("dump=", "start").Debug("auth start") dump, err := httputil.DumpResponse(resp, true) if err != nil { log.Fatal(err) } log.WithField("dump??", string(dump[:])).Debug("auth dump") // fmt.Printf("DUMP => %q", dump) 참고 : https://golang.org/pkg/net/http/httputil/ 2018. 8. 30.
golang 채널에 대해 알아보자! golang 채널이란?1. 데이터를 주고 받는 통로. 2. make를 통해 미리 생성. 3. 채널 연산자 별도의 lock을 걸지 않고 데이터를 동기화 하는데 사용 한다. 채널 만들기1. ch := make(chan int) // 정수형 채널이 생성. 채널 송수신1. 채널로 데이터를 보낼 때 채널 2018. 5. 11.
Error parsing HTTP request header 에러 갑자기 헤더 오류가 나서 뭔가 싶었는데 알고 봤더니 앞단과 뒷단간에 통신할 때 Request가 Bad였던것!그래서 아래와 같이 오류가 떨어짐. 수정사항으로는 앞단(클라이언트, 프론트) encodeURL로 뒷단(서버)에서는 decoode를 수행.특이사항으로는 로컬에서는 잘되어짐. 서버단에서 버그 발생.톰캣 버전에 따라서 달라진다는것을 알수 있었음. -_-;;톰캣!!~~ - 끝 - 2018. 4. 5.
용어 - multiplexer // Mux is a simple HTTP route multiplexer that parses a request path, // records any URL params, and executes an end handler. It implements // the http.Handler interface and is friendly with the standard library. // // Mux is designed to be fast, minimal and offer a powerful API for building // modular and composable HTTP services with a large set of handlers. It's // particularly useful for wri.. 2018. 3. 16.
golang code 구조 살펴보기 보호되어 있는 글 입니다. 2018. 3. 15.
golang + github Permanently added the RSA host key Permanently added the RSA host key공개키 에러인데 ..github서버에 파일을 push하려고 보니 현재 인증된게 하나도 없는 상태이다. 공개키를 github에 등록을 해주어야한다. 아래처럼 우선 공개키가 있는지 확인해보자.공개키가 없다면..2016/08/29 - [OS/Linux&Unix] - SSH 유용정보! github에 id_rsa.pub 의 내용을 넣으면 된다. 잘 push 되었음을 알수가 있다. - 끝 - 2018. 3. 5.
golang + github ignore setting github에 push하는데 있어서 무시해야하는 파일들은 무시하도록 설정한다. 아래 링크 참고!2016/03/23 - [OpenSource/Spring Boot] - ace-t의 Spring Boot 따라잡기(기본 - SourceTree에 연결 및 Repository에 올리기) https://www.gitignore.io/에서 go와 intelij+imi를 선택한다. 복사 후 아래의 파일에 저장 시키면 된다. 다시 github을 열었을 때 imi파일들은 사라지고 아래의 커밋대상만 보이면 성공! - 끝 - 2018. 3. 5.
기초) golang project 만들어보기! 잘못된 예 잘된 예 아래와 같이 github.com/ace-t/golangArch로 만드는데 이렇게 하는 이유는 golang은 라이브러리 자체가 github에 올려서 공유하는 그런 형태이다.그러므로 우리도 자기자신의 github url형식으로 프로젝트를 만들어보자!(글쓴이는 golang IDE를 사용한다.) - 끝 - 2018. 3. 5.
golang setting 참조 : golang 셋팅Go 설치https://golang.org/dl/ B. goland 사용 workspace에는 src와 더불어 bin, pkg 서브 폴더를 만들어준다. go env를 통해 GOROOT와 GOPATH를 확인한다. GoLand를 사용이제 재미난 코딩과 함께~아키텍처구조를 잡아보자^0^ 2017/04/26 - [Language/go lang] - go land에서 formatting 설정하기위의 프로젝트가 조금 잘못 만든거 같다.프로젝트는 아래의 링크를 보도록 하자.2018/03/05 - [Language/go lang] - 기초) golang project 만들어보기! 2018. 3. 2.
chi package HTTP Service를 구현할 때 사용한다.Go 1.7이나 그 이상에서 사용이 가능하다.package main import ( "net/http" "github.com/go-chi/chi" "github.com/go-chi/chi/middleware" ) func main() { r := chi.NewRouter() r.Use(middleware.Logger) r.Use(middleware.Recoverer) r.Get("/", func(w http.ResponseWriter, r *http.Request) { w.Write([]byte("root.")) }) http.ListenAndServe(":3333", r) }여러가지 함수들이 다양하기 때문에 가지고 놀아봐야 제대로 알듯 하다.chi packa.. 2018. 3. 2.
go lang song? zz Go를 홍보하는? 노래가 있다(Write in Go) (자막켜기 하면 자막 있음)퍼옴 : https://www.youtube.com/watch?v=LJvEIjRBSDA재밌네 ㅋㅋ 2018. 2. 20.
golang factory golang factory? [ 호출부]json.NewDecoder(reader).Decode(&msg) [Decode]func (dec *Decoder) Decode(v interface{}) error { if dec.err != nil { return dec.err } if err := dec.tokenPrepareForDecode(); err != nil { return err } if !dec.tokenValueAllowed() { return &SyntaxError{msg: "not at beginning of value"} } // Read whole value into buffer. n, err := dec.readValue() if err != nil { return err } dec.d.. 2018. 2. 13.
golang - Package json import "encoding/json"json 패키지는 RFC 4627에 정의 된 JSON의 인코딩 및 디코딩을 구현합니다. JSON 및 Go 값 간의 매핑은 marshal 및 unmarshal 함수에 대한 설명서에 설명되어 있습니다.func Marshal(v interface{}) ([]byte, error)Marshal은 v의 JSON 인코딩을 반환합니다. Marshal은 값 v를 재귀적으로 호출한다. 발생한 값이 Marshal 인터페이스를 구현하고 nil 포인터가 아닌 경우 MarshalJSON 메서드를 호출하여 JSON을 생성합니다. MarshalJSON 메서드가 없지만 값이 encoding.TextMarshaler를 대신 구현하면 Marshal은 해당 MarshalText 메서드를 호출하고 결.. 2018. 2. 9.
valid 시 non zero value required 오류 func checkRequired(v reflect.Value, t reflect.StructField, options tagOptionsMap) (bool, error) { if requiredOption, isRequired := options["required"]; isRequired { if len(requiredOption) > 0 { return false, Error{t.Name, fmt.Errorf(requiredOption), true} } return false, Error{t.Name, fmt.Errorf("non zero value required"), false} } else if _, isOptional := options["optional"]; fieldsRequiredByDe.. 2018. 2. 2.
Review java 말고 golanginput / output은 동일하게 / export되지 않는 함수면 소문자로 SetValue (X) setValue(O)acet.EntityInfo = setValue(acet.EntityInfo)interface conversionswitch문을 사용할 수 있다. 해당 case의 타입이 들어오면 맞는 case 구문을 타게 된다.ex) Body가 인터페이스 형태 switch acet.Body.(type) {case *xxx.xxxx:case *aaa.xxxx:default : } 2017. 10. 24.
test code..반성! java나 go lang이나 테스트 코드가 있다.테스트 주도 개발이 좋다고 책에서 많이 보았다. 하지만 정작 그러한 책들을 보았음에도 불구하고..간만에 코드를 짜게 되었는데..(그동안 서버 발주부터 셋팅, ACL 신청 등등 이러한 일들을 했다.)테스트 코드를 짜야겠다는 생각을 하지 않은채 코드를 짰고, 테스트도 리퀘스트 부분만 잘들어가는지 대충 확인하고 다되었다고 PR을 날렸다.리뷰의 결과는 창피했다.왜 나는 꼼꼼하게 테스트 코드를 짜면서 테스트를 하지 않았을까?당연..테스트 코드를 짜기가 부담스러웠나보다..또는 단순하게만 테스트 코드를 짜왔을지도 모른다.막상 하려고보니..멍~하다. 자..그럼 이제 무엇을 해야할까?1) 앞으로 계속 두려워하며 쫄아서 피할것인가? OR2) 두려움을 극복하려고 노력할 것인가.. 2017. 10. 13.
반응형