모바일 오유 바로가기
http://m.todayhumor.co.kr
분류 게시판
베스트
  • 베스트오브베스트
  • 베스트
  • 오늘의베스트
  • 유머
  • 유머자료
  • 유머글
  • 이야기
  • 자유
  • 고민
  • 연애
  • 결혼생활
  • 좋은글
  • 자랑
  • 공포
  • 멘붕
  • 사이다
  • 군대
  • 밀리터리
  • 미스터리
  • 술한잔
  • 오늘있잖아요
  • 투표인증
  • 새해
  • 이슈
  • 시사
  • 시사아카이브
  • 사회면
  • 사건사고
  • 생활
  • 패션
  • 패션착샷
  • 아동패션착샷
  • 뷰티
  • 인테리어
  • DIY
  • 요리
  • 커피&차
  • 육아
  • 법률
  • 동물
  • 지식
  • 취업정보
  • 식물
  • 다이어트
  • 의료
  • 영어
  • 맛집
  • 추천사이트
  • 해외직구
  • 취미
  • 사진
  • 사진강좌
  • 카메라
  • 만화
  • 애니메이션
  • 포니
  • 자전거
  • 자동차
  • 여행
  • 바이크
  • 민물낚시
  • 바다낚시
  • 장난감
  • 그림판
  • 학술
  • 경제
  • 역사
  • 예술
  • 과학
  • 철학
  • 심리학
  • 방송연예
  • 연예
  • 음악
  • 음악찾기
  • 악기
  • 음향기기
  • 영화
  • 다큐멘터리
  • 국내드라마
  • 해외드라마
  • 예능
  • 팟케스트
  • 방송프로그램
  • 무한도전
  • 더지니어스
  • 개그콘서트
  • 런닝맨
  • 나가수
  • 디지털
  • 컴퓨터
  • 프로그래머
  • IT
  • 안티바이러스
  • 애플
  • 안드로이드
  • 스마트폰
  • 윈도우폰
  • 심비안
  • 스포츠
  • 스포츠
  • 축구
  • 야구
  • 농구
  • 바둑
  • 야구팀
  • 삼성
  • 두산
  • NC
  • 넥센
  • 한화
  • SK
  • 기아
  • 롯데
  • LG
  • KT
  • 메이저리그
  • 일본프로야구리그
  • 게임1
  • 플래시게임
  • 게임토론방
  • 엑스박스
  • 플레이스테이션
  • 닌텐도
  • 모바일게임
  • 게임2
  • 던전앤파이터
  • 마비노기
  • 마비노기영웅전
  • 하스스톤
  • 히어로즈오브더스톰
  • gta5
  • 디아블로
  • 디아블로2
  • 피파온라인2
  • 피파온라인3
  • 워크래프트
  • 월드오브워크래프트
  • 밀리언아서
  • 월드오브탱크
  • 블레이드앤소울
  • 검은사막
  • 스타크래프트
  • 스타크래프트2
  • 베틀필드3
  • 마인크래프트
  • 데이즈
  • 문명
  • 서든어택
  • 테라
  • 아이온
  • 심시티5
  • 프리스타일풋볼
  • 스페셜포스
  • 사이퍼즈
  • 도타2
  • 메이플스토리1
  • 메이플스토리2
  • 오버워치
  • 오버워치그룹모집
  • 포켓몬고
  • 파이널판타지14
  • 배틀그라운드
  • 기타
  • 종교
  • 단어장
  • 자료창고
  • 운영
  • 공지사항
  • 오유운영
  • 게시판신청
  • 보류
  • 임시게시판
  • 메르스
  • 세월호
  • 원전사고
  • 2016리오올림픽
  • 2018평창올림픽
  • 코로나19
  • 2020도쿄올림픽
  • 게시판찾기
  • 오유인페이지
    개인차단 상태
    kre29님의
    개인페이지입니다
    가입 : 13-11-06
    방문 : 780회
    닉네임변경 이력
    회원차단
    회원차단해제
     

    kre29님의 댓글입니다.
    번호 제목 댓글날짜 추천/비공감 삭제
    905 재귀함수 이해하기 참 어렵네요 [새창] 2018-09-01 01:26:18 0 삭제
    재귀함수의 경우 가장 자주 등장하는 예제가 팩토리얼이죠,

    factorial이라는 함수가 있을 때, 해당 함수는 아래와 같이 구현됩니다.(자바스크립트를 기준으로 작성하였습니다.)

    function factorial(number) {
    if(number == 1) {
    return 1;
    }

    var returnedFactorial = factorial(number-1);

    return number * returnedFactorial ;
    }

    그럼 위의 함수의 동작방식을 이해해보죠.
    먼저 5!(5 * 4 * 3 * 2 * 1)의 경우, factorial(5); 로 실행할 수 있습니다.

    그럼 아래와 같은 형태로 작동됩니다.

    factorial( (number=5) ) {
    // number=5 이므로, if문은 false(실행안함)

    var returnedFactorial = factorial( (number=4) ) { // 여기서 다음 factorial 함수 호출
      // number=4 이므로, if문은 false(실행안함)

      var returnedFactorial = factorial( (number=3) ) { // 여기서 다음 factorial 함수 호출
       // number=3 이므로, if문은 false(실행안함)

       var returnedFactorial = factorial( (number=2) ) { // 여기서 다음 factorial 함수 호출
        // number=2 이므로, if문은 false(실행안함)

        var returnedFactorial = factorial( (number=4) ) { // 여기서 다음 factorial 함수 호출
         // number=1 이므로, if문은 true(실행)
         if(number == 1) {
          return 1;
         }
         
         // 위의 if문이 true이므로 return 1;을 하게 되어 하단의 코드는 무시됨.
         
         // var returnedFactorial = factorial(number-1);
         // return number * returnedFactorial ;
        }

        return number * returnedFactorial ;
       }

       return number * returnedFactorial ;
      }

      return number * returnedFactorial ;
     }

    return number * returnedFactorial ;
    }

    한글로 풀어보자면, factorial에 파라미터로 전달된 number가 1이 되기 전까지는 factorial(number-1)을 계속 호출합니다.
    1이 되면 return 1;을 만나서 재귀가 종료됩니다.

    그러므로 재귀함수에서는 기본적으로 return 문이 2개 이상 존재해야 정상 작동됩니다.(재귀된 값을 리턴하는 리턴문과, 재귀 자체를 종료하는 리턴문)

    또한 factorial(5)를 호출하면, factorial(5)의 재귀로 인해 factorial(4)가 호출되는 이런 형태로 진행이 되는데,
    이 경우, factorial(5)는 factorial(4)가 종료될 때 까지 함수가 종료되지 않고 메모리에서 대기합니다.
    마찬가지로 factorial(4)는 factorial(3)을 기다리고, 결국 마지막 factorial(1)이 실행되어 return 1;을 실행하기 직전에는 메모리 사용량이 최대가 되는거죠.

    위와같은 이유로, 재귀함수는 잘못사용하게 되면 메모리를 잡아먹는데 큰 일조를 할 수 있습니다.

    용도에 맞게 사용되어야 하며 factorial 또한 재귀가 아닌 방법으로 구현할 수 있으므로 실무에서는 크게 사용될 일이 적을 것이라고 보여집니다.
    저의 경우에는 웹에서 다단계 메뉴 구조를 "생성"할 때 재귀를 통해 구현을 하고, 해당 결과 값을 html로 출력한 뒤, 해당 값을 사용자에게 출력하는 방식으로 사용합니다.

    이렇게 사용하면, 메뉴 구조를 변경하는 경우(자주 일어나지 않으며, 관리자가 주로 변경)에만 재귀함수를 호출하기 때문에 사용자로 하여금 재귀함수의 문제인 메모리 이슈(속도 저하) 등을 겪지 않게 되는거죠.
    904 광주 맘충사건 결국은 보배가 다 파헤치네요. [새창] 2018-07-07 13:56:09 0/4 삭제
    지역감정과는 별개의 이야깁니다.
    이러한 사항에서 정보 전달에 누락이 있으면 당연히 문제가 되는게 맞다고 보구요.

    출처 경로만 보더라도 경기 광주로 되어있는데, 삼남매빠덜님의 말씀하신대로라면 본 글의 작성자님도 광주 비하를 하기 위해서 일부러 줄여 썼을 수도 있다는 이야기가 되겠네요?

    지금 상황에선 지역이 문제가 아니다, 라고만 생각하지 마시고 정보 전달의 오류로 인해 파생될 수 있는 일까지 생각해주세요.

    지역을 표기안함으로써 문제가 안될것같았으면 뉴스 등지에서도 그냥 대한민국에 맘충사건이 생겼다고 하면 되는거 아닌가요?
    903 광주 맘충사건 결국은 보배가 다 파헤치네요. [새창] 2018-07-06 21:56:44 1/26 삭제
    제목보고 광주라고 써져있어서 뭐지 하고 와서 링크 타고 가니 경기광주네요.
    혼동 없게 입력해주세요;
    902 쉽게 단검을 만드는 방법 [새창] 2018-05-08 23:05:25 1 삭제
    .
    901 html5 라디오 버튼이 안 눌리는 이유..? [새창] 2018-03-28 16:18:20 0 삭제
    웹표준에서 감싸도 상관 없다고 나와있습니다.
    900 할인중인 블랙박스가 있는데 괜찮은건가요? [새창] 2018-02-14 13:36:11 0 삭제
    제가 생각중인건 상품 2번이며,
    오픈마켓 가격 약 33만원 할인가 20만 9천원(출장장착 포함)입니다.
    899 (때때로 후방확인) 여러분들이 뭘 좋아하는지 몰라 58탄 (모바일 주의) [새창] 2018-02-12 10:18:14 1 삭제
    .
    898 본삭금) java 메소드 질문좀 드릴게요 (왕왕초보 주의) [새창] 2017-12-26 14:28:31 0 삭제
    class Car{
    void run(){
    System.out.println("차가 달립니다.");
    }

    void break() {
    System.out.println("차가 멈춥니다.");
    }
    }

    class Benz extends Car {
    @Override
    void run(){
    System.out.println("차가 빠르게 달립니다.");
    }

    void turnOnMusic() {
    System.out.println("음악이 나옵니다");
    }
    }

    Car car = new Car();
    car.run(); // 차가 달립니다.
    car.break(); // 차가 멈춥니다.

    Benz benz = new Benz();
    benz.run(); // 차가 빠르게 달립니다.
    benz.break(); //차가 멈춥니다.
    benz.turnOnMusic(); //음악이 나옵니다.

    Car benz2 = new Benz();
    benz.run(); //차가 빠르게 달립니다.
    benz.break(); //차가 멈춥니다.
    benz.turnOnMusic(); //Error
    897 스프링 쓰시는 분들께 질문 있습니다ㄹ [새창] 2017-12-01 17:47:19 0 삭제
    삼치구이님의 댓글에 덧붙여서 쉽게 설명해보자면 A a = new A();를 했을 때 a 변수에 저장되는건 새로 생성된 인스턴스가 아닌 인스턴스의 주소 값이 저장됩니다.
    그리고 이 주소 값을 매개변수로 하여 메서드를 실행했을 때도 주소 값을 전송하는 것 이므로, 어디서 접근하던지 수정되는 값은 모두 동일한 위치에 있는 값입니다.
    clone() 메서드를 통해서 새로운 인스턴스를 복사해야 원하시는대로 이루어지며, 이러한 방식보다는 위에서의 "A am = a;" 부분을 "A am = new A(); am.setProperty(property);"으로 바꾸거나, A am = new A(); 대신 am.clone()을 사용하시면 되겠습니다.
    896 mysql 성능이 너무 안나와서.. 질문좀 드리겠습니다!! [새창] 2017-11-30 16:12:29 0 삭제
    "카테고리, 타겟, 태그는 enum 같은 정해진 몇개의 텍스트 "
    - 정해진 몇개의 텍스트라면 varchar를 사용하시는 편이 검색이 빠르던 것으로 알고있습니다.

    "
    select *
    from fr_hit
    where
     hitter=2 and
     category="community" and
     tag="inbox" and
     target=744
    "

    이 부분을 한개당 0.3초라고 하신 것 같은데, mysql 입장에서는 조금 다릅니다.
    1. hitter가 2인것을 모든 행에서 찾고,
    2. category가 community인것을 (1)을 찾은 모든 행에서 찾고,
    3. tag가 inbox인 것을 (2)를 찾은 모든 행에서 찾고,
    4. target이 fr_test.id와 같은것을 (3)을 찾은 모든행에서 찾는

    위와 같은 형태로 돌아갑니다.
    데이터에 따라 튜닝 형태가 달라지겠지만, 기본적으로 검색할 때는 가장 검색자료가 적은 것 (이름, 나이, 주민등록번호 열이 있다면 주민등록번호, 이름, 나이 순으로 검색.)부터 넣어야 하고, 다른 테이블과의 비교가 필요없는 경우에는 on이 아닌 where 절에 넣어 검색하는게 맞습니다.

    데이터를 가지고 테스트 해볼 수 없어서 이 정도밖에 말씀드리지 못할 것 같습니다.
    895 주차 하다가 실수로 다른 차량을 긁었네요 ㅠㅠ [새창] 2017-10-31 17:19:11 0 삭제
    아직 결과는 잘 모르겠지만 차주 분께서 점잖아 보이시는 어르신이고, 싸게 할 수 있는 곳 알아보시겠다고 말씀해주셔서 조금은 안심하고 있습니다.
    물론 금액이 어떻게 나올진 모르겠지만요 ㅠ
    894 주차 하다가 실수로 다른 차량을 긁었네요 ㅠㅠ [새창] 2017-10-31 17:18:20 0 삭제
    차량 수리 어플이 있어서 한번 가견적 받아보니 20정도 나와서 그 정도로 생각하고 있습니다.
    답변 감사합니다!
    893 개발, 특히 소프트웨어 디자인쪽에 대해 질문이 있습니다. [새창] 2017-10-20 15:39:15 1 삭제
    UML을 현업에서 쓰고 있으며, 정말 필요하다고 생각합니다.
    개발자로서 가장 중요한 부분이 고객과의 커뮤니케이션 그리고 개발자간의 커뮤니케이션이라고 생각하는데,
    고객과의 커뮤니케이션을 위해 요구분석서, 스토리보드 등이 필요한 것처럼,
    개발자들끼리 확실한 의미 전달을 위해 사용하는게 UML입니다.

    현업이든 어디서든 여럿이서 개발하다 보면 같은 생각이라고 시작했지만 결과적으로 서로 다른 생각이였어서 실패하는 경우가 많습니다.
    892 스프링에서 컨트롤러, 서비스, DAO 구현이 모호합니다. [새창] 2017-08-30 18:30:06 0 삭제
    // AuthService

    public HashMap<String, Object> login(MemberVo memberVo) throws Exception {
     MemberVo resultVo = memberDao.selectOne(memberVo);

     HashMap<String, Object> hashMap = new HashMap<String, Object>();
     hashMap.put("memberVo", resultVo);

     if(resultVo == null) {
      throw new Exception("아이디 혹은 비밀번호가 맞지 않습니다.");
     }

     if(!memberService.checkHashedPassword(resultVo.getPassword(), memberVo.getPassword())) {
      //아이디 혹은 비밀번호가 맞지 않다는 메시지를 나타내는 이유는 사용자에게 아이디가 존재하는지 알리지 않기 위함.
      throw new Exception("아이디 혹은 비밀번호가 맞지 않습니다.");
     }

     TimestampUtil timestampUtil = new TimestampUtil();
     timestampUtil.setFormat("yyyy년 MM월 dd일 HH시 mm분 ss초");

     if(resultVo.getBlockDate() != null) {
      timestampUtil.setTimestamp(resultVo.getBlockDate());
      String blockDate = timestampUtil.getFormatDate();
      throw new Exception(resultVo.getId() + " 회원님은 " + blockDate + "에 차단되셨습니다.");
     }

     if(resultVo.getLeaveDate() != null) {
      timestampUtil.setTimestamp(resultVo.getLeaveDate());
      String leaveDate = timestampUtil.getFormatDate();
      throw new Exception(resultVo.getId() + " 회원님은 " + leaveDate + "에 회원탈퇴를 하셨습니다.");
     }

     if(resultVo.getEmailCertifyDate() == null) {
      System.err.println("warning: 회원 로그인 시 이메일 인증이 없으면 출력, 회원 이메일을 다시 적을 수 있는 페이지 제작해야 함.");
      
      hashMap.put("state", IAuthService.NO_EMAIL_CERTIFY);
      
      return hashMap;
     }

     System.err.println("warning: 비밀번호 5회 이상 틀릴 경우 비밀번호 찾기 필요");

     timestampUtil = new TimestampUtil();
     Timestamp today = timestampUtil.getTimestamp();

     memberVo.setLoginDate(today);

     memberDao.update(memberVo);

     setAuthMember(memberVo); //세션에 memberVo 추가.(로그인

     return hashMap;
    }
    891 스프링에서 컨트롤러, 서비스, DAO 구현이 모호합니다. [새창] 2017-08-30 18:29:44 0 삭제
    //AuthController

    @RequestMapping(value="/login/check", method=RequestMethod.POST)
    public String loginCheck(MemberVo memberVo, String token, Model model) throws Exception {
     securityService.checkToken(token);

     HashMap<String, Object> hashMap = authService.login(memberVo);

     MemberVo resultVo = (MemberVo) hashMap.get("memberVo");
     Integer loginState = (Integer) hashMap.get("state");

     if(loginState != null) {
      if(loginState == IAuthService.NO_EMAIL_CERTIFY) { // 이메일이 인증되지 않았다면 이메일 인증 메일 변경 및 재전송
       model.addAttribute("msg", resultVo.getEmail() + "메일로 메일인증을 받으셔야 로그인 가능합니다.n다른 메일주소로 변경하여 인증하시려면 확인을 클릭하시기 바랍니다.");
       model.addAttribute("redirect", "member/change/email?id=" + resultVo.getId() + "&token=" + securityService.getToken());
       model.addAttribute("redirectCancle", "");
       
       return "message/confirmReplace";
      }
     }

     return "redirect:/";
    }



    [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [다음10개▶]

     
    단축키 운영진에게 바란다(삭제요청/제안) 운영게 게시판신청 자료창고 보류 개인정보취급방침 청소년보호정책 모바일홈