hexo博客3:主题选择

写在最前面

目前来看,整个页面的样式并不是那么喜欢,想换一个风格,这就涉及到主题的配置了。

所有关于hexo的博客的文章,如果感兴趣可以回顾:

hexo博客7:构建简单的多层安全防御体系
hexo博客6:自定义域名 购买、配置、更新部署
hexo博客5:更新部署&域名配置
hexo博客4:发布文章
hexo博客3:主题选择
hexo博客2:初始化
hexo博客1:环境配置

一、选择主题

目前 Hexo 里面应用最多的主题基本就是 Next 主题了,这个主题还是挺好看的,另外它支持的插件和功能也极为丰富。
并且配置这个主题后,博客可以支持更多的扩展功能,比如阅览进度条、中英文空格排版、图片懒加载等等。

二、下载主题

那么首先就让我们来安装下 Next 这个主题吧,目前 Next 主题已经更新到 7.x 版本了,我们可以直接到 Next 主题的 GitHub Repository 上把这个主题下载下来。
主题的 GitHub 地址是:

https://github.com/theme-next/hexo-theme-next

,可以直接把 master 分支 Clone 下来。
首先命令行进入到项目的根目录,执行如下命令即可:

git clone https://github.com/theme-next/hexo-theme-next themes/next

执行完毕之后 Next 主题的源码就会出现在项目的 themes/next 文件夹下。
然后需要修改下博客所用的主题名称,修改项目根目录下的 _config.yml 文件,找到 theme 字段,修改为 next 即可,修改如下:

theme: next

然后本地重新开启服务,访问刷新下页面,就可以看到 next 主题就切换成功了,预览效果如下:
在这里插入图片描述
C:\Windows\System32\MyBlog\themes\next

Hexo 下的分类和表签无法显示,解决方法:
打开页面的时候标签和分类,总是提示Cannot GET /tags/这个错误
步骤 以tags标签为例
注意:冒号后面都需要添加一个空格

三、主题配置

现在已经成功切换到 next 主题上面了,接下来就对主题进行进一步地详细配置吧,比如修改样式、增加其他各项功能的支持,下面逐项道来。

参考:https://cuiqingcai.com/7625.html

具体的效果大家可以设置后根据喜好选择。

Next 主题内部也提供了一个配置文件,名字同样叫做 _config.yml,只不过位置不一样,它在 themes/next 文件夹下,Next 主题里面所有的功能都可以通过这个配置文件来控制,下文所述的内容都是修改的 themes/next/_config.yml 文件。

3.1 样式

Next 主题还提供了多种样式,风格都是类似黑白的搭配,但整个布局位置不太一样,通过修改配置文件的 scheme 字段即可,我选了 Pisces 样式,修改 _config.yml (注意是 themes/next/_config.yml 文件)如下:

scheme: Pisces

另外还有几个可选项,大家可以自行根据喜好选择。

3.2 favicon

favicon 就是站点标签栏的小图标,默认是用的 Hexo 的小图标,如果我们有站点 Logo 的图片的话,我们可以自己定制小图标。

但这并不意味着我们需要自己用 PS 自己来设计,已经有一个网站可以直接将图片转化为站点小图标,站点链接为:https://realfavicongenerator.net[1],到这里上传一张图,便可以直接打包下载各种尺寸和适配不同设备的小图标。

图标下载下来之后把它放在 themes/next/source/images 目录下面。
然后在配置文件里面找到 favicon 配置项,把一些相关路径配置进去即可,示例如下:

favicon:
  small: /images/favicon-16x16.png
  medium: /images/favicon-32x32.png
  apple_touch_icon: /images/apple-touch-icon.png
  safari_pinned_tab: /images/safari-pinned-tab.svg

配置完成之后刷新页面,整个页面的标签图标就被更新了。

3.3 avatar

avatar 这个就类似站点的头像,如果设置了这个,会在站点的作者信息旁边额外显示一个头像。比如将1.png 图片放置到 themes/next/source/images/1.png 路径,然后在主题 _config.yml 文件下编辑 avatar 的配置,修改为正确的路径即可。

# Sidebar Avatar
avatar:
  # In theme directory (source/images): /images/avatar.gif
  # In site directory (source/uploads): /uploads/avatar.gif
  # You can also use other linking images.
  url: /images/avatar.png
  # If true, the avatar would be dispalyed in circle.
  rounded: true
  # If true, the avatar would be rotated with the cursor.
  rotated: true

3.4 Sidebar Avatar

这里有 rounded 选项是是否显示圆形,rotated 是是否带有旋转效果,大家可以根据喜好选择是否开启。
配置完成之后就会显示头像。

3.5 rss

博客一般是需要 RSS 订阅的,如果要开启 RSS 订阅,这里需要安装一个插件,叫做 hexo-generator-feed,安装完成之后,站点会自动生成 RSS Feed 文件,安装命令如下:

npm install hexo-generator-feed --save

在项目根目录下运行这个命令,安装完成之后不需要其他的配置,以后每次编译生成站点的时候就会自动生成 RSS Feed 文件了。

