小菜鸟

java菜鸟号正在起航

next主题修改侧边栏icon

next主题中使用的是由 Font Awesome提供的图标,对于国内应用的图标基本都不支持。为了实现侧边栏小图标的展示,只能自己来设置样式了。

iconfont来下载自己需要的icon,选择svg格式下载,并将文件保存在source\images目录下。

next主题提供了自定义样式的口子,在next下的_config.yml配置文件中有custom_file_path,可以用来进行自定义配置

custom_file_path:
  #head: source/_data/head.swig
  #header: source/_data/header.swig
  #sidebar: source/_data/sidebar.swig
  #postMeta: source/_data/post-meta.swig
  #postBodyEnd: source/_data/post-body-end.swig
  #footer: source/_data/footer.swig
  #bodyEnd: source/_data/body-end.swig
  #variable: source/_data/variables.styl
  #mixin: source/_data/mixins.styl
  style: source/_data/styles.styl

把style的注释放开,然后在对应目录下创建对应的styles.styl

阅读全文 »

MySQL 修改自增 ID 初始值:方法与注意事项

自增 ID(AUTO_INCREMENT)是 MySQL 中常用的主键生成方式,默认从 1 开始递增。但在迁移数据、同步历史记录等场景下,可能需要修改自增 ID 的初始值。本文详细讲解如何查询和修改自增 ID,以及操作时的关键注意事项。

查询当前自增 ID 值

在修改自增 ID 前,需先确认表当前的自增计数器值,可通过以下方式查询:

方法 1:SHOW TABLE STATUS

-- 查看指定表的自增ID当前值
SHOW TABLE STATUS LIKE '表名';
  • 结果中 Auto_increment 字段的值即为下一个将要生成的自增 ID(例如该值为 100,则下次插入的 ID 为 100)。

方法 2:查询系统表(information_schema

-- 从系统表中获取自增ID信息
SELECT AUTO_INCREMENT 
FROM information_schema.TABLES 
WHERE TABLE_SCHEMA = '数据库名' 
  AND TABLE_NAME = '表名';
  • 该方法更适合在脚本中动态获取自增 ID 值。

修改自增 ID 初始值

使用 ALTER TABLE 语句可直接修改自增 ID 的初始值,语法如下:

-- 将表的自增ID初始值设置为 N(下次插入的ID将从 N 开始)
ALTER TABLE 表名 AUTO_INCREMENT = N;

示例:

阅读全文 »

Pygame 安装指南(Python 3.x):照着做,5 分钟跑起来

Pygame 是 Python 里最常用的游戏开发库——画图、放音乐、响应键盘鼠标,一套搞定。

但安装这件事,对新手来说往往是最劝退的。这篇指南把安装步骤拆到最细,遇到问题怎么处理也写清楚了。照着做,5 分钟让 Pygame 跑起来。

用 pip 安装(最推荐的方式)

Pygame 已经在 PyPI 官方仓库里了,直接用 pip 安装。

1. 打开终端

  • Windows:按 Win + R,输入 cmd,回车
  • Mac:按 Cmd + 空格,输入 Terminal,回车
  • Linux:按 Ctrl + Alt + T,或从应用菜单打开终端

2. 执行安装命令

如果你的电脑里同时装了 Python 2 和 Python 3,用 pip3 确保装到 Python 3 的环境里:

pip3 install pygame

如果只装了 Python 3,用 pip 也行:

pip install pygame

3. 验证安装

python3 -m pygame --version

看到类似这样的输出就说明装好了:

pygame 2.5.2 (SDL 2.28.3, Python 3.11.4)
阅读全文 »

Python 异常处理:别让程序因为一个小错误就崩了

写程序最怕什么?不是 bug 修不完,而是程序跑着跑着突然崩了,日志里一堆红字,用户看到的是”服务器错误”。

异常处理就是干这个的——预料到可能会出错的地方,提前想好怎么兜底。Python 的 try...except 就是给代码加一道防护网,出错了不至于整个程序炸掉。

基础结构:try...except

try:
    # 可能发生异常的代码块
    result = 1 / 0  # 除数为 0,会触发 ZeroDivisionError
except ZeroDivisionError as e:
    # 捕获特定异常并处理
    print(f"发生错误:{e}")  # 输出:发生错误:division by zero

try 里面放”可能出错的代码”,except 里面放”出错之后怎么办”。

为什么要有这东西? 如果没有 try...except,程序直接崩溃退出,用户一脸懵。有了它,程序可以继续跑,顶多那条数据处理失败了。

捕获多种异常

可使用多个 except 块处理不同类型的异常,或在一个 except 中捕获多个异常:

try:
    num = int(input("请输入一个整数:"))
    result = 10 / num
except ValueError:
    print("输入错误:请输入有效的整数")
except ZeroDivisionError:
    print("计算错误:除数不能为 0")
except (TypeError, OverflowError):
    # 同时捕获多种异常(用元组包裹)
    print("其他类型错误")

也可以这样写,一个except捕获多个异常

try:
    num = int(input("请输入数字:"))
    result = 10 / num
except (ValueError, ZeroDivisionError) as e:
    print(f"出错了:{e}")

捕获所有异常(不推荐)

使用 except Exception 可捕获所有非系统退出的异常(不包括 KeyboardInterrupt 等):

阅读全文 »

Python 类和对象:别背语法,先理解”模板”和”实例”的关系

面向对象编程,听起来很唬人,其实核心就两个概念:对象

类就是模板,对象就是根据模板造出来的具体东西。打个比方:类是一张”员工入职登记表”的模板,对象就是你拿着这个模板给每个新员工填出来的那张具体表格。

Python 里万物皆对象,但你自己也能定义类。

定义一个类:从空壳子开始

class 关键字定义一个类,类名用帕斯卡命名法(首字母大写):

class Person:
    pass   # pass 表示啥都不干,占个位置

# 造一个对象出来
p = Person()
print(p)   # <__main__.Person object at 0x...>

目前这个 Person 是个空壳子,啥用没有。我们需要给它加东西。

构造方法 __init__:对象出生时该干的事

__init__ 是 Python 的构造方法,对象被创建的时候自动调用。它的作用就是给对象初始化——设置初始状态、存一些基础数据。

class Person:
    def __init__(self, name, age):
        self.name = name   # 把参数存到对象身上
        self.age = age

    def introduce(self):
        print(f"我叫 {self.name},今年 {self.age} 岁")

# 创建对象的时候传入参数
p = Person("Alice", 20)
p.introduce()   # 我叫 Alice,今年 20 岁

关键点:

  • self 就是对象本身,相当于 Java 里的 this
  • self.name 是对象的属性,每个对象有自己的独立副本
  • __init__ 可以有默认参数,让某些属性可选
class Student:
    def __init__(self, name, major="计算机科学"):
        self.name = name
        self.major = major

s1 = Student("Bob")                 # major 用默认值
s2 = Student("Charlie", "数学")      # major 自己指定
阅读全文 »
0%