这个账号是你们团队的运营账号吧。。。在哪个帖子回复不是一样的。。。
请教几个问题
CAP 是 C 还 A?
在就是求介介绍介绍锁相关或者是如何保证一致性的。
大佬,不搞一搞吗?
请教两个问题,
换成容器后,会不会 long_schedule 的警告会多一些?需要处理吗?
scheduler count 要调整吗?
IO 线程数的设置应该按照怎样的标准设置
要靠 benchmark,主要要保证主线程一直在跑着。主线程如果比较闲,就加点。IO 线程消耗内存,太高了,不知道会不会爆。
再就是要看看极端情况 redis 的表现。
如果有慢 client 拖慢了整个读写过程怎么办?(主线程在阻塞)
感觉是这里面 http://antirez.com/news/126 说的 slow command。要能提供 command 执行一版,切换出去的能力,要有锁,应该还要有 transaction。是否多线程,倒不是必须的。
谢谢两位大佬
我记得 Metabase 是执行 sql,然后有些定时任务啥的。
有调研过 ror 技术栈有做类似的事情吗?
之后会考虑再整理下。
A 和 B 的 n 是自己算的。保证两点就可以,递增并全局唯一。
一个简单的算法,就是在创建提议者的时候给他们一个 id 号,比如 1、2、3。然后 n 从 1 开始并把 id 当做小数部分。
比如 1.001,下一个 n 就是 2.001,以此类推。
代码实现 https://github.com/yfractal/concurrency-lab/blob/master/paxos/src/paxos_proposer.erl#L154
假设 A 给的是 1.001,B 给的是 1.002,那么认为 B 的大。
https://github.com/yfractal/concurrency-lab/blob/master/paxos/src/paxos_acceptor.erl#L70
@zzz6519003 加了 erlang 的实现 https://ruby-china.org/topics/38909。之后会考虑加图片的
不是 uniq key,用了 limit,会漏数据。
虽然觉得对我没什么用,还是谢谢。
求代码,伪代码也行。
ror,不会内存溢出,因为每次拿 1000 个,就是上面的代码。
直接遍历,是每个都查一次 sql?数据量大一点,会很慢。
我误以为 spirngboot 和 ror 一样是个全家桶。。。
既然说 orm,我们就把问题放在 orm 里讨论。
现在的问题是:遍历一样表,考虑到内存,需要分批次获取。
方便给代码吗?随便哪种 orm 的都可以,伪代码也行。
我知道 java 可以这么写(这种方法不是最好的,想知道更好的方法)
@Query("SELECT * FROM users WHERE id >= :startId"
+ " and ORDER BY id ASC LIMIT :limit")
List<User> getBatch(@Param("limit") long limit,
@Param("startId") long startId);
public List<User> getBatch(@NonNull Long limit, @NonNull Long startId) {
List<User> users = this.dbRepository.getBatch(limit, startId);
return users.stream().collect(Collectors.toList());
}
要遍历所有的,外面还要有一个循环。。。
RoR 里面,这么写
User.find_each do |user|
end
一样的功能,一次拿 1000 条,我忘了可不可以设置 1000 这个值了,但这个值一般没必要改。
比如数据库里有 users 表,提供这样一个 API,一次可以拿 1000 个。 多次调用 API 后,可以拿到所有的 users。
求具体说一说。
比如 批量获取
,用 SpringBoot 除了手撸以外,有没有更好的办法?
就是拼字符串方便,dehug 方便。所以用啊。
拼接字符串方便,好 debug。
启动 java 项目的时候,我总是在想,到底要不要传环境变量,这个环境是 dev 呢,还是 development 呢?schema 在哪呢,要怎么跑呢?
我写了小 100 行的 Java 代码,搞了一个批量获取的 API,RoR/Grape 10 行可以搞定吧?
Clojure 呢,语言本身不支持 debug。。。先完成什么,都靠干撸,都撸秃噜皮了,一手老茧。
有测试、开发环境的还好,很多都是没有的。。。
目录结构,完全看项目搭建者高兴。debug 都是从头 debug 到尾。
http 长连,ror 并发应该上不来。可以考虑一单独启动一个新版 rails 服务做长连。旧服务只负责写。这要把 actioncable 写相关的代码引进来、然后两个服务连一个 redis 就行。
我一开始看公开课,其实是为学英语,学着学着就跑偏了…最后英语没学好(也就计算机方面的还凑合),却成了程序员。
最近事情太多 ,有时间的时候会考虑搞。
大佬说的对
推荐几门公开课:
入门 CS50,基础 CS61A,算法 CS61B,这些在网上都可以找到,除了视频,还有课后作业(project)。
工程方面,推荐 CS169,前几年一直是用 RoR 讲的。
网络、操作系统这些,只在大学里学过,没上过公开课。都是根据具体问题学的。不过不只看一本书,而且也不仅仅是看书。
美国的课程,有几部分,上课讲、讲义、课后项目、助教辅助。教材一般会推荐几本,讲到具体的内容,会推荐相应的章节去看。老师的态度也是,你爱看不看,把问题搞清楚了就好。这样的话,就会发现,一门课程下来,一本书都没完全读完,但又多了好多书。有些书,其实是参考资料,当 wiki 用就好。
还真想不出来要推荐什么书,不过 算法导论 不推荐,很多人能背出算法的 i,j,k,但却说不出算法思路。算法推荐 算法引论。
推荐 CS61A 的课堂笔记。
再就推荐 设计数据密集型应用。很成体系,适合自学。
好的书和课程,不是面面俱到,而是要画好一个骨架,然后可以根据这个骨架,去添加血肉。
有直播吗?
函数式这么玩,是因为他们没对象… 这个东西,写到时候挺爽的,维护起来略麻烦
signature 喊的最凶的是 clojure、elrang 这种。也有一些实现,但实际项目中用的又没多少。 clojure 这种没有对象的概念,操作的都是字段。 ruby 这种面向对象语言,操作的不是某个字段,而是类。
我觉得前端挺不容易的。不单单技术方面,还要很耐心,还要跟后端扯皮。
分工。后门后端大佬一般不写代码,但绝对是团队核心。
一个全局锁,就不行了吧。。
大神可以去分享啊
发的时候存了 redis 里,加过期时间,每次发的时候都有判断有没有这个 key,有就不发,没有就发,并刷新 key。 或者利用 rate limit 也能做。
为啥我觉得一楼比正文好呢