레지스터 :

cpu 내에서 임시 기억장치(속도가 제일 빠르다) , 병령구조

레지스터의 크기 : 한 번에 처리 가능한 데이터 ( 메모리, 워드크기)

기억장치 접근 속도 비교(빠름> 느림)

레지스터 > 캐시 > DRAM > ROM > 하드디스크 > Zip Disk > CD-ROM > 플로피디스크 > 자기테이프(백업용)

제어장치:

컴퓨터의 모든 동작을 지시하고 제어하는 장치

프로그램 카운터(Program Counter) : 다음에 실행할 명령어의 번지(주소)를 기억, PC

명령 레지스터(Instruction Registe) : 현재 실행 중인 명령의 내용을 기억, IR

명령 해독기(Decoder) : 해독된 명령에 따라 각 장치로 보낼 제어 신호를 생성하는 회로(2진수로 변환)

메모리 버퍼 레지스터(MBR) : 데이터를 기억

메모리 주소 레지스터(MAR) : 주소를 기억

연산장치:

가산기(ALU): 덧셈하는 장치

누산기: 연산의 중간 결과 기억

보수기(음수로 변환) 뺄셈하기 위해서 사용하는 장치

상태 레지스터 : 연상중에 발생하는 여러 상태값 (올림수, 부호..) 을 기억(PSW)

중앙처리장치(CPU) 성능에 영향을 미치는 요인 : 클럭 주파수, 캐시메모리, 워드크기

중앙처리장치(CPU) 성능 단위 : 클럭(CLOCK: 주파수가 높을수록 고속), 밉스(MIPS : 1초에 백만개 명령어 실행)

