一些可以参考的文档集合15

 之前的文章集合:

一些可以参考文章集合1_xuejianxinokok的博客-CSDN博客

一些可以参考文章集合2_xuejianxinokok的博客-CSDN博客

一些可以参考的文档集合3_xuejianxinokok的博客-CSDN博客

一些可以参考的文档集合4_xuejianxinokok的博客-CSDN博客

一些可以参考的文档集合5_xuejianxinokok的博客-CSDN博客

一些可以参考的文档集合6_xuejianxinokok的博客-CSDN博客


一些可以参考的文档集合7_xuejianxinokok的博客-CSDN博客
 

一些可以参考的文档集合8_xuejianxinokok的博客-CSDN博客

 一些可以参考的文档集合9_xuejianxinokok的博客-CSDN博客

一些可以参考的文档集合10_xuejianxinokok的博客-CSDN博客

一些可以参考的文档集合11_xuejianxinokok的博客-CSDN博客

一些可以参考的文档集合12_xuejianxinokok的博客-CSDN博客

一些可以参考的文档集合13_xuejianxinokok的博客-CSDN博客

一些可以参考的文档集合14_xuejianxinokok的博客-CSDN博客


20240220

Manim(一款强大的数学可视化动画引擎)学习历程-CSDN博客文章浏览阅读2.9k次,点赞8次,收藏46次。第一眼看见上面这种类型的视频我就深深被它的简约清楚所折服,我觉得它完全符合我的审美,我也相信只要了解过制作这种视频的软件的人都会喜欢上它。运用这种风格比较有名的是b站里的一位up主名叫3Blue1Brown,下图是他的主页,有兴趣的朋友可以自行去了解。这个软件的名字叫Manim。不过因为这款软件是基于python的,所以想要使用这款软件的人需要一定的编程能力,所以没有学过编程的朋友想要学习就需要更加努力。进入它的官网,查阅技术文档(),点击示例,可以看到很多的例子。_manimhttps://blog.csdn.net/qq_63806300/article/details/132051618


20240203

Linux虚拟文件系统(Virtual File System,VFS)是Linux操作系统中的一个重要组成部分,它提供了一个统一的接口,使得用户和应用程序可以通过相同的方式访问不同类型的文件系统。

VFS的设计目标是将不同类型的文件系统抽象为一个统一的接口,使得用户和应用程序无需关心底层文件系统的具体实现细节。通过VFS用户可以使用相同的系统调用(如open、read、write等)来访问不同类型的文件系统,包括本地文件系统(如ext4、XFS等)、网络文件系统(如NFS、CIFS等)以及虚拟文件系统(如procfs、sysfs等)。

图解Linux虚拟文件系统(VFS)之关系篇-51CTO.COMVFS的设计目标是将不同类型的文件系统抽象为一个统一的接口,使得用户和应用程序无需关心底层文件系统的具体实现细节。通过VFS用户可以使用相同的系统调用(如open、read、write等)来访问不同类型的文件系统,包括本地文件系统(如ext4、XFS等)、网络文件系统(如NFS、CIFS等)以及虚拟文件系统(如procfs、sysfs等)。icon-default.png?t=N7T8https://www.51cto.com/article/780964.html


20240130

用rust 写的sql解析器

当我谈查询优化器时,我谈些什么 (1)—— IR 设计 - 知乎这几天和迟先生 (github@skyzh) 聊天时偶然聊到他最近在 CMU 做的 optd 项目(一个基于 Cascades 框架设计的查询优化器库),一起吐槽了各种数据库优化器的设计与实现。这时我突然意识到有些技术上的东西聊起来还…icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/680046526


20240125

数据库高可用,很常见的一种方式,使用双主同步+keepalived+虚ip的方式进行

如上图所示,两个相互同步的主库使用相同的虚ip。

当主库挂掉的时候,虚ip自动漂移到另一个主库,整个过程对调用方透明,通过这种方式保证数据库的高可用。

1亿数据量MySQL,如何实现秒级扩容?_ITPUB博客一般来说,并发量大,吞吐量大的互联网分层架构是怎么样的?数据库上层都有一个微服务,服务层记录“业务库”与“数据库实例配置”的映射关系,通过数据库连接池向数据库路由sql语句。ITPUB博客每天千篇余篇博文新资讯,40多万活跃博主,为IT技术人提供全面的IT资讯和交流互动的IT博客平台-中国专业的IT技术ITPUB博客。icon-default.png?t=N7T8https://blog.itpub.net/70027826/viewspace-3004882/


20240123

操作系统为应为应用层提供了 mmap、brk 等系统调用来申请内存。但是这些系统调用在很多的时候,我们并不会直接使用。原因有以下两个

  • 系统调用管理的内存粒度太大。系统调用申请内存都是整页 4KB 起,但是我们平时编程的时候经常需要申请几十字节的小对象。如果使用 mmap 未免碎片率也太大了。

  • 频繁的系统调用的开销比较大。和函数调用比起来,系统的调用的开销非常的大。如果每次申请内存都发起系统调用,那么我们的应用程序将慢如牛。

