반응형

 

* 선형 검색(순차검색)이란?

   배열 검색 중 가장 기본적인 알고리즘으로 요소가 직선 모양으로 늘어선 배열에서 원하는 키값을 찾을 때까지

   맨 앞부터 순서대로 요소를 검색하는 것

 

0번째 1번째 2번째 3번째 4번째 5번째 6번째
6 4 3 2 1 3 8

 

위의 표와 같이 배열이 존재할 경우 1을 찾기 위해 0, 1, 2, 3번째 배열을 모두 검색하는 방법이다.

 

선형검색을 하게되면 종료의 조건은 아래 두가지로 정의 할 수 있다.

   1) 검색값을 찾은 경우

   2) 검색값이 존재하지 않는 경우

 

이때 종료 판단 횟수를 줄이는 역할을 하게 되는 것이 보초법 이다.

 

* 보초란?

   검색하고자 하는 키 값을 맨 끝 요소에 저장하는 값이다. 

   일반배열에서 7이라는 값을 찾으려고 할때 아래와 같이 배열이 구성 된다.

 

    - 보초 넣은 배열

0번째 1번째 2번째 3번째 4번째 5번째 6번째 보초
6 4 3 2 1 3 8 7

 

따라서 보초는 반복문에서 종료 판단 중 2)검색값이 존재하지 않는 경우를 체크하지 않아도 되게 함으로써 종료 판단을 2회에서 1회로 줄이는 역할을 한다.

 

아래는 보초법를 사용한 알고리즘 책의 p106 실습 3-3 예제입니다!

package chap03;

import java.util.Scanner;

public class SeqSearchSen {
    static int seqSearchSen(int[] a, int n, int key){
        int i=0;

        a[n] = key; //보초를 추가

        while (true) {
            if (a[i] == key) // 검색성공!
                break;
            i++;
        }
        return i == n ? -1 : i;
    }


    public static void main(String[] args) {
        Scanner stdIn = new Scanner(System.in);

        System.out.print("요솟수 : ");
        int num = stdIn.nextInt();
        int[] x = new int[num +1]; //요솟수 num+1인 이유는 보초값을 추가하기 위함

        for(int i=0;i<num; i++){
            System.out.print("x["+i+"] : ");
            x[i]= stdIn.nextInt();
        }

        System.out.print("검색할 값 : ");
        int ky = stdIn.nextInt();

        int idx = seqSearchSen(x, num, ky); //배열 x에서 값이 ky인 요소를 검색

        if(idx == -1){
            System.out.println("그 값의 요소가 없습니다.");
        }else{
            System.out.println(ky+"은(는) x["+idx+"]에 있습니다.");
        }
    }
}

 

 

* 보충수업 3-1 무한루프

   do while문은 끝까지 읽어야만 무한 루프인지 알기 때문에 권장하지 않는다!

 

 

반응형
반응형

 

기획에서 모바일 웹에서 창을 닫아달라는 요청이 있었다.

 

이 로직을 태우면서 발견한 여러가지 문제점을 적어두려고 한다.

 

1. 개발한 링크를 문자에서 바로 누르고 들어갈 경우

    1-1. 싱글페이지일 경우

          이때는 닫기가 잘 된다

    1-2. 싱글페이지가 아닐 경우

          첫 화면의 창 닫기 로직을 태우면 잘 되지만, 화면 이동을 했을 경우부터는 동작을 하지 않는다.

 

2. 문자에서 받았지만 직접 url을 입력하여 웹을 동작시켰을 경우

    2-1. 모든 경우

          안드로이드에서는 blank 화면으로 꺼질 수는 있으나 ios에서는 동작하지 못함

 

아래의 로직을 태웠을때 잘 동작할 경우와 동작 하지 않을 경우에 대한 컨트롤이 어렵기 때문에

