前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一日一技:做项目时Python和Java该如何选择?

一日一技:做项目时Python和Java该如何选择?

作者头像
青南
发布2022-04-07 19:10:58
4630
发布2022-04-07 19:10:58
举报
文章被收录于专栏:未闻Code未闻Code

一、经验分享

在V2EX上面,有人问做项目的时候,Python和Java应该怎么选择?

我的回答是:

1. 如果你自己一个人写项目,那么用Python

2. 如果很多人一起写这个项目,并且每个人都是大佬,那么也用Python

3. 如果很多人一起写这个项目,但有至少一个人是混子,那么用Java

如果前面有两条路,一条很长,但是能很平稳的走到终点,另一条需要飞檐走壁,但很快就能到终点。你跟混子说,让他走平稳的长路,但他不会听你的,他自以为自己可以飞檐走壁,结果不仅自己摔了,还把路给炸了。但用Java,在语言层面限制他只能走平稳的长路,让他没有办法做其它选择。这样对项目来说最安全。

二、问题解答

1

序列化场景:redis中有一个键值对,value是java类型的Long(不是基础类型long)。现在我有一个需求是:如何用python代码也能够同样设置一个java里面的Long类型的value。

反序列化场景:从redis中读取value的值如图所示,但是这是一个二进制的串,要怎么反序列化出来处理成python的呢?

对Python来说,不存在long不long的问题,他就是int。因此,所有字符串形式的序列化都不能用,例如json就不能用。但protobuf/msgpack 是可以标记数据类型的二进制序列化格式。因此,你可以使用protobuf或者msgpack来序列化。这样Java就可以识别到数据类型了。你图中就是一种二进制形式的序列化数据。但需要知道它是用什么东西序列化的,才能反序列化。

2

我希望能够在git push时,自动执行black格式化代码,从而达到提交的代码都是经过格式化的要求,是否有这种设置可以达到这个目的呢?

有两种方法:1. 设置git hook,它会在你push前自动先做一些自定义操作。你搜索这个关键词就能找到。2. 使用jenkins/GitHub action。你代码提交到GitHub上面后,它自动开始运行拉代码,格式化再推回去。

3

请教下南哥,从文本大量写入MySQL,或者从mysql大量导出到文本有什么高效的办法么?用异步或者多线程有效果么?

大量写入的时候,要用执行计划,通过executemany一次写入一批数据。一批1000条。读取的时候,看这篇:为什么PyMySQL获取一条数据会让内存爆炸

4

接问题3,大量读的话用pymsql的流式游标是不是可行,不会让内存炸掉,但是测了下读取速度会下降?

你把数据分段,多起几个线程分别读不同段的就可以了。

5

现在自己研究爬虫,用Python+selenium(已经隐藏掉selenium特征,用公众号介绍的Stealth),现在试着爬Tmall的商品价格,(通过页面直接抓),刚开始抓几个页面还可以,没有障碍,抓10几个页面后,就会弹出来滑动验证,selenium可以自动滑块,但滑块后提示失败 需要重新滑动,滑好几次都是失败,即使人工滑动,也是失败。麻烦给个指点,有什么方法可以通过?

因为selenium能被识别的特征有很多,你隐藏不干净。第二是淘宝会根据用户行为来判断你是不是爬虫,这不是隐藏特征就行的。行为检测这个很难解决。即使你真人手动用正常的浏览器打开tmall,然后一页一页手工复制商品,复制十多页它也会出现验证码。因为正常购物的用户不会有你这个行为。它用的是群控,需要通过手机集群操作app来抓的数据。

南哥,请问下,我们公司是个创业型的公司,数据量应该是在十亿到百亿级,最近准备搭建分布式数据库,mysql和mongodb的分布式采用那种方式比较好呢,我测试过很多方式效果都不是太好,也有可能是哪里配置不好,还测试过tidb数据库这些,实在是没有头绪,还望南哥和各位大佬们指引方向!

这个数据量绝对不要用mysql。它根本撑不住。mongodb能撑住几亿数据的写入,但是撑不住查询。给你两个建议:

1. 如果你主要是搜索,用Elasticsearch。

2. 如果你涉及大量group by这种聚合查询,用clickhouse。它的性能极高,单机单节点,在4亿数据里面聚合查询,结果秒出。你100亿数据,用三台机器部署clickhouse就够了。

不过他们都有短板。elasticsearch不适合复杂的聚合查询。clickhouse不适合频繁更新已有数据。有时候可能要两个结合起来用。

ok,了解,我以为是我配置问题造成测试效果不好,我去试试clickhouse,感谢,受教了!

创业公司哪来的这么多数据?

哦,我是计算未来可能增长数据量,目前很长一段时间可能就一亿左右,或者说我可以先不用考虑那么长远?

不要过度设计,强大的设施一般都有代价。基础设施应该跟软件和数据规模相匹配才好。预留一定的冗余。规模上升到现有的基础设施快要撑不住的时候再升级。

好的,那这样的话,mongodb+es是不是比较好的方案呢?

是的

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-02-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 未闻Code 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档