FunTick傲梦青少儿编程怎么样样

&p&将一张图片生成一个 HTML 页面:&a href=&//link.zhihu.com/?target=https%3A//github.com/xlzd/img2html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&img2html - GitHub&/a&&/p&&p&核心代码就一百来行(不考虑代码美观还可以压缩),如下图,左边是原图,右边是生成的 HTML(右图点开放大,可以看到全是字组成的):&/p&&figure&&img src=&https://pic4.zhimg.com/50/v2-abc90c7ffad57f20f2ba9e_b.jpg& data-rawwidth=&1792& data-rawheight=&1314& data-caption=&& data-size=&normal& class=&origin_image zh-lightbox-thumb& width=&1792& data-original=&https://pic4.zhimg.com/50/v2-abc90c7ffad57f20f2ba9e_r.jpg&&&/figure&&p&通过命令行参数控制抽象程度:&a href=&//link.zhihu.com/?target=https%3A//user-images.githubusercontent.com/26899-6fcb8ffc-4fd6-11e8-9b42-f.png& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&另一张图片,点击查看&/a&,具体描述可以见 GitHub 项目 &a href=&//link.zhihu.com/?target=https%3A//github.com/xlzd/img2html/blob/master/README.md& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&README.md&/a&&/p&&hr&&p&&a href=&//link.zhihu.com/?target=https%3A//github.com/xlzd/gotp& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&gotp&/a&:Golang OTP(One-Time Password) Library.&/p&&p&这个是为了方便在电脑端生成二次验证码,对我来讲作用是方便每次需要打开手机输入二次验证的地方(登录线上服务器、内网系统登录等),这个库实现了 &a href=&//link.zhihu.com/?target=https%3A//tools.ietf.org/html/rfc6238& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TOTP&/a&/&a href=&//link.zhihu.com/?target=https%3A//tools.ietf.org/html/rfc4226& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&HOTP&/a&,欢迎 star/fork。&/p&
将一张图片生成一个 HTML 页面:核心代码就一百来行(不考虑代码美观还可以压缩),如下图,左边是原图,右边是生成的 HTML(右图点开放大,可以看到全是字组成的):通过命令行参数控制抽象程度:,具体描述可以见 G…
&p&内存8G及以下的,别装杀软了,鼠标多点两下不费事。&/p&&figure&&img src=&https://pic2.zhimg.com/50/v2-dbd0a6d679ee_b.jpg& data-size=&normal& data-rawwidth=&932& data-rawheight=&693& class=&origin_image zh-lightbox-thumb& width=&932& data-original=&https://pic2.zhimg.com/50/v2-dbd0a6d679ee_r.jpg&&&figcaption&UAC&/figcaption&&/figure&&p&把用户账户控制(User Account Control) 调到最高最好。&/p&&p&不花钱,不占内存CPU,什么程序搞什么动作都能发现。&/p&&figure&&img src=&https://pic4.zhimg.com/50/v2-1cf80f415bec75fa82a51_b.jpg& data-size=&normal& data-rawwidth=&1032& data-rawheight=&799& class=&origin_image zh-lightbox-thumb& width=&1032& data-original=&https://pic4.zhimg.com/50/v2-1cf80f415bec75fa82a51_r.jpg&&&figcaption&Windows Defender&/figcaption&&/figure&&p&搭配Windows Defender全开, 完全是最佳资源利用方案。&/p&&p&&br&&/p&&p&更新,&/p&&p&一、&/p&&p&防火墙千万别关,这个功能性价比最高。&/p&&p&二、&/p&&p&由于Windows Defender的默认设置,每次开机都会进行扫描,对于私人电脑这个频率太高了,完全不必。&/p&&p&&b&如何自定义扫描频率?&/b&&/p&&ul&&li&搜索并打开“计划任务”。&/li&&li&在左侧窗格中,依次展开“任务计划程序库”&“Microsoft”&“Windows”,然后向下滚动并选择“Windows Defender”文件夹。&/li&&li&在顶部的中心窗格中,双击“Windows Defender 计划的扫描”。&/li&&/ul&&figure&&img src=&https://pic2.zhimg.com/50/v2-cddea78ebb2b9_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&484& data-rawheight=&273& class=&origin_image zh-lightbox-thumb& width=&484& data-original=&https://pic2.zhimg.com/50/v2-cddea78ebb2b9_r.jpg&&&/figure&&p&&br&&/p&&ul&&li&在“Windows Defender 计划的扫描属性(本地计算机)”窗口中,选择&触发器&选项卡,转到该窗口的底部,然后选择“新建”。&/li&&li&指定希望扫描运行的频率以及开始时间。&/li&&/ul&&p&比如:&/p&&figure&&img src=&https://pic1.zhimg.com/50/v2-0881aeb345b97ae6a5cacb_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1041& data-rawheight=&675& class=&origin_image zh-lightbox-thumb& width=&1041& data-original=&https://pic1.zhimg.com/50/v2-0881aeb345b97ae6a5cacb_r.jpg&&&/figure&&p&三、&/p&&p&也可以用火绒代替windows defender. &/p&&p&但是还是建议打开UAC 和 防火墙,这两个性价比很高。&/p&
内存8G及以下的,别装杀软了,鼠标多点两下不费事。把用户账户控制(User Account Control) 调到最高最好。不花钱,不占内存CPU,什么程序搞什么动作都能发现。搭配Windows Defender全开, 完全是最佳资源利用方案。 更新,一、防火墙千万别关,这个功能性价…
&p&用python实现头脑王者全自动答题&/p&&p&最近答题类游戏挺火的办公室的人都在玩,初学python没多久,便想着能不能自己动手做个答题器呢,开始入坑。。。&/p&&p&工具:&/p&&p&python 3.6&/p&&p&adb&/p&&p&charles(抓包)&/p&&p&&br&&/p&&br&&br&&br&&br&&a class=&video-box& href=&https://link.zhihu.com/?target=https%3A//www.zhihu.com/video/149248& target=&_blank& data-video-id=&& data-video-playable=&true& data-name=&& data-poster=&https://pic2.zhimg.com/80/v2-ecf475cd310f7b23ae349_b.jpg& data-lens-id=&149248&&
&img class=&thumbnail& src=&https://pic2.zhimg.com/80/v2-ecf475cd310f7b23ae349_b.jpg&&&span class=&content&&
&span class=&title&&&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&https://www.zhihu.com/video/149248&/span&
&br&&br&&br&&br&&p&&br&&/p&&p&原理说明:&/p&&p&最初是想用截图的方式然后文字识别来获取题目的,后来发现通过抓包也能获取到题目,并且更快。然后将获取的题目通过爬取百度搜索内容,并通过选项出现的次数判断答案,正确率并不高,大概在70%左右吧。将遇到的题目通通写到sqlite数据库中,之后的正确率便会越来越高。最后通过adb实现模拟点击达到自动的效果。&/p&&p&&b&怂了怂了,已删除数据库和exe文件。&/b&&/p&&p&&b&PS:我不是程序员,工作是做服务器存储方面维护的,刚学python不到三个月。。&/b&&/p&&a href=&https://link.zhihu.com/?target=https%3A//github.com//wechat_brain& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic4.zhimg.com/v2-4bb7641a7eb_ipico.jpg& data-image-width=&420& data-image-height=&420& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&/wechat_brain&/a&&figure&&img src=&https://pic4.zhimg.com/v2-961ffaf885e52a776f52c5_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&807& data-rawheight=&464& class=&origin_image zh-lightbox-thumb& width=&807& data-original=&https://pic4.zhimg.com/v2-961ffaf885e52a776f52c5_r.jpg&&&/figure&&p&&br&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-7c41b55364ea3dcda08bdfff2fb84479_b.jpg& data-caption=&& data-size=&small& data-rawwidth=&1080& data-rawheight=&1920& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic3.zhimg.com/v2-7c41b55364ea3dcda08bdfff2fb84479_r.jpg&&&/figure&
用python实现头脑王者全自动答题最近答题类游戏挺火的办公室的人都在玩,初学python没多久,便想着能不能自己动手做个答题器呢,开始入坑。。。工具:python 3.6adbcharles(抓包) 原理说明:最初是想用截图的方式然后文字识别来获取题目的,后来发现通过抓…
&p&来实力干货回答一波。&/p&&p&&br&&/p&&p&这个问题嘛,。如果你问一名J&a href=&//link.zhihu.com/?target=https%3A//cn.udacity.com/course/intro-to-java--nd301-cn-basic& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ava&/a&程序员,肯定会建议你先学&a href=&//link.zhihu.com/?target=https%3A//cn.udacity.com/course/intro-to-java--nd301-cn-basic& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Java&/a&,因为他们认为Python像个乳臭未干的黄毛小子。但如果你问Python程序员,可能会得到一个完全相反的答案,他们认为Java是刻板啰嗦的老大爷,而人生苦短,我用P&a href=&//link.zhihu.com/?target=https%3A//cn.udacity.com/course/intro-to-python-nanodegree-foundation--nd000-cn-python& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ython&/a&。&/p&&p&&br&&/p&&p&但别担心,优达菌将会从&/p&&ul&&li&语言特色&/li&&li&学习曲线&/li&&li&职业方向&/li&&li&市场需求&/li&&/ul&&p&等多个方面为你解答&b&“选择&/b&&a href=&//link.zhihu.com/?target=https%3A//cn.udacity.com/course/intro-to-python-nanodegree-foundation--nd000-cn-python& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&python&/a&&b&还是Java的人生难题”&/b&&/p&&p&&br&&/p&&hr&&p&&b&&i&语言历史&/i&&/b&&/p&&ul&&li&&b&Python:生而为简&/b&&/li&&/ul&&p&&b&Python是一门拥有简洁语法的高级编程语言。一个名为Guido van Rossum的荷兰大佬在1991年设计了它。Rossum设计这门语言的初衷,就是为了让代码读起来更轻松,并且让程序员们比起用其他语言,可以写更少的代码,事半功倍。&/b&&/p&&p&&br&&/p&&ul&&li&&b&Java:出生就想当老大&/b&&/li&&/ul&&p&&b&而Jame Gosling在1995年设计了Java。 Java是一门以Class为单位,高度面向对象的高级编程语言。Java的设计初衷是“写一次代码,在哪里都可以用。” Java可以完成任何规模的任务,所以它也是很多公司在做商业级项目的时候的普遍选择。&/b&&/p&&p&&br&&/p&&hr&&p&&b&&i&语言本身&/i&&/b&&/p&&ul&&li&&b&Python: 语法简洁,容易上手&/b&&/li&&li&&b&Java:语法稍微复杂&/b&&/li&&/ul&&p&&br&&/p&&p&&b&从语言本身来说,Python是出了名的简洁,容易上手。一个Python的粉丝曾经写过一首名为 The Zen of Python (Python之禅)的诗来赞颂这门语言的优雅。以下这首诗的节选翻译。&/b&&/p&&p&&b&优美胜于丑陋(Python 以编写优美的代码为目标)&/b&&/p&&p&&b&明了胜于晦涩(优美的代码应当是明了的,命名规范,风格相似)&/b&&/p&&p&&b&简洁胜于复杂(优美的代码应当是简洁的,不要有复杂的内部实现)&/b&&/p&&p&&b&复杂胜于凌乱(如果复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁)&/b&&/p&&p&&b&扁平胜于嵌套(优美的代码应当是扁平的,不能有太多的嵌套)&/b&&/p&&p&&b&间隔胜于紧凑(优美的代码有适当的间隔,不要奢望一行代码解决问题)&/b&&/p&&p&&b&可读性很重要(优美的代码是可读的)&/b&&/p&&p&&b&即便假借特例的实用性之名,也不可违背这些规则(这些规则至高无上)&/b&&/p&&p&&br&&/p&&p&&b&国外著名科普暴漫xckd也有这样一张形容Python之酸爽的著名漫画。&/b&&/p&&p&&br&&/p&&figure&&img src=&https://pic4.zhimg.com/50/v2-b8f4c36629cbbcfb7ecbbb6_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&518& data-rawheight=&800& class=&origin_image zh-lightbox-thumb& width=&518& data-original=&https://pic4.zhimg.com/50/v2-b8f4c36629cbbcfb7ecbbb6_r.jpg&&&/figure&&p&&br&&/p&&p&漫画中提到了学习一门编程语言,如烧香拜佛般必做的一件事:让屏幕输出Hello World! 这句话。 在Python中,做这件事只需要写一行代码:print &Hello World!&。 但是相比之下,Java实现这句话就要繁琐得多,需要至少4行代码(不小心就diss了一下Java)。总之,用Python编程,比起其他语言,更像是直接在和电脑对话。&/p&&p&public class HelloWorld {&/p&&p&
public static void main(String[] args) {&/p&&p&
System.out.println(&Hello, World&);&/p&&p&
}&/p&&p&}&/p&&p&&br&&/p&&p&&b&如此对比,Python的简洁明了和上手的容易程度就一目了然了。当然,这还只是一个例子,很多时候Python一两行代码就能搞定的事情,Java却需要多达10行,甚至20行。Python省去了像Java一样死记硬背语法和结构的时间。只需要基本的学习,你就可以读懂很多代码了。正是因为如此简单平缓的学习曲线,通过Python的学习,你可以很清晰地了解程序员的思维,更专注地学习编程通用的基本概念。在领悟透彻了这些知识以后,学习任何语言都是小菜一碟。许多国外知名大学,如MIT和哈佛,也渐渐地将计算机导论课程语言的选择,从Java转变成Python。Python甚至还因此进入了小学计算机教材中。&/b&&/p&&p&&br&&/p&&hr&&p&&b&&i&实际运用&/i&&/b&&/p&&ul&&li&&b&Python&/b&&/li&&ul&&li&&b&通过丰富的Web开发框架,如Django和TurboGears,Python可以用来快速完成一个网站的开发和Web服务。典型如国内的豆瓣、果壳网等&/b&&/li&&li&&b&自动化系统网络的运行维护中,大量重复性工作的地方,并需要做管理系统、监控系统、发布系统等。&/b&&/li&&li&&b&人工智能和数据分析&/b&&/li&&/ul&&li&&b&Java&/b&&/li&&ul&&li&&b&安卓app开发&/b&&/li&&li&&b&大型网站的后端&/b&&/li&&li&&b&大型的企业级应用&/b&&/li&&li&&b&大数据&/b&&/li&&/ul&&/ul&&p&&br&&/p&&p&&b&最近一段时间流行度越来越高的Python,在行业与生活中的运用也十分广泛。通过丰富的Web开发框架,如Django和TurboGears,Python可以用来快速完成一个网站的开发和Web服务。典型如国内的豆瓣、果壳网等;国外的Google、Dropbox等。在系统网络的运行维护中,有大量重复性工作的地方,并需要做管理系统、监控系统、发布系统等,将工作自动化起来,提高工作效率,这样的场景Python是一门非常合适的语言。因为Python的易于维护性,就连谷歌前段时间也将网站后台的很多代码用Python重写代替。业余时间,也可以用Python写写简单的网络爬虫,看看谁拉黑了你的微信,甚至做一个刷票机器人。&/b&&/p&&p&&br&&/p&&p&&b&当然,说到Python,就不得不提它目前最火热的运用:人工智能和数据分析。Python拥有十分完善的数据分析生态系统。Numpy & Scipy、Pandas、matplotlib 是 Python 最基本数据分析的三驾马车,而 Jupyter notebook 则是分析的最基本交互式环境。只要涉及机器学习,深度学习,神经网络这些高大上的领域,是绝对避不开Python的。甚至看到很多研究者的讨论帖子都建议早点把研究工具迁移到 Python 生态系统。最典型的例子就是人工智能界最牛的老师之一:Andrew Ng教授。再前几年的关于机器学习的在线课程里,Andrew Ng不管课上讲解还是课下作业,统统一律用MatLab。但是在今年新出的深度学习课程里,他毫不犹豫地选择了Python作为课程讲解和作业的语言,并且强烈推荐广大学习者熟练掌握Python。在人工智能大行其道的今天,Python的运用前景和发展空间绝对是无限的。&/b&&/p&&p&&br&&/p&&p&&b&虽然说了这么多Python在难易程度上的优点,相对于Java,它也不是完全没有缺点。即使使用Python开发的速度和效率比较高,但从运行的速度和效率来说,Java还是略胜一筹。当运算量很大时,Java的独特平台设计的好处就显现了出来。Java使用的虚拟机架构和独树一帜的JIT编译模式能大大提高它的运行速度。这也是为什么Java至今仍然是世界上最受欢迎的语言之一。&/b&&/p&&p&&br&&/p&&p&&b&如果你想知道Java在实际生活中可以干什么,其实远在天边,近在眼前。如果你有一部安卓手机,几乎所有App都是用Java写成的。大型网站的后端,比如电子商务交易平台阿里巴巴,淘宝,京东也都主要使用Java开发。大型的企业级应用比如大型企业管理系统,CRM系统,ERP系统也可以用Java开发。有关通信及网络的大型企业,比如移动、联通、电信、网通,有关金融行的大型企业,所有的银行、证券公司、互联网金融和大型管理系统,比如供应链,客户管理系统,物流系统主要的信息化都和Java息息相关。现在越来越火的大数据,最主流的框架Hadoop的主要开发语言也是Java。所以不难看出,Java还是行业应用不可撼动的老大哥。&/b&&/p&&p&&br&&/p&&hr&&p&&b&&i&薪资&/i&&/b&&/p&&p&&b&Python&/b&&/p&&p&&b&1.美团&/b&&/p&&figure&&img src=&https://pic2.zhimg.com/50/v2-148be89a0fb2ff0eb5b01_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&916& data-rawheight=&374& class=&origin_image zh-lightbox-thumb& width=&916& data-original=&https://pic2.zhimg.com/50/v2-148be89a0fb2ff0eb5b01_r.jpg&&&/figure&&p&&b&薪资:20k~40k&/b&&/p&&p&&br&&/p&&p&岗位职责: 1. 负责云数据库/云主机控制平面研发工作 2. 加强平台管理和控制功能,提升资源交付和管理效率&/p&&p&&br&&/p&&p&岗位要求:&/p&&p&1. 熟练使用Python,能写出漂亮的Pythonic的代码;&/p&&p&2. 极强的学习能力和动力,对未知技术和领域能快速掌握并实践;&/p&&p&3. 熟练掌握操作系统原理,Internet网络原理;&/p&&p&4. 有云平台开发、自动运维平台开发等大型Python项目经验者优先;&/p&&p&5. 在开源社群活跃并有积极贡献者优先。&/p&&p&&br&&/p&&p&&b&2.携程&/b&&/p&&figure&&img src=&https://pic4.zhimg.com/50/v2-76afedac2e1acb19d5bca24_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&880& data-rawheight=&398& class=&origin_image zh-lightbox-thumb& width=&880& data-original=&https://pic4.zhimg.com/50/v2-76afedac2e1acb19d5bca24_r.jpg&&&/figure&&p&&b&薪资:15k-25k&/b&&/p&&p&&br&&/p&&p&Python开发工程师:1. 负责运维平台设计及开发,实现运维自动化和运维效率的提高
2. 帮助开发团队改进开发流程和效率
3. 与运维团队合作,收集需求,改善运维流程,实现各种运维工具,提高运行维护作业水平
4. 负责网站监控系统、数据收集和数据分析等系统的开发
5. 结合虚拟化技术,打造和完善携程云平台&/p&&p&&br&&/p&&p&以下是加分项:&/p&&p&6. 熟悉大型网站运维工作,有运维开发经验者优先;&/p&&p&7. 有CMDB/monitoring system/agent/automation系统设计与开发经验者优先&/p&&p&8. 熟悉Puppet/Zabbix/Celery/RabbitMQ优先&/p&&p&9. 熟悉Python/Django/Tornaod优先&/p&&p&10. 熟悉前端开发(XHTML/JQuery/CSS)优先&/p&&p&11. 对OpenStack熟悉者优先&/p&&p&&br&&/p&&p&同时,数据显示,2017年在雇主发布的职位说明中,Python技能需求增速达到174%,居于首位,Spark、Hadoop等大数据技能需求增幅也十分靠前。&/p&&p&&br&&/p&&p&Java方面:&/p&&p&&br&&/p&&p&&b&1、京东&/b&&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-4e5d1d4b7a7_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1080& data-rawheight=&335& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic3.zhimg.com/50/v2-4e5d1d4b7a7_r.jpg&&&/figure&&p&&b&薪资:15k-30k&/b&&/p&&p&&br&&/p&&p&需要具备以下技能:&/p&&p&1、熟练掌握Java基础,熟练掌握多线程开发技术,熟悉软件开发流程;&/p&&p&2、熟悉主流Java开源框架如struts、hibernate、spring;&/p&&p&3、熟练掌握HTML/CSS/Javascript/jquery/Ajax;&/p&&p&4、熟悉Oracle/ SQL Server/MySQL其中的一种,并能熟练编写SQL和存储过程;&/p&&p&5、熟悉Linux系统,掌握Linux命令。&/p&&p&&br&&/p&&p&&b&2、网易&/b&&/p&&figure&&img src=&https://pic4.zhimg.com/50/v2-fb93077eda1b_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1080& data-rawheight=&200& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic4.zhimg.com/50/v2-fb93077eda1b_r.jpg&&&/figure&&p&&b&薪资:15k-30k&/b&&/p&&p&&br&&/p&&p&必须技能:&/p&&p&1、精通java,熟练运用SpringBoot、SpringMVC、Hibernate、Mybatis、struts、struts2等技术,能练使用JQuery或相关的JS框架,精通面向对象设计;&/p&&p&2、熟悉mysql/sqlserver数据库,了解相关的数据库维护和性能优化,熟悉Tomcat、weblogic等服务器的配置与发布;&/p&&p&3、全面扎实的软件知识结构(操作系统、软件工程、设计模式、数据结构、数据库系统、网络安全等);&/p&&p&4、熟练SQL语句的编写;思维活跃,具备一定的软件设计能力及良好的软件工程思想;&/p&&p&&br&&/p&&hr&&p&总结:&/p&&p&&br&&/p&&p&从语言本身,Python语法简洁,容易上手,而&a href=&//link.zhihu.com/?target=https%3A//cn.udacity.com/course/intro-to-java--nd301-cn-basic& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Java&/a&以独特的架构和较快的速度著称。&/p&&p&&br&&/p&&p&Python作为最近越来越火的语言,是大数据和人工智能的主力军,同时也在网页开发中广泛运用。而&a href=&//link.zhihu.com/?target=https%3A//cn.udacity.com/course/intro-to-java--nd301-cn-basic& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Java&/a&则垄断了企业级应用的开发。两者工程师的薪资也都十分可观。&/p&&p&&br&&/p&&p&文章到这里,你还不会选的话,我也帮不了你们了233...&/p&&p&&br&&/p&&p&祝编程学习愉快。&/p&&p&&br&&/p&&p&最后安利下我们的Python课程,零基础入门,销量绕地球三周(逃&/p&&a href=&//link.zhihu.com/?target=https%3A//cn.udacity.com/course/intro-to-python-nanodegree-foundation--nd000-cn-python%3Futm_source%3Dzhihu-oa%26utm_medium%3Dsocial%26utm_campaign%3Dpython& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic4.zhimg.com/v2-77c754aa7d46c3ecd7a8cdac0598adff_ipico.jpg& data-image-width=&630& data-image-height=&630& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&python基础教程_python培训班_python快速入门-优达学城(Udacity)官网 | Udacity&/a&&p&&br&&/p&&p&当然我们还有Java课程(打起来打起来&/p&&a href=&//link.zhihu.com/?target=https%3A//cn.udacity.com/course/intro-to-java--nd301-cn-basic& data-draft-node=&block& data-draft-type=&link-card& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Java入门纳米基石学位_Java入门课程_零基础学Java-优达学城(Udacity)官网Udacity | Udacity&/a&
来实力干货回答一波。 这个问题嘛,。如果你问一名J程序员,肯定会建议你先学,因为他们认为Python像个乳臭未干的黄毛小子。但如果你问Python程序员,可能会得到一个完全相反的答案,他们认为Java是刻板啰嗦的老大爷,而人生苦短,我用P。 但别…
&p&我不是装系统的行家,关于安装双系统,上面的那些大神都写的太复杂了,我看不太懂。所以在这我写一个简单但是有效的(自己亲测)。本人目前的系统是windows10专业版,想要安装ubuntu16。安装过程主要分为俩大部分,如下:&/p&&p&&b&(一)Windows系统硬盘的划分&/b&&/p&&p&在Windows下安装ubuntu首先得给ubuntu划分一个硬盘区域,划分很简单,直接选中想要划分的区域删除卷就行,然后无需其他操作。具体流程如下&/p&&p&&b&&i&&u&(1)&/u&&/i&&/b&在Windows下,左下角开始菜单&b&右键&/b&---&&b&磁盘管理&/b&,界面如下所示&/p&&figure&&img src=&https://pic4.zhimg.com/50/34f4e0e28da_b.jpg& data-rawwidth=&746& data-rawheight=&556& class=&origin_image zh-lightbox-thumb& width=&746& data-original=&https://pic4.zhimg.com/50/34f4e0e28da_r.jpg&&&/figure&&p&现在假设将G盘用来安装ubuntu系统,则在G盘上&b&右键&/b&----&&b&删除卷。然后无需其它操作,等你安装ubuntu时它会自动找到硬盘的(也可以自己选)&/b&&br&至此,硬盘准备结束&br&&b&(二)安装ubuntu系统&/b&&br&这里大致包括系统启动盘的制作与系统的安装。ubuntu系统下载地址如下(linux公社)&br&32位:&a href=&//link.zhihu.com/?target=http%3A//releases.ubuntu.com/16.04/ubuntu-16.04-desktop-i386.iso& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&releases.ubuntu.com/16.&/span&&span class=&invisible&&04/ubuntu-16.04-desktop-i386.iso&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&64位:&a href=&//link.zhihu.com/?target=http%3A//releases.ubuntu.com/16.04/ubuntu-16.04-desktop-amd64.iso& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&releases.ubuntu.com/16.&/span&&span class=&invisible&&04/ubuntu-16.04-desktop-amd64.iso&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&个人建议装64位的,下好系统后市.iso文件,然后开始制作启动盘。&/p&&p&&b&&u&(1)&i&启动盘的制作&/i&&/u&&/b&&/p&&p&下载UltraISO,这是一个执着启动盘的软件界面如下&/p&&figure&&img src=&https://pic2.zhimg.com/50/d8a6fd4ad17a45eee814ccc_b.jpg& data-rawwidth=&767& data-rawheight=&566& class=&origin_image zh-lightbox-thumb& width=&767& data-original=&https://pic2.zhimg.com/50/d8a6fd4ad17a45eee814ccc_r.jpg&&&/figure&&p&安装好后,找一个U盘插入电脑,然后点击&b&文件&/b&-----&&b&打开&/b&,找到你下载的ubuntu系统打开。接着点击&b&启动&/b&----&&b&写入硬盘映像&/b&,界面如下&/p&&figure&&img src=&https://pic3.zhimg.com/50/29fd87bcc582022bbb94fd_b.jpg& data-rawwidth=&541& data-rawheight=&498& class=&origin_image zh-lightbox-thumb& width=&541& data-original=&https://pic3.zhimg.com/50/29fd87bcc582022bbb94fd_r.jpg&&&/figure&&p&在硬盘驱动器那里找到你的U盘,最后点击&b&写入&/b&,等到结束。OK到此启动盘做好了。&/p&&p&&b&&i&&u&(2)系统安装&/u&&/i&&/b&&/p&&p&将制作好的启动盘插到需要安装系统的电脑上,将电脑关机(如果电脑一直是关机状态,就不用关机了)。进入BIOS设置启动项,关于这里不同的电脑进入BIOS方法不一样,我就不多说了,如果不知到,自己百度去吧,反正是要从U盘启动。接下里开始安装ubuntu ,键盘布局选&b&英语(美国),到了下面的界面注意一下!!!!!&/b&&/p&&b&&figure&&img src=&https://pic3.zhimg.com/50/19fda58b5500e9daab59db294abfa8b9_b.jpg& data-rawwidth=&873& data-rawheight=&607& class=&origin_image zh-lightbox-thumb& width=&873& data-original=&https://pic3.zhimg.com/50/19fda58b5500e9daab59db294abfa8b9_r.jpg&&&/figure&&/b&&p&&b&在这里你可以悬着第一项(安装ubuntu,与其他系统共存)或最后一项(其他选项)。反正我选的是第一项。到这就差不多结束了。如果不会安装参考一下这篇博客&/b&&/p&&p&&b&&a href=&//link.zhihu.com/?target=http%3A//bulo.hujiang.com/u/655831/diary/1223922/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&[分享]Ubuntu 16.04 安装基础入门教程(图文)&/a&&/b&&/p&&p&&br&&/p&&p&好了,到此教程结束了。希望大家都能安装&/p&
我不是装系统的行家,关于安装双系统,上面的那些大神都写的太复杂了,我看不太懂。所以在这我写一个简单但是有效的(自己亲测)。本人目前的系统是windows10专业版,想要安装ubuntu16。安装过程主要分为俩大部分,如下:(一)Windows系统硬盘的划分在Wind…
前前后后安装过无数次双系统,也体验过基本所有流行的Linux发行版了,恰好8月初刚刚升级Windows10专业版正版,几分钟前又刚刚安装了Ubuntu系统,有必要稍微说说步骤,不一定严谨和通用,仅供参考。&br&笔记本是12年买的,已经很老了,首先介绍配置吧:&br&&ul&&li&CPU: Intel Core i5 3210M&/li&&li&内存:8GB &/li&&li&硬盘:128G SSD + 750GB SATA&/li&&/ul&&br&Windows10和Ubuntu都是安装在SSD上的,其中40GB分给Ubuntu了。如果是已经先安装好了Windows10,你可以在磁盘管理中划分出一部分空间给Ubuntu,&b&这里请务必要确定划分出来的部分显示为黑色&/b&!!!&br&&br&然后下载Ubuntu的iso镜像,刻录到U盘上,关机,重启进入BIOS,设置U盘为第一启动,F10保存退出重启。然后就进入了Ubuntu的安装界面。&br&&br&选择安装语言,一路按需配置,在选择安装位置的时候,&b&一定要&/b&选择手动配置(忘了在界面的具体叫法,大致意思是这样)。到这一步选择刚才划分出来的分区,可以按需给『/』『/boot』『swap』划分为不同的分区,简单粗暴的不要swap把剩下的所有内容分到同一个区也是可以的。设置好之后记住/boot所在的分区位置,一会儿会用到的。&br&&br&然后后面的内容就是设置一些常规项了,最后就开始安装,结束后会让你手动选择restart。&br&&br&进入Windows10之后,安装EasyBCD,然后新增一个启动项,选择Linux/Grub2,启动位置选择刚才/boot所在的位置(如果是一锅端,则是/所在的位置),保存退出,重启就可以看到Ubuntu的入口了。&br&&br&Have fun~~~
前前后后安装过无数次双系统,也体验过基本所有流行的Linux发行版了,恰好8月初刚刚升级Windows10专业版正版,几分钟前又刚刚安装了Ubuntu系统,有必要稍微说说步骤,不一定严谨和通用,仅供参考。 笔记本是12年买的,已经很老了,首先介绍配置吧: CPU: I…
&figure&&img src=&https://pic3.zhimg.com/v2-677a91a2b5c05ed9eaed514bdc8492bd_b.jpg& data-rawwidth=&462& data-rawheight=&288& class=&origin_image zh-lightbox-thumb& width=&462& data-original=&https://pic3.zhimg.com/v2-677a91a2b5c05ed9eaed514bdc8492bd_r.jpg&&&/figure&&p&身为小米科技的创始人、董事长和首席执行官,雷军的名字如雷贯耳。其实扒扒雷军的年轻时代,其实他大学读的是计算机专业,是程序员出身,而且一干就是10年。有网友曾说“代码只服雷军”。雷军的代码水平真的很牛吗?有网友分享了一篇雷军22年前写的代码。 &/p&&figure&&img src=&https://pic4.zhimg.com/v2-9cac699cb2e3ac6f3dd82e_b.jpg& data-rawwidth=&417& data-rawheight=&467& class=&content_image& width=&417&&&/figure&&p&&b&完整版&/b& &u&分享雷军22年前编写的代码.txt1&/u& &/p&&p&雷军心爱的代码被新程序员格式化&/p&&p&对于雷军来说,虽然现在他更加专注在产品开发以及管理方面,但是曾经他对心爱的代码视为珍宝。之前来了一位技术支持人员,而这位技术人员进公司的第一份工作,就是帮雷军整理他的硬盘。一位理解错误,原本只要覆盖式的安装系统就可以的事情,这位程序员却把雷军的硬盘格式化了。这些代码是雷军多年来积累下来,而且也是他的最爱,就这样成为 炮灰,相信雷军非常难过。&/p&&p&&b&编程是技术,也是一种艺术。&/b&&/p&&p&雷军认为,编程的工作同石匠的工作相类似,即是技术活,也是体力活,而编写优秀的软件,算是一件比较难得事。编程是一门技术活,因此才有可能大规模的进行,进而才会有软件工程。此外,因为编程是一种艺术,因此有很多好的产品。&br&雷军22年前写的代码 你见过吗?&/p&&p&&b&雷军关爱下属,亲自指导女程序员。&/b&&/p&&b&&figure&&img src=&https://pic1.zhimg.com/v2-4a6dbd315ddffa948bc68bec4fa9b8f5_b.jpg& data-rawwidth=&435& data-rawheight=&402& class=&origin_image zh-lightbox-thumb& width=&435& data-original=&https://pic1.zhimg.com/v2-4a6dbd315ddffa948bc68bec4fa9b8f5_r.jpg&&&/figure&&/b&&p&因为自己是程序员出身,雷军在技术方面的水平不用质疑。雷军对于下面的程序员,也是很关照的。早前,雷军亲自指导美女程序员的一张图片爆红。从曝光的图片来看,这名由雷总亲自指导的女程序员,竟是位前端开发工程师。雷总下基层,还亲自指导码农,小米不强大都说不过去。&/p&&p&当然,上面的只是雷军生活中的一个小插曲。曾经,雷军认为自己会干一辈子的编程。但是现在,雷军作为小米董事长,身价已经不能用数字来衡量了。他接触程序的机会,相信是少之又少,因为下面有很多程序员帮他干活。&/p&&p&&b&雷军20年前作文曝光:我会当一辈子程序员&/b&&/p&&blockquote&&程序人生&的作文&br&From: Lei Jun&br&To: Dai Jun&br&时间:
00:28&br&&br&戴老师:&br&你的命题作文我已经写完,如有不妥之处,请指出。今天下午我已经写完,但突然 ZRM 死机,我没有存盘。晚上只好接着写,真是不幸。文中如有错漏之处可能是我第二遍写漏了。&br&本文参考过WT和JH的有关讨论信,在此致谢。&br&=== CUT ===&br&&br&&b&程序人生&/b&&br&[题记] 如果程序人生的话,这条路太漫长&br&&程序人生&这个词是什么意思,刚开始时我并不明白。这个词源于业余BBS站,站上PROGRAMMER栏目的中文名就是这个词,英文翻译过来就是&程序员&,但程序人生又比程序员多了很多含义,似乎多了一种沧桑感。但不管这么多,讲讲编程感受不算跑题。&br&&br&首先我先讲讲自己的路,这样也许大家才能相信我的坦诚和我的这篇编程感受的真实性。这些感受是我个人感受,不全面的地方,请大家指正。&br&&br&&b&我的程序人生路&/b&&/blockquote&&p&我并非天生喜欢电脑,上高中时也没有想过程序员的生活。我学电脑非常偶然,小时候的一个好朋友上大学时选择了电脑专业,为了和这个朋友有更多的共同语言,我也选择了计算机系,开始步入程序人生的道路。&/p&&blockquote&当我学了一点电脑知识后,就发现电脑将是我人生的最爱。读书时,我不是特别会搞关系的人,同学关系说不上差,也好不到那里去。我是八七年上的大学,我们大一下学期才有专业课。当我有资格上机的时候,发现电脑世界太美妙,就一头扎进去。当时用的是 Motorola 68000 (相当于 Intel 8088), 540K 的内存,运行的 UNIX 操作系统,八个人一起用。&br&&br&大二学 PC,又过了一学期,开始出现在老师的实验室,帮忙干活,当时写了现在还有人用的 RI (一个清内存的小工具)。又过了一个学期,开始和校外的公司接触。大二暑假,和一个朋友组建了 Yellow Rose 组,写了我第一个商品软件 BITLOK 0.99。后来开过公司也写过一些软件。&br&&br&大学毕业后,分到研究所,不太适应研究所的气氛。跳槽到金山软件公司,开始了职业程序员的生涯。后来成了北京金山软件公司的经理,但我还是一名程序员。&br&&br&&b&编程的感受&/b&&/blockquote&&h2&--- 程序员活在自己想象的王国里 ---&/h2&&blockquote&我刚接触电脑就发现电脑的妙处,电脑远没有人那么复杂。如果你的程序写得好,你就可以和电脑处好关系,就可以指挥电脑干你想干的事。&br&这个时候你是十足的主宰。每每你坐在电脑面前,你就是在你的王国里巡行。这样的日子简直就是天堂般的日子。&br&&br&电脑里的世界很大,编程人是活在自己想象的王国里。你可以想象到电脑里细微到每一个字节、每一个比特位的东西。&br&&b&--- 我爱编程这个工作,可以肯定我会干上一辈子 ---&/b&&br&&br&不少人认为程序员最多干到三十五岁就可以收山换环境了,脑子也差不多该歇歇了,体力也不支了。并认为写程序是年轻人的事情,到了一定岁数,估计没什么人再当程序员了。&br&&br&当我刚有一点水平的时候,我也认为编程辛苦,也想三十岁后干别的。当我年长一点后就发现了自己的无知。一个人大学毕业就二十一二岁,有点水平的时候可能二十五,接着就是老婆加上孩子和房子等等诸多事情。&br&&br&一切搞掂的时候,也许就是三十五岁。如果这样的话,我们就不用选择程序人生的道路。&br&&br&电脑进入我国时间不短,但真正大规模开始用,还是八五年 PC 开始的,因此国内真正写电脑程序的人最长也就写了十几年(不知道是否还有这样的人)。由于电脑应用在国内时间比较短,国内开发的主力是三十五岁以下的年轻人为主。&br&&br&但这不表示程序员如同红粉佳人般的容易衰老。美国和台湾开发以三十四十多岁的人为主。开始的时候,我们觉得我们没有什么不能做的(现在还能听到这样的豪言壮语),而且更要命的是好象我们特别聪明,特别适合开发软件,比老外强得多。当我们真正接触那些杰出的开发人员的时候,发现他们太厉害了,都有十多年的开发经验。虽然也有很多年轻人做了很多好东西,但决大多数的产品出自这些有丰富开发经验的程序员的手。&br&&br&刚毕业的时候,编程不仅仅是爱好,而且也成了一辈子的工作。整天不知道写些什么东西,觉得特别没劲,找不到感觉,特别灰心。后来,才明白,只有全身心地投入,程序才会有意识。&br&&br&写程序简直是在自杀,巨费精力巨费脑子巨累。但我爱编程这个工作,可以肯定我会干上一辈子,虽然我没有打算一生只干这一件事。用一生来编程序是一件既容易又困难的事。如果碌碌无为,为交差写点程序,这样写两辈子的人都有。但如果想全身心地写程序,写十年就不是一件容易的事。&br&&br&现在我不少朋友都洗手了,有时我也想&用什么电脑,Windows 外的世界不是也很大吗?&。面对电脑的时候,立刻顿悟:电脑还是自己最擅长干的事,也是最顺手的事。&br&&br&&b&--- 高级程序员不是追求的目标 ---&/b&&br&有的人学习编程技术,是把高级程序员做为追求的目标,甚至是终身的奋斗目标。后来参与了真正的商品化软件开发后,反而困惑了,茫然了。&br&&br&一个人只要有韧性和灵性,有机会接触并学习电脑的编程技术,就会成为一个不错的程序员。刚开始写程序,这时候学得多的人写的好,到了后来,大家都上了一个层次,谁写的好只取决于这个人是否细心、有韧性、有灵性。掌握多一点或少一点,很快就能补上。成为一个高级程序员并不是件困难的事。&br&&br&当我上学的时候,高级程序员也曾是我的目标,我希望我的技术能得到别人的承认。后来发现无论多么高级的程序员都没用,关键是你是否能够出想法出产品,你的劳动是否能被社会承认,能为社会创造财富。成为高级程序员绝对不是追求的目标。&br&&br&&b&--- 编程不仅仅是技术,还是艺术 ---&/b&&br&有人认为编程是一种熟练工种,也有人把编程说成是艺术创作。这两种意见争论比较激烈。&br&&br&我们换个工种来看,石匠应该是熟练工种,属于工人,更艺术似乎沾不上边。但正是这些石匠,给我们留下多少文物古迹,如乐山大佛、莫高窟等等。应该说这些石匠给我们留下了无穷的文化财产。&br&&br&现代软件工业已具相当规模,很多软件的完成需要的是大兵团作战。&br&一名普通程序员接受编写某一模块的任务后,往往只是写代码,发挥的余地很小。&br&&br&在大项目中,很多程序员只能了解到和自己所编模块相关的很局部的细节,另外还受到开发环境的限制,真的很难体会到自己在从事&艺术&创造,更多的时候是感到自己在从事重体力劳动。有的时候还担心自己苦苦参与的这个项目究竟有没有意义,是不是在同类产品中有竞争力,会不会开发出来以后就因为硬件的发展,操作系统的换代而过时...&br&&br&我认为编程的工作和石匠比较相似,有很多是技术活甚至是体力活,但编写优秀软件是件很难的事。这两种想法都有片面性,编程应该说两种属性都有。编程不仅仅是技术,也还是艺术。&br&&br&编程是技术活,才有可能大规模进行,才会有软件工程。也正是编程是艺术,才会有如此多的好产品。&br&=== END ===&br&--- 雷军 (ID: Lei Jun) ---&br&... 那一天知道你要走,我们一句话都没有说&br&--- Blue Wave/DOS v2.20&/blockquote&&ul&&li&Origin: West-Point Programmer's BBS * 86-10- (6:650/27)&/li&&/ul&&p&文章转自网络,如有侵权联系&a href=&https://www.zhihu.com/org/zhai-xing-jiao-yu/activities& class=&internal&&摘星教育 - 知乎&/a&删除。&/p&&p&&/p&
身为小米科技的创始人、董事长和首席执行官,雷军的名字如雷贯耳。其实扒扒雷军的年轻时代,其实他大学读的是计算机专业,是程序员出身,而且一干就是10年。有网友曾说“代码只服雷军”。雷军的代码水平真的很牛吗?有网友分享了一篇雷军22年前写的代码。 完…
&figure&&img src=&https://pic2.zhimg.com/v2-035668beecbdd3eb486cb15_b.jpg& data-rawwidth=&2560& data-rawheight=&1600& class=&origin_image zh-lightbox-thumb& width=&2560& data-original=&https://pic2.zhimg.com/v2-035668beecbdd3eb486cb15_r.jpg&&&/figure&&p&最近,每次打开chrome,浏览一些“正经”的网站后,cpu使用量就爆增,可怜的电脑还没用多久电量就告急,逼着我到处找充电板,忍无可忍的我决定解决这件事,详细看了下活动监视器里的进程,发现一个chrome进程占用量很大,但网上找不到任何关于它的说明,但一则新闻进入我的眼中。&/p&&figure&&img src=&https://pic1.zhimg.com/v2-2b9cd3f0ef92d2ece6420ff_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&641& data-rawheight=&361& class=&origin_image zh-lightbox-thumb& width=&641& data-original=&https://pic1.zhimg.com/v2-2b9cd3f0ef92d2ece6420ff_r.jpg&&&/figure&&p&&br&&/p&&p&海盗湾被发现在利用访问者电脑的浏览器进行虚拟币挖矿!海盗湾使用了Coinhive提供的功能,利用网页中嵌入的一段JavaScript脚本就可让访问该网站的电脑使用CPU资源为它进行虚拟币挖矿。从Coinhive官网的信息来看,它宣传此举可在为网站主带来收益的同时,减少对网页广告的倚赖。不过最大的问题在于,用户并不知晓自己电脑会在未经允许的情况下被用来挖矿。&/p&&p&&br&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-ad25600d87bdec133c6436d_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&641& data-rawheight=&359& class=&origin_image zh-lightbox-thumb& width=&641& data-original=&https://pic3.zhimg.com/v2-ad25600d87bdec133c6436d_r.jpg&&&/figure&&p&&br&&/p&&p&Coinhive选择了Monero(门罗币),这种虚拟币使用显卡挖矿的收益提升幅度不高,对于使用访客电脑的CPU挖矿较为有利,之前已经有不少流氓软件通过将用户电脑变成门罗币挖矿肉鸡来盈利。小编在自己i5处理器的笔记本电脑上尝试开启浏览器挖矿测试,CPU直接达到了满载,散热风扇呼呼的转了起来。&/p&&p&&br&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-9100cb5ada1dc6a117d3d5_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&641& data-rawheight=&233& class=&origin_image zh-lightbox-thumb& width=&641& data-original=&https://pic3.zhimg.com/v2-9100cb5ada1dc6a117d3d5_r.jpg&&&/figure&&p&&br&&/p&&p&海盗湾等网站在利用访客电脑挖矿时会对性能略作一些限制,减少用户知觉。但不告而取谓之窃,未经用户知情和允许而利用电脑CPU资源挖矿盈利,不管怎么说都是见不得光的事情。禁用JavaScript脚本可以阻止海盗湾窃取CPU算力,不过也会影响一些正常的网页功能使用。更广泛的影响是,你不会知道除了海盗湾之外,还会有多少网站群起效仿。&/p&&p&&br&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-bb35ec05cfa91cf5b896a_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&641& data-rawheight=&462& class=&origin_image zh-lightbox-thumb& width=&641& data-original=&https://pic3.zhimg.com/v2-bb35ec05cfa91cf5b896a_r.jpg&&&/figure&&p&&br&&/p&&p&海盗湾用访客电脑CPU挖矿事件的曝光其实是揭开了一个网站灰色创收方式。那些大量占用CPU资源的网页游戏有没有在做同样的事?各种流氓软件除了后台运行和弹窗广告之外,会不会纷纷效仿?或许为了避免被发现他们会比较收敛,主动对资源占用进行一些限制,但如果多个软件都盯上你的电脑,就算是英特尔酷睿i9和AMD Threadripper这样的处理器也会被累趴下。&/p&&p&&br&&/p&&p&一旦开始「挖矿」将会消耗系统大量的资源,目前的挖矿脚本只在chrome上运行,不排除以后其它浏览器受到影响的可能性。在chrome里,MinerBlock这款扩展就可以帮你阻止一些网站利用浏览器进行「挖矿」。(免费)&/p&&figure&&img src=&https://pic4.zhimg.com/v2-d104dddd5_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&430& data-rawheight=&654& class=&origin_image zh-lightbox-thumb& width=&430& data-original=&https://pic4.zhimg.com/v2-d104dddd5_r.jpg&&&/figure&&p&&br&&/p&&p&&b&MinerBlock&/b& 的用法也很简单,安装后直接可以用,没什么正式的设置界面,当你查看的网站有「挖矿」行为的话,它会进行阻止并且进行提示。&/p&&p&其实网站利用浏览器「挖矿」的原理是通过一小段的 JS 代码,而阻止「挖矿」的方式就很显而易见了,阻止这段 JS 代码执行即可,而 &b&MinerBlock&/b& 也是利用了这样的原理。&/p&&p&其实一旦你明白了这个原理之后,也可以通过其他一些浏览器扩展像广告拦截扩展、JS 拦截扩展等进行屏蔽,只不过需要自己手动去发现和操作。&/p&&p&&b&MinerBlock&/b& 目前也在 GitHub 上开源,当然也是为了防止监守自盗的情形。&/p&&p&&br&&/p&&p&下载地址:&a href=&https://link.zhihu.com/?target=https%3A//chrome.google.com/webstore/detail/minerblock/emikbbbebcdfohonlaifafnoanocnebl& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Chrome 应用店&/a&丨&a href=&https://link.zhihu.com/?target=https%3A//github.com/xd4rker/MinerBlock& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitHub&/a&&/p&&p&&br&&/p&&p&(不定期更新,建议关注)&/p&&hr&&p&二更&/p&&p&chrome上不要留太多插件了,现已知情况是一些垃圾插件也会偷偷挖矿,具体情况可以看自己CPU使用情况,卸载了垃圾插件后chrome的cpu使用量恢复正常&/p&&hr&&p&三更&/p&&p&目前主流杀毒软件部分网站会提示警告消息,但有些网站没有提醒,建议安装block插件,同时,最根本的办法就是时不时看看自己的进程占CPU情况(活动监视器)&/p&&hr&&p&四更&/p&&p&chrome的cpu使用情况查询&/p&&p&点击右上角的三个点,选择更多工具中的任务管理器&/p&&figure&&img src=&https://pic4.zhimg.com/v2-16bd654b62a3a4c10d07_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&948& data-rawheight=&852& class=&origin_image zh-lightbox-thumb& width=&948& data-original=&https://pic4.zhimg.com/v2-16bd654b62a3a4c10d07_r.jpg&&&/figure&&p&效果如下&/p&&figure&&img src=&https://pic3.zhimg.com/v2-8db22af9f7cdfe3488de9_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1454& data-rawheight=&832& class=&origin_image zh-lightbox-thumb& width=&1454& data-original=&https://pic3.zhimg.com/v2-8db22af9f7cdfe3488de9_r.jpg&&&/figure&&p&&/p&
最近,每次打开chrome,浏览一些“正经”的网站后,cpu使用量就爆增,可怜的电脑还没用多久电量就告急,逼着我到处找充电板,忍无可忍的我决定解决这件事,详细看了下活动监视器里的进程,发现一个chrome进程占用量很大,但网上找不到任何关于它的说明,但…
&p&用Python写的第一个程序,是爬取糗事百科上的图片、自动下载到本地、自动分成文件夹保存,当时就觉得,卧糟,太NB了~&/p&&p&第二个程序,当然还是图片爬虫,不过这次,嘿嘿,是妹纸图,你懂得~&/p&&p&然后还跟着别人的代码或教程或者自己写过:&/p&&p&12306火车票查询工具、携程机票查询;&/p&&p&爬取美团电影、豆瓣电影用户评论;&/p&&p&简单的美团餐厅爬虫及根据地理坐标制作简单热力图;&/p&&p&智联招聘爬虫,支持输入查询的职位关键词+城市。并将爬取到的数据分别用Exce和Python(matplotlib)做了数据分析及可视化;&/p&&p&&b&经常用到在线翻译,于是利用Python Gui库(&/b&Tkinter&b&)&/b&做了简单的桌面翻译查询软件;&/p&&p&尝试爬取京东热卖、淘宝淘抢购(还是聚划算)的商品信息,没想到还挺简单的,主要是没做什么防爬虫措施。。。;&/p&&p&利用Python+Selenium+Phantomjs做了一个模拟搜索浏览淘宝商品的程序,可以记录你设定的关键词下,淘宝搜索到的前100页商品信息、信息存到本地mysql或mongoDB。&/p&&p&Python+Scrapy爬取知乎用户关系链~;&/p&&p&用Python玩微信跳一跳,跳了2500+;&/p&&p&过大年之际,用Python的itchat库集成了自己的几个查询系爬虫(查天气查火车查携程机票查快递)做到了微信自动回复的功能!亲朋好友发来的祝福可以自动回复了,避免了尴尬!O(∩_∩)O哈哈~还能查天气查火车查携程机票查快递,对,很好玩很实用~&/p&&p&还有很多想学的:爬虫Scrapy框架,机器学习Tensorflow、图像识别。。。。&/p&&hr&&p&以下转载几个自己做的几个小程序,适合新人,&b&喜欢请点赞~ 谢谢:)&/b&&/p&&p&&b&github:&/b&&a href=&//link.zhihu.com/?target=https%3A//github.com/Flowingsun007/littleSpiders& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Flowingsun007/littleSpiders&/a&&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&Lyon:Python图片文本识别—基于tesseract和百度实现&/a& (更新于18.4.15)&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&Lyon: Python实现微信查天气+火车+飞机+快递&/a&
(更新于18.3.7)&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&Lyon:Python—itchat下载拼接微信好友头像图&/a& (更新于18.3.6)&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&Lyon:Python—itchat实现微信自动回复&/a&(更新于18.3.5)&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&Lyon: Python命令行实现—查全国7天天气&/a&&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&Lyon: python命令行查询12306火车票&/a& (更新于18.2.19)&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&Lyon: Python—一行代码情人节画爱心表白&/a& (更新于18.2.14)&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&Lyon: Python多线程threading—图片下载&/a& (更新于18.2.5)&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&Lyon:Python—10行代码查快递&/a& (更新于18.2.2)&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&Lyon:用Python发邮件&/a&(更新于18.1.23)&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&Lyon:Python爬虫入门—图片下载&/a&&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&Lyon:用Python实现—携程机票查询&/a&&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&Lyon:智联Python相关职位的数据分析及可视化-Pandas&Matplotlib篇&/a&&/p&&hr&&p&以下两个小项目,都比较适合练手。&/p&&p&第一个是命令行携程机票查询,模仿的是12306火车票查询器做的;&/p&&p&第二个是一个智联招聘的爬虫,包括后面数据处理、分析以及用matplotlib进行了可视化。&/p&&p&代码都有,欢迎拿去~&/p&&hr&&a href=&https://zhuanlan.zhihu.com/p/& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic3.zhimg.com/v2-b8fd8a32f0dfab58b37e386_180x120.jpg& data-image-width=&872& data-image-height=&604& class=&internal&&Lyon:用Python实现—携程机票查询&/a&&p&以前参考别人的代码,用Python做了一个12306命令行式的火车票查询工具,感觉还挺有意思的!于是自己又做了一个类似的——携程机票查询器。&/p&&p&携程官网查询的效果是这样的:&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-89f157c0a8bd7d891fa44_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1190& data-rawheight=&874& class=&origin_image zh-lightbox-thumb& width=&1190& data-original=&https://pic3.zhimg.com/50/v2-89f157c0a8bd7d891fa44_r.jpg&&&/figure&&p&Python命令行界面查询的效果是这样的:&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-b8fd8a32f0dfab58b37e386_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&872& data-rawheight=&604& class=&origin_image zh-lightbox-thumb& width=&872& data-original=&https://pic3.zhimg.com/50/v2-b8fd8a32f0dfab58b37e386_r.jpg&&&/figure&&p&输入出发地、目的地、乘机日期,即可看到可选的航班、机场、出发到达时间、票价等信息。&/p&&p&视频演示效果如下:&/p&&a class=&video-box& href=&//link.zhihu.com/?target=https%3A//www.zhihu.com/video/621056& target=&_blank& data-video-id=&& data-video-playable=&true& data-name=&& data-poster=&https://pic2.zhimg.com/80/v2-029a73d6a55f5a1c9ed8d56c1c84f71d_b.jpg& data-lens-id=&621056&&
&img class=&thumbnail& src=&https://pic2.zhimg.com/80/v2-029a73d6a55f5a1c9ed8d56c1c84f71d_b.jpg&&&span class=&content&&
&span class=&title&&&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&https://www.zhihu.com/video/621056&/span&
&/a&&p&程序的源码如下:&/p&&p&1.air_stations.py&/p&&p&2.airline_ticket.py&/p&&div class=&highlight&&&pre&&code class=&language-text&&#1.air_stations.py
import json
import requests
from pprint import pprint
url = 'http://webresource.c-ctrip.com/code/cquery/resource/address/flight/flight_new_poi_gb2312.js?CR__00_00_00'
response = requests.get(url,verify=False)
station = re.findall(u'([\u4e00-\u9fa5]+)\(([A-Z]+)\)', response.text)
stations = dict(station)
pprint(stations,indent = 4)
&/code&&/pre&&/div&&p&&br&&/p&&div class=&highlight&&&pre&&code class=&language-text&&2.airline_ticket.py
#此程序可定出发日期、出发城市、目的城市!(模仿了上一个12306火车订票查询程序)
import requests,json,os
from docopt import docopt
from prettytable import PrettyTable
from colorama import init,Fore
from air_stations import stations
fromCity = input('Please input the city you want leave :')
toCity = input('Please input the city you will arrive :')
tripDate = input('Please input the date(Example:) :')
class TrainsCollection:
header = '航空公司 航班 机场 时间 机票价格 机场建设费'.split()
def __init__(self,airline_tickets):
self.airline_tickets = airline_tickets
def plains(self):
#航空公司的总表没有找到,但是常见航空公司也不是很多就暂时用这个dict{air_company}来收集!
#如果strs没有查询成功,则会返回一个KeyError,表示此dict中未找到目标航空公司,则会用其英文代码显示!
air_company = {&G5&:&华夏航空&,&9C&:&春秋航空&,&MU&:&东方航空&,&NS&:&河北航空&,&HU&:&海南航空&,&HO&:&吉祥航空&,&CZ&:&南方航空&,&FM&:&上海航空&,&ZH&:&深圳航空&,&MF&:&厦门航空&,&CA&:&中国国航&,&KN&:&中国联航&}
for item in self.airline_tickets:
strs = air_company[item['alc']]
except KeyError:
strs = item['alc']
airline_data = [
Fore.BLUE + strs + Fore.RESET,
Fore.BLUE + item['fn'] + Fore.RESET,
'\n'.join([Fore.YELLOW + item['dpbn'] + Fore.RESET,
Fore.CYAN + item['apbn'] + Fore.RESET]),
'\n'.join([Fore.YELLOW + item['dt'] + Fore.RESET,
Fore.CYAN + item['at'] + Fore.RESET]),
item['lp'],
item['tax'],
yield airline_data
def pretty_print(self):
#PrettyTable()用于在屏幕上将查询到的航班信息表逐行打印到终端
pt = PrettyTable()
pt._set_field_names(self.header)
for airline_data in self.plains:
pt.add_row(airline_data)
def doit():
headers = {
&Cookie&:&自定义&,
&User-Agent&: &自定义&,
arguments = {
'from':fromCity,
'to':toCity,
'date':tripDate
DCity1 = stations[arguments['from']]
ACity1 = stations[arguments['to']]
DDate1 = arguments['date']
url = (&http://flights.ctrip.com/domesticsearch/search/SearchFirstRouteFlights?DCity1={}&ACity1={}&SearchType=S&DDate1={}&).format(DCity1,ACity1,DDate1)
r = requests.get(url,headers = headers,verify=False)
print(&Some Error shows in requests.get(url)&)
print(url)
airline_tickets = r.json()['fis']
TrainsCollection(airline_tickets).pretty_print()
if __name__ == '__main__':
&/code&&/pre&&/div&&p&其实,此小程序还可以拓展,譬如将查询记录存到本地电脑(txt格式、或者存到数据库里)或者更厉害的还可以设置定时自动查询;还可以设置查询到自动发邮箱提醒;还可以用Python的GUI库将此程序做成桌面软件的形式。。。。&/p&&hr&&a href=&https://zhuanlan.zhihu.com/p/& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic1.zhimg.com/v2-131ba26ddec_180x120.jpg& data-image-width=&1266& data-image-height=&737& class=&internal&&Lyon:智联Python相关职位的数据分析及可视化-Pandas&Matplotlib篇&/a&&p&,by—&a href=&//link.zhihu.com/?target=http%3A//localhost%3A8080/Lyon/foreviewSingleBlog%3FId%3D12%23& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&阳光流淌&/a&&/p&&h2&上一篇,我用了Excel对爬虫采集到的智联招聘数据进行了数据分析及可视化,用到软件是Excel, 这一篇,我们打算完全用Python来做同样的事。用到的库有Pandas、Matplotlib。np、pd、plt分别是numpy、pandas、matplotlib.pyplot的常用缩写。&/h2&&p&Numpy(Numerical Python的简称)是Python科学计算的基础包。它提供了以下功能:&/p&&ol&&li&快速高效的多维数组对象ndarray。&/li&&li&用于对数组执行元素级计算以及直接对数组执行数学运算的函数。&/li&&li&用于读写硬盘上基于数组的数据集的工具。&/li&&li&线性代数运算、傅里叶变换,以及随机数生成。&/li&&li&用于将C、C++、Fortran代码集成到Python的工具。&/li&&/ol&&p&除了为Python提供快速的数组处理能力,Numpy在数据分析方面还有另外一个主要作用,即作为在算法之间传递数据的容器。对于数值型数据,Numpy数组在存储和处理数据时要比内置的Python数据结构高效的多。此外,由低级语言(比如C和Fortran)编写的库可以直接操作Numpy数组中的数据,无需进行任何数据复制工作。&br&&/p&&p&Pandas这个名字本身源于panel data(面板数据,这是计量经济学中关于多维结构化数据集的一个术语)以及Python data analysis。pandas提供了使我们能够快速便捷地处理结构化数据的大量数据结构和函数。Pandas中用的最多的是DataFrame,它是一个面向列的二维表结构,且含有行标和列标。pandas兼具numpy高性能的数组计算功能以及电子表格和关系型数据库(如SQL)灵活的数据处理功能。它提供了复杂精细的索引功能,以便更为便捷地完成重塑、切片和切块、聚合以及选取数据子集等操作。&/p&&p&Matplotlib是Python中常用的可视化绘图库,可以通过简单的几行代码生成直方图,功率谱,条形图,错误图,散点图等。Seaborn、ggplot、等诸多Python可视化库均是在此基础上开发的,所以学会matplotlib的基础操作还是很有必要的!它和Ipython结合的很好,提供了一种非常好用的交互式数据绘图环境。绘制的图表也是交互式的,你可以利用绘图窗口中的工具栏放大图表中的某个区域或对整个图表进行平移浏览。&/p&&h2&数据来源:&/h2&&p&Python爬虫爬取了智联招聘关键词:【Python】、全国30个主要城市的搜索结果,总职位条数:18326条(行),其中包括【职位月薪】、【公司链接】、【工作地点】、 【岗位职责描述】等14个字段列,和一个索引列【ZL_Job_id】共计15列。数据存储在本地MySql服务器上,从服务器上导出json格式的文件,再用Python进行数据读取分析和可视化。&/p&&h2&数据简单清洗:&/h2&&p&1.首先在终端中打开输入ipython --pylab。在Ipython的shell界面里导入常用的包numpy、pandas、matplotlib.pyplot。用pandas的read_json()方法读取json文件,并转化为用df命名的DataFrame格式文件。(DataFrame格式是Pandas中非常常用且重要的一种数据存储格式、类似于Mysql和Excel中的表。)&/p&&div class=&highlight&&&pre&&code class=&language-text&&import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_json('/Users/zhaoluyang/Desktop/Python_全国JSON.json')
#查看df的信息
df.columns
&/code&&/pre&&/div&&figure&&img src=&https://pic1.zhimg.com/50/v2-f679fb1c4acba7ebdfbd697a9fedcf10_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&884& data-rawheight=&789& class=&origin_image zh-lightbox-thumb& width=&884& data-original=&https://pic1.zhimg.com/50/v2-f679fb1c4acba7ebdfbd697a9fedcf10_r.jpg&&&/figure&&p&可以看到读取的df格式文件共有15列,18326行,pandas默认分配了索引值从0~18325。还有一点值得注意的:全部的15列都有18326个非空值,因为当初写爬虫代码时设置了, 如果是空值,譬如:有一条招聘信息其中【福利标签】空着没写,那么就用字符串代替,如“found no element”。&/p&&p&2.读取JSON文件时pandas默认分配了从0开始的索引,由于文件'ZL_Job_id'列中自带索引,故将其替换!替换后,用sort_index()给索引重新排列。&/p&&div class=&highlight&&&pre&&code class=&language-text&&df.index = df['ZL_Job_id']#索引列用'ZL_Job_id'列替换。
del(df['ZL_Job_id'])#删除原文件中'ZL_Job_id'列。
df_sort = df.sort_index()#给索引列重新排序。
df = df_sort
df[['工作地点','职位月薪']].head(10)
&/code&&/pre&&/div&&figure&&img src=&https://pic2.zhimg.com/50/v2-0b51bcac2a25a476cc795_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&492& data-rawheight=&286& class=&origin_image zh-lightbox-thumb& width=&492& data-original=&https://pic2.zhimg.com/50/v2-0b51bcac2a25a476cc795_r.jpg&&&/figure&&p&&br&&/p&&p&3.下面,将进行【职位月薪】列的分列操作,新增三列【bottom】、【top】、【average】分别存放最低月薪、最高月薪和平均月薪。 其中try语句执行的是绝大多数情况:职位月薪格式如:元/月,为此需要对【职位月薪】列用正则表达式逐个处理,并存放至三个新列中。 处理后bottom = 8000,top = 10000,average = 9000. 其中不同语句用于处理不同的情况,譬如【职位月薪】=‘面议’、‘found no element’等。对于字符形式的‘面议’、‘found no element’ 处理后保持原字符不变,即bottom = top = average = 职位月薪。&br&q1,q2,q3,q4用来统计各个语句执行次数.其中q1统计职位月薪形如‘元/月’的次数;q2统计形如月收入‘10000元/月以下’;q3代表其他情况如‘found no element’,‘面议’的次数;q4统计失败的特殊情况。&/p&&div class=&highlight&&&pre&&code class=&language-text&&import re
df['bottom'] = df['top'] = df['average'] = df['职位月薪']
pattern = re.compile('([0-9]+)')
q1=q2=q3=q4=0
for i in range(len(df['职位月薪'])):
item = df['职位月薪'].iloc[i].strip()
result = re.findall(pattern,item)
if result:
#此语句执行成功则表示result[0],result[1]都存在,即职位月薪形如‘元/月’
df['bottom'].iloc[i],df['top'].iloc[i] = result[0],result[1]
df['average'].iloc[i] = str((int(result[0])+int(result[1]))/2)
#此语句执行成功则表示result[0]存在,result[1]不存在,职位月薪形如‘10000元/月以下’
df['bottom'].iloc[i] = df['top'].iloc[i] = result[0]
df['average'].iloc[i] = str((int(result[0])+int(result[0]))/2)
#此语句执行成功则表示【职位月薪】中并无数字形式存在,可能是‘面议’、‘found no element’
df['bottom'].iloc[i] = df['top'].iloc[i] = df['average'].iloc[i] = item
except Exception as e:
print(q4,item,repr(e))
for i in range(100):#测试一下看看职位月薪和bottom、top是否对的上号
print(df.iloc[i][['职位月薪','bottom','top','average']])#或者df[['职位月薪','bottom','top','average']].iloc[i]也可
df[['职位月薪','bottom','top','average']].head(10)
&/code&&/pre&&/div&&figure&&img src=&https://pic2.zhimg.com/50/v2-f17c93681d3dfae5e4f3_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&595& data-rawheight=&516& class=&origin_image zh-lightbox-thumb& width=&595& data-original=&https://pic2.zhimg.com/50/v2-f17c93681d3dfae5e4f3_r.jpg&&&/figure&&p&经过检查,可以发现【职位月薪】和新增的bottom、top、average列是能对的上。其中形如‘元/月’的有16905条、形如‘10000元以下’的 有61条、'found no element'和'面议'加起来有1360条,总数18326条,可见是正确的。&/p&&p&4.进行【工作地点】列的处理,新增【工作城市】列,将工作地点中如‘苏州-姑苏区’、‘苏州-工业园区’等统统转化为‘苏州’存放在【工作城市】列。&/p&&div class=&highlight&&&pre&&code class=&language-text&&df['工作城市'] = df['工作地点']
pattern2 = re.compile('(.*?)(\-)')
df_city = df['工作地点'].copy()
for i in range(len(df_city)):
item = df_city.iloc[i].strip()
result = re.search(pattern2,item)
if result:
print(result.group(1).strip())
df_city.iloc[i] = result.group(1).strip()
print(item.strip())
df_city.iloc[i] = item.strip()
df['工作城市'] = df_city
df[['工作地点','工作城市']].head(20)
&/code&&/pre&&/div&&figure&&img src=&https://pic2.zhimg.com/50/v2-fbfd69ce7d8dd39ce8ecf23a_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&448& data-rawheight=&451& class=&origin_image zh-lightbox-thumb& width=&448& data-original=&https://pic2.zhimg.com/50/v2-fbfd69ce7d8dd39ce8ecf23a_r.jpg&&&/figure&&p&检查一下,没有错误,可以进行下一步的操作了!&/p&&h2&数据分析和可视化&/h2&&p&从可读性来看,应该是先进行数据清洗,然后进行分析及可视化,但是实际过程中,往往是交织在一起的, 所有下面让我们一步步来,完成所有的清洗、分析和可视化工作。除了具体的公司和职位名称以外,我们还比较关心几个关键词: 平均月薪、工作经验、工作城市、最低学历和岗位职责描述,这里岗位职责描述以后会用python分词做词云图,所以目前筛选出 【平均月薪】、【工作经验】、【工作城市】、【最低学历】这四个标签,这些标签可以两两组合产生各种数据。譬如我想知道各个城市的招聘数量分布情况, 会不会大部分的工作机会都集中在北上广深?是不是北上广深的平均工资也高于其他城市?我想知道Python这个关键词的18000多条招聘数据中 对学历的要求和对工作经验的要求,以及它们分别占比多少?我还想知道平均月薪和工作经验的关系?最低学历和平均月薪的关系? 和上一篇(Execel篇)类似,不同的是,这次我们完全用Python实现同样的操作。&/p&&h2&1.各个城市职位数量及分布&/h2&&p&根据猜想,北上广深,一定占据了Python这个关键词下大部分的工作机会,会不会符合28定律?20%的城市占据了80%的岗位? 有可能!我们先用df.工作城市.value_counts()看一下究竟有多少个城市,以及他们各自有多少条工作数据?&/p&&div class=&highlight&&&pre&&code class=&language-text&&df.工作城市.value_counts()#等价于df['工作城市'].value_counts()
#再用count()来看一下统计出来的城市数量
df.工作城市.value_counts().count()
type(df.工作城市.value_counts())#用type()查看下类型。
&/code&&/pre&&/div&&figure&&img src=&https://pic4.zhimg.com/50/v2-23cf8b0e216e0a9aa76b6_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&448& data-rawheight=&578& class=&origin_image zh-lightbox-thumb& width=&448& data-original=&https://pic4.zhimg.com/50/v2-23cf8b0e216e0a9aa76b6_r.jpg&&&/figure&&p&可以看到,明明设置的是搜索30个城市,怎么变成了40?像延边、珲春、白山。。。。是什么鬼?想了一下,这些城市是搜索关键词城市‘吉林市’时,自动冒出来的;还有95个‘found no element’,是这些职位链接本身就没有填写工作城市,为了避免干扰,要把他们统统替换成空值。用df_工作城市 = df['工作城市'].replace()&/p&&div class=&highlight&&&pre&&code class=&language-text&&#将原来df['工作城市']列中选定的字段替换成空值nan
df_工作城市 = df['工作城市'].replace(['found no element','松原','辽源','珲春','白山','公主岭','白城','延边','四平','通化'],np.nan)
#查看替换后各个城市职位计数
df_工作城市.value_counts()
#查看替换后城市所包含的职位总数;查看替换后的城市数量,是否等于30.
df_工作城市
#将新的[df_工作城市]列添加到df表中,留作备用
df['df_工作城市'] = df_工作城市
&/code&&/pre&&/div&&figure&&img src=&https://pic3.zhimg.com/50/v2-aceb11ca737afb_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&828& data-rawheight=&718& class=&origin_image zh-lightbox-thumb& width=&828& data-original=&https://pic3.zhimg.com/50/v2-aceb11ca737afb_r.jpg&&&/figure&&p&看了一下,没有问题,现在df_工作城市中筛选出了30个城市,合计18211条职位数据。 为了数据完整性,df表保持原样,我们用df_工作城市直接操作,进行下一步的可视化。先直接上代码和图,再一一解释下。&/p&&div class=&highlight&&&pre&&code class=&language-text&&fig1 = plt.figure(1,facecolor = 'black')#设置视图画布1
ax1 = fig1.add_subplot(2,1,1,facecolor='#4f4f4f',alpha=0.3)#在视图1中设置子图1,背景色灰色,透明度0.3(figure.add_subplot 和plt.suplot都行)
plt.tick_params(colors='white')#设置轴的颜色为白色
df_工作城市.value_counts().plot(kind='bar',rot=0,color='#ef9d9a')#画直方图图
#设置图标题,x和y轴标题
title = plt.title('城市——职位数分布图',fontsize=18,color='yellow')#设置标题
xlabel = plt.xlabel('城市',fontsize=14,color='yellow')#设置X轴轴标题
ylabel = plt.ylabel('职位数量',fontsize=14,color='yellow')#设置Y轴轴标题
#设置说明,位置在图的右上角
text1 = ax1.text(25,4500,'城市总数:30(个)',fontsize=12, color='cyan')#设置说明,位置在图的右上角
text2 = ax1.text(25,4000,'职位总数:18326(条)',fontsize=12, color='cyan')
text3 = ax1.text(25,3500,'有效职位:18211(条)',fontsize=12, color='red')
#添加每一个城市的坐标值
for i in range(len(list_1)):
ax1.text(i-0.3,list_1[i],str(list_1[i]),color='yellow')
#可以用plt.grid(True)添加栅格线
#可以用下面语句添加注释箭头。指向上海,xy为坐标值、xytext为注释坐标值,facecolor为箭头颜色。
#arrow = plt.annotate('职位数:3107', xy=(1,3107), xytext=(3, 4000),color='blue',arrowprops=dict(facecolor='blue', shrink=0.05))
ax2 = fig1.add_subplot(2,1,2)#设置子图2,是位于子图1下面的饼状图
#为了方便,显示前8个城市的城市名称和比例、其余的不显示,用空字符列表替代,为此需要构造列表label_list和一个空字符列表['']*23。
x = df_工作城市.value_counts().values#x是数值列表,pie图的比例根据数值占整体的比例而划分
label_list = []#label_list是构造的列表,装的是前8个城市的名称+职位占比。
for i in range(8):
t = df_工作城市.value_counts().values[i]/df_工作城市.value_counts().sum()*100
city = df_工作城市.value_counts().index[i]
percent = str('%.1f%%'%t)
label_list.append(city+percent)
#labels参数原本是与数值对应的标签列表,此处30个城市过多,所以只取了前8个城市显示。
#explode即饼图中分裂的效果explode=(0.1,1,1,。。)表示第一块图片显示为分裂效果
labels = label_list + ['']*22
explode = tuple([0.1]+[0]*29)
plt.pie(x,explode=explode,labels=labels,textprops={'color':'yellow'})
#可加参数autopct='%1.1f%%'来显示饼图中每一块的比例,但是此处30个城市,如果全显示的话会非常拥挤不美观,所以只能手动通过labels参数来构造。
#若要显示标准圆形,可以添加:plt.axis('equal')
&/code&&/pre&&/div&&figure&&img src=&https://pic4.zhimg.com/50/v2-131ba26ddec_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1266& data-rawheight=&737& class=&origin_image zh-lightbox-thumb& width=&1266& data-original=&https://pic4.zhimg.com/50/v2-131ba26ddec_r.jpg&&&/figure&&p&可以看见,这个曲线下降的弧度还是挺美的,北上深杭广5个城市占据了超过60%以上的职位数。其中北京当之无愧的占据了四分之一的Python工作数量,不愧为帝都。 上海以3107条职位排名第二,可见上海虽然经济超越北京,在互联网环境和工作机遇方面还需努力!深圳作为中国的科技中心,排名第三我是没疑问的,杭州竟然超过广州排名第四!不过也可以想到,阿里巴巴、百草味等等电商产业带动了整个杭州的互联网文化!&br&【北上深杭广】+成都、南京、郑州,这8个城市占据了全国30座城市中,近80%的工作机会!剩下的22个城市合起来只占据了20%,果然,是基本符合28定律的。。。&/p&&h2&2.工作经验-职位数量及分布&/h2&&p&Python虽然是一名比较老的语言,但是在人们的印象中火起来也就最近几年,Python相关的工作对于【工作经验】是怎样要求的呢?让我们来看看!&/p&&div class=&highlight&&&pre&&code class=&language-text&&df.工作经验.value_counts()#统计【工作经验】下各个字段的累计和
&/code&&/pre&&/div&&figure&&img src=&https://pic4.zhimg.com/50/v2-f7cd3ef51e5d6341a60dd_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&358& data-rawheight=&313& class=&content_image& width=&358&&&/figure&&p&&br&&/p&&p&可以看见出现了一些很数字少量的字段譬如“5年以上”,“2年以上”,“1-2年”,“1年以上”等,这些标签下职位的数量都在10以内,不太具备统计意义,所以我们作图的时候不想让他们出现,必须筛选掉。 下面我们还是通过同样的步骤来清除掉此类数据。&/p&&div class=&highlight&&&pre&&code class=&language-text&&= df['工作经验'].replace(['found no element','3年以上','1年以上','5年以上','2年以上','1-2年'],np.nan)
df_工作经验.value_counts()
df_工作经验.value_counts().sum()
&/code&&/pre&&/div&&figure&&img src=&https://pic3.zhimg.com/50/v2-da9ddb13ff92e87081aed5_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&814& data-rawheight=&353& class=&origin_image zh-lightbox-thumb& width=&814& data-original=&https://pic3.zhimg.com/50/v2-da9ddb13ff92e87081aed5_r.jpg&&&/figure&&p&&br&&/p&&p&现在,可以进行下一步可视化了,还是做2张图:直方图和饼图。通过这两张图可以直观地看到这么多职位中对不同工作经验的要求占比,好做到心里有数!&/p&&div class=&highlight&&&pre&&code class=&language-text&&fig2 = plt.figure(2,facecolor = 'black')
ax2_1 = fig2.add_subplot(2,1,1,facecolor='#4f4f4f',alpha=0.3)
plt.tick_params(colors='white')
df_工作经验.value_counts().plot(kind = 'bar',rot = 0,color='#7fc8ff')
title = plt.title('工作经验——职位数分布图',fontsize = 18,color = 'yellow')
xlabel = plt.xlabel('工作经验',fontsize = 14,color = 'yellow')
ylabel = plt.ylabel('职位数量',fontsize = 14,color = 'yellow')
plt.grid(True)
text1_ = ax2_1.text(5,5600,'城市总数:30(个)',fontsize=12, color='yellow')
text2 = ax2_1.text(5,4850,'职位总数:18326(条)',fontsize=12, color='yellow')
text3 = ax2_1.text(5,4100,'有效职位:18215(条)',fontsize=12, color='cyan')
&/code&&/pre&&/div&&p&&br&&/p&&div class=&highlight&&&pre&&code class=&language-text&&#设置子图2,是位于子图1下面的饼状图
ax2_2 = fig2.add_subplot(2,1,2)
#x是数值列表,pie图的比例根据数值占整体的比例而划分
x2 = df_工作经验.value_counts().values
labels = list(df_工作经验.value_counts().index[:5])+ ['']*2
explode = tuple([0.1,0.1,0.1,0.1,0.1,0.1,0.1])
plt.pie(x2,explode=explode,labels=labels,autopct='%1.1f%%',textprops={'color':'yellow'})
plt.axis('equal')#显示为等比例圆形
#设置图例,方位为右下角
legend = ax2_2.legend(loc='lower right',shadow=True,fontsize=12,edgecolor='cyan')
&/code&&/pre&&/div&&figure&&img src=&https://pic3.zhimg.com/50/v2-2c9de5eb33d9a655cb85c_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1268& data-rawheight=&740& class=&origin_image zh-lightbox-thumb& width=&1268& data-original=&https://pic3.zhimg.com/50/v2-2c9de5eb33d9a655cb85c_r.jpg&&&/figure&&p&总共得到18215条职位。从直方图里可以明显看出工作机会集中在'不限'、'1-3年'、'3-5年', 其中工作经验要求3年以下的(【无经验】+【不限】+【1年以下】+【1-3年】)合计11501条职位,占比超过63%,看来即使是初入门者,大家的机会也还是有不少的! (PS:最后,在df表中添加一列'df_工作经验',以后筛选时就可以直接用了,df['df_工作经验']=df_工作经验)&/p&&p&&br&&/p&&h2&3.工作经验-平均月薪&/h2&&p&这个嘛,大家闭着眼都能想到!肯定是工作经验越久的拿钱越多了!再猜猜?无经验的和5-10年经验的收入差距有多大?这个,嘿嘿就不好猜了,让我们来看看吧!&/p&&p&1.第一步,要想统计工作经验和平均月薪的关系,那么我们先看看df中对应的列df.工作经验和df.average。之前我们构造了一列df_工作经验,把df.工作经验中几个样本容量小于10的值和‘found no element’全筛选掉了,故df_工作经验还能继续使用。现在,让我们看看df.average的信息。&/p&&div class=&highlight&&&pre&&code class=&language-text&&df.average.value_counts()
&/code&&/pre&&/div&&p&可以看到,其中有1265个值是‘面议’,有95个值是‘found no element’,这些值需要替换成空值,不然会影响下一步工资的计算。&/p&&div class=&highlight&&&pre&&code class=&language-text&&df_平均月薪 = df['average'].replace(['面议','found no element'],np.nan)
&/code&&/pre&&/div&&p&2.好了,第一步的简单数据清洗完成了,我们可以思考下一步了,现在我们想要得到的是不同工作经验字段下的平均月薪&/p&&p&A. 首先我需要把df_工作经验和df_平均月薪这两列元素放在一起,构造一个DataFrame用于存放df_工作经验和df_平均月薪这两列元素,且方便进一步的groupby操作。&br&B. 其次我需要把df_平均月薪列根据df_工作经验进行分组(用groupby),分组后我可以求得df_工作经验下各个字段的月薪的计数、最大值最小值、累加和、平均值等一系列数据。&br&C. 当然此处我只需要平均值。对分组后的grouped用mean()方法,就可以轻松统计分组内各项的平均值了。&/p&&div class=&highlight&&&pre&&code class=&language-text&&df3=pd.DataFrame(data={'工作经验':df['df_工作经验'],'平均月薪':df_平均月薪})
df3.info()
grouped3 = df3['平均月薪'].groupby(df3['工作经验'])
grouped3.mean()
&/code&&/pre&&/div&&figure&&img src=&https://pic2.zhimg.com/50/v2-b1fb6e906acb1b6c0105aea3cbfc01fa_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&566& data-rawheight=&349& class=&origin_image zh-lightbox-thumb& width=&566& data-original=&https://pic2.zhimg.com/50/v2-b1fb6e906acb1b6c0105aea3cbfc01fa_r.jpg&&&/figure&&p&&br&&/p&&p&在进行grouped3.mean()时,我们发现报错了:DataError: No numeric types to aggregate,看一下,原来df_平均月薪列里的值都是字符型str,并不是数值型的float,因为前面的步骤没有做好,留下了这个bug,无奈我们需要对值类型做个转换。&/p&&div class=&highlight&&&pre&&code class=&language-text&&#构造一个listi存放转化后float型的‘平均月薪’
pattern = re.compile('([0-9]+)')
listi = []
for i in range(len(df.average)):
item = df.average.iloc[i].strip()
result }

我要回帖

更多关于 能力橙少儿编程怎么样 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信