小时候家里定了《读者》的月刊,里面记录一个故事:说有有个偏僻的乡村一日突然来了一个美女,她携着万贯家财子女在当地安家落户,成了当地的乡绅。她让她的子女世世代代的保守这个秘密,直到这个秘密不会再对家族带来灾难。她就是陈圆圆。当年吴三桂领清兵入关,冲冠一怒为红颜,改写了中国的历史,自己却能全身而退的那个人。
周五例行公事的查看一下离线数据推送项目的数据和log。将log用awk分段之后,我想知道实时数据前10个被重复发送的数据ID都被重复发送了几次,从而找到进一步优化的入手点,天知道我对这个项目已经进行了多少次优化了。于是linux命令就是
cat transmission.log |grep 'IncrementAlbumService.java:146'|awk '{print $6}'|awk -F ',' '{print $1}'| sort |uniq -c| sort -nr |head
결과가 너무 죄책감이 들었습니다
(데이터 보안, 우리 프로젝트의 ID 규칙 부분은 표시되지 않습니다)
그들의 운영과 관련이 있지만 데이터 변경 사항을 감지하여 보냈어야 했는데, 하지만 그만큼 높은 재발행률을 자랑합니다. 업데이트 서비스의 인터페이스나 오프라인 서비스의 인터페이스에 관계없이 여전히 최적화할 수 있는 지점이 있습니다. 얘들아, 저 남자 아이돌들이 등장할 때 드라이어나 인공 물뿌리개로 그림을 그리는 것과 내 생각은 늘 달랐다. 이 결과 외에도 나는 또 다른 고전적인 알고리즘 문제에 대해서도 생각하고 있습니다. 약 10,000줄로 구성된 텍스트 파일이 있고 각 줄에 한 단어가 있으며 가장 자주 발생하는 상위 10개 단어를 계산해야 합니다.
이 알고리즘 문제의 경우 위의 Linux 명령은 sort|uniq -c |sort -nr | 시간 복잡도는 다음 중 가장 큽니다.
1> 먼저 정렬을 수행합니다.
직접 삽입 정렬: 순서가 지정된 목록에 요소를 계속 삽입합니다. 가장 나쁜 시간 복잡도는 O(n2 )
입니다. 감소된 증분을 갖는 삽입 정렬, 불안정, 증분 인수 수열의 선택에 따라 최악의 시간 복잡도는 O(n2)
단순 선택 정렬: 정렬할 숫자 중에서 가장 작은 숫자 또는 가장 큰 숫자를 선택하여 교환 정렬되지 않은 첫 번째 위치의 최악의 시간 복잡도는 O(n2)
이진 선택 정렬: 각 단순 선택 정렬은 두 가지 요소를 결정하므로 주기가 절반으로 줄어들 수 있습니다.
힙 정렬: 트리 선택 정렬, 큰 루트 힙, 작은 루트 힙. 최악의 시간 복잡도는 O(N*logN)
버블 정렬: 인접한 두 숫자를 비교하고 교환할 때마다 최악의 시간 복잡도는 O(n2)
퀵 정렬: 선택 벤치마크 요소, 매번 정렬할 요소를 분할할 때 최악의 시간 복잡도는 O(n2)
병합 정렬: 두 개의 정렬된 목록을 새로운 정렬된 목록으로 결합합니다. 최악의 시간 복잡도는 O(N*logN)
버킷 정렬: 공간을 시간으로 교환하는 알고리즘, 복잡도는 O(n)
Radix 정렬: 수십만 자리에 따라 할당하고 수집하며, 시간 복잡도는 O(dn)
2> is O(n)
3> 정렬의 시간 서비스 정도는 1>
4> 정렬 후의 시간 복잡도는 O(1)
사용된 알고리즘도 파일 크기와 관련이 있습니다. , 파일이 너무 크고 데이터가 너무 많으면 파일을 분할하고 별도로 정렬한 다음 여러 방법으로 병합해야 합니다. 그래서 여기서는 단어의 수가 언급됩니다.
Linux 명령이 없는 경우 고전적인 해결책은 먼저 사전 트리를 사용하여 단어 빈도를 계산한 다음 큰 루트 힙을 사용하는 것입니다. 먼저 타이어 트리라고도 불리는 딕셔너리 트리를 소개하겠습니다. 검색 엔진은 이것을 텍스트 단어 빈도 통계를 만들기 위해 자주 사용하고 단어 분할 알고리즘도 이것을 기본 데이터 구조로 사용하기 때문에 이에 대해 조금 알고 있습니다. 장점은 불필요한 문자열 비교를 최소화하고 쿼리 효율성이 해시 테이블보다 높다는 것입니다. 핵심 아이디어는 공간을 시간으로 교환하고 공개 접두사를 사용하여 쿼리 시간 오버헤드를 줄이는 것입니다. 그래서 통계라고 하면 가장 먼저 떠오르는 것이 딕셔너리 트리이다. 단어 빈도를 계산할 때 최대 10개의 단어 빈도 배열을 유지하면 루프 처리에서 비교할 때 시간 복잡도가 10배 더 높아집니다. 따라서 먼저 통계를 만든 후 시간 효율성 측면에서 상위 10위를 선정하는 것이 더 적절하다.
사실 저는 알고리즘에 대해 잘 모르고 사용법만 알고 있어요. 내 전 동료가 내가 WeChat에 쓴 기사를 읽고 나에게 물었습니다: "피드 스트리밍이 매우 기술적인 작업입니까?" 그의 질문은 나에게 키가 크고 부자이며 잘생긴 척을 고집했던 "Sword of Immortals"의 Li Xiaoyao를 생각나게 했습니다. 식당에서 그가 가장 비싼 요리를 주문하고 싶다고 말했을 때, Ling'er는 Li Xiaoyao에게 "샤오야오 형제님, 야채를 곁들인 쇠고기 튀김이 아주 비싼 요리인가요?"라고 물었습니다. 동료가 JD.com에 있어서 제 의견을 진지하게 물어보고 모모로 갈까 고민 중이었지만 저는 마치 세상을 본 적이 없는 리샤오야오처럼 느껴졌습니다. 피드 흐름의 비즈니스 로직은 기술적인 내용이 있는지 여부에 따라 어떤 방식으로든 수행될 수 있습니다. 피드 스트림을 조립하는 방법을 소개하기 위해 특허를 작성했습니다. 프로세스가 완료되지 않았으므로 그때까지 계산 방법을 공개하지 않겠습니다. 하지만 열심히 생각해보면 아직 최적화 포인트가 많이 남아있습니다. 재작년 모먼츠 게임을 좋아했을 때, 내가 삭제한 모멘트가 다시 나타나거나, 나 자신이나 다른 사람의 모멘트에 있던 최근 데이터가 갑자기 모두 사라지고, 아주 오래된 데이터(예: 두 달 전)만 남는 경우가 종종 있었습니다. . 1년 전의 데이터는 하루 후에 자동으로 복원됩니다. 그것은 모두 전략의 문제입니다. WeChat Moments에는 많은 문제가 있습니다. 우리 제품 중 하나인 mm는 위챗 아키텍트의 가족이기 때문에 크게 불평하지는 않겠습니다.
오늘은 일요일이지만 상상력을 조금 발휘해도 되지만 테마가 있어야 합니다. 이전 예에는 고전적인 상위 K 문제가 있습니다. 검색 엔진은 가장 인기 있는 쿼리 문자열을 계산해야 하는 경우가 많기 때문에 상위 K 질문이 기본입니다. TopK 문제는 작은 루트 힙을 사용합니다. K 크기의 작은 루트 힙을 유지하고 비교할 요소를 순회하며 각각 다음 요소와 비교합니다. 루트 요소보다 작으면 반드시 상위 K에 들어가지 않고 제거된다는 의미입니다. 루트 요소보다 크면 루트 요소를 제거합니다. 그런 다음 트리를 최소 힙으로 조정하고 비교를 계속합니다.
최소 힙은 완전한 이진 트리이며, 리프가 아닌 각 노드의 값은 해당 하위 노드의 값보다 크지 않습니다. 이 규칙이 깨지면 리프가 아닌 첫 번째 노드부터 루트 노드까지 상향식 순서로 조정이 이루어져야 합니다.
다음주에 Hulu에서 인터뷰하기로 했는데 아직 안 했으니 아마 안 할 것 같아요. 2년 전, 전 동료가 아마존을 추천했지만, 당시에는 채용 중이 아니었던 것 같아 면접을 보러 가라는 요청을 받지 않았습니다. 외국 회사 면접을 이런 식으로 가본 적이 없어서 루틴이 어떤지는 잘 모르겠습니다. 지금부터 준비하면 아마도 국경절 이후에는 합격할 수 있을 것 같습니다. 면접에 혼자 가면 많이 불리할 것 같아요. 전혀 나쁘지 않을 것입니다. 매우 불안정할 것입니다. 내 글을 읽은 친구들은 내 글이 매우 난잡하고 복잡하다고 생각할 수도 있다. 이것은 실제로 내 인생의 경우입니다. 나는 폭넓은 지식을 갖고 있고, 매우 변덕스럽고 거리낌이 없습니다. 이는 한편으로는 창의성의 기초가 되지만, 다른 한편으로는 자신을 표현하는 능력에 도움이 되지 않습니다. 점. 뇌는 컴퓨터와 같습니다. 병렬 프로그램이 많고 메모리가 충분하지 않으며 데이터가 많습니다. 메모리 페이징으로 인해 지속적인 디스크 스와핑이 발생합니다. 인터뷰와 같이 시간에 민감한 작업은 쉽게 시간 초과 반환으로 이어질 수 있습니다. 나는 기술발명 특허를 너무 많이 갖고 있는데 지금은 내가 무엇을 발명했는지조차 기억나지 않는 것 같다. 그냥 버스를 탔어요. 사람이 거의 없어서 어디서 내릴지 물어보더군요. 사람이 내리지 않는 곳에 정차한다는 뜻이었습니다. 기억하는 데 오랜 시간이 걸렸습니다. 내 두뇌는 비동기식 비차단 모드에서 더 많이 작동합니다. 실제로 인터뷰와 같은 작업에는 동기식 차단이 더 좋습니다. 그러나 모든 것에는 해결책이 있습니다. 해결책을 찾을 수 없다면 단지 능력이 부족할 뿐입니다. 단, 면접은 팀워크, 대화능력 등 종합적인 능력을 검토하는 것입니다. 나는 우리 부서의 어느 누구도 "샤오징은 매우 똑똑하다"는 말에 이의를 제기하지 않을 것이라고 믿습니다. 또한, 부서나 직장에서 함께 협업하는 동료들은 나를 소통하기 어려운 사람, 어울리기 어려운 사람으로 생각하지 않을 것이라고 믿습니다. 그런데 저는 인터뷰할 때 말하는 방법을 잊어버리는 편이에요. 하지만 이 문제 때문에 면접에 실패하더라도 불만은 없습니다. 면접관은 미래의 동료이자 리더이기 때문에 면접관과 호흡이 맞지 않으면 앞으로 자신의 능력을 발휘하지 못할 수도 있습니다. 만약 당신이 면접에서 좋은 성적을 내지 못하더라도 여전히 자신의 능력이 충분하다고 느낀다면, 당신의 수준이 충분히 높지 않고 정말 뛰어난 사람들이 어떤 모습인지 본 적이 없을 가능성이 높습니다. 하지만 나는 벽에 부딪힐 때에도 계속해서 일을 하는 사람이다. 내가 뭔가를 포기하기로 결정했다면 그것은 할 가치가 없기 때문이다.
저는 일하는 것을 좋아하고, 60세가 되어도 창의적인 직업을 갖는 것이 목표입니다. 그래서 국내 인터넷 회사들이 40세에 은퇴를 허락해 줄까 두렵습니다. 한 가지 더 중요한 것은 나만의 검색 엔진 미들웨어를 만들고 싶다는 것인데, 국내 인터넷 회사들은 주로 사용자 중심으로 되어 있기 때문에 이를 할 수 있는 에너지를 갖기가 어려울 것 같습니다. 물론, Hulu에 갈 수 없다면 검색 엔진이 계속 해야 합니다. 단지 시간을 어떻게 배분하느냐의 문제일 뿐입니다.
사실 저는 벽에 부딪히는 걸 좋아하는데, 어쩌면 너무 빨리 어른이 되고 싶지 않아서일 수도 있어요. 매일매일 성숙하고 우아한 행동을 한다면, 자신이 잘 못하는 것, 잘못될 수 있는 것을 숨겨야 합니다. 결과적으로 나는 매일매일 행복하겠지만 평생 이대로 있을 수도 있다. 원래는 플레이보이였으나 집안이 쇠퇴하면서 위대한 인물이 된 인물들이 역사적으로 많이 있습니다. 책에는 인생의 두 가지 전환점이 있는데, 고귀한 사람을 만나는 것과 좌절을 만나는 것이다. 젊고 마음이 열려 있으면 고귀한 사람을 만나 마음을 열면 깨달음을 얻을 수 있습니다. 경험이 늘어남에 따라 사람들은 주변 정보를 더 선별적으로 받아들일 것입니다. 이때 인생을 다시 생각하기 전에 큰 좌절을 겪어야 할 수도 있습니다. 더 나은 미래를 볼 수 있다면 기꺼이 혼자 가서 배를 불태울 의향이 있습니다. 하루살이보다는 우여곡절을 겪는게 낫다. 살고 싶다면 멋진 삶을 살아라~~
위 내용은 프로젝트에서 일반적으로 사용되는 Linux 명령으로 인해 발생하는 고전적인 알고리즘 질문의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