所以,现代编程语言的做法都是自己在应用层实现了一个内存分配器。其思想都和内核自己用的 SLAB 内存分配器类似。都是内存分配器预先向操作系统申请一些内存,然后自己构造一个内存池。当我们申请内存的时候,直接由分配器从预先申请好的内存池里申请。当我们释放内存的时候,分配器会将这些内存管理起来,并通过一些策略来判断是否将其回收给操作系统。

通过这种方式既灵活地管理了各种不同大小的小对象,也避免了用户频率地调用 mmap 系统调用所造成的开销。常见的内存分配器有 glibc 中的 ptmalloc、Google 的 tcmalloc、Facebook 的 jemalloc 等等。我们在学校里学习 C 语言时候使用的 malloc 函数的底层就是 glibc 的 ptmalloc 内存分配器实现的。

聊聊C语言中的malloc申请内存的内部原理icon-default.png?t=N7T8https://mp.weixin.qq.com/s/7ZyCXUABL0Urso4VeaEdBQ


20240122

  1. 当线程池小于corePoolSize,新提交任务将创建一个新线程执行任务,即使此时线程池中存在空闲线程。

  2. 当线程池达到corePoolSize时,新提交任务将被放入 workQueue 中,等待线程池中任务调度执行。

  3. 当workQueue已满,且 maximumPoolSize 大于 corePoolSize 时,新提交任务会创建新线程执行任务。

  4. 当提交任务数超过 maximumPoolSize 时,新提交任务由 RejectedExecutionHandler 处理。

  5. 当线程池中超过corePoolSize 线程,空闲时间达到 keepAliveTime 时,关闭空闲线程 。

这些年背过的面试题——多线程篇本文是技术人面试系列多线程篇,面试中关于多线程都需要了解哪些基础?一文带你详细了解,欢迎收藏!icon-default.png?t=N7T8https://mp.weixin.qq.com/s/IVgGXQKU1QiT1ToN2wXHJg


20240117

方差的增量计算基于以下公式:

新方差 = (旧方差 × 旧数据个数 + 新数据与旧均值的差的平方) / 新数据个数

这个公式允许我们在已知旧数据集方差和均值的情况下,通过简单的计算就能得出新数据集的方差。需要注意的是,这个公式计算的是总体方差(即除以数据个数n),而非样本方差(除以n-1)。

C++方差的运算:方差求解以及方差的增量计算-51CTO.COM本文将详细介绍如何使用C++语言实现方差的计算和方差的增量计算,并通过代码示例进行具体讲解。icon-default.png?t=N7T8https://www.51cto.com/article/779525.html


20240115

2005 年,C++ 专家 Herb Sutter 在 Dr. Dobb’s Journal(DDJ)发表了著名的文章《The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software》, 谈到随着摩尔定律的终结,计算机软件将不得不、或者说被迫处理好基于多核处理器的大规模并发程序的效率问题,这对软件的并发性能提出了极致的要求,这也是 Go、Kotlin 等语言把 Coroutine 纳入到语言标准支持的原动力。

在业务领域,Java 和 Go 还是会占据主导地位。原因在于 Rust 的学习成本的确比较高。如果语言本身的学习成本比较高,而业务又要快速发展的话,往往会导致一些问题,比如,公司的人员储备以及对技术的学习理解和掌握都会出现一些不匹配或者产生较大的矛盾。业务本身的迭代会非常快,比如在阿里,一个 Java 应用每一星期可能会有三到四个版本的发布。这样的快速业务迭代就需要技术本身的平民化。 就像 James Gosling 在 1997 年发表的论文《The Feel of Java》所言,Java 是一门蓝领语言。它非常平民化,适合快速发展的业务,每门语言都有自己的定位。

并发王座易主?Java 21 虚拟线程强势崛起,Go & Kotlin还稳得住吗 | 年度技术盘点与展望_生成式 AI_张卫滨_InfoQ精选文章并发王座易主?Java 21 虚拟线程强势崛起,Go & Kotlin还稳得住吗 | 年度技术盘点与展望icon-default.png?t=N7T8https://www.infoq.cn/article/grTehb05ZU7yJj93LVHi


20240111

1)Raft可视化测试以及各语言版本实现的Raft:https://raft.github.io/

2)Raft算法-动画演示(很好的入门教程):http://thesecretlivesofdata.com/raft/

带你简易入门一致性算法Raft-raft一致性算法Raft是一种实现分布式共识的协议。所谓共识,就是多个节点对某个事情达成一致的看法,即使是在部分节点故障、网络延时、网络分割的情况下。icon-default.png?t=N7T8https://www.51cto.com/article/677767.html

tianai-captcha 目前支持的行为验证码类型

  • 滑块验证码
  • 旋转验证码
  • 滑动还原验证码
  • 文字点选验证码
  • 图标验证码
  • 语序验证码
  • 刮刮乐验证码
  • 后面会陆续支持市面上更多好玩的验证码玩法... 敬请期待

