Friday, September 17, 2021

V2EX - 技术

V2EX - 技术


话题讨论:你知道这些计算机词汇的区别吗?

Posted: 17 Sep 2021 03:48 AM PDT

reference VS instance

setting VS configuration VS option VS property

编译原理大家是怎么学习的?

Posted: 17 Sep 2021 03:46 AM PDT

非科班,最近在看 Enginnering a compiler 。看第二章 scanner 部分讲正则和自动机还勉强能理解。 第三章 parser 讲 CFG 引出了一堆符号和概念,感觉完全看不明白。 pic

不知道大家是怎么学的,有没有更基础的视频课程推荐或者其他更入门的书推荐的?

大家有没有发现,大部分语言代码基本都是空 4 格的,只有前端项目空 2 格。

Posted: 17 Sep 2021 03:25 AM PDT

用过多种语言,只有前端是这样的,至少 github 上的大部分项目都这样。挺凌乱的

win10 系统怎么查看每个文件夹总大小

Posted: 17 Sep 2021 03:13 AM PDT

有时候需要清理大文件 需要查看每个文件夹总大小 清理下没用的大文件

求帮忙分析一下本行代码的含义

Posted: 17 Sep 2021 03:01 AM PDT

mysql 如果不存在,插入,还有更快的写法吗?

Posted: 17 Sep 2021 02:56 AM PDT

INSERT INTO table_listnames (name, address, tele) SELECT * FROM (SELECT 'Unknown' AS name, 'Unknown' AS address, '022' AS tele) AS tmp WHERE NOT EXISTS (     SELECT name FROM table_listnames WHERE name = 'Rupert' ) LIMIT 1;  Query OK, 1 row affected (0.00 sec) Records: 1  Duplicates: 0  Warnings: 0 

目前大概 1000 条 700ms,这个 sql 返回值可以记录重复的数量

好家伙, Postman 都 9.0 了

Posted: 17 Sep 2021 02:54 AM PDT

win10 文件夹文件名批量修改工具哪个最好

Posted: 17 Sep 2021 02:49 AM PDT

大佬推荐下

2021 年的 Windows 上有没有类似 mac 的 Alfred 软件推荐?体验好,安装使用傻瓜的。

Posted: 17 Sep 2021 02:33 AM PDT

大佬们好,

用过 wox 和 everything,有个还需要 python 支持包,好麻烦。

求推荐更好,更傻瓜,更简单的。

有没有英语比较好,或者第六感比较强的人,看看这句话怎么理解

Posted: 17 Sep 2021 02:31 AM PDT

This rule enforces the consistent use of either backticks, double, or single quotes.

这句话来自 eslint 的官方文档。参见 https://eslint.org/docs/rules/quotes

