묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨그림으로 쉽게 배우는 자료구조와 알고리즘 (심화편)
AVL 트리 회전 질문
안녕하세요. 선생님~[AVL트리 - 개념] 강의 - 회전 관련 질문있습니다.7:00 즈음LL회전, RR회전 펼져있는 노드 이미지가 반대로 된것 아닌지? 궁금합니다.헷갈려서 검색해보니LL이라는 용어가 회전할 기준이 되는 노드의 왼쪽 노드, 그 다음 왼쪽 노드형태에서 오른쪽으로 회전해서 균형을 맞추자!로 대체적으로 설명이 되어있는것같습니다.(이미지로는 왼쪽으로 쭉 내려가는 이미지)위키백과에는 따로 LL,RR이라는 용어설명이 없어서, 블로그 글들 참조하였습니다.뭔가 관점 차이인 부분일까요?
-
해결됨홍정모의 따라하며 배우는 C++
IntArray 클래스를 구현해봤는데 피드백 부탁드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.#include <iostream> #include <initializer_list> using namespace std; class IntArray // integer가 담기는 클래스 { private: int m_length = 0; int* m_data = nullptr; public: //Constructors 생성자 IntArray(const int array_len) : m_length(array_len) { initialize(m_length); } IntArray(const initializer_list<int>& list) :IntArray(list.size()) { int count = 0; for ( auto& ele : list ) { m_data[ count ] = ele; count++; } } //initialize() 생성자에서 가져다 쓸 함수 void initialize(int len) { m_data = new int[ len ]; } //Destructors 소멸자 ~IntArray() { if ( m_data != nullptr ) delete[ ] m_data; m_data = nullptr; } //reset(); 메모리 지우고 초기상태로. void reset() { delete[ ] m_data; m_data = nullptr; m_length = 0; } //resize(); // 사이즈 바꿈 void resize(int n) { // 기존 메모리 temp에 저장 int* temp = m_data; // n만큼의 메모리 리사이징 m_data = new int[ n ]; // 리사이징된 메모리 크기만큼 기존메모리에서 값의 복사 for ( int i = 0; i < n; i++ ) { m_data[ i ] = temp[ i ]; } m_length = n; // 복사가 완료됐으면 기존 메모리 삭제 delete[ ] temp; } void insertBefore(const int& value, const int& ix) { // 인서트를 위한 새로운 메모리 할당 int* temp = new int[ m_length + 1 ]; // ix에 값이 들어가므로, temp[ix+1] = m_data[ix]의 전달이 이뤄진다. for ( int i = ix; i < m_length + 1; i++ ) { temp[ i + 1 ] = m_data[ i ]; } // 인서트 인덱스에 value 넣기 temp[ ix ] = value; // ix 전까지 기존 밸류 복사 for ( int i = ix - 1; i >= 0; i-- ) { temp[ i ] = m_data[ i ]; } // 기존 데이터 메모리 삭제 delete[ ] m_data; // 새롭게 인서트된 메모리 저장 m_data = temp; // 길이 +1 m_length += 1; } void remove(const int& ix) { // 제거를 위한 새로운 메모리 공간할당 int* temp = new int[ m_length - 1 ]; // 제거할 인덱스(ix)를 기준으로 값의 paste // step1. ix전의 값은 정상복사 for ( int i = 0; i < ix; i++ ) { temp[ i ] = m_data[ i ]; } // step2. ix기준 우측값의 복사 for ( int i = ix; i < m_length - 1; i++ ) { temp[ i ] = m_data[ i + 1 ]; } // 완료됐으면 기존 메모리 삭제 delete[ ] m_data; // 새로운 메모리 저장 m_data = temp; // 삭제됐으므로 길이 -1 m_length -= 1; } void push_back(const int& value) { // 끝자리 추적후에 그 뒤 새로운 메모리공간 할당후 추가하기 // insertBefore(value, m_length)를 하면? insertBefore(value, m_length); } void showAllEle() const { cout << "m_length: " << m_length << endl; cout << "m_data: "; for ( int i = 0; i < m_length; i++ ) { cout << m_data[ i ] << " "; } cout << endl; } }; int main() { IntArray my_arr{1,3,5,7,9}; my_arr.showAllEle(); my_arr.insertBefore(10,1); my_arr.showAllEle(); my_arr.remove(3); my_arr.showAllEle(); my_arr.push_back(13); my_arr.showAllEle(); } 살짝 지저분하지만, 구현에 목적을 두고 최대한 해봤는데 일단 원하는대로 구현이 되는건 확인했습니다. 추가로 문제가 발생할 수 있거나 아쉬운 부분 피드백을 해주세요! 더 정확하고 깔끔하게 다시 수정해보겠습니다.또한, 마지막 push_back 함수는 insert랑 기능상 비슷해보여서 insert함수를 재활용했는데 이 방법또한 괜찮은것인지 아니면 위험한것인지도 답변해주시면 감사합니다
-
해결됨AWS Certified Cloud Practitioner 자격증 준비하기
Elastic Beanstalk 오류나요
세부 항목도 달라졌고 무시하고 만드니까 이렇게 오류나네요.IAM에서 역할 삭제하고 만들어도 똑같아요
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-H 문제 다른방식 풀이 질문
안녕하세요 큰돌선생님. 해당문제를 재귀dp (탑다운) 방식으로 풀어봤는데 잘 풀리지 않아 질문드립니다. 우선 해당문제 조건에 더불어 그냥 동전의 종류를 1, 2, 5로 픽스를 한다고 가정하여 문제를 풀어보았습니다. #include <bits/stdc++.h> using namespace std; int N, dp[100][100][100]; int go(int n1, int n2, int n5, int num) { if (num == N) return 1; int &ret = dp[n1][n2][n5]; if (ret) return ret; if (num + 1 <= N) ret += go(n1 + 1, n2, n5, num + 1); if (num + 2 <= N) ret += go(n1, n2 + 1, n5, num + 2); if (num + 5 <= N) ret += go(n1, n2, n5 + 1, num + 5); return ret; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> N; cout << go(0, 0, 0, 0) << '\n'; return 0; }dp배열의 원소는 1, 2, 5원 동전의 개수로 잡았고, 동전의 값이 N이 되었을때 return 1을 해주고 경우의수 문제라서 더해주는 방식으로 문제를 풀어보았습니다. 혹시 어떤 부분이 잘못되었나요? 이전 7-E 문제와 유사한 방식으로 풀어보았습니다. 또한 추가로 만약 1, 2, 5원을 픽스하지 않고 해당 문제의 조건 그대로 문제를 해결한다면 선생님께서는 어떻게 문제를 해결하실지 궁금합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
정답코드 40번째 줄 지도 업데이트 시점에 대한 질문입니다!
http://boj.kr/5d7d83e1069547288f02236c01cc8d5a위는 정답 코드입니다! 40번째 라인에서 a(인구 지도)를 업데이트 하는 위치가 이중 for문을 벗어난 다음이 되어야 하는 것이 아닌지 문의 드립니다. 이중 for 문 안에서 지도를 업데이트 하게 된다면, 원래라면 이동이 불가능한 지역간의 이동이 가능하게 될것 같습니다. 예를 들어3 10 110 50 4040 20 300 0 0 위와같이 진행한다고 한다면dfs가 한번돌고 나면 지도가 다음과 같을것 같습니다0 35 3540 35 350 0 0 이 상태에서 다음 dfs를 돈다면0 36 3636 36 360 0 0이 되면서 하루만에 전부 통합되는 상태가 되지 않을까 싶습니다! 실제로 코드를 돌려보면3 10 110 50 40 40 20 30 0 0 01다음과 같이 나옵니다! 정답은 2여야 하지 않을까 싶어서 질문합니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-D 불! 메모리 초과 질문 있습니다.
안녕하세요 큰돌님, 다름이 아니라 제가 영상에 나왔던 코드를 읽기 편하게 bfs 함수를 따로 함수를 만들어서 예제 입력을 받으면 프로그램이 잘 실행되는데, 제출을 하면 메모리 초과가 뜨네요, 혹시 어떻게 된 경우인지 여쭤보고 싶습니다. 미리 감사합니다!https://www.acmicpc.net/source/share/91f2eb33d6904a5ab55d7d851f317595
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
도메인 이름
강의에서 이세계의 집 주소 별칭을 현실 세계의 도메인으로 빗대어 설명해 주신 부분에 대한 질문입니다.1. 강의를 들을 때 '서울에 있는 컴퓨터' == 강의를 듣고 있는 내 노트북, '대전에 있는 컴퓨터' == 인프런 사이트의 서버 쯤으로 이해하는 게 맞을까요?처음에는 간단하게 친구 컴퓨터와 내 컴퓨터 사이의 카카오톡으로 데이터를 주고 받는 상황 으로 이해 헀는데, '대전에 있는 컴퓨터'의 주소에 도메인 이름이 붙는 걸 보니 이해가 안 가더라구요. 내 컴퓨터에 spring.com 이라는 주소 이름이 붙을리가 없으니까요.친구 컴퓨터와 내 컴퓨터 사이의 카카오톡 통신은 '친구 노트북와 카카오 서버와의 통신' + '카카오 서버와 내 노트북의 통신' 으로 나뉜다고 이해하는 게 맞을까요? 만약 위에서 카카오톡을 예시로 든 내용이 맞는 내용이라면 추가로 더 궁금한 게 있습니다.채팅 어플에선 어떤 HTTP Method를 사용하나요? 내가 친구에게 카톡을 보낸다면 POST 같은 메소드를 쓸 수 있을 것 같긴한데, 그건 내가 '보내기' 버튼을 이용해서 카카오 서버에 요청하는 것으로 생각해봤습니다. 그런데 친구에게서 오는 카톡은 어떻게 나에게 오는 건지는 도무지 생각이 나질 않습니다. 내 컴퓨터에서 카톡 서버에 실시간으로 계속해서 GET과 같은 메소드로 요청을 하는 것은 아닌 것 같아서요. 카카오와 같은 서버가 내 컴퓨터로 요청하는 경우가 있다면, 내 컴퓨터는 따로 도메인 주소를 갖고 있지 않으니 그냥 내 컴퓨터 IP를 사용하나요?
-
미해결ARM Cortex-M 프로세서 프로그래밍
메모리 맵 질문
메모리 맵 자체는 data width가 1바이트인데, 0xE000ED00의가 가리키는 값은 왜 4바이트 인가요?
-
해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
오답처리 원인
import java.util.ArrayList; import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] nums = new int[n]; Maininf = new Main(); ArrayList<Integer> answerList = inf.solution(nums); for (int i : answerList) { System.out.print(i + " "); } } public ArrayList<Integer> solution(int[] nums) { ArrayList<Integer> answerList = new ArrayList<>(); answerList.add(nums[0]); for (int i = 1; i < nums.length; i++) { if(nums[i] > nums[i-1]) { answerList.add(nums[i]); } } return answerList; } }위는 제 코드인데.. IDE에서는 결과가 잘 리턴되는데, 채점 사이트에서 리턴이 자꾸 0으로 나온다고 오답처리합니다..! 문제가 뭔지 모르겠습니다
-
미해결Practical Testing: 실용적인 테스트 가이드
Controller와 Service간의 requestDto를 구분하는 측면
충분히 공감가고 이해되는 내용입니다! 좋은 내용 설명해주셔서 감사합니다!그렇다면 responseDto도 순수 서비스 응답과 ,각 컨트롤러 별 응답으로 구분하는게 좋을까요?
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
video 버튼 만들기에서 Stack 이 잘안됩니다.
import 'dart:io'; import 'package:flutter/material.dart'; import 'package:image_picker/image_picker.dart'; import 'package:video_player/video_player.dart'; class CustomVideoPlayer extends StatefulWidget { final XFile video; const CustomVideoPlayer({required this.video, super.key}); @override State<CustomVideoPlayer> createState() => _CustomVideoPlayerState(); } class _CustomVideoPlayerState extends State<CustomVideoPlayer> { // 비디오 플레이어 같은 경우 컨트롤러를 사용해서 위젯을 구성해 줘야한다. VideoPlayerController? videoController; @override void initState() { super.initState(); initializeController(); } initializeController() async { videoController = VideoPlayerController.file( File(widget.video.path), // 이미지 피커에서 가져온 XFile 이랑 형식이 같지않아 dart:io 에 File에다가 변경해줘서 넣어준다. ); // 초기화하라 await videoController!.initialize(); setState(() {}); } @override Widget build(BuildContext context) { if (videoController == null) { return CircularProgressIndicator(); } return AspectRatio( // 비율 맞추는 위젯, 옵션 aspectRatio: videoController!.value.aspectRatio, child: Stack(children: [ VideoPlayer( videoController!, ), _Controler(), ]), ); } } class _Controler extends StatelessWidget { const _Controler({super.key}); @override Widget build(BuildContext context) { return Container( color: Colors.black.withOpacity(0.5), child: Row( crossAxisAlignment: CrossAxisAlignment.stretch, mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ renderIconButton( onPressed: () {}, iconData: Icons.rotate_left, ), renderIconButton( onPressed: () {}, iconData: Icons.play_arrow, ), renderIconButton( onPressed: () {}, iconData: Icons.rotate_right, ), ], ), ); } Widget renderIconButton({ required VoidCallback onPressed, required IconData iconData, }) { return IconButton( onPressed: onPressed, iconSize: 30.0, color: Colors.white, icon: Icon(iconData), ); } }해당 코드 로직입니다.!
-
미해결함수형 프로그래밍과 JavaScript ES6+
flatMap 관련 질문드립니다~
안녕하세요 선생님~~지금까지 모르는거 있어도 그냥 계속 반복해서 보고, log 찍어보면서 해결했는데flatMap 부분에서 도저히 이해 안 가는 부분이 있어서 이렇게 질문드립니다 ㅠㅠ.. 우선 왜 map을 먼저하는지 모르겠습니다..중첩배열을 먼저 평탄화 시켜주고 그 다음 map을 했을때에는 예상치 못한 결과나 에러가 발생하지 않았는데요.map을 먼저 하게 되면 중첩 배열을 받아서 전달된 함수를 실행하는 부분에서 계속 결과값이 이상해 집니다... ㅠㅠ사실 당연한 결과인데 map이든 L.map이든 [1,2,[3,4],[5]] 이런 중첩배열을 받아서 순회를 하고a => a+10 이런 함수를 실행하면 당연히 결과 값이 이상해지는데 선생님 코드에서는 어떻게 제대로 작동 되는 건지 궁금합니다...;;만약 L.flatMap(a => a, [1, 2, [3, 4], [5]]) 이런식으로 하면 그냥 a를 반환만 하니까 중첩배열이 반환 되고 L.flatten 에서 평탄화 되니까 별문제 없는데 a =>a +10 이런식의 함수를 넘겨주면 결과값이 이상해집니다...ㅠ 뭐가 문제 인지 힌트 부탁드립니다~ const curry = fn => (a, ...args) => args.length ? fn(a, ...args) : (...args) => fn(a, ...args); const reduce = (fn, iter, acc) => { if (!acc) { iter = iter[Symbol.iterator](); acc = iter.next().value; } for (const a of iter) { acc = fn(acc, a); } return acc; } const L = {}; L.map = curry(function* (fn, iter) { for (const a of iter) { yield fn(a) } }); const isIterable = (a) => a && a[Symbol.iterator] L.flatten = function* (iter) { for (const a of iter) { if (isIterable(a)) { yield* a } else yield a } } const map = curry((fn, iter) => { const res = []; for (const a of iter) res.push(fn(a)) return res; }) const take = curry((limit, iter) => { const res = []; for (const a of iter) { res.push(a) if (res.length === limit) return res; } return res; }); const go = (...args) => reduce((a, fn) => fn(a), args); const pipe = (f, ...fn) => (...args) => go(f(...args), ...fn); // L.flatMap L.flatMap = curry(pipe( L.map, L.flatten )); const iter = L.flatMap(a => a + 10, [1, 2, [3, 4], [5]]) console.log(...iter) // 결과값 11 12 3 , 4 1 0 5 1 0
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
1.가장 큰 수 질문드립니다
안녕하세요 교수님강의 중 질문이 있어 글 작성드립니다.마지막에 m이 0보다 클 경우 뒤에서 자르셨는데 stack에 저장되는 값이 1번 예제 7823처럼 항상 내림차순은 아니라 다른 방법으로 풀이해야하지 않나요?
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
플러터 [초보] 쳅터 14의 두번째강의 에서 7분20초대
안녕하세요, 코드팩토리님 질문있습니다!쳅터 14의 두번째강의 에서 7분20초대에 routetwo스크린에서 팝하면 routeone스크린으로 가야하는거 아닌가요? 왜 팝했는데 home스크린으로 가는건가요?답변 부탁드립니다!
-
미해결
JPA 연관관계시 PK id가 숫자가 이어짐
JPA 연관관계를 맺어서 게시글과 댓글을 구현하는데 각 테이블이 1번으로 시작하는게 아니라 이어지는 상황이 생겨서 이게 정상적인가 의문이 들어서 질문을 드립니다. 기능은 제대로 돌아가는데 등록, 수정, 삭제 잘되는데 제가 알기론 id는 auto_increment 기능이면 각자 테이블에서 1번 부터 시작해서 자동증가로 알고있는데 여기는 이어지다 보니 의문이 생겨서 코드@Entity(name = "board") @ToString @Table @Getter @NoArgsConstructor public class BoardEntity extends BaseEntity{ @Id @GeneratedValue @Column(name = "board_id") private Long boardId; private String title; private String contents; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "member_id") private MemberEntity member; @OneToMany(mappedBy = "boardEntity", cascade = CascadeType.ALL) // 댓글 정렬 @OrderBy("id asc") private List<CommentEntity> comments = new ArrayList<>(); @Builder public BoardEntity(Long boardId, String title, String contents, MemberEntity member, List<CommentEntity> comments) { this.boardId = boardId; this.title = title; this.contents = contents; this.member = member; this.comments = comments; } } @Entity(name = "comment") @Table @Getter @NoArgsConstructor public class CommentEntity extends BaseTimeEnity{ @Id @GeneratedValue @Column(name = "comment_id") private Long id; private String comment; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "board_id") private BoardEntity boardEntity; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "member_id") private MemberEntity memberEntity; @Builder public CommentEntity(Long id, String comment, BoardEntity boardEntity, MemberEntity memberEntity) { this.id = id; this.comment = comment; this.boardEntity = boardEntity; this.memberEntity = memberEntity; } } @RequiredArgsConstructor @Service @Transactional public class CommentService { private final CommentRepository commentRepository; private final MemberRepository memberRepository; private final BoardRepository boardRepository; // 댓글 작성 public ResponseEntity<?> save(Long boardId, CommentDTO commentDTO, String memberEmail) { MemberEntity findMember = memberRepository.findByMemberEmail(memberEmail); BoardEntity findBoard = boardRepository.findById(boardId) .orElseThrow(EntityNotFoundException::new); List<CommentEntity> commentEntities = new ArrayList<>(); if(findMember != null) { CommentEntity commentEntity = CommentEntity.builder() .comment(commentDTO.getComments()) .boardEntity(findBoard) .memberEntity(findMember) .build(); CommentEntity saveComment = commentRepository.save(commentEntity); commentEntities.add(saveComment); findBoard = BoardEntity.builder() .boardId(findBoard.getBoardId()) .title(findBoard.getTitle()) .contents(findBoard.getContents()) .member(findMember) .comments(commentEntities) .build(); boardRepository.save(findBoard); CommentDTO commentDTO1 = CommentDTO.toCommentDTO(saveComment); return ResponseEntity.ok().body(commentDTO1); } else { return ResponseEntity.notFound().build(); } } // 댓글 삭제 public String remove(Long boardId, Long commentId, String memberEmail) { BoardEntity findBoard = boardRepository.findById(boardId) .orElseThrow(EntityNotFoundException::new); CommentEntity findComment = commentRepository.findById(commentId) .orElseThrow(EntityNotFoundException::new); MemberEntity findMember = memberRepository.findByMemberEmail(memberEmail); boolean equalsEmail = findMember.getMemberEmail().equals(findComment.getMemberEntity().getMemberEmail()); boolean equalsId = findComment.getBoardEntity().getBoardId().equals(findBoard.getBoardId()); if(equalsEmail && equalsId) { commentRepository.deleteById(findComment.getId()); return "댓글을 삭제했습니다."; } else { return "해당 이메일의 댓글이 아닙니다."; } } // 댓글 수정 public ResponseEntity<?> update(Long boardId, Long commentId, CommentDTO commentDTO, String memberEmail) { BoardEntity findBoard = boardRepository.findById(boardId) .orElseThrow(EntityNotFoundException::new); CommentEntity findComment = commentRepository.findById(commentId) .orElseThrow(EntityNotFoundException::new); MemberEntity findMember = memberRepository.findByMemberEmail(memberEmail); boolean equalsEmail = findMember.getMemberEmail().equals(findComment.getMemberEntity().getMemberEmail()); boolean equalsId = findComment.getBoardEntity().getBoardId().equals(findBoard.getBoardId()); List<CommentEntity> commentEntities = new ArrayList<>(); if(equalsEmail && equalsId) { findComment = CommentEntity.builder() .id(findComment.getId()) .comment(commentDTO.getComments()) .boardEntity(findBoard) .memberEntity(findMember) .build(); CommentEntity saveComment = commentRepository.save(findComment); commentEntities.add(saveComment); findBoard = BoardEntity.builder() .boardId(findBoard.getBoardId()) .contents(findBoard.getContents()) .title(findBoard.getTitle()) .member(findBoard.getMember()) .comments(commentEntities) .build(); boardRepository.save(findBoard); CommentDTO returnComment = CommentDTO.toCommentDTO(saveComment); return ResponseEntity.ok().body(returnComment); } else { return ResponseEntity.badRequest().body("일치하지 않습니다."); } } }
-
미해결홍정모의 따라하며 배우는 C언어
3.13 불리언형 질문
b1=0;b1=1;이걸 왜 해줘야 되나요?
-
해결됨친절한 블렌더 - [LV.0] 입문 필수
중급 수업 문의
안녕하세요! 강의 넘 재밌어요ㅎㅎㅎLevel2 중급 수업도 준비 중이신지 궁금해요
-
미해결리눅스 입문 - 개념으로 탄탄히!!
grep 커맨드에 인수 하나만 전달한 경우
안녕하세요 강사님, 질문이 있습니다. grep 커맨드에서 인수 하나만 입력했을 때 그 결과가 무엇을 의미하는지 궁금합니다. 예를들어, 아래와 같이 패턴만 입력하고 file을 입력하지 않은 상태에서 엔터를 누르면, 커서가 아래에 위치하며 아무일도 일어나지 않고 있습니다.grep "startup" | <- 커서가 위치하며 아무런 일도 일어나지 않음나머지 인수를 입력 받길 기다리는 건가요?여기서 Ctrl + C를 누르면 원래 프롬프트로 돌아오는 것은 확인했습니다.저 결과는 어떤 것을 의미하는지 궁금합니다.
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
카페 가입 관련 문의
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강의중에 Rookiss 네이버 카페를 보여주시는데, 해당 카페에 가입하기 위한 조건이 있을까요?
-
해결됨자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 1(기초편)
singleton pattern
싱글톤 패턴으로 클래스 작성시 private static Company company = new Company();라고 작성을 하였는데 프로그램 실행 부터 메모리에 올라가는 static 필드가 바로 인스턴스를 생성하는건가요? static 필드와 인스턴스의 생성 시점이 충돌하지는 않나요?클래스 로딩과 static 필드 중 어떤게 먼저 메모리에 잡히는지 궁금합니다.