헤르츠(Hz: 시스템 크럭속도, 플롭스(flops : 1초당 부동소수점 연산횟수)

cpu 업데이트시 : 메인보드도 지원되는지 꼭 확인한다

메인보드 구성

agp슬롯 : 그래픽 끼우는 부분

칩셋 : 각 부품들 간의 흐름을 제어, 메인보드의 핵심

롬 바이오스 : 컴퓨터 시작될떄 컴퓨터 제어 및 기본 작업을 처리하는 프로그램

컴퓨터의 기본정보, 부팅에 대한 방법이 기록되어있음.

포트 :

직렬포트: 한번에 1비트씩 전송

병렬포트 : 한번에 8비트씩 전송

usb 포트: 주변장치를 최대 127개 연결

ieee 1394: 가전기기를 컴퓨터에 연결하는 방식

IRDA : 케이블 없이(무선) 적외선으로 연결하는 방식

HDMI: 영상과 음성을 하나의 케이블로 전송하는 디지털 포트(셋톱박스, HDTV, 모니터)

반응형

안녕하세요 코딩초밥입니당

요번에 프로젝트를 하나시작하면서 파이썬을 설치하는데요

개발환경 조성하는것을 공유하겠습니다. 😎

 


파이썬 홈페이지에 들어가셔서

https://www.python.org/downloads/

상단 download를 눌러줍니다.

다운로드를 눌러보시면

아래 add python 3.9 to path 도 눌러주시고

customize installation으로 들어가줍니다.

모든 사항들을 체크해줍니다

이후 다운로드받을 주소 칸도 나오는데

이렇게 길게 만들필요없습니다 c드라이브에 바로 보일수있게 저 파란부분을 삭제시켜줍니다

(꼭 필요한건아닙니다)

다운로드가 완료되었다면

visualcode를 켜봅니다

아직없으신분들은 아래링크에 다운받으시면됩니다 다운로드 누르기만하면 되니

어려운부분은없으실겁니다

https://code.visualstudio.com/

 

Visual Studio Code - Code Editing. Redefined

Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications.  Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.

code.visualstudio.com

비쥬얼스튜디오코드를 키셔서

파이썬을 인식할수있도록 다운작업을 해줍시다.

그런후 pythontest.py라는 파일을만들고

print("hello world")

라고 테스트 코드를 입력한후

RUN AND DEBUG 칸으로 들어가셔서(벌레모양)

런을시켜봅니다

이런창이나오시면 Python file을 선택해줍니다

이렇게 hello world가 출력이된다면 성공입니다.😋

 

반응형

안녕하세요 코딩초밥입니다

파이썬을 실행하는데 파이참을 설치를 하는 방법이 보편적이지만

좀더 가볍게 시작하기 위하여

메모장 업그레이드 버전인 notepade를 설치하여

파이썬을 실행하는법을 알아보겠습니다  😍😀

 

 

 

https://notepad-plus-plus.org/downloads/

 

Downloads | Notepad++

 

notepad-plus-plus.org

1. 노트페드 사이트에 들어가셔서 notepad 를 다운받습니다

여기서 맨위에 notepad++ 7.9.3 release 를 다운받았습니다

저는 오늘날짜에 제일 최신판을 받았고

여러분들은 확인하셔서 제일 최신판을 받아주시면됩니다

이후 이 노트패드에서 파이썬을 시작할수있도록

 

2. 미니콘다를 받아봅시다

 

https://docs.conda.io/en/latest/miniconda.html

 

미니콘다에서 자기가 원하는 타입을 다운받습니다

다운을 다받으셨으면

3. notepade에 플러그인을 다운받아야합니다

notepade의 초기화면입니다

4. NppExec라는 플러그인을 받습니다

그러고 재시작이 된후

그 이후 설정을 몇개하셔야합니다

플러그인 탭에

nppExec를 다시 켜보시면

execute 가 나올겁니다 단축키(f6)

5. 설정을 해주시면되는데

npp_save

(미니 콘다 다운받아진 위치) \python.exe "$(FULL_CURRENT_PATH)"

이렇게 설정을 해주시면됩니다

아래 temporory script 라고 설정되있는건 그냥 건들지않고 실행을시켜주신다면

설정이 다된것입니다

이후 테스트로

print("다들되셨나요")

를 파이썬언어를 쳐보고 f6을 눌러보신다면

아래에 잘 출력되는것을 확인하실수있습니다.

 

반응형

안녕하세요 ㅇㅅㅇ 코딩초밥입니다.

요번에는 어플에서 체크 리스트나 선택한 값을 가져오기 위한

compound button 들을을 만든후 그에 따른 활용에 관한 글을 써보겠습니다.

xml에서는 LinearLayout을 사용하였습니다.

xml쪽에서 아래에 같은 코드를 넣어주시면

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dp"
    tools:context=".MainActivity"
    android:layout_margin="15dp">

    <CheckBox
        android:id="@+id/cb01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Apple"/>
    <CheckBox
        android:id="@+id/cb02"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Banana"/>
    <CheckBox
        android:id="@+id/cb03"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Orange"/>



    <ToggleButton
        android:id="@+id/toggle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textOff="꺼짐"
        android:textOn="켜짐"/>

    <Switch
        android:id="@+id/sw"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Sound"/>

    <TextView
        android:id="@+id/tv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="result"
        android:textStyle="bold"
        android:textSize="30sp"
        android:textColor="#000000"/>


</LinearLayout>

위에코드를 사용을하면 옆에 보이는 checkbox 3개와

togglebutton 한개 switch 버튼까지 가져올수있습니다.

인제 이 버튼들을 눌러서 각 과일의 이름을

result칸에 띄워보도록하겠습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

* 이 글은 코딩 고수들이 보는 글이아닐꺼라 생각이 들어서 코딩 한줄한줄에 모두 설명을 달아놨습니다. 자 저는 주석요정이 되어서 코딩안에서 설명 해보겠습니다

 

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.Switch;
import android.widget.TextView;
import android.widget.ToggleButton;

public class MainActivity extends AppCompatActivity {

    //xml에서 만들 뷰들을 참조하는 참조변수를 먼저 만들어줍니다
    //onCreate 전에 이렇게 변수로 선언를 해주셔야하는데
    // 이렇게 해놔야 어디서든 자신이 사용한 코드안에서 어디서든사용가능합니다.

    private CheckBox cb01, cb02, cb03; //cd01,cd02등 이것은 제마음대로 쓸수있습니다!
     //무조건 이걸써야하는것이아닙니다. 자유롭지만 관련있는 작명을해봅시다.
    private TextView tv;
    private ToggleButton toggleButton;
    private Switch sw;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // xml에서 같이 id를 만들었었죠? xml과 연결해봅시당 findviewById로
        // '이 변수는 xml에서 이것을 뜻하는것입니다~~' 하는 뜻이에용
        // id를 이용해서 뷰들을 찾아와서 참조변수에 대입!
        cb01= findViewById(R.id.cb01);
        cb02= findViewById(R.id.cb02);
        cb03= findViewById(R.id.cb03);
        tv= findViewById(R.id.tv);


        //체크박스의 체크상태가 변경되는 것을 듣는 리스너객체 생성. 코드쓰시다보면 자동완성 될겁니다! 길다고겁내지말기!
        CompoundButton.OnCheckedChangeListener changeListener= new CompoundButton.OnCheckedChangeListener() {
            //체크상태가 변경될 때 마다 실행되는 메소드
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

                //저희가 썼던 과일 이름을 가져온다는 뜻입니다.
                String s=""; //문자열을 저장하는 String 변수값을 가져와 s안에 값을 저장해봅시다!
                if( cb01.isChecked()) s += cb01.getText().toString(); 
                if( cb02.isChecked()) s += cb02.getText().toString();
                if( cb03.isChecked()) s += cb03.getText().toString();
                //if는 만약에라는 뜻으로 만약 cd01이눌러졌다면! s에 값을 담아라!라는뜻이에요

                tv.setText(s); //담기만하면 안되겠죠? textview의 아이디 tv에 그 값을 담아줍니다.

            }
        };
        //위에 만든건 공용이라 생각하시고 위에서 만든 리스너객체를 각 체크박스에 붙이기!
        cb01.setOnCheckedChangeListener(changeListener);
        cb02.setOnCheckedChangeListener(changeListener);
        cb03.setOnCheckedChangeListener(changeListener);


        //토글버튼의 체크상태변경 리스너 생성 해봅시다 토글버튼은 on off를 나타내는 버튼말하는겁니다!
        toggleButton= findViewById(R.id.toggle); //아이디를 가져와야 xml이 연결이되겠죠?
        toggleButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                tv.setText( isChecked + "" ); // 눌러서 끌것인가 킬것인가를 설정할수있는 Listener입니다
            }
        });



        //Switch에 체크상태변경 리스너 객체 생성 및 설정
        sw= findViewById(R.id.sw); //슬라이드 하는거있죠? 그거 말하는거에요 바로그거 on off
        sw.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                tv.setText( isChecked +""); //슬라이드해서 글을 넣을껏인가 뺄것인가하는 Listener입니다
            }
        });
    }
}

