- 博客(148)
- 问答 (1)
- 收藏
- 关注
原创 Part 2:Python面向对象编程
本文介绍了Python面向对象编程(OOP)的核心概念和特性。主要内容包括:类和对象的基本概念,类作为对象模板的定义方式,以及对象作为类实例的创建过程;面向对象编程的四大特性:封装(通过私有属性和方法实现数据保护)、继承(实现代码复用和功能扩展)、多态(同一方法在不同对象上的不同表现)和抽象(隐藏实现细节);还详细讲解了构造方法__init__()的作用、对象的生命周期管理以及Python的内存管理机制。通过示例代码演示了如何定义类、创建对象以及实现封装等OOP特性,帮助读者理解Python面向对象编程的基
2026-04-13 19:48:07
373
原创 Part 1:Python语言核心 - 序列与容器
class A:默认浅拷贝。__copy__来自定义行为(高级用法)# 创建对象# 浅拷贝(默认的各种拷贝方式)p2 = p1 # ❌ 引用,不是拷贝p3 = Person(p1.name, p1.friends) # ❌ 浅拷贝(列表是共享的)p4 = copy.copy(p1) # ⚠️ 浅拷贝# 浅拷贝创建 p2p2.name = "Alice Clone" # ✅ 修改基本属性不影响原对象p2.friends.append("Charlie") # ⚠️ 修改可变属性。
2026-04-01 19:52:31
385
原创 Part 1:Python语言核心 - 异常机制
本文介绍了Python异常处理机制的核心概念和最佳实践。主要内容包括:1)基本语法结构(try/except/else/finally);2)自定义异常的实现方法及其在业务逻辑中的应用优势;3)异常链(raise...from...)的使用场景;4)常见内置异常类型及其特点;5)assert语句的调试用途;6)工程实践中的异常处理原则,强调避免过度捕获异常、合理使用自定义异常表达业务错误状态,以及记录错误日志的重要性。文章通过代码示例展示了异常处理的实际应用,帮助开发者编写更健壮、清晰的Python代码。
2026-03-19 00:21:48
375
原创 Part 1:Python语言核心 - 函数
Python函数摘要: 函数定义使用def关键字,可接受参数并返回单值(元组可模拟多返回值)。参数传递为对象引用,可变对象在函数内修改会影响原对象。参数类型包括:位置参数、关键字参数、默认参数(注意可变默认值陷阱)、*args可变位置参数(元组)和**kwargs可变关键字参数(字典)。特殊参数限定:/前为仅位置参数,*后为仅关键字参数。函数是第一类对象,可作参数或返回值,支持高阶函数操作。yield关键字用于生成器函数,实现惰性求值和状态保持,适合大数据处理。生成器通过yield暂停执行并保留状态,下次从
2026-03-18 20:04:38
732
原创 Part 1:Python语言核心 - Control Flow 控制流
Python控制流摘要 Python控制流主要包括条件分支、循环和模式匹配三大类。条件分支通过if/elif/else实现,支持短路逻辑和三目表达式。循环包括for和while,for本质是迭代器遍历,while适合不确定次数循环。Python 3.10+引入match-case进行结构化模式匹配,可解构元组、列表、字典和类实例,比传统if更优雅。此外还有break/continue/pass控制循环流程,以及列表/字典/集合/生成器四种推导式简化代码。控制流的核心在于灵活控制代码执行路径,同时保持代码简洁
2026-03-18 20:03:30
393
原创 Part 1:Python语言核心 - 运算符 Operators
Python运算符详解:本文系统介绍了Python中的各类运算符及其底层机制。算术运算符部分重点解析了地板除(//)向负无穷取整的特性及其与C语言的区别,以及取模运算的数学本质。比较运算符章节深入探讨了链式比较优化、is与==的区别、成员测试(in)的查找顺序。逻辑运算符部分则介绍了布尔运算的短路特性。文章还涵盖了数值类型自动提升规则、富比较机制和total_ordering装饰器等高级特性,揭示了Python运算符设计背后的数学严谨性和工程考量。
2026-03-18 20:02:10
121
原创 Part 1:Python语言核心 - 内建数据类型
本文介绍了Python的内建数据类型及其核心特性。重点分析了int(任意精度整数)、float(双精度浮点数)、complex(复数)、bool(继承自int)和NoneType(单例空对象)五种基本类型。这些类型具有共同特征:都是不可变的内建类型,有C层实现,参与执行优化。特别解释了浮点数精度误差的本质原因,以及bool与int的特殊继承关系。最后总结了基本类型的共同特性:不可变性、内建实现、高度优化、可哈希性和长生命周期。
2026-03-18 19:59:22
292
原创 Part 1:Python语言核心 - Python 执行模型
Python执行模型揭示了从源代码到运行结果的全过程机制。不同于"解释型语言"的传统认知,Python实际上是先编译为字节码再由虚拟机执行。执行流程包括:词法分析→语法分析→编译为字节码→虚拟机执行。关键特性包括:代码按顺序执行但函数体不立即执行、变量是名字绑定而非盒子、LEGB作用域规则在运行期生效。import过程会执行模块顶层代码并缓存模块对象。理解执行模型能帮助开发者规避常见错误,如变量作用域问题和import顺序影响等。
2026-03-18 19:57:11
319
原创 Part 1:Python语言核心 - 关键字 Keywords
Python关键字是语言的基础保留词,在语法阶段就具有特殊意义。它们不能作为变量名,决定代码结构、作用域和控制流。Python 3.x版本约有35个关键字,包括True/False/None等常量,and/or/not等逻辑运算,if/for/while等流程控制,try/except等异常处理,def/class等函数类定义,以及global/nonlocal等作用域控制。关键字在词法分析阶段就被识别,属于编译期错误而非运行时错误。import、as、from等控制模块命名空间,pass作为语法占位符,d
2026-03-18 19:56:10
296
原创 Part 1:Python语言核心 - 注释与文档字符串
本文介绍了Python中注释与文档字符串(Docstring)的区别与最佳实践。注释(#)在词法分析阶段被丢弃,不会进入运行时;而Docstring(""" """)会被保存在对象上,可通过__doc__访问。注释应解释"为什么",而非重复代码;Docstring应描述接口语义而非实现细节。文章对比了三种主流Docstring风格(PEP 257/Google/reST),并强调Docstring的结构化特性,可用于文档生成和I
2026-03-18 19:54:28
328
原创 Part 1:Python语言核心 - 缩进与代码块
Python 代码块通过缩进定义,而非其他语言的大括号。冒号表示新代码块开始,同一代码块必须保持一致的缩进(推荐4个空格)。缩进层级决定语句执行逻辑,直接影响程序流程。Python在词法分析阶段生成INDENT/DEDENT标记来识别代码块边界。常见错误包括混用Tab和空格、else错位等。注意Python没有块级作用域,if/for不创建新作用域。最佳实践包括统一使用4空格、控制缩进层级不超过3、复杂逻辑拆解函数等。
2026-03-18 19:52:55
307
原创 Part 1:Python 语言核心 - 变量与命名规则
本文介绍了Python变量与命名规则的核心概念:1) Python变量是对象的引用而非存储容器,变量名与对象是绑定关系;2) 详细说明了变量命名规则,包括合法字符、大小写敏感性和关键字限制;3) 强调命名规范(PEP 8)的重要性,如全小写下划线命名、类名首字母大写等;4) 解释了下划线的语义约定(_var表示内部,__var触发名称改写);5) 分析了Python动态类型与强类型特性,变量类型在运行时确定且操作受严格限制。这些概念是理解Python变量机制和编写规范代码的基础。
2026-03-18 19:51:18
413
原创 通过环境变量实现多个 python 版本的自由切换以及 Conda 虚拟环境的使用教程
本文介绍了如何在 Windows 系统中通过环境变量配置实现多个 Python 版本的自由切换,并提供了 Anaconda 虚拟环境的使用教程。避免 Python 版本冲突和依赖混乱,提升开发效率。
2025-02-12 15:29:35
4896
2
原创 最长递增子序列问题(Longest Increasing Subsequence),动态规划法解决,贪心算法 + 二分查找优化
问题描述:在一个大小乱序的数列中,找到一个最大长度的递增子序列,子序列中的数据在原始数列中的相对位置保持不变,可以不连续,但必须递增。
2025-01-18 19:46:56
1612
原创 牛顿迭代法求方程近似解
牛顿迭代法(Newton’s Method)又称 牛顿-拉夫森方法(Newton-Raphson Method),是一种用于求解实数或复数函数零点(根)的数值分析方法。该方法通过不断迭代逼近方程的解,通常收敛非常迅速,特别是当初始猜测值接近真实解时。C语言计算立方根算法,不使用库函数,牛顿迭代法实现,保留小数点后一位。牛顿迭代法的基本思想是利用函数的泰勒展开式的线性近似来不断逼近零点。是当前的近似值,那么牛顿迭代法给出的下一步近似值。轴的交点则为下一个近似值。轴交点无线逼近零点。
2025-01-17 11:47:17
1401
原创 一篇小短文,理解动态规划问题 DP (Dynamic Programming)
从树状图中我们就可以看到,使用递归调用产生了大量的重复计算,例如 n = 4 时被计算了两次,n = 3 被计算了 3 次。当 n 的值非常大时,这样的重复计算会非常多。由于递归树的节点数是指数级增长的,重复计算了许多子问题,因此时间复杂度是 O(2^n)。它将问题分解为子问题,通过保存子问题的解来避免重复计算,最终得到原问题的解。每次进行递归调用时,从保存的结果中查询,如果已经存在就不用再递归了,直接使用。使用了 “带有备忘录的递归调用”,树状图中就不会有那么多的分支了,所以就构成了一个有向无环图。
2025-01-06 20:38:17
2488
原创 C++ 基础速成篇
定义:抽象是通过隐藏具体实现来简化复杂系统的过程。抽象化的目的是让程序员关注接口,而不是实现细节。抽象类:抽象类是包含至少一个纯虚函数(没有实现的虚函数)类,不能实例化,但可以作为基类供派生类继承。// 访问权限说明符(可选):public, private, protected// 数据成员(属性)// 成员函数(方法)public: // 公有成员:对外可访问private: // 私有成员:仅类内部可访问protected: // 受保护成员:仅类及其子类可访问。
2024-12-28 18:54:06
2024
原创 解决Ubuntu下无法装载 Windows D盘的问题
错误的原因是装载D盘时,文件系统的类型错误。Windows 系统使用的文件系统类型为ntfs,绝大多数发行版 Linux 系统使用的文件系统类型是ext4. 当使用ext4来装载一个ntfs类型的磁盘分区时,就会出现以上错误。
2024-12-24 17:17:47
2152
原创 Ubuntu 24.04.1 解决部分中文字符(门、径)显示错误的问题
JP 代表的是日文字符,SC 代表的是中文简体(Simplified Chinese),HK 代表的是香港。我们需要修改这些语言字符显示的优先级。为了解决这个问题,需要修改配置文件。中不同语言字符显示的优先级。这样就可以正常显示某些字符了。有轻微强迫症的我表示很难受。修改后保存,重新登入系统。
2024-12-24 16:23:58
1719
原创 C语言 单向链表反转问题
这样就可以得到一个链表,由于所有的节点都指向下一个节点,所以它是单向的,这样链表被称为单向链表。所有节点的内存地址在内存中不一定就是连续的,它是通过指针赋值地址的方式将所有的节点连在一起的。给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。将一个节点数为 size 链表 m 位置到 n 位置之间的区间反转,要求时间复杂度 O(n),空间复杂度 O(1)。经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。
2024-12-19 17:45:45
1348
原创 识别有效的IP地址和掩码并进行分类统计
可以将字符串的 IP 地址或子网掩码转换成一个 unsigned int 型的数值。在一行上输出七个整数,分别代表ABCDE类地址的数量、错误 IP 或错误子网掩码的数量、私有 IP 的数量。,在输入一行的时候就进行统计操作,不用保存所有数据,更节省内存,同时少了 for 循环遍历。现在,你需要分类统计ABCDE类地址的数量、错误 IP 或错误子网掩码的数量、私有 IP 的数量。在本题中,我们需要处理地址信息,其由 IP 地址和子网掩码组成,这两者均形如。,由四段数字组成,每段数字之间以点分隔。
2024-12-19 16:17:43
965
原创 最长无重复字符子字符串问题(Longest Substring Without Repeating Characters)
Given a string , find the length of the longest substring without repeating characters.
2024-12-19 16:15:24
1022
原创 [node.js] [HTTP/S] 实现 requests 发起 HTTP/S/1.1/2.0 请求
requests() 函数可以控制 HTTP 的版本 HTTP/1.1 还是 HTTP/2.0,也可以选择 GET 或者 POST 方法,接收的数据经过解压缩后和响应头一起封装到对象中进行返回。本文使用 node.js 的官方库来实现一个简单的 requests() 函数,可以用来发送 HTTP/1.1 和 HTTP/2.0 的请求。node.js 使用 V8 引擎来编译运行 javascript 代码,与浏览器中的环境不同的是,node.js 不包含 DOM 和 BOM 模块。
2024-12-03 17:20:20
1159
原创 HTTP 版本的演进
即超文本传输协议,是一种用于客户端与服务器之间交换信息的协议,主要用于浏览器与Web服务器之间的通信。它定义了如何请求、传输和响应网页内容,是现代互联网应用中最为常见和重要的协议之一。
2024-12-03 16:36:15
1551
原创 来点数学公式
12+22+32+42+...+n2=?1^2+2^2+3^2+4^2+...+n^2=?12+22+32+42+...+n2=?看成数列 an=n2,(n∈N+)a_n=n^2, (n\in N^+)an=n2,(n∈N+) 的前 nnn 项和 SnS_nSn.Sn=12+22+32+42+...+n2S_n = 1^2+2^2+3^2+4^2+...+n^2Sn=12+22+32+42+...+n2 =1×(2−1)+2×(3−1)+3×(4−1)+4×(5−1)+...+n×(n+1−
2024-12-02 21:39:02
800
原创 github webhooks 实现网站自动更新
Webhooks是GitHub提供的一种通知方式,当GitHub上发生特定事件时,会向指定的外部Web服务器发送HTTP POST请求,从而通知这些服务器有关事件的信息。通过配置Webhooks,开发者可以在GitHub上发生特定事件时(如代码推送、拉取请求创建、评论等),自动接收事件数据,并在外部服务器上执行相应的操作,如持续集成、代码审查、部署等。
2024-11-29 21:23:36
1484
原创 Ubuntu 服务器部署 Tomcat 并配置 SSL/TLS 证书
在你的域名供应商的 DNS 界面,你也可以指定第三方 DNS 服务器来解析你的域名,这样,你的 DNS A 记录要配置在第三方 DNS 服务器上,而你的域名供应商 DNS 界面,要配置这个第三方 DNS 服务器提供的域名,具体情况下,这个第三方 DNS 服务器会告诉你怎么做。在你的域名供应商界面配置 DNS 解析,添加一条 A 记录(域名到 IPv4 地址),Name 栏填写你的域名,Value 栏填写你的服务器的公网 IP 地址。命令中注意修改你的域名,和实际的证书路径。
2024-11-28 13:15:02
1919
原创 SSH 远程连接
相反,如果把一封信锁在保险柜中,然后把保险柜及其设计规范和许多同样的保险柜给你,以便你和世界上最好的开保险柜的专家能够研究锁的装置,而你还是无法打开保险柜去读这封信,这才是安全的概念。当你的机器有多人使用时,你可以指定这个密码,每次使用密钥的时候需要输入密码才能使用,这算是额外的一道安全防线。在 SSH 远程连接中使用了 非对称加密算法,加密和解密使用不同的密钥,即公钥和私钥,公钥是可以公开的,但是只有用私钥才能解密与之对应的公钥加密的内容。一个主机可以配置两个公钥,使用不同的私钥进行远程。
2024-11-26 13:36:12
5042
原创 Linux: C语言解析域名
当我们使用浏览器访问某个网站的时候,浏览器拿到 URL 后,会解析 URL,拿到网站的域名,然后再进行 DNS 解析,拿到这个网站域名对应服务器的 IP 地址。中,自己构造 DNS 查询报文,发出去,接收响应,以二进制形式把响应的数据写入文件并进行分析。是我本地 WIFI 路由器的 IP 地址,路由器配置 DNS 后,相当于是一个本地 DNS 服务器。来指定 DNS 服务器,代码中会使用默认的 DNS 服务器,已经是一个有效的指针,指向了足够的内存空间,能够容纳。来进行内存操作,仍然会出现内存泄露的问题。
2024-11-24 15:38:31
1262
原创 Linux: C语言发起 DNS 查询报文
运行以上代码:构造了一个 DNS 查询报文(查询 baidu.com),并使用 socket 套接字编程连接谷歌公共 DNS 服务器。每个标签之前有一个字节表示该标签的长度(例如 “www” 对应的标签长度为 3,“example” 长度为 7)。拿到二进制数据,自己手动去翻译应答报文实属麻烦,写代码解析 DNS 应答报文的任务,就交给屏幕前正在阅读此文的你。DNS 应答报文如果最后多出了一个 0a 字节,则表示换行,表示应答报文的结束。是一个 16 位的字段,表示查询的记录类型。
2024-11-14 17:19:27
1432
原创 Linux: iptables && ufw 配置防火墙规则
iptables 是一个用户空间实用程序,它允许系统管理员配置 Linux 内核防火墙的IP 数据包过滤规则,这些规则以不同的 Netfilter 模块实现。过滤器组织在一组表中,其中包含如何处理网络流量数据包的规则链。目前,不同的内核模块和程序用于不同的协议;iptables 适用于 IPv4,ip6tables 适用于 IPv6,arptables 适用于 ARP,ebtables 适用于以太网帧。iptables 需要提升权限才能运行,并且必须由root用户执行(sudo&&sudo -i。
2024-11-12 14:00:53
1971
原创 IPv4 和 IPv6
nternetrotocol运行在五层协议的体系结构(Physical Layer物理层、Data Link Layer数据链路层、Network Layer网络层、Transport Layer传输层、Application Layer应用层)中的网络层,它是TCP/IP协议族中最为核心的协议之一,负责为数据包提供无连接的、不可靠的、尽最大努力交付的服务。
2024-08-25 13:38:10
3489
1
原创 ECMA Script 6
foo(): 直接调用时,this是调用foo的上下文(全局对象或undefined),特别是在异步操作中,如setTimeoutthis的绑定可能会与期望的上下文不同。: 使用call方法调用时,this被显式地设置为context参数。在异步操作中,this的值将根据call的参数来确定。构造函数名称以大写字母开头(通常为约定)。使用new关键字调用。在函数内部,this绑定到新创建的对象。通常不显式返回值(自动返回新对象)。普通函数名称以小写字母开头(虽然这不是强制的)。不使用。
2024-08-21 18:47:47
1255
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