- 博客(22)
- 收藏
- 关注
原创 数据库事务
事务什么是事务?事务特性:ACID原子性一致性隔离性持久性事务的隔离级别读未提交读已提交可重复读序列化读/串行读为什么默认可重复读隔离界别悲观锁和乐观锁悲观锁乐观锁分布事务什么是事务?一个逻辑单元执行的一组操作,要么全成功,要么全失败。事务特性:ACID事务包括四大特性:ACID原子性原子性:事务必须是最小的工作单元,不可再分。要么全成功,要么全失败。事务执行过程中失败,会回滚到之前的状态。一致性一个事务的执行前后,数据库从一个一致性状态编程另外一个一致性状态。简单来说,A和B一共100元
2020-10-22 20:32:07
134
原创 MySQL的三范式
数据库三范式什么是范式?三范式第一范式第二范式第三范式什么是范式?设计表的依据,根据三范式设计的表,不会出现数据冗余。三范式第一范式任何一张表都应该有主键,并且每一个字段原子性不可再分。例如某一字段为:联系方式。违背了原子不可再分的原则。解决办法拆开为【地址】和【联系电话】两个字段。第二范式在第一范式基础上,所有的非主键字段完全依赖主键,不能是部分依赖。例如一张表中,有学生学号(主键),学生姓名,教师编号(主键),教师姓名。学生姓名【部分依赖】主键学生学号,没有依赖另外一个主键
2020-10-22 15:22:59
156
原创 线程中的死锁详解
死锁死锁的由来定位方法避免死锁死锁的由来在多线程场景中,多个线程互相持有对方需要的锁,从而造成了阻塞。严重影响了性能。常见的死锁:顺序死锁,动态死锁(转账)//顺序死锁的示例代码。动态死锁,转账问题。public class Test { public static void main(String[] args) { //两个对象锁 Object a1=new Object(); Object a2=new Object();
2020-10-22 14:28:01
178
原创 synchronized用法解析
synchronized详解使用同步代码块synchronized (this) {}--对象锁Object obj = new Object(); synchronized(obj){...} 对象锁synchronized(.class){...} 类锁,锁的是这个类。修饰实例方法 对象锁修饰静态方法 类锁测试代码多个线程执行对同一个Java对象访问时候,为了保证数据的有效性,通常会使用synchronized关键字,俗称多线程安全。synchronized从语法上一共有三种语法,修饰静态方法
2020-10-21 17:06:56
264
原创 序列化与反序列化
序列化与反序列化序列化反序列化如何实现序列化当我们想将内存中的Java对象或者文件保存到硬盘中或者通过其他方式传输Java对象的时候,涉及到序列化。序列化序列化简单来说,就是把对象转换为字节序列传输到硬盘文件的过程称为对象的序列化。反序列化反序列化就是把字节序列恢复为对象的过程称为对象的反序列化。如何实现序列化实现类实现Serializable接口。Serializable接口是一个没有抽象方法和常量的接口。通常为了不影响序列化和反序列化,一般会在实现类里添加一条序列号。priv
2020-10-21 10:33:09
59
原创 finally ,final,finalize的关系?
finally ,final,finalizefinallyfinalfinalizefinallyfinally作为异常处理的一部分,它只能用在try/catch语句中,并且附带一个语句块,表示这段语句最终一定会被执行(不管有没有抛出异常),经常被用在需要释放资源比如流的情况下。final【final】可修饰类,方法,变量。如果修饰类,则该类无法被继承。如果修饰方法,改方法无法被重写。如果修饰的是基本数据类型变量,则该无法被赋予其他值。如果是引用数据类型变量,那么得具体讨论。例如Str
2020-10-20 22:48:47
158
1
原创 异常,Exception vs Error
异常ErrorException处理异常finally什么是异常?在程序执行过程中发生了不正常的情况,称为“异常”。异常的作用:增强程序的健壮性。异常的存在形式:以类和对象存在。ErrorError继承父类Throwable。表示错误,不可处理的异常,一旦发生只能退出JVM。Error是Throwable的子类,用于标记严重错误。合理的应用程序不应该去try/catch这种错误。绝大多数的错误都是非正常的,就根本不该出现的。ExceptionException,可处理的异常。Ex
2020-10-20 22:34:20
191
原创 Object类的equals() and hashCode()的实现
嗯equals()hashcode()equals() public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String aString = (String)anObject; if (!COMPACT_S
2020-10-20 21:59:53
106
原创 String , StringBuffer , StringBuilder 的差别
String vs StringBuffer vs StringBuilderStringStringBufferStringBuilderString//String类部分码源public final class String implements java.io.Serializable, Comparable<String>, CharSequence, Constable, ConstantDesc { @Stable priv
2020-10-20 21:23:36
80
原创 登陆MySQL出现error:Can‘t connect to MySQL server on ‘localhost‘ (10061)
在登陆MySQL后,出现error:原因可能是没有开启【MySQL服务】。导致没有开启原因:1.第一次安装使用MySQL,其中一个步骤就是要检查是否已经开启【MySQL服务】。2.电脑重启/关机或者其他原因,需要重新启动【MySQL服务】。开启方法,以win10为例:找到【MySQL服务】判断MySQL服务是否处于【启动】状态。如果没有需要启动。重新登陆MySQL,成功登陆。...
2020-10-17 08:45:09
438
原创 powerdesigner 安装配置
链接: 安装文件,破解文件选择地区/国家。选择安装地址,可以自定义或者默认C盘。本人在E:\JDBC新建PowerDesigner目录。然后安装路径选择该目录。一直NEXT找到Powerdesigner的安装路径以本人为例,安装路径为E:\JDBC\PowerDesigner。复制【pdflm16.dll】文件,拷贝到E:\JDBC\PowerDesigner目录下。就可以正常使用power designer了。...
2020-10-17 08:26:00
307
原创 查看数据库事务隔离等级的命令报错,Unknown system variable ‘tx_isolation‘
在使用数据库时候,查看当前数据库的隔离等级,在查询当前事务的隔离等级时,报错:Unknown system variable ‘tx_isolation’由于数据库更新,在旧版本中查询命令 select @@tx_isolation; 并不适用与新版本。在新版本中查看数据库的事务隔离等级查询命令为:select @@transaction_isolation;...
2020-10-15 20:37:31
247
原创 JDBC 驱动包 8.0 及以上版出现的Driver和时区问题解决方法。
一 .Driver问题// 8版本之前的properties配置文件的Driver部分,没有cjdriver=com.mysql.jdbc.Driver// 8版本之后的properties配置文件的Driver部分,有cjdriver=com.mysql.cj.jdbc.Driver二. 时区问题The server time zone value ‘Öйú±ê׼ʱ¼ä’ is unrecognized or represents more than one time zone.
2020-10-15 20:24:58
1041
原创 Java MySQL 连接 ,Connector/J,JDBC的配置驱动包
Java 连接 MySQL 需要MySQL驱动包。Platform Independent (Architecture Independent), ZIP Archive,4.5M那个JDBC驱动包版本尽量和MySQL版本一样。以本人为例,下载到E:\JDBC,解压zip文件到当前目录。打开【mysql-connector-java-8.0.21】目录右键解压【mysql-connector-java-8.0.21.jar】到当前目录。【配置】1.如果是文本编辑器,需要将【mysql-co
2020-10-15 16:36:20
1385
原创 MySQL的安装配置中遇到的一些细节问题
关于MySQL的安装配置。MySQL下载地址(Windows (x86, 64-bit), ZIP Archive)【111.1MB那个】.转载他人的安装教程.【注意事项】在本人安装过程,遇到的细节问题:1.在使用命令提示符(cmd)的时候,建议以【管理员身份】运行。2.下载完【mysql-8.0.21-winx64.zip】,压缩文件,到当前目录文件,生成【mysql-8.0.21-winx64】目录文件,将配置文件 my.ini 复制到【mysql-8.0.21-winx64】目录文件。3.
2020-10-08 12:37:21
106
原创 TreeSet/TreeMap的码源分析:二叉树(中序排序)如何排序的?
以下为个人见解,如有错误,欢迎指正。TreeSet的底层是TreeMap,TreeMap的底层是二叉树数据结构。TreeSet/TreeMap可以对元素按照大小自动排序。二叉树排序有三种:前序排序:根左右中序排序:左根右后序排序:左右根TreeSet/TreeMap是采用中序排序。在【TreeMap】码源有二叉树的节点有5个属性。在【TreeMap】源码中可以找到。key,value,left:左节点,right:右节点,parent:父节点。【TreeSet对Integer类的数
2020-09-29 17:42:13
363
原创 HashMap码源中关于检索 v=map.get(k)和插入 map.put(k,v)方法的原理。
以下为个人理解,如果有误,烦请指正。在Map接口的实现类中有一个类是HashMap,底层是一个哈希表数据结构哈希表:数组和单向链表的结合体。数组:检索效率高,删减效率低。链表:检索效率低,删减效率高。哈希表将其结合在一起,综合优点。打开HashMap的源码。哈希表底层实际上是一个一维数组,但是又有链表的特点 。【也就是说数组中的每个元素都是一个单向链表。】每个链表上的节点都有四个属性:final int hash,final K key,V value,Node<K,V>
2020-09-28 09:36:43
472
原创 Map的常用方法
以下都是个人见解,如有错误,欢迎指正。根据存储的方式,集合可以分为Collection集合接口(单个存储)和Map集合接口(键值对方式存储)。Map接口,以键值对存储元素,无序不可重复。key和value都是存储Java对象的【内存地址】。接下来对Map一些常用的方法进行介绍。创建Map集合对象。以HashMap集合为例。Map<Integer,String> a1=new HashMap<>();//创建HashMap对象,引用a1.V put(K key, V v
2020-09-27 16:19:16
527
原创 LinkedList码源的add方法
【单项链表】单向链表的基本单元是节点Node。而每个节点Node都有两个属性:存储的数据(Object o)和下个节点的内存地址(Node next)。 class NNode { Object element;//存储的数据 NNode next;//下个节点的内存地址 public NNode(Object element, NNode next) { this.element = element; this.next = nex
2020-09-26 17:18:58
957
原创 集合remove方法和迭代器Iterator的remove方法区别?
以下仅为个人理解,如果有误或者更好的方法,我会进行编辑修改。【集合的remove】【迭代】时使用集合remove方法【迭代】时使用迭代器remove方法原因【集合的remove】 //创建ArrayList集合对象 Collection c=new ArrayList(); //添加元素10,"ABC" c.add(10); c.add("ABC"); //得到集合c System.ou
2020-09-23 16:07:49
1342
原创 String不可变?final修饰的变量不能变?
以下都是个人见解,如果有错误,希望能指出来,我会修改的。【final】可修饰类,方法,变量。如果修饰类,则该类无法被继承。如果修饰方法,改方法无法被重写。如果修饰的是变量,基本数据类型无法被赋予其他值;引用数据类型无法指向其他对象。但是指向对象的值是可以改变的。(例如我只能指向蛋糕店,不能指向其他地方,但是今天可以在蛋糕店吃蛋糕,明天也可以在蛋糕店吃面包,对象的值是可以改变的)【不可变】是指双引号内的字符串一旦创建就不可改变。例如:// String s1="abc";//s1="123
2020-09-19 19:25:40
768
3
原创 JDK中文API帮助文档【沈东良】
在新手学习Java过程中,难免要对Java中各种各样的关键字及其方法的使用感到兴趣及疑惑,但绝大部分初学者由于英文阅读能力一般,阅读官方的英文API有一定的困难,因此沈东良曾对JDK6的英文API做了翻译,方便广大初学者学习。在有一定的学习/工作/开发经验后,建议使用官方的英文文档,如果比较吃力,可以将中英API文档进行比照。沈东良译JDK6中文API注意:因为我是从网上找的,帮助文档可能被人为植入了一些广告和应用,需要自己手动删除。...
2020-09-16 20:37:46
2505
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人