V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  codingmiao  ›  全部回复第 2 页 / 共 3 页
回复总数  42
1  2  3  
357 天前
回复了 javak 创建的主题 Java Java hello world 确实就要占用 30M
实验 1 、直接原生 java -jar 跑
我 win10 占内存 36m ,同事的 mac(arm 架构)只有 19m ,win10 简单加几个参数能压到 20 多 m
java -Xmx5m -Xms1m -XX:MaxMetaspaceSize=1m -XX:+UseSerialGC -XX:CompressedClassSpaceSize=1m -Xss512k -Xint -jar nativedemo-1.0-SNAPSHOT.jar
然后拉一下内存使用情况:
Memory used total max usage GC
heap 22M 252M 3986M 0.57% gc.g1_young_generation.count 2
g1_eden_space 4M 62M -1 6.45% gc.g1_young_generation.time(ms) 14
g1_old_gen 12M 184M 3986M 0.32% gc.g1_concurrent_gc.count 0
g1_survivor_space 6M 6M -1 100.00% gc.g1_concurrent_gc.time(ms) 0
nonheap 28M 31M -1 90.20% gc.g1_old_generation.count 0
codeheap_'non-nmethods' 1M 2M 5M 26.09% gc.g1_old_generation.time(ms) 0
metaspace 19M 20M -1 98.64%
codeheap_'profiled_nmethods' 3M 3M 117M 3.27%
compressed_class_space 2M 2M 1024M 0.22%
codeheap_'non-profiled_nmethods' 838K 2496K 120028K 0.70%
mapped 0K 0K - 0.00%
direct 4M 4M - 100.00%
mapped - 'non-volatile memory' 0K 0K - 0.00%

我拿 arthas 拉的,arthas 注入进来后内存有膨胀了一些,你看占用大头都在 metaspace 、codeheap 以及 old_gen 上,这 hello world 又没 new 啥对象,old_gen 肯定是一些 static 的对象了,这就说明了这些内存是基本消耗,不会随着你的应用增长。

实验 2 、native 打包
<build>
<plugins>
<plugin>
<groupId>org.graalvm.buildtools</groupId>
<artifactId>native-maven-plugin</artifactId>
<version>${native.maven.plugin.version}</version>
<executions>
<execution>
<goals>
<goal>native-image</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>${mainClass}</mainClass>
</configuration>
</plugin>
</plugins>
</build>

这个打完在 x64 的 kali 下运行只占 8m ,在 arm 架构下还会更低。


在复杂场景下,实验 1 以及诸多大厂的生产环境都证明了 java 的稳定可靠,实验 2 则说明如果确实需要在物联网终端等内存极其苛刻的场景下使用,native 也能胜任。所以 Java 内存没救了?你要救什么?
开着 0 信任的时候,telnet localhost 3389 能通么,能的话试试这个方案,需要用的时候把 VPS 上的端口开一下,不需要关了应该没问题

"假设你家里有一台台式机(ssh 端口为 22),并且有一台公网 VPS 服务器(ip 111.222.33.44),你想在公司用笔记本登录家里的台式机,可按如下结构部署"

