当前位置: 首页 > news >正文

造假高手——faker

在测试写好的代码时通常需要用到一些测试数据,大量的真实数据有时候很难获取,如果手动制造测试数据又过于繁重无聊,显得不够优雅,今天我们介绍的faker这个轮子可以完美的解决这个问题。faker是一个用于生成各种类型假数据的库,包括名字、地址、个人信息等等。

安装与导入

安装方法还是一如既往地使用pip,导入模块使用import:

pip install fakerimport faker

可以通过faker.VERSION查看当前的版本号,当前的版本是25.6.0:

import faker
print('version:', faker.VERSION)

快速入门

先上一个开胃菜,用Faker()创建一个实例后,就可以调用其各种方法产生数据了。比如可以生成人名:

# VX公众号:juzicode/桔子code
# www.juzicode.com
import faker
f = faker.Faker()
for _ in range(5):print(f.name())

运行结果:

Steven Willis
Benjamin Hill
Melvin Rojas
Jennifer Murphy
Joshua Campbell

还可以用来生成生日,电话号码,地址等等:

# VX公众号:juzicode/桔子code
# www.juzicode.com
import faker
f = faker.Faker()
for _ in range(3):print('------------')print(f.date_of_birth())print(f.phone_number())print(f.address())

运行结果:

------------
1997-09-01
529.482.9021
Unit 8185 Box 6814
DPO AA 37409
------------
2015-09-17
(301)615-7713x0680
7840 Day Harbor Suite 026
East Mathewmouth, VI 97795
------------
1910-03-22
562.480.2124
5117 Smith Garden Apt. 887
Mckeemouth, NY 41801

当然你也可以使用profile()方法一次性生成个人信息,它会返回一个字典:

# VX公众号:juzicode/桔子code
# www.juzicode.com
import faker
f = faker.Faker()
for _ in range(3):print('------------')print(f.profile()) 

运行结果:

------------
{'job': 'Plant breeder/geneticist', 'company': 'Chavez Group', 'ssn': '074-71-6734', 'residence': '73464 Ellen Oval Suite 221\nJohnstonton, MH 34069', 'current_location': (Decimal('24.686039'), Decimal('-72.858181')), 'blood_group': 'AB-', 'website': ['https://flores.net/'], 'username': 'millernicole', 'name': 'Johnathan Brown', 'sex': 'M', 'address': '758 Margaret Circles\nEast Kimberly, SD 83729', 'mail': 'donald53@hotmail.com', 'birthdate': datetime.date(1957, 12, 26)}
------------
{'job': 'Pharmacologist', 'company': 'Hines-Church', 'ssn': '227-59-1302', 'residence': '8967 Jones Dam Suite 855\nWest Joshua, AL 96476', 'current_location': (Decimal('-17.084763'), Decimal('-50.191502')), 'blood_group': 'B-', 'website': ['http://www.west.com/', 'https://smith-bond.com/', 'https://www.bennett.com/', 'http://www.riddle-henry.com/'], 'username': 'brobinson', 'name': 'Rebecca Wagner', 'sex': 'F', 'address': '16695 Benjamin Stravenue\nEast Ashleyport, RI 03937', 'mail': 'mary26@hotmail.com', 'birthdate': datetime.date(2010, 7, 23)}
------------
{'job': 'Scientist, water quality', 'company': 'Morrison-Smith', 'ssn': '764-95-8711', 'residence': 'Unit 7343 Box 8997\nDPO AE 53882', 'current_location': (Decimal('-45.831201'), Decimal('-108.873691')), 'blood_group': 'O-', 'website': ['http://www.peterson.info/', 'https://www.yu-garcia.com/', 'https://floyd.com/'], 'username': 'kellysabrina', 'name': 'Kevin Farrell', 'sex': 'M', 'address': 'PSC 8064, Box 5841\nAPO AP 42559', 'mail': 'brettobrien@gmail.com', 'birthdate': datetime.date(1975, 2, 17)}

在这个基础上再配合一些excel文件操作的轮子,就可以生成海量的个人数据表格了。

生成本地化数据

