前言在Java编程中,注解(Annotations)是一种重要的元数据(metadata)形式,它为代码提供了额外的信息,这些信息可以在编译时或运行时被处理。从Java 5开始,Java平台引入了一种新的特性——注解,它允许程序员为代码添加标记,而这些标记可以在编译时或运行时被读取和处理。Annotation(注解)是 Java 提供的一种对元程序中元素关联信息和元数据(metadata)的途径和
前言早!下大雨,赶紧完工休息!从反射角度看 Java 属于半动态语言(歪头疑问脸)什么是动态语言?动态语言是指程序在运行时可以改变其结构:新的函数可以引进,已有的函数可以被删除等结构上的变化。比如常见的 JavaScript 就是动态语言,除此之外 Ruby,Python 等也属于动态语言, 而 C、C++则不属于动态语言。正文反射机制概念在 Java 中的反射机制是指在运行状态中,对于任意一个类
前言大暴雨呀!出门还开开心心的把窗户打开了,哦豁!水帘洞,真是巨大的“异常”行为,被自己日常操作气笑。正文异常:如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法。在这种情况下会抛出一个封装了错误信息的对象,且这个方法会立刻退出同时不返回任何值。另外,调用这个方法的其他代码也无法继续执行,异常处理机制会将代码执行交给异常处理器。异常分类Throwable 是 Java 语言中所有
前言集合是长接触的,习惯了它的存在,可延伸的知识也很多,居然一时间不知道从哪说起。集合类存放于 Java.util 包中,主要有:Set、List 和 Map(映射)。概念比较多,例如:Collection:Collection 是集合 List、Set、Queue 的最基本的接口。 Iterator:迭代器,可以通过迭代器遍历集合中的数据。正文ListJava 的 List 是非常常用的数据类型
前言实在不合格,不会的知识太多了。昨天学习时有讲到双亲委派,查了很多相关资料,然后就看到了——OSGi(Open Service Gateway Initiative)面向Java 的动态模型系统,是Java 动态化模块化系统的一系列规范。正文OSGi 解决了什么?模块化构建系统,解决复杂的依赖性动态改变构造OSGi 服务平台提供在多种网络设备上无需重启的动态改变构造的功能。为了最小化耦合度和促使
前言近来可好?最近又开始下雨,小满!天气还挺讲究,四季分明。类加载器(Class Loader)负责将类的字节码加载到内存中,并将其转换为可执行的Java对象。它实现了动态加载类的机制,使得Java具备了灵活性和可扩展性。JVM 提供了 3 种类加载器:启动类加载器(Bootstrap Class Loader)扩展类加载器(Extension Class Loader)应用程序类加载器(Appl
前言星期五了,今天懒洋洋的,醒很早但赖床不想起,每天磨磨蹭蹭!嗷呜~它是一堆代码,我是一堆细胞人家那是艺术代码,我是一身细菌细胞一关机就消失的电子蝴蝶一抹杀就死亡的碳基生物嗯,超厉害!艺术创作脑洞极大,严谨又神秘,真想问问是如何写出这么优秀的文字,如何才能正确有效的学习,如何才能理解这些晦涩难懂的文字概念?一直在路上,一直在迷茫,是思考太少,不够细致?害!危险危险~学而不思则罔,思而不学则殆正文J
前言晴,这样的好天气真的像盲盒,好惊喜!今日学习IO/NIOIO 面向流、阻塞的。NIO 面向缓存、非阻塞的。正文Java NIO(New IO,Non-Blocking IO)是从Java 1.4版本开始引入的一套新的 IO API,可以替代标准的 Java IO API。NIO 与原来的 IO 有同样的作用和目的,但是使用的方式完全不同。NIO 支持面向缓冲区的、基于通道的IO操作。NIO将以
前言天气晴朗,万物可爱,今天心情十分愉悦!垃圾都被清理干净了,哈哈哈!多亏了 GC 垃圾收集器(我应该开号直播卖货)。Java 堆内存被划分为新生代和老年代两部分。新生代主要使用复制和标记-清除垃圾回收算法,老年代主要使用标记-整理垃圾回收算法。因此 Java 虚拟机针对新生代和老年代分别提供了多种不同的垃圾收集器。如果两个收集器存在关联可以搭配使用:正文Serial 垃圾收集器Seri
前言要养成习惯了,打开电脑第一件事,给自己 new 个对象。Object obj = new Object();我们没办法直接去修改堆内存中的对象,所以我们可以通过引用,找到堆内存进而进行修改。Java种的四种引用类型强引用 软引用 弱引用 虚引用 正文强引用把一个对象赋给一个引用变量,这个引用变量就是一个强引用。当一个对象被强引用变量引用时,它处于可达状态,它是不可能被垃圾回收机制回收的, 即使
前言周一愉快!继续接着上一篇延伸知识点(想到哪学到哪)GC(Garbage Collection)用于自动管理内存。在Java中,开发人员不需要手动分配和释放内存,因为 GC 负责监测内存中不再使用的对象,并将它们自动回收以释放内存资源。这样可以减少内存泄漏和程序崩溃的风险,但同时也会引入一些性能开销。GC的基本原则: 频繁收集新生代 ,较少收集老年代 ,基本不动元空间 正文已经听过很多遍垃圾回收
前言为什么突然单独提出堆区(Heap)?主要是Java堆可以从 GC 角度细分,涉及 GC (Garbage Collection, 垃圾收集器) 执行垃圾回收的重点了解一下。正文《Java虚拟机规范》中对Java堆的描述是:所有的对象实例以及数组都应当在运行时分配在堆上。(我没看过这本书,要全局搜索一下看是否真的有这句话,日常写文章要严谨)堆是Java内存管理的核心区域。堆在JVM启动
前言白天出太阳,晚上下大雨,救命!这天气好懂事~想出门玩,想出门玩,大脑疯狂叫嚣!!!正文回顾正题!我们来了解JVM 内存区域(不同的JDK版本内存结构有点变化,具体可以自己研究JDK7和JDK8。不行!忍不住,我要放个图)JVM 内存区域主要分为线程私有区域【程序计数器、虚拟机栈、本地方法区】 线程共享区域【JAVA 堆、方法区】 直接内存看图来讲的话,要不然我们扯一下与线程的关系?线程私有区域
前言今年雨有点大,连续暴雨天着实让人不舒服,开始发霉!讲线程,又讲线程,线程都讲腻了(可还是不懂,我哭死~)线程(thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。 一个进程可以有很多线程,每条线程并行执行不同的任务。这这这......这就是传说中的“高并发多线程” 完了!感觉头皮有点痒,要长脑子了。哈哈哈哈哈~言归正传,虽然 “高并发多线程”总是被一
前言好久不见!都2024年5月了,一开年就忙,其实回想也不算很忙,就找了很多事把自己困住,闲的时候太跳脱,脑子飞速运转想一堆乱七八糟的事,头痛的厉害,所以忙起来好点。今日主题——JVM。正文基本概念JVM【Java Virtual Machine】可运行Java代码的“假想”计算机,为什么用上假想这个词?因为它是虚构的,是通过在实际计算机上,仿真模拟各种计算机功能来实现,另称Java虚拟机。引入J
前言降温了,连学习都懈怠了,再复习一遍数据结构。数据结构我们先列出最常用的数据结构。数组、栈、队列、链表、树、哈希表...好吧!先这些吧,多了也记不住。数组数组(Array)大概是最简单,也是最常用的数据结构了。其他数据结构,比如栈和队列都是由数组衍生出来的。这个就是1 个数组,它有 4 个元素【1,2,3,4】每一个数组元素的位置由数字编号,称为下标或者索引(index),大多数编程语言的数组第
线上接口负载剧增,快扛不住了,你的首选方案是什么遇到这样的问题,我们的第一反应应该是增加缓存。因为,增加缓存是解决系统性能问题最快速、最高效的方案,它能够快速提升系统的线性吞吐量,效果也最为明显。这就相当于是用空间来换取时间。曾经有人说过,缓存是解决性能问题的万金油,哪里存在性能瓶颈,就往哪里加缓存。但是程序都已经上线了,增加缓存还来得及吗?因为在增加缓存时需要改代码,所以,临时解决方案就是增加节
前言今天主题是悲观锁和乐观锁,很常见的话题了,但是记录一下吧!每个人想法不一样,讲的多少也会不一样,大家随便听听就好,有问题欢迎评论,我是个知错就改的好孩子。今天就来简单了解一下使用场景接下来我们了解一下两种锁的使用场景,其实两种锁各有优缺点,所以合适的场合用适合的锁,像乐观锁适用于写比较少的情况下(多读场景)大概就是冲突真的很少发生的时候,这样就可以使用乐观锁,可以省去锁的开销,加大了系统的整个
前言为什么使用MQ?其主要核心就是解耦,异步,削峰。MQ优点解耦A 系统发送数据到 BCD 三个系统,通过接口调用发送。如果 E 系统也要这个数据呢?那如果 C 系统现在不需要了呢?A 系统负责人几乎崩溃......A 系统跟其它各种乱七八糟的系统严重耦合,A 系统产生一条比较关键的数据,很多系统都需要 A 系统将这个数据发送过来。这个时候如果你使用 MQ,A 系统产生一条数据,发送到 MQ 里面
生产环境服务器变慢,如何诊断处理项目上线之后,运行一段时间就会碰道生产环境服务器变慢,生产环境服务器变慢的原因是什么呢?这个就是今天的主题,接下来我从以下3个维度简单了解一下:CPU利用率、磁盘I/O效率、内存瓶颈。1. CPU利用率CPU利用率过高或者CPU利用率过低,都会影响程序的处理效率。CPU利用率过高,说明当前服务器要处理的指令比较多,当CPU忙不过来的时候,指令的运行效率自然就会下降,
线上服务器CPU飙升,如何定位到Java代码这个问题的关键是要找到Java代码的位置。那要如何正确的找到代码位置呢?总结一下简单排查思路。第1步,使用top命令找到占用CPU高的进程。top命令 在使用top命令之后,可以看到一个列表。 PID(进程ID)、USER(操作用户)、CPU占用率、内存占用率、 TIME+(运行时间)、COMMAND(运行命令)等信息。 一般默认按CPU占用率从上到下
1、你知道的 List 都有哪些? ArrayList、LinkedList、Vector 等。 2、List 和 Vector 有什么区别?Vector 是 List 接口下线程安全的集合。 3、List 是有序的吗? List 是有序的。4、ArrayList 和 LinkedList 的区别?分别用在什么场景? ArrayList 和 LinkedList 数据结构不一样,前者用在查询较多的
1、什么是 Nginx? Nginx 是一个 web 服务器和反向代理服务器,用于 HTTP、HTTPS、SMTP、POP3 和 IMAP 协议。2、请列举 Nginx 的一些特性。 Nginx 服务器的特性包括: 反向代理/L7 负载均衡器 嵌入式 Perl 解释器 动态二进制升级 可用于重新编写 URL,具有非常好的 PCRE 支持 3、请解释 Nginx 如何处理 HTTP 请求。 Ngin
1、Tomcat 的缺省端口是多少,怎么修改?1)找到 Tomcat 目录下的 conf 文件夹 2)进入 conf 文件夹里面找到 server.xml 文件 3)打开 server.xml 文件 4)在 server.xml 文件里面找到下列信息<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" re
1.请列举出在 JDK 中几个常用的设计模式?单例模式(Singleton pattern)用于 Runtime,Calendar 和其他的一些类中。工厂模式(Factory pattern)被用于各种不可变的类如 Boolean,像 Boolean.valueOf。观察者模式(Observer pattern)被用于 Swing 和很多的事件监听中。装饰器设计模式(Decorator des
1 什么是 ActiveMQ?ActiveMQ 是一种开源的,实现了 JMS1.1 规范的,面向消息(MOM)的中间件,为应用程序提供高效的、 可扩展的、稳定的和安全的企业级消息通信。 2 ActiveMQ 服务器宕机从 ActiveMQ 的储存机制说起。在通常的情况下,非持久化消息是存储在内存中的,持久化消息是存储在文件中的,它们的最大限制在配置文件的<systemUsage>节点中
1 集合类都有哪些?主要方法?最常用的集合类是 List 和 Map。 List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。 List 适用于按数值索引访问元素的情形。 Map 提供了一个更通用的元素存储方法。 Map 集合类用于存储元素对(称作"键"和"值"),其中每个键映射到一个值。2 JVM
1.如何理解面向对象和面向过程【面向过程】:完成某件事的过程,性能高于【面向对象】优点:但是因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。缺点:没有面向对象易维护、易复用、易扩展【面向对象】:把要完成的某件事,分成对象然后再完成优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号