xiaoyu's blog

Coding for a better life!

0%

六月份开始搭建的自己的第一个网站:书虫小说

在经历前端页面重写后,网站首屏加载速度有了一定提升,之后发现小说目录详情页白屏时间竟然高达1-2s,拖了一段时间,打算解决这个问题,我用Chrome调试抓包发现json数据包大小竟然有200多KB,测试了一下加载时间大概在700ms-1500ms,由于章节列表的生成依赖于这个数据,所以自然会产生很长一段时间的白屏,我打算先解决这个问题

阅读全文 »

在线体验

设计思路

1. 排序算法部分

快速排序的思想就是在序列中选择一个支点pivot, 让小于pivot的元素放在它的左边,不小于(说大于的话不准确)它的元素放在它的右边。

visualgo.net 的实现,维护三个序列,s1, s2, unknown

阅读全文 »

本文操作环境: Debian 9,lnmp1.6,Django2.1.3,Python3.6.0

主要参考了文档 查看

1. 安装 Python3.6.0

由于Django2.1仅支持Python3.5以上的版本,所以需要安装Python3版本。如果直接安装Python3版本,使用时需要改变全局默认Python版本,还需要重新配置环境变量,所以推荐一个叫pyenv的Python多版本管理工具,它构建出一个Python虚拟环境,可以在多个Python版本间随意切换。

阅读全文 »

  • 实现思路

使用js移动元素位置,利用css的transition属性实现过渡动画。在线体验

创建一个数组arr,数组的每一项保存着节点元素的文本值(innerText)和元素在节点列表中的索引nodeIndex, 因为接下来的并不是真的交换两个节点,而是交换两个节点的位置(可能有点不好理解)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function init() {
let fragment = document.createDocumentFragment();
for (let i = 0; i < 10; i++) {
let div = document.createElement('div'),
num = parseInt(Math.random() * 10);
arr.push({
val: num,
nodeIndex: i, //这里保存的是节点在nodeList中的位置
});

//

}
}
阅读全文 »

  • 八皇后问题是一个经典的问题:在一个8*8的国际象棋盘中,摆放8个皇后,使得任意两个皇后不能互相伤害。这就要求任意两个皇后不能在同一行、同一列、同一对角线。
  • 这个问题可以使用深搜来解决:
    一行一行找能摆放的位置,board[i][j] = 1 表示在(i, j)这个位置摆放了皇后
    阅读全文 »

1. flex 布局

flex布局也叫弹性布局,我认为flex box布局是一种十分优雅的布局方式,兼容性一般,使用起来非常简单。

1
2
3
display: flex;// flex-direction默认是row
justify-content: center; //水平居中
align-items: center; //垂直居中
阅读全文 »

Floyd算法主要用来解决多源最短路径(任意两点间的最短路径)问题,本身基于动态规划,时间复杂度为O(n^3)。

假设两个点i,j,那么从i到j路径最短只有两种情况:

  1. i直接到j
  1. i出发经过某一个或某几个中间节点到达j
阅读全文 »