V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  timethinker  ›  全部回复第 17 页 / 共 20 页
回复总数  383
1 ... 9  10  11  12  13  14  15  16  17  18 ... 20  
查到了文档,楼主可以参考一下: https://kotlinlang.org/docs/whatsnew11.html#sealed-and-data-classes
没有用过 kotlin,不过看似这个东西在语言层面有点类似于 C/C++的结构体?那么正确的做法应该使用组合而不是继承吧。

如果确实有继承的需求,那么为何不直接用 class 呢?子类行为可以复用 /改写父类行为,实现多态的效果,这才是使用继承的主要原因吧。因为最终还是跑在 JVM 上,个人猜测这里不允许继承可能是因为 equals 或者 hashcode 可能会出现问题?
目前我自己用的是意利的深度烘焙咖啡粉,然后咖啡机用的 STARESSO 三代,清洗方便,做出来的浓缩油脂十足,香气逼人,我一般直接喝浓缩或者兑点开水喝美式,夏天可以直接加冰块。
2021-05-25 10:43:49 +08:00
回复了 SunSurprise 创建的主题 互联网 语雀的内容安全是否像宣称的那样靠谱
端对端加密意味着服务端压根不知道你存的什么东西,跟我本地加密然后上传 Github 是一样的吧。
2021-05-24 13:21:16 +08:00
回复了 phony2r 创建的主题 MySQL MySQL 如何保存有顺序的列表?
取决于是读多还是写多,另外跟数据量也有关系,假如说按照最坏的情况,修改序列会导致上 W 条的记录被修改,那么单独维护一张表存储序列是一个不错的方案,里面的内容是一个字符串,用分隔符组装 ID 列表,这样在变更序列的时候仅需要修改这一条数据(一对多,这里序列表 ID 就是主表的 ID,比如歌单 ID,评论文章 ID,小说 ID 等等)。

不过在读取的时候可能会遇到条件过滤+分页的问题,还是取决于场景,可以在更新序列表后异步的更新表数据( order ),此时数据表上的 order 字段只是一个冗余,在修改过后可能会遇到延迟的情况,在关键的地方还是要从序列表当中取出正确的排序,不过大多数情况下是可以接受的。
2021-05-24 09:26:09 +08:00
回复了 droidmax61 创建的主题 Android Vivo 手机某系统进程开放 55555 端口疑似用作 mCDN
客户端的 TCP/IP 端口一般是系统临时分配的。如果手机系统厂商为了节省带宽费用,在自家的设备系统上开设端口,然后设备之间打洞穿透内网建立连接,搞 P2P 网络的可行性还是存在的。

做得隐秘一点的话,可以是动态的,反正手机与系统厂商之间总会建立一个连接用于服务目的。
2021-05-21 17:08:01 +08:00
回复了 samin 创建的主题 程序员 关于低(零)代码平台的看法
一开始我们用汇编,后来出现了 C 语言,移除了特定架构的 CPU 指令,换平台时只要再编译一次就行了,把硬件 /系统相关的东西交给编译器来完成,C 语言不需要学习吗?

到后来人们开始使用 Java,一次编译全平台运行,Java 不需要学习吗?

下一次发生变革可能会有一个系统来替代编程语言,不需要写代码,但是这个系统不需要学习吗?

不管做到哪种程度,灵活性越高则学习成本越高,学习它本身就是一种职业技能相关的了,如果能够普及到九年义务教育,那也仅仅只能教大家如何使用,但创造性是无法直接教授的,就像学语文一样,你识字但不一定能写诗,到时候可能会说,人人都是程序员,只是使用的工具不一样。
2021-05-18 09:18:45 +08:00
回复了 fiypig 创建的主题 职场话题 有些公司真的有趣
不是没有遇到过这种,但我始终觉得这是迷惑行为,都留了 U 盘可以拷东西了,代码也不见得会多么安全。
还有那种不让联网的,我估计是在造火箭。
时代不同了,现在都是开源的世界,代码并不值钱,数据才是最值钱的。
“信任,但要验证”,与其严防死守,不如制定一种安全策略,管理好访问权限。
2021-05-17 15:32:45 +08:00
回复了 timethinker 创建的主题 生活 起床后短暂的陌生感
老哥们都很幽默,不过据说人做梦是为了让自己适应环境,有意无意中会对自身做一些调节,从这一点上来看大自然塑造的生物机制真的很神奇,特别是人类。
2021-05-10 19:22:32 +08:00
回复了 wheeler 创建的主题 问与答 请教 V 友微服务对外发布升级的问题
这个需求可不简单了,毕竟涉及到的东西比较多,可能你需要透过容器调用 Docker 引擎的 API 来实现,这样做就跟你的部署配置耦合了,意味着你需要管理 Docker 的镜像以及容器。

