MongoDb + Twikoo + Vercel + 腾讯云域名配置网站评论系统
MongoDb + Twikoo + Vercel + 腾讯云域名配置网站评论系统前言 翻看butterfly社区优秀作品是发现,大家都有评论区,那我也要搭一个,哈哈!
开干!
MongoDb 我使用mongodb去存评论内容和相关配置
新建数据库 我直接用魔法谷歌账号登陆了,省去注册步骤,进入之后,选择创建一个免费共享数据库Share Clusters,选择地区之后创建就可以
然后添加数据库账号密码
完成后,点开database里的connect,连接方式选择 Drivers
记录数据库连接字符串,请将连接字符串中的 : 修改为刚刚创建的数据库 用户名:密码
然后,在networkAccess配置一个0000的ip,表示任何ip都可以访问此数据库
Vercel部署一键添加vercel项目
点击上面的链接,进入vercel的网站,注册账号后进入,我还是魔法加github账号直接登陆了,然后在指定位置绑定GitHub账号,随便起一个名字,create后会克隆vercel项目到仓库中。
进入 Settings - Environment Variables,添 ...
hexo deploy 时出现SpawnFailed
问题描述因为通过svn去更新另一台电脑上的博客文件夹,可能导致deploy_git文件夹有问题,在执行hexo d时出现异常SpawnFailed
解决办法
先删除deploy_git文件夹
执行git config --global core.autocrlf false
然后就好了,clean一下重新编译推送就可以了
hexo clean && hexo g && hexo algolia && hexo d
nginx+hexo添加404页面
nginx + hexo添加404页面首先,可以通过命令创建一个404的目录和相关文件
hexo new page 404
这样会在目录下生成一个404的目录,里面有index.md,title是404,然后把html的内容粘进去
注意: html的标签之间不能有换行,否则会被识别成文本无法正常解释为html
大概像这样↓
注意: 引入的js和css最好也是放在这里,这样在hexo编译的时候会一起在public里面的404目录下
然后去配置nginx,添加一条404的规则,意思就是nginx将404页面代理到/404.html去
Hexo 博客中添加 Algolia 搜索功能
Hexo 博客中添加 Algolia 搜索功能安装algolia的github地址:https://github.com/LouisBarranqueiro/hexo-algoliasearch
在hexo目录执行安装algolia
npm install hexo-algoliasearch --save
创建 Algolia 账户并获取 API KeyAlgolia官网:https://www.algolia.com
首先创建账户,借助便利的魔法我直接谷歌登陆,然后如图
拿到这三个就成功了,然后还要创建一个索引
配置 Hexo 插件在 Hexo 根目录下,打开 _config.yml 文件并添加以下配置:
# Algolia Searchalgolia: applicationID: 'applicationId' apiKey: 'apiKey' adminApiKey: "adminApiKey" chunkSize: 5000 indexName: "创建的索引名称" fie ...
Hexo + ButterFly主题魔改
先开个坑,东西太多了慢慢整理…
忘光了,不整理了哈哈
资源网站
记录一些资源网站Static Badge-静态图标用于生成一些小标签,比如博客网站底部的标签
https://shields.io/badges
Simple Icons-icon图标icon图标资源网站
https://simpleicons.org/
try-with-resources
try-with-resources写法 采用try-with-resources写法,当try中代码执行结束(正常结束/异常结束)之后就会调用try()括号中对象的close()方法来关闭资源,虽然表面上来看try-with-resources写法更加优雅
因为实现了autoCLoseAble接口,再try代码块结束后,connection的close方法会自动调用
// 假设dataSource可用try{ try(Connection conn = dataSource.getConnection()) { ... String sql = "select * from ..."; try(PreparedStatement statement = conn.prepareStatement(sql)) { ... } }} catch(...) { ...} finally { ...}在执行完后,conn和其中使用的statement等资源 ...
spring+jdbcTemplate操作数据库
spring+jdbcTemplate操作数据库(mysql)// 初始化数据源org.springframework.jdbc.datasource.DriverManagerDataSource dataSource = new org.springframework.jdbc.datasource.DriverManagerDataSource();dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");dataSource.setUrl("jdbc:mysql://localhost:3306/zyappdata_db");dataSource.setUsername("root");dataSource.setPassword("root");// jdbcTemplate操作数据库org.springframework.jdbc.core.JdbcTemplate jdbcTemplate = new org.springframewo ...
使用jdbcTemplate时,插入数据后获取自增的id
使用jdbcTemplate时,插入数据后获取自增的id(mysql)两种写法
Connection connection = null;PreparedStatement ps = null;ResultSet generatedKeys = null;connection = dataSource.getConnection();// 准备插入数据的SQL语句,同时指定返回自动生成的主键String mSql = "INSERT INTO your_table_name (view_name, view_desc, database_id, version, creator_account, create_time) VALUES (?, ?, ?, ?, ?, ?)";ps = connection.prepareStatement(mSql, Statement.RETURN_GENERATED_KEYS);ps.setString(1, viewName);ps.setString(2, viewDesc);ps.setString(3, database ...
JS将信息拼接并复制到剪切板
let copyStr = '';// 版本号const version = '...';// 更新时间const updateTime = '...';// 编辑备注const editDesc = '...';// 脚本const editScript = '...';copyStr = `版本号:${version};\n更新时间:${updateTime};\n编辑备注:${editDesc};\n更新脚本:\n${editScript}`;// 创建输入元素const input = document.createElement('textarea');document.body.appendChild(input);input.value = copyStr;input.select();// 复制到剪切板if (document.execCommand('copy& ...
