V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  cmostuor  ›  全部回复第 25 页 / 共 42 页
回复总数  839
1 ... 21  22  23  24  25  26  27  28  29  30 ... 42  
@czfy 写的时候忘记改了
前几天自然期刊有篇论文你可以看看 中文名称 贫穷、抑郁和焦虑:因果证据和机制 英文名称 Poverty, depression, and anxiety: Causal evidence and mechanisms 链接地址: https://science.sciencemag.org/content/370/6522/eaay0214

如果你让孩子现在快乐那以后会因为贫穷而导致抑郁和焦虑继而又进一步导致贫穷 如果现在压力很大导致抑郁焦虑那以后由于富足而逐渐恢复,,,自己选咯
2020-12-14 20:41:11 +08:00
回复了 wei2333 创建的主题 问与答 独生子女应该上交工资给父母吗?
武志红的书还真不是所有人都看过
2020-12-14 19:06:51 +08:00
回复了 wei2333 创建的主题 问与答 独生子女应该上交工资给父母吗?
常识:钱存银行根本就不能跑赢通胀

我觉得只要成年了那自己挣的钱属于自己就得自己管 强迫要上交工资这样的父母控制欲也太强了给人一种异样的感觉
2020-12-14 17:38:29 +08:00
回复了 xurunfei 创建的主题 问与答 讨论下自由职业和上班哪个好
帮别人打工是依附别人而活资本家给的工资向来都是能在工作地维持生存而已 而且想要得到这维持生存的工资得能为资本家创造十倍于给你的工资收益才行 一旦不能为资本家创造收益那资本家也就会辞退以节省成本
自由职业是自己养活自己 能获得多大的收益得看自己的脑子精明与否和运气好坏
2020-12-14 11:42:40 +08:00
回复了 nutting 创建的主题 问与答 现在还有啥优秀科技期刊
@cmostuor
中国科学
科学通报
2020-12-14 11:40:46 +08:00
回复了 nutting 创建的主题 问与答 现在还有啥优秀科技期刊
Nature Science 这两个期刊看的人比较多 我也时不时的看
科学网
环球科学
中科院旗下的中国科普博览
工程院旗下的中国工程科学
2020-12-14 11:20:01 +08:00
回复了 JosephHan 创建的主题 科技 大家觉得网易 AI 创作的歌曲<<醒来>>水平怎么样?
@cmostuor 这次生成的歌曲人声如果加上些轻微的回声混响拟合那就更真实了 没加的话就显得人声比较干没圆润感 就像是图片过度锐化
2020-12-14 11:06:06 +08:00
回复了 JosephHan 创建的主题 科技 大家觉得网易 AI 创作的歌曲<<醒来>>水平怎么样?
现在这行业还处于发展阶段能训练生成出能打败 18 流歌手的音乐已经很不错了 以后随着数据越多 调参空间也越多 训练的越久生成的数据精度就越好 估计过个几年网易云音乐会根据用户的口味生成音乐推送给用户进一步减少版税支出 对一家音乐服务商来说以后是收别人的版税
2020-12-14 02:51:40 +08:00
回复了 zsyld 创建的主题 硬件 [日经] 那些所谓的 AI 音箱真的不偷听吗?
真怀疑 v2 所谓的程序员社区是不是吹的 没人知道或做过语言识别开发??? 语音识别一般包含三个阶段:热词唤醒阶段、语音录入识别阶段、逻辑控制阶段。
热词唤醒阶段具体表现是 @netshell 那样的动不动就提示 我在 我没听清 我不知道你说什么 。。。这类错误反馈 而识别热词也分为本地识别和在线识别 在线识别必然要上传到服务器 接收到数据具体干嘛这就不知道咯
第 10 章 动态链接和加载
$Revision: 2.3 $
$Date: 1999/06/15 03:30:36 $
动态链接将很多链接过程推迟到了程序启动的时候。它提供了一系列其它方法无法获
得的优点:
动态链接的共享库要比静态链接的共享库更容易创建。
动态链接的共享库要比静态链接的共享库更容易升级。
动态链接的共享库的语义更接近于那些非共享库。
动态链接允许程序在运行时加载和卸载例程,这是其它途径所难以提供的功能。
当然这也有少许不利。由于每次程序启动的时候都要进行大量的链接过程,动态链接
的运行时性能要比静态链接的低不少,这是付出的代价。程序中所使用的每一个动态链接的
符号都必须在符号表中进行查找和解析( Windows 的 DLL 某种程度上有所改善,下面将会讲
到)。由于动态链接库还要包括符号表,所以它比静态库要大。
在调用的兼容性问题之上,一个顽固的麻烦根源是库语义的变化。和非共享或静态共享库而
言,变更动态链接库要容易很多。所以很容易就可以改变已存在程序正在使用的动态链接库。
这意味着即使程序没有任何改变,程序的行为也会改变。在微软 Windows 系统下这是一个常
见的问题所在,程序会使用大量的共享库,而这些库有不同的版本,库之间的版本控制非常
的复杂。多数程序在出货时都带有它们所需库的副本,而安装程序经常会不假思索的将安装
包中的旧版本共享库覆盖已存在的新版本库,这就破坏了那些依赖新版本库特性的程序。考
虑周全的安装程序会在使用旧版本库覆盖新版本库的时候弹出告警框提示,但这样的话,依
赖新版本库特性的那些应用程序又会发生旧版本库替换新版本库时发生的类似问题。
第 9 章 共享库
$Revision: 2.3 $
$Date: 1999/06/15 03:30:36 $
程序库的产生可以追溯到计算技术的最早期,因为程序员很快就意识到通过重用程序
的代码片段可以节省大量的时间和精力。随着如 Fortran and COBOL 等语言编译器的发展,
程序库成为编程的一部分。当程序调用一个标准过程时,如 sqrt(),编译过的语言显式地使
用库,而且它们也隐式地使用用于 I/O 、转换、排序及很多其它复杂得不能用内联代码解释
的函数库。随着语言变得更为复杂,库也相应地变复杂了。当我在 20 年前写一个 Fortran 7
7 编译器时,运行库就已经比编译器本身的工作要多了,而一个 Fortran 77 库远比一个 C++
库要来得简单。
语言库的增加意味着:不但所有的程序包含库代码,而且大部分程序包含许多相同的
库代码。例如,每个 C 程序都要使用系统调用库,几乎所有的 C 程序都使用标准 I/O 库例程,
如 printf,而且很多使用了别的通用库,如 math,networking,及其它通用函数。这就意
味着在一个有一千个编译过的程序的 UNIX 系统中,就有将近一千份 printf 的拷贝。如果所
有那些程序能共享一份它们用到的库例程的拷贝,对磁盘空间的节省是可观的。(在一个没
有共享库的 UNIX 系统上,单 printf 的拷贝就有 5 到 10M 。)更重要的是,运行中的程序如
能共享单个在内存中的库的拷贝,这对主存的节省是相当可观的,不但节省内存,也提高页
交换。
所有共享库基本上以相同的方式工作。在链接时,链接器搜索整个库以找到用于解决
那些未定义的外部符号的模块。但链接器不把模块内容拷贝到输出文件中,而是标记模块来
自的库名,同时在可执行文件中放一个库的列表。当程序被装载时,启动代码找到那些库,
并在程序开始前把它们映射到程序的地址空间,如图 1 。标准操作系统的文件映射机制自动
共享那些以只读或写时拷贝的映射页。负责映射的启动代码可能是在操作系统中,或在可执
行体,或在已经映射到进程地址空间的特定动态链接器中,或是这三者的某种并集。
---------------------------------------------------------------------------------------------
图 9-1:带有共享库的程序
可执行程序,共享库的图例
可执行程序 main,app 库,C 库
不同位置来的文件
箭头展示了从 main 到 app,main 到 C,app 到 C 的引用
---------------------------------------------------------------------------------------------
在本章,我们着眼于静态链接库,也就是库中的程序和数据地址在链接时绑定到可执
行体中。在下一章我们着眼于更复杂的动态链接库。尽管动态链接更灵活更“现代”,但也
比静态链接要慢很多,因为在链接时要做的大量工作在每次启动动态链接的程序时要重新做。
同时,动态链接的程序通常使用额外的“胶合(glue)”代码来调用共享库中的例程。胶合代
码通常包含若干个跳转,这会明显地减慢调用速度。在同时支持静态和动态共享库的系统上,
除非程序需要动态链接的额外扩展性,不然使用静态链接库能使它们更快更小巧。
绑定时间
共享库提出的绑定时间问题,是常规链接的程序不会遇到的。一个用到了共享库的程
序在运行时依赖于这些库的有效性。当所需的库不存在时,就会发生错误。在这情况下,除
了打印出一个晦涩的错误信息并退出外,不会有更多的事情要做。
当库已经存在,但是自从程序链接以来库已经改变了时,一个更有趣的问题就会发生。
在一个常规链接的程序中,在链接时符号就被绑定到地址上而库代码就已经绑定到可执行体
中了,所以程序所链接的库是那个忽略了随后变更的库。对于静态共享库,符号在链接时被
绑定到地址上,而库代码要直到运行时才被绑定到可执行体上。(对于动态共享库而言,它
们都推迟到运行时。)
一个静态链接共享库不能改变太多,以防破坏它所绑定到的程序。因为例程的地址和
库中的数据都已经绑定到程序中了,任何对这些地址的改变都将导致灾难。
如果不改变程序所依赖的静态库中的任何地址,那么有时一个共享库就可以在不影响
程序对它调用的前提下进行升级。这就是通常用于小 bug 修复的"小更新版"。更大的改变不
可避免地要改变程序地址,这就意味着一个系统要么需要多个版本的库,要么迫使程序员在
每次改变库时都重新链接它们所有的程序。实际中,永远不变的解决办法就是多版本,因为
磁盘空间便宜,而要找到每个会用到共享库可执行体几乎是不可能的。
实际的共享库
本章余下的部分将关注于 UNIX System V Release 3.2 (COFF 格式),较早的 Linux 系
统(a.out 格式),和 4.4BSD 的派生系统(a.out 和 ELF 格式)这三者提供的静态共享库。这三
者以几近相同的方式工作,但有些不同点具有启发意义。SVR3.2 的实现要求改变链接器以支
持共享库搜索,并需要操作系统的强力支持以满足例程在运行时的启动需求。Linux 的实现
需要对链接器进行一点小的调整并增加一个系统调用以辅助库映射。BSD/OS 的实现不对链接
器或操作系统作任何改变,它使用一个脚本为链接器提供必要的参数和一个修改过的标准 C
库启动例程以映射到库中。
地址空间管理
共享库中最困难的就是地址空间管理。每一个共享库在使用它的程序里都占用一段固
定的地址空间。不同的库,如果能够被使用在同一个程序中,它们还必须使用互不重叠的地
址空间。虽然机械的检查库的地址空间是否重叠是可能的,但是给不同的库赋予相应的地址
空间仍然是一种“魔法”。一方面,你还想在它们之间留一些余地,这样当其中某个新版本
的库增长了一些时,它不会延伸到下一个库的空间而发生冲突。另一方面,你还想将你最常
用的库尽可能紧密的放在一起以节省需要的页表数量(要知道在 x86 上,进程地址空间的每
一个 4MB 的块都有一个对应的二级表)。
每个系统的共享库地址空间都必然有一个主表,库从离应用程序很远的地址空间开始。
Linux 从十六进制的 60000000 开始,BSD/OS 从 A0000000 开始。商业厂家将会为厂家提供的
库、用户和第三方库进一步细分地址空间,比如对 BSD/OS,用户和第三方库开始于地址 A08
00000 。
通常库的代码和数据地址都会被明确的定义,其中数据区域从代码区域结束地址后的
一个或两个页对齐的地方开始。由于一般都不会更新数据区域的布局,而只是增加或者更改
代码区域,所以这样就使小更新版本成为可能。
每一个共享库都会输出符号,包括代码和数据,而且如果这个库依赖于别的库,那么
通常也会引入符号。虽然以某种偶然的顺序将例程链接为一个共享库也能使用,但是真正的
库使用一些分配地址的原则而使得链接更容易,或者至少使在更新库的时候不必修改输出符
号的地址成为可能。对于代码地址,库中有一个可以跳转到所有例程的跳转指令表,并将这
些跳转的地址作为相应例程的地址输出,而不是输出这些例程的实际地址。所有跳转指令的
大小都是相同的,所以跳转表的地址很容易计算,并且只要表中不在库更新时加入或删除表
项,那么这些地址将不会随版本而改变。每一个例程多出一条跳转指令不会明显的降低速度,
由于实际的例程地址是不可见的,所以即使新版本与旧版本的例程大小和地址都不一样,库
的新旧版本仍然是可兼容的。
对于输出数据,情况就要复杂一些,因为没有一种像对代码地址那样的简单方法来增
加一个间接层。实际中的输出数据一般是很少变动的、尺寸已知的表,例如 C 标准 I/O 库中
的 FILE 结构,或者像 errno 那样的单字数值(最近一次系统调用返回的错误代码),或者
是 tzname (指向当前时区名称的两个字符串的指针)。建立共享库的程序员可以收集到这些
输出数据并放置在数据段的开头,使它们位于每个例程中所使用的匿名数据的前面,这样使
得这些输出地址在库更新时不太可能会有变化。
2020-12-14 01:47:13 +08:00
回复了 EZG997 创建的主题 微信 关于微信占用手机存储空间巨大的疑惑?
@cmostuor 更正是 7.0 开始使用预先 (AOT) 编译
2020-12-14 01:40:54 +08:00
回复了 EZG997 创建的主题 微信 关于微信占用手机存储空间巨大的疑惑?
2020-12-14 01:37:59 +08:00
回复了 EZG997 创建的主题 微信 关于微信占用手机存储空间巨大的疑惑?
安卓手机 6.0 以上的系统安装微信占 1.2G 太正常了 这之后的版本为了运行速度把 jvm 虚拟机运行 dex 编译成机器码 代价当然是大咯 而且微信自带的 so 库解压缩也不小还有其他数据自然就大了 建议换苹果
@cmostuor 动态编译生成 so 库是为了解决内存资源不足的问题而产生的技术现在这年代内存硬盘早就已经白菜价了好几十年为了那点空间而牺牲程序的运行速度 我个人觉得不值得
go 本来就不是为嵌入式设备开发的 再说了 rust 和 go 是开源语言 能力强的可以把它魔改一个嵌入式版本的( github 上还真有个 go 语言的嵌入式版)
2020-12-14 00:42:42 +08:00
回复了 liuser666 创建的主题 问与答 Windows 有无像 iPhone 一样的整机迁移方案?
@cmostuor 这方法就跟代码 diff 类似
2020-12-14 00:41:41 +08:00
回复了 liuser666 创建的主题 问与答 Windows 有无像 iPhone 一样的整机迁移方案?
@cmostuor 如果代码能力强可以写个软件根据 win 系统安装完后的目录和注册表作为参照看看要迁移的目标系统那些文件和安装好的不一样那就打包 在安装完新系统后再将备份包导入恢复 win 系统的历史包袱决定了只能这样做 不能像*nux 系的系统那样只备份用户分区就完事
2020-12-14 00:35:37 +08:00
回复了 liuser666 创建的主题 问与答 Windows 有无像 iPhone 一样的整机迁移方案?
@cmostuor 迁移一般是迁移重要的文件而非重复或垃圾的文件
1 ... 21  22  23  24  25  26  27  28  29  30 ... 42  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2485 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 30ms · UTC 15:13 · PVG 23:13 · LAX 08:13 · JFK 11:13
Developed with CodeLauncher
♥ Do have faith in what you're doing.