๋ฐ์ํ ๊ฐ๋ฐ/JAVA24 [JAVA] The method getRealPath(String) from the type ServletRequest is deprecated WEB-INF ๊ฒฝ๋ก์ ์๋ ํน์ ํ์ผ์ ์ ๋๊ฒฝ๋ก๋ฅผ ๊ฐ์ ธ์ค๋ ค๊ณ ์๋์ ๊ฐ์ด ์์ฑํ๋๋ฐ 'The method getRealPath(String) from the type ServletRequest is deprecated'๋ผ๋ ๊ฒฝ๊ณ ๋ฌธ๊ตฌ๊ฐ ํ์๋์๋ค. request.getRealPath("/WEB-INF/xxx/xxx.txt"); ํด๊ฒฐ๋ฐฉ๋ฒ request.getSession().getServletContext().getRealPath("/WEB-INF/xxx/xxx.txt"); jsp์์ ์๋์ ๊ฐ์ด ๋ฐ๊ฟ์ฃผ๋ฉด ๋๋ค! application.getRealPath("/WEB-INF/xxx/xxx.txt"); 2022. 3. 11. [JAVA] com.fasterxml.jackson.databind.JsonMappingException: Invalid UTF-8 start byte 0xbf ์๋ฒ๋ก ํ๊ธ์ด ํฌํจ๋ json ๋ฉ์์ง๋ฅผ ๋ณด๋๋๋ฐ ์๋์ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ์๋ค. com.fasterxml.jackson.databind.JsonMappingException: Invalid UTF-8 start byte 0xbf ํ๊ธ์ ์ ๋ ฅํ๋ html์ contentType ๋ฐ pageEncoding์ด UTF-8๋ก ์ ์ธ๋์ด์์์๋ ๋ถ๊ตฌํ๊ณ , ์๋ฒ์ชฝ์์ UTF-8๋ก ๋ฐ์ง ๋ชปํ์๋ค. ๊ทธ๋ฆฌ๊ณ json string์ ๋ฐ์ด๋๋ฆฌ๋ก ๋ณํํ ๋ UTF-8๋ก ์ธ์ฝ๋ฉ๋๋๋ก ํ์์ง๋ง ํ์์ ๋์ผํ๋ค. ํด๊ฒฐ๋ฐฉ๋ฒ 1 Run>Run Configurations์์ Tomcat ์ ํ ํ Common ํญ์์ Encoding์ UTF-8๋ก ๋ฐ๊ฟ์ค๋ค. ํด๊ฒฐ๋ฐฉ๋ฒ 2 Run>Run Configurations์์ Tomcat ์ ํ ํ Arg.. 2022. 3. 8. [JAVA] ๊ฐ์ฒด ๋ณต์ (clone)์ Shallow Copy, Deep Copy ๊ฐ์ฒด๋ฅผ ๋ณต์ ํ๊ธฐ ์ํด์๋ Cloneable์ ๊ตฌํํ๊ณ , clone() ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ํ๋ฉด ๋์ ๊ฐ๋จํ๋ค! @Getter @Setter public class Person implements Cloneable{ private String name; private int age; @Override public Object clone() throws CloneNotSupportedException { return super.clone(); } } ๊ทธ๋ฆฌ๊ณ ์๋์ ๊ฐ์ด person1.clone(); ์ ์ฌ์ฉํ์ฌ person1์ ๊ฐ์ฒด๋ฅผ ๋ณต์ ํ์๋ค. Person person1 = new Person(); person1.setName("ํ๊ธธ๋"); person1.setAge(30); try { Person pers.. 2022. 2. 16. [JAVA] ์ฑ๊ธํค ํจํด(Singleton Pattern) : ๋ฉํฐ ์ค๋ ๋ ํ๊ฒฝ์์์ ๋ฌธ์ ์ ์ฑ๊ธํค ํจํด์ด๋? ํ๋ง๋๋ก ์ ์ํ์๋ฉด '๊ฐ์ฒด๋ฅผ ๋จ ํ๋๋ง ์์ฑํ๋๋ก ํ๋ ๋์์ธ ํจํด'! static์ด๊ธฐ ๋๋ฌธ์ ๊ณ ์ ๋ ๋ฉ๋ชจ๋ฆฌ ์์ต์ ์ป์ผ๋ฉฐ, ๋ชจ๋ ํด๋ผ์ด์ธํธ(ํด๋์ค)์์ ํด๋น ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ ์ ์์ด์ ๊ณตํต๋ ๊ฐ์ฒด๋ฅผ ๋ค์์ ํด๋ผ์ด์ธํธ์์ ์ฌ์ฉํด์ผํ๋ ์ํฉ์์ ์ฃผ๋ก ์ฌ์ฉ ๋๋ค. ์ฑ๊ธํค ํจํด์ ์์ ๋ฅผ ๋ณด๋ฉด ์๋์ ๊ฐ์ ํํ๊ฐ ๋๋ถ๋ถ์ด๋ค. ๋ณธ์ธ๋ ์ฑ๊ธํค ํด๋์ค๋ฅผ ์์ฑํ ๋ ์ด๋ ๊ฒ ์์ฑํ์๋๋ฐ, ์ด๋ฐ ๊ฒฝ์ฐ ๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ์์ ๋๊ฐ ์ด์์ ์ค๋ ๋๊ฐ getInstance()๋ฅผ ํ๊ฒ ๋ ๊ฒฝ์ฐ ๋๊ฐ์ ์ธ์คํด์ค๊ฐ ์์ฑ๋๋ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์๋ค. (= ๋์์ฑ ๋ฌธ์ , thread unsafe) public class Singleton { private static Singleton singleton = null; pri.. 2022. 2. 10. [JAVA] Priority Queue(์ฐ์ ์์ ํ) ์ฐ์ ์์ ์กฐ๊ฑด ๋ณ๊ฒฝํ๊ธฐ Priority Queue FIFO(First In First Out)์ธ ์ผ๋ฐ์ ์ธ Queue์ ๋ค๋ฅด๊ฒ Priority Queue๋ ์ฐ์ ์์๊ฐ ๋์ ๋ฐ์ดํฐ๊ฐ ๋จผ์ Out๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ ํ๊ฒ ๋๋๋ฐ ์ ๋ ฌ ๊ธฐ์ค์ ๋ฐ๊พธ๊ณ ์ถ๋ค๋ฉด ๋๋ค์์ ์ด์ฉํ๊ฑฐ๋ Comparator, Comparable๋ฅผ ์ด์ฉํด์ผ ํ๋ค. Integer๋ Collections.reverseOrder()๋ฅผ ํตํด ๊ฐ๋จํ๊ฒ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ์ ํ ์ ์๋ค. PriorityQueue pq = new PriorityQueue(Collections.reverseOrder()); pq.add(5); pq.add(7); pq.add(10); pq.add(3); System.out.println(pq.poll()); // 10 ์ถ๋ ฅ add๊ฐ ์๋.. 2022. 2. 7. [JAVA] ๋์นญํค ์ํธํ ์๊ณ ๋ฆฌ์ฆ ํค ์ ํ ์ค๋ฅ ํด๊ฒฐ : Illegal key size ๊ฐ๋ฐ ์ค ๋์นญํค๋ก ์ํธํํด์ผํ ์ํฉ์ด ์๊ฒผ๋๋ฐ(DESede/CBC, DES/CBC, AES/CBC ๋ฑ์ ์๊ณ ๋ฆฌ์ฆ ์ด์ฉ), 192 ํน์ 256 bit์ ๋์นญํค๋ฅผ ์ด์ฉํ์ฌ ์ํธํ๋ฅผ ํ ๊ฒฝ์ฐ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค. java.security.InvalidKeyException: Illegal key size ์์ธ์ ์ฐพ์๋ณด๋ Java๋ ๊ธฐ๋ณธ์ ์ผ๋ก JCE ์ ์ฑ ์ ์ ๊ณตํ๋๋ฐ ์ด ์ ์ฑ ์ ๋ฏธ๊ตญ์ ์ ์ฑ ์ ๋ฐ๋ผ 128 bit๋ก ํค ๊ธธ์ด๊ฐ ์ ํ๋์ด ์์ด์ ์ด๋ฅผ ์ด๊ณผํ๋ ๊ฒฝ์ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ ๊ฒ ์ด๋ค. ์ด ์ ์ฑ ์ /jre/lib/security/local_policy.jar์ default_local.policy ํ์ผ์์ ํ์ธํ ์ ์์ผ๋ฉฐ, ์ ์ฑ ๋ด์ฉ์ ์๋์ ๊ฐ๋ค. // Some countries have import limit.. 2022. 1. 26. [JAVA] class file for javax.interceptor.InterceptorBinding not found SBA(Spring Boot Admin)์ ์ฌ์ฉํ๊ธฐ ์ํด ๋ชจ๋ํฐ๋งํ๊ณ ์ ํ๋ ํ๋ก์ ํธ์ 'spring-boot-admin-starter-client' ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐ ํ๋ค. java: cannot access javax.interceptor.InterceptorBinding class file for javax.interceptor.InterceptorBinding not found Consult the following stack trace for details. com.sun.tools.javac.code.Symbol$CompletionFailure: class file for javax.interceptor.InterceptorBinding not found ๊ทธ ์ ์ build๊ฐ ์ ๋๋๋ฐ ๊ฐ์๊ธฐ.. 2022. 1. 26. [JAVA] Optional ๊ฐ๋ ๋ฐ ์ฌ์ฉ๋ฒ, ์์ 1. Optional์ด๋? ๊ฐ๋ฐ์ ํ๋ค ๋ณด๋ฉด NullPointException(NPE)์ ๋ง๋๊ฒ ๋๋ค. ๊ฐ์ฅ ๋ง์ด ๋ฐ์ํ๋ ์๋ฌ ์ค ํ๋๋ผ๊ณ ํ๋๋ฐ, ์ด๋ฅผ ํผํ๊ธฐ ์ํด์ null์ ์ฒดํฌํ๋ ๋ก์ง์ด ์ถ๊ฐ๋์ด์ผ ํ๋ค. DeviceVo deviceVo = deviceDao.findById(deviceId); //id์ ํด๋นํ๋ ๋ฐ์ดํฐ๊ฐ ์๋ค๋ฉด deviceVo๋ null์ด๋ค. deviceVo.getName(); //deviceVo๋ null์ด๊ธฐ ๋๋ฌธ์ NullPointException์ด ๋ฐ์ํ๋ค. deviceVo.getModel().getModelId(); //deviceVo๊ฐ null์ด ์๋๋๋ผ๋ Model์ด null์ด๋ฉด NullPointException์ด ๋ฐ์ํ๋ค. if(deviceVo != null){ d.. 2022. 1. 21. ์ด์ 1 2 3 ๋ค์ 728x90 ๋ฐ์ํ