controller层,形参如果是集合,那么前面需要加@RequestParam("参数名称").
不要循环调微服务,尽量减少循环访问数据库.
Set集合可以有去重的功能
minio默认分块文件大小为5m
如果增删多的场景,尽量不要加索引
Redis的Zset能排序,有score字段
MySQL最好不要超过20列,否则最好分表
JAVA的io框架包括InputStream、OutputStream、Reader和Writer等用于处理输入输出操作。Buffered流是为了提高IO性能而设计的。它通过在内存中设置缓冲区,可以减少对硬盘或网络的频繁访问,从而提高读写效率。Buffered流可以一次读写多个字节,减少了系统调用的次数,提高了IO操作的效率。
linux的查进程 ps -ef 查文件 find 查看文件 cat/more 浏览文件 less 浏览日志 less 修改文本 vi
在vim删除某一行,用的是dd
表名,字段名必须使用${}接参
开启异步启动类加@EnableAsync,加线程池,在需要开启异步的方法上@Async("线程池名")
数据库不区分大小写
表字段是通过三方面确定的,产品原型内的列表新增,辅助字段(创建人,创建时间,更新人,更新时间),主键外键
Activiti7的底层默认集成了一个Security框架
数据库建表规则:基础字段(新增修改那些),其他字段(修改时间,修改人,创建时间,创建人),主外键
乐观锁 CAS 比较和替换 CompareAndSwap 在Unsafe类中, 三个方法,casobject,casint,caslong
四个参数:要操作的对象,内存中的偏移量,比较的值,替换的新值
如果传入的比较值和内存中原有的值一样,把值替换成新值,然后返回true,否则为false,通过cas的结果决定线程是否有权限去获取锁,拿不到就只能通过自旋去做,但这样CPU消耗比较大
三大范式是指导设计数据库的原则
第一范式:表中的每一列不能再进行拆分,也就是每一列都应该是原子的
第二范式:一张表只做一件事,不要将多个层次的数据列保存到一张表中
第三范式:数据不能存在传递关系,也就是说可以通过其它字段推出来的字段没必要再存储
在现有的程序设计中认为第三范式是可以不遵守的,也就是通过添加冗余字段,来减少多表联查或计算,我们称为反三范式
chrome清缓存,f12,右键刷新,第三个清空缓存并硬性重新加载
idea可以通过优化提高速度
new一个stopwatch对象来计数,.start()开始,.stop()结束
1. StopWatch 一定要有start()方法,否则会报错
2. StopWatch 只有start()方法而没有stop()方法的时候,统计的时间为0
Jmeter测试工具,曾用来模拟高并发场景,压测可能也需要