[24.07.04] 내일배움캠프 일차 JAVA TIL - CS 공부하기

2024. 7. 8. 09:53T.I.L

오늘 한 일

  • Web 강의 수강 - 스탠다드 이론 (Nginx)
  • Web 강의 수강 - Redis

github에 push 된 commit 삭제하기



1. git log // 삭제할 commit 내역 찾기 

2. git reset // commit 삭제하기
     - 최근의 commit을 삭제하고 싶을 땐 git reset HEAD^
     - 최근의 n개의 commi을 삭제하고싶을땐 git reset HEAD~n 

3. git push -f origin "branch name" // github에 commit 삭제 반영

 

  1. 필터와 AOP:
    • 필터: 웹 애플리케이션에서 요청과 응답을 가로채서 처리할 수 있는 기능입니다. 주로 인증, 로깅, 인코딩 등의 작업에 사용됩니다.
    • AOP(Aspect-Oriented Programming): 관심사의 분리를 통해 코드의 중복을 줄이고 유지 보수를 용이하게 하는 프로그래밍 패러다임입니다. 스프링에서는 주로 트랜잭션 관리, 로깅, 보안 등의 횡단 관심사를 처리할 때 사용됩니다.
  2. 디버그 모드:
    • 디버그 모드는 코드 실행 중에 변수 값, 함수 호출, 스택 트레이스를 확인하며 문제를 찾아내고 수정하는 데 사용됩니다. 디버거를 통해 프로그램 실행을 중단하고 단계별로 실행할 수 있습니다.
  3. HTTP에 대해 설명:
    • HTTP(HyperText Transfer Protocol)는 클라이언트와 서버 간의 요청과 응답을 주고받기 위한 프로토콜입니다. 주로 웹 브라우저와 웹 서버 간의 통신에 사용되며, 상태 코드와 메서드(GET, POST, PUT, DELETE 등)를 통해 다양한 요청을 처리합니다.
  4. 버블 정렬 및 분할 정복:
    • 버블 정렬: 인접한 두 요소를 비교하여 정렬하는 단순한 정렬 알고리즘입니다. 시간 복잡도는 O(n^2)입니다.
    • 분할 정복: 문제를 작은 문제로 나누어 해결한 후, 결과를 합쳐서 원래 문제를 해결하는 알고리즘 설계 기법입니다. 대표적인 예로 퀵 정렬과 병합 정렬이 있습니다.
  5. 요청보다 필터가 먼저 실행되는 원리:
    • 필터는 서블릿 컨테이너에서 요청을 처리하기 전에 실행됩니다. 이는 요청을 사전 처리하거나, 응답을 후처리하는 데 유용합니다.
    • Spring MVC
      1. 서블릿 필터(Servlet Filter):
        • 서블릿 필터는 자바 웹 애플리케이션에서 요청과 응답을 가로채고 처리하는 데 사용됩니다.
        • 필터는 웹 애플리케이션에 대한 모든 요청을 가로채고, 요청을 처리하기 전에 전처리 작업을 수행할 수 있습니다.
        • 필터는 web.xml 파일이나 @WebFilter 어노테이션을 통해 설정됩니다.
      2. 서블릿(DispatcherServlet):
        • 서블릿은 클라이언트 요청을 처리하고 적절한 응답을 생성하는 데 사용됩니다.
        • Spring MVC에서는 DispatcherServlet이 중심 서블릿으로 작동하며, 요청을 적절한 컨트롤러로 라우팅합니다.
      순서
      • 클라이언트 요청 -> 필터 실행 -> DispatcherServlet 실행 -> 응답 필터링 
        1.  
        이와 같은 구조 덕분에 요청과 응답을 전후로 처리할 수 있는 유연성을 제공
  6. 세션/쿠키:
    • 세션: 서버에 저장되는 사용자 정보로, 사용자별 상태를 유지하는 데 사용됩니다. 세션 ID를 통해 클라이언트를 식별합니다.
    • 쿠키: 클라이언트에 저장되는 작은 데이터 조각으로, 서버와 클라이언트 간의 상태를 유지하는 데 사용됩니다.
  7. HTTP 상태 코드:
    • 200: OK, 404: Not Found, 500: Internal Server Error  정도는 기억해두기
  8. JSP ORM 영속성이 뭐죠?:
    • JSP: Java Server Pages는 동적인 웹 페이지를 만들기 위한 기술입니다.
    • ORM(Object-Relational Mapping): 객체 지향 프로그래밍 언어를 사용해 관계형 데이터베이스를 조작하는 기술
    • 영속성: 데이터의 생명주기를 관리하는 것을 의미하며, 데이터가 메모리에서 사라지지 않고 영구적으로 저장되는 것을 보장합니다. (데이터베이스와 객체 매핑을 이용하여 데이터를 효율적으로 사용할 수 있는 속성임)
  9. 프로세스와 쓰레드의 차이점:
    • 프로세스: 실행 중인 프로그램의 인스턴스입니다. 각각 독립된 메모리 공간을 가집니다.
    • 쓰레드: 프로세스 내에서 실행되는 작은 단위입니다. 같은 메모리 공간을 공유합니다. 흐름이라고 볼 수 있다.
    • 추가로 멀티 쓰레드 등의 용어 정리해두기
  10. 알고리즘의 종류:
    • 다양한 알고리즘이 있습니다. 예를 들어, 정렬 알고리즘(퀵 정렬, 병합 정렬), 탐색 알고리즘(이진 탐색, DFS, BFS) 등이 있습니다.
  11. 무슨 자료구조가 있는지:
    • 배열, 링크드 리스트, 스택, 큐, 트리, 그래프, 해시 테이블 등 다양한 자료구조가 있습니다.
  12. 왜 시큐리티 썼는지:
    • 애플리케이션의 인증과 인가를 처리하고 보안을 강화하기 위해 Spring Security를 사용했습니다.
    • 여기서 왜 인증 인가를 처리하는 다양한 방식 중 spring security인지 설명하기
  13. 리눅스의 명령어 종류 :
    • ls, cd, cp, mv, rm, grep, find, chmod, chown, ps, top, kill 등 다양한 리눅스 명령어의 기능 알아두기
  14. 형상관리 방법:
    • Git을 사용해 소스 코드의 버전 관리를 하고, 브랜치를 통해 협업 및 병합 작업을 수행합니다.
    • Pull request, issue, commit 컨벤션을 정하고, merge시 충분한 코드리뷰를 진행합니다.
  15. 깃 명령어 :
    • git init, git clone, git add, git commit, git push, git pull, git merge, git branch, git checkout 등을 사용해 본 경험이 있습니다.
    • 커밋 메시지를 수정하기 위해 amend 명령어로 , 직접 텍스트 편집기를 실행시켰습니다.
    • git commit --amend
  16. ACID 내가 말해서 꼬리질문:
    • ACID는 데이터베이스 트랜잭션의 4가지 속성(Atomicity, Consistency, Isolation, Durability)을 의미합니다.
    •  
  17. 정처기 프로젝트에 실제로 써본 경험:
    • 프로그램 관리, 데이터 정규화, 소프트웨어 생명주기, RESTful 서비스
  18. 코딩시 로그 어캐 사용했는지:
    • Log4j, SLF4J 등을 사용해 애플리케이션 로그를 기록하고 분석했습니다.
    • 로그 메시지를 사용하여 데이터가 잘 전달되었는지, 오류가 발생하지는 않는지 확인합니다.

 


 

마인크래프트 - 포트포워딩 원리

간단히 말하자면 포트(Port)를 전달(Forwarding)해주는 것

특정 포트로 들어오는 데이터 패킷을 다른 포트로 바꾸어 전송해주는 작업이다.

포트포워딩은 공통적으로 사설(내부) IP, 내부 포트, 외부 포트, 프로토콜을 입력

https://shyunku.tistory.com/87

드론 동아리에서 아듀이노로 전자 시계 만든 것