1.Ja工程师学习路线

2.ros全局规划完成为什么路线会动

3.谁有生产车间工时管理系统源代码,我想参考一下,可以的话联系下我,谢谢!

4.web前端学习路线?

5.Python科学计算为目标学习路线应该怎么走

6.该如何循序渐进学习Python爬虫_自学python爬虫路线

7.asp.net学习路径是怎么样的?

8.学习Ja的最佳路线

自驾路线查询源码_自驾路线生成

第一个阶段

初级,掌握Python的语法和一些常用库的使用

这里首先推荐廖雪锋在网上的书籍,这是Python2.7版本的,这本书适合于重头开始一直读完,作为一个开发人员,除了基本的语法,这本书里面提到了一些其他的常用的库,看了廖老师写的很多东西,感觉他的思路,以及写博客写书的高度,概括性,原理性都十分好,这本书读完之后,相信就可以动手写很多东西了,可以尽情的玩转Python解释器了。

另外还有一本书《Python参考手册》,这本书也十分的有用,关于Python的方方面面基本都囊括在内,可以作为一本Python字典来查询使用方法,十分好用。

掌握一门语言最好的方法就是用它,所以我觉得边学语法边刷Leetcode是掌握Python最快的方式之一。

很多只需要将Python作为脚本或者就是写一些小程序处理处理文本的话,到这一个阶段就足够了,这个阶段已经可以帮我们完成很多很多的事情了。但是如果是一个专业学习Python的,恐怕还需要努力的升级:

第二个阶段

中级,掌握自己特定领域的库,掌握pythonic写法,非常熟悉Python的特性

推荐的第一本书是《编写高质量代码–改善python程序的91个建议》,这本书大概的提了下Python工程的文件布局,更多的总结了如何写出pythonic的代码,另外,也介绍了一些常用的库。

要想深入的了解Python,有的时候看看Python的源码也是很重要的,自己通过读懂源码,来彻底的了解Python的核心机制,这里推荐《Python源码剖析——深度探索动态语言核心技术》,这本书并没有看完,只是在需要深入了解Python某个功能或者数据结构的时候看看相关章节,也觉得受益匪浅。

自己领域的书籍和资料也肯定很多,比如web开发的构架都有很多,只有了解熟悉了所有构架,在选择的时候才能衡量利弊,然后深入掌握某些构架。

这个阶段过后,可以写出pythonic代码,可以通过PEP8的检查,可以为开源社区做贡献了,可以将一个Python文件写的十分好,但是如果要用Python开发一个大型项目,还是有很多东西需要掌握的,比如项目的文档,项目的发布,下载,项目性能和案例等等。

第三个阶段

高级,从整个工程项目着眼,考虑document,distribution,性能优化等

目前只看了一本书《the hacker guide to python》,看的是英文版的,这本书对项目的布局,文档,性能,发布等做了很多详细的介绍,我觉得写的还是很不错,只不过本人还需要再读几遍。

对于大多数人来说,很难有机会从头开始一个有意义的大型工程项目,所以自己可以用Python实现一些简单的功能,简单的项目,这个灵感可以去知乎或者quora搜索,很多前辈都分享了自己的经验。

从大局入手,规划好项目的布局,设定好相应的文档说明,提供工程下载安装的方法,带几个demo,每个类,每个函数,每行代码都反复推敲,写出pythonic的程序,相信这时候Python于我们便是信手拈来了!

Ja工程师学习路线

1.ja基础。

2.html/css/js ,servlet/jsp(j2ee) 以及mysql数据库应用。

3.学习框架,一般ssm(spring + springmvc+mybatis) 。

4.了解men工程。

5.看完《ja编程思想》。

6.1-2年看《大话设计模式》《head first》。

7.代码编写优化《重构改善既有代码的设计》,《effective ja》。

8.2-3年《深入理解ja虚拟机》。

9.《ja并发编程实战》.

10.查看ja类库,jdk源码。

11.其他技术,比如大数据,分布式缓存,分布式消息服务,分布式计算,软负载均衡等,深入了解其中一项再考虑其他。

12.《深入理解计算机系统》(比较适合ja Web开发和APP后端开发),《tcp/ip详解 卷一,二,三》(适合网络编程),《数据结构与算法》(适合计算机研究工作,如分布式计算)。

13.这个时候可以去Github创建一个属于自己的开源项目,打造自己的产品。

ros全局规划完成为什么路线会动

Ja工程师学习一般路线

1 计算机语言:C->C++->JAVA。

2 数据结构与数据库。

3 配合数据结构和数据库,在jaSE平台多编一些程序,熟练掌握jase,jdbc。

4 进入jsp和web编程,与此同时,学习Dhtml编程和XML编程,此阶段可以学习些Ajax等。

5 接下来可以分两条路线,可以选择JaEE和JaMe :

JaMe 路线,可以进行手机等设备开发;

JaSe又分重量级框架,和轻量级框架,力求都掌握,这两款框架先学哪个都可。

6 研究WEB运行原理,和框架原理及实现,能够开发类似的框架,能够应用主流架构风格开发。

谁有生产车间工时管理系统源代码,我想参考一下,可以的话联系下我,谢谢!

ROS中,机器人全局路径规划默认使用的是nfn包 ,move_base的默认参数中可以找到

base_global_planner (`string`, default: "nfn/NfnROS")

