Wednesday, July 28, 2021

V2EX - 技术

V2EX - 技术


想问问各位,有用游戏本办公写代码的朋友吗…

Posted: 28 Jul 2021 03:48 AM PDT

看上败家之眼魔霸 5R 了,很想直接某宝入手个 64G 内存,1T 固态的。不过想回来,其实自己并不咋玩游戏,要那么强的配置其实用处不大…不过的确偶尔可以玩玩鬼泣 5 啥的。其实我是啥毛病呢…配置可以不用,但是没有就不爽,哈哈,想问问有没有人和我一样的

真正的点对点聊天通讯隐私实现想法

Posted: 28 Jul 2021 03:47 AM PDT

实现想法:

A 发送消息给 B

检测是否持有 B 的公钥        若有,使用 B 的公钥对消息进行 RSA 加密并发送。       若无,则先请求 B 传输公钥过来,B 生成公私钥并缓存在本地。    B 收到消息后,使用自己的私钥进行消息解密。   

B 发送消息给 A
同理

我想,这样应该才是能实现真正隐私通讯的,连服务提供方都无法窃取消息的,而不是市面上一些聊天软件慌称的"隐私"。

这种通讯隐私方案可实现吗?会有软件愿意为了用户隐私而实现吗?

刷题有点刷不下去了,请假刷题经验心得

Posted: 28 Jul 2021 03:32 AM PDT

工作五年,之前大厂,现在创业公司发现是个坑

给自己定了一年目标:当前还有八个月的刷题和英语时间,去外企

现在是刷题进度为 2 个,加班时间比较少(晚上 10:30 到家)加上之前没有过系统刷题,大家这种情况是如何坚持下去的?

后端如何学前端?不求精,求快就行

Posted: 28 Jul 2021 03:27 AM PDT

最近需要接触一些前端的代码,无奈一直写后端,受不了 js 的各种奇葩问题、另类语法、各种封装。。。。

Github 默认分支由 master 变更为 main

Posted: 28 Jul 2021 03:26 AM PDT

你们产品经理会帮你们减少技术债务吗?

Posted: 28 Jul 2021 02:58 AM PDT

题目差点打成产品经理会帮你们减少债务吗? 产品经理:滚!

哈哈,刚看完一篇相关的文章:https://www.zentao.net/redirect-index-19288.html 所以问问,你们的产品经理会帮你们减少技术债务吗?

产品经理嘴上说:有个地方需要稍微调整一下。 实际上:需要有很大的改动,之前的版本就废掉吧,你重新做一次给我看看。 ……

K8S 如何优雅滚动发布 Java 应用,每次重新发布都会出现超时跟 502

Posted: 28 Jul 2021 02:44 AM PDT

目前公司正在全面上 k8s 。作为一个算是边缘部门,所以就被当做第二批小白鼠强行迁移了 k8s 。

目前项目重新发布的时候业务方请求我 http 接口的时候会出现 connect timeout 或者直接 response 502 了

java 应用是单机的 spring boot 目前线上 3 节点,应用内部也实现了优雅停机相关代码。

因为线上的 k8s 对我来说就是个黑盒,我也不知道运维怎么配置的。听运维说,公司 go 那边的项目是因为服务化了,每次下线 pod 前会通知网关来下掉这个节点。所以 go 的服务没出现我这边的情况。

我那边的线路直接就是内网域名解析到 ingress 然后 ingress 负载到后面 services services 后面就是我 java 应用 3 个 pod 节点了。

有没有遇到过类似问题的小伙伴,求你们的最佳实践

Maven 下载依赖会连接 192.168.0.199,没连私库, ping 不通这个地址,自己本机内网地址是 192.168.11.75

Posted: 28 Jul 2021 02:35 AM PDT

求 使用 AWS 云实例 包括但不限于 [rds] [redis] [ec2] 生产案例 欢迎推荐 付费资源 谢过各位 V 友

Posted: 28 Jul 2021 02:31 AM PDT

pycharm 中按 ctrl shift f10 会打开 vscode

Posted: 28 Jul 2021 01:48 AM PDT

换了新电脑, 然后发现在 pycharm 里按快捷键运行 py 文件会自动打开 vscode, 请教一下怎么解决啊? 这是怎么形成的羁绊啊?

下面是弹出的 terminal 的内容:

