728x90
반응형

0 + 프로그래밍 8

제어할 수 없는 코드가 포함된 로직을 메소드 변경 없이 테스트 코드를 작성하는 방법(오버라이딩)

제어할 수 없는 코드가 포함된 로직을 메소드 변경 없이 테스트 코드를 작성하는 방법(오버라이딩) 제어할 수 없는 코드가 포함된 레거시 코드를 받은 당신 🫵 당신은 아래의 레거시 코드를 받았고, move라는 코드의 테스트 코드를 작성해야한다. 이때 당신은 어떻게 해야할 것인가? public class Car { public static final int FORWARD_NUMBER = 1; private int position; public void move() { if (getRandom() >= FORWARD_NUMBER) { position++; } } private int getRandom() { return Randoms.pickNumberInRange(0, 9); } public int getPo..

[10분 테코톡] 나는 제너릭을 모르고 개발했다.

[10분 테코톡] 나는 제너릭을 모르고 개발했다. Java로 개발을 진행하다 보면 제너릭이라는 표현을 들어보셨을 것 입니다. (, )을 추가했습니다. 와일드 카드는 정해지지 않은 unknown type이기 때문에 Collection로 선언하여 모든 타입에 대한 호출이 가능해졌습니다. // 와일드 카드 적용 void printCollection(Collection c) { for (Object e : c) { System.out.println(e); } } 그런데 데이터를 삽입할 때 문제가 있습니다…. void genericTest() { Collection collection = new ArrayList(); collection.add(new Integer(1)); } 와일드 카드로 선언된 타입은 unk..

[10분 테코톡] 나는 GC를 모르고 개발했다.

[10분 테코톡 정리] 나는 GC(Garbage Collection)를 모르고 개발했다. Java 개발자면서 Java의 핵심인 GC에 대해서도 잘 모르고 있었다…(JVM을 모르니 모를수 밖에…) 좋은 Java 개발자가 되기 위해서는 Java를 구성하는 핵심 기능인 JVM과 그안에서 열심히 일하는 GC에 대해서 알아야 한다고 생각합니다. GC 튜닝은 성능 개선의 최종단계 라고 합니다. 객체 생성 자체를 줄이려는 코드 레벨에서의 개선이 선행 되어야 합니다. 나도 어느 정도 규모가 있는 서비스를 운영하게되면 반드시 GC 튜닝을 할 일이 생길 것이다.!!!! 이번 기회에 GC에 대해서 공부하고 정리해보자!😄 참고: https://www.youtube.com/watch?v=FMUpVA0Vvjw NAVER D2 N..

[10분 테코톡] 나는 JVM를 모르고 개발했다.

[10분 테코톡] 나는 JVM를 모르고 개발했다. 부끄러운 일이다. Java 개발자면서 Java의 핵심인 JVM에 대해서 잘 모르고 있었다… 그냥 대충 JVM이 OS와 JAVA 사이에 동작하는 프로그램이야~ 정도로만 이해하고 대충 넘겼다. 늦었지만, Java 개발자면서 Java의 핵심인 JVM에 대해서 잘 모르는 건 말이 안된다고 생각한다. 그래서 이번 기회에 공부하고 정리해보려고 합니다.😄 그중 10분 테코톡에서 어썸오님의 발표 영상이 많은 도움이 됐습니다. 여러분도 꼭 들어보시는 것을 강추 드립니다. 👍 참고: YouTube NAVER D2 Hotspot JVM Heap 메모리 구조: Java7, Java8 비교하여 Java의 특징 JVM에 대해서 설명하기에 앞서 Java의 특징에 대해서 간략하게 설..

[알고리즘] float32 부동소수점 계산 및 변환 (java, float32 to int, plc, modbus)

PLC 장비에서 modbus 프로토콜을 이용하여 데이터를 처리하다보면 float32형식의 데이터를 받는 경우가 생깁니다. 예를 들면 아래와 같이 modbus 프로토콜이 정의된 경우가 있습니다. 주소 내용 순번 데이터 형식 30001 A상 전압 Low float32 30002 High 이러한 데이터를 처리하면 30001번지에서 0x36BB, 30002번지에서 0x4358 으로 데이터를 받는 것을 확인 할 수 있습니다. 이때 A상전압을 0x36BB4358으로 처리하면...? 상전압이 918,242,136 ???????????????? 이때 A상전압을 0x36BB4358으로 처리하게 되면 안됩니다. 순번에 맞게 30002번지가 앞16비트 30001번지가 뒤 16비트로 처리해야합니다. 이제 부동소수점 방식을 이..

0 + 프로그래밍 2021.06.20

[알고리즘] 비트 연산자를 이용한 분류 (산업용 장비, 프로토콜, 통신, Modbus 통신, TCP/IP 주로 사용)

[알고리즘] 비트 연산자를 이용한 분류(산업용 장비, 프로토콜, 통신, Modbus 통신, TCP/IP 주로 사용)다양한 프로토콜을 통해 우리는 많은 장비들과 통신 합니다.통신 과정에서 가장 중요하고 기본적인 장비에서 보낸 데이터를 처리하는 방법에 대해서 알려드리겠습니다.일단 프로토콜이란 무엇이냐? 프로토콜은 약속입니다. 어떤약속이냐? 서로 어떠한 규칙을 통해서 대화(통신)를 할 것인가? 이 규칙을 정의한 약속입니다. (※기본적으로 통신은 양방향 입니다.!!) 예를 들어서 한국에서 사람과 사람의 프로토콜은 한국어 입니다. 한국어로 얘기하지 않으면 서로 대화(양방향)를 할 수 없겠죠? 이러한 약속을 컴퓨터는 비트에 데이터를 넣어 정의합니다. 말이 조금 어렵죠? 우리가 알고 있듯이 프로그래밍에서 변수는 바이..

0 + 프로그래밍 2020.10.06

[윈도우즈, 리눅스, 유닉스] 기본 명령어

[윈도우즈, 리눅스, 유닉스] 기본 명령어 1. 윈도우즈(Windows) 기본 명령어2. 리눅스(Linux)/유닉스(Unix) 기본 명령어 1. 윈도우즈(Windows) 기본 명령어명령어 설명 ATTRIB 파일 속성을 표시하거나 바꿈 CALL 하나의 일괄 프로그램에서 다른 일괄 프로그램을 호출 CD 현재 디렉터리 이름을 보여주거나 바꿈 CHKDISK 디스크를 검사하고 상태 보고서를 표시 CLS 현재 화면을 지움 CMD Windows 명령 프롬프트 창을 열어줌 COMP 두 개 이상의 파일을 비교 DISKPART 디스크 파티션 속성을 표시하거나 구성 ECHO 메시지를 표시하거나 ECHO를 사용 또는 사용하지 않음 ERASE 하나 이상의 파일을 지움 EXIT CMD.EXE 프로그램을 종료 2. 리눅스/유닉스 ..

아두이노(Arduino) 기초

아두이노(Arduino) 기초 프로젝트 시작전에 아두이노의 기본적인 내용에 대해서 알아봅시다. 1. 아두이노 개념? 2. 필요 지식 3. 참고 사이트 1. 아두이노 개념 아두이노란?오픈소스를 기반으로 한 MCU(Micro Contoller Unit) MCU란?CPU와 Input/Output 영역을 하나의 칩(Chip)으로 만든 컴퓨터 2.필요 지식 아두이노(Arduino) IDE설치 설치 후 실행 코드 설명Void setup() { }변수 및 pinMode 초기화, 라이브러리 사용 시작아두이노 보드를 키거나 리셋(Reset) 후 한 번만 실행 되는 함수 void loop() { }int main(){while(1){return 0; }}종료 조건이 성립 할 때까지 '무한반복' 실행 되는 명령의 집합 Se..

728x90
반응형