Git合作指南
Fork 项目仓库 进入项目的 GitHub 页面,点击右上角的 Fork 按钮,将该项目仓库复制到自己的 GitHub 账户下。 这个 Fork 的副本是你对项目的个人副本,你可以在上面进行改动而不会影响原项目。 Clone 项目到本地 在你的 GitHub 账户中找到刚刚 Fork 的仓库,复制仓库的链接。 在本地执行以下命令将仓库克隆到你的电脑: 1git clone <your-forked-repo-url> 添加上游仓库 (Upstream) 为了保持你的 Fork 和原项目的同步,需要添加原项目的仓库地址作为 “上游仓库”。 进入克隆的项目文件夹,运行以下命令: 1git remote add upstream <original-repo-url> 同步上游仓库的更新 在进行更改之前,确保你的分支是最新的。可以通过以下命令拉取上游仓库的更新并合并到本地: 12git checkout maingit merge...
(三)Python面向对象设计模式
类和对象 一切都是对象 在 Python 中,“一切皆对象”是一个核心理念。简单来说,Python 中的所有东西都是对象,无论是数值、字符串、函数、类,甚至是模块和代码本身。Python 对象有三个特征:身份、类型和值。 身份:对象在内存中的地址,可以通过 id() 函数查看,例如 id(obj)。 类型:对象的类别,可以通过 type() 函数查看。例如,type(5) 返回 <class 'int'>。 值:对象的实际内容或数据,直接调用变量名即可查看。 1234i = 2print(id(i)) # 输出 i 的存储地址print(type(i)) # 输出 <class 'int'>print(i) # 输出变量 i...
(二)包的开发
Python 包的开发是一项重要的技能,可以帮助你组织代码、实现代码复用,并且将功能模块分发给其他开发者使用。 包和模块是什么 在 Python 中,一个包(Package)就是一个包含多个模块的目录,其中通过 __init__.py 文件来表明它是一个包。包允许你将代码逻辑分解为多个文件,并且通过模块的方式进行导入和复用。 模块:一个 Python 文件(*.py 文件)就是一个模块。模块可以包含函数、类和变量。 包:包是包含多个模块的文件夹。包使得模块之间可以被组织起来,以便更好的管理。 目录结构示例: 1234my_package/ ├── __init__.py # 包初始化文件 ├── module_a.py # 模块 A ├── module_b.py # 模块 B 在代码中使用包(如果要供外部使用,推荐使用相对路径): 12345# 导入包中的模块from my_package import module_a# 使用模块中的函数module_a.some_function() 一个典型的 python...
docker自动化
了解背景 Docker 是一种轻量级的容器化技术,主要用于应用程序的环境迁移和一致性。你需要知道下面的基本概念: 了解镜像、容器的基本概念:https://yeasy.gitbook.io/docker_practice/basic_concept 数据卷的基本概念:https://yeasy.gitbook.io/docker_practice/data_management/volume 网络方面,端口映射、docker compose 容器互联:https://yeasy.gitbook.io/docker_practice/network/port_mapping OK,上面三个基本概念,你就足够使用 docker 了,然后我们来了解 docker 最实用的地方: 环境迁移,在不同的机器上保持一致性,一次创建或配置,可以在任意地方正常运行。。 直接在 docker 内利用 linux 环境和路径挂载来开发。 隔离依赖、统一开发环境、快速启动。 利用 Linux 容器作为开发环境:在不同平台(Windows、Mac、Linux)上保持一致的开发环境。 通过...
(一)Python环境配置指南
管理 Python 版本 推荐使用 https://github.com/pyenv/pyenv 来管理不同版本的 python,但是它不支持 windows,如果你使用 windows,请使用 https://github.com/pyenv-win/pyenv-win 。 如果你需要使用特定版本的 python,先安装它,类似于 1pyenv install 3.9.6 随后在项目的根目录,使用 1pyenv local 3.9.6 它会生成一个配置文件 .python-version ,就会让进入项目根目录,就会自动切换到 3.9.6 的版本。 管理虚拟环境 Poetry 适合现代 Python 项目开发、个人或小型团队开发、需要发布到 PyPI 的项目。 特点: 自动化依赖管理:Poetry 能够自动处理依赖冲突,生成 pyproject.toml 和 poetry.lock 文件,确保依赖一致性。 内置虚拟环境管理:Poetry 会自动为每个项目创建虚拟环境,隔离项目依赖,保证项目间的互不干扰。 简化的发布流程:通过 poetry build 和 poetry...
如何成为优秀的软件工程师
要成为一名优秀的软件工程师,需要掌握广泛的技能和知识,包括基础的数据结构、高级架构设计和良好的编程实践。本文将为你详细介绍如何全面提升自己的编程能力,成为卓越的软件工程师。 深入掌握数据结构与算法 TODO: 我的数据结构和算法的笔记,每一类数据结构怎么用。 数据结构和算法是软件工程的核心基础。深入理解数组、链表、堆栈、队列、树、图等基础数据结构,可以帮助你高效地解决复杂问题。你不仅需要理解它们的工作原理,还要清楚它们的优缺点、本质特性以及适用的应用场景。 数组是一种连续存储的结构,适合需要快速随机访问的场景,访问的时间复杂度为 O(1)。但它在插入和删除操作时需要移动大量数据,时间复杂度为 O(n),因此不适合频繁插入和删除的场景。数组通常用于需要快速访问的应用,例如排行榜和固定大小的数据集合。 链表是一种由节点组成的结构,每个节点包含数据和指向下一个节点的指针。链表在已知位置时,插入和删除操作非常高效,时间复杂度为 O(1),但随机访问的效率较低,为...
Decimal Recurring Cycles and Cyclic Groups
From the Perspective of Cyclic Groups When the Denominator and 10 are Coprime The process of division is actually the calculation of 10kmod n10^k \mod n10kmodn, which is the remainder of the k-th division. When the remainder is 1, i.e., 10kmod n=110^k \mod n=110kmodn=1, it indicates a cycle. However, this may not be the first cycle, as the remainder might have appeared twice at another number, such as 2, hence the cycle would be shorter. First, consider when 10 and n are coprime, forming...
Haskell(六) Project Euler 练习1-26
Haskell(一)入门Haskell(二)函数式编程Haskell(三) MonadHaskell(四)总结和工具链Haskell(五) 总结和展望Haskell(六) Project Euler 练习1-26 本文会选择一些有意思的 Project Euler 的题目,学习怎么用 Haskell 写算法,并且逐渐学习相关语言和数学知识。前 100 题可以直接分享答案,后续的题目就只给暗示和加密的答案,可以发邮件获取解密方式。 代码仓库:https://github.com/learnerLj/projecteuler P1 显然 3 和 5 的倍数,其实是 3 和 5 的倍数,去除重复算的 15 的倍数。而且 3 的倍数的和,还可以化简成求和公式。 1234sumOfMultiples limit = sumDivisible 3 + sumDivisible 5 - sumDivisible 15 where cumulativeSum n = n * (n + 1) `div` 2 sumDivisible n = n *...
Haskell(五) 总结和展望
Haskell(一)入门Haskell(二)函数式编程Haskell(三) MonadHaskell(四)总结和工具链Haskell(五) 总结和展望Haskell(六) Project Euler 练习1-26 随着我们深入 Haskell 的世界,我们发现它不仅仅是一种编程语言,而是一种带有丰富理论背景的编程范式。Haskell 的设计思想深植于函数式编程的根基,与 Lambda 演算和范畴论紧密相连,体现了逻辑和数学的美学。 Monad:结构化的复杂性管理 在 Haskell 中,Monad 的概念封装了一个层次结构,允许我们在一个定义良好的域内进行操作。Monad 提供了一种方式来构建层次化的结构,支持层次之间的转换。通过 Monad,可以利用自定义的规则进行快速错误处理,无需在每一步都进行错误处理。特别是在 Haskell 中,Monad 以顺序方式组合复杂函数,使不确定的结果、副作用、异常处理都可以通过 Monad 的统一接口进行管理。更进一步,Monad...
Haskell(四)总结和工具链
Haskell(一)入门Haskell(二)函数式编程Haskell(三) MonadHaskell(四)总结和工具链Haskell(五) 总结和展望Haskell(六) Project Euler 练习1-26 总结 安装方式:https://www.haskell.org/ghcup/ 这是最推荐的安装方式,建议都安装上。 特性介绍:https://www.haskell.org/ 如何入门: 理解基础规则,比如不可变性、绑定、递归 学完基本语法,包括列表、元组、类型、模式匹配、Guard 写法、where 用法、let … in 用法、case … of 用法、@ 用法; 理解函数的类型签名 函数柯里化和 folder、map、zip、filter 等高阶函数、lambda 表达式; $ . 的用法 递归的写法习惯 模块和导出, 语言拓展 Data 库中的 List、Char、Map、Set。一些对应的常见操作 ,比如列表的 take drop sum takeWhile group 等,可以等用到再查。 data 自定义类型(包括 product type 和...