V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  nieyuanhong  ›  全部回复第 1 页 / 共 1 页
回复总数  17
啊? 只支持硅基流动?
5 天前
回复了 woodfizky 创建的主题 电动汽车 小米 SU7 高速碰撞爆燃报告
@needpp 外企可以维权, 国内企业也有铁拳. 大家都有美好的未来.
9 天前
回复了 4ra1n 创建的主题 Java 有没有什么思路对 Fat Jar 进行瘦身
甚至都可以不用到 agent, 直接重定义类加载器, 记录所有加载的类. 甚至可以直接在类加载器里开一个 zip 边记录边去重后往里边塞用到的类. 如果还想优化, 甚至可以记录方法调用(可以使用 javassist 向方法插入记录代码, 然后使用 butebuddy 运行时替换类的字节码, 比传统的 agent 应该简单一些), 把没用到的方法也剪掉. 但就算这样还是有个问题, 如何保证所有用到的类/方法被调用一遍了呢?
111 天前
回复了 Chelseawin 创建的主题 职场话题 今天过生日,但开会也被警告了........
每天下班打开 boss 直聘开刷呗, 骑驴找马
不退押金? 直接洗衣机空调全给他卖了, 马桶砸了, 下水道全用水泥堵了, 玩的就是一手鱼死网破.
221 天前
回复了 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 码,确定这些奇怪字符的码位范围,范围确定后就好办了,直接正则移除掉。当然如果奇怪的字符包括标点符号和英文字母以及汉字的话,就只能从前端找办法了。
2022-12-18 03:17:44 +08:00
回复了 gzk329 创建的主题 Java springboot 中怎么向 Runnable 中传递一个该线程独占的局部变量?
Spirng bean 默认全局单例,也就是所有线程都共享一份 A 的实例,你如果在一处改了`param: B`,那所有线程下的成员变量`param: B`当然都会改变。
简单的做法就是用一个`Map`,以线程为键,`param: B` 为值,存放所有线程的`param: B`。
最后在 getter 和 setter 做下线程判断,就 OK 了。
2020-06-04 19:16:53 +08:00
回复了 NUT 创建的主题 Java 一个 jvm 怎么同时运行多个 jar 包,有什么方案吗?
导出 war 包用 tomcat 部署?
2018-08-25 17:50:24 +08:00
回复了 yrzx404 创建的主题 程序员 JDK 12 早期试用版发布了
@vjnjc 实际上 jdk8 也是支持 lambda 的, 或许你应该考虑换到 7
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1017 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 28ms · UTC 19:03 · PVG 03:03 · LAX 12:03 · JFK 15:03
Developed with CodeLauncher
♥ Do have faith in what you're doing.