自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 判断链表是否有环

实现思路:将链表中的每个结点依次加入set集合中,在加入过程中判断结点是否已经加入,如果已经加入,则说明链表有环。

2023-10-08 19:06:50 123

原创 用链表计算两数之和

实现思路:使用两个链表分别保存两个数字,数字的每一位分别作为一个结点存入,个位数字在链表的头部,分别遍历两个链表从头结点开始计算每位之和存入新的链表。链表一般用于计算超大的两个数字之和,除此之外也可以采用BigInteger实现。注意:要考虑到满十进位的问题。

2023-10-08 18:58:10 109

原创 借助栈实现反转链表

将链表中的元素依次存入栈中,跟据栈的后进先出原则,从栈中依次拿出栈顶元素再以尾插法的方式式存入链表中。

2023-09-27 18:01:02 155

原创 合并有序链表

合并有序链表。

2023-09-26 10:13:28 75

原创 计算机网络基础知识总结

流量控制是为了控制发送方的发送速率,在接收方和发送方都有一个固定大小的缓冲区用于接收对方发送的数据,接收方只允许发送方发送缓冲区能容纳的下的数据,接收方来不及处理发送方发送的数据包时就会提示发送方减慢发送速率,防止流量拥塞。TCP使用的流量拥塞协议是滑动窗口协议。滑动窗口是TCP协议用于实现流量控制的一种机制。发送方和接收方分别维护了一个固定大小的缓冲区,发送方窗口的大小由接收方TCP头部的窗口字段中决定。发送方的窗口分为发送窗口和可用窗口。

2023-09-23 16:27:32 59

原创 JVM虚拟机

指令时,首先将去检查这个指令的参数是否能在常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否已被加载过、解析和初始化过。是由编译器自动收集类中所有类变量的赋值动作和静态语句块中的语句合并产生的,编译器收集的顺序由语句在源文件中出现的顺序决定。目录中的虚拟机能识别的类库。双亲委派模型使Java类它的随着 加载器有了优先级,使得基础类得到统一,避免了冲突。从开发1人员角度可以分为启动类加载器,扩展类加载器,应用程序类加载器。后,在不同的操作系统上,会有不同的jvm将字节码翻译成对应的机器码。

2023-09-11 19:02:52 47

原创 SpringCache、SpringBoot+Redis实现数据缓存

注意:使用redis做缓存减少数据库的检索次数时一定要记得对数据库内容做修改后同步修改redis中的缓存数据止,防止出现数据不一致的问题。@Cacheable(启用缓存):从缓存中查找数据,若没找到就执行方法从数据库查找该数据,并将数据添加到缓存当中。对于查询操作,如果redis中没有缓存数据,直接从数据库获取缓存数据,并将数据存放到redis中。对于删改操作,不仅对数据库内容进行修改,还要同步修改redis中的缓存数据。接着在启动类上加@EnableCaching注解在对应的方法上添加注解。

2023-09-08 16:00:07 82

原创 Swagger使用集成springboot

使用Swagger,就是把相关的信息存储在它定义的描述文件里面(yml或json格式),再通过维护这个描述文件可以去更新接口文档,以及生成各端代码。语法:@ApiOperation(value = “接口说明”, httpMethod = “接口请求方式”, response = “接口返回参数类型”, notes = “接口发布说明”)语法:@Api(tags="说明该类的作用,可以在UI界面上看到的注解",value = "/类的访问路径", description = "类的文字描述")

2023-09-08 10:16:57 41

原创 使用七牛云实现文件上传和删除

【代码】使用七牛云实现文件上传和删除。

2023-09-05 17:53:36 571

原创 synchronized底层原理

3、拷贝成功后,虚拟机尝试将对象的Mark Record中的ptr_to_lock_record更新指向为Lock Record的指针,并将Lock Record里的owner指针指向对象的Mark Word,如果更新成功,那么线程就拥有了该对象的锁,并且对象Mark Word的lock标志位为“00”,g该对象使用轻量级锁;偏向锁和轻量级锁在使用上的区别:如果有一个方法需要使用到锁,者个方法从始至终都是一个线程调用,没有出现并发的情况,那么使用偏向锁就可以,第二次直接进入就可以,不用再进行加锁。

