<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>lsw_11_23.log</title>
        <link>https://velog.io/</link>
        <description>^.^</description>
        <lastBuildDate>Tue, 19 Dec 2023 17:58:40 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>lsw_11_23.log</title>
            <url>https://velog.velcdn.com/images/lsw_11_23/profile/43256a00-6010-40c4-8fa5-e0c7c66ad65a/social_profile.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. lsw_11_23.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/lsw_11_23" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[부산 구별 급여 단계 구분도 만들기]]></title>
            <link>https://velog.io/@lsw_11_23/%EB%B6%80%EC%82%B0-%EA%B5%AC%EB%B3%84-%EA%B8%89%EC%97%AC-%EB%8B%A8%EA%B3%84-%EA%B5%AC%EB%B6%84%EB%8F%84-%EB%A7%8C%EB%93%A4%EA%B8%B0</link>
            <guid>https://velog.io/@lsw_11_23/%EB%B6%80%EC%82%B0-%EA%B5%AC%EB%B3%84-%EA%B8%89%EC%97%AC-%EB%8B%A8%EA%B3%84-%EA%B5%AC%EB%B6%84%EB%8F%84-%EB%A7%8C%EB%93%A4%EA%B8%B0</guid>
            <pubDate>Tue, 19 Dec 2023 17:58:40 GMT</pubDate>
            <description><![CDATA[<p><a href="https://kosis.kr/statHtml/statHtml.do?orgId=133&amp;tblId=DT_133001N_4215&amp;vw_cd=MT_ZTITLE&amp;list_id=133_13301_200_40_20&amp;seqNo=&amp;lang_mode=ko&amp;language=kor&amp;obj_var_id=&amp;itm_id=&amp;conn_path=MT_ZTITLE">https://kosis.kr/statHtml/statHtml.do?orgId=133&amp;tblId=DT_133001N_4215&amp;vw_cd=MT_ZTITLE&amp;list_id=133_13301_200_40_20&amp;seqNo=&amp;lang_mode=ko&amp;language=kor&amp;obj_var_id=&amp;itm_id=&amp;conn_path=MT_ZTITLE</a>
or
이메일로 보낸 Salary.csv파일 받고 진행</p>
<h4 id="1-패키지-설치">1. 패키지 설치</h4>
<blockquote>
</blockquote>
<pre><code>pip install folium</code></pre><blockquote>
</blockquote>
<p>단계 구분도를 만들기 위한 패키지 설치</p>
<h4 id="2-시군구-경계-지도-데이터-준비하기">2. 시군구 경계 지도 데이터 준비하기</h4>
<blockquote>
</blockquote>
<pre><code>import json
geo = json.load(open(&quot;SIG.geojson&quot;, encoding= &#39;UTF-8&#39;))</code></pre><blockquote>
</blockquote>
<p>지역별 위도,경도 좌표가 있는 지도데이터 불러오기</p>
<blockquote>
</blockquote>
<pre><code>print(geo[&#39;features&#39;][124][&#39;properties&#39;])
print(geo[&#39;features&#39;][125][&#39;properties&#39;])
print(geo[&#39;features&#39;][126][&#39;properties&#39;])
print(geo[&#39;features&#39;][127][&#39;properties&#39;])
print(geo[&#39;features&#39;][128][&#39;properties&#39;])
print(geo[&#39;features&#39;][129][&#39;properties&#39;])</code></pre><blockquote>
</blockquote>
<p>위의 코드를 사용해서 잘 불러와지는지 확인</p>
<h4 id="3-근로소득-연말정산-csv파일-사용">3. 근로소득 연말정산 csv파일 사용</h4>
<blockquote>
</blockquote>
<pre><code>import pandas as pd
salary = pd.read_csv(&#39;Salary_SIG.csv&#39;)
salary</code></pre><blockquote>
</blockquote>
<p>을 사용해서 데이터 가져옴</p>
<blockquote>
</blockquote>
<pre><code>import pandas as pd
salary = pd.read_csv(&#39;./Busan_Salary_SIG.csv&#39;, encoding=&#39;euc-kr&#39;)
salary</code></pre><blockquote>
</blockquote>
<p>만약 Busan다운받으면 이렇게 하세요^.^</p>
<h4 id="4-급여단계-구분도-만들기">4. 급여단계 구분도 만들기</h4>
<blockquote>
</blockquote>
<pre><code>import folium
map_sig = folium.Map(location = [35.1379, 129.0556],
                     zoom_start = 12,
                     tiles = &#39;cartodbpositron&#39;)
folium.Choropleth(
    geo_data = geo,
    data = salary,
    columns =(&#39;code&#39;, &#39;salary&#39;),
    key_on = &#39;feature.properties.SIG_CD&#39;).add_to(map_sig)
map_sig</code></pre><blockquote>
</blockquote>
<p>이렇게 하면 부산급여구분도가 나온다
이때 zoom_start= 12는 지도의 크기이며 12 or 11로 한다.</p>
<h4 id="5-사진">5. 사진</h4>
<p><img src="https://velog.velcdn.com/images/lsw_11_23/post/6af6e7a3-bb23-4ce3-8071-46300c2c7da5/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/lsw_11_23/post/515b5187-f821-45bd-9308-7b6ac057179e/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[기통수별 고속도로 연비]]></title>
            <link>https://velog.io/@lsw_11_23/%EA%B8%B0%ED%86%B5%EC%88%98%EB%B3%84-%EA%B3%A0%EC%86%8D%EB%8F%84%EB%A1%9C-%EC%97%B0%EB%B9%84</link>
            <guid>https://velog.io/@lsw_11_23/%EA%B8%B0%ED%86%B5%EC%88%98%EB%B3%84-%EA%B3%A0%EC%86%8D%EB%8F%84%EB%A1%9C-%EC%97%B0%EB%B9%84</guid>
            <pubDate>Tue, 19 Dec 2023 17:01:11 GMT</pubDate>
            <description><![CDATA[<h4 id="1-데이터-수집">1. 데이터 수집</h4>
<blockquote>
</blockquote>
<pre><code>import pandas as pd
import seaborn as sns
mpg_row = pd.read_csv(&#39;mpg.csv&#39;)
mpg = mpg_row.copy()
mpg</code></pre><blockquote>
</blockquote>
<p>위의 코드로 mpg데이터 수집</p>
<h4 id="2-산점도-출력">2. 산점도 출력</h4>
<p>manufacturer = 제조회사
model = 자동차 모델명
displ = 배기량
year = 생산연도
cyl = 실린더 개수
trans = 변속기 종류
drv = 구동 방식
cty = 도시연비
hwy = 고속도로 연비
fl = 연료 종류
category = 자동차 종류 </p>
<blockquote>
</blockquote>
<pre><code>sns.scatterplot(data= mpg, x=&#39;cyl&#39;, y= &#39;hwy&#39;, hue=&#39;drv&#39;)</code></pre><blockquote>
</blockquote>
<p>hue 구동방식별 색깔 다르게 표현</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[자동차 카테고리에 맞는 상자 출력]]></title>
            <link>https://velog.io/@lsw_11_23/%EC%9E%90%EB%8F%99%EC%B0%A8-%EC%B9%B4%ED%85%8C%EA%B3%A0%EB%A6%AC%EC%97%90-%EB%A7%9E%EB%8A%94-%EC%83%81%EC%9E%90-%EC%B6%9C%EB%A0%A5</link>
            <guid>https://velog.io/@lsw_11_23/%EC%9E%90%EB%8F%99%EC%B0%A8-%EC%B9%B4%ED%85%8C%EA%B3%A0%EB%A6%AC%EC%97%90-%EB%A7%9E%EB%8A%94-%EC%83%81%EC%9E%90-%EC%B6%9C%EB%A0%A5</guid>
            <pubDate>Tue, 19 Dec 2023 16:38:02 GMT</pubDate>
            <description><![CDATA[<blockquote>
</blockquote>
<pre><code>#mpg.csv 파일의 데이터에서 자동차의 카테고리가 &#39;compact&#39; &#39;subcompact&#39;, &#39;suv&#39;인 자동차의 도시 연빌르 나타낸 상자를 출력하라
import pandas as pd
import seaborn as sns
mpg = pd.read_csv(&quot;./mpg.csv&quot;)
df = mpg.query(&#39;category in [&quot;compact&quot;, &quot;subcompact&quot;, &quot;suv&quot;]&#39;)
sns.boxplot(data = df, x = &#39;category&#39;, y= &#39;cty&#39;)</code></pre><blockquote>
</blockquote>
<p>간단하다</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[한국복지패널 데이터사용 평균월급 그래프]]></title>
            <link>https://velog.io/@lsw_11_23/%ED%95%9C%EA%B5%AD%EB%B3%B5%EC%A7%80%ED%8C%A8%EB%84%90-%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%82%AC%EC%9A%A9-%ED%8F%89%EA%B7%A0%EC%9B%94%EA%B8%89-%EA%B7%B8%EB%9E%98%ED%94%84</link>
            <guid>https://velog.io/@lsw_11_23/%ED%95%9C%EA%B5%AD%EB%B3%B5%EC%A7%80%ED%8C%A8%EB%84%90-%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%82%AC%EC%9A%A9-%ED%8F%89%EA%B7%A0%EC%9B%94%EA%B8%89-%EA%B7%B8%EB%9E%98%ED%94%84</guid>
            <pubDate>Tue, 19 Dec 2023 16:24:14 GMT</pubDate>
            <description><![CDATA[<h3 id="한국복지패널-데이터에서-지역별-평균-월급을-추출하고-평균-월급이-높은-순서로-정렬해-그래프를-출력하라">한국복지패널 데이터에서 지역별 평균 월급을 추출하고 평균 월급이 높은 순서로 정렬해 그래프를 출력하라.</h3>
<h4 id="1-데이터-준비">1. 데이터 준비</h4>
<p><a href="https://bit.ly/Koweps_hpwc14_2019_beta2">https://bit.ly/Koweps_hpwc14_2019_beta2</a> 해당 사이트에 접속하여 파일 다운로드</p>
<blockquote>
</blockquote>
<pre><code>pip install pyreadstat</code></pre><blockquote>
</blockquote>
<p>위의 패캐지를 아나콘다에 설치</p>
<h4 id="2-데이터-불러오기">2. 데이터 불러오기</h4>
<blockquote>
</blockquote>
<pre><code>raw_welfare = pd.read_spss(&#39;Koweps_hpwc14_2019_beta2.sav&#39;)
welfare = raw_welfare.copy()</code></pre><blockquote>
</blockquote>
<p>위의 코드를 사용하여 데이터불러오기</p>
<blockquote>
</blockquote>
<pre><code>welfare.info()
welfare.describe()</code></pre><blockquote>
</blockquote>
<p>위의 코드를 사용해서 데이터가 잘 가져와졌는지 확인하기</p>
<h4 id="3-변수명-변경하기">3. 변수명 변경하기</h4>
<blockquote>
</blockquote>
<pre><code>welfare = welfare.rename(columns = {&#39;h14_g3&#39; : &#39;sex&#39;, #성별
                                    &#39;h14_g4&#39; : &#39;birth&#39;, #태어난 연도
                                    &#39;h14_g10&#39; : &#39;marriage_type&#39;, # 혼인 상태
                                    &#39;h14_g11&#39; : &#39;religion&#39;, # 종교
                                    &#39;p1402_8aq1&#39; : &#39;income&#39;, # 월급
                                    &#39;h14_eco9&#39; : &#39;code_job&#39;, # 직업 코드
                                    &#39;h14_reg7&#39; : &#39;code_region&#39;}) # 지역 코드</code></pre><blockquote>
</blockquote>
<p>위의 코드로 변수명을 변경 후</p>
<blockquote>
</blockquote>
<pre><code>income_column = welfare[[&#39;income&#39;]]
region_column = welfare[[&#39;code_region&#39;]]
print(income_column)
print(region_column)</code></pre><blockquote>
</blockquote>
<p>위의 코드로 잘 변경됬는지 확인(시험마다 다를 수 있으니 바뀌면 변수명을 바꾸자)</p>
<h4 id="4-지역code_region-전처리">4. 지역(code_region) 전처리</h4>
<p>&lt;데이터병합 과정&gt;</p>
<blockquote>
</blockquote>
<pre><code>list_region = pd.DataFrame({&#39;code_region&#39; : [1, 2, 3, 4, 5, 6, 7],
                            &#39;region&#39; : [&#39;서울&#39;, 
                                        &#39;수도권(인천/경기)&#39;,
                                        &#39;부산/경남/울산&#39;,
                                        &#39;대구/경북&#39;,
                                        &#39;대전/충남&#39;,
                                        &#39;강원/충북&#39;,
                                        &#39;광주/전남/전북/제주도&#39;]})
list_region</code></pre><blockquote>
</blockquote>
<p>위의 코드를 활용해서 list_region을 제작</p>
<blockquote>
</blockquote>
<pre><code>welfare = welfare.merge(list_region, how = &#39;left&#39;, on = &#39;code_region&#39;)
welfare[[&#39;code_region&#39;, &#39;region&#39;]].head()</code></pre><blockquote>
</blockquote>
<p>위의 코드를 사용해서 welfare에 list_region을 합친다</p>
<p>&lt;지역별 월급평균구하기&gt;</p>
<blockquote>
</blockquote>
<pre><code>region_income = welfare.dropna(subset = [&#39;income&#39;])\
                        .groupby(&#39;region&#39;, as_index = False)\
                        .agg(mean_income = (&#39;income&#39;, &#39;mean&#39;))
region_income</code></pre><blockquote>
</blockquote>
<p>위의 코드를 사용해 월급의 평균을 구한다</p>
<p>&lt;높은 지역 먼처 출력&gt;</p>
<blockquote>
</blockquote>
<pre><code>top_region_income = region_income.sort_values(&#39;mean_income&#39;, ascending = False).head(10)
top_region_income</code></pre><blockquote>
</blockquote>
<p>위의 코드를 사용해 월급 평균이 높은 순부터 정렬되고 잘 정렬되는지 확인한다</p>
<h4 id="5-그래프-출력">5. 그래프 출력</h4>
<blockquote>
</blockquote>
<pre><code>import matplotlib.pyplot as plt
plt.rcParams.update({&#39;font.family&#39; : &#39;Malgun Gothic&#39;})
sns.barplot(data = top_region_income, y = &#39;region&#39;, x = &#39;mean_income&#39;).set(xlim = (0,300))</code></pre><blockquote>
</blockquote>
<blockquote>
</blockquote>
<pre><code>import matplotlib.pyplot as plt
plt.rcParams.update({&#39;font.family&#39; : &#39;Malgun Gothic&#39;})
sns.barplot(data = top_region_income, x = &#39;region&#39;, y = &#39;mean_income&#39;)</code></pre><blockquote>
</blockquote>
<p>위의 두 코드중 하나를 사용해 월급이 높은순으로 그래프를 만든다</p>
<p>####6. 사진
<img src="https://velog.velcdn.com/images/lsw_11_23/post/945ec892-3b49-4abb-9923-4b1883cd51c0/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/lsw_11_23/post/01ca812a-d737-4de5-8d25-18e8bd569441/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/lsw_11_23/post/5f6829a6-286b-43e1-9bec-91060695808f/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/lsw_11_23/post/0f8256d9-9e42-4439-82c4-d78e48478ac7/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/lsw_11_23/post/e7312c65-90da-4737-ac37-b95985568149/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[함수]]></title>
            <link>https://velog.io/@lsw_11_23/%ED%95%A8%EC%88%98</link>
            <guid>https://velog.io/@lsw_11_23/%ED%95%A8%EC%88%98</guid>
            <pubDate>Tue, 11 Jul 2023 08:34:13 GMT</pubDate>
            <description><![CDATA[<h2 id="기본-함수">기본 함수</h2>
<pre><code>function add(a,b){
    return a+b;
}</code></pre><h2 id="익명-함수">익명 함수</h2>
<pre><code>const add1 = function(a,b){
    return a+b;
}</code></pre><h2 id="화살표-함수">화살표 함수</h2>
<p>결과코드가 한줄이면 중괄호와 return을 생략할 수 있다.</p>
<pre><code>const add2 = (a,b) =&gt;{
    return a+b;
}</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Js]]></title>
            <link>https://velog.io/@lsw_11_23/Js</link>
            <guid>https://velog.io/@lsw_11_23/Js</guid>
            <pubDate>Tue, 11 Jul 2023 08:32:43 GMT</pubDate>
            <description><![CDATA[<h1 id="java와-javascript의-차이점">Java와 JavaScript의 차이점</h1>
<ul>
<li>js는 타입을 명시하지 않아도 된다</li>
</ul>
<pre><code>String str = &quot;a&quot;; //Java

//js
var  str = &quot;a&quot;; // var 함수단위 스코프
let str1 = &quot;a&quot;; // let은 블록단위 스코프
const str2 = &quot;a&quot;; // const는 블록단위 스코프 + final</code></pre><ul>
<li>java는 모든 코드가 class 안에 작성된다. 하지만 js는 class가 없어도 코드를 작성할 수 있다.<pre><code>function add(a,b){
 return a + b;
}
</code></pre></li>
</ul>
<pre><code>
- js에서 or조건을 사용하면 마지막 값이나 false가 아닌 값이 출력된다.</code></pre><pre><code>console.log(false ||false || true );
console.log(false ||false || &quot;g2&quot; );</code></pre><pre><code>&gt; true
g2

- js or조건에서 0이나 null등도 false조건으로 판단한다.

- if나 while 등의 조건 안에 boolean이 아닌 값이 들어가면 true를 대신할 수 있다.
</code></pre><pre><code>const data = &quot;aaa&quot;;

if(data){
    console.log(&quot;널이 아닙니다&quot;);
}</code></pre><pre><code>&gt; 널이 아닙니다

- typeof을 사용해서 타입을 판단할 수 있다.</code></pre><pre><code>const str3 = &quot;12&quot;;
console.log(typeof str3);</code></pre><pre><code>&gt;string

- js에서 ==은 값만 비교한다. 또한 ===은 값과 타입을 모두 비교한다.
</code></pre><p>   console.log(&quot;12&quot; == 12);
    console.log(true == 1);
    console.log(true == 2);
    console.log(undefined == null);</p>
<pre><code>console.log(&quot;12&quot; === 12);</code></pre><pre><code></code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[그룹(group by)]]></title>
            <link>https://velog.io/@lsw_11_23/%EA%B7%B8%EB%A3%B9group-by</link>
            <guid>https://velog.io/@lsw_11_23/%EA%B7%B8%EB%A3%B9group-by</guid>
            <pubDate>Mon, 10 Jul 2023 01:48:27 GMT</pubDate>
            <description><![CDATA[<h2 id="group-by-절">group by 절</h2>
<p>기준 열을 지정하여 그룹화하는 명령어</p>
<h3 id="그룹화">그룹화</h3>
<p>같은 데이터 값을 갖는 행끼리 묶는 과정</p>
<h3 id="sql문">sql문</h3>
<pre><code>select 기준 열, 그룹 함수(열 이름)
from 테이블 이름
...

group by 열 이름
...</code></pre><blockquote>
<p>그룹함수 사용 시 sum / avg / max / min 등 함수가 null 값을 카운팅 하지 않을 경우
강제로 카운트 하도록 if등을 이용해서 값을 변환한 뒤에 사용한다.</p>
</blockquote>
<h2 id="having-절">having 절</h2>
<p>그룹화된 값에 조건식을 적용할 때 사용한다.</p>
<blockquote>
<p>where 절에서는 그룹 함수를 사용할 수 없으므로 having 절을 사용해 그룹 함수의 결괏값에 
대해 조건식을 적용한다.</p>
</blockquote>
<h3 id="sql문-1">sql문</h3>
<pre><code>select 열 이름, 그룹함수(열이름)
from 테이블 이름
where 조건식
group by 열 이름
having 조건식
order by 열 이름;</code></pre><h2 id="sql문-작동-순서">sql문 작동 순서</h2>
<blockquote>
<p>from -&gt; where -&gt; group by -&gt; having -&gt; select -&gt; order by</p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/lsw_11_23/post/d6cdaf9b-62c3-4a3a-9e7c-a04e2df9b07f/image.png" alt="">
<img src="https://velog.velcdn.com/images/lsw_11_23/post/5afb4420-05f3-49ca-a0cb-53bc1d499e6a/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[mariaDB와 디비버]]></title>
            <link>https://velog.io/@lsw_11_23/mariaDB%EC%99%80-%EB%94%94%EB%B9%84%EB%B2%84</link>
            <guid>https://velog.io/@lsw_11_23/mariaDB%EC%99%80-%EB%94%94%EB%B9%84%EB%B2%84</guid>
            <pubDate>Fri, 07 Jul 2023 08:22:07 GMT</pubDate>
            <description><![CDATA[<h1 id="마리아-db">마리아 DB</h1>
<ul>
<li>관계형데이터베이스 시스템</li>
<li>RDBMS</li>
</ul>
<h1 id="디비버">디비버</h1>
<ul>
<li>vscode로 자바하듯이 데이터베이스 IDE</li>
</ul>
<h1 id="데이터베이스">데이터베이스</h1>
<ul>
<li>스키마</li>
<li>실제 개별 서비스에서 사용하는 모든 데이터를 담고 있다.</li>
<li>엑셀을 예로들염 엑셀파일 하나 / 여러개의 시트를 들고 있다.</li>
</ul>
<h1 id="테이블">테이블</h1>
<ul>
<li>엔티티</li>
<li>데이터들의 형식을 정한다.</li>
<li>같은 종류의 데이터 묶음을 저장한다.</li>
<li>엑셀파일 내부의 시트 하나/ 여러줄의 데이터 묶음을 들고 있다</li>
</ul>
<h1 id="컬럼">컬럼</h1>
<ul>
<li>테이블 내의 같은 형식의 데이터</li>
</ul>
<h1 id="로우">로우</h1>
<ul>
<li>튜플 레코드 </li>
<li>테이블 내의 데이터 묶음 하나</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[DB의 종류]]></title>
            <link>https://velog.io/@lsw_11_23/DB%EC%9D%98-%EC%A2%85%EB%A5%98</link>
            <guid>https://velog.io/@lsw_11_23/DB%EC%9D%98-%EC%A2%85%EB%A5%98</guid>
            <pubDate>Fri, 07 Jul 2023 05:14:33 GMT</pubDate>
            <description><![CDATA[<h1 id="오라클">오라클</h1>
<ul>
<li>최초의 상용 RDBMS로써 축적된 다양한 기술을 가지고 있음</li>
<li>대량의 데이터를 효율적으로 처리하는 뛰어난 성능</li>
<li>클러스터링, 리플리케이션, 파티셔닝 등 다양한 기능</li>
</ul>
<h1 id="오픈소스-db">오픈소스 DB</h1>
<ul>
<li><p>MySQL 구버전/MariaDB/PostgreSQL</p>
</li>
<li><p>신뢰성과 안정성 인정 받음</p>
</li>
<li><p>상업용으로도 무료 사용</p>
</li>
<li><p>카카오뱅크, 인스타그램, 스카이프 등</p>
</li>
</ul>
<h1 id="nosql">NOSQL</h1>
<ul>
<li>서버를 숨긴다.</li>
<li>대량의 데이터,실시간 데이터 처리, 높은 확장성이 필요한 경우</li>
<li>웹 및 모바일 애플리케이션, 소셜미디어 등 등..</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[DB 설치]]></title>
            <link>https://velog.io/@lsw_11_23/DB-%EC%84%A4%EC%B9%98</link>
            <guid>https://velog.io/@lsw_11_23/DB-%EC%84%A4%EC%B9%98</guid>
            <pubDate>Fri, 07 Jul 2023 05:04:03 GMT</pubDate>
            <description><![CDATA[<h2 id="마리아-db설치">마리아 DB설치</h2>
<p><a href="https://mariadb.org/">https://mariadb.org/</a></p>
<p><img src="https://velog.velcdn.com/images/lsw_11_23/post/8bfb9bb4-428e-41a9-89d3-583abbaadbfc/image.png" alt=""></p>
<p>아래처럼 알파버전 없는 최신 버전 다운로드
<img src="https://velog.velcdn.com/images/lsw_11_23/post/93f292c0-b379-4e12-a846-9ca5633dd2dc/image.png" alt=""></p>
<p>비밀번호는 맞게 설정하기</p>
<p><img src="https://velog.velcdn.com/images/lsw_11_23/post/7df0a3a5-3835-4df8-ab35-1efce921e669/image.png" alt=""></p>
<p>Finish 후 Dwonload하면 완료</p>
<h2 id="디비버-설치">디비버 설치</h2>
<p><a href="https://dbeaver.io/download/">https://dbeaver.io/download/</a>
위의 사이트에 접속해 자신의 운영체제에 맞는 버전을 다운로드
<img src="https://velog.velcdn.com/images/lsw_11_23/post/4d809cf3-d4ff-4903-a0c9-21b65a49ff20/image.png" alt=""></p>
<h2 id="포트번호">포트번호</h2>
<p>vscode 라이브러리 서버 : 5500
mysql : 3306 
mariadb : 3307 </p>
<h1 id="db">DB</h1>
<p>데이터를 정리하는 시스템</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[String]]></title>
            <link>https://velog.io/@lsw_11_23/String</link>
            <guid>https://velog.io/@lsw_11_23/String</guid>
            <pubDate>Wed, 05 Jul 2023 08:21:57 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/lsw_11_23/post/743f201c-485e-4582-bd17-b49c863c4a8b/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/lsw_11_23/post/a3e47a05-a54c-4987-980b-315912ce15ca/image.png" alt=""></p>
<h3 id="객체-equal">객체 equal</h3>
<p><img src="https://velog.velcdn.com/images/lsw_11_23/post/0fc950e0-3e3e-4dbe-aa2e-fc078c1b5d86/image.png" alt=""></p>
<p>객체끼리 ==을 사용하면 주소를 비교한다. 그러나 객체끼리 equals를 사용하면 주소를 비교해보고
false면 값을 한번 더 확인해서 비교한 뒤에 true나 false를 리턴한다.</p>
<h3 id="문자배열">문자배열</h3>
<p><img src="https://velog.velcdn.com/images/lsw_11_23/post/d431baeb-4111-481a-b105-ca1fb671a4f6/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/lsw_11_23/post/b287bdfb-c88a-43e4-afbe-72722cada16c/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Math]]></title>
            <link>https://velog.io/@lsw_11_23/Math</link>
            <guid>https://velog.io/@lsw_11_23/Math</guid>
            <pubDate>Wed, 05 Jul 2023 08:19:55 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/lsw_11_23/post/3a407535-4885-450a-9fd2-540757c0d955/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/lsw_11_23/post/6c2c13ff-1d1c-4e72-a29c-59be848e57f1/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[try catch문]]></title>
            <link>https://velog.io/@lsw_11_23/try-catch%EB%AC%B8</link>
            <guid>https://velog.io/@lsw_11_23/try-catch%EB%AC%B8</guid>
            <pubDate>Wed, 05 Jul 2023 05:22:10 GMT</pubDate>
            <description><![CDATA[<h1 id="try-catch">try catch</h1>
<p>try는 예외가 일어날 것 같은 코드를 담는 공간 </p>
<p>catch는 특정 예외가 발생했을 때 프로그램을 멈추지 않고 처리한 뒤 다음으로 넘긴다</p>
<blockquote>
<p>일반적으로 예외가 발생하면 프로그램이 멈추지만 try catch문을 사용하면 멈추지 않고 계속 일을 진행한다.</p>
</blockquote>
<h2 id="사용법">사용법</h2>
<h3 id="배열오류">배열오류</h3>
<blockquote>
</blockquote>
<ul>
<li>예1)
<img src="https://velog.velcdn.com/images/lsw_11_23/post/d7681cd8-6517-4f83-8eaa-7567b8c4700a/image.png" alt=""></li>
<li>실행결과
<img src="https://velog.velcdn.com/images/lsw_11_23/post/a3dbd5bc-a0d3-4c35-9d67-63344e28ff01/image.png" alt=""></li>
</ul>
<p>위에처럼 문제 발생시 프로그램은 멈춘다.</p>
<blockquote>
</blockquote>
<ul>
<li>try catch문 적용
<img src="https://velog.velcdn.com/images/lsw_11_23/post/9fcf48ef-f2a8-4112-8480-e00ee50044ec/image.png" alt="">
catch문 뒤에 소괄호 에는 오류와 맞는 코드를 적어놓아야한다.</li>
<li>실행결과
<img src="https://velog.velcdn.com/images/lsw_11_23/post/02f82ac3-ac1e-427d-aeff-0bcf1caeb50c/image.png" alt=""></li>
</ul>
<p>try catch문을 사용하면 예외처리를 하고 프로그램을 멈추지 않고 계속 작동한다.</p>
<h3 id="계산-오류">계산 오류</h3>
<blockquote>
</blockquote>
<ul>
<li>예2)
<img src="https://velog.velcdn.com/images/lsw_11_23/post/0f0da1a3-3953-4a89-a1f8-89dac955b495/image.png" alt=""></li>
<li>실행결과
<img src="https://velog.velcdn.com/images/lsw_11_23/post/f346b16a-d5a1-4047-a1d4-1a54361c2103/image.png" alt=""></li>
</ul>
<h3 id="catch의-순서">catch의 순서</h3>
<p>만약 위의 두개의 코드를 합쳤을때 예외 처리는 어떻게 해야할까</p>
<blockquote>
</blockquote>
<p><img src="https://velog.velcdn.com/images/lsw_11_23/post/538e7541-c684-4126-a99a-6601106bb7fb/image.png" alt=""></p>
<ul>
<li>실행결과
<img src="https://velog.velcdn.com/images/lsw_11_23/post/bf2decd0-52ce-4672-930a-007a900718d9/image.png" alt=""></li>
</ul>
<p>배열 예외처리를 하지 전에 이미 10/0이 예외를 처리해 catch문이 작동하지 않고 프로그램이 멈춘다.</p>
<blockquote>
</blockquote>
<p><img src="https://velog.velcdn.com/images/lsw_11_23/post/704802ee-3641-40be-9ef4-3a16c8c33c43/image.png" alt=""></p>
<ul>
<li>실행결과
<img src="https://velog.velcdn.com/images/lsw_11_23/post/eff06832-2f8f-48b1-ac8b-f57dab16e8d8/image.png" alt=""></li>
</ul>
<p>catch문을 두 번 작성해 예외처리를 해주었다. 
따라서 발생할 수 있는 모든 에러에 대한 처리를 각각 해주는 것이 좋다.</p>
<h2 id="catchexception-e">catch(Exception e)</h2>
<p>하지만 위의 방법보다 간단한 방법이 있다.</p>
<blockquote>
</blockquote>
<p><img src="https://velog.velcdn.com/images/lsw_11_23/post/e7900bb7-249c-44cc-be63-c43d89de8f49/image.png" alt=""></p>
<ul>
<li>실행결과
<img src="https://velog.velcdn.com/images/lsw_11_23/post/ccfc0fb2-ed41-4769-a4d6-bc0fb1280527/image.png" alt=""></li>
</ul>
<p>Exception은 최상위 예외 클래스 이므로 해결하기 쉽다.</p>
<blockquote>
<p>Exception은 중요한 코드가 아닐 경우에 한꺼번에 처리하고 싶을 때 사용한다. </p>
</blockquote>
<h1 id="finally">finally</h1>
<p>finally는 try안의 변수와 관련된 객체가 무조건 처리되어야 할 경우에 사용한다.</p>
<blockquote>
<p>try 안의 코드가 예외가 발생하든 안하든 무조건 실행한다.</p>
</blockquote>
<blockquote>
<p><img src="https://velog.velcdn.com/images/lsw_11_23/post/a77aeb3a-2d66-4b72-aa5d-f78f2e410968/image.png" alt=""></p>
</blockquote>
<p>scanner에는 꼭 마지막에 scanner.close();가 실행되어야하기때문에 finally문 안에 넣어줘 무조건 처리되게 한다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[내부 클래스]]></title>
            <link>https://velog.io/@lsw_11_23/%EB%82%B4%EB%B6%80-%ED%81%B4%EB%9E%98%EC%8A%A4</link>
            <guid>https://velog.io/@lsw_11_23/%EB%82%B4%EB%B6%80-%ED%81%B4%EB%9E%98%EC%8A%A4</guid>
            <pubDate>Wed, 05 Jul 2023 05:03:24 GMT</pubDate>
            <description><![CDATA[<h1 id="내부-클래스">내부 클래스</h1>
<p>static이 없는 인스턴스 클래스</p>
<p><img src="https://velog.velcdn.com/images/lsw_11_23/post/38914bd7-0c52-4289-a30a-ccf9e6bbbbb7/image.png" alt=""></p>
<blockquote>
<p>삼성공장 설계도와 스마트폰 설계도를 만든다.</p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/lsw_11_23/post/14853d82-1bc8-495f-9268-3c09b52caf24/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[인터페이스(interface) ]]></title>
            <link>https://velog.io/@lsw_11_23/%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4interface</link>
            <guid>https://velog.io/@lsw_11_23/%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4interface</guid>
            <pubDate>Wed, 05 Jul 2023 01:34:52 GMT</pubDate>
            <description><![CDATA[<h1 id="인터페이스">인터페이스</h1>
<p>인터페이스는 &#39;기능&#39;을 의미한다. 
<img src="https://velog.velcdn.com/images/lsw_11_23/post/25adba3c-7e2c-4c7b-9401-bbde5f9e73cf/image.png" alt=""></p>
<blockquote>
<p>인터페이스는 기능을 의미해 위처럼 입의 기능을 void를 통해 추가하였다.</p>
</blockquote>
<p>인터페이스에 들어가는 것은 고정적으로 사용 
<img src="https://velog.velcdn.com/images/lsw_11_23/post/fdcb3a76-a253-4632-aacf-abee4b081efd/image.png" alt=""></p>
<blockquote>
<p>입에는 고정적으로 치아개수가 20개 있다.</p>
</blockquote>
<p>인터페이스는 클래스를 여러개 구현할 수 있다.
<img src="https://velog.velcdn.com/images/lsw_11_23/post/3e6afa00-c82a-4f2f-8634-24e42d126d02/image.png" alt=""></p>
<blockquote>
<p>하나의 클래스의 여러 인터페이스들이 들어간 코드이다.</p>
</blockquote>
<p>인터페이스들이 모이면 종족의 특성이 될 수 있다.
<img src="https://velog.velcdn.com/images/lsw_11_23/post/2389cac5-b945-41b1-9fa6-7d5581d87877/image.png" alt=""></p>
<blockquote>
<p>사람이라는 종족의 특징으로 입과 눈 이 있기 때문에 implements로 입,눈 인퍼페이스를 가져왔다.</p>
</blockquote>
<p>추상적 클래스에 인터페이스를 만들어서 사용할 수 있다.
<img src="https://velog.velcdn.com/images/lsw_11_23/post/81e5316b-8efb-498d-ae55-d46b65207299/image.png" alt=""></p>
<blockquote>
<p>추상클래스에서 만든 사람 추상 클래스를 통해 입과 눈의 기능이 있어 천사라는 클래스에 날개 인터페이스만 implements해서 가져왔다.</p>
</blockquote>
<blockquote>
<p>새라는 추상클래스 안에 cry, see, fly라는 기능이 전부 있어 extends로 &#39;새&#39; 추상클래스를 가져오고 Override를 통해서 안에 기능들을 덮어쓴다.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[추상클래스(abstract class)]]></title>
            <link>https://velog.io/@lsw_11_23/%EC%B6%94%EC%83%81%ED%81%B4%EB%9E%98%EC%8A%A4abstract-class</link>
            <guid>https://velog.io/@lsw_11_23/%EC%B6%94%EC%83%81%ED%81%B4%EB%9E%98%EC%8A%A4abstract-class</guid>
            <pubDate>Wed, 05 Jul 2023 01:06:00 GMT</pubDate>
            <description><![CDATA[<h1 id="추상클래스">추상클래스</h1>
<p>추상 클래스는 미완성된 설계도다.</p>
<p>또한 추상 클래스는 &#39;종족&#39;을 의미한다.
ex) &#39;abstract class 자동차&#39;를 하면 자동차 종류을 의미한다</p>
<p>다른 클래스를 작성하는데 도움을 줄 목적으로 작성된다.
<img src="https://velog.velcdn.com/images/lsw_11_23/post/76b83999-5b92-4728-9f12-827f89154aaa/image.png" alt=""></p>
<h2 id="특징">특징</h2>
<p>추상 클래스는 미완성이므로 인스턴스화 할 수 없다.
<img src="https://velog.velcdn.com/images/lsw_11_23/post/b2de7bd1-bd36-4642-9655-7d27b6a3b1fe/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/lsw_11_23/post/01e5b243-68ef-470b-b7ee-4ddfaded7dbb/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[07.04 복습]]></title>
            <link>https://velog.io/@lsw_11_23/07.04-%EB%B3%B5%EC%8A%B5</link>
            <guid>https://velog.io/@lsw_11_23/07.04-%EB%B3%B5%EC%8A%B5</guid>
            <pubDate>Wed, 05 Jul 2023 00:48:07 GMT</pubDate>
            <description><![CDATA[<p>Class는 static 메모리에 저장됨
Class에서 만든 static 함수는 static 메모리에 저장됨
Class에서 만든 static이 아닌 method는 static 메모리에 저장됨</p>
<p>Class로 만든 인스턴스는 heap 메모리에 저장됨</p>
<p>실행중인 함수 / method는 stack 메모리에 저장됨</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[제어자]]></title>
            <link>https://velog.io/@lsw_11_23/%EC%A0%9C%EC%96%B4%EC%9E%90</link>
            <guid>https://velog.io/@lsw_11_23/%EC%A0%9C%EC%96%B4%EC%9E%90</guid>
            <pubDate>Tue, 04 Jul 2023 08:41:21 GMT</pubDate>
            <description><![CDATA[<h1 id="제어자">제어자</h1>
<p>클래스, 변수, 메서드의 선언부에 사용되어 부가적인 의미를 부여한다.</p>
<h1 id="접근-제어자">접근 제어자</h1>
<p>단 하나만 사용 가능
멤버 또는 클래스에 사용되어, 외부로부터의 접근을 제한한다.</p>
<blockquote>
<p>public, protected, default, private</p>
</blockquote>
<p>public : 접근 제한이 없다.
private : 같은 클래스 내에서만 접근이 가능하다.
default : 같은 패키지 내에서만 접근이 가능하다
protected : 같은 패키지 내에서 다른 패키지의 자손 클래스에서 접근이 가능하다.</p>
<h3 id="접근-제어자를-사용하는-이유">접근 제어자를 사용하는 이유</h3>
<p>외부로부터 데이터를 보호하며 외부에 불필요한 부분을 감추기 위해</p>
<h3 id="생성자의-접근-제어자">생성자의 접근 제어자</h3>
<p>생성자의 접근 제어자는 클래스의 접근 제어자와 일치하며
생성자에 접근 제어자를 사용해 인스턴스의 생성을 제한할 수 있다.</p>
<h1 id="제어자-static">제어자 static</h1>
<p>클래스의 공통적으로 사용되는 변수.</p>
<h1 id="제어자-final">제어자 final</h1>
<p>변경될 수 없는 클래스</p>
<h1 id="제어자-abstract">제어자 abstract</h1>
<p>클래스 내에 추상메서드가 선언되었음을 의미</p>
<p><img src="https://velog.velcdn.com/images/lsw_11_23/post/065cdd55-b285-403c-ac48-17170f83657f/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[패키지와 임포트]]></title>
            <link>https://velog.io/@lsw_11_23/%ED%8C%A8%ED%82%A4%EC%A7%80%EC%99%80-%EC%9E%84%ED%8F%AC%ED%8A%B8</link>
            <guid>https://velog.io/@lsw_11_23/%ED%8C%A8%ED%82%A4%EC%A7%80%EC%99%80-%EC%9E%84%ED%8F%AC%ED%8A%B8</guid>
            <pubDate>Tue, 04 Jul 2023 08:34:18 GMT</pubDate>
            <description><![CDATA[<h1 id="패키지와-임포트">패키지와 임포트</h1>
<h2 id="패키지">패키지</h2>
<p>서로 관련된 클래스와 인터페이스의 묶음</p>
<blockquote>
<p>패키지는 소스파일에 첫번째 문장으로 단 한번 선언한다.</p>
</blockquote>
<h2 id="임포트">임포트</h2>
<p>사용할 클래스가 속한 패키지를 지정하는데 사용.</p>
<blockquote>
<p>import문을 사용하면 클래스를 사용할 때 패키지명을 생략할 수 있다.</p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/lsw_11_23/post/3c167a1d-b116-4a84-ab72-c2c30ed40744/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/lsw_11_23/post/64547feb-bde3-41c5-9c3f-eca5257df186/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[오버라이딩]]></title>
            <link>https://velog.io/@lsw_11_23/%EC%98%A4%EB%B2%84%EB%9D%BC%EC%9D%B4%EB%94%A9</link>
            <guid>https://velog.io/@lsw_11_23/%EC%98%A4%EB%B2%84%EB%9D%BC%EC%9D%B4%EB%94%A9</guid>
            <pubDate>Tue, 04 Jul 2023 08:26:30 GMT</pubDate>
            <description><![CDATA[<h1 id="오버라이딩">오버라이딩</h1>
<p>조상클래스로부터 상속받은 메서드의 내용을 상속받는 클래스에 맞게 변경하는 것
<img src="https://velog.velcdn.com/images/lsw_11_23/post/2780bfa9-e968-4c43-84ca-1afeaecbd89f/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/lsw_11_23/post/40112417-2d53-47ba-9ba3-341bad768a96/image.png" alt=""></p>
<p>Skill클래스에 getDamage()라는 메서드를 Volly라는 클래스가 상속받아 이름 매개변수 리턴타입을 똑같이 하고 내용을 변경했다.</p>
<h2 id="오버라이딩의-조건">오버라이딩의 조건</h2>
<ol>
<li><p>선언부가 같아야 한다.(이름, 매개변수, 리턴타입)</p>
</li>
<li><p>접근제어자를 좁은 범위로 변경할 수 없다.</p>
</li>
<li><p>조상클래스의 메서드보다 많은 수의 예외를 선언 할 수 없다.</p>
</li>
</ol>
<h1 id="super">super</h1>
<p>this와 같은데 조상의 멤버와 자신의 멤버를 구별하는데 사용한다.</p>
<p><img src="https://velog.velcdn.com/images/lsw_11_23/post/fe976dab-9744-4c52-ba9a-ffd870b35e1a/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/lsw_11_23/post/e150cc75-199a-4173-b7d1-e21f6acc1482/image.png" alt=""></p>
]]></description>
        </item>
    </channel>
</rss>