- 博客(131)
- 收藏
- 关注
原创 LinkedBlockingQueue的源码解析(基于JDK1.8)
队列容量可选,默认为Integer.MAX_VALUE。链表节点有一个前驱节点和一个后继节点,可以快速的添加、删除、检索元素。队列支持两种模式:公平模式和非公平模式。在公平模式下,线程按照FIFO顺序竞争访问队列;在非公平模式下,线程可以随意竞争访问队列。阻塞队列支持put()和take()方法,分别用于添加元素和获取元素。当队列满时,put()方法会阻塞等待;当队列空时,take()方法会阻塞等待。其中,first和last分别表示链表的头结点和尾节点;
2023-06-02 11:02:04
265
原创 ArrayBlockingQueue的源码解析(基于JDK1.8)
ArrayBlockingQueue是一个有界的队列,其大小在创建时就已经确定。它由一个数组和两个指针(front和rear)组成,front指向队列头,rear指向队列尾。当队列满时,插入操作将被阻塞,当队列为空时,获取操作将被阻塞。在本文中,我们对ArrayBlockingQueue的源代码进行了分析,了解了其内部结构和工作原理。ArrayBlockingQueue是一个高效、线程安全的阻塞队列,它适用于多线程环境下的生产者消费者模型。
2023-06-01 11:06:25
481
原创 队列的学习(三) 手写一个阻塞队列
阻塞队列是一种常用的线程安全队列,可以有效地协调生产者和消费者线程的工作。本文介绍了如何手写一个阻塞队列,并提供了使用示例。希望本文能够对大家学习阻塞队列有所帮助!
2023-06-01 11:04:31
638
原创 队列的学习(二) 循环队列
循环队列是一种高效的队列实现方式,可以避免普通队列在删除元素时进行数据搬移操作。循环队列的应用场景非常广泛,例如手机短信发送、多线程任务调度和缓存淘汰算法等。
2023-05-31 10:29:25
869
原创 队列的学习(一)用数组和链表实现单向队列
队列是一种先进先出(FIFO)的数据结构,它支持在队尾插入元素,在队头删除元素。在本文中,我们将学习如何使用数组和链表两种数据结构来实现单向队列。
2023-05-31 10:21:56
773
原创 链表的学习:链表的头插法和尾插法以及HashMap中链表结点的插入方式
这是因为HashMap中的链表是按照插入顺序排序的,最近插入的元素会放在链表的头部,最先插入的元素会放在链表的尾部。除了链表的基本操作之外,还有一些高级的链表技巧,比如双向链表、循环链表等。循环链表是一种特殊的链表,它的最后一个节点指向第一个节点,形成一个循环。在链表中,删除节点的操作也很重要,因为如果链表中的某个节点不再使用,我们需要将其从链表中删除,以免占用空间。删除一个节点的操作需要找到该节点的前一个节点,然后将前一个节点的指针指向该节点的下一个节点即可。链表的插入操作是链表中最常见的操作之一。
2023-05-30 10:25:41
1546
原创 ConcurrentHashMap扩容的详细介绍以及多线程测试(基于JDK1.8)
是Java中线程安全的哈希表实现。它使用了锁分段技术,将哈希表分成多个Segment(默认为16),每个Segment都是一个独立的哈希表,每个Segment内部维护一个ReentrantLock锁,对于不同的Segment,它们可以被并发访问。当进行put、get等操作时,只需要获取对应Segment的锁即可,大大提高了并发访问的效率。当哈希表中元素的数量达到一定阈值(默认为Segment大小的0.75倍)时,ConcurrentHashMap的扩容机制会被触发。
2023-05-30 10:23:30
1359
原创 HashMap的源码分析(基于JDK1.8)
HashMap是一种基于哈希表的数据结构,其内部通过哈希算法实现了对数据的快速访问。在HashMap中,每个Entry包含两个部分,一个是键,另一个是值。HashMap会根据键的哈希值和数组长度计算出每个Entry在数组中的位置,如果该位置上已经存在了一个Entry,则需要进行一些操作,如替换原来的Entry或者在链表的尾部添加一个新的Entry。如果该位置上还没有Entry,则直接将新的Entry添加到该位置上即可。
2023-05-29 14:53:31
626
原创 走近CopyOnWriteArrayList(基于JDK1.8)
是一种高效、线程安全的 List 实现,通过读写分离的策略,可以提高并发访问效率。但对于频繁写入操作的场景,其写入效率可能会降低。在实际应用中,需要根据具体场景灵活选择使用。总的来说,的优点在于其高效的读取操作、线程安全、对读写分离的支持和写入效率高。然而,它的缺点在于占用额外的内存空间,并且不适合频繁写入操作。因此,需要根据实际应用场景来选择是否使用。在一些读取操作比较频繁的场景下,例如日志记录,可以提高并发访问效率,相比于ArrayList,它的性能更好。
2023-05-29 14:51:39
595
原创 详细介绍线程间通信
线程间通信是指在多线程编程中,不同的线程之间通过某种方式交换信息的过程。这是一个重要的概念,因为线程之间的协作是实现复杂并发系统的关键。
2023-05-28 17:23:15
1491
原创 线程间通信
以上是常见的几种线程间通信方式,具体使用哪种方式,需要根据具体的应用场景来选择。在实际开发中,线程间通信是一个非常重要的问题,需要认真考虑,避免出现死锁、竞态条件等问题,确保程序的正确性和可靠性。同步通信是指发送方和接收方需要在某个时间点同时执行某个操作,才能完成通信的过程。同步通信通常需要通过锁机制、条件变量等方式来实现线程同步,保证多个线程之间的协作性。在多线程编程中,线程之间需要经常进行通信,以便协调它们之间的工作。异步通信是指发送方和接收方可以独立执行,不需要在同一个时间点执行某个操作。
2023-05-28 17:17:20
551
1
原创 死锁的发生与避免
需要注意的是,并不是所有的死锁都可以被完全避免。总之,避免死锁是一个非常重要的问题,需要系统设计人员和开发人员共同努力,采取有效的措施,以确保系统的正常运行。在设计系统时,要考虑到系统的规模、并发性、资源访问模式等多方面因素,以便更好地避免死锁的发生。死锁是一个很麻烦的问题,因为一旦发生死锁,所有的进程都会被阻塞,无法继续运行,这会导致系统的崩溃。因此,在设计系统时,一定要考虑到可能发生死锁,并采取一些措施来避免或解决死锁问题。在计算机系统中,死锁是一种常见的问题,因此需要采取一些措施来避免死锁的发生。
2023-05-28 17:13:42
1489
原创 Lock的学习与使用
Lock对象是Python中实现线程同步的一种方法,通过获取锁来保证多个线程之间的同步。Lock对象有基本的acquire()和release()方法,还支持递归锁和with语句等高级用法。在实际的多线程编程中,需要注意线程安全问题,使用锁来保证操作的原子性和正确性,从而避免竞争条件和死锁等问题的产生。
2023-05-27 20:01:12
1612
原创 使用synchronized解决原子性问题
使用synchronized关键字可以解决多线程环境下的原子性问题。它可以修饰方法或者代码块,确保同一时刻只有一个线程可以执行带有synchronized关键字的代码。需要注意的是,过多的使用synchronized会降低程序的性能,因此应该在必要的情况下使用。
2023-05-27 19:58:52
1048
原创 原子类的说明与使用
原子类是一个非常有用的工具,可以使我们更高效地编写 CSS 样式。通过学习常见的原子类,我们可以更好地理解它们的用途和优点,并且可以更好地应用于实际项目中。使用原子类可以使我们更快地编写样式,并且可以提高样式的可重用性和可维护性。因此,在编写 CSS 样式时,我们应该考虑使用原子类。
2023-05-26 14:58:12
755
原创 Java内存模型
Java内存模型(Java Memory Model, JMM)是Java虚拟机规范中的一部分,定义了Java程序中多线程之间的内存访问规则。在多线程环境下,多个线程访问同一份数据时,可能会出现数据不一致或者未定义的行为,Java内存模型通过定义一些规则来保证多线程环境下的数据一致性。
2023-05-26 14:52:49
1229
原创 并发编程Bug的根源
并发编程是指同时进行多个任务或者操作的编程模式。在这种模式下,我们需要保证多个线程之间的正确互动和处理,以充分利用系统的资源。然而,并发编程也带来了一系列的问题和挑战,其中最主要的是 Bug。在本文中,我们将探讨并发编程 Bug 的根源,分别是 CPU 缓存导致的可见性问题,线程切换导致的原子性问题,以及编译器重排序导致的有序性问题。
2023-05-25 10:50:52
1340
原创 Java并发包的介绍
原子类是Java并发包中的一种数据类型,它提供了一种线程安全的方式来操作共享变量。在多线程环境中,多个线程可能同时访问和修改同一个变量,这样就有可能导致数据的不一致性和线程安全性问题。原子类通过使用CAS(Compare And Swap)算法,保证了多个线程对同一个变量的操作是原子性的。
2023-05-25 10:39:49
372
原创 Pool与PG的说明以及Ceph的IO流程
Ceph中的数据是以对象的形式存储在存储池(pool)中的。每个存储池都被划分为若干个存储组(PG),每个存储组同时也是一个数据分片(shard)。存储组是Ceph用来实现数据的分布式存储和高可用的重要组成部分。每个存储组包含若干个对象,以及相关的元数据信息,如对象的大小、创建时间、修改时间等。Ceph会将存储池中的对象均匀地分配到不同的存储组中,以实现数据的负载均衡和高可用。每个存储组都有自己的PG编号,用于标识该存储组在整个Ceph集群中的位置。
2023-05-24 15:58:49
1108
原创 Ceph的核心组件的介绍(基于nautilus版本)
Ceph是一个基于分布式存储的开源存储系统,它提供了对象存储、块存储和文件存储三种存储方式,具有高可靠性、高可扩展性和高性能等优点。
2023-05-24 15:56:24
1389
1
原创 使用Ceph对象存储的Amazon S3接口(基于nautilus版本)
本文介绍了Ceph对象存储的Amazon S3接口的使用,重点介绍了分片上传接口。分片上传接口可以提高上传的速度,降低上传的出错率,适用于上传大文件的场景。通过本文的介绍,读者可以了解如何使用Ceph对象存储实现分片上传功能。
2023-05-23 16:36:40
1358
原创 Ceph对象存储的基本概念,使用以及优点
总之,Ceph对象存储系统是一种高可靠性、高扩展性和高性能的分布式存储系统,可以满足各种规模和类型的存储需求。它是一个免费的开源分布式存储系统,可以轻松地处理大量的数据,支持多种存储方式。Ceph的开源性质、高可靠性和高性能使得它成为了云计算、大数据分析等领域的理想存储解决方案。Ceph是一种基于分布式架构的对象存储系统,它可以提供高可靠性、高扩展性和高性能的存储服务。这种存储系统可以用于处理大量的数据,例如大型数据库、云存储、视频流、图像数据等。
2023-05-23 16:35:47
804
原创 Ceph对象存储的Amazon S3接口的使用(重点介绍分片上传接口)(基于nautilus版本)
本文介绍了Ceph对象存储的Amazon S3接口的使用,特别是分片上传接口。希望对大家有所帮助。
2023-05-21 20:13:33
1554
原创 Ceph对象存储的基本概念、使用以及优点(基于nautilus版本)
Ceph是一个分布式对象存储系统,能够提供高性能、高可靠性和可扩展性。在Ceph中,数据被存储为对象,每个对象都有一个唯一的标识符,称为对象ID。对象存储集群有多个存储节点,每个节点都有自己的本地存储和网络连接。对象可以被分布式地存储在整个集群中的多个节点上,从而提供高可靠性和可用性。
2023-05-21 20:06:40
1229
原创 用docker搭建Ceph集群问题整理(基于nautilus版本)
如果你想要使用Docker搭建Ceph集群,那么你可能会遇到一些问题。这里我们整理了一些经典的问题以及解决方法,以帮助你更好地搭建Ceph集群。
2023-05-20 18:41:51
706
原创 用docker搭建Ceph集群(基于nautilus版本)
在本文中,我们将使用Docker搭建Ceph集群。我们将使用nautilus版本,这是Ceph的最新长期支持版本。
2023-05-20 18:40:02
1006
原创 用docker搭建Ceph集群之docker的基本概念以及操作
Docker是一种开源的容器化技术,它可以让开发者将应用程序和相关的依赖项打包成一个可移植的容器,方便部署和管理。Docker可以在任何环境中运行,使得应用程序的部署变得更加简单和高效。
2023-05-18 13:40:00
669
原创 Ceph 简介
Ceph是一个分布式的对象存储系统,支持对象、块和文件存储。它是一个开源项目,最初由Sage Weil于2004年开发,可免费使用。Ceph在分布式存储领域表现优异,可以存储海量数据,并且可以通过S3或Swift等API进行访问。Ceph采用分布式架构,可以实现数据的无限扩展,让用户可以随着数据量的增长而扩展存储。
2023-05-18 13:34:01
845
原创 抓取动态网页的数据的具体操作方法
不同的方法适用于不同的情况,例如如果目标网站使用的是JavaScript动态加载数据,那么使用Scrapy-Splash可能会更加适合。如果目标网站的数据比较简单,那么使用浏览器开发者工具可能会更加方便。如果需要模拟用户的操作,那么使用Selenium可能是更好的选择。总之,需要根据具体情况选择合适的方法,才能高效地获取动态网页的数据。综上所述,选择合适的方法取决于具体的需求。如果需要模拟用户的操作,可以使用Selenium。动态网页是指在用户交互过程中,网页内容不断更新和变化的网页。
2023-05-17 17:21:31
2606
1
原创 如何利用pytesseract库识别图形验证码
本文介绍了如何使用Python的pytesseract库来识别图形验证码。这是一个非常有用的技能,可以在自动化测试等方面发挥重要作用。希望这篇文章能对你有所帮助!
2023-05-17 17:16:48
995
原创 Scrapy框架的下载器中间件讲解&并用下载器中间件设置随机请求头
在Scrapy框架中,下载器中间件是用来处理请求和响应的一种插件。Scrapy框架中的下载器中间件是通过下载器中间件(Downloader Middleware)组件来实现的。下载器中间件可以对请求和响应进行处理,例如修改请求头、修改请求参数、对响应进行处理等。Scrapy框架中的下载器中间件是基于Twisted的异步框架实现的,可以自定义开发。本文介绍了Scrapy框架的下载器中间件的作用和使用方法,并演示了如何使用下载器中间件设置随机请求头。
2023-05-16 17:04:23
475
原创 详细介绍Scrapy shell的使用
Scrapy shell是一个非常有用的工具,可以帮助开发者快速地测试和调试Scrapy的爬虫代码。使用Scrapy shell可以快速地提取网页中的数据,并进行调试和优化。希望本文对读者有所帮助。
2023-05-16 16:39:33
671
原创 Scrapy框架的下载器中间件讲解&并用下载器中间件设置随机请求头
在process_request方法中,我们随机选择一个User-Agent,并将其添加到请求头中。在Scrapy框架中,下载器中间件(Downloader Middleware)是一种机制,可以在Scrapy下载器处理请求和响应的过程中进行自定义操作。下载器中间件的主要功能是在下载器发送请求和处理响应的过程中,对请求和响应进行处理和修改。在使用Scrapy框架时,我们可以自定义下载器中间件,并将其添加到Scrapy的DOWNLOADER_MIDDLEWARES配置中。
2023-05-15 10:33:56
727
原创 Scrapy框架快速入门
Scrapy是一个用于爬取网站的Python框架,可以快速、高效地获取网站数据。下面我们将通过举例子的方式来介绍Scrapy框架的基本使用方法。
2023-05-15 10:29:45
479
原创 多线程操作CSV文件并且将CSV文件转成XLSX文件
在本文中,我们介绍了如何使用Python多线程操作CSV文件并且将CSV文件转成XLSX文件。通过使用多线程和转换文件格式的方法,可以大大提高程序的性能,特别是在处理大量数据时。希望本文对你有所帮助!
2023-05-14 15:36:55
608
原创 CSV文件操作介绍
通过本文的介绍,我们了解了如何使用Python的csv模块对CSV文件进行读写操作,并且给出了一些实用的例子。希望本文能够对读者有所帮助。
2023-05-14 15:24:29
885
原创 Selenium 操作表单元素、行为链、操作Cookie和页面等待
Selenium是一种自动化测试工具,它可以模拟用户的交互行为,如点击、输入、滚动等。本文将介绍如何使用Selenium操作表单元素、行为链、操作Cookie和页面等待。
2023-05-13 20:06:03
627
原创 使用Selenium和ChromeDriver操作浏览器获取动态数据
在Web开发中,有时需要爬取动态生成的数据。这些数据无法通过传统的爬虫工具获取,因为它们需要在浏览器中执行JavaScript代码才能生成。在这种情况下,可以使用Selenium和ChromeDriver来模拟人类用户的行为,操作浏览器并获取动态数据。
2023-05-13 20:04:07
6031
原创 爬取动态页面的数据
在进行网页爬取时,我们通常会遇到两种不同的页面:静态页面和动态页面。静态页面是指内容不会改变的页面,而动态页面则是指内容可能会随时间、用户操作或其他事件而改变的页面。本文将介绍如何爬取动态页面的数据,并举一些实际例子。
2023-05-12 11:14:14
948
毕业设计基于SpringBoot+Vue 的原创歌曲分享平台【源码+包运行成功】
2023-06-01
毕业设计基于SpringBoot+Vue 的应急救援物资管理系统.【源码+包运行成功】
2023-06-01
毕业设计基于SpringBoot+Vue 的一起来约苗系统【源码+包运行成功】
2023-06-01
毕业设计基于SpringBoot+Vue 的学生考勤管理系统【源码+包运行成功】
2023-06-01
毕业设计基于SpringBoot+Vue 的医院固定资产系统【源码+包运行成功】
2023-06-01
毕业设计基于SpringBoot+Vue 的校园疫情防控系统【源码+包运行成功】
2023-05-30
毕业设计基于SpringBoot+Vue 的校园医疗保险管理系统【源码+包运行成功】
2023-05-30
毕业设计基于SpringBoot+Vue 的学生就业管理系统【源码+包运行成功】
2023-05-30
毕业设计基于SpringBoot+Vue 的学生选课系统【源码+包运行成功】
2023-05-30
毕业设计基于SpringBoot+Vue 的校园志愿者管理系统【源码+包运行成功】
2023-05-30
毕业设计基于SpringBoot+Vue 的医患档案管理系统【源码+包运行成功】
2023-05-30
毕业设计基于SpringBoot+Vue 的校友社交系统【源码+包运行成功】
2023-05-29
毕业设计基于SpringBoot+Vue 的小学家校一体“作业帮”的设计与实现【源码+包运行成功】
2023-05-29
毕业设计基于SpringBoot+Vue 的校园台球厅人员与设备管理系统源码+包运行成功
2023-05-29
毕业设计基于SpringBoot+Vue 的休闲娱乐代理售票系统【源码+包运行成功】
2023-05-29
毕业设计基于SpringBoot+Vue 的校园交友网站【源码+包运行成功】
2023-05-29
毕业设计基于SpringBoot+Vue 的网上图书商城【源码+包运行成功】
2023-05-28
毕业设计基于SpringBoot+Vue 的网吧管理系统【源码+包运行成功】
2023-05-28
毕业设计基于SpringBoot+Vue 的逍遥大药房管理系统【源码+包运行成功】
2023-05-28
毕业设计基于SpringBoot+Vue 的线上买菜系统【源码+包运行成功】
2023-05-28
ChatGPT文档和网页服务
2023-06-07
ChatGPT从0到1学习资料汇总,入门/原理/应用/场景/实操,最好的GPT学习中文文档
2023-06-06
ChatGPT for Bot 项目文档源码
2023-06-06
毕业设计基于SpringBoot+Vue 的招生管理系统【源码+包运行成功】
2023-06-03
毕业设计基于SpringBoot+Vue 的智能热度分析和自媒体推送平台【源码+包运行成功】
2023-06-03
毕业设计基于SpringBoot+Vue 的致远汽车租赁系统【源码+包运行成功】
2023-06-03
毕业设计基于SpringBoot+Vue 的自媒体社区平台【源码+包运行成功】
2023-06-03
毕业设计基于SpringBoot+Vue 的智慧外贸平台【源码+包运行成功】
2023-06-03
毕业设计基于SpringBoot+Vue 的疫情防控期间某村外出务工人员信息管理系统【源码包运行成功】
2023-06-02
毕业设计基于SpringBoot+Vue 的在线外卖系统【源码+包运行成功】
2023-06-02
毕业设计基于SpringBoot+Vue 的在线小说阅读平台【源码+包运行成功】
2023-06-02
毕业设计基于SpringBoot+Vue 的在线考试系统【源码+包运行成功】
2023-06-02
毕业设计基于SpringBoot+Vue 的招聘信息管理系统【源码+包运行成功】
2023-06-02
本资源是一个游戏分享网站的完整开发源码,包括前端、后端、数据库等部分 该系统主要提供自媒体社区服务,实现自媒体账号管理
2023-06-02
毕业设计基于SpringBoot+Vue 的实习管理系统【源码+论文+演示视频+包运行成功】
2023-06-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