自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 PRESENT算法Java实现

一、算法介绍1.介绍PRESENT加密算法在2007 年由来自德国波鸿鲁尔大学的 Bogdanov 在 CHES 会议中发表。PRESENT加密算法为一种轻量级分组密码算法,采用了 置换网络(SPN)结构,一共迭代 31 轮,分块(组)长度为 64 比特位(位),密钥长度支持 80 比特位和 128比特位。PRESENT 密码算法在硬件实现上具有极高的效率且需要较少的逻辑单元,因此PRESENT加密算法适合在不需要加密大量数据、需要中等安全性和需要有效利用空间的应用中使用。在实际使用中密钥长度通常一

2022-05-21 10:54:49 1397 1

原创 DES算法Java实现(完善版)

一、密钥长度处理实现了小于8 bytes的密钥都可以进行测试,原理其实很简单,只需要在密钥生成的时候对密钥的长度进行判断,不够的进行补0操作。//密钥生成 public StringBuffer[] getSubkey() { StringBuffer keyBinary = new StringBuffer(stringBufferToBinary(key)); //把密钥转成二进制 StringBuffer subkey[] = new StringBu

2022-02-24 09:46:04 6105 8

原创 DES算法的Java实现(粗略版)

一、算法原理概述DES算法主要分为数据处理和密钥生成两个部分。数据处理:加密过程首先将明文进行初始置换,置换后分为左右两个部分,然后进行16轮循环迭代操作,其中先把右明文赋给左明文,然后将有明文和密钥带入F函数中所得的结果与左明文异或,进行16轮后得到的左明文和右明文,将左右明文拼接在一起,右明文在左,左明文在右,最后再经过一次终止置换即为最后的密文。F函数中包括E盒扩展、明文与密钥的异或、S盒压缩和P盒置换。解密的过程和加密过程一样,只是把密钥的顺序相反。密钥产生:首先将密钥进行PC1置换操作

2022-02-23 17:47:08 2005

原创 RSA算法的Java实现

一、RSA算法描述RSA主要利用的是大素数分解的困难性,即知道n如何求出p和q。二、总体结构 //判断是否是素数 public static boolean isPrime(long n) { } //计算欧拉数 public static long Euler(long p, long q) { } //欧几里得算法求两数的最大公因数---a>b static long gcd(long a, long b) {

2022-02-22 10:19:26 6855 2

原创 JAVA学习笔记21.12.18(参考黑马程序员B站视频)

线程安全的类一、线程安全的类 1.概述 1)StringBuffer线程安全,可变的字符序列 从版本JDK5开始,被StringBuilder替代,通常应该使用StringBuilder类,因为它支持所有相同的操作,但它更快,因为它不执行同步2)Vector从Java2平台v1.2开始,该类改进了List接口,使其成为Java Collection Framework的成员,与新的集合实现不同,Vector被同步,如果不需要线程安全的实现,...

2021-12-18 22:28:29 4419

原创 JAVA学习笔记21.12.17(参考黑马程序员B站视频)

线程同步方法一、同步方法 1.同步方法 格式: 修饰符 synchronized 返回值类型 方法名(方法参数){ } 2.同步方法的锁对象 this指针 3.同步静态方法 把synchronized 关键字加到静态方法上 格式:修饰符 static synchronized 返回值类型 方法名(方法参数){ } 同步静态...

2021-12-17 22:45:11 1898

原创 JAVA学习笔记21.12.16(参考黑马程序员B站视频)

线程同步一、概述 1.卖票案例为什么出现数据安全问题有多线程 有数据共享 有多条语句操作共享数据 2.如何解决和实现 基本思想:让程序没有安全问题的环境 实现:把多条语句操作共享的代码给锁起来,让任意时刻只能有一个线程可以执行 3.同步代码块 格式: synchronized(任意对象){ 多条语句操作共享数据的代码;}...

2021-12-16 22:40:45 1882

原创 JAVA学习笔记21.12.15(参考黑马程序员B站视频)

多线程一、案例——卖票 1.需求 共有100张票,分三个窗口卖,设计一个程序模拟卖票 2.思路定义一个SellTicket类实现Runnable接口,里面定义一个成员变量:private int tickets = 100; 在SellTicket类重写run()方法实现卖票,首先判断票数,若票数大于0则进行卖票操作,卖了之后票数要减1,如果票卖完了,但是也会有人来问,所以卖票这个操作要一直执行。 定义一个测试类,创建SellTicket类对...

