V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  dragondove  ›  全部回复第 1 页 / 共 8 页
回复总数  159
1  2  3  4  5  6  7  8  
2 天前
回复了 JustW 创建的主题 Windows 重装电脑用 Scoop 管理软件,清爽多了!
@wowpaladin scoop 只是多了安装、初始化的步骤,楼主写的东西太细了,实际上使用只需要几行命令就可以开始。
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression
scoop bucket add main
scoop bucket add extras
这样就初始化好了,后面安装就是
scoop install 7zip
这样
scoop 比 winget 好的点是他把所有软件和他们的配置都保存到一个目录下了,比较易于管理。而且安装时不会有任何弹窗,不会索要管理员权限,软件都是安装到用户家目录下。
2 天前
回复了 JustW 创建的主题 Windows 重装电脑用 Scoop 管理软件,清爽多了!
@amorphobia 不建议所有东西都用 scoop 安装,特别是那些支持自动更新、增量更新的软件。scoop 安装库(比如 vcredist)和 cli 工具就好了,图形化工具大部分还是建议直接官网安装器(比如 IDE 、浏览器这些),比较小的软件比如 altsnap/everything/7zip 这些还是可以用 scoop 的
浏览器的话可以安装一个 surfing keys 然后按键盘的 d 往下滚动,e 或者 u 往上滚动。其他 pdf 阅读器类的软件一般也有类 vim 快捷键,可能是 j/k 移动,u/d 移动的。
@jheroy 这个选项是默认启用的,我也试过手动启用了,还是不能这样补全,你可以试试
@lelelelelele 设计模式是好东西,好到一些语言专门把特定的模式简化到了语法设计上。但是要避免做啥都上设计模式的思维。java 8 引入 lambda 之后可以考虑部分设计模式使用 lambda 编写来简化代码(比如策略模式可以是 Map<TypeEnum, Function<Input, Output>> strategies;)
设计模式其实在其他语言上也非常普遍,我不知道为什么很多人说的好像设计模式是垃圾一样。
我举几个例子:
1. python 语法上直接支持装饰器模式(函数装饰器),js 也有对应提案
2. 迭代器模式不用多说,增强 for ,现在各种语言支持的函数式 map 、enumerator 之类的东西
3. 观察者模式,响应式库都是这套,流式数据处理也一般需要观察者模式
4. 单例模式,kotlin/scala 直接引入 object 来支持(当然也是为了万物皆对象,摒弃 java 的 static )
5. 代理模式,kotlin 直接支持 by 委托
7. 建造者和工厂,现在有些语言没有构造器,习惯上手写 builder 的很多
24 天前
回复了 momowei 创建的主题 程序员 为啥国内对阿里轮子似乎嘲讽居多
也有看到国产就反对的人。以 fastjson 作为例子:
fastjson 总是有人说漏洞,但是你实际去查询一下 cve 数量发现 jackson 比 fastjson 多得多。开源项目有漏洞本身就是挺正常的事情。( log4j2 出大漏洞最后不还是该用用)而且 fastjson2 重新设计就默认关闭 autotype 了,也不是那种不维护的项目。至于性能相关,fastjson2 做了很多优化,wenshao 也给 openjdk 的 committer ,给 jdk 提交过一些代码(虽然有部分是为了提升 fastjson2 性能的,但是也是优化,在其他地方说不定也有用)
我个人认为,fastjson 这个库除了灵活性差,非定制化场景易用性和性能都是足够好的( java 生态下,其他语言可以有更好的,java 的元编程手段比较单一,基本都是靠反射和字节码操作导致很少有编译期保证安全的库)。
@yh7gdiaYW 静态检查的部分没必要带到运行时,运行时需要的检查可以用 pydantic 之类的设施补全。支持复杂类型系统的语言大部分类型信息也是不会留到运行时的,因为运行时不需要。(而且不留到运行时这样抽象反而是零成本的,资源消耗更少,当然用 python 就不考虑这个了)
@JYLu 和 Typescript 那样的差距很大是指什么?如果说是类型运算方面的,那确实没有,但是仅仅是类型提示、静态检查错误检测,python 已经完全具备了。你只要使用带静态检查的语言服务器开严格模式就可以了。复杂代码也是一样的,python 和 typescript 一样支持字面量类型,union 类型而且还是自带 tag 的 union 类型,这方面反而比 typescript 要好用点。
31 天前
回复了 Ayanokouji 创建的主题 Java JDK 24 发布了
@ExplodingFKL aot linking 对于客户端软件算是很有用的功能了。compact object header 也是很有用的特性,虽然还是实验性的,现在也只合并了半个实现( 8 字节对象头),4 字节版本合并到 lillput 上了,还在更新支持各类 gc 之类的。对象头的缩减对于服务端程序感觉能减少 10%以上的内存占用,还能够减少 gc 压力,对性能也会有提升。
@yazinnnn0 要在 lambda 中使用变量的话,最好的方式是使用一个包装类,性能最高(数组开销比单个引用对象大)。可以直接使用 apache commons 库里的 MutableInt/MutableObject ... 之类的类型。
50 天前
回复了 aqtata 创建的主题 Linux 远程连接终端中怎么粘贴文本?
换 neovim 会好点,neovim 自带支持 osc52 ,vim 需要插件来支持。详情看 :h clipboard-osc52
tab 在不同地方一致性的问题在现在不是问题,主流编辑器/IDE 都支持调整 tab 的显示大小,github 也支持个人设置里设置 tab 的显示大小,或者在地址栏里使用 ?ts=8 参数可以调节代码中 tab 的显示大小。
tab 的好处就是不同人不同显示设备可以按照个人喜好随意调节而不破坏原本的代码,不过实际使用时可能要用空格补齐对齐,而且不同 ts 大小会导致对齐被破坏。例如下面的 python 代码
l: list[list[int]] = [[1, 2],
[3, 4]]
这里 [3 前需要空格补充对齐,而且换个 ts 可能就会导致左中括号和上一行无法对齐。(例如这个变量名 l 是很长的一串)
this_is_a_long_variable_name = ... 这样的东西,换个行来对齐就容易出问题
64 天前
回复了 codists 创建的主题 Python Python 3.14 采用新型解释器,速度提高-3%~30%
@wionch 现阶段的 nogil 只能帮助提升多线程的性能,单线程的性能反而会下降,你可以自己构建 python 3.13 ,构建参数有 gil 相关的,现在已经可以关闭了。
@codegenerator 显然可还行,你要不看看极客湾最新的测试视频,星穹铁道的帧率稳定性根本比不过一些安卓机。稳定性不行不可能流畅
71 天前
回复了 unt 创建的主题 数据库 过来人说说, postgresql 和 mysql 究竟怎么选
@securityCoding pg 的源码写的好,易读易修改
78 天前
回复了 nnegier 创建的主题 程序员 可以讲下你看到的编程语言的美吗?
@mcfog 和语言设计者的功底也有关,以及语言提供多大的自由度(有时候限制自由是好事),举个例子,scala 没有运算符重载,但是也可以给任意类型添加运算符。因为 scala 的函数名可以为符号,结合扩展方法和中缀表达式就可以给类型添加运算。scala 中 `1 + 2` 就是 `1.+(2)` 而已。这样就不需要额外引入运算符重载的语法了。缺点就是自由度过大,导致一些库作者玩的太花,各种自定义运算符满天飞。所以有时候限制自由度是有好处的
78 天前
回复了 nnegier 创建的主题 程序员 可以讲下你看到的编程语言的美吗?
@Dropless 创建对象的话,kotlin 和 scala 都可以直接 `val person = Person()` 也足够简洁(数字符的话和 Person person = new() 是一样多的),不过 scala 中内置的想法会不太一样,scala 是 universal apply (实际上调用的是 Person 伴生对象的 apply 方法)更加通用一些,也可以自行改造成工厂方法(用起来和构造器一样,实际是工厂,更加统一)
78 天前
回复了 nnegier 创建的主题 程序员 可以讲下你看到的编程语言的美吗?
@scp3125 Result 对比 Checked Exception 并没有显著的优势,你的例子换成 java 写可能还更简洁
```java
public static String readFile(String path) throws FileNotFoundException, IOException {
File file = new File(path);
try (var fis = new FileInputStream(file)) {
return new String(fis.readAllBytes());
}
}
```
异常靠 throws 传播,和你的问号作用基本是一样的,函数的返回类型还更简单,模式匹配靠 catch 匹配,能达到相同的效果,代码还更简洁。
78 天前
回复了 nnegier 创建的主题 程序员 可以讲下你看到的编程语言的美吗?
@dwu8555 你这个例子不太能表现出 LINQ 的优势,对应的 scala 代码如下
```scala
val scores = Array(97, 82, 60, 99)
val r = for score <- scores
if score > 80
yield score

println(r.mkString(" "))

```
python 也可以做到更简洁
```python
scores: list[int] = [97, 92, 81, 60]
r = [score for score in scores if score > 80]
print(" ".join([str(x) for x in r]))
```
1  2  3  4  5  6  7  8  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1042 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 32ms · UTC 18:41 · PVG 02:41 · LAX 11:41 · JFK 14:41
Developed with CodeLauncher
♥ Do have faith in what you're doing.