在线文档:http://doc.captcha.tianai.cloud

体验地址:http://captcha.tianai.cloud/

源码地址

tianai-captcha: 可能是java界最好的开源行为验证码[滑块验证码、点选验证码、行为验证码、旋转验证码, 滑动验证码]

GitHub - dromara/tianai-captcha: 可能是java界最好的开源行为验证码 [滑块验证码、点选验证码、行为验证码、旋转验证码, 滑动验证码]

我愿称之为开源界最好用的行为验证码-51CTO.COMtianai-captcha 简称 tac,是一款集成滑动类、点选类的一款行为验证码,以使用简单、安全性强、界面美观、接入方便,集好看、功能多、安全性强的一款开源行为验证码工具。icon-default.png?t=N7T8https://www.51cto.com/article/779133.html


20240109

 在postgresql数据库中,需要安装plpythonu的extension,才可以使用python语言,plpythonu分两种。

        一种是python2的版本plpython2u,

        一种是python3的版本plpython3u。

在postgresql中用SQL封装python_wx656401c57a623的技术博客_51CTO博客在postgresql中用SQL封装python,“ 对于一个数据库来说,SQL大家肯定最熟悉不过了。但是作为数据库开发者,我认为数据库不应该只是支持SQL语言。应该支持更多编程语言。比如python、java、c++等更多编程语言,让数据库在多种语言之间的管理、功能上实现最大便捷,这才是未来数据库最大的发展趋势。也是国产数据库在实现崛起的弯道之一。就像手机不仅能打电话,还要能拍照。汽车不仅需要发动机,也需要冰箱、彩电、大沙发。”01—icon-default.png?t=N7T8https://blog.51cto.com/u_16385176/9151198

语音识别(ASR)在人机交互方面发挥着重要的作用,可用于:转录、翻译、听写、语音合成、关键字定位、语音日记、语言增强等场景。语音识别基本过程一般包括:分析音频、音频分解、格式转换、文本匹配,但实际的语音识别系统可能会更复杂,并且可能包括其他步骤和功能组件,例如:噪声抑制、声学模型、语言模型和置信度评估等。

多年来,语音识别技术的进步令人印象深刻,我们可以使用语音识别技术实现智能家居、控制汽车实现自动驾驶、与ChatGPT等大模型对接进行对话、智能音箱、居家机器人等等。这些年来也因为自然语言处理、语音识别等技术的发展,诞生了很多优秀的公司,例如:讯飞**。

随着AI技术发展,越来越多的人或组织投入到语音识别相关领域的研究,也促进了该领域的开源项目蓬勃发展。开源项目往往更加易于定制化开发、使用成本更低、透明,并且可私有化部署,数据安全可控。这使得开源语音识别引擎在应用开发中越来越受到技术人员的青睐。

2024年已开始,AI热度不减,以下是几个截止目前比较优秀的开源语音识别引擎。

13个优秀开源语音识别引擎-51CTO.COM2024年已开始,AI热度不减,以下是几个截止目前比较优秀的开源语音识别引擎。icon-default.png?t=N7T8https://www.51cto.com/article/778871.html

java并发编程好文章

Semaphores | Concurrency Deep DivesExploring what a semaphore is, and how to implement one from scratch. Understand fundamental concurrency conceptsicon-default.png?t=N7T8https://cmhteixeira.com/concurrency/semaphores.html

20240108

JEP 457,类文件API(Class-File API,预览),最近已经集成到了 JDK 22 中。该 JEP 建议提供一个 API 来解析、生成和转换 Java 类文件。它最初将作为 JDK 中 Java 字节码操作和分析框架ASM的内部替代品,并计划将其作为公共 API 开放。甲骨文的 Java 语言架构师Brian Goetz将 ASM 描述为“带有大量遗留包袱的旧代码库”,并提供了关于该草案将如何发展并最终取代 ASM 的背景信息

JEP 457 具有变革性的一个方面是如何解决 Java 生态系统中类文件格式的快速发展所带来的挑战。通过提供与 JDK 一起演进的标准 API,它能够确保使用该 API 的框架和工具会自动支持来自最新 JDK 的类文件。这种能力对于新语言和 VM 特性非常重要,它们在类文件中可能会有相应地表述。

ClassFile cf = ClassFile.of();
ClassModel classModel = cf.parse(bytes);
byte[] newBytes = cf.transform(classModel, (classBuilder, ce) -> {
    if (ce instanceof MethodModel mm) {
        classBuilder.transformMethod(mm, (methodBuilder, me)-> {
            if (me instanceof CodeModel cm) {
                methodBuilder.transformCode(cm, (codeBuilder, e) -> {
                    switch (e) {
                        case InvokeInstruction i
                                when i.owner().asInternalName().equals("Foo") ->
                            codeBuilder.invokeInstruction(i.opcode(), ClassDesc.of("Bar"), 
                                                          i.name().stringValue(),
                                                          i.typeSymbol(), i.isInterface());
                        default -> codeBuilder.with(e);
                    }
                });
            }
            else
                methodBuilder.with(me);
        });
    }
    else
        classBuilder.with(ce);
});

