전체 글

궁금한 게 너무 많은 pabu의 개발_log
개발/c++

이터레이터, 그리고 컨테이너의 메모리 구조에 따라 달라지는 이터레이터 순회 방법

1. 이터레이터이터레이터란 컨테이너에 저장되어 있는 요소의 주소를 가리키는 객체로, 포인터를 일반화한 것이다.vector, map 등 각각 다르게 구현된 컨테이너들을 일반화된 이터레이터를 통해 쉽게 순회할 수 있게 만든 것이다. 컨테이너의 데이터를 순회하려면 주소를 알아야 한다. 이 주소를 가리키는 개체가 이터레이터이다. 1.1 주소값 가져오기c++의 cout은 int, string, 혹은 포인터 타입에 대해서는 vector::iterator타입에 대해서는 #include using namespace std;vector v;int main(){ for(int i = 1; i 이렇게 iterator에 직접 접근해서 출력하면 오류가 난다.이럴 땐 역참조 연산자 *를 이용하여 값으로 돌아가 주고, 다시..

개발/c++

printf는 왜 c++의 string을 모를까? (c++ printf에 str.c_str()를 써야하는 이유)

0. 들어가기 알고리즘 공부를 위해 오랜만에 c++을 다시 보고 있다.그러다 printf에서 이상한 점을 보았는데, printf는 정수 %d처럼 %s로 형식을 지정하여 문장을 출력할 수 있다.하지만 변수 자리에 string을 그냥 넣으면 실행 시 에러가 난다. 왜 그럴까? 1. string 인식이 안 되는 이유 - C언어: string이 뭔데?printf는 C++에서 생긴 것이 아니다. C에서 왔다.하지만 string 클래스는 C++에서 새로 생겼다.그래서 printf는 자기가 만들어질 때 없었던 string을 인식하지 못하는 것이다. 2. 해결법: C의 법을 따르자해결법이 무엇일까?이유를 알았으니 해결법을 생각해 보자.C언어에서 문자열은 무엇이었지? 문자의 배열이었다!printf가 %s를 처리할 때..

개발/JPA

EntityManagerFactory는 왜 공장(factory)라는 이름이 붙었을까?(feat.Factory Pattern;팩토리 패턴)

0. 들어가기필자는 개인적으로 공부를 할 때, 특히 개발을 공부할 때는 이름이 가장 중요하다고 생각한다. 많은 경우 이름에 핵심 개념이 들어있기 때문이다. JPA를 공부하면 가장 먼저 나오는 생소한 개념으로는 EntityManager가 있다.em.persist(entity) 이런 식으로 엔티티를 처음 저장할 때 entityManager를 사용해보게 되는데, entityManager란 무엇일까?또, EntityManagerFactory는 또 무엇일까?그리고, 왜 factory(공장)이라는 이름이 붙었을까? 쉽고 빠르게 정리해 보자. 1. EntityManagerFactoryEntityManagerFactory는 데이터베이스와 연결하기 위한 모든 무거운 설정(DB접속 URL, 유저 아이디, 비밀번호, di..

개발

메서드 체이닝 패턴에 대해 알아보자(new StringBuilder().append()는 어떻게 가능할까?)

0. 들어가기JdbcTemplate을 공부하던 중, DI를 위한 리포지토리 생성자를 만들다가 문득 익숙하게 사용하던 패턴이 눈에 걸렸다.public JdbcTemplateItemRepositoryV3(DataSource dataSource) { this.template = new NamedParameterJdbcTemplate(dataSource); this.jdbcInsert = new SimpleJdbcInsert(dataSource) .withTableName("item") // 바로 이 부분 .usingGeneratedKeyColumns("id"); // .으로 계속 이어서 쓸 수 있다} 많이들 쓰는 StringBuil..

개발/TIL(공부일지)

Content-Type, Media Type(구 MIME Type)에 대한 정리

0. 들어가기 오랜만에 시간이 남아 블로그를 남긴다. 실무에서는 잘 쓰지 않지만, 강의를 듣거나 간단하게 페이지를 편집할 때 서버에 localhost:8080/hello.html 형식으로 요청해본 적이 있을 것이다. 그러면 서버(스프링)는 특정 폴더(여기서는 루트 디렉토리)에서 hello.html파일을 찾아 그대로 응답하는데, 이 때 .html 확장자를 가진 파일이므로 스프링은 이 파일의 종류(MIME Type)를 text/html이라고 판단한다.브라우저에게 파일을 응답할 때, HTTP Response 헤더에 "이 파일은 html 문서야"라는 내용을 넣어서 전달하고, 브라우저는 이를 통해 html파일이구나 알고 거기에 맞게 처리해서 읽어들인다. 이 때 헤더에 넣는 "이 파일은 OO type이야"가 Con..

pabu
파부로그