일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- filebeat
- 조인
- K-디지털트레이닝
- kibana 설치
- 우리fis아카데미
- 우분투
- elasticsearch 설치
- 상암
- jdbc 장점
- 우리 fis 아카데미
- 글로벌소프트웨어캠퍼스
- MobaXterm
- INNER JOIN
- JDBC
- Outer join
- NATURAL JOIN
- SQL
- VirtualBox
- 우리FISA
- JOIN
- logstash 설치
- DB 연결
- 리눅스
- elk
- 클라우드엔지니어링
- 우리에프아이에스
- Today
- Total
imsooo
[우리FIS 아카데미(우리FISA) 4기 클라우드 엔지니어링 과정] 3주차 회고 본문
안녕하세요🤗
이번 주엔 SQL을 주로 학습했고
마지막날에 ELK 공부를 시작했어용
🚝 3주차 회고 시작~
3주차 월요일☀️
자바 람다식과 StreamAPI, Optional 클래스에 대해 학습했당
람다식과 스트림 부분은 아직 어려워서
코딩연습할 때 조금씩 응용해보려고 하는 중
⏰ 배운 거 간단 정리 Time!
● Lambda
Lambda란?
- 메소드를 하나의 식으로 표현한 것으로 람다식을 사용하면 코드를 더 간결하게 작성 할 수 있다. 인터페이스를 구현할 때 사용되며, 람다식을 사용하면 익명 클래스 구현을 기존보다 간결하게 구현할 수 있다. 람다는 주로 이름 없는 함수, 익명함수라고 불린다.
○ 예제 1
public interface Math {
public abstract int operation(int v1, int v2);
}
Math add = (int v1, int v2) -> v1 + v2;
System.out.println(add.operation(2, 3)); // 출력 5
○ 예제 2 - inner class
Math sub = (int v1, int v2) -> {
System.out.println("연산");
return v1 - v2;
};
System.out.println(sub.operation(10, 5));
● Stream API
복잡한 로직을 간결하게 표현할 수 있는 API로 람다식과 함께 사용할 수 있으며 반복적인 작업을 간결하게 작성할 수 있고 병렬 처리가 가능하다
○ 예제 1
// 짝수만 출력
List<Integer> num = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
List<Integer> even = num.stream().filter(n -> n % 2 == 0)
.collect(Collectors.toList());
System.out.println(even);
○ 예제 2
// 이름 글자 수 출력
List<String> names = Arrays.asList("John", "Olivia", "Riley");
names.stream().map(String::length).forEach(System.out::println);
● Optional
null 값으로 발생할 수 있는 예외를 방지하고 더 안전하게 코드를 작성할 수 있도록 도와주는 클래스이다. Optional 객체를 생성하는 방법은 Optional.empty(), Optional.of(value), Optional.ofNullable(value)가 있다.
1. Optional.empty()
- 빈 객체 생성
Optional<String> opt = Optional.empty();
2. Optional.of(value)
- value 값으로 객체 생성
- value에 null 값을 넣으면 NullPointerException이 발생
Optional<String> opt = Optional.of("Hello");
3. Optional.ofNullable(value)
- value 값으로 객체 생성
- 값이 null일 경우 비어있는 Optional 반환
Optional<String> opt = Optional.ofNullable("null 가능");
Optional 메소드
1. isPresent()
- Optional 객체에 값이 존재하면 true, 아니면 false 반환
2. isEmpty()
- Optional 객체가 비어있으면 true, 아니면 false 반환
3. get()
- Optional 객체에 저장된 값을 반환하며 값이 없으면 NoSuchElementException 발생
4. orElse(default)
- Optional 객체에 값이 있으면 값을 반환하고, 없으면 default을 반환
💣 트러블 슈팅
1. stream API 연습 중 발생한 오류
오류 내용: Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The type Integer does not define parseInt(Integer) that is applicable here
원인: Integer::parseInt는 String을 int로 변환하는 메소드인데 이미 'datas'에는 Integer 객체가 들어있다.
🔨 해결법:
해결법 1. 정수 값을 그대로 출력하고 싶다면
List<Integer> datas = Arrays.asList(3, 4, 5, 6, 7);
datas.forEach(System.out::println);
해결법 2. (Integer::parseInt)를 사용해보고 싶다면 datas 내용을 String 값으로 저장한 후 변환 작업
List<String> datas = Arrays.asList("3", "4", "5", "6", "7");
datas.stream().map(Integer::parseInt)
.forEach(System.out::println);
이 날은 코드를 간결하게 만들 수 있는 방법들에 대해 배우고
지난 금요일에 했던 팀프로젝트 코드를 리팩토링하는 시간을 가졌는데
불필요한 코드들을 삭제하고 간단하게 바꾸니
가독성이 훨씬 좋아진 것이 눈에 보였다ㆅ
3주 차 화요일 ~
이날 오전에 지난주 금요일부터 어제까지 진행한
팀프로젝트를 발표하는 시간을 가졌는데
다른 팀분들이 어떤 이유로 이런 코드를 넣었으며
어떤 기능들을 구현했는지 듣는 게 흥미로웠고
모르던 자바 기술(?)들도 배울 수 있었다
다른 팀의 발표를 들으면서
내 구현에서 부족했던 점이 머릿속에 떠올라 약간의 아쉬움😥도 있었지만
이번 팀 프로젝트에서 배운 것도 많고 얻은 것도 많으니까..😊
보완해 나가며 성장해야겠다!!!
오후에는 SQL select문을 집중 공부했습니당
MySQL과 Oracle은 비슷하지만 다른 함수들이 많아서
헷갈리는 게 많았는데
예를 들면
MySQL | Oracle | |
FROM절 | from절이 없어도 select문 실행 | from절 필수 |
대소문자 | 기본값 대소문자 구분 없음 | 대소문자 구분 명확 |
소수점 자리수 버림 | truncate() | trunc() |
문자 길이 | char_length() | length() |
문자열 자르기 | substring(), substr() | substr() |
... | ... | ... |
등등 차이가 있어서
두 개 모두 연습해 보면서
오류가 뜨면 찾아보며 공부해야 할 것 같음
이 외에도 문자와 관련된 함수, 날짜 함수, 형변환 함수, 그룹 함수 등을 배웠당
확실히 SQL은 직접 여러 번 실행할수록 감이 느는 듯!!
💣 트러블 슈팅
1. docker에 있는 Oracle db를 켜야 하는데 방법을 까먹어서
제시간에 oracle 실습을 하지 못하는 사태 발생😵
해결법: 까먹지 않도록 블로그에 기록!
1. d ocker ps 명령어를 실행하여 도커가 실행 중인지 확인한다.