Java架构师:ASM已经过时,建议使用类文件API简化开发_编程语言_A N M Bazlur Rahman_InfoQ精选文章Java架构师:ASM已经过时,建议使用类文件API简化开发icon-default.png?t=N7T8https://www.infoq.cn/article/QSeBA9fQ21JrVPx0y6pa

20240102

用Go语言实现的网络协议解析功能是基于Google公司开发一个开源库:gopacket, 该库帮我们完成了网络协议的一些底层封装, 它允许我们能够捕获、解析和处理网络数据包, 与Wireshark一样,也支持对离线抓包文件的分析。gopacket库提供了一系列功能,包括:数据包捕获、解析和构建, 以及对多种协议的支持,如:Ethernet、IP、TCP、UDP、HTTP等。它还提供了方便的API, 以帮助开发者操作和分析网络数据包。

用Go实现自己的网络流量解析和行为检测引擎-51CTO.COM本次用Go语言实现的网络协议解析功能是基于Google公司开发一个开源库:gopacket,该库帮我们完成了网络协议的一些底层封装,,它允许我们能够捕获、解析和处理网络数据包。icon-default.png?t=N7T8https://www.51cto.com/article/778122.html

Jasypt(Java Simplified Encryption)是一个专注于简化Java加密操作的工具。它提供了一种简单而强大的方式来处理数据的加密和解密,使开发者能够轻松地保护应用程序中的敏感信息,如数据库密码、API密钥等。

Jasypt的设计理念是简化加密操作,使其对开发者更加友好。它采用密码学强度的加密算法,支持多种加密算法,从而平衡了性能和安全性。其中,Jasypt的核心思想之一是基于密码的加密(Password Based Encryption,PBE),通过用户提供的密码生成加密密钥,然后使用该密钥对数据进行加密和解密。

该工具还引入了盐(Salt)的概念,通过添加随机生成的盐值,提高了加密的安全性,防止相同的原始数据在不同的加密过程中产生相同的结果,有效抵御彩虹表攻击。

Jasypt与Spring Boot天然契合,可以轻松集成到Spring Boot项目中,为开发者提供了更便捷的数据安全解决方案。通过Jasypt,开发者可以在不深入了解底层加密算法的情况下,轻松实现数据的安全保护,使得应用程序更加可靠和安全。

官网地址: http://www.jasypt.org/

Spring Boot 3 集成 Jasypt详解,你学会了吗?-51CTO.COMJasypt作为一个简单而强大的加密工具,为Java应用程序提供了便捷的数据保护方案。通过与Spring Boot的集成,开发者可以在应用程序中轻松地加密和解密敏感信息。icon-default.png?t=N7T8https://www.51cto.com/article/778164.html

20231229

它不是微服务或单体应用;这是你首先需要理解的认知负荷

“不要在整体架构或微服务架构之间进行选择,而是设计软件以适应最大的团队认知负载”

如果您只有一个团队,请考虑调整您的架构以匹配团队的容量。支持整体式、内聚性和模块化架构。

如果您有多个团队,请考虑使用微服务或类似类型的架构,以便他们可以独立工作

微服务的目的是有效的拆分应用,实现敏捷开发和部署。

在单体架构下,没有什么有效阻断错误传播的手段,系统中“整体”与“部分”的关系没有物理的划分,系统质量只能靠研发与项目管理措施来尽可能地保障,少量的技术专家很难阻止大量螺丝钉式的程序员或者不熟悉原有技术架构的外包人员在某个不起眼的地方犯错并产生全局性的影响,不容易做出整体可靠的大型系统。这时微服务可以作为专家掌控架构约束力的技术手段,由高水平的开发、运维人员去保证关键的技术和业务服务靠谱,其他大量外围的功能即使不靠谱,甚至默认它们必定不靠谱,也能保证系统整体的稳定和局部的容错、自愈与快速迭代。

https://fernandovillalba.substack.com/p/its-not-microservice-or-monolithicon-default.png?t=N7T8https://fernandovillalba.substack.com/p/its-not-microservice-or-monolith

协程(Coroutines)一般指一个可以被暂停和恢复执行的逻辑体。普通的函数有 2 个常规的操作和行为:调用(Call)和返回(Return)。协程可以允许这个被调用的函数执行到某个位置之后暂时保留自己的临时信息并挂起。在后面的某个时间点可以再回到当时执行的位置和状态继续执行。所以从某种意义上可以说协程是普通函数的泛化(Generalisation)。

浅谈C++20 协程那点事儿​本文是 C++20 的协程入门文章,作者围绕协程的概念到协程的实现思路全方位进行讲解,努力让本文成为全网最好理解的「C++20 协程」原理解析文章。icon-default.png?t=N7T8https://mp.weixin.qq.com/s/0njDHtz_SGPkrr4ndAWHaA

20231226

