自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 收藏
  • 关注

原创 Java Map接口及其实现类

Map接口:存储的是键值对(key,value),key值不能重复,value值可以重复。Map接口下方法:集合中常用方法解释: // V put(K key, V value) 向集合中添加键值对 hashMap.put("11","xx");// hashMap.put("22","yy"); System.out.println(hashMap.size()); //void cl...

2022-04-21 23:29:14 797

原创 Mybatis延时加载

延时加载配置打开延时加载装置 <settings> <!--打开延时加载开关--> <setting name="lazyLoadingEnabled " value="true"/> <!--将积极加载改为消极加载即延时加载--> <setting name="aggressiveLazyLoading " value="false"/> </s

2022-04-08 17:31:50 1029

原创 Mybatis高级映射

Mybatis高级映射本质上来说是多个表的联合查询过程订单数据模型分析思路数据表:用户表user:记录了购买商品的用户信息订单表orders:记录了用户创建的订单(购买商品的订单)订单明细表orderdatail:记录了订单的详细信息即购买商品的信息商品表items:记录了商品信息数据模型分析:表与表之间的业务关系:用户表user和订单表order的关系:(一对多关系)user->orders:一个用户可以创建多个订单,一对多orders->u

2022-04-08 17:13:51 1065

原创 Mybatis深入

Mybatis的代理详解Java中动态代理主要是JDK动态代理(接口),CGLib动态代理(类继承 )JDK动态代理:1.首先存在接口(studentMapper) 2.必须存在该接口的实现类 3. 实现invocationHandler辅助类 4.通过Proxy类来产生代理对象...

2022-04-07 10:54:42 223

原创 Spring AOP介绍

AOP(Aspect Oriented Programing)(面向切面编程),是通过预编译方式或者是运行期期间动态代理实现功能扩展而不用修改源代码,通过AOP技术,实现一种通用的逻辑解耦,解决一些系统层面的问题,如日志,事务,权限等,从而实现高可用的可重用性和可维护性AOP的设计原理和思想AOP横向抽象技术的介绍...

2022-03-31 21:58:14 137

原创 Spring IOC介绍

IOC介绍IOC是什么IOC(inversion of control)即“控制反转 ”,意味着将设计好的对象交给容器控制传统的Java程序设计,直接在对象内部通过new形式来创建对象,是程序主动去创建依赖对象,即谁调用谁来创建对象,谁来初始化对象。而IOC技术是由一个专门的容器去创建对象,IOC容器来控制对象的创建而不是显式的使用new对象的创建交给容器管理,就是控制反转。控制反转是通过容器来完成的,Spring中提供了这样一个容器,称之为IOC容器。无论是创建对象,处理对象之间的

2022-03-30 16:55:07 603

原创 Spring介绍

Spring介绍Spring是什么官网:Spring | HomeSpring框架是开源Java平台,是轻量级的框架主要特征:

2022-03-29 16:09:25 544

原创 动态SQL

mybatis中特征之一是支持动态SQL通过标签的形式来动态编写SQL,根据业务逻辑来动态的进行SQL拼接功能mybatis提供九种动态SQL标签:trim/if/where/set/foreach/choose/when/otherwise/bind执行原理,使用OGNL从SQL参数对象中动态计算表达式的值,根据表达式的值动态拼接SQL,以此完成动态SQL的功能标签if 标签:动态SQL通常作为where子句的一部分常用于查询、插入、更新等操作场景:根据姓名、性别、姓名和性

2022-03-28 20:11:30 641

原创 Junit测试框架介绍

测试是保证代码健壮必不可少的环节,自己构建测试方法比较慢,并且也不规范,java中提供了Junit测试框架可以进行一键构建单元测试Junit测试步骤1.添加Junit依赖<!--Junit测试框架依赖--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.1

2022-03-23 21:30:14 324

原创 Mybatis介绍

JDBC编程及问题JDBC使用步骤1.引入依赖jar包<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.27</version> </dependency>2.编程流程加载数据库驱动 ->获取数据库的

2022-03-22 16:34:02 354

原创 网络概述介绍

