본문 바로가기
반응형

전체 글195

[Spring] IoC/DI 란? IoC(Inversion Of Control, 제어의 역전)는 간단히 프로그램의 제어 흐름 구조가 뒤바뀌는 것이라고 할 수 있다. 즉, 모든 종류의 작업을 사용하는 쪽에서 제어하는 구조를 거꾸로 뒤집는 것이다. 오브젝트가 자신이 사용 할 오브젝트를 스스로 선택하지도 생성하지도 않으며, 자신도 어떻게 만들어지고 어디서 사용되는지를 알 수 없다. 모든 제어 권한을 자신이 아닌 다른 대상에게 위임하기 때문이다. 제어권을 상위 템플릿 메소드에 넘기고 자신은 필요할 때 호출되어 사용되도록 한다는 개념이다. IoC가 적용된 대표적인 기술은 프레임워크이다. 참고로, 프레임워크는 내가 작성한 코드를 제어하고 대신 실행한다. 만약 내가 작성한 코드가 직접 제어의 흐름을 담당한다면 그건 라이브러리이다. 스프링 프레임워크를.. 2023. 3. 7.
인텔리제이 github insufficient scopes granted to token 인텔리제이서 git push 를 하려고 하니(터미널 x) insufficient scopes granted to token 메서지가 뜨면서 token을 입력창이 활성화 되는데 저장해둔 token을 아무리 입력해도 토큰이 틀렸다고 나온다. 그래서 어쩔 수 없이 github에서 새로운 발급받아서 다시 등록하니 잘 된다. 내 프로필 -> settings -> Developer settings -> Personal access tokens -> Tokens (classic) 만약 새로 발급 받았는데도 안 되는 경우, 토근 select scopes에서 repo, admin:org, aist, user 를 체크해준 뒤 다시 해보는 걸 권장한다. 2023. 3. 7.
[fatal] : 현재 브랜치 main에 업스트림 브랜치가 없습니다. 인텔리제이에서 소스를 변경하고 git push 명령어로 소스를 push 하려고 하니 아래와 같은 메세지가 보여졌다. 현재 브랜치를 푸시하고 해당 리모트를 업스트림으로 지정하려면 다음과 같이 하십시오. git push --set-upstream origin main 얼마전에 소스트리를 설치하면서 키체인 알림이 계속 떠서 이것저것 손대다가 키체인을 전부 날렸다.ㅜ 키체인 깃 정보도 다 날라갔는데 뭔가 다 꼬인 느낌이다. git log를 확인해보니 아래와 같이 나온다. * c7e124ac1 (HEAD -> main) 2nd * 49c23b0d8 (feature-branch) init origin이 사라졌다. 그래서 git push --set-upstream origin main 명령어를 입력하라고 경고가 뜬거.. 2023. 3. 6.
동시성(Concurrency)과 병렬성(Parallelism) ConcurrentHashMap을 공부하다가 동시성이 정확히 무엇인지 찾아보게 됐다. 동시성을 찾으면 동시성 vs 병렬성이 검색된다. Concurrency : [컴퓨터/통신] 동시 실행 Parallelism : 병행, 병렬 영어 단어를 찾아보면 위와 같이 나온다. 동시성 하나의 코어에서 여러 스레드가 번갈아가며 실행(동시에 실행되는 것 같이 보이는 것) / 논리적인 개념 병렬성 멀티 코어에서 여러 스레드를 동시에 실행(실제로 동시에 여러 작업이 처리되는 것) / 물리적인 개념 즉, 동시성은 동시에 실행되는 것처럼 보이지만 실제로는 CPU가 시간을 분할해 적절하게 context switching을 하는 것이다. 병렬성은 여러 작업을 다른 코어, 다른 프로세스 등에서 동시에 실행하는 것이다. Concurre.. 2023. 3. 5.
[GitHub] 공동 작업자 추가하기 1. 저장소 > Settings > Collaborators > Add people 2. 작업자의 메일이나 github 계정을 입력한 후 검색 결과를 선택 한 후 'select a collaborator above'를 선택한다. 3. 작업자한테 메일이 가는데, 작업자는 View invitation을 클릭하면 된다. 2023. 3. 4.
[인텔리제이] git ignore 설정하기 1. shift 를 빠르게 두 번 눌러준다. > 검색창에서 plugin을 입력한 후 검색 결과에서 플러그인을 클릭한다.2. 플러그인에서 igonre을 검색한다. 이 때 마켓플레이스에서 검색해야 나온다. > 설치 후 확인을 클릭한다.3. 설치 후 프로젝트 우클릭 > 새로만들기 > .ignore File(설치 시 보이는 메뉴이다.) > .gitignore FIle을 선택한다. 4. 여러가지를 선택 할 수 있는데 User templeates > Exaple user template 을 선택하면 해당 파일이 생성된다. 생성 후 .ignore 파일에 직접 ignore해야 될 내용을 입력해도 되고, 선택 메뉴에서 원하는 걸 선택한 후 생성하면 된다. 조상님LOTTO - Google Play 앱무료로 로또 당첨 확률.. 2023. 3. 4.
[GitHub] 인텔리제이에서 GitHub 연결해서 프로젝트 열기 1. 인텔리제이 실행 시 프로젝트 선택 화면이 뜨면 우측 상단에 'VCS에서 받기 버튼'을 클릭한다. 2. 좌측에서 'GitHub'를 클릭한다. (나 같은 경우 이미 계정이 연결되어 있어서 계정 아이디가 보이는데, 계정이 연결되어 있지 않은 경우 계정 연결화면이 뜨는데 계정을 메일, 패스워드를 입력해서 계정을 연결하면 된다.) 계정이 연결되면 계정에 등록된 github Repository 리스트가 나온다. 불러오고자 하는 Repository를 선택한 다음 해당 플젝을 저장한 경로를 설정하고 '복제' 버튼을 눌러준다. 4. 경고가 나오면 '프로젝트 신뢰' 를 클릭하면 프로젝트가 열리면서 프로젝트 소스가 checkout 된다. 2023. 3. 4.
[객체지향설계] SOLID 원칙 SRP : 단일 책임 원칙(Single responsibility principle) 한 클래스는 하나의 책임만 가져야 한다. 하나의 책임이란 말은 모호하다. 판단의 기준은 변경이다. 즉, 변경이 있을 때 파급 효과가 적을수록 단일 책임 원칙을 잘 따른 것이다. 범위를 너무 작게하면 단위가 너무 쪼개져서 문제고, 너무 크게 하면 책임이 커져서 문제다. OCP : 개방-폐쇄 원칙(Open/closed principle) 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다. 확장을 하려면 당연히 코드 변경이 필요한데, 이해하기 힘들수 있다. 자주 변하는 기능을 추상화함으로써 기존 코드를 수정하지 않고도 기능을 확장할 수 있어야 한다. public class MemberService { //pr.. 2023. 3. 3.
[자바] java.util.function 패키지 일반적으로 자주 쓰이는 형식의 메서드를 함수형 인터페이스로 미리 정의해 놓은게 java.util.function 패키지이다. 인터페이스에 정의된 메서드 이름도 통일되고, 재사용성이나 유지보수 측면에서 매번 새로운 함수형 인터페이스를 정의하지 말고, 가능하면 이 패키지의 인터페이스를 활용하는 것이 좋다. 기본 함수형 인터페이스 java.lang.Runnable void run() 매개변수도 없고, 반환값도 없음. Supplier T get() -> T 매개변수는 없고, 반환값만 있음. Spplier : 공급자 - 받는거 없이 주기만 한다. Consumer T -> void accept(T t) Supplier와 반대로 매개변수만 있고, 반환값이 없다. Consumer : 소비자 - 받기만 하고 주는게 없다.. 2023. 3. 3.
반응형