- 博客(423)
- 资源 (2)
- 问答 (1)
- 收藏
- 关注
原创 【Java NIO】
传统 I/O 需要多次数据拷贝(用户态 ↔ 内核态),而 NIO 的 FileChannel 支持内存映射文件(MappedByteBuffer),减少拷贝次数,提升性能。高并发场景下(如服务器处理大量连接),因为需要为每个连接分配独立线程,所以导致有大量的线程,导致线程资源耗尽和大量的CPU资源用于上下文切换开销。传统 I/O 无法实现非阻塞操作,难以应对高并发、实时性要求高的场景(如聊天服务器、实时交易系统)。
2025-04-02 11:51:28
485
原创 从零开始开发HarmonyOS应用并上架
操作系统:Windows 10 64位 或 macOS 10.13+内存:8GB以上(推荐16GB)硬盘:至少10GB可用空间下载 DevEco Studio 3.1+(官网:https://developer.harmonyos.com/cn/develop/deveco-studio)Node.js(自动集成)Ohpm(HarmonyOS包管理器)
2025-04-01 09:45:21
979
原创 【创建模式-工厂方法模式(Factory Method Pattern)】
定义一个创建对象的接口,该接口的子类具体负责创建具体的对象。工厂方法模式将对象的实例化延迟到子类。工厂方法模式的核心思想是: ①适用于产品类型多样且需要动态选择的场景;②它将产品的创建逻辑封装在工厂方法中,客户端只需通过工厂获取产品,无需关心具体实现。
2025-03-10 10:46:03
476
原创 【创建模式-构建模式(Builder Pattern)】
构建者设计模式是四人帮的设计模式中的一种,《设计模式》一书旨在阐述如何解决面向对象软件开发中反复出现的设计问题。
2025-02-24 11:38:24
840
原创 【创建模式-单例模式 (Singleton Pattern)】
唐 李世民实现单例模式的主要方式有:饿汉模式、懒汉模式(非线程安全)、懒汉模式(线程安全)、双重检查锁定、静态内部类和枚举方式。攻击方式有克隆攻击、序列化攻击和反射攻击。
2025-02-06 14:47:32
767
原创 【java反射】
IntheofficialJavadocumentation,reflectionisdefinedastheabilityofaJavaprogramtoinspectandmodifytheruntimebehaviorofapplicationsrunningintheJavaVirtualMachine(JVM).Itisafeatureprovidedbythejava.lang.reflectpackage,whic
2025-01-07 13:13:05
618
原创 [01走进JAVA]
从广义上讲,Kotlin、Clojure、JRuby、Groovy等运行于Java虚拟机上的编程语言及其相关的程序都属于Java技术体系中的一员。如果仅从传统意义上来看,JCP官方所定义的Java技术体系包括了以。JCP(Java Community Process)是一个开放的国际组织,主要由Java开发者以及被授权者组成,职能是发展和更新。
2024-12-27 16:32:59
282
原创 【jvm】主要参数
设置永久代(PermGen)的初始大小和最大大小(JDK 8 后被 Metaspace 取代)。设置 JVM 启动时堆的初始内存大小(单位:字节、KB、MB、GB)。设置 Metaspace 的初始大小和最大大小(在 JDK 8 中,PermGen 被 Metaspace 替代)。设置堆的最大内存大小(单位:字节、KB、MB、GB)。分别设置新生代(Young Generation)的初始大小和最大大小。启用一些潜在的性能优化(例如,启用 JIT 编译器的高级优化)。启用并发标记清除垃圾回收器(CMS)。
2024-12-18 20:20:42
1081
原创 【创建模式-蓝本模式(Prototype Pattern)】
当需要反复构建出同一个类的大量实例,并且这些实例的初始状态都是一样的时候就可以先通过new创建出一个实例,对该实例进行调整(通常就是设置一些参数),这个实例就可以称之为原型,这也是该设计模式叫原型模式的缘由。由此我们可以得出,原型模式相对于new关键字构造对象的优势在于:如果new构造调用的构造函数比较耗时时,原型模式才有明显优势;我们可以举一个实际的例子(引用自:《设计模式之禅道》),银行批量向客户发送节日邮件,假设一封邮件包括:①称呼、②节日祝福语;原型模式:耗时0.357毫秒。
2024-12-11 20:48:55
1059
原创 nginx.conf文件结构
location [PATTERN] #location块。events { #events块。server #server块。#server全局块。http #http块。
2024-12-10 15:39:41
176
原创 【自动内存管理】
Java虚拟机概念模型的官方出处主要来自于Java虚拟机规范,具体来说,是Java SE规范中的Java虚拟机规范部分。JVM 规范(Java Virtual Machine Specification是由Oracle发布的官方文档,定义了JVM的行为和接口,包括类加载、内存管理、字节码执行、垃圾回收等。这是定义Java编程语言本身的规范,但它也与JVM的工作方式紧密相关,因为它定义了Java语言语法和如何在JVM上执行的规则。最新的JVM规范可以在Oracle官网或OpenJDK项目中找到。
2024-12-07 11:44:49
218
原创 7.代理模式(Proxy Pattern)
动态代理的本质就是在运行时动态的生成一个代理类,这个代理类的加载同样遵循JVM类加载机制那一套东西,涉及到动态生成代理类的字节码并将其加载到JVM中。
2024-12-03 15:04:40
1088
原创 1.适配器模式(Adapter Pattern)
这里写目录标题一级目录二级目录三级目录@[TOC](这里写目录标题)一级目录二级目录三级目录@[TOC](这里写目录标题)一级目录二级目录三级目录@[TOC](这里写目录标题)一级目录二级目录三级目录一级目录二级目录三级目录@TOC一级目录二级目录三级目录@TOC一级目录二级目录三级目录@TOC一级目录二级目录三级目录
2024-12-03 15:00:14
899
原创 Spring Cloud数据库从MySQL切换到OceanBase
介绍从MySQL数据库切换到OceanBase数据库。设计到OceanBase安装、Spring Cloud配置及调试知识。
2024-11-01 09:52:37
472
原创 学习java字节码后可以干什么
通过自定义类加载器,你可以在运行时动态加载类,甚至修改类的字节码。在一些游戏开发中,特别是基于JVM的游戏引擎(如LibGDX),理解字节码可以帮助你更深入地优化游戏性能,或者实现一些高级的游戏逻辑。学习字节码需要一定的时间和耐心,但一旦你掌握了这项技能,它将为你打开一个全新的世界,让你在Java开发领域拥有更多的可能性和创造力。通过反编译Java类文件到字节码,再分析字节码,你可以了解其他Java应用程序的内部实现。通过字节码操作,你可以实现自己的DSL,并将其编译为Java字节码,从而在JVM上运行。
2024-10-20 21:47:44
236
原创 【JAVA源码授权】
使用代码混淆工具(如 ProGuard 或其他 Java 混淆器)来混淆源代码和字节码,使其难以被理解和逆向工程。混淆过程会重命名类、方法和变量,增加反编译的难度。
2024-09-25 23:19:17
481
原创 【ProGuard混淆jar包】
对一个JAR包进行混淆(obfuscation)通常是为了保护代码免受逆向工程的威胁,使其难以被理解和反编译。混淆器通过改变类名、方法名、变量名等,使得代码结构复杂化。
2024-09-02 10:15:36
823
原创 【IDEA构建Docker镜像】
假设我们IDEA开发环境是在windwos上,发布的地方是centos服务器。所以需要现在centos和windows上分别安装docker。
2024-08-08 19:31:33
289
原创 【StrongReference SoftReference WeakReference Phan】
当虚拟机需要更多的内存的时候,有垃圾回收器将回收软引用的对象。软引用经常被用于实现内存敏感的缓存。
2024-07-25 15:43:24
484
原创 【ThreadLocal】
ThreadLocal类提供了线程作用域的变量。这种变量不同于线程中通过get或者set方法访问的普通变量,因为这些普通变量都是线程自己独立初始化的变量拷贝。在希望将状态 (如:用户ID或者事务ID)和线程关联起来的类中 ,ThreadLocal实例通常是类的私有静态字段。例如,下面的类生成每个线程本地的唯一标识符。当ThreadId.get()首次被调用的时候一个线程的ID被设置,同时在后续的调用中该ID不会被改变。} };} }} };} }} };} }
2024-07-24 15:53:59
1101
转载 【CentOS Docker 安装】
通过其完整的软件包名称安装特定版本,该软件包名称是软件包名称(docker-ce)加上版本字符串(第二列),从第一个冒号(:)一直到第一个连字符,并用连字符(-)分隔。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。通过运行 hello-world 镜像来验证是否正确安装了 Docker Engine-Community。Docker 安装完默认未启动。
2024-07-22 16:18:54
115
1
原创 【jxls 单元格合并】
在需要处理Excel模板输出的业务场景中,可以使用阿里系的easyExcel也可以使用jxls,在基本需求的使用和输出上,个人感觉easyExcel代码简单,jxls相对复杂一点点,但jxls能够处理的场景更复杂,比如需要合并表格的情况。目前引入的jxls版本2,其最新的是3。在表格合并上2也是可以处理的。
2024-07-12 16:26:59
748
原创 【SpringBoot、logback、nacos】
首先谈一谈我的需求:目前的情况是,当前程序是使用的logback来进行日志输出。是在resource目录下配置了logback-spring.xml文件。目前配置的日志输出级别是INFO。可是实践中当线上系统出现一些问题的时候,希望在不重启程序模块的情况下,调整日志输出级别为DEBUG,将DEBUG级别的日志输出以便于通过日志发现问题原因。
2024-07-04 16:59:31
1154
5
原创 【Top 50 Maven Interview Q&A for 2024】
Table of ContentsBasic Maven Interview Questions Intermediate Maven Interview QuestionsAdvanced Maven Interview QuestionsBecome a DevOps ExpertMaven is a DevOps tool that reduces the efforts to be put in the build process. The tool helps companies increa
2024-06-14 15:54:26
530
原创 【Spring整合H2内嵌数据库】
H2是一款内存数据库,适合我们在开发阶段、学习阶段调试代码使用,并不适用于生产阶段,可以满足我们学习与调试代码的需求。--导入H2相关坐标--> < dependency > < groupId > com.h2database < artifactId > h2 < version > 2.2.224 < scope > runtime
2024-03-01 14:54:52
674
原创 【Maven 3 in action】读书笔记
第1章对Maven做了简要介绍,通过一些程序员熟悉的例子介绍了Maven是什么,为什么需要Maven。建议所有读者都阅读以获得一个大局印象。第 2~3 章是对Maven的一个入门介绍,这些内容对初学者很有帮助,如果你已经比较熟悉Maven,可以跳过。第4章介绍了本书使用的背景案例,后面的很多章节都会基于该案例展开,因此建议读者至少简单浏览一遍。第5~8章深入阐述了Maven的核心概念,包括坐标、依赖、仓库、生命周期、插件、继承和多模块聚合,等等,每个知识点都有实际的案例相佐,建议读者仔细阅读。
2024-02-19 13:58:21
359
分布式系统如何共享、处理(与第三方服务长连接的客户端对象)。
2019-09-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人