update

悲观锁和乐观锁

倾然丶 夕夏残阳落幕 提交于 2019-12-19 06:40:51
悲观锁和乐观锁 数据的锁定分为两种方法,第一种叫做悲观锁,第二种叫做乐观锁。 悲观锁顾名思义,就是对数据的冲突采取一种悲观的态度,也就是说假设数据肯定会冲突,所以在数据开始读取的时候就把数据锁定住 乐观锁就是认为数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测, 如果发现冲突了,则让用户返回错误的信息,让用户决定如何去做。 在SqlServer等其余很多数据库中,数据的锁定通常采用页级锁的方式, 也就是说对一张表内的数据是一种串行化的更新插入机制, 在任何时间同一张表只会插1条数据,别的想插入的数据要等到这一条数据插完以后才能依次插入。 带来的后果就是性能的降低,在多用户并发访问的时候,当对一张表进行频繁操作时,会发现响应效率很低, 数据库经常处于一种假死状态。 Oracle用的是行级锁,只是对想锁定的数据才进行锁定,其余的数据不相干, 所以在对Oracle表中并发插数据的时候,基本上不会有任何影响 注:对于悲观锁是针对并发的可能性比较大,而一般在我们的应用中用乐观锁足以。 Oracle的悲观锁需要利用一条现有的连接,分成两种方式, 从SQL语句的区别来看,就是一种是 for update,一种是 for update nowait的形式 首先看一下 for update锁定方式。 执行如下的select for update语句

