编辑
2021-11-10
教程
00

hexo图片配置

1.img路径方法插入图片

markdown是支持html语句的,直接插入就可以使用了。所以该方法用到了HTML的标签,采用img标签相对链接的方式引入图片。

<img src='url或图片路径' height=400px'>

1.1优缺点

优点:灵活,可以进行样式控制。

缺点:稍微麻烦了点。

1.2适用环境

用于顶部导航选项的页面(如:关于、标签、分类)中引入图片。 因为在hexo生成静态界面时,同一篇文章会在多处页面生成,例如首页、文章详情页等,而不同页面与图片的相对位置是不一样的,而该方式hexo不会自动处理图片引用,所以使用该方式引用本地图片时必须以“/”开头,表示地址都是基于主目录定位的,不会出现有的界面图片显示错误的情况。不是“/”开头表相对当前文档位置进行定位。而顶部导航页只会在一处地方生成,所以不带“/”开头不会出现失效,建议也统一使用“/”,开头。

1.3使用方法

在source中新建一个“images”目录用于存放图片,然后再使用“/images/图片名”引用图片。也可以分文章存放图片,会稍微麻烦点。

编辑
2021-11-09
学习
00

分布式系统遇到的十个问题

img

1.前言

我们都在讨论分布式,特别是面试的时候,不管是招初级软件工程师还是高级,都会要求懂分布式,甚至要求用过。传得沸沸扬扬的分布式到底是什么东东,有什么优势?

编辑
2021-09-09
学习
00

聊聊java中的21种锁

1.概括

  1. 公平锁/非公平锁
  2. 可重入锁/不可重入锁
  3. 悲观锁/乐观锁
  4. 自旋锁
  5. 分段锁
  6. 互斥锁/读写锁
  7. 独享锁/共享锁
  8. 偏向锁/轻量级锁/重量级锁

以上锁分类并不全指锁的状态,有些是锁的特性、设计。

公平锁:按线程申请锁的先后顺序获得锁 非公平锁:线程不是按先后顺序获得锁,效率比公平锁效率高

可重入锁:已获得的锁在内层可重复使用 不可重入锁:已获得的锁在内层不可重复使用

悲观锁:每次都假定访问时会有多个线程,执行代码前都要加锁,加锁成功后,其它线程处于阻塞状态 乐观锁:其实就是无锁,CAS就是无锁,每次都假定访问时只有自己一个线程

自旋锁:当一个线程在获得锁的时候,有其它线程获得锁,那么该线程就循环判断是否能获得锁,直至其它线程释放锁,然后获得锁。

分段锁:它是一种锁的设计,ConcurrentHashMap就是将hash数据分成多段,持有多把锁,其实就是分成多个hashmap,只有当线程访问同一把锁时才会阻塞,提高了效率。

互斥锁:加锁的代码块只能允许一个线程访问,其它线程则会阻塞 读写锁:它的read模式是共享锁、write模式是互斥锁。读锁和读锁能共存,读锁和写锁、写锁和写锁均不能共存

独享锁:就是互斥锁,该锁每次只能有一个线程访问 共享锁:该锁可以有多个线程访问

偏向锁:同一代码块一直被同一线程获得锁,那么下次将自动获得锁,降低获得锁的代价

轻量级锁:当锁是偏向锁时,被其它线程访问,偏向锁就会升级为轻量级锁,通过自旋转来获取锁,不会阻塞,提高性能

重量级锁:当轻量级锁时,线程一直自旋,当自旋次数达到一定次数时,将提升为重量级锁,让其它申请锁的线程进入阻塞状态,降低cpu的负载。synchronized是重量级锁。