[main 2021-07-28T08:45:26.704Z] window: using vscode-file:// protocol and V8 cache options: bypassHeatCheck  [main 2021-07-28T08:45:26.750Z] update#setState idle 

IOS 上面,有类似 moment 这样的百分比倒计时的软件推荐吗?

Posted: 28 Jul 2021 01:35 AM PDT

如题,平时废弃的小 6s 都被我摆在桌面开个全面屏的翻页时钟用,最近在 mac 上面发现 moment 这款百分比倒计时 app(真的不是推广),觉得还行,所以想在 IOS 上面搜索同类的,但是没有找到类似的 app...不知道大家有没有推荐的

父项目是 spring cloud alibaba 下面有十个单体项目,应该怎样管理这些单体项目?,要可以看到哪个单体项目有没有开启这种。

Posted: 28 Jul 2021 01:23 AM PDT

大家有没觉得新版的 jetbrains toolbox 界面很卡,而且内存占用很高?

Posted: 28 Jul 2021 12:59 AM PDT

感觉越更新越垃圾

小白,求大佬指点。 群晖 nas 尝试搞了个 frp 内网穿透,把服务装在了我之前的网站服务器上,现在可以用设置好的二级域名访问 nas,可是我一级域名的网站提示拒绝链接 无法访问,这是为啥。

Posted: 28 Jul 2021 12:33 AM PDT

折腾半天了,本以为是证书问题,来回搞了好几次 在没有搭建 frp 服务的情况下,一级域名跟二级域名都可以正常访问网站。 现在弄了这个 frp 就感觉哪不对了 ,

flooks v4,自动优化,按需更新。最简单 React Hooks 状态管理器

Posted: 27 Jul 2021 11:51 PM PDT

状态管理的难题

在 React Hooks 状态管理方案中,通常会遇到联动更新的问题:

同一模块更新,消费了此模块的组件都会 re-render,即使被更新的 state 在组件中未用到。

例如 model = { a: 1, b: 2, fn: () => {} },调用 setModel({ a: 2 }),只使用 b 的组件也会 re-render 。而只使用 fn 函数的组件,理论上永远不应被 setModel() 触发更新,但也会 re-render 。

若不想被关联更新,就得将数据拆的足够细 —— 例如 React.useState() jotai 等,便是这种 "元数据" 思路。而同时还存在另一种 "模块化" 思路,例如 React.useReducer(),希望将同一模块的数据放在一起。

使用 "元数据",会背离将数据放在同一 model 的初衷,使用 "模块化",又面临着组件联动更新的问题。

使用 Redux 的传统 class 组件项目中,react-redux 实现了对组件联动更新的性能优化。但纯粹的 React Hooks 项目,只使用 Hooks 实现的状态管理器,却没有一个好的解决方案。

flooks v4 介绍

flooks 是一个专用于 React Hooks 的状态管理器,API 极其简单。即支持模块化,又支持模块间的互通,可能是最简单的一个。

https://github.com/nanxiaobei/flooks

之前 flooks v3 的 API 是这样的:

