自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

mysql存储过程注意点

mysql存储过程注意点

  • 博客(17)
  • 问答 (1)
  • 收藏
  • 关注

原创 申请码唯一性

需求:mysql数据库,根据数据库id,生成申请码,保证唯一性方案:取数据库最大的id,根据id+1生成新的申请码。弊端:如果有多个线程同时取到了最大的id,就会生成相同的申请码。优化方案:先往数据库添加一条数据(占位,保证唯一性),生成id,根据id生成申请码,再更新这条数据。...

2019-12-24 15:02:26 161

原创 redis分布式锁

申请码唯一性方案:取数据库最大的id,根据id+1生成新的申请码。弊端:如果有多个线程同时取到了最大的id,就会生成相同的申请码。优化方案:先往数据库添加一条数据(占位,保证唯一性),生成id,根据id生成申请码,再更新这条数据。redis分布式锁1、安全性:互斥。保证同一时刻只有一个线程持有锁;2、避免死锁:最终,即使锁定资源的客户端崩溃或被分区,也始终有可能获取锁。3、容错性:只...

2019-12-24 14:59:21 160

原创 Clone

People p1 = new People();People p2 = p1;System.out.println(p1==p2); //true这种操作只是引用的赋值,实际指向的仍然是同一个对象。new对象时,构造函数链中的所有构造函数都会被自动调用。如果一个对象实现了Cloneable接口,那么就可以调用它的Clone()方法。Clone()方法不会调用任何类构造函数。只是在第一次...

2019-09-20 17:38:02 349

转载 springboot定时任务

使用SpringBoot创建定时任务非常简单,目前主要有以下三种创建方式:1. 基于注解(@Scheduled)2. 基于接口(SchedulingConfigurer)  前者相信大家都很熟悉,但是实际使用中我们往往想从数据库中读取指定时间来动态执行定时任务,这时候基于接口的定时任务就派上用场了。3. 基于注解设定多线程定时任务原文链接:https://www.cnblogs.com/...

2019-09-19 17:20:33 335

原创 AtomicInteger

定义public class AtomicInteger extends Number implements java.io.Serializable { private static final long serialVersionUID = 6214790243416807050L;实现了序列号接口,编码时最好手动生成序列ID,让javac编译器生成开销大,而且可能造成意想不到的...

2019-09-18 16:51:32 241

转载 线程安全与共享资源

线程安全与共享资源允许被多个线程同时执行的代码称作线程安全的代码。线程安全的代码不存在竞态条件。当多个线程同时更新共享资源时会引发竞态条件。因此,了解java线程执行时共享了什么资源很重要。局部变量局部变量存储在线程自己的栈中。永远也不会被多个线程共享。所以,基础类型的局部变量是线程安全的。java内存模型中,基础类型的局部变量存放在栈中,对象及数组存放在堆里,线程栈里存放对象的引用,指向堆...

2019-09-18 16:39:07 164

原创 java关键字

static关键字:静态的、全局的,一旦被static修饰说明在一定范围内是共享的,谁都可以访问,这时候就要注意并发读写问题。可以修饰变量、方法、方法块1、修饰变量如果是public的,任何类都可以调用,不用初始化类就可以调用。调用方法:类名.static变量。此时要注意如果多个线程同时操作该数据,可能出现并发问题。例如:public static List list = new Ar...

2019-09-17 17:14:23 108

原创 ConcurrentLinkedQueue介绍

定义一个基于链接节点的无界线程安全队列。此队列按照 FIFO(先进先出)原则对元素进行排序。队列的头部是队列中时间最长的元素。队列的尾部是队列中时间最短的元素。 新的元素插入到队列的尾部,队列获取操作从队列头部获得元素。当多个线程共享访问一个公共 collection时,ConcurrentLinkedQueue 是一个恰当的选择。此队列不允许使用 null 元素。函数offer(E ...

2019-09-17 11:34:16 168

原创 ConcurrentHashMap缓存

如果只是要实现一个简单的缓存,使用redis、memecache又太重,也不需要将数据持久化,可以使用ConcurrentHashMap实现一个简单的缓存,避免多次操作数据库,提升效率。ConcurrentHashMap的get(Object key)不加锁,只有在put、remove操作时才加锁,但是也可能不会有锁争用,因为ConcurrentHashMap将缓存变量分到多个segment,分...

2019-09-11 15:27:02 1355

原创 @PostContruct和@PreDestroy

开发时遇到一个需求,在应用关闭时将序列号放入redis,重启应用时取出该序列号,放入缓存,删除redis记录,继续在它的基础上自增生成新的序列号。使用的是@postContruct和@preDestroy标签。@componentpublic class CacheBean { @AutoWired StringRedisTemplate template; @PostConst...

2019-09-03 13:25:02 288

原创 mybatis传参

mybatis报错信息如下:nested exception is org.apache.ibatis.binding.BindingException: Parameter 'date' not found.mapper:public List<String> getHisLog(Date date, int offset, int amount);对应的xml文件:&...

2019-08-15 09:34:19 355

原创 spring-boot-start-parent

pom.xml里这段代码代表你的项目是一个springboot项目,这是Spring Boot的父级依赖。 spring-boot-starter-parent 是一个特殊的starter,它用来提供相关的Maven默认依赖。使用它之后,常用的包依赖可以省去version标签。 <!-- 指定Spring Boot的版本 2.0.4.RELEASE --> <paren...

2019-07-31 15:07:15 294

原创 mysql存储过程事务及commit

1、mysql存储过程是否是一个事务在运行一个mysql存储过程时,执行了一部分后出错停止了,执行的那部分会提交到数据库,说明mysql存储过程不是一个事务。如果需要设置为一个事务,在存储过程主体开始部分指定开始一个事务。2、mysql存储过程是否需要commit;如果是支持事务的引擎,如innodb,支持自动提交;可以使用**mysql> show variables like ‘...

2019-07-26 17:42:10 6344

原创 springboot启动类位置

controller如下@RestControllerpublic class HelloWorldController { @RequestMapping("/hello") public String hello(String name){ return name; } }使用springbootTest测试代码如下: @SpringBoot...

2019-07-26 16:07:11 395

原创 mysql模糊匹配

studentno like concat(concat(’%’,#{seachKey},’%’))

2019-07-26 11:18:05 354

原创 springboot学习记录

使用IDEA创建springboot项目时,报错** WARNING ** : Your ApplicationContext is unlikely to start due to a @ComponentScan of the default package.2019-07-19 18:08:20.113 WARN 7284 --- [ main] ConfigSe...

2019-07-19 18:13:24 84

原创 mysql存储过程注意点

mysql存储过程注意点1、select into null值问题使用游标时,select a into v_a,当记录不存在时,a为null,会触发NO_DATA_FOUND错误,使done=1,循环退出,如果不想退出循环,需要在select a into v_a后加上set done=1;例子:declare continue handler for NOT FOUND set done=1...

2019-07-02 09:32:04 404

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除