- 아무것도 실행 중이지 않음
2. docker ps -a로 내 container ID 확인한다.

3. docker start [container ID]로 docker 실행한다.

4. docker ps로 실행된 docker 확인할 수 있다

여기까지만 해도 DBeaver에서 연결 가능하다!
ubuntu에서 실행도 시켜본다면
5. docker exec -it [container ID] bash를 입력하여 해당 컨테이너 내부로 들어가서 명령어를 입력할 수 있는 상태로 변경

- 앞부분이 root@~로 바뀜
6. sqlplus [username]/[password] 입력하여 oracle 로그인

7. 계정 접속 성공!!

3주 차 수요일🐟
굿모닝
전 노트북 처음 켰을 때 배경이 예쁘면
기분이 좋거든용
경치 좋다~🏞️
점심으로 달인대보칼국수에서 장칼국수 먹었당
간단하게 국수 먹고 싶은 날에 추천!!
맛있게 먹었습니당
이 날도 계속해서 SQL을 실습했음
배운 것들을 간단히 정리하자면
● JOIN
데이터베이스에서 두 개 이상의 테이블을 필요에 따라 연결하여 데이터를 조회하는 기능을 한다.
JOIN의 유형
- INNER JOIN
- NATURAL JOIN
- LEFT OUTER JOIN
- RIGHT OUTER JOIN
- FULL OUTER JOIN
조인에 대해서는 아래에 더 자세히 적어놨으니 참고!
[우리FIS 아카데미(우리FISA) 4기 클라우드 엔지니어링 과정] 3주차 - [SQL] JOIN(조인) 연산
JOIN(조인) 연산은 관계형 데이터베이스에서 두 개 이상의 테이블을 결합할 때 사용하는 연산이다.데이터를 여러 테이블에 나누어 저장해 놓는 경우가 많기 때문에 관련된 데이터를 하나로 합치
imsooo.tistory.com
● Subquery
SQL문에 포함된 또 다른 SQL문을 의미한다. SELECT 뿐만 아니라 CREATE, INSERT, UPDATE 등에도 사용 가능하다. 서브쿼리는 반드시 괄호() 안에 작성되어야 한다.
서브쿼리는 사용 위치에 따라 명칭이 달라진다.
- 스칼라 서브쿼리: SELECT 절
- 인라인 뷰: FROM절
- 중첩 서브쿼리: WHERE절
○ 예제 - WHERE절에 사용된 중첩 서브쿼리
-- NEW YORK에서 근무하는 사원의 이름과 부서 번호 검색
select ename, deptno
from emp
where deptno = (select deptno
from dept
where loc = 'NEW YORK');
● delete와 truncate
delete와 truncate은 SQL에서 데이터를 삭제할 때 이용하는 공통점이 있지만 많은 차이가 있다. 그러므로 둘의 차이를 알고 적절히 사용해야 한다.
- DELETE는 rollback이 가능하지만, TRUNCATE는 일반적으로 rollback을 할 수 없다.
- DELETE는 행을 하나씩 삭제하지만, TRUNCATE는 모든 데이터를 한 번에 제거한다.
- DELETE는 WHERE 절을 사용하여 특정 조건에 맞는 데이터만 삭제할 수 있지만, TRUNCATE는 항상 테이블의 모든 데이터를 제거한다.
SQL문을 잘하려면
계속 실습을 해보는 게 제일 중요한 것 같다고 생각이 들어서
남아서 배운 내용을 정리하고
실습하다가
약간 늦은 귀가🐝
3주 차 중 넷째 날4️⃣
오늘의 점심은
지하에 있는 일식집에서 부타동을 먹었습니당
고기 양 많고 맛도 굿👍
이 날에는 제약조건과 뷰에 대한 학습을 하고
미니 팀프로젝트를 진행!
select 정규 표현식을 활용하기 위해
데이터베이스 table을 만들고
정규 표현식 실습 예제 만드는 프로젝트였다
주제를 빠르게 정하고 table에 대한 구상도 빠르게 끝나서
오늘은 칼퇴하나 생각했지만..
공통 db를 사용하기 위해
하나의 컴퓨터에 데이터베이스를 생성하고
원격으로 접근하려고 하는 부분에서
오랜 시간이 걸렸다
연결되기 전까진 너무 헷갈리고 왜 안되는지 고민이 많았는데
제대로 연결 성공하고 나니
그 문제가 되게 간단해 보였음
간단한 문제였지만 방향을 못 잡고 삽질을 많이 하게 되었는데
이런 삽질로 성장하는 거 아니겠습니까 🦾!
그래도 네트워크에 대해 더 공부를 해야겠네여
그러고 나서 팀원들과 table을 생성하고 정규 표현식 관련 문제를
열심히 만들어서 프로젝트를 무사히 끝냈습니다😊
퇴근 전에 우리금융그룹 모델 아이유언니💟보면서
힐링하고 갑니다
드디어 금요일!!
오전에 팀프로젝트를 발표했고용
함께 프로젝트한 팀원들과 점심을 먹음
오늘의 점심은 버거리 ㅎㅎ
잘 먹구 돌아와서
오후엔 ElasticSearch와 Kibana를 설치하고
간단한 실습을 했어여
ElasticSearch는 JSON 문서 형식으로 데이터를 저장하는 오픈소스 검색 및 분석 엔진이고,
Kibana는 ElasticSearch와 함께 사용하는 데이터 시각화 도구입니당
짠
Kibana로 csv 파일을 그래프로 시각화해 봄
이런 식으로 원하는 데이터 결과를 뽑아낼 수 있음!!

이번 주도 이렇게 빠르게 지나갔네요
streamAPI이나 ELK이나
새로운 거 많이 배워서 복습이 중요한 한 주가 될 것 같음
이번 주도 읽어주셔서 감사합니당
다음 주에 🖐️🖐️
'IT > 우리 FISA' 카테고리의 다른 글
[우리FIS 아카데미(우리FISA) 4기 클라우드 엔지니어링 과정] 5주차 회고 (5) | 2025.02.08 |
---|---|
[우리FIS 아카데미(우리FISA) 4기 클라우드 엔지니어링 과정] 4주차 회고 (1) | 2025.02.01 |
[우리FIS 아카데미(우리FISA) 4기 클라우드 엔지니어링 과정] 3주차 - [SQL] JOIN(조인) 연산 (1) | 2025.01.19 |
[우리FIS 아카데미(우리FISA) 4기 클라우드 엔지니어링 과정] 2주차 회고 (2) | 2025.01.11 |
[우리FIS 아카데미(우리FISA) 4기 클라우드 엔지니어링 과정] 2주차 - JDBC DB 연동 개발 (4) | 2025.01.09 |