Java杂记-2020.07.28

简单记录下今天项目用到的东西还有技术公众号学到的一些知识点

  1. Java事务
  2. idea编码技巧
  3. 数据库快速插入100万条数据
  4. Java实现sql回滚

Java事务

事务(Transaction)的四个属性(ACID)

  • 原子性(Atomic) 对数据的修改要么全部执行,要么全部不执行。
  • 一致性(Consistent) 在事务执行前后,数据状态保持一致性。
  • 隔离性(Isolated) 一个事务的处理不能影响另一个事务的处理。
  • 持续性(Durable) 事务处理结束,其效果在数据库中持久化。

Java事务的类型有三种:JDBC事务、JTA(Java Transaction API)事务、容器事务。

事务并发处理可能引起的问题

  • 脏读(dirty read):一个事务读取了另一个事务尚未提交的数据,
  • 不可重复读(non-repeatable read) :一个事务的操作导致另一个事务前后两次读取到不同的数据
  • 幻读(phantom read) :一个事务的操作导致另一个事务前后两次查询的结果数据量不同。

解决读问题: 设置事务隔离级别(5种)

未提交读(read uncommited) :脏读,不可重复读,虚读都有可能发生

已提交读 (read commited):避免脏读。但是不可重复读和虚读有可能发生

可重复读 (repeatable read) :避免脏读和不可重复读.但是虚读有可能发生.

串行化的 (serializable) :避免以上所有读问题.

idea编码技巧

idea中关于快速生成try,catch,for,while等语句:https://mp.weixin.qq.com/s/dKcdu_FBcNwWfXwpbSkT_A

数据库快速插入100万条数据

主要是建立存储过程就能实现

下面会很慢的原因是插入语句耗时长,可以批量删除进一步优化,具体可以见下面博客

https://www.jianshu.com/p/36b87cb3a05a