上面的例子产生的数据都是英文格式的,faker还支持本地化数据的生成,在创建实例的时候传入本地化名称就可以生成本地化的数据了,比如zh_CN表示简体中文,de表示德语:

# VX公众号:juzicode/桔子code
# www.juzicode.com
import faker
f = faker.Faker('zh_CN') # 简体中文
print(f.profile()) 
print('------------')
f = faker.Faker('de')    # 德语
print(f.profile()) 

运行结果:

{'job': '客户关系经理/主管', 'company': '昂歌信息网络有限公司', 'ssn': '500119198203064590', 'residence': '湖北省兴安盟县西夏张路E座 464036', 'current_location': (Decimal('7.489519'), Decimal('-87.200968')), 'blood_group': 'O-', 'website': ['https://www.br.cn/', 'https://yangtan.cn/', 'https://www.yan.cn/', 'http://www.liaodu.net/'], 'username': 'yongcheng', 'name': '王璐', 'sex': 'M', 'address': '天津市齐齐哈尔市 南长太原路j座 219593', 'mail': 'uma@hotmail.com', 'birthdate': datetime.date(1992, 5, 16)}
------------
{'job': 'Florist', 'company': 'Zorbach Linke GmbH', 'ssn': '091-65-7927', 'residence': 'Mosemanngasse 344\n40555 Ribnitz-Damgarten', 'current_location': (Decimal('-12.8105965'), Decimal('-116.973434')), 'blood_group': 'AB+', 'website': ['https://www.etzold.com/'], 'username': 'ruppertfrancesco', 'name': 'Pavel Tröst', 'sex': 'M', 'address': 'Heide-Marie-Kensy-Straße 52\n47818 Regensburg', 'mail': 'birgitfiebig@googlemail.com', 'birthdate': datetime.date(1922, 2, 15)}

从生成的数据可以看出不止语言种类变成本地的了,证件号码等也更符合本地习惯了。

生成Python类型数据

可以用faker构造Python各种类型的数据,调用方法的字面含义对应了各种数据类型:

# VX公众号:juzicode/桔子code
# www.juzicode.com
import faker
f = faker.Faker()
print(f.pybool())
print(f.pydecimal())
print(f.pyfloat())
print(f.pyint())
print(f.pyiterable())
print(f.pyobject())
print(f.pyset())
print(f.pystr())
print(f.pystr_format())
print(f.pystruct())
print(f.pytuple()) 

运行结果:

