본문 바로가기

컴퓨터공부/JSP

스프링 입문을 위한 자바 객체 지향의 원리와 이해 (1)[책리뷰 & Book review]

by Life & study 2024. 1. 26.
반응형

 

스프링 입문을 위한 자바 객체 지향의 원리와 이해 (1)

[책리뷰 & Book review]

 

왜 코드에서
/ 을 나누기로 사용하고
<=와 >= 을 이상 이하로 사용하고
*는 곱하기 표시로 사용할까?

 

프로그래밍 언어에서 사용하는 연산자들은 대부분 ASCII 코드에 기반을 두고 있습니다. ASCII 코드는 컴퓨터가 텍스트를 인식하고 표현하는 방식 중 하나로, 각 문자에 대응하는 숫자 값을 정의하고 있습니다.

/ (나누기) : ASCII 코드에서 슬래시는 47에 해당하며, 대부분의 프로그래밍 언어에서 나누기 연산자로 사용됩니다.
javascript
var result = 10 / 2; // result는 5
<= (이하), >= (이상) : ASCII 코드에서는 <는 60, >는 62, =는 61에 해당합니다. 이들을 조합하여 '이하'와 '이상'을 표현합니다.
javascript
var isLessOrEqual = 5 <= 10; // isLessOrEqual은 true
var isGreaterOrEqual = 10 >= 5; // isGreaterOrEqual은 true
* (곱하기) : ASCII 코드에서 별표는 42에 해당하며, 대부분의 프로그래밍 언어에서 곱하기 연산자로 사용됩니다.
javascript
var result = 5 * 2; // result는 10
이렇게 ASCII 코드는 컴퓨터가 문자를 인식하고 처리하는 데 사용되는 표준입니다. 프로그래밍 언어에서 사용되는 연산자들은 이 ASCII 코드를 기반으로 하며, 이를 통해 코드를 작성하고 읽는 것이 가능해집니다. 또한, 이러한 연산자들은 대부분의 프로그래밍 언어에서 일관되게 사용되므로, 언어 간에 이동하면서 코딩하는 개발자들에게도 큰 이점을 제공합니다.

 


 

ASCII (American Standard Code for Information Interchange)와 Unicode는

 

 모두 컴퓨터에서 문자를 표현하는 방식입니다.

ASCII :
ASCII는 7비트 코드로, 총 128개의 문자를 표현할 수 있습니다. 이 중 33개는 제어 문자(개행, 탭 등)이고, 95개는 출력 가능한 문자(영문 대소문자, 숫자, 특수문자 등)입니다.


ASCII는 원래 영어 알파벳을 표현하기 위해 만들어졌기 때문에 다른 언어의 문자를 표현할 수 없는 한계가 있습니다.
python
# Python에서 ASCII 문자 출력
print(chr(65))  # 'A' 출력


Unicode :
Unicode는 전 세계의 모든 문자를 일관되게 표현하기 위한 표준입니다. 

여러 언어의 문자, 특수 문자, 이모티콘 등 수많은 문자를 표현할 수 있습니다.


Unicode는 문자마다 고유의 코드 포인트를 부여하며,

 이 코드 포인트를 바이트 시퀀스로 변환하는 방법(인코딩)에는 UTF-8, UTF-16, UTF-32 등이 있습니다.


Unicode의 장점은 전 세계의 거의 모든 문자를 표현할 수 있다는 점입니다.

 단점은 ASCII에 비해 복잡하고, 표현하려는 문자에 따라 필요한 메모리 공간이 더 많을 수 있다는 점입니다.
python
# Python에서 Unicode 문자 출력
print('\uAC00')  # '가' 출력
따라서, ASCII는 영어 알파벳과 일부 특수 문자를 표현하는 데에 적합하며, 메모리를 적게 사용합니다. 반면, Unicode는 다양한 언어와 특수 문자를 표현하는 데에 적합하지만, 표현하려는 문자에 따라 메모리를 더 많이 사용할 수 있습니다.

 

 

7비트의 시작에서 오늘날 8비트의까지의 역사와 1비트 차이가 어떻게 생겨 낫는가?

 

초기의 컴퓨터 시스템에서는 메모리와 저장 공간이 매우 제한적이었습니다. 

이런 환경에서 ASCII 코드는 7비트 만을 사용하여 문자를 표현하였고, 이는 총 128개의 다른 문자를 나타낼 수 있음을 의미합니다.

그러나 시간이 지나면서 컴퓨터의 메모리와 저장 공간은 점차 증가하였고, 

이에 따라 데이터를 표현하는 방법도 변화하게 되었습니다. 

7비트에서 8비트로의 변화는 이러한 컴퓨팅 환경의 변화를 반영한 것입니다.

8비트를 사용하게 되면 표현할 수 있는 문자의 수가 두 배로 늘어나게 됩니다. 즉, 256개의 다른 문자를 나타낼 수 있게 됩니다. 이 변화는 여러 다른 언어의 문자를 포함하거나, 특수 문자와 제어 문자를 더 많이 표현할 수 있게 하였습니다.

