python永恒
㈠ 鱼C工作室python作业
公告:还在担心鱼币不够用?买个终身会员,一劳永逸!
小甲鱼2018-11-1
[课后作业]第001讲:我和Python的第一次亲密接触 | 课后测试题及答案
...23456..8322
小甲鱼2013-9-27 25925188663 亿颗学徒的心1小时前
[课后作业]第010讲:列表:一个打了激素的数组 | 课后测试题及答案- [售价10鱼币]...23456..1217
小甲鱼2013-10-5 24337172896 亿颗学徒的心12分钟前
[课后作业]第011讲:列表:一个打了激素的数组2 | 课后测试题及答案- [售价10鱼币]...23456..1098
小甲鱼2013-10-8 21948154689 fishc_tigerfu半小时前
[课后作业]第012讲:列表:一个打了激素的数组3 | 课后测试题及答案- [售价10鱼币]...23456..1100
小甲鱼2013-10-12 21984163848 Baddy_C6分钟前
[课后作业]第013讲:元组:戴上了枷锁的列表 | 课后测缺闭试题及答案- [售价10鱼币]...23456..999
小甲鱼2013-10-20 19963135589 头顶微凉19分钟前
[课后作业]第014讲:字符串:各种奇葩的内置方法 | 课后测试题及答案- [售价10鱼币]...23456..930
小甲鱼2013-10-21 18585168463 那位大人半小时前
[课后作业]第015讲:字符串:格式化 | 课后测试题及答案- [售价10鱼币]...23456..849
小甲鱼2013-11-28 16976141313 迷茫的snail2小时前
[课后作业]第016讲:序列!序列! | 课后测试题及答案- [售价10鱼币]...23456..844
小甲鱼2013-12-14 16865116423 manchesiteliuyu半小时前
[课后作业]第017讲:函数 - Python的乐高积木 | 课后测试题及答案- [售价10鱼币]...23456..945
小甲鱼2013-12-17 18893141618 溪风ttt2小时前
[课后作业]第018讲:函数:灵活即强大 | 课后测试题及答案- [售价10鱼币]...23456..861
小甲鱼2014-1-7 17212126242 hzf5201小时前
[课后作业]第019讲:函数:我的地盘听我的 | 课后测试题及答案- [售价伏键裂10鱼币]...23456..835
小甲鱼2014-1-8 16691129653 ushio00114分钟前
[课后作业]第020讲:函数:内嵌函数和闭包 | 课后测试题及答案- [售价10鱼币]...23456..836
小甲鱼2014-1-11 16712133470 @tao1小时前
[课后作业]第021讲:函数:lambda表达式 | 课后测试题及答案- [售价10鱼币]...23456..731
小甲鱼2014-3-16 14611107123 ranshi007半小时前
[课后作业]第022讲:函数:递归是神马 | 课后测试题及答案- [售价10鱼币]...23456..702
小甲鱼亮乱2014-3-17 1403099695 skywing1682小时前
[课后作业]第023、024讲:递归:这帮小兔崽子、汉诺塔 | 课后测试题及答案- [售价10鱼币]...23456..634
小甲鱼2014-3-19 12660105956 Python..6分钟前
[课后作业]第025讲:字典:当索引不好用时 | 课后测试题及答案- [售价10鱼币]...23456..617
小甲鱼2014-3-21 1232591640 1532022658012分钟前
[课后作业]第026讲:字典:当索引不好用时2 | 课后测试题及答案- [售价10鱼币]...23456..558
小甲鱼2014-3-24 1115486744 huangwenjun1小时前
[课后作业]第027讲:集合:在我的世界里,你就是唯一 | 课后测试题及答案- [售价10鱼币]...23456..503
小甲鱼2014-3-27 1004094262 Lamedadada3分钟前
[课后作业]第028讲:文件:因为懂你,所以永恒 | 课后测试题及答案- [售价10鱼币]...23456..621
小甲鱼2014-3-30 12410109128 千屿王子1小时前
[课后作业]第029讲:文件:一个任务 | 课后测试题及答案- [售价10鱼币]...23456..603
小甲鱼2014-4-2 12045131223 千屿王子1小时前
[课后作业]第030讲:文件系统:介绍一个高大上的东西 | 课后测试题及答案- [售价10鱼币]...23456..494
小甲鱼2014-4-7 9874110873 _panky1小时前
[课后作业]第031讲:永久存储:腌制一缸美味的泡菜 | 课后测试题及答案- [售价10鱼币]...23456..423
小甲鱼2014-4-13 844372294 ccc电池21分钟前
[课后作业]第032讲:异常处理:你不可能总是对的 | 课后测试题及答案- [售价10鱼币]...23456..360
小甲鱼2014-4-26 719462931 小小老虎05271小时前
[课后作业]第033讲:异常处理:你不可能总是对的2 | 课后测试题及答案- [售价10鱼币]...23456..391
小甲鱼2014-4-28 781961046 太复杂6小时前
[课后作业]第034讲:丰富的else语句及简洁的with语句 | 课后测试题及答案- [售价10鱼币]...23456..377
小甲鱼2014-6-10 753960981 小小老虎05271小时前
[课后作业]第035讲:图形用户界面入门:EasyGui | 课后测试题及答案- [售价10鱼币]...23456..368
小甲鱼2014-6-12 735985669 小米苏万事可爱3小时前
[课后作业]第036讲:类和对象:给大家介绍对象 | 课后测试题及答案- [售价10鱼币]...23456..485
小甲鱼2014-6-16 969966162 1855100454910分钟前
[课后作业]第037讲:类和对象:面向对象编程 | 课后测试题及答案- [售价10鱼币]...23456..524
小甲鱼2014-6-20 1046780971 瓜_子6小时前
[课后作业]第038讲:类和对象:继承 | 课后测试题及答案- [售价10鱼币]...23456..414
小甲鱼2014-6-24 826158391 alenvan1小时前
[课后作业]第039讲:类和对象:拾遗 | 课后测试题及答案- [售价10鱼币]...23456..369
小甲鱼2014-8-17 737856868 瓜_子6小时前
[课后作业]第040讲:类和对象:一些相关的BIF | 课后测试题及答案- [售价10鱼币]...23456..310
小甲鱼2014-8-19 618953849 瓜_子1小时前
[课后作业]第041讲:魔法方法:构造和析构 | 课后测试题及答案- [售价10鱼币]...23456..329
小甲鱼2014-8-21 657946433 icewin昨天23:03
[课后作业]第042讲:魔法方法:算术运算 | 课后测试题及答案- [售价10鱼币]...23456..298
小甲鱼2014-8-27 594545059 卡比小飞龙8小时前
[课后作业]第043讲:魔法方法:算术运算2 | 课后测试题及答案- [售价10鱼币]...23456..265
小甲鱼2014-8-29 529041524 刘又又1小时前
[课后作业]第044讲:魔法方法:简单定制 | 课后测试题及答案- [售价10鱼币]...23456..250
小甲鱼2014-11-17 499949235 aliang123半小时前
[课后作业]第045讲:魔法方法:属性访问 | 课后测试题及答案- [售价10鱼币]...23456..232
小甲鱼2014-11-28 462138731 ablat1小时前
[课后作业]第046讲:魔法方法:描述符(Property的原理) | 课后测试题及答案- [售价10鱼币]...23456..205
小甲鱼2014-12-12 408133198 千屿王子14分钟前
[课后作业]第047讲:魔法方法:定制序列 | 课后测试题及答案- [售价10鱼币]...23456..196
小甲鱼2015-2-25 390932379 刘又又2小时前
[课后作业]第048讲:魔法方法:迭代器 | 课后测试题及答案- [售价10鱼币]...23456..187
小甲鱼2015-4-20 373227878 回羊1小时前
[课后作业]第049讲:乱入:生成器 | 课后测试题及答案- [售价10鱼币]...23456..172
小甲鱼2015-4-20 343326725 刘又又4小时前
[课后作业]第050讲:模块:模块就是程序 | 课后测试题及答案- [售价10鱼币]...23456..177
小甲鱼2015-4-24 352631561 Tippy~7小时前
[课后作业]第051讲:__name__属性、搜索路径和包 | 课后测试题及答案- [售价10鱼币]...23456..171
小甲鱼2015-10-23 341728409 瑾biu6小时前
[课后作业]第052讲:像极客一样去思考 | 课后测试题及答案- [售价10鱼币]...23456..150
小甲鱼2015-10-24 299024191 瑾biu2小时前
[课后作业]第053讲:论一只爬虫的自我修养 | 课后测试题及答案- [售价10鱼币]...23456..240
小甲鱼2015-11-9 479446740 Dida111111181小时前
[课后作业]第054讲:论一只爬虫的自我修养2:实战 | 课后测试题及答案- [售价10鱼币]...23456..186
小甲鱼2015-11-18 370539577 白小贝6小时前
[课后作业]第055讲:论一只爬虫的自我修养3:隐藏 | 课后测试题及答案- [售价10鱼币]...23456..152
小甲鱼2016-5-17 303150222 juncao50昨天17:42
上图为网站图,网站为:网页链接。
㈡ Python开发好还是java开发快
“先说目前的状况,国内的大公司偏业务的一般都用 Java 做后台开发比如淘宝,网易,美团等. Python 国内一般是一些体量不是这么大的公司使用,例如 豆瓣,知乎. 相对于 Python来说,Java 的语法古板,加上静态语言,纯面向对象(缺少函数式编程范式,例如匿名函数,”
㈢ golang 协程什么时候切换
应puppet大拿刘宇的邀请,我去西山居运维团队做了一个简短分享,谈谈为什么我要将我们的项目从python转向go。
坦白的讲,在一帮python用户面前讲为什么放弃python转而用go其实是一件压力蛮大的事情,语言之争就跟vim和emacs之争一样,是一个永恒的无解话题,稍微不注意就可能导致粉丝强烈地反击。所以我只会从我们项目实际情况出发,来讲讲为什么我最终选择了go。
为什么放弃python
首先,我其实得说说为什么我们会选择python。在我加入企业快盘团队之前,整个项目包括更早的金山快盘都是采用python进行开发的。至于为什么这么选择,当时的架构师葱头告诉我,主要是因为python上手简单,开发迅速。对于团队里面大部分完全没服务端开发经验的同学来说,python真的是一个很好的选择。
python的简单高效,我是深有体会的。当时私有云项目也就几个程序员,但是我们要服务多家大型企业,进行定制化的开发,多亏了python,我们才能快速出活。后来企业快盘挂掉之后,我们启动轻办公项目,自然也使用python进行了原始版本的构建。
python虽然很强大,但我们在使用的时候也碰到了一些问题,主要由如下几个方面:
动态语言
python是一门动态强类型语言。但是,仍然可能出现int + string这样的运行时错误,因为对于一个变量,在写代码的时候,我们有时候很容易就忘记这个变量到底是啥类型的了。
在python里面,可以允许同名函数的出现,后一个函数会覆盖前一个函数,有一次我们系统一个很严重的错误就是因为这个导致的。
上面说到的这些,静态语言在编译的时候就能帮我们检测出来,而不需要等到运行时出问题才知道。虽然我们有很完善的测试用例,但总有case遗漏的情况。所以每次出现运行时错误,我心里都想着如果能在编译的时候就发现该多好。
性能
其实这个一直是很多人吐槽python的地方,但python有它适合干的事情,硬是要用python进行一些高性能模块的开发,那也有点难为它了。
python的GIL导致无法真正的多线程,大家可能会说我用多进程不就完了。但如果一些计算需要涉及到多进程交互,进程之间的通讯开销也是不得不考虑的。
无状态的分布式处理使用多进程很方便,譬如处理http请求,我们就是在nginx后面挂载了200多个django server来处理http的,但这么多个进程自然导致整体机器负载偏高。
但即使我们使用了多个django进程来处理http请求,对于一些超大量请求,python仍然处理不过来。所以我们使用openresty,将高频次的http请求使用lua来实现。可这样又导致使用两种开发语言,而且一些逻辑还得写两份不同的代码。
同步网络模型
django的网络是同步阻塞的,也就是说,如果我们需要访问外部的一个服务,在等待结果返回这段时间,django不能处理任何其他的逻辑(当然,多线程的除外)。如果访问外部服务需要很长时间,那就意味着我们的整个服务几乎在很长一段时间完全不可用。
为了解决这个问题,我们只能不断的多开django进程,同时需要保证所有服务都能快速的处理响应,但想想这其实是一件很不靠谱的事情。
异步网络模型
tornado的网络模型是异步的,这意味着它不会出现django那样因为外部服务不可用导致这个服务无法响应的问题。话说,比起django,我可是非常喜欢tornado的,小巧简单,以前还写过几篇深入剖析tornado的文章了。
虽然tornado是异步的,但是python的mysql库都不支持异步,这也就意味着如果我们在tornado里面访问数据库,我们仍然可能面临因为数据库问题造成的整个服务不可用。
其实异步模型最大的问题在于代码逻辑的割裂,因为是事件触发的,所以我们都是通过callback进行相关处理,于是代码里面就经常出现干一件事情,传一个callback,然后callback里面又传callback的情况,这样的结果就是整个代码逻辑非常混乱。
python没有原生的协程支持,虽然可以通过gevent,greenlet这种的上patch方式来支持协程,但毕竟更改了python源码。另外,python的yield也可以进行简单的协程模拟,但毕竟不能跨堆栈,局限性很大,不知道3.x的版本有没有改进。
开发运维部署
当我第一次使用python开发项目,我是没成功安装上项目需要的包的,光安装成功mysql库就弄了很久。后来,是一位同事将他整个python目录打包给我用,我才能正常的将项目跑起来。话说,现在有了docker,是多么让人幸福的一件事情。
而部署python服务的时候,我们需要在服务器上面安装一堆的包,光是这一点就让人很麻烦,虽然可以通过puppet,salt这些自动化工具解决部署问题,但相比而言,静态编译语言只用扔一个二进制文件,可就方便太多了。
代码失控
python非常灵活简单,写c几十行代码才能搞定的功能,python一行代码没准就能解决。但是太简单,反而导致很多同学无法对代码进行深层次的思考,对整个架构进行细致的考量。来了一个需求,啪啪啪,键盘敲完开速实现,结果就是代码越来越混乱,最终导致了整个项目代码失控。
虽然这也有我们自身的原因,譬如没好的代码review机制,没有好的项目规范,但个人感觉,如果一个程序员没经过良好的编码训练,用python很容易就写出烂的代码,因为太自由了。
当然,我这里并不是说用python无法进行大型项目的开发,豆瓣,dropbox都是很好的例子,只是在我们项目中,我们的python代码失控了。
上面提到的都是我们在实际项目中使用python遇到的问题,虽然最终都解决了,但是让我愈发的觉得,随着项目复杂度的增大,流量性能压力的增大,python并不是一个很好的选择。
为什么选择go
说完了python,现在来说说为什么我们选择go。其实除了python,我们也有其他的选择,java,php,lua(openresty),但最终我们选择了go。
虽然java和php都是最好的编程语言(大家都这么争的),但我更倾向一门更简单的语言。而openresty,虽然性能强悍,但lua仍然是动态语言,也会碰到前面说的动态语言一些问题。最后,前金山许式伟用的go,前快盘架构师葱头也用的go,所以我们很自然地选择了go。
go并不是完美,一堆值得我们吐槽的地方。
error,好吧,如果有语言洁癖的同学可能真的受不了go的语法,尤其是约定的最后一个返回值是error。项目里面经常会充斥这样的代码:
if _, err := w.Write(data1); err != nil {
returun err
}
if _, err := w.Write(data2); err != nil {
returun err
}
难怪有个梗是对于一个需求,java的程序员在写配置的时候,go程序员已经写了大部分代码,但是当java的程序员写完的时候,go程序员还在写err != nil。
这方面,errors-are-values倒是推荐了一个不错的解决方案。
包管理,go的包管理太弱了,只有一个go get,也就是如果不小心更新了一个外部库,很有可能就导致现有的代码编译不过了。虽然已经有很多开源方案,譬如godep以及现在才出来的gb等,但毕竟不是官方的。貌似google也是通过vendor机制来管理第三方库的。希望go 1.5或者之后的版本能好好处理下这个问题。
GC,java的GC发展20年了,go才这么点时间,gc铁定不完善。所以我们仍然不能随心所欲的写代码,不然在大请求量下面gc可能会卡顿整个服务。所以有时候,该用对象池,内存池的一定要用,虽然代码丑了点,但好歹性能上去了。
泛型,虽然go有inteface,但泛型的缺失会让我们在实现一个功能的时候写大量的重复代码,譬如int32和int64类型的sort,我们得为分别写两套代码,好冗余。go 1.4之后有了go generate的支持,但这种的仍然需要自己根据go的AST库来手动写相关的parser,难度也挺大的。虽然也有很多开源的generate实现,但毕竟不是官方的。
当然还有很多值得吐槽的地方,就不一一列举了,但是go仍旧有它的优势。
静态语言,强类型。静态编译能帮我们检查出来大量的错误,go的强类型甚至变态到不支持隐式的类型转换。虽然写代码感觉很别扭,但减少了犯错的可能。
gofmt,应该这是我知道的第一个官方提供统一格式化代码工具的语言了。有了gofmt,大家的代码长一个样了,也就没有花括号到底放到结尾还是新开一行这种蛋疼的代码风格讨论了。因为大家的代码风格一样,所以看go的代码很容易。
天生的并行支持,因为goroutine以及channel,用go写分布式应用,写并发程序异常的容易。没有了蛋疼的callback导致的代码逻辑割裂,代码逻辑都是顺序的。
性能,go的性能可能赶不上c,c++以及openresty,但真的也挺强悍的。在我们的项目中,现在单机就部署了一个go的进程,就完全能够胜任以前200个python进程干的事情,而且CPU和MEM占用更低。
运维部署,直接编译成二进制,扔到服务器上面就成,比python需要安装一堆的环境那是简单的太多了。当然,如果有cgo,我们也需要将对应的动态库给扔过去。
开发效率,虽然go是静态语言,但我个人感觉开发效率真的挺高,直觉上面跟python不相上下。对于我个人来说,最好的例子就是我用go快速开发了非常多的开源组件,譬如ledisdb,go-mysql等,而这些最开始的版本都是在很短的时间里面完成的。对于我们项目来说,我们也是用go在一个月就重构完成了第一个版本,并发布。
实际项目中一些Go Tips
到现在为止,我们几乎所有的服务端项目都已经转向go,当然在使用的时候也遇到了一些问题,列出来算是经验分享吧。
godep,我们使用godep进行第三方库管理,但是godep我碰到的最大的坑就是build tag问题,如果一个文件有build tag,godep很有可能就会忽略这个文件。
IO deadline,如果能自己在应用层处理的都自己处理,go的deadline内部是timer来控制,但timer内部采用一个array来实现的heap,全局共用一个锁,如果大并发量,并且timer数量过多,timeout变动太频繁,很容易就引起性能问题。
GC,这个前面也说了,多用内存池,对象池,另外,我还发现,如果对象的生命周期跟goroutine一致,对性能的提升也不错,也在go的group问过相关问题,大家猜测可能是因为一些对象其实是在goroutine的8k栈上面分配的,所以一起回收没有额外GC了。
Go gob,如果要做RPC服务,gob并不是一个很好的选择,首先就跟python的pickle不通用,然后为了做不同系统的数据传入,任何包都必须带上类型的详细信息,size太大。go里面现在还没一套官方的RPC方案,gRPC貌似有上位的可能。
㈣ csol最新霸主双枪叫什么
叫做【深渊】Elites,左键没什么亮点,左键攻击模式不如【永恒】Python的蓝定身,红击退。可是【深渊】Elites的右键,自身为中心范围5.2m内对所有敌人进行打击,子弹消耗完又有强力大片击飞能力,目前击退能力无可匹敌,就连电锯也甘拜下风,比起最早的一把副武器【血契】D.Eagle,拥有很强力的群体遛僵尸能力,后坐力小,冲卖拿满血雷后,可对一大片僵尸进行爆炸击退,防守能力强,【永恒】Python的单兵生存能力强,定身能力也很恐怖,适合管道,一线天武器,单挑能力强劲,管道对付两三个僵尸没压力,最搜铅适合在管道,而【深渊】Elites,他的定位非常强力,其性能,堪比年度神器,辅助能力无可匹敌,范围定身击退,往往会遇到幸存者一个人利用【深渊】Elites,与七八个甚至十几个僵尸贴身干,子弹用完可以甩出强击机退,这段时间可以用来给主武器换弹,或者捡补给箱,打野能力可点右键,防止偷袭,而且还有命中提醒,这是其他任何武器所不具有世配好的能力,不过缺点也有,子弹耗费很快。