DLL이란?

 

동적 링크 라이브러리  (Dynamic Link Library) 라는 말로

여러 프로그램에서 동시에 사용할 수 있는 코드와 데이터를 포함하는 라이브러리입니다. 예를 들어 Windows 운영 체제에서 Comdlg32 DLL은 일반적인 대화 상자 관련 기능을 수행합니다.

즉 여러 프로그램은 이(Comdlg32) DLL에 포함된 기능을 사용해 열기 대화 상자를 구현할 수 있습니다. 이를 통해 코드를 쉽게 재사용할 수 있으며 메모리 사용 효율성을 높일 수 있습니다.

 

DLL을 사용하면 프로그램을 여러 개별 구성 요소로 모듈화할 수 있습니다. 회계 프로그램이 모듈 단위로 판매되는 경우를 예로 들 수 있습니다. 각 모듈은 설치되어 있는 경우 런타임에 주 프로그램으로 로드할 수 있습니다. 모듈은 서로 분리되어 있으므로 프로그램의 로드 시간이 빨라지며 해당 기능을 요청할 때만 모듈이 로드됩니다.

또한 프로그램의 다른 부분에 영향을 주지 않고 업데이트를 각 모듈에 더 쉽게 적용할 수 있습니다. 급여 프로그램을 사용하고 있는데 세율이 매년 변경되는 경우를 예로 들어 보겠습니다. 이러한 변경 내용이 DLL 하나에만 적용되는 경우 전체 프로그램을 다시 빌드하거나 설치할 필요 없이 업데이트를 적용할 수 있습니다.

 

 

DLL의 이점

 