java

// Java에서 ASCII 문자 출력
char ch = (char) 200;
System.out.println(ch);  // 'È' 출력


그래서 현재는 대부분의 컴퓨터 시스템에서는 8비트를 기반으로 문자를 표현하고 있습니다. 

이는 ASCII 코드의 확장인 Extended ASCII나 Unicode 등에서 볼 수 있습니다. 이런 변화는 전 세계의 다양한 언어와 특수 문자를 더 잘 표현할 수 있게 해 주었습니다.

java

// Java에서 Unicode 문자 출력
char ch = '\u00C8';
System.out.println(ch);  // 'È' 출력


이처럼 1비트의 차이는 표현할 수 있는 문자의 수가 두 배로 늘어나는 큰 변화를 가져왔습니다. 이는 컴퓨팅 환경의 발전과 함께 글로벌 커뮤니케이션의 필요성을 반영한 결과입니다.




 

CRM과 오라클은 무엇인가?

 

 

기술스택

JavaScript
ibatis
Java
Spring
MSSQL
Oracle
JSP

 


 

 

 

CRM과 오라클에 대한 설명과 사용법



CRM (Customer Relationship Management): CRM은 기업이 고객과의 관계를 관리하는 전략이나 기술을 의미합니다. CRM 시스템은 고객 데이터를 수집, 분석하고 이를 바탕으로 고객 서비스를 개선하고, 맞춤형 마케팅 전략을 수립하는 데 사용됩니다.


라클 (Oracle): 오라클은 대형 엔터프라이즈 설루션을 제공하는 세계적인 IT 회사입니다. 오라클의 주요 제품 중 하나인 Siebel CRM은 On-Premise 방식으로 고객 정보를 관리하고, 고객 서비스를 개선하는 데 사용되었습니다.


세일즈포스 (Salesforce): 세일즈포스는 클라우드 기반의 CRM 솔루션을 제공하는 회사로, 오라클과 CRM 시장에서 경쟁했습니다. 

 

클라우드 방식은 On-Premise 방식보다 더 효율적이고 유연하며, 이러한 이점을 활용하여 세일즈포스는 CRM 시장에서 선두로 나섰습니다.


사용법: CRM 시스템을 사용하는 방법은 시스템마다 다르지만 기본적으로 고객 정보를 입력하고, 이를 분석하여 고객 서비스를 개선하는 프로세스를 거칩니다. 오라클의 CRM은 기업 내부 서버에 설치하여 사용하며, 세일즈포스의 CRM은 인터넷을 통해 언제 어디서든 접근하여 사용할 수 있습니다.

 

 

 

 

 

 

 

 

 

Oracle과 Crm의 관계는?

 

 

Oracle CRM과 Spring을 연동하려면, 일반적으로는 

Oracle CRM에서 제공하는 API를 활용하여 Spring 애플리케이션에서 데이터를 주고받게 됩니다. 

 

이를 통해 Oracle CRM의 데이터를 Spring 애플리케이션이 활용하거나, 반대로 Spring 애플리케이션에서 생성된 데이터를 Oracle CRM에 전달할 수 있습니다.

작동 원리는 아래와 같습니다:

API 연동: Oracle CRM은 RESTful API를 제공합니다. 이 API를 활용하면 Spring 애플리케이션에서 Oracle CRM으로 HTTP 요청을 보내 데이터를 주고받을 수 있습니다.

 

데이터 요청: Spring 애플리케이션은 Oracle CRM의 API를 호출하여 필요한 데이터를 요청합니다. 이때, API 요청의 형태는 Oracle CRM에서 제공하는 API 문서에 따라 결정됩니다.

 

데이터 응답: Oracle CRM은 API 요청을 받아 처리 후 결과 데이터를 응답합니다. 이 데이터는 보통 JSON 형식으로 반환되며, 이를 Spring 애플리케이션에서 파싱 하여 사용합니다.

 

데이터 활용: Spring 애플리케이션은 Oracle CRM에서 받은 데이터를 활용하여 필요한 작업을 수행합니다. 예를 들어, 고객 정보를 조회하거나, 새로운 고객 정보를 등록하거나, 기존 고객 정보를 업데이트하는 등의 작업을 수행할 수 있습니다.

 


Java에서 RESTful API를 호출하기 위해 HttpURLConnection 또는 RestTemplate와 같은 라이브러리를 사용할 수 있습니다. 아래는 RestTemplate을 활용한 간단한 예시입니다.

java

import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;

public class OracleCrmApiService {
    private static final String CRM_BASE_URL = "http://your_oracle_crm_base_url";
    private RestTemplate restTemplate;

    public OracleCrmApiService() {
        restTemplate = new RestTemplate();
    }

    public String getCustomerData(String customerId) {
        String url = CRM_BASE_URL + "/customers/" + customerId;
        ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);
        return response.getBody();
    }
}