결국 해당 기능은 제거하기로 결론이 났다.

 

  const _ua = window.navigator.userAgent || window.navigator.vendor || window.opera
  const type = checkMobile();

  if (type == 'kakaotalk') { 
  	//kakaotalk
    window.location.href = (/iPad|iPhone|iPod/.test(_ua)) ? 'kakaoweb://closeBrowser': 'kakaotalk://inappbrowser/close';
  }else if(type == 'ios'){ 
  	//ios
    window.open('', '_self', '')
    window.close();
  }else {
    window.open('about:blank','_self').self.close();
  }





// 브라우저 구별 function 참고 하기 위해 적어둠
// 기기구분
function checkMobile(){
	var ua = navigator.userAgent.toLowerCase(); 
    if ( ua.indexOf('kakaotalk') > -1) {
        //카카오톡
        return "kakaotalk";
    } else if ( ua.indexOf('android') > -1) {
        //안드로이드
        return "android";
    } else if ( ua.indexOf("iphone") > -1||ua.indexOf("ipad") > -1||ua.indexOf("ipod") > -1 ) {
        //ios
        return "ios";
    } else {
        //ios, 안드로이드 외
        return "other";
    }
}

 

 

 

반응형
반응형

 

vus.js 로 개발하면서 웹 화면 개발 중 브라우저별  처리가 달라져야하는 부분이 생길 수 있다.

 

ios, android일 때와 카카오톡에서 링크를 눌렀을 경우 각 브라우저를 return 하는 펑션 내용이다.

 

    var ua = navigator.userAgent.toLowerCase(); //userAgent 값 얻기
    if ( ua.indexOf('kakaotalk') > -1) {
        //카카오톡
        return "kakaotalk";
    } else if ( ua.indexOf('android') > -1) {
        //안드로이드
        return "android";
    } else if ( ua.indexOf("iphone") > -1||ua.indexOf("ipad") > -1||ua.indexOf("ipod") > -1 ) {
        //ios
        return "ios";
    } else {
        //ios, 안드로이드 외
        return "other";
    }

 

 

 

반응형
반응형

 

cookie 등록, 수정, 삭제 로직입니다.

수정은 setCookie를 다시 호출하면 됩니다.

저는 vue.js 에서 사용하였습니다.

 

// 쿠키 셋팅
function setCookie(id, value) {
    document.cookie = id+'='+value;
}

// 저장된 쿠키값 가져오기
function getCookie(id) {
    var value = document.cookie.match('(^|;) ?' + id + '=([^;]*)(;|$)');
    return value? unescape(value[2]) : null;
}

// 저장된 쿠키값 삭제
function deleteCookie(id) {
    document.cookie = id + '=;';
}

 

참고 블로그 : https://sncap.tistory.com/962

 

 

 

반응형
반응형

* 쓰게된 이유

처음 vue.js에서 Date가 아닌 moment를 쓰기 시작한 이유는 아이폰에서 Date함수가 에러가 나서 대체하려고 하다가 적용하게 되었다.

 

[ moment 추가 전 package.json ]

 

* 명령어

npm install moment

 

[ moment 추가 후 package.json ]

 

[ 사용할 vue에서의 import ]

import moment from 'moment';

[ 사용할 moment 사용 예시 ]

moment().format('yyyy년 MM월 DD일')

 

반응형
반응형

* 에러 내용

o.a.t.util.scan.StandardJarScanner - Failed to scan [file:] from classloader hierarchy

 

* 에러 스샷

 

* 에러 해결방안

  application.yml에 해당 설정을 추가하면 된다.

server :
   tomcat:
      additional-tld-skip-patterns: "*.jar"

반응형
반응형

 

 mysql -u root -p

root 를 대신하여 기존에 알고있는 스키마로 접속하여도 됨

 

패스워드를 입력 하게 되면 아래와 같이 접속이 되는 것을 확인할 수 있다.

 

 

 

그리고 mysql 데이터베이스를 조회해 볼 수 있다.

show databases;

 

 

 

set global max_connections=300;

 

show variables like 'max_connections';
반응형
반응형

예제는 sandbox라는 문자를 가지고 있는 파일 찾는 부분입니다.

grep -r "sandbox" ./*

 

반응형

+ Recent posts