Optional을 알기 위해선 NullPointerException을 알아야 한다 ! 모든 개발자들이 무서워하는 에러 중 하나인 NullPointerException..... 직역하면 알수있는데, 말 그대로 Null값을 참조하기에 예외를 발생시킨것이다 ! 아래 코드와 같이 Null일수 있는 데이터가 있다면, 해당 값을 애초에 초기화를 시켜놓거나 Null인지 아닌지 검사를 해줘야 한다. public void nullException(){ String name = ""; name = makeName(name);// 메소드를 통해 값을 초기화 했지만 Null일수 있다. name.equals("Java"); // Null값을 가지고 문자열과 비교를 하기에 예외가 발생한다. } public void notNull..
터미널을 사용하여 깃허브에 Repository 올리기 전혀 어렵지 않습니다! 본 글에서는 터미널을 활용하여 올려보겠습니다. 왠만하면 처음에는 툴을 사용하기 보다는 직접 명령어를 통한 학습이 좋습니다 ! 1. Github Repository 생성 깃허브에 로그인을 한 다음에 본인 프로필로 들어오게 되면 상단에 Repository가 떠있을 겁니다. 클릭해주시면 위와 같은 화면이 뜨게 되며, 우측 상단쪽 New를 클릭해줍니다. Repository name : 말 그대로 저장소의 이름입니다! 본인 마음대로 정하시면 됩니다. Description : 해당 저장소에 대한 간략한 설명을 쓸 수 있습니다. Public, Private : 공개, 비공개 여부입니다. 추후에 Setting에서 다시 설정할 수 있습니다. A..
하나도 어려운게 없습니다. 천천히 따라와보세요! 1. HomeBrew로 설치하기 ! 제일 간단한 방법이며, 제일 권장드립니다. 어차피 깃허브 공식페이지에서도 HomeBrew로 설치하라고 안내해줍니다 ^^ 깃 홈페이지 : https://git-scm.com/download/mac Git - Downloading Package Download for macOS There are several options for installing Git on macOS. Note that any non-source distributions are provided by third parties, and may not be up to date with the latest source release. Homebrew Insta..
세가지 Annotation 모두 목적은 똑같다. controller, service, repository의 어노테이션은 모두 컴포넌트 스캔이 가능하게 만드는 수단입니다. 여기서 말하는 컴포넌트 스캔이란 @Component 와 연관이 있는데 해당 어노테이션이 붙으면 스프링이 어노테이션을 분석하고 자동으로 Bean클래스를 생성 해줍니다. Spring 에 대해서 공부해보신 분들은 잘 아시겠지만, MVC패턴과 DI & IOC 개념이 잘 녹아든 프레임워크이죠. 이 세가지 어노테이션 모두 앞서 말한 패턴과 개념이랑 연관이 있습니다. MVC패턴 처리 과정을 살펴보면 이해하기 쉬울겁니다. 클라이언트가 서버에 페이지를 요청한다. Dispatcher Servlet은 사용자의 요청에 알맞는 @Controller를 찾는다. ..
결론부터 보자면 모두 DI를 위한 어노테이션이며, 동작순서의 차이와 자바 진영에서 지원하는건지 스프링에서 지원하는건지에 대한 차이가 있다. (물론 DI가될 객체를 어떤 기준으로 찾는지 또한 조금씩 다르다) - Sample Code @Autowired // 타입 기준 private Wolf dog; // Wolf 타입으로 연결 @Resource // 이름 기준 private Wolf cat; // Cat 타입으로 연결 @Inject // 타입 기준 private Wolf rabbit; // Wolf 타입으로 연결 @Autowired - Bean 타입을 통해서 주입할 Bean 객체를 찾는다. 만약 타입으로 연결이 안된다면 이름을 통해 찾는다. - Field, Method, Constructor 에 사용할 수..
문제 설명 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다. 0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요. 제한 사항 numbers의 길이는 1 이상 100,000 이하입니다. numbers의 원소는 0 이상 1,000 이하입니다. 정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다. 입출력 예numbersreturn [6, 10, 2]..
Flutter를 사용해서 앱 개발을 해보고 싶어져서 공부하게 된 Dart......(Flutter는 Dart언어의 프레임워크입니다) 우씨...Flutter 사용하겠다고 Dart를 굳이 공부해야되?.....자바 공부하는것도 오래걸렸는데.... 어허! 걱정하지 마세요 :) Dart도 OOP 언어입니다. 자바에 대해 열심히 공부하셨다면 Dart를 이해하고 쓰는데는 오랜 시간이 걸리지 않을겁니다. 대부분의 문법이 자바와 매우 유사한점이 많습니다. What is Dart? Dart는 Google팀에서 만든 객체지향개념 기반의 프로그래밍 언어입니다. javascript를 대체하기 위해서 개발한 언어이며, 모바일 앱, 웹, 서버 프로그래밍 등 무엇이든 만들 수 있습니다. 또한 Native Code 로 IOS, And..
안녕하세요^^ 이제 막 교육과정을 수료한 "응애" 개발자입니다. 벌써 4개월이라는 시간이 흐르고, 국비지원 교육으로 시작한 백엔드 개발자 양성 프로그램이 끝났습니다... 돌이켜 보면 별로 배운것도 없는거 같지만, 처음에 HTML, CSS로 프로그래밍을 접한 저로써는 현재 매우 많은것을 배우고 사용한거 같네요.... 교육 과정이 끝나면 바로 취직할수 있겠지? 어림도 없다. 돌아가. 본게임은 이제부터 시작이였습니다...개인적으로 프로젝트도 완성도 있게 잘 마무리한것 같고, 서류화 작업도 잘 맞춰놔서 지원만 하고 면접만 잘 보면 붙겠다!! 라는 마음가짐을 가지고 달려왔는데, 제가 원하는 회사의 요구사항이나 우대사항을 볼때마다 "아직 나는 한참 멀었구나..." 라는 생각이 들더군요 :( AWS와 같은 인프라 경..
로드벨런서, 로드벨런싱 정확히 무슨 개념인지 일단 알고가야겠죠?? 로드벨렌서란. 서버에 부하가 발생하지 않게 트래픽을 분산 해주는 장치 혹은 기술이라고 부릅니다. 클라이언트와 서버풀 사이에 위치하며, 특정 서버에 트래픽이 몰려서 서버가 부하되는걸 방지시키는 역할을 합니다. 항상 최적화된 서버의 상태를 유지할 수 있게 도움을 주는 기술입니다 :) 로드밸런싱은요? 전체적인 개념은 동일합니다. 여러 대의 서버를 두고 서비스를 제공하는 분산 처리 시스템에서 필요한 기술이라고 합니다. 그렇다면 언제 쓰나요? 서비스 배포후 초기 단계에서는 한대의 서버로도 모든 트래픽을 처리 할 수 있을테지만, 추후에 사업의 규모가 확장되면서, 클라이언트의 수가 늘어나게 되면 기존 서버 한대만으로는 모든 요청을 처리하기엔 큰 과부하..
웹개발 프로젝트를 진행하고 있는데, 멘토님으로부터 피드백을 받아 DB를 이중화를 시켜서 장애 발생시의 경우를 처리할 수 있게, Replication을 해보는게 어떻게 냐는 피드백을 받아 한번 진행해봤습니다. MySQL Replication(복제) replication이란 말에서 알수 있듯이 복제를 하겠다는 의미를 가지고 있습니다. 2대 이상의 DBMS나눠서 데이터를 저장하는 방식이며, 최소한의 구성은 Master/Slave 입니다. 여기서 Slave라는 단어는 정치적으로 부적절한 단어여서 앞으로는 Replica 라고 부르겠습니다 ! (실제로 mysql에서의 GRANT시에 slave라는 단어는 권장하지 않는다고 warning을 띄워주고 있습니다) 그렇다면 Master/Replica의 역할은 뭘까요? Mas..
스프링으로 mybatis을 사용하여 DB를 접속하여 데이터를 관리할때, 잠깐 잠깐 마주쳐 갔던 아주 간단한 에러입니다!!.... 제일 기본적으로 일단 ! mapper와 .xml파일에 id를 입력하는 부분이 서로 상이하지 않은지 먼저 체크해봅시다! 보시면 totalSales 앞에 공백이 들어가있죠?....즉 오타로 인해서 발생하는 경우가 대부분입니다 :( application.properties 의 설정부분. mybatis를 사용할 mapper의 위치가 잘못 설정되어 있는경우에도 동일한 에러가 뜹니다! mybatis.mapper-locations:classpath:mapper/*.xml mapper라는 패키지안에 아무글자 + .xml 인거를 인식하고 사용합니당. 추가. 혹은 매퍼와 패키지의 이름이 다른 ..
저는 사실 데이터베이스와 Spring을 같이 쓸때 mybatis밖에 안써봐서.... JPA? 대략 ORM기술의 인터페이스다! 라고만 알고있지 사실은 정확히 어떻게 쓰고 언제 용이한지는 전혀 모르고 있었습니다.... 근데 슬슬 프로젝트 개발도 마무리가 되가고 있는 시점에서 저희 호기심이 참지 못하고, 한번 알아보고 써봤습니다 헿. JPA (Java Presistence API) 자바 진영에서 ORM 기술 표준으로 사용되는 인터페이스 모음이라고 합니다 ! 즉 인터페이스라고 하는거 보니 실제로 구현이 되있는건??? 아니죠. 구현된 클래스와 매핑을 해주기 위해서 사용되는 프레임워크라고 합니다 :) 근데 그전에 ORM기술 표준이라고 했는데, ORM이 뭔지 알아야겠죠??? ORM (Object Relational ..
강의를 듣던중 문득 "Parameter" 와 "Argument"를 심심치 않게 자주 쓰면서, 궁금하게 됬습니다! 일단 두개다 뭔가 변수를 가르치키는거 같다는 생각은 쭉 해왔는데, 지금에서야 정리를 해보게 된거 같습니다 :) Parameter : 매개변수 / 함수와 메서드 입력 변수명 (Variable) Argument : 전달인자, 인자 / 함수와 메소드의 입력 값 (Value) 허헣 너무 쉽죠? 즉 변수명을 Parameter. 변수에 담긴 데이터를 Argument라고 부르는것입니다! // 변수 선언 및 초기화 int a = 10; int b = 20; // Parameter public int hap(int a, int b){ return a+b; } // Argument hap(a, b) 이렇게 보니..
: Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateInputException: Error resolving template [hello!], template might not exist or might not be accessible by any of the configured Template Resolvers] with root cause org.thymeleaf.exceptions.TemplateInputException: Error resolv..
Request processing failed; nested exception is org.springframework.jdbc.UncategorizedSQLException: Error setting null for parameter #1 with JdbcType OTHER . Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property. Cause: java.sql.SQLException: 부적합한 열 유형: 1111 부적합한 열 유형 : 1111 생각보다 매우 단순한 에러입니다!! 💡 null을 허용하지 않는 컬럼에 null이 삽입되거나, 혹은 올바르지 않은 입력값이 삽입..
java.sql.SQLException: The Network Adapter could not establish the connection 무슨 에러냐고요???? 자바에서 쿼리문을 실행시킬려고 DB에 접속을 할려고 했는데!!!!!!!!…… 단순히 DB에 접속을 못했다는 에러입니다……… 그냥 DB가 현재 실행이 안되고 있는 상태인거죠! 근데 처음에 이런 에러를 보니 낮설어가지고, “어 뭐여,, 인터넷 연결이 끊겨있따고???….” 이렇게 해석해버렸지 몹니까^^휴ㅏ하하하핳 "docker start oracle" 데이터베이스 컨테이너를 실행시켜주니 에러가 없이 잘 작동하는걸 알 수 있었습니다 ^^