首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  CRVV  ›  全部回复第 1 页 / 共 14 页
回复总数  268
1  2  3  4  5  6  7  8  9  10 ... 14  
1 天前
回复了 euzen 创建的主题 Python Python 3 中如何解决字典对字符串进行转义
显然是 XY problem,还没把 Y 问题说清楚

原本的问题是服务器不认 python 传过去的汉字,然后楼主拿 encode decode 和 iso-8859-1 折腾了一下就成功了,以为是服务器只支持 iso-8859-1。
但实际上显然不是这么回事,如果服务器只支持 iso-8859-1,那就不可能成功地把汉字传上去。
但是楼主又没说到底是怎么把字符串传给服务器的,如果是下面这样,说明服务器不支持 \u4e2d 这种编码 unicode 的方法。json.dumps 有一些带默认值的参数,改一改可能服务器就支持了。

>>> json.dumps('中'.encode('utf-8').decode('iso-8859-1'))
'"\\u00e4\\u00b8\\u00ad"'
>>> json.dumps('中')
'"\\u4e2d"'

至于后面的文件读不出来
'源代码' 这个字符串用 utf-8 编码过后的结果,再用 iso-8859-1 reinterpret 出来,就不是原来的字符串了,新的字符串是 'æº\x90代ç\xa0\x81',如果你要读的文件是 '源代码',那当然读不到

.encode('utf-8').decode('iso-8859-1') 是相当于 float x = 3.14159; int* y = (int*)&x; 这样的操作,正常情况下不会用到的。
7 天前
回复了 woahishui 创建的主题 程序员 golang 语言学习有感
@lihongjie0209

重点当然不是格式化的问题
举一个另外的例子

sync.Map 上没有 length 或者 size 方法,获取元素的数量要用 sync.Map.Range 遍历
https://github.com/golang/go/issues/20680
这个链接有解释说为什么不加这个方法,a Len method would either be misleading or inefficient

类似这样的例子应该还有一些,所以有人觉得拿 Go 写的代码质量会更高,因为一些 misleading 或者 inefficient 的功能直接被删掉了



> Python:
> 优秀的性能 -> 要性能的就是 C 来写

几乎所有的语言都能调用 C 代码,照你这个说法,任何一个语言都有优秀的性能

> JavaScript
> npm -> 强大的标准库

npm 不是标准库,而且我几乎没见过有人给 JavaScript 的标准库说过好话

> Java
> 我有 JVM -> 优秀的性能

性能指的不单是执行时间,内存占用量也是性能的一部分,而 JVM 在这方面的性能很渣
即使单说执行时间,JVM 可能也只是在吞吐量上有优势
Linux 5.1 - 5.1.5 的 btrfs 有个 bug,我就把一台机器的内核换成 LTS 了
Linux 的 5.2 的 Intel AX200 的驱动又有 bug 导致不能用,我的一台用这个网卡的机器被我换到了 5.1

个人观点是,mainline 显然不适合,stable 通常没什么问题但偶尔也会出点事,用 LTS 通常不会有问题
太新的硬件有可能所有版本的内核都出问题( Intel AX200 的驱动在所有版本上都有 bug,只是有的影响小一点)

如果你的需求是 桌面操作系统、移动操作系统( LiveCD )
那根本没必要考虑这个问题,直接用你选的发行版给的内核就完事了,出了问题再说
98 天前
回复了 waiaan 创建的主题 C 求问一个关于数组和指针的问题
a 是一个变量,类型是 int[5]

数组是一段连续的内存上放了多个元素,很多语言的数组( std::vector )是一个 struct,包含了这段内存的地址,数组的长度容量这些信息。

但是 C 的数组只是那一段用来放元素的内存,没有其它的东西了,数组的地址,数组本身都是指那一段内存。
98 天前
回复了 askfilm 创建的主题 Go Golang 是 Google 的 ?个人观点
既然楼主这么爱国,至少应该懂得的道理是,民主是有坏处的