2023-09-04 17:58:42 39

原创 线程局部变量ThreadLocal(2)

父子线程共享数据指的是在父线程中向ThreadLocal中存入了数据可以在子线程中从ThreadLocal中获取到。InheritableThreadLocal是ThreadLocal的子类,该对象调用get()方法得到的值是父类的值。

2023-08-29 20:43:59 61 1

原创 线程局部变量ThreadLocal(1)

thread1 和thread2是两个不同的线程,thread1中存入局部变量zzz,thread2中存入局部变量xxxx,在调用show()方法获取局部变量时,thread1获取的是thread存入的局部变量,thread2火区的是thread2存入的局部变量,但是他们使用的是同一个threadLocal对象,可见,局部变量是存在该线程中的。ThreadLocal用于在线程中保存数据,在其中保存的数据仅属于当前线程,其他线程是无法访问到的。那么ThreadLocal是怎么向线程中存放数据和获取数据的呢?

2023-08-29 20:12:17 77 1

原创 Linux基础知识及常见的命令

要注意的时tar命令的使用,因为参数较多,在参数的下达中, c/x/t/r 仅能 存在一个,不可同时存在,因为不可能同时压缩与解压缩。tar -czvf xxx.tar.gz /aaa bb 将/aaa bb 文件 打包压缩为 xxx.tar.gz。注意的是如果文件不存在 ,则创建文件。如:touch,mkdir,cp,rmdir,rm, mv,tar。cp /aa /home/bb 将根目录下的aa拷贝到home目录下的bb。tar -xf xxx.tar 将xxx.tar中的文件解包。

2023-08-27 23:19:43 49

原创 Java8特性

java8中,接口中除了可以定义抽象方法外还可以定义默认方法和静态方法。

2023-08-23 22:43:01 46

原创 CopyOnWriteArrayList核心源码阅读

平时查询的时候,都不需要加锁,随便访问,只有在写入时(添加、修改、删除)的时候,才会从原来的数据复制一个副本出来,然后修改这个副本,最后把原数据替换成当前的副本。写入的同时,查询操作不会被阻塞,而是继续读取旧的数据。这样做的好处是实现对CopyOnWrite集合容器容器写入时线程安全,但同时不会影响并发的读取操作。它是一种读写分离的思想。

2023-07-19 22:23:52 72

原创 ReentrantLock与synchronized的区别

synchronized 可以给类、方法、代码块加锁;而ReentrantLock 只能给代码块加锁。synchronized 不需要手动获取锁和释放锁,使用简单,发生异常会自动释放锁,不会造成死锁;而ReentrantLock 需要自己加锁和释放锁,如果使用不当没有 unLock()去释放锁就会造成死锁,所以常在finally代码块释放。通过ReentrantLock可以知道有没有成功获取锁,而 synchronized 不能。

2023-07-18 22:27:06 71 1

原创 线程的执行流程

线程池内部维护了若干个线程,没有任务时,线程处于空b闲状态,如果有任务时就会分配一个空闲的线程给该任务,如果没有空闲线程,则该任务就会被放入工作队列,直到有线程处于空闲状态就分配该线程给它。

2023-07-17 19:15:49 383 1

原创 线程的实现方式

定义Runnable接口的实现类,重写run()方法,这个run()方法和Thread中的run()方法一样是线程的执行类,创建Runnable实现类的实例,并用这个实例作为Thread的参数来创建Thread对象。程序在需要使用线程时,将任务传给线程池,线程池选择一个空闲状态的线程执行任务,任务执行结束后,该线程又会处于空闲状态。(1)创建Callable接口的实现类,并实现call()方法,然后创建该实现类的实例。创建一个类继承Thread类,然后重写Thread类中的run()方法。

