V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  cloud107202  ›  全部回复第 1 页 / 共 11 页
回复总数  218
1  2  3  4  5  6  7  8  9  10 ... 11  
8 天前
回复了 YugenFring 创建的主题 程序员 kotlin 可以完美平替 Java 吗?
前 kotlin 重度用户。近两年综合 Java 目前的发展趋势与方向,我是认为在 Android 开发之外的服务端编程里,完全没有需要使用 kotlin 的场景
15 天前
回复了 lanweizhujiao 创建的主题 程序员 Java 自己写什么功能可以提升技术?
可以看看功能比较聚焦的库,我个人强推 lettuce
这里可以考虑做个线程读写分离。没接触过 .Net 我会用 Java 的 type 与 API 描述,自行对应一下:

首先把成员 devices 与相关的操作都封装到一个类型里面,对外暴露一个 public 的阻塞队列成员变量,Java 的话我会用有阻塞语义的 ArrayBlockingQueue. 这个类型在构建的时候(onCreation),启动一个单线程去 poll 这个 Queue. devices 的更新逻辑都由这个单线程完成

外面的异步操作获取到设备信息后,以 ImmutableEvent 的形式把必要的信息封装描述好,放入队列. 形如 ArrayBlockingQueue<DeviceUpdatedEvent> 这样子,里面的单线程 poll 到事件直接更新 Dictionary 即可。

最后剩下这个“多个监控线程每隔 100 毫秒读取一次所有设备状态” ,这里简单起见可以将 devices 也设置成 public ,直接在外面访问 devices 成员(重点是:一定要约定好,在 poll 的线程之外的逻辑,全部只能 read 这个 ConcurrentDictionary )。因为 Dictionary 本身使用了线程安全的 ConcurrentDictionary ,对它的 CRUD 是线程安全的,只需要防止外面监控程序获取到某个尚未更新完成的某个 Device 实例(有点像 DB 的脏读),这里给 Device 每个属性设置 volatile 肯定是不合适的:可以考虑前面提到的,在负责 poll 的单线程,获取到更新事件后,不要就地改变 device 对象本身的属性值,而是以 deepCopy 的方式创建个全新的 Device 实例。然后用 ConcurrentDictionary.put(key, value) 的 API 直接更新整个 Device 对象,规避外部监控线程在 scan 的时候,获取到属性更新不完整的 stale state
35 天前
回复了 Dlin 创建的主题 程序员 工作中有接触过让你们觉得技术不错的人么
这种迹象很典型,多是要换环境的信号
如果自己也有心收拾下现在这种混乱,可以一点点的把这些建设起来。
如果有心,只需要个方向和方案的提示就好
https://github.com/prometheus-operator/kube-prometheus

没一个人说明白。。。。 利用 kubernetes 的 operator 机制,监听到带特定 meta 的 svc 描述,operator 会自动抓取和拉取监控数据

service.yaml 开头形如下面这坨

apiVersion: v1
kind: Service
metadata:
annotations:
prometheus.io/path: /metrics
prometheus.io/port: "8080"
prometheus.io/scheme: http
prometheus.io/scrape: "true"


综述:
1. 如果是自有服务,按前面说的来定义 service meta 部分
2. 如果是非 kubernetes 托管的外部服务,比如中间件,一般是部署对应的 exporter 服务。然后自定义一组同上的 service + 指向具体 IP 的 endpoint.
tick 先处理成 snapshot. snapshot 携带日内的累计性质数值,最关键的是成交量与成交额

对于日级别以上的 K ,用 snapshot 触发最新一根周期 K 线的数值变更(最高、最低价、成交量、成交额),这里带一点日期逻辑,比如周 K 线里面,归属于当周就是处理归并到最近一根周 K 线,周一当天这种新的一周开始,就创建全新一根周 K.

分钟级别的没弄过,粗看用 tick 直接搞搞就好
@ovtfkw 您可以心里想想就好,大可不必张开肛门泄出来
63 天前
回复了 furlxy 创建的主题 程序员 天空卫士终端
工作必须装的话,新建一个单独的桌面,把这个窗口拖拽过去,或者小心拖放到最右下角,只会漏出一个不起眼的边框。