Linux의 기본 구조에는 커널, 파일 시스템 및 쉘이 포함됩니다. 1) 커널 관리 하드웨어 리소스 및 UNAME-R을 사용하여 버전을보십시오. 2) Ext4 파일 시스템은 큰 파일과 로그를 지원하며 mkfs.ext4를 사용하여 생성됩니다. 3) Shell은 Bash와 같은 명령 줄 상호 작용을 제공하고 LS-L을 사용하는 파일을 나열합니다.

Linux 시스템 관리 및 유지 보수의 주요 단계에는 다음이 포함됩니다. 1) 파일 시스템 구조 및 사용자 관리와 같은 기본 지식을 마스터합니다. 2) 시스템 모니터링 및 리소스 관리를 수행하고 Top, HTOP 및 기타 도구를 사용하십시오. 3) 시스템 로그를 사용하여 문제를 해결하고 JournalCTL 및 기타 도구를 사용하십시오. 4) 자동 스크립트 및 작업 스케줄링을 작성하고 CRON 도구를 사용하십시오. 5) 보안 관리 및 보호 구현, iptables를 통해 방화벽을 구성합니다. 6) 성능 최적화 및 모범 사례를 수행하고 커널 매개 변수를 조정하며 좋은 습관을 개발하십시오.

시작시 init =/bin/bash 또는 단일 매개 변수를 추가하여 Linux 유지 관리 모드가 입력됩니다. 1. 유지 보수 모드를 입력하십시오 : 그루브 메뉴를 편집하고 시작 매개 변수를 추가하십시오. 2. 파일 시스템을 다시 마운트하여 읽고 쓰기 모드 : MOUNT-OREMOUNT, RW/. 3. 파일 시스템 수리 : FSCK/DEV/SDA1과 같은 FSCK 명령을 사용하십시오. 4. 데이터 손실을 피하기 위해 데이터를 백업하고주의해서 작동합니다.

