본문 바로가기

All49

스케줄링 알고리즘 기본 FIFO 스케줄링 말 그대로 First In First Out 배치처리 시스템과 비슷함 최단 작업 우선 (SJF) 스케줄링 Shortest Job First 가장 프로세스 실행시간이 짧은 프로세스부터 먼저 실행을 시키는 알고리즘 RealTime OS (RTOS) 응용프로그램 실시간 성능 보장을 목표로 하는 OS 저어엉확하게 프로그램 시작 / 완료 시간을 보장해야하는 공정스러운?곳에서 많이 쓰임. Hardware RTOS, Software RTOS General Purpose OS (GPOS) 프로세스 실행시간에 민감하지 않고, 일반적인 목적으로 사용되는 OS 우리가 쓰는 일반적인 운영체제가 여기에 속함. Windows, Linux 우선순위 기반 스케줄러 Priority-Based 스케줄러 정적 우선순위 .. 2021. 10. 6.
멀티 태스킹 vs 프로세싱 vs 프로그래밍 멀티 태스킹 단일 cpu 에서 여러 응용 프로그램을 동시에 실행하는 것처럼 보이게 하는 시스템 멀티 프로세싱 여러 cpu 에서 하나의 응용 프로그램을 병렬로 실행하게 해서, 실행속도를 높이는 기법 멀티 프로그래밍 최대한 cpu를 많이 활용하도록 하는 시스템이다. 즉, 시간대비 cpu 활용도를 높이기 위해 응용 프로그램을 짧은 시간 안에 실행완료가 가능하도록 하는것! 응용프로그램은 cpu를 온전히 쓰기보다는, 다른 작업을 중간에 필요로 하는 경우가 많기 때문. 2021. 10. 6.
일렉트론 커스텀 네비게이션바 [작업한 이유] 데스크탑 설치형 서비스를 일렉트론이라는 툴을 이용해서 개발하고 있다. 그리고 일렉트론은 기본적으로 제공하는 상단 바가 존재하지 않는다. 이전에 우리 서비스는 뒤로가기/앞으로가기가 따로 없이 레이어를 전환하는 방식으로 구현되어있었는데 이번 웹 리뉴얼에서 뒤로가기/앞으로가기가 생기면서 설치형에서도 해당 기능을 사용할 수 있도록 상단바의 일부 기능이 필요하게 되었다. 찾아보니 라이브러리를 이용하는 방식도 있지만 직접 아이콘으로 커스텀하여 기능을 적용하는 방식이 더 서비스에 녹아들기 좋을 것 같아 직접 기능을 넣는 방식으로 결정했다. - 뒤로가기 - 앞으로가기 - 새로고침 - 우클릭시 새로고침 / 강력새로고침 선택팝업 [작업방식] 이참에 일렉트론의 이벤트만 처리하는 파일도 분리해서 작업했고 이벤.. 2021. 8. 24.
조직도 쿼리 개선 [개선했던 이유] 데스크탑 미니모드에서만 사용하던 조직도를 웹에서도 오픈할 예정이어서 기존에 조직도 탐색 시 아래의 거슬렸던 문제들을 해결하고자 개선을 진행했었다. 1. 전문을 사용자 depth 만큼 여러 번 호출하는 점 조직도가 펼쳐진 상태에서는 나의 소속 상위부서 뿐만 아니라 소속상위부서 하위의 같은 depth 부서들도 함께 조회해야 하기 때문에 재조회가 필요하다. 이 과정을 이전의 방식은 (최상위 -> 내 소속 부서)까지 한 depth 한 depth씩 js에서 반복분으로 찾아들어가 쿼리를 호출하도록 개발되어있었다. 2. 속도가 오래 걸리는 점 그러다 보니 안 그래도 슬로 쿼리로 이뤄져 있던 api인 데다가 depth가 깊은 경우에는 상위부서 값만 다르게 넘기는 동일 api의 수많은 호출이 일어나고 .. 2021. 8. 23.
섹션 1. 인터넷 네트워크 http/웹은 인터넷네트워크를 기반으로 하기때문에 사전학습으로 알아보자. 1. IP (인터넷 프로토콜) 인터넷 프로토콜의 역할 클라이언트가 ip주소를 부여받고 지정한 ip주소에 데이터를 전달한다. 이때 패킷(Packet)이라는 통신 단위로 데이터를 전달하게 된다. 한계 비연결성 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송한다! 정확히는 대상 서버가 패킷을 받을 수 있는지 없는지의 상태를 알 수가 없기 때문에 그냥 일단 보냄. 비신뢰성 중간에 패킷이 사라지거나 패킷이 순서대로 오지 않을 수 있다. 그럼 소실로 이어짐. 메시지가 대략 1500 바이트가 넘으면 끊어서 보내게 되는데, 끊어진 2개의 순서가 보장되지 않음. 패킷들이 중간에 다른 노드를 탈 수 있기 때문이다. ex) Hello, w.. 2021. 1. 10.
[JAVA] 변수(Variable), 타입, 형변환 1.1 변수란? 값을 저장할 수 있는 메모리상의 공간을 의미한다. 하나의 변수에는 단 하나의 값만을 저장할 수 있다. 그래서 값을 여러 번 저장하면 마지막에 저장한 값을 갖게 된다. 1.2 변수의 선언 변수가 선언되면 메모리에 변수의 타입에 맞는 크기의 저장공간이 확보되어, 값을 저장할 준비가 된다. 변수타입은 변수에 담을 값의 종류와 범위를 충분히 고려하여 결정해야 한다. 변수의 종류에 따라 변수의 초기화를 생략할 수 있는 경우도 있지만, 변수는 사용되기 전에 적절한 값으로 초기화 하는 것이 좋다. [참고] 지역변수는 사용되기 전에 초기화를 반드시 해야 하지만, 클래스변수와 인스턴스 변수는 초기화를 생략할 수 있다. 1.3 변수의 명명규칙 [필수규칙] 대소문자가 구분되며 길이제한이 없다. : True와.. 2021. 1. 3.
퇴사 후 회고록 방향을 찾고 싶은가? 그렇다면 먼저 방향을 잃어봤는가? 2020년은 내 인생 터닝포인트의 해라고 말해도 과언이 아닐 정도로 내 생각, 감정, 생활 등등 모든 면에 있어 큰 변화를 가져왔던 1년인 것 같다. 약 3년간 열정을 다해 다니던 회사에서의 퇴사 후 슬럼프, 그리고 떠난 두 번째 유럽여행, 돌아와서 마음을 다잡고 시작하게 된 웹/플랫폼 개발, 슬럼프를 이기게 해 준 취미 댄스팀생활, 서울에서 홀로 보낸 백수 시절, 스타트업 개발자로의 새로운 시작. 2020년을 되돌아보면 정서적으로 어지럽고 힘들고 어두웠던 시기가 더 많은 것 같다. 그럼에도 불구하고 결과적으로는 내 인생에서 아주 뜻깊고 결정적인 한 해였기 때문에, 나의 다사다난한 과거가 미래의 누군가에게 도움이 되었으면 좋겠다는 마음으로 회고록을 .. 2021. 1. 2.
[JAVA] 난수생성 Math.random() vs Random 이전에 난수에 대한 개념과 Seed에 대한 내용을 알아보았다. 이번에는 실제로 JAVA에서 사용되는 대표적인 난수 생성 방법인 Random클래스와 Math 클래스의 random()메소드에 대해 알아보자. 두 가지의 차이중 종자값의 개념이 포함되므로 seed 종자값에 개념은 설명은 미리 이해하는 것이 좋다. 2020/10/22 - [🕵🏻‍♀️개발지식/이론] - 컴퓨터에서 생성하는 난수는 진짜 난수가 아니다? 컴퓨터에서 생성하는 난수는 진짜 난수가 아니다? 코드를 짜다보면 '난수'를 사용해야하는 경우가 많다. 습관적으로 Random클래스나 Math클래스의 random() 매소드를 쓰곤 했는데 정확한 차이를 모르고 썼는데, 알고리즘 공부를 하던 중 난수가 진짜 todayscoding.tistory.com 자바.. 2020. 10. 22.
컴퓨터에서 생성하는 난수는 진짜 난수가 아니다? 코드를 짜다보면 '난수'를 사용해야하는 경우가 많다. 습관적으로 Random클래스나 Math클래스의 random() 매소드를 쓰곤 했는데 정확한 차이를 모르고 썼는데, 알고리즘 공부를 하던 중 난수가 진짜 난수가 아니라는 글을 보고 이참에 컴퓨터가 난수를 생성하는 과정을 정확히 알고싶어졌다. 난수란? 난수(亂數)란 정의된 범위 내에서 무작위로 추출된 수를 일컫는다. 난수는 누구라도 그 다음에 나올 값을 확신할 수 없어야 한다. 하지만 컴퓨터 과학 분야에서 말하는 난수는 보통 결정론적인 방법으로 생성된 난수이다. 특정 입력이나 조건에 따라 무작위로 선택된 것처럼 보이는 난수 또는 난수열이 생성되며 그 생성 조건이나 입력이 같다면 그 결과값은 항상 같다. 진정한 의미에서의 난수는 아니지만 그 결과값이 충분히.. 2020. 10. 22.
[JAVA 백준알고리즘] 14888번 연산자 끼워넣기 14888번 연산자 끼워넣기! 깊이우선탐색(DFS)의 재귀호출을 활용한 문제 중 기본적인 문제에 속한다고 한다. 문제 N개의 수로 이루어진 수열 A1, A2, ..., AN이 주어진다. 또, 수와 수 사이에 끼워넣을 수 있는 N-1개의 연산자가 주어진다. 연산자는 덧셈(+), 뺄셈(-), 곱셈(×), 나눗셈(÷)으로만 이루어져 있다. 우리는 수와 수 사이에 연산자를 하나씩 넣어서, 수식을 하나 만들 수 있다. 이때, 주어진 수의 순서를 바꾸면 안 된다. 예를 들어, 6개의 수로 이루어진 수열이 1, 2, 3, 4, 5, 6이고, 주어진 연산자가 덧셈(+) 2개, 뺄셈(-) 1개, 곱셈(×) 1개, 나눗셈(÷) 1개인 경우에는 총 60가지의 식을 만들 수 있다. 예를 들어, 아래와 같은 식을 만들 수 있다.. 2020. 10. 20.
정적 바인딩(Static binding) vs 동적 바인딩(Dynamic binding) 바인딩(binding)이란? 네이버 지식백과에서 찾아보면 바인딩은 '컴퓨터 프로그래밍에서 각종 값들이 확정되어 더 이상 변경할 수 없는 구속(bind) 상태가 되는 것' 으로 설명되어있다. 즉, 프로그래머가 ​코딩을 해서 컴파일을 하게 되면 각각의 코드가 메모리 어딘가에 저장되고, 함수를 호출하는 부분에는 그 함수가 저장된 메모리의 주소값이 저장되며 프로그래머가 값을 변경할 수 없는 상태가 된다. 여기서 함수를 호출하는 부분(호출부)에 함수가 위치한 메모리 번지(정의부)로 연결시킨 것을 바인딩이라고 한다! 정적바인딩(Static binding)이란? 실행 이전에 값이 확정되면 정적 바인딩이라고 한다. 컴파일 타임에 호출될 함수가 결정되는 것으로, 함수는 기본적으로 정적 바인딩된다. 컴파일러는 선언되어있는.. 2020. 10. 7.
객체 지향 프로그래밍을 파해쳐보자! 처음 객체에 대해 배웠을 때 '객체'에 대해 설명하기 위해 노력하는 글들을 수도없이 읽었고, 나도 그 글을 이해하고 내 입으로 설명해보기 위해 몇일간 끙끙 앓았던 기억이 있다...🤣 수도없이 '객체'를 쓰고 있지만 아직도 그게 뭐야? 라고 물어보면 선뜻 대답하기가 쉽지 않다. 뭔지도 모르고 쓰지도 못했던 그때와는 달리 다행(?)히도 지금은 뭔진 정확히 몰라도 아주 유용히 쓰고 있으나 머리속에는 난해한 무언가만 남아있는 찝찝함😂😥 객체 지향 프로그래밍이 뭔지 간단명료하게 정리해보자!🕵🏻‍♀️ 객체지향프로그래밍(OOP : Object Oriented Programming) 이전에는? 객체 지향 프로그래밍 이전의 프로그래밍 패러다임을 살펴보면, 중심이 컴퓨터에 있었다. 프로그램이 어떤 일을 하고나서, 그 다음.. 2020. 10. 5.
[JAVA] replace()와 replaceAll()의 차이_정규표현식 vs 문자열 본 포스팅 내용은 제가 이해한 방식으로 구현 및 작성하였습니다. 더 좋은 방식이 있다면 피드백 주시면 정말 감사하겠습니다!🙏🏻 데이터베이스에 /r/n로 표현되어있는 엔터를 로 바꿔 표현하던 중 문제가 생겼다.. 컨트롤러에 작성한 java코드는 아래와 같다. 1. replaceAll("\\r\\n", " ") 사용 -> 오류 survey.setSurveyIntro(survey.getSurveyIntro().replaceAll("\\r\\n", " ")); replaceAll을 사용하여 다시 setter로 넣어줬는데도 바뀌지 않는 것이다. replaceAll함수 사용이나 set과 get사용에 문제가 있나? 2. replaceAll("수고", "소이") 사용 -> 정상작동 survey.setSurveyIntr.. 2020. 9. 10.
[DP_백준 9095번 문제_JAVA] 1, 2, 3 더하기 인생 두번째 알고리즘 문제 성공!🎇 아직까진 풀고나서 맞는지 아닌지 확신에 차진 않지만 다른 분들의 답을 보고 내가 생각하지 못한게 무엇인지를 파악하고 적용할 수 있는 정도가 되었다는 것도 하루만에 장족의 발전이라고 생각한다. 내일은 더 발전하자!🎈 문제풀이는 완벽하진 않지만 제가 이해한 방식으로 풀이 했습니다. 코드를 보다가 더 좋은 방식이 있다면 피드백 주시면 정말 감사하겠습니다!🙏🏻 문제 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 1+1+1+1 1+1+2 1+2+1 2+1+1 2+2 1+3 3+1 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트.. 2020. 8. 28.
[백준코딩사이트] 컴파일에러 발생시 백준사이트를 어제 처음 이용하다가 아래와 같이 '컴파일에러'라고 발생하였다. 원인은 아주 간단했다. 코드 제출 시 import구문도 함께 넣어줘야한다. 2020. 8. 28.
[DP_백준 1463번 문제_JAVA] 1로 만들기 내 인생 처음으로 다이나믹 프로그래밍 문제를 풀었다!! 🎆 어제의 나처럼 첫 시작하시는 분들에게 도움이 되길 바라며 글을 써본다 어제 밤에 문제를 접하고 잠들기 전까지 잊혀지지 않아서 '동적프로그래밍' 으로 유튜브에 검색했을 때 나오는 영상들을 c/java/파이썬 언어불문 전부 재생해서 보면서 잠들었다. 그럼에도 불구하고 '재귀함수'라던가 'topdown방식과 bottonup방식'이 뭔지 전혀 이해가 되지 않는 상태였다. 이것 저것 찾아보다가 '사람과 컴퓨터 모두 이해하기 편한 방식' 이라고 쓰여있는 글을 보고 정말 놀라기도 했다... 하지만 누군가가 했으니 나도 할 수 있겠지!! 싶어서 찾아보며 공부한 끝에 문제풀이 성공! 누군가에겐 쉽고 간단한 문제일 수 있으나 시작이 반이라고.. 첫 성공이 감격스러.. 2020. 8. 28.
input 태그속성 중 disabled와 readonly의 차이 input태그에 넣어있는 value를 servlet에서 가져오려고 아무리 시도해봐도 null만 들어가는 상황에 봉착했다.. 답답한 상황에서 알게 된 사실! disabled와 readonly의 차이가 value값의 사용가능여부에 있다는 것!!! disabled 와 readonly 모두 input 태그를 비활성화시켜서 사용자가 직접 값을 입력하지 못한다는 점에서는 동일하다. 하지만 disabled로 설정했을 경우에는 value 값을 가져오지 못하고, readonly 는 값을 가져올 수가 있다. 이 간단한 걸 몰라서 1시간 가까이 시간을 버렸지만.......😂 그 끝에는 결국 알게되었음에 감사하며 공부를 계속한다🕵🏻‍♀️ 2020. 7. 19.
[HTML기초] 1.텍스트관련태그 ⚾ 글자 관련 태그 : h1~h6 까지 표현 할 수 있으며 h1이 가장 크고 h6이 가장 작다. h1 태그입니다. h2 태그입니다. h3 태그입니다. h4 태그입니다. h5 태그입니다. h6 태그입니다. ⚾ 줄바꿈 태그 ⚾ 수평선+줄바꿈 태그 ⚾ 문단 구분 태그 문단영역을 나누는 태그로는 p태그와 pre태그가 있다. p태그는 문단영역을 나누는 태그이지만 한 개의 공백만 표시하여 줄 바꿈입력을 별도의 태그로 지정해주어야한다. pre 태그는 여러칸 띄우기 혹은 줄 바꿈등을 포함하여 입력한 내용 그대로를 표현하는 태그이다. 문단영역을 나누는 태그로는 p태그와 pre태그가 있다. p태그는 문단영역을 나누는 태그이지만 한 개의 공백만 표시하여 줄 바꿈입력을 별도의 태그로 지정해주어야한다. pre 태그는 여러칸 띄.. 2020. 5. 20.
[JAVA기초] 변수(Variable)의 개념과 명명규칙 🎃 변수란? 값을 저장할 수 있는 메모리상(RAM)의 공간을 의미한다. 하나의 변수에는 단 하나의 값만을 저장할 수 있다. 여러 개의 값을 저장할 수는 없기 때문에, 값을 여러 번 저장하면 마지막에 저장한 값만을 갖게 된다. 🎃 변수의 선언 메모리 공간에 데이터를 저장할 수 있는 공간을 할당하는 것을 말한다. 더 자세히는, stack에 공간을 만들어 놓는 것이다. 변수가 선언되면 메모리에 변수의 타입에 맞는 크기의 저장공간이 확보되어, 값을 저장할 준비가 된다. 변수 타입(자료형)은 변수에 담을 값의 종류와 범위를 충분히 고려하여 결정해야 한다. 변수의 종류에 따라 변수의 초기화를 생략할 수 있는 경우도 있지만, 변수는 사용되기 전에 적절한 값으로 초기화 하는 것이 좋다. 지역변수는 사용되기 전에 초기화.. 2020. 5. 19.
반응형