twikoo找回管理员密码
twikoo找回管理员密码前言距离上一次维护网站,已经过去很长很长一段时间了。中间那阵子,我一直在调整自己的生活状态,后来又搬到了另一个城市生活,更是完全没了心思去管网站的事。一直到去年年底,域名和服务器同时到期——服务器咬咬牙还是续上了,域名却换成了一个便宜的新域名。之后就是一点一点地把网站内容往新域名迁移,又折腾了新域名的备案。最近备案总算通过,网站也终于重新上线。可结果,发现 twikoo 的暗号和管理员密码早已被忘得一干二净。于是,便有了这篇关于「twikoo 找回管理员密码」的记录。
部署方案说明我的 Twikoo 是通过 Vercel 部署的,数据库用的是 MongoDB。接下来的操作步骤和截图,也都是基于这套环境来展开的。
浏览器控制台找回暗号(HIDE_ADMIN_CRYPT)先解决「暗号」的问题。这个其实不用去翻数据库,直接在浏览器控制台就能看到:
打开网站首页,按 F12 打开开发者工具,切到 Network 面板。
刷新页面,等 twikoo 加载完成后,在 Network 的过滤框里搜索 HIDE_ADMIN_CRYPT。
进到 MongoDB 查看 tw ...
用 jlink 给 JavaFX 桌面应用生成精简自定义 JRE
为什么用 jlink桌面应用分发有个痛点:用户机器上不一定有 JDK,让用户自己装个 25 既不现实也挺难受。jlink 可以把”应用真正用到的那些 jmod”拼成一个精简的、独立的 JRE,跟应用一起打包,用户双击就能跑,体积也比塞一个完整 JDK 小很多。
准备需要两套 jmods:
JDK 自带的:在 $JDK_HOME/jmods(openjdk-25 自带)。
JavaFX 的:要单独下 javafx-jmods-25.0.1,SDK 包里没有,得另外找。
两套都得是 25,版本不一致 jlink 会直接拒绝链接。
命令核心就一条 jlink,把 --module-path 指向两个 jmods 目录,--add-modules 列出实际要用的模块:
%JDK_HOME%\bin\jlink ^ --module-path "%JDK_HOME%\jmods;%JAVAFX_JMODS%" ^ --add-modules java.base,java.management,jdk.charsets,javafx.controls,javafx.fx ...
Kotlin 数据类型
Kotlin 数据类型使用var定义变量
var b: Int = 1// val 创建常量val a = 1
所有的数据类型都是对象 Int
public actual class Int private constructor() : Number(), Comparable<Int>public actual abstract class Number { /** * Returns the value of this number as a [Double], which may involve rounding. */ public actual abstract fun toDouble(): Double /** * Returns the value of this number as a [Float], which may involve rounding. */ public actual abstract fun toFloat(): Float /** * Retur ...
Docker 部署 File Browser 文件管理系统
Docker 部署 File Browser 文件管理系统1. File Browser 介绍File Browser 是一款基于 Go 语言开发的开源、轻量级、跨平台的 Web 文件管理工具。
它允许用户通过浏览器访问和管理服务器上的文件,支持 Windows、macOS、Linux 等多种操作系统。
FileBrowser 具备文件的上传、下载、复制、移动、重命名、在线预览及编辑等功能,还提供多用户支持与精细的权限控制,可设置不同用户对文件和目录的访问权限。
此外,它支持连接 FTP、SFTP、S3 等远程存储,方便用户管理远程文件,并且能够通过生成带密码或有效期的外链来实现文件分享。
官网:https://filebrowser.org/GitHub:https://github.com/filebrowser/filebrowser
官网在线体验地址:https://demo.filebrowser.org/用户名: demo密码: demo
2. 安装以下是使用Docker安装的步骤:
创建本地存储目录
# File Browser的数据文件存储目录mkdir -p /my ...
JavaFX初学
JavaFX初学1. Scene Graph(场景图)JavaFX 的场景图是一个树状数据结构,表示应用程序的所有 UI 组件。
层次结构:Stage (舞台) → Scene (场景) → Parent (根节点) → Nodes (子节点)
2. 事件机制JavaFX 使用事件驱动编程模型,基于观察者模式。
主要事件类型:
ActionEvent:按钮点击等
MouseEvent:鼠标相关事件
KeyEvent:键盘事件
WindowEvent:窗口事件
3. 常用容器和布局方法VBox - 垂直排列
VBox vbox = new VBox(10); // 10像素间距vbox.setPadding(new Insets(15)); // 内边距vbox.setAlignment(Pos.CENTER);
HBox - 水平排列
HBox hbox = new HBox(10);hbox.setPadding(new Insets(10));hbox.setAlignment(Pos.CENTER);
BorderPane
BorderPane borderPane = ...
从零搭建 JavaFX 25 与 Kotlin 2.3 桌面应用踩坑记
背景最近在做一个 JavaFX 桌面应用(数据可视化分析类的),想尝鲜下新特性、也考虑长期维护,技术栈直接拉到最新的 JDK 25 + Kotlin 2.3 + JavaFX 25。结果就是踩了一整圈版本对齐和模块系统的坑,记一下。
版本必须严格对齐这套组合对版本非常敏感,哪个对不上都会报各种莫名其妙的错:
组件
版本
为什么必须是这个版本
JDK
25
JVM Target 统一为 25
Kotlin
2.3.0
第一个正式支持生成 Java 25 字节码的版本
Gradle
9.1+
低版本 Gradle 不认 JDK 25
JavaFX
25.0.1
与 JDK 25 配套
IDEA
2025.3+
旧版对 Kotlin 2.3 支持不全
Kotlin 版本低于 2.3 的时候,编译器没法把字节码目标设到 25,直接报编译错误;Gradle 低于 9.1 的时候连 java.toolchain 都识别不了 JDK 25。这俩一旦对不上,报错信息往往指东打西,很难一下定位到是版本问题。
模块系统JavaFX 25 在强模块化下,大量内部包(com.s ...
hexo+butterfly目录显示问题
Hexo+butterfly博客网站文章目录编号异常写完文章后在Typora中查看大纲目录正常,但是推送后在网页看到数字编号出现重复问题,如下图
其实就是butterfly这些主题框架都内置了一个目录编号,在butterfly的_config.yml文件中找到toc中的number属性并修改为false即可。
好像next也有这样子的情况,应该也是修改配置文件中的这个属性就可以。
原属性值为true,会自动为各级标题添加编号并在目录显示,如果没有写标号的习惯还想要也可以设置为true
cursor
Cursor一、下载安装下载和安装好像是很傻瓜的,在官网下载了直接安装包点点就ok了,然后在官网注册一下账号并且登录到应用就可以了
官网地址:https://cursor.com/cn
二、配置看起来就是类似vscode的应用,甚至还有一键从vscode导入设置的选项,但是本地电脑没咋用vscode写前端所以没啥可以迁移的
像vscode一样在插件市场安装了一个中文插件将软件汉化,名字是Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code
然后有一个是要配置一下java的开发环境
设置我的JAVA_HOME和MAVEN_HOME,在setting.json中添加了如下内容吗,然后好像是重启就可以辽
{ "java.home": "F:/java/jdk/jdk-11.0.23", "java.configuration.maven.userSettings": "F:/maven/apache-maven-3.9.6/ ...
Linux持续写入的日志如何清理
Linux持续写入的日志如何清理有时候一个日志文件一直在写入,内容越堆越多,把磁盘占得满满的。想清理的话,直接 rm 删掉可不行——文件一删,正在写日志的应用找不到这个文件,就会报错。
那么可以通过以下方式清空文件内容:
> application.log或者cat /dev/null > file_name或者echo "">file_name
RAG是什么
RAG是什么RAG 的全称是:Retrieval-Augmented Generation,翻译成中文是:检索增强生成。
说人话就是——让大语言模型(比如 ChatGPT)在生成答案之前,先去找资料(检索)来增强它的知识,再用这些资料来生成更准确的回答。
如何构建一个RAG
前置准备
首先我们需要做数据准备,把你要用的资料收集好,比如:公司内部文档(PDF、Word、Markdown)、FAQ 列表、产品手册等,然后清洗这些数据,比如
去掉无关信息、切分成合理的小段。
然后把每一小段文本用 Embedding 模型转成向量,把这些向量存到向量数据库里,比如 FAISS、Milvus 等。
检索查询
当用户提问时,先用相同的 Embedding 模型把问题也转成向量。然后在向量数据库里用向量相似度搜索,找出最相关的几段资料(比如 Top 5)。这些找到
的内容就是上下文增强材料。
生成回答
紧接着,就可以把用户的问题 + 检索到的资料一起,作为 Prompt 发给大语言模型(LLM)。 这样可以保证模型只在资料范围内生成答案,降低幻觉。