3.6 code

把代码的颜色修改为黑色,并把复制按钮的样式修改为类似 Mac 的样式,修改 _config.yml 文件的 codeblock 区块如下:

codeblock:
  # Code Highlight theme
  # Available values: normal | night | night eighties | night blue | night bright
  # See: https://github.com/chriskempson/tomorrow-theme
  highlight_theme: night bright
  # Add copy button on codeblock
  copy_button:
    enable: true
    # Show text copy result.
    show_result: true
    # Available values: default | flat | mac
    style: mac

3.7 top

我们在浏览网页的时候,如果已经看完了想快速返回到网站的上端,一般都是有一个按钮来辅助的,这里也支持它的配置,修改 _config.yml 的 back2top 字段即可,我的设置如下:

back2top:	
  enable: true	
  # Back to top in sidebar.	
  sidebar: false	
  # Scroll percent label in b2t button.	
  scrollpercent: true

enable 默认为 true,即默认显示。sidebar 如果设置为 true,按钮会出现在侧栏下方,个人觉得并不是很好看,就取消了,scrollpercent 就是显示阅读百分比,个人觉得还不错,就将其设置为 true。

3.8 reading_process

reading_process,阅读进度。大家可能注意到有些站点的最上侧会出现一个细细的进度条,代表页面加载进度和阅读进度,如果大家想设置的话也可以试试,我将其打开了,修改

_config.yml 如下:
reading_progress:	
  enable: true	
  # Available values: top | bottom	
  position: top	
  color: "#222"	
  height: 2px

设置之后显示效果如下:

3.9 bookmark

书签,可以根据阅读历史记录,在下次打开页面的时候快速帮助我们定位到上次的位置,大家可以根据喜好开启和关闭,我的配置如下:

bookmark:	
  enable: false	
  # Customize the color of the bookmark.	
  color: "#222"	
  # If auto, save the reading progress when closing the page or clicking the bookmark-icon.	
  # If manual, only save it by clicking the bookmark-icon.	
  save: auto
github_banner

3.10 Github跳转

在一些技术博客上,大家可能注意到在页面的右上角有个 GitHub 图标,点击之后可以跳转到其源码页面,可以为 GitHub Repository 引流,大家如果想显示的话可以自行选择打开,我的配置如下:

# `Follow me on GitHub` banner in the top-right corner.	
github_banner:	
  enable: true	
  permalink: https://github.com/NightTeam/nightteam.github.io	
  title: NightTeam GitHub

记得修改下链接 permalink 和标题 title,显示效果可以看到在页面右上角显示了 GitHub 的图标,点击可以进去到 Repository 页面。

3.10 gitalk

由于 Hexo 的博客是静态博客,而且也没有连接数据库的功能,所以它的评论功能是不能自行集成的,但可以集成第三方的服务。

Next 主题里面提供了多种评论插件的集成,有 changyan | disqus | disqusjs | facebook_comments_plugin | gitalk | livere | valine | vkontakte 这些。
其中,gitalk是利用 GitHub 的 Issue 来当评论,样式也比较不错。

首先需要在 GitHub 上面注册一个 OAuth Application,链接为:

https://github.com/settings/applications/new

,注册完毕之后拿到 Client ID、Client Secret 就可以了。

首先需要在 _config.yml 文件的 comments 区域配置使用 gitalk:

# Multiple Comment System Support	
comments:	
  # Available values: tabs | buttons	
  style: tabs	
  # Choose a comment system to be displayed by default.	
  # Available values: changyan | disqus | disqusjs | facebook_comments_plugin | gitalk | livere | valine | vkontakte	
  active: gitalk

主要是 comments.active 字段选择对应的名称即可。

然后找打 gitalk 配置,添加它的各项配置:

# Gitalk	
# Demo: https://gitalk.github.io	
# For more information: https://github.com/gitalk/gitalk	
gitalk:	
  enable: true	
  github_id: NightTeam	
  repo: nightteam.github.io # Repository name to store issues	
  client_id: {your client id} # GitHub Application Client ID	
  client_secret: {your client secret} # GitHub Application Client Secret	
  admin_user: germey # GitHub repo owner and collaborators, only these guys can initialize gitHub issues	
  distraction_free_mode: true # Facebook-like distraction free mode	
  # Gitalk's display language depends on user's browser or system environment	
  # If you want everyone visiting your site to see a uniform language, you can set a force language value	
  # Available values: en | es-ES | fr | ru | zh-CN | zh-TW	
  language: zh-CN

配置完成之后 gitalk 就可以使用了。GitHub 授权登录之后就可以使用了,评论的内容会自动出现在 Issue 里面。

3.11 pangu

如果希望写中文和英文的时候中间必须要留有间距,一个简单直接的方法就是中间加个空格,但某些情况下可能习惯性不加或者忘记加了,这就导致中英文混排并不是那么美观。

pangu 就是来解决这个问题的,我们只需要在主题里面开启这个选项,在编译生成页面的时候,中英文之间就会自动添加空格,看起来更加美观。 具体的修改如下:

