先说点什么这些天,没啥事的时候,就想到什么,就去找点资料看,补充学习一下,以前老是忘记的东西,或者新听到的东西。这次,就记录一下之前一直很容易弄混的概念,回调。其实随便谷歌百度一下,都能找到各种例子解析什么的,不过,我相信你也会和我一样,看的时候觉得很简单,也很容易理解,不过,过一阵子之后,突然需要用的时候,又不清不楚了,又去找资料啊,看代码啊,找例子啊。说多都是泪,我就是这样过来的。! 第一站,
# Java Shutdown Hook 实现 ## 介绍 在Java中,Shutdown Hook(关闭挂钩)是一种机制,它允许在Java应用程序关闭时执行一些操作。当应用程序被关闭时,可以通过注册Shutdown Hook来执行一些清理操作,例如关闭数据库连接、保存未保存的数据、释放资源等。Shutdown Hook是在Java虚拟机(JVM)关闭之前执行的代码块。 本文将向刚入行的开发
原创 2023-10-29 06:31:43
95阅读
Timer的定时调度函数一、schedule的四种用法1.schedule(task,time)参数 task:所要安排的任务 time:执行任务的时间 作用 在时间等于或者超过time的时候执行且仅执行一次task等于或者超过time: 如果time是晚于现在的时间,那么当schedule上之后(执行schedule方法),time的后台线程就会一直等待着; 当现在的
    Executor框架最核心的类是ThreadPoolExecutor它是线程的核型类,主要由下列4个组件构成。   1.corePool:核心线程池的大小   2.maximumPool:最大线程池的大小   3.BlockingQueue:用来暂时保存任务的工作队列   4.Rejecte
http://oldblog.antirez.com/post/fsync-different-thread-useless.html这是原文作者的博客 把他翻译下 带上自己的一些理解 看看作者引入fdatasync和bio技术上的一些探讨:【非常有用的磁盘持久化技术】对于从kernel buffers写入到磁盘中这点是非常重要的,fdatasync就是做这个工作,当然本身磁盘本省也有cache层
    好吧,其实在工作中,我没有用过这个,所以你知道的,对于没用过,或者不怎用的东西,总是比较好奇,如此某些人或许就不屑一顾了吧,让我进一步想看看它是因为看了zookeeper的客户端API的使用,百度一下,第一篇就是importNew的博客,那博客写的当然比我好很多,你看看http://www.importnew.com/15731.html 里面有不
转载 2023-08-02 00:45:35
82阅读
写在前面的话在上一篇CountDownLatch解析中,我们了解了CountDownLatch的简介、CountDownLatch实用场景、CountDownLatch实现原理中的await()方法,接下来我们接着来了解它的countDown()方法以及它的示例和优缺点。CountDownLatch实现原理二、CountDownLatch.countDown()   关于同步队列那点事当
缓存的有点: 1)加速读写,因为缓存都是全内存的(比如Redis和Memcached),而存储层通常读写性能不够强悍,通过缓存可以有效地加速读写。 2)帮助减少后端的访问量和复杂计算,降低了后端的负载。 数据不一致:缓存层和存储层的数据存在着一定的时间窗口不一致性。 缓存的使用场景基本包含如下两种: 1)开销大的复杂计算,一些复杂的操作或者计算(例如大量的联表查询,分组计算),如果不加缓存,不但无
转载 2024-04-09 09:40:27
65阅读
线程池一、线程池概述(1)什么是线程池?(2)不使用线程池的问题(3)线程池原理二、线程池实现的API、参数说明(1)谁代表线程池?(2)如何得到线程池对象(3)ThreadPoolExecutor构造器的参数说明(4)线程池常见面试题①临时线程什么时候创建?②什么时候会开始拒绝任务?三、线程池处理Runnable任务(1)ThreadPoolExecutor创建线程池对象示例(2)Execut
转载 2023-09-29 21:13:00
234阅读
# Java 线程池的 Shutdown 使用指南 ## 引言 在 Java 中,线程池可以有效管理和复用线程,提升并发性能。然而,线程池的使用并不仅限于创建和提交任务。理解何时以及如何正确关闭线程池对于资源管理和应用性能至关重要。本文将帮助你掌握 Java 线程池的 shutdown 使用时机与流程。 ## 线程池的关闭流程 以下是线程池关闭的基本流程概述: | 步骤 | 动
原创 10月前
219阅读
  假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间。    如果:T1 + T3 远大于 T2,则可以采用线程池,以提高服务器性能。              
