钾肥喵的窝

我在 CODING 部署的 Hexo 博客

0%

什么是Blazor

MSDN1中的定义十分贴切, 此处照搬过来:

Blazor 是一个使用 .NET 生成交互式客户端 Web UI 的框架:
使用 C# 代替 JavaScript 来创建信息丰富的交互式 UI。
共享使用 .NET 编写的服务器端和客户端应用逻辑。
将 UI 呈现为 HTML 和 CSS,以支持众多浏览器,其中包括移动浏览器。
与新式托管平台(如 Docker)集成。

不严谨地说, Blazor就是用C#部分代替JavaScript来写前端.

阅读全文 »

题面

https://www.luogu.com.cn/problem/P1953

基本思路

很显然就是一个字符串处理的模拟题, 说到字符串, 就想到美国人的算法, 就想到今年下半年, 正则表达式 是一个常用工具, 而 C++ 11 中引入了对正则表达式的支持(在 <regex> 中), 我们可以用正则表达式进行匹配与替换.

原生字符串

这是 C++11 中引入的语法糖, 格式为 R"(A_String)" , A_String 的字面值会被原封不动的保存, 这样我们的正则表达式中就不用每次都用 \\ 来转义了.

regex的使用

出门右拐 CppReference:

https://zh.cppreference.com/w/cpp/header/regex

网络上也有很多介绍, 在此就不赘述了.

注意:

smatchstr() 函数, 参数为 0 时返回的是匹配的整个串.

阅读全文 »

核心部分-Coliru

Coliru是一个支持自定义命令行的在线编译器.

值得一提的是官方FAQ中给的示例代码还是http请求, 使用前应该替换成https.

语法高亮-ace.js

参考资料: 利用ace.js编写一个JavaScript编辑器(带智能补全)

需要指出的是文章存在一些问题

1
2
3
4
5
6
var text = document.getElementById('editor').innerText; 
/*存在只能获取可见部分的问题, 实际上ace.js提供了直接获取代码的方法, 无需处理行号
例: var code = editor.getSession().getValue();
*/
var ctext = "<script>"+text.replace(/\d\n/g, "")+'<\/script>';
//正则只能匹配一位数字, 应该改成/\d{1,}\n/g

传送门

在线运行C++代码

由于换了渲染器, 不支持内嵌HTML了, 以下是源码:

入门

环境

classpath

classpath 是 JVM 用到的一个环境变量, 用来指示 JVM 到何处去搜索 class

在 Windows 系统中, 不同目录间用 ; 分隔, 带空格的目录使用 "" 包裹

例:

1
.;C:\work\project1\bin;C:\shared;"D:\jiafeimiao\project1\bin"

需要注意的是当前目录使用 . 代表, JVM 的按照 classpath 中的路径顺序查找, 如果在某个路径下找到了对应的 class 文件就不再继续搜索, 如果所有路径都没找到, 即报错.

阅读全文 »

char到底占几个字节?

两个 (65536个码位, 0 ~ 65535)

这个Unicode它保真吗?

2020-03-10 发布的 Unicode 13.0.0 包含 143,859 个字符.[1]

来做一道简单的比较大小: 143859 和 65536

那么 char 使用的 Unicode 保真吗?

答案是保真的, 接下来简单介绍一下 Unicode 相关知识

阅读全文 »

WAV格式解析

Waveform Audio File Format(WAVE, 或者是经常看到的扩展名WAV), 是巨硬与IBM共同开发的存储音频流的编码格式, 属于资源交换文件格式(Resource Interchange File Format, RIFF)的一种应用.

下面简要介绍一下RIFF文件, RIFF文件由一个简单的表头 (header) 跟随着多个 "chunks" 组成, 详见Wikipedia页面.

接下来介绍WAV文件, 以下仅介绍最简单的形式, 不包含扩展信息.

阅读全文 »

题面

在Animal类和其子类Dog类中均定义了一个名为age的整形变量, 则按照多态原理, 下列程序中访问的是Dog类中的age变量.

1
2
Animal a=new Dog();
System.out.println(a.age);

解析

属性的继承

Java方法重写是子类重写父类同名的方法, 子类方法覆盖了父类的方法. 而对于属性, 子类不会覆盖父类同名的属性.

如果子类没有定义属性, 子类会继承最近父类的属性.

如果创建子类对象后, 父类和子类对象都会保存一份自己的属性, 子类对象引用向上转型为父类对象引用, 父类对象引用调用的是子类重写的方法, 调用的属性仍然是父类的属性.

阅读全文 »