https://ram2ram2.tistory.com/16

 

htttps 호출시 SSL 무시하여 오류안나게 하는법

자바로 HttpsURLConnection을 사용하여 https 사이트에 connect 하면 오류가 난다. 이 경우에는 SSL을 무시하여 우회하도록 하는 코드를 작성하여야 한다. 먼저, 해당 URL이 https 인지 판별하는 코드를 썼다.

ram2ram2.tistory.com

 

Collection - List, Set, Map 

 

개발할때 정~~말 많이 쓰는거죠?

정리가 매우 잘 되어있는 블로그입니다.

 

https://brunch.co.kr/@springboot/57

 

Collection - List, Set, Map

- Java Collection 에 대한 간략한 정리 | Overview Java Collection에 대해서 간략하게 정리해본다. by Eddy.Kim Collection Java Collection의 주요 인터페이스는 List, Set, Map 이다. 인터페이스를 구분하는 가장 중요한

brunch.co.kr

 

조인에 관해서는 아래 미래학자님의 스토리를 보면 개념 정리가 아주 잘 되어있다..

 


https://futurists.tistory.com/17

 

[MySQL] 7장 조인 : JOIN (INNER, LEFT, RIGHT)

조인은 관계형 데이터 베이스에서 일반적으로 많이 사용하며, 충분한 이해 없이 사용하기 쉬운 내용이다. 이번 시간에는 여러 조인의 종류가 그 사용하는 예에 대해서 공부해보자. INNER 조인 LEFT

futurists.tistory.com

 

MYSQL에는 CAST, CONVERT라는 연산자가 있다.

사용법은 

SELECT CAST(변환대상 AS TYPE) FROM DUAL 

SELECT CONVERT(변환대상, TYPE) FROM DUAL

 

변환이 가능한 타입은 아래와 같다

  • BINARY[(N)]
  • CHAR[(N)] [charset_info]
  • DATE
  • DATETIME
  • DECIMAL[(M[,D])]
  • JSON
  • NCHAR[(N)]
  • SIGNED [INTEGER]
  • TIME
  • UNSIGNED [INTEGER]

1. 문자에서 숫자로 변환 예제

SELECT CAST('123' AS UNSIGNED) FROM DUAL;

[결과] 123

 

2. 숫자에서 문자로 변환 예제

SELECT CAST(123 AS CHAR(3)) FROM DUAL;

SELECT CONVERT(202203020950, CHAR);

 

3. 문자 또는 숫자를 날짜 타입으로 변환 예제

SELECT CAST(20220302 AS DATE) FROM DUAL;     

SELECT CAST('20220302' AS DATE) FROM DUAL;

[결과] 2022-03-02

 

 

 

 

그루비는 자바와 참 많이 닮았지만 또 다르다.

스크립트라 워낙 간단하고 쉬워서 오히려 자바와 같이 생각했다가 헤맨 적도 많이 있다.

 

오늘은 그루비로 간단하게 타입 변경을 하는 것을 알아보고자 한다.

 

1. String 에서 Map으로 변경하기

import com.fasterxml.jackson.databind.ObjectMapper;

ObjectMapper mapper = new ObjectMapper();
String empStr = "{\"name\":\"홍길동\", \"phone\":\"010-1234-5678\"}";
Map map = mapper.readValue(empStr, Map.class)
log.warn map	//결과: {name=홍길동, phone=010-1234-5678}

2. Map에서 String으로 변경하기

Map empMap = new HashMap()
empMap.put("name", "홍길동")
empMap.put("phone", "010-1234-5678")
log.warn empMap	//결과 {phone=010-1234-5678, name=홍길동}

String empStr = empMap.toString()
log.warn empStr	//결과 [phone:010-1234-5678, name:홍길동]

위 결과를 살펴보면 Map일 때는 중괄호{}로 나오고, String으로 바뀌었을 때는 대괄호[]로 표현되었음이 확인된다.

 

3. Json String 에서 Map으로 변경하기

import groovy.json.JsonBuilder
import groovy.json.JsonSlurper

String jsonString = """
{
    "name" : "Gildong",
    "pnone" : "010-1234-5678",
    "passwordd" : { "value" : "pass" }
}
"""
def json = new JsonSlurper().parseText(jsonString)
def jsonData = new JsonBuilder(json).toPrettyString()

log.warn "json: ${json}"
log.warn "jsonData: ${jsonData}"

/* 결과 
json: [name:Gildong, pnone:010-1234-5678, passwordd:[value:pass]]
jsonData: {
    "name": "Gildong",
    "pnone": "010-1234-5678",
    "passwordd": {
        "value": "pass"
    }
}
*/

 

4. Json에서 Map으로 변경하기

import com.fasterxml.jackson.databind.ObjectMapper;
import groovy.json.JsonBuilder
import groovy.json.JsonSlurper

String jsonString = """
{
    "name" : "Gildong",
    "pnone" : "010-1234-5678",
    "passwordd" : { "value" : "pass" }
}
"""
def json = new JsonSlurper().parseText(jsonString)
def jsonData = new JsonBuilder(json).toPrettyString()


