- 博客(38)
- 收藏
- 关注
原创 mysql对数据进行增删改查(crud)的操作
mysql的增删改查(crud)操作添加(create)第一种方式第二种方式第三种方式删除(delete)第一种方式第二种方式更改查询添加(create)第一种方式insert into 表名(字段名称,字段名称)values(字段所对应的值,字段所对应的值)例:第二种方式insert into 表名values(字段所对应的值,字段所对应的值,字段所对应的值,字段所对应的值)注:这种方式一定要一一对应例:第三种方式批量添加:insert into 表名(
2021-09-06 18:11:04
2526
2
原创 JVM虚拟机模型与类加载机制
JVM虚拟机模型与类加载机制JVM虚拟机模型堆(heap)虚拟机栈(stack)方法区本地方法栈类加载机制JVM虚拟机模型堆(heap)在虚拟机启动的时候,堆就会被创建出来。可以通过相关参数来设置堆的大小等(例:-Xms:初始堆大小,-Xmx:最大堆大小,-Xmn:年轻代大小等)堆是虚拟机中最大的一块内存区域,是线程共享的。堆区又分为年轻代和老年代,其中,年轻代又分为Eden、s0、s1三部分,他们的默认比例为8:1:1堆是GC(垃圾回收器)重点关注的对象。如果heap不足,会抛出OutOf
2021-08-31 20:24:24
180
原创 ORM框架
ORM框架什么是ORM?mybatis原理开发流程1、使用maven新建一个javaSE项目2、配置依赖(引入jar包)3、创建实体类和表4、规范数据的操作(定义数据库的CRUD): mapper5、配置框架(1)配置数据库相关信息(2)配置表和类的映射及crud(sql)6、代码测试(实现)jpa什么是ORM?Object Relation Map面向对象与关系型数据库的映射框架将后台对对象进行的操作映射到数据库中对表的操作mybatis原理1、将对象映射到表2、使用sqlSession进
2021-08-22 01:13:57
248
原创 maven项目构建
maven项目构建maven是什么maven项目的构建下载maven压缩包解压并配置settings文件sts(eclipse)配置maven新建maven项目maven项目结构maven是什么maven是一个项目管理工具,Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建。Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。maven项目的构建下载maven压缩包解压并配置settings文件1、新建文件夹,命名为maven-respository(此
2021-08-21 12:24:24
298
原创 eclipse(SpringToolSuite)配置tomcat
配置apache-tomcat1、下载tomcat压缩包并解压2、打开sts,进行配置(1)切换到Java EE(2)重新设置编码格式、字体颜色等(3)点击servers(4)打开tomcat继续配置3、注意测试是否配置成功1、下载tomcat压缩包并解压2、打开sts,进行配置(1)切换到Java EE(2)重新设置编码格式、字体颜色等(3)点击servers点开链接选择Tomcat v9.0找到前面解压好的tomcat文件夹,JRE选择jdk_1.8最后点击finis
2021-08-15 11:36:52
1101
原创 Java常见问题(9问)
Java面试题(9问)1. 列举java的常用容器(集合)2. List和Set的区别,不可重复是什么意思?3. HashMap是否线程安全,如果想用线程安全的HashMap怎么做?4. 编写一个单例模式,常见的单例有哪些,分别列举?5. 有哪些排序算法,写出快速排序算法的实现6. 给一个二叉树,使用递归和非递归完成先序,中序和后序的遍历7. 数据库的事务的四大特性及数据库的隔离级别8.TCP的三次握手和四次挥手9. GET/POST的区别,除了GET/POST还有哪些?1. 列举java的常用容器(集合
2021-08-03 21:40:54
172
原创 HTTP与HTTPS
HTTP与HTTPSHTTP(Hyper Text Transfer Protocol)无状态无连接HTTP原理HTTP报文请求方法HTTPS(Hyper Text Transfer Protocol over SecureSocket Layer)HTTPS原理HTTPS的缺点HTTP(Hyper Text Transfer Protocol)HTTP(超文本传输协议),是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,是互联网上应用最为广泛的一种网络协议,所有的www文件
2021-08-02 23:44:23
150
原创 数据库常见问题(9问)
数据库面试题(9问)1、比较Innodb和Myisam引擎的区别(1)事务(2)存储(3)锁(4)表主键(5)外键(6)效率2、描述MVCC3、事务的四大特性是什么?请分别描述(1)原子性(2)持久性(3)隔离性(4)一致性4、mysql的索引的底层树结构,为什么使用此种结构?5、Innodb和MyIsam的B+树实现有什么不同?6、简述聚簇索引和非聚簇索引的区别,Innodb使用哪种索引?7、描述更新一行数据的过程8、描述jdbc开发的基本流程9、简述数据表设计的三大范式1、比较Innodb和Myisa
2021-07-23 00:10:27
386
原创 OSI模型及TCP协议三次握手四次挥手
这里写目录标题OSI七层模型物理层(bit流)数据链路层(数据帧frame)网络层(数据包packet)传输层(数据段segment)会话层(报文)表示层(报文)应用层(报文)TCP三次握手四次挥手OSI七层模型从下到上依次为:物理层(bit流)定义设备标准,如网线的接口类型、各种传输介质的传输速率等物理层定义的规范有:RS—232、RJ—45等数据链路层(数据帧frame)这一层定义了如何让格式化数据进行传输,通常还提供错误检测和纠正,以确保数据的可靠传输在这一层中工作的协议有:ARP、I
2021-07-14 17:23:31
141
原创 mysql的创建及使用
这里写目录标题常用命令mysql语句创建用户三级目录常用命令(1)启动dockersystemctl start docker(2)列出docker 中的镜像docker image ls(3)启动mysql(其中名字和密码可以自己设)docker run itd --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123 docker.io/mysql(4)识别中文docker exec -it mysql env LANG=C.UTF-
2021-07-11 12:33:26
442
原创 安装虚拟机、centos、docker、mysql
这里写目录标题安装虚拟机1、准备安装程序2、安装安装centos操作系统创建虚拟机启动虚拟机安装虚拟机1、准备安装程序2、安装安装centos操作系统创建虚拟机选典型选择centos镜像文件,选择稍后安装操作系统选择linux,centos 7 64位命名虚拟机,选择存储位置分配空间,选择默认即可自定义硬件完成启动虚拟机选右下角从左往右数第二个图标,连接镜像...
2021-07-06 19:05:13
105
原创 JAVA--线程池
线程池线程池的优点二级目录三级目录线程池的优点(1)可以减少线程的创建、销毁次数,降低资源消耗。(2)防止服务器过载(3)提高响应速度(4)提高线程的可管理性二级目录三级目录...
2021-07-05 21:42:10
114
原创 生产者消费者模式
生产者消费者模式产品商店注:生产者消费者测试产品商店注:使用wait()时,一定要加锁(synchronized),否则会报错生产者消费者测试
2021-07-02 16:55:07
91
原创 设计模式---单例模式
设计模式单例模式实现方式懒汉模式饿汉模式使用枚举创建单例模式单例模式确保只有单个对象被创建,单例类只能有一个实例在内存中有且只有一个对象对象一直存在内存中优点:可以减少创建和销毁对象的次数,防止过度创建对象,浪费内存资源实现方式构造方法私有化懒汉模式需要的时候再创建可以看到线程不安全:可以加锁来解决:饿汉模式一上来就创建使用枚举创建单例模式...
2021-07-01 19:16:02
84
原创 线程锁---synchronized
线程锁synchronized互斥锁死锁synchronized互斥锁修饰一个方法或一个代码块时,可以保证在同一时刻最多只有一个线程执行该代码例:当使用基本数据类型 int 并对其进行操作时,会出现线程不安全的情况。可以使用两种方法解决:(1)使用AtomicInteger保证原子性(2)加锁,使用synchronized修饰方法或代码块使用synchronized修饰方法后:或者使用synchronized()锁定代码块:由于num为基本数据类型,基本数据类型不能锁,所以后面为
2021-06-30 17:46:37
338
原创 线程安全问题
线程安全的三大特性可见性(volatile)二级目录三级目录原子性有序性可见性(volatile)在线程中,存在 主内存 和每个线程各自的 工作内存 ,线程运行时会把主内存中的拷贝过来并进行操作。如果不加volatile关键字的话,在一个线程中修改后,其他线程是不可见的。加了volatile关键字后,在一个线程中修改时会将主内存中的同时进行刷新,其他线程就可看见修改后的内容。例:可以看到给flag加了volatile关键字后,b线程将其修改后对a线程是可见的二级目录三级目录原子性有序
2021-06-29 22:08:01
170
原创 JAVA线程(2)
线程的阻塞问题为什么要阻塞?(1)未阻塞(2)阻塞阻塞方法(1)sleep()(2)Thread.yield()(3).join()守护线程---- .setDaemon(true)可以使用 .setPriority(num)来设置线程的优先级为什么要阻塞?阻塞此线程后,可以给其他线程机会运行例:(1)未阻塞(2)阻塞阻塞方法(1)sleep()使线程等待固定时间后重新运行(2)Thread.yield()释放一下cpu资源,使其他线程有机会运行(3).join()会将其变为串
2021-06-28 18:00:53
87
原创 JAVA线程(1)——线程的创建
线程线程的创建(1)继承 Thread(2)实现 Runnable接口(3)实现 Callable 接口可以抛异常可以有返回值使用就绪(启动线程)运行阻塞死亡线程的创建共有三种创建线程的方法:(1)继承 Thread(2)实现 Runnable接口可以自己定义属性和构造方法将线程名字传入或者使用Thread.currentThread().getName()获取线程名因为Runnable接口实现了函数式接口,所以可以使用lambda表达式(3)实现 Callable 接口可以
2021-06-24 15:39:35
99
原创 JAVA中IO流(3)----NIO
IO流(3)NIO(non-blocking IO)NIO-bufferNIO-channelNIO-Selector序列化NIO(non-blocking IO)非阻塞IO流NIO-bufferNIO-channelchannel可以同时进行读和写可以实现异步读写操作channel提供了一个map()方法,可以直接将数据映射到内存中NIO-Selector序列化要想将对象存入文件中,必须让对象实现序列化注:static修饰的和transient修饰的不会被序列化implements
2021-06-23 22:36:40
104
原创 JAVA中IO流(2)
IO流IO流可以根据流的大小分为字节流和字符流(1)字节流(只能一个字节一个字节操作)输出流输入流使用输入流和输出流拷贝文件(2)字符流IO流可以根据流的大小分为字节流和字符流(1)字节流(只能一个字节一个字节操作)输出流常用的有OutputStream out = new FileOutputStream(File file)或OutputStream out = new FileOutputStream(String name)例1:执行完操作后一定要.close()(默认实现了flush
2021-06-17 21:58:44
53
原创 JAVA中IO流(1)
BIO->NIO->AIO(1)BIO(block阻塞)读的时候不能写,写的时候不能读在磁盘中创建文件在写路径时,windows为:\(因为一个 \ 是转义字符)linux为:/或者可以用File.separator,如例2(这种写法可移植性好)例1:例2:删除文件常用API(1)file.isHidden() 判断文件是否隐藏(10).listFiles() 遍历目标路径下所有文件(2)NIO...
2021-06-15 22:46:06
1159
1
原创 ArrayList源码解读
源码解读ArrayListLinkedListArrayListArrayList采用的是动态数组,定义了Object型的数组如果没有给参数,则一开始创建一个空数组,在第一次添加元素的时候,将其大小变为10在扩容时,扩容为原来的1.5倍最大的 size 为Integer.MAX_VALUE - 8LinkedList...
2021-06-10 18:21:01
47
原创 Map集合
这里写目录标题Map的实现(1)定义一个Entry类,将键,值对绑定(2)定义Node节点,将Entry作为data(3)创建一个table数组,将其大小初始化为16(4)向Map中添加键值对二级目录三级目录Map的实现(1)定义一个Entry类,将键,值对绑定(2)定义Node节点,将Entry作为data(3)创建一个table数组,将其大小初始化为16(4)向Map中添加键值对二级目录三级目录...
2021-06-07 19:24:34
53
原创 链表的底层实现
链表链表实现过程1.先写节点类2.添加节点(1)头插法(2)尾插法(3)在索引处插入节点3.查找链表中间节点链表是一种在物理上非连续、非顺序的数据结构,由若干个节点(Node)组成链表实现过程1.先写节点类2.添加节点(1)头插法测试:(2)尾插法测试:(3)在索引处插入节点测试:3.查找链表中间节点快慢引用法测试:个数为偶数时个数为奇数时:...
2021-06-01 22:22:36
261
1
原创 JAVA1.8新特性函数式编程-----Lambda表达式
Lambda表达式不带参数的Lambda表达式带参数的Lambda表达式Lambda表达式在List接口中的使用注解:@FunctionalInterface函数式接口-> 左边为接口的引用-> 右边为方法体接口中只能写一个方法不带参数的Lambda表达式带参数的Lambda表达式Lambda表达式在List接口中的使用可以在list.foreach中使用,用来遍历ArrayList例1:例2:例3:...
2021-05-31 22:30:19
138
原创 JAVA集合框架图及ArrayList的API实现
JAVA集合框架图及ArrayList的API实现JAVA集合框架图使用数组实现ArrayList增删改查1.增(1)直接在末尾添加(2)在索引处添加2.删3.改4.查对写好的方法进行测试JAVA集合框架图使用数组实现ArrayList增删改查1.增(1)直接在末尾添加(2)在索引处添加2.删3.改4.查对写好的方法进行测试...
2021-05-28 15:51:30
64
原创 JAVA中枚举类型的使用
枚举类型枚举的使用构造方法枚举类型API的使用使用 .values() 查看所有枚举内容枚举的使用例:枚举和普通的class一样,可以定义属性、构造方法、方法等构造方法注:没有访问控制符(public、private等)枚举类型API的使用使用 .values() 查看所有枚举内容例1:例2:...
2021-05-14 18:29:35
62
原创 JAVA----static、final
这里写目录标题一级目录二级目录三级目录一级目录static修饰的内容会被率先加载,并放到一个特殊的区域-----方法区代码块和属性一样顺序:static、属性、构造方法二级目录三级目录
2021-05-13 22:52:46
66
原创 JAVA_8之前的日期类和新日期类以及包装类
这里写目录标题JAVA_8之前的日期类Date使用方法:1. 打印当前时间2. .getTime()Calendar使用方法:1. 获取当前时间2. 可以使用 .set() 指定一个日历3. .getTimeInMillis()4. 可以使用 .add() 方法进行运算5. 可以使用 .before() 判断时间前后JAVA_8之前的日期类Date使用方法:1. 打印当前时间例:important java.util.Date;public class DateTest(){ public
2021-05-07 21:14:19
140
原创 JAVA中正则表达式的使用
正则表达式用法一、使用正则表达式对String进行匹配控制匹配长度使用()分组进行匹配二、使用正则表达式对String进行操作可以使用正则表达式来对String进行匹配,查找或者处理用法一、使用正则表达式对String进行匹配例:对小写字母:[a-z]对大写字母:[A-Z]对数字:[0-9] 或者 \d非数字:[^0-9]非字母同上匹配 ^ 符号本身:\^匹配 $ 符号本身:\$匹配 . :[.]匹配字母、数字、下划线:\w匹配汉字:[\u4e00-\u9fa5]每个[ ]对应
2021-04-27 21:50:23
480
原创 JAVA底层——javap的使用
javap有以下命令:可以使用其中的 javap -c 来对 .clss 文件进行反汇编,查看底层代码例1:使用javap -c 进行反汇编可以看到如下底层代码:指令:ldc:读/加载常量 aastore_1:分配一块内存,将 a 存进去例2:例3:例4:由例3和例4可以看出来,虽然结果一样,但是底层并不相同,所以比较字符串时不能使用==,需要使用equals例5:例6:由例5和例6可以看出来,x++ 和 ++x的底层代码也是不一样的...
2021-04-27 16:08:06
247
原创 Java中字符串String的API的使用及常量池
字符串String的API使用常用APIAPI的应用一、给一个字符串然后进行翻转二、给一段文字,将其截取出来常用API1. length() 获取字符串的长度例:2. toCharArray() 把字符串变成字符数组例:3. charAt(index) 根据index返回对应字符例:4. toUpperCase() toLowerCase() 将小写转换为大写 将大写转换为小写例:5. comperTo() 比较两个字符串的大小,如果返回 0,
2021-04-26 22:26:17
230
原创 Java中方法的使用和递归
方法的定义例:private static int gcd(int a, int b){ 方法体 return 返回值}每部分的含义:private static(修饰符)其中:private(访问控制符)代表只能在定义此方法的class中被调用。如果使用 public 则此方法可以被其他class调用。如果不写,表示在class内部可以访问,在Package内也可以访问,不规范,不建议使用。static(静态)int(方法的返回类型)例:void:表示没有定义返回类
2021-04-20 16:02:05
153
原创 JAVA笔记(持续更新...)
1、random的使用定义一个random对象:Random r = new Random();使用:a[i] = r.nextInt(30);// 0到30,左闭右开2、foreach循环(增强型for循环)可以用来遍历数组for(int t : a){ System.out.print(t);}
2021-04-14 16:40:57
60
原创 冒泡排序、选择排序、插入排序
三种排序方法冒泡排序思路实现(JAVA)优缺点选择排序思路实现(JAVA)优缺点插入排序思路实现(JAVA)优缺点冒泡排序思路 将相邻的两个元素进行比较,然后将较小的元素放在左边,将较大的元素放在右边。一直重复,直到排序完毕。实现(JAVA)优缺点 每一趟排序后都会将最大的元素排在最右边,所以之后每趟排序都会减少一个待排元素 对n个元素进行排序,第 i 趟需要比较n-i次,共需要n-1趟排序稳定性:稳定(如果a原本在b前面,且a = b,排序后a仍然在b前面)时间复杂度最好情况为O(
2021-04-14 11:49:11
82
原创 使用JAVA时遇到的问题及解决方案(持续更新中......)
问题1:JOptionPane.showInputDialog(null,)是否可以有多个输入而不是每次能输入一个?答:每次只能输入一个,且输入类型为String问题2:if (choice.equals(“n”)) {f = !f;单引号和双引号不同?答:单引号是字符,双引号是字符串问题3:不能用Integer.parseInt(input.nextLine())将输入的字符转换为int?答:不能,可以用 a.charAt(0)来将输入的字符转换为其ASCII码。例:...
2021-04-10 20:14:36
158
原创 JAVA中jdk、jvm、jre的关系及jdk安装过程
JAVA中jdk、jvm、jre的关系及jdk安装过程目录JAVA中jdk、jvm、jre的关系及jdk安装过程(一)JDK、JVM和JRE之间的关系(二)jdk的安装步骤(一)JDK、JVM和JRE之间的关系JDK(Java Development Kit)是针对JAVA的软件开发工具包,用来编写JAVA源码JVM(Java Virtual Machine)将用JAVA写好的源码
2021-04-04 20:56:00
215
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人