inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

함수호출이랑 쓰레드

해결됨

독하게 되새기는 C 프로그래밍

안녕하세요. 배운 내용을 한번 확인 및 함수호출과 쓰레드의 관계에 대해서 질문 드립니다! main함수에서 다른 함수를 호출할 때는 쓰레드가 생성되는게 아니고 하나의 main 쓰레드가 끝날때까지 진행 되는건가요? 그리고 그 실행된 메인 쓰레드는 호출 된 함수로 이동하여 계산 또는 값을 수정 등을 하고 다시 반환하여 메인 함수로 가는 건가요? 만약 동시에(싱글코어로 가정하면) 이러한 실행을 하기 위해서는 쓰레드를 추가하는 것이라고 이해하면 될까요? 싱글코어로 가정한 쓰레드들은 OS가 동기화를 통해 쓰레드들간에 진행을 통제 하는건가요?

  • c
  • kernel
  • secure-coding
ㅇㄴㄹ(ㅇㅀ) 댓글 1 좋아요 0 조회수 431

리눅스 환경도 스레드 생성 원리는 동일한건가요?

해결됨

독하게 되새기는 C 프로그래밍

리눅스도 마찬가지로 이해하면 될까요? O s 가 프로세스에게 적절한 메모리를 할당하여 프로세스에게 자원을(메모리 공간)을 주는 것으로 이해했습니다. 프로세스 안에 구성원들(쓰레드) 개별적인 행동을 하는 주체로 이루어져 있다고 이해했습니다. ( PS) 저번에 어느 강좌인지는 기억이 안나지만 리눅스는 프로세스 중심 윈도우는 쓰레드 중심으로 자원을 분배한다고 들어서 구분이 필요한가 싶었습니다. 추가로 하나의 쓰레드들은 하나의 main을 실행 시킨다고 배웠습니다. 이게 여러 싱글 코어에서는 쓰레드들끼리 컨텍스트 스위칭을 하면서 동시에 실행이 되는 것처럼 보이는 concurrency 특성이 있다고 정리가 되었는데, 이때 쓰레들끼리는 멀티 쓰레드를 표현하는 것인가요? 멀티 쓰레드가 정확히 어느 레이어에서 사용하는지 구분 짓고 싶습니다. 다른 프로세스 안에 쓰레드를 말하는 것인지 코어들에서 쓰레드를 말하는 것인지 아니면 단일 프로세스 안에 쓰레드를 말하는지 정리가 안 돼서 질문드립니다. 정리를 하면서 수업을 들어야 하는데 업무랑 부족한 cs 지식이랑 빠르게 수용하려다 보니 걸리는 부분이 계속 생기는 거 같습니다. 항상 답변을 친절히 알려주셔서 감사합니다.

  • c
  • kernel
  • secure-coding
ㅇㄴㄹ(ㅇㅀ) 댓글 1 좋아요 0 조회수 558

부호 있는 정수, 부호 없는 정수

미해결

홍정모의 따라하며 배우는 C언어

예를 들어 8비트 2진수 1010 1110 이 있을 때 컴퓨터가 어떻게 맨 앞 비트가 부호비트인지 아닌지 아는 것인가요? 양수 174가 될수도 있고 음수 -46이 될 수 있는데 컴퓨터가 어떻게 그것을 구분하는 것인지 궁금합니다..

  • c
현주 댓글 1 좋아요 1 조회수 636

표준입출력 강의를 마치고 질문을 드립니다

해결됨

독하게 시작하는 C 프로그래밍

printf 함수 같은 경우에는 데이터 Size를 정하지 않고, 어디에 저장 될지를 지정 하지도 않는데, Printf 함수는_getch() or_getche() 와같은 Non buffered I/O같은 방식인가요???

  • c
  • 컴퓨터-구조
  • assembly-language
  • vc++
artdohyunnim 댓글 1 좋아요 0 조회수 346

독하게 시작하는 C프로그래밍 교재

해결됨

독하게 시작하는 C 프로그래밍

안녕하세요 독하게 시작하는 C프로그래밍 강의를 구매하고 수강하려하는데 교재가 모두 절판되었네요 따로 구할 수 있는 방법이 없을까요? 중고 서적으로 보니 가격이 6만원이 넘더라구요...

  • c
  • 컴퓨터-구조
  • assembly-language
  • vc++
semu0523 댓글 1 좋아요 0 조회수 880

