Java 和 Python 思维方式的不同之处

开发 后端
我刚刚开始工作的时候,其实特别讨厌Java。因为它太繁琐,就像一个絮絮叨叨的老奶奶。但后来因为工作原因强行写了一年的Java,反而不那么讨厌它了。

[[434883]]

本文是对未闻Code·知识星球上的开发经验以及问题解答的总结。

一、开发经验

语言决定思维方式

我刚刚开始工作的时候,其实特别讨厌Java。因为它太繁琐,就像一个絮絮叨叨的老奶奶。但后来因为工作原因强行写了一年的Java,反而不那么讨厌它了。

我们常说语言决定思维方式,Java和Python其实是两种不同的思维方式。用Python写代码的时候,我思考的方式是从下到上,从低到高,实现一个个小组件,再组合成整体功能。但是Java先定义接口再实现接口,这种思维方式让我写代码的时候先整体再局部,从高到低,从上到下,把一个功能拆解成一个个小部分。

另外,一开始我写Python,喜欢用字典来存放各种数据。但是我从Java里面学到了bean的思想,用类来储存数据,这个方法让我的Python代码可读性,可维护性大大提高了。

当我们用Python开发,有时候你要反复跟组员说不能乱用lambda函数,不能一个变量赋值不同类型的数据,不要什么数据都往字典堆一层套一层,过两天他们可能还是要违反,但Java从语法层面就能防止这种事情发生。

二、问题解答

1南哥,可以详细说一下,类存储数据吗?

可爱的豆子——使用Beans思想让Python代码更易维护 这是我2016年的一篇文章,记住Python变量类型的三种方式,2016年的时候,python还么有dataclass这个内置模块。现在用dataclass会更方便。

2南哥 ,出一篇https证书科普文章吧。比如:证书是干啥的,存在哪里了,怎么验证的…再比如:怎么fildder也有自己的证书呢?这些玩意百度着虽能搞 原理并不很清楚

一日一技:HTTPS 证书和中间人攻击的原理

3提问:目前还有办法爬知乎仅会员可完整阅读帖子内容吗?目前知乎会员可完整阅读的帖子只能在 app 中可读web 小程序都不行,airtest 现在不显示回答的内容,fd 抓包在 app 内无网络 (手机自带的浏览器可以访问网络排除了fd设置问题)

爬虫只能爬到人眼能看到的内容。如果服务器不返回全文,爬虫自然爬不到。

41s1000并发的问题,之前用多线程等都达不到要求,找到了问题所在,之前一直用的是collection 中的deque作为队列,今天换成了queue 并发一下子到了1000+..但queue底层是用了deque 为啥还会差别那么大?

谁告诉你queue的底层是deque?

deque底层是双向链表。queue不是。

5提问:南哥,有办法抓去到微信小程序接口getuserinfo返回的数据吗?

有。你可以用mitmproxy监控手机的http请求。拦截这个接口的返回信息。我的爬虫书上面讲到了具体的方法,可以在微信读书上面搜索我的名字就能找到我的书,绿皮那本。

6接问题5,可是这样不绕过安卓微信的sslpining,能抓到数据吗?有没有办法电脑微信抓取呢?这样方便一点

用ios

7提问:南哥,requests的 r.raw和r.content有什么大区别,获取的数据都属于bytes类型呀?

官网原文:In the rare case that you’d like to get the raw socket response from the server, you can access r.raw. If you want to do this, make sure you set stream=True in your initial request.

.raw是socket返回的内容。完全没有经过修改。而.content是经过修改和转码的。如果网站返回的是gzip或者deflate的内容,.content会自动解开

8请教一个问题:想监控一个git工程,当git工程新建分支,或者指定分支有提交时,自动触发一个持续集成任务,这个需求,我应该用什么方法实现呢?

如果你用的是GitHub,可以通过GitHub action。如果你用的gitlab,它有一个东西叫做webhook,让你填写一个网址,每次提交会调用一次这个网址

9提问:号内文章多线程事件监控一日一技:Python多线程的事件监控文章示例代码中eve是类外定义的全局变量,self.event可以算类内部实例方法的局部变量。两个变量为何是同一个对象呢?

 

我用参数传进去了,代码第17行

 

责任编辑:武晓燕 来源: 未闻Code
相关推荐

2017-03-14 15:46:30

AndroidiOS不同之处

2009-08-20 10:39:00

Java与C#的不同之

2023-11-27 08:00:36

开发数据库查询

2023-08-10 17:23:10

LibreOfficOpenOffice

2021-03-09 16:38:48

加密货币比特币货币

2009-09-25 16:13:03

Hibernate 3Hibernate2.

2010-04-20 16:07:25

Oracle DRCP

2012-08-23 13:36:27

2014-08-14 17:11:51

LinuxWindows

2010-03-10 10:58:12

python接口功能

2010-01-08 14:35:24

VB.NET模块

2009-12-15 18:47:56

Ruby框架OG

2010-04-08 11:11:16

Oracle查询

2010-05-06 10:09:44

Oracle in

2010-05-24 18:49:13

MySQL数据库

2013-03-11 10:15:25

路由器设备IP地址DHCP

2010-04-26 17:24:56

Unix操作系统

2012-08-31 11:21:12

云计算大数据

2009-11-26 19:18:59

PHP函数implod

2010-05-21 15:33:54

MySQL text
点赞
收藏

51CTO技术栈公众号