처음으로 android를 다루시는분들은 복사 붙이기말고 한번 써보시는걸 권장드려요

연습도 연습이지만..가끔 영어울렁증에 코드도 길어 보여서 거부감을 느끼시는분이 계셔서

자동완성으로 금방 완성되는 코딩과 놀아보시길바랍니다.

반응형

'이과 > JAVA 안드로이드' 카테고리의 다른 글

[안드로이드]ViewPaPer  (0) 2021.04.30
[안드로이드]UI/UX 디자인이란?  (0) 2021.04.27
[안드로이드]Thread2  (0) 2021.04.27
[안드로이드]Thread  (0) 2021.04.26
[안드로이드]Room  (1) 2021.04.25

안녕하세요 코딩 초밥입니다 ㅇㅅㅇ

오늘은 database를 이용하는 room에 대해서 알아보도록 하겠습니다

룸은 3개의 주요 Component로 구성된 걸 알아야 합니다

Entity: 데이터 베이스의 보유자로서 데이터베이스 안에 있는 테이블을 표현합니다

Database: 데이터베이스를 의미합니다

DAO(Data Access Object): 데이터베이스에 접근하는 메소드들이 있습니다. 해당 메소드에 대한 SQLite 쿼리는 직접 작성하여야 합니다.

 

 

Entity

데이터 구조를 표현하기 위한 클래스입니다. DBMS에 이용되기 위한 데이터를 위한 클래스입니다.

@Entiry 어노테이션으로 표현되는 클래스

클래스 내에 @PrimaryKey,@Columninfo등의 어노테이션으로 변수 선언

