钾肥喵的窝

我在 CODING 部署的 Hexo 博客

0%

什么是期权

期权是投资者约定在未来买入或者卖出某项资产的权利.

这里的权利就是期权与期货的最大不同: 期权可以选择行使权利或者不行使权利.

期权主要分两种类型: 看涨期权(Call)和看跌期权(Put), 分别对应以某一固定价格买入卖出资产的权利.

看涨期权的收益=相关市场价-执行价-溢价; 看跌期权的收益=执行价-相关市场价-溢价. (此处的溢价就是购买期权的费用)

而根据行使权利的时间限制又可以把期权分为美式期权(到期日之前任意交易日都可)和欧式期权(只能在到期日行使权利), 二者的共同点是如果不行使权利, 在到期后都自动作废.

阅读全文 »

保持在页面底端

用尽各种方法都不行, 最后用了一个比较脏的方法: 放两个透明按钮, 通过循环设置焦点的方法让浏览器自动滚动到焦点处.

1
2
<button @ref="myrefA" style="background:transparent; border-width:0px; outline:none; width:1px; height:1px;"></button>
<button @ref="myrefB" style="background:transparent; border-width:0px; outline:none; width:1px; height:1px;"></button>
1
2
3
4
5
6
7
8
9
10
11
private ElementReference myrefA;
private ElementReference myrefB;

async void Function()
{
// do something ...
await myrefA.FocusAsync();
StateHasChanged();
await myrefB.FocusAsync();
StateHasChanged();
}
阅读全文 »

0. 预备知识

主要是一些基础知识, 没什么好说的.

