随堂小记
文章平均质量分 69
主要为学习中各种随手的知识点小记
小曹曹曹曹曹曹曹
一个冉冉升起的秃头巨星
展开
-
Redis相关知识点
对于数据库的基础增删改查操作来说,增加操作不涉及nosql的使用,在查找操作时,首先判断缓存(nosql)中是否有该数据,如果有,直接从缓存中读取,没有,则从数据库读取,并将其加入缓存中;概念:Redis (REmote DIctionary Server) 是用 C 语言开发的一个开源的高性能键值对(key-value)数据库,是一种基于内存的数据库,对数据的读写操作都是在内存中完成的,读写速度快,常用于缓存、消息队列、分布式锁等场景。事务在执行的过程中,不会被其他客户端发送发过来的请求所打断。原创 2023-08-14 18:44:19 · 66 阅读 · 0 评论 -
ReentrantLock与synchronized的区别
锁是Java中用于实现线程同步的关键字,当一个线程访问被synchronized修饰的方法或代码块时,会自动获取该方法或代码块对应的锁,其他线程在获取该锁之前会被阻塞,直到锁被释放,使用synchronized锁可以保证多个线程对共享资源的安全访问,避免出现并发访问的问题。是JavaSE核心类库的并发包提供的一种可重入锁,它的内部实现了Sync、NonfairSync、FairSync三个类,其中NonfairSync以及FairSync都继承了Sync,但是NonfairSync是采用。原创 2023-07-20 18:03:36 · 46 阅读 · 0 评论 -
线程池知识点-->线程池的分类、创建、参数理解、执行流程及状态等
线程数固定的线程池,线程池中的线程数量固定,不会随着任务的增加而增加,也不会随着任务的减少而减少。线程数根据任务动态调整的线程池,线程池中的线程数量可以根据需要进行动态调整,如果有空闲线程可用,则会重用空闲线程,如果没有可用线程,则会创建新的线程。4.完成任务:线程执行完任务后,会返回执行结果(如果任务是Callable类型),然后线程会继续从任务队列中取出任务执行,直到任务队列为空。:能实现定时、周期性任务的线程池,可以定时执行任务的线程池,可以指定任务的延迟时间和执行周期。原创 2023-07-17 18:59:41 · 157 阅读 · 0 评论 -
生产者消费者模型
生产者-消费者模型就是创建一个阻塞队列,用于解决多线程或多进程之间的数据共享和同步的问题。生产者将生产好的生产任务放入阻塞队列,消费者直接从阻塞队列中获取任务,避免了生产者和消费者的直接接触,当队列为空时,消费者线程将被阻塞,直到队列中有数据可供消费;当队列已满时,生产者线程将被阻塞,直到队列有空间可供生产。原创 2023-07-17 12:35:59 · 214 阅读 · 0 评论 -
进程与线程基础,主要时线程的创建以及相关的方法
当运行一个java程序时,就会创建一个JVM进程来执行该程序,因此,JVM进程与java程序拥有相同的生命周期,java程序完成或被中止时,JVM页同时会被完成或被中止。在使用线程池来创建线程时,会使用一个默认的线程工厂来创建线程对象,但是默认的线程工厂并不提供额外的定制功能。资源开销:进程之间的资源相互独立,每个进程都有自己的地址空间、文件描述符等,因此进程间的切换开销较大。而线程共享进程的资源,切换开销较小。执行方式:进程是独立的执行流程,每个进程有自己的程序计数器,可以执行不同的任务。原创 2023-07-13 16:22:58 · 196 阅读 · 1 评论 -
代理模式:静态代理+动态代理
InvocationHandler接口只定义了一个方法invoke,该方法接收三个参数:代理对象、被调用的方法以及方法的参数,它返回一个Object类型的值,代表方法的返回值。当需要代理多个原始类时,需要为每个原始类创建一个代理类。在理解动态代理时,可以使用图加+静态代理的方法,动态代理只是将代理类通过Proxy类来自动实现,在使用该方法前,应准备好方法所需的参数以及所扩展的方法即可。- 动态代理:在运行时创建代理对象,无需提前知道代理类和目标类的关系,可以动态地在运行时决定代理对象的行为。原创 2023-07-12 18:45:40 · 35 阅读 · 1 评论 -
Java反射机制基础之反射操作(继承关系+字段的操作)
获取继承关系:获取父类+获取接口,判断继承关系,访问字段,存入字段值,获取方法,调用方法原创 2023-07-12 15:19:27 · 895 阅读 · 1 评论 -
UDP编程练习
UDP编程的客户端与服务端编码原创 2023-07-07 11:35:54 · 34 阅读 · 1 评论 -
HTTP协议
HTTP(HyperText Transfer Protocol)使目前使用最广泛的Web应用程序使用的基础协议,是基于TCP协议之上的一种请求-响应协议服务器与客户端之间的连接如下:HTTP的请求由HTTP Header和HTTP Body两部分构成,图片所示为Header部分内容,服务器主要依靠某些特定的Header来识别客户端的请求如果是GET请求,那么只有Header即可,如果是POST请求,则还需Body,原创 2023-07-07 16:17:27 · 41 阅读 · 1 评论 -
Java反射机制基础知识之Class类和反射方法调用构造函数
一般通过构造方法创建对象时,A a = new B(),会在编译器确定对象的类型;但是有些时候,只有在程序运行起来的时候,才能确定对象的类型Class.forName("?").newInstance(),这种时候就要用到反射机制。了解一下:编译期:把源码交给编译器编译成计算机可以执行的文件的过程。运行期:把编译后的文件交给计算机执行,知道程序运行结束。java反射机制:在运行状态中,对于任意一个类,都能够知道这个类地所有属性和方法;对于任意一个对象,都能够调用他的任意方法和属性;原创 2023-07-11 18:31:20 · 478 阅读 · 0 评论 -
秘钥交换算法(DH算法+非对称加密算法)
在不安全的信道上传递加密文件,当加密文件被截取时,没有秘钥,无法破解密文,但是如何在不安全的信道上安全的传输秘钥呢?如何传输秘钥才能使秘钥被截取是还能保证密文的安全的?要解决这个问题,则需要要使用密钥交换算法,秘钥交换算法有两种:对称加密算法以及非对称加密算法。原创 2023-07-11 14:42:43 · 180 阅读 · 0 评论 -
对称加密算法
使用一个秘钥进行加密或解密,从程序的角度,加密就是有一个函数接收密码和明文,输出密文;解密则是接收密码和密文,输出明文。填充模式:数据块大小不符合加密算法要求时进行填充,也可选择不填充。原创 2023-07-11 14:43:50 · 87 阅读 · 0 评论 -
FTP协议相关知识,FTP服务器文件列表展示、文件上传、文件下载等代码案例和实现步骤细节
它允许用户在客户端和服务器之间上传、下载和管理文件。FTP协议支持匿名访问和身份验证访问,可以通过用户名和密码进行身份验证。1.连接到FTP服务器,验证密码,切换到指定文件夹,列出文件信息,并打印输出文件的名称、创建时间和大小。如果文件夹不存在,则会创建一个新的文件夹。2.在网页中输入主机ip:web服务端口号后输入用户名和密码,则可以进入文件列表展示,并根据权限对文件进行操作。设置用户名和密码,并将想要上传的文件放入主目录,并设置权限。同样的,也可以根据使用编码的方法实现对文件的上传以及下载。原创 2023-07-10 17:33:29 · 760 阅读 · 1 评论 -
BouncyCastle
BouncyCastle是一个第三方开源库,提供了许多哈希算法和加密算法。它提供了Java标准库中没有的一些算法,例如RipeMD160哈希算法。原创 2023-07-10 17:04:41 · 348 阅读 · 1 评论 -
Hmac算法
秘钥只有在第一次使用时生成,并且每次生成不同,所以在数据库存储时,不只需要存储加密后的用户密码,还应存储秘钥,在用户进行登录时,将秘钥与密码一起进行加密,并与数据库中存储的密码进行比对,若一样,则密码正确。Hamc算法是一种基于密钥的消息认证码算法,可以看作一个带有安全key的MD5算法。Hamc总是和某一个算法搭配使用。其中HashTools.bytesToHex()是我们自定义的方法,主要用于将字节数组转换成16进制字符串。所以必须可以根据原始密码与存储的秘钥数组恢复秘钥。秘钥为16进制字符串。原创 2023-07-10 16:30:01 · 136 阅读 · 1 评论 -
哈希算法相关知识点
哈希算法(Hash),又称摘要算法(Digest),对任意一组输入数据进行计算,得到一个固定长度的输出摘要,目的是验证原始数据是否被篡改,相同输入相同输出,不同输入大概率不同输出;MD5加密;SHA-1;MD5与SHA-1的加密方法封装在一个工具类中原创 2023-07-10 14:54:05 · 103 阅读 · 1 评论 -
编码算法(URL+Base64)
对字节进行编码,把任意长度的二进制数据变为纯文本(更利于在某些协议下进行传输),并且编码后只包含a-z、A-Z、0-9、+、/、=,把3字节的二进制数据按6bit一组,用4个两位数表示,并转换成字符;共64种表示,其中,0-25:A-Z,26-51:a-z,52-61:0-9,62:+,63:/。对字符进行编码,浏览器发送数据给服务器时使用的编码方法,但传递数据为中文、日文等其他不能识别的字符时,则需要编码后传递,在编码时,每个字之间使用%分隔,以便识别;使用base64编码对图片进行编码以及还原。原创 2023-07-10 10:49:49 · 132 阅读 · 1 评论 -
Java io的一些操作以及相对应的方法
Java io的一些操作以及相对应的方法,文件字节输入流,带有缓冲区的字节输入流(BufferedOutputStream), 基于字节数组的字节输出流(ByteArrayOutputStream):原创 2023-07-09 11:51:38 · 43 阅读 · 1 评论 -
JavaMail相关代码案例,记录如何完成各种类型邮件发送
邮件传输基于应用层协议的SMTP(Simple Mail Transfer Protocol)协议,JavaMail相关代码案例,记录如何完成各种类型邮件发送原创 2023-07-08 16:26:24 · 84 阅读 · 0 评论