- 博客(941)
- 资源 (1)
- 收藏
- 关注
原创 [极客时间]LangChain 实战课 ----- 01|LangChain系统安装和快速入门(3)
在深入讲解 LangChain 的每一个具体组件之前,我想带着你从头完成一个很实用、很有意义的实战项目。目的就是让你直观感受一下 LangChain 作为一个基于大语言模型的应用开发框架,功能到底有多么强大。好的,现在就开始!整个框架分为这样三个部分。**核心实现机制:**这个项目的核心实现机制是下图所示的数据处理管道(Pipeline)。在这个管道的每一步中,LangChain 都为我们提供了相关工具,让你轻松实现基于文档的问答功能。具体流程分为下面 5 步。上面 5 个环节的介绍都非常简单,有些概念
2025-06-12 22:21:18
633
原创 [极客时间]LangChain 实战课 ----- 01|LangChain系统安装和快速入门(2)
大语言模型是一种人工智能模型,通常使用深度学习技术,比如神经网络,来理解和生成人类语言。这些模型的“大”在于它们的参数数量非常多,可以达到数十亿甚至更多,这使得它们能够理解和生成高度复杂的语言模式。你可以将**大语言模型想象成一个巨大的预测机器,其训练过程主要基于“猜词”:**给定一段文本的开头,它的任务就是预测下一个词是什么。模型会根据大量的训练数据(例如在互联网上爬取的文本),试图理解词语和词组在语言中的用法和含义,以及它们如何组合形成意义。它会通过不断地学习和调整参数,使得自己的预测越来越准确。
2025-06-10 22:57:39
611
3
原创 [极客时间]LangChain 实战课 ----- 开篇词|带你亲证AI应用开发的“奇点”时刻(1)
在这个模块中,我会介绍 LangChain 系统的安装流程,以及如何进行快速的入门操作。同时,详细指导你如何使用 LangChain 来构建一个基于“易速鲜花”本地知识库的智能问答系统,让你直接感受 LangChain 强大的功能。
2025-06-09 22:08:00
539
原创 Python学习(8) ----- Python的类与对象
self.name = name # 实例属性def say_hello(self): # 实例方法class Person : def __init__(self , name , age) : self . name = name # 实例属性 self . age = age def say_hello(self) : # 实例方法 print(f"Hello, my name is {
2025-06-09 21:11:57
323
原创 Python学习(7) ----- Python起源
Python 有个“禅”,也就是它的哲学。“美丽优于丑陋。这,就是 Python 的灵魂。是 Python 语言里一个非常有趣的“彩蛋”。虽然不执行任何程序逻辑,但它代表了Python 背后的美学和哲学思想,是每个 Pythoner 入门时值得一看的“宣言”。如果你希望我解释每一条原则的实际意义与示例,我也可以一条条帮你解读。要试试看吗?
2025-06-08 21:45:02
860
原创 Python学习(6) ----- Python2和Python3的区别
特性Python2Python3打印语法print语句print()函数除法行为整除(除非引入 future)浮点除法字符串默认类型ASCII (strUnicode (strrange()列表可迭代对象(生成器)input()字符串类定义有旧式和新式类统一为新式类异常写法。
2025-06-04 22:39:03
929
原创 Python学习(5) ----- Python的JSON处理
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于 API 和配置文件。"name": "张三","age": 28,"city": "北京",Python 提供内置模块json,支持 JSON 和 Python 对象之间的序列化(encode)和反序列化(decode)。
2025-05-30 19:48:25
595
原创 Python学习(4) ----- Python的CSV文件处理
在 Python 中,读取 CSV 文件最常用的方式是使用标准库中的 csv模块。
2025-05-29 21:50:57
376
原创 Python学习(3) ----- Python的函数定义及其使用
def 函数名(参数1, 参数2=默认值, *args, **kwargs):"""函数说明文档"""函数体return 返回值。
2025-05-28 21:27:30
449
原创 Python学习(2) ----- Python的数据类型及其集合操作
class Dog:my_set2 = set([4, 5, 6]) # 使用 set() 构造会变成{1, 2, 3}元素无序:无法通过索引访问,如set[0]是错误的可进行集合运算(交、并、差等)print(a | b) # 并集 => {1, 2, 3, 4, 5}print(a & b) # 交集 => {3}print(a - b) # 差集 => {1, 2}
2025-05-27 21:48:43
642
原创 BCryptPasswordEncoder类
在 Spring Security 中,BCryptPasswordEncoder 用于将用户输入的密码转换为一个安全的散列值,这个散列值可以安全地存储在数据库中。当用户尝试登录时,输入的密码会再次使用 BCryptPasswordEncoder 进行散列,并与数据库中存储的散列值进行比较,以验证用户的身份。在上面的例子中,authenticate 方法会使用 BCryptPasswordEncoder 的 matches 方法来验证用户输入的密码是否与数据库中存储的散列值相匹配。
2024-08-15 22:37:42
245
原创 一文读懂,网联和银联的区别
1、银联是从纸币发展到银行卡阶段,为满足各家银行互联互通交易而产生的,比如工商银行部署的刷卡pos机只能刷工商银行的卡,而不能刷建行的卡,其他银行也一样,所以出现了银联。2、网联,是互联网支付时代,也为各家第三方支付公司比如微信、支付宝、翼支付、宝付支付等等第三方支付公司互联互通交易。而网联与银联同等地位,主要负责线上(互联网)业务。由于银联快捷支付和新兴的云闪付业务也涉及线上业务,所以大家会有这个疑问:网联,银联怎么界定业务边界?,要么接入网联做线上业务,只要接入央行的亲儿子即可,管他是老大还是老二。
2023-06-07 23:58:57
5214
原创 HBase环境搭建
使用StandAlone的方式进行搭建需要注意保证本地文件夹已经建好http://localhost:16010/master-status#memoryStats访问该地址有相应的页面信息H
2022-04-06 19:52:28
1313
原创 彻底弄懂OAuth
OAuth简介OAuth是一个开放的标准,能提供一种安全的API授权,使第三方应用不需要密码账号,就可以申请获得该用户资源的授权。1.使用场景例子如果一个用户需要两项服务:图片在线存储服务A、图片在线打印服务B。由于服务A与服务B是由两家不同的服务提供商提供的,所以用户在这两家服务提供商的网站上各自注册了两个用户,假设这两个用户名、密码都各不相同。当用户要使用服务B打印存储在服务A上的图片时,用户该如何处理?方法一:用户先将待打印的图片从服务A上下载下来并上传到服务B上打印,这种方式安全但处理比
2022-04-06 19:50:28
2313
原创 MySQL各种Pool总结
ChangeBufferChangeBuffer用的是BufferPool里的内存我们都知道MySQL为了降低随机写的开销,把所有的写操作暂时放在redolog里面(其实是先写入redolog buffer中),然后批量写,减小了随机写的IO,那么当我们读的时候不在内存,或者需要update的时候怎么办呢,其实ChangeBuffer就是降低了随机读的开销(相对于唯一索引不能使用ChangeBuffer而言)。ChangeBuffer不适合那种写多读少的情况,ChangeBuffer会merge到磁
2021-09-15 08:29:00
752
原创 线程池最佳实践
1、拒绝策略可以用一个兜底的线程池来执行自定义拒绝策略实现该接口,重写该方法,在这个方法中用兜底的线程池去执行public interface RejectedExecutionHandler { void rejectedExecution(Runnable r, ThreadPoolExecutor executor);}2、每个业务线一个线程池,每个线程池有自己的名字,排除问题起来简单3、自定义参数来建立线程池,不要使用JDK自带的,类似于无界队列,会OOM4、一般设
2021-09-13 21:06:18
940
原创 Actor模型
Actor模型Actor模型本质上是一种计算模型,基本的计算单元称为Actor,换言之,在Actor模型中,所有的计算都是在Actor中执行的。在面向对象编程里面,一切都是对象;在Actor模型里,一切都是Actor,并且Actor之间是完全隔离的,不会共享任何变量。当看到“不共享任何变量”的时候,相信你一定会眼前一亮,并发问题的根源就在于共享变量,而Actor模型中Actor之间不共享变量,那用Actor模型解决并发问题,一定是相当顺手。的确是这样,所以很多人就把Actor模型定义为一种并发计算模型。
2021-09-13 13:41:58
1281
原创 浅谈JVM调优
JVM调优小白,理论知识走一波首先如果条件允许(内存在8G以上)选择G1,领先PN+CMS和PS+PO不只是一两个数量级。但是我们更期待ZGC的到来,在ZGC成为stable之前还是得有一点点了解。吞吐量优先,选择PS+PO低延迟选择PN+CMS几个重要的参数-XX:MaxTenuringThreshold=2 表示该对象经过多少次GC后晋升到老年代,但是JVM在进行GC时也会判断年轻代一半以上的对象的最小年龄,把大于该年龄的晋升到老年代。-XX:ParallelGCThreads=4 .
2021-09-12 17:34:39
312
1
原创 序列化常见工具
什么是序列化和反序列化序列化:将对象转成二进制进行传输或者持久化反序列化:将二进制转成对象常见的序列化工具1. Java原生序列化 Serializable只要让类实现 Serializable 接口就行,序列化具体的实现是由ObjectOutputStream和ObjectInputStream来实现的。注意以下几个点:1、serialVersionUID 一定要自己写,不要省略,不然会导致无法序列化或者修改之后报错如下出现兼容性问题:java.io.InvalidClassExce.
2021-09-11 15:39:16
3392
原创 方法区概述
存储的是什么方法区是非堆区,独立于堆的内存空间,受本地内存限制,不建议指定方法区大小,因为你无法掌握到底有多少个类被加载,同样的是线程共享的存储有:类元信息(类模板信息)常量静态变量即时编译后的代码缓存堆、栈、方法区的关系如何解决这些OOM通过堆dump,拿到dump文件,判断到底是内存泄露还是内存溢出如果是内存泄露找出GC Roots的引用链,存w...
2021-09-06 21:00:32
119
原创 Redis那些不熟悉的底层知识点
要透过现象看本质~redis的数据类型和对应的底层数据结构大key问题当value为字符串时一般指单个字符串超过1M,如果是其他的集合类型那么指的是集合元素过多根据如下的时间复杂度,我们知道查询的一个数的O(n)的时间复杂度是很可怕的redis的string类型底层Entry -> RedisObject -> SDSEntry 指向RedisObject,RedisObject 指向SDSRedis 扩张采用渐进式hash。1、在原先的基础上增加一倍2、拷贝原.
2021-09-06 19:27:42
178
原创 源代码中help GC的联想
今天在看AQS的源码时看到了这段代码,有个注释,写了help GC,联想到实习的时候,组内有同学将使用完的对象也置为了null,到底这个置为null就不需要GC了吗,其实和C/C++ 的free不一样,你置为了null可以在短时间内进行gc,并不是不需要gc就释放了。你有一个方法很长,里面定义了一个map对象,这个对象内存占用很大,如果该方法没有结束,那么这个map是无法进行回收的,此时如果想要在方法没有返回前回收这个没有用的map,就可以将map置为null来提前进行gc。java.util.conc
2021-09-06 17:00:06
703
2
原创 24点游戏输出表达式
带表达式输出的24点游戏,如果只是判断能不能组成24点,那么比较简单,输出所有的表达式不能将中间值保存到list中,需要额外的一个变量去保存中间结果,然后依次保存即可/** * @Author 17912 * @Date 2021-9-6-006 9:53:24 * @Version 1.0 */import java.util.ArrayList;import java.util.Random;public class Main { public static void
2021-09-06 10:03:00
719
原创 Docker 和k8s
DockerDocker比较虚拟机传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。Docker的本质Docker容器本质上是宿主机上的进程。Docker 通过namespace实现了资源隔离,通过cgroups实现资源限制,通过写时复制机制(Copy-on-write)实现了高效的文件操作。/* 定义一个给 clone 用的栈,栈大小1M
2021-07-12 20:13:09
263
原创 线程池相关
主池控制状态ctl是一个原子整数,打包了两个概念字段workerCount,表示有效线程数runState,表示是否正在运行,正在关闭等为了打包成一个int,我们限制workerCount为(2^29 )-1(约 5 亿)个线程而不是 (2^31)-1(20 亿)个其他可表示的线程。 如果这在未来成为一个问题,可以将变量更改为 AtomicLong,并调整下面的移位/掩码常量。 但是在需要之前,这段代码使用 int 会更快更简单。 workerCount 是允许启动和不允许停止的工人数量。 该值可能与实际的
2021-07-10 00:17:14
341
原创 BIO、NIO、AIO
第一章 BIO、NIO、AIO课程介绍1.1 课程说明 在Java的软件设计开发中,通信架构是不可避免的,我们在进行不同系统或者不同进程之间的数据交互,或者在高并发下的通信场景下都需要用到网络通信相关的技术,对于一些经验丰富的程序员来说,Java早期的网络通信架构存在一些缺陷,其中最令人恼火的是基于性能低下的同步阻塞式的I/O通信(BIO),随着互联网开发下通信性能的高要求,Java在2002年开始支持了非阻塞式的I/O通信技术(NIO)。大多数读者在学习网络通信相关技术的时候,都只是接触到零碎的
2021-06-18 22:12:35
399
原创 Linux命令
关机/重启/注销常用命令作用shutdown -h now即刻关机shutdown -h 1010分钟后关机shutdown -h 11:0011:00关机shutdown -h +10预定时间关机(10分钟后)shutdown -c取消指定时间关机shutdown -r now重启shutdown -r 1010分钟之后重启shutdown -r 11:00定时重启reboot重启init 6重启init
2021-06-09 11:27:36
164
原创 小技巧收集
1、网页视频加速https://blog.csdn.net/qq_40306266/article/details/104060801document.querySelector('video').defaultPlaybackRate = 2.0;//默认两倍速播放document.querySelector('video').play();/* 设置当前值 */document.querySelector('video').playbackRate = 1.5; //此值设置当前的播放倍
2021-05-30 19:49:53
693
原创 MySQL知识点
1、在建表时如果是varchar,char,text等字符类型的话,建完我们可以发现后面有个collate类型,是不是觉得很好奇呢,其实不难理解,该字段是用来指明是否忽略大小写的。我们一般用utf8_bin 表示区分大小写,并且二进制数据存储,如果用后面带cs的,就不会区分大小写了,亲测过utf8_bin将字符串中的每一个字符用二进制数据存储,区分大小写。utf8_genera_ci不区分大小写,ci是case insensitive的缩写,即一般大小写不敏感。insensitive ; 中文解释
2021-05-28 20:57:26
208
原创 测试指令重排
我们都知道语句之间可能存在指令重排,那么我们怎么知道语句发生了重排了,as - if-serial 就像是串行重排的两个条件:1、两条语句前后之间不依赖2、重排之后的执行结果和单线程一样看代码验证发生了指令重排两个线程在正常情况下,怎么运行都不会发生x==0&& y == 0 那么只有唯一的一种指令重排情况,需要运行的时间有点长。package 高并发.mashibinggaobingfa;import java.util.concurrent.CountDownLatch
2021-05-21 00:08:41
311
原创 三、每个查询的最大异或值(BiWeekly Contest 50)
题目描述:给你一个 有序 数组 nums ,它由 n 个非负整数组成,同时给你一个整数 maximumBit 。你需要执行以下查询 n 次:找到一个非负整数 k < 2maximumBit ,使得 nums[0] XOR nums[1] XOR … XOR nums[nums.length-1] XOR k 的结果 最大化 。k 是第 i 个查询的答案。从当前数组 nums 删除 最后 一个元素。请你返回一个数组 answer ,其中 answer[i]是第 i 个查询的结果。示例 1:输
2021-05-04 11:31:37
131
原创 一、最少操作使数组递增(BiWeekly Contest 50)
题目描述:给你一个整数数组 nums (下标从 0 开始)。每一次操作中,你可以选择数组中一个元素,并将它增加 1 。比方说,如果 nums = [1,2,3] ,你可以选择增加 nums[1] 得到 nums = [1,3,3] 。请你返回使 nums 严格递增 的 最少 操作次数。我们称数组 nums 是 严格递增的 ,当它满足对于所有的 0 <= i < nums.length - 1 都有 nums[i] < nums[i+1] 。一个长度为 1 的数组是严格递增的一种特殊
2021-05-04 11:29:02
881
原创 二、统计一个圆中点的数目(BiWeekly Contest 50)
题目描述:leetcode链接还是比较简单的,看题目给的提示数字不大,可以直接平方,不用开平方进行计算,一些简单的函数实现可以不调用系统自带的函数,尽量使用增强for循环代码class Solution { public int[] countPoints(int[][] points, int[][] queries) { int[] res = new int[queries.length]; for (int i = 0; i < queri
2021-05-04 11:26:36
162
原创 2021-04-21
第一章 ElasticSearch入门篇第一节 ElasticSearch概述1.1ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTfulweb接口。ElasticSearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。构建在全文检索开源软件Lucene之上的Elasticsearch,不仅能对海量规模的数据完成分布式索
2021-04-21 17:05:01
621
转载 Java动态代理机制详解(JDK 和CGLIB,Javassist,ASM)
转载Java动态代理机制详解(JDK 和CGLIB,Javassist,ASM)
2021-04-17 20:10:03
157
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人