我觉得是对下面配置中"2"的解释,表示要成对出现。 这条规则强制单引号、双引号、` 成对使用。

'quotes': [2, 'single', { 'avoidEscape': true, 'allowTemplateLiterals': true }],

各位大佬,有没有比较好用的虚拟定位软件,能支持钉钉打卡更好

Posted: 17 Sep 2021 02:16 AM PDT

咨询帖: IDEA 中写 markdown 文档,直接写 Java 方法会爆红,需要加上类说明才不爆红。请问怎么操作才能直接写 Java 方法不爆红。

Posted: 17 Sep 2021 02:01 AM PDT

直接写 java 方法会爆红

爆红

添加类说明不爆红

不爆红

百思不得其解的 MongoDB 问题:服务正常,但连接不上

Posted: 17 Sep 2021 01:56 AM PDT

我有个网站用的是 MongoDB 数据库,搞不懂的地方在于网站正常,但是 mongo 连不上。

最近没动过配置,不敢贸然重启服务,求教下各位

分享一个 id 自增生成器,依赖于 redis,求大佬帮忙挑挑毛病

Posted: 17 Sep 2021 01:26 AM PDT

看了雪花算法,服务需要配置标识位(数据中心 ID 、机器 ID ),多一项配置就多一份出错的风险,同时在不依赖其他基础服务的情况下也不太好解决时间回调的问题。然后自己实现了一个简化版的,依赖于 redis 。大佬们帮忙看看有啥问题没有,感谢。

func GlobalIncrId() (int64, error) { 	script := redis.NewScript(` 		local key = KEYS[1] 		local stamp = ARGV[1] 		 		local newValue = redis.call("incr", key) 		if newValue then 			if newValue > tonumber(stamp) then 				return newValue 			else 				local flag = redis.call("set", key, stamp) 				if flag then 					return stamp 				end 			end 		end 	 		return nil 	`) 	stamp := (time.Now().Unix() - 50 * 365 * 86400) << 22 	ret, err := script.Run(RedisIns, []string{sredis.KEY_GLOBAL_INCR_ID}, stamp).Int64() 	return ret, err } 

自增 id 带上 stamp 信息, 是为了防止 redis 的 key 丢失, 或者值被清除。stamp 的计算回拨了 50 年, 因为 32bit 的时间戳到 2038 年就溢出了。只要机器的系统时间回调以及 key 失效这两件事不同时发生, 就能保持自增性。

低 22 位用于 redis incr 自增,高位是时间信息,即 1s 内最多支持 4194304 个 id,超出了也没关系,只是会提前占用高位的时间。

用 22 位来自增是因为某些业务可能会将 id 用在 zadd 中,zadd 的 score 范围是:-(2^53) 至 +(2^53), 即时间信息可以占用 31 位, 保证 score 不会溢出。

Python 重复导入的问题

Posted: 17 Sep 2021 01:17 AM PDT

项目目录如下

│ a.py └─api 	b.py 	__init__.py 

a 中的内容

from api.b import test aaa = 'a' test() 

b 中的内容

from a import aaa def test():     print(aaa) 

现在执行 a 就提示导入重复。不知道怎么解决

这 win10 任务栏图标总是变成四分之一大小怎么解决啊?

Posted: 16 Sep 2021 10:28 PM PDT

如图。 经常会变成这样子,有时候重启能解决,有时候不行。telegram 、NZXTcam 、sockscap64……,卸载重装也不行。 显卡的问题? https://wx1.sinaimg.cn/large/008ljtgily1guij3as3y3j61z401a76w02.jpg

分布式系统数据一致性问题

Posted: 16 Sep 2021 10:14 PM PDT

针对分布式系统下的数据一致性问题,想与大家交流一下在实际业务中已经落地的实现方案。

  • 背景

    • 目前项目中产生的数据一方面存储在 MySQL 中,另一方面通过增量 job 存储在公司内部自研的私有云平台中。
    • 现在需要对比 MySQL 中的数据与私有云平台中的数据是否一致。
    • 仅满足「最终一致性」即可,不要求「强一致性」。
  • 问题

    • 目前实现的方案是:每次定时拉取 MySQL 中定量的数据与云平台中的数据进行逐一对比,若不一致,则修改云平台中的数据。
    • 但在对比的过程中,对于已经拉取到的数据,有可能会发生变更,进而影响云平台中数据的准确性。

所以,大家在具体的项目中,有没有比较好的方案,可以解决以上问题,谢谢!

代码逻辑优化求助(修改一下变量名也好

Posted: 16 Sep 2021 10:10 PM PDT

背景是通过行情端口获取期货数据合成 k 线,意外情况有两个:1 、休盘; 2 、端口不稳定有时候在收盘后仍然会回报两组数据,比如收盘是 11:30:00.一般最后行情回报时间会在 11:29:59.xxxx,但有时最后回报时间为 11:30:00.xxxxx

1 属于固定情况比较好处理,主要问题是 2 。我的处理是超过收盘时间的数据都放下一 k 线内,简单说 11:30:00.xxx 来了一个很高的价格,那么这个价格可以当作 13:30:00-13:30:15 这个时间段内的 k 线的最高价(下午 13:30 开盘)。

    while True:  # 当出现行情时间大于 last_time + period 时,则发送上一时间段的已成熟 kbar,last_time 在第一个 if 判断中作为未成熟 kbar 所属时间段的开端,在 else 语句中将 last_time 更新为 last_time + period 。         data = sub_q.get()         UpdateTime = data['UpdateTime']         LastPrice = data['LastPrice']         if UpdateTime < last_time + period:  # 11:30:15 11:30:00 11:29:45             if LastPrice > high:                 high = LastPrice             elif LastPrice < low:                 low = LastPrice             last_price = LastPrice  # 最后价格是为了收盘价准备             volume += data['volume']         else:  # 跳出时间条件判断则说明收盘价已成立             if (UpdateTime - last_time) < datetime.timedelta(Minutes=10):#是否休盘                 if last_time.second == 00:#如果为真说明 11:30 以后仍有有行情回报                     flag_day = False                 flag_day3 = False             if flag_day2 and flag_day:  # 都为真值则是正常情况                 close = last_price                 kbar_q.put({                     'open': open,                     'high': high,                     'low': low,                     'close': close,                     'volume': volume,                     'ask': ask,                     'bid': bid,                     'ask_v': ask_v,                     'bid_v': bid_v,                     'datetime': last_time + period  # 把上一个时间段的最后时刻作为 kbar 时间属性                 })                 # 先发送上一个 kbar 然后更新 ohlv 以及相关属性                 open = LastPrice                 high = LastPrice                 low = LastPrice                 volume = data['volume']                 ask = data['ask']                 bid = data['bid']                 ask_v = data['ask_v']                 bid_v = data['bid_v']                 if flag_day3:#是否经过休盘                     last_time = last_time + period  # data['datetime']需要取整                 else:                     last_time = UpdateTime - \                         datetime.timedelta(                             seconds=UpdateTime.second, microseconds=UpdateTime.microsecond)             else:                 if LastPrice > high:                     high = LastPrice                 elif LastPrice < low:                     low = LastPrice                 last_price = LastPrice  # 最后价格是为了收盘价准备                 volume += data['volume']                 flag_day = True                 last_time = UpdateTime - \                         datetime.timedelta(                             seconds=UpdateTime.second, microseconds=UpdateTime.microsecond) 

请教大佬们,微服务中多系统统一权限怎么设计

Posted: 16 Sep 2021 09:26 PM PDT

之前全部是单体应用,现在想改成微服务架构了。

比如现在有 ERP,MES,OMS 这几个系统需要整合,但是每个系统权限控制都不一样,有的可能需要需要分企业账号和个人账号,权限分配给企业管理,每个企业有自己的权限控制。有的系统就只需要一个系统管理员做所有控制。

之前都是自己的系统负责自己的权限控制,现在想做统一权限没经验,所以想请教下大佬们都是怎么做的。

IdeaVim 重写了 vimscript 执行引擎,将 vimscript 当成一个真正的语言去执行而不是之前那种只读取 set、map 之类的配置;另外更换了版本号命名策略,版本号直接从 0.69 飙到 1.7.0

Posted: 16 Sep 2021 09:23 PM PDT

https://github.com/JetBrains/ideavim/discussions/357

也就是说现在 .ideavimrc 里可以写函数了
官方给的示例

function! IsThisFive(number)   if a:number == 5       return "This is five"   else       return "This is not five"   endif endfunction 

在 ex line 执行:echo IsThisFive(3)

分享几个星星比较高的开源项目

Posted: 16 Sep 2021 08:44 PM PDT

Linux 下挂载硬盘后一段时间不用,会自动休眠并且卸载是怎么回事?

Posted: 16 Sep 2021 08:15 PM PDT

  • 比如有一个硬盘,我mount上了
  • 但是我并没有使用,过了一段时间后,发现挂载点里面没数据,一看df -h发现没了
  • 于是我又查blkid发现硬盘还是在的,于是再次执行mount又上来了...
  • 所以猜测,是不是大容量硬盘(usb)不用一段时间后会休眠?之前这块硬盘挂到 winodws 上也有类似情况,时间长不用,盘符是在的,但是双击进去发现很卡,同时硬盘转速会提升,然后大约 5.6 秒后才能进去,但是 windows 处理的相对好一些,至少盘符还是在的,linux 直接没了,只告诉你硬件还在....

删不掉的 exim4 是什么东西? apt remove exim4 之后重启机器还有,是被黑了吗?

Posted: 16 Sep 2021 06:21 PM PDT

debian8,最近整理机器的时候发现这台服务器多了一个 exim4 的进程,占用 25 端口,是跟邮件有关的。ssh 进去后 apt remove exim4 删除了一个软件,重启机器后还有这个进程,但是再运行 apt remove exim4 已经是"Package 'exim4' is not installed, so not removed"。启动的用户是 Debian-exim,还有个组也是这个名字。

debian 系统确实有个正常的 exim4 软件,但是我从来没有装过这个东西,也没有在这台服务器上搞过任何与发邮件有关的动作,印象中刚装好系统的时候是没有这个进程的,如果是个正常软件为何删除重启后还有?如果是被人黑了用来发邮件的话,服务商应该早就给我发警告信了。

大佬们帮我分析一下这到底是个啥

哪位大神有这样操作过吗? 取消 vscode 双击 shift 产生全局搜索的快捷键

Posted: 16 Sep 2021 05:27 PM PDT

哪里有 AHK 的中文讨论区?

Posted: 16 Sep 2021 02:42 PM PDT

如题。

请教大佬们,微服务中定时任务的代码应该如何设计

Posted: 16 Sep 2021 12:05 PM PDT

单体项目时,只分了两个项目

  1. web 端,响应前端用户的请求
  2. 定时调度执行器,配合 xxl-job 使用

拆分为微服务后,定时任务执行的相关代码如何设计比较好? 我自己能想到的

  1. 用户请求的业务代码和定时任务代码写到一个服务,通过部署时配置文件和 Nacos 命名空间来控制部分服务响应用户请求,部分服务注册到 xxljob
  2. 业务代码和定时任务代码分别写两个服务,由于两个服务肯定有公共代码,还得抽一个公共业务模块

如何 实现 A/B 域名 A CName B 时,B 隐藏

Posted: 16 Sep 2021 09:46 AM PDT

如题 cloudflare cname 后 进行 ping 测试时 突然 有一个想法:

需求:

最终实现 A Cname B 之后 ping 测试时 看不到 B 域名

而直接显示 B 的 A 记录 IP 比如

A 域名 方式 B 域名 目标 IP
a.com cname b.com 8.8.8.8

最后实现:

正在 Ping a.com [8.8.8.8] 具有 32 字节的数据:

而不是

正在 Ping b.com [8.8.8.8] 具有 32 字节的数据:

请教一个关于 mybatis-generator-plugin 读取 application.properties 文件内容的事

Posted: 16 Sep 2021 05:57 AM PDT

是这样子的, 俺想利用 mybatis-generator-plugin 来自动生成 dao 相关的文件.
所以需要连接数据库, 从数据库中读取信息.
但不从的环境数据库的 url, username, password 不一样.
这三者信息是配置在 application.properties 文件中.
俺想利用 maven 的 profile, 多个环境定义多个 profile, profile 中再定义 properties, 在处理 resource 时, 根据不同的 profile 来替换 application.properties 中的 url, username, password.

然后 mybatis-generator 的配置文件从替换后的 application.properties 中读这个值.

但替换后的 application.properties 是在 target/classes 文件夹下, mybatis-generator 的配置文件好像读不到这个文件.

俺参考的是
https://mybatis.org/generator/configreference/properties.html

有没有铁子处理过类似的情况?

最近用 Firefox + SwitchyOmega 插件在打开部分网页时会出现「意外的服务器响应」

Posted: 16 Sep 2021 05:40 AM PDT

Firefox 92.0
试过把插件换成 FoxyProxy 也有同样问题
不使用插件而使用 Shadowsocks 客户端,无论是 pac 模式还是全局模式都没有问题。

错误如图所示,出现该错误页面后刷新网页可以正常打开。
不知道有人遇到过,知道这是什么问题,应该怎么解决吗?谢谢!

No comments:

Post a Comment