自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java---反射

java反射反射就是 运行状态中,对于任意的一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能过调用他的方法和属性, 这种动态获取信息的以及调用对象方法的功能称为java语言的反射机制.用途在日常的第三方应用开发过程中, 经常会遇到某个类的某个成员变量,方法 ,属性是私有的,这个时候我们就可以利用反射机制来获取私有方法和属性.与反射相关的类Class类 代表类的实体Field类 代表类的成员变量Method 代表类的方法Constructor 代表类的构造方法Class的

2021-04-04 13:42:03 186 1

原创 mysql---多表关联查询

多表关联查询数据库设置范式 :第一范式 :确保每列数据的原子性 。每列数据不可 在分割第二范式: 在第一范式的起初上,要有主键,主键具有唯一性 。因此也就确保了每条数据的唯一性第三范式 :在第二范式的基础上,消除传递依赖,可以看作消除冗余。外键 :引用另外一个数据表的记录外键列类型要与其他表主键类型保持一致。添加外键约束语句 :alter table 表名 add constraint 约束名 foreign Key (外键列) references 表名(主键列)删除外键:alte

2021-03-02 13:20:49 302

原创 mysql---条件查询

条件查询(DQL)where后面跟的是查询条件,where紧紧跟着from后面句子格式为 select 需要查询的列 from 表 where 条件SELECT * FROM `student2` where stu_name='张三' ; -- 查询张三的所有信息比较运算符用于查询 =, != 或<>, >, <, >=, <=SELECT * FROM `student2` where stu_score>60; --

2021-03-02 13:19:42 258

原创 mysql函数(DQL数据查询语言)

函数(DQL数据查询语言)算数运算符 查询SELECT stu_num*2 from student2 -- 查询结果翻倍查询结果的长度函数length(),CHAR_LENGTH()SELECT LENGTH(stu_name) from student2 -- 以字节为单位SELECT CHAR_LENGTH(stu_name) from student2 -- 以字符为单位拼接查询的结果CONCAT()SELECT CONCAT(stu_name,':',stu_age) a

2021-03-02 13:18:35 165

原创 算法---矩阵不可变题目

