V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  documentzhangx66  ›  全部回复第 62 页 / 共 88 页
回复总数  1755
1 ... 58  59  60  61  62  63  64  65  66  67 ... 88  
我也是很多年后,才意识到这个问题。

我关注了几个年入百万的大牛,我很好奇他们是怎么学习的,结果我发现,他们可以连续几年不上班,专门拿来学习和实验,而且他们自己甚至可以投入几十万元去租借设备拿来做配套实验.....他们也不需要照顾父母、家人、孩子,因为没他掺和,这些人吃喝玩乐能活的更快乐...

有一件我印象很深的事情,某数据库群,因一个问题吵起来,几十亿的数据,某种表结构,性能会怎么样。几个大佬吵了起来,但其中一个大佬,从设计实验、准备设备、搭建环境、制作实验数据、写代码,连续花了几天时间,证明了自己的想法....其他人呢?在上班,在奶孩子,在陪老婆...

普通人,连续 2 个月没收入,就完蛋了,更别提专门花几天时间去探索一个小问题。同时普通人只能去找那种竞争激烈的工作,还加班多,哪有时间去学习,去研究。

这就是恶性循环。

如何破局?只能牺牲自己的娱乐与休息时间,变得更卷,别无他法。
不一定,因为 Raid 卡配置不一样,Raid 业务逻辑的实现不一样,严谨度不一样,会导致性能会有巨大差异。

比如严谨的厂家会让 raid 1 也带上校验。此时没校验的 raid 0 当然更快。但如果 raid 1 不带校验,那么读操作 raid1 比 raid 0 少一次 IO ,当然会更快。
1.学习本来就是一件非常奢侈的事情,因为需要花很多时间。

很多中间层次的从业者,因为没有时间去系统化地、完整地学习,造成水平无法提高,进而只能停留在竞争最为激烈的中间层圈子,导致恶性循环。

2.学习资料的作者,并不知道学习者的知识情况,因此作者只能尽量把能写的东西,都写上去。

3.学习者,在学完之前,也并不清楚知识依赖与架构,因此全部学完才是最稳的,但也最消耗时间。

建议,你想进入竞争相对轻松的上层圈子,你就只能更卷,别人玩乐你学习,别人休息你学习,来提高自己,没有别的捷径。
1.想用就用,你自己的系统,你自己用,红猫还能管着你呢?

2.就算你不切 yum ,你另找一台同版本 CentOS ,直接 yum download only rpm ,然后手动装 rpm 也行。
@zvcs 请问 Debian 有哪些优于 RHEL/CentOS 的地方?谢谢
2022-05-08 16:26:47 +08:00
回复了 chanlk 创建的主题 Java Java Happens-before 的疑问
@nlzy

我的原话是:
Happens Before 原则,只提到同一个线程内的连续上下文,并没有提跨方法、跨线程的问题。

意思是,Happens Before 原则 并没有给出跨方法、跨线程的定义与规则。


你提到的规范:
Two actions can be ordered by a happens-before relationship.

这里并没有专门对跨方法和跨线程进行定义与规则了?

注意关键字:can 。can ≠ must 。

意思是,你可以通过一些特殊手段,强行让两个 Actions 实现 happens-before ,否则,任意两个没有被特殊照顾的 Actions 不一定会遵守 happens-before ,这结论,楼主在 9 楼已经验证出来了。

另外,你知道为什么 Java 规范要专门搞这么一个玩意嘛:We will usually refer to inter-thread actions more succinctly as simply actions. 猜猜看?
2022-05-08 01:58:49 +08:00
回复了 Monearod 创建的主题 程序员 自学有可能达到研究生水平吗?
主要还是思维思路与做法的区别。拿情感问题举个例子:

1.专科生,追求对方被拒绝,要不放弃,要不换人继续追。

2.本科生,追求对方被拒绝,会接受身边朋友与网友的帮助,也会自己去找一些零碎的资料,然后立即拿着这些刚学到的残缺知识,再接再厉。

3.研究生,追求对方被拒绝,会开始总结,找大神复盘,发起讨论,找不同的行业专家咨询这东西的本质,接着静下心来,砸钱砸时间砸人脉,来进行理论研究 + 实际案例研究 + 多类别多次的实战练习,并不断找大神复盘。直到几年后,能达到帮别人分析现有情感问题时,达到百分之七八十的猜中率,甚至还能对一些简单的情感问题出谋划策,接着,才开始继续追求异性,但此时,已经不是无脑追,而是构建思路 -> 审视自我 -> 根据自己条件与现有资源,制定策略,然后才开始行动。并且行动过程中,仍然不断寻找不同大佬,一起来分析 + 复盘。

