Hugo

新建page:

hugo new “posts/demo.md”

运行hugo站点,-D包含草稿:

hugo server -D

开发字体

Ubuntu_Mono_Nerd_Font_Complete

.net 6

Aspnet Core作为后台服务运行

  • 安装Microsoft.Extensions.Hosting.WindowsServices,dotnet add package Microsoft.Extensions.Hosting.WindowsServices
  • 添加builder.Host.UseWindowsService();作为后台服务
  • 使用sc创建后台服务 sc create Test_WebSiteService binPath="D:\publish\WebApplication1.exe" start=auto displayname="ASPNET CORE测试服务"
  • sc start Test_WebSiteService启动服务,以后会自动随系统自动启动

参考:https://www.cnblogs.com/ittranslator/p/worker-service-as-windows-services.html

.net自定义控件

如何在属性面板中设置折叠属性,属性前面有显示加号,代码如下:

需要添加一个继承自TypeConverterKeyInputTypeConverter属性转换类,才能显示折叠号哦

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
public class KeyInputTypeConverter : TypeConverter
{
    public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes)
    {
        //获取KeyInputInfo对象中的所有属性
        PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(typeof(KeyInputInfo));
        return properties.Sort(new string[] { "SubmitVisible", "CloseVisible", "EscVisible" });//指定属性的显示排序
    }

    public override bool GetPropertiesSupported(ITypeDescriptorContext context)
    {
        //因为有公共属性,必须返回true
        return true;
    }
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
[TypeConverter(typeof(KeyInputTypeConverter))]//别忘记加上转换器类
public class KeyInputInfo
{
    public KeyInputInfo()
    {
        SubmitVisible = true;
        EscVisible = true;
        CloseVisible = true;
    }
    public bool SubmitVisible { get; set; }
    public bool EscVisible { get; set; }
    public bool CloseVisible { get; set; }
}

效果图:

参考链接:https://learn.microsoft.com/zh-cn/dotnet/api/system.componentmodel.typeconverter?view=net-6.0

.net build 启用诊断日志

  • 下载binlog查看工具,MSBuildStructuredLogSetup.exe
  • 在sln目录运行 dotnet build -verbosity:diag -bl
  • 当前目录生成一个msbuild.binlog文件,内包含诊断日志

参考链接:

mysql 异常问题

mysql 链接池用完异常