nigation的源代码中还有一个global_planner的包里面已经有了A*,Dijkstra等算法的实现,但是nfn的源程序中也有这两个算法的实现,默认根本就没用到global_planner这个文件夹下的源程序。那么为什么有两个用于全局导航的包在ROS里面?它们又是什么关系呢?是因为早期的开发中是用nfn包做导航的并且默认使用Dijkstra做全局路径规划,并且有A * 的代码,那为什么没有使用A * 呢? 因为这里的A*算法存在bug,没人有时间去弄!直到13年Did Lu 才完成了这部分工作,重新发布了global_planner包,修改好的代码封装性更强,更清晰明了。因此,也可以认为global_planner是nfn的升级版替代者。那么问题来了Did Lu为什么没用global_planner替代掉nfn?为了兼容呗。因此两个包都在,并且默认的是nfn,也就是没用global_planner。

如何使用global_planner包

只要将move_base的参数base_global_planner用global_planner/GlobalPlanner代替就行

将<param name="base_global_planner"value="nfn/NfnROS"/>改为

<param name="base_global_planner"value="global_planner/GlobalPlanner"/>

move_base是如何调用各种global或者local planner包

ROS官方wiki教程里就提到过可以扩展自己的路径规划算法,思路是使用ROS的插件机制

1. 在自己写的global或者local planner算法里开头加上一句特定的程序(PLUGINLIB_EXPORT_CLASS(…..))就能注册插件机制

2. 在xx_plugin.xml等文件里描述下这个插件

3. 在package.xml显式的表明这个插件用来通知ROS我们将使用它

详细具体过程见官方wiki(ROS的插件机制)。 做完以上工作,我们就可以像上面一样将其用参数的形式直接传过去了

插件是如何工作的?(参见下文的补充说明)

以上插件的工作方式就告诉我们必须按照ROS提供的模板去实现,这正是n_core这个包存在的意义。 在nigation的源代码中你会看到这个n_core包中仅仅只有几个头文件,正是这些头文件提供了多个模板:

n_core::BaseGlobalPlanner,

n_core::BaseLocalPlanner,

n_core::RecoveryBehior

在官方的wiki文档里可以看到他们的相关介绍。所以按照这些模板的标准形式去写自己的planner算法就行了。了解了这些我们去看别人写的各种planner的插件就很简单,除了global_planner包和dwa_local_planner包,还有很多其他算法如sbql global planner,eband local planner,carrot_planner等等。关于具体的路径规划算法有很多可以从现有的两个入手先看看A*、Dijkstra算法的具体实现

global_planner/GlobalPlanner的实现

[global_planner/GlobalPlanner源码分析](://blog.csdn.net/u013158492/article/details/50504963)

补充:插件是如何工作的?

原理 :

- 要了解pluginlib的工作原理,让我们考虑一个小例子

- 首先,设存在包含多边形基类(“polygon_interface_package”)的ROS 包。

- 也可以说有两种不同类型的多边形的:rectangle_plugin包(矩形)和triangle_plugin包(三角形)

- rectangle_plugin和triangle_plugin使用都是在package.xml文件中包含指定的export项

- 这告诉rosbuild构建系统,想在polygon_interface_package包里提供polygon类的插件。

- 增加的export项,事实上是在build/packaging系统里注册这些类

- 就是说可以通过rospack查询到所有可用的polygon类,它能返回所有可用的类列表,这里主要是rectangle和triangle。

1)注册/导出插件

为了允许类被动态加载,它必须被标记为导出类。

这是通过特殊宏PLUGINLIB_EXPORT_CLASS来完成的。

这个宏可以放在构成插件库的任何源(.cpp)文件中,但通常放在导出类的.cpp文件的末尾。

对于上面的示例,我们可能在包’example_pkg’中创建一个class_list.cpp文件

如下所示,并将其编译到librectangle库中:

#include <pluginlib/class_list_macros.h>

#include <polygon_interface_package/polygon.h>

#include <rectangle_package/rectangle.h>

//Declare the Rectangle as a Polygon class

PLUGINLIB_EXPORT_CLASS(rectangle_namespace::Rectangle, polygon_namespace::Polygon)

2)插件描述文件

该插件描述文件是用于存储所有关于插件的重要信息的XML文件

它包含有关插件所在的库的信息,插件的名称,插件的类型等

如果我们考虑上面讨论的rectangle_plugin包,插件描述文件(例如rectangle_plugin.xml)将看起来像这样:

我们需要这个文件除了代码宏,允许ROS系统自动发现,加载和解释插件。

<library path="lib/librectangle">

<class type="rectangle_namespace::Rectangle" base_class_type="polygon_namespace::Polygon">

<description>

This is a rectangle plugin

</description>

</class>

</library>

(3)注册插件

为了让pluginlib查询跨所有ROS包的系统上的所有可用插件,每个包必须显式指定它导出的插件,以及哪些包库包含这些插件。

一个插件提供者必须在其package.xml中的export块指向它的插件描述文件。

rectangle_plugin为例:

<export>

<polygon_interface_package plugin="${prefix}/rectangle_plugin.xml" />

</export>

重要说明:为了使上述export命令正常工作,提供包必须直接依赖于包含插件接口的包。

例如,rectangle_plugin必须在其catkin/package.xml中具有以下行:

<build_depend>polygon_interface_package</build_depend>

<run_depend>polygon_interface_package</run_depend>

4)查询插件

可以通过rospack查询ROS包系统,以查看任何给定包可用的插件。

rospack plugins --attrib=plugin n_core

5)使用插件