이 기사에서는 데비안 시스템에서 Hadoop 데이터 처리 효율성을 향상시키는 방법에 대해 설명합니다. 최적화 전략에는 하드웨어 업그레이드, 운영 체제 매개 변수 조정, Hadoop 구성 수정 및 효율적인 알고리즘 및 도구 사용이 포함됩니다. 1. 하드웨어 리소스 강화는 모든 노드에 일관된 하드웨어 구성, 특히 CPU, 메모리 및 네트워크 장비 성능에주의를 기울일 수 있도록합니다. 전반적인 처리 속도를 향상시키기 위해서는 고성능 하드웨어 구성 요소를 선택하는 것이 필수적입니다. 2. 운영 체제 조정 파일 설명 자 및 네트워크 연결 : /etc/security/limits.conf 파일을 수정하여 파일 설명자의 상한을 늘리고 동시에 시스템에 의해 열 수 있습니다. JVM 매개 변수 조정 : Hadoop-env.sh 파일에서 조정

이 안내서는 데비안 시스템에서 syslog를 사용하는 방법을 배우도록 안내합니다. Syslog는 로깅 시스템 및 응용 프로그램 로그 메시지를위한 Linux 시스템의 핵심 서비스입니다. 관리자가 시스템 활동을 모니터링하고 분석하여 문제를 신속하게 식별하고 해결하는 데 도움이됩니다. 1. syslog에 대한 기본 지식 syslog의 핵심 기능에는 다음이 포함됩니다. 로그 메시지 중앙 수집 및 관리; 다중 로그 출력 형식 및 대상 위치 (예 : 파일 또는 네트워크) 지원; 실시간 로그보기 및 필터링 기능 제공. 2. Syslog 설치 및 구성 (RSYSLOG 사용) Debian 시스템은 기본적으로 RSYSLOG를 사용합니다. 다음 명령으로 설치할 수 있습니다 : sudoaptupdatesud