False
-7534455542987561356113628832979261.70990856922647895810773411809628052352287239687350573409296713442359054729
427159196.361446
6675
{'pgraham@example.net', Decimal('6872284488449216471957839793155854569545064378722120702945395180848502303424001840580570158125356748.7793062'), 'EXWgzlwSpyWFShgwHNDF', 'fSvHqsnaGWsGhEEJIotB', 'http://davis-mcclure.com/main/blogindex.html', datetime.datetime(1982, 12, 14, 23, 27, 57), 'fpexXngYbuLutAgmWOJE', 3096, 'http://briggs.org/blog/blogpost.jsp', datetime.datetime(1974, 12, 23, 16, 31, 21), 692152127.295639}
None
{1473, datetime.datetime(2012, 2, 20, 4, 35), Decimal('-8691892256320476451330461966694019289630053652.9818474697172363980351686154'), Decimal('-6092666319162567623091417475408257822206629559682585452982.094118774251103965849'), 6213, 'RrnoGIfvmuQBoBdlpIzc', 'https://gutierrez.biz/searchfaq.html', 'cSPqoWxjwTfEGHIKNljK', 'https://phillips-choi.biz/main/tag/wp-contenthome.php', 'uihAHgngmSfDDgHLGIJP', datetime.datetime(1997, 7, 31, 19, 57, 25)}
zayyBBMnNEVRiNfyeajH
k1-1575907r
(['UBTxMuBnQwCobUpxgQMQ', 'UVgQcMuLMHuCvdJPEbZa', 'BoBuRkizqOoGIrcnKdkL', 'IDYDljKXsDfajdMZSHTV', 'nSSiJrTtQfnltbOhvWUv', 'leekathleen@example.net', 262, 'perezpatricia@example.org', Decimal('-533959985214553907880347948693.63324148979663176726156215249'), 'https://hill.com/wp-contentprivacy.html'], {'begin': 'lSqLniOoqxYItDeukapD', 'letter': 'mbBTFWLBAAsdQNhoeUWu', 'production': -3546120093.9101, 'past': datetime.datetime(2016, 11, 6, 18, 15, 1), 'drug': -29630.3663326707, 'present': -51749807124277.3, 'good': 1911, 'southern': 'EaJaouSqDJecbdJZturi', 'none': 'bzEbchIXdkfbPszdbPmB', 'beautiful': 2315}, {'take': {0: datetime.datetime(1979, 2, 9, 20, 6, 32), 1: ['http://blanchard.com/posts/postssearch.asp', 'eyOFbMgJDVBvHJcVQecY', 'melissanoble@example.net'], 2: {0: 9525, 1: 'victoriajones@example.com', 2: [datetime.datetime(2002, 10, 2, 5, 18, 42), 'DiABZjAdOLMOpBLNEUHC']}}, 'son': {1: 7976, 2: [1952, 2295, 'oholmes@example.org'], 3: {1: 'MtcCstAHTIsfirDyPZaA', 2: 'williamsbenjamin@example.org', 3: ['OVbtFiFUfHMvtfpIvzfq', 'CkyKLHWtxZoSMohOlZxD']}}, 'build': {2: 'http://munoz-cunningham.com/listregister.asp', 3: [39445.420028368, datetime.datetime(1982, 5, 15, 21, 40, 31), 7613], 4: {2: 'https://www.wright.com/explorefaq.htm', 3: -747788701919.703, 4: ['BwsyBqsXBLFediJnuadz', 5232]}}, 'major': {3: 'uQywiJzpStzsfVzeydIb', 4: [5285, 'bellmegan@example.com', Decimal('13643880946233419338490611479883994244038422660712924459842967394420958219281339340894537943982755.72183838529930169635960503603484140907480')], 5: {3: 'WGHMzNrGZVnZDTYSSiwv', 4: 1098, 5: [Decimal('581667631758055.948919259694472081221547906118090694694246000805018461205162489186334117'), 55655088534506.9]}}, 'alone': {4: 'floUhEjRbrcSlAgcUpKD', 5: [Decimal('40460646468928113699089077054899257009329837469260688073185695917293247833429683896.714863632410773250047819137693371237432869444562'), Decimal('908359844318342044820741412710171302924614850402079414883000182982603257371834095009905194897618.522803095432216'), 9565], 6: {4: 7628, 5: 'http://www.morales.com/tags/blogauthor.php', 6: ['ywofrJlhNlRygzWaQyFG', 'LCPEXbaOMvySYXOJWTpr']}}, 'best': {5: 'SpDVimYBzlhDJuNqkCWZ', 6: ['http://huang-wilson.org/tagterms.php', 'pLHKBjnndXRwnCHWsOGA', 'lrBxOnsJaIVKUGzxzFmD'], 7: {5: 'nHqumVtLaojDxgWRSRWt', 6: datetime.datetime(1981, 3, 11, 7, 30, 36), 7: [-65287331886129.9, 'mCPAlfJeIDeJPSjXhYJh']}}, 'bed': {6: 603974611145.587, 7: [datetime.datetime(2022, 4, 5, 11, 27, 34), 6993, 'gzDaXfcJCtnKAPAcLFhP'], 8: {6: 'kerjRozaRPCDbZTQDmgp', 7: 'wdKSJclVYlacchXshEed', 8: ['uyonjvlKDYXjQHHQUFdV', 'http://alvarez.net/categorieshomepage.html']}}, 'maintain': {7: 'IGgpKZaLhMvnHemTlGPU', 8: [datetime.datetime(1981, 1, 9, 19, 3, 5), 'tkOvlzaRCBKBtvyyqYNF', 958512.14122953], 9: {7: datetime.datetime(1985, 8, 2, 17, 12, 38), 8: -90490922.8079221, 9: [1267, 1876]}}, 'series': {8: 'scottdanielle@example.net', 9: ['http://ferguson.com/postsabout.html', 'http://www.johnson.net/explore/posts/categorycategory.html', 'gRlIYioszFWXCQrIOxnh'], 10: {8: 'http://cole.com/search/categorieshome.html', 9: 'TYUeKnLxGuUmzRJkkgvS', 10: ['zkVQuXYdxBGvUtFwUoPS', 2525]}}, 'final': {9: datetime.datetime(2002, 4, 27, 18, 23, 7), 10: [8014, Decimal('-321878064168199974704821670217881200123635942527.2989283812924630'), 7818], 11: {9: 3947, 10: datetime.datetime(1973, 11, 6, 4, 2, 39), 11: [746, -233.858433632642]}}})
(-68966651.3545535, 'tSldfjPXVumsygGlregG', Decimal('8655211367549380687362246206540408714340924126865723445408313926282213290900553.7363316869323588360628883398509312389090488'), 'http://www.boyle-neal.info/tag/wp-content/categoryauthor.html', 1321, -21.578299715633, -910.317290443833, 'EoLTtwTlZktihakadESE')

