Java
文章平均质量分 54
Java基础
Alienware^
喜欢专研Java,Scala,Python,数据库,以及大数据框架系列知识。希望通过不断的学习,记录自己的点点滴滴。
展开
-
一问带你从0到1掌握Swgger
前后端分离后端时代:前端只用管理静态页面: html ==> 模板引擎 JSP ⇒ 后端是主力前后端分离时代:后端:后端控制层,服务层,数据访问层 [后端团队]前端:前端控制层,视图层 [前端团队]伪造后端数据,json。已经存在了,不需要后端,前端工程依旧能跑起来前后端如何交互?==> API前后端相对独立,松耦合;前后端甚至可以部署在不同的服务器上;前后端集成联调,前端人员和后端人员无法做到,即使协商,尽早解决,最终导致问题集中爆发。原创 2023-12-10 09:41:44 · 1159 阅读 · 0 评论 -
JDBC使用优化以及工具类封装
JDK 1.2的版本中就提供java.lang.ThreadLocal,为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。通常用来在在多线程中管理共享数据库连接、Session等ThreadLocal用于保存某个线程共享变量,原因是在Java中,每一个线程对象中都有一个ThreadLocalMap,其key就是一个ThreadLocal,而Object即为该线程的共享变量。原创 2023-01-05 18:42:01 · 775 阅读 · 0 评论 -
Druid 连接池技术的使用
JDBC 的数据库连接池使用 javax.sql.DataSource接口进行规范,所有的第三方连接池都实现此接口,自行添加具体实现!也就是说,所有连接池获取连接的和回收连接方法都一样,不同的只有性能和扩展功能!1)不使用数据库连接池,每次都通过DriverManager获取新连接,用完直接抛弃断开,连接的利用率太低,太浪费。2)对于数据库服务器来说,压力太大了。我们数据库服务器和Java程序对连接数也无法控制,很容易导致数据库服务器崩溃。connection可以复用!(年纪轻轻你就犯了 浪费连接的罪啊!原创 2023-01-05 14:30:06 · 1113 阅读 · 0 评论 -
JDBC 中数据库事务实现
1,使用jdbc代码,添加数据库事务动作!3,事务提交 / 事务回滚。原创 2023-01-04 22:13:04 · 1009 阅读 · 0 评论 -
JDBC 扩展提升
2,作用: 在多表关联插入数据时,一般主表的主键都是自动生成的,所以在插入数据之前无法知道这条数据的主键,但是从表需要在插入数据之前就绑定主表的主键,这是可以使用主键回显技术。1, Java程序 获取插入数据时mysql维护自增长维护的主键id值,这就是主键回显。2, 提升大量数据插入效率。1, 批量数据插入优化。原创 2023-01-04 18:01:03 · 297 阅读 · 0 评论 -
JDBC代码案例(使用PreparedStatement进行CURD)
/1.注册驱动 方案 1 : 调用静态方法 , 但是会注册两次 DriverManager . registerDriver(new com . mysql . cj . jdbc . Driver());方案 2 : 反射触发 Class . forName("com.mysql.cj.jdbc.Driver");//2.获取连接 Connection connection = DriverManager . getConnection();原创 2023-01-04 16:49:55 · 284 阅读 · 0 评论 -
JDBC代码案例(使用PreparedStatement进行优化查询)
https://blog.csdn.net/weixin_45417821/article/details/1285368121,静态查询2,可能发生注入攻击,动态值充当了SQL语句结构,影响了原有的查询结果!图解原创 2023-01-04 14:32:19 · 436 阅读 · 0 评论 -
JDBC代码案例(使用statement查询)
大量笔记都记录在代码中,可细心观看,对敲一遍必然弄会。模拟登录,控制台输入账号和密码,判断是否登陆成功成功。原创 2023-01-04 12:43:52 · 805 阅读 · 0 评论 -
JDBC概念理解
|Java 连接数据库技术!通俗点说,在Java代码中,使用JDBC提供的方法,可以发送字符串类型的SQL语句到数据库管理软件(MySQL,Oracle,Hive等),并且获取语句执行结果!进而实现数据库数据CURD操作的技术!1,JDBC是Java连接数据库的统称Java提供的JDBC规范(接口)各个数据库厂商的实现驱动jar包maven。原创 2023-01-03 17:38:40 · 131 阅读 · 0 评论 -
随机存取文件流
文章目录RandomAccessFile 类RandomAccessFile 类RandomAccessFile 声明在java.io包下,但直接继承于java.lang.Object类。并且它实现了DataInput、DataOutput这两个接口,也就意味着这个类既可以读也可以写。RandomAccessFile 类支持 “随机访问” 的方式,程序可以直接跳到文件的任意地方来读、写文件支持只访问文件的部分内容可以向已存在的文件后追加内容RandomAccessFile 对象包含一个记原创 2021-04-13 16:55:17 · 176 阅读 · 0 评论 -
IO 的概述 与体系
概述I/O 是input/output的缩写,IO技术是非常实用的技术,用于处理设备之间的数据传输,如读/写文件,网络通讯等Java程序中,对于数据的输入/输出操作以“流(Stream)” 的方式进行输入input :读取外部数据(磁盘,光盘等存储设备的数据)到程序(内存)中输出output:将程序(内存)数据输出到磁盘,光盘等存储设备中按操作数据单位不同分为:字节流(8 bit 图片,音频),字符流(16 bit 文本)按数据流的流向不同分为:输入流,输出流按流的角色的不同分为:节原创 2021-04-10 11:42:19 · 359 阅读 · 0 评论 -
转换流
文章目录InputStreamReaderOutputStreamWriter补充:字符编码转换流提供了在字节流和字符流之间的转换Java API提供了两个转换流:InputStreamReader:将InputStream转换为ReaderOutputStreamWriter:将Writer转换为OutputStream字节流中的数据都是字符时,转成字符流操作更高效。很多时候我们使用转换流来处理文件乱码问题。实现编码和解码的功能。InputStreamReader实现将字节的输入流按原创 2021-04-10 18:20:46 · 157 阅读 · 0 评论 -
File 类 的 实例化
话不多说,放代码展示package com.file;import org.junit.Test;import java.io.File;public class FileTest { @Test public void test1(){ File file = new File("hello.txt"); //当前下的相对路径 File file1 = new File( "D:\\ideaproject\\scala\\src\\main\\原创 2021-04-06 17:51:40 · 393 阅读 · 0 评论 -
字符流与字节流
文章目录节点流和处理流InputStream & ReaderInputStreamReaderOutputStream & WriterOutputStreamWriter节点流和处理流节点流:直接从数据源或目的地读写数据处理流:不直接连接到数据源或目的地,而是“连接”在已存在的流(节点流或处理流)之上,通过对数据的处理为程序提供更为强大的读写功能。InputStream & ReaderInputStream 和 Reader 是所有输入流的基类。InputSt原创 2021-04-10 15:14:51 · 130 阅读 · 0 评论 -
缓冲流
为了提高数据读写的速度,Java API提供了带缓冲功能的流类,在使用这些流类时,会创建一个内部缓冲区数组,缺省使用8192个字节(8Kb)的缓冲区。缓冲流要“套接”在相应的节点流之上,根据数据操作单位可以把缓冲流分为:BufferedInputStream 和 BufferedOutputStreamBufferedReader 和 BufferedWriter当读取数据时,数据按块读入缓冲区,其后的读操作则直接访问缓冲区当使用BufferedInputStream读取字节文件原创 2021-04-10 16:36:36 · 317 阅读 · 0 评论 -
File 类 的常用方法
嗯,,,话不多说,看代码package com.file;import org.junit.Test;import java.io.File;import java.io.IOException;import java.util.Date;/** * File类的 使用 * 1, File类的一个对象,代表一个文件或一个文件目录(俗称:文件夹) * 2, File类声明在java.io 包下 * 3, File类中涉及到关于文件或文件的创建,删除,重命名,修改时间,文件大小等方法原创 2021-04-06 22:26:43 · 168 阅读 · 0 评论 -
标准输入流,输出流,打印流,数据流
文章目录标准输入流,输出流打印流数据流标准输入流,输出流System.in和System.out分别代表了系统标准的输入和输出设备默认输入设备是:键盘,输出设备是:显示器System.in的类型是InputStreamSystem.out的类型是PrintStream,其是OutputStream的子类FilterOutputStream 的子类重定向:通过System类的setIn,setOut方法对默认设备进行改变public static void setIn(InputStream原创 2021-04-10 22:46:27 · 323 阅读 · 0 评论 -
对象流
文章目录ObjectInputStream 和 OjbectOutputSteam序列化使用对象流序列化对象ObjectInputStream 和 OjbectOutputSteam用于存储和读取基本数据类型数据或对象的处理流。它的强大之处就是可以把Java中的对象写入到数据源中,也能把对象从数据源中还原回来。序列化:用ObjectOutputStream类保存基本类型数据或对象的机制反序列化:用ObjectInputStream类读取基本类型数据或对象的机制ObjectOutputStrea原创 2021-04-12 20:02:07 · 143 阅读 · 0 评论 -
String 类的实例化方式的一些对比
String类:代表字符串,Java程序中所有字符串字面值(如“abc”)都作为此类的实例实现String 是一个final类,代表不可变的字符序列字符串是常量,用双引号引起来表示,它们的值在创建之后不能更改String对象的字符内容是存储在一个字符数组Value[] 中的话不多说,上代码package com.classes;import org.junit.Test;public class StringTest { /** * String : 字符串 .原创 2021-04-07 20:06:24 · 132 阅读 · 0 评论 -
String类型 与基本数据类型以及包装数据类型的转换
String 与基本数据类型,包装类的转换String --> 基本数据类型 , 包装类 : 调用包装类的静态方法 parseXXX(str)基本数据类型 , 包装类 --> String : 调用String重载的valueOf(XXX) @Test public void test1(){ String s1 = "123"; int num = Integer.parseInt( s1 ); System.out.printl原创 2021-04-08 20:14:45 · 199 阅读 · 0 评论 -
Java中常用的类解析
分类字符串相关的类String类及常用的方法StringBuffer,StringBuilderJDK 8之前的日期时间APISystem静态方法Date类Calendar类SimpleDateFormat类JDK 8 中新日期时间APILocalDate,LocalTime,LocalDateTimeInstant,DateTimeFormatter,其他类Java比较器Comparable 接口Comparator 接口System 类Math原创 2021-04-07 16:17:22 · 114 阅读 · 0 评论 -
String,StringBuffer,StringBuilder
关于StringBuffer 和 StringBuilder的使用String,StringBuffer,StringBuilder的异同String : 不可变字符序列,底层使用char[]存储StringBuffer : 可变字符序列,线程安全的,效率低,底层使用char[]存储StringBuilder : 可变的字符序列,jdk5.0新增的,线程不安全的,效率高,底层使用char[]存储源码分析:String str = new String();//char[] value = new原创 2021-04-08 21:30:27 · 163 阅读 · 0 评论 -
Java 时间API(旧)
1.System类中的currentTimeMillis()@Test public void test1(){ long time = System.currentTimeMillis(); //返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差 //称为时间戳 System.out.println(time); }/** * Java.Util.Date类 * |---原创 2021-04-09 13:45:36 · 138 阅读 · 0 评论 -
Java的时间API (新)
如果我们可以跟别人说:“我们在1502643933071见面,别晚了!”那么就再简单不过了。但是我们希望时间与昼夜和四季有关,于是事情就变复杂了。JDK 1.0中包含了一个java.util.Date类,但是它的大多数方法已经在JDK 1.1引入Calendar类之后被弃用了。而Calendar并不比Date好多少。它们面临的问题是:可变性:像日期和时间这样的类应该是不可变的。偏移性:Date中的年份是从1900开始的,而月份都从0开始。格式化:格式化只对Date有用,Calendar则不行。此外原创 2021-04-09 16:14:17 · 190 阅读 · 0 评论 -
Java 比较器
在Java中经常会涉及到对象数组的排序问题,那么就涉及到对象之间的比较问题。Java实现对象排序的方式有两种:1.自然排序:java.lang.Comparable2.定制排序:java.util.ComparatorComparable接口的使用举例: 自然排序1.像String、包装类等实现了Comparable接口,重写了compareTo(obj)方法,给出了比较两个对象大小的方式。2.像String、包装类重写compareTo()方法以后,进行了从小到大的排列3. 重写compa原创 2021-04-09 19:23:58 · 142 阅读 · 0 评论 -
Java 中其他类的使用
文章目录System类Math类BigInteger类BigDecimal类System类System类代表系统,系统级的很多属性和控制方法都放置在该类的内部。该类位于java.lang包。由于该类的构造器是private的,所以无法创建该类的对象,也就是无法实例化该类。其内部的成员变量和成员方法都是static的,所以也可以很方便的进行调用。成员变量System类内部包含in、out和err三个成员变量,分别代表标准输入流(键盘输入),标准输出流(显示器)和标准错误输出流(显示器)。原创 2021-04-09 21:03:09 · 213 阅读 · 0 评论 -
String 的 常用方法
int length():返回字符串的长度: return value.lengthchar charAt(int index): 返回某索引处的字符return value[index]boolean isEmpty():判断是否是空字符串:return value.length == 0String toLowerCase():使用默认语言环境,将 String 中的所有字符转换为小写String toUpperCase():使用默认语言环境,将 String 中的所有字符转换为大写Strin原创 2021-04-08 17:15:04 · 127 阅读 · 0 评论 -
List<?> 和 List<Object> 有什么区别
区别直接上图:原创 2021-07-12 18:30:01 · 348 阅读 · 0 评论 -
List <Object> 和 List<String> 的区别
今天和大家分享个知识点List < Object > 和 List< String > 的区别 ,有的人认为呢,List < Object > 和 List< String > 存在继承关系,为什么会有这个错觉呢?是因为 String的父类是 Object , 但是他们两个之间,确实不存在 继承关系,这是第一点,第二点是这个 List < Object > 这个容器当中,存储的元素类型是Object 类型以及这个类型下的子类型,,如果是Lis原创 2021-07-12 16:36:30 · 1128 阅读 · 0 评论 -
Java 8 中的Optional类的介绍和使用举例
到目前为止,臭名昭著的空指针异常是导致Java应用程序失败的最常见原因。以前,为了解决空指针异常,Google公司著名的Guava项目引入了Optional类,Guava通过使用检查空值的方式来防止代码污染,它鼓励程序员写更干净的代码。受到Google Guava的启发,Optional类已经成为Java 8类库的一部分。Optional< T > 类(java.util.Optional) 是一个容器类,它可以保存类型T的值,代表这个值存在。或者仅仅保存null,表示这个值不存在。原来用 n原创 2021-06-22 13:21:06 · 522 阅读 · 0 评论 -
Stream API 中的收集
收集方 法描 述collect(Collector c)将流转换为其他形式。接收一个 Collector接口的实现,用于给Stream中元素做汇总的方法Collector 接口中方法的实现决定了如何对流执行收集的操作(如收集到 List、Set、Map)。另外, Collectors 实用类提供了很多静态方法,可以方便地创建常见收集器实例,具体方法与实例如下图:案例 //3-收集 @Test public void test4(){//原创 2021-06-22 09:51:19 · 154 阅读 · 0 评论 -
Stream API 中的归约
归约方法描述reduce(T iden, BinaryOperator b)可以将流中元素反复结合起来,得到一个值。返回 Treduce(BinaryOperator b)可以将流中元素反复结合起来,得到一个值。返回 Optional< T >备注:map 和 reduce 的连接通常称为 map-reduce 模式,因 Google 用它来进行网络搜索而出名案例: //2-归约 @Test public void test3(原创 2021-06-21 22:35:16 · 163 阅读 · 0 评论 -
Stream API 中的 匹配与查找
终端操作会从流的流水线生成结果。其结果可以是任何不是流的值,例如:List、Integer,甚至是 void 。 流进行了终止操作后,不能再次使用匹配与查找方法描述allMatch(Predicate p)检查是否匹配所有元素anyMatch(Predicate p)检查是否至少匹配一个元素noneMatch(Predicate p)检查是否没有匹配所有元素findFirst()返回第一个元素findAny()返回当前流中的任意元素cou原创 2021-06-21 22:07:30 · 318 阅读 · 0 评论 -
Stream API 中 的 排序
排序方法描述sorted()产生一个新流,其中按自然顺序排序sorted(Comparator com)产生一个新流,其中按比较器顺序排序 //3-排序 @Test public void test3(){// sorted()——自然排序 默认为升序 List<Integer> list = Arrays.asList(12, 43, 65, 34, 87, 0, -98, 7); li原创 2021-06-21 19:56:07 · 992 阅读 · 0 评论 -
Stream API 中 的 映射
映射方法描述map(Function f)接收一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素。mapToDouble(ToDoubleFunction f)接收一个函数作为参数,该函数会被应用到每个元素上,产生一个新的 DoubleStream。mapToInt(ToIntFunction f)接收一个函数作为参数,该函数会被应用到每个元素上,产生一个新的 IntStream。mapToLong(ToLongFunction f)接收一原创 2021-06-21 19:50:29 · 189 阅读 · 0 评论 -
Stream API 中 的筛选和切片
筛选和切片多个中间操作可以连接起来形成一个流水线,除非流水线上触发终止操作,否则中间操作不会执行任何的处理!而在终止操作时一次性全部处理,称为“惰性求值”。方法描述filter(Predicate p)接收 Lambda , 从流中排除某些元素distinct()筛选,通过流所生成元素的 hashCode() 和 equals() 去除重复元素limit(long maxSize)截断流,使其元素不超过给定数量skip(long n)跳过元素,返回一个扔掉了原创 2021-06-21 19:24:48 · 183 阅读 · 0 评论 -
Stream API 中的实例化
文章目录创建 Stream方式一:通过集合方式二:通过数组方式三:通过Stream的of()方式四:创建无限流创建 Stream方式一:通过集合//创建 Stream方式一:通过集合 @Test public void test1(){ List<Employee> employees = EmployeeData.getEmployees();// default Stream<E> stream() : 返回一个顺序流原创 2021-06-21 18:26:39 · 179 阅读 · 0 评论 -
Stream API 的概述
文章目录为什么要使用Stream API什么是 StreamStream 的操作三个步骤Java8中有两大最为重要的改变。第一个是 Lambda 表达式;另外一个则是 Stream API。Stream API ( java.util.stream) 把真正的函数式编程风格引入到Java中。这是目前为止对Java类库最好的补充,因为Stream API可以极大提供Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集原创 2021-06-21 17:04:01 · 262 阅读 · 0 评论 -
方法引用与构造引用,以及数组引用
文章目录方法引用(Method References)方法引用测试构造器引用数组引用构造器,数组引用测试方法引用(Method References)当要传递给Lambda体的操作,已经有实现的方法了,可以使用方法引用!方法引用可以看做是Lambda表达式深层次的表达。换句话说,方法引用就是Lambda表达式,也就是函数式接口的一个实例,通过方法的名字来指向一个方法,可以认为是Lambda表达式的一个语法糖。要求:实现接口的抽象方法的参数列表和返回值类型,必须与方法引用的方法的参数列表和返回值类型原创 2021-06-21 16:24:30 · 199 阅读 · 0 评论 -
Java内置函数式接口介绍及使用举例
文章目录Java 内置四大核心函数式接口其他接口使用举例Java 内置四大核心函数式接口函数式接口参数类型返回类型用途Consumer 消费型接口Tvoid对类型为T的对象应用操作,包含方法:void accept(T t)Supplier 供给型接口无T返回类型为T的对象,包含方法:T get()Function<T, R> 函数型接口TR对类型为T的对象应用操作,并返回结果。结果是R类型的对象。包含方法:R apply(T t)原创 2021-06-21 10:25:29 · 266 阅读 · 0 评论