网络概括计算机网络:通过传输介质、通信设施和网络通信协议,把分散在不同地点的计算机设备互联起来,实现资源共享和数据传输网络编程:编写程序代码将两个或者两个以上的设备进行数据传输OSI参考模型将复杂的网络问题根据功能划分到不同层次上,层与层之间通过接口连接OSI(Open System Interconnection)开发互联参考模型,OSI将网络划分为7层:分别物理层,数据链路层,网络层,传输层,会话层、表示层和应用层物理层:OSI的最底层,涉及通信信道上传输的原始比特.

2022-03-19 16:09:22 2716

原创 MySQL优化

MySQL优化方向:在设计上:字段类型,存储引擎,范式在功能上:索引,缓存,分库分表在架构上:集群,主从复制,负载均衡,读写分离SQL优化1.插入优化大量数据采用批量插入形式 事务设置手动提交,MySQL默认是自动提交,意味着每写一个SQL事务就自动提交,可能会频繁的涉及事务开始和提交,所以建议手动提交2.order by优化Using filesort:通过表的索引或者全表扫描,读取到满足条件的数据行,然后在排序缓冲区 sort buffer 中完成排序,所以返回的数据

2022-03-19 10:25:13 10484

原创 MySQL之事务详解

并发事务问题在多个事务并发运行时,会遇到

2022-03-17 15:30:27 1224

原创 MySQL之索引

索引底层结构MySQL支持两种索引:一种是基于B树索引、一种是基于哈希表索引,这两种索引的查询效率比较高MySQL中B树(B+树)的索引结构B树特征大多数的存储引擎都支持B树索引,B树通常意味着所有的值按照顺序存储,并且每个叶子节点到根的距离相同,B树索引能够加快数据访问的速度B树特征根节点至少包含两个孩子节点 树中每个结点最多含有m个孩子(m >= 2) 除了根节点和叶结点外,其他每个结点至少含有ceil(m/2)个孩子,ceil为向上取整 所有叶子结点位于同一层

2022-03-15 21:08:09 863

原创 MySQL事务

事务定义一个事物是有一条或多条对数据库操纵的SQL语句组成的一个不可分割的单元,只有当事物中所有的操作都正常执行完了,整个事务才会被提交到数据库,如果有部分事务处理失败,事务就要回滚到最初的状态,因此,事务要么全部执行成功,要么全部失败。经典案例:银行转账事务特征(ACID)...

2022-03-14 11:06:58 1433

原创 索引基础知识

索引介绍索引是一种数据结构,是在表上创建的。是对数据库表中的一列或者是多列的值进行排序的一种结果,使用索引可以提高查询速度,避免全表扫描。优势:提高查询效率,避免全表扫描缺点:过多的索引会导致CPU的使用率过高索引分类普通索引:没有任何限制条件,可以给任何类型的字段创建普通索引主键索引:使用primary key修饰的字段会自动创建索引唯一性索引:使用unique修饰的字段,值不能重复,主键索引隶属于唯一性索引单列索引:在一个字段上创建索引多列索引:在表中多个字段上创建索

2022-03-12 16:44:44 1459

原创 MySQL介绍

MySQL介绍了解MySQLMySQL分为企业版和社区版,社区版是完全免费开源的MySQL是属于关系型数据库,和其他的关系型数据库最大的区别在于支持可插拔式的存储引擎,其中InnoDB非常强大目前大部分公司使用的关系型数据库都是以MySQL作为数据存储解决方案MySQL设计是C/S客户端服务端模式,应用作为MySQL Client向MySQL Server发送请求,获取响应结果,因此MySQL非常适用于集群环境,方便做主从复制,读写分离操作为了提高效率,MySQL Client和

2022-03-10 10:12:34 1009

原创 AIO模型

AIO:异步非阻塞AIO需要操作系统的支持,在Linux内核2.6版本之后增加了对真正异步IO的实现。java从JDK1.7之后支持AIO,JDK1.7新增一些与文件/网络IO相关的一些API,称之为NIO2.0或者称之为AIO(Asynchronous IO)。AIO最大的特征提供了异步功能,对于socket网络通信和文件IO都是起作用的。与NIO不同,当进行读写操作时,只需直接调用API提供的读写方法,这些方法均是异步操作。对于读操作而言:当有流可读取时,操作系统会将可读的流传入read

