V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Aresxue  ›  全部回复第 4 页 / 共 22 页
回复总数  434
1  2  3  4  5  6  7  8  9  10 ... 22  
2023-11-13 11:17:24 +08:00
回复了 61162833 创建的主题 Java Java 中一个保存了 1 万个整数的 ArrayList 占多少内存?
所以有了 fastutil 这个库。。话说 java 自己的 Valhalla 项目正在做泛型特化以后你就可以用 List<int>了。
2023-11-13 11:12:41 +08:00
回复了 gomorebug 创建的主题 Java 关于 mybatis 的疑惑
配置一堆层是指 mapper 、dao?
纯用 mybatis 的人不多了,现在基本上都是用 mybatis plus ,单表增删改查用 baseMapper 复杂的才会用 xml ,这玩意你就理解成是个专门存放 sql 的地方,古早时期 sql 都是混在 java 代码里面的,后来发现维护太麻烦了(比较重要的原因是当时没有多行字符串这个语法糖)就想把 sql 和代码区分开,mybatis 选取了当时流行的 xml 格式使用 ognl 作为动态能力的补充,确实解决了代码和 sql 分离这件事情,只是到了现在 xml 人人喊打,ognl 表达式也略显笨重所以质疑声此起彼伏,但叫归叫其它能取代它且稳定好用的框架暂时还没出现。
歪楼:mybatis 不是 orm ,java 的 orm 月经帖太多了,目前的几款 orm 如 mybatis plus 、jpa 、hibernate 都有各自的问题,我对此比较悲观除非有 C#那种强大的语法糖,一款非常好用且完备的 orm 在 java 里可能很难诞生了
2023-11-01 11:33:32 +08:00
回复了 BIGBIG 创建的主题 Java 如何优雅的跳出多层循环?
所以说 goto 部分场景下还是有价值的。
针对这个场景用流也是个不错的方案。
2023-11-01 11:30:49 +08:00
回复了 zhengchengdong 创建的主题 Java MQ 就 MQ 好了,保证顺序那什么的是你该干的事儿吗?啊?
无非就是顺序消息存在的必要性,答案是有必要。只是说不能一股脑地把问题都丢给中间件以为就万事大吉了,10TPS 有 10TPS 的处理方式,1kTPS 有 1kTPS 的,10wTPS 也有 10wTPS 的,就事论事选择最适合业务的。
2023-11-01 11:24:57 +08:00
回复了 cMoon 创建的主题 Java mybatisplus @TableName 注解中 excludeProperty 赋值问题
瞄了眼源码,除非改源码实现不了。

第一 MP 功能确实不够强大,其实对于 excludeProperty 本来应该是提供 @JsonIgnore 、 @JsonIgnoreParentProperties 这样单独的注解去实现的,同时还要留给外界一些扩展点类似 jackson 的 BeanSerializerModifier 去做自定义。
第二虽然知道很多小项目怎么写都可以顺手就行,但是 DO 一把梭随便继承这种坏习惯能避免还是尽量避免,至于为啥不用继承这几乎是一种共识了,耦合度 继承 > 接口 > 组合。
都会进入内核态,只是 synchronized 的重量级锁底层是插入了 monitorenter 和 monitorexit 两个指令,以最流行的 JVM HotSpot 为例其底层使用了 mutex ( linux 下)这个非常重的锁,而对于 AQS 使用的 LockSupport 的 park 和 unpark ,其底层会使用操作系统提供的原语,如 pthread_cond_wait (对于 POSIX 线程库)或 Windows 上的 WaitForSingleObject 等来实现线程的挂起,再使用 pthread_cond_signal (对于 POSIX 线程库)或 Windows 上的 SetEvent 等来实现线程的唤醒,这些操作系统原语通常是高效的,允许线程在等待期间几乎不占用 CPU 资源,从而有效地实现了非阻塞的线程等待和唤醒。