2021-12-15 20:28:36 3485

原创 JAVA学习笔记21.12.14(参考黑马程序员B站视频)

多线程一、线程控制及生命周期 1.线程控制方法介绍 1)static void sleep(long millis):使当前正在执行的线程暂停执行指定的毫秒数 2)void join():等待这个线程死亡 3)void setDaemon(boolean on):将此线程标记为守护线程,当运行时的线程都是守护线程时,Java虚拟机将退出 2.线程生命周期 注意:当被其他线程抢走CPU的执...

2021-12-14 21:26:24 4106

原创 JAVA学习笔记21.12.13(参考黑马程序员B站视频)

多线程一、设置和获取线程名称 1.方法void setName(String name):将此线程的名称更改为name StringgetName():返回线程的名称 通过构造方法也可以修改线程名称2.获取main方法的线程名称 利用public static Thread currentThread()方法,该方法返回对当前正在执行的线程对象的引用,然后调用getName()方法即可获取线程的名称。二、线程优先级 1...

2021-12-13 22:01:51 761

原创 JAVA学习笔记21.12.12(参考黑马程序员B站视频)

多线程一、概述 1.进程 进程是指正在运行的程序,是系统进行资源分配和调用的独立单位,每一个进程都有它自己的内存空间和系统资源。 2.线程 线程是进程中的单个控制顺序流,是一条执行路径。单线程:只有一条执行路径的进程 多线程:有多条执行路径的进程 3.举例 记事本(单线程)、扫雷(多线程)二、多线程的实现 1.继承Thread类定义一个MyThread类继承Threa...

2021-12-12 20:55:43 784

原创 JAVA学习笔记21.12.11(参考黑马程序员B站视频)

IO流——对象序列化流一、序列化存在的问题及解决方案 1.序列化后修改文件 问题:用对象序列化流序列化了一个对象后,修改了对象所属类的文件,读取数据时出错。 解决方案:给所属类加一个serialVersionUID成员变量(例如:private static final long serialVersionUID = 42L) 2.某个变量不想被序列化 问题:如何让对象中的某个成员变量不被序列化 ...

2021-12-11 21:32:59 785

原创 JAVA学习笔记21.12.10(参考黑马程序员B站视频)

IO流之打印流一、概述 1.分类 打印流分为字节打印流(PrintStream)和字符打印流(PrintWriter)。 2.特点只负责输出数据,不负责读取数据 有自己的特有的方法 3.字节打印流PrintStream(String fileName):使用指定的文件名创建新的打印流 使用继承父类的方法写数据(write())会进行转码,使用特有的方法(print())写数据则原样输出 4.字符打印流...

2021-12-10 21:58:36 532

原创 JAVA学习笔记21.12.9(参考黑马程序员B站视频)

IO流一、标准输入输出流 1.概述标准输入流:public static final InputStream in,通常该流对应于键盘输入或由主机环境或用户指定的另一个输入源 标准输出流:public static final PrintStream on,通常该流对应于显示输出或由主机环境或用户指定的另一个输出目标 2.自己实现BufferedReader br = newBufferedReader(new InputStreamReader(Syste...

2021-12-09 22:52:12 318

原创 JAVA学习笔记21.12.8(参考黑马程序员B站视频)

IO流一、字符数据流读写数据 1.写数据的5种方法 1)void write(int c):写一个字符 2)void write(char[] cbuf):写一个字符数组 3)void write(char[] cbuf,int off,int len):写字符数组的一部分 4)void write(String str):写一个字符串 5)void write(String str,int of...

2021-12-08 21:47:26 216

原创 JAVA学习笔记21.12.7(参考黑马程序员B站视频)

IO流一、字符流 1.字符流出现的原因 由于字节流操作中文不是特别方便,所以Java就提供了字符流。 2.字符流概述 字符流=字节流+编码表 3.字节流复制含有汉字的文本时没出错的原因 底层操作会自动进行字节拼接成中文,GNK编码一个汉字占2个字节,UTF-8编码一个汉字占3个字节,无论哪种编码存储,中文的第一个字节都是负数。二、编码表 1.基础知识计算机中存储的数据都是...

2021-12-07 22:30:10 1026

原创 JAVA学习笔记21.12.6(参考黑马程序员B站视频)

IO流一、字节缓冲流 1.概述BufferedOutputStream:该类实现缓冲输出流,通过设置这样的输出流,应用程序可以向底层输出流写入字节,而不必为写入的每个字节导致底层系统的调用。 BufferedInputStream:创建BufferedInputStream对象将创建一个内部缓冲区数组,当从流中读取或跳过字节时,内部缓冲区将根据需求从所包含的输入流中重新填充,一次很多字节。2.构造方法字节缓冲输出流:BufferedOutputStream(...

2021-12-06 23:05:20 59

原创 JAVA学习笔记21.12.5(参考黑马程序员B站视频)

IO流一、字节流读数据(一个一个读) 1.需求 把文件中的内容读取出来并在控制台显示。 2.方法 1)FileInputStream(String name):通过打开与实际文件的连接来创建一个FileInputStream,该文件由系统文件中的路径名name命名。 2)int read():读取文件的一个字节数据,读到-1时表示到了文件末尾。 3.步骤创建字节输入流对象 调用字节输入流对象...

