V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  14104chk  ›  全部回复第 1 页 / 共 1 页
回复总数  12
2023-03-28 23:14:22 +08:00
回复了 godleon 创建的主题 程序员 请教一个数据处理的需求,寻一个高效率的解决方法?
可以用一张统计表,修改的时候,把当前日期的统计数据更新
@shakeyo 简单点就是加锁 lock(/1)->lock(/2)->unlock(/2)->unlock(/1)
有一个优化点,不过要看你的业务允不允许。
删除、重命名、移动,这些都是改的文件的组织结构,不是文件本身。文件本身只有修改。
可以把所有文件都存在一个目录下,然后把目录结构存数据库,表结构类似(id,pid,name,deleted,file_path)。file_path 是真实的物理路径。id 、file_path 永远不变。
其它的 删除、重命名、移动 只需要在数据库里面改 pid,name,deleted
只有修改文件本身的时候,才需要加锁
修改 /1/2 的时候,允不允许删除 /1 ,这需要业务去确定,但不管允不允许,都不可以不用等待修改 /1/2 的锁
不过修改 /1/2 完的时候,用户可能发现目录已经改变或删除了,这需要在业务上给用户反馈
@cloudzhou 这主要是任务的调度,可以把任务做成多棵树。树 1:a ,树 2:c ->(b 、d)。 开始运行,或者每一个任务运行完之后,把所有树里面没有子节点,或者子节点全部运行结束的任务扔到线程池
@GraySoul readis 缓存数据就是最好的场景。

A 、a1 查缓存没有数据,a2 去查数据库,a3 数据缓存到 redis ,a4 返回数据
B 、b1 数据库更新,b2 删掉缓存。

逻辑简单,想写好不轻松。
这里面最容易掉进去的陷阱是执行顺序这样 a1,a2,b1,b2,a3,a4
写完之后,你可以写一个验证程序,对 a1,a2,a3,a4,b1,b2 做排列组合,看最终结果和预期的对不对
想优化,多线程会用得很多
中间件、数据库的锁只能管自身的事情,但如果中间件、数据库的操作要合并在一个事务里,就需要自己去做。JAVA 的锁可以保证单个进程里面的事务隔离性
2023-01-02 14:08:47 +08:00
回复了 sunmoon1983 创建的主题 MySQL 求各位大佬给些报表优化的思路?
@sunmoon1983 可以只用一个 select * from table ,然后用代码生成粒度比较细的统计数据存在缓存或者内存表里面,例如分成户籍、性别、年份。如果只查 2010 年的数据,没有户籍性别限制,就把 2010 年的各种户籍或者性别的数据加起来
2022-11-17 16:36:01 +08:00
回复了 seagull7558 创建的主题 程序员 没经验怎么做管理?
做为 Leader 要有相应的权力和责任。
2022-11-17 16:34:37 +08:00
回复了 seagull7558 创建的主题 程序员 没经验怎么做管理?
你只要定一个目标,带领团队把事情做好
2022-11-16 14:22:44 +08:00
回复了 diandian666 创建的主题 程序员 十年程序员难倒了一个算法上面,真的老了
2022-10-29 12:58:26 +08:00
回复了 Joker123456789 创建的主题 Java 为什么就是没有人愿意升级到最新的 JDK?
我曾经遇到一个问题,刚出 JDK7 的时候,用 SQLServer 的官方驱动取出的时间就是和数据库的时间差整整 1 天,查了好久才确定是驱动和 JDK 不兼容的问题
这个问题还好,测试的时候就能发现,但是我想说的是,不要以为 JDK 向下兼容就万事大吉
2022-10-01 09:08:49 +08:00
回复了 0xcaffebabe 创建的主题 Java 请问这段 Java 代码能保证线程安全吗
lockMap.remove(lockKey); 之后,锁就没有了,这时候当前线程 a 更改的变量可能还没同步到主内存,
同时又有另一个线程 b 获取锁,b 从主内存读取数据,因为这时候线程 a 的数据没有同步回主内存,所以 b 读到的还是旧数据
如果要使这段代码是线程安全的,就要给涉及的变量加上 volatile ,让变量的更新直接在主内存进行
2022-08-03 20:04:33 +08:00
回复了 Mrzhs 创建的主题 Java 有什么较为通用的办法解决两个实体类传递相同参数?
可以抽出一个类 A ,里面含有所有的公共属性(多一两个也无所谓),然后组合到 in 和 orderDetl 里面。赋值的时候,直接 in.setA(orderDetl.getA())
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5000 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 41ms · UTC 09:37 · PVG 17:37 · LAX 01:37 · JFK 04:37
Developed with CodeLauncher
♥ Do have faith in what you're doing.