FastAPI使用基础-性能篇

img

一. 前言

在局域网内部署了一个 web/api 服务, 基于性能和websocket使用的考量, 选择了fastapi, 借此探讨一下fastapi为何fast的原因.

FastAPI is a modern, fast (high-performance), web framework for building APIs with Python based on standard Python type hints.

Round 23 results - TechEmpower Framework Benchmarks

Web Framework Benchmark - Sharkbench

A 2024 benchmark of main Web API frameworks - Okami101 Blog

阅读全文 »

VBA高阶系列3: "原生"调用JavaScript脚本

img

一. 前言

对于爬虫有过较为深入了解的用户, 应该多少和JavaScript到过交道, 在爬虫的逆向很多时候都需要将目标页面的 js 文件存取到本地, 修改使之能够用于破解页面反爬. 通常这种脚本较为繁琐, 改成目标语言, 如python, 是相当麻烦, 虽然现在有ai的辅助, 可以将一些简单的js脚本转换为指定的语言, 但考虑到转换后的各种问题, 直接运行原脚本获取到需要的信息更为可靠和直接.

阅读全文 »

贝叶斯文本分类算法的JavaScript实现

一. 前言

img

img

( < 黑客与画家 >, Paul )

JavaScript(浏览器端)分词 | Lian (kyouichirou.github.io)这篇文章中提及js分词的实现. 本文则是js版本贝叶斯分类算法的实现, Kyouichirou/BiliBili_Optimizer: enjoy and control bilibili (github.com).

使用统计方法来实现垃圾内容过滤, 很早就想写的了, 但是由于在js端没有好的分词方案(), 一直没捣鼓, 直到发现原来js原生就支持分词, 这个想法马上付诸实现.

以下是对贝叶斯和文本分类算法的简单回顾, 逐步从基础推导出整个数学公式, 并根据python sklearnnative_bayes进行代码的修正, 给出了普通方式计算的代码.

由于需要在毫秒内实现, js脚本使用的分词方案是js原生分词api.

阅读全文 »

JavaScript进阶指南

一. 前言

img

[图: Copyright reserved by Mozilla]

JavaScript 的核心语言是 ECMAScript, 是一门由 ECMA TC39 委员会标准化的编程语言. " ECMAScript " 是语言标准的术语, 但" ECMAScript " 和" JavaScript " 是可以互换使用的.

个人相对青睐于JavaScript的语法结构和代码风格, 相对于Python.

阅读全文 »

MySQL使用指南

'''
    @author: HLA
    @github: https://github.com/Kyouichirou
    @version: 1.0
    @description: mysql基础与进阶; 基础, 查询, 配置, 管理.
    @license: MIT

    -- make thing better and simpler.
'''

一. 前言

MySQL更新到8.0之后, 很多内容发生较大的变化, 而搜索引擎/书籍查询到的大量信息还是基于5.x, 例如查询缓存这个机制在8.0就发生大的变化, 对于一些相对晦涩难懂的部分, 如日志, 锁, 事务, mvcc等更应注意, 这部分内容可查询到的信息相当混乱(陈旧, 错误), 大量混杂着各个时期MySQL的一些特性在其中, 遇到难以理解的部分应多查阅官方文档.

阅读全文 »

MySQL窗口函数(Window Function)详解

一. 前言

ppnYa7R.png

窗口函数(window function), 也称作OLAP, Online Analytical Processing,实时分析处理.

They can help boost query performance as an alternative to achieving the same result using more complex non-OLAP SQL code.

简而言之, 窗口函数大大强化了MySQL在数据分析上的能力, 通过窗口函数可以以相对简单的方式实现较为复杂的常态化数据输出, 例如经典的多层级汇总, topN问题, 多个区间之间得运算等.

以下内容, 先以简单的例子展示窗口函数的使用, 后使用相对复杂的内容来对窗口函数进行较深入的应用.

由于是在8.0后才增加的新特性, 搜索引擎/相关书籍提供的介绍较为简单和粗略, 相关参考主要以官方文档为主.

阅读全文 »

Python日志管理- Loguru

Loguru logo

一. 前言

Loguru is a library which aims to bring enjoyable logging in Python.

Did you ever feel lazy about configuring a logger and used print() instead?... I did, yet logging is fundamental to every application and eases the process of debugging. Using Loguru you have no excuse not to use logging from the start, this is as simple as from loguru import logger.

Also, this library is intended to make Python logging less painful by adding a bunch of useful functionalities that solve caveats of the standard loggers. Using logs in your application should be an automatism, Loguru tries to make it both pleasant and powerful.

pip install loguru

Delgan/loguru: Python logging made (stupidly) simple

loguru.logger - loguru documentation

简而言之, loguru是个开箱即用近乎傻瓜化的强大日志管理工具, 相比于原生的logging - Logging facility for Python - Python 3.13.7 documentation, loguru不需要复杂的封装, 也不需要复杂的配置, 拿来就可以用.

但需要注意, 在某些场景下的使用, 如: 多进程.

阅读全文 »

一个离谱的GitHub PR

一. 前言

事情是这样子的, 在整理python loguru日志管理工具的使用记录. 专门开了个章节用于阐述在多进程下的使用, 随即扩张了下内容, 谈到了fastapiuvicorn下多进程(workers )的使用, 在查询资料时, 在GitHub上看到某项目上的一个离谱PR, 然后就有了文本(不吐不快).

阅读全文 »

广告漏网之鱼的背后

一. 前言

img

在浏览知乎(ios17, 知乎app)的时候, 打开了一个搜狐页面, 诡异的一画出现, 搜狐这个页面居然充斥着广告. 这是难以理解的, 个人的网络一直处于相对可控的状态, 理论上这种明晃晃的广告是不可能出现在我的设备上. 特别是最近才刚刚梳理了一下本地的网络设备, 补充了一些广告拦截的内容, 搜狐这个广告也在整理的范围, 这就诡异了, 广告从何而来?

阅读全文 »