728x90

열거형 : 정수 숫자 형식의 상수 집합에 멤버 이름을 지정할 수 있다. 

enum Menu
{
	Info, // 0
	Status // 1
}

 

열거된 멤버들은 첫 멤버부터 0으로 시작하는 정수를 상수로 가지고 다음 멤버들은 1씩 증가하는 정수를 상수로 가진다.

 

enum Menu
{
	Candy=1,
    	Chocolate=3,
    	Snack // 4
}

. 상수를 명시적으로 지정해 줄 수도 있고 지정하지 않은 멤버는 이전 멤버의 +1 값을 가진다.

 

열거형의 사용

Menu candy = Menu.Candy;
var choco = (Menu)3;

Console.WriteLine(candy); // Candy 
Console.WriteLine((int)Candy); // 1
Console.WriteLine(choco); // Chocolate
Console.WriteLIne((int)choco); // 3
Console.WriteLine((Menu)10); // 10

 

Enum.IsDefined : 멤버 존재 여부 확인 

IsDefined(Type enumType, object value);



Enum.IsDefined(typeof(Menu),1); // true
Enum.IsDefined(typeof(Menu),2); // false

 

'C#' 카테고리의 다른 글

C# 기초 문법  (0) 2024.04.11
728x90

함수 형식

returnType FunctionName ( parameterType parameter1, parameterType parameter2 = "default" )
{
  print(parameter1);
  print(parameter2);
  print("FunctionName 첫글자는 대문자");
  print("디폴트 값을 가지는 파라메터는 맨 뒤에 위치한다.");
  
  return data;
}

 

 

접근제한자 

 

[ private, public, protected ] 

default : private 

 

public :  모든 레벨에서 접근 가능 

private : 동일한 Class에서만 접근 가능

protected : 동일 Class 또는 상속받는 Class에서만 접근 가능 

 

반복문 

 

int i;
int j = 3;
for (i = 0, Console.WriteLine($"Start: i={i}, j={j}"); i < j; i++, j--, Console.WriteLine($"Step: i={i}, j={j}"))
{
    //...
}
// Output:
// Start: i=0, j=3
// Step: i=1, j=2
// Step: i=2, j=1

initializer에서 loop 변수를 선언하지 않는 경우 initializer 섹션에서 0개 이상의 식을 사용할 수 있다. 


int j = 3;
for (int i = 0; i < j; i++, j--, Console.WriteLine($"Step: i={i}, j={j}"))
{
    //...
}
// Output:
// Step: i=1, j=2
// Step: i=2, j=1


i와 j 두가지 변수 모두 값을 변경할 수 있다.

 

foreach

int[,] numbers = {{1, 2, 3, 4, 5},{0, 1, 2, 3, 4}};
foreach (int number in numbers)
{
    Console.Write(number+" ");
}
// Output:
// 1 2 3 4 5 0 1 2 3 4

 

 

컬렉션 

 

ArrayList

ArrayList 콜렉션은 non generic collection으로 타입을 정해두지 않고 여러 타입의 데이터를 동시에 담을 수 있다.

ArrayList arrayList = new ArrayList();
arrayList.Add("stringValue");
arrayList.Add(1);
arrayList.Add(false);

print(arrayList[0]);

// Output:
// stringValue

 

 

List<T> 

List<T> 콜렉션은 타입을 지정하여 동일한 타입의 데이터들을 담을 수 있다. 

 

ArrayList보다는 List<T> 클래스를 사용할 것을 권장하고 있다. 

 

 

HashTable / Dictionary<K, V>

Key Value 형식으로 데이터를 저장하며 Key와 Value의 타입은 동일하지 않을 수 있다.

HashTable hashTable = new HashTable();
hashTable.Add("일",1);
hashTable.Add(2,"이");

print(hashTable["일"]);
print(hashTable[2]);

 

Dictionary도 HashTable과 같지만 제네릭 지정하여 사용하기 때문에 List<T>와 마찬가지로 성능이 더 좋다.

 

Queue<T> / Stack<T>

선입선출 FIFO / 후입선출 LIFO

