V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Aresxue  ›  全部回复第 9 页 / 共 22 页
回复总数  436
1 ... 5  6  7  8  9  10  11  12  13  14 ... 22  
2020-05-15 11:52:40 +08:00
回复了 xiaobaobao 创建的主题 Java Synchronized 的轻量锁
轻量锁的竞争是 JVM 利用 CAS 操作,尝试将对象的 Mark Word 更新为指向 Lock Record 的指针, 如果这时候其他线程已经持有锁, 那么这里就会失败
2020-05-13 15:25:08 +08:00
回复了 tctc4869 创建的主题 Java 各位的 web 项目是怎样规划的,都采取了哪些策略?
mybatis 的注解式 sql 是最鸡肋的一个,其它注解是比较先进的,但它和 sql 放一起可读性特别差, 如果有复杂 sql 不建议这么做。
至于使用 set 替换 autowired 其实是在搞复古,但如果想这么搞建议使用 Javasist 或者 asm 做字节码生成,看到大量重复无明显含义的代码很让人厌烦。
数据库那里应该是单库,那么直接用自增序列应该是性能最好且使用起来最方便的一种,标识 id 如果没有含义存在的价值就不大
多数据源生产实践中是大坑,能上分布式就上分布式,然后单应用就只连接一个库,想要做其它库操作直接调用其它模块
2020-05-13 09:30:00 +08:00
回复了 1oNflow 创建的主题 Java 注解相比 xml 配置有什么优缺点,新项目中可以替代 xml 吗?
不限于 java 大多数语言都在去 xml 化,虽然它的描述能力更强,但冗余信息比较多不符合人的阅读习惯。具体到 Java 项目中 xml 已经越来越少了,Spring boot 中默认已经没有 xml 了,新的框架们尽管支持,但也都提供相应的注解使用方式。
注解从某种程度上来说有侵入性,且对于第三方的库除非使用字节码技术修改不然没办法直接使用注解;
xml 呢也有它的好处,集中式管理, 对业务代码无侵入, 比如 dubbo 的 xml 现在你想修改服务版本直接在一个文件中修改就好, 如果采用注解那么就要全局替换注解影响范围要大一些,此外还有调试的时候你可以在 xml 中选择只加载你需要测试的服务以及其依赖的服务,把其他的临时注释掉。