比较有意思的有:

  • 习题1-26里面的图, 学到了一些建筑词汇, 比如"望板", 指的是房椽上的木板.
  • "函数与图形" 一节中提到的绘图器失效的情况, 在使用图形计算器等工具应当注意
  • 起初看到习题3-33~38, 认为其中利率十分之高, 看了答案才明白给的是年化利率
    还学习到一个新概念: 连续复利, 即期数无限大的情况下的极限利率, 其公式为: \(A'=A\cdot e^{rt}\), 其中\(A, r, t\)分别为本金, 利率, 期数
  • "反函数和对数函数" 一节中提到的里氏震级和声音强度以及半衰期

1. 极限和连续

极限定义

前面的非正式定义对于引出\(\varepsilon-\delta\)语言是大有裨益的, 例题还指出了极限不存在的三种情况: 函数跳跃, 函数趋于\(\pm \infty\), 函数无限震荡.

复习一下极限的\(\varepsilon-\delta\)定义:

\[ \lim_{x\to a}f(x)=L\quad \Leftrightarrow \quad \forall \varepsilon > 0, \exists \delta > 0 \mathrm{\ s.t.\ } \left|f(x)-L\right|<\varepsilon \]

阅读全文 »

缘起

在给Petpet生成器添加新功能的时候发现需要对图片进行投影变换, 但是SixLabors的投影变换不能直接使用四角坐标, 而是需要使用变换矩阵, 因此有了这篇文章.

齐次坐标

坐标变换的形式如下:

\[ \begin{pmatrix} x' \\ y' \\ z' \\ k \end{pmatrix} = \begin{bmatrix} a_{11} & a_{12} & a_{13} & a_{14} \\ a_{21} & a_{22} & a_{23} & a_{24} \\ a_{31} & a_{32} & a_{33} & a_{34} \\ a_{41} & a_{42} & a_{43} & a_{44} \end{bmatrix} \begin{pmatrix} x \\ y \\ z \\ 1 \end{pmatrix} \]

其中的\(k\)可视作缩放系数, 最终的坐标应当是\((\frac{x'}{k}, \frac{y'}{k}, \frac{z'}{k})\).

阅读全文 »

缘起

起因是想写一个教务系统验证码自动填写脚本, 也就是这个仓库, 花了一天时间研究TorchSharp怎么用之后就陷入了参数传递和CORS的泥淖中, 因此写下这篇博客记录一下.

参数传递

首先看看著名的MSDN是怎么说的: Parameter Binding in ASP.NET Web API

默认情况下, 对于 "简单" 类型, ASP.NET Core会尝试从URL中获取, 但是这个项目中我们需要传递的参数是一张图片的base64, 大概率会出现URL过长的问题.

因此需要使用[FromBody]属性限定参数从请求体中获取, 接着使用Postman就是各种尝试都没办法调用接口. 经过一番尝试, 终于找到了正确方法(适用于string类型):

  • 设置Content-Typeapplication/json
  • Body中只放一个用双引号包裹的字符串
阅读全文 »

起因是在剥离bot的Petpet生成器作为可独立部署的项目时需要将资源文件夹一并复制到输出目录下, 然后发现VS竟然不能对文件夹设置"复制到输出目录".

一番查找, 在MSDN找到了两篇文章: MSBuild reference for .NET SDK projects, Common MSBuild project items

简单来说, CopyToOutputDirectoryCopyToPublishDirectory两个属性可以分别配置是否复制到输出目录和发布目录中, 取值可以是:

  • Always: 始终复制
  • Never: 从不复制
  • PreserveNewest: 仅在项目发生更改时复制

示例代码如下, 其中Update属性是文件夹路径:

1
2
3
<ItemGroup>
<None Update="petpet/**" CopyToOutputDirectory="Always" CopyToPublishDirectory="Always" />
</ItemGroup>

传送门

P4000 斐波那契数列

P4994 终于结束的起点

皮萨诺周期

皮萨诺周期(Pisano period), 即斐波那契数列对\(n\)取模的最小循环节, 通常用\(\pi(n)\)表示.

要解决P4000首先需要知道一些定理(具体证明):

\[ \begin{align} \pi(mn) &= \pi(m)\cdot\pi(n), && (m, n互质)\\ \pi(p^{k}) &\mid \pi(p)\cdot p^{k-1}, &&(p是质数) \\ \pi(p) &\mid p-1, &&(p是质数, 且5对p存在二次剩余) \\ \pi(p) &\mid 2(p+1), &&(p是质数, 且5对p不存在二次剩余) \end{align} \]

将上述定理中的整除换成等号计算, 接着枚举因数即可找出最小循环节, 也即皮萨诺周期.

阅读全文 »

论文地址: Number Parsing at a Gigabyte per Second

符号约定

符号 说明
\(m\) 二进制有效数字(非负整数, 通常在\([2^{52}, 2^{53})\))间
\(p\) 二进制指数(可正可负的整数)
\(m \times 2^{p}\) 非负浮点数的一般形式
\(w\) 十进制有效数字(非负整数, 通常在\([0, 2^{64})\))间
\(q\) 十进制指数(可正可负的整数)
\(w \times 10^{q}\) 十进制非负小数的一般形式
\([x]\) 最接近\(x\)的整数, 四舍六入五成双
\(\lfloor x\rfloor\) \(x\)下取整
\(\lceil x \rceil\) \(x\)上取整
后缀0 \(x\)可被\(2^{k}\)整除时, 称\(x\)\(k\in \mathbb{N}\)个后缀0
阅读全文 »

什么是Git

根据官方网站上的介绍: Git是免费开源的分布式版本控制系统.

什么是版本控制

首先来看这个场景:

张三和李四还有王五要共同完成一份报表, 他们决定分工合作, 一人填写一部分, 然后用QQ发送给对方.

三天以后, 文件夹里躺着十几个同名文件, 王五忍不下去了, 决定改变这个现状, 他决定给文件加上命名规范, 于是文件夹里的文件变成了这个样子:

文件名 解析
财务报表_王五_Part1_20211026.xlsx 王五在2021年10月26日对第一部分进行了修改
财务报表_张三_Part10_20210926.xlsx 张三在2021年9月26日对第十部分进行了修改
财务报表_李四_Part3_20211016.xlsx 李四在2021年10月16日对第三部分进行了修改

一大堆同名文件总算是可以区分了, 这就是一种简陋的手动的版本控制, 可是这样还是不太方便, 我们需要自动化的版本控制.

Git的诞生

Git最初是Linus为了管理Linux的源码而编写的, 最初的代码管理是手动进行的, 后来BitKeeper决定为Linux社区开放免费授权, 但是Linux社区的大佬们岂能受这商业公司的约束, 他们开始对其进行逆向工作. 合作自然是告吹了, Linus决定自行开发自动化版本控制系统, 以十天的时间编写出Git第一个版本.

开始使用Git

本着按需学习的原则, 此处直接介绍如何与Github配合使用.

阅读全文 »

首先上代码:

打印div的几种写法

法一: 替换当前页面

1
2
3
4
5
6
7
function PrintDiv(ID){
var needPrint = document.getElementById(ID).innerHTML;
var old = document.body.innerHTML;
document.body.innerHTML=needPrint;
window.print();
document.body.innerHTML=old;
}

此法能很好的保留样式, 但是在Blazor中存在一个问题: 调用以后页面中所有的按钮都会失效.

问题的产生应该与Blazor框架的底层机制有关, 在此不深究.

法二: 在新页面中打印

此法需要注意一点: 如果需要保留样式, 需要将CSS引用一并写入新页面, 需要等待页面加载完成后才能开始打印, 否则打印结果不带样式.

等待页面加载完成在 Firefox 和 Chrome 中的写法不一样, 具体请看代码.