首页 文章 精选 留言 我的

精选列表

搜索[混元翻译],共10000篇文章
优秀的个人博客,低调大师

【硬核实战】基于腾讯云混元Embedding+向量数据库构建企业级RAG知识助手(附完整Python源码与踩坑记录)

在上一季度的内部知识库重构中,我们面临一个典型困境:公司沉淀了3000+篇内部技术文档和故障复盘报告,但开发者在遇到线上问题时,依然习惯在钉钉群里@老员工,而非翻阅知识库。原因无他——关键词检索(ES)无法理解语义。搜“接口超时”,永远搜不到写“响应延迟”的文档。

优秀的个人博客,低调大师

【翻译】split lock检测与处理

本文在解读 https://lwn.net/Articles/790464/ 的基础上,加入自己理解,与原文存在差异。 从地址不对齐访问到split lock Intel CPU微架构允许不对齐的内存访问,但ARM、RISC-V等架构却不允许。在众多的不对齐中,一个特殊的场景是:原子操作的操作数(由于地址不对齐)跨越两个cache lines,Intel将之叫做split lock。它有两个特征: 原子操作,即汇编指令包含Lock前缀; 操作数地址不对齐,还跨越两个cache lines; 其实大部分吃瓜群众都不知道这个特性,但是它却对应用性能影响极大。最近,Intel工程师Fenghua Yu同学正在开发一组内核补丁,用于检测和处理split lock,现在已经发出了第8版code review。阿里巴巴在多年前就意识到split loc

优秀的个人博客,低调大师

[翻译]高阶Python一学就会