否则 recovery mode + rm -rf 伺候
fluent-bit C 语言编写,主流用途的插件丰富,基准内存占用个位数 MB
@paranoiagu 可能是容器的 jdk 版本不认容器平台 CRI 的 cgroupV2. 要检查并升级 jdk 到支持 cgroupV2 的小版本
86 天前
回复了 magese 创建的主题 Java 有实际使用 SpringWebFlux 的大佬分享下经验吗?
就个人经验,95% 的场景都用途不大,pre-loom 时期 reactive 框架解决的主要是针对 request-per-thread 这种场景造成的线程开销过多问题。

比如说,你的应用恰好是一个并发请求量偏大的场景,下层又恰好是一个可以异步的东西比如某些云数据商的异步 SDK (而非 block JDBC 为主的调用),使用 webflux 是一个合适的选择。除此之外可以说都不太适合,因为引入这套框架在带来一点线程资源开销的节省之外,会引入代码风格的巨变。这很像在 js 工程写一个 async 函数,会从调用点起在整个调用链路上做一个比较大的“类型污染/风格污染”,下层调用也充斥着 Mono<T> / Flux<T> 的情况,个别场景比如针对自己无法改造的 block API 还需要对线程与调度器更深一层理解,在合适的时候通过 publishOn() 函数切换 Scheduler

不久的将来 loom 成熟后,reactive 框架唯一的好处就剩下上一段后半段表述的:一套强类型与显示的声明式逻辑处理链路风格。这个见仁见智,在我的经验下全司几乎所有的后端研发都比较反感这一套东西,其中绝大多数人是因为不懂也不想去理解里面的设计思路。可能有一定 FP 经验接触过比如接触过 scala 里面 ZIO/Cat Effect3 那种 effect system 的人会舒适些
86 天前
回复了 firhome 创建的主题 计算机 家用主机用 win 还是 mac?
准备明年 2-3 月份搞个 win 的游戏本,在看 ROG
97 天前
回复了 QiShine 创建的主题 Python 关于 websockets 异步 IO 的一个菜鸟疑问
@QiShine 就是你说的后面那种写法,这是业务的固有复杂度,躲不开的。看的不顺眼就抽象个 dispatcher 的逻辑

// data-flow-in:

while(true) {
bytes = await io.recv()
// 反序列化
data = decode(bytes)
// 派发
xxxhandler.process(data); // 再里面可以 if else
}
97 天前
回复了 QiShine 创建的主题 Python 关于 websockets 异步 IO 的一个菜鸟疑问
@QiShine 没有 await recv(ID) 这种. websocket 设计上就是两个方向互不影响的流数据传送。你这个需求也许更适合 http/grpc 做那种传统 req-resp 的 pattern
蛮糟糕的,熬着吧
> 那 Event Loop 占用了所有 cpu 资源
不会,cpu 会给线程分配时间片,不存在某线程完全占用某个核心

eventloop threadpool 线程数量 <= core size 是因为超过了没有意义,受到并行限制


> 如果创建 work pool 执行了阻塞逻辑或密级计算型任务,会不会影响 event loop
粗略的讲,也不会。阻塞任务不占用 cpu 时间片,比如用 jstack 等工具去观察线程的状态机,等待锁是 blocked 等待定时器是 timed-waiting.

跑密集运算场景,整体上看会对机器的 cpu 资源负载升高,但是这是可预期的正常的工作负载。反而因为密集运算跑在 work pool 的某个线程,不会干扰/拖慢 event loop 完成事件派发
134 天前
回复了 akay2351 创建的主题 生活 光明优倍 780 毫升瓶装鲜牛奶有股塑料味
听闻有些省份换了产地,质量跟原来的比差别明显。 股价大破位止损后没再爱过它
渠道商的,不用看是不是自营,这代才上市没几天
M3 pro 中杯丐版 18+512 那个
第二款京东已经跳水到 14199 ,昨天
1  2  3  4  5  6  7  8  9  10 ... 11  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5276 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 39ms · UTC 09:19 · PVG 17:19 · LAX 02:19 · JFK 05:19
Developed with CodeLauncher
♥ Do have faith in what you're doing.