pluginlib在class_loader.h头文件中提供了一个ClassLoader类,使得它能够快速和容易地使用提供的类。

有关此工具的代码级API的详细文档,请参阅pluginlib::ClassLoader文档。

例如一个使用ClassLoader在一些使用多边形的代码中创建矩形实例的简单示例:

#include <pluginlib/class_loader.h>

#include <polygon_interface_package/polygon.h>

//... some code ...

pluginlib::ClassLoader<polygon_namespace::Polygon> poly_loader("polygon_interface_package", "polygon_namespace::Polygon");

try

{

boost::shared_ptr<polygon_namespace::Polygon> poly = poly_loader.createInstance("rectangle_namespace::Rectangle");

//... use the polygon, boost::shared_ptr will automatically delete memory when it goes out of scope

}

catch(pluginlib::PluginlibException& ex)

{

//handle the class failing to load

ROS_ERROR("The plugin failed to load for some reason. Error: %s", ex.what());

}

web前端学习路线?

盖勒普MES 系统支撑并牵引企业进行精细化管理,帮助企业实现生产过程透明化、高效化、柔性化、可追溯化,达到提高客户满意度和降低运行成本的目的,全面提升企业精细化管理水平、增强企业的核心竞争力。

▼制造数据全面管理

全面管理制造产品结构(支持外部集成和数据自动导入)全面管理制造工艺路线(支持外部集成和数据自动导入)全面管理制造工时定额(支持外部集成和数据自动导入)唯一条码进行数据关联和跟踪全面的基础信息是实现企业制造执行管理的必要条件。

▼生产管理

全面管理企业制造订单的整个生产流程通过不同项目看板了解到每份订单、每个零件、每道工序、每组工位的任务状态、节点、实际完成节点、报废数量、试切数量、投入数量、产出数量等实时信息通过直观的图形化表现,以及颜色提醒,使得企业各级领导、生产主管、调度等都能实时、便捷地掌握生产任务执行状况。

▼能力平衡分析

通过直观的图形、数字,为企业提供工作中心/设备任务负荷分析、部门/班组任务负荷分析及工种任务负荷分析通过红色警戒线,明显的标识出任务超负荷的工作中心/设备、部门/班组、工种等通过详细的数据逐级查询和分析,帮助和调度进行任务的外协和均衡,优化生产排程。

▼任务派工管理

生产完成后,自动生成任务派工单,并通过条码扫描向现场自动输送加工程序、零件图纸、工艺指导文档等拥有强大的任务动态调度能力,响应生产现场各种状态变化现场指定工位的操作者可使用任务派工单领用刀具、工装、材料,并进行加工、检验、入库等流程操作可用于工时分配和结算管理任务派工单贯穿整个生产流转过程。

▼成品、在制品、刀具、工装库存管理

支持成品库、周转库、工装/刀具库等分类库房管理支持按照企业产品成套库房检查进行出库和缺件管理拥有强大的库存检索能力,支持随时浏览当前库房情况及历史记录追溯系统所有流程都可以通过条码扫描操作,既准确又便捷车间各工作中心接到加工任务同时,工装/刀具库房可根据该制造订单所需的工装需求进行准备对工装/刀具等工具的缺件及超时借用进行预警。

▼内嵌式高级智能排产引擎(Plug-in APS)

盖勒普MES提供从相对简单的有限能力系统到高级与排程APS系统,再到供应链的解决方案,无疑是生产运作管理进一步提升的有效工具通过给用户一个电子化的工具来跟踪和调配每天的生产提供了大量的报告和图表供查询使用。

▼全面质量管理体系 盖勒普MES 解决方案提供可选的一套集供应商管理,先期质量策划,数据集,信息传递,数据分析,实时监控,信息反馈,流程控制,文档管理,抱怨管理,量具管理,ERP系统集成和经营决策于一体的计算机网络化质量管理系统解决方案。对于原材料进厂、生产制造和在用户使用过程中的产品整个生命周期进行数据化、网络化、动态化管理,通过持续不断的改进,进一步完善生产质量管理直至企业层的整体化全面质量管理体系(TQM)。

▼生产系统可视化管理

支持人机互动浏览操作根据企业现场真实情况进行场景虚拟建模可以通过鼠标左/右键的选点,浏览整个生产过程信息以3D模拟形式再现车间现场,足不出户实时了解生产现状可以通过颜色或气泡的方式实时展示该工位当前加工任务、工序,当前状态,操作人员,完成数量、完成进度等信息

▼盖勒普MES 系统可以实现

节约10 - 30%的物力成本,

通过系统间的集成和联动降低材料磨损和减少库存节约15 - 20%的人力成本,

通过数据实时反馈和管理进行直接和间接的劳动效益改善节约20 - 50%的资金开支,

通过较好的利用设备,实现物料配送协调和生产能力改善超过35%的客户服务改善,

通过完善的生产准备满足客户订单,加快响应速度和准确及时的状态信息反馈达到50%的质量改善和缺陷消除,

通过生产过程监督管理及正确合理的工作流程。

▼盖勒普MES 解决方案客户化应用开发

盖勒普MES 解决方案提供了详细的角色定义,权限定义,人员部门定义,以及灵活的流程管理。系统不仅能够为用户提供整套优化的业务使用及管理流程,还可以根据用户的业务特性或需求,进行客户化应用配置和二次开发,帮助用户实现企业现场生产目标与管理目标。

▼盖勒普MES 系统与企业ERP/PLM/CAPP的管理集成