헤드노드 정의

해결됨

독하게 C를 배운 사람을 위한 선형 자료구조

헤드노드 정의 할 때 pNext값에 NULL이라고 적지 않아도 자동으로 NULL로 초기화가 되는 건가요?

  • c
  • 코딩-테스트
  • 알고리즘
  • vc++
skyboy 댓글 1 좋아요 0 조회수 396

접근권한과 위변조

해결됨

독하게 되새기는 C 프로그래밍

실제 위변조 해킹을 할 때 여러방법이 있겠지만, 초기에 접근 권한을 얻어서 위변조를 하는 방식도 있었을까요? Win OS상에서 Hxd 프로그램을 실행하고 Linux에서 작성한 bin파일을 가져와서 위변조라는 것을 하려고 하는데 수정이 불가능 했습니다. 이에 따른 3가지 가설로 linux상에서 bin file에 접근 권한을 chmod를 통해 주지 않았기 때문에 수정이 불가능 프로그램을 저장할 때 file을 저장 시킨 system 단은 linux OS이고, binary file을 실행한 HxD프로그램이 win Os라서 불가능 읽기 전용 파일이라서? 2번은 file이 하드디스크에 물리적으로 저장해서 부르는 데는 문제가 없을 것이라 생각했습니다. 3번은 HxD가 -rw-r--r-- 1 root root 256 Nov 12 16:34 rdata.bin에서 읽기 전용 파일이기 때문이라고 생각했는데, HxD는 에디터에서 건들 수 없는 것이 말이 되나 싶었습니다.. 1번이 문제인 줄 알고 sudo chmod 777 bin파일이름을 통해 권한을 부여하니 위변조가 가능했음을 알게 되었습니다. 그렇다면 여기서 궁금한 점은 1번에 접근 권한을 허락만 하면 (다른 컴퓨터에 원격으로 제어를 하고 root사용자의 비밀번호를 얻어서) 해킹이 되지 않을까라는 생각이 들어서 질문을 드렸습니다. 너무 궁금해서 수업과는 약간 결이 다른 질문인 점은 죄송합니다..

  • c
  • kernel
  • secure-coding
ㅇㄴㄹ(ㅇㅀ) 댓글 2 좋아요 0 조회수 403

