自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 力扣题:两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/two-sum著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。方法一:暴力枚举思路及算法最容易想到的方法是枚举数组中的每

2021-10-22 12:23:11 167

原创 SpringBoot中常用的注解及用途

@RequestMapping@Controller@RequestMapping(value="/demo")public class DemoController{ @RequestMapping(value="/home",method=RequestMethod.GET) public String home(){ return "/home"; }}@RequestMapping 注解的主要用途是将Web请求与请求处理类中的方法进行映射。提示:在使用@RequestMa..

2021-09-29 15:06:33 329

原创 JDBC连接数据库的过程

JDBCJava数据库互联,用于实现使用java编程的方式访问数据库JDBC连接数据库步骤:加载驱动程序,可以理解为JDBC API的实现,API指的是应用编程接口获取数据库连接构建一个用于提交SQL语句的对象由DBMS执行SQL语句,并返回执行结果ResultSet遍历结果集关闭连接等对象使用JDBC实现用户管理系统系统功能:提供用户注册、用户登录和修改口令等功能,这里的用户可以分为普通注册用户和管理员两种1、 创建对应的数据表create database books def

2021-09-15 22:44:57 199

原创 MySQL中对表的基本操作-----DML+DQL

增加数据:1.Insert into 表名称 values(值的列表) Insert into tb_users values(1,’yan’,’123’) 注意和表的列定义一 一对应,当值不确定时也必须写nullInsert into 表名称(列名称,…) values(对应的值,…) 注意一 一对应,注意数据类型。如果没有出现的列则自动插入null删除数据delete from 表名称; 删除表中的所有数据,表结构仍旧存在,类似truncate table 表名称..

2021-09-15 20:13:27 127

原创 浅谈MySQL中的列类型

1.数值型数值列类型类型名说明tinyint(小整型)1B,非常小的整数,取值范围[-128,127]smallint(微整型)2B,较小的整数,取值范围[-32768,32767]mediumint3B,中等大小的整数,取值范围[-8388608,8388607]int4B,标准整数,取值范围 2147483647bigint8B,大整数,取值范围9223372036854775807float4B,单精度浮点数,取值范围3.4E+38

2021-09-12 16:32:34 246

原创 常见的SQL命令

常见的SQL命令DDL – 数据定义语言Data Definition LanguagDCL – 数据控制语言 Data Controll LanguageDQL - 数据查询语言 selectDML-数据操纵语言Data Manipulation LanguageSQL语言都基于SQL92标准,但各数据库之间又存在差异。目前最新的标准为SQL99,它同样兼容SQL92。SQL-Structured QueryLanguage结构化查询语言。DDL – 数据定义语言Data Definition L

2021-09-12 11:54:44 247

原创 常用的mysql服务命令及ER模型

常用的mysql服务命令及ER模型常用mysql服务命令mysql中已有的数据库ER模型常用mysql服务命令登录mysql:mysql –u用户名 –p口令提示一般不建议在命令行上直接输入口令退出mysql:quit启动mysql:net start mysql结束:net stop mysql查看mysql版本:select version();显示所有数据库:show databases;mysql中已有的数据库information_schema – 系统数据库,

2021-09-09 17:25:29 251

原创 MySQL的简单介绍---MySQL的安装卸载

什么是MySQL数据库MySQL数据库软件是一种客户端/服务器系统,由支持不同后端的1个多线程SQL服务器,数种不同的客户端程序和库,众多管理工具和广泛的应用编程接口API组成MySQL特点:体积小、速度快、总体拥有成本低,尤其是开放源码这一特点MySQL数据库的应用每个表可支持高达64条索引。每条索引可由1~16个列或列元素组成。最大索引宽度为1000字节。索引可使用具备CHAR、VARCHAR、BLOB或TEXT列类型的列前缀所有数据均以所选的字符集保存。正常字符串列的比较不区分大小写

2021-09-09 16:44:37 110

原创 html+js实现选择对应省份下边的城市

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Do

2021-09-08 22:30:35 1790

原创 浏览器加载原理分析

浏览器按照从上到下的顺序下载HTML文档,一边下载一边加载到内存, 不是全部下载后再全部加载到内存。另外DOM 树结构的绘制优先于关联元素的加载,比如图片通常来说,浏览器执行JavaScript脚本有两大特性:①载入后马上执行。②执行时会阻塞页面后续内容(包括页面的渲染、其它资源的下载)浏览器加载HTML文档时如果遇到...

2021-09-07 19:36:27 200

原创 JavaScript和Java的区别

虽然JavaScript和Java有着密切的联系,但却是两个公司开发的不同的两个产品。Java是SUN公司推出的新一代面向对象程序设计语言,特别适合Internet应用程序开发;Java的前身是Oak语言;而JavaScript是Netscape的产品,其目的是为了扩展Netscape Navigator 功能,而开发的一种Web页面中的基于对象和事件驱动的解释性语言,它的前身是LiveScript。...

