개인 블로그 탐색 페이지 (클릭 오른쪽에있는 링크를 개인 블로그를 엽니) : 다니엘은 기술 스택에 당신을 데려 갈
이야기에 대한 몇 가지 흥미로운 질문
이러한 문제들은 좀 의심뿐만 아니라 학습 과정을 가지고, 개인 편지를 묻는 메시지가 표시됩니다.
Q : 저는 C 또는 C에서 최종 학교 ++, 또는 그들이 할 수없는 것을 가지 이유는 무엇입니까?
답변 : 프로그램 종료 언어학 정말 천재 와우 뭔가를 만들 수 있습니다! 언어 능력이 다음도했다한다, 실제로는 "작은"그 부분의 완료를 나타내고, 사실 여전히 작업 사이에 매우 큰 손이 격차 , 아래에 자세히 곧의 성능에 차이 프로그래밍 기본 사항 네 가지 + 응용 프로그램 연습 프로그램 .
질문 : 왜 C / C ++는 명령 행의 어둠 속에서 실행중인 물건을 쓰기? 이 물건은 정말 유용하다?
A : 이봐, 아무 소용의 프로그램의 명령 줄 작업 어둡게했다! 그들은 리눅스 시스템 명령 행 사용자 상호 작용 유명하고, 어둠 속에서 명령 줄 실행되는 리눅스를위한 많은 강력한 도구가 있습니다!
Q : 어떤 차이 결국 기술적 인 연구와보기의 실제적인 적용 점, C / C ++ 및 Java에서?
답 : C / C ++는, 자바, 그리고 그것은 확실히 동일하지 않습니다. 특히 C와 C ++, C ++의 미세 입도 언어, 다중 장치, 고성능 있지만,하지만 언어 자체의 부담도 정말 무거운, 우리는 언어의 "바퀴를 만드는"전화를 선호! C 언어와 C ++ 성능, 작은 크기, 그것은 아무것도 할 수 있기 때문이기도하다. 응용 분야는 매우 분명하다, 그래서 자바 언어 자체가 인터넷 소프트웨어 개발 (+ 클라이언트 개발의 백엔드 개발)에 대한 서비스, 그것은 "생태계"의 명확한 개념을 가지고있다. 나는 개인적으로 C와 C ++ 자바 작거나 프로그래밍 언어가 더 열심히, 자바, 결국, 순수 응용 프로그램 계층, C 및 C ++ 프로그래머가 높은 것으로 기능이 필요하다고 생각합니다.
작업 분석
, 작업 봐 미래에 무엇을 해야할지, 이것은 또한 자신의 학습 목표를 설정하는 데 도움이됩니다.
C와 C ++ 거의 모든 것을 할 수있는 언어 "바퀴를 만드는"입니다. 그러나 일반적으로 C와 C ++ 주로 배경 (서버) 이상을 포함하여 개발을 수행
- 통신 배경 개발
- 인터넷 회사 배경 개발
- 게임 개발 회사 배경
- ......
물론, 이러한 배경은 다음과 같은 특정 업무의 많은 세분 개발이 있습니다
- 데이터 처리 및 분석이 수행
- 기초 계약과 통신이 있습니다
- 우리는 최적화 된 기본 응용 프로그램 서버를해야
- 심지어 백 오피스 시스템과 커널 드라이버를 할
- ......
어쨌든, 아래 노선의 학습을 소개하고, 위의 모든 적용됩니다에 관한 것입니다. 그래서, 여기에 특정 학습 경로에 대해 뭔가 대답.
언어 자체를 학습
C 언어 :
- 외부 변수 조건 루프, 스트링, 어레이, 기능, 구조, 등 : 가장 기본 구문 이외에
- 그 중 가장 가장 가장 중요한 C 언어는 : 포인터, 메모리 관리, 기업 발전 먹고이 후에 따라,이 두 표준의 상황을 파악하기 위해 테스트 C 언어입니다
추천 도서 : "C 뇌관 플러스", " C 포인터", "C 프로그래밍 전문가"
C ++ :
- C 및 C ++ 언어는 참으로 다른 언어이지만, C ++ 언어는 정말 C의 확장, 그리고 C 언어에 추가 된 객체 지향 기능으로 이해 될 수있다. 개선하기 위해 코드의 복 만 객체 지향 특성 때문에 재사용 , 확장 및 엔지니어링 대규모 사업 필수적인 원소이며,
- 기본 C 언어의 모든뿐만 아니라, C ++는 또한 객체 지향 (캡슐화, 상속 및 다형성) 특성, 일반, 템플릿을 배울 필요가되고, STL 때문에
권장 도서 (순서가) : "효과적인 C ++와 같은" "C ++ 입문서", "C ++ 표준 라이브러리", "STL 소스 코드 분석", "C ++ 객체 모델의 깊이 탐사"
마지막으로 제안이다 : 눌러 그것을 아래로 빅뱅, 높은 강도를 좋은 시간을 계획해야합니다, 또는 쉽게 자신을 낙담하기 위해, 권고의 언어 부분이 너무 오래 지체하지 않는 배우.
기본 네 가지 프로그래밍
: 포함 개의베이스 부재 데이터 구조와 알고리즘 , 컴퓨터 네트워크 , 운영체제 , 디자인 패턴
이것은 프로그래밍 언어는 아무 상관이 후속 프로그램 방향의 종류 무엇인지, 단지 개발을 프로그래밍 할,이 네 가지 기본 컴퓨터가 피할 수없는 함께 배울 것입니다. 프로그래밍 언어의 네 가지의 기준에 비해 정말 더 중요하다고 말할 수있다! ! !
1, 데이터 구조와 알고리즘
직접 인터뷰의 성공 또는 실패를 결정이라고 할 수 있습니다! 같은 마음으로 배운 몇 가지 기본 데이터 구조 유형 : 문자열, 연결리스트, 이진 트리, 힙, 스택, 큐, 해시 등등, 물론 몇 가지 알려진 한 기본 알고리즘, 등, 찾아 정렬, 동적 프로그래밍, 분할 및 정복으로 등등.
LeetCode 브러시 제목을 권장합니다.
참조 : "서쪽으로 데이터 구조", "알고리즘", ""LeetCode 브러시 제목을 "안전 서비스를 증명하기 위해"
2, 컴퓨터 네트워크
: 컴퓨터 네트워크가 여기에 TCP / IP 프로토콜 스택을 의미, 어떤 경우에는 TCP / IP 프로토콜 스택이 잘 알려져에 있어야합니다, 그것은 현재의 인터넷 통신의 초석입니다 말할 수있는, 주요 원칙은 포함 배우고 마스터하는 것입니다 ARP 프로토콜, IP 프로토콜, ICMP 프로토콜, TCP 및 UDP 프로토콜, DNS 프로토콜, HTTP 프로토콜, HTTPS 프로토콜 .
추천 도서 : "TCP / IP는 상세"
3 운영 체제
이 부분의 하이라이트는 다음과 같습니다 원칙 관련 프로세스와 스레드 (원자, 동시성, 잠금 장치), 메모리 관련 원칙 (분산 메모리, 메모리 스케줄링)
추천 도서 : "심층는 컴퓨터 시스템의 이해."
4, 디자인 패턴
: 같은 일반적인 몇 가지로 모두 23 개 디자인 패턴, 기억 할 필요가 없습니다 부어 싱글, 공장 모델, 에이전트 모델, 전략 패턴, 템플릿 메소드 패턴 을 염두에 능숙 제안.
추천 도서 : "서쪽 디자인 모드", "선 디자인 패턴"
응용 프로그래밍 사례
이 섹션에서는 몇 가지 도구, 프로그래밍 환경, 특정 프로그래밍 연습을 포함 할 것이다, 완성의이 부분은, 그들이 뭔가를 수행하거나 코드를 실제 프로젝트의 일부를 읽을 수 있어야한다고 말했다한다.
연습의이 부분은, 나 또한 회사의 실제 경험하기 전에 내 통신을 결합하여 채팅을 볼 들었어요.
1, 리눅스는 사용 운영 체제
(저를 포함한) 많은 초보자 C 언어, C ++는 Windows 환경에서 수행하고, 리눅스 시스템이 있어야합니다, 그래서 실제 기업의 개발은 우리가 선택의 여지가, 거의 불가능합니다. 처음 사용합니다.
포함 : 일반적인 리눅스 운영 명령 , 기본 쉘 프로그래밍 .
추천 도서 : "새 형제 리눅스 개인 부엌"
2, 컴파일 / 디버그 도구
첫 번째는 컴파일러와 관련된 : 컴파일러 도구를!
우리는 많은 사람들이 컴파일이 코드에서 비슷한 비주얼 스튜디오 IDE 통합을 수행하는 ++, C를 C 언어를 배우고,이 사실 또한 컴파일러를 사용하는 것을 알고 있지만, 마이크로 소프트의 MS 컴파일러이며, 모든 작업이 가시화 될 수있다. 엔터프라이즈 개발은 리눅스 플랫폼에서 컴파일러는, 의심 할 여지없이 가장 일반적인 더 중요하다, 그래서 거의 Windows 기반 시스템입니다 GCC
, 심지어 일부 기업이 자신의 사용자 정의 크로스 컴파일러 툴이 있었다, 그러나 문제,만큼으로하지 않습니다 GCC
잘 알고, 다른 문제가되지 않습니다 큰.
둘째, 자기 C 언어, C는 ++, 우리는이 IDE와 유사한 VS가, 포인트 버튼은 소스 파일을 컴파일합니다. 액션 컴파일 기업의 실제 프로젝트라고 make
, 실제 행동과 컴파일 과정이에 기록 된 makefile
메이크 파일의 작성 규칙을 학습하는 것이 좋습니다 그래서, 파일!
그것이 올 때 마지막으로, 디버깅 , 리눅스 플랫폼 GDB
능숙하게 사용하는 도구를 디버깅, 그것은 디버깅에 의해 될 것입니다.
추천 정보 : 권장하지 않습니다 책의이 부분은, 좋은 영어 학생들은 직접 볼 수있는
GNU
공식에 게이트웨이GCC
와GDB
"함께 나와 함께 메이크 쓰기" "GDB와 debuging"(중국어 버전) 씨 첸 하오 : 문서, 중국어 물질을 볼 수 있습니다를
3, 리눅스 환경 프로그래밍
다시 말하지만, 기업 C 및 C ++가 거의 항상 리눅스 플랫폼을 기반으로, 우리는이 부분을 피할 수 없다
(1) 리눅스 시스템 프로그래밍
우리 모두 알고, 윈도우 API의 다양한 Windows 시스템 프로그래밍, 그것은 훨씬 더 중요하다 리눅스 시스템 공감 API를 사용합니다.
(2) 멀티 스레드 프로그래밍
여기에 멀티 스레드는 일반적으로 관련 물건을 프로그래밍, 그리고 실천을 의미는 다음과 같습니다 일부 스레드, 자원, 신호 동기화, 상호 배제, 잠금, 그래서 특정 프로그래밍 방법을.
(3) 네트워크 프로그래밍
네트워크는 여기 프로그래밍은 주로 리눅스 시스템에서 특정 네트워크 프로그래밍을 의미 API
및 IO
프로그래밍 관행 기능.
권장 도서 :이 세 부분이 함께 통합, 반드시가 봐야 할 책 "유닉스 수준의 프로그래밍 환경"을 포함, "리눅스 고성능 서버 프로그래밍", "POSIX는 프로그래밍 멀티 스레드"추천
첨부 자바 / C / C ++ / 기계 학습 / 알고리즘 및 데이터 구조 / 프런트 엔드 / 안드로이드 / 파이썬 / 프로그래머 읽기 / 하나의 책 책 Daquan의 :
(건조 개인 블로그에이 열 오른쪽 클릭) : 기술 건조한 꽃을
===== >> ① [자바 다니엘은 진보의 길에 당신을 데려] << ====
===== >> ② [+ ACM 알고리즘 데이터 구조 다니엘 진보에 도로에 걸릴] << ===
===== >> ③ [데이터베이스 다니엘 진보에 도로에 걸릴] << == ===
===== >> ④ [다니엘 웹 프런트 엔드는 고급가는 길에 당신을 데려 갈 수 있습니다] << ====
===== >> ⑤ [기계 학습 파이썬 다니엘은 당신에게 항목을 고급 도로] << ====
===== >> ⑥ [건축가 다니엘은 진보의 길에 당신을 데려] << =====
===== >> ⑦ [C ++ 다니엘은 도로에 당신을 데려 갈 고급] << ====
===== >> ⑧ [다니엘은 진보의 길에 당신을 데려 갈 IOS] << ====
=====> > ⑨ [웹 보안 다니엘은가는 길에 당신을 데려 갈 고급] << =====
===== >> ⑩ [리눅스 운영 체제와 다니엘은 진보의 길에 당신을 데려] << = ====더 불로 과일이 없다, 당신이 젊은 친구가, 친구가 기술을 배우고 싶은 희망, 도로의 방법으로 모든 장애물을 극복, 기술에 묶어 책을 이해 한 다음 코드에 노크, 원리를 이해하고 연습을 갈 것입니다 결정 그것은 당신의 미래, 당신에게 꿈을 생활, 직장을 가져올 것이다.