盖勒普MES 系统具有强大的集成功能,能够与企业ERP/PLM/CAPP等其他信息化系统进行集成,如SAP、UGS和PTC等,全力为企业打造从生产现场到企业上层管理的全方位信息化解决方案。同时,PMES也能和国内其他品牌的ERP/PDM/CAPP系统实现集成应用。

▼开发遵循 IOS9001 规范和系统应用 ISO900x 兼容性

盖勒普MES 软件系统本身在设计开发流程上是是按 IOS9001 规范标准进行。 同时盖勒普MES解决方案可以把与生产有关的数据按 ISO900x的要求自动进行记录,并且数据在整个企业范围内即时生效。

希望纳。

Python科学计算为目标学习路线应该怎么走

点击下方“小爱心”,选择“关注”

管她前浪,还是后浪?

能浪的浪,才是好浪!

关注我,每天让你掉忆点点头发。。。

前端学习路线:

网页链接

2020年全新前端学习路线图分享给大家!

学习是一个循序渐进的过程,是一件非常难得坚持的事情。如果真的想学习前端开发,一定要下定决心!

我这里分享给你的前端学习路线图,希望对你有帮助,以下为2020年更新版本,

@尚学堂前端学院在2020年更新前端开发学习路线图,把2019年新技术,新课程囊括其中,

也写了技术叔,每个技术需要学习的技术,跟着学完你就是中高级程序员!

前端学习框架

一、web前端基础

HTML+CSS基础是前端中级程序员的起点,是帮助你从小白到懂得编程的必经之路。

在前端基础板块中有三块构成了web世界,这是大家众所周知的事情。分别是:HTML、CSS、JaScript。而每一部分都是要很多的知识积累才能运用的游刃有余。

HTML具有更好的语义特性、本地存储特性、设备兼容特性、网页多媒体特性、css3特性等。它是web的新一代开发标准。只不过h5大大提升了对移动端的的支持能力。现在有些桌面浏览器对html5的支持还不健全,有些新特性不见得能生效(现代浏览器支持度较高),而移动设备上(android、ios)的浏览器(或webview)大都是webkit内核,对html5的支持度较高,所以一般在移动设备上使用不会出太大的兼容性问题。

jascript刚开始是有Netscape公司开发出来的,命名是为了跟上ja这股热风(但和ja毫无关系)。随后微软进入浏览器市场,由此催生了jascript的标准化,而这个标准名称就叫ECMAScript,从此JaScript正式成为一门语言。实际上,jascript是ECMAScript的超集,可以认为是和typescript一样的存在。他们都实现了ECMAScript的标准。我们现在所说的标准规范都指ECMAScript规范,当前流行的最著名的就是ES5、ES6等标准。

配套学习:

网页链接

二、JaSript

JaScript是Web的编程语言。

所有的现代的HTML页面都使用JaScript。

JaScript非常容易学。

主要学习内容:JaScript基础、JaScript函数、JaScript数组与对象、DOM、实践实例、

json解析、面向对象、原型与原型链和bootstrap。

配套下载链接:

网页链接

三、jQuery

jQuery 是一个 JaScript 库。

jQuery 极大地简化了 JaScript 编程。

主要学习的内用有:jQuery基础、jQuery常见方法、jQuery节点操作和jQuery实战联系

配套下载链接:

网页链接

四、Ajax

AJAX=Asynchron JaScript and XML (异步的JaScritp和XML)。

ALAX不是新的编程语言,而是一种使用现有标准的新方法。

AJAX最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页

容。

AJAX不需要任何浏览器插件,但需要用户允许JaScript在浏览器上执行。

AJAX应用

运用XHTML+CSS来表达资讯;

运用JaScript操作DOM(Document Object Model)来执行动态效果;

运用XML和XSLT操作资料;

运用XMLHttpRequest或新的Fetch API与网页服务器进行异步资料交换;

注意:AJAX与Flash、Silverlight和ja Apple等RIA技术是由区分的。

配套下载链接:

网页链接

五、H5新特性

HTMT就是你跟浏览器下达命令的语言。比如要把一篇文章显示在浏览器上,文章既有又有文字,你要告诉它那些事文字,哪些是,并且分别都放在哪个地方,需要用什么样式(颜色、大小、对齐。。。。),我们把浏览器显示的页面叫做网页。

主要内容:常用框架、移动端与REM、canvas元素和H5新特性

配套下载链接:

网页链接

六、angularJS

AngularJS 是一个?JaScript 框架。它可通过 <script> 标签添加到 HTML 页面。

AngularJS 通过指令扩展了 HTML,且通过 表达式绑定数据到 HTML。

主要内容:angular指令、angular路由、angular服务、angular自定义服务器和angular自定义指令。

配套下载链接:

网页链接

七、模块化

当前,实现模块化本体主要有两种主要的语言途径:一种是基于非经典语义的逻辑语言扩展,如分布式描述逻辑,E-链接和基于包的描述逻辑;另外一种途径是基于经典描述逻辑语义,但限制对外部符号的使用以保证个模块可安全的合并。

主要内容:模块基础、require和require实战

配套下载链接:网页链接

八、前端构建工具

什么是前端构建工具?

比如我们执行一些例如CoffeeScript/ES6去代替Jascript、JS或CSS压缩、用Less去写CSS、用Jade去写HTML、用Browserify去模块化、为非覆盖式部署的加MD5戳等,这些操作如果我们一遍遍手动执行,非常耗费时间和精力,所以前端构建工具,或者较前端自动化构建工具,就是用来让我们不再做机械重复的事情,解放我们的双手的。

