V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  GeruzoniAnsasu  ›  全部回复第 55 页 / 共 149 页
回复总数  2961
1 ... 51  52  53  54  55  56  57  58  59  60 ... 149  
2022-04-14 04:43:24 +08:00
回复了 Features 创建的主题 程序员 发现 photoshop 做九图好简单啊
以防后面的人一脸懵逼点进来又一脸懵逼点出去,放个搜索结果:
https://www.jianshu.com/p/122240596c99
2022-04-14 04:41:04 +08:00
回复了 Features 创建的主题 程序员 发现 photoshop 做九图好简单啊
woc 长见识了,今天才知道还有这种东西

称得上设计 hacking 了
@devswork

当你 **产品的用户告诉你** 他们有两三个服务中心要冗余备份但统筹管理,你的产品满足不了需求的时候。

而不是「为了方便将来能卖给」 有这种规模的用户而提前用上这样的架构



toC 的话,约等于,「用户没在微博上发网站怎么挂了」,就别用,用不上。
2022-04-12 18:03:19 +08:00
回复了 haoooooooo 创建的主题 职场话题 现在还能让第三方代缴社保不?
@PerFectTime 你好,个体户要房产证
2022-04-11 23:13:03 +08:00
回复了 yunshangdetianya 创建的主题 Go 编程语言 请教各位 go 语言大佬一个问题
@yunshangdetianya

> 接口作用就是限制和约束类型

正相反。

静态类型语言的变量,类型是「唯一的」。你可能一下 get 不到有多唯一,我举个自己初学 oop 时对我帮助很大的例子

- 你的程序有两个窗口
- 窗口 A 叫 A ,B 叫<嘎>
- 你给窗口 A 声明了一个类型 type WindowA struct{ Title: A }
- 窗口 B 的类型 type WindowB struct{ Title: <嘎> }

现在你想判断鼠标点击了哪个窗口:

func findWhichClicked(x,y int) (T){}

问题来了: 应该返回什么类型?返回 A ,那么点到 B 这个函数就给不出数据了,反之亦然。
那……返回他们的公共类型?

type WindowA{Window; Title }
type WindowB{Window; Title }// AB 都来自 Window
func findWhich(x,y int) (w Window){}

但还是有问题: 我想获得点到的窗口的标题:

w := findWhich()
w.Title() // ?

做不到!
我永远只能获得 Window 的标题, 不能获得 WindowA 或者 WindowB 的标题。

「这事简直跟我是男人了就不是人了一样荒唐」!!


你可能会疑惑了,那用个公共变量呗

if inA() {w=windowA}
else if inB(){w=windowB} // 类型不匹配!,无法将 WindowA 类型的变量赋值给 Window 类型




------


接口:
type <有 title> interface {Title() }
func findWhichClicked(x,y int) <有 title> {} // windowA 和 windowB 都可以实现 <有 title>
w.Title() // w 可以是任何 <有 title>类型,运行期决定

如果 w 是 windowA ,那么调用 windowA 的实现,是 B 调用 B 的实现。





------


想想这句话: 「我要使用一个变量,它可能代表不同的东西,但类型又得是唯一的」
还速率…… 我甚至都不知道苹果配的那根 usb 线能不能传数据

除了拿来接电源真的没试过其它用途
2022-04-10 18:19:44 +08:00
回复了 OldNio 创建的主题 Apple 公司发了 21 的 16 寸 mbp 还有必要买新的电脑吗
@herozzm
@OldNio

公司电脑离职肯定会回收的,但有个通行做法是一定年限后所有权可以归你。比如阿里就是 4 年,4 年到了可以选换新或永久保留(鸡贼)。不过用这么久了也都到淘汰年限了,所以你懂的……

公司电脑也不是说就完全不能干自己的事,我还得登录自己的私人账号不是,但另一台 windows 主机打游戏还是很必要的。我和周围认识的所有人都是组一台台式机打游戏,主力生产工具用公司的笔记本,除非有很特殊的需求才会自己再添一台笔记本。

原则 1 ,同一领域和用途的重复持有就浪费了
原则 2 ,在特定领域里使用最适合且最好的
2022-04-10 18:00:29 +08:00
回复了 echojoy 创建的主题 问与答 大家的主语言都是什么啊,为什么选择他(她)
@pursuer 使用 C 暴露的数据结构确实大多数语言都没什么瓶颈,但方向调转难度就要陡增了。golang 和 C 几乎可以直接共享所有的数据类型,比如一个很常见的 C 接口接受一个 const char* 或者 struct whatever *,那些有 vm 的语言要从原生层传一个这种结构进去就算谈不上多麻烦吧,起码转译数据结构是躲不开的,而且好多实现被屏蔽了看不到做了啥。在 golang 这就是个「不会被 GC 的 unsafe 指针」,跟 C 的思路完全一致

我是感觉 plugin 属于那种还在 experimental 的东西(虽然发布挺早,但简陋啊),golang 1.11 之前的包管理也很糟糕,但现在已经能吹了不是,以后会有的(大概,如果有人提的话……)。 之前的项目里,需要动态特性的一律无脑 grpc 了,socket 总是能用的。 还是那句话,确实简陋,但轮子很容易接,这点成功弥补了很多缺陷。
2022-04-10 02:28:22 +08:00
回复了 lsk569937453 创建的主题 程序员 如何快速向文件中写入 1 亿个 ip?
@levelworm 好多都是学校里的了,因为学校里你有时间,可以很纯粹地为了学习而学习。你可以 TCP/IP 详解一二三卷硬看,虽然最后可能没记住多少,但看过了哪些目录一定是有印象的,这跟从目的出发一点一点零碎地搜就完全不一样了。