ef simple_gen(a):
    print('-> Started: a =', a)
    b = yield a
    print('-> Received: b =', b)
    c = yield a + b
    print('-> Received: c =', c)
gen = simple_gen(14)
next(gen) # -> Started: a = 14
next(gen) # ?
next(gen) # ?

运行结果如图:

发生了什么??从第一次 next(gen) 调用开始,它在 yield a 处停止,然后当您再次调用 next(gen) 时,b 实际上是 None 值,这导致了异常。

b 为什么是 None 值?因为我们在 yield a 处没有接收到任何值,所以 b 就是 None 值。要想接收值,

要继续,您需要使用 send() 函数:生成器发送(值)恢复执行并将值“发送”到生成器函数中。value 参数成为当前 yield 表达式的结果。send() 方法返回生成器生成的下一个值,或者如果生成器退出而没有生成另一个值则引发 StopIteration。

怎么理解send() 函数?一个带参数的 next(),接收参数,执行yield,然后返回值。

复制

def simple_gen(a):
    print('-> Started: a =', a)
    b = yield a
    print('-> Received: b =', b)
    c = yield a + b
    print('-> Received: c =', c)
gen = simple_gen(14)
next(gen) # -> Started: a = 14
gen.send(15) # Received: b = 15 # send 15 to generator,并执行下一步 send包含next的yield

10分钟了解Python黑魔法 Yield、Iterator、Generator-51CTO.COM今天,我们来讨论Python的yield、Iterator和generator,它们可以在许多教程中看到,但总是引起一些混淆。icon-default.png?t=N7T8https://www.51cto.com/article/777502.html


20231225

application.properties 文件中设置一个属性:

spring.threads.virtual.enabled:true

Spring Boot 3.2 尝鲜,开箱即用的虚拟线程和 GraalVM支持 Java 21、虚拟线程与原生镜像icon-default.png?t=N7T8https://mp.weixin.qq.com/s/XQLEneMBt3kPep_JW3ZMfw

20231219

 listen 127.0.0.1:3306;
 listen *:3306;
 # 效果与listen *:3306一样
 listen 3306;
 listen localhost:3306;



allow ,deny 指令设置指定的IP允许访问。可以和deny指令配合使用

作用域:stream, server
语法:allow address | CIDR | unix: | all

# 允许192.168.110.1访问
 allow 192.168.110.1;
 
 # 允许192.168.110.1到192.168.255.254
 allow 192.168.110.0/16;
 
 # 允许192.168.110.1到192.168.110.254
 allow 192.168.110.0/24;
 
 # 允许所有的IP访问
 allow all;

# 禁止192.168.110.1访问
 deny 192.168.110.1;
 
 # 禁止192.168.110.1到192.168.255.254
 deny 192.168.110.0/16;
 
 # 禁止192.168.110.1到192.168.110.254
 deny 192.168.110.0/24;
 
 # 禁止所有的IP访问
 deny all;



  stream  {
     allow 192.168.110.100;
     deny all;
     server {
         listen 3306;
         proxy_pass 192.168.110.101:3306;
     }
 }

如何让Nginx使用一个端口的不同路由地址代理不同的服务? - 知乎1.前言我们的生产环境基本上都部署在云服务器上,例如应用服务器、MySQL服务器等。如果MySQL服务器直接暴…icon-default.png?t=N7T8https://www.zhihu.com/question/454374920/answer/3178867794


20231211

为什么这个算法叫 SoftMax 呢?

Soft 是软的意思,与之对应肯定有 HardMax。

而 HardMax,可以理解为我们平时认知的Max。比如两个数(3, 4), 那么这两个数的 HardMax(3,4) 结果就是4。

指数增长的特性就是,横轴变化很小的量,纵轴就会有很大的变化。

所以,从1.9变化到2.1,经过指数的运算,两者的差距立马被的拉大了。从而,我们可以更加明确的知道,图片的分类应该属于最大的那个。

指数让得分大的分类最终的概率更大,得分小的分类最终的概率更小,而得分为负数的分类,几乎可以忽略。

多类分类下为什么用softmax而不是用其他归一化方法? - 知乎很多同学在做深度学习时,都会遇到难以理解的算法,SoftMax 肯定是其中一个。初学时大都对它一知半解,只…icon-default.png?t=N7T8https://www.zhihu.com/question/40403377/answer/3320053643?utm_id=0transformer架构的核心公式其实类似于数学期望,理解起来也不复杂,但为什么这个模型这么强呢? - 知乎神经网络的一个基础假设是:通过堆叠一些基础的计算单元,我们能够构建强大的智能体。所以不仅仅是Transf…icon-default.png?t=N7T8https://www.zhihu.com/question/580810624/answer/2979260071

目前来看主流解决方案有两个思路,都是潜在的发展方向。

一是接受Transformer理论上本身就无法处理无限token的现实,并依靠一些机制来解决需要long-term memory的情况。比如通过额外的向量数据库来作为long-term memory。这其实挺像人的模式(虽然我不太喜欢拿人类比AI)。人类理论上是有处理无限token的能力,但现实是会忘记某些信息。这时人的方法是靠外部存储(如书籍)来辅助回忆。人类使用的外部存储就对应于大模型使用的向量数据库。