Docker 引擎 API 文档: https://docs.docker.com/engine/api/v1.41/
可以使用 alpine/socat 这个容器将 Docker 的 unix socket 映射为一个可以请求的端口地址 ,加入到跟应用同一个 docker 网络中进行调用,这样你的服务就可以通过一个 HTTP 客户端来请求 Docker 引擎了。
2021-05-10 18:47:47 +08:00
回复了 wheeler 创建的主题 问与答 请教 V 友微服务对外发布升级的问题
你这个问题其实这个跟微服务没啥关系,跟容器也没有太大的关系,想想没有容器之前我们是怎么交付软件的?有了容器之后区别在哪里?

1 、当你发布的新的镜像,里面包含了最新的代码,那么客户升级的时候必然会拉取这个镜像并启动该镜像的容器。
2 、启动容器的时候,以前的容器如果同时运行,此时适当的切换流量至最新的容器内,如果没有问题,旧容器就可以停止了。
3 、如果不允许同时启动两个不同版本的容器,那么必然要停掉之前的,再启动新的(例如版本迁移,数据结构更改)。

所以这里没有什么神奇的地方,对于不兼容的升级,该停机还是得停机,否则迁移成本太高(你得同时维护新老版本的数据兼容、API 变更等等)。
2021-05-10 11:20:14 +08:00
回复了 tctc4869 创建的主题 程序员 不懂就问:工作流是什么?其用途是什么?
我之前集成过 Activiti,本质上它就是一个有限状态机,使用它的目的就是为了应对频繁变更的审批流程。

既然是状态机,就涉及到状态节点的切换,即触发了什么事件(输入)导致状态进入到下一个状态(输出),每一个状态节点拥有生命周期,hook 节点生命周期的不同阶段用来处理自定义的逻辑,并且可以控制状态机的走向。节点有不同的类型,有些内置类型的节点,例如进入到这个节点就发送一封邮件,发送完以后进入到下一个节点。

对于我刚才说的以上这些功能,实际上就是一个流程的定义,这个定义不是通过我们写代码的方式来硬编码的,而是在运行时进行管理的,而这个定义也有一个标准( bpmn )用于规范整体的结构。

流程定义完成以后,下一步就是考虑如何将定义“实例化”,流程定义只是一个静态模板,它是元数据(即描述数据的数据),就像我们写一个 Java 类,是需要被实例化的。启动一个流程定义相当于创建了一个流程实例,每一个流程实例具有生命周期,从开始节点一步一步往下走,直到走到了结束节点。

Activiti 或者 Flowable (推荐)非常方便进行拓展,它完成了我们上面所说的那些基础功能(流程定义与部署、实例状态管理等等),我们可以自己按照需要进行定制化的开发。特别需要注意的就是,在使用上,不要把流程实例当做一个业务实体来用(例如你有 10W 个订单,但是里面未完成的订单也许只有几百个),每一个流程实例都有自己的生命周期,当它完成了以后,它的使命也就结束了,在 Activiti 中将会从 RU_XXX 系列表中移除,不过我们可以对其进行拓展,将它的结果存储到外部的一个归档数据库中。

对于简单一点的场景,例如所有的节点都是 UserTask (通常用于审批),可能自己设计一张表就结束了,压根用不到工作流引擎。但是对于以事件驱动的整个集成系统来说还是有意义的,特别是对于频繁变更的流程。
1 ... 9  10  11  12  13  14  15  16  17  18 ... 20  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3434 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 29ms · UTC 00:48 · PVG 08:48 · LAX 17:48 · JFK 20:48
Developed with CodeLauncher
♥ Do have faith in what you're doing.