- 博客(386)
- 资源 (5)
- 收藏
- 关注
原创 DeepSeek 保姆级本地化部署教程
由于电脑性能不够强大,本地部署的反应速度还不够极致和丝滑。同时,由于内存限制,目前只使用了 7B 参数版本(该版本为“蒸馏版”)。更多关于本地部署的应用,可以再多多挖掘。
2025-02-06 16:38:35
619
原创 Java 中的 function 接口像一件艺术品
函数式接口如同代码宇宙中的奇异吸引子,在确定性与灵活性之间创造动态平衡。它们不是银弹,而是需要开发者以建筑师般的严谨与诗人般的灵感去驾驭。当我们在apply()与accept()之间编织逻辑时,本质上是在进行一场关于计算本质的哲学思考——这或许就是编程最深邃的美学体验。
2025-02-02 18:10:44
911
原创 深入浅出 AB 压测工具:从入门到精通
AB(ApacheBench)是一款轻量级、易用且功能强大的 HTTP 服务器性能测试工具。本文将深入探讨 AB 压测工具,涵盖使用场景、语法、案例、最佳实践以及高级技巧,助您从入门到精通。
2025-01-27 15:59:18
682
原创 Mybatis-plus 更新 Null 的策略踩坑记
如果需要更复杂的逻辑来决定何时将字段设置为null,可以选择编写自定义的 XML 映射文件或者使用@Select@Update等注解来定义 SQL 语句,在其中明确写出。
2025-01-26 21:46:06
377
原创 mapStruct 使用踩坑指南
如果使用热部署插件,执行重新加载的时候,也需要执行 `maven clean` ,让缓存失效。基础类型定义了一个特殊方法。当 customerId(long) 为0的时候,转换成null。经常因为变更字段(通常会这样),导致启动失败。需要清理生成的文件。如果是 maven 管理。需要执行 `maven clean`比如:long 类型在执行映射的时候也采用了这个方法。所有 Long 类型的字段,都采用了这个方法。目前是踩过的一些坑,后续可以继续补充。如果设置 0,编译通不过!
2025-01-26 21:45:35
305
原创 阶段性的一些系统性思考拙见(01)
有可能我们并不需要那么大的量,所以这些实现考虑根本没有必要,但是当真正问题出来的时候,我们是有对应策略的。:比如12306火车票,不可否认,12306的总并发数很大,但是分摊到每一个车次 QPS 就会小很多。简单的事情快速做,复杂的事情简单做。在过往经历中,有很多人为了纯粹的技术,做了很多不合理的事情。案例二:一个简单的同步任务,只需要快速实现功能即可,结果是将功能往平台、往底座去做,杀鸡用牛刀。有一些图是深刻的,是有动态效果的。绝大多数问题,都有相应的解决方案,它是行业的经验,同时也能给新问题起到启示。
2025-01-26 21:38:44
1033
原创 Trae 介绍和最佳实践
说了这么多,现在进入正题。Trae 提供基本的 IDE 功能,包括代码编写、项目管理、扩展管理、版本控制、web预览等。(使用过 cursor 的人,对这几个应该不陌生,感觉比 cursor 在 UI 上更舒服)可以通过 git 获取项目;也可以打开本地项目工程文件等。插件市场、可以按需要安装插件。对于 UI 就不过介绍了,接下来谈一谈关键功能能力。
2025-01-23 14:03:32
4878
原创 碍于面子,偷偷学了 JAX-RS 规范
JAX-RS(Java API for RESTful Web Services)是Java EE中用于开发 RESTful Web 服务的一个API 规范。Jersey,由 Sun 提供的 JAX-RS 的参考实现RESTEasy, JBoss 的实现ApacheCXF,apache 开源的 Web 服务框架Restlet,是最早的 REST 框架,先于 JAX-RS 出现Apache Wink,Apache 软件基金会孵化器中的项目@Override@Override。
2025-01-20 21:04:30
1161
原创 碍于面子,偷偷学了 MapStruct
官网文章针对日期做特定解析和转换// 自定义转换方法&&qualifiedByName: 这个参数允许你引用一个具有@Named注解的方法作为自定义的映射逻辑。本案例:toEntity 方法,将 UserDto 中的 birthDate 字段,类型为 String,通过stringToLocalDate转成 LocalDate,设置到目标 UserEntity 中的 dateOfBirth 字段里面对于 MapStruct 的基本使用,目前基本不成问题,上面内容已经能够覆盖90%的场景了。
2025-01-20 20:56:40
1037
原创 通义灵码之 “AI程序员”
前段时间通义灵码上线了 AI程序员功能,比以前要稍微强大点。可以选择多个文件,有一定的工程能力!一款 cursor 的平替,毕竟不花钱、不限制网络。
2025-01-16 23:38:28
300
原创 新公司在使用的 Hibernate Validator 框架
Hibernate Validator 是 Jakarta Validation API 的具体实现。Jakarta Validation API 的前身 Bean Validation API, 随着Java EE向Jakarta EE的过渡,Bean Validation 2.0也随之更名为 Jakarta Bean Validation 2.0,强大的Java平台验证框架,但 Jakarta Validation API 只是接口规范,Hibernate Validator 才是实现。
2025-01-15 21:49:57
1209
原创 在mac上搭建一个安卓开发环境
本教程是在 mac 上安装一个安卓开发环境,目的是想通过 cursor 的代码能力生成一个安卓应用。本文是一篇傻瓜式的安卓教学。
2025-01-15 21:31:45
556
原创 大模型给我的开发提效入门篇
使用大模型,确实可以给我们的工作、生活带来便利,上面这些点都是冰山一角,还需继续多挖掘。在使用大模型提效的过程中;也考察对问题的分解能力和问题的描述能力。打不过就加入,尽早拥抱。接下来会继续深挖大模型带来的便利。已经同步发布微信公众号:面汤放盐大模型给我的开发提效入门篇。
2025-01-15 21:23:07
1004
原创 要不打造一个属于自己 emoji 网页哄哄自己
使用 emoji 可以让我们的文章更加丰富,有时候想找到一款复合场景的 emoji 还是要费一些功能。于是想导致一个属于自己的 emoji 库,来哄哄每天搬砖的自己。通过这样的方式,不仅可以创造出满足个人需求的独特工具,也为未来探索更多创新应用奠定了坚实的基础。希望这份经验分享能够激发大家对于Web开发的兴趣,并鼓励大家动手实践自己的想法。要想让我的网页可以随处访问,就需要做简单部署,因为都是静态页面,选择使用 github 的Pages 功能。通过不断地优化,最终让其符合自己的要求。
2025-01-14 22:43:54
234
原创 我用 cursor 打造了一个相机APP
我是一个安卓开发纯小白,但是我用 cursor 打造一款相机APP;代码只是一种工具,创意和想法才是未来的主旋律。
2025-01-14 22:32:06
689
原创 纯小白的大模型 Prompt 编写技巧
根据上一篇 《纯小白的大模型入门指南》文中介绍,编写一份好的 Prompt 至关重要,它会让大模型更好的理解你的意图。对大模型效果的调优,其中一项就是对 Prompt 进行合理优化。本篇结合实际案例,来谈一谈 Prompt 的优化技巧。提示词(Prompt)是输入给大模型(LLM)的文本信息,用于明确地告诉模型要解决的问题或完成的任务,也是大语言模型理解需求并生成相关、准确回答或内容的基础,是至关重要的。
2025-01-13 23:03:48
1342
原创 和 google 搜索引擎“交个朋友”
在前前公司,有一个哥们,解决问题的速度贼快,他总能快速的在浏览器中搜索到他想要的答案。虽然我们遇到的相同的问题,但是搜索出来的答案,却总是千差万别,甚至尝试各种描述都得不到他搜索的结果,当时真是百思不得其解。对于搜索不到他那样的答案,到底是哪个环节出现了问题?直到若干年后,我才有了一些答案。本篇文章核心,是如何更好的利用搜索技巧,快速的检索答案。没有前戏,直接上干货。
2025-01-13 22:38:02
1330
原创 纯小白的大模型入门指南
本从一句话出发,然后引到大模型,算是一个简单的入门。并以月之暗面为例子进行说明。市面上有很多的大模型,都提供了open API,使用方式都相似。本文已经发布微信公众号:面汤放盐。
2024-12-05 00:18:46
360
原创 CompletableFuture#complete 还能这么玩
如果异步任务中发生异常,通过来标记为异常完成状态,这样调用get()方法时会抛出,其原因为原始异常。对于异步编程,想获取返回结果的情况,可以考虑采用 CompletableFuture#complete 方法的方式,还算灵活。
2024-12-03 22:23:41
682
原创 两个程序猿妹子的逆袭人生
后来,她继续努力,来到了大厂外包,那段时间也是非常焦虑,因为技术能力不够,常常被别人 diss,非常难受,也非常内耗,后来她渐渐逼自己适应了。干了小一年,工作内容让她觉得没有什么前途,于是她毅然决然地辞去了工作,她没有敢和家人说,休息了一段时间后,一个人去了上海,那个时候口袋里面没有钱,她就自己贷款去报了一个 Java 培训班。她说那半年非常努力,同时也非常焦虑,身体变得非常不好,经过努力,终于拿到了一份外包的工作,工资很低,但是她已经很满意了, 工作一年多后,才慢慢把以前的贷款还清。
2024-11-23 22:25:54
262
原创 7 年 Java 后端,面试过程踩过的坑,我就不藏着了
有些工作,肯定会 996, 也有大小周,当然,活少钱多的也轮不到咱;注意手机号是否设置了拦截,有一些大厂是通过网络号拨进来的,不要被识别拦截,如果是心仪公司,就得不偿失了。有可能同一家公司,会有不同的部门在招聘,如果很想去这家公司,不在乎岗位,可以选择难度低一些的进行选择。面试是一个马拉松,别一下子冲太急,不然后劲会不足,到最后就会很累,甚至最后妥协选择一家不太想去的。如果每天接受的面试场次很多,对自己也是一场考验,每天参加两场就已经很好了。当你投递出去的简历,没有筛选通过,就要考虑是不是简历出了问题。
2024-11-23 20:47:51
452
原创 7 年 Java 后端近期面试记录感想
对于多年的老兵,面试过程中比较少出现直接考八股文的场景,更多的围绕你的项目详细展开,请多多挖掘项目的难点和亮点。多考察你的设计、实现、项目管理。并围绕高并发、高可用进行展开,重点于你的设计、思考、以及场景解决能力。通过哪些手段和方式来保障你系统的高并发、高可用。可能会围绕系统的 QPS/TPS 是多少、瓶颈在什么地方、如何去优化应对。当然会存在一些场景设计题目,比如秒杀、设计一个mq 等。
2024-11-20 16:10:28
267
原创 JDK高性能套路: 自旋(for(;;)) + CAS
自旋(for(;;)) + CAS 实现无锁并发控制。理解这个套路,对于掌握很多并发包中的源码非常有帮助。当然这个套路也能运用到日常工作中,实现无锁并发控制。但需要注意:CAS 存在 ABA 问题自旋会持有 CPU,避免大量线程、长时间自旋一定要控制退出条件已经同步发布微信公众号:面汤放盐JDK高性能套路: 自旋(for(;;)) + CASJDK高性能套路: 自旋(for(;;)) + CAS最近在阅读 JDK8 并发包中的一些源码,发现很多有趣规律,其中一 - 掘金。
2024-10-30 20:01:50
958
原创 RPC研究: 同步调用和异步调用获取结果技术实现分析
SYNC: 比较不错,巧妙地使用了 wait、notifyAll、done变量、requestId等, 算得上好的封装!FUTURE:封装稍微粗糙,使用上不友好!CALLBACK:封装回调中规中矩,但和 FUTURE 一样,获取结果的用法,不友好ONEWAY: 仅发送请求,简单。个人推荐用 SYNC 比较好,FUTURE、CALLBACK 不是很推荐上层封装对于使用者和阅读者不友好!那么看一看其他的 RPC 框架,会不会好一些通过对几款 RPC 的分析。同步等待获取结果异步获取结果。
2024-10-26 13:11:08
683
原创 网上的 AQS 文章让我很失望
设置 state > 0 成功的线程,AQS 的值将被设置成该线程。即这个线程获得锁ReentrantLock 可以重入,通过 state 来控制重入次数ReentrantLock 的非公平锁的原理:当新的线程进入,调用 tryAcquire()多次尝试对 state 修改,即尝试获得独占,这个时候不管是否存在阻塞线程;如果多次尝试没有获取独占机会,会将这个线程加入双向队列注意:双向队列的头节点是一个不带线程信息节点在线程进入阻塞状态之前,依然会判断是否能够获取到锁。
2024-10-23 21:01:08
710
原创 被“三个线程循环打印”吊打后的深入研究报告
问题一:Thread 调用 run() 方法而不是 start() 方法会怎么样?答:可以调用,调用 run() 方法是同步调用,属于同一个线程,而 start() 是另外一个线程去执行方法,是两个线程。Thread 调用两次 start() 方法会怎么样?答:会报错,每一个阶段都有一个自己的线程状态,调用 start() 方法会将线程状态从 new 编程 runnable。每次调用 start() 都会进行状态检测,所以报错。= 0)
2024-10-18 00:46:53
760
原创 一份 Java 常用命名梳理--纯个人篇
表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。- 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。- 将请求封装成对象,从而使你可以用不同的请求、队列或者日志来参数化其他对象。- 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。- 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合。- 为子系统中的一组接口提供一个一致的界面,简化了客户端对子系统的访问。
2024-10-08 18:42:25
1435
原创 Java 命名篇之“成对”命名
将“成对”思想移植到命名中,一定会对好的命名有所启示。已经同步发布微信公众号:面汤放盐Java 命名篇之“成对”命名。
2024-10-08 12:49:04
525
原创 闲谈一下 Semaphore
Semaphore(信号量)是一种计数器,用于限制同时访问特定资源或执行某段代码的线程数量。它内部维护了一个许可的数量,每当一个线程进入需要被保护的代码块时,就尝试获取一个许可或者多个;当离开这个代码块时,则释放该许可。如果所有许可都被占用,那么新请求许可的线程将等待。Semaphore信号量与 CountDownLatch 不同的是,它内部的计数器是递增的,并且在一开始初始化允许的最大值。Semaphore 跟 CountDownLatch 一样,都复用 AQS 的能力。另外都使用for(;;
2024-10-07 11:13:12
805
原创 闲谈一下 CountDownLatch
如何介绍 CountDownLatch,可以从功能理解、应用场景、使用经验和注意事项功能介绍: Java 中的一个同步辅助类,它允许一个或多个线程等待一组操作完成;线程之间的协作!场景经验:前后依赖任务,前面属于多任务,可并行执行。比如部门人员同步、数据聚合等待、异步数据获取返回。注意需要保证 countDown() 方法的调用,特别注意在异常情况部分源码:使用上的两个核心方法:countDown() 和 await()/await(...);内部继承(AQS) 作为其同步器。
2024-10-06 13:08:52
669
原创 Java 开发者用 python 来践行面向对象编程
子类使用不同的大模型,比如通义千问、chatgpt等。提供 invoke(prompt) 方法,实现模型调用。(为了大模型职责单一,暂且提供 一个方法, prompt是 template_prompt 和 参数拼接后的值)。5.测评基类:BaseEvaluation(
2024-06-22 02:30:38
1053
原创 第十二节 SpringBoot Starter 系列结束语
对于刚参加工作的同学,训练写一个 Starter,也将是提升技术能力的有效方式。3.16 晚上,终于将 mybatis-spring-boot-starter 的案例写出来,并正确运行了,但是已经凌晨了。3.31 整个系列快完工了,大概十来章,但是还比较粗糙,还需要一个较长的时间来润色优化。3.14 当我想写一个 Starter 案例的时候,发现无从下笔,感觉是一个阻碍,写作并不是那么容易。4.5 一整体,整理自动装配的源码流程,是一个繁琐的过程,也是比较难得部分,到凌晨12点,休息了。
2024-05-24 21:37:26
933
原创 第十一节 SpringBoot Starter 面试题
虽然学了这么多,流程也十分清楚,但是能够将自己知道的表达出来,还需自己总结,然后内化成自己的,不然还是会在面试的时候出现卡壳。这样就得不偿失了。希望通过本教程,能够深入理解 SpringBoot Starter 的原理,能够总结回答好这个问题。最终拿下 offer。已同步发布到公众号:面汤放盐第十一节 SpringBoot Starter 面试题 - 掘金 (juejin.cn)
2024-05-24 21:33:28
855
原创 第十节 SpringBoot Starter 实战之 redis 滑动窗口
选择一个合理的业务场景。比如我选择了 滑动窗口这个场景。创建新的Maven项目,并引入依赖,通常命名需要遵循Spring Boot的命名规范,通常是-spring-boot-starter代码实现,以及其他类的引入编写自动配置类。编写文件,在src/main/resources/META-INF/spring.factories中注册自定义的自动配置类打包并发布到仓库,并在其他项目测试。
2024-05-24 21:29:34
1293
原创 第九节 设计 Starter 不能忽视的细节
我们要定义一个生产可用的 Starter ,还有几个细节,我们必须要关注。这些细节可以很好的帮助我们写出更优秀的 Starter。
2024-05-24 21:25:57
1330
原创 第八节 条件装配案例讲解
相对地,@ConditionalOnMissingClass(value = "redis.clients.jedis.Jedis") 注解在 InMemoryCacheConfig 类上,表明如果类路径不包含 Redis 的 Jedis 客户端类,则创建和注册 InMemoryCacheService 为 CacheService 的实现。在这个条件装配的例子中,Spring Boot 应用会自动检查 Redis 客户端库是否存在,并基于检查结果来决定使用哪个缓存实现。
2024-05-24 20:43:10
997
深入理解Java虚拟机JVM高级特性与最佳实践(第2版)含源码 + Java虚拟机规范(Java SE 7)
2018-06-04
《疯狂Java讲义》第三版注解处理器代码(下载需要配合博客,不建议直接下载)
2018-05-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人