二是继续理论上可以处理无限token的RNN系列。这又有两方面问题可以研究。一是诸如线性Transformer一类,用Transformer的思想往RNN上套。二是解决RNN的并行化和优化问题。

RNN是强大工具。但无法并行化的问题使它很难把模型搞到目前的千亿级规模。此外,基于梯度的优化方法对RNN特别不友好。

20231208

主流os内核通常是C语言写成,系统函数库通常以一个或多个链接库文件的形式提供,其中最重要的是C标准库,其他的链接库往往调用C标准库而实现,当然也可能直接调用系统内核函数,甚至混合。不同系统平台有多种主流的C标准库共存:

Cygwin就是在Windows中增加了一个中间层——兼容POSIX的模拟层,并在此基础上构建了大量Linux-like的软件工具。再来解释本文开头的回答,如下图,POSXI兼容环境包括以下两部分:

  • cygwin1.dll,作为实现POSIX系统调用的模拟层,可原生运行在Windows中;
  • 在cygwin1.dll之上构建的大量函数库、应用程序,如libczlibbashgccvimawksedgit等等,与UNIX/Linux几乎等同*。

*注:Cygwin的libc是Newlib,Linux的libc是GNU libc,UNIX有的是BSD libc。

Cygwin系列(一):Cygwin是什么 | silaoA的博客记录分享Cygwin、Linux、编程等计算机技术icon-default.png?t=N7T8https://silaoa.github.io/2019/2019-02-14-Cygwin%E7%B3%BB%E5%88%97%EF%BC%88%E4%B8%80%EF%BC%89%EF%BC%9ACygwin%E6%98%AF%E4%BB%80%E4%B9%88.html

20231204

Build your own WebAssembly CompilerHave you ever wanted to write your own compiler? ... yes? ... of course you have! I've always wanted to have a go at writing a compiler, and with the recent release of WebAssembly, I had the perfect excuse to have a go.icon-default.png?t=N7T8https://blog.scottlogic.com/2019/05/17/webassembly-compiler.html

Let’s learn how modern JavaScript frameworks work by building one | Read the Tea LeavesIn my day job, I work on a JavaScript framework (LWC). And although I've been working on it for almost three years, I still feel like a dilettante. When I read about what's going on in the larger framework world, I often feel overwhelmed by all the things I don't know. One of the best…icon-default.png?t=N7T8https://nolanlawson.com/2023/12/02/lets-learn-how-modern-javascript-frameworks-work-by-building-one/

LLM VisualizationA 3D animated visualization of an LLM with a walkthrough.icon-default.png?t=N7T8https://bbycroft.net/llm

可以使用参数指定最终镜像的名称,如下所示:

mvn spring-boot:build-image \
-Dspring-boot.build-image.imageName=my-spring-boot-image

或者可以在配置中指定,如下所示:

<plugin>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-maven-plugin</artifactId>
   <configuration>
      <imageName>my-spring-boot-image</imageName>
   </configuration>
</plugin>

现在,可以在这里进行一些级别的自定义。如果想真正自定义镜像的构建过程,需要创建自己的构建器镜像来定义构建过程。

无需Docker File,用三种方式创建Spring Boot应用的Docker镜像-51CTO.COM引入了容器的概念后,开发者在面对这个问题时有了更好的解决方案。容器将整个软件堆栈打包成一个独立的实体,并可以方便地进行部署,不再受限于"在我的机器上可以运行"的问题。icon-default.png?t=N7T8https://www.51cto.com/article/775352.html

20231201

图解!逐步理解Transformers的数学原理本文将通过提供一个全面的数学示例阐明Transformers的原理。icon-default.png?t=N7T8https://mp.weixin.qq.com/s/Tt5zcsx8v72rL4NH9wCbNQ


20231130

内存划分为什么要分为堆和栈,当初设计这两个的时候分别是要解决什么问题? - 知乎知乎,中文互联网高质量的问答社区和创作者聚集的原创内容平台,于 2011 年 1 月正式上线,以「让人们更好的分享知识、经验和见解,找到自己的解答」为品牌使命。知乎凭借认真、专业、友善的社区氛围、独特的产品机制以及结构化和易获得的优质内容,聚集了中文互联网科技、商业、影视、时尚、文化等领域最具创造力的人群,已成为综合性、全品类、在诸多领域具有关键影响力的知识分享社区和创作者聚集的原创内容平台,建立起了以社区驱动的内容变现商业模式。icon-default.png?t=N7T8https://www.zhihu.com/aria/question/447017261/answer/3304990306

https://hacks.mozilla.org/2023/11/introducing-llamafile/icon-default.png?t=N7T8https://hacks.mozilla.org/2023/11/introducing-llamafile/

llamafile 允许您使用单个文件分发和运行 LLM

llamafile 可让您将大型语言模型 (LLM) 权重转换为可执行文件。