如果楼主觉得社区的 JavaScript 的决策流程值得学习,JavaScript 的新特性都加得很好,那去用 JavaScript 就好了,还可以走社区的流程去给 JavaScript 提新特性,让 JavaScript 成为你更喜欢的语言

被少数人控制这个点并不是坏处,主要看这几个人控制得好不好,所谓的 Benevolent Dictator

Go 本身有不少的争议,最典型的例子是错误处理。显然 Go 的错误处理是故意做成这样的,并且有人喜欢也有人不喜欢。任何人都可以批评说我不喜欢这个错误处理方式,但你不能阻止别人做一个人家自己喜欢的语言。

Go 的 LICENSE 就是三句版 BSD,带一个专利的授权。IANAL,但我觉得没有能让用 Go 的公司被告的坑。

这语言本身是 Google 员工设计的,大多数最初的成员仍然是现在的决策成员,工资都是 Google 发的。我不明白为什么 Google 不能有决策权。
1. 1 寸的传感器的尺寸不是 1 寸,其它尺寸也一样,你得去查那个 x*y 毫米的尺寸
2. 对角线尺寸加起来的结果什么也不是,比如 10 个 6 寸的屏幕和 1 个 60 寸的屏幕
3. 面积加起来也没有用,100 个 6 寸的屏幕也不能当一个 60 寸的屏幕来用
4. 论相机的参数,最核心的点是接收到的光量,对应的器材参数是镜头的面积和传感器的面积。即使传感器做大了,镜头也差着好远呢
124 天前
回复了 dackh 创建的主题 程序员 一个 Mysql 索引问题
select * from T where k between 3 and 5
用 k 的索引找到 id
再用 id 来查整条记录

我觉得这么查没有问题,请问不蠢的查询方式是什么?
@qq1004108488
那你要说清楚自己的目标,从帖子的标题和正文来看,读文档就是目标了
如果目标是考试,培训班可能会有很好的作用,找熟悉那个考试的人问问吧
167 天前
回复了 www6688w 创建的主题 程序员 Golang 学习中的疑问,请教一下
https://golang.org/ref/spec#Channel_types

The capacity, in number of elements, sets the size of the buffer in the channel. If the capacity is zero or absent, the channel is unbuffered and communication succeeds only when both a sender and receiver are ready. Otherwise, the channel is buffered and communication succeeds without blocking if the buffer is not full (sends) or not empty (receives). A nil channel is never ready for communication.

communication succeeds 就是 case 可以运行
如果你的目标是读懂文档,需要做的事情大概是
1. 学懂高中英语,高中英语包含所有会用到的英语语法
2. 靠查单词和语法的方式读文档直到能读懂。视你的英语水平,可能很快也可能需要很久才能达到目标

这种事情不是靠报班学来的,原因有两个
1. 培训班通常有明确的目标,通过某个考试这一类的。培训的内容会非常针对这个目标,对总体的能力提升不大。比如你不太可能通过一个 Java 培训班学到很多 Computer Science 的知识。我不知道有专门教你读文档的培训班。
2. 学习这件事情主要是靠自己的,培训班的作用主要在于督促你把时间花在学习上。
189 天前
回复了 nuistzhou 创建的主题 PostgreSQL 求助 PostgreSQL 大神
select table1.date, to_json(table2)->table1.date as v from table1 cross join table2 order by 1;

需要再处理一下 date 转成 TEXT 类型
公司通常会要求体检,那你按照公司的要求去做就好了
如果公司没有问,书面的东西也没有要求你声明所有既往的疾病 ,那当然就没必要说
如果体检能过,那找到一份工作不是难事。即使体检过不了,也有不要求入职体检的公司

从公司的角度来说,并不是在乎你有没有得过什么病
而是如果一个员工得了重大疾病,就可以获得很长的带薪(有折扣)假且公司不能辞退
公司只是不想承担这个风险而已