2021-12-05 21:28:44 1255

原创 JAVA学习笔记21.12.4(参考黑马程序员B站视频)

IO流一、IO流概述和分类 1.概述IO值的是输入和输出(input/output);流是一种抽象概念,是对数据传输的总称,也就是说数据在设备间的传输称为流,流的本质是数据传输。IO流就是用来处理设备间的数据传输问题,常见的应用有文件复制、上传和下载。 2.分类 1)按照数据的流向输入流:读数据 输出流:写数据2)按数据类型字节流:输入字节流、输出字节流 字符流:输入字符流、输出字符流...

2021-12-04 15:52:54 1507

原创 JAVA学习笔记21.12.3(参考黑马程序员B站视频)

递归一、概述 1.概述 从编程角度来看,递归指的是方法定义中调用方法本身的现象。 2.递归解决问题的思路 把一个复杂的问题层层转化为一个与原问题相似的规模较小的问题来解决,递归只需要少量的程序就可以描述出解决问题过程所需要的多次重复计算。 3.递归要解决的问题递归出口:否则出现内存溢出 递归规则:与原问题相似的规模较小的问题二、求阶乘 1.需求 ...

2021-12-03 09:52:09 1055

原创 JAVA学习笔记21.12.2(参考黑马程序员B站视频)

File一、概述和构造方法 1.概述File是文件和目录路径名的抽象表示。文件和目录可以通过File封装成对象 对于File而言,其封装的并不是真正存在的文件,仅仅是一个路径名而已,它可以是存在的也可以是不存在的,将来要通过具体操作把这个路径的内容转为具体存在的。 2.构造方法 1)File(String pathname):将给定的路径字符串转化为抽象的路径名来创建新的File实例 ...

2021-12-02 11:03:12 930

原创 JAVA学习笔记21.12.1(参考黑马程序员B站视频)

模拟斗地主一、斗地主案例 1.需求 通过程序实现斗地主中的洗牌,发牌和看牌。 2.思路创建一个牌盒,用ArrayList集合实现 往牌盒里面装牌 用Collections的shuffle()方法实现洗牌 把牌发给三个玩家 三个玩家分别看牌3.代码实现package CollectionsStudy;import java.util.ArrayList;import java.util.Col...

2021-12-01 17:22:26 714

原创 JAVA学习笔记21.11.30(参考黑马程序员B站视频)

Collections一、概述Collections是针对集合操作的工具类。二、常用方法public static <T extends Comparable <? super T>> void sort(List <T> list):将列表升序排序 public staticvoid reverse(List <T> list):反转列表中的元素 public staticvoid shuffle(List <T...

2021-11-30 21:16:01 58

原创 JAVA学习笔记21.11.29(参考黑马程序员B站视频)

Map一、Map集合 1.概述Interface Map<K,V> K:键的类型 V:值的类型 将键映射到值的对象 不能包含重复的键 每个键最多映射到一个值2.创建Map集合的对象 用多态的方式创建,利用具体的实现类HashMap。 3.Map集合的基本功能 1)V put(K key,V value):添加元素(键第二次出现时会替代前一次内容) ...