假设您有一组 4GB 文件形式的 LLM 权重(采用常用的 GGUF 格式)。使用 llamafile,您可以将该 4GB 文件转换为可在六种操作系统上运行的二进制文件,而无需安装。

我们通过结合我们喜欢的两个项目来实现这一切:llama.cpp(一个领先的开源 LLM 聊天机器人框架)和 Cosmopolitan Libc(一个开源项目,使 C 程序能够在大量平台和架构上编译和运行) 。它还需要解决一些有趣且有趣的问题,例如向 Cosmopolitan 添加 GPU 和 dlopen() 支持;您可以在项目的自述文件中阅读更多相关信息。

GitHub - Mozilla-Ocho/llamafile: Distribute and run LLMs with a single file.Distribute and run LLMs with a single file. Contribute to Mozilla-Ocho/llamafile development by creating an account on GitHub.icon-default.png?t=N7T8https://github.com/Mozilla-Ocho/llamafile

由于Pytesseract和easyOCR可以处理图像,因此在执行内容提取之前需要将PDF文件转换为图像。可以使用pypdfium2进行转换,这是一个用于处理PDF文件的强大库

从PDF和图像中提取文本,以供大型语言模型使用-51CTO.COM本文专注于Pytesseract、easyOCR、PyPDF2和LangChain库,旨在提供一些有效从任何类型文档中提取文本的技术。icon-default.png?t=N7T8https://www.51cto.com/article/774978.html


20231129

在mysql中 int占4个字节,那么对于无符号的int,最大值是2^32-1 = 4294967295,将近40亿,难道用了int(1),就不能达到这个最大值吗?

