自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 收藏
  • 关注

原创 推荐5款常用编程文本编辑器

1. VScode (Windows/ Linux/ Mac)‎Visual Studio Code是一个轻量级但功能强大的源代码编辑器,在桌面上运行,适用于 Windows、macOS 和 Linux。它附带了对 JavaScript、TypeScript 和节点的内置支持.js并且具有丰富的其他语言(如 C++、C#、Java、Python、PHP、Go)和运行时(如 .NET 和 Unity)的扩展生态系统下载VS code/帮助文档2. Sublime Text (Windows, Mac

2020-12-25 18:14:21 8861 2

原创 Python实现一个简易的CLI翻译程序

默认是[auto] -> [en] 你也可以修改目的语言,比如第一个我就修改成了 swe(瑞典语)其中有两个[地方]需要修改就是填入你的APPID和密钥,保存为一个.py文件就可以使用了。但是这样名字有点长,我在我的~/.zshrc给它取了个别名,然后放到了环境变量里面。之前翻译用的linux上的golddict,每次翻译都很慢。进去一系列注册操作之后,你可以得到一个APPID和密钥。对我们来说主要的步骤就是写一个请求体去请求翻译结果。所以想写一个简单快速的翻译命令行翻译软件。

2023-01-24 16:03:33 1116

原创 协变(Covariance)、逆变(Contravariance)与不变(Invariance)in Scala

协变如果 A 是 B 的子类型,那么 List[A] 就是 List[B] 的子类型使用注释+A,可以使一个泛型类的类型参数 A 成为协变。对于某些类 class List[+A],使 A 成为协变意味着对于两种类型 A 和 B,如果 A 是 B 的子类型,那么 List[A] 就是 List[B] 的子类型。这允许我们使用泛型来创建非常有用和直观的子类型关系Scala 标准库有一个通用的不可变的类 sealed abstract class List[+A],其中类型参数 A 是协变的。......

2022-08-09 19:40:29 714

原创 散列表查找技术(数据结构)

散列表,又叫哈希表(Hash Table),是能够通过给定的关键字的值直接访问到具体对应的值的一个数据结构。也即,把关键字映射到一个表中的位置来直接访问记录,以加快访问速度。H(key)=a×key+bH(key)=a \times key+bH(key)=a×key+bH(key)=keymod  bH(key)=key \mod bH(key)=keymodb先计算出关键字值的平方,然后取平方值中间几位作为散列地址。随机分布的关键字,得到的散列地址也是随机分布的。发生冲突时,寻找下一个空地址

2022-06-26 22:08:13 377

原创 矩 阵 压 缩

对于对称矩阵我们只保存下三角(包括对角线上的内容)对于[a11a21a22a31a32a33a41a42a43a44a51a52a53a54a55]\begin{bmatrix} a_{11}& & & & \\ a_{21}& a_{22}& & & \\ a_{31}& a_{32}& a_{33}& & \\ a_{41}& a_{42}& a_{43}& a_{44}& \\ a_{51}& a_{52}& a_{53}&

2022-06-26 13:10:50 1093

原创 Haskell 配置 VS code 开发环境 (2022年6月)

Haskell 是一种标准化的、通用纯函数式编程语言,有非限定性语义和强静态类型。在 Haskell 中,函数是一等公民。作为函数式编程语言,主要控制结构是函数。Haskell 语言是 1990 年在编程语言 Miranda 的基础上标准化的,并且以 λ 演算(Lambda-Calculus)为基础发展而来。具有“证明即程序、结论公式即程序类型”的特征。这也是 Haskell 语言以希腊字母「λ」(Lambda)作为自己标志的原因。Haskell 语言的最主要的执行环境是 GHC。.......

2022-06-19 19:26:16 3787

原创 邻接表实现的有向带权图 及 图算法(C++)

邻接表(Adjacency List):我实现的方法相当于加邻接表是一个 Vertex类型的数组( adj = new Vertex[ ] )数组元素Vertex中有一个指向Edge对象的指针(相当于链表的头节点),用来存放与对应Vertex相连的边前面 public 的结构体是后面一些成员函数的返回值(因为有的要返回多个值有点要用特定的方式处理返回值)和一些后面的算法会用到的(并查集)。没有边的从输入流获取边的2. 析构函数就删除边和顶点对象3. 深度优先遍历 接受一个参数为Verte

2022-06-03 10:27:21 3355 2

原创 邻接矩阵实现的带权有向图(C++)

邻接矩阵中带权有向图的定义:设G=(V,E),则:

2022-06-03 10:04:23 2804

原创 Flip Game (不太暴力的解法)

Flip Game1. 大概题意2. 不太暴力的思路3. 代码3.1 C++3.2 Java前一篇暴力解法 (链接)1. 大概题意翻转游戏是在一个 4x4 的方形场地上进行的,在其 16 个方格中的每一个方格上都放置有两个面的棋子。每个棋子的一面是白色的,另一面是黑色的,每个都是黑色或白色的一面朝上。每轮你翻转 3 到 5 块,从而将它们上侧的颜色从黑色变为白色,反之亦然。每轮都根据以下规则选择要翻转的棋子:1.选择 16 个中的任何一个。2.将选定的棋子以及所有相邻的棋子翻转到所选棋

2022-05-23 22:22:19 1169

原创 POJ1753 Flip Game(位运算+枚举+深搜回溯)

POJ1753 Flip Game1. 大概题意2. 思路&做法(位运算+枚举+深搜回溯)3. 全部代码3.1 C++ 代码3.2 Java 代码 (稍有不同)1. 大概题意翻转游戏是在一个 4x4 的方形场地上进行的,在其 16 个方格中的每一个方格上都放置有两个面的棋子。每个棋子的一面是白色的,另一面是黑色的,每个都是黑色或白色的一面朝上。每轮你翻转 3 到 5 块,从而将它们上侧的颜色从黑色变为白色,反之亦然。每轮都根据以下规则选择要翻转的棋子:1.选择 16 个中的任何一个。

2022-05-22 18:22:12 570

原创 字符串String类

字符串String类String.h#ifndef __STRING_H__#define __STRING_H__#include <iostream>/** * @brief 自己写的字符串类 * 末尾没有\0,用{ len }记录长度 * */class String {private: char* str; int len;public: /** * @brief Construct a new String object * */

2022-05-09 14:32:01 166

原创 字符串匹配 KMP BF

字符串匹配 KMP BF字符串匹配?BFKMP字符串匹配?简单的说就是: 给定两个字符串S, T 在主串S中找到模式TBFC++代码/** * @brief brutal force 暴力 * * @param str 字符串 * @param pat 模式 * @return int 首字母下标或-1表示没找到 */int bf(string str, string pat) { for (size_t i = 0; i < str.length(); i++) { s

2022-04-19 21:32:48 727

原创 二叉堆 ( 数据结构 )

二叉堆0. 相关概念1. 结构2. 遍历3. 建堆3.1. 最大堆 ( 大顶堆 )3.2. 最小堆 ( 小顶堆 )4. 堆排序5. PriorityQueue0. 相关概念二叉堆 : 用数组储存的完全二叉树完全二叉树 : 二叉树,且除最后一层外,每一层都是填满了的,最后一层从第一个节点开始依次向右增加节点最大堆 : 父节点值大于等于任意一个子节点的值最小堆 : 父节点值小于等于任意一个子节点的值堆化 : 使得任意子树都是堆1. 结构2. 遍历根节点下标: 0节点i的:父节点下

2022-04-18 22:51:22 458

原创 Java ForkJoinPool 实现异步计算

ForkJoinPool 实现异步计算前言使用ForkJoinPool二者比较前言假设我们要计算一个未经优化的 Fibonacci 数可以简单的写出以下代码: static long fib(long n) { if (n <= 2) return 1L; return fib(n - 1) + fib(n - 2); }使用ForkJoinPoolclass Fib extends RecursiveTask<

2022-04-17 12:32:15 541

原创 静态链表 ( 数据结构 )

静态链表什么是静态链表 😯定义结点的定义链表的定义常用操作1. 添加2. 访问什么是静态链表 😯静态链表( static linked list ), 就是用数组来表示链表,用数组元素的下标来模拟链表的指针.由于是利用数组来定义的链表,属于静态储存分配, 因而叫做静态链表.其实很好理解,如果把内存看作一个巨大的数组, 那么递归定义的链表和静态链表就相差无几了.最常用的静态链表是静态单链表( 有一个next指针 ), 后面静态链表特指静态单链表定义结点的定义静态链表的节点也有由两个域组成: 数

2022-04-16 18:32:37 5849 1

原创 L2-002 链表去重 (25 point(s))

L2-002 链表去重 (25 point(s))给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉。即对每个键值 K,只有第一个绝对值等于 K 的结点被保留。同时,所有被删除的结点须被保存在另一个链表上。例如给定 L 为 21→-15→-15→-7→15,你需要输出去重后的链表 21→-15→-7,还有被删除的链表 -15→15。输入格式:输入在第一行给出 L 的第一个结点的地址和一个正整数 N(N≤105N≤10^5N≤105 ,为结点总数)。一个结点的地址是非负的 5 位整数,空

2022-04-16 17:59:20 180

原创 Scala 入门

Scala 入门1. Scala 简介2. 开发环境3. 基本语法4. 基本函数式1. Scala 简介Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性。Scala 运行在 Java 虚拟机上,并兼容现有的 Java 程序。Scala 源代码被编译成 Java 字节码,所以它可以运行于 JVM 之上,并可以调用现有的 Java 类库。官网: https://scala-lang.org/2. 开发环境IDEA + Scala

2022-04-15 21:45:27 464

原创 我的代码规范 ( Java )

Java代码规范1 标识符1.1 对所有标识符都通用的规则1.2 标识符类型的规则1.2.1 包名1.2.2 类名1.2.3 方法名1.2.4 常量名1.2.5 非常量字段名1.2.6 参数名1.2.7 局部变量名1.2.8 类型变量名1.2.9 驼峰式命名法(CamelCase)1 标识符1.1 对所有标识符都通用的规则标识符只能使用ASCII字母和数字,因此每个有效的标识符名称都能匹配正则表达式\w+。在Google其它编程语言风格中使用的特殊前缀或后缀,如name_, mName, s_nam

2022-04-15 20:53:36 376 1

原创 我的代码规范 ( C++ )

C++代码规范我的代码规范1. 命名我的代码规范1. 命名#define BUF_SIZE 1024 // 宏定义全部大写,下划线分隔constexpr ARRAY_LEN 265 // 常量全部大写,用下划线分隔/*变量命名要有意义变量名尽量不缩写作用域越大, 名字可以越长*/ // 注释对齐char* my_name = nullptr; // 变量全部小写用下划线分隔int g_flag;

2022-04-15 20:45:21 178

原创 队列 ( 数据结构 )

队列1. 基于循环数组的队列2. 基于链表的队列1. 基于循环数组的队列/** * 顺序队列(基于数组) */template <typename T>class Queue {private: T* a; const static int DEFAULT_SIZE = 16; int size; int rear, front;public: /* 初始化 */ Queue(); /** * @param n 队列长度 */ Queue(int n);

2022-04-15 20:41:06 288

原创 栈 ( 数据结构 )

栈1. 基于数组的栈2. 基于链表的栈3. 测试1. 基于数组的栈/** * 使用数组实现的Stack * * a = new T[n]; * * a[++p]=t * * return a[p--] * * p?-1 */template <typename T>class Stack {private: T* a; unsigned size; int p; const static unsigned DEFAULE_SIZE = 16;public

2022-04-15 20:36:56 446

原创 循环链表 ( 数据结构 )

循环链表定义定义及实现测试定义头节点和单链表一样, 只是最后一个节点的指针指向了头节点而不是nullptrtemplate <class T>class Node {public: T val; Node* next; Node() = default; Node(const T& t, Node* nxt = nullptr) : val(t), next(nxt) {}};定义及实现template <typename T>class C

2022-04-15 20:31:32 426

原创 双向链表 ( 数据结构 )

双向链表定义定义及实现定义双向链表的节点比起单链表的next指针, 双链表多了一个proir指针指向前面的节点template <class T>class Node {public: T val; Node<T>*proir, *next; Node() : val(0), proir(nullptr), next(nullptr) {} Node(T v, Node<T>* p = nullptr, Node<T>* n = nul

2022-04-15 20:27:23 128

原创 单链表 ( 数据结构 )

链表定义实现测试定义链表的节点/** * @brief 单链表的节点 * @tparam T 节点元素类型(class类型比较适用) */template <class T>class Node {public: T val; Node* next; Node() = default; Node(const T& t, Node* nxt = nullptr) : val(t), next(nxt) {}};链表/** * @brief

2022-04-15 20:22:09 286

原创 C++实现的变长数组 ( 数据结构 )

C++实现的变长数组why核心代码定义实现why我们使用C++创建一个普通的数组长度是不能变的, 现在我们写一个类似C++ STL里面vector的数组暂且叫他ArrayList吧核心代码当数组元素不够的时候, 创建一个长度为原来的两倍的新数组, 将数组原数组的内容拷贝到新数组 T* a = new T[__capacity * 2]; memset(a, 0, __capacity * 2 * sizeof(T)); for (size_t i = 0, l = __capacity; i

2022-04-15 20:16:04 1158

原创 Win10任务计划+PowerShell实现Git自动推送

Win10任务计划+PowerShell实现自动推送远程仓库前言1. AutoPush.sp12. taskschd.msc前言每次写完代码都要推送到Gitee太麻烦了就写了一个PowerShell脚本代替但还是避免不了每次推送都要运行一下Linux上有cron实现计划任务Window上也有类似的叫taskschd.msc我们使用taskschd来定期运行推送的脚本就可以的1. AutoPush.sp1sp1就是PowerShell的扩展名(后面是数字1而不是字母l)使用VScode加P

2022-04-08 20:29:49 1327

原创 史上最简单的git教程搭配Github和Gitee一起食用更佳

史上最简单的Git教程一级目录二级目录三级目录一级目录二级目录三级目录

2022-02-22 10:06:52 481

原创 超详细Ubuntu Linux安装配置 Tomcat

Ubuntu 安装配置Tomcat1. 开始之前2. 安装 Java3. 安装 Tomcat1. 开始之前Tomcat是一个基于Java的软件, 安装Tomcat之前需要先安装Java然而Java又分为OpenJDK 和 Oracle Java二者都差不多,但是OpenJDK 安装比较方便这里安装版本选择open-jdk8 和Tomcat 8.5 ,为什么不选用高版本的?因为高版本的坑太多, 我也装过Graalvm 22 + Tomcat 10.0,结果问题多多,回过来想想其实Tomcat 8.5

2022-02-12 22:53:16 17968 11

原创 PTA 寻宝路线 (40 point(s))

寻宝路线 (40 point(s))在一个m行n列方格矩阵中,每一个方格内摆放着价值不等的宝贝(价值可正可负),让小明感到好奇的是,从左上角到达右下角的所有可能路线中,能捡到宝贝的价值总和最大是多少?而且这种达到最大值的路线 又有多少条?【注意:只能从一个格子向下或向右走到相邻格子,并且走到的格子宝贝一定会被捡起。】输入格式:第一行为整数m,n(均不大于100),下一行开始会有一个m行n列的整数方阵,对应方格矩阵中的宝贝价值(这些值的绝对值都不超过500)。输出格式:单独一行输出2个整数,

2022-02-12 15:04:54 803

原创 VS Code配置Java万能环境

VS Code 配置Java开发测试环境关于开始之前配置Java 环境配置 VS Code正式开始关于用了一段时间VS Code写Java, 才发现原来VS Code这么腻害????本文会不断更新,解锁分享VS Code写Java等的用法????开始之前下载JDK : Oracle JDK.下载VS Code : Visual Studio Code会用到的jar包 : https://pan.baidu.com/s/1ytDNexEQbCrvtjmb4FYKoA 提取码:q4t5配置J

2022-02-10 21:42:19 3172

原创 动态规划与贪心算法

贪心算法关于什么是贪心算法使用关于什么是贪心算法简单说就是: 每一步都做出一个局部最优的选择, 最终的结果就是全局最优贪心算法是一种特殊的动态规划即具有局部最优解的, 显然不是所以问题都具有局部最优解使用...

2022-02-10 20:38:41 1076

原创 花式计算斐波那契(fibonacci)数列

花式计算斐波那契fibonacci数列关于1. 循环2. 递归3. 带备忘录的递归4. 使用矩阵乘法统一测试下关于斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=1,F(1)=1,F(n)=F(n−1)+F(n−2)(n≥2,n∈N∗) F(

2022-02-07 19:07:30 828 1

原创 一文让你轻松写出递归(Recursion)

递归关于递归是什么递归有什么用递归构成递归的使用条件如何使用递归如何找递推关系?递归时间复杂度分析关于递归是什么简单说, 函数自己调用自己就叫递归递归有什么用简化代码: 只需少量代码就可描述出解题过程简化问题: 把一个大型复杂问题转化为一个比原问题规模更小的子问题, 到子问题无需再次递归为止递归构成递归基例(递归出口)(bottom cases):最基本的情况, 递归到这种情况时, 不需要进一步的递归, 程序调用完成, 返回递推关系(recurrentce relation):一个问题

2022-02-03 20:42:36 1125

原创 Java笔记--实时更新

Java一学期复习前言一、Java开发入门1.1 Java概述1.2 JDK, JRE, JVM二、Java编程基础2.1 基本语法2.2 数据类型2.2.1八种基本数据类型2.3 运算符2.4 选 择结构2.5 循环结构三、面向对象四、常用类五、集合六、I/O流七、GUI八、JDBC九、多线程总结前言学了一学期Java了现在开始复习吧一、Java开发入门1.1 Java概述Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 面向对象程序设计语言

2022-01-08 18:16:46 1247 1

原创 MySQL笔记

SQL笔记SQL一. 数据库基本操作二. 数据表基本操作三. 用户和密码4. 常见错误及解决SQL一. 数据库基本操作查看所有数据库SHOW DATABASES;创建新数据库CREATE DATABASE db_name;删除数据库DROP DATABASE db_name;二. 数据表基本操作创建数据表CREATE TABLE tb_name( 字段1 数据类型 [列级别约束条件] [默认值], 字段2 数据类型 [列级别约束条件] [默认值]

2021-10-31 16:27:44 325

原创 Python_文件_日记管理系统

日记管理系统函数式编程详解版精华版Singleton版函数式编程详解版将程序拆分为一个个小的函数----“分而治之”def main(): """ 完成一系列操作的主函数 """ load() # 调用load函数 while True: print("我的日记系统v1.0".center(20, '-') + "\n1. 添加日记 \ \n2. 删除日记 \ \n3

2021-06-21 20:48:02 903

原创 PTA第3章-2 查验身份证 (15 分)

第3章-2 查验身份证 (15 分)一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下:首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然后将计算的和对11取模得到值Z;最后按照以下关系对应Z值与校验码M的值:Z:0 1 2 3 4 5 6 7 8 9 10M:1 0 X 9 8 7 6 5 4 3 2现在给定一些身份证号码,请你验证校验码的有效性,并输出有问题的号码。输入格式:输入第

2021-04-02 18:36:21 287

原创 PTA第3章-9 字符串转换成十进制整数 (15 分)

第3章-9 字符串转换成十进制整数 (15 分)输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数。输入格式:输入在一行中给出一个以#结束的非空字符串。输出格式:在一行中输出转换后的十进制数。题目保证输出在长整型范围内。输入样例:+-P-xf4+-1!#输出样例:-3905s=input()flag=1f2=Trues1=""

2021-04-02 18:33:26 337

原创 VIM-配置-.vimrc

前言在使用vim的时候我们可以输入:set nu 显示行号,但每次都输一遍操作就显得冗余。将这段命令写入vimrc就可以避免重复操作。在linux环境下,配置文件一般都叫*rc,rc是 run command 的首字母简写。vimrc一个在/etc/vimrc(系统的vim配置文件)。还有一个是~/.vimrc(用户的vim配置文件,也是我们要修改的文件),刚装上vim的时候是没有这个文件的,我们创建一个就行了。只需要 vim ~/.vimrc 再将以下内容复制粘贴就可以啦。"行注释"括号,引号自

2021-02-27 10:06:45 1035

原创 VIM-多文件-多窗口

前言之前已经了解了VIM的基本操作,发现实际使用的时候每次都要同时打开多个文件进行操作,打开多个会话有比较麻烦。那么有没有一种方法可以多文件多窗口操作?目录前言打开分屏从shell中打开分屏从VIM中打开分屏分屏调整关闭分屏打开分屏从shell中打开分屏命令vim -On [FILE_1] [FILE_2] ...vim -on [FILE_1] [FILE_2] ...说明-O:垂直分割(vertical)-o: 水平分割(默认horizontal)n: 表示分几个屏,可以缺省不

2021-02-25 11:16:10 167

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除