Golang高效解码xml文件

xml处理需要引用encoding/xml包.一般推荐使用 xml.Decoder 替代 xml.Unmarshal。 xml.Decoder 是一个流式 XML 解码器,它可以边读取边解码,而不需要将整个 XML 文档加载到内存中。相比之下,xm1.Unmarshal 会将整个 XML 文档加载到内存中然后再进行解码。因此,对于大型 XML 文件,使用xml.Decoder 可以节省内存并提高性能。 小的Xml文件 下面是一个例子 package main import ( "encoding/xml" "os" "testing" ) type UserData struct { Name string `xml:"name"` Age int32 `xml:"age"` } type Pocket struct { Data []UserData `xml:"users"` } func TestXmlDecode(t *testing.T) { file, err := os.Open("testdata/userdata.xml") if err != nil { t.Fatal(err) } var pocket Pocket if err := xml.NewDecoder(file).Decode(&pocket); err != nil { t....

July 26, 2023 · 2 min · czyt

使用C#以编程方式切换Windows专注模式

缘起 最近需要以编程方式调用windows api实现windows10专注模式的切换,但是Google一圈,没有现成代码。找到的相关帖子要么是cpp的要么是rust的,而且是undocument的Windows api。 Csharp调用 以下是完整代码 public static class FocusAssistToogle { private const string NtdllDlDll = "ntdll.dll"; private const uint DataBufferSize = 4; private static readonly byte[] DisableDataBuf = { 0x00, 0x00, 0x00, 0x00 }; // 01仅优先通知 02 仅限闹钟 private static readonly byte[] EnableDataBuf = { 0x02, 0x00, 0x00, 0x00 }; [DllImport(NtdllDlDll, SetLastError = true)] private static extern int ZwUpdateWnfStateData( ref WnfSWnfStateName sWnfStateName, byte[] buffer, uint bufferSize, IntPtr previousStateData, IntPtr currentStateData, uint previousStateDataSize, uint currentStateDataSize); [StructLayout(LayoutKind....

July 24, 2023 · 2 min · czyt

Zig相关资源

博客 https://www.openmymind.net https://matklad.github.io https://kristoff.it 教程 https://zigbyexample.github.io zig资讯 zig news 软件包 https://zig.pm

July 20, 2023 · 1 min · czyt

Zig语言快速参考

本文使用AI自动翻译,原文链接 第 0 章 - 入门 欢迎 Zig 是一种通用编程语言和工具链,用于维护健壮、最佳和可重用的软件。 警告:最新的主要版本是 0.10.1 - Zig 仍然是 1.0 之前的版本;仍然不建议在生产中使用,并且您可能会遇到编译器错误。 要遵循本指南,我们假设您已经: 先前的编程经验 对低级编程概念的一些理解 了解 C、C++、Rust、Go、Pascal 或类似语言将有助于遵循本指南。您应该有一个可用的编辑器、终端和互联网连接。本指南是非官方的,与 Zig Software Foundation 无关,旨在从一开始就按顺序阅读。 Installation 本指南假设您使用 Zig 的主版本而不是最新的主要版本,这意味着从网站下载二进制文件或从源代码编译;您的包管理器中的 Zig 版本可能已过时。本指南不支持 Zig 0.10.1。 从以下位置下载并提取 Zig 的预构建主二进制文件: https://ziglang.org/download/ 将 Zig 添加到您的路径 linux, macos, bsd 将 Zig 二进制文件的位置添加到 PATH 环境变量中。对于安装,请添加 export PATH=$PATH:~/zig 或类似于 /etc/profile(系统范围)或 $HOME/.profile。如果这些更改没有立即应用,请从 shell 运行该行。 windows a) 系统范围(admin powershell) [Environment]::SetEnvironmentVariable( "Path", [Environment]::GetEnvironmentVariable("Path", "Machine") + ";C:\your-path\zig-windows-x86_64-your-version", "Machine" ) b) 用户级别(powershell)...

July 19, 2023 · 42 min · czyt

Golang 防火墙编程

非编程方式 Windows 使用netsh方式进行防火墙规则的维护 Linux 编程方式 Windows Tailscale开发了一个应用WFP的库inet.af/wf 。参考参考链接。在tailscale中的封装代码如下(源链接): // Copyright (c) Tailscale Inc & AUTHORS // SPDX-License-Identifier: BSD-3-Clause //go:build windows package wf import ( "fmt" "net/netip" "os" "golang.org/x/sys/windows" "inet.af/wf" "tailscale.com/net/netaddr" ) // Known addresses. var ( linkLocalRange = netip.MustParsePrefix("ff80::/10") linkLocalDHCPMulticast = netip.MustParseAddr("ff02::1:2") siteLocalDHCPMulticast = netip.MustParseAddr("ff05::1:3") linkLocalRouterMulticast = netip.MustParseAddr("ff02::2") ) type direction int const ( directionInbound direction = iota directionOutbound directionBoth ) type protocol int const ( protocolV4 protocol = iota protocolV6 protocolAll ) // getLayers returns the wf....

July 3, 2023 · 8 min · czyt

Nginx使用备忘

安装和更新 安装 以ArchLinux为例 yay -S nginx 生成的systemctl单元如下 [Unit] Description=A high performance web server and a reverse proxy server After=network.target network-online.target nss-lookup.target [Service] Type=forking PIDFile=/run/nginx.pid PrivateDevices=yes SyslogLevel=err ExecStart=/usr/bin/nginx -g 'pid /run/nginx.pid; error_log stderr;' ExecReload=/usr/bin/nginx -s reload KillMode=mixed [Install] WantedBy=multi-user.target 更新 查看现有Nginx的编译参数 ➜ ~ nginx -V nginx version: nginx/1.22.1 built with OpenSSL 3.0.7 1 Nov 2022 (running with OpenSSL 3.0.8 7 Feb 2023) TLS SNI support enabled configure arguments: --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --sbin-path=/usr/bin/nginx --pid-path=/run/nginx....

June 21, 2023 · 2 min · czyt

初学Flutter时我遇到的问题汇总

这些是我学习Flutter过程中遇到的问题列表 项目问题 Android Studio丢失Image Asset新建项 这样会在新的界面打开IDE,等同步完成,然后就有新建项了。 调试 Flutter编辑时,没有色板预览 需要设置Java运行环境,设置好以后,就可以用了。 Debug条件运行 需要引入flutter/foundation.dart然后,使用kDebugMode进行判断即可。 import 'package:flutter/foundation.dart'; if (kDebugMode) { print(" changed $v"); } 隐藏Debug 条幅 在代码的theme入口代码添加debugShowCheckedModeBanner: false,,完整代码如下: class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', theme: ThemeData( colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple), useMaterial3: true, ), debugShowCheckedModeBanner: false, home: const MyHomePage(title: 'Flutter Demo Home Page'), ); } } AndroidStudio可以显示设备但是Flutter的设备选择没有设备 先检查Android SDK PS C:\Windows\system32> flutter doctor --android-licenses Flutter assets will be downloaded from https://storage....

May 25, 2023 · 2 min · czyt

Dart语言参考

Dart语言学习入门过程中的一些记录,仅记录有差异的。可能会跟go等其他语言进行一个对比。 语言基础 运算符 截断除法运算符(truncating division operator) 比如计算 23➗ 7 使用 23/7 使用下面的代码 void main (){ print(23/7); } // 输出 3.2857142857142856 使用~/运算符 void main (){ print(23~/7); } // 输出 3 String 变量值内插 Dart使用下面的方式进行值的内插 void main() { var greeter = "Dart🐟"; print("打印机:$greeter"); } 这一点跟C#有一点相似,C#使用下面的方式: void main() { var greeter = "C#🐟"; print($"打印机:{greeter}"); } Dart中如果变量需要进行值计算,那么跟开始的例子相似。 void main() { var greeter = "Dart🐟"; print("打印机:${greeter.length}"); } 函数 Dart函数不支持重载,但是提供了可选命名参数和可选参数等方式。 可选参数 String Fake(String UserName, [String? carIdentifier]) { if (carIdentifier !...

May 21, 2023 · 15 min · czyt

使用aws go-sdk访问cloudflare R2文件

准备 需要准备Cloudflare的accountId,相应的R2 ak sk 和bucketName等信息. var ( accountId = "xxxxx" accessKeyId = "cbdade718b2ca877882csssssfcf" accessKeySecret = "04917c7d745422022e266f6b06" bucketName = "gopher" ) 完整代码 package main import ( "context" "fmt" "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/config" "github.com/aws/aws-sdk-go-v2/credentials" "github.com/aws/aws-sdk-go-v2/service/s3" "log" ) func main() { var ( accountId = "xxxxx" accessKeyId = "cbdade718b2ca877882csssssfcf" accessKeySecret = "04917c7d745422022e266f6b06" bucketName = "gopher" ) var r2Resolver = aws.EndpointResolverWithOptionsFunc(func(service, region string, options ...interface{}) (aws.Endpoint, error) { return aws.Endpoint{ URL: fmt.Sprintf("https://%s.r2.cloudflarestorage.com", accountId), }, nil }) cfg, err := config....

May 21, 2023 · 1 min · czyt

使用C#连接wifi

需要安装库 Managed Native Wifi 获取Wifi列表 示例代码 private List<AvailableNetworkPack> GetAvaliableNetworks() { var networks = new List<AvailableNetworkPack>(); foreach (var network in NativeWifi.EnumerateAvailableNetworks()) { if (!networks.Contains(network)) { networks.Add(network); } } return networks; } 连接wifi 创建Profile 应该支持这些类型open, WEP and WPA-PSK的网络 private static string CreateSecurityWifiProfile(string ssid, string password) { string hex = CreateHexSSIDName(ssid); return string.Format(@"<?xml version=""1.0""?> <WLANProfile xmlns=""http://www.microsoft.com/networking/WLAN/profile/v1""> <name>{0}</name> <SSIDConfig> <SSID> <hex>{2}</hex> <name>{0}</name> </SSID> </SSIDConfig> <connectionType>ESS</connectionType> <connectionMode>auto</connectionMode> <MSM> <security> <authEncryption> <authentication>WPA2PSK</authentication> <encryption>AES</encryption> <useOneX>false</useOneX> </authEncryption> <sharedKey> <keyType>passPhrase</keyType> <protected>false</protected> <keyMaterial>{1}</keyMaterial> </sharedKey> </security> </MSM> <MacRandomization xmlns=""http://www....

April 24, 2023 · 4 min · czyt