https://github.com/codingmiao/hppt?tab=readme-ov-file#%E7%A4%BA%E4%BE%8B2-%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F%E9%80%9A%E8%BF%87%E5%85%AC%E7%BD%91%E8%BD%AC%E5%8F%91%E8%AE%BF%E9%97%AE%E6%97%A0%E5%85%AC%E7%BD%91ip%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8
2024-06-19 11:13:55 +08:00
回复了 diagnostics 创建的主题 Java 有多少人还在用 Maven 构建项目?
用了 gradle 才知道 maven 的好。一次配置到处运行,gradle 是很灵活,但是别人用还得提心吊胆版本不兼容之类的问题,一个构建工具要花那么多心力去维护真的累。
要不是老板既要效率又要安全,谁会冒着风险干这事啊,玩不成任务立马滚蛋,走后门小概率滚蛋的区别。
2024-06-19 09:07:27 +08:00
回复了 Lnanvily 创建的主题 Java 老哥们好,关于 Java ORM 选型的问题,有问题请教
@dasbn 我觉得 Mybatis Plus 作者喷得对,允许传 sql 片段在纯后端用带来很大的灵活性,而且自己可控传什么,总不能自己给自己传个注入语句。使用者自己非要把这个特性暴露给前端还不在执行前做校验( Mybatis Plus 本身也提供了 sql 注入检测的工具类),把刀子递给黑客还怪刀尖没做安全设计这不是纯纯巨婴行为。
2024-06-18 08:45:52 +08:00
回复了 panlatent 创建的主题 分享创造 来推荐推荐自己的开源项目和经验吧
@adrianzhang 有点像 socat ,但机制上更像是 java 版的 frp ,复用一个端口来映射多个端口,而且留出来写代码实现自定义协议的口子,方便我这样写 java 的 crud boy (没有说 java 不好的意思,java 写 crud 确实很成熟^_^)根据业务和环境自己去通过 kafka 、文件、数据库之类的媒介来打通网络。
2024-06-17 09:39:59 +08:00
回复了 panlatent 创建的主题 分享创造 来推荐推荐自己的开源项目和经验吧
[hppt]( https://github.com/codingmiao/hppt) 是一个可以通过任意网络媒介打通两台机器间 TCP 网络连接的工具


比如说,A 、B 两台机器不互通,但是 A 、B 都可以访问机器 C 上的 kafka ,那就可以用这个工具,通过 kafka 搭一个桥梁,使得 A 能访问 B 上任意的 TCP 端口。

起因是用户那边有台服务器只对外开了 80/443 端口,而且不能配 websocket 等长连接,我又不想老是飞现场解决问题,就写了个把 http 服务反转 tcp 的工具来远程运维,后来想想飞现场攒航空里程挺香的所以没用几天就关了。但发现这玩意挺有意思,就扩充了一下,变成可以支持任意协议的版本。
@itning 是的,但是 frp 必须开一个单独 TCP 端口,有时候两台机器间没有空余且可达的 TCP 端口。
于是大半年后我发现这玩意除了主题里的在违法的边缘试探的玩法,还可以改造一下,让它能以任意媒介来打通两台机器间的网络。于是就有了 2.0 版的[自定义通信方式的玩法]( https://github.com/codingmiao/hppt?tab=readme-ov-file#%E7%A4%BA%E4%BE%8B3-%E7%BC%96%E5%86%99%E8%87%AA%E5%AE%9A%E4%B9%89%E5%8D%8F%E8%AE%AE),比如拿 kafka 中介打通两台不互通的机器:

![kafka]( https://raw.githubusercontent.com/codingmiao/hppt/main/_doc/img/kafkademo.jpg)
2024-05-21 09:56:30 +08:00
回复了 vsean 创建的主题 推广 码农专属导航 mn1024.com 正式上线,抽 6 份 50 元话费免费送
发现了几个好玩的工具站,挺好的,抽中我了就给楼下吧
2024-05-16 22:36:32 +08:00
回复了 xlzyxxn 创建的主题 程序员 Java 的 GEO 问题
哦对了,mysql 的 geometry 就是个玩具,wgs84 的坐标 x y 非要反着存,linestring 会莫名其妙的不走索引等问题,非常不推荐使用
2024-05-16 22:28:11 +08:00
回复了 xlzyxxn 创建的主题 程序员 Java 的 GEO 问题
几种我自己用的方案:
数据量很小时,直接 jts 在内存里遍历判断。
数据量大时,可以考虑在内存里搞一棵 Rtree https://www.khelekore.org/prtree/index.shtml
我自己撸了个变种,把 Rtree 从内存放倒图数据库 https://github.com/codingmiao/neo4j-rtree?tab=readme-ov-file#%E6%9C%80%E9%82%BB%E8%BF%91%E6%90%9C%E7%B4%A2
也可以给 pg 装个 postgis 插件来处理。
redis 用 geohash 来实现空间索引,优点是简单,但 geohash 的不连续性会导致某些坐标的查询性能骤降有点烦。
2024-05-06 09:49:29 +08:00
回复了 javak 创建的主题 Java 曾经我以为 Java21 的虚拟线程是银弹...
@marding 挺好的,原来 16 核 CPU 直接拉满,改虚拟线程后 3 、4 个核的样子就能撑住。关键是改动量很少,升级到 21 ,换了几个太老的 maven 依赖,把线程换成虚拟线程就完事了。
2024-02-07 09:34:43 +08:00
回复了 mercurylanded 创建的主题 Java 发现个好玩的事情
你们居然在认真讨论没有喷谭浩强。。
2024-01-24 13:01:05 +08:00
回复了 danielxuforever 创建的主题 PostgreSQL Postgres 在中国还能起来么?
@jhdxr 我们有个场景是需要时序和 gis 混合查询的,直接就 timscaledb+postgis 两个插件一装完事了,DB 就天然具备了空间查询和时序查询的能力,如果用其它方案,再起两个中间件,那还要考虑各个中间件数据一致性、跨库查询等问题。
2024-01-12 14:56:51 +08:00
回复了 luolin0826 创建的主题 分享发现 GPT4 企业版免费使用,自己动手,丰衣足食。
用了一会,现在已经被封了。。
2024-01-03 14:34:21 +08:00
回复了 iceAD 创建的主题 程序员 大家的工作中会有 Code Review 吗?
从刚进公司的转正报告开始,每次有和大领导汇报的机会我都要插一两页 PPT 说 CR 的事,方案、对比、收益都说过,每次领导都记下了下面就没了,哎。。之前我还在组内交叉 CR ,现在 C 个锤子,等出事了再说。
2023-12-29 14:25:30 +08:00
回复了 gitrebase 创建的主题 程序员 大家喜欢用 ORM 还是直接写 SQL
混着用,现在的 ORM 框架还配有代码生成器,传个表名进去一波帮你生成到前端 crud 界面了,还是很省心的。但是复杂业务用 ORM 就有点多余了。
@Ironpan 两个包依赖的第三方库不一样,比如 ss 里有 servlet 相关包,所以分开尽量精简一点,frp 之类的工具都是这么玩的。
2023-12-24 10:52:52 +08:00
回复了 oysterxie 创建的主题 地理信息系统 求助:矢量地图数字水印系统
很久以前我们这么玩过,在瓦片里用傅里叶变换插盲水印
@yazinnnn0 发送方和接收方产生的字节都丢进缓冲池里,定期发起一个 post 请求,post body 把发送方缓冲池里的字节带走,response body 把接收方池子里的字节带回来
1  2  3  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   971 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 33ms · UTC 19:29 · PVG 03:29 · LAX 12:29 · JFK 15:29
Developed with CodeLauncher
♥ Do have faith in what you're doing.