html 페이지 로딩 순서
2019-03-31 00:00:00 +0000HTML 페이지 로딩 순서
- html, Javascript, jsp 등.. 은 인터프리터 언어이다. 그러므로 위에서부터 아래로 순서대로 실행된다
- import -> head 태그 - > <body>태그 -> body onload -> window.onload
- jsp 파일 일 때는 jsp 사용 부분부터 먼저 실행되고 html 부분이 실행된다
- 아래 예제를 실행하면 콘솔창에 head, body, 아래 스크립트, onLoad 순으로 출력되는 것을 확인할 수 있다
<script>
console.log('head');
</script>
</head>
<body>
<script>
console.log('body');
</script>
</body>
<script>
$(function(){
console.log('onLoad');
});
console.log('아래 스크립트');
</script>
CSS, JavaScript 위치
- CSS는 <head>태그 안에 있어야 한다. 왜냐하면 스타일 규칙이 있어야 랜더링을 할 수 있기 때문에 빠르게 알기 위해서이다.
- JavaScript는 <body> 태그 맨 아래에 넣는다. <head>태그 안에 있다면 랜더링을 멈추고 JavaScript를 읽기 때문에 화면 랜더링이 오래걸릴 수 있다.
소수구하기(PrimeNumber)
2019-03-31 00:00:00 +0000문제
https://www.acmicpc.net/problem/1978
풀이
- 소수와 합성수로 나뉜다.
- 소수란 1과 자기 자신의 수만 약수로 가진 자연수.(즉 1은 소수가 아니다)
- 합성수는 약수의 개수가 3개 이상인 수.
- 예를들어 2, 3, 5, 7 은 소수이다.
- 에라토스테네스의 체 알고리즘은 추후 정리
소스코드 풀이
- value를 1부터 value 까지의 자연수로 계속 나눈다. 그 중 나누어지면 복합수. 나누어지지 않으면 소수
import java.util.Scanner;
public class Main{
public static boolean isPrimeNumber(final int value) {
if(1 == value)
return false;
int val = value;
for(int i = 2; i < value; ++i) {
int mod = val%i;
if(0 == mod) {
System.out.println("value:"+value+" i:"+i);
return false;
}
}
return true;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int length = sc.nextInt();
int[] arr = new int[length];
int count = 0;
for(int i = 0; i < length; ++i) {
arr[i] = sc.nextInt();
if(true == isPrimeNumber(arr[i])) {
++count;
}
}
System.out.println(count);
}
}
최소공배수,최대공약수
2019-03-28 00:00:00 +0000문제
https://www.acmicpc.net/problem/1934 https://www.acmicpc.net/problem/2609
풀이
- 유클리드 호제법으로 풀어야 한다
- 유클리드 호제법이란 두 수 사이에 존재하는 최대공약수를 구하는 알고리즘
- a를 b로 나눈 나머지가 r이라면 GDC(a, b) = GDC(b, r) r = 0 이면 b가 최대 공약수
- 예를 들어 GCD(16, 4) = GCD(4, 0) = 최대공약수는 4
- 최소 공배수는 a * b / 최소공배수
- GDC의 공식은 작은 수가 0이 될 때 까지 큰수를 작은수로 나누고 몫을 작은 수에 넣고, 기존 작은 수는 큰수에 넣는다
최소공배수, 최대공약수 구하기
import java.util.Scanner;
public class Test{
public static int gcd(int big, int small) {
while(small != 0) {
int r = big%small;
big = small;
small = r;
}
return big;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int arr = 0; // 최소공배수
int arr2 = 0; // 최대공약수
int small = sc.nextInt();
int big = sc.nextInt();
if(big < small) {
int temp = small;
small = big;
big = temp;
}
arr = gcd(big, small);
arr2 = big*small / gcd(big, small);
System.out.println(arr);
System.out.println(arr2);
}
}
처음 작성한 소스
- 아래 소스는 2와 3으로 나누어지지 않는 정수( 7, 7 )를 대입할 시 잘못된 값 출력(49)
import java.util.Scanner;
public class Test{
public static void main(String[] args) {
// 최소공배수 구하기
Scanner sc = new Scanner(System.in);
int count = sc.nextInt();
int[] arr = new int[count];
for(int i = 0; i < count; ++i) {
int small = sc.nextInt();
int big = sc.nextInt();
int value = 1; // 나누는 수
while(true) {
if(small <= 1 || big <= 1) {
break;
}
if(0 == small%2 && 0 == big%2) {
small *= small/2;
big *= big/2;
value *= 2;
}else if(0 == small%3 && 0 == big%3){
// 홀수
small *= small/3;
big *= big/3;
value *= 3;
}else {
break;
}
}
int result = 1;
if(small != 0) result *= small;
if(big != 0) result *= big;
if(value != 0) result *= value;
//System.out.println("small:"+small+" big:"+big+" value:"+value);
arr[i] = result;
}
for(int i = 0; i < count; ++i ) {
System.out.println(arr[i]);
}
}
}
Stream
2019-03-27 00:00:00 +0000Stream
- 자바 8에서 람다와 함께 추가됨
- Collection을 for, foreach로 다루면 코드가 복잡해지므로 사용
- 함수형 프로그래밍(동작하는 코드를 간단하체 처리. 상태관리x)
- 병렬처리 가능(그러나 ThreadPool을 사용하여 성능저하를 일으킬 수 있음)
예제
- reduece 함수를 이용하여 list에 있는 모든 값을 더하고 첫번째 인자인 1을 더해준다,
- 기존 방식보다 소스코드가 줄어들었고 한눈에 코드를 파악할 수 있다.
public class Test{
public static void main(String[] args) {
{
// 기존방식
int sum = 1;
List<Integer> list = Arrays.asList(1,2,3);
for (Integer value : list) {
sum += value;
}
System.out.println("기존방식:"+sum);
}
// 스트림 방식
List<Integer> list = Arrays.asList(1,2,3);
int result = list.stream().reduce(1, (a, b) -> a+b );
System.out.println("스트림방식:"+result);
}
}
Stream 객체 생성
- array이나 Collection을 이용하여 Stream 생성
public class Test{
public static void main(String[] args) {
// Array
int[] arr = new int[]{1,2,3};
Arrays.stream(arr);
// Collection List, Set..
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
Stream stream = list.stream();
}
}
Stream builder 함수
- Stream의 값을 차례대로 넣는 함수
public class Test{
public static void main(String[] args) {
// Array
Stream<Integer> arr = Stream.<Integer>builder().add(1).add(2).add(3).build();
arr.forEach((x)->System.out.println("value="+x));
}
}
Stream Filter 함수
- b가 포함된 문자열만 Stream
에 추가하는 필터링 기능
public class Test{
public static void main(String[] args) {
// Array
List<String> list = Arrays.asList("ab", "bc", "cd", "de");
Stream<String> str = list.stream().filter(x->x.contains("b"));
str.forEach((x)->System.out.println("value="+x));
}
}
Stream generate 함수
- Stream에 값을 무한으로 생성하는 함수. 무한으로 생성하기 때문에 limit 함수로 크기를 제한 해야한다
public class Test{
public static void main(String[] args) {
// Array
Stream<String> stream = Stream.generate(() -> "test").limit(10);
stream.forEach((x)->System.out.println("value="+x));
}
}
Stream distinct 함수
- 요소의 중복값을 제거하는 함수
public class Test {
public static void main(String[] args) {
List<String> fruit = Arrays.asList("사과", "오렌지", "배", "배", "오렌지");
fruit.stream().distinct().forEach(System.out::println);
}
}
Stream sorted 함수
- 정렬을 하는 함수. 인자 없이 그냥 호출하면 오름차순이고 Comparator.reverseOrder()함수를 호출하면 내림차순이다.
public class Test {
public static void main(String[] args) {
List<Integer> fruit = Arrays.asList(40, 100, -20, 4, 10);
fruit.stream().sorted().forEach(System.out::println);
fruit.stream().sorted(Comparator.reverseOrder() ).forEach(System.out::println);
}
}
Lambda(람다식)
2019-03-26 00:00:00 +0000람다식(Lambda)
- 자바8에서 추가
- cmd 창에서 java -version 명령어를 사용하면 java 버전을 확인할 수 있다(1.8.0_66 라면 두번째 숫자가 8이므로 java 8)
- 함수를 만들지 않고 코드로 실행하는 방식
- 코드를 간단하게 만들 수 있고, 함수를 만들지 않기 때문에 빠르게 개발할 수 있다.
- 익명함수는 재사용이 불가능하고, 디버깅이 어렵다
(매개변수, ...)->{실행문...}
- 인터페이스가 하나의 함수만 가지고 있을 때, 함수형 인터페이스라고 한다.(ex Runnable interface)
- 아래 예제에서 Thread 생성 시 Runnable 객체를 매번 생성하고 함수를 정의해야한다.
- 람다표현식을 사용하면 직접 객체를 만들 필요가 없다. JVM이 Thread 생성자를 보고 Runnable을 구현하는 객체로 자동으로 만들어준다.
public class Test{
public static void main(String[] args) {
new Thread(new Runnable() {
@Override
public void run() {
for(int i = 0; i < 10; ++i) {
System.out.println("hello");
}
}
}).start();
new Thread(()-> {
for(int i = 0; i < 10; ++i) {
System.out.println("hello");
}
}).start();
}
}
Posts
Interceptor(인터셉터)
Android Studio Install
계층형 게시판
VirtualBox Ubuntu 18.04.2 LTS
TransactionAwareDataSourceProxy Error
Java Coding Conventions
Java Long과 long의 차이
Mybatis 객체 안에 객체 매핑
JavaConfig mariadb 연결
DataTable
관리자 페이지
MappingJackson2JsonView
Spring Javaconfig
게시판 만들기-제품 등록
게시판 만들기-제품 페이지 제작
게시판 만들기-회원탈퇴 및 게시판 삭제 플래그 추가
footer 하단에 고정시키기
bootstrap4 사용법
Spring 데이터 검증 @Valid, BindingResult
brackets 실시간 미리보기
Spring 기본설정(pom.xml, web.xml, encoding)
Vue.js computed, methods, watch
javascript onkeyup
Maria DB Incorrect string value Error
javascript 암호화(md5, base64)
Vue.js template
Vue.js 소개
Nexacro 설명
ControllerAdvice
Batch
html 페이지 로딩 순서
소수구하기(PrimeNumber)
최소공배수,최대공약수
Stream
Lambda(람다식)
inner class(내부 클래스)
final 키워드
file upload
파이썬 빅 데이터 K-평균(K-means)
아나콘다(Anaconda), 주피터 개발환경 세팅
텐서플로우(TensorFlow) 아키텍쳐 및 Session
텐서플로우(TensorFlow)상수, 변수, 함수
머신러닝 기초
한글 리스트 오름차순, 내림차순
연속된 글자의 갯수 출력
java spring5 프로젝트 설정
restController
spring 세팅 및 기본설정
mybatis trim
jquery datepicker
ajax로 데이터 전달/응답 받는법
mybatis error
mybatis 게시판 만들기 순서
Java Jsp Mybatis Dynamic Query
mybatis
git 소개
node.js 개발환경 구축
node.js 기본 내장 모듈
node.js의 전역 객체
node.js http module
node.js event
jdbc
자바빈
jsp, servlet 정리
java null object pattern
다음지도 key 등록(kakao map)
공공 데이터 open api
facebook login api
sourcetree 사용법
JavaScript event3
JavaScript jquery
JavaScript dom
JavaScript ajax
JavaScript 이벤트2
JavaScript 캡슐화
JavaScript Array,내장객체
JavaScript var
JavaScript 객체,생성자
JavaScript 함수,클로저
JavaScript Event
javascript eclipse 자동완성(with tern)
CSS position
HTML5,CSS 선택자
자바 시간 측정
git,eclipse 연동
HTML 기초 정리
Eclipse Web 환경세팅
피보나치의 수
Oracle 반복문,커서,예외,저장 서브프로그램
Oracle PL/SQL
Oracle 다중쿼리(Multiple row query)
Oracle 인덱스, 뷰, 시퀀스, 트랜잭션, 세션 정리
Oracle JOIN 정리
Oracle DDL, DML 정리
Oracle 문자열 함수 정리
Oracle 숫자,날짜,자료형 변환 함수 정리
Oracle 제약조건 정리
Oracle 기초 쿼리 정리
문제2775
DFS
junit
json
algorithmus basic
circular queue(원형큐)
binary search(이진탐색)
port forwarding(포트포워딩)
kakao chatbot(카카오 챗봇)
java io
sort comparable, comparator
Unresolved compilation problem
ArrayList, HashMap
Regular(정규표현식)
Enum Class
String Function
refactoring 이란(상수,제어플래그,assert)
reference,abstract 정리
FileNotFoundException Solve
static
Thread Synchronization(스레드동기화,원자성)
Java Exception(예외처리)
Java 생성자, this, super
roomnum
BeeHouse
Git Reset, Revert
Git Log
Array
stack
pyramid draw
Star Draw(별 그리기4)
Star Draw(별 그리기3)
Star Draw(별 그리기2)
Star Draw(별 그리기1)
Loop(While, For)
자바 데이터 타입, 데이터 연산
시계방향 달팽이 그리기
정수값의 짝수,홀수 갯수 구하기
java, Scanner 정리
draw dog
subscribe via RSS