自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 mybatis基础

- 使用自定义JavaBean封装多个参数--></select>自己定义一个condition类,可以实现区间范围或者其他条件下对于某一个实体类对象在数据库中映射的查找。

2023-08-20 10:26:54 65 1

原创 线程池的执行流程

用白话就是说,线程池就是一个池子,在这个池子中已经创建好并且维护了一些线程,没有任务的时候就处于空闲状态,当有新的任务提交时,会看线程池是否有空闲线程,有的话就将线程分配给任务,减少了线程的不断创建而造成的资源的浪费。

2023-07-20 18:44:00 142 1

原创 线程相关知识总结

线程是指一个进程内部的子任务,是任务的具体执行的逻辑。并且一个进程至少有一个线程(这个唯一的线程是主线程)注:进程启动时创建的堆区(Heap)和云空间(MetSpace)是同一个进程内的多个线程共享的每个线程都有自己的线程:PC、虚拟机栈、本地方法栈。创建线程的方式:注:这句代码是创建线程的最根本的方式,其中传入的参数可以是一个:String类型的线程名字,Runnable类型的实现类;也可以是两个都传。

2023-07-18 18:39:27 94 1

原创 AES算法基础

AES算法是对称加密中的算法之一,常用的对称加密算法(加密和解密使用同一个秘钥)还有DES,IDEA等。现在主流的算法是AES算法。AES有两种常用工作模式,分别是EC和CBC。

2023-07-17 18:45:05 222 1

原创 Reflect 反射最最基础知识总结

Object obj = cls.newInstance() ===>相当于A a = new A(),也就是执行了A类中的构造方法。参数为:1、传一个参数 => 传入该类的对象(Object A = cls.newInstance() ),实际传入的就是A。若传参数==>代表获取的是有参数的构造方法(传入的是参数类型的Class对象 eg:String.class)B是A的实现类,结果为true。若A类继承自B类,且A类重写了B类中的dosth()方法,也就是说A是子类,B是父类。

2023-07-12 20:45:25 157 1

原创 哈希算法分类以及实现步骤

由于MD5加密算法的结果比较稳定且长度一定,所以会有彩虹表等数据表能够进行密码的反推,会导致数据安全问题,在上述MD5算法中采取加随机盐值的方式。和按照字节恢复相比,流程基本一致,只需要初始化一个长度为64的字节数组,在通过循环将字符串的没两位转换成十进制数据放入字节数组中即可;更新原始加密内容(参数为字节类型),并进行加密操作:doFinal( )方法(返回值类型为字节数组)该算法的加密结果长度固定为64字节,且每次运行生成的秘钥均不相同。无论哪种算法,对数据进行加密的过程基本一致,只有。

2023-07-10 18:40:59 309 1

原创 FTP协议个人总结

由于通过getTimestamp()方法获得的时间不是我们想要的“年月日”的时间格式,所以通过SimpleDateFormat对象的构造方法,自行设置自己想要的时间输出格式。通过forEach遍历文件的同时能够获取文件创建名称( getName() ),创建时间( getTimestamp() )和文件大小( getSize() ).文件下载的具体操作要使用FTPClient对象的retrieveFile(A,B)方法,返回值类型是boolean。FTPClient对象的storeFile(A,B)方法。

2023-07-10 17:40:35 62 1

原创 JavaMail发送邮件基本流程的个人笔记

SMTP协议:应用层中的一种协议,在JavaMail中用来发邮件的一种协议,其基于传输层上的TCP协议。

2023-07-09 08:39:20 247 1

原创 HashMap类基础知识概括

在这个方法中,声明了Node[ ] tab 临时数组,将table的引用给tab后,判断tab是否为空,若为空则用resize() 方法进行扩容(一开始默认的长度为16)。如果当前结点的下一个结点为空,说明找到了链表中的尾结点,就把当前的值放到尾结点的下一个结点称为新的尾结点。:在正常情况下,如果直接用HashCode进行比较会产生哈希冲突,所以在put()等方法中,会重新用hash()方法计算key的哈希值;-->若key存在,就会覆盖原来的当前key所对应的值,并且返回原来的值;

2023-05-20 15:32:22 517 2

原创 《ArrayList扩容方式的理解》

通过无参构造方法创建对象后,默认的数组为空数组,之后调用add()方法添加元素时:在add()方法中调用ensureCapacityInternal()方法,在此方法中,判断数组是否为DEFAULTCAPACITY_EMPTY_ELEMENTDATA对象,既空数组。通过无参构造的话,初始数组容量为0,当真正对数组进行添加时,才分配容量。传入的参数大于0,就创建一个以传入的initialCapacity大小的数组。通过grow()方法进行扩容:-->主要就是为了保证数组的长度>=最小需要的容量。

2023-04-26 11:50:48 74

原创 《LinkedList源代码阅读》

unlinkFirst():调用这个方法时,已经确定过原来的链表不为空,所以先是把相应的引用设为 null,接着设置新头节点为 next,若 next 为空,说明链表已经空了,设置 last,否则,将 next 前驱设置为空,更新 size 和 modCount。判断原来的链表是否为空,Last和First都为null,所以要设置Last为新的结点。同样的,在调用时已经确定过原来的链表不为空,然后引用设为 null,设置新尾节点,更新元素个数。首先其创建了一个新的结点,其的后继为原来的头结点。

2023-04-26 10:32:59 50 1

空空如也

空空如也

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

TA关注的人

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