本站的框架本站是基于hexo框架搭建的静态博客,在使用这款框架之前,我也用过wordpress,halo这些框架,和这些比起来hexo的配置好像更加麻烦,但也更加灵活,而且作为一款静态博客框架,安全性也是更高。
这个站会发布什么内容主要是记录我个人的成长,分享一下code方面的经验,或者是一些趣事,有时候还可能荒腔走板的聊一下音乐和电影,anyway,关注一下总是不亏的。
自言自语搭建一个属于自己的网站一直是我的一个小心愿,这里可以是我的日记本,也可以是我的树洞,更可以是分享自己的一个平台,在各种短视频文化冲击的现代,如此浮躁的网络,能有一片属于自己的净土还是蛮不错的。
I’m OK!
框架生成内容,留作纪念Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHu ...
前言 游戏在我的生活中一直占据着举足轻重的地位,从小时候的中文游戏三百光盘和盗版红白机,到后面接触电脑,单机游戏、网页游戏、网络游戏;毫不夸张的说,如果生活中没有了游戏将会变得十分灰暗,不管是娱乐,解压,社交,我几乎都是靠游戏;可是之前我打了这么多年游戏,却从来没有一款游戏真正的成为高玩,对我来说,一件事不一定要做到最好,但是至少要能达到一个超越及格的分数,这也是我一直以来的一个执念。
初识云顶 在2019年的夏天,那时候我已经度过了我人生中最重要的一个时刻——高考,高考结束后,家里出钱给我买了一台笔记本,那个夏天我几乎每天都沉浸在游戏中,游戏打累了就是看游戏直播,刚好看到了一款即将要上线的新游戏的测试服直播,说是新游戏,其实是英雄联盟客户端里的一个特殊的新模式,这就是云顶之弈,我一下子就被这种特殊的玩法吸引住了,甚至连英雄联盟都不想打了,由于正式服还没有上线,我每天游戏也不打了,就一直看云顶的测试服直播,后面云顶正式上线后我也是没日没夜的玩;当时云顶一经上线,毫不夸张的说立马成为了最受欢迎的游戏,就连英雄联盟也被戏称为云顶启动器。
摸到高手的门槛 在我之前玩过的各种竞技游戏中, ...
哔哔空间有时候总想发点什么,因为是自己的一些胡思乱想,不想让被人看到,所以我需要一个私人的“空间”,之前用过木木大佬的木木ber,但是由于腾讯云取消了免费托管额度,导致我的哔哔空间停滞了。最近get到一个好东西,Memos是一种隐私优先的轻量级笔记服务,可以直接跑在我们自己服务器的Docker上,配合它自带的一些接口,终于又让我的哔哔空间复活了!
示例:哔哔空间(●’◡’●)
部署Memos这里我们有个前提,就是你的服务器上已经安装并运行了Docker服务,如果没有Docker的话需要自行去了解怎样安装运行,这里主要是讲解如何部署Memos。
直接输入以下命令一键安装并运行Memos
1docker run -d --name memos -p 5230:5230 -v ~/.memos/:/var/opt/memos neosmemo/memos:stable
要注意~/.memos/目录是挂载目录,里面存放的是Memos的数据库数据,是我们迁移备份的重要文件,一定要定时做本地备份。
下载运行成功后可以访问服务器ip:5230查看Memos的前端页面(记得要去你的服务器控制台安全 ...
Java 内存模型很多人将java 内存结构与java 内存模型傻傻分不清楚, java 内存模型是 Java Memory Model (JMM) 的意思。
关于它的权威解释, 请参考:这里<( ̄︶ ̄)↗[GO!]
简单的说, JMM 定义了一套在多线程读写共享数据时(成员变量、数组)时, 对数据的可见性、有序性和原子性的规则和保障
1. 原子性问题分析前题:原子性在多线程环境经常需要考虑的问题, 下面来个例子简单回顾一下
问题提出: 两个线程对初始值为 0 的静态变量一个做自增, 一个做自减, 各做 5000 次, 结果是 0 吗?
12345678910111213141516171819202122232425public class Test { static int i = 0; public static void main(String[] args) throws InterruptedException { Thread t1 = new Thread(() -> { fo ...
1. 类加载阶段加载
将类的字节码载入方法区(1.8后为元空间, 在本地内存中)中, 内部采用 C++ 的 instanceKlass 描述 java 类, 它的重要 field 有:
_java_mirror 即 java 的类镜像, 例如对 String 来说, 它的镜像类就是 String.class, 作用是把 klass 暴露给 java 使用
_super 即父类
_fields 即成员变量
_methods 即方法
_constants 即常量池
_class_loader 即类加载器
_vtable 虚方法表
_itable 接口方法
如果这个类还有父类没有加载, 先加载父类
加载和链接可能是交替运行的
instanceKlass保存在方法区。JDK 8以后, 方法区位于元空间中, 而元空间又位于本地内存中
_java_mirror则是保存在堆内存中
InstanceKlass和*.class(JAVA镜像类)互相保存了对方的地址
类的对象在对象头中保存了*.class的地址。让对象可以通过其找到方法区中的instanceKlass, 从而获取类的各种信息
链 ...
1. 如何判断对象可以回收引用计数法当一个对象被引用时, 该对象的引用值就加1, 当这个对象不再被引用时, 引用值就减1, 当引用值为0时, 就表示该对象可以被垃圾回收器回收。引用计数法有一个弊端, 那就是当两个对象相互引用的时, 两个对象的引用值都为1, 此时这两个对象就算用不到了, 也不会被回收。
可达性分析算法
Java 虚拟机中的垃圾回收器采用可达性分析来探索所有存活的对象
扫描堆中的对象, 看是否能够沿着 GC Root对象 为起点的引用链找到该对象, 找不到, 表示可以回收
哪些对象可以作为 GC Root
虚拟机栈(栈帧中的本地变量表)中引用的对象
方法区中类静态属性引用的对象
方法区中常量引用的对象
本地方法栈中 JNI (即一般说的Native方法)引用的对象
我们使用Eclipse Memory Analyzer(内存分析工具)对一下代码进行分析:
123456789101112public static void main(String[] args) throws IOException { ArrayList<Object& ...
1. 程序计数器
定义:Program Count Register 程序计数器(寄存器)
作用: 记住下一条JVM指令的执行地址
特点:
是线程私有的(每一个线程都有自己的程序计数器)
不会存在内存溢出
作用:12345678910111213141516171819//二进制字节码 //JVM指令 //Java源代码 0: getstatic #20 // PrintStream out = System.out; 3: astore_1 // -- 4: aload_1 // out.println(1); 5: iconst_1 // -- 6: invokevirtual #26 // -- 9: aload_1 // out.println(2);10: iconst_2 // --11: invokevirtual #26 // --14: aload_1 // out.println(3);15: iconst_3 ...
什么是线程池线程池(thread pool):一种线程使用模式。线程过多会带来调度开销, 进而影响缓存局部性和整体性能。而线程池维护着多个线程, 等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用, 还能防止过分调度。
特点:
降低资源消耗: 通过重复利用已创建的线程降低线程创建和销毁造成的销耗。
提高响应速度: 当任务到达时, 任务可以不需要等待线程创建就能立即执行。
提高线程的可管理性: 线程是稀缺资源, 如果无限制的创建 ,不仅会销耗系统资源, 还会降低系统的稳定性, 使用线程池可以进行统一的分配, 调优和监控。
架构:
Java中的线程池是通过Executor框架实现的, 该框架中用到了Executor, Executors, ExecutorService, ThreadPoolExecutor这几个类
三种线程池
Executors.newFixedThreadPool(int) : 一池定线程
创建一个定长的线程池, 可控制线程的最大并发量, 超出的线程会在阻塞队列(LinkedBlockingQu ...
前言基于hexo搭建个人blog的文章网上有很多,但是其中一些多多少少有点问题,通过搭建本站进行了无数的踩坑,总结出了这篇搭建教程,一步步跟下来,应该都能搭建成功,如果有什么问题都可以在评论区给我留言
本地部署Hexo一.准备nodejs: 下载
git: 下载
二.安装本地hexo环境nodejs和git的安装只需要无脑下一步即可,安装完成后可以在dos窗口进行检验,输入命令git -v,node -v,npm -v查看版本信息
三.安装hexo框架在非系统盘下新建一个blog文件夹,进入文件夹后右键Git Bash Here
输入以下命令
1234567891011121314//第一条 这是安装hexo的基础框架npm install -g hexo//第二条 这是初始化hexo框架 这个可能会比较慢hexo init//第三条 安装所需要的组件npm install//第四条 编译生成静态页面hexo g//第五条 启动本地服务hexo s
安装完成之后可以去浏览器输入localhost:4000进行查看,效果如下:
部署到云服务器上一.服务器和域名的购买
云服务 ...