Queue<int> q = new Queue<int>();
q.Enqueue(1);
q.Enqueue(2);

for (; q.Count != 0; q.Dequeue())
{
    Console.WriteLine(q.Peek());
}
// Output:
// 1 2

Stack<int> st = new Stack<int>();
st.Push(1);
st.Push(2);

for(; st.Count != 0;)
{
    Console.WriteLine(st.Pop());
 }
 // Output:
 // 2 1

 

 

namespace

namespace 키워드를 사용하여 관련 파일 혹은 다른 namespace 등을 포함하는 범위를 선언할 수 있다. 

 

선언한 namespace는 using 키워드를 통해 사용할 수 있고

namespace에 alias 를 부여하여 사용할 수 있다.

 

namespace Utils
{
    struct UtilStruct { }

    enum UtilEnum { a, b }

    delegate void UtilDelegate(int i);

    namespace Calendar
    {
        static class MicroTimer { }

        interface Timer { }
    }
}

global using <fully-qualified-Utils>;
using Alias = Utils.Calendar;

 

global using 키워드는 프로젝트내의 모든 파일에서 using 이 적용된다는 것을 의미한다.

'C#' 카테고리의 다른 글

C# 열거형  (0) 2024.04.16
728x90

Spring Initializer에서 Spring Project를 생성한다.

https://start.spring.io/

Generate버튼을 클릭하면 프로젝트를 다운로드 받는다. 

 

다운로드 받은 프로젝트는압축해제하여 워크스페이스에 옮기고 IntelliJ를 실행한다.

 

Open

demo 폴더의 pom.xml을 선택

 

Open as project 

Spring 구조의 기본 프로젝트가 생성되었다.

외부 라이브러리에 initializer에서 추가한 Spring web, dev tools 가 추가되었다. 

pom.xml에도 dependency에 추가된 것을 확인할 수 있다. 

 

maven의 spring-boot:run을 실행하면 spring에 내장된 톰캣을 통해 서버를 실행시킬 수 있다. 

*터미널에서 mvn spring-boot:run 명령어를 사용해도 된다. 

728x90

개발한 웹 애플리케이션을  Apache Tomcat을 이용해 배포하고 서버를 운영하는 환경을 구축하는 방법 

 

-Application Packaging

 

mvn clean compile package

gradlew build

명령어 혹은 task 도구를 이용해 패키징한다. 

 

package를 완료하면 war 파일이 모듈의 target 폴더에 생성된다. 

 

-startup.bat 사용하기 

(windows는 배치파일, linux기반 os는 쉘스크립트)

tomcat-webapps폴더에 패키징한 war파일을 복사하여 옮겨준다.

tomcat\bin\startup.bat 파일을 실행하면 webapps의 war 파일들 압축해제하여 실행시켜준다. 

 

tomcat\webapps 폴더에 war파일이 압축해제되어 maven_begin 폴더가 생성되었다.

서버를 종료할 때는shutdown  배치파일을 실행하면된다. 

  

-Tomcat Manager 사용하기 

 

tomcat\conf\tomcat-users.xml 파일에 관리자 계정 권한 부여하기 

<tomcat-users>
  <role rolename="manager-gui"/>
  <role rolename="manager-script"/>
  <role rolename="manager-jmx"/>
  <role rolename="manager-status"/>

  <user username="admin" password="admin" roles="manager-gui,manager-script,manager-jmx,manager-status"/>
</tomcat-users>

*터미널에서 code 명령어를 사용하면 파일을 vscode로 편집할 수 있다.

 

startup.bat로 서버를 실행하고 

localhost/manager로 접속하면 

로그인할 수 있는 창이 뜨는데 여기에 아까 만들어주었던 어드민 계정으로 로그인한다.

manager에서는 톰캣이 실행중인 웹 애플리케이션들을 관리할 수 있는 gui를 제공하공하고 있다.  

 

 배치할 war파일에서 파일을 업로드하여 배치할수 있다. 

 

파일을 선택학고 배치를 클릭하면 

 maven_begin 애플리케이션이 배치되었다 .

+ Recent posts