生成时间数据

用faker生成日期、星期、时区等时间数据:

# VX公众号:juzicode/桔子code
# www.juzicode.com
import faker
f = faker.Faker()  
print(f.date())         # 日期
print(f.time())         # 时间
print(f.date_time())    # 日期和时间 
print(f.timezone())     # 时区
print(f.iso8601())      # iso8601时间
print(f.year())         # 年
print(f.month())        # 月
print(f.day_of_month()) # 日 
print(f.day_of_week())  # 星期

运行结果:

1998-09-04
18:56:33
2002-05-29 22:59:23
Africa/Freetown
2019-10-22T21:23:01
1975
03
20
Wednesday

生成颜色数据

用faker生成颜色名称、16进制颜色数值、RGB颜色数值:

# VX公众号:juzicode/桔子code
# www.juzicode.com
import faker
f = faker.Faker()  
print(f.color_name())  
print(f.hex_color())     
print(f.rgb_color())  

运行结果:

LightCyan
#cc958d
21,126,12

命令行工具

faker还提供了命令行工具,直接在命令行中生成数据。下面的例子在命令行生成5条地址信息,其中-l指定本地化语言,-r后面带生成数据的条数:

E:\juzicode\faker造假高手>faker address  -l zh_CN  -r 5  
海南省成都市清浦胡街M座 379873贵州省雪梅县大兴辛集路z座 521807江苏省梧州市涪城康路B座 763552陕西省宁德县沈河吴路m座 763816吉林省坤县静安姚街L座 838843

你还可以通过-h参数查看帮助解锁到更多的技能:

E:\juzicode\faker造假高手>faker -h
usage: faker [-h] [--version] [-v] [-o output] [-l LOCALE] [-r REPEAT] [-s SEP] [--seed SEED] [-i [INCLUDE ...]] [fake] [fake argument ...]faker version 25.6.0positional arguments:fake                  name of the fake to generate output for (e.g. profile)fake argument         optional arguments to pass to the fake (e.g. the profile fake takes an optional list of comma separated field names as the first argument)options:-h, --help            show this help message and exit--version             show program's version number and exit

通过前面的介绍,我们了解了faker的基本用法,本文列出的案例只是faker库的一小部分功能,你还可以用faker生成ip地址、邮箱地址、用户代理等互联网数据,也可以生成文本数据、财务数据、地理数据、文件名称等。

相关文章:

造假高手——faker

在测试写好的代码时通常需要用到一些测试数据,大量的真实数据有时候很难获取,如果手动制造测试数据又过于繁重无聊,显得不够优雅,今天我们介绍的faker这个轮子可以完美的解决这个问题。faker是一个用于生成各种类型假数据的库&…...

前端工程化工具系列(十二)—— PostCSS(v8.4.38):CSS 转换工具