主要内容:webpack和gulp

配套下载链接:

网页链接

九、react

react是Facebook推出的一个用来构建用户界面的 JaScript 库。 React主要用于构建UI,很多人认为 React是MVC中的V(视图)。React拥有较高的性能,代码逻辑非常简单,越来越多的人已开始关注和使用它。

主要内容:react基础、react环境搭建、react路由3.x、react路由4.x、react UI框架antd和react网络请求fetch

配套下载链接:

网页链接

十、Vue

vue指的是vue.js框架。Vue.js是一款流行的JaScript前端框架,一个用于创建用户界面的开源JaScript框架,旨在更好地组织与简化Web开发。

配套下载链接:

主要内容:模块基础、require和require实战

配套下载链接:

网页链接

十一、小程序

配套下载链接:

网页链接

学习web前端的注意事项

1.不要以看书学习为主,学习编程不是数学语文那么容易,你看看例题就会了,更需要的是别人的讲解,你自己看书上那些专业的文字,只是凭你自己意识理解的那样来,但是一般情况下我们都理解不了,毕竟我们不是出书的人,最好的方式就是找进行学习,找好的进行学习,然后在配上别人的解答,在加上自我的主动学习。

2.最好能系统专业的学习,因为如果你是一个小白或者零基础的入门者,自学也有可能会勉强入门,但是肯定会比别人走很多弯路,或者花费更长的时间,所以最好是能系统的学习,这样不仅能快速入门,升级的几率也很大,而且也能短期内出效果。

3.当你学习的时候,可能会出现学了就忘记不住的情况。打个比方:比方说我们在学习英语的时候,一天学习20个单词,但是过了一周之后,我肯定会忘记之前学过的单词。那么记住这些单词最好的办法就是应用于对话当中。我们学习web前端也是这样,同一个标签或者属性,或者是JaScript的语法,只有你不断的见到它,并且应用它,让它都认识你了,这样你就扎实的掌握了,所以实际应用非常重要。

4.学习方法决定了你学web前端的效率以及你可以走多远,学习编程非常依赖一个好的学习方法,有太多人因为学习方法不对最终导致放弃,所以小编让各位一定注意自己的学习方法,每个人的学习方法不一样,但是大多数人错误的学习方法都是相同的,所以这方面一定要找专业人士请教。

该如何循序渐进学习Python爬虫_自学python爬虫路线

Python学习路线图,Python 各阶段获得技能说明

Python是一种计算机程序设计语言。是一种动态的、面向对象的脚本语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。

我发的是Python的学习路线图,及Python各阶段技能说明,你可以看一下你想走的路线,然后跟着学习路线图来学习哦!

asp.net学习路径是怎么样的?

学习Python的三种境界

前言

王国维在《人间词话》中将读书分为了三种境界:“古今之成大事业、大学问者,必经过三种之境界:‘昨夜西风凋碧树,独上高楼,望尽天涯路’。此第一境也。‘衣带渐宽终不悔,为伊消得人憔悴。’此第二境也。‘众里寻他千百度,蓦然回首,那人却在灯火阑珊处’。此第三境也。我从入门Python到现在也没有多少时间,所以写如此大的一个题目必定会引发各种批判,当然我没有想造一个大新闻,只是想根据自己的学习历程做一个简单的总结,同时将这三个阶段对应的一些好的书籍简单介绍介绍。

正文

Python的用途十分广泛,不同的程序员将其用于不用的领域,不同的程序员将自己的代码打包成库,供其他程序员使用,从而少造轮子,各种库的使用,加之Python本身的灵活性、易读性,易写性,使用的人越来越多,tiobe统计编程语言的使用率如下:Python在一年之间使用排行榜中上升了3名,而且各大公司在招聘员工的时候如果能掌握Python,肯定是一个加分项,因为Python在文本处理,小程序的写作方面具有太强的优势,前段时间一个朋友让帮忙改下他们公司logo的颜色,第一个想到的就是用Python,女票让我帮她预处理大数据,第一个想到的仍然是Python等等,当然并没有说其他语言不好,也不是为了讨论哪种语言更好,只是Python确实是一门会让人幸福的语言,下面粗浅的说说我对Python学习过程中的境界划分以及推荐书籍。

第一个阶段:初级,掌握Python的语法和一些常用库的使用

这里首先推荐在腾讯官方课程平台上进行直播学习,有号就能无偿一直学,每天晚上都是直播(企鹅球球:1129中间是834最后加上这个903连在一起就可以了),除此之外基于python2.7在网上的书籍适合于重头开始一直读完,作为一个开发人员,除了基本的语法,这本书里面提到了一些其他的常用的库,看了廖老师写的很多东西,感觉他的思路,以及写博客写书的高度,概括性,原理性都十分好,这本书读完之后,相信就可以动手写很多东西了,可以尽情的玩转Python解释器了。

另外还有一本书《Python参考手册》,这本书也十分的有用,关于Python的方方面面基本都囊括在内,可以作为一本Python字典来查询使用方法,十分好用。

掌握一门语言最好的方法就是用它,所以我觉得边学语法边刷Leetcode是掌握Python最快的方式之一。