不过 1.8 以后性能大差不差了(很多东西也互相借鉴其实逻辑上已经高度相似),只是 AQS 系列的锁更灵活 api 更好用,如果只有上锁解锁随便用哪个。
如果参数是已经计算好的变量判断不判断其实都还好,如果占位符的参数还涉及到比较吃 cpu 的计算最好还是判断下能节省点 cpu 。
mq or 定时任务
2023-10-08 11:09:03 +08:00
回复了 xloger 创建的主题 Java 请教个 Java LinkedList 用法的问题
@sl450282169 正解
2023-09-25 10:11:27 +08:00
回复了 zxCoder 创建的主题 Java 这样的插件化系统设计可以实现吗
看看 SOFA Boot ,本质上就是自定义 classloader 这条路。
2023-09-22 11:46:49 +08:00
回复了 zjcKD 创建的主题 Java Apache ShardingSphere 使用调研
ShardingSphere-JDBC 是客户端分表,一般用分库分表基本上用它的比较多(对程序员更可见也不依赖中间件),ShardingSphere-Proxy 是代理层中间件和 dbProxy 比较类似,允许定义全局表、分片表、序列这些,但如 3 楼所说这些大概率都是些中间产物,未来真正的分布式数据库会淘汰掉它们,当然从学习和实现业务的角度来说学一学倒也无妨。
ps: 很多大数据量的表的产生来自于最早的设计问题,一般适合分库分表的都是些流水表
2023-09-20 10:31:54 +08:00
回复了 tlerbao 创建的主题 程序员 现在网上卖的 Github Copilot 授权程序是什么原理?
有没有比较便宜的推荐,自己的快到期了。
2023-09-20 10:11:29 +08:00
回复了 forschers 创建的主题 Java JDK21 9 月 19 日 来咯!
@mmdsun 真这么简单早升级完了,光 JPMS 和反射的限制就够喝一壶的,更别提原有的 java agent 可能都要失效了,我手上的项目 100 多个应用,2000 多个 pod ,要真到 21 没个两年下不来。
2023-09-19 10:08:49 +08:00
回复了 forschers 创建的主题 Java JDK21 9 月 19 日 来咯!
生产还是 java8 ,太难升了,比如你依赖的单点登录的 client 是 1.8 吧不支持 11 你怎么推动别人改造
可以看看这篇 为什么很多公司选择不升级 JDK 版本,仍然使用 JDK8 ? - 君莫惘的回答 - 知乎
https://www.zhihu.com/question/325293339/answer/1150270157
spread 出来的都是正值,但是节点的 hash 还有其它的几个状态:
static final int MOVED = -1; // 代表当前 hash 位置的数据正在扩容!
static final int TREEBIN = -2; // 代表当前 hash 位置下挂载的是一个红黑树
static final int RESERVED = -3; // 预留当前索引位置
2023-09-11 15:09:00 +08:00
回复了 zhiyu1998 创建的主题 Java 请教一个面试问题:关于 Spring 底层问题
面试是没有固定公式的,但对于某些固定的问题确实存在着套路,最基本的 3w ( what-how-why )原则就很好用。
比如 aop 这个命题, 什么是 aop?怎样使用 aop ?为什么需要 aop ?这些内容相对浮于表面但如果面试并不是什么大公司,面试官的水平也没有多高可能也就够用了。再向下挖掘,动态代理/静态代理 -> jdk 代理/cglib 代理 -> 字节码改写 asm/javasist -> agent -> jvmti -> jvm 源码等等,知识是有层次的,对应面试这件事情来说先选定目标公司,然后比面试公司的平均面试深度再深一个 level 一般就够用了,因为很多东西一下子是学不完的,你可以参考常见的面试题,对其中提到的知识点做些分层再做出合适的评估。
2023-08-28 10:50:46 +08:00
回复了 lengyingmofeng 创建的主题 Java MybatisPlus 的 IService 和 Mapper 有什么区别
如果没有 IService 这个设计 mp 的风评还能更好点。
try catch 确实会会增加一些开销,主要是在 java.lang.Throwable#fillInStackTrace()中会去爬取堆栈,但参数校验这个场景下不用纠结—抛异常是综合起来性价比最高的方式,jdk 其实有 java.lang.Throwable#Throwable(java.lang.String, java.lang.Throwable, boolean, boolean)这样一个构造器去构造不需要爬栈的异常(部分场景下只依赖异常类型而不关心堆栈),但不知道为什么并没有开放出来,后续如果能开放出来搭配这个场景应该是最优解。
2023-07-26 14:08:49 +08:00
回复了 Niner 创建的主题 Java 求教有关 jvm 方法区的问题
永久代可以理解为 HotSpot 虚拟机对虚拟机规范中方法区的一种实现方式,在物理上两者是相等的

常量 方法区

静态变量 方法区

局部变量 栈

成员变量 堆

常量且字面量 常量池

常量且引用对象 堆

静态变量且引用对象 方法区

静态变量且字面量 常量池

局部变量且引用对象 堆

局部变量且基本类型字面量 栈

局部变量且"" 常量池

成员变量且引用对象 堆

成员变量且基本类型字面量 堆

成员变量且"" 常量池

1.7 符号引用(Symbols)转移到了 native heap ;字面量(interned strings)转移到了 java heap ;类的静态变量(class statics)转移到了 java heap ,运行时常量池也到了 java heap(1.8 又到了元空间)

1.8 里面只有元空间没有持久代了
2023-07-26 10:56:54 +08:00
回复了 jiobanma 创建的主题 Java 分布式系统生成全局唯一 ID 的方式请教
1.改下算法把 workId 放到 id 尾部(不依赖外部服务和中间件);
2.使用 redis 自增序列(大多数项目已经引入 redis ,只有代码改造成本);
3.号段 使用序列表按照 size 取号段到内存(更稳健的模式但改造成本大,且只有趋势递增失去了单调递增性);
4.引入新服务(对原有服务耦合小,新增永远比修改更安全,但维护成本拉满);
5.使用数据库代理层中间件(如果已经有了算是性价比最高的方案,不然就没有操作意义);

顺便一提如果集群大了时钟同步是个麻烦的事情,基本上总是会有时钟回拨,对雪花算法有一定的影响,但本身也有一定措施缓解这个情况,如使用缓存的 id 等,还是要早做考虑。
1  2  3  4  5  6  7  8  9  10 ... 22  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2662 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 31ms · UTC 11:44 · PVG 19:44 · LAX 03:44 · JFK 06:44
Developed with CodeLauncher
♥ Do have faith in what you're doing.