2021-09-07 10:24:14 113

原创 get和post的区别

get方式请求会将请求参数的名称和值转换为字符串,并附在URL之后,会被浏览器记录在历史记录中,安全性差,传送数据量比较小(一般不能大于2KB),语义是获取数据post方式采用协议体传送数据,不会记录在历史记录中,安全性高,传送数据量不受限制,语义是提交数据...

2021-09-06 19:19:38 84

原创 计算机网络基础:三次握手建立连接,四次挥手断开连接过程理解

OSI(开放系统互联模型)OSI把网络通信的工作分为7层,分别是物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。物理层:比特流传输数据链路层:提供介质访问和链路管理网络层:IP选址和路由选择传输层:建立、管理和维护端到端的连接会话层:建立、管理和维护会话表示层:数据格式转化、数据加密应用层:为应用程序提供服务TCP/IP模型TCP/IP协议是一个开放的网络协议簇,TCP/IP采用4层层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求,这4各层次分别是:网络接口层、网

2021-09-03 13:11:33 798

原创 TCP协议和UDP协议,及其区别

TCPTCP是Tranfer Control Protocol的 简称,是一种面向连接的端对端的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。UDPUDP是User Datagram Protocol的简称,是一种无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。UDP:1.每个数据报中都给出了完整的地址信息,因此无需要建立发送方和接收方的

2021-09-03 12:26:52 719

原创 join和CountDownLatch的区别

join用于让当前线程等待join线程执行结束,例如:t.join()指的是等待t线程执行结束在执行其他线程其原理是不停检查join线程是否存活,如果join线程存活则让当前线程永远wait。countDownLatch没有这个线程,只要count减小到0,不管被等待线程是否执行结束,等待线程都可以继续执行(被唤醒,进入可执行状态)。...

2021-08-31 21:41:36 419

原创 死锁的产生原因及必要条件

死锁问题多线程以及多进程改善了系统资源的利用率并提高了系统 的处理能力。然而,并发执行也带来了新的问题——死锁。死锁的概念所谓死锁是指两个或两个以上的线程在执行过程中,因争夺资源而导致的一种互相等待的现象,若无外力作用,它们都将无法推进下去。怎么检测一个线程是否拥有锁?在java.lang.Thread中有一个方法叫holdsLock(),它返回true如果当且仅当当前线程拥有某个具体对象的锁。死锁产生的原因系统资源的竞争。通常系统中拥有不可剥夺资源,其数量不足以满足多个进程运行的需要,使

2021-08-29 16:10:24 231

原创 synchronized和Lock比较

Synchronized和Lock都是可重入锁,但synchronized不是可中断锁,而Lock是可中断锁。Synchronized底层:使用指令码方式来控制锁的,映射成字节码指令就是增加两个指令:monitorenter和monitorexit。当线程执行遇到monitorenter指令时会尝试获取内置锁,如果获取锁则锁计数器加1,如果获取锁则阻塞;当线程遇到monitorxit指令是则锁计数器-1,如果计数器为0则释放锁。Lock的底层:是CAS乐观锁,依赖AbstractQueued..

2021-08-29 15:19:01 373

原创 读取一个文件记录其中不同字符的出现次数—map