jpql 엔티티 인지 오류

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 일단은 해결 했습니다. findAllString 이용하는데 Order를 얘가 모르는 거 같아서.. String jpql = "select o From jpabook.jpashop.domain.Order o join o.member m"; 이렇게 패키지경로까지 다 명시해줬더니 인지를 하더라구요.. 안 그러면 org.hibernate.query.sqm.UnknownEntityException: Could not resolve root entity 'Order' at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitRootEntity(SemanticQueryBuilder.java:1960) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final] at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitRootEntity(SemanticQueryBuilder.java:253) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final] ............... 얘가 이렇게 Order 인지 못한다고 오류가 뜹니다.. 원래 엔티티는 그냥 @Entity 등록 하면 알아서 인지 되는걸로 알고 있었는데.. 왜 이런 걸까요? package jpabook.jpashop.domain; import jakarta.persistence.*; import lombok.AccessLevel; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @Entity(name = "orders") @Getter @NoArgsConstructor(access = AccessLevel.PUBLIC) public class Order { @Id @GeneratedValue @Column(name = "order_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "member_id") private Member member; @OneToMany(mappedBy = "order", cascade = CascadeType.ALL) private List<OrderItem> orderItems = new ArrayList<>(); @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @JoinColumn(name = "delivery_id") private Delivery delivery; private LocalDateTime orderDate; @Enumerated(EnumType.STRING) private OrderStatus status; public void changeMember(Member member){ this.member = member; member.getOrders().add(this); } public void addOrderItem(OrderItem orderItem){ orderItems.add(orderItem); orderItem.setOrder(this); } private void setOrderDate(LocalDateTime orderDate) { this.orderDate = orderDate; } public void changeDelivery(Delivery delivery){ this.delivery = delivery; delivery.setOrder(this); } private void setStatus(OrderStatus status) { this.status = status; } public static Order createOrder(Member member, Delivery delivery, OrderItem... orderItems){ Order order = new Order(); order.changeMember(member); order.changeDelivery(delivery); for (OrderItem orderItem : orderItems) { order.addOrderItem(orderItem); } order.setStatus(OrderStatus.ORDER); order.setOrderDate(LocalDateTime.now()); return order; } public void cancel(){ if(delivery.getStatus() == DeliveryStatus.COMP){ throw new IllegalStateException("이미 배송완료된 상품은 취소가 불가능합니다."); } this.setStatus(OrderStatus.CANCEL); for (OrderItem orderItem : orderItems) { // orderItem.getItem().removeStock(orderItem.getCount()); orderItem.cancel(); } } public int getTotalPrice(){ int totalPrice = 0; for( OrderItem orderItem : orderItems){ totalPrice += orderItem.getTotalPrice(); } return totalPrice; } }

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
궁금이 댓글 1 좋아요 0 조회수 2890

gcc 오류 이유

미해결

홍정모의 따라하며 배우는 C언어

왜 오류가 난건가요..?

  • c
tomi.fvf 댓글 1 좋아요 2 조회수 1046

7.2강 06:06 질문이 있습니다.

미해결

홍정모의 따라하며 배우는 C언어

char ch; ch = getchar(); // 1) while (ch != '\n') { putchar(ch); // 2) ch = getchar(); }; getchar와 putchar의 세부 동작 방식이 궁금해서 여쭤봅니다.. IBM에서는 getchar 함수의 역할을 현재 스트림 위치의 문자 하나를 읽고 다음 스트림의 위치로 이동한다고 설명되어있는데 스트림의 위치라는게 버퍼의 인덱스를 말하는건가요?? https://www.ibm.com/docs/ko/i/7.3?topic=functions-getc-getchar-read-character getchar는 입력 버퍼가 비어있을 때는 입력을 받지만, 입력 버퍼가 차있을 때는 입력 버퍼의 현재 위치의 값을 반환하고 다음 위치로 이동하는 함수라고 이해하면 될까요?? 디버거로 putchar의 동작을 확인했을 때는 입력 버퍼에서 맨 앞의 글자를 한 글자씩 출력하는 것 같은데 그러면 putchar는 버퍼를 사용하는 방식이 아닌건가요?? 이클립스에서는 Ctrl+우클릭 후 Open Implementation을 선택하면 라이브러리 함수가 동작하는 코드를 직접 확인할 수 있는 것 같은데 비주얼 스튜디오에서도 확인하는 방법이 있을까요..??

  • c
쉽지않네 댓글 1 좋아요 2 조회수 375

섹션 13 다차원 배열 실습 문제 중

해결됨

독하게 시작하는 C 프로그래밍

첫번째 문제 혼자 풀어봤는데 아무리 규칙을 찾으려 해도 이렇게 밖에 안짜지는데요,, 혼자 풀수 있어야 한다고 하셔서 혼자 많이 고민해봤는데 좀 더 좋은 방식을 찾으려고 해도 제 머리로는 도저히 안짜집니다 ㅠㅠ aList[2][3] = aList[0][3] + aList[1][3]; 특히 이 부분이 너무 그냥 막 짠 코드 같아 보이는데 이게 맞는 방식인지 여쭤봅니다.. #include <stdio.h> int main(void) { int aList[3][4] = { {10,20,30}, {40,50,60}, }; for (int i = 0; i < 2; ++i) { for (int j = 0; j < 3; ++j) { aList[i][3] += aList[i][j]; aList[2][j] += aList[i][j]; aList[2][3] = aList[0][3] + aList[1][3]; } } for (int i = 0; i < 3; ++i) { for (int j = 0; j < 4; ++j) { printf("%d\t", aList[i][j]); } putchar('\n'); } return 0; }

  • c
  • 컴퓨터-구조
  • assembly-language
  • vc++
CHOPAV 댓글 2 좋아요 0 조회수 314

strpbrk 관련 예시 함수

해결됨

독하게 시작하는 C 프로그래밍

안녕하세요! strpbrk 설명해주시며 보여주셨던 예제 관련해서 질문이 있습니다. 원본 예제에는 문자열을 찾아서 주소, 인덱스, 문자를 출력하는 코드가 아래와 같이 되어 있었습니다. while ((pszStart = strpbrk(pszStart, szSet)) != NULL) { printf("[%p] Index: %lld, %c\n", pszStart, pszStart - szBuffer, *pszStart); pszStart++; } 그런데 이 코드를 실행시키면 위와 같이 인덱스 값과 문자가 제대로 출력되지 않았습니다. 메모리 상 pszStart와 szBuffer값의 차이는 인덱스 값과 같았습니다. 그래서 아래와 같이 %lld 대신 %d 로 형식지정자를 바꾸니 제대로 출력이 되었습니다. while ((pszStart = strpbrk(pszStart, szSet)) != NULL) { printf("[%p] Index: %d, %c\n", pszStart, pszStart - szBuffer, *pszStart); pszStart++; } 일단 먼저 제가 코드를 잘못 실행해서 이런 결과가 나온 건지 궁금합니다. 그리고 여기서 형식 지정자는 단지 값의 출력 형식을 바꿔주는 것으로 알고 있고, %d와 %lld는 10진수 정수 형식으로 출력한다는 점은 같은데 왜 다른 값이 출력되었는지 궁금하고, 형식 지정자가 %lld일 때 왜 뒤에 출력되는 문자 *pszStart의 값까지 잘못 출력되는지 궁금합니다. 항상 좋은 강의 만들어 주셔서 감사합니다!

  • c
  • 컴퓨터-구조
  • assembly-language
  • vc++
이제제 댓글 1 좋아요 0 조회수 408

MemberForm은 이미 모델에 들어가 있는거죠?

해결됨

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 검증오류가 날 시 BindingResult에 의해 들어가는 게 아니라, 저렇게 인자로 받는 건 이미 모델에 들어가 주는거죠?

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
궁금이 댓글 1 좋아요 0 조회수 384

섹션4 범위검색 강의 질문있어요.

해결됨

독하게 C를 배운 사람을 위한 선형 자료구조

올려주신 자료 04_RangeSearch02에서 void SearchByAge(void) 함수 마지막 부분 질문있습니다. SearchByAgeRange함수에서 동적할당한 주소를 리턴하고 void **pResult로 받았습니다. void** pResult = SearchByAgeRange(min, max, &cnt); USERDATA* pTmp = NULL; for (int i = 0; i < cnt; ++i) { pTmp = (USERDATA*)pResult[i]; printf("%d, %s, %s\n", pTmp->age, pTmp->name, pTmp->phone); } free(pResult); <----요부분입니다. 이제 해제를 해줘야 하는데요 free(pResult)를 한 번에 해도 괜찮은건가요? 아니면 for문 돌릴 때 free(pResult[i])로 해야하나요?

  • c
  • 코딩-테스트
  • 알고리즘
  • vc++
한지수 댓글 2 좋아요 0 조회수 408

Spring Security 6.0 이상 (Spring boot 3.0 이상)에서 다중 config 설정 방법

미해결

스프링 시큐리티

안녕하세요 이렇게 좋은 Spring Security에 애를 많이 먹던 도중 늦게나마 열심히 듣고 있는 사람입니다. 강의를 들으면서 Spring Security 6.0 이상 버전으로 혼자 마이그레이션 해보며 공부를 진행하는데요.. 다른 분들은 모르겠지만 저는 6.0 이상 버전에서의 다중 보안 설정에서 애를 좀 먹어서.. 혹시나 저 같으신 분들이 있으실까봐 글을 남깁니다..! 다름이 아니라 Spring Security 6.0 이상 버전에서는 먼저 오버라이드해서 함수를 구현하는 것이 아니라 컴포넌트화 시켜서 진행합니다. 또한 HttpSecurity 안의 내용을 구현하는데 변경점이 있다는 것이 가장 큰 차이점인 것 같습니다. 예를 들어 UserSecurityConfig, AdminSecurityConfig를 만들어서 각 경우에 따라 다른 설정을 적용하고 싶은 경우에 두 가지의 config 파일을 만들 수 있다고 가정하면.. 저의 경우에는 AdminSecurityConfig에서 지정한 부분이 권한 정보에 따라 접근이 막히지 않고 다 접근이 가능한 ("/admin/pay"를 user가 접근 가능) 상황이었습니다. 뭐가 문제인지 한참을 찾던 도중 https://docs.spring.io/spring-security/reference/servlet/configuration/java.html 공식 문서를 통해 답을 찾았습니다. 간략하게 해결법부터 말씀드리자면 path로 접근 제한을 하는 경우에 http.securityMatcher()를 사용해야 한다는 점 입니다. 이렇게 하면 아주 잘 구분이 되더군요..! 혹시나 저처럼 하시는 분이 계실까봐 남깁니다..! @Bean @Order(0) public SecurityFilterChain adminFilterChain(HttpSecurity http) throws Exception{ http .securityMatcher("/admin/pay") .authorizeHttpRequests(request -> request.anyRequest().hasRole("ADMIN")); return http.build(); } @Bean @Order(1) public SecurityFilterChain systemFilterChain(HttpSecurity http) throws Exception{ http .securityMatcher("/admin/**") .authorizeHttpRequests(request -> request .anyRequest().hasAnyRole("SYS", "ADMIN")); return http.build(); } @Bean @Order(2) public SecurityFilterChain filterChain(HttpSecurity http) throws Exception{ http .authorizeHttpRequests(request -> request .requestMatchers(antMatcher("/user/**")).hasRole("USER") .anyRequest().authenticated());

  • java
  • spring-boot
  • spring-security
jwl5015 댓글 3 좋아요 4 조회수 3376

변수 초기화 질문

해결됨

독하게 시작하는 C 프로그래밍

안녕하세요 최호성 개발자님 질문에 앞서 좋은 강의 제공해주셔서 감사하다는 이야기드립니다 🙂 64bit 체제에서 long int로 변수 선언 시 메모리가 8byte가 되는 것으로 알고 있고, unsigned long int ulnewData = 1UL; 로 변수를 초기화 했을 때, 01 00 00 00 16 20 09 6b라고 메모리에 초기화되었는데 01 00 00 00 00 00 00 00 으로 메모리에 초기화되어야 하는게 아닌가요? 그림의 메모리 주소인 48FC78FB29 ~ 48FC78FB2B까지 0으로 초기화되어야하는게 아닌가 싶어서 질문드립니다.

  • c
  • 컴퓨터-구조
  • assembly-language
  • vc++
김보성 댓글 1 좋아요 0 조회수 463

named lock vs 비관적 락

미해결

재고시스템으로 알아보는 동시성이슈 해결방법

좋은 강의 너무 감사합니다. 강의를 보며 궁금한 점이 생겨서 질문 드립니다. named lock을 통해 동시성 문제를 해결하는 예시를 보았을 때, 비관적 락과 무엇이 다른 것인지 큰 차이를 느끼지 못했습니다. named lock이 비관적 락에 비해 가지는 장단점에 비해 찾아보니, timeout 설정이 좀 더 간편하다는 내용 말고는 유의미한 차이를 찾지 못했습니다. (그러나 비관적 락 + queryhint 를 사용하면 비관적 락 사용 시에도 딱히 어려움 없이 timeout을 설정할 수 있었습니다.) 혹시 named lock이 비관적 락에 비해 지니는 장단점과, 어떤 경우에 비관적 락 대신 Named lock을 통해 분산락을 구현하시는지 궁금하여 질문드립니다.

  • java
  • spring
  • 동시성
신동훈 댓글 1 좋아요 0 조회수 1428

g_pHeadNode

해결됨

독하게 C를 배운 사람을 위한 선형 자료구조

g_pHeadNode는 왜 주솟값을null로 갖고있나요?

  • c
  • 코딩-테스트
  • 알고리즘
  • vc++
khb4435 댓글 2 좋아요 0 조회수 443

6.17강 14:39분 평균을 구하는 예제 질문이 있습니다.

해결됨

홍정모의 따라하며 배우는 C언어

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #define SIZE 5 int main(void) { int numbers[SIZE]; int sum = 0; int i; printf("Enter %d numbers : ", SIZE); for (i = 0; i < SIZE; ++i) { scanf("%d", &numbers[i]); // &( numbers[i] ) : 배열 인덱스 역참조 연산 후 주소 연산 } for (i = 0; i < SIZE; ++i) { sum += numbers[i]; } printf("Sum : %d\n", sum); // 첫 번째 평균 출력식 Average 1) double average = sum / SIZE; printf("Average 1) : %lf\n", average); // 두 번째 평균 출력식 Average 2) printf("Average 2) : %lf\n", (sum / SIZE)); return 0; } 위 코드에서 첫 번째 평균 출력식 Average 1)는 정상적으로 평균 3.000000을 잘 출력하는데 두 번째 평균 출력식 Average 2)는 0이 출력이 됩니다.. 혹시 print 함수의 인수로 표현식이 들어가면 안되는걸까요??

  • c
쉽지않네 댓글 1 좋아요 1 조회수 267

인기 태그

인프런 TOP Writers

주간 인기글