但新项目仍然建议使用注解方式,因为所谓的耦合性在实际的项目中并没有什么实际的影响,绝大多数情况下是可以忽略的, 同时可以更好的收敛我们的代码,在不滥用的情况下更清爽也高效
2020-05-08 10:11:52 +08:00
回复了 qmzhixu 创建的主题 MySQL 关于覆盖索引的问题
是否使用覆盖索引和 age 上面有没有索引有直接关系, 没有索引的话自然不会走覆盖索引, 而且你这个 age 还很有可能区分度 cardinality 不够或者数据量很小,CBO 发现全表扫描的 cost 反而比较小,那就直接扫全表喽
2020-05-08 10:06:40 +08:00
回复了 xhf1024 创建的主题 Java 大家来探讨一下 Java 方法执行问题!
最简单的就是锁喽, 比较适合单机情况。单机下还可以使用 LinkedBlockingQueue 、线程池(其实也是 LinkedBlockingQueue)等 juc 下的并发容器处理
分布式下可以考虑用消息队列, 前提是本身系统已经引入了一种消息队列, 不然额外引入一种消息队列的成本还有待商榷
想要轻量级就用个分布式锁,实现方式最好也与当前中间件结合,有 zk 用 zk,有 redis 用 redis, 啥都没有就用数据库或者文件去做
2020-05-02 10:08:33 +08:00
回复了 zxc1234 创建的主题 程序员 spring 事务是 jdk 动态代理还是 cglib 字节码织入?
spring5 默认 jdk, spring boot2 默认 cglib
2020-04-30 10:50:42 +08:00
回复了 liubx 创建的主题 MySQL 关于 mysql DATE_FORMAT()函数的疑问
不加字符串会认为是数字, 2019-01 会被当做 2019 - 1 = 2018, 所以会不等, 加上引号才是字符串, 对于你程序来说你是 String 类型所以转成 sql 就是带引号的字符串
@yuhaocoding 贵州电信, 不过这个东西是全国的, 我的是计费那块的
@drich 这个还没了解, 现在就想多面试几家看看
@ivars 宇宙条有点虚啊,我到目前基本都是做业务的。暂时在准备几家的面试, 麻烦留个邮箱我后续看情况去尝试一发
@taoche 不是有仇,是上面说了已经投递了,流程已经开始了
2020-04-29 12:00:05 +08:00
回复了 watzds 创建的主题 程序员 库存扣减,余额扣减,应该使用乐观锁的方式吗?
乐观锁的本质上是消除锁定, 适用于高并发下 读多(读是无锁)写少 的情况, 用乐观锁就是写也不加锁,然后通过结果去重试, 如果写的请求很多极端点全是写的请求, 那么还不如悲观锁的效率高
2020-04-29 11:31:29 +08:00
回复了 yeqizhang 创建的主题 程序员 最终一致性到底是什么??
@EmdeBoas 我只是大概知道题主想问什么,所以说的比较简单。ACID 是事务的概念,但要区分的话主要是数据库事务以及业务层的事务,数据库事务的 C 是非常清晰的,业务层的事务建立在数据库事务之上,它的 C 就像你说的模糊,但一般情况下业务层事务很少谈到 ACID,ACID 默认情况下其实指的是数据库事务。CAP 的 C 指的就是多个副本数据的一致性, 你说的强一致性包括答主所说的最终一致性只是对数据同步延迟的不同要求, 强一致性适用于实时交易系统,最终一致性多用于离线计算系统, 而像 zk 这种半写集群的一致性要求强度在两者之间。
2020-04-28 12:34:03 +08:00
回复了 yeqizhang 创建的主题 程序员 最终一致性到底是什么??
不要弄混 ACID 中的 C 和 CAP 的 C,前者的重心在于系统整体的一致性, 后者指的是多个副本之间的一致性
2020-04-26 17:46:40 +08:00
回复了 pmispig 创建的主题 Java 请问 pinpoint 怎么设置支持 Spring Scheduler
###########################################################
# spring @Async
###########################################################
profiler.spring.async.enable=true
# Add custom AsyncTaskExecutor classes. Comma separated list of fully qualified class names. Wildcard not supported.
# Default values
# org.springframework.scheduling.concurrent.ConcurrentTaskExecutor
# org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler
# org.springframework.core.task.SimpleAsyncTaskExecutor
# org.springframework.scheduling.quartz.SimpleThreadPoolTaskExecutor
# org.springframework.core.task.support.TaskExecutorAdapter
# org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor
# org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler
# org.springframework.jca.work.WorkManagerTaskExecutor
# org.springframework.scheduling.commonj.WorkManagerTaskExecutor
profiler.spring.async.executor.class.names=
想要仿照 java 原生 api 你就得把对象映射成共享内存,这样就可以进程通信了,但这个仅限于同一台物理机。要想和机器也没关系,那就只能用中间件了,redis 、zk 好做一些,mq 的话在不考虑事务的情况下也可以使用
2020-04-19 22:51:09 +08:00
回复了 jugelizi 创建的主题 Java 几万条数据批量写入消息队列哪种支持好
才几万条。。。别引入中间件了,直接用个线程池得了
2020-04-18 13:50:29 +08:00
回复了 qloog 创建的主题 MySQL 大家 mysql 里存时间字段使用整形还是用时间类型?
有人工查看时间进行数据捞取的操作就 timestamp 和 datetime,时间要求范围不大的话就 timestamp,注意时间一定要给默认值,不然加索引的索引可能会失效,没有人工查看操作直接 int 性能最佳计算也方便
2020-04-18 13:47:31 +08:00
回复了 zealinux 创建的主题 MySQL MySQL 中 varchar(100)与 varchar(255)区别是什么?
真实占用没区别,但是在索引创建方面有区别,也会影响总的行长,进而影响行的组织方式,可能会频繁引起页分裂啥的,所以能确定小于 64 就 varchar(64), 后续可能会有改动又不知道多大就直接 varchar(255),不然从小改到大锁表时间,还有上面说到的页分裂都有可能引发问题
@daozhihun 这只是个近似说法,因为正常情况下使用不到上限而已。而上面的完美散列也只是利用黄金分割率来达到一种勉强的不冲突而已(也没有真实达到),这个方法的好处只在于计算 hash 的方法极其简单所以性能也非常的好
1 ... 5  6  7  8  9  10  11  12  13  14 ... 22  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5885 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 51ms · UTC 06:20 · PVG 14:20 · LAX 22:20 · JFK 01:20
Developed with CodeLauncher
♥ Do have faith in what you're doing.