위 코드는 Oracle CRM의 고객 정보를 조회하는 API를 호출하는 예시입니다. 실제로 사용하기 위해서는 "http://your_oracle_crm_base_url" 부분을 실제 Oracle CRM의 base URL로 교체해야 하며, API 인증 토큰 등의 인증 정보가 필요할 수 있습니다.

또한, Oracle CRM에서 제공하는 API의 스펙에 따라 URL, HTTP 메서드, 요청 본문 등을 알맞게 설정해야 합니다. 이는 Oracle CRM의 API 문서를 참조하시면 됩니다.

마지막으로, 위의 코드는 간단한 예시이며 실제 프로덕션 환경에서는 예외 처리, 로깅, API 호출에 대한 타임아웃 설정 등이 추가로 필요할 수 있습니다.

 

 

 

 

 

 

 

 Web client 에 대한 이해

 

org.springframework.web.client.RestTemplate은 Spring에서 제공하는 강력한 웹 클라이언트 도구입니다. HTTP 프로토콜을 사용하여 웹 서비스와 통신하는 데 사용됩니다.

다음은 RestTemplate을 사용하여 HTTP GET 요청을 보내는 기본적인 코드 예시와 설명입니다.

java

import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;

public class RestClient {

    public static void main(String[] args) {
        RestTemplate restTemplate = new RestTemplate();

        String url = "http://example.com/api/resource";

        ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);

        System.out.println(response.getBody());
    }
}


RestTemplate restTemplate = new RestTemplate(); : RestTemplate 객체를 생성합니다. 이 객체를 통해 웹 서비스와 통신할 수 있습니다.


String url = "http://example.com/api/resource"; : 웹 서비스에 요청을 보낼 URL을 정의합니다.


ResponseEntity <String> response = restTemplate.getForEntity(url, String.class); : 웹 서비스에 HTTP GET 요청을 보냅니다. getForEntity 메서드는 요청 URL과 응답 본문을 매핑할 클래스 타입을 인자로 받습니다. 이 메소드는 ResponseEntity 객체를 반환하며, 이 객체를 통해 응답 상태 코드, 헤더, 본문 등을 접근할 수 있습니다.


System.out.println(response.getBody()); : 응답 본문을 콘솔에 출력합니다. ResponseEntity의 getBody 메서드를 통해 응답 본문에 접근할 수 있습니다.
이 외에도 RestTemplate은 postForEntity(POST 요청), put(PUT 요청), delete(DELETE 요청) 등의 메소드를 제공하여 다양한 HTTP 요청을 보낼 수 있습니다. 또한, exchange 메소드를 통해 더욱 다양한 요청을 보낼 수 있습니다. 이러한 메서드들의 사용법은 Spring의 공식 문서나 RestTemplate의 Javadoc을 참조하시면 됩니다.

 

[Spring Application]                  [Web Server]
       |                                   |
       | 1. Create RestTemplate            |
       |                                   |
       | 2. Define URL                     |
       |                                   |
       | 3. Send HTTP GET request -------->|
       |                                   | 4. Process request
       |                                   | 5. Send back the response
       |<-------- 6. Receive response      |
       |                                   |
       | 7. Print response body            |
       |                                   |


RestTemplate 객체를 생성합니다. 이 객체를 통해 웹 서비스와 통신할 수 있습니다.
웹 서비스에 요청을 보낼 URL을 정의합니다.
웹 서비스에 HTTP GET 요청을 보냅니다.
웹 서버는 요청을 처리합니다.
처리된 결과를 HTTP 응답으로 보냅니다.
RestTemplate은 응답을 받아 ResponseEntity 객체를 생성합니다.
ResponseEntity 객체에서 응답 본문을 가져와 콘솔에 출력합니다.
이렇게 RestTemplate을 사용하면 Java 애플리케이션에서 HTTP 프로토콜을 통해 웹 서비스와 통신할 수 있습니다.




 

 

 

 

 

 

 

클라우드 와 온프레미스설루션 차이점

 

 

 

 

 

#개발자취업 #개발자기초 #개발자 #개발자분야 #개발자분류 #개발자종류 #it개발자 #서버개발자 #개발자성장 #신입개발자 #ios개발자 #개발자노트북 #개발자 되는 법 #개발 #앱개발 #웹개발 #개발분야 #it개발 #개발공부 #코딩상식 #개발공부 #개발초보

 

#개발자취업 #개발자면접 #개발자채용 #백엔드개발자 #백엔드개발자 #백엔드개발자취업 #백엔드개발 #프런트엔드개발자 #개발자상담 #백엔드 #개발자 #앱개발자 #웹개발자 #개발자팁 #앱개발자 #백엔드취업 #백엔드공부 #백엔드강의 #백엔드독학

 

#전산직면접 #면접 #면접팁 #면접관 #공공기관전산직면접 #공사면접 #면접질문 #면접할 말 #면접준비 #면접준비 #면접답변 #면접질문 #면접기출 #전화면접 #면접복장 #면접답변 #면접꿀팁 #모의면접 #면접후기 #롯데면접 #면접후기 #임원면접 #최종면접 #면접꿀팁

 

 

 

 

 

반응형

댓글