IDEA 服务器热部署详解(On Update action/On frame deactivation

ぐ巨炮叔叔 提交于 2019-12-19 04:48:16
场景:一般服务器(比如tomcat,jboss等)启动以后,我们还需要进一步修改java代码,或者是jsp代码。一般来说,改完重启以后才会生效。但如果配置了服务器的热部署,就可以改完代码后立即生效,而不是重启服务器再生效。这样就会节省大量时间! 目前有两个选项: On Update action : 顾名思义,当代码改变的时候,需要IDEA为你做什么; On Frame deactivation : 当失去焦点(比如你最小化了IDEA窗口),需要IDEA为你做什么。 --------------------------------------------------------------------------------------------------------------------------- 下面以tomcat为例, 并且使用war exploded方式部署 具体配置如下: 1.打开tomcat的相关配置,右上角Edit Configurations ,找到tomcat的配置项 2.在配置项中找到On Update action与On Frame deactivation选项 On Update action 里面有四个选项(一般选Update classes and resources): -Update resources :如果发现有更新

to update Andrioid SDK Tools to revision 15

拈花ヽ惹草 提交于 2019-12-19 00:14:20
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> According to http://developer.android.com/sdk/android-4.0.3.html ------------------------------------------ The Android 4.0.3 API is assigned an integer identifier— 15 —that is stored in the system itself. This identifier, called the "API level", allows the system to correctly determine whether an application is compatible with the system, prior to installing the application. To use APIs introduced in Android 4.0.3 in your application, you need compile the application against an Android platform that supports API level 15 or higher. Depending on your needs,

日常笔记

99封情书 提交于 2019-12-18 20:53:43
1.数据库创建时间和自动更新 ‘create_time’ timestamp not null default current_timestamp comment ‘创建时间’’ ‘update_time’ timestamp not null default current_timestamp on update current_timestamp comment ‘修改时间’ 2.pagehelper拿total与正确结果不一致 public QueryByPage getAllName(Integer currentPage, Integer pagesize) { Page page1=PageHelper.startPage(currentPage,pagesize); List<XXXX> list=new ArrayList<>(); list=creditEnhancementAccountRepository.getAllAccountInUsed(accountName); //此处拿到total Long total=page1.getTotal(); List<QueryBean> List=new ArrayList<>(); PageInfo<QueryBean> page = new PageInfo<QueryBean>(List);

Spaceship Solitaire【Codeforces 1266 E】【思维】

二次信任 提交于 2019-12-18 19:00:54
Codeforces Global Round 6 E 题意:主人公想要造宇宙飞船,所以需要N种物资,每种物资的需求量是a[i]个。然后呢,如果我们没有任何加速器的话,总的时间需求是 ,但是现在我们有“里程碑”加速器! 里程碑加速器是这样的「S,T,U」我们如果有T个S物资的话,我们可以免费获得一个U物资。 思路:那么,不难发现,如果U这个物资的数量不足a[U],那么就是可以减少一次步骤的,如果大于了,就是没有作用的了,然后map或者unordered_map维护一下即可。 #include <iostream> #include <cstdio> #include <cmath> #include <string> #include <cstring> #include <algorithm> #include <limits> #include <vector> #include <stack> #include <queue> #include <set> #include <map> #include <unordered_map> #include <unordered_set> #define lowbit(x) ( x&(-x) ) #define pi 3.141592653589793 #define e 2.718281828459045 #define INF

Django中ORM对数据库的增删改查操作

让人想犯罪 __ 提交于 2019-12-18 15:29:32
前言 什么是ORM? ORM(对象关系映射)指用面向对象的方法处理数据库中的创建表以及数据的增删改查等操作。 简而言之,就是将数据库的一张表当作一个类,数据库中的每一条记录当作一个对象。在Django中定义一个类,就是在数据库中创建一张表格。在Django中实例化一个类的对象,就是在数据库中增加了一条记录。在Django中删除一个对象,就是在数据库中删除了一条记录。在DJango中更改一个对象的属性,就是在数据库中修改一条记录的值。在django中遍历查询对象的属性值,就是在数据库中查询记录的值。 下面是几条django的views视图函数中的命令语句。 一,增(create,save) from app01.models import * #create方式一: Author.objects.create(name='Alvin') #create方式二: Author.objects.create(**{"name":"alex"}) #save方式一: author=Author(name="alvin") author.save() #save方式二: author=Author() author.name="alvin" author.save() 注意,增加时create+save两个组合,create是增的动作,save是加的动作,缺一个都不中。 二,删(delete

【MySQL】ON DUPLICATE KEY UPDATE

安稳与你 提交于 2019-12-18 15:15:16
之前没用过这个操作,甚至没见过……最近接触到,而且还挺有用。 作用:若 KEY 不重复,则插入记录;否则更新记录。 单条操作: INSERT INTO table(a, b, c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1; 批量操作: INSERT INTO database.table (id, key, field) VALUES (v1, v2, v3), (v1, v2, v3), (v1, v2, v3) ON DUPLICATE KEY UPDATE id=VALUES(id), key=VALUES(key), field=VALUES(field); 参考链接: https://blog.csdn.net/BuptZhengChaoJie/article/details/50992923 https://blog.zhengxianjun.com/2017/06/mysql-batch-insert-update/ 来源: https://www.cnblogs.com/jaxer/p/9676031.html

Sql Server 锁机制

心已入冬 提交于 2019-12-18 13:41:37
转自: http://blog.csdn.net/missmecn/archive/2008/10/06/3019798.aspx 相关文章: my sql 数据库锁 ORACLE里几种锁模式 推荐圈子: Pipboy 更多相关推荐 对 锁机制 的研究要具备两个条件: 1.数据量大 2.多个用户同时并发 如果缺少这两个条件,数据库不容易产生死锁问题。研究起来可能会事倍功半。如果这两个条件都有,但你还是按数据库缺省设置来处理数据,则会带来很多的问题,比如: 1)丢失更新 A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果 2)脏读 A用户修改了数据时,B用户也在读该数据,但A用户因为某些原因取消了对数据的修改,数据恢复原值,此时B得到的数据就与数据库内的数据产生了不一致 3)不可重复读 B用户读出该数据并修改,同时,A用户也在读取数据,此时A用户再读取数据时发现前后两次的值不一致 SQL SERVER 作为多用户数据库系统,以事务为单位,使用锁来实现并发控制。 SQL SERVER 使用“锁”确保事务完整性和数据一致性。 一、锁的概念 锁(LOCKING)是最常用的并发控制机构。是防止其他事务访问指定的资源控制、实现并发控制的一种主要手段。锁是事务对某个数据库中的资源(如表和记录)存取前,先向系统提出请求,封锁该资源,事务获得锁后,即取得对数据的控制权

MyBatis-Plus公共字段自动填充无效排查

与世无争的帅哥 提交于 2019-12-18 11:53:45
目录 前言 MetaObjectHandler配置 entity字段注解 复现 原因 如何解决 但有疑问 前言 公司系统,mybatis-plus(v3.1.0)配置了MetaObjectHandler公共字段自动填充,一直以来都使用良好。昨天发现了个BUG——某些service方法更新时,不会自动填充edit_time,遂排查。 先说问题说在: XXService.update(Wrapper updateWrapper) 方法。 MetaObjectHandler配置 public class MetaObjectHandlerConfig implements MetaObjectHandler { // mybatis-plus公共字段自动填充,https://baomidou.oschina.io/mybatis-plus-doc/#/auto-fill @Override public void insertFill(MetaObject metaObject) { // System.out.println("插入方法实体填充"); // System.out.println(DateUtils.toDateText(new Date(),DateUtils.DEFAULT_DATE_TIME_FORMAT)); //System.out.println(

ORACLE锁机制

▼魔方 西西 提交于 2019-12-18 11:46:09
数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。 加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作。 在数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即X锁)和共享锁(Share Locks,即S锁)。当数据对象被加上排它锁时,其他的事务不能对它读取和修改。加了共享锁的数据对象可以被其他事务读取,但不能修改。数据库利用这两种基本的锁类型来对数据库的事务进行并发控制。 Oracle数据库的锁类型 根据保护的对象不同,Oracle数据库锁可以分为以下几大类:DML锁(data locks,数据锁),用于保护数据的完整性;DDL锁(dictionary locks,字典锁),用于保护数据库对象的结构,如表、索引等的结构定义;内部锁和闩(internal locks and latches),保护 数据库的内部结构。 DML锁的目的在于保证并发情况下的数据完整性,。在Oracle数据库中,DML锁主要包括TM锁和TX锁,其中TM锁称为表级锁,TX锁称为事务锁或行级锁。