DAO

실세 DBMS를 위해 호출되는 함수를 선언하는 인터페이스나 추상 클래스입니다.

우리는 인터페이스나 추상 클래스만 정의합니다. 인터페이스나 추상 클래스를 구현해

DBMS를 수행하는 코드는 자동으로 만들어집니다.

@DAO 어노테이션으로 선언

@Quert,@Insert,@Delete등의 어노테이션으로 함수선언

 

Database

데이터베이스 이용을 위한 Dao객체 획득 함수를 제공하는 클래스입니다

Dao 획득 함수는 추상 함수로 정의하며 데이터베이스를 이용하기 위해 가장 먼저 호출됩니다.

@Database어노테이션으로 만드는 클래스

추상 클래스로 작성

Entity를 어노테이션 매개변수로 지정.

 

 

순서

*시작전 ROOM dependencies를 추가시켜줍니다

1. 원하는 xml 형식을 만듭니다.
2. 데이터베이스에 넣을 @ Entity의 class를 만듭니다. (getter setter)

3. Enity class에 접근하기 위한 @Dao interface객체를 만듭니다.

4. RoomDatabase 상복받은 Database 객체를 하나 정의를 한다.

 

1. 원하는 xml 형식을 만듭니다.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="원하는데이타"
        android:id="@+id/ET_TEXT"/>
    <Button
        android:text="추가버튼"
        android:layout_below="@id/ET_TEXT"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/btn"
        ></Button>
    <TextView
        android:text="보여지는 뷰"
        android:layout_below="@id/btn"
        android:id="@+id/text"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></TextView>

</RelativeLayout>

2. 데이터베이스에 넣을 @ Entity의 class를 만듭니다. (getter setter)

 

package com.kim9212.myapplication;

import androidx.room.Entity;
import androidx.room.PrimaryKey;

//꼭만들어야함
@Entity
public class todo {

    //아이디를 내가 직접주지않고 알아서 하는 코드
    @PrimaryKey(autoGenerate =  true)
    private int id;
    private String title;

    public todo(String title) {
        this.title = title;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    @Override
    public String toString() {
        return "todo{" +
                "id=" + id +
                ", title='" + title + '\'' +
                '}';
    }
}

3. Enity class에 접근하기 위한 @Dao interface객체를 만듭니다.

package com.kim9212.myapplication;

import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.Query;
import androidx.room.Update;

import java.util.List;

@Dao
public interface TodoDao {
    @Query("SELECT * FROM todo")
    List<todo> getAll();

    @Insert
    void insert(todo todo);

    @Update
    void  update(todo todo);
    @Delete
    void delet(todo todo);
}

4.RoomDatabase 상복받은 Database 객체를 하나 정의를 한다.

package com.kim9212.myapplication;

import androidx.appcompat.app.AppCompatActivity;
import androidx.room.Room;

import android.os.Bundle;
import android.text.Editable;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    private EditText mtodoEditText;
    private TextView mResultTextview;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mtodoEditText=findViewById(R.id.todo);
        mResultTextview=findViewById(R.id.textView);

        //데이타베이스 객체 db는 무조건 벡그라운드에서
        //하지않으면 에러가납니다 allowmainthread를 쓰면 공부용으로 괜찮다
        //실무는 벡그라운드에서 한다
        final AppDataBase db= Room.databaseBuilder(this,AppDataBase.class,"todo-db")
                .allowMainThreadQueries().build();

        mResultTextview.setText(db.todoDao().getAll().toString());
        
        findViewById(R.id.add_button).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                db.todoDao().delet(new todo(mtodoEditText.getText().toString()));
                mResultTextview.setText(db.todoDao().getAll().toString());
            }
        });

    }
}
반응형

'이과 > JAVA 안드로이드' 카테고리의 다른 글

[안드로이드]ViewPaPer  (0) 2021.04.30
[안드로이드]UI/UX 디자인이란?  (0) 2021.04.27
[안드로이드]Thread2  (0) 2021.04.27
[안드로이드]Thread  (0) 2021.04.26
[안드로이드]CompoundButton 활용  (2) 2021.04.25

+ Recent posts