给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2) 。上图子矩阵左上角 (row1, col1) = (2, 1) ,右下角(row2, col2) = (4, 3),该子矩形内元素的总和为 8。示例:给定 matrix = [[3, 0, 1, 4, 2],[5, 6, 3, 2, 1],[1, 2, 0, 1, 5],[4, 1, 0, 1, 7],[1, 0, 3, 0, 5]]sumRegion(2

2021-03-02 12:47:23 141

原创 mysql数据库---DML 数据操作语言

DML 数据操作语言插入语句insert一次插入多条数据insert into student2(stu_num,stu_name,stu_iphone,stu_brithday,stu_regist) VALUES(3,'王五','12345678913','1998-03-06',NOW()),(4,'444','12345678923','1998-03-06',NOW())用set语句插入insert into student2 set stu_num=5,stu_name='5',st

2021-03-01 16:50:07 138

原创 msql数据库---DDL数据结构语各种类型操作

为什么学习数据库:为了实现数据持久化存储,使用完善的数据库管理系统对数据进行增删改查等操作.DDL数据结构语言给已经创建了的表 增加自增alter table student2 MODIFY stu_num int auto_increment;给已经创建了的表 添加不能为空alter table student2 modify stu_age int not null;给已经创建了的表 添加主键约束alter table student2 add constraint pk_num

2021-03-01 16:49:07 142

原创 算法问题---两两交换链表中的节点

两两交换链表中的节点给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。输入:head = [1,2,3,4]输出:[2,1,4,3]示例 2:输入:head = []输出:[]示例 3:输入:head = [1]输出:[1]解题思路是新创建一个链表,每次取一个偶数节点,在取一个奇数结点,添加到末尾,当链表是奇数结点个数时,最后一个直接添加到最后就可以了。 public ListNode swapPairs(List

2020-12-30 19:44:11 161

原创 基于分治法的---快速排序

快速排序public static void QuickSort(int[] arr,int left,int right) { if(left>=right) { return ; }else { int i = left; int j = right; while(i<j) { while(i<j && arr[i]<=arr[j]) { j--; } if(i<j) { int

2020-12-26 19:15:12 117

原创 线程中实现Callable和线程池技术

新增创建线程的方式实现Callable接口,与实现Runnable相比,Callable功能更加强大一些, Callable有返回值, 方法可以抛出异常,支持泛型的返回值,需要借助FutureTask类,获取返回结果.实现Callable接口,重写call()方法package ThreadDemo6;import java.util.concurrent.Callable;public class ThreadDemo1 implements Callable<Integer&gt

2020-12-25 15:41:38 300

原创 线程通信的一些问题

线程通信线程通信是指多个线程通过消息传递实现相互牵制,相互调度,即线程之间的相互作用.设计三个方法wait(),nofify(),notifyAll();wait方法是让当前线程进入阻塞状态, 并释放同步监视器,一次notify是唤醒阻塞的一个线程,如果有多个线程在wait()就唤醒优先级最高的那个.nofityAll唤醒所有的等待的线程.交替打印0-100;package ThreadDemo4;public class ThreadDemo1 implements Runnable{

2020-12-25 15:39:39 124

原创 Syschronized同步锁和lock同步锁的区别

Syschronized和lock的区别1.Lock是显式锁(手动开启和关闭锁,别忘记关闭锁),synchronized是隐式锁,出了作用域自动释放2,Lock只有代码块锁,synchronized有代码块锁和方法锁,使用Lock锁,JVM将花费较少的时间来调度线程,性能更好。并且具有更好的扩展性(提供更多的子类)线程同步优先使用顺序:Lock >同步代码块(已经进入了方法体,分配了相应资源)>同步方法...

2020-12-25 15:38:27 1069

原创 死锁

死锁线程同步会引起死锁问题,死锁是因为 多个线程都在等待其他线程释放资源继续执行的情况, 由于都在等,因此都不能释放资源,出现的死锁问题.package ThreadDemo3;public class DieLock extends Thread{ //死锁 是指 两个或多个线程 每个线程都在等待 其他线程放弃资源,自己使用 造成都无法继续执行的情况 boolean b = true; static String s1 = new String(); stati

2020-12-25 15:37:17 159

原创 线程同步,为什么要引入线程同步?

线程同步,为什么要引入线程同步?多个线程同时访问共享资源时候,如果没有先来后到,可能造成结果的不可再现性,使得结果背离预期的结果,例如多人抢少量票,银行取钱等.线程同步的实现是依靠队列和锁来实现的java中的锁有两种Syschronized同步锁,既可以修饰同步代码块,也可以去修饰方法,默认的钥匙是this的类对象.package ThreadDemo2;public class TicketThread extends Thread{ static int num=10000;

2020-12-25 15:34:55 818

原创 线程的重要方法

关于线程的方法setName方法给线程设置名字, getPriority获取当前线程的优先级,setPriority设置当前线程的优先级, yield当前线程从执行状态没进入就绪状态, join方法,加入线程,当前线程执行完之后执行其他线程.public class Test2 { public static void main(String[] args) { ThreadDemo2 threadDemo2 = new ThreadDemo2(); Thre

2020-12-25 15:32:19 123

原创 了解进程和线程and线程的创建方式

线程进程和线程进程:进程是程序的一次执行,进程是程序机器数据在处理机上顺序执行时所发生的活动,是系统进行资源分配和调度的一个独立单位,进程具有动态性,并发性,独立性,异步性。线程:线程是进程的更小单位,引入线程,来增加并发度,线程成为了程序执行流的最小单位。一个进程可以包含多个线程,一个线程只能属于一个进程,一个进程内的多个线程共享操作系统为进程分配的资源,线程也可以理解为更轻量级的线程。java中线程的创建java中有两种方式创建线程,继承Thread类和实现Runnable接口继承Th

2020-12-25 15:20:57 129

原创 javaIO---Print打印流和对象输入输出流

Print打印流web服务器向客户端响应的时候将响应回来的字节内容打印在浏览器上,显示出来.Print打印流打印流是单向,的. 不能追加,只能输出,不能输出.PrintStream是字节流PrintWrite是字符流import java.io.IOException;import java.io.PrintStream;public class PrintStreamDemo { public static void main(String[] args) { /

2020-12-17 17:51:14 174

原创 javaIO---文件输入输出流和字符输入输出流

FileInputStream和FileOutputStream文件输入输出流,以字节为单位,每次读取一个字节,可以读取任意类型的文件package StreamDemo1;import java.io.*;public class StreamDemo2 { public static void main(String[] args) throws IOException { FileInputStream in=null; FileOutputStr

2020-12-17 17:49:20 137

原创 javaIO---不得不看的输入输出流

认识File类File类是直接指向文件对象的,在Io操作中至关重要.File的构造方法有多种,可以直接放入绝对地址,也可以放入文件对象+相对地址.File里面的方法也有许多种.import java.io.File;public class FileDemo1 { public static void main(String[] args) { File f=new File("E:/垃圾/垃圾.txt"); String path = new Stri

2020-12-17 17:47:55 109

原创 java集合框架---双列存储map

HashMap采用双列的存储方式,用哈希链表存储,键不重复,值可以重复import java.util.*;public class HashMapDemo1 { public static void main(String[] args) { Map<String,String> map = new HashMap<String, String>(); map.put("a","aa"); map.put("b

2020-12-10 18:19:26 203 1

原创 java集合框架---hashSet和treeSet之无序单列集合

hashSethashSet采用的是hash表存储,本质是数组+链表的存储方式,根据不同的hash值存储到 相应的位置, 和hashMap的存储方式相同,但是hashSet是单列,hashMap是双列,hashSet不存储重复元素,所以hashSet存储的hashMap里面的健,因为键是不重复的. 对外表现的是无序的public class SetDemo1 { public static void main(String[] args) { //set是不重复的

2020-12-10 18:18:16 271

原创 java集合框架---ArrayList,LinkList,Vector单列下的有序集合底层原理及使用

ArrayList实现类ArrayList采用可变数组的存储方式,当初始化之后长度为空,当添加第一个数据进入之后,他的长度默认是10, 当加入第11个数据的时候,会直接创建一个当前数据长度1.5倍的新数组,这样的话.然后通过数组复制的方法,直接去进行复制,实现扩容过程, 查询效率高 ArrayList a= new ArrayList(); a.add("a"); a.add("b"); a.add("d"); a.add(0

2020-12-09 20:34:41 321

原创 java为什么要引入集合框架

集合框架java为什么要引入集合框架?在实际需求中,我们需要不同的数据结构去存储数据类型,但是数组已经不能够去满足我们的需求, 数组只能存储同一种数据类型,并且长度不能改变, 引入集合框架,可以去存储不同的数据类型, 有序的,无序的, 键值对类型的,并且可不受固定长度限制, 能够去满足我们不同的需求.集合中只能存储引用类型的.Collection单列和map双列List继承Collection接口,有三个实现类 ArrayList, LinkList, Vector.List可重复,Set不可

2020-12-09 20:31:01 426

原创 不得不看的java异常总结

异常异常 分为error和exception 。error是包括jvm在内的,对于内存分配不够, jvm内部错误等 非程序错误的异常exception是程序在运行过程中,因为程序存在逻辑错误等在内的和程序有关的异常,可通过修改程序解决异常的结构异常的常见类型 int a[]={1,2,3,4,5}; System.out.println(a[5]); //数组越界异常 ArrayIndexOutOfBoundException in

2020-11-27 16:17:22 206

原创 java-数组详解

java数组什么是数组数组是逻辑上相邻,地址上也相邻,存储同一类数据类型的存储单元.数组的定义数据类型 [ ] 变量名 = new 数据类型[ 长度 ] ;数据类型 变量名[ ] = new 数据类型 [ 长度 ];数据类型 [ ] 变量名 = { 数据1 , 数据2 , 数据3 , … } ;数据类型 [ ] 变量名 = new 数据类型[ ] { 数据1 , 数据2 , 数据3 , … } ;int[] arr = new int[10];int arr1[]

2020-11-14 17:33:32 111

原创 接口和抽象类的区别

接口和抽象类的区别抽象类可以有构造方法 ,接口没有构造方法抽象类 可以存在非抽象方法, 接口不能存在非抽象方法,必须是抽象方法或者(jdk1.8以后)默认方法或者静态方法.抽象类中的方法可以是public ,protect和默认类型,但接口中的抽象方法只能是public类型的,默认是public abstract抽象类中可以有普通成员变量, 接口中不能存在普通成员变量抽象类和接口中都可以存在静态成员变量,抽象类中的成员变量任意访问权限的变量,接口中的是定义静态常量.相同点:

2020-10-31 18:27:46 111

原创 java---抽象类和抽象方法

抽象类和抽象方法​ 抽象类是指没有足够的信息去描述一个具体的对象 . 因此 抽象类也就没有对象可以创建了, 信息都不全,怎么去创建对象.具有抽象方法的类一定是抽象类,但是抽象类,不一定有抽象方法.使用abstract定义抽象类. 和抽象方法,抽象方法只定义方法名,不写方法体, 方法的实现交给子类去继承实现.构造方法和静态方法不可以修饰为abstract抽象类只能用作基类,表示的是一种继承关系。继承抽象类的非抽象类必须实现其中的所有抽象方法,而已实现方法的参数、返回值要和抽象类中的方法

2020-10-31 18:27:09 134

原创 java---final修饰符

final修饰符可以修饰类,变量和方法./** * 在定义类前面加一个修饰符final 表示该类不能再被继承了. */public final class Water { public void dreak(){ System.out.println("喝水"); }}在定义类的时候在class前面加上final, 表示该类不能再被继承了.public class Water { //在定义方法前添加final表示当前方法不能再被重写

2020-10-31 18:26:03 499

原创 java---多态最详细讲解

多态多态作为面向对象的三大特性之一,体现出了重要的作用. 一种事物 可以用多种状态表示 .但是是有前提的: 首先应该有继承关系. 要有重写, 父类对象引用子类对象优点是提高了代码的可扩展性. 方便使用,使代码更简洁 //动物类public class Animal { public String name; public int age; public void sleep(){ System.out.printl

2020-10-31 18:02:37 282

原创 面向对象三大特征详解

面向对象三大特征封装封装隐藏类的具体实现细节,类的某些信息隐藏在类中,只能通过规定方法访问, 能够体现出类的独立性, public ,protect,private 等关键字也在访问权限上体现出封装的重要性. 很显然,公共访问权限和私有访问权限,完全不同.继承现实中,儿子继承于父亲, 父亲继承与父亲的父亲 ,儿子具有父亲的某些特征,父亲也有父亲的父亲的某些特征, 在类中 属性和方法也你能继承, 两个类 如果存在一定的相同性,共同具有某些属性,满足什么是什么,就可以去继承.例如 :

2020-10-31 17:58:53 175

原创 java----访问权限修饰符的作用

访问权限类的属性和方法的访问权限访问权限修饰符用在变量或者方法的前面,用于规定权限使用这是第一个类,父类package com.ff.test;public class Demo1 { public String pub="公共的"; protected String pro="受保护的"; String def="默认访问的"; private String pri="私有的"; public static void main(String[]

2020-10-31 17:57:11 405

原创 java-认识包

认识包​ 前面我们认识了类,现在我们就可以对类进行解释了,包就相当于类的地址, 在计算机操作系统上就是一级一级的文件夹,有了地址我们就可以对其他的类进行引用, 可以创建其他包中的类和使用其他类的属性方法 ,当我们创建类之前,肯定需要去创建一个包, 相当于给类一个家.package com.ff.OOP;import java.util.Date;public class Test1 { Date date = new Date(); java.sql.Date

2020-10-31 17:55:44 164

原创 java不得不看的static关键字

static关键字static变量:​ 在类中,被static所修饰的变量属于类的, 不属于对象的, 直接加载到方法区,所有的对象可以去引用到方法区的static变量,不能去修改.随着类的加载而去加载 优先于对象存在 修饰的成员 被所有对象所共享 不用创建对象 直接被调用static String country="中国";这个就是静态变量,属于类.用static修饰的块​ 称为静态代码块, 在类被加载时执行一次, 加载的顺序在前,static{ System.ou

2020-10-29 20:21:30 297 1

原创 面向对象和面向过程简述

面向对象和面向过程个人理解 不喜勿喷 : 面向对象的更多的在于关注事物之间的关系, 很清晰的表述自然界事物的关系并总结一般规律, 对象具有的特征,行为都能在面向对象语言中得到很好的体现, 面向对象 的封装特征把使得事物个体化,描述起来更加清晰, 更加符合自然规律, 面向对象的思想特征使得我们满足需求更加容易. 面向过程 更加关注的是实现过程,过程流程描述的更加清晰, 注重于去分解一步一步的步骤.面向对象和面向过程相互联系, 不会绝对分开, 只是侧重点不同 . java语言是面向对象的语言,

2020-10-25 22:18:55 1238 3

原创 java基础语法----流程控制

流程控制判断语句if(判断条件){​ 如果为真,执行if语句里面的程序}else{​ 如果为假,执行ielse语句中的程序}多分支选择语句switch语句: 指的是多分支选择语句, switch里面的参数 用来决定选择执行那条语句,后面通过 break跳出switch语句,对于简单的判断的话,他的判断效率更高.如果语句中未找到与条件匹配的case,且没有default语句,会跳出swith语句,继续向下执行.for循环基本语法为 for(int i=0;i&lt

2020-10-17 19:18:21 244 1

原创 java基础语法----运算符

运算符算数运算符: + , - ,* ,/,%,++,–字符串连接运算符: +关系比较运算符: > ,<, >=,<=,==,!=逻辑运算符: !,& ,| , && , ||赋值运算符 : = ,+= ,-=,* =./=比较运算符“&”和“&&”的区别:单&时,左边无论真假,右边都进行运算;双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。“|”和“||”的区别同理,||表

2020-10-17 19:08:55 177

原创 java基础语法----基本数据类型,Unicode编码,基本数据类型转换

java数据类型程序中对于每一种数据都定义了明确 的具体数据类型,在内存中分配了不同大小的内存空间基本数据类型byte 字节类型 1个字节short 短整型 2个字节int 整形 4个字节long 长整形 8个字节float 单精度浮点数 4个字节double 双精度浮点数 8个字节char 字符类型 默认2个字节boolean 布尔类型 1个字节java语言的整形常量默认为int 类型,声明

2020-10-17 19:07:49 223

原创 java基础语法----标识符,变量

标识符标识符java对各种变量,方法和类等要素命名时使用的字符序列称为标识符定义合法标识符规则:由26个英文字母大小写,0-9,_或者$组成数字不能开头,不能使用以关键字和保留字作为标识符,但可以包含关键字关键字和保留字. inttjava 中严格区分大小写,长度无限制. A a标识符不能包含空格.注意: 起名字为了提高阅读性,要尽量有意义,“见名知意” “驼峰”Java中的名称命名规范:包名: 多单词组成所有字母都小写:xxxyyyzzz类名,接口名: 多单词组成

2020-10-17 19:06:32 183

原创 java基础语法----注释,关键字,保留字

注释注释对程序功能的说明,以某种特定符号作为标记,程序在运行过程中不会被注释java语言有三种注释方式:​ // 用于单行注释 快捷键ctrl+/​ /* 用于多行注释,快捷键 ctrl+shift+/ ctrl+shift+\ */​ /** 文档注释,用于为类,方法函数,属性功能进行说明,可在调用时提示 */关键字定义被java语言赋予了特殊含义,用作专门用途的字符串,特点关键字的所有字母都为小写class interface enum byt

2020-10-17 19:04:27 163

原创 java概述和发展史

java概述和发展史1.为什么学习java-用于服务器程序​ 银行,证券交易平台,电子商务后台…-用于Android开发安卓手机,各种移动设备,智能家电-软件工具开发eclipse ,ineteIjidea-嵌入式领域智能卡,传感器上-大数据技术hadoop以及其他大数据处理技术都是用的java2.java语言发展史(1)Java发展简史​ 在1991年时候,James Gosling(詹姆斯•高斯林)所在sun公司的工程师小组,需要设计一种小型计算机语言,该语言主要

2020-10-10 18:57:22 445

空空如也

空空如也

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

TA关注的人

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