ObjectMapper mapper = new ObjectMapper()
Map map = mapper.readValue(jsonData.toString(), Map.class)
log.warn map
log.warn map.get("name")

Random() 함수를 이용해서 아이디, 이름을 생성해보자.

지난번 포스팅에서 처럼 엑셀로 생성해서 csv 파일로 밀어넣으려고 했는데 데이터를 생각보다 많이 만들어야 해서 그냥 프로그래밍으로 짜기로 했다.

아래 예시는 groovy로 짜본 예시이다. 자바도 동일하니 활용하면 된다.

 

<규칙>

randomID      : 알파벳(1자리) + 알파벳, 숫자 조합(4자리) + 숫자3자리

randomName : 한글성(1자리) + 한글(2자리)

 

def alpabets = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
def charaters = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9']
def sungchars = ["김", "이", "박", "최", "정", "강", "조", "윤", "장", "임", "한", "오", "서", "신", "권", "황", "안",
            "송", "류", "전", "홍", "고", "문", "양", "손", "배", "조", "백", "허", "유", "남", "심", "노", "정", "하", "곽", "성", "차", "주",
            "우", "구", "신", "임", "나", "전", "민", "유", "진", "지", "엄", "채", "원", "천", "방", "공", "강", "현", "함", "변", "염", "양",
            "변", "여", "추", "노", "도", "소", "신", "석", "선", "설", "마", "길", "주", "연", "방", "위", "표", "명", "기", "반", "왕", "금",
            "옥", "육", "인", "맹", "제", "모", "장", "남", "탁", "국", "여", "진", "어", "은", "편", "구", "용"]
def namechars = ["가", "강", "건", "경", "고", "관", "광", "구", "규", "근", "기", "길", "나", "남", "노", "누", "다",
        "단", "달", "담", "대", "덕", "도", "동", "두", "라", "래", "로", "루", "리", "마", "만", "명", "무", "문", "미", "민", "바", "박",
        "백", "범", "별", "병", "보", "빛", "사", "산", "상", "새", "서", "석", "선", "설", "섭", "성", "세", "소", "솔", "수", "숙", "순",
        "숭", "슬", "승", "시", "신", "아", "안", "애", "엄", "여", "연", "영", "예", "오", "옥", "완", "요", "용", "우", "원", "월", "위",
        "유", "윤", "율", "으", "은", "의", "이", "익", "인", "일", "잎", "자", "잔", "장", "재", "전", "정", "제", "조", "종", "주", "준",
        "중", "지", "진", "찬", "창", "채", "천", "철", "초", "춘", "충", "치", "탐", "태", "택", "판", "하", "한", "해", "혁", "현", "형",
        "혜", "호", "홍", "화", "환", "회", "효", "훈", "휘", "희", "운", "모", "배", "부", "림", "봉", "혼", "황", "량", "린", "을", "비",
        "솜", "공", "면", "탁", "온", "디", "항", "후", "려", "균", "묵", "송", "욱", "휴", "언", "령", "섬", "들", "견", "추", "걸", "삼",
        "열", "웅", "분", "변", "양", "출", "타", "흥", "겸", "곤", "번", "식", "란", "더", "손", "술", "훔", "반", "빈", "실", "직", "흠",
        "흔", "악", "람", "뜸", "권", "복", "심", "헌", "엽", "학", "개", "롱", "평", "늘", "늬", "랑", "얀", "향", "울", "련"]
def randomID = ""
def randomName = ""
def insertSql = ""

Random rn = new Random()
for (int i=0; i<10; i++) {
    randomID = alpabets[rn.nextInt(alpabets.size())] + charaters[rn.nextInt(charaters.size())] + charaters[rn.nextInt(charaters.size())] + charaters[rn.nextInt(charaters.size())] + charaters[rn.nextInt(charaters.size())] + rn.nextInt(1000)
    randomName = sungchars[rn.nextInt(sungchars.size())] + namechars[rn.nextInt(namechars.size())] + namechars[rn.nextInt(namechars.size())]
    log.warn "ID: ${randomID}, Name: ${randomName}"
}

<결과>

 ID: dk1hc486, Name: 채길탁
 ID: pjlzb658, Name: 송만윤
 ID: ejx6b582, Name: 변손권
 ID: m02a6484, Name: 천범병
 ID: ethfv925, Name: 석반잎
 ID: azmjt392, Name: 함흔초
 ID: voh6l137, Name: 노강탐
 ID: yw1d6138, Name: 진담상
 ID: k4sl7171, Name: 용헌누
 ID: qc4ar207, Name: 신빛추

랜덤하게 아이디를 대량으로 생성해서 DB에 insert할 일이 생겼다.

어떻게 할 것인가?

 

엑셀로 생성해보자!!

 

생각보다 매우 간단했다.

셀에 아래와 같이 써 주면 되는 것이다.

 

A ~ Z까지 랜덤하게 생성하고 싶으면 셀 안에 =CHAR(RANDBETWEEN(65,90)) 이케 쓰면 된다. 

