自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 解析哈夫曼算法

如果你自己尝试写了示例代码,你可能会发现一个问题:如果我最后形成的编码串的开头有0的话,再转为256进制的过程中不就损失掉了吗?是 一种无损压缩算法,是一种十分基础且简单的压缩算法,原理则是将文件转化为文本文件后将每一个字符及其次数存入哈夫曼树的节点,然后得到这些节点的编码值,该编码值只含数字0、1.再将节点中的字符与这些编码值一一对应,然后按照该编码值将原文件中的字符替换为编码串,再将其转化为256进制数,将这一256进制数与编码集写入文件,得到压缩后的文件。再将这个权值加入排序,重复上述步骤。

2024-06-12 23:50:30 225

原创 Java线程池的使用

在Java中,线程池(Thread Pool)是一种管理多个线程的机制,主要目的是为了提高性能和资源利用率。它通过重用一组已创建的线程来执行多个任务,从而避免了频繁创建和销毁线程的开销。接口及其实现类,可以方便地创建和管理各种类型的线程池,适用于不同的应用场景。在java本身的线程池类中,线程池的构造函数一般有以下几个参数:核心。:非核心线程的空闲时间,超过这个时间后,非核心线程会被终止。线程数、最大线程数、非核心时间、储存线程的长度。:核心线程数,线程池中始终保持存活的线程数。

2024-05-23 19:20:17 194 1

原创 Java死锁问题

所谓哲学家吃饭问题是这样的一个情景:几个哲学家围着一张圆桌吃饭,人右手边都放了一根筷子,由于是围成一圈,所以其实每个人左右两边都有一根筷子,只有哲学家拿起左手和右手两边的筷子,他们才能开始吃饭,而且一个人吃完了要把筷子放下,另一个人才能吃饭,那么久有可能陷入这样的一个困境:所有人都拿起了左手的筷子由于都没有人吃饭,所以所有人都不将筷子放下,因此陷入了死局。这样做的好处就是效率高,死锁问题是一个很现实的问题,没有真正的通解,因此需要自己不断思考,不断总结经验,抓住问题的本质,这样才能真正解决问题。

2024-05-07 17:30:30 230

原创 Java哈希表的原理

首先我们要了解一下哈希表究竟是一个怎样的数据结构,简而言之,就是一个可通过所提供的索引(Key)快速找到对应数据的数据结构,原理是该索引将通过hash函数取得能让我们知道数据存储地址的hash值。要实现一个哈希表有两点是重中之重,一个是设计出一个优秀的取得hash值的函数,既要求不让hash值分散太开导致数组必须开很大(尽量让计算的结果可以取到空间内的任意一块地址),又不能让多数据的hash值都相等,导致查找效率的极大降低。闭散列则是将冲突的元素放在其解析地址的后一个地址,或者通过一个函数去进行二次计算。

2024-04-30 18:55:04 642 1

原创 Java基础之利用锁实现线程同步的几种方法

这要从线程的运行过程说起,线程并非是让一个代码块运行完再让另一个代码块运行,而是无论一处代码是否执行完,只要过了一段时间就让另一个代码块执行。因此有时在对money进行一个操作后,另一个得到的数据还是之前的数据,从而导致差错。是利用synchronized(监视器(锁)){ 需要同步的代码块...}语句来手动加锁,在小括号中的就是锁的本体,要求必须唯一且对所有线程适用,只要满足这个条件的任意对象都能作为锁,因为这是一个参照物,只有与一个不变的东西对比才能知道数据有没有被改变,可以类比于物理中。

2024-04-24 00:10:57 458

原创 Java中设计一个仿Vector类

本教程并不能完全做到Vector的功能,该教程仅为了对Vector没有基础的读者理解Vector实现的原理,而实际上的Vector将复杂的多。

2023-11-30 22:19:07 975

原创 java中类的继承的简要理解与应用

java中类的继承的简要理解与应用

2023-11-11 23:04:26 145 2

空空如也

空空如也

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

TA关注的人

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