logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

从海明威的冰山理论-谈AI氛围编程

一篇小说,读者看到的可能只有水面上的那一小部分,但作者真正花费时间和精力构建的,是水面下面庞大的部分。海明威曾说,作家可以省略他所知道的东西,只要写得足够真实,读者就能感受到那些未写出的部分。所以,氛围编程最大的变化,并不是让程序员消失了,而是让写代码本身越来越不值钱。以后代码越来越容易生成,真正卡住你的,可能是:不知道自己到底应该让AI写什么。而一个真正优秀的程序员,更重要的能力是知道:为什么这

文章图片
#java#后端
Spring Bean作用域的设计与使用

Spring Bean作用域设计与使用要点 Spring提供了6种bean作用域,但实际项目中90%以上使用默认的singleton。理解作用域设计的关键在于回答三个问题:是否需要共享实例?共享范围多大?生命周期跟随谁? Singleton:默认作用域,适用于无状态服务对象,容器缓存单实例,高效复用 Prototype:解决状态隔离问题,每次获取新实例,但需注意注入singleton时的陷阱 We

文章图片
#spring#java#后端
如何理解 Spring 当中的 Bean?

面试里经常被问到一个问题:什么是Spring Bean?工作三五年的开发者,大部分人的回答是「被Spring管理的对象」。这个回答不算错,但信息量约等于零。所有关键的东西都藏在「管理」这两个字里。管理了什么?怎么管理的?为什么需要管理?追问一层就接不住了。问题出在哪里?这个定义是用Spring来解释Bean,没有跳出框架去理解它。你记住了一个说法,但追问一层你会发现自己说不清楚。

文章图片
#spring#android#java
写了十几年代码,聊聊什么样的人能做好Java开发

有个现象,做了若干年之后回头看特别明显:起点差不多的人,三五年后差距就拉开了。有些人三年能独当一面,带着团队做核心系统。有些人干了七八年,还在接需求写接口,稍微复杂一点的任务交不到他手上。差距来自哪?技术天赋有一点影响,但说实话不大。编程不是数学竞赛,不需要你智商超群。学历也不是决定性因素,我见过不少学历一般但成长飞快的人,也见过名校出来但几年下来原地踏步的。观察了这么多年,我发现真正起作用的是三

文章图片
#java
MySQL join了十几张表,有哪些优化思路?

1.原则:OLTP(交易)与 OLAP(分析)是要分离的。复杂的统计台账不该由核心交易库去承担;2.短期(SQL级):分离筛选与抓取。使用延迟关联,先瘦身 Join 拿 ID,再回表取详情;3.中期(字段冗余):将高频的跨表筛选字段(如城市、状态)冗余到主表,消除 Join。4.长期(架构级):引入搜索引擎(ES)。将多表关系转化为文档宽表,彻底解决任意维度检索和深分页问题。你自己心里一定要有个谱

文章图片
#mysql#数据库#java
多线程环境下,HashMap 为什么会出现死循环?

年轻的时候看过陈皓大神的JAVA HASHMAP的死循环,当时对HashMap多线程死循环问题印象深刻。那会儿用的还是JDK 7,确实会死循环。但现在是2026年了,项目中用的JDK 17,还会死循环吗?答案是:不会了 ,不过光知道结论不够,我们还是得看一下open sdk 17的源码,看看到底改了啥。重要提示:虽然不会死循环了,HashMap在并发环境下依然不安全,会有数据丢失、覆盖等问题。该用

文章图片
#java#开发语言#面试
从源码到代码:MyBatis-Flex 与 MyBatis-Plus 的逐项对比

社区里好多程序员在讨论MyBatis-Flex,说它轻量、快、设计优雅。好奇心驱动,下载了源码,搭建了一个demo工程,认认真真学了一遍。过程中发现它和MyBatis-Plus的设计思路差异不小,记录下来做个对比。这篇文章不评价谁好谁差,只是从源码和实际代码两个层面,看看这两个框架到底有什么不同。demo工程用的订单表和订单明细表,Spring Boot 2.7+MyBatis-Flex 1.11

文章图片
#mybatis#java
有了 AI IDE 之后,为什么还还要 CLI?

AI编程工具正从IDE插件向“AI IDE×AI CLI”双轨模式演进。AI IDE(如Cursor)擅长代码编辑时的即时辅助,而AI CLI在全局编排、多Agent协作、CI/CD集成等方面更具优势。各大厂商纷纷推出CLI工具,因其能打通项目级上下文、支持脚本化治理、适配云原生环境。研究显示,CLI在批量任务效率、资源管控上表现更优,但需配合审核机制避免效率陷阱。未来,IDE与CLI将分工协作:

文章图片
Java中wait为什么需要先拿到锁

线程A先拿到锁,检查条件,发现为空,调用wait。由于wait在释放锁之前不会把线程真正挂起,线程B就算想修改条件,也得先等线程A把锁释放出来。就在它准备调用wait的那一瞬间,线程B往队列里塞了一条数据,并且执行了notify。真正理解这个问题的关键,是意识到wait方法内部做的第一件事不是阻塞自己,而是释放锁。用notifyAll而不用notify,是为了避免在多个线程等待不同条件时,把错误的

文章图片
#java#面试
java中的class到底是个什么东西?

读到这里的时候,你就应该能意识到:编译之后,运行时还能保留多少。

文章图片
#java#开发语言#面试
    共 30 条
  • 1
  • 2
  • 3
  • 请选择