概述 对于程序员来说,写技术文档是一项必备的技能。...由于GitHub和Markdown格式的普及,很多时候我们可以用markdown来简便地写出技术文档,并且 通过GitHub Pages等工具快速地进行技术文档的部署。...本身支持的语法比较简单,一些复杂的像Warning等提示没法直接用Pages的默认主题来实现 Pages 默认显示的是单页文档,没有侧边栏、导航栏等工具 Pages 默认主题无法搜索文档内容 Pages...另外一种学习配置的方式是直接查看上面提到的开源项目源码根目录下的mkdocs.yml文件,复制这个文件过去,就能得到类似的布局效果。...在本地运行文档生成服务,可在浏览器中访问localhost:8000查看文档的效果 mkdocs build: 非必需,在sites 目录中生成最终的HTML文件 由于命令比较简单,没有什么太多东西,
用 Python 实现一个入门级的小脚本,涉及到文件读写、命令行参数、数组操作应用等知识点,在此分享给朋友们。...需求实现 我有一个 Markdown 文档,长成下面这个样子: # ACM/OI Journey在此留下刷题痕迹与刷题心得。不定期的方法论总结在这里[./notes/README.md](....记得Python猫曾经有篇文章[2],讲过为什么 Python 中的注释符号是 # 而不是 // 。 原因很可能是:Python的老本行,就是写这一个个易用的脚本文件的,与shell类似。...,我在命令行执行该脚本,则文档自动规整。...PiperLiu / ACMOI_Journey: https://github.com/PiperLiu/ACMOI_Journey [2] Python猫曾经有篇文章: Python猫:Python为什么用
一、前言 以前,我们学C语言的时候,多多少少都查过一些标准库函数吧。这里介绍查找C语言的标准库函数的两种方法:一种方法是直接到http://www.cplusplus.com这个网站上去查看: ?...另一种方法是,找一些离线的文档,网上有不少人整理了一些离线的文档,比如.chm格式(已编译的帮助文件)的文档: ? 里面大概是这样子的: ?...最近需要对自己的一些代码做一些整理,发现整理成.chm文件是个不错的选择,.chm文件可以根据我们的代码生成,下面把生成.chm文件的方法分享给大家。...其中doxygen是一种开源跨平台的文档系统,doxygen可以从一套归档源文件开始,生成HTML格式的在线类浏览器,或离线的LATEX、RTF参考手册。...doxygen可以生成好几种格式的文档,要生成.chm格式的手册就必须安装htmlhelp,要生成关系图必须安装依graphviz。
其中,NanoID 是 UUID 的主要竞争对手之一。 因此,在本文中,我们将展开讨论 NanoID 的功能、它的亮点以及它的局限性,以便让我们更好地了解何时使用它。...了解 NanoID 及其用法 对于 JavaScript,生成 UUID 或 NanoID 都非常简单。它们都有对应的 NPM 包来帮助我们实现生成。...由于 NanoID 使用比 UUID 更大的字母表,因此较短的 ID 可以用于与较长的 UUID 相同的目的。...自定义字母 NanoID 的另一个现有功能是它允许开发人员使用自定义字母表。...但是,与 UUID 相比,NanoID 更短且可读。 另外,如果你使用 NanoID 作为表的主键,如果你使用相同的列作为聚集索引也会出现问题。这是因为 NanoID 不是连续的。
本页目录 IdUtil案例 常见ID生成策略 UUID ❄️雪花算法(我觉得了解再多,还得是万能的雪花算法❄️) MongoDB唯一主键 Redis自增主键策略 IdUtil案例 演示了:UUID、nanoID...,就在这里统一搜集整理一些常见的ID策略 常见ID生成策略 UUID 案例:144985ec-458d-49c5-8338-ba325eca5322 特点:无序、数字与小写英文、长度36位 缺点:无序、...长度太长,超低概率可能会重复 ❄️雪花算法(我觉得了解再多,还得是万能的雪花算法❄️) 特点:纯数字、自增、每秒26万个ID、长度19 雪花算法是推特公司开源的工具:想了解前往本站:https://www.zanglikun.com.../2941.html 曾经有次面试问到我这个问题,问我雪花算法需要哪些参数。...MongoDB唯一主键 这里是Hutool工具集成的MongoDB唯一ID生成,我才了解的。
前言 在开发中读取项目中的配置或者静态文件是家常便饭的事情,我相信很多同学都从网上找下面的例子来进行文件加载读取操作。...为什么我这么清楚?因为我也这么干过。但是现在我已经不这么干了,因为我发现了 Spring 框架提供了更加好用的加载读取文件的方式。 2....这时我们可以通过 Spring 提供的ClassPathResource来访问。例如在我最新的微信支付 SDK 项目中要加载微信支付的证书: ?...微信支付开发包:https://felord.gitee.io/payment-spring-boot ClassPathResource 的坑 说到获取文件对象的getFile()方法,这里是有一个小坑的...当你利用这个方法去读取 Jar 包里面类路径的文件的时候是行不通的。 经过代码调试,发现加载的地址是一个 Jar 文件协议地址,它类似这种格式jar:file:/xxx/xx.jar!/xxxx。
Oracle导出的文件为什么用Excel打开是乱码? 1 问题现象 Oracle字符集是AL32UTF8,查询表中的非英文字符显示正常,但是用utl_file写到CSV文件用Excel打开是乱码。...2 问题分析 首先可以肯定: (1)utl_file写文件是按照二进制输出,不会改变数据的编码,它不受环境变量NLS_LANG控制。 (2)数据库中的数据是正常的。...那么,Excel错误很可能是Excel本身的问题,测试下用Notepad++打开文件,显示正常,显示格式为UTF8无BOM格式。...如果用Notepad++把文件转换成UTF8格式,即加上BOM,再用Excel打开就是正常的了。...3 解决方案 如果需要utl_file导出的UTF8格式的文件用Excel打开没有乱码,可以在文件头加上BOM,在Oracle中可以用chr(15711167)表示。
= nanoid() //=> "4f90d13a42"自定义随机字节生成器customRandom 允许您创建一个 nanoid 并替换字母表和默认的随机字节生成器。...如果要使用与 customRandom 相同的URL友好符号, 你可以使用 urlAlphabet 获取默认字母表。...下面的 polyfill 适用于普通 React Native 和从 39.x 开始的 Expo。检查 react-native-get-random-values 文档并安装它。...需要一个前缀来防止这个问题,因为 Nano ID 可能在默认情况下使用 _ 作为 ID 的开头。在默认情况下,在 ID 的开头使用 _。用下面的选项覆盖默认的 ID。...你可以使用下面这些移植,获取在客户端和服务器端相同的ID生成器。
之前我们在写项目的实体类的时候,只是简单的写一个实体类,但是现在我们想要让实体类在swagger界面显示, 首先是写一个实体类 只要这个实体在请求接口的返回值上(即使是泛型),都能映射到实体项中:...ApiModelProperty("用户名") public String username; @ApiModelProperty("密码") public String password; } 这个实体类上面的注解的意思...,只是给这个类名,属性名的一个注释,可以让这个注释在swagger页面显示,好解释对应的这个是啥意思。...之后在controller层写一个接口,返回值是user对象 ? 启动项目,我们就可以看到 ? ?...注:并不是因为@ApiModel这个注解让实体显示在这里了,而是只要出现在接口方法的返回值上的实体都会显示在这里,而@ApiModel和@ApiModelProperty这两个注解只是为实体添加注释的。
之前有很多朋友问我,我的开源项目文档网站是用什么搭建的。其实是用Docsify搭建的,具体可以参考如何写出优雅的开源项目文档 。...最近发现使用VuePress可以搭建一个功能强大的文档网站,推荐给大家! VuePress简介 VuePress是Vue驱动的静态网站生成器。...这里选择的是vuepress-theme-vdoing,一款简洁高效的知识管理&博客主题,用来搭建文档网站绰绰有余。 学了技术老忘怎么破?用Vdoing搭建一个知识库试试!...,需要给目录和文件添加序号,比如下面的目录; 在此目录结构下,一级目录被称为专栏,二级目录为专栏内容,专栏之间是相互独立的,上面的目录结构将生成如下结构的侧边栏,同时也会生成右侧的大纲栏; 如果你还想给专栏添加个目录页的话...总结 使用VuePress+Vdoing来搭建文档网站不仅炫酷而且功能强大!对比Docsify的动态生成文档,VuePress生成静态页面性能更好,同时对SEO也更友好。
也许过去十年在计算机视觉和机器学习方面的突破是GANs(生成式对抗网络)的发明——这种方法引入了超越数据中已经存在的内容的可能性,是一个全新领域的敲门砖,现在称为生成式建模。...然而,需要注意的是,这种细粒度图像生成也是扩散模型的主要优势之一,因此,使用它们是一种矛盾。 另一个来自NLP领域的非常著名的方法系列是transformer。...这个交叉注意力层实现了注意力(Q,K,V) = softmax(QKT/✔)V,而Q,K和V是可学习的投影矩阵。 文本到图像合成 我们使用python中LDM v4的最新官方实现来生成图像。...这个过程在概念上类似于基于风格的GAN模型,然而,它在保留图像的语义结构方面做得更好。 结论 我们已经介绍了图像生成领域的最新发展,称为潜扩散模型。...ldm在以精细细节生成不同背景的高分辨率图像方面是鲁棒的,同时还保留了图像的语义结构。因此,LDM是图像生成特别是深度学习方面的一个进步。
非关系型数据库(如MongoDB、Redis)则更适合存储非结构化数据,如文档、键值对等。...大模型的参数:人工智能的“智慧核心” 与数据库不同,大模型是基于深度学习的人工智能技术的核心组成部分。大模型(如GPT、BERT)是一种复杂的神经网络结构,专门用于自然语言处理(NLP)和生成任务。...它们通过大量的文本数据进行训练,学习语言的模式、规律和语义。大模型的核心是其参数,这些参数是模型在训练过程中学习到的知识,决定了模型如何理解和生成语言。...数据库是被动的,它存储数据并等待用户查询,而大模型的参数是主动的,它们能够根据输入的提示生成新的内容。例如,当用户输入一个句子或问题时,大模型会利用其参数理解上下文,并生成一个连贯且符合语义的回答。...模型通过复杂的数学运算和神经网络结构来理解和生成语言,其内部的知识表示是高度抽象的。 最后,数据库的灵活性相对较低,它只能提供已有的数据,无法生成新的内容。
什么是MongoDB? MongoDB 是一个面向文档的 NoSQL 数据库,用于存储大量数据。MongoDB 使用集合和文档,而不是传统关系数据库中的表和行。...MongoDB 是一个最早出现在 2000 年代中期的数据库。 NoSQL 数据库是传统 SQL 数据库的替代品,它几乎包含 RDBMS(关系数据库管理系统)系统中的所有功能。...我们无法通过标准的 RDBMS 数据库获得这种功能。 MongoDB的优势 与关系数据库相比,性能调整轻而易举。 非常容易扩展。...因为它是一个 NOSQL 数据库,它本质上是安全的,因为它不能执行 SQL 注入。 MongoDB 支持的文档查询语言在支持动态查询方面起着至关重要的作用。 MongoDB 不需要使用虚拟机。...MongoDB 也可以用作文件系统,这使得负载平衡更加容易。 有大量可访问的文档。 是什么让 Mo
格式问题 在MySQL中,可以使用UUID()来生成主键,但是用MySQL的UUID()函数 ,生成的UUID是36位的,其中包含32个字符以及4个分隔符(-),往往这个分隔符对我们来说是没有用的,可以使用...NanoID UUID 是软件开发中最常用的通用标识符之一。然而,在过去的几年里,其他的竞品挑战了它的存在。其中,NanoID 是 UUID 的主要竞争对手之一。但是,这两者之间的主要区别很简单。...它归结为键所使用的字母表。由于 NanoID 使用比 UUID 更大的字母表,因此较短的 ID 可以用于与较长的 UUID 相同的目的。 ❖ 优点 更小 NanoID 只有 108 个字节那么大。...;二、UUID是完全随机的,无法生成递增有序的UUID。...序列号位(12bit) 该序列是用来在同一个毫秒内生成不同的 ID。如果在这个毫秒内生成的数量超过 4096 (2 的 12 次幂),那么生成器会等待到下个毫秒继续生成。
生成器(generator) 生成器我们也在之前的文章当中介绍过,为什么我们介绍协程需要用到生成器呢,是因为Python的协程底层就是通过生成器来实现的。...通过生成器来实现协程的原因也很简单,我们都知道协程需要切换挂起,而生成器当中有一个yield关键字,刚好可以实现这个功能。...生成器我们很熟悉了,本质上就是带有yield这个关键词的函数。...输出的0,1,2很好理解,就是通过next(g)返回的,这个也是生成器的标准用法。奇怪的是为什么val=None呢?val不应该等于n么?...加上了@asyncio.coroutine注解的函数称为协程函数,我们可以用iscoroutinefunction()方法来判断一个函数是不是协程函数,通过这个协程函数返回的生成器对象称为协程对象,我们可以通过
主要利用这个工具生成开发文档,让前端后端工程师使用这个文档开发代码,前后台耦合性变小。...号称世界上最流行的API框架 Restful Api 文档在线自动生成器 => API 文档 与API 定义同步更新 直接运行,在线测试API 支持多种语言 (如:Java,PHP等) 官网:https...得导入两个依赖,一个是核心依赖,一个是界面依赖,swagger是有自己单独的界面的。导入这个依赖之后,我们就可以看见了。 3 配置swagger ?...以上是多了一个接口,但是现在 的问题是,我们在后端不管写几个接口,在swagger都会显示,这个是不好的,我们现在相的是,可以控制显示的接口,想让哪个接口显示那么就让哪个接口显示,这个怎么做,这个就又要到...2 我们希望上线的时候不使用这个swagger,开发的时候使用,这个咋处理 yml文件是一般项目里面有两个,一个是测试yml,一个是上线的yml,那么我们就需要在swagger配置类里面配置了,看看现在使用的是什么
HahahahahaSoFunny 为什么 Docker 和 Kubernetes 工具是用 Go 写的而不是 C#? 总所周知,现在开发人员使用的很多新工具大多是用 Go 写的。...我认为用 C# 编写更多有趣和有用的开源工具,可以大大的改变人们的看法。...haho5: 不确定为什么 Docker 是用 Go 写的, 但是 Kubernetes 确实是 Google 开发的, 并且 Golang 也是。...而像 C/C++ 这样的稍微低级的语言可以让您更接近硬件,对性能有要求时,这是最合适的。 我可以用螺丝刀敲打钉子很多次,也可以用锤子花很大的力气把螺丝打进去,都可以完成工作。...它从 2.0 到现在的 10.0 变化非常快,相同的代码逻辑可以用太多不同的方式编写。 而 GO 是一门简单的语言,很受欢迎,因为好的代码应该易于阅读和理解,以便成千上万的开源程序员做出贡献。
今天,就让我们一起探索Doris数据导入的奥秘。不仅要知其然,更要知其所以然。 Doris数据导入全攻略:从入门到实践 "数据如何高效导入Apache Doris?" 这个问题困扰着很多数据工程师。...根据汇报结果,继续生成新的 Task,或对失败的 Task 进行重试 Routine Load Job 会不断产生新的 Task,来完成数据的不间断导入 FE节点会将常驻的导入作业拆分成多个任务,分配给不同的...每个任务以Stream Load的方式写入数据,任务完成后向FE汇报结果。FE根据执行情况继续生成新任务或重试失败任务。...在实际数据写入场景中,写入越实时高频、生成 RowSet 版本数越高、Compaction 所消耗的资源就越大。...label, txn_id 和上一个相同,说明是攒到了同一个导入任务中 mysql> insert into dt(id, name) values(3, 'John'); Query OK, 1 row
什么是ORM ORM(Object-relational mapping),中文翻译为对象关系映射,是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。...为什么用ORM 在程序开发中,数据库保存的表,字段与程序中的实体类之间是没有关联的,在实现持久化时就比较不方便。那么,到底如何实现持久化呢?...,它采用映射元数据来描述对象关系的映射,使得ORM中间件能在任何一个应用的业务逻辑层和数据库层之间充当桥梁 ORM的方法论基于三个核心原则: 简单:以最基本的形式建模数据 传达性:数据库结构被任何人都能理解的语言文档化...ORM所生成的代码一般不太可能写出很高效的算法,在数据库应用上更有可能会被误用,主要体现在对持久对象的提取和和数据的加工处理上,如果用上了ORM,程序员很有可能将全部的数据提取到内存对象中,然后再进行过滤和加工处理...总结 作为一名编程人员,在ORM使用的观念上会有不同,具体取舍需根据具体的项目和场景。 本文同步发表至 图享网 《什么是ORM?为什么用ORM?浅析ORM的使用及利弊》
引子 唯一标识符是我们项目开发中常常用到的需求。 当碰到这个问题,大部分小伙伴第一时间想到的就是UUID。 诚然,UUID 自问世以来,前前后后开发了5个版本。最常用的要属 UUID4了。...但今天要给大家分享 UUID 最主要的竞争对手:NanoID NanoID NanoID, 是一个小巧、安全、URL友好、唯一的 JavaScript 字符串 ID 生成器。...另外,NanoID在实现ID生成器的过程中使用了它自己的算法,称为统一算法,而不是使用"随机%的字母表"。...在UUID的字母表里有36个字符,而NanoID只有21个字符。 因此NanoID较短的 ID 可以用于与较长的 UUID 表示相同的目的。...但似乎唯一标识类字符都有这个问题:非友好性可读使调试变得十分困难。 NanoID 比 UUID 更年轻,且从npm趋势对比来看,NanoID的上升趋势更明显,而UUID的进展则很平缓。
领取专属 10元无门槛券
手把手带您无忧上云