const counter = (now) => ({   count: 0,   add() {     const { count } = now();     now({ count: count + 1 });   }, });  function Counter() {   const { count, add } = useModel(counter, ['count']); // 借助 deps 知晓注入的 state   return <div />; } 

flooks v4 做了一些更新:

const counter = ({ get, set }) => ({   count: 0,   add() {     const { count } = get(); // get     set({ count: count + 1 }); // set   }, });  function Counter() {   const { count, add } = useModel(counter); // 再不需要 deps   return <div />; } 

主要改变是:

  • now 分为 getset,以让代码更清晰
  • 无需再传入 deps 进行 re-render 控制
  • set 支持函数形式 set(state => ({ count: state.count + 1 })

除了 API 更新,更重要的是,flooks v4 将背后的更新核心逻辑进行了全部重写,彻底解决了 "模块化" 方案联动更新的问题,从而实现了对更新颗粒度的精细控制。

Re-render 自动优化方案

借助 proxy,flooks 实现了惊人的自动优化,完全按需 re-render,React 真正变为 "react"。

useModel(someModel) 返回一个 proxy,只有真正用到的数据,才会注入组件,若未用到,则不会注入。

因此无需再添加 deps,因为 useModel() 现在已经可以知道,哪些数据会被解构出来使用,从而只更新用到的数据。

只使用函数绝不触发 re-render

const { fn1, fn2 } = useModel(someModel); // A 组件  const { b, setB } = useModel(someModel); // B 组件 setB(); // A 无 re-render 

若 A 中只使用函数,则其它组件更新不触发 A re-render 。

未使用的 state 绝不触发 re-render

const { a } = useModel(someModel); // A 组件  const { b, setB } = useModel(someModel); // B 组件 setB(); // A 无 re-render 

若 A 中未使用某些 state,则其它组件更新不触发 A re-render 。

未使用的 loading 绝不触发 re-render

const { someFn } = useModel(someModel); // A 组件 someFn(); // 无 someFn.loading,无额外 re-render 

若 A 中未使用 someFn.loadingsomeFn() 不触发额外 re-render 。

someFn 为异步,普通 loading 方案中,即使 somefn.loading 未用到,re-render 也会触发至少两次(先 true 然后 false)。但使用 flooks,若 somefn.loading 未用到,则完全不会存在隐形 loading 更新。

真正的 "模块化"

以上,flooks v4 真正实现了 React Hooks 状态管理方案的 "模块化"。

即可以将同一模块的数据放在一处,方便统一管理,又不用担心局部更新触发联动更新。更新完全是按需进行,只有用到的数据,才触发更新,未用到的数据,即使是 someFn.loading,也不会注入组件。

在代码中写出来的,就是会更新的,没有写的,就根本不会存在,再不用担心更新问题。

一切都是如此符合直觉,再无其它烦人概念。

结束啦

flooks v4,喜欢的话,欢迎 ✰

https://github.com/nanxiaobei/flooks

大佬们, mysql 在加排他锁失败时可以不阻塞吗?

Posted: 27 Jul 2021 11:25 PM PDT

我有这样一个需求,使用 mysql 在加锁失败时立即返回空集,而不是阻塞等待。

需求引伸一下,就是 mysql 在 select 的时候可不可以过滤掉被锁定的行,只返回没锁的行?

因为搜索能力有限,只找到了一条相关的内容: https://stackoverflow.com/questions/20091527/select-only-unlocked-rows-mysql

里面提到 mysql8 有 skip locked 关键字,但是我用的 mysql7,而且不太好更换数据库,所以想问问大佬们 mysql7 有办法实现这个需求吗?

域名 a 跳转到域名 b 怎么保持域名不变 内容变成 b 的

Posted: 27 Jul 2021 10:56 PM PDT

除了反向代理

还有其他好的方案吗

Java 有没有优雅的办法生成类代码

Posted: 27 Jul 2021 10:50 PM PDT

现在有个 OA 系统,包含一套流程设计,比如可以设计一个请假流程,包含基本的节点,连接线,条件,switch 等功能。包含了访问数据库,访问 URL 等能力。

现在有个需求,设计好对的流程,不通过内置的简单版的流程引擎执行。而是需要把设计好的流程转成对应的 java 实现,也就是生成流程设计对应的 java 文件。最终流程执行的是 java 文件生成的 class 文件。

现在碰到了第一个问题,如何优化的生成流程对应的类。不知都有没有什么设计模式或者什么插件,可以快速方便的生成流程的 java 源码. 如果直接使用字符串拼接的方式,我感觉会有点凌乱,出问题了也不好处理,也不灵活。写出来的代码估计自己都看不懂。

谢过各位大佬了。

跨国传输文件有什么好方案, ftp/rsync 好像比较慢

Posted: 27 Jul 2021 10:30 PM PDT

RT,ftp/rsync 好像比较慢,是不是用 UDP 会好一些。求个最佳方案,国际带宽是真的贵,也不想走第三方的盘。

Syncthing 如何完成同步后删除源文件

Posted: 27 Jul 2021 10:19 PM PDT

Syncthing 如何完成同步后删除源文件,没有找到相关的配置

大家建立数据表的时候,对主键列的列名是怎么取名的?

Posted: 27 Jul 2021 09:32 PM PDT

建立数据表,主键是单列,而且也不是中介关联表。就是对应实体的数据表,那么我对主键的命名,如果不是出于特殊需要,一般都叫 id 。

那么大家对这类对应实体的数据表名的主键,如果只有一个主键列的话,各位是怎么给主键列取名的,是像我一样基本只叫 id 吗?

发现威联通的 HybirdMount 支持挂载世纪互联的 OneDrive 和 SharePoint

Posted: 27 Jul 2021 09:30 PM PDT

就想分享下这事。



下面是碎碎念:
因为群晖的 Cloud Station 和威联通的 HBS3 都不支持世纪互联,就以为要备份到世纪互联就只能靠 rclone 了。
刚部署好 rclone,却无意间发现 HybirdMount 竟然能支持。有被感动到。
用文件云网关的形式挂载后,通过 SMB/NFS 等协议也能访问到,体验良好。

反转的是,最后发现文件云网关竟然不能作为 HBS3 的备份目的地……威联通这个一会支持一会不支持的风格真的是……
感觉只能曲线救国了,先备份到本地,再通过 Qfiling 自动移动到世纪互联。

回头对比下 rclone 和 HybirdMount 挂载的体验,可能最后还是得回到 rclone 。

CORS 跨域 POST 请求会出 OPTION 与请求,导致 2 次请求该如何优化?

Posted: 27 Jul 2021 08:50 PM PDT

前端 POST json 格式提交会发 OPTION 预请求,返回 200,在发主请求,导致后端收到两次请求.

于是在 nginx 里配置如下:

    if ($request_method = 'OPTIONS') {         proxy_pass http://127.0.0.1:33333;     }  	proxy_pass http://127.0.0.1:44444;      

第一次 OPTION 请求发给另外一个端口 33333,第二次请求发送给真正的后端 44444 ,是可以解决这个问题.

但是 33333 这个端口要是 502 404 等错误,也会导致第二次请求发不出去..而且这么搞感觉也不优雅...

在无法修改后端的情况下,还有什么方法能优化?

域名 a CNAME 解析到域名 b b 有内容。解析之后访问域名 a 显示没有找到站点,咋回事

Posted: 27 Jul 2021 08:37 PM PDT

域名 b 的网站还需要做什么额外的操作?

我经常看到一些云虚拟主机的厂商要求你把域名解析到他们的 cname 地址 他们的那种是怎么做的,如图: https://p.pstatp.com/origin/pgc-image/7cfe43772ac4444ea12cfb58030bfd98

Window10 有没有程序能够保存当前打开的所有程序环境?

Posted: 27 Jul 2021 08:22 PM PDT

作为程序员,经常需要打开很多程序,而且这些程序也有其上下文,如果每次工作都需要自己手动打开这些环境,这是个让人很难受的事,而如果能把上次的环境打断点保存下来,下一次就能够很快的跟上上一次的思路。比如 Chrome 就有相关的插件可以保存当前打开的页面。

除此外,有时打开太大窗口后,想关闭一些窗口专注于某任务相关的窗口,当做完后再进行其他窗口的任务。

当然,如果 Linux 下有相关的实现,也欢迎提出。。

问个 kube-apiserver 的 8080 端口调用超时问题

Posted: 27 Jul 2021 08:03 PM PDT

1.18 版本的 k8s,centos7,kubectl version 没结果,打开调试后发现调用 kube-apiserver8080 端口超时,在家也部署了一套 1.18 的就没这个问题,防火墙 selinux 都关了的,求解。
报错图片 https://imgur.com/9qe49No

现在计算机架构和优化能跳出 时间换空间,空间换时间这个例子吗?

Posted: 27 Jul 2021 06:28 PM PDT

在 html 里面可以直接写 PHP 代码吗

Posted: 27 Jul 2021 03:15 PM PDT

后缀名不改 还是.html 在里面直接写 php 代码

如果不行的话 ,那可以反过来把写好的 html 放到.php 里面吗

写过过 Angular 和 Vue 后,才发现 React router dom 真的不行.

Posted: 27 Jul 2021 01:13 PM PDT

之前没写过 React,今天我才知道 React router dom 不是官方维护的,结果是一个卖教程的维护的,怪不得打着 React training 的 title...

是不是把一个 router 库写得简单易用,扩展性强大,且符合人类直觉的话,培训就卖不出去了?

我上一个帖子问有什么好用的 react router dom 的路由守卫,结果并没有.

我尝试了自己封装,在 react router dom 的基础上,

但是写出来的代码我感觉就是一坨屎,任凭我怎么封装,我看着这些诡异的 api 都觉得恶心.

后来我又了解到,react router dom 的作者认为,为了其灵活性,不能过度封装,问题是灵活易扩展和简单易用多功能可以做到不冲突...

如果只是提供如此简单的路由功能,我感觉我不如自己解析 url,进行条件渲染...

我觉得这不是灵活,这是完全就是简陋...直接把 history 这些玩意儿暴露给使用者,

没有 interceptor 式的路由守卫,没有命名路由,嵌套路由的写法也很诡异,

这到底是封装了个什么...

没搞懂为什么这个 lib 在 github 上关注度这么高,

不过还好,我终于找到一个符合我使用直觉的,且还在维护的 router 库了...

universal-router

痛苦的转型

Posted: 27 Jul 2021 10:48 AM PDT

  1. 什么都不知道,编程知识基本一知半解,helloword 水平
  2. 内部轮子特别多
  3. 已有项目上加功能,弄不明白从哪里开始写
  4. 之前的代码看过又忘
  5. 不知道怎么快速调试
  6. 没写几个需求,漏洞百出,基本靠同事,具体如下

1)告诉我改哪一行,怎么改

2)我写出一个漏洞百出的代码

3)一行一行教我调试

4)一次 CR,200 行代码要改 50 个地方

大致是上面的状态

求问 java8 排序 怎么简化代码

Posted: 27 Jul 2021 10:04 AM PDT

给一个 2d array: int [][]
它的子数组的长度固定为 2.
{
{1,3},
{1,4},
{2,3},
.....
}

比较的方法是先比子数组的第一个数,如果一样的话再比较第二个数字。

想知道怎么用 lambda 或者 Comparator.comparing(xxx).thenComparing(xxx) 这样的方式简短的写出来?

如果是个 Object, 可以用 Comparator.comparing(Person::getAge).thenComparing(Person::getScore)这种方式,换成是 Array 不知道该怎么办了。

谢谢

如何基于磁盘 KV 实现 Bitmap

Posted: 27 Jul 2021 07:12 AM PDT

小米 11 手机自动重启几次后,连接不上 wifi 了

Posted: 27 Jul 2021 04:30 AM PDT

严重怀疑这是小米品控的原因,我升级系统都没卵用。我看网上很多人说是 wifi 芯片坏了,但这个坏掉了,难道不是系统都启动不了了吗,用 adb 能看到以下的关键信息:

07-27 20:31:17.741   934   934 E android.hardware.wifi@1.0-service: Failed to access driver state control param No such file or directory, 2: No such file or directory 07-27 20:31:17.741   934   934 E android.hardware.wifi@1.0-service: Failed to load WiFi driver 07-27 20:31:17.741   934   934 E android.hardware.wifi@1.0-service: Failed to initialize firmware mode controller 07-27 20:31:17.741   934   934 E android.hardware.wifi@1.0-service: Wifi HAL start failed 07-27 20:31:17.743  1652  2414 E HalDevMgr: Cannot start IWifi: 9 () 07-27 20:31:17.743  1652  2414 E WifiVendorHal: Failed to start vendor HAL 07-27 20:31:17.743  1652  2414 E WifiNative: Failed to start vendor HAL 07-27 20:31:17.743  1652  2414 E WifiNative: Failed to start Hal 07-27 20:31:17.743  1652  2414 E WifiClientModeManager: Failed to create ClientInterface. Sit in Idle 07-27 20:31:17.744  1652  2414 D WifiScanRequestProxy: Sending scan available broadcast: false 07-27 20:31:17.744  1652  2423 I WifiScanningService: Received a request to disable scanning, UID = 1000 07-27 20:31:17.744  1652  2423 I WifiScanningService: wifi driver unloaded 07-27 20:31:17.746  1652  2414 I WifiScanRequestProxy: Scanning is disabled 07-27 20:31:17.747  1652  2414 D WifiClientModeManager: received an invalid message: { when=-1s10ms what=2 arg1=2 target=com.android.wifi.x.com.android.internal.util.StateMachine$SmHandler } 07-27 20:31:17.747  1652  2414 D WifiController: STA disabled, return to DisabledState. 07-27 20:31:17.747  1652  2414 D WifiController: EnabledState.exit() 07-27 20:31:17.747  1652  2414 D WifiController: DisabledState.enter() 

No comments:

Post a Comment