<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>노마드오브</title>
    <link>https://nomadof.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Sat, 16 May 2026 19:32:05 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>노마드오브</managingEditor>
    <item>
      <title>Mysql - 윈도우에서 mysql 설치 및 한글설정</title>
      <link>https://nomadof.tistory.com/246</link>
      <description>&lt;p&gt;&lt;span style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;*mysql설치&lt;/span&gt;&lt;br style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;&lt;br style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;&lt;span style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;C:\ProgramData\MySQL\MySQL Server 5.7\my.ini - 관리자권한으로 메모장 열기&lt;/span&gt;&lt;br style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;&lt;br style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;&lt;span style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;[client]&lt;/span&gt;&lt;br style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;&lt;span style=&quot;color: rgb(255, 0, 0); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;default-character-set=utf-8&lt;/span&gt;&lt;br style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;&lt;br style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;&lt;span style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;# pipe=&lt;/span&gt;&lt;br style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;&lt;br style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;&lt;span style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;# socket=MYSQL&lt;/span&gt;&lt;br style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;&lt;br style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;&lt;span style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;port=3306&lt;/span&gt;&lt;br style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;&lt;br style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;&lt;span style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;[mysql]&lt;/span&gt;&lt;br style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;&lt;span style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;no-beep&lt;/span&gt;&lt;br style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;&lt;br style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;&lt;span style=&quot;color: rgb(255, 0, 0); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;default-character-set=utf-8&lt;/span&gt;&lt;br style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;&lt;br style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;&lt;span style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;# SERVER SECTION&lt;/span&gt;&lt;br style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;&lt;span style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;# ----------------------------------------------------------------------&lt;/span&gt;&lt;br style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;&lt;span style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;#&lt;/span&gt;&lt;br style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;&lt;span style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;# The following options will be read by the MySQL Server. Make sure that&lt;/span&gt;&lt;br style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;&lt;span style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;# you have installed the server correctly (see above) so it reads this&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;&lt;span style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;# file.&lt;/span&gt;&lt;br style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;&lt;span style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;#&lt;/span&gt;&lt;br style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;&lt;span style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;# server_type=3&lt;/span&gt;&lt;br style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;&lt;span style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;[mysqld]&lt;/span&gt;&lt;br style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;&lt;span style=&quot;color: rgb(255, 0, 0); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;collation-server = utf8_unicode_ci&lt;/span&gt;&lt;br style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;&lt;span style=&quot;color: rgb(255, 0, 0); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;init-connect='SET NAMES utf8'&lt;/span&gt;&lt;br style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;&lt;span style=&quot;color: rgb(255, 0, 0); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;character-set-server=utf8&lt;/span&gt;&lt;br style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;&lt;br style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;&lt;span style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;방화벽 설정&lt;/span&gt;&lt;br style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;&lt;span style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;제어판 &amp;gt; 방화벽 &amp;gt;&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;&lt;span style=&quot;color: rgb(255, 0, 0); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;3306 인바운드 열기&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(255, 0, 0); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(255, 0, 0); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;한글 설정 참고&lt;/span&gt;&lt;br style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;&lt;span style=&quot;color: rgb(56, 56, 56); font-family: gotham, helvetica, arial, sans-serif; font-size: 14px;&quot;&gt;https://blog.naver.com/codingspecialist/221329460456&lt;/span&gt;&lt;/p&gt;</description>
      <category>IT/Mysql</category>
      <author>노마드오브</author>
      <guid isPermaLink="true">https://nomadof.tistory.com/246</guid>
      <comments>https://nomadof.tistory.com/246#entry246comment</comments>
      <pubDate>Mon, 26 Nov 2018 23:31:31 +0900</pubDate>
    </item>
    <item>
      <title>java - JFrame 메모장 프로그램</title>
      <link>https://nomadof.tistory.com/242</link>
      <description>&lt;p&gt;package com.bank;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;import java.awt.event.ActionEvent;&lt;/p&gt;&lt;p&gt;import java.awt.event.ActionListener;&lt;/p&gt;&lt;p&gt;import java.io.File;&lt;/p&gt;&lt;p&gt;import java.io.FileNotFoundException;&lt;/p&gt;&lt;p&gt;import java.io.FileReader;&lt;/p&gt;&lt;p&gt;import java.io.FileWriter;&lt;/p&gt;&lt;p&gt;import java.io.IOException;&lt;/p&gt;&lt;p&gt;import java.io.PrintStream;&lt;/p&gt;&lt;p&gt;import java.io.StringWriter;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;import javax.swing.JFileChooser;&lt;/p&gt;&lt;p&gt;import javax.swing.JFrame;&lt;/p&gt;&lt;p&gt;import javax.swing.JMenu;&lt;/p&gt;&lt;p&gt;import javax.swing.JMenuBar;&lt;/p&gt;&lt;p&gt;import javax.swing.JMenuItem;&lt;/p&gt;&lt;p&gt;import javax.swing.JScrollPane;&lt;/p&gt;&lt;p&gt;import javax.swing.JTextArea;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;//JFrame 기본 레이아웃은 BorderLayout&lt;/p&gt;&lt;p&gt;public class Memo extends JFrame {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;JTextArea ta;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;String fileName;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;public Memo(String title) {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;setTitle(title);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;JMenu mfile = new JMenu(&quot;파일&quot;);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;JMenuItem mOpen = new JMenuItem(&quot;열기&quot;);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;JMenuItem mNew = new JMenuItem(&quot;새로만들기&quot;);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;JMenuItem mSave = new JMenuItem(&quot;저장&quot;);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;JMenuItem mSaveAs = new JMenuItem(&quot;다른이름으로 저장&quot;);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;JMenuItem mExit = new JMenuItem(&quot;끝내기&quot;);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;mfile.add(mOpen);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;mfile.add(mNew);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;mfile.add(mSave);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;mfile.add(mSaveAs);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;mfile.addSeparator();&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;mfile.add(mExit);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;JMenuBar mb = new JMenuBar();&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;mb.add(mfile);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;setJMenuBar(mb); //메뉴부착&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ta = new JTextArea();&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //JScrollPane jsp = new JScrollPane(ta);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JScrollPane jsp = new JScrollPane();&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; jsp.setViewportView(ta);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; add(jsp);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 새로만들기&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mNew.addActionListener(new ActionListener() {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;@Override&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;public void actionPerformed(ActionEvent e) {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;setTitle(&quot;제목없음&quot;);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;ta.setText(&quot;&quot;);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;}&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;});&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 열기&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mOpen.addActionListener(new ActionListener() {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;@Override&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;public void actionPerformed(ActionEvent e) {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;JFileChooser fc = new JFileChooser();&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;fc.showOpenDialog(Memo.this);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;//파일을 읽어서 ta에 출력&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;File f = fc.getSelectedFile();&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;fileName = f.getPath();&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;setTitle(f.getName());&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;//System.out.println(&quot;getPath : &quot; + fileName);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;fileRead(fileName); //실제로 파일을 읽어오는 메소드&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;}&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;});&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 저장&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mSave.addActionListener(new ActionListener() {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;@Override&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;public void actionPerformed(ActionEvent e) {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;if (getTitle().equals(&quot;제목없음&quot;)) {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;JFileChooser fc = new JFileChooser();&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;int a = fc.showSaveDialog(Memo.this);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;if(a==JFileChooser.CANCEL_OPTION) {return;}&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;File f = fc.getSelectedFile();&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;fileName = f.getPath();&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;setTitle(f.getName());&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;} else {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;fileSave(fileName);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;}&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;}&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;});&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 다른 이름으로 저장&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mSaveAs.addActionListener(new ActionListener() {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;@Override&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;public void actionPerformed(ActionEvent e) {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;JFileChooser fc = new JFileChooser();&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;int a = fc.showSaveDialog(Memo.this);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;//if(a==1) {return;}&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;if (a==JFileChooser.CANCEL_OPTION) {return;}&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;File f = fc.getSelectedFile();&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;fileName = f.getPath();&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;System.out.println(&quot;저장파일 : &quot; + fileName);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;//ta에 있는 내용 파일로 출력&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;fileSave(fileName);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;setTitle(f.getName());&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;}&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;});&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 끝내기&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mExit.addActionListener(new ActionListener() {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;@Override&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;public void actionPerformed(ActionEvent e) {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;System.exit(0);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;}&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;});&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; setSize(500, 400);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; setVisible(true);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;}&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;//파일읽기&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;private void fileRead(String fileName) {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;try {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;FileReader fr = new FileReader(fileName);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;StringWriter sw = new StringWriter();&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;while(true) {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;int ch = fr.read();&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;if (ch==-1) break;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;sw.write(ch);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;}&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;sw.close();&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;ta.setText(sw.toString());&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;} catch (FileNotFoundException e) {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;e.printStackTrace();&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;} catch (IOException e) {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;e.printStackTrace();&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;}&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;}&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;private void fileSave (String fileName) {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;try {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;PrintStream ps = new PrintStream(fileName);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;ps.println(ta.getText());&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;ps.close();&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;} catch (IOException e) {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;e.printStackTrace();&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;}&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;}&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;public static void main(String[] args) {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;new Memo(&quot;제목없음&quot;);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;}&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>IT/Java</category>
      <author>노마드오브</author>
      <guid isPermaLink="true">https://nomadof.tistory.com/242</guid>
      <comments>https://nomadof.tistory.com/242#entry242comment</comments>
      <pubDate>Sun, 25 Nov 2018 21:43:00 +0900</pubDate>
    </item>
    <item>
      <title>java - JFrame 예제 (list에 입력, 출력, 파일출력, 이벤트 처리)</title>
      <link>https://nomadof.tistory.com/241</link>
      <description>&lt;p&gt;*JFrame 예제 - 프로젝트 JBank&amp;nbsp;&lt;/p&gt;&lt;p&gt;-- bank 잔고, 입금, 출금, list 이벤트 처리&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;파일 출력 한글깨짐 처리&lt;/p&gt;&lt;p&gt;property &amp;gt; Run/Debug Settings&lt;/p&gt;&lt;p&gt;-Dfile.encoding=MS949&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;package com.bank;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;import java.awt.FlowLayout;&lt;/p&gt;&lt;p&gt;import java.awt.GridLayout;&lt;/p&gt;&lt;p&gt;import java.awt.List;&lt;/p&gt;&lt;p&gt;import java.awt.event.ActionEvent;&lt;/p&gt;&lt;p&gt;import java.awt.event.ActionListener;&lt;/p&gt;&lt;p&gt;import java.awt.event.ItemEvent;&lt;/p&gt;&lt;p&gt;import java.awt.event.ItemListener;&lt;/p&gt;&lt;p&gt;import java.io.File;&lt;/p&gt;&lt;p&gt;import java.io.FileNotFoundException;&lt;/p&gt;&lt;p&gt;import java.io.FileWriter;&lt;/p&gt;&lt;p&gt;import java.io.IOException;&lt;/p&gt;&lt;p&gt;import java.util.HashMap;&lt;/p&gt;&lt;p&gt;import java.util.Iterator;&lt;/p&gt;&lt;p&gt;import java.util.Scanner;&lt;/p&gt;&lt;p&gt;import java.util.Set;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;import javax.swing.JButton;&lt;/p&gt;&lt;p&gt;import javax.swing.JFrame;&lt;/p&gt;&lt;p&gt;import javax.swing.JLabel;&lt;/p&gt;&lt;p&gt;import javax.swing.JPanel;&lt;/p&gt;&lt;p&gt;import javax.swing.JTextField;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;public class JBank extends JFrame {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;HashMap&amp;lt;String, Integer&amp;gt; hm = new HashMap&amp;lt;&amp;gt;();&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;List list;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;public JBank() {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;setTitle(&quot;Bank&quot;);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; setLayout(new GridLayout(1,2));&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JTextField tfName = new JTextField(20);//이름&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JTextField tfBalance = new JTextField(15);//잔액&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JTextField tfMoney = new JTextField(15); //금액&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; tfBalance.setEditable(false);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JButton b1 = new JButton(&quot;계좌생성&quot;);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JButton b2 = new JButton(&quot;예금&quot;);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JButton b3 = new JButton(&quot;출금&quot;);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JButton b4 = new JButton(&quot;파일로 저장&quot;);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JPanel p1 = new JPanel();&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p1.add(new JLabel(&quot;이름&quot;));&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p1.add(tfName);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JPanel p2 = new JPanel();&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p2.add(new JLabel(&quot;잔액&quot;));&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p2.add(tfBalance);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JPanel p3 = new JPanel();&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p3.add(tfMoney);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p3.add(new JLabel(&quot;원&quot;));&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //JPanel 기본레이아웃은 FlowLayout&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JPanel p4 = new JPanel();&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p4.setLayout(new FlowLayout());&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p4.add(b2);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p4.add(b3);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p4.add(b4);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //왼쪽화면구성&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JPanel p = new JPanel();&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p.setLayout(new GridLayout(5, 1));&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p.add(p1);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p.add(b1);//계좌생성버튼&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p.add(p2);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p.add(p3);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p.add(p4);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //오른쪽 화면 구현&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; list = new List(); //java.awt.List 임포트&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //JFrame에 배치&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; add(p);&amp;nbsp; //왼쪽&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; add(list); //오른쪽&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //파일저장 이벤트&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; b4.addActionListener(new ActionListener() {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;@Override&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;public void actionPerformed(ActionEvent e) {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;File dir = new File(&quot;src\\com\\bank&quot;);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;File file = new File(dir, &quot;mybank.txt&quot;);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;try {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;FileWriter fw = new FileWriter(file);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;Set&amp;lt;String&amp;gt; set = hm.keySet();&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;Iterator&amp;lt;String&amp;gt; it = set.iterator();&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;while (it.hasNext()) {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;						&lt;/span&gt;String key = it.next(); // 이름 추출&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;						&lt;/span&gt;fw.write(key+&quot; &quot;); // 이름을 파일로 보냄&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;						&lt;/span&gt;fw.write(hm.get(key)+&quot;\r\n&quot;);&amp;nbsp; // 잔액을 파일로 보냄&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;}&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;//fw.flush();&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;fw.close();&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;} catch (IOException e1) {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;e1.printStackTrace();&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;}&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;}&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;});&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; setSize(600, 250); //크기지정&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; setVisible(true);//화면보이게 설정&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; load();&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //계좌생성 버튼 이벤트&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; b1.addActionListener(new ActionListener() {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;@Override&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;public void actionPerformed(ActionEvent e) {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;//if (tfName.getText().length() == 0) { return; }&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;if (tfName.getText().isEmpty()) { return; }&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;if (hm.containsKey(tfName.getText())) {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;new MessageBox(&quot;오류!&quot;, &quot;이미 등록된 회원입니다&quot;);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;return;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;}&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;list.add(tfName.getText());&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;hm.put(tfName.getText(), 0);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;}&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;});&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 리스트 이벤트&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; list.addItemListener(new ItemListener() {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;@Override&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;public void itemStateChanged(ItemEvent e) {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;String name = list.getSelectedItem();&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;tfName.setText(name);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;//잔액표시&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;tfBalance.setText(hm.get(name).toString());&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;}&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;});&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 예금이벤트&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; b2.addActionListener(new ActionListener() {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;@Override&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;public void actionPerformed(ActionEvent e) {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/*1.리스트에 선택된 계좌 잔액에&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;* 2. 얼마(tfMoney)를 더해&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;* 3. 잔액을 수정&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*/&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;try {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;String name = list.getSelectedItem();&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;//잔액표시&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;int money = hm.get(name); // 잔액&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;//잔액수정&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;int value = Integer.parseInt(tfMoney.getText()) + money;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;hm.put(name, value);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;tfBalance.setText(value+&quot;&quot;);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;tfMoney.setText(&quot;&quot;);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;} catch (NullPointerException e1) {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;new MessageBox(&quot;오류!!&quot;, &quot;계좌를 선택하세요&quot;);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;} catch (NumberFormatException e2) {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;new MessageBox(&quot;입력오류!!&quot;, &quot;숫자를 입력하세요&quot;);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;}&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;}&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;});&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 출금이벤트&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; b3.addActionListener(new ActionListener() {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;@Override&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;public void actionPerformed(ActionEvent e) {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;try {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;String name = list.getSelectedItem();&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;int money = hm.get(name);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;int value = money - Integer.parseInt(tfMoney.getText());&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;if(value&amp;lt;0) {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;						&lt;/span&gt;//System.out.println(&quot;잔액부족&quot;);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;						&lt;/span&gt;new MessageBox(&quot;잔액부족!!!&quot;, name + &quot;님 잔액이 부족합니다&quot;);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;						&lt;/span&gt;return;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;}&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;hm.put(name, value);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;tfBalance.setText(value+&quot;&quot;);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;tfMoney.setText(&quot;&quot;);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;} catch (NullPointerException e1) {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;new MessageBox(&quot;오류!!&quot;, &quot;계좌를 선택하세요&quot;);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;} catch (NumberFormatException e2) {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;					&lt;/span&gt;new MessageBox(&quot;입력오류!!&quot;, &quot;숫자를 입력하세요&quot;);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;}&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;}&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;});&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;}&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;private void load() {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;hm.clear();&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;File dir = new File(&quot;src\\com\\bank&quot;);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;File file = new File(dir, &quot;mybank.txt&quot;);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;try {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;if (!file.exists()) {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;file.createNewFile();&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;}&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;Scanner sc = new Scanner(file);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;while(sc.hasNext()) {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;String key = sc.next();&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;int value = sc.nextInt();&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;hm.put(key, value);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;list.add(key);&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;}&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;} catch (FileNotFoundException e) {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;e.printStackTrace();&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;} catch (IOException e) {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;e.printStackTrace();&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;}&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;}&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;public static void main(String[] args) {&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;new JBank();&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;}&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;package com.bank;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;import java.awt.FlowLayout;&lt;/div&gt;&lt;div&gt;import java.awt.event.ActionEvent;&lt;/div&gt;&lt;div&gt;import java.awt.event.ActionListener;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;import javax.swing.JButton;&lt;/div&gt;&lt;div&gt;import javax.swing.JFrame;&lt;/div&gt;&lt;div&gt;import javax.swing.JLabel;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;public class MessageBox extends JFrame {&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;public MessageBox(String title, String msg) {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;setTitle(title);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;setLayout(new FlowLayout());&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;JLabel lb = new JLabel(msg);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;JButton closeBtn = new JButton(&quot;닫기&quot;);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;add(lb);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;add(closeBtn);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;closeBtn.addActionListener(new ActionListener() {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;@Override&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;public void actionPerformed(ActionEvent e) {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;//setVisible(false);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;dispose();&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;});&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;setSize(300, 100);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;setVisible(true);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;mybank.txt&lt;/div&gt;&lt;div&gt;




&lt;style type=&quot;text/css&quot;&gt;
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco}
&lt;/style&gt;


&lt;p class=&quot;p1&quot;&gt;a 1000&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;b 2000&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;c 3000&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>IT/Java</category>
      <author>노마드오브</author>
      <guid isPermaLink="true">https://nomadof.tistory.com/241</guid>
      <comments>https://nomadof.tistory.com/241#entry241comment</comments>
      <pubDate>Sun, 25 Nov 2018 19:23:00 +0900</pubDate>
    </item>
    <item>
      <title>spring - 스프링 셋팅</title>
      <link>https://nomadof.tistory.com/240</link>
      <description>&lt;p&gt;spring&lt;/p&gt;&lt;p&gt;프로젝트 생성, spring mvc project&lt;/p&gt;&lt;p&gt;톰캣 8.0 설치&lt;/p&gt;&lt;p&gt;run as &amp;gt; 실행시 톰캣 8.0 연결&lt;/p&gt;&lt;p&gt;한글셋팅&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;window &amp;gt; preference enc 검색 utf-8로 변경 (workspace, css, html, jsp, xml)&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;property &amp;gt; Project Facets java 버전 변경&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;pom.xml수정 &amp;lt;java-version&amp;gt;1.8&amp;lt;/java-version&amp;gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;IOC - 제어의 역행 [bean - 객체, 스프링이 생성]&amp;nbsp;&lt;/p&gt;&lt;p&gt;의존성 주입 - [레퍼런스도 스프링이 관리]&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;디스패처 주소 캐치&lt;/p&gt;&lt;p&gt;컨트롤러 호출 - @Controller 어노테이션으로 안다. 모든 컨트롤러를 뒤져서 함수 호출&lt;/p&gt;&lt;p&gt;컨트롤러 리턴&lt;/p&gt;&lt;p&gt;ViewResolver가 리턴값 캐치&lt;/p&gt;&lt;p&gt;jsp연결&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;컨텍스트패스 : 보안강화, 프로젝트 이름과 웹 주소와 다르게 설정&lt;/p&gt;</description>
      <category>IT/spring</category>
      <author>노마드오브</author>
      <guid isPermaLink="true">https://nomadof.tistory.com/240</guid>
      <comments>https://nomadof.tistory.com/240#entry240comment</comments>
      <pubDate>Sat, 24 Nov 2018 22:30:00 +0900</pubDate>
    </item>
    <item>
      <title>maven - 라이브러리 만들기</title>
      <link>https://nomadof.tistory.com/238</link>
      <description>&lt;p&gt;메이븐&amp;nbsp;&lt;/p&gt;&lt;p&gt;로컬저장소, 중앙저장소, 원격저장소&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;mvn-lib 프로젝트&lt;/p&gt;&lt;p&gt;mvn clean ==&amp;gt; target 지우기&lt;/p&gt;&lt;p&gt;mvn package ==&amp;gt; target 안에 jar 만들어짐&lt;/p&gt;&lt;p&gt;mvn install ==&amp;gt; 로컬 저장소에 저장&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;mvn-app2 pom.xml에 dependency 추가&lt;/p&gt;&lt;p&gt;.m2에 가보면 mvn-lib 가 추가되어있음&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;




&lt;style type=&quot;text/css&quot;&gt;
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px}
p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #931a68}
p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #3933ff}
p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #777777}
span.s1 {color: #931a68}
span.s2 {color: #000000}
span.s3 {color: #0326cc}
span.s4 {color: #3933ff}
span.s5 {color: #7e504f}
span.Apple-tab-span {white-space:pre}
&lt;/style&gt;


&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;s1&quot; style=&quot;color: rgb(0, 0, 0);&quot;&gt;mvn-lib 프로젝트&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;s1&quot;&gt;package&lt;/span&gt; com.example.lib;&lt;/p&gt;
&lt;p class=&quot;p2&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p class=&quot;p3&quot;&gt;public&lt;span class=&quot;s2&quot;&gt; &lt;/span&gt;class&lt;span class=&quot;s2&quot;&gt; Lib {&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;private&lt;/span&gt; String &lt;span class=&quot;s3&quot;&gt;msg&lt;/span&gt; = &lt;span class=&quot;s4&quot;&gt;&quot;&quot;&lt;/span&gt;;&lt;/p&gt;
&lt;p class=&quot;p2&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;public&lt;/span&gt; Lib(String &lt;span class=&quot;s5&quot;&gt;msg&lt;/span&gt;) {&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;this&lt;/span&gt;.&lt;span class=&quot;s3&quot;&gt;msg&lt;/span&gt; = &lt;span class=&quot;s5&quot;&gt;msg&lt;/span&gt;;&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;}&lt;/p&gt;
&lt;p class=&quot;p2&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;public&lt;/span&gt; String getMessage() {&lt;/p&gt;
&lt;p class=&quot;p4&quot;&gt;&lt;span class=&quot;s2&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; &lt;/span&gt;&quot;\n=================\n&quot;&lt;span class=&quot;s2&quot;&gt; + &lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;msg&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; +&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;p4&quot;&gt;&lt;span class=&quot;s2&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/span&gt;&quot;\n=================\n&quot;&lt;span class=&quot;s2&quot;&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;}&lt;/p&gt;
&lt;p class=&quot;p2&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;s2&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/span&gt;@Override&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;public&lt;/span&gt; String toString() {&lt;/p&gt;
&lt;p class=&quot;p3&quot;&gt;&lt;span class=&quot;s2&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/span&gt;return&lt;span class=&quot;s2&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;&quot;MSG : &quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; + &lt;/span&gt;this&lt;span class=&quot;s2&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;msg&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;}&lt;/p&gt;
&lt;p class=&quot;p2&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;}&lt;/p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;mvn-app2 프로젝트&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;s1&quot;&gt;package&lt;/span&gt; com.example;&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;s1&quot; style=&quot;color: rgb(255, 0, 0);&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt; com.example.lib.Lib;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p3&quot;&gt;public&lt;span class=&quot;s2&quot;&gt; &lt;/span&gt;class&lt;span class=&quot;s2&quot;&gt; App&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;{&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;void&lt;/span&gt; main( String[] &lt;span class=&quot;s3&quot;&gt;args&lt;/span&gt; )&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;{&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;Lib &lt;/span&gt;&lt;span class=&quot;s3&quot; style=&quot;color: rgb(255, 0, 0);&quot;&gt;lib&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt; = &lt;/span&gt;&lt;span class=&quot;s1&quot; style=&quot;color: rgb(255, 0, 0);&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt; Lib(&lt;/span&gt;&lt;span class=&quot;s4&quot; style=&quot;color: rgb(255, 0, 0);&quot;&gt;&quot;Hello~~~~!&quot;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;);&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;System.&lt;span class=&quot;s5&quot;&gt;out&lt;/span&gt;.println(&lt;span class=&quot;s3&quot;&gt;lib&lt;/span&gt;.getMessage());&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;}&lt;/p&gt;&lt;p&gt;




&lt;style type=&quot;text/css&quot;&gt;
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px}
p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #931a68}
span.s1 {color: #931a68}
span.s2 {color: #000000}
span.s3 {color: #7e504f}
span.s4 {color: #3933ff}
span.s5 {color: #0326cc}
&lt;/style&gt;














&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;}&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;?&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;xml&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt; &lt;/span&gt;version&lt;span class=&quot;s3&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;&quot;1.0&quot;&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt; &lt;/span&gt;encoding&lt;span class=&quot;s3&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;&quot;UTF-8&quot;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p3&quot;&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;project&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;xmlns&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;=&lt;/span&gt;&quot;http://maven.apache.org/POM/4.0.0&quot;&lt;span class=&quot;s3&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;xmlns:xsi&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;=&lt;/span&gt;&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&lt;/p&gt;&lt;p class=&quot;p3&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;xsi:schemaLocation&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;=&lt;/span&gt;&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p4&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;modelVersion&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;4.0.0&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;modelVersion&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p4&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;groupId&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;com.example&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;groupId&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p4&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;artifactId&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;s6&quot;&gt;mvn&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;-app2&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;artifactId&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;1.0-SNAPSHOT&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;s7&quot;&gt;mvn&lt;/span&gt;-app2&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p6&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&amp;lt;!-- FIXME change it to the project's &lt;span class=&quot;s7&quot;&gt;website&lt;/span&gt; --&amp;gt;&lt;/p&gt;&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;http://www.example.com&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p4&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;properties&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p4&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;project.build.sourceEncoding&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;UTF-8&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;project.build.sourceEncoding&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p4&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;maven.compiler.source&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;1.7&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;maven.compiler.source&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p4&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;maven.compiler.target&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;1.7&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;maven.compiler.target&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p4&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;properties&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p4&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;repositories&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p4&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;repository&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;spring.org&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;spring foundation repository&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;http://repo.spring.io/release/&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p4&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;repository&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p4&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;repositories&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p4&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;dependencies&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p4&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;color: rgb(255, 0, 0);&quot;&gt;	&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot; style=&quot;color: rgb(255, 0, 0);&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;dependency&lt;/span&gt;&lt;span class=&quot;s1&quot; style=&quot;color: rgb(255, 0, 0);&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;color: rgb(255, 0, 0);&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;color: rgb(255, 0, 0);&quot;&gt;	&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot; style=&quot;color: rgb(255, 0, 0);&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;s2&quot; style=&quot;color: rgb(255, 0, 0);&quot;&gt;groupId&lt;/span&gt;&lt;span class=&quot;s1&quot; style=&quot;color: rgb(255, 0, 0);&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;com.example&lt;/span&gt;&lt;span class=&quot;s1&quot; style=&quot;color: rgb(255, 0, 0);&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;s2&quot; style=&quot;color: rgb(255, 0, 0);&quot;&gt;groupId&lt;/span&gt;&lt;span class=&quot;s1&quot; style=&quot;color: rgb(255, 0, 0);&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p4&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;color: rgb(255, 0, 0);&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;color: rgb(255, 0, 0);&quot;&gt;	&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot; style=&quot;color: rgb(255, 0, 0);&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;artifactId&lt;/span&gt;&lt;span class=&quot;s1&quot; style=&quot;color: rgb(255, 0, 0);&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;s6&quot; style=&quot;color: rgb(255, 0, 0);&quot;&gt;mvn&lt;/span&gt;&lt;span class=&quot;s3&quot; style=&quot;color: rgb(255, 0, 0);&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;s6&quot; style=&quot;color: rgb(255, 0, 0);&quot;&gt;lib&lt;/span&gt;&lt;span class=&quot;s1&quot; style=&quot;color: rgb(255, 0, 0);&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;artifactId&lt;/span&gt;&lt;span class=&quot;s1&quot; style=&quot;color: rgb(255, 0, 0);&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;color: rgb(255, 0, 0);&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;color: rgb(255, 0, 0);&quot;&gt;	&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot; style=&quot;color: rgb(255, 0, 0);&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;s2&quot; style=&quot;color: rgb(255, 0, 0);&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;s1&quot; style=&quot;color: rgb(255, 0, 0);&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;1.0-SNAPSHOT&lt;/span&gt;&lt;span class=&quot;s1&quot; style=&quot;color: rgb(255, 0, 0);&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;s2&quot; style=&quot;color: rgb(255, 0, 0);&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;s1&quot; style=&quot;color: rgb(255, 0, 0);&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p4&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;color: rgb(255, 0, 0);&quot;&gt;	&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot; style=&quot;color: rgb(255, 0, 0);&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;dependency&lt;/span&gt;&lt;span class=&quot;s1&quot; style=&quot;color: rgb(255, 0, 0);&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p4&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;dependency&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;groupId&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;org.aspectj&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;groupId&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p4&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;artifactId&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;s6&quot;&gt;aspectjrt&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;artifactId&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;1.6.10.RELEASE&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p4&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;dependency&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p4&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;dependency&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p4&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;groupId&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;s6&quot;&gt;junit&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;groupId&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p4&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;artifactId&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;s6&quot;&gt;junit&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;artifactId&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p4&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;version&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;4.11&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;version&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;scope&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;test&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;scope&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p4&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;dependency&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p4&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;dependencies&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p4&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;build&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p6&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;pluginManagement&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&amp;lt;!-- lock down &lt;span class=&quot;s7&quot;&gt;plugins&lt;/span&gt; versions to avoid using &lt;span class=&quot;s7&quot;&gt;Maven&lt;/span&gt; defaults (may be moved to parent &lt;span class=&quot;s7&quot;&gt;pom&lt;/span&gt;) --&amp;gt;&lt;/p&gt;&lt;p class=&quot;p4&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;plugins&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;plugin&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;artifactId&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;s7&quot;&gt;maven&lt;/span&gt;-clean-&lt;span class=&quot;s7&quot;&gt;plugin&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;artifactId&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;3.0.0&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;plugin&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p6&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/span&gt;&amp;lt;!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging --&amp;gt;&lt;/p&gt;&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;plugin&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;artifactId&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;s7&quot;&gt;maven&lt;/span&gt;-resources-&lt;span class=&quot;s7&quot;&gt;plugin&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;artifactId&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;3.0.2&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;plugin&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;plugin&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;artifactId&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;s7&quot;&gt;maven&lt;/span&gt;-compiler-&lt;span class=&quot;s7&quot;&gt;plugin&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;artifactId&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;3.7.0&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;plugin&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;plugin&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;artifactId&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;s7&quot;&gt;maven&lt;/span&gt;-&lt;span class=&quot;s7&quot;&gt;surefire&lt;/span&gt;-&lt;span class=&quot;s7&quot;&gt;plugin&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;artifactId&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;2.20.1&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;plugin&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;plugin&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;artifactId&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;s7&quot;&gt;maven&lt;/span&gt;-jar-&lt;span class=&quot;s7&quot;&gt;plugin&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;artifactId&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;3.0.2&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;plugin&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;plugin&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;artifactId&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;s7&quot;&gt;maven&lt;/span&gt;-install-&lt;span class=&quot;s7&quot;&gt;plugin&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;artifactId&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;2.5.2&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;plugin&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;plugin&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;artifactId&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;s7&quot;&gt;maven&lt;/span&gt;-deploy-&lt;span class=&quot;s7&quot;&gt;plugin&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;artifactId&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;2.8.2&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p5&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;plugin&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p4&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;plugins&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p4&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;pluginManagement&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p4&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;build&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;




&lt;style type=&quot;text/css&quot;&gt;
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #932192}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px}
p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #3933ff}
p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #4e9192}
p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco}
p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #4f76cb}
span.s1 {color: #009193}
span.s2 {color: #4e9192}
span.s3 {color: #000000}
span.s4 {color: #3933ff}
span.s5 {color: #932192}
span.s6 {text-decoration: underline ; color: #000000}
span.s7 {text-decoration: underline}
span.Apple-tab-span {white-space:pre}
&lt;/style&gt;




















































































&lt;/p&gt;&lt;p class=&quot;p4&quot;&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;/&lt;/span&gt;project&lt;span class=&quot;s1&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>IT/maven</category>
      <author>노마드오브</author>
      <guid isPermaLink="true">https://nomadof.tistory.com/238</guid>
      <comments>https://nomadof.tistory.com/238#entry238comment</comments>
      <pubDate>Sat, 24 Nov 2018 21:57:00 +0900</pubDate>
    </item>
    <item>
      <title>Java - 크롤링, crawling</title>
      <link>https://nomadof.tistory.com/237</link>
      <description>&lt;p&gt;&lt;span class=&quot;s1&quot; style=&quot;font-family: Monaco; font-size: 11px;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;font-family: Monaco; font-size: 11px;&quot;&gt; java.io.BufferedReader;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;s1&quot;&gt;import&lt;/span&gt; java.io.InputStreamReader;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;s1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;java.net.MalformedURLException&lt;/span&gt;;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;s1&quot;&gt;import&lt;/span&gt; java.net.URL;&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;s1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;javax.net.ssl.HttpsURLConnection&lt;/span&gt;;&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;s1&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;class&lt;/span&gt; CrawApp {&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;void&lt;/span&gt; crawling() {&lt;/p&gt;&lt;p class=&quot;p3&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;String &lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt; = &lt;/span&gt;&quot;https://웹페이지주소&quot;&lt;span class=&quot;s3&quot;&gt;;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;try&lt;/span&gt; {&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;URL &lt;span class=&quot;s4&quot;&gt;obj&lt;/span&gt; = &lt;span class=&quot;s1&quot;&gt;new&lt;/span&gt; URL(&lt;span class=&quot;s4&quot;&gt;url&lt;/span&gt;);&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;HttpsURLConnection&lt;/span&gt; &lt;span class=&quot;s4&quot;&gt;con&lt;/span&gt; = (&lt;span class=&quot;s2&quot;&gt;HttpsURLConnection&lt;/span&gt;) &lt;span class=&quot;s4&quot;&gt;obj&lt;/span&gt;.openConnection();&lt;/p&gt;&lt;p class=&quot;p4&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/span&gt;//연결이 완료되었음.&lt;/p&gt;&lt;p class=&quot;p4&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/span&gt;//1byte받음&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;BufferedReader &lt;span class=&quot;s4&quot;&gt;in&lt;/span&gt; = &lt;span class=&quot;s1&quot;&gt;new&lt;/span&gt; BufferedReader(&lt;span class=&quot;s1&quot;&gt;new&lt;/span&gt; InputStreamReader(&lt;span class=&quot;s4&quot;&gt;con&lt;/span&gt;.getInputStream(), &lt;span class=&quot;s5&quot;&gt;&quot;EUC-KR&quot;&lt;/span&gt;)) ;&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;String &lt;span class=&quot;s4&quot;&gt;input&lt;/span&gt;;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;StringBuilder &lt;span class=&quot;s4&quot;&gt;sb&lt;/span&gt; = &lt;span class=&quot;s1&quot;&gt;new&lt;/span&gt; StringBuilder();&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;while&lt;/span&gt; ((&lt;span class=&quot;s4&quot;&gt;input&lt;/span&gt; = &lt;span class=&quot;s4&quot;&gt;in&lt;/span&gt;.readLine()) != &lt;span class=&quot;s1&quot;&gt;null&lt;/span&gt;) {&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;sb&lt;/span&gt;.append(&lt;span class=&quot;s4&quot;&gt;input&lt;/span&gt;);&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;}&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;in&lt;/span&gt;.close();&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;System.&lt;span class=&quot;s6&quot;&gt;out&lt;/span&gt;.println(&lt;span class=&quot;s4&quot;&gt;sb&lt;/span&gt;.toString());&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;} &lt;span class=&quot;s1&quot;&gt;catch&lt;/span&gt; (Exception &lt;span class=&quot;s4&quot;&gt;e&lt;/span&gt;) {&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;e&lt;/span&gt;.printStackTrace();&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;}&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;}&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;void&lt;/span&gt; main(String[] &lt;span class=&quot;s4&quot;&gt;args&lt;/span&gt;) {&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;crawling();&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;}&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/p&gt;&lt;p&gt;




&lt;style type=&quot;text/css&quot;&gt;
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px}
p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #3933ff}
p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #4e9072}
span.s1 {color: #931a68}
span.s2 {text-decoration: underline}
span.s3 {color: #000000}
span.s4 {color: #7e504f}
span.s5 {color: #3933ff}
span.s6 {color: #0326cc}
span.Apple-tab-span {white-space:pre}
&lt;/style&gt;










































&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;}&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;크롤링 - 크롬에서 아래 명령어로 파싱 가능&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;document.querySelector('#articleTitle');&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&amp;lt;h3 id=?&quot;articleTitle&quot; class=?&quot;tts_head&quot;&amp;gt;?굴착기 이용 GP철거 오늘 시작…김용우 육군총장 현장방문?&amp;lt;/h3&amp;gt;?&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;var article = document.querySelector('#articleTitle');&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;article.textContent&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&quot;굴착기 이용 GP철거 오늘 시작…김용우 육군총장 현장방문&quot;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;var txt = document.querySelectorAll('.lo_txt');&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;txt[0].textContent&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&quot;273&quot;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>IT/Java</category>
      <author>노마드오브</author>
      <guid isPermaLink="true">https://nomadof.tistory.com/237</guid>
      <comments>https://nomadof.tistory.com/237#entry237comment</comments>
      <pubDate>Sat, 24 Nov 2018 21:27:00 +0900</pubDate>
    </item>
    <item>
      <title>Java - 싱글톤</title>
      <link>https://nomadof.tistory.com/236</link>
      <description>&lt;p&gt;




&lt;style type=&quot;text/css&quot;&gt;
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px}
p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #931a68}
span.s1 {color: #931a68}
span.s2 {color: #0326cc}
span.s3 {color: #000000}
span.s4 {color: #7e504f}
span.s5 {text-decoration: underline ; color: #7e504f}
span.Apple-tab-span {white-space:pre}
&lt;/style&gt;


&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;s1&quot;&gt;class&lt;/span&gt; MyDog {&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;static&lt;/span&gt; MyDog &lt;span class=&quot;s2&quot;&gt;m&lt;/span&gt; = &lt;span class=&quot;s1&quot;&gt;new&lt;/span&gt; MyDog();&lt;/p&gt;
&lt;p class=&quot;p2&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;private&lt;/span&gt; MyDog() {&lt;/p&gt;
&lt;p class=&quot;p2&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;}&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;}&lt;/p&gt;
&lt;p class=&quot;p2&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p class=&quot;p2&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p class=&quot;p3&quot;&gt;public&lt;span class=&quot;s3&quot;&gt; &lt;/span&gt;class&lt;span class=&quot;s3&quot;&gt; Animal {&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;p2&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;void&lt;/span&gt; main(String[] &lt;span class=&quot;s4&quot;&gt;args&lt;/span&gt;) {&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;MyDog &lt;span class=&quot;s5&quot;&gt;dog&lt;/span&gt; = MyDog.&lt;span class=&quot;s2&quot;&gt;m&lt;/span&gt;;&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;}&lt;/p&gt;
&lt;p class=&quot;p2&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;}&lt;/p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>IT/Java</category>
      <author>노마드오브</author>
      <guid isPermaLink="true">https://nomadof.tistory.com/236</guid>
      <comments>https://nomadof.tistory.com/236#entry236comment</comments>
      <pubDate>Sat, 24 Nov 2018 20:36:00 +0900</pubDate>
    </item>
    <item>
      <title>Java - 오버로딩, 오버라이딩, 인터페이스</title>
      <link>https://nomadof.tistory.com/235</link>
      <description>&lt;p&gt;




&lt;style type=&quot;text/css&quot;&gt;
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco}
p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #777777}
p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #931a68}
span.s1 {color: #931a68}
span.s2 {color: #0326cc}
span.s3 {color: #3933ff}
span.s4 {color: #000000}
span.Apple-tab-span {white-space:pre}
&lt;/style&gt;


&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;s1&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;class&lt;/span&gt; Dragoon &lt;span class=&quot;s1&quot;&gt;implements&lt;/span&gt; StarcraftUnit {&lt;/p&gt;
&lt;p class=&quot;p2&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;String &lt;span class=&quot;s2&quot;&gt;name&lt;/span&gt; = &lt;span class=&quot;s3&quot;&gt;&quot;드라군&quot;&lt;/span&gt;;&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;p3&quot;&gt;&lt;span class=&quot;s4&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/span&gt;@Override&lt;/p&gt;
&lt;p class=&quot;p2&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;public&lt;/span&gt; String getName() {&lt;/p&gt;
&lt;p class=&quot;p4&quot;&gt;&lt;span class=&quot;s4&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/span&gt;return&lt;span class=&quot;s4&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;p2&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;}&lt;/p&gt;
&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;p2&quot;&gt;}&lt;/p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;span class=&quot;s1&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;class&lt;/span&gt; Hydra &lt;span class=&quot;s1&quot;&gt;implements&lt;/span&gt; StarcraftUnit {&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;String &lt;span class=&quot;s2&quot;&gt;name&lt;/span&gt; = &lt;span class=&quot;s3&quot;&gt;&quot;히드라&quot;&lt;/span&gt;;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p3&quot;&gt;&lt;span class=&quot;s4&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/span&gt;@Override&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;public&lt;/span&gt; String getName() {&lt;/p&gt;&lt;p class=&quot;p4&quot;&gt;&lt;span class=&quot;s4&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/span&gt;return&lt;span class=&quot;s4&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;}&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/p&gt;&lt;p&gt;




&lt;style type=&quot;text/css&quot;&gt;
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco}
p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #777777}
p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #931a68}
span.s1 {color: #931a68}
span.s2 {color: #0326cc}
span.s3 {color: #3933ff}
span.s4 {color: #000000}
span.Apple-tab-span {white-space:pre}
&lt;/style&gt;











&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;}&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;span class=&quot;s1&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;class&lt;/span&gt; Zealot &lt;span class=&quot;s1&quot;&gt;implements&lt;/span&gt; StarcraftUnit {&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;String &lt;span class=&quot;s2&quot;&gt;name&lt;/span&gt; = &lt;span class=&quot;s3&quot;&gt;&quot;질럿&quot;&lt;/span&gt;;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p3&quot;&gt;&lt;span class=&quot;s4&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/span&gt;@Override&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;public&lt;/span&gt; String getName() {&lt;/p&gt;&lt;p class=&quot;p4&quot;&gt;&lt;span class=&quot;s4&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/span&gt;return&lt;span class=&quot;s4&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;}&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;




&lt;style type=&quot;text/css&quot;&gt;
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco}
p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #777777}
p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #931a68}
span.s1 {color: #931a68}
span.s2 {color: #0326cc}
span.s3 {color: #3933ff}
span.s4 {color: #000000}
span.Apple-tab-span {white-space:pre}
&lt;/style&gt;











&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;}&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;span class=&quot;s1&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;class&lt;/span&gt; MainApp {&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p3&quot;&gt;&lt;span class=&quot;s2&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/span&gt;//z -&amp;gt; d 공격&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;void&lt;/span&gt; attack(StarcraftUnit &lt;span class=&quot;s3&quot;&gt;u1&lt;/span&gt;, StarcraftUnit &lt;span class=&quot;s3&quot;&gt;u2&lt;/span&gt;) {&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;System.&lt;span class=&quot;s4&quot;&gt;out&lt;/span&gt;.println(&lt;span class=&quot;s3&quot;&gt;u1&lt;/span&gt;.getName()+&lt;span class=&quot;s5&quot;&gt;&quot;이 &quot;&lt;/span&gt;+&lt;span class=&quot;s3&quot;&gt;u2&lt;/span&gt;.getName()+&lt;span class=&quot;s5&quot;&gt;&quot;을 공격하였습니다.&quot;&lt;/span&gt;);&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;}&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p3&quot;&gt;//&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;// 오버로딩의 한계 //d -&amp;gt; z 공격&lt;/p&gt;&lt;p class=&quot;p3&quot;&gt;//&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;static void attack(Dragoon u1, &lt;span class=&quot;s6&quot;&gt;Zealot&lt;/span&gt; u2) {&lt;/p&gt;&lt;p class=&quot;p3&quot;&gt;//&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;System.out.println(u1.name+&quot;이 &quot;+u2.name+&quot;을 공격하였습니다.&quot;);&lt;/p&gt;&lt;p class=&quot;p3&quot;&gt;//&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;}&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;void&lt;/span&gt; main(String[] &lt;span class=&quot;s3&quot;&gt;args&lt;/span&gt;) {&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;Zealot &lt;span class=&quot;s3&quot;&gt;z1&lt;/span&gt; = &lt;span class=&quot;s1&quot;&gt;new&lt;/span&gt; Zealot();&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;Dragoon &lt;span class=&quot;s3&quot;&gt;d1&lt;/span&gt; = &lt;span class=&quot;s1&quot;&gt;new&lt;/span&gt; Dragoon();&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;attack(&lt;span class=&quot;s3&quot;&gt;z1&lt;/span&gt;, &lt;span class=&quot;s3&quot;&gt;d1&lt;/span&gt;);&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;attack(&lt;span class=&quot;s3&quot;&gt;d1&lt;/span&gt;, &lt;span class=&quot;s3&quot;&gt;z1&lt;/span&gt;);&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;}&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;




&lt;style type=&quot;text/css&quot;&gt;
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco}
p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #4e9072}
span.s1 {color: #931a68}
span.s2 {color: #000000}
span.s3 {color: #7e504f}
span.s4 {color: #0326cc}
span.s5 {color: #3933ff}
span.s6 {text-decoration: underline}
span.Apple-tab-span {white-space:pre}
&lt;/style&gt;























&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;}&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;span class=&quot;s1&quot;&gt;interface&lt;/span&gt; StarcraftUnit {&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;public&lt;/span&gt; String getName();&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;




&lt;style type=&quot;text/css&quot;&gt;
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco}
span.s1 {color: #931a68}
span.Apple-tab-span {white-space:pre}
&lt;/style&gt;





&lt;/p&gt;&lt;p class=&quot;p2&quot;&gt;}&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>IT/Java</category>
      <author>노마드오브</author>
      <guid isPermaLink="true">https://nomadof.tistory.com/235</guid>
      <comments>https://nomadof.tistory.com/235#entry235comment</comments>
      <pubDate>Sat, 24 Nov 2018 19:34:00 +0900</pubDate>
    </item>
    <item>
      <title>응용SW기초기술활용(윈도우 명령 프롬프트(DOS)용 명령어, 리눅스(유닉스) 콘솔 명령어)</title>
      <link>https://nomadof.tistory.com/234</link>
      <description>&lt;p&gt;*윈도우 명령 프롬프트(DOS)용 명령어&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;dir /p&lt;/p&gt;&lt;p&gt;&amp;nbsp; 목록을 한 화면 단위로 표시함&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;dir /w&lt;/p&gt;&lt;p&gt;&amp;nbsp; 화면에 가장 많은 파일을 표현할수 있는 방식&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;dir /o-n&lt;/p&gt;&lt;p&gt;&amp;nbsp; 이름 역순으로 현재폴더 목록 표시&lt;/p&gt;&lt;p&gt;&amp;nbsp;/o 다음에 올수있는 옵션&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;n(name): 파일의 이름순&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;s(size): 파일의 크기(byte)순으로 정렬&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;e(extension): 확장자순으로 정렬&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;d(date): 날짜/시간 순으로 정렬&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;dir /s&amp;nbsp; : 하위 디렉토리의 정보까지 표시함&lt;/p&gt;&lt;p&gt;dir /h&amp;nbsp; : 숨겨진 파일 목록표시함&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;&lt;/p&gt;&lt;p&gt;md(=mkdir) : 폴더 생성&lt;/p&gt;&lt;p&gt;rd(=rmdir) : 폴더 삭제&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;파일복사&lt;/p&gt;&lt;p&gt;copy aa.txt D:\docs&lt;/p&gt;&lt;p&gt;copy aa.txt aa2.txt&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;지정된 디렉토리를 포함한 하위 디렉토리와 모든 파일들을 복사&lt;/p&gt;&lt;p&gt;xcopy c:\Temp d:\backup /h /e /y&lt;/p&gt;&lt;p&gt;&amp;nbsp; /h&amp;nbsp; 숨긴 파일 또는 폴더&lt;/p&gt;&lt;p&gt;&amp;nbsp; /e&amp;nbsp; 빈 폴더도 복사&lt;/p&gt;&lt;p&gt;&amp;nbsp; /y&amp;nbsp; 계속 진행 yes&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;파일삭제&lt;/p&gt;&lt;p&gt;del aa2.txt&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;파일이름 변경&lt;/p&gt;&lt;p&gt;ren aa.txt bb.txt&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;텍스트파일 내용 출력&lt;/p&gt;&lt;p&gt;type bb.txt&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;두개의 파일을 비교하여 차이를 나타내는 명령어&lt;/p&gt;&lt;p&gt;fc bb.txt bb2.txt&lt;/p&gt;&lt;p&gt;fc /B dog.jpg dog2.jpg&lt;/p&gt;&lt;p&gt;&amp;nbsp; /B는 바이너리 파일 비교시 사용하는 옵션&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;파일의 속성(attribute) 설정 명령어&lt;/p&gt;&lt;p&gt;attrib&lt;/p&gt;&lt;p&gt;&amp;nbsp; 옵션 + 또는 -를 옵션마커앞에 붙여 사용함&lt;/p&gt;&lt;p&gt;&amp;nbsp; R(Read only)&lt;/p&gt;&lt;p&gt;&amp;nbsp; A(bAckUp file)&lt;/p&gt;&lt;p&gt;&amp;nbsp; S(System file)&lt;/p&gt;&lt;p&gt;&amp;nbsp; H(Hidden file)&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;attrib +R +H d:\docs\bb.txt&lt;/p&gt;&lt;p&gt;attrib -R -H d:\docs\bb.txt&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;디스크 상태 점검하는 명령어&lt;/p&gt;&lt;p&gt;chkdsk d: /f&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;디스크 조각모음&lt;/p&gt;&lt;p&gt;defrag d:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;디스크 포맷&lt;/p&gt;&lt;p&gt;format c:&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;부팅 가능한 하드디스크로 포맷&lt;/p&gt;&lt;p&gt;format c: /s&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;화면 깨긋이 지우는 명령어 (clear screen)&lt;/p&gt;&lt;p&gt;cls&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;현재 시스템의 날짜 또는 시간을 확인 및 수정&lt;/p&gt;&lt;p&gt;date&lt;/p&gt;&lt;p&gt;time&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;필터 명령어&lt;/p&gt;&lt;p&gt;find, sort, more&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;find : 파일에서 특정 문자열 검색&lt;/p&gt;&lt;p&gt;type inst.ini | find &quot;Gen&quot;&lt;/p&gt;&lt;p&gt;ipconfig | find &quot;게이트웨이&quot;&lt;/p&gt;&lt;p&gt;find &quot;Gen&quot; inst.ini bb.txt bb2.txt 관리자.sql&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;IP주소 확인&lt;/p&gt;&lt;p&gt;ipconfig&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;* 리눅스(유닉스) 콘솔 명령어&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;현재 작업 디렉토리 경로를 화면에 출력&lt;/p&gt;&lt;p&gt;pwd(present working directory)&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;현재 작업중인 디렉토리의 모든 파일을 보여줌&lt;/p&gt;&lt;p&gt;DOS의 dir과 같은 역할을 하는 명령어 (list)&lt;/p&gt;&lt;p&gt;ls&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;cat 명령어로 텍스트내용의 파일 생성&lt;/p&gt;&lt;p&gt;cat &amp;gt; hi.txt&lt;/p&gt;&lt;p&gt;안녕하세요~&lt;/p&gt;&lt;p&gt;반가워요!!&lt;/p&gt;&lt;p&gt;(ctrl-c로 입력 종료)&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;cat 명령어로 텍스트파일 내용 출력&lt;/p&gt;&lt;p&gt;cat hi.txt&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;mv 명령어로 파일 또는 디렉토리 이름 변경&lt;/p&gt;&lt;p&gt;mv hi.txt 안녕.txt&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;파일 복사에 사용되는 명령어&lt;/p&gt;&lt;p&gt;cp 안녕.txt 안녕2.txt&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;현재 로그인한 계정이름 출력&lt;/p&gt;&lt;p&gt;whoami&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;현재 작업중인 프로세스 상태 확인하는 명령어&lt;/p&gt;&lt;p&gt;ps&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;현재 실행중인 프로세스를 삭제(종료)하기 위한 명령어&lt;/p&gt;&lt;p&gt;kill -9 22&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;아이피주소 확인 명령어&lt;/p&gt;&lt;p&gt;ifconfig&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;* 데이터베이스&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;테이블에서 레코드 삭제 시에&lt;/p&gt;&lt;p&gt;cascade 옵션&lt;/p&gt;&lt;p&gt;&amp;nbsp; 삭제할 요소를 참조하는 다른 모든 레코드를 함께 삭제&lt;/p&gt;&lt;p&gt;restrict 옵션&lt;/p&gt;&lt;p&gt;&amp;nbsp; 삭제할 요소가 다른곳에서 참조하고 있으면 삭제를 취소&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>IT/Java</category>
      <author>노마드오브</author>
      <guid isPermaLink="true">https://nomadof.tistory.com/234</guid>
      <comments>https://nomadof.tistory.com/234#entry234comment</comments>
      <pubDate>Fri, 23 Nov 2018 22:17:00 +0900</pubDate>
    </item>
    <item>
      <title>java - 쓰레드를 적용한 채팅 소스(Thread Chatting)</title>
      <link>https://nomadof.tistory.com/232</link>
      <description>&lt;p&gt;&lt;span style=&quot;color: rgb(9, 0, 255);&quot;&gt;MyChatServer 프로젝트&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(9, 0, 255);&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(9, 0, 255);&quot;&gt;ChatServer.java&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(9, 0, 255);&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;import java.io.BufferedWriter;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;import java.io.IOException;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;import java.net.ServerSocket;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;import java.net.Socket;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;import java.util.HashMap;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;import java.util.Map;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;public class ChatServer {&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp; &amp;nbsp; // 스레드간의 정보를 공유할 HashMap&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp; &amp;nbsp; // key는 채팅별명(아이디)이고 value는 출력스트림&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp; &amp;nbsp; Map&amp;lt;String, BufferedWriter&amp;gt; map;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp; &amp;nbsp; public ChatServer() {&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; map = new HashMap&amp;lt;&amp;gt;();&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ServerSocket serverSocket = null; // 서버소켓&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Socket socket = null; // 클라이언트와 통신하기 위한 소켓&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; final int PORT = 6000; // 포트번호&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try {&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; serverSocket = new ServerSocket(PORT);&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println(&quot;*** 채팅 서버 ***&quot;);&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println(&quot;서버는 클라이언트 소켓의 접속요청을 기다리고 있음&quot;);&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; while (true) {&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; socket = serverSocket.accept();&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ChatServerRunnable chatServerRunnable = new ChatServerRunnable(socket, map);&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Thread thread = new Thread(chatServerRunnable);&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; thread.start(); // 스레드 시작&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } catch (IOException e) {&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; e.printStackTrace();&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.exit(0);&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } finally {&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (serverSocket != null) {&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try {&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; serverSocket.close();&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } catch (IOException e) {&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; e.printStackTrace();&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp; &amp;nbsp; } // ChatServer()&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp; &amp;nbsp; public static void main(String[] args) {&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new ChatServer();&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&amp;nbsp; &amp;nbsp; } // main()&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#0900ff&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;}&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;




&lt;style type=&quot;text/css&quot;&gt;
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco}
&lt;/style&gt;


&lt;/p&gt;&lt;p class=&quot;p1&quot;&gt;&lt;span style=&quot;color: rgb(9, 0, 255);&quot;&gt;ChatServerRunnable.java&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;import java.io.BufferedReader;&lt;/p&gt;&lt;p&gt;import java.io.BufferedWriter;&lt;/p&gt;&lt;p&gt;import java.io.InputStreamReader;&lt;/p&gt;&lt;p&gt;import java.io.OutputStreamWriter;&lt;/p&gt;&lt;p&gt;import java.net.InetAddress;&lt;/p&gt;&lt;p&gt;import java.net.Socket;&lt;/p&gt;&lt;p&gt;import java.util.Collection;&lt;/p&gt;&lt;p&gt;import java.util.Iterator;&lt;/p&gt;&lt;p&gt;import java.util.Map;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;public class ChatServerRunnable implements Runnable {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; Socket socket; // 매번 새로운 클라이언트 정보의 소켓&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; Map&amp;lt;String, BufferedWriter&amp;gt; map; // 공유데이터&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; BufferedReader reader = null; // 클라이언트로부터 데이터를 수신받기 위한 스트림&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; BufferedWriter writer = null; // 클라이언트에게 데이터를 송신하기 위한 스트림&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; String userId; // 접속자의 아이디(채팅이름)&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; public ChatServerRunnable(Socket socket, Map&amp;lt;String, BufferedWriter&amp;gt; map) {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.socket = socket;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.map = map;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; InetAddress inetAddress = socket.getInetAddress();&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println(inetAddress + &quot;로부터 연결요청 받음&quot;);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reader = new BufferedReader(new InputStreamReader(socket.getInputStream(), &quot;utf-8&quot;));&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), &quot;utf-8&quot;));&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 새로운 클라이언트가 접속해서 처음보낸 문자열은 아이디&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; userId = reader.readLine();&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; broadcast(userId + &quot;님이 접속하셨습니다.&quot;);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println(&quot;접속한 클라이언트의 아이디는 &quot; + userId + &quot;입니다.&quot;);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 여러 스레드가 공유하는 맵을 동기화함&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; synchronized (map) {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 맵은 모든 클라이언트에 의해 공유되어&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 메시지 브로드캐스팅을 위해 출력스트림을 맵에 저장&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; map.put(userId, writer);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } catch (Exception e) {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; e.printStackTrace();&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; } // ChatRunnable&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; @Override&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; public void run() {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; String line = &quot;&quot;;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; while (true) {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; line = (String) reader.readLine();&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (line.equals(&quot;/quit&quot;)) { // &quot;/quit&quot; 종료&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } else { // 받은 메시지를 모든 클라이언트에게 브로드캐스팅함&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; broadcast(userId + &quot; : &quot; + line);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } // while&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } catch (Exception e) {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; e.printStackTrace();&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } finally { // &quot;/quit&quot; 종료 명령어 메시지가 오면&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; synchronized (map) {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; map.remove(userId); // 종료명령어를 보낸 클라이언트의 정보를 맵에서 삭제&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; broadcast(userId + &quot;님이 나가셨습니다.&quot;); // 나머지 클라이언트들에게 접속종료 알림&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println(userId + &quot;님이 나가셨습니다.&quot;); // 서버에도 출력&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (socket != null) {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; socket.close(); // 나간 클라이언트 소켓객체를 닫기&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } catch (Exception e2) {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; e2.printStackTrace();&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; } // run()&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; // 받은 메시지를 모든 클라이언트에게 브로드캐스팅하기 위한 메소드&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; public void broadcast(String message) {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; synchronized (map) {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Collection&amp;lt;BufferedWriter&amp;gt; collection = map.values();&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Iterator&amp;lt;BufferedWriter&amp;gt; iter = collection.iterator();&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; while (iter.hasNext()) {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; BufferedWriter writer = iter.next();&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; writer.write(message + &quot;\n&quot;);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; writer.flush();&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;//&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (BufferedWriter writer : collection) {&lt;/p&gt;&lt;p&gt;//&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; writer.write(message + &quot;\n&quot;);&lt;/p&gt;&lt;p&gt;//&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; writer.flush();&lt;/p&gt;&lt;p&gt;//&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } catch (Exception e) {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; e.printStackTrace();&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } // synchronized&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; } // broadcast()&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;} // ChatRunnable class&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(9, 0, 255);&quot;&gt;MyChatClient 프로젝트&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(9, 0, 255);&quot;&gt;GUIChatClient.java&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;import java.awt.BorderLayout;&lt;/p&gt;&lt;p&gt;import java.awt.CardLayout;&lt;/p&gt;&lt;p&gt;import java.awt.Container;&lt;/p&gt;&lt;p&gt;import java.awt.event.ActionEvent;&lt;/p&gt;&lt;p&gt;import java.awt.event.ActionListener;&lt;/p&gt;&lt;p&gt;import java.io.BufferedReader;&lt;/p&gt;&lt;p&gt;import java.io.BufferedWriter;&lt;/p&gt;&lt;p&gt;import java.io.IOException;&lt;/p&gt;&lt;p&gt;import java.io.InputStreamReader;&lt;/p&gt;&lt;p&gt;import java.io.OutputStreamWriter;&lt;/p&gt;&lt;p&gt;import java.net.Socket;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;import javax.swing.JButton;&lt;/p&gt;&lt;p&gt;import javax.swing.JFrame;&lt;/p&gt;&lt;p&gt;import javax.swing.JLabel;&lt;/p&gt;&lt;p&gt;import javax.swing.JPanel;&lt;/p&gt;&lt;p&gt;import javax.swing.JScrollPane;&lt;/p&gt;&lt;p&gt;import javax.swing.JTextArea;&lt;/p&gt;&lt;p&gt;import javax.swing.JTextField;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;public class GUIChatClient extends JFrame implements ActionListener {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; static final int SERVER_PORT = 6000; // 포트번호&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; Socket socket;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; BufferedReader reader;&amp;nbsp; // 서버로부터 데이터를 전송받기 위한 스트림&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; BufferedWriter writer; // 서버에게 데이터를 전송하기 위한 스트림&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; String userId;&amp;nbsp; // 접속자의 아이디(채팅이름)을 저장할 변수 선언&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; // 화면구성&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; CardLayout cardLayout;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; JTextField tfServerIp; // 접속할 서버IP를 입력받을 텍스트필드&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; JTextField tfName; // 접속 대화명을 입력받을 텍스트필드&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; JButton btnConnect; // 서버 접속 버튼&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; JTextArea textArea; // 채팅내용 출력 용도&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; JScrollPane scrollPane;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; JTextField tfInput; // 채팅내용 입력할 텍스트필드&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; JButton btnSend; // 채팅내용(문자열) 전송 버튼&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; JButton btnExit; // 프로그램 종료 버튼&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; Container contentPane;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; public GUIChatClient() {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; setTitle(&quot;채팅 클라이언트&quot;);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; contentPane = getContentPane();&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cardLayout = new CardLayout();&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; contentPane.setLayout(cardLayout);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 접속화면&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JPanel connectPanel = new JPanel();&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; connectPanel.setLayout(new BorderLayout());&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; connectPanel.add(new JLabel(&quot;다중 채팅 접속화면&quot;, JLabel.CENTER), BorderLayout.NORTH);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 접속창 하위패널&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JPanel subConnectPanel = new JPanel();&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; subConnectPanel.add(new JLabel(&quot;서버 아이피: &quot;));&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; tfServerIp = new JTextField(&quot;127.0.0.1&quot;, 15);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; subConnectPanel.add(tfServerIp);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; subConnectPanel.add(new JLabel(&quot;&amp;nbsp; &amp;nbsp;대화명: &quot;));&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; tfName = new JTextField(&quot;아이언맨&quot;, 15);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; subConnectPanel.add(tfName);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; connectPanel.add(subConnectPanel, BorderLayout.CENTER);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; btnConnect = new JButton(&quot;서버 접속&quot;);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; connectPanel.add(btnConnect, BorderLayout.SOUTH);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; btnConnect.addActionListener(this);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 채팅화면&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JPanel chatPanel = new JPanel();&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; chatPanel.setLayout(new BorderLayout());&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; chatPanel.add(new JLabel(&quot;채팅 프로그램&quot;, JLabel.CENTER), BorderLayout.NORTH);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; textArea = new JTextArea(10, 35); // 채팅내용 출력창 용도&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; scrollPane = new JScrollPane(textArea);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; chatPanel.add(scrollPane, BorderLayout.CENTER);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JPanel subChatPanel = new JPanel(); // 채팅창 하위패널&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; tfInput = new JTextField(&quot;&quot;, 13);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; btnSend = new JButton(&quot;전송&quot;);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; btnExit = new JButton(&quot;종료&quot;);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; tfInput.addActionListener(this);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; btnSend.addActionListener(this);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; btnExit.addActionListener(this);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; subChatPanel.add(tfInput);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; subChatPanel.add(btnSend);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; subChatPanel.add(btnExit);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; chatPanel.add(subChatPanel, BorderLayout.SOUTH);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; contentPane.add(&quot;접속창&quot;, connectPanel);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; contentPane.add(&quot;채팅창&quot;, chatPanel);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cardLayout.show(contentPane, &quot;접속창&quot;);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; setLocationByPlatform(true);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; setSize(300, 300);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; setVisible(true);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; } // GUIChatClient()&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; //&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; public void init() throws IOException {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; String ipAddr = tfServerIp.getText();&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; socket = new Socket(ipAddr, SERVER_PORT);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println(&quot;ipAddr : &quot; + ipAddr);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (socket != null) {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println(&quot;socket not null&quot;);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reader = new BufferedReader(new InputStreamReader(socket.getInputStream(), &quot;utf-8&quot;));&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), &quot;utf-8&quot;));&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (reader != null) {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println(&quot;reader not null&quot;);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (writer != null) {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println(&quot;writer not null&quot;);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; userId = tfName.getText(); // 대화명 가져와서&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; writer.write(userId + &quot;\n&quot;);&amp;nbsp; // 서버에게 전송&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; writer.flush();&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.out.println(&quot;userId : &quot; + userId);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 서버가 보낸 데이터를 수신받기 위한 스레드 준비 후 시작&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Thread thread = new Thread(new ReadRunnable());&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; thread.start();&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cardLayout.show(contentPane, &quot;채팅창&quot;); // 채팅창으로 화면전환&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; tfInput.requestFocus(); // 포커스 주기&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; } // init()&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; // 서버가 보낸 데이터를 수신받기 위한 내부클래스&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; class ReadRunnable implements Runnable {&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; @Override&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void run() {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; String line = &quot;&quot;; // 서버로부터 받은 데이터를 저장하기 위한 변수&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; while (true) {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; line = reader.readLine(); // 서버 데이터 수신&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; textArea.append(line + &quot;\n&quot;);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; textArea.setCaretPosition(textArea.getText().length());&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } catch (Exception e) {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; e.printStackTrace();&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } // run()&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; } // class ReadRunnable&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; @Override&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; public void actionPerformed(ActionEvent e) {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Object obj = e.getSource();&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (obj == btnConnect) { // 채팅서버 접속버튼&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; init();&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } else if (obj == tfInput || obj == btnSend) { // 텍스트필드에서 엔터키를 쳤거나 전송버튼 눌렸을때&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; String sendMsg = tfInput.getText();&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; writer.write(sendMsg + &quot;\n&quot;);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; writer.flush();&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; tfInput.setText(&quot;&quot;);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; tfInput.requestFocus();&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } else if (obj == btnExit) { // 종료버튼&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.exit(0); // 프로그램 강제 종료&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } catch (Exception e2) {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; e2.printStackTrace();&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; textArea.append(e2.getMessage() + &quot;\n&quot;);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; } // actionPerformed()&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; public static void main(String[] args) {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; new GUIChatClient();&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; }&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>IT/Java</category>
      <author>노마드오브</author>
      <guid isPermaLink="true">https://nomadof.tistory.com/232</guid>
      <comments>https://nomadof.tistory.com/232#entry232comment</comments>
      <pubDate>Fri, 23 Nov 2018 20:36:00 +0900</pubDate>
    </item>
  </channel>
</rss>