더 적은 리소스 사용
여러 프로그램이 같은 함수 라이브러리를 사용하는 경우 DLL을 사용하면 디스크와 실제 메모리에서 로드되는 중복 코드를 줄일 수 있습니다. 그러면 포그라운드에서 실행되는 프로그램의 성능뿐 아니라 Windows 운영 체제에서 실행되는 다른 프로그램의 성능도 크게 향상될 수 있습니다.

  • 모듈식 아키텍처 활용
    DLL을 사용하면 모듈식 프로그램을 효율적으로 개발할 수 있습니다. 즉, 여러 언어 버전이 필요한 큰 프로그램이나 모듈식 아키텍처가 필요한 프로그램을 개발할 수 있습니다. 모듈식 프로그램의 예로는 런타임에 동적으로 로드할 수 있는 여러 모듈이 포함된 회계 프로그램이 있습니다.
  • 손쉬운 배포와 설치
    DLL 내의 함수를 업데이트하거나 수정해야 하는 경우 DLL을 배포하고 설치할 때 프로그램을 DLL과 다시 연결하지 않아도 됩니다. 또한 여러 프로그램이 같은 DLL을 사용하는 경우에는 모든 프로그램에 업데이트나 수정 내용이 적용됩니다. 이 문제는 정기적으로 업데이트되거나 수정되는 타사 DLL을 사용할 때 보다 자주 발생할 수 있습니다.
  •  

    프로그램 에서 DLL 오류가 뜨는 경우

     1. 해당경로에 DLL 파일이 없거나

     2. DLL 호출하는 부분은 있지만 필요하지 않는경우

     3. 제어판 → 관리도구 → 작업 스케줄러 라이브러리 →  필요 없는것 삭제

     

    자세한 내용은 Microsoft

    https://support.microsoft.com/ko-kr/help/815065/what-is-a-dll

     

    DLL 파일 여는법

    https://ko.wikihow.com/DLL-%ED%8C%8C%EC%9D%BC-%EC%97%AC%EB%8A%94-%EB%B2%95

     

     

     

    Posted by 안낭우훗

    /* 문제: 1 [홀수 짝수]
     * 0 ~ 9까지 숫자를 출력하고 각 숫자가 홀수인지 짝수인지 출력한다.
     * tip:  switch, if, ? :
     * 출력 예:
     * 0(짝수)
     * 1(홀수)

     

    //  삼항연산자 사용

     

    class Test{

      public static void main(String[] args) throws Exception {
        for(int i = 0; i <= 10; i++) {
          System.out.printf("%d : (%s) \n", i, (i % 2) == 0 ? "짝수" : "홀수") ;
        }
       }
    }

     

    //  if 조건문

    class Test{

      public static void main(String[] args) throws Exception {
        for(int i = 0; i <= 10; i++) {
          if (i % 2 == 0) {
            Print(i, "짝수");
          } else if (i % 2 != 0) {
            Print(i, "홀수");
          } else {
            System.out.printf("응?");
          }
        }
       }
       static void Print(int no, String odd_even ) {
         System.out.printf("%d (%s) \n", no, odd_even);
       }
    }

     

    // switch case

    class Test{

      public static void main(String[] args) throws Exception {
        for(int i = 0; i <= 10; i++) {

          switch (i % 2) {
            case 0 : Print(i, "짝수");
            break;
            case 1 : Print(i, "홀수");
            break;
            default :
            break;
          }
        }
       }
       static void Print(int no, String odd_even) {
         System.out.printf("%d (%s) \n", no, odd_even);
       }
    }

    Posted by 안낭우훗

    /* 문제: 48 [숫자 더하기]
     * e.g.) 1, 2, 4, 7, 11, 16 ... 100 까지 합을 구하라!

     

     

    /* 1, 2, 4, 7, 11, 16 ... 100 까지 합 */

     

    class Test{

      public static void main(String[] args) throws Exception {
        int i = 1;
        int value = 1;
        int sum = 1;

        while (value <= 100) {
          sum += value;
          value += i++;
        }

        System.out.printf("%d", sum);
       }
    }

     

     

    /* 1, 2, 3, 4, 5, 6 ... 100 까지 합 */

     

    class Test{

      public static void main(String[] args) throws Exception {
        int value = 1;
        int sum = 1;

        while (value <= 100) {
          sum += value++;
        }

        System.out.printf("%d", sum);
       }
    }

    Posted by 안낭우훗

    class QuickSorting{

      static int[] elements = {3,44,38,5,47,15,36,26,27,2,46,4,19,50,48};

      public static void main(String[] args) throws Exception {
        quickSort(0, elements.length - 1);
        printElement();
       }

       static void quickSort(int startIndex, int endIndex) {
         if ((endIndex - startIndex) <= 0) {
           return;
         }
        int pivotIndex = startIndex;
        int storeIndex = pivotIndex + 1;

        for (int i = pivotIndex + 1; i <= endIndex; i++) {
          if (elements[i] < elements[pivotIndex]) {
            swapIndex(i, storeIndex);
            storeIndex++;
          }
        }
        swapIndex(pivotIndex, storeIndex - 1);
        quickSort(startIndex, storeIndex - 2);
        quickSort(storeIndex, endIndex);
       }

       static void swapIndex(int foreIndex, int backIndex) {
         if (foreIndex == backIndex) {
           return;
         }
         int tmpValue = elements[foreIndex];
         elements[foreIndex] = elements[backIndex];
         elements[backIndex] = tmpValue;
       }

       static void printElement() {
         for (int element : elements) {
           System.out.printf("%d ", element);
         }
         System.out.println();
       }

    }

    Posted by 안낭우훗

     

    import java.util.Scanner;

    class BubbleSorting{

      public static void main(String[] args) throws Exception {

        int[] arr = {3, 6, 8, 4, 12, 1, 9, 7};

        int i = 0;
        int temp;

        int end = arr.length -1;
        while (end > 0) {
           i = 0;
            while (i < end) {
              if (arr[i] > arr[i+1]) {
                temp = arr[i];
                arr[i] = arr[i+1];
                arr[i+1] = temp;
              }
              i += 1;
            }
          end--;
        }
     
        for (int each : arr)
        System.out.printf("%d \n", each);


       }
    }

    Posted by 안낭우훗

     

    Posted by 안낭우훗

    2018. 7. 30. 21:27 Windows/Tip

    [WINTIP] 바로가기

     

    'Windows > Tip' 카테고리의 다른 글

    EXERD  (0) 2019.01.16
    GitHub 플러그인 설치 연동  (0) 2019.01.16
    [WINTIP] 시작 프로그램 등록 하는 법들  (0) 2018.07.30
    Posted by 안낭우훗

                         WIN + R

     

     

    shell:startup 명령어로 계정의(park) 시작프로그램 폴더에  바로가기 등록

     

    C:\Users\park\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

     

     

     

     

    shell:common startup 명령어로 시스템의 사용자의 시작프로그램 폴더에  바로가기 등록

     

     

    C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp

     

     

     

    %appdata% 환경변수에 사전에 등록된 경로 접근후 

     

    Roaming\Microsoft\Windows\Start Menu\Programs\Startup

     

     

     

     

    위와 다른 점은 제거가 아니라 suspand

    Ctrl + Shift + Esc

    Ctrl + Alt + Dell

    작업표시줄 에서 마우스 오른쪽 버튼 작업관리자 선택 시작프로그램 이동

     

      

     

     

    사용 안함으로 하고 싶은 것에 대고 우클릭 사용안함 선택

    사용 중이던 것들을 사용 안함 으로 상태를 변경했다.

     

     

    실행 에서 services.mcs

     

    아귀찮다 자세하게 쓸게요 나중에

    'Windows > Tip' 카테고리의 다른 글

    EXERD  (0) 2019.01.16
    GitHub 플러그인 설치 연동  (0) 2019.01.16
    [WINTIP] 바로가기  (0) 2018.07.30
    Posted by 안낭우훗

    다음 파일의 줄 끝에 일관성이 없습니다. 줄 끝을 정규화시키시겠습니가?

     

     

     

     

     

    보통 윈도우의 줄바꿈은 /r/n 페어로 끝납니다. 하지만 다른 OS들, 맥이나 유닉스는 /r, /n 등 하나의 형으로만 이루어져 있죠. 이렇게 문서가 일관된 하나의 타입으로 되어있지 않고, 혼용되어 작성 되어있으면 Visual Studio에서 이런 경고창을 내보내게 되는겁니다.

       출처 : http://blog.codinghorror.com/the-great-newline-schism/

     

     

     

    도구 -> 옵션 -> 환경 -> 문서      로드할 떄 줄 끝 일관성 검사 체크 해제



     

    Posted by 안낭우훗

    declare @day datetime

    set @day = '2/7/2007'

    SELECT DATEADD(dd, 2-DATEPART(dw, @day), @day) as mondaydate


     


    -- 현재달의 첫째날 

    SELECT DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0)


     


    -- 현재주의 월요일

    SELECT DATEADD(wk, DATEDIFF(wk, 0, GETDATE()), 0)


     


    -- 현재해의 첫째날

    SELECT DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0)


     


    -- 현재분기의 첫째날

    SELECT DATEADD(qq, DATEDIFF(qq, 0, GETDATE()), 0)


     


    -- 현재날의 자정주의 구하기

    SELECT DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0)


     


    -- 지난달의 마지막날 구하기

    SELECT DATEADD(ms, -3, DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0))


     


    -- 지난해의 마지막날 구하기

    SELECT DATEADD(ms, -3, DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0))


     


    -- 현재달의 마지막날 

    SELECT DATEADD(ms, -3, DATEADD(mm, DATEDIFF(m, 0, GETDATE()) + 1, 0))


     


    -- 현재해의 마지막날

    SELECT DATEADD(ms, -3, DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, 0))


     


    -- 현재달의 첫째주 월요일

    SELECT DATEADD(wk, DATEDIFF(wk, 0, DATEADD(dd, 6-DATEPART(day, GETDATE()), GETDATE())), 0)

    Posted by 안낭우훗
    이전버튼 1 2 3 4 5 이전버튼

    블로그 이미지
    좋은싸이트 공유, 재해석 , 공부 정리, 틀린거 알려 주세요~
    안낭우훗

    태그목록

    공지사항

    Yesterday
    Today
    Total

    달력

     « |  » 2025.5
    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

    최근에 올라온 글

    최근에 달린 댓글

    글 보관함