본문 바로가기
728x90

전체 글297

jar 파일에 한글 입력하기 (feat. PHP, JAVA) PHP에서 java로 만든 바이너리인 jar 파일을 실행시킬 때 한글이 깨지는 현상이 발생합니다.이 경우 -Dfile.encoding=utf-8로 해결되기도 하지만, 특정 서버에서 해결이 되지 않는 경우가 있습니다.그럴 경우, 발상의 전환으로 '꼭 한글로 보내야 하나?'라는 생각을 해보시면 됩니다.보내고자 하는 한글 데이터를 특정 문자로 encoding해서 보내면? 이라는 생각을 들게 되어 해당 문제를 해결했습니다. $data = "안녕";$cmd = "java -jar app.jar urlencode($data)";shell_exec($cmd);와 같이 실행을 하게 되면 "%EC"와 같은 한글을 url에 입력했을 떄 나오는 urlencoding을 거친 데이터가 jar파일에 전달이 됩니다.String d.. 2024. 9. 9.
시간 측정 테스트시 주의할 점 public static void main(String[] args) { // Test data int n = 100000; // Example value for n int[] sArray = {200, 400, 800}; // Example array of station locations int w = 100; // Example value for w // Measure time for the first solution long startTime1 = System.nanoTime(); int result1 = solution1(n, sArray, w); long endTime1 = System.nanoT.. 2024. 9. 2.
순서가 보장되는 map과 set java에는 Map과 Set으로 HashMap과 HashSet, TreeMap과 TreeSet이 있습니다.cpp에는 같은 효과를 내는 unordered_map과 unordered_set, map과 set이 있습니다. 이 모든 map과 set은 순서를 보장하지 않죠. 알고리즘 문제를 풀거나, 프로젝트를 개발하다보면순서가 보장되면서, key값이 중복되지 않는 것들을 추려야 하는 경우가 발생합니다. 이런 경우 LinkedHashMap과 LinkedHashSet이라는 라이브러리 함수를 통해 진행이 가능합니다. LinkedHashSet set = new LinkedHashSet();set.add(1);set.add(2); System.out.print(set);다음과 같이 사용할 수 있으며, 결과는 다음과 같습.. 2024. 8. 25.
startsWith, endsWith 무조건 좋은가 java에는 A라는 문자열의 맨앞에 B라는 문자열이 prefix(접두사)로 있는지 체크하는 함수인 startsWith가 있습니다.또한 A라는 문자열의 맨 뒤에 B라는 문자열이 suffix(접미사)로 있는지 체크하는 함수인 endsWith가 있습니다.여기서 하나의 궁금증이 생깁니다."문자열 : 문자열" 비교가 아닌 "문자열 : 문자" 비교인 경우에 startsWith나 endsWith보다 charAt()가 더 좋지 않을까?라는 의문을 가지고 테스트에 들어갔습니다.테스트 소스public class Main { static String s = ""; static int size = 1000000000; public static void main(String[] args) { Sys.. 2024. 8. 17.
Service에서 Argument 사용하기 Spring boot의 main을 통해 argument를 입력받는 경우가 발생할 수 있습니다.public class Main { public static void main(String[] args){ SpringApplication.run(SpringBootBoilerPlateApplication.class, args); }}이럴 경우 args를 입력받고 시작하는데, 해당 args를 활용하는 함수를 필요로 하는 경우가 발생합니다. public class Main { public static void main(String[] args){ // args를 필요로 하는 경우 SpringApplication.run(SpringBootBoilerPlateApplication.class,.. 2024. 8. 7.
Spring boot에서의 logback 설정 Spring boot에서는 logback위치를 java-resource의 위치에 있는 logback.xml 위치를 보고 log 위치를 지정합니다. 그러나 이렇게 진행하는 경우 ${LOG_PATH}와 같은 변수가 들어가 있는 경우, 이를 인식하지 못하는 현상이 발생합니다.물론 이런식으로 logback.xml의 옵션으로 LOG_PATH를 지정할 수 있습니다. 그렇지만, 만약에 LOG_PATH를 특정 파일의 값으로 읽어와 지정하는 경우에는 해당 방식을 사용할 수 없습니다.그래서 다음과 같은 방식으로 LOG_PATH에 대한 값을 소스코드로 입력할 수 있습니다.LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();logger.. 2024. 8. 5.
[JDK 15] Text Blocks JAVA 공식 문서를 한글로 번역한 내용에 대하여 작성하였습니다.JDK15에서 String 관련 새로운 기능이 추가되었습니다.해당 기능은 JDK12에서 처음으로 등장했지만 릴리즈되지 않았고, JDK13, JDK14에서 미리볼 수 있는 방법으로 등장했었습니다.이후 JDK15를 통해 릴리즈가 되었습니다.목표여러 줄의 소스 코드에 걸쳐 있는 문자열을 쉽게 표현할 수 있도록 함JAVA 프로그램의 문자열 가독성 향상문자열 리터럴과 동일한 방식으로 조작도리 수 있도록 규정하여 문자열 리터럴에서의 마이그레이션을 지원동기부여JAVA에서 HTML, XML, SQL 또는 JSON의 스니펫 문자열 리터럴에 임베드하려면 일반적으로 스니펫이 포함된 코드가 컴파일되기 전에 이스케이프 및 연결을 사용하여 상당한 편집이 사용됩니다... 2024. 8. 4.
ShiftOr 알고리즘 이번 시간에는 ShiftOr이라는 근사 문자열 매칭 알고리즘에 대하여 이야기해보고자 합니다. unix 계열의 agreap이라는 명령어에서 사용하고 있습니다.https://en.wikipedia.org/wiki/Agrep agrep - WikipediaFrom Wikipedia, the free encyclopedia agrep (approximate grep) is an open-source approximate string matching program, developed by Udi Manber and Sun Wu between 1988 and 1991,[1] for use with the Unix operating system. It was later ported to OS/2, DOS, anden.. 2024. 7. 28.
Two-Way String-Matching에 대하여 오늘은 KMP 방식과 Boyer-Moore의 방식을 조합하여 양방향으로 탐색하는 Two-Way String Matching Algorithm에 대하여 알아보도록 하겠습니다. python 3.10에서 적용한 이후 약 25배가량의 엄청난 효과를 보았다고 알려진 알고리즘 입니다.C의 strstr의 하위 문자열 함수를 구현하는데에도 사용되어져 있습니다. 찾고자 하는 문자열이 앞에 있는 경우개수 / 문자열 길이 / 패턴 길이kmp(s)boyer-moore (s)rabin-karp (s)two-way String Macthing (s)100,000 / 2,000 / 107.926154.06316.30524.87610,000 / 5,000 / 100.96616.5241.7982.69 찾고자 하는 문자열이 뒤에 있는 .. 2024. 7. 21.
728x90