안녕하세요 강의 잘 들었습니다! 완강하고 나서 몇 가지 궁금증이 생겨 질문드립니다. 분산 락을 "분산" 락이라고 부르는 이유가 뭔가요? Redis가 인메모리 DB이다보니 서버마다 Redis를 가지고 있어 여러 서버에서 모두 가지고 있어 분산 락이라고 부르는 걸까요? Redis가 여러 서버에 분산되어 있다보니 서로 싱크를 맞추기가 쉽지 않을 것 같은데 이런 부분은 어떻게 해결할 수 있나요? 서로 싱크가 맞지 않는다면 synchronized 키워드의 문제점처럼 여러 프로세스에서 접근할 수 있어 정합성이 보장되지 않을 것 같아서요! Redis는 인메모리 DB라 휘발성인데 서버가 다운될 경우 복구는 어떤식으로 이뤄지는지 궁금합니다!
파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI, async, await)
안녕하세요. cpu 연산 관련해서 질문드립니다. 동시성과 병렬성 각각 cpu연산이 어떤식으로 나누어서 진행되는 것일까요? 연산이 아닌 네트워크인 경우에는 각 작업별인 것을 이해했는데, 연산일 경우 예시를 들어서 설명해주시면 감사하겠습니다. 그리고 이제 파이썬 웹 개발을 막 완료한 초급 개발자인데, 내용이 너무 어려워서..이해가 잘 안되는데 반복하면 될까요? ㅜㅜ추가적인 공부방법도 알려주시길 부탁드립니다.
안녕하세요 섹션 3. Database 이용해보기 - Optimistic Lock 활용해보기 강좌에 질문이 있습니다. Facade 클래스에서 버전이 달라 업데이트 실패한 경우에 재시도를 한다는건 이해했습니다. 그런데 왜 재시도를 퍼사드 클래스를 따로 만들어서 수행하는지 궁금합니다
@Transactional @SpringBootTest class StockServiceTest { @Autowired private StockService stockService; @Autowired private PessimisticLockService pessimisticLockService; @Autowired private StockRepository stockRepository; @BeforeEach public void before() { 안녕하세요 PESSIMISTIC_WRITE 예제처럼 테스트 시에 @Transactional 을 붙이면 테스트가 첫 스레드풀 사이즈 만큼의 쿼리만 나가고 계속 대기 중입니다. 혹시 원인을 알수 있을까요?
안녕하세요 강사님 이번에 새로운 출발한다는 소식을 들었는데 진심으로 응원드립니다! 오늘 ThreadLocal 강의를 듣던 중 궁금한 점이 생겨 질문드립니다. 이중화된 서버의 경우 동시성 제어를 DB LOCK을 활용해야 하나요? 실무에서는 주로 어떤 방법으로 제어하나요? 영화 예매 기능을 구현할 때 영화 정보 테이블(해당 시간에 상영하는 영화의 자리수를 가지고 있음) 예매 내역 테이블(예매한 사람의 인적사항을 가지고 있음) 해당 회차의 예매 가능한 총 자리수 - 해당 회차를 신청한 자리수에 신청하려는 인원수를 빼서 0보다 같거나 크면 신청할 수 있도록 아니면 예외를 throws하는 설계입니다.. 위 설계대로 서비스 레이어에서 아래와 같이 구현하면 신청자 수를 count하는 SQL에 SELECT LOCK을 걸어주는게 맞을까요? @Transactional public void 예매신청(PersonDTO params) { int result = dao.총자리수() - dao.예매한수(); if (result - params.get신청하려는예매인원수() >= 0) { 신청 로직~~~ } else { throw new IllegalStateException("자리 없음!"); } 늘 좋은 강의 해주셔서 감사합니다 덕분에 많이 늘고 있습니다!
파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI, async, await)
안녕하세요 강의에 보면 파이썬 버전을 3.7.6으로 사용하고 계신데 현재 상위버전이 설치되어있습니다. 이후 강의 시작할때 버전을 3.7.6으로 다운그레이드하고 진행할지 현재 설치되어있는 3.10 으로 진행해도 무방한지 알고싶습니다. - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
수업 내용에 따르면 자식 프로세스보다 부모 프로세스가 먼저 종료되면 자식 프로세스는 고아 프로세스가 됩니다. 이런 경우 자식 프로세스가 init 프로세스를 바라보게 된다고 알고 있습니다. 그럼 init이 새로운 부모 프로세스가 되고, 자식 프로세스가 종료하게 되면 wait()으로 리턴 값이 회수되지 않아 좀비 프로세스가 되나요?
페이징에서 메모리 보호를 수행할때의 valid-invalid bit와 demand paging에서의 valid-invalid bit는 같은 건가요? 이전에 페이징에 대해서 배울 때, 페이징에서의 메모리 보호를 valid-invalid bit를 이용해서 한다고 배웠습니다. valid : 관련된 페이지가 논리 주소공간에 있는경우(legal) invalid : 관련된 페이지가 논리 주소 공간에 없는 경우(illegal) 7:58 부분에서 demand paging에 대해 배울 때 역시 valid-invalid bit가 등장하는 데요. 여기서 설명하는 건 좀 다릅니다 valid : 페이지가 legal하고 실제 메모리에 있는 경우 invalid : 페이지가 valid하지 않거나 현재 secondary storage에 있는 경우 둘다 valid-invalid란 단어를 사용하지만 설명은 다른것이 의아해 여쭙습니다.
파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI, async, await)
안녕하세요 알려주신 코드를 10개씩 비동기로 묶어서 while로 돌리고 싶은데 잘 안되네요 아래와 같은 코드로 했을 때 얼핏 잘 되는 것 같지만 다른 티스토리 블로그로 바꿔서 해보면 중복 데이터가 발생합니다 비동기를 while 안에 넣어서 써도 되는건지 알고 싶습니다 from bs4 import BeautifulSoup import aiohttp import asyncio async def fetch(session, url, i): async with session.get(url) as response: html = await response.text() soup = BeautifulSoup(html, "html.parser") tag = soup.find("p", class_="txt_thumb") # 첫번째 글제목만 print(tag.text) async def main(jump): BASE_URL = "https://bjpublic.tistory.com/category/%EC%A0%84%EC%B2%B4%20%EC%B6%9C%EA%B0%84%20%EB%8F%84%EC%84%9C" urls = [f"{BASE_URL}?page={i}" for i in range(j + 1, j + 11)] async with aiohttp.ClientSession() as session: await asyncio.gather(*[fetch(session, url, i) for i, url in enumerate(urls)]) if __name__ == "__main__": j = 0 while True: asyncio.run(main(j)) print("--------") j = j + 10 if j == 20: break
8:17 에 데이터모델을 받는 변수를 왜 굳이 함수로 만드는 이유를 자세히 알려주세요 20:10 에 왜 movieModel처음에 nil에 할당 되어 있다가 바로 movieMoel 데이터가 안담겨지나요 ? 비동기적으로 처리한 데이터를 movieModel에 넣었을때, collectionView를 reloadData를 한 이유를 컨트롤러 생성 과정을 통해 자세히 알려주세요