본문 바로가기

분류 전체보기

(70)
[MySQL] Workbench에서 where절 없이 업데이트 안될때 배경 데이터를 전체적으로 변경해야 하는 상황 워크벤치에서 update문으로 한번에 데이터를 변경하려 했다. 이슈 Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect. 위와 같은 에러가 나오면서 대량업데이트가 안됐다. 세이프 업데이트 모드라서 쉽게 말해 업데이트에 락이 걸려있는 상황. 해결 방법 [MySQLWorkbench] -> [Settings] -> [SQL Editor] -> Safe Upd..
[React Native] 초초초간단 왕초보 앱 만들기(1) - 설정부터 앱 실행까지 들어가기 전에 배경지식을 공부하지 않고, 일단 내 핸드폰에서 실행되는 어플을 보고 싶다면 일단 한번 따라해보자. 앱개발 설정 1. 노드와 npm을 설치한다. 노드(node.js) 홈페이지에서 LTS 버전을 OS에 맞게 설치한다. 다운로드 페이지 : https://nodejs.org/en 위의 페이지에서 노드를 설치하면 npm(node package manager)은 자동으로 같이 설치된다. 이미 설치되어 있다면 생략한다. 설치되었는지 확인하는 방법은 아래와 같다. (설치된 버전의 확인방법과 동일하다) // node.js 버전 확인 node -v // npm 버전 확인 npm -v 2. VS code를 실행한다. VS code가 없다면 먼저 설치하고, (다운로드 페이지 : https://code.visua..
[Java] 서버 실행 환경 조회하기 (베타인지 확인해서 로직 적용) 배경 이메일 알림 발송 기능을 구현하던 중, 테스트 할때는 테스트용 계정에서 메일이 수신되도록 구현하려고 함. 로컬이나 알파에서는 테스트 계정. 베타에서는 실제 담당자한테 메일을 발송. 이슈 실행환경을 확인해서 beta가 아닐때는 (local 또는 alpha 일때) 테스트 계정으로 수신자를 설정. String env = System.getproperty("spring.profiles.active"); if(env.equals("beta")) { // 실제 담당자로 수신인 셋팅 } else { // 테스트계정으로 수신인 셋팅 } 위와 같이 적용했을때 로컬에서는 알파환경으로 실행해도 이슈가 발생하지 않고 메일발송이 정상작동 함. 알파서버를 실제로 올렸을 때 에러로그없이 메일발송이 되지 않고, 500에러 발생..
[JAVA/멀티스레드] JAVA멀티스레딩 - 스레드연결 (join) join 필요 배경만약에 프로그램이 실행되는 과정에서 어떤 계산에 대한 결과값을 받아서 다음 로직을 실행해야 되는 상황이라면.. 어떻게 처리해야할까? 스레드A가 스레드B의 결과값을 참조하려할때 단순히 루프를 돌려서 스레드B의 종료를 확인할 수 있다. 그러나 이 방법은 스레드A의 실행을 방해하여 느리게 하므로 비효율적이다. 예제1. 팩토리얼 계산 스레드 실행팩토리얼 계산을 여러개 한번에 실행하는 경우 각각의 계산은 각각의 스레드로 실행 모든 스레드의 실행이 끝났을때 값을 출력하기를 원함 public static class FactorialTread extends Tread { private long inputNumber; private BigInteger result = BigInteger.ZERO; pr..
[JAVA/멀티스레드] JAVA멀티스레딩 - 스레드종료 및 데몬스레드 퀴즈 퀴즈1 public static void main(String [] args) { Thread thread = new Thread(new WaitingForUserInput()); thread.setName("InputWaitingThread"); thread.start(); } private static class WaitingForUserInput implements Runnable { @Override public void run() { try { while (true) { char input = (char) System.in.read(); if(input == 'q') { return; } } } catch (IOException e) { System.out.println("An exception..
[JAVA/멀티스레드] JAVA멀티스레딩 - 스레드조정 (스레드 종료 및 Demon 스레드) 스레드 조정하나의 스레드를 다른 스레드에서 멈추게하는 작업 스레드를 멈추게 하는 이유 (스레드 조정 이유)와 스레드 조정방법 (멈추는 방법)1. 사용하지 않는 스레드의 리소스 정리스레드는 아무것도 하지 않을때도 리소스를 사용한다.메모리와 일부 커널 리소스를 사용하고, 스레드가 실행중이라면 CPU시간 뿐만 아니라 CPU 캐시공간도 사용한다.그러므로 생성한 스레드가 이미 작업을 완료했는데, 애플리케이션은 작동 중이라면 사용하지 않는 스레드가 사용하는 리소스는 정리해야 한다. 예제스레드 sleep메서드에서는 interruptedException이 발생하면 직접 처리해야 하는게 명확하다 package thread.interrupt; public class Main { public static void main(..
[JAVA/멀티스레드] JAVA멀티스레딩 - 스레드생성2부. 스레드 상속 (도둑과 경찰 예제) 스레드 생성방법 두번째 스레드에 대한 개별적인 객체와 Runnable의 또다른 객체를 만드는 대신 (스레드생성1부에서 했던 방법), 스레드를 확장하는 새 클래스를 만든다. Thread 클래스를 열어서 확인해보면 Runnable인터페이스가 구현된 것임을 알수 있다. 현재 스레드와 직접적으로 관련된 많은 데이터와 메서드에 엑세스 할 수 있어요 package thread.creation.example; public class Main { public static void main(String[] args) { Thread thread = new NewThread(); thread.start(); } public static class NewThread extends Thread{ @Override public..
[JAVA/멀티스레드] JAVA멀티스레딩 - 스레드생성1부. 스레드의 기능과 디버깅 스레드 생성자바에서는 JDK가 모든 스레드의 관련 속성과 메서드를 스레드 클래스로 압축한다. 그래서 새 스레드를 만들려면 스레드 객체를 생성해야한다. package thread.creation.example; public class Main { public static void main(String[] args) { Thread thread1 = new Thread(new Runnable() { @Override public void run() { //Code that will run in a new thread } }); //lambda java8 Thread thread2 = new Thread(()->{ //스레드명을 알 수 있는 static 메서드 Thread.currentThread().getN..