note-hexo
Hexo折腾史
推荐博客
Heo的Butterfly主题美化教程
icat的魔改教程
搭建Hexo
全局安装hexo命令
1npm install -g hexo-cli
初始化Hexo
hexo init
安装主题(两种方式)
在hexo主目录下【推荐】使用npm【不推荐】git clone -b master https://github.com/jerryc127/hexo-theme-butterfly.git themes/butterfly
把主题放置在主目录中,更容易定制主题npm i hexo-theme-butterfly
虽然配置容易,但主题会放在node_modules中,定制主题不方便
本地部署(本地测试)
hexo server
远程仓库配置
新建Github远程仓库
git push -u origin main
部署到Github
两种方式都可以,可以只用一种,也可以都用
本地一键部署Github PagePush部署不需要push,可以单独deploy
这样部署不仅方便,而且就不需要push源文件到main分支就可以查看效果(避免过多提交代码 ...
algorithm-series-array-occurrence-count-problem
数组数字出现次数问题
Single Number
Given a non-empty array of integers nums, every element appears twice except for one. Find that single one.
You must implement a solution with a linear runtime complexity and use only constant extra space.
Example 1:
12Input: nums = [2,2,1]Output: 1
Example 2:
12Input: nums = [4,1,2,1,2]Output: 4
Example 3:
12Input: nums = [1]Output: 1
Constraints:
1 <= nums.length <= 3 * 10^4
-3 * 10^4 <= nums[i] <= 3 * 10^4
Each element in the array appears twice except f ...
note-misc
work
specialist vs generalist。个人体验是先宽,后窄,再宽。“先宽”开始几年尽量接触不同的技术栈,找到自己的兴趣;“后窄”在senior / staff阶段成为某个方向的专家,最好要end to end pipeline熟练,这些技术积累会成为以后找工作的“矛”;“再宽”sr staff+需要更广的系统经验,或者management track需要融合非技术的部分。——【一亩三分地】
躺平有时,积极有时。
休息有时,然后工作有时。
在某种意义上,很多时候我们不是停留在想,而一定要去做。
你其实想的话,你的损耗会很大;但是做的时候,可能会让自己慢慢边平静。
——罗翔
不要到当机会来临的时候,才感叹自己的无能。——井冈山赵子龙【力扣】
不要用战术上的勤奋掩盖战略上的懒惰。——雷军
不要以执行层面的发挥来掩盖在战略和定位上的无能。——黄有璨【知乎】
只有当一个人有时候不能睡懒觉的时候,能睡懒觉才会变得有价值且能让人极大快乐。当一个人天天都能睡懒觉的时候,睡懒觉本身会变成一种负担。——姚同学【朋友圈】
第一届互联网人出路分享大赛
三十 ...
algorithm-string-kmp
KMP算法概念
KMP算法是一种用于字符串匹配的经典算法,它的全名是Knuth-Morris-Pratt算法,是由Donald Knuth、Vaughan Pratt和James H. Morris分别独立发明的。KMP算法用于在一个主文本字符串中查找一个模式字符串的出现,它的主要优势在于在匹配失败时避免不必要的回溯。
KMP算法通过构建部分匹配表(Partial Match Table),也称为最长前缀后缀匹配表(Longest Prefix Suffix Table),来避免这种不必要的比较。
性能分析
KMP算法的时间复杂度为O(m + n),其中m是主文本字符串的长度,n是模式字符串的长度。
参考
算法学习笔记(13): KMP算法
模板
1234567891011121314151617181920212223242526// 利用匹配获取pmt数组public static int[] getPmt(char[] pattern) { int pmt[] = new int[pattern.length]; // pmt[0] = 0; // 计算p ...
solution-idea-run-admin-terminal
问题
今天需要在Idea的命令行中使用Mysql,输入Mysql发现无法找到(之前都是用的Navicat)
环境
Windows10+Mysql8
解决
刚开始,发现mysql的环境变量都没有配,于是在path中加上C:\Program Files\MySQL\MySQL Server 8.0\bin
在cmd窗口试了下还是不行。于是试了下管理员的cmd窗口,是可以的。
于是,去Idea里的terminal窗口中试了下,发现不行,所以Idea的terminal没有管理员权限
解决这个问题,只需要设置Idea管理员启动即可(右键→属性→兼容性→以管理员身份运行)
note-spring
Spring基础
Spring 的核心是一个 容器,通常称为 Spring 应用程序上下文,用于创建和管理应用程序组件。这些组件(或 bean)在 Spring 应用程序上下文中连接在一起以构成一个完整的应用程序,就像将砖、灰浆、木材、钉子、管道和电线绑在一起以组成房屋。
依赖注入
将 bean 连接在一起的行为是基于一种称为 依赖注入(DI)的模式。(见显式配置示例)
显式配置
例如,以下 XML 声明两个 bean,一个 InventoryService bean 和一个 ProductService bean,然后通过构造函数参数将 InventoryService bean 注入到 ProductService 中:
1234<bean id="inventoryService" class="com.example.InventoryService" /><bean id="productService" class="com.example.ProductService" ...
tips-system
Windows
常用命令
123456789# 查看端口占用netstat -ano | findstr 3306# 停止服务(需要管理员权限)net stop mysql80# 列举所有文件dir# 将文件移动到目标位置move file-name dir-name\
参考
文件名包含空格的文件执行方式
文件名包含空格,比如:a df.txt
在命令行中如果直接敲这个文件名,则会被认为是两个文件a和df.txt
所以命令行中需要加上双引号(不能是单引号)
所以用Python的os.system调用系统命令时,需要这样
1os.system('python gene.py --input "{}" --output "{}"'.format(input_dir_path, output_dir_path))
微软输入法
win + ;: 快速emoji
win + v: 历史剪贴板
v:快捷转换:时间、数学计算
u:打出自己不会的字,比如:u huo niao 䲴
以词定字:当想输入某 ...
algorithm-dynamic-programming
dp深似海
“系统过去的历史只能通过现阶段的状态去影响系统的未来”——研究生算法课程老师对动态规划的描述,感觉挺不错的
分类参考了灵神的dp题单
记忆化搜索和递推是dp的两种实现方式
网格图dp
背包dp
线性dp
状态机dp
划分型dp
区间dp
状压dp
数位dp
树形dp
dp回溯
其它待分类dp
注意事项
如果动态转移方程不是按顺序的,那么需要注意不能直接赋值f[i+1][j] = f[i][j];,因为这样可能会覆盖之前动态转移的结果(注释的是按顺序的动态转移写法)
相关题解:3276. 选择矩阵中单元格的最大得分
1234567f[i+1][j] = Math.max(f[i+1][j], f[i][j]);// f[i+1][j] = f[i][j]; // 这里是错的,不能赋值for (int s = map.get(nums.get(i)), t = 0; s > 0; s -= t) { t = s & -s; if ((j & t) > 0) continue; f[i+1][j|t] = ...
algorithm-math-combinatorial-count
组合计数
计数基本原理
∣A∣=∑a∈A1|A| = \sum\limits_{a \in A} 1∣A∣=a∈A∑1
加法定理
|A U B| = |A| + |B|
乘法定理
|A * B| = |A| * |B|
举例
n-bit二进制串一共有多少个: 2^n(乘法原理)
如果把0看作(,把1看作),配对的括号序列有多少个?
0011->(())
101010->)()()(
对于长度为6的序列:
序列={()‾(()),k=2()‾()(),k=2(‾())‾(),k=4(‾(()))‾,k=6(‾()())‾,k=6序列 = \begin{cases}
\underline{()}(()), & k = 2 \\
\underline{()}()(), & k = 2 \\
\underline{(}()\underline{)}(), & k = 4 \\
\underline{(}(())\underline{)}, & k = 6 \\
\underline{(}()()\underline{)}, & ...
algorithm-build-graph
建图是一个机械劳作
邻接矩阵
邻接矩阵是一个二维数组,其行和列都对应图中的顶点。如果顶点i和顶点j之间存在边,则矩阵中的i,j 位置的元素为1(对于无权图),或为边的权重(对于有权图)。如果i=j,则通常为0,表示顶点不会与自己相连
一般来说,题目给出的都是邻接矩阵的形式。
例如743. 网络延迟时间
这个题目就是给你一个列表 times,表示信号经过 有向 边的传递时间。 times[i] = (ui, vi, wi),其中 ui 是源节点,vi 是目标节点, wi 是一个信号从源节点传递到目标节点的时间。
本篇主要讨论如何将邻接矩阵转换成其它的存图方式
邻接表
邻接表是表示图中顶点之间相邻关系的一种方式。对于图中的每一个顶点,邻接表包含了与该顶点直接相连的所有顶点的列表。
12345678public int networkDelayTime(int[][] times, int n, int k) { List<int[]> g[] = new ArrayList[n]; Arrays.setAll(g, i -> new ArrayL ...