精华内容
下载资源
问答
  • Py:python利用easygui实现最简单GUI带你学习区块链技术的发展和由来 目录 输出结果 实现代码 输出结果 实现代码 # -*- coding: utf-8 -*- ''' Created on 2018年3月11日 @author: niu ''' import...

    Py:python利用easygui实现最简单GUI带你学习区块链技术的发展和由来

     

    目录

    输出结果

    实现代码


     

    输出结果

     

    实现代码

    # -*- coding: utf-8 -*-
    '''
    Created on 2018年3月11日
    
    @author: niu
    '''
    
    
    import easygui as g
    import sys
    
    while 1:
            g.msgbox("欢迎来到Jason niu工作室\n嗨,欢迎进入区块链发展知识论坛^_^")
            msg ="请问你希望在Jason niu工作室学习到什么知识呢?"
            title = "Decentralization&Internet"
            choices = ["P2P下载", "P-CDN", "分布式计算", "社交媒体", "P2P借贷", "众筹", "区块链", "DAO","ICO","比特币"]
            choice = g.choicebox(msg, title, choices) 
            g.msgbox("你的选择是: " + str(choice), "结果")
            msg = "你希望重新开始选择学习模块吗?"
            title = "请选择"
            
            if g.ccbox(msg, title): 
                    pass            
            else:
                    sys.exit(0)     
    

     

     

    展开全文
  • JAVA后端应该学什么技术

    万次阅读 多人点赞 2019-07-01 16:17:34
    Java语言是常见的后端开发语言之一,Java语言由于自身具备构建多线程的能力,且体系结构比较中立,所以在大型互联网平台的开发中得到了广泛的采用。 目前要想从事Java的后端开发应该学习以下内容: 第一,...

    Java语言是最常见的后端开发语言之一,Java语言由于自身具备构建多线程的能力,且体系结构比较中立,所以在大型互联网平台的开发中得到了广泛的采用。

    目前要想从事Java的后端开发应该学习以下内容:

    第一,Servlet技术。Servlet技术是Java后端的重要技术之一,作为Java Web开发的核心组件,Servlet承担了Web MVC结构中的核心作用(功能导航)。传统的Model2结构(Servlet+JavaBean+JSP)虽然在目前已经很少使用了,但是Web开发的基本结构依然没有改变。Servlet技术的应用涉及到Web容器、会话(HttpSession)、安全、同步、Web应用部署等相关内容。

    第二,Java操作数据库。后端开发免不了与数据库打交道,所以掌握Java的数据库操作是一个基本要求。Java操作数据库涉及到的内容有JDBCJNDIRMIDAO等内容,其中使用RMI+JDBC是构建java数据库开发的一个常见的解决方案,而JNDI则是对各种资源的定义。

    第三,Spring框架。Spring+SpringMVC+MyBatis是目前一个比较常见的后端开发方案,Spring的原理就是构建了一个业务组件容器SpringMVC则是Web MVC的一个具体实现框架,而MyBatis则是一个基于DAO的实现框架。从性能的角度来说,Spring是EJB的轻量级解决方案,得到了广大Java程序员的欢迎。如果有Servlet以及数据库操作的基础,那么学习这几个框架的使用是一件非常轻松的过程。虽然基于Spring的编程比较方便,但是Spring也有缺点,比如配置文件过于繁琐。

    第四,结合hadoop构建Java的分布式开发。Java的分布式开发是提高Java后端处理能力的重要内容,RMIJava分布式开发比较常见的解决方案,学习起来也比较简单。在学习完RMI之后可以进一步学习在Hadoop平台(大数据平台)下构建Java的分布式应用,另外Docker(云计算常用)也是一个不错的构建分布式开发的平台。

    Java开发涉及到的内容比较多,需要一个系统的学习过程,建议在实际使用过程中学习,这样效果会更好。

    本文分享到此就结束,以上就是我对Java后端需要掌握哪方面的技术的一个简单分享,希望对你们会有所帮助,如果你现在也在学习Java,在入门学习Java的过程当中有遇见任何行业,技术方面的问题,你都可以加入我的Java学习交流群:https://jq.qq.com/?_wv=1027&k=5wobSeD 里面有我从去年到现在,根据市场技术栈需求录制的最新视频教程,群文件里面还有我这几年整理的学习手册,面试题,开发工具,PDF文档教程,需要的话可以自己去下载。

    展开全文
  • Linux到底学什么

    万次阅读 多人点赞 2019-09-27 21:07:57
    来源:公众号【编程珠玑】 作者:守望先生 ... 前言 ​我们常常听到很多人说要学学Linux或者被人...在回答学什么之前,我们先看看为什么。首先我们需要认识到的是,很多服务器使用的是Linux系统,而作为服务器应...

    来源:公众号【编程珠玑】

    作者:守望先生

    网站:https://www.yanbinghu.com/2019/09/25/14472.html

    前言

    ​我们常常听到很多人说要学学Linux或者被人告知说应该学学Linux,那么学Linux到底要学什么?

    为什么要学Linux

    在回答学什么之前,我们先看看为什么要学。首先我们需要认识到的是,很多服务器使用的是Linux系统,而作为服务器应用程序的开发者或者维护者,如果不了解Linux的基本使用,该如何进行开发或者维护呢?

    当然,也有可能你听说Linux更高大上,或者是说Linux对开发者更加友好(Windows用户把刀放下),这都是题外话了。

    在我看来,学习Linux主要有以下两点原因

    • 使用标准C/C++ 编写运行在Linux上的应用程序

    • 编写部署在Linux上的应用程序,如Python,Java web服务程序

    • 一探究竟。众所周知,Linux开源,windows并非如此。

    而对于Python,它有Python解释器,Java有Java虚拟机,他们实际上对Linux的需求是没有C/C++来的高。即便如此,Linux也是值得Python/Java开发者去学习的。如果你是做C/C++开发,那么Linux是必备的,还记得当前被VC6支配的恐惧吗?

    Linux学习方向

    那么一般说的学Linux是要学什么呢?方向不同,要学习的内容也不同,可以大致分为这么几个方向:

    • 运维,维护Linux服务器

    • 应用开发,开发Linux应用程序

    • 底层开发

    我本人是做Linux应用开发的,因此对于运维方向和底层方向不是很了解,这里仅简单说一下。

    运维Linux主要需要学会对服务器的基本部署,监控,配置,管理等等, 你可以认为,这些机器归你管了,7*24小时保障它能正常提供服务(删库跑路就别做了),所以7月24日请对运维的朋友好点。也欢迎运维的朋友留言纠正或者补充我的说法。

    底层开发需要了解uboot,文件系统,内核等底层相关内容,主要工作可能涉及文件系统裁剪,驱动开发,内核模块定制(如内存管理,进程调度)等等。底层开发总体来说要求比较高。

    应用开发自然是需要学习如何开发在Linux上运行的应用程序,如何定位Linux应用程序问题等等。

    来源:公众号【编程珠玑】 作者:守望先生

    Linux应用开发学什么

    Linux的学习很多会以命令为主,因而初学会觉得枯燥甚至疑惑,鼠标点点点就能完成的事,为什么要劈里啪啦敲这么多?这里给出两点理由,也欢迎你补充:

    • 出于资源的考虑,绝大部分Linux服务器没有图形界面

    • 命令行便于自动化,将一系列操作写入脚本,可代替手动操作

    而它的学习我把它分为这么几个阶段:

    • 基本使用

    • 开发调试

    • 系统认识

    这三个阶段对知识积累的要求不一样,但总体来说并没有严格的先后之分。

    类于windows,当年你学习windows的时候学了什么?

    • 开关机?

    • 安装卸载软件?如安装视频播放器,音乐播放器(为啥要安这玩意?)。

    • 如何打开安装的软件?如打开浏览器上网,打开编辑器写文档

    • 如何存放自己的资料?移动,创建,删除等等

    • 如何使用office 办公软件

    • ……

    是不是想想好像也没有特意地去学习?

    那么对于学习Linux来说也是类似的,就是学会这些最普通的使用,

    • 如何开关机

    • 如何上网

    • 如何打开命令行

    • 如何使用命令行安装卸载软件

    • 如何编辑文本

    • 如何创建,移动,删除文件

    • 如何查看文件内容,解压缩文件

    • ……

    这个阶段最难的就是从图形界面到命令行的转换

    那么第二阶段呢,就需要学会:

    • 如何编写Linux应用程序

    • 如何编译或者构建你的程序

    • 如何运行你的程序

    • 如何定位程序bug

    而第三阶段,则是一个需要漫长的学习过程,但都是为开发服务,包括:

    • 理解并践行一切皆文件

    • ELF文件,Linux主要可执行文件格式

    • Linux各大机制的基本原理,如进程调度,内存管理,虚拟内存,文件系统等,既然要写Linux应用程序,怎么能不了解它所在平台的主要机制呢?

    越是疑难问题,越需要这些最基本的知识。

    怎么学?

    来到了大家最关心的问题了,同样的,每个人的情况不太一样,这里只给出我的个人建议。

    关于第一阶段,你可以先定个小目标,例如一段时间内学会在Linux下进行你的日常活动(玩游戏就算了),例如编写文档,看视频等等。同时建议:

    • 选择主流的发行版,如ubuntu,centos等,遇到问题时比较容易解决

    • 在window下安装虚拟机,这样Linux环境就随你折腾了

    在这期间,你可能需要了解

    这里的学习你可以通过网上搜索资料或者购买相关书籍进行操练。如果你不想安装虚拟机或者docker,你可以通过一些在线的Linux来体验。

    第二阶段也是主要的阶段,这一阶段要学习的东西非常多,多是命令的学习,这里同样可以参考《鸟哥的Linux私房菜》。不过初期阶段建议抱着一个目的去学习,就是如何在Linux写一个完整的程序,为了达到这个目的你需要学习

    这个过程涉及到的命令非常多,但是不建议每一个都去细学,首先知道有这么一个命令即可,然后需要的时候能够快速找到用法,如通过man命令查看手册。总之,记住你的目标就是流畅地进行开发调试,而在达成这个目标地过程中,你自己自然会慢慢接触很多东西。

    但是有必要说明的是,开发Linux应用程序并不一定要在Linux下编写代码,你可以选择利用samba等工具在windows和linux之间共享文件,然后再在windows下熟悉的工具中或者你认为比较强大合适的工具中编写代码,在Linux下进行编译调试即可。当然你也可以选择Linux下的IDE,或者将vim调教一下也是可以的。

    第三阶段要求是比较高的,这个时候你应该学习过操作系统的相关课程(如,《现代操作系统》,《操作系统原理》等),然后你可以通过诸如《Linux内核设计与实现》,《深入Linux内核架构》,《深入理解Linux内核》等书籍进行相关概念学习,也可以通过阅读源码进行深入学习,最终,你需要了解堆和栈,内存管理,进程调度,虚拟内存,文件系统等相关知识。
    当然相关命令学习也必不可少,例如readelf,nm,ipcs,iostat,objdump,free,chrt,pmap,uptime,top,pidstat等。

    以上就是三个阶段Linux相关的学习内容和建议,实际上其他相关内容的同步学习也非常重要,包括相关数据结构与算法,系统编程,计算机网络等内容的学习,否则看到很多命令的结果仍然会一脸懵逼。

    最后,建议实践再实践

    总结

    限于本人知识水平有限,以上属个人建议和看法,仅供参考,欢迎留言说说你为什么要学Linux,有什么学习方法?

    推荐阅读:

    linux常用命令--开发调试篇

    Linux常用命令--文本查看篇

    Linux常用命令--系统状态篇

    Linux常用命令-解压缩篇

    关注公众号【编程珠玑】,获取更多Linux/C/C++/Python/Go/算法/工具等原创技术文章。后台免费获取经典电子书和视频资源

    展开全文
  • 计算机科学与技术专业:主要学什么? 本文主要包括如下内容: 程序员职位要求 CS 专业课程列表 怎样寻找资源学习? 程序员高薪排行榜 程序员职位要求 看课程之前,我们先来看看 BAT 的招聘岗位 JD: 新...

    计算机科学与技术专业:主要学什么?

    本文主要包括如下内容:

    • 程序员职位要求
    • CS 专业课程列表
    • 怎样寻找资源学习?
    • 程序员高薪排行榜

    程序员职位要求

    看课程之前,我们先来看看 BAT 的招聘岗位 JD:

    新零售技术事业群-java开发-淘系技术部 

    https://job.alibaba.com/zhaopin/position_detail.htm?positionId=71138

    岗位要求:

    1. JAVA基础扎实,理解IO、多线程、集合等基础框架,对JVM原理有充分的理解,有大型应用JVM参数调优经验优先。
    2. 5年以上使用JAVA开发的经验,对于用过的开源框架,能了解到它的原理和机制, 有开源作品且或参与开源社区贡献者优先;具备三年以上大型分布式系统开发和架构经验; 在后台技术上有长期积累和专长, 熟悉分布式系统的设计和应用,熟悉分布式、缓存、消息和存储等机制;能对分布式常用技术进行合理应用和技术方案落地。
    3. 有2B产品架构的经验,制造业IT架构经验, 熟悉微服务架构,Serverless等方面者优先。
    4. 热爱技术研发,具有快速学习能力;注重代码质量,有良好的软件工程知识和编码规范意识。
    5. 具有高度的抽象设计能力, 思路清晰, 善于思考, 能够独立分析和解决问题, 责任心强; 具备良好的团队合作精神和风险预判能力, 对系统的压力和瓶颈针对性的优化和解决方案落地。

     

    高级Java开发工程师/技术专家-研发中台

    https://job.alibaba.com/zhaopin/PositionDetail.htm?positionId=69877

    岗位要求:

    1、具有三年以上互联网/软件行业工作经验;
    2、对各种开源的框架如 Spring、Mybatis、tomcat、netty、dubbo 等有深入的了解,对框架本身有过开发或重构者可优先考虑;
    3、具备系统调试、性能调优等技能,对疑难技术问题具备较强的排查能力。有强烈的责任心和使命感;
    4、有大规模、高吞吐量的系统开发实践经验优先;有流程引擎开发经验或serverless化平台开发经验或业务平台建设经验的优先;
    5、对技术富有热情,能关注Java或互联网行业技术发展趋势,勇于创新开拓;

     

    Java开发技术专家

    https://job.alibaba.com/zhaopin/PositionDetail.htm?positionId=66575

    岗位要求:

    1. Java基础扎实,对集合、IO、反射、多线程、NIO等高级特性有深入的掌握,对JVM原理、GC机制有较好的理解。
    2. 5年以上的JAVA系统开发经验,精通面向对象设计,对项目中接触过的开源框架、技术产品、算法等有针对性的进行过深入学习,了解其底层机制和原理。
    3. 有实际中大型系统设计经验,能有效利用技术手段解决实际业务需求。
    4. 对技术富有热情,能关注JAVA或互联网行业技术发展趋势,勇于尝试、敢于推动。
    5. 良好的沟通能力,勇于担当,能和团队形成合力。
    具备以下能力或经验者优先:
      分布式环境下高可用程序设计和实现(如银行、证券等高可用系统)。
      信息距离理论基础,智能问答系统、爬虫系统设计和实现。
      统一数据接口层或类似平台的架构经验(如开放接口平台、GraphQL等)。

    25928-后台开发高级工程师(深圳)

    IEG | 深圳 | 技术 | 2019年09月09日

    工作职责

    • 负责游戏AI在线服务,包括但不限于在线预测模块,任务调度模块以及运营监控模块;
      负责相关系统模块的设计、开发与维护,确保相关系统稳定运行。

    工作要求

    • 本科或以上学历,2年以上相关开发经验;
      精通至少一门服务器端编程语言(PHP/Python/NodeJS/C++)
      责任感强、有较强的逻辑思维能力、沟通能力和抗压能力;
      具备后台开发的能力及系统运维的能力者优先。

    https://careers.tencent.com/jobdesc.html?postId=1123176064093261824

     

    30360-用户增长大数据后台高级工程师

    PCG | 深圳 | 技术 | 2019年09月09日

    工作职责

    • 负责推荐平台架构,AI平台,增长/数据画像DMP后台建设,并优化实时/离线大数据处理流程;
      负责QQ海量用户数据模型开发管理,etl处理,画像建设;
      结合QQ平台业务,优化大数据融合流程架构,提升画像挖掘算法性能。

    工作要求

    • 精通spark/flink/hadoop/hbase等分布式计算技术,熟悉其运行机制和体系结构
      精通python/scala/java任意一门编程语言,熟悉c++/golang;
      熟悉业界主流大数据解决方案整体架构,两年以上数据仓库架构/应用经验;
      具备一定的机器学习背景,有算法相关项目开发经验;
      善于发现问题解决问题,良好的编程习惯,优化意识;
      优秀的团队合作沟通能力,较强的学习能力和进取心;

      计算机相关专业,2年以上工作经验;
      熟悉网络编程.数据库等后台开发知识尤佳。

    https://careers.tencent.com/jobdesc.html?postId=1125300900185772032

     

    CS 专业课程列表

    Computer Science is the study of computers and computational systems. Unlike electrical and computer engineers, computer scientists deal mostly with software and software systems; this includes their theory, design, development, and application.

    Principal areas of study within Computer Science include :

    artificial intelligence, computer systems and networks, security, database systems, human computer interaction, vision and graphics, numerical analysis, programming languages, software engineering, bioinformatics and theory of computing.

    Although knowing how to program is essential to the study of computer science, it is only one element of the field. Computer scientists design and analyze algorithms to solve programs and study the performance of computer hardware and software. The problems that computer scientists encounter range from the abstract-- determining what problems can be solved with computers and the complexity of the algorithms that solve them – to the tangible – designing applications that perform well on handheld devices, that are easy to use, and that uphold security measures.


    1.计算机导论:


    计算机科学的基础课程之一,其教学目的是概要性地对专业课程作介绍,是典型的面向专业新生的课程(即CS0型课程)。认真学习该课程有助于今后的学习,然而这门课程往往容易被新生们忽略……

    涵盖了计算机专业的主要内容:计算机硬件和软件的基本概念,包括数据存储、数据处理、数据输入和输出、操作系统、算法、高级程序设计语言、数据结构。计算机网络和Intemet。微机组成。
    (推荐教材:可使用学校配发的教材,但建议使用外版翻译教材。)


    2.高级语言程序设计:
    计算机科学的基础课程之一,教学目的是让本专业同学实际掌握一门程序设计语言并且习得一些程序设计的基本技能,目前的教学语言是C语言。个人认为课程名称可改为“高级程序设计语言”,因为课程对语言的强调远胜于对程序设计本质的讲解。建议在学习这门课程时配以《程序设计实践》一书,效果甚佳。
    (推荐教材:
    ①《从问题到程序——程序设计与C语言引论》 机械工业出版社
    ②《程序设计实践》 机械工业出版社
    ③《程序设计语言——实践之路》 电子工业出版社 )


    3.离散数学:
    计算机科学基础课程之一,被誉为计算机科学的数学基础。其内容博大精深,从中派生出的图论(图算法)、数理逻辑、组合数学以及泛代数等多门专业课程是现代计算机科学和应用数学的主要研究领域。能否学好离散数学对进一步学习以后的专业课程有着非同一般的影响。
    (推荐教材及参考书:
    ①《离散数学》(第四版) 清华大学出版社
    ②《离散数学导学》机械工业出版社
    ③《现代应用数学手册:离散数学卷》清华大学出版社 )


    4.电路与电子技术:
    电子产业有“朝阳产业”的美誉,被认为是信息时代的工业。这门电子与电路技术可谓是对电子学领域学习的敲门砖。虽然课程本身对计算机科学专业今后的学习影响不大,但掌握这项技能对于学生本身专业素养地提高是大有裨益的。同时,学习这门课程也能为今后学习数字逻辑和微机原理等系统底层方面的课程打好基础。
    (推荐教材:《电子学基础:电路和元器件》(第四版)清华大学出版社)


    5.面向对象程序设计:
    如果说上世纪软件开发领域最伟大的突破是什么,面向对象程序设计(OOP)必为其中之一。目前主流的程序设计语言,如C++、Java、Python和Delphi等,几乎清一色支持面向对象。可以说,掌握的面向对象的精髓,便是掌握了我们这个行业的入门钥匙。我校此课程的教学语言采用的是C++,而就国内C++教学的糟糕现状来看,若想完整掌握面向对象思想,学生自己不努力是不行的。
    (推荐教材及参考书:
    ①《C++ Primer中文版》(第四版) 人民邮电出版社
    ②《Essential C++ 中文版》华中科技大学出版社
    ③《Effective C++ 中文版》(第三版)电子工业出版社
    ④《Accelerated C++(影印版)》机械工业出版社
    ⑤《C++语言的设计与演化》机械工业出版社 )


    6.数字逻辑:
    计算机科学核心课程之一。计算机科学中有一个研究领域即系统设计领域,而本门课程即为这一领域研究的基础。正确认识与掌握数字逻辑及其设计,可以使那些有志于系统底层开发的学生获益匪浅。
    (推荐教材:
    ①《数字基础(第八版)》清华大学出版社
    ②《逻辑与计算机设计基础》 中国电力出版社 )


    7.数据结构与算法:
    计算机科学核心课程之一。对数据地有效组织是程序的主要任务之一,算法的主要操作对象亦为数据结构。从简单的数组和链表,到各色高级的抽象数据类型(ADT),数据结构在程序设计中的地位不言而喻。学好数据结构,是进一步学习专业课的基本前提。可以这么说,一个不懂得如何组织和操控数据的学生,根本就不配当我们计算机科学专业的学生,更不配当一名程序员!!!
    (推荐教材:
    ①《C算法 第一卷(第三版)》人民邮电出版社
    ②《程序设计抽象思想——C语言描述》清华大学出版社
    ③《数据抽象与问题求解——C++语言描述(第四版)》清华大学出版社
    ④《数据结构与算法——Java语言描述》机械工业出版社 )


    8.计算方法:线性代数、微积分、微分方程等的计算机算法


    9.计算机原理与汇编:
    系统底层课程之一,亦为计算机科学核心课程。重点讲述计算机(微机)构造以及低级语言——汇编语言的基础知识。学习这门课程,对进一步学习编译原理等专业高级课程有很大帮助。
    (推荐教材:
    ①《深入理解计算机系统》中国电力出版社
    ②《Intel汇编语言程序设计(影印版)》清华大学出版社
    ③《Windows环境下32位汇编语言程序设计(第二版)》电子工业出版社
    ④《汇编语言编程艺术》清华大学出版社 )


    10.操作系统:
    计算机科学的核心课程之一。课程全面讲述了操作系统的原理与构造,各类上机实验更能让学生对操作系统有深刻地理解。
    (推荐教材:
    ①《操作系统(第三版)》机械工业出版社
    ②《现代操作系统(第二版)》机械工业出版社
    ③《Linux内核设计与实现(影印版)》机械工业出版社
    ④《UNIX系统编程》机械工业出版社
    ⑤《UNIX环境高级编程(第二版)》人民邮电出版社 )


    11.软件工程:
    计算机科学的核心课程之一。近年来,随着软件开发革命地进一步深化,批判软件工程及过程方法改进的著作日益丰富,我们也得以从不良的软件开放中解放。建议在学习本课程时,联系自己的实战,并阅读批判软件工程和改良软件工程的著作。
    (推荐教材及参考书:
    ①《软件工程:实践者的研究方法(第五版)》机械工业出版社
    ②《程序设计心理学(银年纪念版)》清华大学出版社
    ③《人月神话(银年纪念版)》清华大学出版社
    ④《人件》清华大学出版社 )


    12.数据库原理及应用:
    计算机科学与信息学科的好像课程之一。课程讲述了数据库原理以及设计等方面的内容。对于那些注重实效的学生而言,学好这门课程,可以使今后的工作更为轻松。
    (推荐教材:《数据库系统概念(第四版)》机械工业出版社)


    13.运筹学及其算法:线性规划、动态规划、排队论、决策分析等
    此课程课作为计算机科学的辅助课程,向学生介绍了运筹学方面的算法,此类算法属于现代算法范畴,本人暂时还未涉猎,故恕难对此课程解析之…… (推荐教材:待定)

    14.计算机网络:
    计算机科学的核心课程之一。课程详细地介绍了计算机网络的发展、组成和协议方面的内容。对于自我要求较高的同学而言,学好这门课程义不容辞!
    (推荐教材:
    ①《计算机网络(第四版)》清华大学出版社
    ②《TCP/IP协议族》清华大学出版社 )
    15.软件开发管理:
    应该是软件工程课的附属课程吧,不详。 (推荐教材:待定)
    对于工程,管理重于技术

    16.数学建模:
     

    17.J2EE体系结构:
    J2EE是目前我们产业的两大工业平台之一,学习这门课程,可以为今后涉足企业级开发领域打下基础。但请注意,J2EE和Java语言本身都是在不断演进的,因而如果不能在课程结束后持续学习相关技术,恐怕还不等你出大学校门,这门课的内容就已经过时了…… (推荐教材:最新的国外相关教材。)


    18.计算机图形学:
    计算机科学的核心课程之一。有关计算机图形学在各个领域的应用不必在下一一说明了吧。无论是游戏开发,还是航空航天等前沿领域,到处都有计算机图形学的技术被应用。目前该课程主要用C语言和OpenGL图形库进行教学,效果应该还算不错。
    (推荐教材及参考书:
    ①《计算机图形学原理与实践-C语言描述(第二版)》机械工业出版社
    ②《交互式计算机图形学——基于OpenGL的自顶向下的方法(第四版)》清华大学出版社
    ③《OpenGL超级宝典(第三版)》 人民邮电出版社 )


    19.微型计算机技术:
    计算机专业的核心课程之一。课程详细地分析了微型计算机(主要是单片机)技术,由于这方面资料奇缺,这门课程可不太受在下欢迎…… (推荐教材:待定)

    20.编译原理:
    计算机科学核心课程之一。如果想要写出好的程序,编译原理的相关知识必不可少,因而这门课程是十分重点的一门课程。课程教材“龙书”、“虎书”和“鲸书”更是我们专业的经典著作。
    (推荐教材:
    ①《编译原理》机械工业出版社
    ②《现代编译原理——C语言描述》人民邮电出版社
    ③《高级编译器设计与实现》机械工业出版社 )


    21.Web系统开发:
    目前主流的web开发主要集中在ASP.NET和JSP开发领域 ,当然,还有近来火爆异常的Ajax,以前的CGI和ASP已经不那么流行了。与J2EE一样,这是一门必须持续学习的课程,否则,你必将被其所抛弃! (推荐教材:最新国外相关书籍。)


    22.嵌入式软件开发:
    这个领域可谓是软件开发的前沿领域,也是未来软件业霸主的孕育地之一(另两个领域为Web开发和企业级开发)。目前的软件开发领域正蕴含着“泛嵌入式”的潜规则(《程序员》2006年7月刊)。认真并持续学习这门课程,对将来的工作会有莫大的帮助。 (推荐教材:《嵌入式系统开放大全》人民邮电出版社)


    23.算法设计与分析:
    计算机科学的核心课程之一。“程序是衣,算法为魂”(《程序员》2006年3月刊),这门课程是本专业学生所亟需掌握的,如果学不好这门课,那么,你就不是一名优秀的程序员!
    (推荐教材:
    ①《数据结构与算法分析-C语言描述》机械工业出版社
    ②《C算法 第一卷 (第三版)》人民邮电出版社 )


    24.情报检索与利用

     

    怎样去寻找资源学习?

     

    我搜集了一些资源,放到这个组下面了:

    https://github.com/ComputerSchool2019

     

    全球最大的程序员社区:Github

    https://github.com/search?q=%E8%AE%A1%E7%AE%97%E6%9C%BA

     

     

    Stack Overflow:2019全球编程语言高薪排行榜

     

    近日,Stack Overflow 发布了 2019 年的最新调查结果,总结了不同编程语言在行业中可能获得的薪水。当然,在这个过程中也需要关注一些其他因素,比如:语言对使用者是否友好,这有助于更快地学习语言;是否与现在的科技趋势相关。(注:该数据根据 Stack Oveflow2019 年关于编程语言薪酬排行开发者调查报告得出。)

    全球十大收入最高的编程语言

    如上图是全球前十大收入最高的编程语言排名,但根据调查,收入与地域之间也是有区别的,比如在美国,Scala 的收入最高,可以达到 143k 美元,其次是 Clojure(139k 美元)、Go(136k 美元)、Erlang(135k 美元)、Objective-C(132k 美元);在印度,Clojure 和 Rust 收入最高。

    工作经验与薪水

    工作经验与薪酬肯定是相关的,但根据调查,有些编程语言无论工作经验多少,薪资都比较高好,而有些编程语言无论多少年工作经验都很一般。

    如上图,红圈的大小不同代表着受访者人数的范围不同,横轴代表着工作经验(年数),纵轴代表着薪资中位数。

    不难看出,使用 Clojure、F#、Scala、Go、Rust 和 R 语言的开发人员,虽然工作经验并不见得非常多,尤其是 Rust、R、Ruby 和 Go,也会获得不少的薪水。然而,PHP、Java、C、C++,即使有多年开发经验,薪水也很难有比较高的提升。

    职位与薪水

    当然,薪酬高低也与所从事的职业有非常大的关系。根据对全球四大 IT 市场的调查,DevOps 专家全部高居榜首,可见市场对这一技术的需求量有多大。除此之外,数据科学家、全栈工程师、嵌入式开发工程师、桌面开发人员的市场受欢迎度均较高。

    如果按照职位来划分,薪水又会出现一些不同。管理岗位的薪水肯定会略高一些,其余基本与市场需求相对应,DevOps 专家的薪水可以达到 71k 美元,数据或者机器学习专家的薪水可以达到 61k 美元,全栈开发者的薪资为 57k 美元,后端开发者略低一些为 56k 美元。

    中国热门编程语言收入情况

    国内整体的薪资水平要略低于全球,需求量较大的依旧是 Java、Python 这类语言。如果与全球薪资较高的编程语言比的话,如果对国内主流招聘网站进行统计,以“Go 语言”为关键字在全国范围搜索,热门地区(北上广深等需求量较大的城市)月薪基本集中在 15-30k 人民币之间,一线互联网大厂的薪酬确实更具竞争力,比如 BAT、高德、奇虎 360、滴滴等,不仅给出的月薪更高(25-60k 之间浮动),不少还明确标出可以给 14 至 16 个月的薪水,而所要求的工作经验基本都在 3 到 5 年。

    至于 Scala 语言,整体薪水确实比 Go 语言略高一些,在没有筛选的情况下,首页出现的大部分薪资集中在 20-50k 之间,这一结果倒是与全球的调查报告相匹配。

    此外,在国内几个招聘网站进行搜索,都没有找到太多有关 Clojure 的招聘需求,样本数量太少,很难判断这一岗位的薪资情况,但可以看出国内对此的需求极低,而 Clojure 在全球市场却可以占到薪资排行榜的第一名,这一结果倒还蛮出乎意料。

    国内对于 Rust 的招聘需求并不旺盛,可搜寻到的岗位不到 Go 语言的十分之一,只比 Clojure 好一些,基本是规模较大的企业对此才有招聘需求,比如今日头条、滴滴等,给出的薪资倒是还算优厚,月薪基本集中在 25k 人民币以上。

    至于 DevOps,虽然国内可搜寻到的岗位不少,但薪资并没有太高,基本与 Go 语言的区间水平相当,要求具备 3 到 5 年工作经验的依旧是最普遍的。

    如果回看 2018 年某招聘网站发布的统计数据,算法研究员和机器学习工程师在过去一年的平均月薪偏高,分别为 28435 元和 26798 元,架构师薪资最高为 29600 元。编程语言中,Go 语言的平均月薪最高为 22961 元,其次是 C++、Python、Java。

    编程语言适用场景

    虽然薪水高低会成为影响开发人员是否选择的重要因素,但并不是唯一因素,不同编程语言的适用场景也是需要开发人员认真考虑的。

    Go

    Go 语言由谷歌开发,并于 2009 年 11 月发布。它是开源的,由于这个原因使得它在公司内部的不同项目中得到了积极应用,一些很有名的服务也使用 Go 语言开发,如 SoundCloud、Netflix 和 Dropbox。

    近年来 Go 语言受欢迎程度大大提高,还得益于 Go 语言下面的优势:

    • 支持多线程任务
    • 支持并行处理
    • 快速的启动时间
    • 高效的内存管理

    很多人都认为它将成为未来的服务器语言,Go 有一些很不错的特性:

    • 它非常简洁、简单和安全
    • 编译非常快
    • 它支持带有嵌入式类型的接口
    • 它不需要任何外部依赖关系来生成静态链接的本机二进制文件

    Kotlin

    Kotlin 编程语言是由 JetBrains IT 公司开发的,它已经成为 Android 的官方开发语言。这是在 2017 年谷歌开发者大会上宣布的。

    它有很多优点,如:

    • 易于理解的语法
    • 与 Java 兼容
    • 谷歌的支持
    • 快速增长的社区

    很有可能不久之后的 Android 应用程序完全使用 Kotlin 编写,所以如果想面向移动应用程序编程,应该考虑将 Kotlin 作为一个选择。

    Ruby(特别是 Rails)

    作为开发 web 应用程序的工具,Ruby 获得了广泛欢迎,并被用于开发全球很多流行产品的服务端部分。Ruby 语言的主要目的是创建强大的、易于理解的程序,其中最重要的不是程序运行的速度,而是开发时间。此外,代码的清晰性和简单性使 Ruby 非常受欢迎。

    Ruby 一些不错的特性有:

    • 一切都是对象
    • 模块——这些模块允许在运行时动态添加类层次结构的新元素
    • 代码开发
    • 动态类型
    • 鸭子类型
    • 代码质量

    Objective – C

    Objective-C 语言用于开发苹果生态系统中的应用程序,纯粹用于开发 Mac OS X 和 iOS。尽管出现了一种新的编程语言 Swift,,但 Objective-C 仍然是开发人员社区中非常流行的选择。此外,因为它与苹果的关系使其拥有一个非常高的需求市场。只要苹果“依赖”Objective-C,开发人员就会一直有市场,并可以获得丰厚的报酬。

    Objective-C 一些很好的特性有:

    • 类即对象——每个类都是一个元类的实例
    • 动态类型
    • 可选的静态类型
    • 动态运行时
    • 内省 introspection

    C #

    C# 是由一群微软工程师开发的,目的是在.NET 平台上开发应用程序。假如希望在微软平台开发本地应用程序并获得相关经验,那么 C# 是理想的语言。

    从本质上讲,C# 是一种简单、现代和通用的面向对象的编程语言。C# 的一大优点是相对简单,并且能够更多地关注算法而不是实现细节。目前,C# 被用于开发许多应用程序,从小型桌面程序到大型门户网站和人们日常使用的 web 服务。

    C# 主要用于:

    • Windows services——没有 UI 的长时间运行的程序
    • Web 应用程序——客户端 / 服务端应用程序
    • 窗口应用程序——运行在桌面上的应用程序
    • Web 服务——通过 HTTP 提供服务的应用程序
    • 游戏——用 Unity 完成
    • 控制台应用程序——没有 UI 的应用程序

    Python

    大量的框架工具、培训材料、友好的社区支持、编码的简单性使其在 2019 年的高薪编程语言榜单上占有一席之地。Python 是目前使用最强大的编程语言之一。它用于:

    • 数学计算
    • 数据分析
    • Web 开发
    • 机器学习
    • 任务自动化

    事实上 Youtube、Dropbox、Reddit 和 Google 等应用程序都是用 Python 开发的。

    Java

    很长一段时间以来,Java 编程语言一直是开发人员社区中需求最旺盛的语言之一。Java 主要用于开发银行和自动化测试中的产品。它的跨平台特性非常受欢迎,这是因为 JVM 的缘故。

    Java 是一种很有前途的编程语言。它被广泛地用于创建服务器和移动应用程序,还被用作开发 Android 本地应用程序。

    Java 可用于开发:

    • 移动应用程序
    • 网络应用程序
    • 桌面应用程序
    • 游戏
    • 数据库连接

    Swift

    Swift 是用于开发苹果平台应用程序的主要语言,主要应用于: 

    • MacOS
    • iOS
    • watchOS
    • tvOS

    这是一种非常通用的编程语言,主要用于开发苹果产品。值得一提的是,它是在 5 年前(2014 年)刚发布。其主要和最突出的优点是速度:无论是运行还是启动应用程序。正是这种优势赋予了它这个名字,它的创造者说其吸收了其他语言的所有优势。

    总  结

    市场上总是缺少有才华的程序员,未来几年,这仍然将是市场上的一个紧迫问题。对上述语言的了解和足够的相关工作经验可以为开发人员打开许多大门。此外,开发者没必要限制自己只使用一种语言。无论是理论还是实践,都可以尝试用另一种编程语言学习新的知识,所需要的只是激情和努力!

     

     


    Kotlin 开发者社区

    国内第一Kotlin 开发者社区公众号,主要分享、交流 Kotlin 编程语言、Spring Boot、Android、React.js/Node.js、函数式编程、编程思想等相关主题。

    展开全文
  • 真正想学什么,也不知道自己究竟适合学习什么样的技术,有部分同学就会盲目的寻找资料去,不要着急,小鸿这里带大家了解什么是前端。前端入门需要学习哪些技术。学习前端需要具备什么样的学习条件。 什么是...
  • [总结]视音频编解码技术零基础学习方法

    万次阅读 多人点赞 2014-06-16 00:12:43
    一直想把视音频编解码技术做一个简单的总结,可是苦于时间不充裕,一直没能完成。今天有着很大的空闲,终于可以总结一个有关视音频技术的入门教程,可以方便更多的人学习从零开始学习视音频技术。需要注意的是,本文...
  • 如何高效学习一门新技术

    万次阅读 多人点赞 2017-06-26 17:50:12
    如何高效学习一门新技术 最近着手学习WCF。举步维艰,故阅读了大量关于学习新技术方法的网页,最终整理如下,一共大家参考。 对于这个较大的话题,我们分两个部分介绍:学习新技术的10个建议 和 学习新技术的具体...
  • 如何学习技术

    万次阅读 热门讨论 2011-10-31 11:54:21
    1. 想技术非常多,该怎么办? 区分重点,选定目标,循序渐进。技术是无边际的,随着知识的不断增加,会发现未知的东西更多。我们能做的是: 1) 找重点:区分感兴趣的技能和必须技能,将重点放在必须技能上。...
  • 深入理解密码学技术

    万次阅读 多人点赞 2018-08-31 00:20:40
    1、对称加密 ...不过这里我们可以用它来了解下什么是对称加密。 (2) 加密和解密 DES是一种把64比特明文加密成64比特的密文的对称密码算法,密钥长度56位,其中每隔7比特有个错误检查比特。结果DE...
  • 计算机科学与技术专业学什么--大三总结

    千次阅读 多人点赞 2018-02-21 11:17:47
    15年高中毕业选专业时看中了CS专业,但是不知道这个专业学什么,所以到了大三我就打算把我的三年大学学习经历写出来供将来选专业的学弟学妹们借鉴: 1:专业辨析:CS、软件工程、信息科学 2:我的CS专业学习...
  • 影像组学技术方法

    万次阅读 多人点赞 2018-11-21 19:00:59
    影像组学技术方法 来源:放射学实践 作者:史张、刘崎 放射学实践,2018,33(6):633-636 影像组学概念 从影像图像中提取的全部特征就是“影像组学”,而通过特征选择后所挑选出那些具有预测价值特征集合通常被...
  • 大数据需要学习哪些技术

    万次阅读 多人点赞 2018-10-30 17:13:13
    大数据是对海量数据进行存储、计算、统计、分析处理的一系列处理手段,处理的数据量通常是TB级,甚至是PB或EB级的数据,这是传统数据处理手段所无法完成的,其涉及的技术有分布式计算、高并发处理、高可用处理、集群...
  • 区块链技术实战学习路线图

    万次阅读 多人点赞 2017-12-19 22:04:10
    引言给迷失在如何学习区块链技术的同学一个指引,区块链技术是随比特币诞生,但区块链技术支撑着比特币的运行,因此要搞明白区块链技术,应该先了解下比特币。比特币如果你是还不知比特币是什么,那就看看比特币是...
  • 区块链-密码与安全技术

    万次阅读 多人点赞 2017-11-29 17:14:51
    现代密码安全技术在设计上大量应用了十分专业的现代数学知识,如果读者希望成为这方面的专家,则需要进一步学习并深入掌握近现代的数学科学,特别是数论、抽象代数等相关内容。可以说,密码安全学科是没有捷径可...
  • Matplotlib简单入门学习

    万次阅读 2016-07-15 11:18:06
    因为学习机器学习以及试图通过python实现相应的算法,因此学习了Matplotlib中的画图,那么就问到,问啥不用matlab呢,答:多一门技术,多一口饭;而且发现Matplotlib的画图功能还是蛮强大的,这次仅仅只是学习了以前...
  • 技术学到多厉害,才能顺利进入BAT?

    万次阅读 多人点赞 2017-10-25 14:46:36
    关注微信公众号:「GitChat 技术杂谈」 一本正经的讲技术 【不要错过文末彩蛋】简介本科的时候对 Linux 特别感兴趣,心中向往成为一名运维工程师,就开始没日没夜的看相关的书籍,到了大约2013年前后的时候发现 ...
  • 虽然我学习c++两年了,不过感觉,没做过什么像样的应用,因为我在我们学校的一个网站的技术部里做过网站前台开发的工作,就是html,css这些,感觉这些语言虽然在学习的时候感到有很多东西不理解,但是通过做一些简单的网页,...
  • 如何高效学习编程技术

    千次阅读 2018-11-20 20:10:00
    通过这段时间的看书学习和对编程的思考,结合自己的亲身的学习经历,今天想和大家聊一聊如何高效学习编程技术。...第二种是不懂方法但努力了,这类人的不快但愿意花时间,不过由于学习编程技术所需的时间一...
  • 史上最简单的spark系列教程 | 完结

    万次阅读 多人点赞 2019-05-07 17:36:51
    《史上最简单的spark系列教程》系列: 与其说是教程不如说是改良后的个人学习笔记|| 教程参考自:《spark官方文档》,《spark快速分析》,《图解Spark核心技术与案例实战》,结合个人开发和记录中的坑,整合而成,教程通俗...
  • 最简单的分类算法之一:KNN(原理解析+代码实现)

    万次阅读 多人点赞 2020-07-12 19:22:27
    KNN(K- Nearest Neighbor),即K最邻近算法,是数据挖掘分类技术最简单的方法之一。简单来说,它是根据“邻近”这一特征来对样本进行分类。
  • 我是如何学习一门新技术

    万次阅读 多人点赞 2015-11-01 14:46:08
    作为一个自己技术一般的人,写这个难免会被人拍砖。不过写下来,记录一下自己的学习方式也好,他人可以作为参考和借鉴。经常有很多新入学的学弟学妹们问我该如何学习一门知识,比如如何学习一门语言、如何学习数学...
  • 再谈自适应学习——技术

    万次阅读 2018-06-21 10:37:33
    自适应学习技术前面我曾提到,“我认为,自适应学习是在学习研究的范式下,一种以计算机技术为主导的学习环境...但作为与学习研究范式的连接,我们有必要简单提及一个问题,后面我不再详细讨论这个问题。那就是,持...
  • Python 这么简单还用吗?

    千次阅读 热门讨论 2019-05-30 14:11:10
    近几年,Python 成为编程市场上流行的语言,学习 Python 的程序员越来越多了,许多人学习 Python 也是为了进入人工智能或者大数据等前沿领域发展。 很多对 Python 不熟悉的人,认为 Python 的兴起只是运气,看看近...
  • 至于MySQL、Linux、算法,结合的经验来看,无论你未来从事什么开发,我建议你都去,无论是求职还是整体编程技能的提升,都有莫大的帮助。在本文的后半段,我也会为你讲解这些技术栈。 以下内容主要来自我的...
  • Android学习路线指南

    万次阅读 多人点赞 2015-11-01 23:34:56
    看到一篇文章中提到“最近几年国内的初级Android程序员已经很多了,但是中高级的Android技术人才仍然稀缺“,这的确不假,从我在百度所进行的一些面试来看,找一个适合的高级Android工程师的确不容易,一般需要进行...
  • 一、最简单的神经网络--Bp神经网络

    万次阅读 多人点赞 2018-09-04 20:44:38
    在之前的文章中,有提到过,所谓的 AI 技术,本质上是一种数据处理处理技术,它的强大来自于两方面:1.互联网的发展带来的海量数据信息 2.计算机深度学习算法的快速发展。 所以说 AI 其实并没有什么神秘,只是在算法...
  • 本文记录使用libVLC的开发的最简单的视频播放器示例。VLC Media Player是一款优秀的播放器,但是由于它的源代码编译的难度比较大,一直没有深入研究过它的开发方面的技术。此前触到了一些VLC开发方面的东西,因此...
  • 点击上方“后端技术精选”,选择“星标公众号”技术文章第一时间送达!作者:nbalive2001cnblogs.com/nbalive2001/p/6418069.html...
  • 作为过来人的我是如何学技术的?

    千次阅读 多人点赞 2021-02-07 12:57:06
    目录第一章 写这篇文章的初衷第二章 我要不要去培训班第三章 如何学习一门技术第四章 旧的技术要不要第五章 为啥一定要源码 第一章 写这篇文章的初衷 最近有粉丝私信我,想要问问我是如何学习的,还有在学习中...
  • .NET Remoting 最简单示例

    万次阅读 2014-01-21 15:29:35
    给出一个最简单的Remoting程序示例(C#)如下: Step1:创建类库(DLL)工程RemotingObjects,类Person代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 869,305
精华内容 347,722
关键字:

学什么技术最简单