nieyuanhong 最近的时间轴更新
nieyuanhong

nieyuanhong

V2EX 第 335631 号会员,加入于 2018-07-25 09:02:40 +08:00
nieyuanhong 最近回复了
每天下班打开 boss 直聘开刷呗, 骑驴找马
不退押金? 直接洗衣机空调全给他卖了, 马桶砸了, 下水道全用水泥堵了, 玩的就是一手鱼死网破.
113 天前
回复了 javak 创建的主题 Java Java hello world 确实就要占用 30M
dO yOu GuYs NoT hAvE mEmOrY?
这段代码应当改为
```java
CallSite applyAsInt = LambdaMetafactory.metafactory(
lookup.in(Phone.class),
"applyAsInt",
methodType(ToIntFunction2.class),
methodType(int.class, Phone.class, int.class, int.class),
getSum,
methodType(int.class, Phone.class, int.class, int.class)
);
```
因为调用 metafactory 方法时, 方法内部初步生成的 Lambda 字节码会被作为 lookup.in(Phone.class)的内部类加载, 加载时, 会调用方法 java.lang.invoke.InnerClassLambdaMetafactory#generateInnerClass, 具体逻辑形如
```java
//jdk21
return caller.makeHiddenClassDefiner(lambdaClassName, classBytes, Set.of(NESTMATE, STRONG), lambdaProxyClassFileDumper)
.defineClass(!disableEagerInitialization, classdata);
```
在 defineClass 中逻辑形如
```java
//jdk21
Class<?> lookupClass = lookup.lookupClass();
ClassLoader loader = lookupClass.getClassLoader();
//...
```
这里的第一句 lookup.lookupClass() 获取的就是 metafactory 的第一个参数 lookup.in(Phone.class)中的 Phone.class, 如果用原始的 lookup 的话, 会获取到 Object.class, 显然 Object 的 classloader 会找不到 Phone.class, 但是可以找到其他和它位于同个 classloader 中的类, 比如 String.class.
@gzlt 感谢感谢,辛苦了
这个历史聊天记录可以找回来吗?感觉上次对答状态很好,但是关了之后聊天记录找不到了。
2023-04-10 02:51:05 +08:00
回复了 Ujob2022 创建的主题 酷工作 赴日 IT!自研、派遣招聘大量 IT 技术者!
@LcDraven 当然啦,现在行情就是在缅北分块打包再运往世界各地。
2023-01-17 14:17:11 +08:00
回复了 abcbuzhiming 创建的主题 Java [请教]String 的 new String(Byte[]) 和 getByte() 转换的理解不能
这个直接跟踪源码就理解了,比如 windows 下默认 gbk ,其他系统可能默认 utf-8 ,这些字符集都有一个重解析的问题。
具体来说就是解析时,有些 byte 组合是没有对应的字符的,而有些 byte 组合直接不符合编码标准,所以这些组合会被解析后映射到乱码字符。
这样经过转换为字符又转回数组,长度和值当然会不一样了。
要想保证这样两次解析不破坏信息,建议的方式是指定字符集解析为 iso8859-1 ,而为什么要选它呢?因为它仅有的 256 个字符和 byte 的 256 个值是严格一一对应的,这样无论如何互转,都不会产生映射混乱。

楼主可以自己试一试。

```java
var a1 = new byte[64];
new Random().nextBytes(a1); // 获取一些随机 byte 以供测试
System.out.println("a1:" + Base64.getEncoder().encodeToString(a1));
var tmp = new String(a1, StandardCharsets.ISO_8859_1);
System.out.println("a2:" + Base64.getEncoder().encodeToString(tmp.getBytes(StandardCharsets.ISO_8859_1)));

```
2022-12-18 03:33:41 +08:00
回复了 yazinnnn 创建的主题 Java 2022 年冬月, Java 后端工程师拒绝使用 kotlin 的技术原因有哪些?
@GTim 如果 Lombok 不够,比如需要运算符重载,元编程,扩展方法,那就上 manifold https://github.com/manifold-systems/manifold
2022-12-18 03:28:58 +08:00
回复了 iSNN 创建的主题 Java Java 怎么去掉这些奇怪的字符
感觉列举的例子有点少,你需要分析 abc 后边的奇怪字符的 ASCII 码,确定这些奇怪字符的码位范围,范围确定后就好办了,直接正则移除掉。当然如果奇怪的字符包括标点符号和英文字母以及汉字的话,就只能从前端找办法了。
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2700 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 12ms · UTC 09:51 · PVG 17:51 · LAX 01:51 · JFK 04:51
Developed with CodeLauncher
♥ Do have faith in what you're doing.