ERROR 2023-06-08 08:36:26,257 [orker] Bills.ChargerAppService - An exception has been raised that is likely due to a transient failure. Consider enabling transient error resiliency by adding 'EnableRetryOnFailure()' to the 'UseMySql' call.
System.InvalidOperationException: An exception has been raised that is likely due to a transient failure. Consider enabling transient error resiliency by adding 'EnableRetryOnFailure()' to the 'UseMySql' call.
 ---> MySqlConnector.MySqlException (0x80004005): Connect Timeout expired. All pooled connections are in use.
   at MySqlConnector.MySqlConnection.CreateSessionAsync(ConnectionPool pool, Int32 startTickCount, Nullable`1 ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/MySqlConnection.cs:line 940
   at MySqlConnector.MySqlConnection.OpenAsync(Nullable`1 ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/MySqlConnection.cs:line 445
   at MySqlConnector.MySqlConnection.Open() in /_/src/MySqlConnector/MySqlConnection.cs:line 369
   at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenInternal(Boolean errorsExpected)
   at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open(Boolean errorsExpected)
   at Pomelo.EntityFrameworkCore.MySql.Storage.Internal.MySqlRelationalConnection.Open(Boolean errorsExpected)
   at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.BeginTransaction(IsolationLevel isolationLevel)
   at Pomelo.EntityFrameworkCore.MySql.Storage.Internal.MySqlExecutionStrategy.Execute[TState,TResult](TState state, Func`3 operation, Func`3 verifySucceeded)
   --- End of inner exception stack trace ---
   at Pomelo.EntityFrameworkCore.MySql.Storage.Internal.MySqlExecutionStrategy.Execute[TState,TResult](TState state, Func`3 operation, Func`3 verifySucceeded)
   at Microsoft.EntityFrameworkCore.RelationalDatabaseFacadeExtensions.BeginTransaction(DatabaseFacade databaseFacade, IsolationLevel isolationLevel)
   at Abp.EntityFrameworkCore.Uow.DbContextEfCoreTransactionStrategy.CreateDbContext[TDbContext](String connectionString, IDbContextResolver dbContextResolver)
   at Abp.EntityFrameworkCore.Uow.EfCoreUnitOfWork.GetOrCreateDbContext[TDbContext](Nullable`1 multiTenancySide, String name)
   at Abp.EntityFrameworkCore.Repositories.EfCoreRepositoryBase`3.GetDbQueryTable()
   at Abp.EntityFrameworkCore.Repositories.EfCoreRepositoryBase`3.GetQueryable()
   at Abp.EntityFrameworkCore.Repositories.EfCoreRepositoryBase`3.GetAllIncluding(Expression`1[] propertySelectors)

查询mysql链接数

1
2
3
4
5
6
7
8
show full processlist
select @@innodb_buffer_pool_size;

show  processlist
SHOW STATUS LIKE 'Threads_connected';
SELECT @@max_connections;

show status like 'Threads%'

Win10版本程序自启动

注册表设置方法,需要在SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Run中添加值,才能启动成功。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
RegistryKey rk = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);

if(startupCheck.Checked)
    rk.SetValue("WinScroll", Application.ExecutablePath.ToString());
else
    rk.DeleteValue("WinScroll", false);

RegistryKey rk64 = Registry.LocalMachine.OpenSubKey("SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Run", true);
try
{
    if (startupCheck.Checked)
        rk64.SetValue("WinScroll64", Application.ExecutablePath.ToString());
    else
        rk64.DeleteValue("WinScroll64", false);
}
catch
{
}

正则表达式学习手册

链接 https://deerchao.cn/tutorials/regex/regex.htm

正则表达式测试 https://deerchao.cn/tools/wegester/

JS逆向

https://segmentfault.com/a/1190000042649131

基于WebAssembly的JavaScript代码虚拟化保护方法研究与实现

Andriod app手机https抓包解密

github上传大文件

github限制单个文件上传不能超过100MB,如果传超过100MB的文件需要使用git lfs命令

  • 下载git lfs,并安装。下载地址:https://git-lfs.com/

  • 将github仓库clone下来

  • git clone https://github.com/xxxx/xxxx.git
    git lfs install
    git track xxxx.bak
    git add xxxx.bak
    git commit -m xxxx.bak
    git push
    
  • 这样就能将大文件上传到仓库。

Win10 VS2022安装.Net framework4.5

由于之前安装的框架比4.5要高,再安装时会提示错误。

解决办法:

  • 下载.net framework 4.5的 nupkg包,将下载下来的包改成zip格式,下载地址
  • 复制解压后的v4.5文件夹,替换到C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework目录下
  • 重新打开 VS2022,4.5下的程序可以运行

markdown插件

  • Prettier esbenp.prettier-vscode 格式化插件
  • Align 注释对齐插件

费曼学习法

  1. 选择目标领域,并完全了解这个概念
    将需要学习的概念写在纸上,尽可能的去熟悉这个概念。

    1. 一定要将自己脑海的语言组织出来并反应在书面上
    2. 如果写不出来再回去看哪里不懂
  2. 向别人复述这个概念
    向身边人复述一遍你所学习到的知识,如果没有,就只好假装自己是一个老师(脑洞少女的日常),向学生复述这个概念,记住,尽量使用简单的语言,这一步是为了让你更好的融入自己的理解。在复述时,一定会在所难免的会卡住,或者结巴,叙述不完整。这时候,恭喜你,喜提知识概念薄弱点。这时候,将这些薄弱点重新学习巩固一遍,直到真正理解。

  3. 纠错之后的再次学习
    把刚才学习的不完善的地方再次学习,回归原材料或者书本本身,直到能够流畅地阐述学习的知识点。

  4. 回顾和精简
    走完上述三个步骤之后,想必你们可以能够很流畅精准地将概念完整的阐述出来。而现在我们需要做的是用我们理解的语言去阐述知识概念。

当你完成,请从头重复这整个过程。但是这一次要简化你的说法或使用图形的比喻。如果你还是一样解释的太冗长或混乱,那你可能并不太了解他,所以你必须重复的进行修饰,直到最好。

费曼学习法是一种十分高效且深入学习的技能,当你能够运用自己的语言去解释这样的概念时表明你已经深入的了解并能够掌握。这种方法适用于初高中生的数理化的学习,通过了解基础的概念,在概念的基础上加以逻辑推导,并适当的加入做过的例题,而这样的例题同时又会再次加强知识点在脑海中的印象。基于这点,费曼学习法和错题集的整理方法有异曲同工之妙。

费曼学习法的科学性在于它是符合大脑的认知规律,从混乱走向有序的过程,从被动记忆走向主动理解并阐述。

当你使用这种方法时,你慢慢地穿过这个技巧的每一个步骤,精确地发现你还有哪些内容没有理解。这种学习非常高效,很少浪费时间。

从费曼到马斯克,再到芒格,有趣的是,当你真正使用费曼的方法,就会发现它不只是一种学习方法,还是一种思维方式。对于每一个概念,不要用似是而非的另一个复杂概念去间接解释,而是问最基本的问题,用最简单的语言来直接解释。这种思维方法是物理学教会我们的很重要的一种思维方式。

这与同样毕业于物理系的Tesla和SpaceX创始人,“钢铁侠” Elon Musk推崇和擅长的基本原则思维(First Principle Thinking)其实是一会事。

Elon Musk在一次采访中提到:

With first principles thinking] you boil things down to the most fundamental truths and then reason up from there.

当你使用基本原则思维时] 你将事情追溯到最基本的真理…然后,从最基本的真理出发,向上逻辑推导。

如果你把这两个不同时代的聪明人的共识,视为一种巧合的话,那么不妨看一看查理·芒格的“大猩猩理论”:一个聪明人进入一个有大猩猩的房间,解释他的想法是什么,而那个大猩猩只是坐在那里吃它的香蕉。结束这段谈话后,那个解释的人出来时一定变得更聪明了。

Great minds think alike.多么让人惊喜的巧合。