在学校你也有机会看一整本自制 OS 教程,一整本 Linux 教程,一整本 windows 核心编程,你如果说「系统地」怎么学的,那就是书籍目录,没有比这个更系统的了。

有了这些印象作为框架,即便是搜索新东西也会更有头绪一些。比方说 OP 这个例子,假设他其实想解决的问题其实是「要对大量 IP 进行匹配」,你就能想到协议栈,想到 win 和 nix 的内核,就会联想能不能手写逻辑简化数据结构的处理,以及联想到能不能别用内核的协议栈——复制数据和切换内核态都很耗时间。然后你就能用 high performance 「 USER SPACE 」 tcp 「 STACK 」搜到 DPDK (虽然我是从前公司项目知道它的),而搜 high performance tcp 就很难找到这种方案



我想大多数人都不缺书单,缺的是时间和精力真的去看一遍…… 工作之后自己都有点开始对「为了学习而学习」不屑一顾了
几乎所有的工具型服务都可以 serverless

我个人很期望的一点是,能有个在线版的文档搜索,取代掉 dash 。这东西最大的缺点是不跨平台而且要手动管理文档集,要能做个 IDE 插件写什么项目就查什么就好了

然后就是些计算密集型的东西,视频压制什么的。用 PC 压片真的蠢,高参数压片一压就一晚上,母片数据也就几个 G (粗压一遍),再不济一两小时也能传完了,让我的 PC cpu 满载几小时不能响应,显然是不经济的

专家们在说「是未来」的时候,我猜他们的期望是以后别再用本地机子跑机器学习了,随时租一个短期高性能炼丹炉肯定要香很多
2022-04-10 00:57:43 +08:00
回复了 echojoy 创建的主题 问与答 大家的主语言都是什么啊,为什么选择他(她)
最近看到不少 golang 的抱怨帖

但我想给 golang 正一下名。
众所周知没有任何语言或套件能解决一切问题。如果语言能解决一部分问题,那么在这部分问题上就是个好选择。

golang 解决了什么问题:

1. 没有菜逼能把程序性能写崩,也不会有 pro 写出你要看很久才能弄清楚妙处在哪的魔法,逻辑很直观
2. bootstrap 一个项目足够简单,有现代的好用的,yet keep it simple 的包管理
3. 对接 ABI 没有什么痛苦,一切可以在 C interface 上完成


这意味着 golang 保持着极低维护成本的前提下还能提供不错的开发效率。

在过去, 能达到 1 效果的语言都因为先天不足非常难以管理构建环境和依赖,看看 C 就知道了。上手一个 5w 行不到的 C 项目,可能都得先研究半个月构建脚本在写什么,甚至怎么往项目里加一个新文件都要试错很久,单元测试也是噩梦,写一个「自动收集某目录下的文件并生成单测 executable 」的「构建脚本」就得花掉不少时间,更别说试图引入一个新依赖包的时候 —— 我 tm 不如想办法复制粘贴一小部分要用的代码得了。


而这一切在 golang 上只需要 go get 和 go test


可以说 golang 的项目我是有自信无论最后写成了一坨什么样的屎,后面接手的人都是能吃得进去的()



golang 粉在吹什么大道至简是吹歪了。简陋得承认,error code 就是冗长。但比起 c++ 能在异常处理里因为捕获的异常对象指针莫名其妙空了而 crash 的这种「异常」(这是我遇到的 ANTLR 生成的 c++代码的一个真实 bug )—— return error code 你一目了然它不可能搞崩 GC 。这种「从简」还相对有道理一点,但表达不出 golang 的优点。




一句话来说,一个语法跟 C 一样简单,且无缝对接 C Interface 和 os native 的,能编译成 standalone 的性能不错的静态类型语言,还能像 nodejs 一样随意下载任何依赖包,着足够现代的生态支持,我认为足以成为任何想要开发面向服务器应用的小开发团队的第一选择。

找不到会写代码的人=>不需要,随便写写不崩
简陋语法写起来很慢=>不用造轮子,你能很快地搜索并一键引入全球的轮子

小公司福音。
2022-04-09 16:17:13 +08:00
回复了 lsk569937453 创建的主题 程序员 如何快速向文件中写入 1 亿个 ip?
不知道 OP 能不能意识到这问题背后有多少坑……

1. 多线程读写同一个 io 很蠢且不会起作用。因为文件系统 api 的作用仅仅是给内核发个通知,让内核去 copy 数据。多线程和单线程调用同一个 file descriptor 上的读写不会有什么区别
2. 1 亿个 ip 不应该放在一个普通文件里,这么大规模的数据为什么不用数据库管理?
3. ipv4 原本仅仅只是一个 4 字节的整数,ipv6 也只有 16 字节,不知道 OP 准备存的是什么,不会是字符串吧
4. 这种规律排布的数据压缩比本来可以非常大的,考虑压缩了吗



最快的方法是开一个 file map (mmap) ,然后在 mmap 给你提供的「内存」里存数据。你往里写的时候写的是内存,然后 OS 内核会自动帮你把内存页交换到文件系统上。

但这个映射也还是可以继续优化的,因为默认内存页很小且物理内存不连续。如果你想,用上巨型页和手撸的 dma 驱动可以更快
@gam2046 golang 没有 exception ,没有「异常」。

它只有「错误码」

而且错误码是个字符串 hhhhh
2022-04-08 16:36:29 +08:00
回复了 TWorldIsNButThis 创建的主题 问与答 一个编程语言的语法哪些是真语法哪些是语法糖?
循环是 goto 的语法糖( doge
1 ... 51  52  53  54  55  56  57  58  59  60 ... 149  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1066 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 34ms · UTC 20:01 · PVG 04:01 · LAX 12:01 · JFK 15:01
Developed with CodeLauncher
♥ Do have faith in what you're doing.