JAVA
文章平均质量分 70
JAVA常见的特性
LyaJpunov
间歇性踌躇满志,持续性混吃等死
展开
-
常见的Hash摘要算法以及Java实现
MD5MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特设计,于1992年公开,用以取代MD4算法。1996年后该算法被证实存在弱点,可以被加以破解,对于需要高度安全性的数据,一般建议改用其他算法,如SHA-2。public static void main(String[] args) throws Exce原创 2022-01-10 10:33:44 · 485 阅读 · 0 评论 -
JAVA-JDBC
一、获取数据库链接1.1、Driver接口java.sql.Driver 接口是所有 DBUtils 驱动程序需要实现的接口。这个接口是提供给数据库厂商使用的,不同数据库厂商提供不同的实现。这里我们解释一些为什么要有一个接口,这个我认为也是JAVA的精髓所在,我们有这个接口的话,对接不同的数据库,不论是MYSQL或者Oracle我们就不用针对不同的数据库写两套程序,只需要加载不同的驱动,即这些数据库厂商提供的接口实现即可。- Oracle的驱动:oracle.jdbc.driver.OracleDr原创 2022-03-17 23:14:47 · 1623 阅读 · 0 评论 -
JAVA流-序列化反序列化
一、对象序列化序列化:将对象写入到IO流中,说的简单一点就是将内存模型的对象变成字节数字,可以进行存储和传输。反序列化:从IO流中恢复对象,将存储在磁盘或者从网络接收的数据恢复成对象模型。使用场景:所有可在网络上传输的对象都必须是可序列化的,否则会出错;所有需要保存到磁盘的Java对象都必须是可序列化的。1.1、序列化该对象必须实现Serializable接口,才能被序列化,下面是一个实例我们创建一个serializer的类public class serializer implements原创 2022-01-26 17:34:38 · 453 阅读 · 0 评论 -
JAVA流-IO流分类
一、按照流向分输入流: 只能从中读取数据,而不能向其写入数据。输出流:只能向其写入数据,而不能向其读取数据。二、按照操作单元分字节流:是一个字节一个字节的读取或写入字符流:是一个字符一个字符的读取或写入,一个字符就是两个字节,主要用来处理字符。三、按照角色划分节点流:直接从/向一个特定的IO设备(如磁盘,网络)读/写数据的流,称为节点流。处理流:“连接”在已存在的流(节点流或处理流)之上通过对数据的处理为程序提供更为强大的读写功能的流。四、输入/输出流体系中常用的流的分类表分类原创 2022-01-26 17:08:46 · 268 阅读 · 0 评论 -
JAVA流-File文件
在 Java 中,File 类是 java.io 包中唯一代表磁盘文件本身的对象。File 类定义了一些与平台无关的方法来操作文件,File类主要用来获取或处理与磁盘文件相关的信息,像文件名、 文件路径、访问权限和修改日期等,还可以浏览子目录层次结构。File 类表示处理文件和文件系统的相关信息。也就是说,File 类不具有从文件读取信息和向文件写入信息的功能,它仅描述文件本身的属性。一、构造方法构造器描述File(String pathname)通过将给定路径名字符串来创建一个新原创 2022-01-26 16:44:21 · 919 阅读 · 0 评论 -
JAVA流-Stream流
可以将流看做流水线,这个流水线是处理数据的流水线,一个产品经过流水线会有一道道的工序就如同对数据的中间操作,比如过滤我不需要的,给数据排序能,最后的终止操作就是产品从流水线下来,我们就可以统一打包放入仓库了。当我们使用一个流的时候,通常包括三个基本步骤:获取一个数据源(source)→ 数据转换 → 执行操作获取想要的结果。每次转换原有Stream对象不改变,返回一个新的Stream对象(可以有多次转换),这就允许对其操作可以像链条一样排列,变成一个管道。一、Stream的特性Stream不存储数据原创 2022-01-26 16:43:58 · 565 阅读 · 0 评论 -
JAVA集合-线程安全
一、其他的集合类我们这里来介绍一点其他的集合类1.1、LinkedhashmapLinkedhashmap在原来的基础上维护了一个双向链表,用来维护,插入的顺序。public class LinkedHashMapTest { public static void main(String[] args){ Map<String,String> map = new LinkedHashMap<>(16); map.put("a","m"原创 2022-01-25 18:56:28 · 3212 阅读 · 0 评论 -
JAVA集合-迭代器
一、集合的遍历这里我们引申一个问题,怎么对集合进行遍历,对于List很简单,因为它天生就支持下标访问public class ListTest { public static void main(String[] args) { public List<String> names = new ArrayList<>(); names.add("lucy"); names.add("tom"); names.a原创 2022-01-25 14:28:21 · 481 阅读 · 0 评论 -
JAVA集合 List & Set & Map
一、常用接口List( 列表)线性表:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。Set(表)也是线性表检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。Map(映射)Map(映射)用于保存具有映射关系的数据,Map里保存着两组数据:key和value,它们都可以是任何引用类型的数据,但key不能重复。所以通过指定的key就可以取出对应的value。List,Set都是继承自Collection接口,Map则不是原创 2022-01-25 11:19:05 · 221 阅读 · 0 评论 -
JAVA多线程-JUC并发编程包
一、原子类Atomic 翻译成中文是原子的意思。在化学中,原子是构成一般物质的最小单位,是不可分割的。而在这里,Atomic 表示当前操作是不可中断的,即使是在多线程环境下执行,Atomic 类,是具有原子操作特征的类。基本类型AtomicInteger:整形原子类AtomicLong:长整型原子类AtomicBoolean:布尔型原子类数组类型AtomicIntegerArray:整形数组原子类AtomicLongArray:长整形数组原子类AtomicReferenceA原创 2022-01-24 20:46:33 · 273 阅读 · 0 评论 -
JAVA多线程-锁机制
一、synchronized在多线程并发编程中 synchronized 一直是元老级角色,很多人都会称呼它为重量级锁。但是,随着 Java SE 1.6 对synchronized 进行了各种优化之后,有些情况下它就并不那么重。synchronized 有三种方式来加锁,分别是修饰实例方法,作用于当前实例加锁,进入同步代码前要获得当前实例的锁静态方法,作用于当前类对象加锁,进入同步代码前要获得当前类对象的锁修饰代码块,指定加锁对象,对给定对象加锁,进入同步代码库前要获得给定对象的锁原创 2022-01-24 19:18:40 · 1708 阅读 · 0 评论 -
JAVA多线程-线程安全问题
一、CPU多核缓存架构CPU分为三级缓存: 每个CPU都有L1,L2缓存,但是L3缓存是多核公用的。CPU查找数据的顺序为: CPU -> L1 -> L2 -> L3 -> 内存 -> 硬盘进一步优化,CPU每次读取一个数据,并不是仅仅读取这个数据本身,而是会读取与它相邻的64个字节的数据,称之为缓存行,因为CPU认为,我使用了这个变量,很快就会使用与它相邻的数据,这是计算机的局部性原理。这样,就不需要每次都从主存中读取数据了。一个缓存行现在是64个字节,这是很原创 2022-01-24 19:17:51 · 2874 阅读 · 0 评论 -
JAVA多线程-创建线程的三种方式
一、进程和线程1.1、进程一个正在执行中的程序就是一个进程,系统会为这个进程发配独立的内存资源。进程是程序的一次执行过程,它有自己独立的生命周期,它会在启动程序时产生,运行程序时存在,关闭程序时消亡。例如QQ就是一个进程1.2、线程线程是由进程创建的,是进程的一个实体,是具体干活的人,一个进程可能有多个线程。线程不独立分配内存,而是共享进程的内存资源,线程可以共享cpu的计算资源。1.3、上下文切换用户线程执行的过程我们称之为用户态,内核调度的状态称之为内核态,每一个线程运行时产生的数据我们称之原创 2022-01-15 12:29:21 · 353 阅读 · 0 评论 -
JAVA面向对象之枚举
一、枚举的定义public enum SeasonEnum { SPRING,SUMMER,AUTUMN,WINTER;}常用方法如下方法说明values() 静态的自动生成的可以遍历enum实例,其返回enum实例的数组ordinal() 父类的实例方法返回每个实例在声明时的次序name() 父类的实例方法返回enum实例声明时的名称getDeclaringClass()返回其所属的enum类valueOf() 静态的自动生成的根据给原创 2022-01-15 11:31:40 · 412 阅读 · 0 评论 -
JAVA面向对象之泛型
契子、引入泛型我们在学习JAVA中经常会写这样一些类用来联系,比如超级数组,我们先写一个这样的类SuperArray.javapackage com;import java.util.Arrays;public class SuperArray { // 定义我们操作的数组,初始化长度为10 private int[] num = new int[10]; // 定义游标 private int current = -1; // 空参构造 pub原创 2022-01-11 09:29:44 · 1495 阅读 · 0 评论 -
JAVA面向对象之值传递和应用传递
值传递和引用传递对于基础数据类型changeInt(int j){ j = 8;}int i = 5;changeInt(i);System.out.println(i);result:5对于基础数据类型我们是将5拷贝了一份传给i,也就是值传递,至于changInt内部发生了什么根本不会影响到外部,其实java编译的时候已经成了这个样子int i = 5;changeInt(5);System.out.println(i);对于引用数据类型对于引用数据类型,调用chang原创 2022-01-11 09:28:54 · 272 阅读 · 0 评论 -
JAVA面向对象之箭头函数
箭头函数如果一个接口只有一个抽象方法,那么这个接口也称之为函数式接口。可以使用@FunctionalInterface注解标识。@FunctionalInterfacepublic interface Function { int plus(int i,int j);}当我们使用函数式接口去构造内部类时,我们很简单的表示:public class Client { public static void test(Function function){ Syste原创 2022-01-11 09:28:24 · 5768 阅读 · 0 评论 -
JAVA面向对象之多态
JAVA面向对象之多态多态的形成多态的形成条件大概有三个#1、有继承#2、有重写#3、有父类引用指向子类对象我们可以写下面一个例子Animals.javapublic class Animals { public void run(){ System.out.println("Animals is runing"); }}Dog.javapublic class Animals { public void run(){ Sy原创 2022-01-10 11:27:18 · 181 阅读 · 0 评论