Hello World
👻 2020-10-03
更换域名www.shadowx.vip
👻 2020-10-01
博客使用github图床和jsDelivr CDN加速
👻 2020-07-26
博客由原来的github托管,同时托管到coding
接入域名shadowx.vip
博客所有图片使用imgchr图床CDN加速
👻 2020-07-24
添加Valine评论系统
新增“图片”页面
👻 2020-06-07
博客更换Butterfly主题
👻 2020-05-02
博客更换archer主题
👻 2020-05-02
shadow博客搭建完成!!!
Hexo博客自定义看板娘教程
经常逛别人博客都会看到看板娘,但是那些看板娘我都不太喜欢。度娘搜了搜Hexo看板娘教程来来去去都是使用live2d-widget-models提供的那几个模型,昨天偶然在gitee上看到了少女前线的Live2D文件很喜欢!!!搜了一下好像没什么教程是自定义Live2d模型的,都是使用helper-live2d插件提供的模型。在gitee上看到的少女前线的Live2D模型文件除了预览图和贴图文件,一个都没看懂。自己琢磨了一下,对比了github上live2d-widget-models提供的模型,发现文件大致上分为四类,moc(程序中要用到的 Live2D 模型数据)、mtn(程序中要用到的 Live2D 模型的动作数据)、json(模型数据)、png(模型预览图和贴图)参考了Hexo安装helper-live2d的模型教程,成功自定义了少女前线的模型!!!接下来是自定义Live2D模型的演示
安装安装helper-live2d插件github传送门
1npm install --save hexo-helper-live2d
导入模型这里只演示自定义模型的设置,想使用 live2d- ...
Shiro学习笔记
1. Shiro简介1.1 Shiro基本功能点
1.2 Shiro架构(1)从外部来看Shiro,即从应用程序角度来观察如何使用Shiro完成工作Subject:应用代码直接交互的对象是 Subject,也就是说 Shiro 的对外 API 核心就是 Subject 。 Subject 代表了当前“用户”,这个用户不一定是一个具体的人,与当前应用交互的任何东西都是 Subject,如网络爬虫,机器人等;与 Subject 的所有交互都会委给Securitymanager;Subject 其实是一个门面,SecurityManager 才是实际的执行者;SecurityManager:安全管理器;即所有与安全有关的操作都会与 SecurityManager 交互;且其管理着所有 Subject;可以看出它是 Shiro 的核心,它负责与 Shiro 的其他组件进行交互,它相当于 Spring MVC 中 DispatcherServlet 的角色Realm:Shiro 从 Realm 获取安全数据(如用户、角色、权限),就是说 SecurityManager 要验证用户身份,那么它需要 ...
ElasticSearch学习笔记
Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。
1.ES是什么Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎,无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。 但是,Lucene只是一个库。想要发挥其强大的作用,你需使用Java并要将其集成到你的应用中。Lucene非常复杂,你需要深入的了解检索相关知识来理解它是如何工作的。Elasticsearch也是使用Java编写并使用Lucene来建立索引并实现搜索功能,但是它的目的是通过简单连贯的RESTful API让全文搜索变得简单并隐藏Lucene的复杂性。 不过,Elasticsearch不仅仅是Lucene和全文搜索引擎,它还提供:
分布式的实时文件存储,每个字段都被索引并可被搜索
实时分析的分布式搜索引擎
可以扩展到上百台服务器,处理PB级结构化或非结构化数据
而且,所有的这些功能被集成到一台服务器,你的应用可以通过简单的RESTful API、各种语言的客户端甚至命令行 ...
Docker下Nginx容器访问静态资源404
前言在根目录下创建了data目录,data目录下分别有一个www和img目录(www存放静态html,img存放图片),然后在Nginx配置文件中添加动静分离的配置。启动Nignx后访问192.168.244.128:80/img/一直是404,检查了配置文件确定没有错误
解决方法这是因为在docker中启动的Nignx容器,Nginx在访问资源时是访问容器内部中路径的文件,而不是Linux系统中路径的文件。而且docker也没有提供对运行的容器添加挂载文件的功能,所有只能在通过docker exec -it Nginx容器名 bash命令进入Nignx容器内部创建文件,或者重新创建Nignx容器,在创建的时候将Linux中的data目录挂载到docker中的data目录。启动Nignx容器,此时便可以访问到静态资源了。
1234567docker run -d -p 80:80 --name nginx -v /root/nginx/html:/usr/share/nginx/html -v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.c ...
Mybatis-Plus学习笔记
1. 简介1.1 MybatisPlusMyBatis-Plus(简称MP)是一款非常强大的MyBatis增强工具包,只做增强不做改变。在不用编写任何SQL语句的情况下即可以极其方便的实现单一、批量、分页等操作。
1.2 代码及文档发布地址官方地址:http://mp.baomidou.com代码发布地址:Github: https://github.com/baomidou/mybatis-plusGitee: https://gitee.com/baomidou/mybatis-plus文档发布地址:http://mp.baomidou.com/#/?id=%E7%AE%80%E4%BB%8B
2. 集成MP2.1 依赖配置1)在 pom.xml 中加入对 MP依赖
123456<!-- mp 依赖 --><dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> <version>2.3& ...
Java多线程安全问题的解决方式
出现的原因当多条语句在操作同一个线程共享数据时,一个线程对多条语句只执行了一部分,还没有执行完,另一个线程参与进来执行。导致共享数据的错误。
示例12345678910111213141516171819202122232425262728293031323334353637class Window implements Runnable{ private int ticket = 10; @Override public void run() { while (true){ if (ticket > 0){ try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } ...
Java多线程的4种实现方式
1. 继承Thread类①创建一个继承于Thread类的子类②重写Thread类的run()③创建继承Thread类的子类的对象④通过此对象调用start()
1234567891011121314151617181920//1.创建一个继承于Thread类的子类class MyThread extends Thread{ //线程的主体类 //2.重写Thread类的run() @Override public void run() { System.out.println(Thread.currentThread().getName()); }}public class ThreadDemo { public static void main(String[] args) { //3.创建继承Thread类的子类的对象 MyThread myThread1 = new MyThread(); MyThread myThread2 = n ...
Hexo博客Butterfly主题美化
CSS/JS的使用在主题文件夹的source目录下,有css和js两个文件夹,分别在里面创建一个css文件和js文件,把修改的代码贴进去保存
CSS/JS的引用
打开主题配置文件(butterfly.yml)
定位inject属性
其中head用于引入css,bottom用于引入js
示例
1234567inject: head: - <link rel="stylesheet" href="/css/shadow.css"> - <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/sviptzk/StaticFile_HEXO@latest/butterfly/css/plugins.min.css"> bottom: - <script src="/js/shadow.js"></script> - <script src="https://myhkw.cn/player/js/player.js" id="myhk" key="15961106 ...