이러면 1개의 알파벳이 랜덤하게 생성된다. 이 때 몇 개 더 붙여 쓰고 싶다면..

=CHAR(RANDBETWEEN(65,90)) & CHAR(RANDBETWEEN(65,90)) & CHAR(RANDBETWEEN(65,90)) 

이런 식으로 쭉쭉 나열해주면 된다. 엄청 쉽다. 그러고 나서 쭉~~ 드래그 해주면 무수히 많은 아이디가 생성된다.

만약 대문자 아니고 소문자를 원한다면.. 숫자를 97~122로 바꾸면 된다.

 

끝.

Groovy 현재시간 및 date format 

 

def date = new Date()    
def endDateTime = date.format("yyyy/MM/dd HH:mm:ss")

 

package com.javacodegeeks.groovy.date
 
import static java.util.Calendar.*
 
class GroovyDateFormatting {
 
    static main(args) {
        def date = new Date()
        def formattedDate = date.format("yyyy/MM/dd HH:mm:ss")
        println formattedDate 
    }
 
}

 

* 출처

https://examples.javacodegeeks.com/jvm-languages/groovy/groovy-date-example/

[JAVA] REST API 란 무엇인가..

새로 시작하는 프로젝트에서 REST API를 이용해서 크라우드와 Jira 테이블 연동 개발을 한다고 한다.
처음 들어보는 용어라서 이것 저것 찾아보았다.

<개념 정리 잘 되어있는 글>
https://creamilk88.tistory.com/184

 

[REST API] REST / REST API 개념과 적용 + 코드 예제 (SpringBoot 기반)

[ REST (REpresentational State Transfer) ] : "분산 시스템"을 위한 HTTP 기반 소프트웨어 아키텍쳐 * 즉, 웹 어플리케이션, 다양한 언어, 모바일 어플리케이션, 다른 서버 (*다 HTTP 기반) 등 끼리 서로 통신..

creamilk88.tistory.com

<예제>
https://dion-ko.tistory.com/115

 

[JAVA] 자바 GET, POST, PUT, DELETE REST API 호출 방법 & 예제

백엔드 개발을 진행할때 프론트 서버와 API 서버를 따로 분리 하거나 혹은 다른 회사의 REST API를 호출해야 합니다. 그럴경우 API 서버의 METHOD에 맞게 Http를 사용하여 호출하여야 합니다. 아래의 소

dion-ko.tistory.com

 

Rest Api는 다양한 언어, 모바일, 웹 어플리케이션 등등 서로 다른 서버 간 통신을 원활하게 할 수 있도록 Http를 기반으로 통역 역할을 해 주는 API라고 할 수 있다.

 

아래 내용이 핵심!!

[ REST API  ]

: REST 기반 서비스 API

어플리케이션 간의 데이터 통신을 위한 어플리케이션 프로그래밍 인터페이스

> RESTful : REST API 제공하는 웹서비스 시스템을 지칭 , "A 서비스 시스템은 'RESTful' 하다"

 

> RestTemplate : Spring에서 제공하는 REST API Server와의 HTTP 통신을 위한 객체

서버와 서버간의 연동을 위해 사용된다

> Http Method : get , post , put , delete 을 지원하는 메서드를 제공한다

- getForEntity()

- postForObject()

- put()

- delete()

원문 출처: https://rios.tistory.com/entry/JAVA-hashMap-key%EA%B0%92%EC%9C%BC%EB%A1%9C-value-%EC%B0%BE%EA%B8%B0-value%EB%A1%9C-key%EA%B0%92-%EC%B0%BE%EA%B8%B0

 

잊어버릴까.. 내 블로그에 넣어주자.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
 
package java_sort;
 
import java.util.HashMap;
import java.util.Map;
 
public class HashmapGetdata {
 
    public static void main(String[] args) {
        
        Map<String, Object> hashMap = new HashMap();
 
 
        //데이터 넣어줌
        hashMap.put("num"1);
        hashMap.put("name""rios");
        hashMap.put("email""rios0812@naver.com");
        hashMap.put("phone_num""010-1234-1234");
 
 
        // ** value를 통해 key 값얻기 **       
        
        System.out.println(getKey(hashMap,"rios"));
        //rios라는 value 값을 통해서 얻은 key 값 -> name
        System.out.println(getKey(hashMap,"rios0812@naver.com"));
        //rios0812@naver.com 라는 value 값을 통해서 얻은 key 값 -> email
 
 
        // ** key를 통해 value얻기 **
 
        String getName = (String) hashMap.get("name");
        System.out.println(getName);
        //name 이란 key값을 통해서 value 값은 -> rios 
 
        String getPhone = (String) hashMap.get("phone_num");
        System.out.println(getPhone);
        //phone_num 이란 key값을 통해서 value 값은 -> 010-1234-1234
    }
 
 
   // hashmap에 value 로 key 찾기
   public static <K, V> K getKey(Map<K, V> map, V value) {
 
        for (K key : map.keySet()) {
            if (value.equals(map.get(key))) {
                return key;
            }
        }
        return null;
    }
 
 

+ Recent posts