분류 전체보기380 자바의 변수와 메서드는 메모리에 어떻게 표시될까 2 자바의 변수와 메서드는 메모리에 어떻게 표시될까 2 전역변수와 메모리 두 메서드 사이에 값을 전달하는 방법은 메서드를 호출할때 인자를 이용하는 방법과 메서드를 종료할 때 반환값을 넘겨주는 방법이 있다. 또한 한가지 방법이 더 있는데, 그것은 바로 전역 변수를 사용하는 것이다. share 변수에 static 키워드가 붙어 있다. 그래서 share 변수는 스태틱 영역에 변수 공간이 할당 된다. 그것도 class 안에 정의가 되었기 때문에 스태틱 영역에 배치될 때 그 안에 share 변수가 클래스의 멤버로 공간을 만들어서 저장된다. 7번째 줄을 실행하기 위해서 main 메서드 스택 프레임에 k 변수 공간이 만들어 진다. 이어서 제어는 fun() 메서드가 있는 12번째 줄로 넘어간다. 그럼 func() 메서드 .. 2022. 10. 6. 자바의 변수와 메서드는 메모리에 어떻게 표시될까 1 자바의 변수와 메서드는 메모리에 어떻게 표시될까 1 자바 프로그램의 개발과 구동 현실 세계에서 소프트웨어, 즉 , 프로그램은 개발자가 개발 도구를 이용해서 개발하고, 운영체제를 통해서 물리적 컴퓨터인 하드웨어에서 구동된다. 자바도 똑같다. 자바 개발 도구인 jdk를 이용해서 개발된 프로그램은 jre에 의해 가상의 컴퓨터인 jvm상에서 구동된다. 컴퓨터 : JVM 운영체제 : JRE 자바개발도구 : JDK JDK는 자바 소스 컴파일러인 javac.exe를 포함하고 있다. JRE는 자바 프로그램 실행기인 java.exe를 포함하고 있다. 자바가 이런 구조를 택한 이유는 기존 언어로 작성한 프로그램은 윈도우 95용, 7용, 8용, 리눅스용 등 각 플랫폼용으로 배포되는 설치파일을 따로 준비해야 했던 불편함을 없.. 2022. 10. 5. 기계어부터 객체지향에 이르기까지 정리 기계어부터 객체지향에 이르기까지 정리 @기계어 인류 최초의 프로그래머들은 꺼진 상태와 켜진 상태를 각각 0과 1로 해석할 수 있는 진공관을 이용해서 프로그램을 작성했다. 기계어는 기계가 이해하는 유일한 언어로 2진 숫자인 0과 1로만 표현된다. 기계어 코드는가 CPU에 따라 다르다. 애드삭 1+ 3 01010101 11110000 11001100 유니박 1 + 3 00111100 11100001 11001000 @어셈블리어 기계어를 벗어나 인간의 언어로 프로그래밍을 시작할 수 있게됨. 기계어의 명령들을 일상 용어로 표현하고 이걸 기계가 알 수 있는 기계어로 번역하게 하면 어떨까? 라는 생각을 하는 사람들이 생겨남. 실제로 개발자들은 기계어를 일상 용어로 표현했다. 그 결과 기계어 명령어와 일상용어를 일대.. 2022. 10. 4. mac에서 gitlab과 sourceTtree 연동 후 push 까지 mac에서 gitlab과 sourceTtree 연동 후 push 까지 순서 1.깃랩에 (저장소)리파짓토리 생성하기 2.sourcetree 다운로드 2.소스트리 open 후 메인 화면에서 로컬 -> 새로 만들기 -> 로컬 저장소 추가하기 클릭 3.로컬 리파지토리(저장소)로 지정할 내가 만든 폴더 선택하기 (테스트로 바탕화면에 아무 폴더 선택) 4.그럼 sourceTree 메인에 내가 선택한 나의 로컬 저장소(리파짓토리)가 생성됨 5.나의 로컬 리파짓토리 더블클릭 - 커밋 메시지 작성 후 - 커밋하기 6.상단 제일 우측에 설정아이콘 클릭 -> 원격 아이콘 클릭 7.깃랩에서 만든 저장소 주소 작성 -> 확인 클릭 (깃랩 저장소 주소는 깃랩 저장소 메인 페이지에서 clone 버튼 클릭하면 보임) 8.push 9.. 2022. 9. 20. ios LFLiveKit 라이브러리 이용해서 RTMP 구현 예제 ios LFLiveKit 라이브러리 이용해서 RTMP 구현 예제 ios 에서 rtmp 실시간 스트리밍을 구현하기 위해서 이곳에서 라이브러리를 받아주세요. podfile에 추가하신 후 pod install 명령어로 설치를 해봅니다. 헤더파일 생성 위의 rtmp 라이브러리를 swift에서 사용하기 위해서 헤더 파일을 만들어 줍니다. 그리고 rtmp 라이브러리를 import 해줍니다. #ifndef Bridging_Header_h #define Bridging_Header_h #import #endif /* Bridging_Header_h */ 그리고 빌드셋팅으로 가셔서 Bridging Header 부분에 위 브릿지 헤더 파일 경로를 작성해 줍니다. 변수 선언 먼저 LFLiveSession 타입의 변수를 선언.. 2022. 9. 16. nginx rtmp를 이용해서 실시간 스트리밍 구현 예제(HLS 프로토콜 추가) nginx rtmp를 이용해서 실시간 스트리밍 구현 예제(HLS 프로토콜 추가) 지난 시간에 이어서 nginx의 rtmp 모듈을 이용해서 실제로 유저간 방송을 송출하고, 실시간으로 방송을 수신하는 예제를 구현해 보겠습니다. 실시간 스트리밍에 관련한 기본 개념들은 이 포스팅(NGINX에서 RTMP와 FFmpeg 라이브러리를 이용한 HLS 송신 예제)을 참고해주세요. 전부 읽는데 15분 정도 걸립니다. 준비사항은 nginx 서버와 nginx rtmp 모듈이 설치되어 있고, 설정이 되어 있어야 합니다. 이번에 구현할 시나리오는 아래와 같습니다. 시나리오 [1] 시나리오 rtmp -> hls 1-1.유저 A가 OBS 스튜디오를 이용해서 실시간 방송(rtmp 프로토콜 이용) 1-2.nginx-rtmp 서버가 받아.. 2022. 9. 16. NGINX에서 RTMP와 FFmpeg 라이브러리를 이용한 HLS 송신 예제 NGINX에서 RTMP와 FFmpeg 라이브러리를 이용한 HLS 송신 예제 제목이 좀 거창하네.. 쉽게 요약하면 "우분투에 있는 영상하나를 실시간으로 브라우저 player에서 볼 수 있도록하기" 입니다. 일단 구현할 예제는 하나입니다. 나의 우분투 서버에 있는 영상을 어떤 웹브라우저의 player에서 볼수 있게 하기! 말은 간단한데 여기에 필요한 사전 지식들이 너무 너무 많습니다. 일단 필요한 준비물을 작성해 보겠습니다. [1] ubuntu 18 [2] nginx [3] nginx-rtmp 모듈 [4] HLS - HTTP Live Streaming 프로토콜 [4] FFmpeg [5] 영상 [6] 영상을 실시간으로 받아서 재생할 player 기능이 있는 브라우저 위의 준비물에 대해서 간단하게 설명을 하고 .. 2022. 9. 15. ios MQTT 통신 - swift로 구현하기 ios MQTT 통신 - swift로 구현하기 준비물 [1] xcode 툴 [2] ios용 MQTT 클라이언트 라이브러리(https://github.com/emqx/CocoaMQTT) 위의 주소로 들어가셔서 pod 파일 확인하시고, 프로젝트의 pod 파일에 라이브러리 명을 입력해주시고 pod install 을 해주세요. 여기서는 pod 관련한 내용은 자세히 다루지 않을거에요. 라이브러리를 설치하셨다고 가정하고 진행할게요. [3] MQTT 브로커 역할을 해줄 서버 이 내용은 네트워크-우분투 MQTT 서버구축과 기본 개념 이 곳을 참고해주세요. 스토리보드 아래 이미지 처럼 스토리 보드를 작성해 주었습니다. 색깔별로 되어 있는 버튼들은 MQTT 통신 구독과 발행 또는 연결, 연결 종료를 처리합니다. 아래 모니.. 2022. 9. 14. 우분투 MQTT 서버구축과 기본 개념 우분투 MQTT 서버구축과 기본 개념 우분투로 MQTT 서버를 구축하는 법에 대해서 알아봅시다. 먼저 준비물은 우분투 16 or 18 버전이 필요합니다. MQTT 개념 MQTT는 HTTP, TCP/IP 같은 통신 프로토콜입니다. 프로토콜이란 규약, 약속이라는 뜻이 있습니다. HTTP를 예로들면, HTTP의 약속,규약은 클라이언트가 서버로 요청을 보내면, 서버는 응답값을 클라이언트로 보내고 연결을 끊는다는 약속이 있습니다. MQTT의 약속은 브로커를 통해서 메시지를 발행하고, 메시지를 구독한다는 약속이 있습니다. 브로커란 말그대로 대상과 대상을 연결해주는 역할을 합니다. 예를들어 우분투에서 작동하고 있는 MQTT 서버가 될 수 있죠. 그럼 발행의 주체와 구독의 주체는 누가 될까요? 스마트폰이 될 수도 있고.. 2022. 9. 14. 이전 1 2 3 4 5 6 7 8 ··· 43 다음