PostCSS 是转换 CSS 语法的工具。它提供 API 来对 CSS 文件进行分析和修改它的规则。 PostCSS 本身并不能直接使用,主要是使用基于 PostCSS 编写的插件。 1 安装 pnpm add -D postcss-import postcss-nested postcss-preset-env cssnano2 配置 在项目根目录下创…...

Scanpy(3)单细胞数据分析常规流程

单细胞数据分析常规流程 面对高效快速的要求上,使用R分析数据越来越困难,转战Python分析,我们通过scanpy官网去学习如何分析单细胞下游常规分析。 数据3k PBMC来自健康的志愿者,可从10x Genomics免费获得。在linux系统上,可以取消注释并运行以下操作来下载和解压缩数据。…...

【Stable Diffusion】(基础篇二)—— Stable Diffusion图形界面介绍和基本使用流程

本系列笔记主要参考B站nenly同学的视频教程,传送门:B站第一套系统的AI绘画课!零基础学会Stable Diffusion,这绝对是你看过的最容易上手的AI绘画教程 | SD WebUI 保姆级攻略_哔哩哔哩_bilibili 在上一篇博客中,我们成功…...

OpenCv之简单的人脸识别项目(动态处理页面)

人脸识别 准备九、动态处理页面1.导入所需的包2.设置窗口2.1定义窗口外观和大小2.2设置窗口背景2.2.1设置背景图片2.2.2创建label控件 3.定义视频处理脚本4.定义相机抓取脚本5.定义关闭窗口的函数6.按钮设计6.1视频处理按钮6.2相机抓取按钮6.3返回按钮 7.定义关键函数8.动态处理…...

【Linux】进程间通信

目录 一、进程间通信概念 二、进程间通信的发展 三、进程间通信的分类 四、管道 4.1 什么是管道 4.2 匿名管道 4.2 基于匿名管道设计进程池 4.3 命名管道 4.4 用命名管道实现server&client通信 五、system V共享内存 5.1 system V共享内存的引入 5.2 共享内存的…...

UI与前端:揭秘两者的微妙差异

UI与前端:揭秘两者的微妙差异 在数字化时代的浪潮中,UI设计和前端开发已成为塑造用户体验的两大核心力量。然而,这两者之间究竟有何区别?本文将深入剖析UI设计与前端开发的四个方面、五个方面、六个方面和七个方面的差异&#xf…...

idea如何根据路径快速在项目中快速打卡该页面

在idea项目中使用快捷键shift根据路径快速找到该文件并打卡 双击shift(连续按两下shift) -粘贴文件路径-鼠标左键点击选中跳转的路径 自动进入该路径页面 例如:我的实例路径为src/views/user/govType.vue 输入src/views/user/govType或加vue后缀src/views/user/go…...

探索成功者的特质——俞敏洪的观点启示

在人生的舞台上,我们常常对成功者充满好奇与敬仰,试图探寻他们成功的奥秘。俞敏洪指出,成功者都具备七个特质,而这些特质与家庭背景和大学的好坏并无直接关系。让我们深入剖析这七个特质,或许能从中获得对我们自身成长…...

MCU的环形FIFO

fifo.h #ifndef __FIFO_H #define __FIFO_H#include "main.h"#define RINGBUFF_LEN (500) //定义最大接收字节数 500typedef struct {uint16_t Head; // 头指针 指向可读起始地址 每读一个,数字1uint16_t Tail; // 尾指针 指…...

使用proteus仿真51单片机的流水灯实现

proteus介绍: proteus是一个十分便捷的用于电路仿真的软件,可以用于实现电路的设计、仿真、调试等。并且可以在对应的代码编辑区域,使用代码实现电路功能的仿真。 汇编语言介绍: 百度百科介绍如下: 汇编语言是培养…...

【漏洞复现】Apache OFBiz 路径遍历导致RCE漏洞(CVE-2024-36104)

0x01 产品简介 Apache OFBiz是一个电子商务平台,用于构建大中型企业级、跨平台、跨数据库、跨应用服务器的多层、分布式电子商务类应用系统。是美国阿帕奇(Apache)基金会的一套企业资源计划(ERP)系统。该系统提供了一整套基于Java的Web应用程序组件和工具。 0x02 …...

