- 博客(42)
- 收藏
- 关注
原创 Oracle与MySQL的区别
1、Oracle是大型数据库,而MySQL是中小型数据库。但是MySQL是开源的,但是Oracle是收费的,而且比较贵。2、Oracle的内存占有量非常大,而mysql非常小3、MySQL支持主键自增长,指定主键为auto increment,插入时会自动增长。Oracle主键一般使用序列。4、MySQL字符串可以使用双引号包起来,而Oracle只可以单引号6、Oracle在处理长字符串的时候,长度是小于等于4000个字节,如果要插入更长的字符串,考虑用CLOB类型,插入修改记录前要做进行修改和
2021-09-22 14:36:59
403
原创 kettle随手笔记
安装配置Kettle:1、下载并解压kettle安装包(data-integration),由于之前jdk已经安装,所以这里不多赘述。2、Win系统下打开Spoon.bat3、连接数据库:转换->新建->输入->表输入->->点击测试报错->去官网https://dev.mysql.com/下载MySQL的驱动包并解压后将jar包放到kettle安装包的lib目录下->接下来重启spoot.bat,连接数据库成功!案例一:想把stu1中的数据同
2021-08-27 17:33:30
220
原创 Linux随手笔记
1、ls(List files) 列出目录下的文件ls -a 列出目录所有文件,包含以.开始的隐藏文件ls -A 列出除.及…的其它文件ls -r 反序排列ls -t 以文件修改时间排序ls -S 以文件大小排序ls -h 以易读大小显示ls -l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来实例:ls -lhrt 按易读方式按时间反序排序,并显示文件详细信息ls -lrS
2021-08-27 17:32:53
313
原创 数据库-事务
数据库事务什么是数据库的事务事务的特性事务常用语句事务常用操作事务提交的两种方式事务的隔离级别1.为什么要设置隔离级别2.存在的问题3.隔离级别什么是数据库的事务事务是一系列的数据库操作,是数据库应用的基本逻辑单位,事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。事务的特性事务具有如下特性:(其中原子性最为重要)1、原子性(atomicity) 一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。(同生共
2020-10-19 20:34:26
344
2
原创 volatile和synchronize的区别和比较
首先,我们需要对java预留字volatile和synchronize进行大概了解。volatile和synchronize都是在java多线程中可能会使用到的技术。volatile和synchronize的比较:1.volatile是线程同步的轻量级实现,所以volatile的性能要比synchronize好;volatile只能用于修饰变量,synchronize可以用于修饰方法、代码块。随着jdk技术的发展,synchronize在执行效率上会得到较大提升,所以synchronize在项目过程中
2020-10-16 13:19:53
1321
1
原创 JVM调优
JVM调优目的减少STW (Stop The Work),减少full gc的次数和缩短full gc的时间(增强jvm稳定性,减少重gc次数和缩短重gc时间)一、 JVM调优参数简介1、 JVM参数简介-XX 参数被称为不稳定参数,之所以这么叫是因为此类参数的设置很容易引起JVM 性能上的差异,使JVM 存在极大的不稳定性。如果此类参数设置合理将大大提高JVM 的性能及稳定性。不稳定参数语法规则:1.布尔类型参数值-XX:+ '+'表示启用该选项-XX:- '-'表示关闭该选项2.数字类
2020-10-16 13:06:38
383
2
原创 JVM内存模型
首先要说一下JVM内存空间分为五部分,分别是:方法区、堆、Java虚拟机栈、本地方法栈、程序计数器方法区主要用来存放类信息、类的静态变量、常量、运行时常量池等,方法区的大小是可以动态扩展的,堆主要存放的是数组、类的实例对象、字符串常量池等。Java虚拟机栈是描述JAVA方法运行过程的内存模型,Java虚拟机栈会为每一个即将执行的方法创建一个叫做“栈帧”的区域,该区域用来存储该方法运行时需要的一些信息,包括:局部变量表、操作数栈、动态链接、方法返回地址等。比如我们方法执行过程中需要创建变量时,就会将局
2020-10-16 12:43:04
111
原创 GC垃圾回收机制
概述垃圾回收机制是Java语言一个非常重要的特性。通过该机制程序员不用手动去管理内存,大大提高了开发效率,也可以有效避免人为的疏忽造成内存泄露。通过对Java内存模型的了解,我们知道Java的对象实例基本都存储在Java堆中,由于很多对象只有在运行期才能确定是否需要创建,使得该区域的内存需要进行动态分配和回收,以提高内存的使用效率,所以垃圾收集器主要关注的就是该区域的内存。而程序计数器、虚拟机栈、本地方法栈都是线程独占的,它们会跟随线程的创建而创建,线程的销毁而销毁,因此这几个区域的内存分配和回收都具备确
2020-10-16 00:02:23
179
原创 类加载器和双亲委派机制
类加载器开放性在类加载的第一阶段“加载”过程中,需要通过一个类的全限定名来获取定义此类的二进制字节流,完成这个动作的代码块就是类加载器。这一动作是放在Java虚拟机外部去实现的,以便让应用程序自己决定如何获取所需的类。虚拟机规范并没有指明二进制字节流要从一个Class文件获取,或者说根本没有指明从哪里获取、怎样获取。这种开放使得Java在很多领域得到充分运用,例如:从ZIP包中读取,这很常见,成为JAR,EAR,WAR格式的基础从网络中获取,最典型的应用就是Applet运行时计算生成,最典型的
2020-10-15 13:37:44
125
原创 线程创建的方式
线程创建的方式1.继承Thread类型重写run方法2.实现Runnable接口3.实现Callable接口1.继承Thread类型重写run方法public class Main extends Thread{ @Override public void run() { System.out.println("通过继承Thread类重写run方法"); } public static void main(String[] args) {
2020-10-14 12:33:14
129
原创 IO流常见面试题
常见面试题1.java中有几种类型的流?jdk为每种类型的流提供了一些抽象类以供继承,请说出它们分别是什么?2.字符流和字节流有什么区别?(重要)3.什么是java序列化,如何实现java序列化?(重要)4.什么是比特(Bit),什么是字节(Byte),什么是字符(Char),它们长度是多少,各有什么区别(一般是笔试题的选择题里面出的多一点)5.BufferedReader属于哪种流,它主要是用来做什么的,它里面有那些经典的方法6.什么是节点流,什么是处理流,它们各有什么用处,处理流的创建有什么特征7.如果
2020-09-15 13:09:30
2143
原创 异常小结
异常异常处理框架图ThrowableErrorExceptionIOExceptionClassNotFoundExceptionCloneNotSupportedExceptionRuntimeException何时使用TryCatch何时使用Throws何时使用Throw运行异常跟检查异常(编译时异常)的区别异常常见面试题1. Error 和 Exception 区别是什么?2. 运行时异常和一般异常(受检异常)区别是什么?3. JVM 是如何处理异常的?4.throw 和 throws 的区别是什么?
2020-09-15 11:54:24
355
原创 集合总结
集合总结简介特点集合和数组的区别使用集合框架的好处Iterator接口ListIterator接口Collection接口List集合ArrayList、LinkedList、Vector 的区别Set集合HashSet、TreeSet、LinkedHashSet的区别HashSet如何检查重复(验证元素的唯一性:hashcode和equals)Map接口双列集合继承关系图Map常用方法HashMap、HashTable、TreeMap的区别集合工具类CollectionsCollection 和 Coll
2020-09-13 21:08:18
462
原创 数据库 | 表与表的3种关系
表与表之间的关系一对一关系一对多关系多对多关系一对一关系一个公司只能有一个注册地址,一个注册地址只能被一个公司注册。建表原则:一对多关系一个部门对应多个员工,一个员工只能属于某一个部门。一个客户对应多个联系人,一个联系人只能属于某一个客户。建表原则:多对多关系一个学生可以选择多门课程,一门课程也可以被多个学生选择。一个用户可以选择多个角色,一个角色也可以被多个用户选择。建表原则:...
2020-09-08 21:36:42
469
原创 接口知识点总结
1.==和equals的区别?答:“==”是比较运算符,既能比较基本数据类型,又能比较引用数据类型。基本数据类型比较的是数值,引用数据类型比较的是地址值。equals是一个方法,只能比较引用数据类型。所有的类都会继承Object的equals方法。重写equals方法比较的是对象的内容,如果没有重写将调研Object的equals方法,比较的是地址值。2.String str = null 和String str = ""的区别?答:String str = null只是声明了引用,但是没有创建对象
2020-09-08 08:12:48
225
原创 项目 | Book-System
图书管理系统什么是图书管理系统开发环境技术栈项目功能项目目标1.1:数据库设计一般步骤1.2:基本CRUD操作1.3:JDBC操作1.4:关联查询操作2.1:Servlet处理HTTP请求3.1:HTTP数据类型3.2:HTTP请求方法3.2.1:get和post的区别、http常见Header3.3:HTTP响应状态码3.3.1:状态码有什么用3.3.2:哪里查看以及常见状态码3.3.3:小总结4.1:Filter过滤器项目结构什么是图书管理系统图书管理系统是基于Servlet+maven +MySQ
2020-09-07 11:49:59
310
原创 TCP三次握手和四次挥手
文章目录1. TCP连接的建立-三次握手:1.1、相关的符号说明1.2、三次握手操作(建立1.3、连接状态2.TCP连接的释放-四次挥手2.1、相关的符号说明2.2、四次挥手操作 (关闭客户端到服务器的连接)2.3、连接状态3.面试常考点3.1、为什么需要三次握手,两次不可以吗?或者四次、五次可以吗?3.2、为什么需要2MSL时间?3.3、为什么是四次挥手,而不是三次或是五次、六次?总结1. TCP连接的建立-三次握手:1.1、相关的符号说明确认号字段(ack):占四个字节,是期望收到对方的下一个报文
2020-07-31 23:32:14
494
原创 TCP/IP协议
文章目录1.什么是TCP/IP1.1、应用层:1.2、 传输层:1.3、 网络层:1.4、 网络接口层:2.数据包3.网络接口层4.网络层4.1、 IP:4.2、地址解析协议 ARP4.3、子网5. 传输层5.1、传输控制协议(TCP)5.2、用户数据报协议(UDP)5.3、TCP与UDP特点与区别5.3.1、UDP:5.3.2、TCP:6.应用层运行在TCP协议上的协议运行在UDP协议上的协议其他1.什么是TCP/IPTCP/IP 是一类协议系统,它是用于网络通信的一套协议集合.传统上来说 TCP/
2020-07-31 23:09:14
347
原创 java多线程总结
文章目录1、多线程常见API1.1、 sleep()方法、wait()方法1.2 、yeild()方法、interrupt()方法1.3 、notify()、notifyAll()方法2、java线程的状态2.1、产生2.2、就绪2.3、执行2.4、死亡2.5、阻塞3、java实现多线程的方法3.1、继承Thread类:3.2、实现Runnable接口:3.3、实现Callable接口,通过FutureTask包装器创建Thread线程4、线程调度5、线程类的一些常用方法:6、线程同步7、线程数据传递1、
2020-07-31 22:35:31
302
原创 java八大排序
文章目录1、冒泡排序2、选择排序3、直接插入排序4、希尔排序5、快速排序6、归并排序7、基数排序8、堆排序1、冒泡排序冒泡排序原理:相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处冒泡排序图解:代码演示:package 八大排序;import java.util.Arrays;public class 冒泡排序 { public static void main(String[] args) { //冒泡排序的原理:相邻元素两两比较,大的往后放
2020-07-31 22:09:43
196
原创 数据结构5 | HashMap底层原理及实现
文章目录1、什么是HashMap2. 两个重要的参数3. put函数的实现4. get函数的实现5. hash函数的实现**面试常考点**什么时候会使用HashMap?他有什么特点?你知道HashMap的工作原理吗?你知道get和put的原理吗? equals()和hashCode()的都有什么作用?你知道hash的实现吗?为什么要这样实现?如果HashMap的大小超过了负载因子(load factor)定义的容量,怎么办?1、什么是HashMapHashMap<String, Integer&g
2020-07-31 21:53:46
190
原创 数据结构4 | 哈希表及其应用
1、什么是哈希表哈希表也称为散列表,是用来存储群体对象的集合类结构。数组和向量都可以存储对象,但对象的存储位置是随机的,也就是说对象本身与其存储位置之间没有必然的联系。当要查找一个对象时,只能以某种顺序(如顺序查找或二分查找)与各个元素进行比较,当数组或向量中的元素数量很多时,查找的效率会明显的降低。一种有效的存储方式,是不与其他元素进行比较,一次存取便能得到所需要的记录。这就需要在对象的存储位置和对象的关键属性之间建立一个特定的对应关系,使每个对象与一个唯一的存储位置相对应。在查找时,只要根据待
2020-07-31 21:25:22
926
原创 数据结构3 | 堆及其堆的实现
什么是堆?要想实现堆,先要知道什么是堆和堆都有那些操作。**堆(英语:heap)**是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质:堆中某个节点的值总是不大于或不小于其父节点的值;堆总是一棵完全二叉树。通俗的说堆是使用数组保存二叉树结构,方式即将二叉树用层序遍历方式放入数组中。 一般只适合表示完全二叉树,因为非完全二叉树会有空间的浪费。 这种方式的主要用法就是堆的表示。堆有哪些特性?已知双亲(parent)的下标,则:左孩子(left)下
2020-07-31 21:11:33
168
原创 数据结构2 | 线性表(顺序表、单链表、双链表)
1、线性表及其逻辑结构线性表是最简单也是最常用的一种数据结构。英文字母表(A、B、…、Z)是一个线性表,表中每个英文字母是一个数据元素;成绩单是一个线性表,表中每一行是一个数据元素,每个数据元素又由学号、姓名、成绩等数据项组成。 1.1 线性表定义线性表是具有相同特性的数据元素的一个有限序列。线性表一般表示为:L = (a1, a2, …, ai,ai+1 ,…, an)线性表中元素在位置上是有序的,这种位置上有序性就是一种线性关系,用二元组表示: L = (D, R)
2020-07-30 10:12:42
3831
原创 数据结构1 | 基础概念及思维导图
文章目录1、数据结构基础1.1 什么是数据结构?1.2 数据结构相关基础概念2、思维导图1、数据结构基础1.1 什么是数据结构?数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,而且确保经过这些运算后所得到的新结构仍然是原来的结构类型。1.2 数据结构相关基础概念1.数据:所有能被输入到计算机中,且能被计算机处理的符号的集合。是计算机操作的对象的总称。2.数据元素:数据(集合)中的一个“个体”,数据及结构中讨论的基本单位3.数据项:数据的不可分割的最
2020-07-30 09:09:10
350
原创 集合详解
一:集合与数组的区别:二:层次关系:Collection接口是集合类的根接口,Java中没有提供这个接口的直接的实现类。但是却让其被继承产生了两个接口,就是Set和List。Set中不能包含重复的元素。List是一个有序的集合,可以包含重复的元素,提供了按索引访问的方式。Map是Java.util包中的另一个接口,它和Collection接口没有关系,是相互独立的,但是都属于集合类的一部分。Map包含了key-value对。Map不能包含重复的key,但是可以包含相同的value。I
2020-07-29 21:08:00
183
原创 什么是集合
一:什么是集合? 1、集合类存放于java.util包中。 2、集合类型主要有3种:set(集)、list(列表)和map(映射)。 3、集合存放的都是对象的引用,而非对象本身。所以我们称集合中的对象就是集合中对象的引用。 简单来讲:集合就是一个放数据的容器,准确的说是放数据对象引用的容器。二:java集合框架结构UML类图:实现:接口和实现类的关系泛化:父类和子类之间的关系,继承就是泛化的一种从集合框架结构可以分析得知:...
2020-07-29 20:30:55
2894
原创 面向对象编程思想
什么是面向过程?面向过程的编程思想就是在面对问题的时候使用计算机能够理解的逻辑来描述和表达待解决的问题以及具体的求解过程。例如写一个1+1等于2的程序,你会自然的想到输入两个变量,每个变量的值为1,然后对这两个变量求和,这就是面向过程的编程思想。 public static void main(String[] args) { int a=1; int b=1; int result=a+b; System.out.pr..
2020-07-29 12:52:23
290
原创 多线程同步常用的辅助类
一:CountDownLatchimport java.util.concurrent.CountDownLatch;class CountDownLatchDemo { /** * CountDownLatch:闭锁 * 在完成一组正在其他线程中执行的操作之前,它约束一个或多个线程一直等待。 * 可用于:子任务执行完成后再进行另一个操作。 */ static void test(int threadTaskNum) { fi
2020-07-27 12:03:01
167
原创 JUC-8锁现象深度剖析
现象一多个线程使用一把锁,也就是调用同一个对象,顺序执行。“被synchronized修饰的方法,锁的对象是方法的调用者”public class Test1 { public static void main(String[] args) { Phone phone = new Phone(); new Thread(()->{ phone.sendSms(); },"A").start();
2020-07-21 18:11:23
390
原创 JAVA | 静态代理与动态代理的区别与联系
代理Proxy:Proxy代理模式是一种结构型设计模式,主要解决的问题是:在直接访问对象时带来的问题代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。 为了保持行为的一致性,代理类和委托类通常会实现相同的接口,所以在访问者看来两者没有丝毫的区别。通过代理类这中间一层,能有效控制对委托类对象的直接访问,也...
2020-07-03 14:00:44
114
原创 多线程简单小结
1、多线程的特性/特点(多线程考虑的2大特点:安全和效率。每个点都需要从线程的特性来考虑)(1)安全——共享变量存在安全问题(2)效率: 创建线程比较耗时 多个线程并发执行的,系统来进行线程间的调度——线程数、单个任务量都会影响2、多线程的应用场景(1)提高效率:任务量(单个任务比较耗时)比较多的时候或者任务数量比较多的时候(2)并发:阻塞式代码会导致后边的代码无法执行,可以使用多线程3、Thread基础API及线程状态、...
2020-06-01 21:26:33
170
翻译 欧几里得距离问题
二货小易有一个W*H的网格盒子,网格的行编号为0H-1,网格的列编号为0W-1。每个格子至多可以放一块蛋糕,任意两块蛋糕的欧几里得距离不能等于2。对于两个格子坐标(x1,y1),(x2,y2)的欧几里得距离为:( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) ) 的算术平方根小易想知道最多可以放多少块蛋糕在网格盒子里。输入描述:每组数组包含网格长宽W,H,用...
2020-04-06 22:46:16
1113
原创 输入n个整数,输出出现次数大于等于数组长度一半的数
输入描述:每个测试输入包含n个空格分割的n个整数,n不超过100,其中有一个整数出现次数大于等于n/2。输出描述:输出出现次数大于等于n/2的数。示例:输入:3 9 3 2 5 6 7 3 2 3 3 3输出:3import java.util.Scanner;public class Main{ public static void main(Strin...
2020-04-04 18:12:36
569
原创 数组总结
本质:“批量”创造相同类型的变量。创建数组:动态初始化:int[] arr=new arr[3]{1,2,3};静态初始化:int[] arr={1,2,3};使用:获取数组长度:System.out.println(arr.length); 访问数组中的元素:System.out.println(arr[1]);注:1.[ ]按下标读取元素,从0开始。 ...
2019-10-19 23:13:05
128
原创 十进制转化为二进制和十六进制
简单来讲:二进制(逢二进一)十进制(逢十进一)十六进制(逢十六进一)代码实现:(十进制转二进制)public class JAVA { public static void main(String[] args) { int num = 10; for (int i = 0; i < 32; i++) { System...
2019-10-09 22:41:38
615
原创 变量和运算符的基本知识点
//变量在上条博客已经总结过了,这里便不再重复运算符:算术运算符基本四则运算: + - * / %比较简单,但需要注意:1:int/int结果还是int,需要使用double2:0不能作为除数3:%表示取余,int,double都可以4:注意a++,++a的区别,“+”在后,先使用,后加;“+"在前,先加,再使用关系运算符> < ...
2019-10-09 22:14:12
205
原创 java基本数据类型小总结
JAVA数据类型总结:8种基本数据类型及其分类:整型 byte(1字节) short (2个字节) int(4个字节) long (8个字节)浮点型 float(4个字节) double(8个字节)逻辑性 boolean(八分之一个字节)字符型 char(2个字节,一个字符能存储下一个中文汉字)基本数据类型与包装类对应关系和默认值:short Short ...
2019-10-06 13:05:12
242
原创 C语言操作符
操作符分类:算术运算符 移位运算符 位操作符 赋值操作符 单目操作符 关系操作符 逻辑操作符 条件操作符 逗号表达式 下标引用、函数调用和结构成员操作符详解:算术运算符+ - * 、 %数学上的加减乘除、取余。这几个比较常见,需要注意的有:/操作如果两侧的参数都是整型,那么得到的结果也会是一个整型,例如:5/2结果为2。 而如果其中一个为float类型则结果会为f...
2019-09-23 12:02:38
118
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人