2023-07-17 18:48:32 48 1

原创 AES算法的CBC和ECB两种工作模式

AES算法是常用的对称加密算法。对称加密算法就是指使用同一个密钥进行加密和解密。

2023-07-17 18:01:43 78 1

原创 Java反射总结

反射的定义:反射是指在运行期,对于任意一个类都能动态的调用信息及获取对象,即知道任意类的属性和方法,调用任意对象的方法和属性。运行期是指将便后后的文件交给计算机执行,知道执行完毕,也就是将文件从磁盘上读取到内存中的过程。

2023-07-13 22:37:47 70 1

原创 FTP协议相关内容及案例

主要作用是在服务器和客户端之间实现文件的传输和共享。FTP协议运行在TCP连接上,保证了文件传输的可靠性。使用FTPClient在服务器上创建个人目录,并上传文件。使用FTPClient 实现文件的罗列并打印到控制台上。使用FTPClent从服务器上下载文件并保存到本地。3.在浏览器中输入IP地址及端口号即可访问。1.启动Ftpconsole.exe。2.创建用户,设置权限。

2023-07-10 18:53:48 131 1

原创 Hash算法知识点总结

哈希算法:又称为摘要算法,能对输入的某一组数据进行计算,输出一组长度固定摘要。它是一种加密算法。,也可能会得到相同的输出,这种情况称为哈希碰撞。哈希碰撞:不同的输入得到了相同的输入,如:通话和重地。哈希碰撞不能避免,但是我们应该尽量减少。

2023-07-10 18:24:38 145 1

原创 Java Mail发送邮件理解及相关案例

创建MimeBodyPart对象,并向该对象中写入正文的内容,创建另一个对象,向该对象中传入要上传的附件的内容(通过流的方式传入),设置附件的名称。创建MimeMultiPart对象,将正文和附件加入该对象,然后将该对象放入邮箱对象中,发送邮件。发送邮件:创建Session会话并创建邮件对象,向邮件对象中传入session对象,设置邮件的标题、正文、发件人和收件人,最后发送邮件。与发送包含附件的方式大致相同,不同点在于在正文内容中要田间图片的信息,在图片对象部分要设置Header以便于在正文内容部分加入。

2023-07-08 16:37:41 274 1

原创 eclipse使用问题记录—Java @override报错的解决方法

eclipse使用问题记录—Java @override报错的解决方法

2023-06-05 13:49:49 403 1

原创 使用Files工具类对目录进行遍历

实现思路:使用Files的walkFileTree方法,该方法有两个参数,其中一个参数是要遍历的目录的路径,另一个参数是FileVisitor接口,此处使用了该接口的实现类SimpleFileVisitor,该类实现了postVisitDirectory(遍历目录)和visitFile(遍历文件)方法。类(java.nio.file.Files)提供了多种方法来处理文件系统中的文件。比直接使用File文件要方便的多了。使用Files工具类可以对目录文件进行深度遍历。

2023-06-02 20:38:40 512

原创 HashMap的数据结构

在JDK1.8之前HashMap内部采用数组+链表进行存储。JDK1.8之后在解决哈希冲突时有了较大的变化,当(或者红黑树的边界值,默认为8)并且当前时,此时此索引位置上的所有数据改为使用红黑树存储。

2023-05-16 15:04:25 201 1

原创 LinkedList源码阅读

LinkedList源代码阅读

2023-04-27 20:17:24 110

原创 ArrayList扩容方式

ArrayList扩容,ArrayList源码阅读,ArrayList扩容为什么是1.5倍

2023-04-27 17:51:07 157

原创 使用jdbc连接不同版本的数据库

使用jdbc连接不同版本的数据库

2022-11-20 22:21:12 528 1

原创 NameError: name ‘xxx‘ is not defined

python常见问题

2022-11-20 22:12:18 3195

空空如也

空空如也

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

TA关注的人

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