自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 算法基础(一)

分治法核心思想:将一个难以直接解决的问题分割为n个子问题,各个击破,即“分而治之”也就是把一个大的项目分为n个子项目,交给n个人去解决这n个问题,把问题化解。递归法递归是一种特殊的算法,和分治法很像,都是把一个进行分解,使其越来越小,使子问题容易解决。 如果一个函数是自身所定义或调用,就称为递归。递归至少要满足两个条件1.自己调用自己的一个过程2有一个跳出递归过程的出口冒泡排序冒泡排序就是比较相邻的元素,将小的放到前面int[] arr = {1,2,6,5,4,8}.

2020-12-10 21:10:59 243

原创 通过ORM实现对象的保存

通过ORM实现对象的保存public static int save(Object obj) throws NoSuchMethodException, SecurityException, DocumentException, IllegalAccessException, IllegalArgumentException, InvocationTargetException { Class clz = obj.getClass(); //xml文件解析器 SAXReader r

2020-12-10 19:45:44 515 1

原创 xml文件描述ORM映射关系

<?xml version="1.0" encoding="UTF-8"?><!-- class:描述ORM的映射关系 ,描述类和表的关系 name: 类名 table:表名--><class name="Pet" table="t_pet"> <!-- 描述属性和列的映射关系 --> <!-- id:描述属性和数据库的主键的映射关系 name:属性名 column:列名 type:列在数据库的类型 auto

2020-12-10 19:42:13 337 1

原创 通过DOM4J对xml进行操作

通过DOM4J将一个node节点写入xml文件private static void addStudent() { try { /**** * 通过dom4j将一个node节点写入到xml文件 */ //创建SAXReader解析器对象 SAXReader reader=new SAXReader(); //加载studentes.xml Document doc=reader.read(DOM4jTest.class. getClassL

2020-12-10 19:13:13 288 2

原创 xml文件的DOM解析

DOM模型介绍bject Model:文档对象模型Dom解析方法:xml文件解析首先将xml文件加载进内存,然后读取文件中的内容。在内存将文件以树的结构进行保存,而且树根在上,树枝在下,整个xml文件被封装为Document对象,文件中的标签节点被封装为Node对象,标签节点中保存的数据被封装为Text对象。DOM模型将整个xml文件封装为对象,将文件中的标签和数据封装为对象,利用对象提供的方法完成xml文件内容的读写。Document: 表示整个文件对象Node:表示标签对象Text:表

2020-12-09 19:35:06 602

原创 Dao数据访问接口

介绍DAO(Data Access Object)是一个面向对象的,数据访问接口,数据访问:与数据库打交道。夹在业务逻辑与数据库资源中间。在JavaEE的开发将数据库的方法抽象,定义在API中,API中定义访问数据的方法CRUD方法(增删改查)的方法package的规范...

2020-12-09 19:30:17 369

原创 xml文件的dom4j解析和文件的路径加载问题

dom(Document Object Model)文档对象模型dom4j(Document Object Model For Java)DOM4J:是java解析xml文件的api,性能超过了dom(对dom进行优化,提升了性能,解决了兼容性文件),简单易用,而且性高,是一个第三方的开源的项目。在项目中使用的时候需要添加jar包。实现dom4j解析创建DOM4J解析器对象SAXReader reader = new SAXReader();2.加载xml文件产生Document,获

2020-12-09 19:22:51 408

原创 数据库反射

通过 ResultSetMetaData 可以获得select语句产生的虚拟表的表结构(表名,列名,数据类型,列的个数)public static void main(String[] args) throws ClassNotFoundException, SQLException { 获得Connection对象 Class.forName("com.mysql.cj.jdbc.Driver"); String url="jdbc:mysql://localhost:3306/scho

2020-12-08 20:20:51 473

原创 LeetCode算法题:左旋字符串

题目:字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。示例 1:输入: s = “abcdefg”, k = 2输出: “cdefgab”示例 2:输入: s = “lrloseumgh”, k = 6输出: “umghlrlose”限制:1 <= k < s.length <= 10000来源:力扣(LeetCode

2020-12-07 20:34:41 182

原创 Class类的介绍和基本使用方法

一、Class类的介绍Class类的对象表示的是一个,类在内存中的class文件。Class clz = String.class 表示String在内存中的class文件。二、Class类的使用1.获得Class类的对象通过Class clz = Class.forName(“完全限定名”);获得Class类的对象封装class文件完全限定名:包名+类名.通过类名获得Class对象,类名.class通过某个类的对象,获得Class文件,String类在内存中的class文

2020-12-07 19:53:01 8846 1

原创 封装数据库DML,DQL操作——代码详解

一、封装数据库DML操作public class DB_utils { static final String URL = "jdbc:mysql://localhost:3306/dep ?serverTimezone=GMT"; static final String USER = "root"; static final String PWD = "password"; - 封装加载驱动方法 public static Connection getConnection()

2020-12-07 19:09:22 301

原创 Java可变参数

什么是可变参数可变参数就是在调用方法时,允许传入长度可变的参数,可变参数的本事是数组。定义方法在最后一个形参上加三个点 …,就表示该形参可以接收多个参数值,多个参数值被作为数组传入。可变参数只能放在最后一个函数最多只能有一个可变参数带有可变参数方法的调用调用可变参数方法,可以传入n个参数,编译器会把它转化为一个数组,也可以直接传递一个数组。调用一个被重载的方法时,如果此调用既能够和固定参数的重载方法匹配,也能够与可变长参数的重载方法匹配,则选择固定参数的方法...

2020-12-07 17:56:50 113

转载 LeetCode算法题:反转链表

题目:反转链表方法一:迭代假设存在链表 1 \rightarrow 2 \rightarrow 3 \rightarrow \varnothing1→2→3→∅,我们想要把它改成 \varnothing \leftarrow 1 \leftarrow 2 \leftarrow 3∅←1←2←3。在遍历列表时,将当前节点的 \textit{next}next 指针改为指向前一个元素。由于节点没有引用其上一个节点,因此必须事先存储其前一个元素。在更改引用之前,还需要另一个指针来存储下一个节点。不要忘记

2020-12-05 16:43:49 175

原创 LeetCode算法题:只出现一次的数字

题目给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4来源:力扣(LeetCode)class Solution { public int singleNumber(int[] nums) { for (int i = 1; i <nums.l

2020-12-05 16:38:28 104

原创 LeetCode算法题:拥有糖果最多的孩子

题目给你一个数组 candies 和一个整数 extraCandies ,其中 candies[i] 代表第 i 个孩子拥有的糖果数目。对每一个孩子,检查是否存在一种方案,将额外的 extraCandies 个糖果分配给孩子们之后,此孩子有 最多 的糖果。注意,允许有多个孩子同时拥有 最多 的糖果数目。示例 1:输入:candies = [2,3,5,1,3], extraCandies = 3输出:[true,true,true,false,true]解释:孩子 1 有 2 个糖果,如果

2020-12-05 15:21:35 140

原创 LeetCode算法题:好数对的数目

题目给你一个整数数组 nums 。如果一组数字 (i,j) 满足 nums[i] == nums[j] 且 i < j ,就可以认为这是一组 好数对 。返回好数对的数目。示例 1:输入:nums = [1,2,3,1,1,3]输出:4解释:有 4 组好数对,分别是 (0,3), (0,4), (3,4), (2,5) ,下标从 0 开始示例 2:输入:nums = [1,1,1,1]输出:6解释:数组中的每组数字都是好数对示例 3:输入:nums = [1,2,3]

2020-12-05 15:12:50 136

原创 LeetCode算法题:一维数组的动态和

题目:给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。请返回 nums 的动态和。示例 1:输入:nums = [1,2,3,4]输出:[1,3,6,10]解释:动态和计算过程为 [1, 1+2, 1+2+3, 1+2+3+4] 。示例 2:输入:nums = [1,1,1,1,1]输出:[1,2,3,4,5]解释:动态和计算过程为 [1, 1+1, 1+1+1, 1+1+1+1, 1+1+1+1+

2020-12-05 14:48:52 534

原创 Java中深度克隆和浅度克隆

在Java中克隆分为两种:深度克隆和浅度克隆浅度克隆:浅度克隆完全复制一个对象,但对其内部的引用数据类型,浅度克隆只会复制该对象的引用,因此如果修改被克隆的对象,会影响到原对象。实现方式1.被克隆的对象实现Cloneable接口,2.让克隆的类重写Object的clone()方法深度克隆深度克隆完全复制一个对象,包括原对象的引用数据类型也会复制并额外开辟空间去存储数据,独立于原对象,修改克隆出来的对象不会影响原对象。-实现方式常用的是使用序列化实现深度克隆(比较常用,使用起来较

2020-12-05 14:20:23 205

原创 什么是SQL注入?如何防止注入(附例)

注入发生的原因如果用户通过在表单中填写带有SQL关键字的数据来让数据库执行非常规代码的过程。SQL 数据库的操作是通过 SQL 语句来执行的,而无论是执行代 码还是数据项都必须写在 SQL 语句之中,这就导致如果我们在数据项中加入了某些 SQL 语 句,这些关键字就很可能在数据库写入或读取数据 时得到执行。...

2020-12-05 10:14:10 582

原创 JDBC实现增删改查(附代码详解)

JDBC实现宠物信息的增效删改查主方法:public class Demo { public static void main(String[] args) throws ClassNotFoundException, SQLException { //加载驱动 Driver(); Pet pet = new Pet(55,"小黑","公"); //添加信息 add(pet); //删除信息 dele

2020-12-05 09:26:53 1805 1

原创 数据库练习题

现有三个表Student(ID 学生号,Name 姓名),Subject(SubID 课程号,SubName 课程名),Score ( ScoreId 成绩号 , SubID 课程号, StdID 学生号, Score 成绩)数据如下:Studenta001 张三a002 王强Subjects001 英语s002 数学s003 语文s004 历史Score1 s001 a001 782 s002 a001 673 s003

2020-12-03 20:43:27 166

原创 MySQL练习题 答案和解析

题目一现有一张学生信息表, Student表结构如下:stu_id varchar(10)stu_name varchar(30)stu_sex varchar(2)stu_high double(4,1)stu_weight double(4,1)数据如下:1001 张三 男 178.3 78.41002 张君 女 163.3 50.31003 王文 女 158.3 46.81004 李海 男 175.3 69.6100

2020-12-03 19:25:54 860

原创 MySQL纵横转换(详解附例子)

题目3: (case end实现)表名: Scorename varchar(10)subject varchar(10)grade int(3)数据如下:name subject gradestudent1 语文 80student1 数学 70student1 英语 60student2 语文 90student2 数学 80student2 英语 100需转换为姓名 语文 数学 英语student1 80 70 60student2

2020-12-03 16:30:23 451

原创 MySQL的常用函数(字符串、日期、数字、其它函数)

字符串函数字符串函数select ascil(‘ab’)我们可以给名字起别名select ascii (‘ab’)charName统计字符串的长度select char_length(‘hello’)实现字符串拼接select concat(‘sad’,‘sad’)实现字符串反转select reverse (‘hello’)截取字符串select substr(‘2020-12-02’,‘6’,5)数组函数(认识)数字函数

2020-12-01 20:31:20 154

原创 如何打开MySQL的远程访问

2020-12-01 20:06:56 71

原创 MySQL———事物(Transaction)

一、什么是事物事物:一个最小的不可分割的工作单元。(例:银行转账业务)原子操作是对一个单一的对象(包括类域、数组元素等永久对象)数据进行修改过程中发生断电、严重异常等失败情况时,保证原始数据的完整性,即恢复到初始数据状态。事务操作是对一系列的永久数据更新的一个逻辑的集合,要么所有的永久数据的修改都正确完成,要么所有的数据都被恢复为它们以前的值。银行账户表 tb_actactno balance1 5002 100转账操作

2020-12-01 17:59:56 1403

原创 装饰模式(详解+代码注释)

装饰模式我们在IO中见到过不少装饰模式,装饰模式就是对原有对象进行增强。一般实现对象增强的三种方式:继承装饰模式代理模式一、为什么需要装饰模式?我们知道,子类继承父类,可以继承父类的属性,并进行扩展,但是如果需求变动大,需要扩展的功能很多,这时用继承就会发生这样一种现象:类数量多,继承的层次多。所以像这种情况,用继承非常不灵活。因此引入了装饰模式。二、代码实现前置代码:我们有一个电话接口Phone,和一个电话接口的实现类Iphone,Iphone的基础功能base()只有打电话。写一

2020-11-28 17:00:50 432

原创 面试题:简述final,finally,finalize的区别

final是修饰符,被其修饰的变量是个常量,被其修饰的方法不能被重写,被其修饰的类不能被继承finall 是一个代码块,通常放在try…catch…的后面构造总是执行代码块,这就意味着程序无论正常执行还是发生异常,这里的代码只要JVM不关闭都能执行finalize 是垃圾回收器,这个方法是由垃圾收集器在销毁对象时调用的。...

2020-11-28 14:34:47 195

原创 面试题:String类是否可以被继承?

String类是final类,不可被继承。对String类型最好的重用方式是关联关系(Has-A)和依赖关系(Use-A)而不是继承关系(Is-A)。一、继承:子类继承父类二、依赖:把一个类当做另一个类里面的局部变量。三、关联: 把一个类当做另一个类里面的属性。...

2020-11-28 11:45:03 282

原创 面试题:Java中的四舍五入

在Java中,10.5四舍五入为11,-10.5四舍五入为-10Java中四舍五入的本质:参数加0.5后向下取整。

2020-11-28 11:22:11 161

原创 面试题:基本及包装类型

float = 1.1 是否正确?错误,小数在Java中默认是double类型,double转float是向下转型,所以不能自动提升。正确方式:1 强制类型转换 float f =(float)1.1;2 标识                float f =1.1F;。short s1 = 1; s1 = s1 + 1;short s1 = 1;

2020-11-28 11:18:52 135

原创 面试题:访问修饰符public,private,protectrd,默认的区别

2020-11-28 11:00:53 127

原创 面试题:面向对象的特征有哪些方面?

1.抽象2.继承3.封装4.多态-抽象:将拥有共同特征的一类事物用类来描述。-继承:子类继承父类的属性。当多个类中定义了相同的共性内容(相同的成员变量和成员方法)时,为了提高代码的复用性,就将这多个类中相同的共性内容抽取出来定义在一个独立的类中,然后再使用其它类去继承这个定义了相同的共性内容的独立的类,就继承了这独立类中所定义的相同的共性内容了,这就是继承。-封装:封装数据和对数据的操作,对外提供一个最简单的接口。-多态:父类对象对子类对象的引用。...

2020-11-28 10:58:32 381

原创 面试题:网络编程中,什么是三次握手四次挥手?

三次握手过程:1、由客户端发送建立TCP连接的请求报文,其中报文中包含seq序列号,是由发送端随机生成的,并且将报文中的SYN字段置为1,表示需要建立TCP连接。(SYN=1,seq=x,x为随机生成数值)2、由服务端回复客户端发送的TCP连接请求报文,其中包含seq序列号,是由回复端随机生成的,并且将SYN置为1,而且会产生ACK字段,ACK字段数值是在客户端发送过来的序列号seq的基础上加1进行回复,以便客户端收到信息时,知晓自己的TCP建立请求已得到验证。(SYN=1,ACK=x+1,seq=y,

2020-11-28 10:38:50 153

原创 面试题:Java 的JVM内存模型

JVM内存模型JVM内存模型中包括五点:1.程序计数器2.java虚拟机栈3.本地方法栈4.java堆5.方法区总结(面试中需要掌握的基本内容):**栈1) 是为java方法提供运行空间的2) 方法一旦被调用就会在栈中创建对应的栈帧,而方法的整个执行过程就是方法对应的栈帧从入栈到出栈的过程。换言之,就是方法被调用进栈(压栈 入栈),方法执行结束出栈(弹栈)。3) 栈是先进后出后进先出(先被调用的方法最后结束,后被调用的方法最先结束)4) 栈中的变量都是属于方法的,所以都是局部变量,

2020-11-28 10:26:27 442

原创 什么是反射?

首先我们得知道什么是反射:主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。然后再了解Java中的反射:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性,这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。Java反射机制主要提供了以下功能:* 1.在运行时判断对象所属的类。* 2.在运行时构造类的对象。* 3.在运行时判断类所具有的成员变量和方法。* 4.在运行时调用对象的方法

2020-11-28 10:16:52 258

原创 两个对象值相同(x.equals(y) == true),Hashcode是否一定相同,这个要分两种情况回答

首先我们要明白:Java对于eqauls方法和hashCode方法是这样规定的:如果两个对象相同,那么它们的hashCode值一定要相同。第一种情况:答:若没有重写equals方法,如果两个对象通过equals比较相等,么那么它们的hashCode值一定要相同;(这是Java中equals和hashCode的协定:如果经过equals方法比较相等的两个对象,其hashCode的值也要相等。)第二种情况回答:答:如果重写了equals方法,但没有重写hashCode的方法,那么就可能出现不相等的情

2020-11-28 09:33:36 724

原创 练习题:定时器实现闹钟

一、创建并指定定时任务TimerTask task = new TimerTask() {public void run() {System.out.println(“起床”); //每次需要执行的代码放到这里面。 } }; 二、创建定时器对象,指定时间Timer timer=new Timer();timer.schedule(task, 1000,2000);1000代表1000毫秒之后执行第一次任务,2000代表之后每隔2000毫秒之后执行一次任务。publ

2020-11-25 19:58:54 654

原创 OSI七层参考模型

**应用层:**应用程序、服务所在,人类语言转化为编码HTTP HTTPS FTP TFTP SMTP SNMP DNS DHCP TELNET POP3**表示层:**数据格式转换;数据加压缩、解压缩;数据加密、解密;数据编码、解码编码转化为二进制**会话层:**建立、管理、终止会话**传输层:**对上层数据进行分段和重组,提供端到端数据传输服务,标识应用程序端口号TCP UDP**网络层:**逻辑地址寻址,路由选择IP(IPV4IPV6) ICMP IGMP**数据链路层:**数据封装

2020-11-25 17:43:41 80

原创 练习题:Java多线程实现生产者和消费者问题

生产者和消费者同时使用一块缓冲区,生产者生产商品放入缓冲区,消费者从缓冲区中取出商品。我们需要保证的是,当缓冲区满时,生产者不可生产商品;当缓冲区为空时,消费者不可取出商品。 class Producer implements Runnable { @Override public void run() { synchronized (list) { //仓库容量已经达到最大值 w

2020-11-25 17:37:02 415

空空如也

空空如也

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

TA关注的人

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