V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  codingmiao  ›  全部回复第 1 页 / 共 2 页
回复总数  31
1  2  
啊,这么天选之人的么,直接注册完就开出 arm 的机器了,选的哪个区
15 天前
回复了 gotheway 创建的主题 Java 求一个技术架构
@mikasa1024 哈哈,我也不是地理测绘专业的,我的第一任领导是搞 GIS 的,丢了本 arcgis js 的教程给我啃的,然后发现 arcgis 服务端一些不能满足需求的地方找开源方案去实现。所以按我的经验来看,你可以找一本专业的 gis 方面的前端框架的书来看,具体什么框架根据你们公司的技术栈来确定,现在主流的有 arcgis-js 、mapbox-gl-js 、openlayer 、leaflet 等等,通过学习框架了解下 gis 大概能做什么事情,然后去看看做这些事涉及到的技术栈去深入学习吧。
17 天前
回复了 gotheway 创建的主题 Java 求一个技术架构
@gotheway GIS 项目而且是 java 体系的话,我推荐 postgis 做为数据库、jts 做为后端空间计算框架,其它就是传统的 web 框架了,springboot 全家桶什么的,以及基于 springboot 体系做的 ruoyi 等。

另外数据量大的话,极度不推荐去用 geoserver ,虽然是 java 体系而且功能很全,但一板一眼的去按 OGC 标准来做实现,性能极差。基于 jt 或者 geotools 等去开发需要的功能,轻量化、定制化的去做比用 geoserver 舒服很多。我搞了一些基于 jts 的小工具出来,但比较懒没去好好写文档 https://github.com/codingmiao/giscat
商人不就这样么,gpt 面向用户的时候,月付制更赚所以 GPT4 包月,给第三方 API 调用的时候他敢给月付么,又变成按量计费了。

说起这个,想起来国服魔兽世界的点卡了,年轻时有时间整天整夜的玩盼着出月卡,年纪大了没时间玩了,嘿嘿月卡来了点卡取消,当时网易也不当人,大大方方承认点卡运维成本高,再卖一波情怀,大家也能谅解,偏偏要搞什么张栋出来嘲讽玩家,搞一堆水军洗地,是真的蠢。
其实 java 或者其它编译后的语言也并不安全,现在所谓的 jar 包保密方案,也只是给文件加个密,然后 Java Agent 启动时解密,但是随便丢个 arthas 之类的工具上去,从内存中拿字节码反编译出来根本防不住。

所以哪有什么绝对安全的方案,只要你的软件价值小于别人攻破你的成本就行了
105 天前
回复了 karottc 创建的主题 Java 分享一个 Springboot + GraalVM 对反射的处理方式
我是 java -agentlib:native-image-agent=config-output-dir=META-INF/native-image -jar xxx.jar 先跑起 jar 包来,然后跑测试用例,测完后 reflect-config.json 这些也自动生成出来了,优点是不用去动原来的代码,缺点是测试用例覆盖不全的话可能会出问题。
所以现在把数据库丢容器里是否合适有定论了么,会损失百分之几的性能
博客园的博客质量很高,但是在博客园码博客真的难受啊,别的地方都可以直接屏幕截图然后 ctrl+v 贴进去,博客园还要先上传图片再引入图片,文本编辑器也感觉是十多年前的风格,有没有插件可以优化一些写博的体验啊?
118 天前
回复了 HOMO114514 创建的主题 程序员 分享一些 500 强信创数据库的有趣故事吧
@HOMO114514 这顿操作没看明白,为了遵守 GPL 开源,但是所谓自主可控后为什么就不需要遵守 GPL 了?那别人用的过程中发现他基于 GPL 的代码痕迹,那他不完蛋了。。
121 天前
回复了 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
155 天前
回复了 diagnostics 创建的主题 Java 有多少人还在用 Maven 构建项目?
用了 gradle 才知道 maven 的好。一次配置到处运行,gradle 是很灵活,但是别人用还得提心吊胆版本不兼容之类的问题,一个构建工具要花那么多心力去维护真的累。
要不是老板既要效率又要安全,谁会冒着风险干这事啊,玩不成任务立马滚蛋,走后门小概率滚蛋的区别。
@dasbn 我觉得 Mybatis Plus 作者喷得对,允许传 sql 片段在纯后端用带来很大的灵活性,而且自己可控传什么,总不能自己给自己传个注入语句。使用者自己非要把这个特性暴露给前端还不在执行前做校验( Mybatis Plus 本身也提供了 sql 注入检测的工具类),把刀子递给黑客还怪刀尖没做安全设计这不是纯纯巨婴行为。
156 天前
回复了 panlatent 创建的主题 分享创造 来推荐推荐自己的开源项目和经验吧
@adrianzhang 有点像 socat ,但机制上更像是 java 版的 frp ,复用一个端口来映射多个端口,而且留出来写代码实现自定义协议的口子,方便我这样写 java 的 crud boy (没有说 java 不好的意思,java 写 crud 确实很成熟^_^)根据业务和环境自己去通过 kafka 、文件、数据库之类的媒介来打通网络。
157 天前
回复了 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)
发现了几个好玩的工具站,挺好的,抽中我了就给楼下吧
189 天前
回复了 xlzyxxn 创建的主题 程序员 Java 的 GEO 问题
哦对了,mysql 的 geometry 就是个玩具,wgs84 的坐标 x y 非要反着存,linestring 会莫名其妙的不走索引等问题,非常不推荐使用
189 天前
回复了 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 的不连续性会导致某些坐标的查询性能骤降有点烦。
1  2  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1321 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 33ms · UTC 17:50 · PVG 01:50 · LAX 09:50 · JFK 12:50
Developed with CodeLauncher
♥ Do have faith in what you're doing.