V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  TtTtTtT  ›  全部回复第 13 页 / 共 13 页
回复总数  254
1 ... 4  5  6  7  8  9  10  11  12  13  
2020-05-22 13:33:25 +08:00
回复了 tctc4869 创建的主题 Java java9 以上的版本收费是到底怎样的情况?
Java 是一个规范,由一个组织维护,https://jcp.org/en/home/index,首页在这里,以及 25 周岁快乐。
1.1~1.8 9~14 是 Java 规范的版本号。
现在这个时间点:
OpenJDK 是一个开发组织,来实现 Java 规范,这个版本的实现通常被叫做 Hotspot,是目前最主流的实现。
Oracle 所发行的 JDK,主要由 Hotspot 加上一些 Oracle 私有的工具组成。
OpenJ9 是 IBM 实现并开源的版本,用的人很少。
实际上,现在还有个 GraalVM,也是新的实现。

那么问题来了,什么收费:
1. 特定的 Java 规范实现是收费的,比如 Azul 的 Zing,提供了更加强大的 GC 能力。
2. Java 相关的其他增值服务,比如修 Bug 。OpenJDK 通常只会在最新的版本上修,但是有钱的话,我猜应该是可以为所欲为的。
2020-05-20 16:51:20 +08:00
回复了 hejw19970413 创建的主题 程序员 骑驴找马是不是不太好?
骑驴找马一般来讲不会被下家为难。

如果看到简历里有比较长的 gap,我个人是会特别关注一下原因的。

另外很多政策要求工作的连续性,所以不骑驴找马还怎么办呢。
2020-05-20 14:02:33 +08:00
回复了 tctc4869 创建的主题 Java Java 怎么较好的拆分类文件?
举个例子吧:

interface CommonController<T> {
Dao<T> getDao();

@RequestMapping(value = "/",method = RequestMethod.GET)
default List<T> get() {
return getDao().getList();
}
}

@RequestMapping("/user")
class UserController implements CommmonController<User> {
@Getter
private Dao<User> dao;
}
2020-05-20 13:57:33 +08:00
回复了 songdg 创建的主题 Python 请教如何对齐
=。=命令行的话,难。

首先,需要一个能对齐的字体。。因为数字、字母和中文文字都不是等宽的。

如果找得到等宽的话,把所有字符映射成显示长度,取最大,然后不满足长度的补足即可。
当然啦,这也很复杂,因为要是覆盖边缘 case 的话,就要对控制字符之类的逻辑进行特殊处理。

我刚才顺手看了眼 VS code 的实现,估计就是把中文文字当 2,其他当 1,因为半个省略号竟然长度算 1 。。
2020-05-20 13:46:55 +08:00
回复了 tctc4869 创建的主题 Java Java 怎么较好的拆分类文件?
灵活使用 Java8 interface default method 可以实现这一点。。
真·996 的工作确实是没时间摸鱼的。
之前想的也是聪明如我怎么可能摸不了鱼,但实际结果就是事儿是真的多,电话 ding 是真的烦,出差是真的赶。
代码已经好多好多年了,写的又很恶心,开发工具又没有那么好用,造 10 个账号,有 8 个都会无法开通 xx 宝,然后跑一轮,就脏数据了,人家还不愿意改库,自己又要弄新账号。
到了测试对应的环境,改数据库还要审批,还要用近乎真实的账号覆盖边缘 case,协同的一大堆平台需要一起推进发布,万一推进不了还要临时加个发版开关,这开关一加就没有删的时候了,结果代码里大大小小一大坨开关,谁也不知道现在在用哪套逻辑,几个主要环境的开关还都不一样,除了开发环境,每次变更还要报备来报备去。
一出事故就开会,每次总结下来要做好一二三,结果等到发布的时候还是老样子。
2020-05-18 17:14:41 +08:00
回复了 binbinyouliiii 创建的主题 Java 请教一下 Webflux Reactor 编程
@binbinyouliiii 不不不,switchIfEmpty 应该这么用:
getFromCache(key).switchIfEmpty(
getFromDb(key).flatMap(value -> setCache(key,value))
)
如果设置缓存是纯异步的,也可以:
getFromCache(key).switchIfEmpty(
getFromDb(key).doOnSuccess(value -> setCache(key,value).subscribe())
)
2020-05-18 12:24:13 +08:00
回复了 binbinyouliiii 创建的主题 Java 请教一下 Webflux Reactor 编程
换个姿势解释一下,传统代码是这样子的:
statement1;
statement2;
statement3;

