본문 바로가기

개발언어

(11)
코루틴은 정말 멀티 스레드 보다 가벼울까? 코루틴의 경량성을 실험하게 된 계기코틀린을 써보기도 전에 많이 듣던 얘기는 코틀린의 코루틴이 좋다는 이야기였습니다. 그런 이야기를 늘으니 문득 궁금증이 생겼습니다. 얼마나 좋길래 이렇게 유명하지?!아무래도 궁금하다면 직접 테스트해보는 게 가장 좋지 않을까란 생각에 직접 멀티스레드와 비교해보면서 테스트 해보려 합니다.코루틴이 코틀린 말고도 다른 언어에서도 지원하는 기술자체의 명칭이란 건 나중에 알게 되었습니다;; 물론 코틀린은 라이브러리나 프레임워크가 아닌 언어 차원에서 지원한다는 차이점이 존재하긴 합니다.멀티스레드 VS 코루틴비교 조건은 아래와 같습니다.코루틴과 멀티 스레드 모두 사용 가능한 모든 스레드를 사용한다.멀티스레드와 코루틴 모두 1만 개의 작업을 생성한다.하나의 작업당 0.01초의 Sleep을..
[C#][Razor] @inject 지시문 @inject 지시문이란? @inject 지시문은 .razor 확장자로 만든 razor파일에서 종속성을 주입받기 위해 사용됩니다.해당 인터페이스(서비스 유형)등을 변수(속성)로 선언해서 사용할수 있게 해준다고 생각하시면 될것 같습니다.즉, razor 페이지에서 사용할 변수를 선언하기 위해 사용하는것이 @inject 지시문 입니다.기본 사용법@inject 유형 속성유형 : 주입할 서비스의 유형입니다.속성 : 주입된 앱 서비스를 받는 속성의 이름입니다. 변수라고 생각하시면 될것 같습니다.* 메뉴얼에서는 속성을 생략하더라도 컴파일러가 자동으로 속성을 만들어준다고 하는데 어떤 이름으로 만들어주는지는 나와있지 않아서 해당 내용은 생략하겠습니다.예제@page "/customer-list"@using Services..
[C#] Unit Test에서 ConfigurationManager로 config 파일 읽어오기 C#에서 Unit Test로 개발하던 도중 Unit Test로 진행 시 app.config 파일을 읽어올 수 없어서 문제가 발생했습니다. 위와 같이 NullReferenceException이 발생하면서 파일을 찾아오지 못하는것 같았습니다. 해결책을 찾던 중 Test프로젝트의 경우 config를 참조하는 경로가 다른데 C:\workspace\VS\projectName\project\bin\Debug\netcoreapp3.1\testhost.dll.config라는 파일에서 읽어오는것 같더군요. 따라서 해당 폴더에 파일(\netcoreapp3.1\testhost.dll.config)을 만들어서 아래 파일에 config를 설정하면 정상적으로 읽어올 수 있는 것 같았습니다. 다만 문제는 PC의 환경이 바뀌는 경우..
[JAVA] JAVA 지역 변수의 범위 이전의 정적 팩터리 부분에 이어서 effective java의 내용을 정리한 글입니다. C와 같이 역사가 깊은 프로그래밍 언어의 경우 지역 변수를 코드의 첫 블럭에 선언하는 경우가 많다. 이러한 전통이나 습관이 이어져서 자바에서도 코드의 첫 블럭에 지역변수를 선언하는 경우를 많이 볼 수 있는데, 이는 자바처럼 어디서든 변수를 선언할 수 있는 언어의 경우 좋은 습관이 아니다. 지역변수는 유효범위를 최소로 줄이면 변수의 가독성과 유지 보수에 관한 장점이 크게 올라가는데 지역변수가 코드의 첫부분에 선언된것 만으로도 코드가 어수선해져 가독성이 떨어지게 된다.(변수를 실제로 사용하는 시점에서는 타입과 초깃 값이 기억나지 않을 수 있다.) 즉, 지역변수의 범위를 줄이는 가장 강력한 기법은 ‘가장 처음에 쓰일때 선언..
[Java] Java문법 for, for-each 이번 포스팅도 마찬가지로 Effective java의 내용을 정리한 포스팅 입니다. 이번 내용은 Java의 반복문 중 for문과 for-each문에 관해서 어떤것을 주로 사용할지에 관한 내용입니다. 기본적으로 반복문을 사용할때 우리에게 필요한것은 반복자(예를들면 int i = 0 의 i같은)나 인덱스(i가 arr이란 배열에서 arr[i]처럼 사용되는 경우)이 아닌 배열혹은 리스트등의 내부에 원소입니다. 이러한 반복자와 인덱스의 사용은 실질적으로 필요하지 않은 변수임에도 코드에서 사용되어서 개발자의 실수를 늘리는 요소로 작용됩니다. 또한 컬렉션이나 배열이냐에 따라 for문 내부의 형태가 달리지므로 이또한 주의할 점이 됩니다. 위의 문제들은 for-each문을 사용하게 되면 모두 자연스럽게 해결되는 문제입니..
C# IBatis.Net 사용하기 안녕하세요 C#에서 IBatis를 적용하려고 하던 중 마음에 드는 글이 없어서 직접 정리하려고 합니다. iBATIS 다운 iBatis는 공식 홈페이지에서 다운받을 예정입니다. 공식 홈페이지가 아니라 NuGet을 통해서 다운이 가능하긴 하지만 iBatis를 사용하기 위해서는 DLL 이외에도 몇몇 설정 파일이 필요한데 이 설정 파일이 공식홈페이지에서 다운받은 압축 파일에 포함되어 있습니다. 또한, 샘플 코드도 같이 다운받을 수 있게 되어있는데 저는 이 샘플코드를 활용해서 이번 포스팅을 진행해 나갈 생각입니다. 다운로드 링크는 다음과 같습니다. URL : https://code.google.com/archive/p/mybatisnet/downloads 해당 URL에 접속하게 되면 아래와 같은 화면이 나타납니다..
JAVA 기초 CLASS란 이번 포스팅은 초심을 되찾자는 생각으로 JAVA의 클래스에 대한 이야기를 해볼까 합니다. 클래스는 객체지향의 가장 대표적인 특징으로 자바는 이러한 클래스를 가짐으로서 프로젝트를 여러 요소가 합쳐진 하나의 결합체 됩니다. 그럼 이 클래스가 무엇이길래 프로젝트를 여러개의 요소로 볼 수 있게 만드는지 알아보겠습니다. 클래스란 클래스를 설명하기에 설계도란 말만큼 적합한 용어는 없는것 같습니다. 어떠한 물건을 계획적으로 생산하기 위해선 그 물건의 설계도가 필요합니다. 클래스는 이러한 물건을 만드는 설계도와 같습니다. 예를 들어서 자동차를 만든다고 생각해 보겠습니다. 같은 자동차를 여러대 만들기 위해서는 이 자동차에 대한 설계도가 필요합니다. 그렇다면 자동차를 만들기 위한 설계도에는 어떤 내용이 포함되어야 할까요?..
JUnit 초기화 @Before 와 @BeforeClass 차이 Junit을 사용할 때 각 테스트의 초기화를 위해서 @Before를 사용하곤 합니다. 하지만 이와 비슷한 @BeforeClass라는 Junit 어노테이션도 존재하는데 이 둘의 차이를 알아볼까 합니다. 각 테스트보 보다 먼저 실행되는 @Before 테스트 작성 시 실행되기 전 유사한 객체가 필요한 경우 각 @Test 어노테이션이 붙은 메소드 보다 먼저 실행됩니다. 즉 해당 클래스의 @Test 어노테이션의 갯수만큼 실행되는 어노테이션 입니다. 예를 들어 public class Example { List emptyList; //테스트 마다 사용되는 클래스 //Test 전 마다 매번 실행된다. @Before public void initialize() { emptyList= new List(); } //size..