数据库表中创建字段查询出来却为NULL?

起因: 今天新创建了一张表,其中一个字段命名为"word_num"带下划线,我在前端页面怎么也查询不出来word_num的值,后来在后端接口处打印了一下数据库查询出来的数据,发现这个字段一直为NULL,然后我就想到是不是…...

缓存方法返回值

1. 业务需求 前端用户查询数据时,数据查询缓慢耗费时间; 基于缓存中间件实现缓存方法返回值:实现流程用户第一次查询时在数据库查询,并将查询的返回值存储在缓存中间件中,在缓存有效期内前端用户再次查询时,从缓存中间件缓存获取 2. 基于Redis实现 参考1 2.1 简单实现 引入…...

【十大排序算法】快速排序

在乱序的世界中,快速排序如同一位智慧的园丁, 以轻盈的手法,将无序的花朵们重新安排, 在每一次比较中,沐浴着理性的阳光, 终使它们在有序的花园里,开出绚烂的芬芳。 文章目录 一、快速排序二、…...

linux系统ubuntu中在命令行中打开图形界面的文件夹

在命令行中打开当前路径,以文件管理器的形式打开: 命令 # 打开文件管理器 当前的路径 nautilus .nautilus 是一个与 GNOME 桌面环境集成的文件管理器的命令行启动程序。在 Linux 系统中,特别是使用 GNOME 作为桌面环境时,用户经…...

【C++11数据结构与算法】C++ 栈

C 栈(stack) 文章目录 C 栈(stack)栈的基本介绍栈的算法运用单调栈实战题LC例题:[321. 拼接最大数](https://leetcode.cn/problems/create-maximum-number/)LC例题:[316. 去除重复字母](https://leetcode.cn/problems/remove-duplicate-letters/) 栈的基…...

pdf文件如何防篡改内容

PDF文件防篡改内容的方法有多种,以下是一些常见且有效的方法,它们可以帮助确保PDF文件的完整性和真实性: 加密PDF文档: 原理:通过设置密码来保护PDF文档,防止未经授权的访问和修改。注意事项:密…...

QT 音乐播放器【二】 歌词同步+滚动+特效

文章目录 效果图概述代码解析歌词歌词同步歌词特效 总结 效果图 概述 先整体说明一下这个效果的实现,你所看到的歌词都是QGraphicsObject,在QGraphicsView上绘制(paint)出来的。也就是说每一句歌词都是一个图元(item)。 为什么用QGraphicsView框架&…...

关于怎么用Cubemx生成的USBHID设备实现读取一体的鼠标键盘设备(改进版)

主要最近做了一个要用STM32实现读取鼠标键盘一体的那种USB设备,STM32的界面上要和电脑一样的能通过这个USB接口实现鼠标移动,键盘的按键。然后我就很自然的去参考了正点原子的例程,可是找了一圈,发现正点原子好像用的库函数&#…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解

在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...

Windows安装Miniconda

一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...

Vue 3 + WebSocket 实战:公司通知实时推送功能详解

📢 Vue 3 WebSocket 实战:公司通知实时推送功能详解 📌 收藏 点赞 关注,项目中要用到推送功能时就不怕找不到了! 实时通知是企业系统中常见的功能,比如:管理员发布通知后,所有用户…...

门静脉高压——表现

一、门静脉高压表现 00:01 1. 门静脉构成 00:13 组成结构:由肠系膜上静脉和脾静脉汇合构成,是肝脏血液供应的主要来源。淤血后果:门静脉淤血会同时导致脾静脉和肠系膜上静脉淤血,引发后续系列症状。 2. 脾大和脾功能亢进 00:46 …...

基于小程序老人监护管理系统源码数据库文档

摘 要 近年来,随着我国人口老龄化问题日益严重,独居和居住养老机构的的老年人数量越来越多。而随着老年人数量的逐步增长,随之而来的是日益突出的老年人问题,尤其是老年人的健康问题,尤其是老年人产生健康问题后&…...