Wireguard 踩坑记录

Linux 上配置

https://www.cyberciti.biz/faq/how-to-set-up-wireguard-firewall-rules-in-linux/

MacOS 上配置

https://barrowclift.me/articles/wireguard-server-on-macos

知识

https://medium.com/tangram-visions/what-they-dont-tell-you-about-setting-up-a-wireguard-vpn-46f7bd168478

无法上网的问题

隧道配好之后,如果启用隧道,就连不上公网了。
Wireguard通过配置里的AllowedIPs来决定要代理哪些IP,但是对域名的访问都会首先请求配置里设置的DNS获取IP地址之后再决定是否代理。
而我的配置里DNS使用了无法正常访问的8.8.8.8,所以导致浏览器无法上网了。改成其他能正常访问的DNS之后就正常了。

Vue Router 路由

Vue Router 路由

配置

配置 Route

import路径为相对于当前文件的路径。

const routes = [
    {
        path: "/path",
        component: () => import("path-to-page.vue")
    },
    // ...
]

使用 @ 指定根目录

要在import路径中使用@符号来代表指定的根目录,需要进行配置。

vite.config.js 中,添加resolve属性。

Vue3 基础

Vue3 基础

响应式

监听数据改动并自动更新。

使用ref()reactive()包装值,生成Proxy代理,劫持对象的调用和操作。
get时,将自身添加为被依赖值,进行依赖收集。(effect中会设置当前执行的函数)
set时,触发更新,重新调用依赖自身的函数。

绑定属性

  • 全写:v-bind:name="xxx"
  • 简写::name="xxx"

绑定事件

比赛训练笔记 - WebForm

ASPX 标签

<% C#代码 %>

可以在网页渲染时执行代码。

<% for(int i=0; i<5; i+=1) { %> 
   <% Response.Write("<br>" + i) %> 
<% } %>

<%= C#代码 %>

等同于调用Response.Write(...)

public string GetDate() {
    return DateTime.Now.ToString("yyyy-MM-dd");
}
Today is <%= GetDate() %>

比赛训练笔记 - WinForm

DataGridView

使用错误容器时的巨坑

使用 List 作为 DataSource。点击单元格时,就算没有单元格点击事件,也会在外层(父窗体 ShowDialog 子窗体的位置)报 IndexOutOfRange 下标越界异常。
解决方法:只要是用于 DGV 显示的列表,一律用BindingList

BindingList

ResetBinding()(对于整个列表)或ResetItem(i)(对于特定元素)来手动触发“列表已改变”事件。
RaiseListChangedEvents属性控制 BindingList 是否会发出“列表已改变”的事件。
注意:这个属性不仅控制添加和删除元素时是否会自动触发事件,同时也控制ResetBinding() / ResetItem(i)这类手动触发事件的方法是否会触发事件。

添加向列表大量元素时的标准流程:

list.RaiseListChangedEvents = false;

list.Clear();
foreach(var item in source)
{
    list.Add(item);
}

// 一定要先启用事件,然后再手动触发事件。
list.RaiseListChangedEvents = true;
list.ResetBindings();