- 博客(77)
- 收藏
- 关注
原创 volatile
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jQEFRHmC-1678979497342)(E:\学习\图片\Thu, 14 Jul 2022 214022.png)]1)它确保指令重排序时不会把其后面的指令排到内存屏障之前的位置,也不会把前面的指令排到内存屏障的后面;即在执行到内存屏障这句指令时,在它前面的操作已经全部完成;只能保证读的原子性,不能保证写的原子性 多线程下会有读后读,造成写的错误。3)如果是写操作,它会导致其他CPU中对应的缓存行无效。
2023-03-16 23:12:01
320
原创 进程,线程,协程
**线程:**是操作系统能够运行的调度的最小单位。线程之间共享资源,6它被包含在进程之中,是进程中的实际运作单位协程,是一种比线程更加轻量级的存在,协程不是被操作系统内核所管理,而完全是由程序所控制(也就是在用户态执行)。这样带来的好处就是性能得到了很大的提升,不会像线程切换那样消耗资源协程:在单线程里实现多任务的调度,并在单线程里维持多个任务间的切换。(并发艺术)进程: 是系统进行资源费配基本单位,是操作系统结构的基础。下图是 Java 内存区域,通过下图我们从 JVM 的角度来说一下线程和进程之间的关系
2023-03-15 22:50:23
499
原创 Java集合类
第二句:可以用ArrayList中的所有的方法,因为ArrayList是实现list接口,所以调用方法比第一种要多,还可以使用list里没有的接口。在pom.xml文件中加入hutool的配置。第二种方法比第一种添加的方法性能更高。第一句:只能用list接口中的方法。运行结果:(并没有完全删除干净)来判断集合是否为null。不能一边遍历,一边删除。
2023-03-13 20:55:32
512
原创 JVM相关知识
当一个对象被实例化后,首先先尝试存在eden区,若Eden区存不下,将触发一次minor GC,若空间不够,则看存活区的空间是否够,要是够的话,将Eden区的存活时间长的对象放到存活区,将新创建的对象分配到Eden区,要是不够的话,看老年代的空间是否够,要是够的话,将存活区的存活时间比较长的对象存到老年代,然后将Eden区的存活时间比较长的存到存活区,将新创建的分配搭到Eden区。如果 不想浪费50%的空间,就需要有额外的空间进行分配担保,以应对被使用的内存中所有对象都100%存 活的极端情况。
2023-03-10 23:39:09
669
原创 java开发手册之工程结构
说明:操作系统默认 240 秒后,才会关闭处于 time_wait 状态的连接,在高并发访问下,服务器端会因为处于 time_wait的连接数太多,可能无法建立新的连接,所以需要在服务器上调小此等待值。如果有改变,必须明确评估和验证,建议进行 dependency:resolve 前后信息比对,如果仲裁结果完全不一致,那么通过 dependency:tree 命令,找出差异点,进行排除 jar 包。说明:OOM 的发生是有概率的,甚至有规律地相隔数月才出现一例,出现时的现场信息对查错 非常有价值。
2023-03-09 23:07:44
311
原创 Java开发手册之MySQL数据库
说明:以学生和成绩的关系为例,学生表中的 student_id是主键,那么成绩表中的 student_id则为外键。如果更新学生表中的 student_id,同时触发成绩表中的 student_id 更新,即为级联更新。说明:float 和 double 在存储的时候,存在精度损失的问题,很可能在值的比较时,得到不 正确的结果。如果存储的数据范围超过decimal 的范围,建议将。说明:索引的长度与区分度是一对矛盾体,一般对字符串类型数据,长度为 20 的索引,区分度会高达 90%以上,可以使用。
2023-03-08 22:31:48
637
原创 java开发手册之安全规约
对于存在CSRF 漏洞的应用/网站,攻击者可以事先构造好 URL,只要受害者用户一访问,后台便在用户不知情情况下对数据库中用户参数进行相应修改。说明:Java代码用正则来验证客户端的输入,有些正则写法验证普通用户输入没有问题,但是如果攻击人员使用的是特殊构造的字符串来验证,有可能导致死循环的结果。说明:防止没有做水平权限校验就可随意访问、修改、删除别人的数据,比如查看他人的私信内容、修改他人的订单。说明:查看个人手机号码会显示成:158****9119,隐藏中间 4 位,防止隐私泄露。
2023-03-07 22:08:28
377
原创 java开发手册之单元测试
说明:单元测试在线上运行时,感觉像空气(AIR)一样并不存在,但在测试质量的保障上,却是非常关键的。好的单元测试宏观上来说,具有。说明:只有测试粒度小才能在出错时尽快定位到出错位置。单测不负责检查跨类或者跨系统的交互逻辑,那是集成测试的领域。说明:新增代码及时补充单元测试,如果新增代码影响了原有单元测试,请及时修正。说明:源码构建时会跳过此目录,而单元测试框架默认是扫描此目录。
2023-03-06 21:02:01
407
原创 数据库设计规范
id等数字类型的字段,不能只是bigint,应该是bigint unsigned。 (没有默认值,查出来为null;有默认值,查出来的是空字符串)varchar默认长度为32,不要用255。尽可能的去遵循三大范式(数据库的三大范式)所有字段都必须是非null,必须有默认值。所有的表都必须有几个公共字段。
2023-03-01 18:53:55
167
原创 数据库三大范式
要求任何字段不能由其他字段派生出来,它要求字段没有冗余,即不存在传递依赖。第三范式需要确保数据库表中的每一列数据都和主键直接相关,而不能间接相关。确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关。范式是数据库设计时遵循的一种规范,不同的规范要求遵循不同的范式。,要求记录有唯一标识,即实体的唯一性,即不存在部分依赖。要求数据库的每一列都是不可以再分的。,要求属性具有原子性,不可再分解。第二范式要求每张表只描述一件事。第二范式的前提:满足第一范式。前提:满足第一范式和第二范式。
2023-03-01 18:47:28
99
原创 Mybatis-Plus学习
MyBatis-Plus 是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。新建项目pom.xml添加配置application.yml配置建一个entity的软件包,一个user类建一个mapper包,下面建立一个UserMappe接口在test下建立一个测试类UserTest
2022-12-04 15:31:31
447
1
原创 String StringBuffer StringBuilder
String和StringBuffer,StringBuilder的区别有哪些?所有类名包含Buffer的类的内部实现原理是什么?有什么优势?
2022-10-17 21:46:34
277
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人