很多只需要将Python作为脚本或者就是写一些小程序处理处理文本的话,到这一个阶段就足够了,这个阶段已经可以帮我们完成很多很多的事情了。但是如果是一个专业学习Python的,恐怕还需要努力的升级:首先,国内的大多数人都是学习了其他语言(C,C,Ja等)之后来学习Python的,所以Python和这些语言的不同,也就是pythonic的东西需要一些时间去学习了解和掌握;另外,对于自己领域的领域的库构架的掌握也需要很长的时间去掌握;最后,如果想独立完成一个Python的项目,项目的布局,发布,开源等都是需要考虑的问题。

第二个阶段:中级,掌握自己特定领域的库,掌握pythonic写法,非常熟悉Python的特性

推荐的第一本书是《编写高质量代码_改善python程序的91个建议》,这本书大概的提了下Python工程的文件布局,更多的总结了如何写出pythonic的代码,另外,也介绍了一些常用的库。

要想深入的了解Python,有的时候看看Python的源码也是很重要的,自己通过读懂源码,来彻底的了解Python的核心机制,这里推荐《Python源码剖析——深度探索动态语言核心技术》,这本书并没有看完,只是在需要深入了解Python某个功能或者数据结构的时候看看相关章节,也觉得受益匪浅。

自己领域的书籍和资料也肯定很多,比如web开发的构架都有很多,只有了解熟悉了所有构架,在选择的时候才能衡量利弊,然后深入掌握某些构架。

这个阶段过后,可以写出pythonic代码,可以通过PEP8的检查,可以为开源社区做贡献了,可以将一个Python文件写的十分好,但是如果要用Python开发一个大型项目,还是有很多东西需要掌握的,比如项目的文档,项目的发布,下载,项目性能和案例等等。

第三个阶段:高级,从整个工程项目着眼,考虑document,性能优化等

目前只看了一本书《thehackerguidetopython》,看的是英文版的,这本书对项目的布局,文档,性能,发布等做了很多详细的介绍,我觉得写的还是很不错,只不过本人还需要再读几遍。

对于大多数人来说,很难有机会从头开始一个有意义的大型工程项目,所以自己可以用Python实现一些简单的功能,简单的项目,这个灵感可以去知乎或者quora搜索,很多前辈都分享了自己的经验。

从大局入手,规划好项目的布局,设定好相应的文档说明,提供工程下载安装的方法,带几个demo,每个类,每个函数,每行代码都反复推敲,写出pythonic的程序,相信这时候Python于我们便是信手拈来了!

总结

本文只是我认为的学习Python的三种境界,以我粗浅之眼光,肯定有太多太多的不足,而且自己也就是一个介于初级和高级Python程序员的水平,写这个文章,也算是给自己设立的一个目标吧。

学习Ja的最佳路线

.net学习路线

入门篇1. 学习面向对象(OOP)的编程思想

许多高级语言都是面向对象的编程,.NET也不例外。如果您第一次接触面向对象的编程,就必须理解类、对象、字段、属性、方法和、封装、继承和多态性、重载、重写等概念。需要说明的是,微软的产品帮助文档做得非常完善,而且查询相当方便,入门者不得不看。安装完Visual Studio.NET2003(或者Visual Studio.NET2002)后,在“程序”组里有一个Visual Studio 组合帮助集合。初学者从帮助文档就会获得许多知识。

2. 选择一门语言,学习语法及相关基础知识

选 择语言的标准:根据你自己的需求和个人的技术背景。在.NET平台下,C#、VB.NET都是调用Framework的类库,效率基本一样,C#的语法严谨,适合以前C++、VC的程序员。VB.NET不区分大小写,写法随意一些.,自动缩进,适合以前VB的程序员,微软也一再提倡用VB.NET进行快速开发。VC++.NET更接近底层,可以用托管和非托管两种方式进行编程。

选择了需要使用的语言后,我们需要了解语言的语法规则,包括语句、类型、表达式、运算符、函数等等,我建议一开始写程序就要养成良好的编程风格,规范地进行变量的命名,在代码中写好注释。这对以后的软件开发生涯都是很有意义的。

3. 理解.NET思想并熟悉框架类库(Framework Class Library)

我们借用一幅图来说明一下公共语言运行库(CLR)、框架类库(FCL)与应用程序之间以及与整个系统之间的关系。

首 先,我们要了解公共语言运行库、程序集、通用类型系统的概念。在此基础上,学习.NET框架类库。.NET框架类库是一个与公共语言运行库紧密集成的可重用的类型集合。.NET 框架类库封装了大部分Win32 API,许多以前需要调用API才能实现的功能,在.NET下非常容易就实现,许多情况下只需要一句话就足够了。所以,我们在程序设计的时候要尽量避免调用 Win32API。学习.NET 框架类库的捷径:掌握常用的类库,其它不常用的类库只需要了解,用到的时候查阅即可。

4. 利用Visual Studio.NET写程序

在. NET平台下写程序我们一般用微软的开发工具Visual Studio.NET,因为一个好的IDE,能极大地提高开发效率。我建议初学者从WindowsForms或者是WebForm开始,等有一定的基础之后,再转向写类库或是控件、组件方面的东西。微软的帮助文档里自带许多示例,我们可以一边看帮助,一边进行演练。在学习其中的代码的同时,一定要理解和思考。多写代码、从项目中锻炼是编程高手的成长之路。记住:一定要多看多写源代码;多上论坛(如CSDN和Dev-club)和微软的新闻组讨论技术问题。