데비안 시스템에 적합한 Hadoop 버전을 선택할 때는 다음과 같은 주요 요소를 고려해야합니다. 1. 안정성 및 장기 지원 : 안정성과 보안을 추구하는 사용자의 경우 Debian11 (Bullseye)과 같은 데비안 안정 버전을 선택하는 것이 좋습니다. 이 버전은 완전히 테스트되었으며 최대 5 년의 지원주기가있어 시스템의 안정적인 작동을 보장 할 수 있습니다. 2. 패키지 업데이트 속도 : 최신 Hadoop 기능 및 기능을 사용해야하는 경우 Debian의 불안정한 버전 (SID)을 고려할 수 있습니다. 그러나 불안정한 버전에는 호환성 문제와 안정성 위험이있을 수 있습니다. 3. 커뮤니티 지원 및 자원 : 데비안은 풍부한 문서를 제공하고

이 기사에서는 Tigervnc를 사용하여 데비안 시스템에서 파일을 공유하는 방법에 대해 설명합니다. 먼저 tigervnc 서버를 설치 한 다음 구성해야합니다. 1. TigervNC 서버를 설치하고 터미널을 엽니 다. 소프트웨어 패키지 목록 업데이트 : sudoaptupdate tigervnc 서버를 설치하려면 : sudoaptinstalltigervnc-standalone-servertigervnc-common 2. VNC 서버 비밀번호를 설정하도록 tigervnc 서버 구성 : vncpasswd vnc 서버 : vncserver : 1-localhostno

데비안 메일 서버의 방화벽 구성은 서버 보안을 보장하는 데 중요한 단계입니다. 다음은 iptables 및 방화구 사용을 포함하여 일반적으로 사용되는 여러 방화벽 구성 방법입니다. iptables를 사용하여 iptables를 설치하도록 방화벽을 구성하십시오 (아직 설치되지 않은 경우) : sudoapt-getupdatesudoapt-getinstalliptablesview 현재 iptables 규칙 : sudoiptables-l configuration


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

WebStorm Mac 버전
유용한 JavaScript 개발 도구

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기