2022-03-08 09:34:53 510

原创 NIO模型

NIO:同步非阻塞模型采用事件驱动的思想来实现一个多路复用器,主要是来解决高并发问题NIO中存在IO复用器,一个复用器可以同时监听多个用户的连接或者读写操作,基于事件驱动,一个复用器通过一个线程来管理,意味着一个线程可以处理多个用户的请求事件NIO底层本质采用的是IO复用模型NIO中提供了(selector)选择器也叫做多路复用器,作用是检查一个或者多个NIO channel的状态是否可读、可写等。可以实现单线程管理多个channel,也可以管理多个网络请求。channel(通道

2022-03-08 08:51:09 924

原创 BIO模型

BIO介绍BIO(blocking IO)同步阻塞在JD1.4之前,建立网络连接时采用BIO模型BIO的流程比较简单,在服务端创了一个ServerSocket去监听等待连接,客户端去创建一个Socket去连接服务端,建立连接之后,客户端和服务端就可以进行网络数据传输同步阻塞的理解:在BIO编程中,方法acceot()等待客户端的连接,而客户端何时发起连接是未知,accept等待操作一旦发起之后,需要一直阻塞等待连接,直到有客户端的连接之后才能accept返回,整个过程是阻塞的。除了a

2022-03-03 19:39:21 247

原创 行为性设计模式(模板,责任链,观察者,策略,迭代器)

行为性设计模式关注各个类之间的相互作用,将职责划分清楚,使得代码更加清晰行为性设计模式分为类行为模式和对象行为模式,类行为模式采用继承机制在类间分派任务,对象行为模式采用组合或集合在对象间分配任务,对象行为模式比类行为模式具有更大的灵活性。行为性设计模式是最大的一类模式,包含了11种设计模式:1、模板方法模式(Template Method):定义一个操作中的算法骨架,将算法的一些步骤延迟到子类中,2、策略模式(Strategy):定义一系列的算法,并将每个算法封装起来,使他们可以相互替

2022-03-02 20:35:41 270

原创 结构性设计模式(代理、适配器、装饰器)

结构型模式主要关注对象之间的关系,主要是为了改变代码结构来达到解耦的目的,代码容易维护有七种设计模式代理模式(Proxy)代理模式介绍由于某些原因需要给某个对象一个代理以控制该对象访问,这时,访问对象不再是直接引用目标对象,代理对象作为访问对象和目标对象之间的中介代理模式类图UML适配器模式(Adapter)装饰器模式(Decorator)...

2022-03-01 15:06:34 652

原创 创建型模式特点和分类(单例、工厂)

关注的问题:创建对象,将对象的创建和使用分离,这样的目的可以降低代码的耦合度的问题 单例模式、工厂模式、抽象工厂模式、原型模式、建造者模式单例模式(Singleton Pattern)定义:单例模式(Singleton Pattern):保证一个类只有一个实例,并提供一个访问它的全局访问点单例类图:单例中包含的角色:单例类:包含一个实例且能自行创建这个实例类单例模式特点:1.单例类只有一个实例对象2.单例对象必须由单例类自行创建3.单例类对外提供一个...

2022-02-28 20:00:55 179

原创 线程池介绍:ThreadPoolExecutor

线程池介绍为什么要线程池多线程技术主要解决处理器单元内多个线程执行的问题,可以减少处理器单元的闲置时间,增加处理器单元吞吐能力,多线程的情况下确实可以最大限度发挥多核处理器的计算能力,但是如果随意使用线程,对系统性能反而不利创建和销毁线程需要时间:假如一个服务器完成意向任务所需要的时间为:T1表示线程创建时间,T2表示线程执行任务时间,T3表示销毁时间,如果T1+T3远大于T2,那么会得不偿失 线程也需要占用内存空闲,大量的线程会抢占宝贵的内存资源,可能会导致OOM的异常大量的线程回收也会给

2022-02-28 10:31:47 816

原创 BlockingQueue

对于Queue而言,blockingqueue是主要的线程安全的版本,具有阻塞特征,可以允许添加、删除元素时被阻塞,直到成功为止,blockingqueue相对于Queue而言增加了两个方法put/takeBlockingQueue接口属于并发容器的接口,在java,util.concurrent包路径下BlockingQueue不接受null元素,尝试通过add/put、offer等添加一个null元素时,某些实现上会抛出nullpointExecption问题BlockingQueu

2022-02-25 19:35:01 444

原创 ConcurrentHashMap

在JDK1.4之前只有vector和HashTable是线程安全集合,在JDK1.5之后开始增加了安全的Map接口ConcurrentMap和线程安全的队列BlockIngQueue通过继承关系可知:ConcurrentHashMap是HashMap的安全版本ConcurrentMap也是键值对形式存储数据public interface ConcurrentMap<K, V> extends Map<K, V> {实现自Map接口,即Map中所有的

2022-02-25 14:58:26 833

原创 Lock和ReentrantLock

JDK1.5中提供了锁的接口:java.util.concrrent.locks.lock,提供了ReentrantLock,ReentrankReadWriteLock实现类Lock接口Lock接口提供了比Synchronized方法更加灵活的锁的操作接口,可以具有很大的属性,支持多个相关Condition对象(线程间通信,Object方法提供的wait、notify、notifyall)Lock接口提供的方法操作:Lock()void lock()获取锁,如果锁被使用会

2022-02-17 20:10:12 516

原创 锁及其优化

乐观锁和悲观锁悲观锁总是假设最坏的情况,每次在获取共享数据的时候都认为别人会修改,所以每次都在获取数据的时候加锁。即在整个数据处理过程中,将数据处于锁定状态。传统的数据库里就用到很多这种锁,比如行锁、表锁、读锁、写锁等都是在操作之前先上锁,比如java中Synchronized关键字的实现也是悲观锁。悲观锁存在的问题:在多线程竞争下,加锁,释放锁会导致比较多的上下文切换和调度延迟,引起性能问题,一个线程持有锁会导致其他需要此锁的线程挂起。乐观锁乐观锁认为数据一般情况下不会产生并发

2022-02-17 14:07:14 41

原创 网络部分介绍

一部分是理论基础:OSI模型、TCP/IP协议、TCP、UDP、IP另一部分编程基础:IO模型、BIO、NIO、AIO等Java网络IO模型讲解网络 编程部分:IO模型:阻塞IO、非阻塞IO、IO复用、信号驱动、异步IOBIO模型NIO模型AIO模型IO模型Java IO读写原理Java提供的IO操作:操作字节:InputStream和OutputStream操作字节:Reader和Writer操作文件:File操作网络:Socket涉及网络I

2022-01-14 23:31:13 132

原创 认识设计模式

设计模式的概念:是一套被反复使用,被多数人知晓,代码设计经验的总结。它是解决特定问题的一系列的套路,是前任代码设计的经验总结目的是提高代码的可用性,可读性和可靠性优点:代码复用:减少开发时间, 提高开发效率简洁易维护:便于代码的可读和代码的维护设计模式是开发工程化,规范化23种设计模式创建性模式(对象是如何产生或创建出来等问题): 单例模式、工厂模式、抽象工厂模式、建造者模式、原型模型结构性模式(主要说明对象之间的关系): 适配器模式、装饰...

2021-12-15 14:37:09 56

原创 Redis内存淘汰策略

在Redis作为缓存使用过程中,当内存不足时,Redis根据配置进行缓存淘汰大部分keys,保证后续写入能够成功。内存维护解决方案在Redis的配置文件中redis.conf 中memeory managen# maxmemory <bytes># MAXMEMORY POLICY:# volatile-lru -> Evict using approximated LRU, only keys with an expire set.# allkeys-lru -&g

2021-12-02 16:47:39 65

原创 给定三个线程,线程名分别为A、B、C。每个线程业务是打印名称,要求打印结果为ABC

思路分析:线程执行顺序必须是A线程执行、B线程执行、C线程执行A和B线程,在B线程中调用A.join()方法B和C线程,在C线程中调用B.package com.ww.Thread.CreateThread;public class ABCThread extends Thread{ private String name; private Thread thread; public ABCThread(Thread thread, String name)

2021-12-01 09:12:23 206

原创 多线程介绍

课程内容1.线程介绍“进程、线程概念、线程的创建方式、线程状态及状态转换关系、线程方法”2.java内存模型:并发特征:原子性、有序性、可见性...并发和并行、临界区等3.volatile关键4.Synchronized关键字...

2021-12-01 09:09:04 151

原创 Redis事物

Redis事务可以一次执行多个命令Redis事务就是一次性,顺序性,排他性的执行一个队列中的一系列的命令Redis不保证原子性Redis中,单条命令是原子执行的,但是事务不保证原子性,且没有回滚的概念。事务中任意命令执行失败,其余的命令仍会执行。Redis事务是没有隔离级别的概念批量操作在发送exec命令前被放入队列,并不会实际执行,也就不存在事务内的查询要看到事务里的更新,事务外查询不能看到事物命令Redis的事务机制:将批量操作的命令放入到队列缓存,在执行e.

2021-11-30 11:34:28 65

原创 Redis持久化

数据安全性问题,将内存数据存储到磁盘当中,即持久化问题RDB:内存快照内存快照:就是指内存中数据在某一时刻的状态记录。RDB是Redis中默认的持久化方案。RDB持久化会将内存中的数据写入到磁盘中,在指定的目录下生产一个dump.rdb文件。Redis重启时会加载dump.rdb文件恢复数据Redis中提供了两个命令生成RDB文件。分别save和bgsave.save:在主进程中执行,会导致阻塞bgsave:创建一个子进程,准们用户写入RDB文件,避免了主线程的阻塞,该方式是

2021-11-30 11:24:43 64

原创 IO流中的设计模式

装饰器模式:Decorator装饰器模式介绍装饰器模式在不必改变原类文件和不使用继承的情况下,动态的扩展一个对象的功能。它通过创建一个包装对象,用来包装真实的对象注意:不改变原类文件不使用继承动态扩展装饰器模式类图UML:存在四个角色:Component:为统一接口,也是装饰类和被装饰类的基本类型ConcreteComponent:为具体实现类,被装饰类,本身是具有完整功能的类Decorator:装饰类,在内部维护了一个ConcreteComponen

2021-11-18 15:15:12 442

原创 高级流介绍

转换流:将字节流和字符流进行相互转换OutputStreamWriter:将字节输出流转换为字符输出流InputStreamReader:将字节输入流转换为字符输入流

2021-11-16 15:25:28 234

原创 RandomAccessFile

构造函数RandomAccessFile(String name, String mode)RandomAccessFile(File file, String mode) 第一个参数指定路径可以是String类型或者File类型第二个参数mode指定访问形式mode有四种:1."r":以只读形式打开,调用任何write方法都会报错2.“rw”:进行读取和写入3.“rws”:进行读取和写入,对文件内容和元数据的每次更新都会写入到基础存储设备4.“rwd”:进行读取和

2021-11-16 15:20:01 476

原创 当前输入放入文件,从文件进行读取,求出现次数最多的两个数据,打印数据本身及出现次数

public static void readAndCount() { /** * 1.数据读取处理(按行读取,解析出数据) * 2.数据放入List中 * 3.进行统计:Map集合 * 4.求Top2:Queue集合 */ String path="E:\\java\\IO\\IOTest\\test1.txt"; try { Str...

2021-11-08 20:15:27 233

原创 字符流介绍

Reader:字符输入流Reader是IO库提供到的一个输入流基类和InputStream的区别是:InputStream是一个字节流,操作的是以byte为单位读取Reader是一个字符流,操作的是以char为单位读取Reader的声明方式:public abstract class Reader implements Readable, Closeable读取方法:public int read() throws IOExceptionpublic int read(ch

2021-11-05 15:43:30 167

空空如也

空空如也

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

TA关注的人

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