- 博客(39)
- 资源 (2)
- 收藏
- 关注
原创 从 Dify 到 Rill-Flow:大模型应用平台的进化之路
经过不断的发展和实践,我们的大模型应用平台从最初整合多个大模型 API 接口,提供简单的问答功能,并通过 dify 项目提供复杂工作流的流程编排能力,到后来将工作流引擎的执行切换到 rill-flow 项目,在保证前端操作体验不变的同时优化了工作流的性能表现和稳定性。
2024-12-19 18:01:21
1975
原创 缓存淘汰算法与 python 中 lru_cache 装饰器的实现
缓存淘汰算法与 python 中 lru_cache 装饰器的实现1. 引言2. 缓存淘汰算法2.1. 先进先出 -- FIFO2.2. 最不经常使用算法 -- LFU2.3. 最近最少使用算法 -- LRU2.4. 最近最常使用算法 -- MRU3. LRU 的实现 -- python&...
2019-11-26 10:15:16
2475
8
原创 聊聊时间管理
1. 引言大学的闲暇时间,我开始接触一个经典的 RTS 游戏 – warcraft3(魔兽争霸3),可是开始的时候连中等难度的电脑都打不过,查了很多攻略和资料,知道了很多兵种搭配的技巧依然于事无补,好在游戏本身提供了重看录像的功能 – replay,于是打开刚刚打完一局的 replay,想要好好看看自己与电脑到底分别在做什么。...
2019-11-16 14:11:55
1021
1
原创 GoLang 的并发编程与通信(一) -- goroutine 与通道
1. 引言服务端程序每一时刻都在经受着大量并发流量的考验,而如今,CPU 指令运行频率的提升已经面临瓶颈,只能通过核心数的增长来大幅提升其指令的执行能力。因此,现代程序设计中,并发编程的支持就显得越来越重要。GoLang 进行并发编程十分轻松,他有两种风格可供选择:goroutine 和通道通过共享内存同步的传统多线程模型本文,我们就来详细介绍一下&n...
2019-11-15 17:44:59
709
原创 通过 GoLang 的匿名函数与闭包特性实现函数式编程思想
1. 引言上一篇文章中,我们介绍了如何将一个并非设计用来实现面向对象思想的编程语言 – GoLang 进行封装,从而实现面向对象的特性:通过 GoLang 实现面向对象思想本文,我们来看看如何用 GoLang 现有的语法封装出另一个流行的编程思想 – 函数式编程。2. 函数式编程函数式编程思想中,...
2019-11-10 14:07:46
469
原创 通过 GoLang 实现面向对象思想
1. 引言面向对象是一种十分流行的编程思想,他改变了传统的面向过程编程思想看待问题的方式,先将所有实体定义为对象,然后为对象添加各自必须的属性和动作,从而让程序在设计的过程中,更为方便的抽取出实体的共性与差异,实现组件的替换以及更为复杂的各个设计模式,从而实现程序设计的高内聚与低耦合,进而提升程序的重用性、灵活性、扩展性、可读性和安全性。面向对象思想并不基于某个编程语言,例如在典型的面向过程语...
2019-11-04 17:11:44
630
原创 redis zset 的实现,基于链表的二分查找 -- 跳跃表源码解析
1. 引言二分查找是一个非常简单而实用的算法,其算法基本思想是在一个有序数组中查找某个元素时,通过对比数组中间位置元素与目标元素来淘汰数组中一半的元素,达到高效查找元素的算法目标。但是,二分查找是一个基于数组存储结构的算法,众所周知,数组是一个随机访问的性能卓越,但随机插入、删除元素的性能就比较差,只有 O(n) 时间复杂度,因此上述二分查找算法也存在原始数据不易增删的问...
2019-10-29 14:41:07
708
原创 详解 MySQL 执行计划 -- Explain
1. 引言此前我们介绍过 MySQL Innodb 性能优化的相关内容:Mysql Innodb 性能优化其中提到了执行计划 Explain 的使用,那么,究竟 explain 命令的结果中每一项数据都表示了什么意思呢?本文我们就来详细说明一下。2. explain 与优化器优化遇到&n...
2019-09-26 19:51:16
380
原创 MySQL 锁机制(下) -- 细说 InnoDB 行锁(记录锁、间隙锁与临键锁)
1. 引言上一篇文章中,我们介绍了 MySQL 中最基本的锁机制:共享锁(S 锁 – Shared Locks)排它锁(X 锁 – Exclusive Locks)意向共享锁(IS 锁 – Intention Shared Locks)意...
2019-09-21 21:05:33
1913
2
原创 MySQL 锁机制(上) -- 全局锁与表级锁
1. 引言数据库作为多用户共享的资源中心,总是存在着竞争条件,显然,加锁是最为简单的一种保证竞争条件安全性的措施。那么,mysql 锁是如何实现的,又有哪些分类?本文将为您详细讲述。2. mysql 中锁的分类mysql 中的锁可以按照多个维度进行分类。2.1. 按照工作原理分按照实现和工作原理,mysql 的锁可以分为:共享锁(S&nbs...
2019-09-18 19:46:09
556
原创 SQL 某状态耗时过多的优化
1. 引言此前的文章中,我们介绍了 mysql 最常用的存储引擎 – innodb 的性能优化。主要围绕参数、索引设置等方面进行。Mysql Innodb 性能优化事实上,在实际使用中,最为常见的性能问题大多是不合理的使用方式,即 sql 语句的问题引起的,因此与参数、索引优化相比,直接优化和修改&n...
2019-09-11 22:46:45
387
原创 史上最详尽,一文讲透 MVCC 实现原理
1. 引言上一篇文章中,我们介绍了 mysql 的 crash safe 机制,也是 ACID 中原子性的实现 – redolog 的原理和配置方法。mysql 异常情况下的事务安全 – 详解 mysql redolog本文,我们来介绍&nbs...
2019-09-11 22:45:41
21052
23
原创 mysql 异常情况下的事务安全 -- 详解 mysql redolog
1. 引言上一篇文章中,我们介绍了 mysql 的二进制日志 binlog,他为数据的同步、恢复和回滚提供了非常便利的支持。怎么避免从删库到跑路 – 详解 mysql binlog 的配置与使用无论我们使用的是什么存储引擎,只要通过配置开启,mysql 都会记录 binlog。在工程存储项目...
2019-09-09 19:44:07
2782
原创 怎么避免从删库到跑路 -- 详解 mysql binlog 的配置与使用
1. 引言使用数据库的时候,我们每个操作都十分小心,尤其是不能直接在数据库上执行 update、delete 等操作,否则万一忘记加全 where 条件,可能就会造成无法挽回的结果。有一句十分流行的调侃 – “从删库到跑路”就很形象的说明了误操作后的结果,那么如果你真的不小心执行了删库操作,真的就无法挽回了吗?当然不会了,通常对于线...
2019-09-09 19:38:42
506
原创 通过 pyinstaller 将 python 脚本打包成可执行程序
1. 引言很多时候,我们需要在 windows 环境编写和执行 python 脚本,但是去搭建一整套 python 运行环境看上去就过于繁琐了,即便是拥有 python 运行环境,脚本的执行也并不方便。如果能把 python 脚本封装在一个可执行的 exe 文件中,通过双击运...
2019-02-27 10:27:51
433
原创 SQL 某状态耗时过多的优化
1. 引言此前的文章中,我们介绍了 mysql 最常用的存储引擎 – innodb 的性能优化。主要围绕参数、索引设置等方面进行。Mysql Innodb 性能优化事实上,在实际使用中,最为常见的性能问题大多是不合理的使用方式,即 sql 语句的问题引起的,因此与参数、索引优化相比,直接优化和修改&n...
2019-02-18 16:27:06
5644
原创 netfilter/iptables 原理
1. 引言linux 3.5 版本内核开始集成一个 IP 信息包过滤系统 – iptables。利用 iptables,我们可以很有效的控制 IP 信息包的过滤条件和防火墙配置。他可以配置有状态的防火墙规则,通过发送或接收信息包所建立的连接的状态来对网络信息包进行过滤。本文我们就从原理出发,详细介绍一...
2019-01-23 18:31:54
3089
原创 SVM 数学描述的推导
1. 概述此前我们介绍了一个最优化分类算法 – logistic 回归。Logistic 回归数学公式推导本文中,我们再来介绍另一个最优化分类算法 – SVM。2. SVMSVM 是 Support Vector Machines&a
2019-01-13 14:55:26
615
原创 通过 zookeeper、redis 实现分布式服务治理
1. 引言微服务已经成为当下最为流行的分布式架构了。通过将系统拆分成若干个服务,将业务进行横向、纵向切分,而诞生出各个高度内聚、轻度耦合的微服务,组成微服务架构。微服务架构在其可维护性、责任分工上都有着很大的优势,更加有利于系统的组建、维护、问题的快速响应和解决。但是,微服务架构也存在着难以治理的缺点,由于服务数量众多,每个服务又有多台服务器提供服务,如何实时监控每台服务器的运行健康情况,...
2019-01-01 20:28:11
5683
原创 如何防止 Elasticsearch 脑裂问题
1. 引言此前,在 rabbitmq 系列文章中,我们介绍过脑裂问题。RabbitMQ 与脑裂问题所谓的脑裂问题,就是在多机热备的高可用 HA 系统中,当两个节点心跳突然断开,就分裂为了两个独立的个体,由于互相失去联系,都认为对方出现了故障,因此都会去争抢对方的资源,争抢启动,由此就会发生严重的后果。举个形象的例子,A 和&nbs...
2019-01-01 14:55:29
1876
原创 CPU load 高占用率低问题的彻底排查
1. 引言突然观察到服务器 load 过高,可是 CPU 占用率很低。这也算是一个常见问题了。那么,如何排查和解决这个问题呢?2. top 查看 cpu wait通过 top 命令,可以看到 CPU 的 wait 很高,可以参考:top 命令详解
2018-12-29 14:37:19
5416
原创 通过 Nexus3 搭建 pypi 私服
1. 引言上一篇日志中,我们详细介绍了如何通过 nexus3 搭建一个 maven 私服。详解通过 Nexus3.x 搭建 Maven 私服本文我们来介绍如何通过 nexus3 来搭建一个 python 的 pypi 私服。2. nexus&n
2018-12-23 09:31:16
2796
原创 基于 Twemproxy 与 Codis 的 redis 集群方案比较
1. 引言此前的文章中,我们介绍了三种 redis 集群和搭建方法。redis 集群详解及搭建过程事实上,第三种 redis 原生的 redis-cluster 同时具备了前两种的特性,既能够实现主备也能够实现故障时的自动选举和切换,因此通常在生产环境中会直接使用 redis-cluster 的方案。...
2018-12-04 15:03:37
2182
原创 Redis 的 MOVED 转向与 ASK 转向
1. 引言上一篇文章中,我们介绍了 redis 集群的搭建。redis 集群详解及搭建过程其中我们遇到了报错:这就是所谓的“MOVED转向”,那么什么是 MOVED 转向呢?本篇日志我们就来介绍一下。2. MOVED 转向当我们使用操作 redis 单节点的 client 来操作集群时...
2018-12-03 18:36:49
4307
原创 sklearn 实现 logistic 算法
1. 引言前面两篇文章中,我们介绍了 logistic 回归的原理和实现:Logistic 回归数学公式推导梯度上升算法与随机梯度上升算法本文,我们来看看如何使用 sklearn 来进行 logistic 回归呢。2. Sklearn 的 logistic&a
2018-12-02 14:10:33
2431
原创 redis 集群详解及搭建过程
1. 引言从 3.0 版本开始,redis 具备了集群功能,实现了分布式、容错、去中心化等特性,在生产环境中对于保证数据一致性和安全性、提高系统响应能力都有着很必要的意义。本文我们就来介绍 redis 集群的三种搭建模式和搭建方法。1.1. redis 集群的特性redis 集群的目标是线性可扩展性和保证最终一致性,因此...
2018-11-29 15:08:38
741
原创 梯度上升算法与随机梯度上升算法的实现
1. 引言上一篇日志中,我们最终推导出了计算最优系数的公式。Logistic 回归数学公式推导本文,我们就利用上一篇文章中计算出的公式来实现模型的训练和数据的分类。2. 通过 python 实现 logistic 算法有了上一篇日志中的公式,《机器学习实战》中的代码就非常容易理解了:# -*- coding:UTF-8 -*-# {...
2018-11-17 22:19:49
5761
5
原创 Logistic 回归数学公式推导
1. 引言此前的博客中,我们已经介绍了几个分类算法。k 近邻算法决策树的构建算法 – ID3 与 C4.5 算法朴素贝叶斯算法的推导与实践本文介绍的是另一个分类算法 – 逻辑斯蒂回归。他凭借易于实现与优异的性能,拥有着十分广泛的使用,他不仅可以进行二分类问题的解决,也可以解决多分类问题,简单起见,...
2018-11-16 12:26:38
14093
1
原创 linux 挂载硬盘
1. 引言linux 环境下挂载硬盘、U盘等设备是 linux 使用者常常需要做的一件事。本文详细介绍一下完整的操作步骤及每一步的意义。2. 安装硬盘首先第一步是安装硬盘到物理机上,如果是 SATA 口安装,那么是需要重启系统的。如果是 USB 等支持热插拔的接口安装,则不需要重启。3. ...
2018-11-16 12:16:16
354
原创 朴素贝叶斯算法优化与 sklearn 实现
1. 引言上一篇日志中,我们主要介绍了贝叶斯算法,并提供了 python 实践:朴素贝叶斯算法的推导与实践但运行上一篇日志中的示例,我们发现出现了下面的结果:['love', 'my', 'dalmation'] 属于非侮辱类['stupid', 'garbage'] 属于非侮辱类这显然是不正确的,本文,我们就来解决这个问题,同时对算法进行优化并使用&n...
2018-11-11 00:38:54
3613
原创 朴素贝叶斯算法的推导与实践
1. 概述在此前的文章中,我们介绍了用于分类的算法:k 近邻算法决策树的构建算法 – ID3 与 C4.5 算法但是,有时我们无法非常明确地得到分类,例如当数据量非常大时,计算每个样本与预测样本之间的距离或是构建决策树都会因为运算量过大而力不从心。2. 朴素贝叶斯理论假设我们有上面这个数据集,那么我们如何...
2018-11-11 00:36:26
505
原创 pymysql 解决 sql 注入问题
1. SQL 注入SQL 注入是非常常见的一种网络攻击方式,主要是通过参数来让 mysql 执行 sql 语句时进行预期之外的操作。例如,下面这段代码通过获取用户信息来校验用户权限:import pymysqlsql = 'SELECT count(*) as count FROM user WHERE id = ' ...
2018-11-08 13:11:03
1403
原创 记一次 MongoDB 占用 CPU 过高问题的排查
1. 引言今天查看监控无意间突然发现自己的服务器上,CPU 占用率飙升到 100%,load 升到 10 以上,登录的响应已经达到半分钟。马上运行 top,发现主要是 mongodb 占用了大量的 CPU,这是为什么呢?又该如何解决呢?2. 分析正在执行的请求通过运行命令:db...
2018-11-06 12:14:07
11706
2
原创 使用 sklearn 构建决策树并使用 Graphviz 绘制树结构
1. 概述之前两篇日志,我们系统性的介绍了决策树的构建算法、构建流程、展示与决策:决策树的构建算法 – ID3 与 C4.5 算法决策树的构建、展示与决策本文,我们来介绍如何使用 sklearn 构建决策树。2. sklearn之前我们已经介绍和使用过&am
2018-11-04 19:13:33
6218
1
原创 决策树的构建、展示与决策
1. 概述上一篇日志中,我们介绍了两个决策树构建算法 – ID3、C4.5:决策树的构建算法 – ID3 与 C4.5 算法本篇日志我们来看看如何使用这两个算法以及其他工具构建和展示我们的决策树。2. 使用 C4.5 
2018-11-03 18:49:04
520
1
原创 决策树的构建算法 -- ID3 与 C4.5 算法
1. 概述上一篇日志中,我们介绍了最简单的分类回归算法 – K 近邻算法。k 近邻算法本篇日志我们来介绍构建专家系统和数据挖掘最常用的算法 – 决策树。2. 决策树在系统流程图中,我们常常会构建决策树,例如上面的例子是一个简单的用于动物分类的专家系统,是一个典型
2018-10-29 23:05:14
910
原创 k 近邻算法
1. 概述上一篇日志中,我们了解了机器学习的一系列基本概念。本篇日志中我们来介绍最简单的分类算法:k 近邻算法(kNN)2. k 近邻算法k 近邻算法是一种采用测量不同特征值之间的距离的方法对样本进行分类的算法。他的工作原理是,存在一个样本数据集合,并且每个数据都存在分类标签,对于没有标签的新数据,将这个新数据的每个特征与样本集中
2018-10-27 14:22:40
574
原创 机器学习的基本概念
原文:机器学习的基本概念1. 概述随着机器学习越来越广泛的进入我们的生活,机器学习对我们生活的影响越来越大。作为一个计算机行业的工作者,机器学习学科的学习是必不可少的。说来惭愧,博主本是智能科学与技术专业毕业,《机器学习》《模式识别》《智能科学导论》等课程均是博主的专业课,但是由于长时间没有从事相关工作,早已将这些理论忘的差不多了,如今想要重拾起来,一窥其中的奥秘。2.&nbs...
2018-10-25 18:22:21
543
原创 java 基本语法
1. Java 的主要类型Java 主要类型类型大小(bit)对应类类型boolean1Booleanchar16Characterbyte8Byteshort16Shortint32Integerlong64Longfloat32Floatdouble64Double...
2018-10-25 17:14:17
235
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人