본문 바로가기

전체 글

(78)
Call by value in Java Call by Value란? 문자 그대로 값을 호출 합니다. 즉 전달 받은 값을 복사하여서 사용하기에, 원본은 변경되지 않습니다. Call by Reference란? 참조에 의한 호출 입니다. 즉 전달 받은 값을 직접 참조하기에, 원본 역시 변경이 됩니다. Java에는 해당 호출 방식을 안 쓰지만, 원본이 변경되는 경우가 있어서(array, 객체) 오해의 여지가 있습니다. 예시로 살펴보겠습니다. 클래스를 만들고, 메서드 실행 시 매개변수로 원본을 변경하는 일이 발생합니다. 하지만 run메서드에 매개변수로 넘길 때, 주소 값을 복사해서 넘겼습니다. 그리고 복사된 주소값으로 참조가 가능해져, 주소 값이 가르키는 객체가 변경됩니다. a1, a2를 생성해주고, 메서드를 돌려 인자로 넣어줄 때 arg1, arg2..
Call by assingment in Python and global & nonlocal Call By Assignment Python 의 특징 ( Call By Object Reference 라고도 불린다.) immutable 자료형에는 Call By Value 와 같은 결과(int, string, tuple...) mutable 자료형에는 Call By Reference 와 같은 결과(list, dict...) Call By Value 변수를 선언하면, 그 변수에 특정 메모리를 할당 후 값을 입력 Stack Frame 내부의 변수와 외부의 변수는 메모리 주소가 다르기 때문에 간섭불가능 Call by value 예제 n = 10 def test(): n = 20 return test() print(n) # 결과: 10 global variable n = 10 선언 후, 함수 내에서 n을 다..
[Error] Eclipse to Intellij Dynamic web Project 소중한 시간을 많이 허비했기에, 같은 경험을 하는 분이 있다면, 도움이 되길 참고용으로 올립니다. 클래식은 역시 eclipse라며 dynamic web project를 생성 후 프로젝트를 진행을 하였다. 어느정도 진행을 하고 이제는 intellij로 갈아타려는데 Build tool을 안썼기에 디렉토리 구조가 꽤나 달랐다. 개발환경은 맞추지 않아도 Build tool은 꼭 쓰자!! Projcet Structure에 들어간다. Project Settings - Project에서 jdk버전을 골라준다. Modules에서 +버튼을 누르고 Web과 Web Service 2개를 추가 해준다. Web항목에서의 Deployment Descriptors는 web.xml경로 Web항목에서의 Web Resource Dire..
MVC Pattern과 리팩토링 과정 MVC패턴이 어떻게 리팩토링 되어가는에 대한 과정입니다. 뒤에 숫자는 정식 명칭이 아닙니다. MVC1 & MVC2 MVC1은 클라이언트의 요청이 있을 때 모든 구현 및 응답을 servlet으로 하게 된다. java안에 html을 담아야하기에 view에 적합하지 않다. MVC2는 클라이언트의 요청이 있을 때 모든 구현 및 응답을 JSP로 하게된다. 동적 프로그래밍이 필요하시 html안에 스크립트릿 표현으로 자바프로그래밍을 해야하기에 동적 기능만을 수행할 때 적합하지 않다. 여기서 응답은 JSP로 하며, 내부적인 동작은 servlet으로 하게되면 MVC3으로 넘어간다. MVC3 MVC3은 client의 요청에 따라 DB와 상호작용 및 동작시키는건 Controller로 처리를 하며, 응답 결과는 JSP로 만들..
[Error] Git error: failed to push some refs to push할 때 발생하는 에러로 remote 저장소만 변경될 때 발생한다. 일반적으로 local에서 변경 후, remote에 올린다. 그렇지만 remote에 있는 파일을 직접 변경 할 경우 해당 에러가 발생하는데 force명령어로 강제로 push하는 경우 데이터 유실이 발생할 수 있다. sol repo를 pull로 받아와 변경사항을 맞춰준 후 push를 하자. 좀 더 자세하게 설명하자면, local에서 a,b,c파일을 push -> local: a,b,c /remote:a,b,c local에서 추가 작업 & remote에서 c파일을 수정 -> local: a,b,c,d,e /remote:a,b,c-1 push 할 경우 해당 에러(error: f..
[Error] Servlet java.lang.classnotfoundexception: com.mysql.jdbc.driver eclipse에 tomcat연동해서 MySQL에 데이터 넣는 중에, 해당 에러가 떴다. jdbc driver를 못 찾길래, jdk lib안에 jar파일의 드라이버를 넣어주기. preference에서 class path 추가해주기 project - properties 에서 build path에 해당 class path추가해주기 까지 한 후 똑같이 작업을 하였지만, 밑의 에러가 발견 javax.servlet.servletexception: not insert 완벽하게 참조를해주었지만, 해당 에러가 뜨길래, eclipse 환경 내 문제가 아닌것 같길래 tomcat-lib안에 다시 jdbc driver를 넣어준 ..
Web Application Directory Architecture(WAS 디렉토리 구조) 일반적인 java project는 src의 java파일과 bin의 컴파일된 class파일로 작동이 된다. Web Project의 기본 구성도. webapp: root directory WEB-INF : client와 상호작용을 할 수 있도록 만들어진 파일들의 directory lib : api(.jar)등 파일들 상호작용용 도구들이 만들어져있다. classes : webapp폴더 밖의 src파일들이 컴파일된 class 파일들이 만들어져있다. web.xml : 클라이언트들이 원하는 동작을 하기 위해서 web-inf안에 구현되어 있는 파일들을 끌어와서 쓰기위해 일일히 찾는 것이 아니라 web.xml파일 안에 맵핑이 되어있다. 즉 클라이언트의 요청 - web.xml파일이 어디로 가라는지 알려줌 - 동작 후 리..
[Error] Pycharm Module already exist in project Cannot load settings from file 이거 말고도 에러가 여러개 떴었는데, 왜 떴냐면 아무 생각없이 프로젝트명을 바꿔서이다..ㅎㅎ 왜 이런짓을 했냐면 외부에서 뭐 받아오거나 추가 라이브러리 설치 같은거 안하고 정말로 단순하게 하드코딩만 하는게 있어서 줄 쳐지는 메모장인줄 알았나보다. solution .idea 파일 들어가서 기존 프로젝트명인거 전부 바꿔주자 iml파일은 당연하고, modules.xml 들어가보면 path가 기존 프로젝트명으로 되있을수도있다. system venv쓰는 경우는 거기서 해결하면 되겠지만, 나는 모든 프로젝트가 아나콘다로 가상환경 만드는 구조다.인터프리터 위치를 못찾길래 기존 env폴더 찾아가서 다 바꿔줬..