*경험한 기술로 정리하였습니다
*모니터링 중 string 낭비를 확인하고 텍스트 재활용을 위한 프로그래밍 변경 
중복 문구 및 교환문구를 한 문단으로 저장하고, 교환문구의 포인터를 저장하여 교환작업으로 검색, 트래픽을 고려한 로직 재구현 
*배열값 중 같은 데이터가 지속적으로 송신을 확인하여 통계 수치에 맞는 텍스트 전송 프로그래밍 개선 이슈 
연산 모듈 사용시 공통 문구 및 공통 통계 데이터를 미리 통계를 구하고 singleton으로 메모리에 미리 할당 사용 및 모듈 종료시 해지 및 쿠키 저장 구현으로 메모리 부족에 대해 고육지책 
*클라이언트에 전송할 svg 리소스 줄이는 아이디어 
번들 용량 줄이기 위해 svg파일을 object로 사용하여 색상변경, 백터 가장자리에 필요없는 로직 검토 및 삭제
*문자전송 알고리즘 낭비 확인하여 비동기 전송에 필요한 텍스트 변경 프로세스에 필요한 리소스 부하 해결안 제시 
계산에 필요한 데이터인 기존 BufferedReader에서 StringTokenizer를 통해 문자열 교체방식으로 문서 데이터 출력 및 비동기의 리소스를 감소 방안 구현
*2차배열에서 빠르게 위치탐색을 알고리즘 아이디어 
상황인지(타겟위치)를 효율적으로 구성하기 위해 구역별 가중치를 합산하고 적은 비용 회피 알고리즘을 구성하여 최적경로를 구현 (인식, 연산에 좀 더 대응하기 위해 크루스칼 알고리즘 참조하여 변경) 
*로직 검토하여 계정관리에 용이한 프로그래밍 개선 
계정에 필요한 데이터를 객체상속하여 DB의 계정번호를 synchronzation화 하여 데이터 매핑 hash함수를 기반으로 클러스터링하여 색인속도 튜닝
*RGB값을 추출을 활용하여 2차원 배열 평균가치를 활용한 추천서비스 연산 간소화 아이디어 
DCGAN의 fractionally-stride convolution 축약사이즈를 참조하여, 데이터 평균값으로 이루어진 2차원배열로 점진적 축소로 연관된 카테고리 집합 구성 로직 구현
*웹진단으로 각 카테고리마다 최대값을 찾아 리포트를 구성할 때 최대값 찾는 부분에서 병목현상이 있는 이슈 
0~100이라는 수치 또는 표준분포를 구할 때 카테고리 길이 혹은 정수 자릿수만큼 리스트를 만들고 1의 자리부터 순차적으로 검색하여 radix로 빠르게 최대값 알고리즘 정렬
*기존 테이블 영향이 가지 않고 DB query 로직 변경 아이디어 
delete 명령어를 사용하여 데이터 삭제 대신 Db server용량에 제약이 없을 경우 직접 삭제 대신에 삭제 여부의 컬럼에 update 명령어를 사용하여 삭제되었다는 값을 적용하여 기존 참조한 테이블 및 시스템에 영향가지 않는 점층적 개선안 제시
*updated_at 매번 갱신할 수 있는 빈번한 조회의 테이블의 select, update 명령문 적용 이슈 예상한 개선안 아이디어 
table 컬럼이며 데이터가 update가 된 시각, 매번 갱신하는 점을 고려하여 update key filter 활용하여 인덱스 구조에서 비용 최소화와 날짜 기준인 range 파티션으로 몇 주일 기준으로 업데이트가 되지 않으면 수평분할 도입 제시
*중요한 비교군 데이터(답안) 다루기 위한 프로그래밍 개선안으로 진단 웹서비스 객관식 답안 정보 저장에 멀티쓰레드에 안전성 이슈에 맞는 싱글톤으로 변경하는 아이디어 
Government.election()으로 레이지 로딩임을 확인. 동시성 제약을 주는 synchronized사용하지 않으며, 내부에 private static class를 만들고 JVM의 static initializer에 의해서 초기화 되고 메모리로 올라가서 사용하고 싶을 때 public static 메서드를 통해서 호출. synchronized를 이용하지 않고도 같은 방식.
*ajax json 파일업로드 용량, 속도 튜닝 제안 
업로드 속도를 높이는 방법 중 하나로 별도의 바이트 범위 chunk 로 파일을 읽고 보내며, 서버애서 알맞는 순서로 파일 내용을 재구성 제안
*웹브라우저 비동기 대용량 데이터 전송 아이디어 
전체 파일 읽은 후 ajax로 업로드로 대용량에 대해 웹브라우저는 전체 파일 데이터를 메모리로 로딩하는 문제 야기 가능성, 웹서버는 용량제한(2g)이 있으므로 브라우저에서는 동기적으로 loading상태. 서버측에서는 분명 request header 크기 설정이 되어있는데, form에 file object를 해서 넘기는 경우, 해더 사이즈 제한을 풀어야 하며, 1기가나 2기가를 올리기 위해 버퍼를 설정하였으나 버퍼라는 건 크면 클수록 메모리 리소스를 많이 차지하고 메모리 리소스가 많이 차지하면, 그만큼 성능이 떨어지거나 무거워지므로, FileReader 객체를 이용하면 binary나 base64로 변환해서 사용 가능 제안
*JAVA Split 문자열 성능 향상 아이디어 
레거시 StringTokenizer보다 split를 공식문서에서 권고하나, 구분자가 1개이며 아스키코드 영단어인 점, 토큰 하나만 필요한 상황에서 정규식의 split과 비교하여 stringTokenizer퍼포먼스가 좋아 교체 제안
*Javascript 논블로킹 작업으로 순서보장 이슈와 제어권 정리
Queue 함수 또는 worker를 만들어서 HTTP blocking으로 제어권을 넘기어 작업순환과 레이턴시를 줄임
*SQL db 전체작업하지 않아도 되는 쿼리문 변경 제안 
SELECT DISTINCT, UNION DISTINCT과 같은 중복값제거 또는 IN과 같은 작업 중에 한번만 작업해도 되는 쿼리문은 db퍼포먼스 이슈로 인해 EXISTS 쿼리문으로 변경 제안
*SQL having절로 db 퍼포먼스 약화에 대한 제안 
테이블 추가 생성 업데이트로 group by절 사용에 따른 having절 범위에 따른 문제를 우선 순위인 where절로 범위 최대한 범위 축소하여 퍼포먼스 개선 제안
*SQL 전체 조회하는 쿼리문 변경 제안 
full table scan하는 문자열 앞 부분 %검색을 지양하기 위해 테이블 컬럼양식 구조를 변경하여 생성날짜를 문자열 앞부분에 추가 update하여 검색 카테고리를 만듬
*http get요청에 body 붙힌 이슈 
webrequest에서 body가 있음으로 post로 인식하여 404에러 뜨는 이슈
*프리패치 우선순위 체크 
프리패치는 브라우저의 idle time에 다운로드하기 때문에 프리로드에 비해 다운로드 우선순위 낮음 <link rel="preload” as=“리소스유형/>
*콜백함수 onload() 이슈 
script가 완성되기 전에 onload가 실행되는 문제로 autoload=false로 바꿈으로서 onload 함수가 callback 함수로 되어 script 완성 이후에 동작하도록 변경
*css view topber 클릭으로 하단의 div 카테고리 애니메이션 딜레이 모니터링 
reflow 랜더 트리 작업 부하를 줄이도록 DOM 최소화 사용 로직 및 끝단 추가하도록 변경과 추가된 선택자 검색을 리팩토링으로 간결화 작업 제안
Back to Top