| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- numpy
- 디자인 패턴
- rubikpi
- 라즈베리파이 os
- ios
- 2025 정보처리기사
- 라즈베리파이 개발환경
- 라즈베리파이 메모리
- ondevice ai
- java 클래스 로딩
- 라즈베리파이 led
- java 실행과정
- 라즈베리파이
- 제트팩 컴포즈
- 네트워크프로그래밍
- SWIFT
- static 맴버 로딩
- 절차 지향 언어
- 라즈베리파이 회로
- 개방폐쇄 원칙
- 객체 지향 언어 vs 절차 지향 언어 차이점
- Xcode
- 2025 정보처리기사 필기
- 안드로이드
- jetpack compose
- 자바 소켓통신
- 프로그래밍뷰
- qualcomm ai hub
- 포트넘버
- autolayout
- Today
- Total
목록분류 전체보기 (39)
From_Base
자바 프로그램이 실행될 때, 클래스 로딩(Class Loading) 과정과 함께 static 멤버(필드 및 메서드) 로딩이 어떻게 이루어지는지 이해하는 것은 자바 프로그래밍의 전체 시스템을 이해하는데 큰 도움이됩니다. 본 글에서는 JVM(Java Virtual Machine)이 프로그램을 실행하는 과정과, static 멤버가 언제, 어떻게 메모리에 적재되는지를 정리해 보겠습니다. 1️⃣ 클래스 로딩이란?클래스 로딩(Class Loading)은 디스크(하드디스크 or SSD)에 저장된 .class 바이트코드 파일을 JVM이 읽어서 메모리에 적재하는 과정을 의미합니다. 즉, 실행을 위해 필요한 클래스의 정보(메타데이터, 메서드 코드, 정적 변수 등)가 적절한 메모리 영역에 배치됩니다. 📌 클래스 로딩의 ..
📝 현행 시스템 분석 & 파악 절차 3단계내가 무턱대고 최신 기술을 사용해서 sw프로그램을 만들어서 회사에 넘겨준다고해도, 해당 회사의 시스템이 구형이라면 큰일. sw를 개발할때, 이 회사가 어떻게 굴러가는지 - 하는일이 뭔지 - 여기에 어떤 컴퓨터가 설치되어있는지 - 어떤 인터넷 쓰는지 데이터베이스는 뭐쓰는지 등 분석을 해야함. 즉, 새로 개발하려는 시스템의 개발 범위를 명확히 설정하기 위해 현행 시스템의 구성과 제공 기능, 시스템 간의 전달 정보, 사용되는 기술 요소, 소프트웨어, 하드웨어, 그리고 네트워크 구성 등을 파악하는 것 = > 현행 시스템 파악 1단계시스템 구성 파악 (회사에 가서 시스템 파악: 수출하는 업체인지, 무슨 업무하는 업체인지)시스템 기능 파악 (주요기능, 하부기능,세부기능으..
📝 sw의 특징- 상품성 - 복잡성- 변경 가능성- 복제성 📝 시스템의 개요와 기본 요소시스템?- 하나의 컴퓨터 조직. 하나의 목적을 위해 여러 컴퓨터 요소들이 유기적으로 결합된 것 시스템 기본 요소- 입력, 처리, 출력, 제어, 피드백 📝 소프트웨어 생명 주기소프트웨어 개발 방법론(sw 개발&유지보수 등 작업들을 수행하는 방법들을 체계적으로 정리해서 표준화 해놓은 일종의 방법론)의 바탕이 된다. sw 개발을 하는 개발자에게 의뢰자가 ~~sw를 만들어주세요 의뢰를하면서 ~~이런이런 기능들이 있었으면 좋겠다라고 요구사항들을 말해줄텐데, 이 요구사항들을 분석하고 설계 후 -> 그 설계에 맞는 sw를 개발. 개발하고나서 끝이 아니라, 개발된 그 sw가 항상 최신의 상태를 유지할 수 있게끔 운용,유지보..
라즈베리파이 실습 및 개발과정에서 putty 및 리눅스 터미널을 통해 시스템을 조작하고, vi editor로 코딩을 하다보면 굉장히 번거롭고 가시성이 떨어진다. 이를 위해 putty를 통해 원격 터미널로 작업하는 경우 & 리눅스 터미널로 작업하는 경우에는 vim 에디터로 업그레이드 하는 것을 권장한다. 물론 이보다 가장 편한 방법은, VSCode를 통한 원격 개발환경이다. vim 설치: 빔(vim)은 vi 편집기의 향상된 버전으로(vi improved), 기존 vi보다 향상된 기능을 가지고있다. vim 설치는 아래 명령어를 통해 설치할 수 있다.sudo apt-get install vim vim을 설치한 후, 일련의 설정을 해주어야 부가 기능들을 활성화 시킬 수 있다.아래 명령어를 통해 홈 ..
라즈베리파이 os 구축부터 전체적인 개발환경 setting까지 정리해보고자 한다. 1. Raspberry Pi Imager 다운로드 & 실행 우선 노트북이나 데스크톱에, 라즈베리파이 운영체제 설치 프로그램인 Imager를 다운로드받고 실행해준다. 실행시 아래와 같은 프로그램이 나타나는데, 이때 디바이스 섹션에서는 현재 보유한 라즈베리파이 기종( 본 프로젝트에서는 라즈베리파이4B 2gb 모델이다)을 선택해준다. 그 다음 섹션인 운영체제의 섹션의 경우, 선택한 기종에 맞는 추천된 os들이 리스트로 나타나는데, 그 중에서 최 상단에 위치한 Bookworm 64-bit os 를 선택해준다. 하단 이미지에 보이듯이 Recommended로 자동 추천해준다. 이때 os를 선택하는 부분에 있어서 중요한 것..
📌 행렬 병합/연결 concatenate : 행렬에 행 또는 열 추가하기 NumPy에서 행렬에 행 또는 열을 추가하고싶다면 numpy.concatenate(A,B) 와 같이 concatenate 메서드를 사용하면 된다.기존행렬에 재료행렬을 병합함으로써 기존 행렬에 행이나 열을 추가하는 효과를 얻을 수 있는 것이다.C = numpy.concatenate( (A, B), axis = n ) 이때 concatenate의 첫번째 매개변수는 (병합 대상 행렬, 병합시킬 행렬)로 이루어진 튜플이고. 두번째 매개변수는 axis로, 병합의 축을 설정하는 매개변수이다.행렬 병합의 경우 axis값은 0 or 1로, axis=0 인 경우 병합의 축이 행으로 설정되어 - > 행 방향으로 연결, 즉 행렬의 하단에 행렬이..
📌 행렬 곱 dot product : NumPy에서 행렬 A,B간의 행렬 곱을 수행하려면 numpy.dot(A,B) 와 같이 dot 메서드를 사용하면 된다. C = numpy.dot(A,B) 이때 dot product의 조건으로, 앞의 행렬인 A 행렬의 열 벡터와 뒤의 행렬인 B 행렬의 행 벡터가 같아야만 행렬 곱이 가능하다.즉, 앞부분의 열과 뒷부분의 행의 크기가 동일해야한다. 행렬 A: shape이 (m, n) 인 행렬. 즉, m개의 행과 n개의 열을 가진 행렬행렬 B: shape이 (p, q) 인 행렬. 즉, p개의 행과 q개의 열을 가진 행렬A x B 행렬 곱 결과인 행렬 C: shape이 (m, q) 인 행렬이 연산 결과로 도출된다. C = (A의 행 개수, B의 열 개수) 행렬 곱셈 ..
넘파이? 왜 사용할까 넘파이 라이브러리는, 파이썬을 이용하여 머신러닝/딥러닝을 개발할 경우에 매우 유용하여 필수적으로 사용되는 라이브러리 넘파이는 우리가 머신러닝 알고리즘을 구현할때 자주사용하는 벡터, 행렬 등을 표현하고 연산할 때 반드시 필요한 라이브러리이다. 행렬 연산에서의 numpy vs list: 특히나 넘파이를 이용한 행렬(matrix) 연산을 하는 경우, 넘파이는 외형적으로는 리스트 자료구조와 비슷해보인다. 둘의 차이는 무엇일까? 아래처럼 2차원 리스트 A와 B로 행렬을 선언한 다음 이 둘을 더하면 행렬 연산인듯 싶지만, 이는 그저 리스트 간의 연산일 뿐이다. A = [ [1,0], [0,1] ]B = [ [1,1], [1,1] ]A + B #이는 행렬 연산이 아닌 그저 리스트..