CREATE TABLE `logs` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`logtype` VARCHAR(255) DEFAULT NULL,
`logurl` VARCHAR(255) DEFAULT NULL,
`logip` VARCHAR(255) DEFAULT NULL,
`logdz` VARCHAR(255) DEFAULT NULL,
`ladduser` VARCHAR(255) DEFAULT NULL,
`lfadduser` VARCHAR(255) DEFAULT NULL,
`laddtime` DATETIME DEFAULT NULL,
`htmlname` VARCHAR(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MYISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='日志表';
DROP PROCEDURE IF EXISTS my_insert;
DELIMITER //
CREATE PROCEDURE my_insert()
BEGIN
DECLARE n INT DEFAULT 1;
loopname:LOOP
INSERT INTO `logs`(`logtype`,`logurl`,`logip`,`logdz`,`ladduser` ,`lfadduser`,`laddtime`,`htmlname`) VALUES ( 2, '/index', '0:0:0:0:0:0:0:1', NULL, NULL, 'null', '2018-05-03 14:02:42', '首页');
SET n=n+1;
IF n=10000000 THEN
LEAVE loopname;
END IF;
END LOOP loopname;
END;
//
DELIMITER ;
CALL my_insert();

Java中sql语句的回滚

使用的是spring中的@Transactional(rollbackFor=Exception.class)来实现,下面就能成功实现如果后面语句出错,就成功回滚

    @Test
@Transactional(rollbackFor=Exception.class)
public void testApplyAdjustUpdate(){
try{
//这里就可以写mapper的语句
mapper.update();
//设置空指针异常来检查是否成功rollback
Integer a = null;
int b = a;
} catch(Exception e){
e.printStackTrace();
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
}

Java-每日学习笔记(数据库与idea技巧)的更多相关文章

  1. Java每日学习笔记1

    单选按钮 JRadioButton radioButton1 = new JRadioButton("Java");// 创建单选按钮 contentPane.add(radioB ...

  2. java JDK8 学习笔记——第16章 整合数据库

    第十六章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API中的接口会有数据库厂商操作,称为JDBC驱动程 ...

  3. [原创]java WEB学习笔记66:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  4. Java Web 学习笔记 1

    Java Web 学习笔记 1 一.Web开发基础 1-1 Java Web 应用开发概述 1.1.1 C/S C/S(Client/Server)服务器通常采用高性能的PC机或工作站,并采用大型数据 ...

  5. 尚学堂JAVA基础学习笔记

    目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...

  6. JAVA Web学习笔记

    JAVA Web学习笔记 1.JSP (java服务器页面) 锁定 本词条由“科普中国”百科科学词条编写与应用工作项目 审核 . JSP全名为Java Server Pages,中文名叫java服务器 ...

  7. 20145213《Java程序设计学习笔记》第六周学习总结

    20145213<Java程序设计学习笔记>第六周学习总结 说在前面的话 上篇博客中娄老师指出我因为数据结构基础薄弱,才导致对第九章内容浅尝遏止地认知.在这里我还要自我批评一下,其实我事后 ...

  8. [原创]java WEB学习笔记95:Hibernate 目录

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  9. java JDK8 学习笔记——助教学习博客汇总

    java JDK8 学习笔记——助教学习博客汇总 1-6章 (by肖昱) Java学习笔记第一章——Java平台概论 Java学习笔记第二章——从JDK到IDEJava学习笔记第三章——基础语法Jav ...

  10. [原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

随机推荐

  1. 四. django template模版

    往前端浏览器pull一些字符串,这些字符串是一些数据, 那如果想让这些数据按我们的某种格式美化一点/增加样式/图片,就需要用到django提供的模版--模版就是为了让数据看起更美观. 加载模版 dja ...

  2. Java中的过滤器

    什么是过滤器(Filter)? 过滤器就是一个实现了特殊接口的Java类.实现对请求资源的过滤的功能. 过滤器是Servlet技术中最为实用的技术. 过滤器有啥用? 对目标资源进行过滤. 自动登录,解 ...

  3. Spring MVC原理简要概括

    本篇简要讲解SpringMVC 的运作方式 Spring 的 web 框架是一个设计良好的 web MVC 框架.MVC模式导致应用程序的不同方面(输入逻辑,业务逻辑和UI逻辑)分离,同时提供这些元素 ...

  4. 12个Visual Studio调试效率技巧

    在这篇文章中,我们假定读者了解VS基本的调试知识,如: F5 开始使用调试器运行程序 F9 在当前行设置断点 F10 运行到下一个断点处 F5 从被调试的已停止程序恢复执行 F11 步进到函数内(如果 ...

  5. C#获取页面内容的几种方式

    常见的Web页面获取页面内容用 WebRequest 或者 HttpWebRequest 来操作 Http 请求. 例如,获取百度网站的 html 页面 var request = WebReques ...

  6. Vue 的响应式原理中 Object.defineProperty 有什么缺陷?

    Object.defineProperty只能劫持对象的属性,从而需要对每个对象,每个属性进行遍历,如果,属性值是对象,还需要深度遍历.Proxy可以劫持整个对象,并返回一个新的对象. Proxy不仅 ...

  7. 05 Vue项目搭建

    Vue-CLI 项目搭建 1.环境搭建 安装node 官网下载安装包,傻瓜式安装:https://nodejs.org/zh-cn/ 安装cnpm npm install -g cnpm --regi ...

  8. 深圳有为JAVA笔试

    深圳有为JAVA笔试 1.定义一个线程类有几种方法?分别是什么? 答:两种方法,一种继承Thread类,重写run()方法,第二种实现runnable接口,实现run()方法. 2.抽象类和接口的区别 ...

  9. python 面向对象专题(一):面向对象初识、面向对象结构、类、self、实例化对象

    https://www.cnblogs.com/liubing8/p/11301344.html 目录 Python面向对象01 /面向对象初识.面向对象结构.类.self.实例化对象 1. 面向对象 ...

  10. VTK根据三维坐标点集生成点云

    一个简单的利用VTK根据三维坐标点集生成点云的例子,仅供参考. 一.环境:vtk-8.1 & vs2013(需自行配置vtk的环境) 二.我所读取的三维坐标点集为txt格式文件,每个点的x,y ...