14104chk 最近的时间轴更新
14104chk

14104chk

V2EX 第 582111 号会员,加入于 2022-05-19 11:22:55 +08:00
今日活跃度排名 9766
14104chk 最近回复了
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 向下兼容就万事大吉
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2459 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 12ms · UTC 14:08 · PVG 22:08 · LAX 06:08 · JFK 09:08
Developed with CodeLauncher
♥ Do have faith in what you're doing.