2022年上半年已经过去,显卡市场也从年初的一卡难求、再到大幅崩盘。显卡在“挖矿”市场的极速坠落,让显卡价格回归正常,但现在就能更新升级显卡?答案自然是否定的。事实上,国外科技媒体SlashGear表示,不推荐用户购买二手显卡。原因自然与“加密货币”价值下滑有关。随着“空气”价格暴跌,已有超100T的算力从网上消失,这些显卡将会大量涌入二手市场,别说普通消费者,就算专业人士也很难准确判断这些显卡是否被“锻炼”过,一旦买到矿卡,很有可能会造成不必要的经济损失。首先是网上消失的算力,按照RTX 3090显卡约120MH/s的算力来计算,100TH/s的算力就意味着超过83万张RTX 3090显卡进入到二手市场。如果换成算力为85MH/s来计算,就是超过百万张RTX 3080流入二手市场。如此大量的矿卡进入到二手市场,意味着能买到的二手显卡,基本都是被锻炼过的。对于矿工来说,拆除挖矿用的显卡,可以在加密货币价格暴跌时,及时止损。但对于普通用户来说,二手矿卡涌入二手市场,虽然价格可能较低,但依然是存在巨大风险,矿卡可能不仅有可能性能大幅下滑,而且还可能随时“暴毙”,差价并不值得用户冒险。至于为何不建议买二手显卡,原因在于多数用户根本无法知道这些二手显卡的来源和用途,除非有绝对值得信任的朋友出售自用的非挖矿显卡。否则,当下购买二手显卡都是一件风险极高的事。此外,很多眼尖的用户可以在电商平台看到,RX 6900 XT显卡普遍在6000元左右,但身为“马甲”的RX 6950 XT贵超过两千元,其中含义自然非常清楚。Linus回应GPU制造商Palit Microsystems表示,在长达四年的时间内挖掘加密货币的显卡,每周7天、每天24小时用于挖矿的显卡,每年将损失10%的性能。Linus还表示,这些挖矿的显卡要么完全损坏,要么不会损坏,挖矿也不一定会直接让显卡失去部分性能。目前市面上大部分二手显卡都是上过矿场的,这些显卡以全年都以24小时满载运行,矿工不大可能定期清洁和检查每张显卡。以Linus Tech Tips闻名的Linus表示,维护会有效减少因灰尘、污垢堆积引起的过热问题,一张干净、维护良好的显卡,无论用于什么用途都应该没问题,如果打折是不是值得一赌。对于挖矿有一定了解的用户应该知道,挖矿对显存的压力非常大,坏的最多的模组就是显存。所以有部分换过显存的矿卡,显存和核心同样会非常容易出问题。对于不会折腾电脑的用户来说,旧卡的风险太高,而且预期寿命短,购买新卡可能是最好的选择。至于市面上有部分号称全新的便宜显卡,其中依然存在很多猫腻。据笔者了解,很多挖过矿的显卡都会重新交给工厂,更换导热垫、散热等,然后贴上全新的标签,出现在二手平台,比如这两天大量EVGA显卡,就很多有可能是翻新的产品(EVGA已退出国内市场)。编辑点评:对于多数用户来说,二手显卡本身就存在过高的风险,而且很多电商平台卖家的所谓全新,也不能完全排除“矿卡”的可能性,购买更需要谨慎。按照目前的说法,可以将英伟达30系之前的全部显卡、AMD全部显卡都是矿卡,用户还是等等RTX 40系列和RDNA 3产品。 print"Enteryourpassword:"pass=STDIN.noecho(&:gets)puts"Yourpasswordis#{pass}!"输出:Enteryourpassword:input.rb:2:in`':undefinedmethod`noecho'for#>(NoMethodError) 最佳答案 一开始require'io/console'后来的Ruby1.9.3 关于ruby-为什么不能使用类IO的实例方法noecho?,我们在StackOverflow上
我对此有点困惑。我在RoR项目中的最终目标是从我的数据库中获取单个随机配置文件。我想它应该是这样的:@profile=Profile.find_by_user_id(rand(User.count))它一直抛出错误,因为user_id0不存在,所以我把它的一部分拿出来检查发生了什么:@r=rand(User.count)每次都返回0。发生什么了?我注册了5个假用户和5个相关配置文件来测试这个。如果我将Profile.find_by_user_id(rand(User.count))重写为Profile.find_by_user_id(3)它工作得很好。User.count也在工作。所以
这个问题困扰了我一段时间。这不是一件困难的事情,但我不知道为什么没有简单的方法来做到这一点,我敢打赌有但我没有看到。我只想取一个散列,像这样:cars={:bob=>'Pontiac',:fred=>'Chrysler',:lisa=>'Cadillac',:mary=>'Jaguar'}然后做类似的事情cars[:bob,:lisa]得到{:bob=>'Pontiac',:lisa=>'Cadillac'}我这样做了,效果很好:classHashdefpick(*keys)Hash[select{|k,v|keys.include?(k)}]endendruby-1.8.7-p249
在纯Rubyirb中,不能输入{if:1}。该语句不会终止,因为irb认为if不是符号,而是if语句的开始。那么为什么Rails可以有before_filter接受if作为参数?该指南的代码如下:classOrderunless也会发生同样的事情。 最佳答案 这是一个irb问题,而不是Ruby。bash=>ruby-e"puts({if:1})"bash=#{:if=>1}您可以改用pry。它将正确读取输入。https://github.com/pry/pry 关于ruby-on-rai
Enumerable#each和Enumerable#map的区别在于返回的是接收者还是映射后的结果。回到接收者是微不足道的,你通常不需要在each之后继续一个方法链,比如each{...}.another_method(我可能没见过这样的案例。即使你想回到接收者那里,你也可以通过tap来实现)。所以我认为所有或者大部分使用Enumerable#each的情况都可以用Enumerable#map代替。我错了吗?如果我是对的,each的目的是什么?map是否比each慢?编辑:我知道当您对返回值不感兴趣时使用each是一种常见的做法。我对这种做法是否存在不感兴趣,但感兴趣的是,除了从
我目前正在尝试将包含数字82,000的散列counts["email"]除以包含值130万的变量total。当我运行putscounts["email"]/total时,我得到0。为什么我不能对这些进行除法? 最佳答案 您正在执行除法,尽管不是您预期的那样。在Ruby中有许多不同的整数除法:#Integerdivision:5/4#=>1#Floatingpointdivision:5.fdiv(4)#=>1.25#Rationaldivision:5.quo(4)#=>Rational(5,4)您还可以将其中一个整数转换为Floa
例如,如果我们defc=(foo)p"hello"endc=3c=(3)并且不会打印“hello”。我知道它可以被self.c=3调用,但为什么呢?可以通过哪些其他方式调用它? 最佳答案 c=3(和c=(3),完全等同于它)总是被解释为局部变量赋值。你可能会说只有当方法c=没有在self上定义时,它才应该被解释为局部变量赋值,但是这有很多问题:至少MRI需要在解析时知道在给定范围内定义了哪些局部变量。但是,在解析时并不知道给定的方法是否已定义。所以ruby直到运行时才知道c=3是否定义了变量c或者调用了方法c=,这意味着它不会知
我需要在数据库更新前后比较一些Rails(2.3.11)模型属性值,因此我首先查找我的记录并将现有属性值保存在哈希中,如下所示:id=params[:id]work_effort=WorkEffort.find(id)ancestor_rollup_fields={:scheduled_completion_date=>work_effort.scheduled_completion_date}work_effort.update_attributes(params.except(:controller,:action))#etcetera请注意,我坚持使用符号作为哈希键的“最佳实践”
为什么我不能这样做:classCreateModels是否有其他方法可以使数组(“apples”)成为Fruit类实例的属性? 最佳答案 在Rails4中并使用PostgreSQL,您实际上可以在数据库中使用数组类型:迁移:classCreateSomething 关于ruby-on-rails-为什么我不能在Rails的表格中创建一个数组作为列?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/qu
为什么下面的代码会报错?['hello','stack','overflow'].inject{|memo,s|memo+s.length}TypeError:can'tconvertFixnumintoStringfrom(irb):2:in`+'from(irb):2:in`blockinirb_binding'from(irb):2:in`each'from(irb):2:in`inject'from(irb):2如果传递了初始值,它就可以正常工作:['hello','stack','overflow'].inject(0){|memo,s|memo+s.length}=>18