2021-11-29 23:06:16 210

原创 JAVA学习笔记21.11.28(参考黑马程序员B站视频)

泛型一、概述 1.概述 泛型是JDK5之后引入的特性,它提供了编译时类型安全检测机制,该机制允许在编译时检测到非法的类型,它的本质是参数化类型,参数化类型就是将类型由原来的具体类型参数化,然后再使用/调用时传入具体的类型。这种参数类型可以用在类、方法和接口中,分别被称为泛型类、泛型方法和泛型接口。 2.定义格式<类型>:指定一种类型的格式,这里的类型可以看成是形参。 <类型,类型...>:指定多种类型的格...

2021-11-28 12:45:46 208

原创 JAVA学习笔记21.11.27(参考黑马程序员B站视频)

排序一、自然排序Comparable 1.存储学生对象并遍历,使用TreeSet的无参构造方法。 要求:按年龄从小到大排序,年龄相同时按姓名的字母顺序排序。 代码实现: Student类:package ComparableStudy;public class Student implements Comparable<Student>{ ...

2021-11-27 19:28:08 1144

原创 JAVA学习笔记21.11.26(参考黑马程序员B站视频)

Set一、概述和特点 1.概述 Set在util包下,用法和Collection一样,自身没有特殊的用法。2.特点不包含重复元素 没有带索引的方法(不能用普通for循环遍历)3.实例(字符串遍历)package SetStudy;import java.util.HashSet;import java.util.Set;public class Demo { pub...

2021-11-26 20:33:57 1358

原创 JAVA学习笔记21.11.25(参考黑马程序员B站视频)

List一、数据结构 1.概述 数据结构是计算机存储、组织数据的方式,是指相互之间存在一种或多种特定关系的数据元素集合,通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。 2.常见数据结构之栈 一种先进后出的模型。3.常见数据结构之堆一种先进先出的模型。4.常见数据结构之数组 一种...

2021-11-25 22:28:01 1280

原创 JAVA学习笔记21.11.24(参考黑马程序员B站视频)

List一、并发修改异常(ConcurrentModificationException) 1.产生原因 迭代器遍历过程中,通过集合对象修改了集合中元素的长度,造成了迭代器获取元素中判断预期修改值和实际修改值不一样。 2.解决方案 用for循环遍历,然后用集合对象做对应的操作即可。(用ListIterator亦可)二、列表迭代器(ListIterator) 1.概述...

2021-11-24 09:33:50 67

原创 JAVA学习笔记21.11.23(参考黑马程序员B站视频)

List一、概述和特点 1.概述 List是有序集合(也称为序列),用户可以精确控制列表中每个元素的插入位置,用户可以通过整数索引访问元素,并搜索列表中的元素。List集合与Set不同,列表通常允许重复元素。 2.特点 有序:存储和取出元素的顺序是一致的 可重复:存储的元素可以是重复的二、List集合的特有方法 1.void add(int ind...

2021-11-23 21:35:48 785

原创 JAVA学习笔记21.11.22(参考黑马程序员B站视频)

集合一、概述 集合类的特点:提供一种存储空间可变的存储模型,存储的容量可以随时发生改变。 集合分为单列集合接口Collection和双列集合接口Map,Collection分为可以存储重复数据的List接口和不可以存储重复数据的Set接口,List接口有ArraryList实现类、LinkedList实现类等,Set接口有HashSet实现类、TreeSet实现类等,Map接口有HashMap实现类等。二、Collection集合概述和使用 概述...

2021-11-22 22:41:24 431

原创 JAVA学习笔记21.11.21(参考黑马程序员B站视频)

异常一、概述 异常是指程序出现了不正常的状况,Throwable分为Error和Exception,Exception又分为RuntimeException和非RuntimeException。 Error:严重问题,不需要处理Exception:异常类,它表示程序本身可以处理的问题RuntimeException:在编译期是不检查的,出现问题后,需要我们回来修改代码非RuntimeException:编译期...

2021-11-21 19:27:46 987

原创 JAVA学习笔记21.11.20(参考黑马程序员B站视频)

常用API一、Math类 1.概述包含了基本数字的运算方法,没有构造方法,若类的成员是静态的,那么直接通过类名调用。 2.常用方法 1)public static int abs(int a):返回参数的绝对值 2)public static double ceil(doublea):返回大于等于a的最小整数double值 3)...