转载 1月前
339阅读
MQ中相关的基本概念我们已都耳熟能详,生产者消费者,点对点,发布订阅,MQ可以用来实现系统通信之间的解耦。这一章我们一起带着一些思考去重新理解这些基本概念。生产者消费者(Producer-Consumer)在软件领域里面生产者消费者特指一方生产数据一方消费数据。在两者之间增加一个缓冲区(一般使用队列),生产者向缓冲区增加数据,消费者从缓冲区消费数据。然后一直重复该过程。这个过程中有一个问题需要解决
理解类在JVM中什么时候被加载和初始化是Java编程语言中的基础概念,正因为有了Java语言规范,我们才可以清晰的记录和解释这个问题,但是很多Java程序员仍然不知道什么时候类被加载,什么时候类被初始化,类加载和初始化好像让人很困惑,对初学者难以理解,在这篇教程中我们将看看类加载什么时候发生,类和接口是如何被初始化的,我并不会拘泥于类加载器的细节或者说类加载器的工作方式。仅仅使这篇文章更加专注和简
转载 2023-07-17 23:03:48
127阅读
1、FullGC 什么是fullgc: fullgc就是指清理堆中的young和old区。一般程序健康情况会只做YoungGC。fullgc情况会导致除了gc线程外的线程停止工作,代码静止,系统会大幅变慢。触发机制: 1、system.gc()的调用,此方法的调用是建议JVM进行Full GC,虽然只是建议而非一定,但很多情况下它会触发 Full GC,从而增加Full GC的频率,也即增加了间歇
转载 2024-07-15 15:41:03
141阅读
在某峰培训机构不知不觉已经一个半月了,飞快的时间里还有瀑布般下落的知识...能够从这里面接收到多少也是因人而遇。今天是2016/8/20,星期六,打算这两天把java阶段里认为比较重要的知识点总结一下。这就是第一篇--集合。ok,进入正题:集合:1.集合与数组在使用的意义可以说是一样的,都是为了存储一种数据而这种数据可以是基本数据类型,也可以是引用类型。(基本数据类型(8种):byte,short
转载 2023-09-28 09:54:05
100阅读
# Java JVM的启动与退出 Java程序在运行时依赖于Java虚拟机(JVM)来执行。JVM会在程序启动时加载并解释Java字节码,然后运行程序。当程序执行完毕或发生错误时,JVM会退出。 ## JVM的启动流程 JVM的启动流程可以分为以下几个步骤: ```mermaid flowchart TD A[加载JVM] --> B[解析启动参数] B --> C[加载类]
原创 2024-05-15 04:09:00
69阅读
访问权限修饰符决定了紧跟其后被定义的东西可以被谁访问。 Java里有4种情况:public 公共的:关键字应用于类、方法、变量的访问控制修饰。public修饰的类,方法,变量在整个项目的所有类都可以被访问使用。protected 受保护的:关键字应用于类、方法、变量的访问控制修饰。只有本类和同一包里的其他类还有不同包里的子类可以使用。default 默认的:关键字应用于类、方法、变量的访问控制修饰
转载 2023-08-02 13:25:15
184阅读
首先,让我们来讨论下为什么要用集合类?数组是很常用的一种的数据结构,我们用它可以满足很多的功能,但是,有时我们会遇到如下这样的问题:1、我们需要该容器的长度是不确定的。2、我们需要它能自动排序。3、我们需要存储以键值对方式存在的数据。如果遇到上述的情况,数组是很难满足需求的,接下来本章将介绍另一种与数组类似的数据结构—集合类,集合类在Java中有很重要的意义,保存临时数据,管理对象,泛型,Web框
转载 2023-12-07 10:02:10
58阅读
JAVA什么需要接口接口是一种规范接口可以实现多继承 接口是一种规范接口方便了多人项目中开发者间的分工协作。考虑一下两种场景:场景一:开发者1想要实现A类,为了加快开发速度,开发者1选择将一部分功能的实现抽象为一个工具类B,并交由开发者2实现这个B类。 此时开发者1可以通过接口B定义好所需方法,开发者1无需等待开发者2实现B类,就可以继续实现A类(虽然无法进行调试)。开发者2直接按照开发者1提
转载 2023-06-05 18:36:23
143阅读
首先,类只能使用public修饰是一个伪命题,应该说我们只见到过使用public修饰的类,还有一些类没有访问修饰符,此时访问权限为default。其次,类实际上分为外部类和内部类(inner class),一般的类都是外部类,内部类需要依赖外部类生成,内部类可以用各种访问修饰符修饰。所以问题转化成,为什么不能使用private和protected修饰外部类?我们知道,在Java中,访问修饰符可以修
  • 1
  • 2
  • 3
  • 4
  • 5