这个事情和行业没关系,如果不是打算破产或者打算跑路的公司,通常都会考虑这个

这是国家规定带来的问题,把养病的责任推给公司,导致了病人失业
@darmau
BTC 的分叉相当于把原来的一家上市公司拆分成两家公司,如果你持有原来那一家公司的股票,拆分完你持有了两家公司的股票,这个拆分操作本身没有让你持有的东西减少。
拆出去的可能只是原先公司的一小部分,原先公司的股价仍然很高也完全正常。

央行发行货币大约是说一家公司本来有 100 股,你持有 2%,然后这家公司又增发了 100 股,增发的这个过程也没给你任何的好处,但是持有的公司股权就只剩下 1% 了

这完全是两回事
@vencent

> 而 go 语言的 len 函数对于其他内置类型来说获取的是容器的长度(即元素的个数),而对于 string 类型获取的却是字节数。这种奇怪的不一致我认为是它的设计问题。

对所有类型,len 返回的都是
总字节数 / sizeof(一个元素)
对字符串,一个元素指的是 byte,否则 sizeof(一个元素) 不是常数
这是它一致的地方

另一个 len 不返回 code point 数量的原因是,得到字符串里 code point 个数需要把整个字符串遍历一遍,这样会慢

另一方面,code point 的个数也不一定是你想要的结果,因为在某些情况下多个 code point 才对应一个字,你会不会想让 len 返回字的个数?


至于为什么 for _, char := range "string" 是用 code point 来遍历而不用 byte 来遍历
我觉得你不会希望用 byte 来遍历字符串的
242 天前
回复了 jiansihun 创建的主题 酷工作 我司的面试题目公开诚聘 Java 工程师入坑
@petelin

> 为什么要路由到同一台机器?

如果同一个用户的请求会被路由到不同的机器上,就需要一个中心的数据库来记录哪些用户发过请求,这个数据库会成为瓶颈

> 那台机器挂了呢 扩容了呢?

这里的点是按照用户的 id 来分请求,减少后面每一台机器上的负担
后面的“一台机器”可以不是一台机器,你改成若干台机器加 Redis, 是一样的
这个若干台机器加 Redis 的东西可以继续扩容,但是 load balancer 上的后端不能增加
另外楼主给定了请求数量的上限,在这个题目的范围里不需要考虑扩容

> 还有这个算法太简单了 可能抽不到 200w

能抽到多少数字和算法简不简单没有关系
如果你觉得不行,请直接指出来哪里有问题
243 天前
回复了 jiansihun 创建的主题 酷工作 我司的面试题目公开诚聘 Java 工程师入坑
1. 给登录用户一个 jwt,客户端在发的请求的一个 HTTP header 里带上用户 id
2. 在 load balancer 上,拿用户 id 来决定路由,让同一个用户的请求只会被路由到同一台机器上
3. 接到请求的机器验证 jwt,并且记下来发过请求的用户,如果这个用户已经发过请求就直接返回
4. 随机决定 1% 的用户中奖,然后把数据库上把剩余奖品的数量 atomic x--,如果 x>0 就给用户返回中奖了

数据库上只有 200 QPS 的请求,只要是支持 atomic 操作的数据库应该都能用
其它的部分互不依赖可以无限加机器

没做过类似的东西,大概想了一下这样应该能用
245 天前
回复了 codechaser 创建的主题 C size_t 的使用是安全的吗?
1. size_t 当然能用,用对了就是安全的,用错了可能不安全
2. 发代码要用复制粘贴功能,不要手动输入
3. 发代码要把代码粘全,你发的代码编译不过
1  2  3  4  5  6  7  8  9  10 ... 14  
关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2060 人在线   最高记录 5168   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.3 · 41ms · UTC 12:02 · PVG 20:02 · LAX 04:02 · JFK 07:02
♥ Do have faith in what you're doing.