- 博客(12)
- 收藏
- 关注
原创 设计模式(1)
使用设计模式的目的:为了让代码更 简洁 \ 易理解 \ 可靠 \ 易复用(高内聚\低耦合)流程:动态代理:分为两种:①***jdk动态代理:基于反射来实现功能的,反射的性能较差一点***(反射的性能这样进行优化:1)使用第三方框架或者使用ssm框架2)把反射获取的对像,有必要的缓存的时候机型缓存一下,免得再次时用的时候,再次用反射的方式再次反射获取对象,来提升效率)②***CGLIB动态代理:是基于字节码增强技术,来实现动态代理的***springboot
2021-08-24 11:55:43
117
原创 CAS(compare And Set)CAS的实现原理?
CAS机制是一种乐观锁的机制,效率比较高Java的中的CAS机制:CAS 属于原子操作的一种,能够保证一次读写操作是原子的。CAS 通过将内存中的值与期望值进行比较,只有在两者相等时才会对内存中的值进行修改。 Java 中的 CAS 实现位于 sun.misc.Unsafe 类中,该类中定义了大量的CAS的 native(c语言实现) 方法CAS 机制虽然无需加锁、安全且高效,但也存在一些缺点,概括如下: 1、存在ABA问题,比如刚开始读取到备份是3,然后被其他线程连续修改两次, 最终结果还是
2021-08-18 15:51:08
308
原创 枚举和包装类
1.枚举与反射:先想一个问题,jdk为什么没有推荐使用饿汉式或者懒汉式呢?饿汉式和懒汉式都存在反射攻击(如果有人调用到你的class文件的权限,那么就可以通过写一段代码,然后通过反射的方式去调用你的class文件,去创建对象,这种攻击就成为反射攻击,依然可以通过这种方式创建大量对象出来),如果我们采用枚举单例,是不能进行反射攻击的,在枚举类型在获取对象的时候,在底层代码中去判断一下当前是不是调用的class对应的操作,class操作,就会中断操作,直接报错,枚举在这 设置了一个口子,来解决这个问题
2021-08-17 14:51:29
197
原创 集合(2)
集合(2)内容包括:①hashmap,②linkedhashmap,③concurrentHashMap**HashMap:**@底层的实现:@为什么说重写了equise,必须重写hashcode:1).内容小结:构造方法在什么时候被调的?构造方法和静态代码块谁的运行比较快构造方法在new,被创建的时候运行静态代码块是类加载的时候运行静态代码块的执行的顺序要高于构造方法静态代码块new 创建对象的时候,ider:不带有jdkeclipse:是带有jdk的jdk:1.7
2021-08-17 08:22:38
116
原创 集合(1)
ArrayList1)线程不安全的底层实现:判断是否能容纳你想存入的元素个数.扩容机制:1.5倍.特点:有序的:按照添加的顺序不唯一:同一个元素可以装多次1:如何创建泛型对象ArrayList<泛型> list=new ArrayList<>();2:如何添加元素:一次添加一个元素:list.add(元素);一次添加多个元素:Collections.addAll(集合,元素,元素,...);3:得到集合元素的个数list.size();4:得到某一
2021-08-11 12:23:45
103
原创 编号唯一mysql脚本--mysql函数
drop PROCEDURE if EXISTS getSequence;drop TABLE if EXISTS tb_sequence;create PROCEDURE getSequence(in nus BIGINT)begin DECLARE seqid BIGINT DEFAULT 0; DECLARE datet VARCHAR(50) DEFAULT ‘’; creat
2021-06-10 09:05:57
156
原创 vue前端vue.config.js配置跨域问题处理
module.exports = { devServer: { //以上的ip和端口是我们本机的;下面为需要跨域的 proxy: { ‘/api’: { // 拦截以 /api 开头的接口 &
2021-06-10 09:04:48
185
原创 前后端分离Cookie跨域处理
找到vue里main.js把允许Cookieaxios.defaults.withCredentials=trueSpring boot后端处理新建一个xxx.xxx.xxx.config配置包@Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") &nb
2021-06-10 09:03:20
149
原创 bigdecimal的使用
使用实例BigDecimal price = vegtables.getPrice();加法new一个BigDecimal对象 对象名叫做 p2MathContest方法使用BigDecimal add = p2.add(price,new MathContext(3(“要保留的小数位”),RoundingMode.HALF_HP(“向上取整”)));setScale()方法使用和保留有效数字BigDecimal add =&
2021-06-10 09:01:57
88
原创 redis防治数据重复提交
redis防治数据重复提交redis防治数据重复提交Boolean name = redisTemplate.opsForValue().setIfAbsent(传过来的参数redis自动判断);设置数据有效时间这里可以不用设置(自己测试为了方便)redisTemplate.expire(key,30,TimeUnit.MINUTES);判断数据是否重复提交if(name){ 通过存存储到数据库当中}else{{ &n
2021-06-10 08:58:20
362
原创 vue项目部署和spring boot项目部署
vue涉及到一个跨域vue.config.js或者config/index.js里吧跨域中配置的反向代理localhost改成部署的ip和端口号,如果在后端spring boot中配置的跨域也要吧localhost改成部署的ip和端口号vue打包部署运行命令cd到部署的该盘符下执行npm run buildspring boot打包在pom配置文件里添加打包插件org.springframework.bootspring-boot-maven-pluginROOT
2021-06-10 08:55:17
211
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人