当前为Twacの自习室的博客内容。查看全部
  • twacqwq
    随着 Go 1.18 开始引入泛型到现在的 Go 1.21.3 版本,经过版本+时间跨度,泛型也有了一系列的改变,之前都是要用才看,版本迭代带来的变化首先最直观的就是接口的概念定义,由方法集转为类型集的定义,还有利用泛型在日常开发迭代中带来的便利性也是很高的,其中我封装的 Minimax API Warpper 中也用到了泛型,不过都是凤毛麟角,感觉泛型的加入让 Go 变得有点魔法的感觉hhhh。泛型可以减少重复代码逻辑的工作,降低耦合度和提高抽象, 系统性的学一下泛型感觉还是很有必要的。泛型定义func Add(a, b int) int { return a + b}func AddFloat32(a, b float32) float32 { return a + b}func AddFloat64(a, b float64) float64 { return a + b}考虑上述计算和函数,我们设置了具体的类型形参 int, 它可以做到对整数的加法运算,这本身没有问题,但是如果我们想再写一个对 float32、float64 做加法的函数,我们就不得不重新写一个新的函数,尽管它…
  • twacqwq
    Go Kit 简介Go Kit 是一个用于在 Go 中构建微服务的编程工具包。与 Go Micro 不同,它被设计为一个用于导入二进制包的库。Go Kit 遵循简单的规则,例如:没有全局状态声明式组合显式依赖关系接口即约定领域驱动设计在 Go Kit 中,您可以找到以下的包:认证 - Basic 认证和 JWT 认证传输 - HTTP、Nats、gRPC 等等。日志记录 - 用于结构化服务日志记录的通用接口。指标 - CloudWatch、Statsd、Graphite 等。追踪 - Zipkin 和 Opentracing。服务发现 - Consul、Etcd、Eureka 等等。断路器 - Hystrix 的 Go 实现。Go Kit 自上而下构建了三层模型分别是: 分别是 Transport 层、Endpoint 层、Service 层。Transport 层:处理 HTTP、gRPC、Thrift 等协议相关的逻辑,主要对请求进行解码、对响应进行编码操作;Endpoint 层:在 Service 的上层作为业务的中间件,可使用限流、熔断、监控等能力;Service 层:用来处理…
  • twacqwq
    1710.卡车上的最大单元数https://leetcode.cn/problems/maximum-units-on-a-truck思路:先对numberOfUnitsPerBoxi从大到小排序, 每次取最大的数量, 然后truckSize减去numberOfBoxesi,尽可能的装多, 当truckSize为0得出答案, 这道题贪心算法直接可以过1234567891011121314151617181920func maximumUnits(boxTypes [][]int, truckSize int) (result int) { sort.Slice(boxTypes, func(i, j int) bool { return boxTypes[i][1] > boxTypes[j][1] }) for _, box := range boxTypes { result += box[1] * min(truckSize, box[0]) truckSize -= box[0] if truckSize <= 0 { break } } return}func m…
  • twacqwq
    117.填充每一个节点的右侧指针Ⅱhttps://leetcode.cn/problems/populating-next-right-pointers-in-each-node-ii思路:用BFS去遍历这颗二叉树, 层序遍历框架用while控制层数, for控制层级节点1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950/*// Definition for a Node.class Node { public int val; public Node left; public Node right; public Node next; public Node() {} public Node(int _val) { val = _val; } public Node(int _val, Node _left, Node _right, Node _next) { val = _val; left = _left; right = _right; next…
  • twacqwq
    791.自定义字符串排序https://leetcode.cn/problems/custom-sort-string思路:用数组记录每个字符的位置,遍历s, 按照order的顺序自定义排序交换元素, 如果s里有order没有的元素默认位置置为01234567891011func customSortString(order string, s string) string { dict := [26]int{} for i := range order { dict[order[i]-'a'] = i } cs := []byte(s) sort.Slice(cs, func(i, j int) bool { return dict[cs[i]-'a'] < dict[cs[j]-'a'] }) return string(cs)}99.恢复二叉搜索树https://leetcode.cn/problems/recover-binary-search-tree思路:BST的特质, 中序遍历顺序是一个升序排序, 根据题意恰好两个节点的值被错误的交换, 可以在中序遍历中找到这两个节…
  • twacqwq
    108.将有序数组转换为二叉搜索树https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree思路:根据题意是构造一棵平衡的BST, 对于BST的每个节点都有着root.left < root < root.right, 先找到root节点在别分构建左子树和右子树123456789101112131415161718192021222324/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */func sortedArrayToBST(nums []int) *TreeNode { return build(nums, 0, len(nums)-1)}func build(nums []int, start, end int) *TreeNode { if start > end { return nil } …
  • twacqwq
    突发奇想偶尔记录一两道算法题,算是记录也算是鞭策。嘛。。希望能坚持下去300.最长递增子序列https://leetcode.cn/problems/longest-increasing-subsequence思路:LIS递增子序列, 定义dp数组, 第i个元素的最大递增子序列是dp[i], 遍历dp数组找出最大值即是答案。1234567891011121314151617181920212223242526func lengthOfLIS(nums []int) int { n := len(nums) res := 0 dp := make([]int, n) for i := 0; i < n; i++ { dp[i] = 1 // 元素本身也算一个子序列, 所以要初始化为1 } for i := 0; i < n; i++ { for j := 0; j < i; j++ { if nums[i] > nums[j] { // 当后面元素大于前面元素 比较两者的最大递增子序列并加1 dp[i] = max(dp[i], dp[j] + 1) } } } …
  • twacqwq
    保存最新一期青年大学习学习记录每周一晚上八点自动完成最新一期青年大学习并获取记录提供自托管服务操作如下:进入团员页点击认证资料点击生成团员证复制链接提取链接中 memberId 参数的值将 memberId 的值作为评论内容留言一个示例(memberId=123456)1https://tuan.12355.net/wechat/view/information/member_certification_generated.html?memberId=123456&showMemberAdditionNames=&showMemberRewardIds=&isShowAllFee=trueGithub: https://github.com/Twacqwq/Youth
  • twacqwq
    众所周知B站看番环境越来越苛刻了(港澳除外),国内上线的番剧少之又少且部分番剧还有圣光剪辑和无缝链接,实属破坏看番体验。B站以外的在线看番网站画质起伏特别大,还有很多广告。所以搭建一个属于自己的影视库不仅可以满足看番需求,还可以满足BT党做种收藏需求(BT/P2P也可以XD)Emby Server部署有了想法开始搭建,影视库服务器我选用Emby,虽然Jellyfin开源,还是用Emby舒服一些(看个人)12345678910docker run -d \ --net=host \ -v /*your_config_location*:/config \ -e TZ=Asia/Shanghai \ -e HTTP_PROXY=xxx \ -e HTTPS_RPOXY=xxx \ -e PUID=1000 \ -e GUID=1000 \ --name=emby-server \ emby/embyserver:latestEmby会连上TVDB刮削剧集信息,Emby有时候会连不上,最好部署的时候加一个代理部署好Emby后我们只需要导入我们喜欢的番剧刮削便可食用了…但这还不够,Emby对于…
  • twacqwq
    介绍KVM(Kernel-based Virtual Machine)是一个开源的系统虚拟化模块,选择KVM的原因是因为自己的主力系统的Linux。但是出于不可抗力的原因(臭打游戏的)也不能完全脱离Winwdows,起初笔记本装了双系统,但是来回切换还是太麻烦了,虽然Linux有Wine、Proton等一些兼容层,但是效果还是不尽人意。。于是就想在Linux上运行一台Windows虚拟机,但是KVM虚拟机配合QEMU的QXL图形渲染还是达不到(畅玩游戏)要求的=m=。所以要利用KVM PCIe直通功能,让虚拟机独占高性能显卡,直接加载显卡对应的驱动,和显卡直接通信,给它加一双翅膀,拥有和物理机几乎同样的渲染性能。环境:虚拟机镜像:Windows 10 LTSC 2019Host:神舟战神G7-CT7NK套件:libvirt + qemu + virt-manager(图形前端)查看笔记本架构目前主流的笔记本架构是MUXed 和 MUXLess相比MUXLess来说,MUXed架构的笔记本更容易直通,因为它采用的是核显/独显切换工作方式;MUXLess架构是核显输出,独显渲染lspci …
  • twacqwq
    参加了第十三届蓝桥杯JavaB组省赛,感觉还是很多题粗心错了。。坑坑挺多的。今年只有两道填空题,难度也稍微上来了。试题A:星期计算问题描述:已知今天是星期六,请问 2022 天后是星期几?注意用数字 1 到 7 表示星期一到星期日。思路:直接求出值然后对7取余加1即可123456789101112import java.math.BigInteger;public class Solution { public static void main(String[] args) { BigInteger n = new BigInteger("20"); for (int i = 1; i <= 22; i++) { n = n.multiply(new BigInteger("20")); } System.out.println(n.remainder(new BigInteger("7")).add(new BigInteger("1"))); }}输出: 7试题B:山问题描述:这天小明正在学数数。他突然发现有些正整数的形状像一座“山”,比如 123565321、145541,…
  • twacqwq
    摘录我所喜欢的Unix哲学, 保持简单Unix 哲学起源于 Ken Thompson 早期关于如果设计一个服务接口简洁、小巧精干的操作系统的思考,随着 Unix 文化在学习如何尽可能发掘 Thompon 设计思想的过程中不断成长,同时一路上还从其它许多地方博采众长。Unix 设哲学说来不算是一种正规设计方法。它不打算从计算机科学的理论高度来产生理论上完美的软件。那些毫无动力、松松跨跨而且薪水微薄的程序员们,能在短短期限内,如果神灵附体般造出稳定而新颖的软件-–—这只不过是经理人永远的梦呓罢了。Unix 哲学(同其它工程领域的民间传统一样)是自下而上的,而不是自上而下的。Unix 哲学注重实效,立足于丰富的经验。你不会在正规方法学和标准中找到它,它更接近于隐性的半本能的知识,即 Unix 文化所传播的专业经验。它鼓励那种分清轻重缓急的感觉,以及怀疑一切的态度,并鼓励你以幽默达观的态度对待这些。Unix 管道的发明人、Unix 传统的奠基人之一 Doug Mcllroy 曾经说过:12341. 让每个程序就做好一件事。如果有新任务,就重新开始,不要往原程序中加入新功能而搞得复杂。2. 假定…
  • twacqwq
    关机/重启/注销常用命令作用shutdown -h now即刻关机shutdown -h 1010分钟后关机shutdown -h 11:0011:00关机shutdown -h +10预定时间关机(10分钟后)shutdown -c取消指定时间关机shutdown -r now重启shutdown -r 1010分钟之后重启shutdown -r 11:00定时重启reboot重启init 6重启init 0⽴刻关机telinit 0关机poweroff⽴刻关机halt关机syncbuff数据同步到磁盘logout退出登录Shell系统信息和性能查看常用命令作用uname -a查看内核/OS/CPU信息uname -r查看内核版本uname -m查看处理器架构arch查看处理器架构hostname查看计算机名who显示当前登录系统的⽤户who am i显示登录时的⽤户名whoami显示当前⽤户名cat /proc/version查看linux版本信息cat /proc/cpuinfo查看CPU信息cat /proc/interrupts查看中断cat /proc/loadavg查看系…
  • twacqwq
    迷迷糊糊学日语也有两年多了(还在备考的菜菜),日语学习可以分为学 单词 发音 语法;发音的话在日常交流中不是很会在意,交流意在意会即可;而单词呢,就是靠平时的日积月累而丰富起来;最重要的也是最复杂的就是语法,再最初学日语的时候(我不是学标日起步的,我是必修书起步,不过应该都一样),我们都是从一点一滴的零碎日语语法开始学习,学久了发现其实是有一个类似框架的形式存在,可以打破现有的日语语法学习,以下是我个人翻阅资料和浏览视频总结下来的日语语法一个整体的框架,学习语法就是为了造句,这个小框架从一个全新的角度去学习日语语法,如有描述的不妥的地方欢迎大佬们指教QAQ(害怕2021.12月达成N2成就qwq基本句型(四大句型)学语法就是为了造句,我学的第一个语法就是(....は...です/ 什么是什么 | 什么怎么样), 这个也是基本句型的核心李さんは中国人です。这个熟悉的例句,其实就是四大句型之一的“名词谓语句” 那么什么是谓语呢,官方解释是谓语是对主语动作状态或特征的陈述和说明这个就是刚刚说到的核心, 什么 + 怎么样 如果把"什么"当成主语的话,那么"怎么样"就是谓语了在日语中能充当谓语的只…
  • twacqwq
    把会做的做了一遍,不会做的就不放题目了试题A – 门牌制作问题描述:小蓝要为一条街的住户制作门牌号。这条街一共有 2020 位住户,门牌号从 1 到 2020 编号。小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、0、1、7,即需要 1 个字符 0,2 个字符 1,1 个字符 7。请问要制作所有的 1 到 2020 号门牌,总共需要多少个字符 2?输出: 624思路:模除筛选,把符合条件的数位用计数器存起来即可。123456789101112131415public class Solution { public static void main(String[] args) { int count = 0; for (int i = 1; i <= 2020; i++) { int tmp = i; while (tmp > 0) { if (tmp%10 == 2) { count++; } tmp /= 10; } } System.out.println(count); }}试题C –…