
java
Outsider_in
这个作者很懒,什么都没留下…
展开
-
Tomcat以服务方式启动,无法访问网络共享目录问题
tomcat访问网络共享目录原创 2024-04-08 19:08:48 · 519 阅读 · 1 评论 -
解读zip文件,获取压缩包内文件的字节流
解读压缩包文件原创 2023-11-06 18:34:13 · 480 阅读 · 0 评论 -
清除MySQL数据库数据包括自增主键
truncate table table_name;原创 2021-03-31 11:20:31 · 534 阅读 · 0 评论 -
Tomcat:web服务器软件
Tomcat:web服务器软件步骤:去官方下载安装包。apache-tomcat-9.0.39-windows-x64.zip解压到 D:Developer/tomcat目录下(—>文件路径)启动tomcat服务:在tomcat/bin/startup.bat 双击该文件访问tomcat服务的管理页面 ----->http:// ip地址:8080 回车出现端口被占用了:找到你占用的端口:cmd指令:netstat -ano端口号:0~65535 找到对原创 2021-01-09 14:50:28 · 161 阅读 · 0 评论 -
DBUtils工具类
优化JDBC开发的流程,使开发者只注重业务需求,而不要关注繁琐的jdbc开发步骤。步骤:先从官网去下载DBUtils的jar包 commons-dbutils-1.6.jar 放到classpath类路径下,也就是 lib文件夹下面,依赖于数据源还要下载数据库连接池jar包 c3p0 / druid 数据库驱动jar包、commons-logging.jar包搭建数据源工具类 DruidDBUtil 可以获取数据源从数据源中获取连接 ----> DBUtils来直接操作原创 2021-01-09 14:34:22 · 297 阅读 · 2 评论 -
JDBC Template
Spring框架提供了对JDBC操作的简单封装,使用JDBCTemplate对象来简化JDBC开发流程步骤从官网下载对应的spring-jdbc相关的jar包,导入工程类路径下,放到lib文件夹下面即可创建JDBCTemplate对象。依赖于DataSource连接池(数据源)使用JDBCTemplate对象中的api方法实现crud操作1、DML操作:update()2、DQL操作:查询 不用select,使用queryquery():将查询的结果集封装成javaBean对象query原创 2021-01-07 21:04:17 · 173 阅读 · 0 评论 -
JDBC
JDBC概念:什么是JDBC:java DataBase Connectivity 使用java语言连接数据库的技术本质:就是官方定义的操作数据库的一套规范、规则、都是接口。各个数据库厂商去实现这套借口,提供对应的数据库驱动jar包。我们可以使用这个驱动jar包,来完成连接数据库操作数据库的功能快速入门:步骤1、添加jar包到工程中public static void main(String[] args) throws Exception { // 2、注册驱动 Class.for原创 2021-01-06 21:31:38 · 109 阅读 · 0 评论 -
方法引用
方法引用在使用Lambda表达式的时候,实际我们传递的是一段解决问题的代码,给什么参数做什么操作。Lambda冗余的场景:比如我们想要打印一个文本内容。//准备一个函数式接口// 准备一个函数式接口@FunctionalInterfacepublic interface Printable { // 定义唯一的抽象方法 public abstract void print(String str); }准备一个测试类 public class Demo01Method { //原创 2020-12-22 22:56:47 · 94 阅读 · 0 评论 -
Stream流
在Java1.8中,由于Lambda表达式这种函数式编程 JDK引入了一个全新的概念Stream流。用来解决已有集合类库的一些弊端的。例如:给定一些集合的数据public class Demo01Stream{ public static void main(String[] args){ //构建一个集合 List<String> list = new Arraylist<String>(); list.add("abc123"); list.add("aa原创 2020-12-22 22:15:02 · 234 阅读 · 1 评论 -
函数式编程接口
函数式接口概念函数式接口在java指的是:有且仅有一个抽象方法的接口就称为函数式接口。函数式接口,使用于函数式编程,在java当中的函数式编程体现在Lambda,所以函数式接口就是用来服务Lambda表达式。只有确保接口当中有且仅有一个抽象方法,java中的lambda才能顺利的进行推导。备注:语法糖是指使用更加便利方便,但是原理不变的代码语法。就比如便利集合的时使用for-each语法,其实底层使用的是迭代器,这便是语法糖。格式只有确保接口当中有且仅有一个抽象方法即可:修饰符 interfa原创 2020-12-19 22:24:51 · 373 阅读 · 2 评论 -
网络编程基础
软件架构:C/S架构: 即Client/Server(客户端/服务器端)架构,QQ、迅雷。B/S架构: 即Browser/Server(浏览器端/服务器端)架构,简化了系统的开发,维护和使用。谷歌、火狐。B/S架构与C/S架构的区别:C/S架构基于局域网的,而B/S架构基于广域网的基础上。硬件环境不同,C/S建立在专用网络上,小范围的网络,可以专门的服务器提供数据连接和数据交换C/S一般面向的固定用户群体,对信息的安全控制较高较高一点。对程序架构不同用户接口不同:C/S架构大多建立在W原创 2020-12-18 23:48:11 · 351 阅读 · 2 评论 -
打印流
java.io.PrintStream类能够很方便打印各种数据类型的值。构造方法public PrintStream(String filename):使用指定的文件名创建一个新的打印流对象。改变打印流的方向:正常System.out就是PrintStream类型的,数据的流动的位置在控制台中。改变数据的流动位置。通过System.setOut(PrintStream print)来改变流向。 PrintStream out = System.out; out.print(123);// 在原创 2020-12-17 23:32:32 · 127 阅读 · 0 评论 -
序列化流
java提供了一种对象序列化的机制,用一个字节序列可以表示一个对象,该字节序列包含该对象的数据、对象的类型和对象中存储的属性等信息。字节序列写入到文件中后,就相当于再文件中保存了一个对象信息。反之,该字节序列还可以从文件读取出来,重构对象,对它进行反序列。对象的数据、对象的类型和对象中存储的数据信息,都可以用来在内存中创建对象。图解如下:ObjecetOutputStream类java.io.ObjectOutputStream类,将java对象的原始数据类型写入到文件中,实现对象的持久化存储。.原创 2020-12-17 23:28:06 · 145 阅读 · 0 评论 -
转换流【字节流<--->字符流】
字符编码: 按照某种规则,将字符存储到计算机中,称为编码;反之,将存储在计算机中的二进制数按照某种规则解析显示出来,称为解码。在进行编码和解码过程中,我们必须采用是同一种规则,才能数据正常,否则,会会导致乱码现象。字符编码:就是一套自然语言中的字符与二进制数之间的对应规则。字符集:字符集:是一个系统可支持的所有字符的集合,包括各国文字,标点符号,图形符号,数字等,也叫编码表。计算机中要准确的存储和识别各种文字的字符符号,需要进行字符编码,一套字符集至少有一个套字符编码常见的原创 2020-12-17 22:52:22 · 209 阅读 · 0 评论 -
Buffered缓冲流
缓冲流【Buffered】缓冲流我们可以理解为对原来的数组方式进行数据传输的一种增强按照类型分为两种:字符缓冲流:BufferedReader BufferedWriter字节缓冲流:BufferedInputStream BufferedOutputStream缓冲流的基本原理,是在创建流对象的时候,会先创建一个内置的默认的大小的缓冲区数组,通过缓冲区来读写数据,减少系统的io操作的次数 ,减少开销,提高程序的读写效率。字节缓冲流:构造方法:public BufferedInputSt原创 2020-12-17 22:22:30 · 230 阅读 · 1 评论 -
属性集【Properties】
java.util.Properties类继承于Hashtable,用来表示一个持久的属性集。它使用键值结构存储数据,每个键及其对应的值都是一个字符串。构造方法public Properties():创建一个空的属性集列表。共性 的api方法public Object setProperty(String key,String value):保存一对属性。public String getProperty(String key):使用此属性列表中指定的键来搜索对应的值。public Setst.原创 2020-12-17 22:20:39 · 125 阅读 · 1 评论 -
IO流
字节输出流【outputStream】java.io.OutputStream 此抽象类是表示输出字节流的所有类的超类,将指定的字节信息写入到目的地,他定义了字节输出流的基本共性的api方法:public void close():关闭输出流并释放与此相关的其他任何系统资源。public void flush():刷新此输出流并强制任何缓冲的输出字节信息被写入。public void write(byte[] b):将b.length字节从指定的字节数组写入到此输出流中。pubic void w原创 2020-12-16 09:10:45 · 214 阅读 · 0 评论 -
递归
概述递归:指的是当前方法调用自己的一种现象。递归 的分类:递归分为两类:直接递归和间接递归直接递归:称为方法自身调用自己的情况间接递归:可以归结为:方法A调用了方法b,方法b调用了方法c,方法c反过来又调用了方法a。注意事项:递归一定要有边界条件(条件限定),保证递归能够停止下来,否则会发生栈内存溢出。在递归当中虽然有限定条件,但是递归的次数也不能太多,否则也会发生栈内存溢出现象。构造方法禁止递归示例代码:public class DemoRecursion { publi原创 2020-12-14 21:16:56 · 649 阅读 · 0 评论 -
File类
概述:java.io.file类是文件和目录路径名的抽象表示。主要用于文件和目录的创建、查找、删除等操作。java把电脑中的文件和文件夹(目录)封装为了一个File类,我们可以使用File类对文件和文件夹进行操作。可以使用File类的方法:1、创建一个文件、文件夹2、删除一个文件、文件夹3、获取一个文件、文件夹4、判断文件、文件夹是否存在5、对文件进行遍历6、获取文件的大小File类是一个与系统无关的类,任何操作系统都可以使用这个类中的方法。构造方法public File(St原创 2020-12-12 22:17:19 · 179 阅读 · 0 评论 -
Lambda表达式
函数式编程思想概述y = x + 1,在数学中,函数就是有输入量,输出量的一套计算方案;也就是“拿什么东西,做什么事情”。相对而言,面向对象过程过分强调"必须通过对象的形式来做事情",而函数式编程思想则尽量忽略面向对象的复杂语法—强调做什么,而不是以什么方式来做。面向对象的思想:做一件事情,找一个能解决这个事情的对象,调用对象的方法来完成事情。函数式编程的思想:只要能获得这个事情的结果,谁去做的,怎么做的都不重要,重视的是结果,不重视过程。冗余的Runnable代码当需要启动一个线程去完成原创 2020-12-12 21:35:12 · 139 阅读 · 0 评论 -
线程池
线程池的概念:线程池:其实就是一个可以容纳多个线程的容器,其中的线程可以反复的使用,省去了频繁的创建线程对象的操作,无需反复创建线程而消耗过多的系统资源。由于线程池中有很多操作都是与优化系统资源有关的,接下来介绍了解一下线程池的工作原理:...原创 2020-12-11 23:00:29 · 135 阅读 · 0 评论 -
线程
并行与并发并发:指的是两个或者多个事件(任务)在同一时间段内发生的。并行:指的是两个或者多个事件(任务)在同一时刻发生(同时发生)。图解如下:线程与进程进程:是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个线程;进程也是程序的一次执行过程,是系统 运行程序的基本单位;系统运行一个程序就是一个进程从创建、运行到消亡的过程。线程:线程是进程中的一个执行单元,负责当前进程中程序的运行,一个程序中至少有一个线程。一个进程可以有多个线程,这个应用程序也可以称之原创 2020-12-10 22:56:57 · 403 阅读 · 0 评论 -
异常
异常的概念:异常的的是在程序的运行过程中,出现的非正常情况,最终导致JVM的非正常停止在java等面向对象的编程语言中,异常本身就是一个类,产生异常就是创建异常对象并抛出了一个异常对象。java处理异常的方式是中断处理。备注:异常值得并不是语法错误,语法错了,编译无法通过,不会产生字节码文件,根本不会运行。异常的体系:异常机制其实是帮助我们找到程序中出现的问题,异常的根类是java.lang.Throwable,它的下面有两个子类:java.lang.Error和java.lang.Except原创 2020-12-10 22:22:30 · 150 阅读 · 0 评论 -
Map集合
概述:现实生活中,我们常会看到这样一种集合:IP地址和主机名,身份证号和个人,系统用户名与系统用户对象等,这种一一对应的关系,我们把它称之为映射。Java当中提供了专门的集合类用来存放这种映射关系的对象。即java.util.Map接口。Collection中的集合,元素是孤立存在的(单身),向集合中存储元素采用一个一个元素存储的方式进行存储。Map中的集合,元素是成对存在的(夫妻),每个元素由键和值两部分组成。通过键可以找到对应的值。Collection中的集合我们称之为单列集合,Map中的集原创 2020-12-04 22:34:06 · 159 阅读 · 0 评论 -
Comparator接口比较器
Collections工具集中的sort() public static <T> void sort(List<T> list) public static <T> void sort(List<T> list,Comparator<? super T> c) Comparator接口在java.util包下面,排序是Comparator需要实现的功能之一,该接口代表的是是一个比较器,比较器具有可比性,可以做排序的,本质.原创 2020-12-04 22:29:51 · 205 阅读 · 0 评论 -
Collections集合工具类
常用功能java.util.Collections是集合工具类,用来操作集合对象中的元素, 方法如下:public static <T> boolean addAll(Collection<? super T> c,T... elements):往集合中一次性添加多个元素。public static <T> void shuffle(List<?> list):打乱集合中的元素顺序。public static <T> void sort(原创 2020-12-04 22:26:16 · 202 阅读 · 0 评论 -
可变参数
可变参数在JDK1.5之后,如果我们定义一个方法需要接受多个参数,并且多个参数的数据类型一致,那么我们可以简化成如下格式:修饰符 返回值类型 方法名(参数类型... 形参名){ //...}其实上面的格式完全等价于:修饰符 返回值类型 方法名(参数类型[] 参数名){ //....}只是后面的写法,在方法调用时,必须传递一个数组类型,而前者可以直接传递参数数据。JDK1.5之后,出现的这种简化操作。"…"用在参数上,我们称之为可变参数。同样是代表数组,但是在方法原创 2020-12-04 22:19:38 · 138 阅读 · 0 评论 -
LinkedHashSet集合
LinkedHashSet集合我们知道HashSet保证元素的唯一,可是存进去的元素是没有顺序的,那么如何保证存进去的元素是有序的?在java.util.HahSet类的下面还有一个子类java.util.LinkedHashSet,它是链表和哈希表的组合的一个数据存储结构。代码例子如下: // 构建一个LinkedHashSet集合对象 LinkedHashSet<String> linkedHashSet = new LinkedHashSet<>原创 2020-12-04 22:16:50 · 217 阅读 · 0 评论 -
Set接口
java.util.Set接口和java.util.List接口是一样的,都是继承自Collection接口,它与Collection接口中的方法基本一样,没有对Collection接口进行功能上的扩展,只是比Collection接口更加严厉。与List接口不同的是,Set接口中的元素是无序的,并且都会以某种规则存入的元素不重复Set接口有很多个子类,我们主要介绍两个重要子类:java.util.HashSet和java.util.LinkedHashSet集合Set集合取出的元素的方式可以采用:迭代原创 2020-12-04 22:15:27 · 151 阅读 · 0 评论 -
LinkedList集合
java.util.LinkedList集合数据的结构底层是一个链表结构,是一个双向链表结构,方便元素的添加和删除。我们在开发中对一个链表集合中的元素大量的都是采用首尾结点操作(添加和删除):常用的API方法如下:public void addFirst(E e):将指定的元素添加此列表的开头。public void addLast(E e):将指定的元素添加此列表的末尾public E getFirst():获取此列表的首节点元素public E getLast():获取此列表的末尾结点pu原创 2020-12-04 21:18:59 · 113 阅读 · 0 评论 -
List接口
List接口介绍java.util.List接口继承自Collection接口,是单列集合的一个重要的分支,在List集合当中允许出现重复的元素,所有的元素都是以一种线性方式进行存储的,在List集当中基本上我们可以通过索引来访问集合当中的元素。另外List集合还有一个特点就是元素是有序的,指定是存取元素顺序相同。List接口当中的常用API方法:增删改查出了继承Collection接口当中的方法外,还增加了一些根据元素索引来操作集合的特定方法: public void add(int原创 2020-12-04 21:01:58 · 181 阅读 · 0 评论 -
数据结构
数据结构有什么作用?当我们使用这java官方给你提供的容器的时候,我们用起来是非常好的,ArrayList其实就是一个无限扩充的数组,LinkedList其实是一个链表。现实世界中存储数据,我们要通过一些工具或者建模来进行存储。每种数据结构都有自己的优缺点。而算法,在这么多的数据中如何以最快的速度实现插入、删除、查找数据问题。我们java语言是一种面向对象的编程语言,java就相当于自动挡汽车,C语言就相当于手动挡汽车。数据结构呢?数据结构就相当于变速箱的工作原理,不懂数据结构原理的,对于开发j原创 2020-12-03 23:38:49 · 172 阅读 · 0 评论 -
泛型的通配符
当使用泛型或者泛型接口,传递的数据中,泛型的类型不确定,可以通过通配符<?>表示。一旦程序当中使用泛型的通配符后,只能使用Object类中的共性的方法,集合中元素自身方法无法使用。通配符的基本使用泛型的通配符:不知道使用什么类型来接收的时候,此时可以使用?,?代表未知的通配符。此时只能接收数据,不能往集合中存储数据。代码实力:public static void main(String[] args){ //可以存储整数的集合 Collection<Integer> l原创 2020-12-03 22:58:28 · 594 阅读 · 0 评论 -
泛型
泛型泛型概述泛型:可以在类或者方法当中预支的使用未知的数据类型。备注:一般在创建对象的时候,将未知的数据类型确定为具体的数据类型,当没有指定泛型时,默认类型为Object类型。使用泛型的好处1、避免了类型转换的麻烦,存储的是什么数据类型,取出的就是什么数据类型2、把运行期异常(代码运行之后会抛出的异常)提升到编译器阶段(写代码的时候就会报错)备注:泛型它其实也是数据类型的一部分,一般我们将类名和泛型合并一起看做数据类型泛型的定义与应用泛型,用来灵活的将数据类型应用到不同的类、方法、接口当原创 2020-12-03 22:30:55 · 137 阅读 · 0 评论 -
增强for循环
在JDK1.5之后出现了一个新的循环结构,for each循环,一般也称为增强for循环,一般也称为增强for循环,专门用来遍历数组和集合的。它的内部原理其实是有个迭代器Iterator,在迭代过程中,不能对集合当中的元素进行增删改查。格式:for(元素的数据类型 变量名 : Collection集合或者数组){ //操作代码 //.......}主要用于遍历Collection集合或者数组。在遍历过程中,一定不要进行增删改查操作。代码例子如下:demo1:// int[] arr.原创 2020-12-03 21:24:30 · 518 阅读 · 0 评论 -
迭代器Iterator
迭代器Iterator接口在程序开发过程中,经常需要遍历集合当中的所有元素,针对这种情况,JDK官方又提供了一个接口java.util.Iterator。Iterator接口中它也是集合当中的一员,但是它与Map、Collection接口不同,Collention接口和Map接口他主要用来存储元素的,而Iterator主要用于迭代访问Collention与Map接口当中的元素。因此我们也经常把Iterator对象成为迭代器。想要遍历Collection集合当中的元素,首先需要获取该集合的迭代器,通过迭原创 2020-12-03 21:11:33 · 322 阅读 · 0 评论 -
Collection集合
集合概念集合是java中提供的一种容器,可以用来存储多个数据集合和数组既然都是容器,他们有啥区别?数组的长度是固定的,集合的长度是可变的数组中存储的是同一种数据类型的元素,可以存储基本数据类型也可以存储引用数据类型,集合存储的都是对象,而且对象的数据类型可以不一致。在开发当中一般当对象较多的时候,使用集合来存储对象。集合的框架JAVASE提供了满足各种需求的API,我们在使用这个API的时候,先了解其继承与接口操作的框架,才能了解何时使用哪个类,以及类与类之间是如何彼此合作的,从而达到灵活的原创 2020-12-03 20:58:50 · 125 阅读 · 0 评论 -
Integer包装类的装箱与拆箱
装箱:把基本数据类型的数据包装到包装类中(基本数据类型----->包装类型)以Integer int的包装类为例:构造方法: Integer(int value):构造一个新分配的Integer对象,它表示的指定的int类型的值 Integer(String str):构造一个新分配的Integer对象,表示的是String参数类型指定的int值静态方法: static Integer valueOf(int i):将指定的int类型值转换成Integer原创 2020-12-03 20:18:07 · 229 阅读 · 0 评论 -
StringBuilderAPI的常用方法
StringBuilder 是一个可变的字符序列。它继承于AbstractStringBuilder,实现了CharSequence接口。StringBuffer 也是继承于AbstractStringBuilder的子类;但是,StringBuilder和StringBuffer不同,前者是非线程安全的,后者是线程安全的。StringBuilder 和 CharSequence之间的关系图如下:构造方法:public StringBuilder():构造一个不带任何字符的字符生成器,其初始容器为原创 2020-12-02 19:38:52 · 1082 阅读 · 0 评论 -
System类
java.lang.System类中提供了大量的静态方法,主要是用来获取与系统相关的信息或者是进行系统级操作。它不能被实例化。也不能被继承常用的api方法:public static long currentTimeMills():获取当前系统时间对应的毫秒值public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length):将数组中指定的数据拷贝到另一个数组当中public static原创 2020-12-01 21:20:23 · 137 阅读 · 1 评论