【2023】多线程之 Fork/Join框架
Fork/Join框架是一个实现了ExecutorService接口的多线程处理器,它专为那些可以通过递归分解成更细小的任务而设计,最大化的利用多核处理器来提高应用程序的性能。与其他ExecutorService相关的实现相同的是,Fork/Join框架会将任务分配给线程池中的线程。而与之不同的是,Fork/Join框架在执行任务时使用了工作窃取算法。fork在英文里有分叉的意思,join在英文里连接、结合的意思。_fork join 多线程
【2023】java内存溢出和内存泄漏代码测试及检测
在这个例子中,循环申请Object 对象,并将所申请的对象放入一个Vector 中,如果仅仅释放引用本身(o=null),那么Vector 仍然引用该对象,所以这个对象对GC 来说是不可回收的。我们知道jvm通过持久带实现了java虚拟机规范中的方法区,而运行时常量池就是保存在方法区中的,因此发生这种溢出可能是运行时常量池溢出,或是由于程序中使用了大量的jar或class,使得方法区中保存的class对象没有被及时回收或者class信息占用的内存超过了配置的大小。_java内存溢出检测
【2023】使用alibaba的easyexcel框架实现excel表格及二维码下载(简洁、高效没有多余代码,都有注释)
生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。easyexcel重写了poi对07版Excel的解析,能够原本一个3M的excel用POI sax依然需要100M左右内存降低到KB级别,并且再大的excel不会出现内存溢出,03版依赖POI的sax模式。_阿里excel
【2023】java中多线程中synchronized的八种实现方式
普通同步方法(同步代码块)如果是相同实例对象的则会发生互斥,如果是不同实例对象调用则不会发生互斥静态同步方法(同步代码块)则不管是什么方式调用都会发生互斥,需要等待。
【2023】ArrayList和LinkedList详解介绍对比
可以被当作堆栈(后进先出)、队列(先进先出)或双端队列进行操作。数据添加删除效率高,只需要改变指针指向即可,但是访问数据的平均效率低,需要对链表进行遍历。非同步,线程不安全。支持null元素、有顺序、元素可以重复不要使用普通for循环去遍历LinkedList,使用迭代器或者foreach循环(foreach循环的原理就是迭代器)去遍历LinkedList即可:这种方式是直接按照地址去找数据的,将会大大提升遍历LinkedList的效率。
【2023】HashMap详细源码分析解读
HashMap是Map中的重要实现类,它是一个散列表,存储的内容是键值对(key=>value)映射。HashMap是非线程安全的。HashMap中允许存储null的键和值,键是唯一的。在JDK1.8以前,HashMap的底层数据结构是纯粹的数组+链表结构。由于数组具有读取快,增删慢的特点,而链表具有读取慢,增删快的特点,HashMap将二者相结合,并且没有使用同步锁进行修饰,它的性能较好。数组是HashMap的主体,链表则是为了解决哈希冲突而引入。拉链法。_hashmap源码解读
【2023】java数据结构-时间、空间复杂度分析
时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额外空间。空间复杂度(Space Complexity)是算法在执行过程中所需的额外空间的量度。它用于评估算法对内存资源的使用情况,包括算法使用的额外内存空间的大小和增长趋势。时间复杂度的定义:在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。O(1):只要代码的执行时间不随着n的增大而增大,这样的代码复杂度都是O(1)。O(n):T(n)与代码的执行次数成正比(代码的执行时间越长,时间复杂度越高)
【2023】分享国内外大厂开发主要AI网站
(Midjourney,ChatGPT,Stable Diffusion绘画)(生成Midjourney关键词,每天免费60张)(DALL·E和Midjourney绘画)(生成Midjourney关键词)。(论文知识库,与论文AI对话)(支持GPT4的科研神器)(帮你阅读生成知识图谱)(快速提取PDF信息)(通过文字实现P图)
【2023】Redis实现消息队列的方式汇总以及代码实现
经常听到很多人讨论,关于「把 Redis 当作队列来用是否合适」的问题。有些人表示赞成,他们认为 Redis 很轻量,用作队列很方便。也些人则反对,认为 Redis 会「丢」数据,最好还是用「专业」的队列中间件更稳妥。这篇文章就聊一聊把 Redis 当作队列,究竟是否合适这个问题。我们会从简单到复杂,一步步带你梳理其中的细节,把常用的实现方式展现一遍。好了,总结一下。_redis 队列实现
XXL-Job 具体通过docker 配置,再通过springboot执行注册实现完整流程
在平时的业务场景中,经常有一些场景需要使用定时任务,比如: - 时间驱动的场景:某个时间点发送优惠券,发送短信等等。 - 批量处理数据:批量统计上个月的账单,统计上个月销售数据等等。 - 固定频率的场景:每隔5分钟需要执行一次。
【2024】MySQL中常用函数和窗口函数的基本使用方式
- `SELECT COUNT(*) FROM table_name;`:计算表中的行数。- `SELECT SUM(column_name) FROM table_name;`:计算表中指定列的总和。- `SELECT AVG(column_name) FROM table_name;`:计算表中指定列的平均值。- `SELECT MAX(column_name) FROM table_name;`:返回表中指定列的最大值。
【2023】Spring Validation中@NotNull注解、@NotBlank注解介绍以及使用
注解:JSR 303 定义了一组用于验证的注解,如 @NotNull、@Size、@Pattern、@Min、@Max 等。通过在 Java 对象的属性上添加这些注解,可以指定验证的条件和约束。早期的 Spring Web 基于 Hibernate Validator 实现了这些校验规范。在后期,Spring 将这部分校验独立成为了一个模块spring-validation,需要额外引入依赖实现相关注解校验。
【2023】CompletableFuture使用代码案例实习使用场景介绍-(保姆级教程)
是 Java 8 引入的一种异步编程工具,位于包中。它提供了一种方便的方式来执行异步任务,并在任务完成时执行相应的操作。是对Future的扩展和增强;是一种可完成或失败的Future。它提供了一种通用的机制来处理异步操作的结果,包括处理异步任务的完成、异常处理和组合多个异步任务的结果。并且通过实现CompletionStage实现了对任务编排的能力,执行某一阶段,可以向下执行后续阶段。异步执行的时候,如果未定义线程池,默认线程池是。
【2023】java通过modbus4j实现modus TCP通讯
Modbus RTU:——传输的是字节数组(bit[])通信:读写输出:可以读写输入:只能读存储区:输出线圈、输入线圈、输出寄存器、输入寄存器存储区范围:5位和6位功能代码0x01:读线圈0x02:读离散量输入0x03:读保持寄存器0x04:读输入寄存器测试使用Modbus Slave() 模拟saveid:看资料"从站在modbus总线上可以有多个",仿真软件就能模拟一个从站,就是ID=1,当然可以修改成ID=2。_modbus4j
【2023】java打印PDF(不需要调用浏览器直接静默打印)
实现步骤先大致介绍一下这篇文章的内容,主要是通过 Adobe Acrobat DC(或者其他的PDF模板制作app),制作好PDF模板,然后通过`itextpdf`框架把数据写入到模板对应的文本域中,可以实现PDF文件打开,写入的内容可以正常显示代表pdf文件制作没用问题了。- 然后在需要连接打印机打印的上部署一个调用本地打印机的jar包,jar主要通过`pdfbox`框架实现调用本地打印机,成功把需要打印的pdf文件传递到打印机的打印队列,实现打印。在打印机主机的jar写好接受服务器打印的pdf
前端加springboot实现Web Socket连接通讯以及测试流程(包括后端实现心跳检测)
写这个项目主要是有有个项目需要后端有数据实话返回前端,一开始采用前端轮询的方式,后面觉得及时性上有些不行,然后改为使用websocket ,具体实现demo以及测试流程发出来提供交流学习,WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
基于plotly的数据可视化库:让数据分析变得更加有趣
作者:禅与计算机程序设计艺术 1.简介近年来,互联网企业不断创新,推出了很多基于Web的服务平台、移动应用等,这些产品都对用户行为数据的收集和处理提出了很高的要求。数据可视化技术也成为一种热门话题。作为一个数据科学爱好者,我每天都会从各个渠道获取海量的用户数据进行分析。但当需要通过直观的方式呈现数据时
【大麦网自动抢票】100%秒杀出票 不成功我退出编程圈!
大麦网是中国综合类现场娱乐票务营销平台,业务覆盖演唱会、 话剧、音乐剧、体育赛事等领域 今天,我们要用代码来实现他的购票过程。_大麦网自动抢票
【Java】Java中的多态
在Java中,多态是面向对象编程中的一个重要概念,它允许不同类型的对象对同一方法进行不同的实现。具体来说,多态性指的是通过父类的引用变量来引用子类的对象,从而实现对不同对象的统一操作。例如:狗和猫都是动物,动物共同的行为都有吃这个动作,而狗可以表现为啃骨头,猫则可以表现为吃老鼠。这就是多态的表现,即同一件事情,发生在不同对象的身上,就会产生不同的结果。在面向对象编程中,重写(Override)指的是子类重新定义和实现了从父类继承而来的方法,以改变方法的行为。_java多态
今日推荐
周排行