高阶Python一学就会 在前一篇文章中,我们学习了几个一般来说比较有用的Python语言的特性。 考虑到这篇文章是前一篇文章的续集,在这里我们进一步延伸一些显式使用装饰器的概念,我们并没有扰乱前一篇文章的内容。 装饰器 装饰器的概念展现了python领域内最漂亮和最强大的设计可能性之一,这不仅仅是在Python编程中,也在整个软件设计领域。本质上来说,装饰器就是一种包装,主要是想在不改变被包装的原代码的原则下,实现延伸代码功能性的目的。为了能让这个概念更清晰易懂,我们来从最基础的内容开始。 函数亦称为第一类对象 函数简单来说就是基于给定的自变量返回一个值。在python中,这些函数还有另外一种荣誉称号,叫作第一类对象。考虑到函数可以被像普通的对象一样被作为自变量传递,函数荣膺这项称号还真的是恰如其分。比如说,它们可以被作为自变量传递给其它函数,同时也可以被用做一个函数返回值。 作为自变量的函数 def greet(name): print ('Hello ' + name) def send_greetings(fun, name): fun(name) send_greetings(greet, 'John') 闭包函数 闭包函数是定义在其它函数内部的函数。这使得:闭包函数只有在其父函数被调用时才会被定义,或者说闭包函数的作用域仅存在于父函数内部,亦或者说闭包函数只是作为父函数的一个局域变量存在的。 def send_greetings(name): def greet_message(): return ‘Hello ‘ result = greet_message() + name print (result) send_greetings(‘John’) 从函数中返回函数 Python还允许你将一个函数作为返回值传给另一个函数。本质上来讲,我们只是将内部函数的引用传回以待后续的调用。 def classify(element): def even_number(): print ('Element is even.') def odd_number(): print ('Element is odd.') if element%2 == 0: return even_number else: return odd_number classify(2)() 装饰器 现在,有了上面所有这些基本概念的经验之后,我们来这些概念串起来组成一个完整的图像。 def my_decorator(fun): def wrapper(): print (‘Before calling the function…’) fun() print (‘After calling the function…’) return wrapper def say_hello(): print (‘Hello!’) say_hello = my_decorator(say_hello) 就是这样!!! 这就是我们能得到的最简单的装饰器。我们把到前面学到的东西一个个的都用进来了。所以装饰器其实就是 一个把另一个函数作为自变量的函数,它生成了一个新的函数,同时对原先的函数扩展了功能性,它最终返回的是生成的新的函数,这样我们可以在其他地方使用它。 另外,python让编程者可以非常整洁漂亮地创建并使用装饰器。 def my_decorator(fun): def wrapper(): print (‘Before calling the function…’) fun() print (‘After calling the function…’) return wrapper @my_decorator def say_hello(): print (‘Hello!’) 上下文环境管理 简单来说吧,上下文管理是一种资源的获取和释放机制,它避免了资源泄露并确保即使在遇到一些糟糕的异常情况后仍能完成恰当的清理工作。比如说,保证文件在打开之后的关闭,锁在获得之后的释放。这个概念在大量其他编程语言中有清楚地表述和恰当地使用,比如说C++ 中的RAII。 技术上来说,它是一个对象需要去遵循的通讯协议。这个协议要求,对象要像一个上下文管理器一样,要执行 __enter__ 和 __exit__ 方法。 __enter__ 返回要被管理的资源,而 __exit__ 完成任何可能出现的清理工作并且什么也不返回。 class File: def __init__(self, name): self.name = name def __enter__(self): self.file = open(self.name, 'w') return self.file def __exit__(self, type, value, trace_back): if self.file: self.close() 现在,上面这个类可以在with语句中被安全地使用。更一般地,使用with,我们可以调用任何东西并返回一个上下文管理器。 with File('example.txt') as f: f.write('Hey hello') f.write('See you later. Bye!!!') __enter__在with语句被调用的时候被执行。当代码块的语句执行完了的时候 __exit__ 方法会被调用。 上下文管理器还可以被用在更复杂的问题中。我们看另一个上下文管理器几乎不可避免的例子。这个问题中的资源就是锁,我们可以避免的问题就是死锁。 from threading import Lock lock = Lock() def do_something(): lock.acquire() raise Exception('Oops I am sorry. I have to raise it!') lock.release() try: do_something() except: print ('Got an exception.') 注意,在释放锁之前会报异常。这会导致一个明显的副作用,那就是所有调用do_something的其它线程会永远地出现拥堵从而导致系统死锁。使用上下文管理器,我们可以避免这种尴尬的情况。 from threading import Lock lock = Lock() def do_something(): with lock: raise Exception('Oops I am sorry. I have to raise it!') try: do_something() except: print ('Got an exception.') 哇塞!看到没,即使遇到一些异常情况,代码也能恰当地完成清理工作。很明显,在任何可能的情况下都不会出现使用了上下文管理器来获得锁,而还没有释放锁就结束的情形。它就应该是这样。 连锁的异常 设想一种情况,因为除以零而使得方法抛出ZeroDivisionError的异常。显然,在python中我们有很好的一组工具能够来处理异常。然而,如果异常的原因是因为这个函数所调用的一些其它函数中出现了TypeError呢。仅仅报告最顶层的异常是不够,这样我们会丢失原始的异常信息和一连串异常的主要原因。 为了演示这个问题中的概念,我们举个简单的例子。 def chained_exceptions(): try: raise ValueError(17) except Exception as ex: raise ValueError(23) from ex if __name__ == "__main__": chained_exceptions() 在python 2.0中,上述情况会导致后面的异常被抛出而前面的会丢失,像下面这样。 Traceback (most recent call last): File “test.py”, line 3, in chained_exceptions raise ValueError(23) ValueError: 23 很明显,我们丢失了信息中有价值的那部分,因为我们丢失了异常导致的真正的起因。然而,在python3.0中运行同样的脚本,我们可以看到完整的异常栈跟踪的信息。 Traceback (most recent call last): File “test.py”, line 3, in chained_exceptions raise ValueError(17) ValueError: 17 The above exception was the direct cause of the following exception: Traceback (most recent call last): File “test.py”, line 8, in <module> chained_exceptions() File “test.py”, line 5, in chained_exceptions raise ValueError(23) from ex ValueError: 23 如果对您对本文的内容有任何的修改或者改进的意见,请在评论中让我看到。(原文链接:https://medium.com/quick-code/advanced-python-made-easy-2-d5a7ffb4e658)

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册