我们一定要用好 VisualStudio.NET这个集成开发环境,除了编写代码外,我们还要了解.NET的部署原理,学习打包、部署及管理应用程序。多人开发的项目可以考虑用 VisualSource Safe进行源代码管理,这一系列开发工具的使用都要有大量的实践。

推荐书籍:

《C#高级编程》(第二版)(清华大学出版社)

《Microsoft.NET程序设计技术内幕》(清华大学出版社)

《 Visual VB.NET技术内幕》 (清华大学出版社)

《 Visual C#.NET技术内幕》 (清华大学出版社)

.NET入门教程(包括Windows Form和Web Form):

://chs.gotdotnet/quickstart

5. 最好掌握大型数据库编程

一 般来讲,大多数软件开发都涉及到数据库。大部分软件的后台数据库都使用如Access、SQLSERVER、Oracle等。ADO.NET提供了对关系数据、XML和应用程序数据的访问。我们必须掌握Connection、Command、DataReader 和 DataAdapter对象的使用,正确运用DataSet数据集和DataView进行数据操作。当然,要有一定的数据库基础,包括表、视图、存储过程等的使用。必须把后台数据库和前台的ADO.NET都掌握好,才能真正精通数据库编程。

在 项目的开发中,建议使用数据访问应用程序块(Data Access ApplicationBlock)来简化SQL查询。微软msdn网站有下载,我们可以利用SqlHelper类进行的数据访问,使用起来非常简单,很容易地构建我们的数据访问层。

推荐书籍:

《ADO.NET技术内幕》(清华大学出版社)

《ADO.NET高级编程》(中国电力出版社)

《VB.NET和SQL Server 2000高级编程—创建高效数据层》(清华大学出版社)

6. 学习XML WEB Service

XML Web services 正在开创一个分布式应用程序开发的新时代。XML Web Services 是把软件当成服务的一种体现,通过使用 XML消息处理启用数据交换和应用程序逻辑远程调用。XML使数据能够通过防火墙,实现异类系统之间移动数据。虽然公共的WebServices还不是很普及,但是在一些企业中,已经涉及到了Web Services的开发。用Visual Studio.NET很容易创建Web服务,调用Web服务也相当简单,只需要添加一个Web引用,然后调用即可。进行这方面的学习,需要了解Web 服务描述语言(WSDL)、SOAP协议等。

推荐书籍:

《构建XML WEB服务:基于Microsoft.NET平台》(清华大学出版社)

《Building XML WEB Services for the Microsoft .NET Platform》(影印版)

.NET技术网上:

中国软件网(中国最大的技术社区)

计算机世界开发者俱乐部

中国Dot Net俱乐部

微软官方MSDN权威站点:

************************************************************************

提升篇

1. 学习.NET框架开发平台底层原理和体系结构

