摘要: 1. 背景 在这里,我主要分享的是在应用层面大模型相关的技术,假如你已有一个现成的大模型接口,无论是符合OpenAI规范的,还是各家公司一些自己的接口,例如Gemini,Deepseek,通义千问,问心一言等,让用这些大模型来构建一些应用,可以选取下面的方案: 使用低代码大模型应用搭建平台,例如Co 阅读全文
posted @ 2025-09-30 11:45 songtianer 阅读(300) 评论(0) 推荐(0)
摘要: 1. 背景 Spring Security最主要的两个功能:认证和授权 功能 解决的问题 Spring Security中主要类 认证(Authentication) 你是谁 AuthenticationManager 授权(Authorization) 你可以做什么 AuthorizationMa 阅读全文
posted @ 2025-07-16 08:56 songtianer 阅读(406) 评论(0) 推荐(2)
摘要: 1. 问题 NoClassDefFoundError这个异常它表示 JVM 在编译时能找到某个类,但在运行时找不到该类的定义 在我之前的博客Java类全路径冲突解决方法中,有讲到这个异常,通常是Maven包版本冲突了会出现的问题,但它也可能发生于代码存在bug导致 2. 复现 如上图所示,stati 阅读全文
posted @ 2025-05-26 19:47 songtianer 阅读(48) 评论(0) 推荐(0)
摘要: 1. 概览 从Java代码级别到硬件级别各层都是如何实现的 2. Synchronized 2.1 字节码层面 使用javap -verbose <class文件>可以查看到字节码信息,其中synchronized方法会有flags:ACC_SYNCHRONIZED,此时字节码中不会包含monito 阅读全文
posted @ 2025-03-14 17:08 songtianer 阅读(287) 评论(1) 推荐(1)
摘要: 从实验的过程上来看,好像不涉及统计的相关的内容,但统计学对实验的效果非常重要,决定了是否可以信任最终的实验结果,以及是否可以做出正确的决策 AB实验中涉及到统计知识如下图,主要围绕图中来介绍这些概念和AB实验的关系 1. 抽样分布 1.1 抽样 如果我们想知道所有用户的平均APP停留时长,可以把所有 阅读全文
posted @ 2024-12-09 20:36 songtianer 阅读(193) 评论(0) 推荐(0)
摘要: 1. Reactor 对比 1.1 Reactor 线程模型 Reactor 线程模型就是通过 单个线程 使用 Java NIO 包中的 Selector 的 select()方法,进行监听。当获取到事件(如 accept、read 等)后,就会分配(dispatch)事件进行相应的事件处理(han 阅读全文
posted @ 2024-07-04 17:28 songtianer 阅读(766) 评论(0) 推荐(1)
摘要: 1. 问题 今天在开发中遇到这样一个问题,A同事在导入了我们的实验SDK后,发现实验无法正常获取,查看日志发现了NoClassDefFoundError异常,无法加载的的类中逻辑比较简单,只依赖了另外一个SDK包 2. NoClassDefFoundError分析和解决 一般情况下,碰到NoClas 阅读全文
posted @ 2024-04-08 11:27 songtianer 阅读(705) 评论(0) 推荐(0)
摘要: 最近在看《通用源码阅读指导书:Mybatis源码详解》,这本书一一介绍了Mybatis中的各个包的功能,同时也涉及讲了一些阅读源码的技巧,还讲了一些源码中涉及的设计模式,这是本篇文章介绍的内容 在多说一点这本书,Mybatis是大部分Java开发者都熟悉的一个框架,通过这本书去学习如何阅读源码非常合 阅读全文
posted @ 2023-09-28 11:02 songtianer 阅读(566) 评论(0) 推荐(1)
摘要: 今天来介绍了两个陌生又熟悉的异常类,熟悉是因为我们经常会遇到它们,陌生是好像又从来不知道它们是做什么的 假定读者已经清楚了Java的异常分类: 1. 一是程序不能处理的**错误**(Error), 2. 二是程序应该避免而可以不去捕获的**运行时异常**(RuntimeException), 3. 阅读全文
posted @ 2023-09-05 17:22 songtianer 阅读(1282) 评论(0) 推荐(0)
摘要: 最近在工作的过程中,遇到了不少奇怪自己或者同事的Bug,都是一些出乎意料的,不太容易发现的,记录一下来帮助可能也遇到了这些Bug的人 # 1. 编译时泛型校验失效 ```java Map nameToType = new HashMap(); nameToType.put( "testName", 阅读全文
posted @ 2023-07-26 16:14 songtianer 阅读(324) 评论(0) 推荐(0)