CREATE TABLE `user` (
  `id` int(1) unsigned NOT NULL AUTO_INCREMENT,
   PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;

id字段为无符号的int(1),我来插入一个最大值看看。

mysql> INSERT INTO `user` (`id`) VALUES (4294967295);
Query OK, 1 row affected (0.00 sec)

可以看到成功了,说明int后面的数字,不影响int本身支持的大小,int(1)、int(2)...int(10)没什么区别。

而且对于0001这种,底层存储的还是1,只是在展示的会补0。

int后面的数字不能表示字段的长度,int(num)一般加上zerofill,才有效果。zerofill的作用一般可以用在一些编号相关的数字中,比如学生的编号 001 002 ... 999这种,如果mysql没有零填充的功能,但是你又要格式化输出等长的数字编号时,那么你只能自己处理了。

很多资深开发竟然都不清楚 int(1) 和 int(10) 的区别!icon-default.png?t=N7T8https://mp.weixin.qq.com/s/iAADveQk1JEtE4pGf3rcYQ


20231127

“大模型本质就是两个文件!”特斯拉前AI总监爆火LLM科普,时长1小时,面向普通大众 - 知乎丰色 克雷西 发自 凹非寺 量子位 | 公众号 QbitAI特斯拉前AI总监Andrej Karpathy的新教程火了。 这次,他专门 面向普通大众做了一个关于大语言模型的科普视频。时长1小时,全部为 “非技术介绍”,涵盖模型推理、…icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/668570576

从零训练一个多模态LLM:预训练+指令微调+对齐+融合多模态+链接外部系统 - 知乎本文尝试梳理一个完整的多模态LLM的训练流程。包括模型结构选择、数据预处理、模型预训练、指令微调、对齐、融合多模态以及链接外部系统等环节。 一、准备阶段 1 模型结构目前主要有三种模型架构,基于Transformer…icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/645328856?utm_id=0

QLoRA增量预训练与指令微调,及汉化Llama2的实践 - 知乎我们探索和实现了一种基于QLoRA的轻量级的增量预训练和指令微调方案,在4*V100上,我们使用该方法对Llama2-13B进行中文知识迁移,在公开榜单和人工评测中验证了该方法的有效性。该方法可推广至对Baichuan、Qwen、I…icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/661986898?utm_id=0

如何切换window11 右键菜单:

解决方法如下,我们目标是恢复到win10的菜单。
以管理员身份运行 Power Shell
恢复到win10
reg add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve
恢复到win11
reg delete "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32"

Agent 将是 AI 最大的赛道!未来五年,这一切将彻底改变。icon-default.png?t=N7T8https://mp.weixin.qq.com/s/PxZJqkAUnzGNXdcXEvGbRQ

Understanding Deep Learning

by Simon J.D. Prince
To be published by MIT Press Dec 5th 2023.

udlbook

  • 大模型在特定场景下的专业性暂时没有得到足够提升;

  • 大模型时代的“魔咒”——好用的不通用,通用的不好用;

只需要在前端接一个语音转文本,后端再接一个语音合成,基本上就可以基于大模型完成营销任务。

大模型背后是神经网络,类似于人脑的直觉系统,能够很好地理解语言。但这种神经网络结构不擅长处理大百科类的低频长尾实时性知识。这时候,可以把这类低频长尾的知识,放到“外挂知识库”里进行存储,也就是向量数据库,在需要时再到其中进行资料查找。

数据需要积累,容易解决的是预训练数据部分,但指令数据部分是比较难的,对数据质量要求更高。因为大模型时代仍然面临一个法则——好用的不通用,通用的不好用。

好用的不通用,通用的不好用,金融落地大模型需要“专业型”选手_证券_高玉娴_InfoQ精选文章好用的不通用,通用的不好用,金融落地大模型需要“专业型”选手icon-default.png?t=N7T8https://www.infoq.cn/article/VyXbmPO3scWlqDhJq0z8


20231120

StyleTTS 2:通过大型语音语言模型的风格扩散和对抗性训练实现人类水平的文本转语音

GitHub - yl4579/StyleTTS2: StyleTTS 2: Towards Human-Level Text-to-Speech through Style Diffusion and Adversarial Training with Large Speech Language ModelsStyleTTS 2: Towards Human-Level Text-to-Speech through Style Diffusion and Adversarial Training with Large Speech Language Models - GitHub - yl4579/StyleTTS2: StyleTTS 2: Towards Human-Level Text-to-Speech through Style Diffusion and Adversarial Training with Large Speech Language Modelsicon-default.png?t=N7T8https://github.com/yl4579/StyleTTS2


20231116

 wasm 的线性内存

Wasm By ExampleA hands-on introduction into WebAssembly ( Wasm ). Containing simple wasm examples and wasm tutorials on how to implement concepts and various tasks using WebAssembly.icon-default.png?t=N7T8https://wasmbyexample.dev/examples/webassembly-linear-memory/webassembly-linear-memory.rust.en-us.html

Wasm By ExampleA hands-on introduction into WebAssembly ( Wasm ). Containing simple wasm examples and wasm tutorials on how to implement concepts and various tasks using WebAssembly.icon-default.png?t=N7T8https://wasmbyexample.dev/home.en-us.html


20231114

基于已有流行数据库以插件形式提供的则有 pgvector 与 Redis Stack

参考 Redis as a vector database quick start guide | Redis

pgvector 提供了 ivfflat 算法以近似搜索,它的工作原理是将相似的向量聚类为区域,并建立一个倒排索引,将每个区域映射到其向量。这使得查询可以集中在数据的一个子集上,从而实现快速搜索。通过调整列表和探针参数,ivfflat 可以平衡数据集的速度和准确性,使 PostgreSQL 有能力对复杂数据进行快速的语义相似性搜索。通过简单的查询,应用程序可以在数百万个高维向量中找到与查询向量最近的邻居。对于自然语言处理、信息检索等,ivfflat 是一个比较好的解决方案。

让我们以 ivfflat 方法为例。在建立 ivfflat 索引时,你需要决定索引中包含多少个 list。每个 list 代表一个 "中心";这些中心通过 k-means 算法计算而来。一旦确定了所有中心,ivfflat 就会确定每个向量最靠近哪个中心,并将其添加到索引中。当需要查询向量数据时,你可以决定要检查多少个中心,这由 ivfflat.probes 参数决定。这就是 ANN 性能/召回率的结果:访问的中心越多,结果就越精确,但这是以牺牲性能为代价的。
由于在 "向量数据库 "和 pgvector 中存储 AI/ML 输出的做法很流行

向量数据库与pgvector - 知乎序言2022 年 11 月 30 日,OpenAI 推出了全新的对话式通用人工智能工具——ChatGPT,ChatGPT 表现出了非常惊艳的语言理解、生成、知识推理能力,ChatGPT 的横空出世拉开了大语言模型产业和生成式 AI 产业蓬勃发展…icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/649779973

关于redisstack的向量数据库

Redis as a vector database quick start guide | Redis


redis/redis-stack-服务器

要使用 redis-stack-server 映像启动 Redis Stack 服务器,请在终端中运行以下命令:
 

docker run -d --name redis-stack-server -p 6379:6379 redis/redis-stack-server:latest
`

要使用 redis-stack 映像启动 Redis Stack 容器,请在终端中运行以下命令:

docker run -d --name redis-stack -p 6379:6379 -p 8001:8001 redis/redis-stack:latest
`

上面的 docker run 命令还在端口 8001 上公开 RedisInsight。您可以通过将浏览器指向 localhost:8001 来使用 RedisInsight。

RedisInsight | RedisVisualize and optimize Redis dataicon-default.png?t=N7T8https://redis.io/docs/connect/insight/

 SentenceTransformers 是一个用于最先进的句子、文本和图像嵌入的 Python 框架。我们的论文 Sentence-BERT:Sentence Embeddings using Siamese BERT-Networks 描述了最初的工作。

可以使用此框架来计算 100 多种语言的句子/文本嵌入。然后可以比较这些嵌入,例如使用余弦相似度来查找具有相似含义的句子。这对于语义文本相似、语义搜索或释义挖掘非常有用。

SentenceTransformers Documentation — Sentence-Transformers documentationicon-default.png?t=N7T8https://www.sbert.net/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值