4.博士生,追求对方被拒绝,点一支烟,随便看看几个行业大佬写的东西,闭幕分析、汇总、模拟后,基本上能把感情问题掌控百分之八九十,并且自己还能根据自身的情况,创造专属于自己的高级功法,进而成为一个十战九胜的渣男。然后觉得这没啥意思,于是开始躺。
2022-05-08 01:23:56 +08:00
回复了 461da73c 创建的主题 程序员 一个巨大的老 Python 项目突然要求单侧覆盖率到 70%
@DOLLOR

我并不是想踩 Python ,任何语言都有优缺点。

Python 是动态类型,不利于大型、严谨的项目而已。

但用 Python 写小工程,的确是爽的一 bi 。
2022-05-08 01:21:49 +08:00
回复了 461da73c 创建的主题 程序员 一个巨大的老 Python 项目突然要求单侧覆盖率到 70%
@arischow

@echo1937

@opengo

不好意思,我在 1 楼,说错了。

更正一下,Python 是 动态类型,而不是弱类型。

但这并不影响我在 1 楼写的结论。
2022-05-08 01:17:58 +08:00
回复了 yixin026 创建的主题 DevOps 公司发邮件的成本很高吗..
管理问题,不要怪软件。

如果每天都有当天必须完成的事情,那么:

1.在电脑上,用任意软件,笔记网易云笔记,写一篇任务列表,格式如下:

2022-05-01:
任务 1 ,未完成,内容:....
任务 2 ,未完成,内容:....
2022-05-02:
任务 1 ,未完成,内容:....
任务 2 ,未完成,内容:....
2022-05-03:
任务 1 ,未完成,内容:....
任务 2 ,未完成,内容:....

2.手机上定个闹钟,每天上午 9 点,下午 3 点,检查该列表,是否已经完成当天必须完成的重要任务。

3.如果已经完成,则把该任务的 [未完成] 改为 [已完成] 。
2022-05-08 00:46:17 +08:00
回复了 chanlk 创建的主题 Java Java Happens-before 的疑问
Q1:这里的 i 没有 volatile ,线程 b 不能看到吧?

是的。

但是,作者那句话,开头有个关键词:“假设”。作者的意思是,已经假设 操作 A 发生在 操作 B 前面了。所以这里有没有 volatile 已经无关紧要。



Q2:这个是错误的吧?

是的。这里有两个问题。

第一个问题:
Happens Before 原则,只提到同一个线程内的连续上下文,并没有提跨方法、跨线程的问题。

我怀疑这篇文章的作者,是不是看了这篇英文资料:
https://www.geeksforgeeks.org/happens-before-relationship-in-java/

这篇资料里 class ClassRoom 下面有两个方法,需要用不同线程,去同时执行。如果单独看任意一个方法的内部代码与执行顺序,这篇资料讨论的结论是对的。但,如果同时看两个线程、两个方法的并行关系,这篇资料的结论就完全错了,错误原因,涉及到太多东西,过于复杂,就不展开了,但我还是举个简单的反例,Thread 1 对应的方法 submitAssignment( ) ,内部 this.assgn = assgn; 这行代码,对 this.assgn 进行改变,直到方法结束后,这次改变的 new value ,是有可能,被一直保留在线程所在 CPU 的 Cache 或 当前 Thread Stack 内部,没有改动到 HEAP 的位置,Thread 2 自然就读不到该变量的 new value 。

问题 2:
这篇英文资料,说的是两个线程,同时执行。但楼主发的这篇中文资料,文章作者偷偷地作弊了,仔细看,他写的是:

线程 A 执行 writer( ) 方法之后,然后线程 B 才去执行 reader( ) 方法....

关键词:之后。

大多数正常情况下,writer( ) 执行完毕后,a 与 flag 的 new Value 都已经被 flush 到 HEAP 了,这个例子与 Happens Before 还有毛线关系?作者这例子明显是在坑小白。

不过也要注意到,就像在问题 1 中,我举得那个例子一样。特殊情况下,writer( ) 执行完毕后,a 与 flag 的 new Value ,是有可能,被一直保留在线程所在 CPU 的 Cache 或 Thread Stack 内部,没有改动到 HEAP 的位置,因此后续线程 B 执行的 reader( )方法里,就读不到这两个变量的 new value 。