那么对于 Reactor,其根本目标就是在于让 statement1 和 statement2 之间可以执行一些额外的代码,来保证代码是可调度的,进而起到所谓的 IO 优化。

那么首先,就需要改造成:

(statement1 as Mono).then(statement2 as Mono).then(statement3 as Mono)

这样就能在每个 Mono 之间插入一些调度的代码。

另一方面,为了兼容其他的语法,比如 return,比如 null,Mono 就提供了大量的成员方法来简化这个 then,让它写起来更爽。
比如 null 对应了 Mono.empty(),return 对应了 Mono<T>里的 T 。

以上,你需要考虑每个逻辑对应的是 Mono 的哪个方法。
比如 if(x != null) { return x;} <after statement>对应的就是 switchIfEmpty(<after statement> as Mono);
比如 if(x != null) { return x;} else { return y; } 对应的就是 defaultIfEmpty(y)。
2020-05-18 12:08:28 +08:00
回复了 binbinyouliiii 创建的主题 Java 请教一下 Webflux Reactor 编程
其实是一样的。。

People people = getCache(name);
if (people != null) {
return people;
}

=>

getCahe(name).switchIfEmpty(<after logic>)
2020-05-11 17:53:52 +08:00
回复了 djzhao 创建的主题 程序员 IDEA 中 debug 项目时修改了 mapper.xml 如何优雅的更新?
挺复杂的,从原理上,既要 IDEA 能优雅的把 mapper.xml 更新到对应的位置,又要让解析配置文件的库支持动态加载。
Java 是有 Instrumentation 机制的,其他的软件或者库有没有这个能力就要看看了。
这是一个倒逼的循环。
为了让当前干活更加快速,前置的工作会创造尽可能多的可能性(积极的),但是对于无法预知的未来,技术债是不可避免的(消极的)。在消极因子积聚到一定程度、导致 KPI 无法达成后,就会倒逼产生新的解决方案(中性的),进入新的循环。
从达成目标的角度而言,或者是站在商业模式的立场上,上面的循环反而是良性的,因为消极因此都最终被强行转化为中性的。
而你所说的深度、重复性和潜在的风险,绝大部分时候都会在新的解决方案中处理(但处理的结果不一定是积极的)。如果作为工人,一方面就快速迭代,这是 KPI 导向下工作的本分,另一方面对于快速迭代中产生的问题进行归纳,以迎接下一次的革新,这是晋升的机会。如果作为领导,需要有节奏的对自己负责的工程进行梳理,如果当前的状态仍旧可以快速迭代,那就定期整理问题,如果当前的状态已经寸步难行,那就根据整理的问题直接开新坑。

软件是有生命的,效率优先的情况下,快速的迭代甚至包括了快速的淘汰旧架构,快速的产生新方案。
2020-01-21 17:40:08 +08:00
回复了 MOUNT 创建的主题 程序员 想做一个 PC 端的阅读软件,就差程序员了
多种格式支持,还有大量自定义渲染操作,这玩意儿做出来,干嘛还当 Reader 卖啊,再加点文本修改功能,直接把类 Word 软件按在地上锤。。
2019-01-09 14:03:28 +08:00
回复了 xpresslink 创建的主题 Java 请教一下 Java 高手们,可以修改其它方法中的菊部便量么?
Java 不支持多返回值,也没有原生指针。

所以大概是没有法子了。。
1 ... 4  5  6  7  8  9  10  11  12  13  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   997 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 26ms · UTC 18:58 · PVG 02:58 · LAX 11:58 · JFK 14:58
Developed with CodeLauncher
♥ Do have faith in what you're doing.