![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java进阶
文章平均质量分 90
高朵
โลมาไม่ใช่ปลา
展开
-
java---泛型
目录1、为什么用泛型?2、泛型概念3、泛型类4、从泛型类派生子类5、泛型接口6、泛型通配符6、类型擦除1、为什么用泛型?早期的Object类型可以接收任意的对象类型,但是在实际的使用中,会有类型转换的问题。也就存在隐患,所以java提供了泛型这个安全问题。2、泛型概念泛型,参数化类型参数化类型,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式,在调用时传入具体值java泛型(generics)是jdk5的新特性,泛型提供了编译时类型安全检测机制,泛型在编译时原创 2022-01-23 22:26:48 · 597 阅读 · 2 评论 -
MVCC、sql锁机制、sql优化
目录一、MVCC1.概述二、 mysql锁机制myql中支持行锁,间隙锁,表锁一、MVCC1.概述MVCC(多版本并发控制 Multi-Version Concurrent Control),为了提升mysql读-写,写-读; 两个操作同时进行,写-写mysql支持行级锁的,如果操作同一行数据,那么肯定是不可以的。每次对表中的记录操作时,会保存一个日志(undolog)里面记录事务id号,如果有多个事务操作时,他们就会根据事务id,找到自己操作的版本号。不同隔离级别在读取数据时,会根据版本链生成一原创 2022-01-22 22:08:30 · 922 阅读 · 2 评论 -
java8--stream
目录1、什么是Stream?1、什么是Stream?Stream是java8的新特性,它允许你以声明式的方式处理数据集合,可以看做是遍历数据集的高级迭代器。stream与lambda 表达式结合后编码效率提高,可读性增强。eg:...原创 2022-01-22 11:10:01 · 183 阅读 · 0 评论 -
Mysql事务
目录一、事务1、概述2、事务特性(1)原子性(2)持久性(3)隔离性(4)一致性3、事务设置(1)直接用 SET 来改变 MySQL 的自动提交模式(2)查看 autocommit 模式(3)用 BEGIN, ROLLBACK, COMMIT 来实现4、并发事务处理带来的问题(1)脏读(2)不可重复读(3)幻读5、事务隔离级别一、事务1、概述事务就是一次完整的数据库操作,这个操作过程中可能包含多条sql执行。这多条sql的自执行时是一个整体,要么都执行成功,要么都执行失败。eg:转账操作:从A账号原创 2022-01-21 21:58:56 · 1148 阅读 · 0 评论 -
MySql引擎、索引
目录一、MySql架构连接层服务层引擎层物理文件存储二、Mysql引擎三、索引为什么要有索引呢?什么是索引?索引原理索引优势索引劣势索引创建原则什么情况下,需要索引?什么情况下,不建议用索引?索引分类主键索引单值索引唯一索引组合索引(复合索引)组合索引最左前缀原则删除索引全文索引查看索引索引数据结构聚簇索引和非聚簇索引聚簇索引非聚簇索引一、MySql架构连接层是一些客户端和连接服务,包含本地sock通信和大多数基于客户端/服务端工具实现的类似于tcp/ip的通信。负责与客户端和程序建立连接,认证…原创 2022-01-21 11:26:38 · 1677 阅读 · 1 评论 -
java8--Lambda表达式
目录一、Java 8 Lambda表达式1、出现的背景2、Lambda表达式简介一、Java 8 Lambda表达式1、出现的背景2、Lambda表达式简介原创 2022-01-20 11:44:22 · 776 阅读 · 4 评论 -
Java设计模式(java design patterns)
目录一、Java设计模式1、概述二、 单例模式三、工厂模式四、代理模式一、Java设计模式1、概述在前辈们长期开发的过程中,为解决某一类问题,总结出的一种较为优化的代码设计结构。提高程序代码复用,扩展性,稳定性。设计模式详述二、 单例模式三、工厂模式批量创建对象,将创建对象与使用对象分离,三个角色,工厂 复制生产四、代理模式...原创 2022-01-19 21:45:17 · 1487 阅读 · 0 评论 -
mysql高级--视图、存储过程、函数、触发器
目录一、视图1、概念2、为什么使用视图?3、视图语句(1)定义视图:(2)使用视图(3)删除视图二、存储过程1.概述2、MySQL存储过程的定义(1)创建存储过程的语法格式3、存储过程使用(1)定义第一个存储过程(2)定义一个有参数的存储过程(3)流程控制语句 if else(4)使用存储过程插入信息(5)mybatis 调用存储过程三、函数(1)不带参数(2)带参数 if else(3)带参数四、触发器(1)删除部门信息之前,自动触发删除员工关联部门信息(2)添加用户信息后,向日志表插入信息一、视图1原创 2022-01-19 21:25:23 · 910 阅读 · 0 评论 -
java---ThreadLocal
目录1、概述线程封闭2、ThreadLocal是什么?3、ThreadLocal 原理分析4、ThreadLocal 内存泄漏问题1、概述多线程访问同一个共享变量的时候容易出现并发问题,特别是多个线程对一个变量进行写入的时候,为了保证线程安全,一般使用者在访问共享变量的时候需要进行额外的同步措施才能保证线程安全。ThreadLocal 是除了加锁这种同步方式之外的一种保证一种规避多线程访问出现线程不安全的方法,当我们创建一个变量后,如果每个线程对其进行访问的时候访问的都是线程自己的变量这样就不会存在原创 2022-01-18 21:40:57 · 276 阅读 · 2 评论 -
java--线程池
目录1、概述2、为什么要使用线程池?3、 ThreadPoolExecutor类4、构造器中各个参数含义5、线程池的执行6、线程池中的队列7、线程池的拒绝策略8、execute 与 submit 的区别9、关闭线程池10、创建线程4种方法1、概述数据库连接池 每次与数据链接,创建连接对象connection ,操作完之后进行销毁,频繁创建销毁比较耗时,创建一个池子,预先在池子中初始化好一部分连接Connection对象,使用时直接获取即可,用完还回,不需要频繁创建销毁。( 如果并发的线程数量很多原创 2022-01-18 16:03:56 · 457 阅读 · 0 评论 -
JUC 常用类、锁
目录一、JUC 常用类1、ConcurrentHashMap一、JUC 常用类Java 5.0 在 java.utilconcurrent 包中提供了多种并发容器类来改进同步容器的性能.1、ConcurrentHashMapConcurrentHashMap 采用锁分段机制,并没有将整个hash表锁住,jdk8之后没有使用分段锁(给每个位置创建一个锁标志对象)。采用CAS思想 + synchronized来实现插入元素时,检测hash表对应位置是否是第一个节点,如果采用CAS机制(循环检查)原创 2022-01-17 22:45:33 · 844 阅读 · 2 评论 -
并发编程核心问题-可见性,原子性,有序性
目录1、可见性如何产生的可见性问题?概述2、有序性3、原子性4、总结(并发编程核心问题)5、volatile关键字6、如何保证原子性?1、加锁2、JUC --原子变量7、CAS ---理解为一种自旋思想8、JUC 常用类1、ConcurrentHashMap1、可见性如何产生的可见性问题?java多线程在工作时,现将主内存中的数据读到线程工作内存(缓存),然后在工作内存中,对数据进行操作,操作完成后,再将数据写回到主内存。产生一个可见性问题?2线程中看不到1线程中操作过的数据,操作系统可能会对指原创 2022-01-17 10:40:32 · 400 阅读 · 2 评论 -
面向对象设计原则
目录1、概述(1)单一职责(2)开闭原则(3)里氏替换原则(4)依赖倒置(5)接口隔离(6)迪米特原则(7)组合/聚合复用原则(8)总结1、概述在面向对象的设计过程中,首先要考虑的是如何同时提高一个软件系统的可维护性和可复用性。这时,遵从面向对象的设计原则,可以在进行设计方案时减少错误设计的产生,从不同的角度提升一个软件结构的设计水平。(1)单一职责单一职责原则是最简单的面向对象设计原则,它用于控制类的粒度大小。一个类负责做一件事,低耦合,高内聚。对于单一职责原则,可以理解为一个类只负责一原创 2022-01-16 12:22:56 · 515 阅读 · 2 评论 -
初识Java并发编程
目录一、回顾线程基本内容1.基本概述2、创建线程3、常用方法4、线程状态5、多线程6、线程安全问题7、守护线程8、死锁9、线程通信10、wait() notify()notifyAll()11、sleep()和wait()12、生产者消费者问题二、并发编程1、并发编程是什么?2、多线程优点3、多线程带来的问题是什么?4、Java 内存模型(JMM)(1)概述(2)JVM 主内存与工作内存一、回顾线程基本内容1.基本概述程序:静态代码,安装在硬盘上的进程:运行中的程序,是操作系统分配内存空间的单位。原创 2022-01-15 20:53:24 · 451 阅读 · 3 评论 -
对象克隆概述
目录1、叙述2、误区3、浅克隆和深克隆(1)浅克隆(2)深克隆实现方式:如何实现深克隆1、叙述从前端向后端发送数据,从后端向前端返回的数据,我们通通都使用一个Model类来完成封装。实际中模型类可以分好几种,例如,专门用来接收前端数据的,可以加入验证,向dao层传输数据的这里就需要用到对象的克隆。2、误区这种形式的代码复制的是引用,即对象在内存中的地址,a 和 b 对象仍然指向了同一个对象。这种只能称为引用复制,两个引用指向的还是同一个对象.我们常见的 Student stu1 = new S原创 2022-01-15 15:30:19 · 539 阅读 · 0 评论