建议:
这个问题的本质,涉及到太多知识。如果楼主想弄清楚,建议学习:

A.CPU 在执行代码与同步方面的知识。

B.汇编在同步方面的知识。

C.C++是如何处理这个问题的。
2022-05-07 02:16:04 +08:00
回复了 461da73c 创建的主题 程序员 一个巨大的老 Python 项目突然要求单侧覆盖率到 70%
1.Python 语言属于弱类型,本来就极容易写出不严谨、不稳定的代码,因为这个问题,本身也不适合大项目。如果谁用 Python 去做大项目,也是语言选型失败的表现。

2.要求大幅度提高单元测试覆盖率,本质是通过砸钱修复,来提高系统稳定性的做法。

3.软工开发,本来就应该为了提高稳定性,而要求高覆盖率的单元测试。极端情况甚至一个新函数、一个新属性都需要做一堆单元测试。但为了开发效率,也就是为了节约钱,很多公司与开发组,省了这事而已。

4.每个人,都有自己感兴趣的方向,也有自己不感兴趣的方向。

5.员工与公司谈判,本质是该岗位对于公司来说,好不好招人,以及你对于这个岗位的其他竞争者来说,技术是否远超,以及对于公司来说,是否有足够性价比。如果这些你都满足,那么你去和公司谈判,让别人去做这些你不喜欢做的事情,谈判才容易成功。

6.谈判前,要先思考最坏打算,万一你公司觉得你找事,直接开了你,然后立即能有别人上位,那你何去何从?现阶段能否迅速找到下家公司?

7.我的建议是,贵司突然有这种要求,要不是想开掉你,要不想做业务转型,要不只是对之前决策失误的项目砸钱做修复。因为 Python 这种快速开发的语言,并不适合高覆盖率的单元测试。你应该考虑一下这个要求背后的东西,看看怎么去应对。但无论如何,是时候找个备用公司了。
楼主,你和她确认关系之前,她啥 * 样你心里不清楚?为啥她这样了你还要选她?

因为,她好看,她容易搞上床呗。

好了,现在上了床,爽够了,开始拔 * 无情,开始嫌弃她的智商情商,开始唾弃她的为人处理,开始希望她听话懂事了?

早干嘛去了?

而且,就算你想换女朋友了,想要一个善解人意,温柔懂事的姑娘,那么必然会牺牲她的颜值,这种其貌不扬的女孩,你看得上?

所以,这事的关键,还在于你自己。

对于婚恋,你到底想要啥?先把这事想清楚。因为:

pao 友 和 老婆,是两种完全不同的婚恋方向。
你操作的电脑,叫跳板机,低配置。

实际工作用的系统,在虚拟机上面。

这样无论迁移还是扩展,都很方便。
2022-05-03 18:39:34 +08:00
回复了 AnjingJingan 创建的主题 程序员 服务器磁盘突然写入巨慢问题
另外温度的确要检测一下,各物理磁盘温度,各 CPU 温度,主板温度,等等。打上时间戳,放入运维系统。

当出现问题时,看看各设备的温度。
2022-05-03 17:53:31 +08:00
回复了 AnjingJingan 创建的主题 程序员 服务器磁盘突然写入巨慢问题
1.不跑任何业务的情况下,磁盘的性能?

单线程连续读,单线程连读写,单线程随机读,单线程随机写,64 线程随机读,64 线程随机写?

建议测试工具:
fio

例子:

# 安装
yum install epel-release -y
yum install fio -y

mkdir -p /tmp/diskTest
cd /tmp/diskTest

# 顺序写,单进程:
fio --name=SeqWrite --ioengine=libaio --iodepth=1 --rw=write --bs=4k --direct=0 --size=4G --numjobs=1 --group_reporting --filename=Seq8G.testData

# 顺序读,单进程:
fio --name=SeqRead --ioengine=libaio --iodepth=1 --rw=read --bs=4k --direct=0 --size=4G --numjobs=1 --group_reporting --filename=Seq8G.testData

# 随机写,单进程:
fio --name=RandWrite1Process --ioengine=libaio --iodepth=1 --rw=randwrite --bs=4k --direct=0 --size=4G --numjobs=1 --group_reporting --filename=Rand1Process8G.testData

