- 博客(61)
- 收藏
- 关注
原创 mybatis介绍
MyBatis框架(详述)文章目录MyBatis框架(详述)1.概述安装为什么用到mybatis?传统JDBC编程的问题**JDBC编程问题**MyBatis架构2.环境搭建3.Dao层开发之Mapper接口测试MyBatis参数传递结果处理懒加载Mybatis动态SQLmybatis一级缓存二级缓存1.为什么使用缓存?1.概述原是Apache的一个开源项目ibatis,2010年6月这个项目由Apache Software Foundation迁移到了Google Code,随着开发团队转投Goog
2021-08-19 11:34:56
356
原创 MySQL高级部分
文章目录MySql高级引擎1.概述2.查看支持的引擎3.InnoDB与MyISAM引擎区别索引1.为什么使用索引2.优点3.缺点4索引分类5.索引创建原则6.索引数据结构7.聚簇索引和非聚簇索引(辅助索引)事务1.概述2.事务特性3.事务设置并发事务处理带来的问题4.事务隔离级别锁机制1.概述2.行锁与表锁行锁表锁MVCC基本原理视图1.概述2.为什么使用3.语法存储过程1.概述2.语法函数1.语法不带参数带参数有参数,有判断触发器1.概述2.特点3.语法SQL优化方法执行计划EXPLAIN关键字MySq
2021-07-26 16:28:13
370
原创 ThreadLocal概述
TheadLocal线程封闭对象封闭在一个线程里,即使这个对象不是线程安全的,也不会出现并发安全问题。ThreadLocal线程封闭:简单易用使用ThreadLocal来实现线程封闭,线程封闭的指导思想是封闭,而不是共享。所以说ThreadLocal是用来解决变量共享的并发安全问题,是不精确的。概述ThreadLocal叫做线程变量,在ThreadLocal中填充的变量属于当前线程,该变量对其他线程而言是隔离的。ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内
2021-07-22 21:05:46
1034
2
原创 Java线程池
线程池概述**由来:**如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。**解决方法:**在Java中可以通过线程池来达到这样的效果。线程池里的每一个线程代码结束后,并不会死亡,而是再次回到线程池中成为空闲状态,等待下一个对象来使用。在jdk5之前,我们必须手动实现自己的线程池,从jdk5开始,Java内置支持线程池。在jdk5版本中增加了内置线程池实现ThreadPoolExecutor,同时提供
2021-07-22 15:44:00
217
原创 Java并发编程
Java并发编程1.并行与并发**并发:**多个任务在同一个CPU核上,按细分的时间片轮流(交替)执行,从逻辑上来看那些任务是同时执行。在单核CPU下,线程实际还是串行执行的。**并行:**单位时间内,多个处理器或多核处理器同时处理多个任务,是真正意义上的“同时进行”。2.多线程多线程:多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务。**优点:**可以提高 CPU 的利用率。在多线程程序中,一个线程必须等待的时候,CPU 可以运行其它的线程而不是等待,这
2021-07-21 19:37:31
111
原创 对象的克隆
对象克隆为什么要克隆?直接new一个对象不行吗?可莉的对象可能包含一些已经修改过的属性,而new出来的对象的属性都还是初始化时候的值,所以当需要一个新对象来保存当前对象的“状态”就靠clone方法了。如何实现clone两种方法:浅克隆、深克隆在Java中基本类型的值可以直接复制,引用类型只能复制引用地址。所以浅克隆和深克隆的主要区别在于是否支持引用类型的成员变量的复制。浅克隆在浅克隆中,如果原型对象的成员变量是值类型,将复制一份给克隆对象;如果原型对象的成员变量是引用类型,则将引用对象的地
2021-07-20 20:37:31
195
原创 JVM-垃圾回收机制
文章目录JVM-垃圾回收1.垃圾回收概述1.概述2.什么是垃圾?3.Java垃圾回收机制2.垃圾回收相关算法1.垃圾标记阶段算法2.垃圾回收阶段算法3.标记-压缩算法总结4.分代收集算法5.增量收集算法6.分区算法3.垃圾回收相关概念1.System.gc()2.内存溢出与内存泄漏3.Stop The World4.对象的引用4.垃圾回收器1.GC性能指标2.HotSpot垃圾收集器JVM-垃圾回收1.垃圾回收概述1.概述Java和C++语言的区别,就在于垃圾收集技术和内存动态分配上,C++语
2021-07-20 20:13:33
162
原创 java枚举
java枚举概述枚举是一个被命名的常数的集合,用于声明一组带标识的常数。在JDK1.5之前没有枚举类型,那时候一般用接口常量来替代。而使用Java枚举类型enum可以更贴近地标识这种常量。使用场景:类的对象只有有限个,确定的。例如:星期:Monday(星期一)…Sunday(星期天)性别:Man(男),Woman(女)季节:Spring(春),…Winter(冬)支付方式:Cash(现金),WeChatPay(微信),AliPay(支付宝),BankCar(银行卡)订单状态:Nonp
2021-07-19 20:38:55
111
原创 spring进阶
文章目录spring进阶1.BeanFactory和ApplicationContext区别2.Spring Bean生命周期3.Spring中的Bean是线程安全的吗?Spring的Bean作用域(scope)类型4.Bean循环依赖怎么造成的?发生在哪?是个问题吗?Spring内部三级缓存:5.面向对象设计原则6.Java设计模式常用设计模式单例模式(创新型模式)工厂模式(创新型模式)代理模式(结构型模式)7.注解什么是注解?内置的注解spring进阶1.BeanFactory和Applicatio
2021-07-19 20:28:37
273
原创 spring概述+面试
文章目录spring框架1.概念1.核心2.优点3.缺点2.Spring体系结构3.Spring Hello World 搭建4.IOC(控制反转)1.作用:2.使用IOC容器的优点:3.spring IOC支持哪些功能4.依赖注入(DI)5.面向切面编程(aop)1.什么是AOP?6.事务概念spring中事务管理分为两种形式事务传播行为spring框架资料官方学习网站地址:https://spring.io/1.概念Spring是一个轻量级的Java开源框架,它是为了解决企业应用开发的复杂性而创
2021-07-18 19:39:38
244
1
原创 nginx概述+面试
文章目录概述1.Nginx是什么?2.特点3.什么是代理服务器4.正向代理5.反向代理6.负载均衡7.动静分离8.nginx配置文件Nginx文件结构概述1.Nginx是什么?Nginx是高性能的HTTP和反向代理的Web服务器,处理高并发能力十分强大。Nginx专为性能优化而开发,性能是服务器最重要的考量,实现上非常注重效率,能经受高负载的考验,有报告表明能支持高达50000个并发连接数。在高连接并发的情况下,Nginx是Apache服务器不错的替代品。Nginx不仅能做反向代理,实现负载均衡
2021-07-18 18:01:40
127
原创 redis概述+面试
文章目录1.redis概述1.是什么?2.特点3.优势4.Redis是单进程单线程的?5.关系型数据库与非关系性数据库6.Redis中过期的key是怎么被删除的?2.数据类型1.string(字符串)2.hash(哈希)3.list(列表)4.set(集合)5.zset(有序集合)6.设置失效时间3.springboot集成使用redis4.主从复制5.哨兵机制6.缓存穿透、缓存击穿、缓存雪崩1.缓存处理流程2.缓存穿透布隆过滤器3.缓存击穿4.缓存雪崩1.redis概述1.是什么?Redis是一个完
2021-07-18 17:58:12
120
原创 Linux概述+面试
文章目录1.Linux概述1.由来2.是什么?3.Unix和Linux有什么区别?4.什么是Linux内核?5.特点6.用途2.linux目录结构3.linux常用命令4.虚拟软件网络模式1.NAT网络模式2.桥接网络模式3.仅主机模式5.软件安装6.vim编辑器vim和vi1.Linux概述1.由来Linux内核最初只是由芬兰人林纳斯·托瓦兹在赫尔辛基大学上学时出于个人爱好而编写的。2.是什么?Linux是一套免费使用和自由传播的类Unix操作系统,是一个多用户、多任务、支持多线程和多CPU的操
2021-07-18 17:53:15
904
6
原创 JVM执行引擎(详细+面试)
JVM执行引擎(详细+面试)文章目录JVM执行引擎(详细+面试)概述Java代码编译和执行过程什么是解释器?什么是JIT编译器?为什么要保存解释器?编译器不确定性为什么Java是半编译半解释语言?什么是热点代码?JIT编译器执行效率高为什么还需要解释器?概述执行引擎是Java虚拟机核心的组成部分之一。JVM的主要任务是负责装载字节码到其内部,但字节码并不能够直接运行在操作系统之上,因为字节码指令并非等价于本地机器指令,它内部包含的仅仅只是一些能够被JVM识别的字节码指令、符号表,以及其他辅助信息。
2021-04-20 17:09:05
273
1
原创 JVM本地方法接口
JVM本地方法接口文章目录JVM本地方法接口1.什么是本地方法2.为什么使用Native Method1.什么是本地方法一个Native Method就是一个java调用非java代码的接口,一个Native Method是这样一个java方法:该方法的底层实现由非Java语言实现,比如C。这个特征并非Java特有,很多其他的编程语言都有这一机制在定义一个Native Method时,并不提供实现体(有些像定义一个Java interface),因为其实现是由非Java语言在外面实现的。关键字na
2021-04-20 16:26:58
228
2
原创 JVM运行时数据区(详解+面试)
1.概述JVM的运行时数据区,不同虚拟机实现可能略微不同,但都会遵从Java虚拟机规范,Java 8虚拟机规范规定,Java虚拟机所管理的内存将会包括一下几个运行时数据区域:程序计数器(Program Counter Register)程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。java中最小的执行单位是线程,因为虚拟机的是多线程的,每个线程是抢夺cpu时间片,程序计数器就是存储这些指令去做什么,比如循环,跳转,异常处理等等需要依赖它。每个线程都有属于自己.
2021-04-15 22:03:17
5930
14
原创 JVM类加载器(详解)
JVM类加载器1.类加载子系统的作用类加载器子系统负责从文件系统或者网络中加载class文件,class文件在文件开头有特定的文件标识。2.类加载过程当程序主动使用某个类时,如果该类还未被加载到内存中,则JVM会通过加载、连接、初始化3个步骤来对该类进行初始化。如果没有意外,JVM将会连续完成3个步骤,所以有时也把这3步骤统称为类加载或类初始化。类被加载到 JVM 开始,到卸载出内存,整个生命周期如图:1.加载通过类名(地址)获取此类的二进制字节流。将这个字节流所代表的静态存储结构转换
2021-04-10 13:17:26
7760
25
原创 JVM概述
JVM概述1.虚拟机虚拟机就是一台虚拟的计算机。通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的计算机系统。它是一款软件,用来执行一系列虚拟计算机指令。大体上,虚拟机可以分为系统虚拟机(例如:VMware)和程序虚拟机(例如:java虚拟机)。无论是系统虚拟机还是程序虚拟机,在上面运行的软件都被限制于虚拟机提供的资源。VMware完全对物理计算机的仿真,提供了一个可运行完整操作系统的软件平台。java虚拟机(JVM)专门为执行某个单个计算机程序而设计。Java虚拟机是一种
2021-04-05 14:09:24
1366
14
原创 Maven简介
Maven简介1.概念为什么要学maven?jar包难以寻找。jar包依赖的问题。jar不方便管理。项目编译。Maven简介:Maven是Apache软件基金会的一个开源项目,它用来帮助开发者管理项目中的jar,以及jar之间的依赖关系、完成项目的编译、测试、打包和发布等工作。2.Pom(项目对象模型)Maven管理的项目的根目录下都有一个pom.xml文件。pom.xml文件指示Maven如何工作。在pom.xml文件中配置项目基本信息以及项目构建信息等。比如:项目坐标、项目依赖的
2021-04-01 18:38:27
228
2
原创 JSON简介
JSON简介1.概念JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。数据在键值对中数据由逗号分隔大括号保存对象方括号保存数组语法:JSON键值对是用来保存JS对象的一种方式,和JS对象的写法也大同小异,键/值对组合中的键名写在前面并用双引号“”包裹,使用冒号:分隔,然后紧接着值:{"firstName":"John"}{"name":"value","sex":"男"}2.java对象转JSON在异步交换数据时,java对象不能直接
2021-04-01 18:30:47
207
原创 Ajax简介
Ajax简介1.概念Ajax全称为:“Asynchronous JavaScript and XML”(异步 JavaScript 和 XML)。Ajax其实质是利用浏览器提供的一个特殊的对象(XMLHttpRequest)异步地向服务器发送请求,服务器返回部分数据,浏览器让你去利用这些数据对象页面做部分的更新,整个过程,页面无刷新,不打断用户的操作。同步和异步的区别<%@ page contentType="text/html;charset=UTF-8" language="java"
2021-04-01 18:30:13
414
原创 java反射机制介绍与应用
Java反射机制介绍与应用1.对象创建的几种方法(显式)用new语句创建对象,这是最常用的创建对象的方式。调用对象的clone()方法。运用反序列化手段,调用java.ioObjectinputStream对象的readObject()方法。运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。2.反射概念(1)Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息,从而操作类或对象的
2021-03-15 18:47:01
207
原创 XML简介
XML简介1.概念XML指可扩展标记语言。XML是一种标记语言,很类似HTML。XML的设计宗旨是传输,存储数据,而非显示数据。XML标签没有被预定义。需要自行定义标签。XML被设计为具有自我描述性。XML与HTML的区别XML被设计为存储数据,其焦点是数据的内容。HTML被设计用来显示数据,其焦点是数据的外观。XML的优势它能对各种编程语言编写的数据进行管理,使得在任何平台下都能通过解析器来读取XML数据。2.XML语法XML的语法规则:所有XML元素都须有关闭标签
2021-03-15 13:01:16
230
原创 JavaScript介绍和应用
JavaScript1.概述JavaScript是由Netscape公司(美国网景公司)开发的一种脚本语言, 结构简单,使用方便,对用户自身知识水平的要求并不高,易学易懂。脚本语言:脚本语言(JavaScript,VBscript等)介于HTML和C,C++,Java,C#等编程语言之间。HTML通常用于格式化和链接文本。而编程语言通常用于向机器发出一系列复杂的指令。脚本语言与编程语言也有很多相似地方,其函数与编程语言比较相像一些,其也涉及到变量。与编程语言之间最大的区别是编程语言的语法和规则
2021-03-15 13:00:29
737
原创 JDBC介绍和应用
JDBC1.概述JDBC – java数据库连接是一种用于执行SQL语句的java API,可以为多种关系型数据库提供统一访问,它由一组用java语言编写的类和接口组成。三方关系Java定义者制定了JDBC规范数据库开发商实现接口[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sZ7o86Nz-1611388863062)(C:\Users\Administrator\Desktop\图片1.png)]Java API中提供了操作数据库的标准接口,最终由不同的数
2021-01-23 16:01:33
195
原创 数据库MySQL基础(4)
数据库MySQL基础(4)SQL语法4.多表设计为什么需要多表关联?解决数据冗余问题,对数据进行拆分。数据库设计范式为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规律。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。目前关系数据库有6种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。第一范式(1NF)(确保每列保持原子性)所谓第一范式(1NF)是指在
2021-01-22 20:29:01
353
原创 数据库MySQL基础(3)
数据库MySQL基础(3)SQL语法2.DMLDML:数据操纵语言常用语句:insert,delete,update插入数据#方式1: INSERT INTO 表名(列1,列2……,列n) VALUES(值1,值2…..,值n);INSERT INTO student(stu_num,stu_name,stu_sex) VALUE(101,'张三','男');#方式2: INSERT INTO 表名 set 列名1=值1,..列名n=值n;INSERT INTO student SET
2021-01-22 20:28:30
223
原创 数据库MySQL基础(2)
数据库MySQL基础(2)SQL语法1.DDL数据(结构)定义语言DDL,是用于创建和修改数据库表结构的语言。创建,删除数据库创建数据库并设置编码格式CREATE DATABASE [ IF NOT EXISTS] 数据库名 [CHARSET utf8]IF NOT EXISTS – 判断数据库是否存在,即数据库名是否重复。CHARSET – 设置编码格式CREATE DATABASE IF NOT EXISTS test CHARSET utf8删除数据库DROP DATA
2021-01-20 15:16:26
203
原创 数据库MySQL基础(1)
数据库MySQL基础(1)1.数据库概述为什么学习数据库?实现数据持久化到本地;使用完整的管理系统统一管理,可以实现结构化查询,方便管理;数据库为了方便数据的存储和管理,它将数据按照特定的规则存储在磁盘上,就是一个存储数据的仓库。通过数据库管理系统,可以有效的组织和管理存储在数据库中的数据。数据库的相关概念:DB:数据库(DataBase)一个以某种有组织的方式存储的数据集合,保存有组织的数据的容器(通常是一个文件或一组文件)根据不同的存储类型可以分为:关系型数据库关系型数
2021-01-18 17:21:03
167
原创 java-内部类的介绍和应用
1.内部类1.概念把类定义在另一个类的内部,该类就被称为内部类。广义上我们将内部类分为四种:成员内部类、静态内部类、方法(局部)内部类、匿名内部类。/*** 我是一个外部类(外部是相对内部而言)*/public class Outer{ /** * 我是一个内部类 */ class Inner{ //... }}java内部类有什么好处?为什么需要内部类?每个内部类都能独立继承一个(接口的)实现,所有无论外围类是否已经继承了某个(接口的)实现,对内部类都没有影响。也就是说
2021-01-04 22:21:23
162
原创 Java-GUI的介绍与应用
1.概念早期,电脑向用户提供的是单调、枯燥、纯字符状态的“命令行界面(CLI)”。就是到现在,我们还可以依稀看到它们的身影:在Windows中开个DOS窗口,就可看到历史的足迹。后来,Apple公司率先在电脑的操作系统中实现了图形化的用户界面(Graphical User Interface,简称GUI),但由于Apple公司封闭的市场策略,自己完成电脑硬件、操作系统、应用软件一条龙的产品,与其它PC不兼容。这使得Apple公司错过了一次一统全球PC的好机会。 后来,Microsoft公司推出了风靡全
2020-12-31 20:32:36
810
原创 生产者/消费者问题java实现
生产者/消费者问题生产者(Productor)将产品放在柜台(Counter),而消费者(Customer)从柜台处取走产品,生产者一次只能生产固定数量的产品(比如:1), 这时柜台中不能再放产品,此时生产者应停止生产等待消费者拿走产品,此时生产者唤醒消费者来取走产品,消费者拿走产品后,唤醒生产者,消费者开始等待.//柜台public class Bar { static int num; static Object obj = new Object(); public Ba
2020-12-22 17:37:14
173
1
原创 java线程介绍和应用
java-线程介绍和应用1.概念程序,进程,线程的概念程序是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码。进程就是正在执行的程序,是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,即进程空间或(虚空间)。进程不依赖于线程而独立存在,一个进程中可以启动多个线程。比如在Windows系统中,一个运行的exe就是一个进程。线程是指进程中的一个执行流程,是一个进程内部的最小执行单元(执行任务),一个进程中可以运行多个线程。比如java.exe进程中可以运行很多线程
2020-12-22 17:36:09
274
原创 java-网络编程的介绍和应用
java-网络编程1. 概述计算机网络是通过传输介质、通信设施和网络通信协议,把分散在不同地点的计算机设备互连起来的,实现资源共享和数据传输的系统。网络编程就是编写程序使互联网的两个(或多个)设备(如计算机)之间进行数据传输。Java语言对网络编程提供了良好的支持。通过其提供的接口我们可以很方便地进行网络编程。 网络编程的目的用来实现网络互连的不同计算机上运行的程序键可以进行数据交换直接或间接地通过网络协议与其他计算机进行通讯java.net包中J2SE的API包含有类和接口,它
2020-12-08 18:05:09
1614
原创 java-IO流的介绍和应用
预习IO流1.概念流:代表任何有能力产出数据的数据源对象或者是有能力接受数据的接收端对象流的本质:数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。作用:为数据源和目的地建立一个输送通道IO流:数据传输是需要通道的,而IO流就是数据传输的通道.IO流可以形象的比喻为运送货物的传输带.2.分类根据操作的数据类型的不同可以分为:字节流与字符流.根据数据的流向分为:输入流与输出流,程序(内存)作为参照物,程序从外部读取称为输入(Input),程序向外部写数据成为输出(Outp
2020-12-06 16:43:10
201
原创 java-File类的介绍和应用
1.File类概念File类是java.io包中很重要的一个类;File类的对象可以表示文件,还可以表示目录,在程序中一个File类对象可以代表一个文件或目录;File对象可以对文件或目录的属性进行操作,如:文件名,最后修改日期,文件大小等;File对象无法操作文件的具体数据,即不能直接对文件进行读/写操作.路径:用于表示文件或者文件夹在当前系统中的位置.路径分类:1.绝对路径,没有任何的歧义,也没有任何的前提条件,Windows,从盘符开始的路径,例如"D:/a/b/c/d/a.txt
2020-11-28 20:41:18
1026
原创 javaMap集合的两种遍历(以HashMap为例)
第一种遍历方法(将Map中的)HashMap<String,String> map = new HashMap<>(); map.put("a","a"); map.put("b","b"); map.put("c","c"); map.put(null,"q");//只允许有一个null Collection<String> values = map.values();//Collec.
2020-11-24 21:09:27
229
1
原创 java中集合介绍与运用
集合List1.概述java中对于各种数据结构的实现,就是我们用到的集合集合与数组的区别:长度区别:数组固定.集合可变.内容区别:数组可以是基本类型,也可以是引用类型.集合只能是引用类型.元素内容:数组只能存储同一种类型集合可以存储不同类型(其实集合一般存储的也是同一种类型).集合体系java的集合框架是由很多接口、抽象类、具体类组成的,都位于java.util包中2.Collection接口Collection接口-定义了存取一组对象的方法,其
2020-11-22 22:39:50
263
1
原创 java中的泛型使用介绍
泛型概念泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。也就是说在泛型使用过程中,操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别被称为泛
2020-11-21 12:31:30
227
原创 java中for循环、增强for循环、迭代器的删除元素操作使用注意(以Arraylist为例)
for循环public static void main(String[] args) { ArrayList list = new ArrayList(); list.add("a"); list.add("a"); list.add("a"); list.add("z"); list.add("s"); list.add("a"); //for循环遍历 //注意删除元素后集合长度发生,i一直.
2020-11-21 10:38:07
610
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人