- 博客(23)
- 收藏
- 关注
原创 如何Maven 构建问题排查与依赖管理
环境配置是关键:私服(Nexus)配置、中央仓库 fallback、代理配置是保证构建成功的基础。学会排查工具等命令在调试过程中非常有用。理解依赖管理机制:知道 Maven 如何解析依赖,为什么会报错,以及如何通过或来解决冲突。避免只清理不思考:很多时候并不能治本,真正的解决办法是理清依赖来源和仓库策略。提升了排错思维:不再只盯着报错信息,而是从仓库配置—依赖管理—缓存机制三个层次去分析问题。
2025-09-08 20:58:40
1365
原创 jwt原理及Java中实现
JWT(JSON Web Token)是一种用于无状态认证的开放标准,通过签名机制将认证信息打包成自包含的字符串。它由Header、Payload和Signature三部分组成,支持自定义字段,适用于分布式系统。JWT解决了传统会话管理的状态维护问题,但需注意安全风险,如设置过期时间、避免密钥泄露等。常见陷阱包括不校验关键声明、存储不当等。Java中可使用JJWT库实现JWT的创建与验证,Spring Boot则通过OAuth2资源服务器简化校验流程。JWT适用于无状态场景,但敏感信息需加密处理。
2025-08-28 08:41:27
1351
原创 PostgreSQL快速入门
jsonb的优势来自二进制/结构化存储,适配 GIN 索引(倒排索引思想)。文本搜索通过tsvectortsquery实现,典型地在tsvector上建 GIN。空间索引由 GiST(或 SP-GiST)驱动;ST_DWithin会使用包围盒预过滤从而触发索引;最近邻用<->。面试中把索引如何被使用讲清楚,比只写 SQL 更加重要。
2025-08-26 14:11:38
1255
原创 微服务实践注意事项
微服务实践需注意合理服务拆分(按业务领域、避免过度拆分)和容错设计(超时、熔断、重试等)。分布式事务建议采用最终一致方案(Saga/TCC),并加强监控(指标、日志、链路追踪)和安全性(OAuth2.1/JWT)。网关需统一处理鉴权、限流等公共逻辑,实现服务治理。核心原则是平衡拆分收益与复杂度,确保系统可靠性和可观测性。
2025-08-25 17:39:45
950
原创 Kafka 概念与概述
Apache Kafka 是一个高性能的分布式流处理平台,具有高吞吐量、持久化和可扩展特性。它支持消息队列、日志存储和实时流处理,核心组件包括生产者、消费者、主题、分区和 Broker 集群。Kafka 提供高吞吐、消息持久化、顺序保证和容错能力,适用于微服务异步解耦、事件溯源和日志分析等场景。通过分区和副本机制实现高可用,支持 Java 客户端开发,并能与云原生技术结合,在容器化和弹性扩展方面表现优异,是构建现代分布式系统的理想选择。
2025-08-23 16:13:17
1153
原创 云原生概述
云原生是一种面向云环境的软件开发和运维方法论,旨在充分利用云平台的弹性、可扩展性和自动化能力。其核心理念包括容器化、动态管理、微服务化、可观测性和自动化。云原生与微服务密切相关,微服务是架构基础,而云原生则结合了容器化、平台自动化等综合实践。关键技术涵盖容器化(Docker)、容器编排(Kubernetes)、服务网格(Istio)、云原生存储、DevOps自动化及可观测性工具(如Prometheus、ELK)。Java应用可通过容器化和K8s部署实现云原生实践。优势包括弹性伸缩、自动化运维和高可用性,但面
2025-08-23 16:11:33
977
原创 微服务概述1
本文系统介绍了Java微服务架构的核心概念与技术栈。微服务通过独立部署、低耦合、弹性伸缩等特性显著优于单体应用。Java领域主要采用Spring Boot和Spring Cloud框架,结合Eureka、Ribbon、Gateway等组件实现服务治理。关键设计原则包括单一职责、轻量通信和容错机制,典型架构采用API网关统一入口。文章还提供了服务注册、调用等代码示例,并强调分布式事务、监控、安全等实践要点,为构建可靠微服务系统提供全面指导。
2025-08-23 16:09:52
810
原创 java中多线程与锁
本文总结了Java并发编程中的锁机制,主要包括: 内置锁:synchronized关键字实现,提供可重入、互斥特性,适合简单临界区场景。 JUC锁家族: ReentrantLock:提供可中断、超时获取等高级功能 ReadWriteLock:支持读写分离 StampedLock:采用乐观读模式优化读多写少场景 同步器:如Semaphore、CountDownLatch等基于AQS的并发工具类。 原子类:采用CAS实现无锁编程,适合简单原子操作。 锁优化:包括偏向锁、轻量级锁等JVM层面的优化。 选择建议:优
2025-08-20 09:53:23
1132
原创 无锁化操作中的volatile&AtomicInteger
volatile是Java中的轻量级同步机制,主要保证变量的可见性和禁止指令重排序,但不保证原子性。其原理是通过直接读写主内存而非工作内存,并借助内存屏障实现。常见使用场景包括状态标志、双重检查锁模式等。在实际应用中,volatile常与AtomicInteger结合使用,如订单号生成器案例中,volatile确保日期变更可见,AtomicInteger保证计数器自增的原子性。这种组合既能满足线程安全要求,又避免了synchronized的性能开销,适用于高并发环境下的共享变量管理。需要注意的是,volat
2025-08-18 17:28:10
629
原创 AtomicInteger是如何实现原子性的?
摘要:AtomicInteger是Java提供的线程安全原子操作类,基于CAS实现非阻塞并发控制。它提供incrementAndGet()等原子方法,适用于计数器等场景。典型应用包括订单号生成器,通过日期前缀+原子计数器实现线程安全编号(如"202508180001")。相比synchronized性能更高,但需注意复合操作的线程安全(如跨天重置需加锁)。示例演示了多线程环境下安全生成2000次计数和订单号,核心是保证CAS操作的原子性。
2025-08-18 16:47:11
197
原创 JAVA多线程 阶段 4
摘要: 线程池是企业开发和面试中的核心知识点,主要解决线程频繁创建/销毁的开销和数量不可控问题,通过复用线程提升性能。Java线程池架构基于Executor接口,推荐直接使用ThreadPoolExecutor而非Executors工具类(避免OOM风险)。线程池的7大参数包括核心线程数、最大线程数、任务队列和拒绝策略等,工作流程遵循核心线程→队列→非核心线程→拒绝策略的顺序。此外,ScheduledExecutorService支持定时任务调度。掌握线程池原理和手动配置是高效并发编程的关键。
2025-08-18 14:04:18
410
原创 JAVA多线程阶段 3
摘要: 线程同步是多线程编程的核心难点,主要解决共享资源引发的线程安全问题。Java提供多种同步机制:1)synchronized通过对象锁保证代码块原子性和可见性;2)volatile确保变量修改的可见性但无法保证复合操作原子性;3)Lock接口提供更灵活的锁控制;4)wait()/notify()实现线程间通信,典型如生产者-消费者模型。关键要区分不同场景需求:原子操作优先synchronized,状态标志用volatile,复杂控制选Lock,线程协作需wait/notify。
2025-08-18 14:02:27
410
原创 JAVA多线程阶段 2
本文介绍了Java线程API的四种创建方式:继承Thread类、实现Runnable接口、使用Callable+Future以及Lambda表达式。详细讲解了线程的6种状态(NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED)及其转换关系,并通过代码示例演示了线程状态变化。最后总结了常用线程操作方法,包括start()、sleep()、join()和interrupt()等,为后续线程同步和线程池学习打下基础。
2025-08-18 14:01:05
248
原创 JAVA多线程阶段 1
本文介绍了Java多线程编程的底层基础,包括进程与线程的区别、线程运行机制、JVM线程实现和Java内存模型(JMM)。重点讲解了线程共享进程内存但拥有独立栈空间的特点,以及CPU时间片轮转和上下文切换机制。在JMM部分,详细解释了主内存与工作内存的划分,并分析了多线程环境下的三大核心问题:可见性(可通过volatile解决)、原子性(需使用同步机制)和有序性(防止指令重排)。最后通过一个可见性问题的代码示例,展示了volatile关键字的作用。这些知识是构建Java多线程编程能力的重要基础。
2025-08-18 13:59:36
413
原创 Java 多线程1
本文系统介绍了Java多线程的学习路线,分为五个阶段:底层基础(操作系统、JVM、JMM)、线程API、线程同步、线程池以及高阶实战。每个阶段都详细列出了关键知识点,如线程状态、同步工具、线程池参数等,并提供了循序渐进的学习建议。通过从底层原理到实际应用的完整路径,帮助开发者深入理解并掌握Java多线程编程的核心技术,最终能够应对各种并发场景。
2025-08-18 13:57:45
274
原创 Java复习之HashMap的遍历
本文对比分析了Java中HashMap的五种遍历方式: Iterator遍历EntrySet:直接操作键值对,效率最高且支持安全删除 Iterator遍历KeySet:需二次查询哈希表,性能较低 For-each遍历EntrySet:语法糖实现,简洁但不可修改结构 Lambda表达式:单行简洁写法,适合Java8+ Stream API:支持链式操作,适合大数据处理 性能测试表明EntrySet迭代最优,KeySet因二次查询效率最低。推荐根据场景选择: 高性能需求用EntrySet迭代 简洁写法用Lamb
2025-07-22 23:12:39
974
原创 java01
本文介绍了Java语言的基础知识,包括Java的发展历程、版本变化和主要应用领域。重点讲解了Java的三大分类(Javase、Javame、Javaee)、计算机基础知识(二进制与十进制转换)以及Java开发环境配置(JDK和JRE)。文章还详细说明了Java程序的编写、编译和运行过程,并介绍了常用的IDE工具。最后通过一个猜数字案例,演示了Java的基本语法结构,包括数据类型、运算符、流程控制等核心概念,展示了Random和Scanner类的使用方法。全文为Java初学者提供了基础知识的系统梳理。
2025-07-21 22:34:46
450
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