# 随机读,单进程:
fio --name=RandRead1Process --ioengine=libaio --iodepth=1 --rw=randread --bs=4k --direct=0 --size=4G --numjobs=1 --group_reporting --filename=Rand1Process8G.testData

# 随机写,64 进程:
fio --name=RandWrite64Process --ioengine=libaio --iodepth=1 --rw=randwrite --bs=4k --direct=0 --size=512M --numjobs=64 --group_reporting --filename=Rand64Process8G.testData

# 随机读,64 进程:
fio --name=RandRead64Process --ioengine=libaio --iodepth=1 --rw=randread --bs=4k --direct=0 --size=512M --numjobs=64 --group_reporting --filename=Rand64Process8G.testData

# 如果测试时间过段,请加大上面关于容量的参数 --size ,每次加两倍。

这个步骤,是让你自己,裸磁盘与分区的大致性能,看看磁盘或 raid 是否存在问题。

比如,正常情况下,普通民用 HDD ,单线程随机写,速度大概是 1.41 MB/s 。

对比,某物理服务器,对 4 个机械硬盘,做了 3 副本纠删码,单线程随机写,性能降到 0.2 MB/s ,这里就需要优化了,不然客户会骂街。



2.老哥你的监测指标,少了一个非常重要的参数:分区与物理硬盘的 %utill ,也就是磁盘负载,就像 CPU 负载一样,值越高说明磁盘压力越大。

命令:
iostat -x -m -d 1

说明:
物理磁盘的 %utill ,指的是每块物理磁盘的负载。

分区的 %utill ,指的是,有些分区是有多个物理磁盘组成。此时分区的 %utill 也很重要。



3.上述指标,配合 iotop 命令,基本上能定位到进程。

4.最后,用命令:
strace -f -t -e trace=file -p <PID>

来跟踪进程的 IO ,看它到底在干啥。
2022-05-03 17:37:58 +08:00
回复了 allAboutDbmss 创建的主题 程序员 哈希函数的设计
上次那老哥说的是 Minimal_perfect_hash_function ,与 我们常见的 MD5 、SHA1 这类哈希,根本是不同的东西,只是名称中都包含了 HASH ,于是大家先入为主地,以为那位老哥在说 MD5 、SHA1 之类的主流哈希算法。那位老哥说的那种更像是根据 value 反推 ID key 的 index 查找算法。
2022-05-03 15:40:18 +08:00
回复了 pytth 创建的主题 程序员 求推荐手机与电脑(windows)无线文件快速互传软件或方案
局域网,Windows 开个 FTP ,安卓手机装一个 EZ 文件管理器。

FTP 是对设备压力最小,最能跑满带宽的协议。

步骤:

1.Windows 开 FTP 。
2.Windows 创建一个新账户。
3.Windows 里需要共享的文件夹,设置权限,只允许 Administrator 与新账户拥有完全权限的控制。
4.Windows 防火墙里,打开 FTP 、文件共享、网络发现。
5.安装手机,打开 EZ 文件管理器,找到 FTP ,新建,填入 Windows 的 IP 、新账户的用户名与密码。
2022-05-03 15:37:19 +08:00
回复了 Chad0000 创建的主题 数据库 多租户低代码平台数据库选择问题
@PopRain

意思是 PostgreSQL 的大写有坑。百度:PostgreSQL 大写
2022-05-03 11:07:54 +08:00
回复了 christin 创建的主题 程序员 线上突然出 bug 怎么找?
@catsoul 因为面试官降维打击了,这对被面试者很不公平的。

因为这玩意牵涉到系统架构、软件开发模式。

举个小例子,热修复、热插拔的系统架构,至少需要入口有负载均衡,中间的 Server 与 Client 都有对应的版本控制,后面是一堆不同版本的应用集群。哪个版本有问题,负载均衡配置一下就 OK 。而且负载均衡设备,贵的设备有冗余接口,实现双机热备,便宜的没有。这还是简单的方案,高级方案能做到王者荣耀这种 APP 都不用重启,在战斗中热修复 Bug ,这些知识面试官都不一定懂,你要懂也不会去这种小公司。
1 ... 58  59  60  61  62  63  64  65  66  67 ... 88  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   835 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 32ms · UTC 21:02 · PVG 05:02 · LAX 14:02 · JFK 17:02
Developed with CodeLauncher
♥ Do have faith in what you're doing.