๐ ์ข์๋ ์
DB ํํ ๋
์ด๋ฒ ์ฃผ ์์์ผ์ DB ํํ ๊ฒฐ๊ณผ๋ฌผ์ ๋ฐํํ๋ ์๊ฐ์ด์์ต๋๋ค.
๋ค๋ฅธ ํ์ DB ์ค๊ณ๋ฅผ ์ดํด๋ณด๋ฉด์ "์ด๋ฐ ์ค๊ณ๊ฐ ๋ ์ข๋ค? ์์ผ๋ก๋ ์ด๋ ๊ฒ ํด์ผ์ง"๋ผ๋ ์๊ฐ๋ ๋ค์๊ณ , ๋ฐํ๋ฅผ ๋ค์ผ๋ฉด์ ์ง์ง ๋ฐํ๋ฅผ ์ํ์๋ ๋ถ๋ค์ด ๋ง๋ค๊ณ ๋๊ผ์ต๋๋ค.
๊ฐ์ธ์ ์ผ๋ก ๋๋ ๊ฒ์ ๋ชจ๋ ๊ธฐ๋ฅ์ ๋ค ๋์ดํด์ ๋ณด์ฌ์ฃผ๋ ๊ฒ๋ณด๋ค, ํ์คํ๊ฒ ๋ณด์ฌ์ฃผ๊ณ ์ถ์ ํฌ์ธํธ๋ฅผ ์ ํด์ ๊ทธ ๊ธฐ๋ฅ์ ์ค์ ์ ์ผ๋ก ๋ณด์ฌ์ฃผ๋ ๊ฒ ๋ฐํ๋ฅผ ๋ฃ๋ ์ฌ๋ ์ ์ฅ์์ ๋ ์ดํดํ๊ธฐ ์ฝ๊ณ ํฅ๋ฏธ๊ฐ ์๊ฒผ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ค์์ ํน์ ๋ฐํ๋ฅผ ํ๊ฒ ๋๊ฑฐ๋ ๊ฐ์ ํ์๋ถ์ ๋ฐํ๋ฅผ ํผ๋๋ฐฑ ํด์ค ์ ์๋ ๊ธฐํ๊ฐ ์๋ค๋ฉด, ์ด ํ๋ก์ ํธ๋ฅผ ์ ํ ๋ชจ๋ฅด๋ ์ฌ๋์๊ฒ ์ค๋ช ํ๋ค๋ ๊ฒ์ ๊ผญ ๊ธฐ์ตํ๋ฉด์ ๋ฐํ๋ฅผ ์ค๋นํ๊ฑฐ๋ ํผ๋๋ฐฑ ํด์ค์ผ๊ฒ ๋ค๋ ์๊ฐ์ ํ์ต๋๋ค.
์ํ์ ์ ๋ด
์ด์ฉ๋ค ์ํ์ ์๋ด์ ์ํ์ผ๋ก ์ปคํผ ์ฟ ํฐ์ ๋ฐ์์ต๋๋ค,,, ๐๐ปโโ๏ธ
๊ฐ์ฌ๋๊ป์๋ ์ค๋ฒ ์ฟ ํฐ์ ์งง์ ์นด๋๊น์ง ์จ์ฃผ์ ์ ๋๋ฌด ๊ฐ์ฌํ์ต๋๋ค.. ๐ฅน
์ง๊ธ๊น์ง๋ ํ๋ฒ ๊ณต๋ถํ๋ ๋ด์ฉ๋ค์ด ๋๋ถ๋ถ์ด์ ๋ณต์ตํ๋ ์๊ฐ์ด ๋ง์ด ํ์ํ์ง ์์๋๋ฐ, ๋ค๋ก ๊ฐ์๋ก ์ฒ์ ๊ณต๋ถํ๋ ๋ด์ฉ๋ค์ด ๋์ค๋๊น ์ด์ฌ ์์ง๋ง๊ณ ์ด์ฌํ ๋ณต์ตํด์ผ๊ฒ ๋ค๊ณ ์๊ฐํ์ต๋๋ค.
๐ข ๋ถ์กฑํ ์
๋ํ๋ฏผ ์ค๋ ๐ตโ๐ซ
์ด๋ฒ ์ฃผ์ ํฐ์ ์์ผ ๋ง์ด ๋ดค๋์ง,,,
๋ํ๋ง ํ๋์ด ๋ณธ๊ฒฉ์ ์ผ๋ก ์์๋ผ์ ํ์ผ ์ ๋ ์ ๊ฝค ๊ธด ์๊ฐ ํ์๋ฅผ ํ๋ค๋ณด๋ ๋ชธ์ด ์ ์ํ๊ธฐ๊ฐ ํ๋ค์๋์ง, ์ด๋ฒ ์ฃผ์ ํ ํผ๊ณคํ๋ค๊ณ ๋๋ ๋๊ฐ ์์์ต๋๋ค.
์์ธ์ง ํผ๊ณคํ๋ฉด ์๊พธ ์ ํฌ๋ธ, ์ธ์คํ ๊ฐ์ ๋ํ๋ฏผ์ ์ฃผ์ฒดํ ์ ์์ด ์๊พธ ์ฐพ๊ฒ ๋๋ค๊ณ ๋๋๋๋ค.
(๋ํ๋ฏผ๋ค์ด์ ์์ ๊ณ ํต์ด ํฌ๋ฉด ๊ณ ํต-์พ๋ฝ์ ์ ์ธ์ ๋ง์ถ๊ธฐ ์ํด ๋ํ๋ฏผ์ ์ฐพ๊ฒ ๋๋ค๊ณ ํ๋๋ฐ, ํผ๊ณคํด์ ๊ณ ํต์ค๋ฌ์์ ๊ทธ๋ฐ ๊ฑธ๊น์)
๋ฐ๋น ์ง -> ์๊ฐ์ ์๊ปด ์จ์ผ ํ๋ค๋ ์ฌ๋ฆฌ์ ๋ถ๋ด๊ฐ -> ์ฌ๋ฉด ์ฃ์ฑ ๊ฐ(?) ๋ค์ด์ ๋ชป ์ผ -> ํผ๊ณคํด์ง -> ํผ๊ณคํด์ ํจ์จ๋ ๋จ์ด์ง๊ณ ์๊พธ ์ ํฌ๋ธ ๋ณด๊ฒ ๋จ -> ๊ฒฐ๊ณผ์ ์ผ๋ก ์๊ฐ ๋ญ๋น
์ด๋ฒ ์ฃผ๋ ์ด๋ฐ ์ ์ํ์ ๋ฐ๊ฒ๋ ๊ฒ ๊ฐ์ ์ข ์์ฝ์ต๋๋ค.
๐ ๋ฐฐ์ด ์
์ด๋ฒ์ฃผ๋ ์๋ฐ์ ๊ธฐ์ด์ ์ธ ๋ฌธ๋ฒ์ ๋ํด ๋ฐฐ์ ๋๋ฐ, String๊ณผ ๊ด๋ จํ ๋ค์ํ ๋ฉ์๋์ ๋ํด์ ๋ฐฐ์ฐ๋ ์๊ฐ์ด ์ ์ตํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
StringBuffer์ StringBuilder
๋ ์ค ๋๊ฐ thread-safe์ด๊ณ , ๋๊ฐ thread-unsafe์ด์์ง ํท๊ฐ๋ ธ๋๋ฐ, ์์ ์ ๋ค์ผ๋ฉด์ StringBuffer๊ฐ thread-safe, StringBuilder๊ฐ thread-unsafe์ด๋ผ๋ ๊ฒ์ ์๊ฒ ๋์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ๋ StringBuilder๋ฅผ ์ฐ๋ฉด append() ๋ฉ์๋ ์ ๋๋ง ํ์ฉํ์๋๋ฐ, insert(), delete() ๋ฉ์๋์ ์กด์ฌ๋ ์๊ฒ ๋์์ต๋๋ค.
- insert ๋ฉ์๋: StringBuilder์ ์ธ๋ฑ์ค(์ฒซ๋ฒ์งธ ์ธ์)๋ฒ์งธ์ ๋ฌธ์์ด(๋๋ฒ์งธ ์ธ์) ๋ผ์๋ฃ๊ธฐ
sb.insert(์ธ๋ฑ์ค, ๋ฌธ์์ด); sb.insert(5, "python");
- delete ๋ฉ์๋: ์ฒซ๋ฒ์งธ ์ธ์ ~ (๋๋ฒ์งธ ์ธ์ - 1) ๋งํผ ๋ฌธ์์ด ์ญ์
sb.delete(์ธ๋ฑ์ค1, ์ธ๋ฑ์ค2); sb.delete(17, sb1.length());
strip() ๋ฉ์๋
trim() ๋ฉ์๋๋ ์๋ค๋ ๊ฒ์ ์๊ณ ์์๋๋ฐ, ๋ฌธ์์ด ์์์ ๊ณต๋ฐฑ์ ์ ๊ฑฐํ๋ ๋ฉ์๋ ์ค strip() ๋ฉ์๋๊ฐ ์๋ค๋ ๊ฒ๋ ์๊ฒ ๋์์ต๋๋ค.
join() ๋ฉ์๋
String ๋ฐฐ์ด์ ํ๋ฒ์ concatํด์ ํ๋์ String์ผ๋ก ๋ง๋๋ ๋ฉ์๋๊ฐ ์๋ค๋ ๊ฒ์ ์๊ฒ ๋์์ต๋๋ค.
String[] sArr = {"java", "python", "C++", "javascript"};
st = String.join(" ", sArr); // ๊ฒฐ๊ณผ: "java python C++ javascript"
๋ฌธ์์ด์ ๋์๋ฌธ์ (๋ฌธ์์ด1.equalsIgnoreCase(๋ฌธ์์ด2), ๋ฌธ์์ด.toUpperCase(), ๋ฌธ์์ด.toLowerCase())
์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ ๋ ๊ฐ๋ "๋์๋ฌธ์๋ฅผ ๋ฌด์ํ๊ณ ๋น๊ตํ๋ผ"๋ ์กฐ๊ฑด์ด ๋์ฌ ๋๊ฐ ์๋๋ฐ, ๊ทธ ๋๋ง๋ค ๋ฉ์๋ ์ด๋ฆ์ด ๊ธฐ์ต์ด ์๋์ ์ฐพ์๋ดค์ต๋๋ค.
๊ทธ๋ฐ๋ฐ ์ด์ ์์
๋ค์ผ๋ฉด์ equalsIgnoreCase(), toUpperCase(), toLowerCase()์ ๋ํด ๋ฐฐ์ ์ผ๋๊น, ๊ผญ ๊ธฐ์ตํด์ ๋ ํผ๋ฐ์ค ๋ณด์ง ์๊ณ ๋ฌธ์ ๋ฅผ ํ์ด์ผ๊ฒ ๋ค๊ณ ์๊ฐํ์ต๋๋ค.
์๊น๋จน์ ์ ์์๊น...
์ ๊ท์๊ณผ matches(), Patterens.matches() ๋ฉ์๋
๋ง์ด ์ฐ์ด๋ ์ ๊ท์์ ๋ํด ๋ฐฐ์ธ ์ ์์์ต๋๋ค.
๋ฌผ๋ก ๋ณต์กํ ์ ๊ท์์ ๋์ค์ gptํํ
๋ฌผ์ด๋ณด๊ฒ ์ง๋ง, ๊ฐ๋จํ ์ ๊ท์์ ์ด๋์ ๋ ์ฝ์ ์ค ์๊ณ ์ดํดํ ์ ์์ด์ผํ๋ค๊ณ ์๊ฐํด์ ์ ์ตํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
//== matches์ Pattern.matches() ==//
String test = "helloA";
System.out.println(test.matches("[A-Za-z]+")); // ์๋ฌธ์๋ก๋ง ์ด๋ค์ ธ์๋์ง. true
boolean b1 = Pattern.matches("[0-9]+", "12345hello"); // ์ซ์๋ก๋ง ์ด๋ค์ ธ ์๋์ง. false
System.out.println(b1);
// ์ ํ๋ฒํธ ํฌ๋งท ๊ฒ์ฆ
boolean b2 = Pattern.matches("^\\d{3}-\\d{4}-\\d{4}$", number);
// ์ด๋ฉ์ผ ํฌ๋งท ๊ฒ์ฆ
boolean b3 = Pattern.matches("^[a-z0-9]+@[a-z]+.com$", email);
๊ธฐ๋ณธ ์๋ฃํ ์ญ์ ์ ๋ ฌํ๊ธฐ with stream
์ฐธ์กฐ ์๋ฃํ์ Comparator ๊ฐ์ฒด๋ฅผ ์ด์ฉํ๊ฑฐ๋ Comparable์ ๊ตฌํํ๋ฉด ์ํ๋ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๋๊ฒ ๋น๊ต์ ์ฌ์ด๋ฐ, ๊ธฐ๋ณธ์๋ฃํ์ ์ข ์ด๋ ต๋ค๊ณ ๋๊ผ์ต๋๋ค. (ex. ์ญ์ ์ ๋ ฌ)
๊ทธ๋ฐ๋ฐ ์์
์๊ฐ์ stream์ผ๋ก ์ญ์ ์ ๋ ฌํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์์ ์ข์์ต๋๋ค. (Integer๋ก ๋ณํ ํ ์ ๋ ฌํ๊ณ ๋ค์ int๋ก ๋ณํ)
์ ๋ ์ฌ์ค ์์ง stream์ ์ฐ๋๋ฐ ์ต์์น ์์๋ฐ ๋นจ๋ฆฌ ์ต์ํด์ ธ์ผ๊ฒ ์ต๋๋ค.
// ๋ฐฉ๋ฒ 2. stream api์ lambda๋ฅผ ํ์ฉํ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
int[] answer = Arrays.stream(intArr) // intArr์ ๋์์ผ๋ก stream ๊ฐ์ฒด ์์ฑ. stream์ด๋ผ๋ ๊ฒ์ int ๋ฐฐ์ด์ ๋ณต์ฌ๋ณธ์ด๋ผ๊ณ ๋ณด๋ฉด ๋๋ค.
.boxed() // int ์์๋ฅผ Integer๋ก ํ๋ณํ ์ํค๋ ๋ฉ์๋
.sorted(Comparator.reverseOrder())
.mapToInt(a -> a) // Integer๋ฅผ ๋ค์ int๋ก ํ๋ณํ
.toArray(); // ๋ฐฐ์ด๋ก ๋ณํ
๋ฌธ์์ด ๊ฟํ(?)
์ค๊ฐ์ ๊ณต๋ฐฑ ์ฌ๋ฌ๊ฒ ์์ ๋, ์๋ผ์ String ๋ฐฐ์ด๋ก ๋ง๋ค๊ธฐ -> ๊ณต๋ฐฑ์ ๋ํ๋ด๋ ์ด์ค์ผ์ดํ์ํ์ค \s ๋ค์ + ๋ถ์ฌ์ฃผ๋ฉด ํด๊ฒฐ!("\s+")
String b = "a b c d"; String[] bArr = b.split("\\s+");
๐ฑ ๊ฐ์ ํ ์
ํผ๊ณคํ์ง ์๊ฒ ์ ๋ง์ด ์๊ธฐ!
๋ญ๊ฐ ๋ ๋ง์ด ํ๊ณ ์ถ์ด์ ๋ฆ๊ฒ ์๋ฉด ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ฅ๋ฅ ์ด ๋จ์ด์ ธ์ ๋ ์์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
์ ์๋ ์๊ฐ์ ๋ ์๋น๊ฒจ์ผ๊ฒ ๋ค๊ณ ์๊ฐํ์ต๋๋ค.
์ค๋์ 10์ ๋ฐ์ ์๋ ๊ฒ์ ๋์ ํด๋ณด๊ฒ ์ต๋๋ค..!
1์ผ 1 ์๊ณ ๋ฆฌ์ฆ ํ๊ธฐ!
์์ฆ์ ์์
์๊ฐ ํํ์ด ํ์ด์ 1์ผ 1๋ฌธ์ ๋ฅผ ํ ์ ์์๋๋ฐ ์์ผ๋ก๋ ์ ์ ํ์๊ฐ์ด ์์ด์ง ๊ฒ ๊ฐ์ต๋๋ค.
์๋ฌด๋ฆฌ ๋ฐ๋น ์ ธ๋ ํฌ๊ธฐํ์ง ์๊ณ ํ๋ฃจ์ ํ๋ฌธ์ ๋ ํด๊ฒฐํด์ผ๊ฒ ๋ค๊ณ ์๊ฐํ์ต๋๋ค.
'๊ธฐ๋ก > Beyond SW' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Beyond SW 7๊ธฐ 6์ฃผ์ฐจ ํ๊ณ ๋ก (2) | 2024.06.24 |
---|---|
Beyond SW 7๊ธฐ 5์ฃผ์ฐจ ํ๊ณ ๋ก (3) | 2024.06.18 |
Beyond SW 7๊ธฐ 3์ฃผ์ฐจ ํ๊ณ ๋ก (7) | 2024.06.02 |
Beyond SW 7๊ธฐ 2์ฃผ์ฐจ ํ๊ณ ๋ก (8) | 2024.05.26 |
Beyond SW 7๊ธฐ 1์ฃผ์ฐจ ํ๊ณ ๋ก (4) | 2024.05.19 |