pangu: true

3.11 math

一些情况下我们需要写一个公式,比如演示一个算法推导过程,MarkDown 是支持公式显示的,Hexo 的 Next 主题同样是支持的。

Next 主题提供了两个渲染引擎,分别是 mathjax 和 katex,后者相对前者来说渲染速度更快,而且不需要 JavaScript 的额外支持,但后者支持的功能现在还不如前者丰富,具体的对比可以看官方文档:

https://theme-next.org/docs/third-party-services/math-equations

所以我这里选择了 mathjax,通过修改配置即可启用。

math:
  enable: true

  # Default (true) will load mathjax / katex script on demand.
  # That is it only render those page which has `mathjax: true` in Front-matter.
  # If you set it to false, it will load mathjax / katex srcipt EVERY PAGE.
  per_page: true

  # hexo-renderer-pandoc (or hexo-renderer-kramed) required for full MathJax support.
  mathjax:
    enable: true
    # See: https://mhchem.github.io/MathJax-mhchem/
    mhchem: true

mathjax 的使用需要我们额外安装一个插件,叫做 hexo-renderer-kramed,另外也可以安装 hexo-renderer-pandoc,命令如下:

npm un hexo-renderer-marked --save	
npm i hexo-renderer-kramed --save

另外还有其他的插件支持,大家可以到官方文档查看。

3.12 pjax

pjax 这个技术实际上就是,利用 Ajax 技术实现了局部页面刷新,既可以实现 URL 的更换,有可以做到无刷新加载。

要开启这个功能需要先将 pjax 功能开启,然后安装对应的 pjax 依赖库,首先修改 _config.yml 修改如下:

pjax: true

然后安装依赖库,切换到 next 主题下,然后安装依赖库:

$ cd themes/next	
$ git clone https://github.com/theme-next/theme-next-pjax source/lib/pjax

这样 pjax 就开启了,页面就可以实现无刷新加载了。

四、其他设置

另外关于 Next 主题的设置还有挺多的,这里就介绍到这里了,更多的主题设置大家可以参考官方文档:https://theme-next.org/docs/。

### JVM本地方法的作用工作原理 #### 1. 本地方法的定义与作用 JVM中的本地方法(Native Method Stack)是一个专门用于管理本地方法调用的数据结构。它主要用于存储由Java代码调用的本地方法的相关信息,例如参数、返回值以及局部变量等[^2]。 当一个Java程序通过`native`关键字调用了某个本地方法时,JVM会在本地方法中创建一个新的帧(Frame),用来保存该方法执行期间所需的信息。 本地方法的主要作用可以概括如下: - **支持跨语言调用**:允许Java代码调用其他编程语言编写的函数或库文件,从而扩展了Java的功能范围。 - **提供底层资源访问能力**:对于需要直接操作硬件设备或者操作系统特性的场景,可以通过本地方法间接完成此类任务。 - **提升性能**:某些计算密集型的操作可能更适合用C/C++实现,在这种情况下利用本地方法能够显著改善应用的整体表现[^4]。 #### 2. 工作原理详解 以下是关于如何运作的一个更深入探讨: ##### (a) 调度过程 每当遇到带有`native`修饰符的方法被触发时,控制权就会转移到相应的原生实现部分上去;此时,当前线程上的虚拟机会暂停其常规处理流程,并切换至对应的本机环境之中继续往下走直到结束为止再回来恢复原来的状态[^1]。 具体来说就是——一旦进入到了任何一个标记有此属性的过程内部之后,则意味着即将离开纯JAVA领域而进入到另一个完全同的世界里去了(即所谓的“宿主机”) ,在那里按照预先设定好的规则去做一些事情然后再回到起点处等待进一步指示... ##### (b) 数据传递机制 在实际开发过程中,经常可以看到这样的情况发生:我们需要把来自高层级抽象层面上的对象实例或者其他形式的数据传送给低级别的组件去加以运用 。那么这里就涉及到一个问题 —— 如何安全有效地跨越边界呢?这就需要用到JNI技术啦! 简单来讲就是借助于特定格式编码后的句柄作为中介桥梁连接起来两端之间相互沟通交流所需的全部要素 :一方面可以把复杂类型的实体转换成简单的原始数值类型以便传输过去供那边解析重构出来使用;另一方面也能够让对方产生的结果反馈给我们这边重新组装还原回去形成最终想要得到的东西[^4]. ```c JNIEXPORT void JNICALL Java_NativeDemo_printSystemInfo(JNIEnv *env, jobject obj){ printf("This is a native function.\n"); } ``` 上面展示了一个典型的例子展示了如何去编写一段最基础版本的小插件模块来响应外部请求调用自己所提供的服务功能. #### 3. 特殊注意点 尽管存在诸多优点但是同时也伴随着一定风险需要注意防范规避潜在隐患比如内存泄漏等问题可能会由于当管理造成难以预料后果所以建议开发者们谨慎对待合理规划布局整个项目架构体系确保稳定可靠高效运行[^3]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是Yu欸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值