Java에서 'synchronized' 키워드는 자바 언어의 초기 버전부터 지원되었습니다. 자바는 1995년 처음으로 발표되었고, 그때부터 'synchronized' 키워드를 사용하여 스레드 동기화를 제어하는 데 사용할 수 있었습니다. 따라서 Java 1.0부터 'synchronized' 키워드가 존재하게 됩니다. 그렇다면 'synchronized' 란 뭘까? 'synchronized' 는 Java 프로그래밍 언어에서 스레드 동기화를 구현하는데 사용되는 키워드 입니다. 스레드 동기화는 여러 스레드가 공유자원에 동시에 접근하려는 경우 발생하는 경쟁 조건과 같은 문제를 방지하고 스레드 간의 작업을 조절하기 위해 사용됩니다. 'synchronized' 키워드는 다음 두가지 주요 방법으로 사용됩니다. 메소드 레..
Android에서 View, ViewGroup, XML Layout은 사용자 인터페이스(Ui)를 설계하고 구성하는데 사용되는 중요한 개념과 구성 요소이다. 오늘은 이러한 것들에 대해서 정리를 해보자. View 란? View는 Android 애플리케이션에서 사용자 인터페이스의 기본 구성 요소이다. 버튼, 텍스트상자, 이미지, 체크박스와 같은 사용자가 보는 Ui 요소는 모두 View의 하위 클래스이다. View는 사용자 입력을 처리하고 화면에 그래픽 요소를 그릴 수 있다! View 객체를 일반적으로 위젯 이라고 부르며, 위에서도 언급했듯 Button 또는 TextView와 같은 여러 서브 클래스 중 하나 일 수 있다. ViewGroup 이란? ViewGroup을 일반적으로는 레이아웃 이라고 부르며, Line..
파이썬이란파이썬(Python)은 1990년 암스테르담의 귀도 반 로섬(Guido van rossum)이 개발한 인터프리터 언어이다. 귀도는 파이썬이라는 이름을 자신이 좋아하는 코미디 쇼인 ‘몬티 파이썬의 날아다니는 서커스(Monty python's flying circus)’에서 따왔다고 한다. 인터프리터 언어란소스 코드를 한 줄씩 해선한 후 그때그때 실행해 결과를 바로 확인할 수 있는 언어를 말한다. 인터프리터(interpreter)란, 우리말로 '통역사'라는 뜻이다. 우리가 컴퓨터에 명령을 내리면 한 줄씩 즉시 통역사가 컴퓨터 언어로 바꿔주는 거라고 생각하면 된다. 규모가 큰 소스의 경우, 컴파일 언어는 프로그램 실행 전 먼저 기계어로 컴파일하는 데 시간이 오래 걸릴 수 있는데 인터프리터 언어는 코드..
본 포스팅은 학교에서 수업을 듣고 정리한 내용입니다. 일반적인 프로그램의 형태 데이터를 받아서(입력단계), 데이터를 처리한 후에(처리단계), 결과를 화면에 출력(출력단계)한다. C언어 기본 프로그래밍 #include int main(int argc, const char * argv[]) { int x; int y; x = 100; y = 200; int sum = x + y; printf("두수의 합 : %d", sum); return 0; } 주석 프로그래머가 코드작성시에 필요한 메모를 작성하고 싶을 때 사용한다. 단, 주석의 경우 프로그램 컴파일 시에 영향을 끼치지 않는다. 그래서 필요한 내용을 양 껏 작성 가능하다. /* 한 줄로 된 주석 */ /* ------------------------ 저자..
Bit, Byte, 2진수 컴퓨터 시스템에는 여러개의 구멍이 존재한다. 그리고 이를 전기에 연결되어있으면 1, 연결되어 있지않으면 0이라고 사람이 임의로 정의한 것이다. 그리고 bit는 기본적으로 2진수 한 자리를 표현하며 0과 1 두가지로 표현된다. 1 byte = 8 bit 1 byte는 8 bit인데, 그 절반인 4 bit 는 이진수 4자리이고(비트가 2진수), 16진수 한자리가 된다. 즉 4 bit로 1~16까지 표현이 가능하다. int x = 10; // Int에서는 4Byte의 메모리 공간을 차지한다. 즉 32Bit만큼 메모리를 차지한다.
앱 혹은 웹을 1인이서 개발을 하다가 보면 백엔드 서비스가 필요한 경우가 많다. 또한 백엔드를 개발하더라도 모바일을 위해서는 요구하는 것이 많다. 예를들어 로그인, 회원가입 인증, 데이터베이스, 푸시알람, 스토리지, API등 모든 것을 모바일 개발을 위해서 개발해야한다. 파이어베이스란 위에서 설명한 것처럼 웹서비스를 만들면서 반복해서 사용하는 기능들은 (유저 인증, API, 데이터베이스..) 서비스 주체만 다를 뿐 그 절차와 기능이 비슷하다. 그런 기능들을 정형화해 서비스로 제공하는 것이 파이어베이스 다. 파이어베이스를 이용하면 서버리스 개발이 가능하다.! 웹서버는 브라우저가 요청하는 html, css, js 를 전송해주는 서비스 프로그램으로 요청에 따라 정적인 컨텐츠를 전달해서 정적 서버라고 부르는데,..
문제 https://www.acmicpc.net/problem/12852 12852번: 1로 만들기 2 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 자연수 N이 주어진다. www.acmicpc.net 어떻게 풀 것인가? 처음에는 단순 그리디 방식으로 접근했다. 하지만 그렇게 했다가는 시간초과가 발생한다. 문제를 보자. 시간 제한은 0.5초이다. 자 이렇게 시간제한이 빡빡하다는 것은 DP로 접근해야함이다. 그렇다면 DP 배열에 무엇을 넣어야할까? 점화식 수식을 넣어야한다. 그렇다면 점화식은 무엇을 넣어야 하는가? 이 문제에서 원하는 것은 가장 적게 연산하여 1을 도출하는 것이다. 그렇다. 점화식을 생각해본다면 dp[i] = min(dp[i / 3], dp[i / 2], dp[i - 1]) (i ..
문제 https://www.acmicpc.net/problem/15651 15651번: N과 M (3) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 어떻게 풀 것인가? 문제를 처음 읽었을 때는 어떠한 문제를 파악하는지 꽤나 오랜 시간이 걸렸다. 하지만 주어진 문제의 출력 부분을 보고는 백트래킹을 이용한 중복 조합 문제를 생각했다. 조합과 순열은 수학적인 부분이지만 조합을 실제 코드로 구현한 부분에서 visited 부분을 제거한다면, 중복조합이 됨을 알 수 있다. 아래에 링크에 남겨두었지만, 저 코드를 그대로 사용한다면, 시간 초과가 발..