.NET 框架的核心是公共语言运行时(Common LanguageRuntime,CLR)。通常情况下,我们使用一种高级语言(如C#或者VB.NET)编写程序,这些高级语言的编译器产生的是一个托管模块(即中间语言IL代码)。托管模块是一个需要CLR才能执行的标准WindowsPE文件。执行中间语言代码的时候,CLR中的即时编译器(Just-in-time,简称JIT)把其转换成CPU指令。这中间有许多细节,包括怎么初始化CLR,微软组件运行时执行引擎MSCorEE.dll(Microsoft Component ObjectRuntime ExecutionEngine,在system32目录下)怎么工作等等。如果你想精通.NET技术,就必须对.NET框架原理、程序集、元数据、值类型/引用类型、类型设计、异常处理、自动垃圾回收等核心技术有一个清楚的认识。

推荐书籍:

《.NET框架程序设计》(修订版) (清华大学出版社)

《Applied .NET Framework Programming》(影印版)Jeffrey Richter著

《.Microsoft .NET IL汇编语言程序设计》

《.NET 本质论》(中国电力出版社)

2. 熟练运行底层工具进行调试和解决各种问题

了解.NET平台的底层原理,我们需要学会一些工具和CLR 调试器 (DbgCLR.exe)的使用。C#命令行编译器(Csc.exe)和VB.NET编译器(Vbc.exe)的重要性就不用再多说。

.NET 框架 SDK 提供的几个比较重要的工具是:MSIL汇编程序(Ilasm.exe)、MSIL反汇编程序 (Ildasm.exe)、程序集链接器(Al.exe)。强烈建议大家在开发中多使用MSIL 反汇编程序 (Ildasm.exe),以加强对CLR和底层的了解。MSIL汇编程序(Ilasm.exe)从 MSIL 汇编语言生成可移植可执行的 PE 文件。反汇编程序(Ildasm.exe) 可对任意 .NET 框架 .exe 或.dll 程序集进行分析,并以可读的格式显示信息。程序集链接器 (Al.exe)从一个或多个文件生成一个带有程序集清单的文件。.NET框架SDK还提供许多其它的工具,如:PEVerify 工具 (Peverify.exe)、强名称工具(Sn.exe)等,我们力求能用命令行的方式使用他们。

需要指出的是:VisualStudio.NET不是能完成所有命令行能做的工作,一些任务必须由命令行来完成。如:创建多文件程序集,必须求助于csc.exe的addmodule选项。只有在对.NET框架有很深理解的基础上,才会灵活运用这些工具。

3. 进行大型软件系统架构设计

进 行软件系统的架构设计,需要积累相当丰富的经验,要求我们从全局的概念上把握软件的总体结构。首先的一点是,我们必须参照软件需求说明书。需求说明书是用户和开发双方对所开发软件的功能、性能、用户界面及运行环境等做出详细的说明,所以我们设计软件必须以此为依据。接下来,我们要做软件的总体设计,即概要设计。一般需要根据软件的业务需求和业务流程进行模块划分,规划程序的总体结构、输入输出以及接口设计、运行设计、数据结构设计和出错处理设计等,为详细设计奠定基础。在详细设计中需要指出每一模块是怎样实现的,包括实现算法、逻辑流程、数据流程图等。以后的工作,就是程序的实现。测试是和编码同步进行的,必须严格把好质量关。

在用.NET开发大型系统的时候,一般都是做成三层(或是N层)结构的形式。即将应用程序逻辑地分为3个基本层:数据访问和存储、业务逻辑层、表示层。三层结构的优点主要是:可扩展性、可伸缩性和灵活性。在做Web应用的时候,可以考虑用MVC(模型-视图-控制器Model-View-Controller)模式让Web应用程序的用户界面功能实现模块化。

顺 便要说的是,大型软件有时需要整合多种产品,来满足企业级的应用需求。微软提供了许多Server产品,如SQL Server 、ExchangeServer、Share Point Server、BizTalkServer等。记住:大家一定要多了解微软的产品线,微软很多技术都是相符相承的,结合起来才能发挥作用!我们可以微软的Server级产品的基础上整合软件系统、实现数据共享访问、终端设备上的电子邮件、消息协作。总之,通过互联网,让所有人一起协同工作,是未来软件的发展趋势。我们把握好这些方向,就等于驾驭未来。

推荐书籍:

《使用 Microsoft .NET 的企业解决方案模式》微软出版社

《Enterprise Solution Patterns Using Microsoft .NET》 MS divss

4. 带领团队进行软件开发

一 个好的团队,才能开发一个成功的产品。软件开发主要由项目管理团队、软件开发团队、软件测试团队组成。项目管理人员主要对项目进行控制,协调开发人员、测试人员的工作。开发人员的工作主要是负责软件的实现。测试人员是软件产品的质量保障。其它人员,如产品规划方面、软件技术支持和文档、后勤都是不可缺少 的。

大型软件是许多人集体智慧的结晶,要求 ProjectLeader有较强的管理能力和技术背景,以及良好的沟通能力。如果你作技术的时间很长,积累了丰富的经验,做过项目组长等管理工作,通过不断的学习和提升,极有可能成长为Project Leader。如果你已是ProjectLeader,就到对软件的成败负责,你可以根据现有决定开发中任务分配,合理用人,决定功能模块是否值得开发,项目进度控制等许多问题。总之,带领团队的人必须有远见卓识,取正确方法引领团队取得成功。

首先先搞懂JaSE的部分,Swing和swt部分就可以少看或不看,因为现在用的比较少。重点是看懂Ja中的面向对象、集合框架、JDBC、异常、IO、线程和网络编程。JaSE搞定后再学习Servlet、JSP,然后才是经典的Struts2、Hibernate和Spring,学习框架时重点理解框架的运行原理,甚至可以尝试自己写个轻量级的框架。理解运行原理的最好方法就是阅读源代码,还是要感谢Ja中的开源项目。这期间还要多找各种大小的项目去完成,不一定要大,但是要精致,功能要完整,这样可以练习所学知识,并且可以在做项目中发现自己的知识体系中不足的地方。关于看,我不推荐,很多同学一天到晚就知道看,殊不知,编程真理在于“练习,练习,不停练习”!

推荐看看这个学习路线,规划的很棒:

再补充下:当学习Ja的期间,会碰到各种各样的异常,请积累这些异常信息,以及如何出现的异常和如何处理的,因为ja中常见的异常就那么几种,积累的多了,处理问题的能力就提高,这样水平会提高的很快!

SpringMVC 这几年的占有率迅速的提高,可能之后会取代 Struts2,但是无论怎么变化,这些还都是 MVC 模式,理解了这个模式,上手任何的?MVC框架都应该很快。

企业需要的变化还体现在大数据方面,因为 Hadoop 的流行,Ja 的应用场景又多了一个。所以,不喜欢 web 的可以考虑学习大数据方面的知识。

另一个流行的场景自然就是 Android,学习 Android 依然需要你有 JaSE 的底子+HTTP 协议的理解,再配合上 Linux 的知识就可以开始了。

再说下找项目的问题,初学者可能会碰到不知道做什么的问题,其实最开始大家都是从模仿开始的,例如你学会了 jsp+Servlet,那就可以模仿一个 v2ex 这样的论坛出来。学会了 SpringMVC,那就试着将论坛的代码重构,提供restful接口供客户端访问(Android、IOS 、web 等)。论坛做的没难度了,那就模仿一个团购网站,依然是不一定要做全部的功能,但是做出的功能要稳定,要精致。或者一个微信公众平台的开发都是不错的项目。

初学者看源代码有的人推荐看 Struts2、spring 的,但是我相信10个初学者9个看不懂,那就从简单的开始,例如 Apache 的 Commons 库,例如 lang、dbutils、io 等,这些都是非常不错的代码,类的数量不多而且质量也不错,这些看懂之后,你的基础水平增长的不是一点点。

再次提醒初学者,学习编程没有你想的那么简单,必须要多练习,多思考,最主要的是你对这个有兴趣。现在不少网站和媒体都宣传1个月学会前端、3个月入职 BAT 的口号,那也就是口号而已,别太认真。这条路没有捷径,写你的代码就是了!