主页

M1mac使用utm虚拟机最小化安装x86_64archlinux

写在前面 最近看操作系统的课程, 需要用到gnu的代码调试工具gdb, 但是在arm的Mac中并不能安装(只能安装x86_64架构的) ❯ brew install gdb gdb: The x86_64 architecture is required for this software. Error: gdb: An unsatisfied requirement failed this build. 正好前几天看到有人用UTM在m1mac上成功安装了Win10(amd64), 我也尝试着安装来着, 但是Win10资源占用太大了, 8GB内存实在吃不消, 特别烫然后还很多bug, 后来我想索性试试Linux, 直接安装命令行界面并通过物理机ssh到虚...

阅读更多

C++设计模式 类图的绘制(mermaid Js)

写在前面 classDiagram Class01 <|-- AveryLongClass : Cool <<interface>> Class01 Class09 --> C2 : Where am i? Class09 --* C3 Class09 --|> Class07 Class07 : equals() Class07 : Object[] elementData Class01 : size() Class01 : int chimp Class01 : int gorilla class Class10 { >>...

阅读更多

Leetcode233数字1的个数 容易理解的组合数学方法

题目 给定一个整数 n,计算所有小于等于 n 的非负整数中数字 1 出现的个数。 示例 1: 输入:n = 13 输出:6 示例 2: 输入:n = 0 输出:0 提示: 0 <= n <= 1e9 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/number-of-digit-one 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 解题思路 这里面的例子有问题, 说是 0~10^9, 结果早就超出 1e9 了… 首先来看这样一个例子:13, 怎样来计算数字 1 的个数呢? 一个比较直观的思路就是先计算1~10中数字 1 的个数, 然后计算11~13中数字 1 的个数. 显...

阅读更多

使用mac的applescript定制sublime执行c程序弹出终端

写在前面 最近又开始折腾编辑器了, 当然还是一个历史遗留问题, 我最爱的Sublime还是不能通过终端执行C/C++程序, 或者就是执行完之后直接退出了, 绕了一圈, 从每一个程序中加上system(read);算是一个折中的方案, 但是终归有点麻烦, 采用AppleScript(命令行中使用osascript -e)的方法当然可以, 但是我找了半天也没一个能跑明白… 只能说自己功力不够 针对Terminal 下面倒是一个可以通过applescript跑起来的例子, 就是对iTerm不行, 只能对系统默认的终端(Terminal.app)来操作.. 还是有点鸡肋的. 这个命令我参考了1, 并做了一些改动. # double `-e` osascript -e 'tell app...

阅读更多

C++字符串字面量""s的使用方法

写在前面 前几天看lc题解看到一个C++写法:""s, 感觉之前没见过, 后来查看一番cppreference1之后发现这个语法竟然是一个C++14时候出现的字符串字面量定义的简洁语法, 下面来具体看看: 代码 #include <string> #include <iostream> // must with stdc++14 void print_with_zeros(const std::string note, std::string const& s) { std::cout << note; for (const char c : s) { (c ? std::cout << c ...

阅读更多

C++中vector使用c字符时的小坑与分析

问题与解决 最近看看C++11标准, 准备用用新的range-based for语法, 但是一个例子让我有点困惑, 就是下面这段代码: #include <bits/stdc++.h> using namespace std; void t1() { vector<string> vs{'a', "abc"}; for (int i = 0; i < vs.size(); i++) { cout << vs[i] << " "; } cout << endl; } int main(int argc, char const *argv[]) { t1(); ...

阅读更多

用opengl绘制winxp版扫雷的墨镜笑脸

写在前面 最近看看OpenGL的东西, 学了一些基础的语法, 所以用来做点东西, 用基本的点线多边形等来绘制一个Windows XP中经典的游戏扫雷里面的标志性笑脸, 如下图: 思路 这个笑脸有四种形态,分别是初始状态的笑脸, 点击时候的o型嘴, 赢的时候的墨镜脸和输了时候的伤心脸, 下面通过简单的直线和圆来绘制, 都是简单图形, 本质上其实都是点的绘制, 这里我封装了一下函数, 调用会方便一些, 分别是通过vector<GLint>表示的点, 这样用initializer_list时候会方便很多. 其次就是一些小细节, 例如圆的绘制中的角度问题(这里就是嘴的绘制), 还有键鼠事件的交互, 我觉得熟悉了这个流程之后, 主要的思路就都放在点的坐标上了, 这里我建议...

阅读更多

C++字符串大小比较的踩坑

坑 最近学习C++11中的initializer_list这一新特性, 一个实例是关于字符串比较大小的, 代码如下: cout << max({string("Fff"), string("Eoa"), string("Acc")}) << endl; 运行结果如下: Fff 很显然最大值就是字符串"Fff"(依字典序), 但是我觉得string这个关键字可以去掉, 也就是将上述代码改为: cout << max({"Fff", "Eoa", "Acc"}) << endl; 但是这时候结果就变成了: Acc 这是为什么呢? 分析 一开始我以为问题出在max()函数的身上, 找出源码后发现其本质还是逐元素比较...

阅读更多

Total views.
您是Zorch的第 个小伙伴
Hits