2021-11-20 22:13:23 867

原创 JAVA学习笔记21.11.19(参考黑马程序员B站视频)

引用类型作为形参和返回值一、类名作为形参和返回值方法的形参是类名,需要的是该类的对象 方法的返回值是类名,返回的是该类的对象二、抽象名作为形参和返回值方法的形参是抽象名,需要的是该抽象类的子类对象 方法的返回值是抽象名,返回的是该抽象类的子类对象三、接口名作为形参和返回值方法的形参是接口名,需要的是该接口的实现类对象 方法的返回值是接口名,返回的是该接口的实现类对象内部类一、概述 在类中定义一个类。 举例:在一个类A的内部定义一个类B,类B...

2021-11-19 21:14:57 984

原创 JAVA学习笔记21.11.18(参考黑马程序员B站视频)

接口一、概述 接口是一种公共的规范标准,只要符合规范标准,大家都可以通用,java中的接口更多体现在对象为的抽象。二、特点接口用关键字interface修饰:public interface 接口名{} 类实现接口用implements表示:public class 类名 implements 接口名{} 接口不能实例化,需参照多态方式,通过实现类对象实例化(接口多态)。多态的形式:具体类多态,抽象类多态,接口类多态。多态的前提:有...

2021-11-18 23:41:47 751

原创 JAVA学习笔记21.11.17(参考黑马程序员B站视频)

多态一、概述 多态是指同一对象在不同时刻表现出来的不同形态。 前提:有继承/实现关系;有方法重写;有父类引用指向子类对象。二、成员访问特点 成员变量:编译看左边,执行看左边 成员方法:编译看左边,执行看右边 说明:成员方法有重写,成员变量没有三、优缺点 优点:提高了程序的扩展性 表现:定义方法的时候,使用父类型作为参数,在使用的时候使用具体子类型进行操作。 ...

2021-11-17 18:11:17 401

原创 JAVA学习笔记21.11.16(参考黑马程序员B站视频)

继承一、概述 继承是面向对象三大特征之一,可以使得子类具有父类的属性和方法,还可以在子类中重新定义,追加属性和方法。 继承的格式:public class 子类名 extends 父类名{} 范例:public class Zi extends Fu{} 说明:Fu是父类,也称为基类、超类;Zi是子类,也称为派生类。 继承中子类的特点:子类既可以有父类的内容也可以有自己特有的内容。二、继承的好处和弊端 ...

2021-11-16 22:57:12 840

原创 JAVA学习笔记21.11.15(参考黑马程序员B站视频)

实现学生管理系统一、实现思路 1.定义学生类 2.主界面代码的编写 3.添加学生代码的编写 4.查看学生代码的编写 5.删除学生代码的编写 6.修改学生代码的编写二、学生类(Student) 1.概述:成员变量包含学号(sid)、姓名(name)、年龄(age)和居住地(address),构造方法包含无参构造方法和带四个参数的构造方法,成员方法包含每个成员变量...

2021-11-15 17:31:21 1204

原创 JAVA学习笔记21.11.14(参考黑马程序员B站视频)

一、StringBuilder 如果对字符串进行拼接操作,每次拼接都会构建一个新的String对象,又浪费内存空间,而这种操作还不可以避免,此时,我们就可以使用Java提供的StringBuilder类来解决这个问题。StringBuilder是一个可变的字符串类,我们可以把它看成是一个容器。 String和StringBuilder的区别就是String的内容不可变,StringBuilder的内容是可变的。 1.StringBui...

2021-11-14 12:02:00 36

原创 JAVA学习笔记21.11.13(参考黑马程序员B站视频)

一、成员变量和局部变量 成员变量:类中方法外的变量局部变量:方法中的变量 区别:位置不同;内存中的位置不同;生命周期不同;初始化值不同。二、封装 1.private关键字private是一个权限修饰符,可以修饰成员变量和成员方法,作用是保护成员不被别的类使用,被private修饰的成员只在本类中才能被访问。针对private修饰的成员变量,如果需要被其他类使用,提供get变量名()方法...

2021-11-13 12:06:16 2076 1

空空如也

空空如也

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

TA关注的人

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