Map<Character, Integer> map=new HashMap<Character, Integer>(); try(Reader r=new FileReader("D:\\a.txt")){ int kk=0; while ((kk=r.read())!=-1) { char temp=(char)kk; //如果map中已经存在这个char,则将value加1,否则添加到map中 if (map.containsKey(temp)).

2021-08-25 22:25:28 86

原创 用程序给出随便大小的10 个数,序号为1-10,按从小到大顺序输出,并输出相应的序号—map

思路:Map中要求键值唯一,随机生成的数可能重复,不能作为键值,但序号唯一,所以可能作为键值第一种方法:使用使用map.entrySet()取出Entry存放到Set容器里,使用TreeSet进行自定义比较器的方式对值排序 Map<Integer, Integer> map=new HashMap<Integer, Integer>(); Random r=new Random(); for (int i = 1; i <=10; i++) map.put(i,

2021-08-25 22:18:03 877

原创 java集合类

集合简单介绍集合是什么?Iterator迭代器Collection接口 无序、允许重复List接口 集合有序、允许重复接口定义主要方法特殊方法常见的List接口的实现类ArrayList的使用和实现Set接口 集合无序,不允许重复接口定义主要方法集合是什么?Java集合类存放于 java.util 包中,是一个用来存放对象的容器注意• 集合只能存放对象。• 集合存放的是多个对象的引用,对象本身还是放在堆内存中• 集合可以存放不同类型,不限数量的数据类型。定义集合变量时如果不指定数据类型,则默认

2021-08-09 23:31:39 987

原创 练习:编写10个线程,第一个线程从1加到10,第二个线程从11加到20...第十个线程从91加到100,最后再把十个线程结果相加

实现方式1:定义一个10个长的FutureTask[],使用Callable接口,因为future.get()可以阻塞当前线程的执行package com.cao3;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.FutureTask;public class Test4 { public static void .

2021-08-05 17:49:51 938

原创 sleep和wait的比较

waitSleep同步只能在同步上下文中调用wait方法,否则抛出IllegalMonitorStateException不需要在同步方法或同步块中调用作用对象wait方法定义在Object类中,作用于对象本身sleep方法定义在Thread中,作用于当前线程释放锁资源是否唤醒条件其他线程调用对象的notify()或者notifyAll()方法超时或者调用interrupt()方法体方法属性wait是实例方法sleep是静态方法Java...

2021-08-05 15:11:28 55

原创 线程状态转换图及其5种状态切换

线程的状态切换图:线程变化的5状态转换:新建状态(New):新创建了一个线程对象。就绪状态(Runable)/可运行状态:线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可执行的线程池中,变得可执行,等待获取CPU的使用权。执行状态(Running )/运行状态:就绪状态的线程获得了CPU。执行程序代码。阻塞状态(Blocked):阻塞状态的线程由于某种原因被迫放弃了CPU的使用权。临时停止执行,指导线程进入就绪状态,才有机会转到执行状态。阻塞的情

2021-08-04 22:16:05 7276

原创 java线程四种实现方法

线程的四种实现方法1.继承Thread类2.实现Runnable接口3.使用Callable和Future接口创建线程4.使用线程池创建线程总结1.继承Thread类 Thread类本质上是实现了Runnable接口的一个实例,代表一个 线程的实例。启动线程的唯一方法就是通过Thread类的start()实例方法。start()方法是一个native方法,它将启动一个新线程,并执行run()方法。这种方式实现多线程很简单,通过自己的类直接extends Thread,并复写run()方法,就可

2021-08-04 15:55:52 266

原创 OOM的可能原因?

OOM的可能原因?数据库的cursor没有及时关闭未关闭InputStream outputStreamBitmap 使用后未调用recycle()static等关键字非静态内部类持有外部类的引用context泄露

2021-08-03 18:29:15 46

原创 java IO总结

IO可以分为BIO同步阻塞、NIO同步不阻塞、AIO异步不阻塞输入和输出、字节和字符、节点和过滤字节流InputStream OutputStream InputStream read(byte[]):int 将读入的数据写入到byte[]数组中,返回int值表示读取的字节数;返回-1表示流结束 OutputStream write(byte[],0,len):void 将字节数组byte[]中的数据进行写出,写出的内容从byte[]的0位置开始,到len个字节结束 .

2021-07-29 19:11:32 98

原创 删除某个指定文件夹,例如c:\windows,这个文件夹有多少层下级文件夹不确定

public class Test { public static void main(String[] args) { String str = "D:/Python37"; File f = new File(str); if(f.exists()){ del(f); } } public static void del(File temp){ if(temp!=null){ if(temp.isDirectory()){ File[] children=t

2021-07-28 16:28:25 62

原创 练习题:列出windows目录下所有文件

知识点:java I/O输入输出public static void list(File temp) { if (temp != null) { if (temp.isFile()) System.out.println(temp.getAbsolutePath() + "---" + temp.length()); else if (temp.isDirectory()) { File[] child = temp.listFiles(); if (child !=

2021-07-28 16:25:40 180

原创 设计模式-装饰器模式

设计模式之装饰模式装饰模式概念意图使用场景优缺点代码实例装饰模式概念装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。Decorator模式又名包装器Wrapper,它的主要用途在于给一个对象动态的添加一些额外的职责。与生成子类相比,它更具有灵活性这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。装饰器模式中的四种角色:被装饰对象、装饰对象

2021-07-28 15:53:14 75

原创 面向对象6大核心设计原则

面向对象6大核心设计原则:单一职责原则:应该有且仅有一个原因引起类的变更。里氏替换原则:只要父类能出现的地方子类就可以出现,而且替换为子类也不会产生任何错误或异常,使用者不需要知道是父类还是子类。但是,反过来就不行了,有子类出现的地方,父类未必就能适应。依赖倒置原则:模块间的依赖通过抽象发生,高层模块和低层模块之间不应该发生直接的依赖关系,二者都应该是通过接口或抽象类产生的;即依赖抽象,而不依赖具体的实现。接口隔离原则:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。

2021-07-28 15:15:47 136

原创 java-异常

异常的概念Java异常是Java提供的用于处理程序中非正常情况的一种机制Java异常处理的关键字有throws声明抛出异常、throw编程抛出异常、try定义陷阱代码、catch捕获异常进行处理、finally无论正常执行还是出现异常都需要执行的代码共5个关键字异常的分类JavaSE中定义了很多异常类,这些类可以对应各种各样可能出现的异常事件。Throwable类是Java异常类型的顶层父类,一个对象只有是 Throwable 类的(直接或者间接)实例,他才是一个异常对象,才能被异常处理机制识别

2021-07-28 15:08:35 67

原创 接口和抽象类的异同点

相同点:都是不断向上抽取而来的接口中的方法是所有实现类的契约抽象类用于定义所有具体类的公共方法和规范具体类需要实现的方法不同点:抽象类需要被继承,而且只能单继承接口需要被实现,而且可以多实现抽象类中可以定义抽象方法和非抽象方法,子类继承后可以直接使用非抽象方法接口中只能定义抽象方法,必须由子类去实现(JDK1.8 -),JDK1.8之后允许在接口中定义默认实现,即使所有的抽象方法都有默认实现,也必须有实现类,否则无法调用抽象类的继承是is a关系,在定义该体系的基本共性内容接..

2021-07-24 17:06:45 69

原创 设计模式-模板模式

建议的使用场景:把通用操作和方法放在父类中,将特殊的方法定义在子类中。代码实现:父类中固化算法,将父类中无法定义的内容延迟到子类中实现---模板模式abstract class BubbleSorter { public void sort(Object[] arr) { for (int i = 1; i < arr.length; i++) { for (int k = 0; k < arr.length - i; k++) { if(bigger(arr[k],

2021-07-24 11:23:34 69

原创 java 方法的重写与重载理解

方法的重写与重载理解方法的重写和重载方法的重写方法的覆盖重写与重载之间的区别总结方法的重写和重载方法的重写和方法的重载是多态的两种不同表现形式方法的重写要求:方法的名称一致方法的重写(覆盖)一定发生在父子类之间代码验证:public class Test { public static void main(String[] args) { F4 f=new F4(); f.pp(10); S4 s=new S4(); s.pp(10); F4 fs=new S4(); fs.pp

2021-07-20 18:46:18 197

原创 设计模式---单例模式

模式由专家总结出来的在某种情况下解决某类问题的最佳解决方案,是思想、是知识,是一种抽象的内容在软件开发中没有银弹—通用解决方案GOF将Java中的常见解决方案归纳为23种三大类意图保证一个类仅有一个实例,并提供一个访问它的全局访问点主要解决一个全局使用的类频繁地创建与销毁何时使用当您想控制实例数目,节省系统资源的时候public class Singleton{ private Singleton(){}//保证类外不能直接new对象 private static Sin

2021-07-19 22:47:13 84

原创 java--final关键字

关键字final作用final的意思是最终的、不可变的1、修饰类//当final修饰类时,final类的含义是不可被继承 final class A11{}class B11 extends A11{}//语法错误实现类不能被继承的方法2技巧实现不能被继承,构造器私有—私有构造器class A11{ private A11(){}}class B11 extends A11{}//语法错误2、修饰方法class A11{ //方法上添加final表示这个方法不可以被覆盖,是可

2021-07-18 17:17:40 54

原创 1、猜数字游戏:一个类A有两个成员变量v、num,v有一个初值100。定义一个方法guess,对A类的成员变量v,用num进行猜。如果大了则提示大了,小了则提示小了。等于则提示猜测成功。在main方法

定义一个类,其中封装成员变量v—猜数的目标, num—猜测的数据guess方法根据num和v比对结果生成对应的提示信息import java.util.Scanner;public class Guess { //测试调用 public static void main(String[] args) { Scanner sc=new Scanner(System.in); A a=new A(); while (true) { System.out.print("请输入猜测的

2021-07-09 23:36:38 1548

原创 找出字符串中指定子串的出现次数

//找出字符串中“ad”的出现次数public class Test10 { public static void main(String[] args) { String str="fdsasasadadafsffaewad"; String s1=str.replace("ad", ""); System.out.println((str.length()-s1.length())/2); }}

2021-07-08 16:06:46 317

原创 比较字符串的大小

public class Test8 { public static void main(String[] args) { String s1="abc"; String s2="abvs"; //比较结果有三种:负数,0,正数。负数代表前面的字符串小于后面的字符串,0表示两个字符串相等,正数代表前面的字符串大于后面的字符串 System.out.println(s1.compareTo(s2)); }}...

2021-07-07 10:30:11 737

原创 对已有字符串进行反转操作

//对已有字符串进行反转操作public class Test7 { public static void main(String[] args) { String ss="asfsavfdhhgff"; StringBuilder sb=new StringBuilder(); for (int i = ss.length()-1; i>=0; i--) { sb.append(ss.charAt(i)); } System.out.println(sb); }}

2021-07-07 10:18:40 60

空空如也

空空如也

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

TA关注的人

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