https://media.tidechoir.cn/image/avatar.jpg

消失在彩霞里的Blog

后端杂谈(二)

Java开发 上期我们主要讲述了后端springboot开发规范和一些基本配置,现在阐述一些常用技巧。 如发邮件、微信配置等,这些都十分简单但易忘,故集中整理。 微信接口集成 调用微信官方api即可。 核心要素为api_key和api_secret,配置在yaml中。 accessToken的获取 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 public static String getAccessToken() throws Exception{ HttpClient httpClient = new HttpClient(); String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appid + "&secret=" + secret; GetMethod getMethod = new GetMethod(url); getMethod.addRequestHeader("accept", "*/*"); //设置Content-Type,此处根据实际情况确定 getMethod.addRequestHeader("Content-Type", "application/x-www-form-urlencoded"); String result = ""; try { int statusCode = httpClient.

后端杂谈(一)

Java开发 开发规范 使用dto封装类实现数据传输,少用Map。 使用@RequestBody和@RequestParam接收请求参数。 接口类型一般为GET、POST、DELETE。 统一使用{“code”: “”, “msg”: “”, data: “"} 的规范返回数据。其中200代表正常,500代表错误。 统一使用全局异常处理,少用try catch,保证代码简洁性。 数据具有关联性时,使用逻辑删除代替物理删除。 统一使用jwt token,从中读取用户信息。防止平行越权漏洞。 加入必要的注释,便于多人合作。 开发者更新后上传jar包至服务器,同时将最新代码commit到github上。 变量名统一小驼峰,类名大驼峰 全局异常处理 GlobalExceptionHandler SSL的配置 笔者在之前的博客中阐述了nginx部署ssl证书的方式。与此同时,后端也务必加上ssl证书。因为微信小程序等平台校验域名合法性。 与之前稍有不同的是,springboot部署ssl证书要求的是jks格式证书。可采用线上工具将证书合成为jks。 配置过程非常简单,简述如下。 application.yaml 1 2 3 4 5 6 7 server:port:8083# 示例ssl:enabled:truekey-store:classpath:ssl/api.xxx.cn.jkskey-store-password:passwordkey-store-type:JKS HttpsConfig.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 @Configuration public class HttpsConfig { @Value("${custom.

前端杂谈

前端杂谈(一) 前端项目集锦 原生 叮当葫芦-认知障碍数据分析平台 “认知障碍数据分析平台” Jquery Vue vue-element-admin “水果电商后台服务端” uniapp React “智问领航” ant-design-pro 函数封装思维 API接口封装 封装request.js用于ajax请求 利用Promise的特性,封装axios、ajax、uni.request、taro.request等等 示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 export const request = ({ url, method, data, headers }) => { return new Promise((resolve, reject) => { const xhr = new XMLHttpRequest(); // 如果是 GET 请求,将 data 转为查询参数 if (method.

前端杂谈

前端杂谈(一) 前端项目集锦 {0}### 原生 叮当葫芦-认知障碍数据分析平台 “认知障碍数据分析平台” Jquery Vue vue-element-admin “水果电商后台服务端” uniapp React “智问领航” ant-design-pro 函数封装思维 API接口封装 封装request.js用于ajax请求 利用Promise的特性,封装axios、ajax、uni.request、taro.request等等 示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 export const request = ({ url, method, data, headers }) => { return new Promise((resolve, reject) => { const xhr = new XMLHttpRequest(); ​ // 如果是 GET 请求,将 data 转为查询参数 if (method.

面试经验

简历面试 绩点 本科最擅长什么科目,最不擅长什么科目? xxx课为什么分数不高? 项目经历 服务外包大赛中,你作为队长在合作过程中有没有困难,如何解决? 国家级大创项目做了什么?现在处于什么阶段?你将负责什么? 项目有没有正式上线? 科研经历 这篇论文主要的创新点是什么?为什么会想到这个idea?你参与的工作是什么? 为什么会写这篇论文?论文的形成过程有没有老师的指导? 你什么时候开始参与科研?为什么只发表了CCF C论文?这篇完成用了多久? 为什么用GAT传播,GAT和GCN有什么区别? 冷启动问题 你为什么选择了这个方向?有何研究价值? 专业技能考察 pytorch中如何实现维度改变?如何互换维度? 如何实现学习率调度器 batch_size的作用是什么?请讲出两类分批方法 滑动窗口法、分段法 num_workers的作用是什么? 用于指定在加载数据时要使用的子进程(worker)数量。它的主要作用是通过多线程或多进程来并行化数据加载,从而提升训练效率,尤其是在处理大型数据集时。 如何在 PyTorch 中实现模型的梯度累积?这种方法适用于什么场景? 时间序列预测中能否使用交叉验证划分训练集和测试集? 不能。时间序列具有时序依赖,如果交替划分,没有意义。一般把前面的作为训练集,后面的为测试集 是否了解RAG框架?讲一下RAG和微调的区别,和各自的优势。 专业课知识 算法题 其他 本科期间你是如何平衡学业、学生工作和竞赛科研? 作为一名双非学生,你认为自己有什么特点? 你认为自己有什么缺点? 你为什么会选择直博?未来有何职业规划?

RAG论文精读

1.《CODERAG-BENCH: Can Retrieval Augment Code Generation?》 前置条件: 语言模型已经被证明具有优秀的生成代码能力,RAG在文本任务中取得成功。若将两者合在一起能有好的效果吗? 论文的工作: 探索在何种场景下检索能够有益于代码生成模型?存在什么挑战? 首先策划了一个综合评估基准,CODERAG-BENCH。 三类代码生成任务:包括基础编程、开放领域、库级别的问题。 将五个方面的文档聚合起来检索上下文。 发现: 当前的检索器存在困难去抓取上下文。希望CODERAG-BENCH可以作为一个有效的测试台,以鼓励进一步开发高级面向代码的RAG方法。 思考: 和夏令营任务相结合,此时我们的任务是生成循环代码。依靠的上下文是毕设论文中研究出来的数据集。 研究过程 共收集了九千代码问题和25000000检索文档, CODERAG-BENCH的特点:任务多样性、严谨可复现的评估、统一接口。 RAG减少了在模型参数[2]中包含所有知识的需要,从而在各种场景[13]中提高精度,即使没有额外的训练[31,25]。 论文贡献: 提出了全新的评估基准(CODERAG-BENCH),来弥补鸿沟并增强在替代范式检索增强代码生成的研究。 NDCG、Precision和Recall 尽管代码生成模型可以从多个场景中的地面真实文档中获益,但当前的检索模型在选择准确的文档方面存在困难,特别是对于开放域任务。与此同时,许多代码生成模型由于使用检索到的文档的上下文能力有限,或者有效地执行RACG的能力有限,因此获益甚微。 (i)不同的任务:代码生成涉及在不同级别(行、功能、存储库)和不同域(关闭、打开)上操作的通用任务。 (ii)严格和可重复性的评估:我们提供高质量的地面真实文档注释,以实现检索评估,并对所有代码生成任务进行基于执行的评估,以严格衡量功能的正确性。(iii)统一接口:虽然当前的数据集使用异构管道,但我们的代码库为检索、增强生成和评估提供了一个统一的接口。 2.《Automatic Semantic Augmentation of Language Model Prompts (for Code Summarization)》 大语言模型提示词自动语义增强(用于代码摘要) 论文贡献 使用来自代码的事实进行软件工程任务的ASAP方法。 我们对代码-002、文本-003上的代码总结任务进行了评估。和GPT-3.5-turbo模型对抗使用香草BM25构建的几个镜头提示基线(第4.1节)。 我们发现,ASAP方法在统计学上显著提高了在代码摘要任务上的LLM性能。在几乎所有的情况下,我们观察到几乎或超过2个BLEU的统计学显著改善;对于PHP,我们(据我们所知)在这个具有挑战性的数据集上首次打破了30个BLEU。 我们发现,ASAP也可以提高代码完成任务的性能。 3.《From Local to Global: A Graph RAG Approach to Query-Focused Summarization》 图RAG方法,用于聚焦于询问的摘要 Query-Focused Summarization: QFS QFS 会根据用户提供的查询,提取与之相关的核心信息,省略与查询无关的内容。 论文核心图 实现过程 提出了Graph RAG方法,基于LLM汲取知识图谱的全局摘要。 为了评估这个方法,我们使用一个LLM去生成多样的集合,包含以活动为中心的意义构建问题,从短小的描述 中间的、低等级的社区摘要表明优秀的性能,超过源文本摘要在相同的metrics,并消耗较少token。 构建步骤: 源文档->文本语料库 文本语料库->元素实例 元素实例->元素摘要 元素摘要->图社区