博客

  • py脚本打包py文件

    # 假设我们有一个非常小的Python脚本,我们想要将其转换为可执行文件
    # 首先,确保你的脚本是Python 2.7或Python 3.x兼容的
    
    # Python脚本内容(example_script.py):
    print("Hello, World!")
    
    # 使用PyInstaller将Python脚本转换为可执行文件
    # 安装PyInstaller:
    # pip install pyinstaller
    
    # 运行PyInstaller,创建一个单文件的可执行程序
    # 注意:--onefile选项会创建一个单文件的可执行程序
    pyinstaller_command = "pyinstaller --onefile 1.py"
    
    # 执行命令
    import subprocess
    subprocess.run(pyinstaller_command, shell=True)

     

  • 压缩exe python

    import subprocess
    # 使用UPX压缩生成的可执行文件
    upx_command = "upx -9 --force 1.exe"  # -9 是最高压缩率
    subprocess.run(upx_command, shell=True)
    
    print("可执行文件已生成并压缩。")

    需要安装upx

    https://github.com/upx/upx/releases/

  • 代码发出声音 python

    import time
    import winsound
    
    # 设置频率和持续时间
    frequency = 37  # 频率,单位是Hz
    duration = 1000   # 持续时间,单位是毫秒
    
    # 发出声音
    winsound.Beep(frequency, duration)
    
    # 如果您想连续发出声音,可以使用循环
    try:
        while True:
            winsound.Beep(frequency, duration)
            time.sleep(1)  # 暂停一秒
    except KeyboardInterrupt:
        # 允许使用Ctrl+C中断循环
        print("声音停止")

    修改频率可得到不同的声音,

    频率的最大值是:37Hz

    最小值是32767Hz

    import winsound
    import time
    
    # 定义每个音符的频率(以Hz为单位)和持续时间(毫秒)
    notes = {
        'C4': 261.63,
        'D4': 293.66,
        'E4': 329.63,
        'F4': 349.23,
        'G4': 392.00,
        'A4': 440.00,
        'B4': 493.88,
        'C5': 523.25
    }
    
    # 音符持续时间(毫秒)
    duration = 500
    
    # 四分音符的频率值,转换为整数
    note_frequencies = {note: int(frequency) for note, frequency in notes.items()}
    
    # 一个简化的主旋律,用音符名称表示
    melody = [
        'C4', 'E4', 'G4', 'C5',
        'B4', 'A4', 'G4', 'F4',
        'E4', 'D4', 'C4',
        'A4', 'G4', 'F4', 'E4'
    ]
    
    # 演奏旋律
    for note in melody:
        frequency = note_frequencies[note]
        winsound.Beep(frequency, duration)  # 发出音符
        time.sleep(duration / 1000.0)  # 等待音符结束
    
    # 等待旋律结束后再退出
    time.sleep(2)

    import winsound
    import time
    
    # 定义每个音符的频率(以Hz为单位)和持续时间(毫秒)
    notes = [
        {"frequency": 262, "duration": 500},  # C5
        {"frequency": 294, "duration": 500},  # D5
        {"frequency": 330, "duration": 500},  # E5
        {"frequency": 349, "duration": 1500}, # F5 (held longer)
        {"frequency": 392, "duration": 500},  # G5
        {"frequency": 440, "duration": 500},  # A5
        {"frequency": 494, "duration": 500}   # B5
    ]
    
    # 定义休止符(无声)
    rest = {"frequency": 0, "duration": 500}
    
    # 旋律序列,每个元素是一个索引到notes列表
    melody = [0, 1, 2, 3, 2, 1, 0, 2, 3, 2, 1, 0, 0, 2, 2, 1, 0]
    
    # 演奏旋律
    for note_index in melody:
        if note_index != -1:
            note = notes[note_index]
            winsound.Beep(note["frequency"], note["duration"])
        else:
            time.sleep(rest["duration"] / 1000.0)  # 休息片刻
    
        # 等待每个音符结束后再继续
        time.sleep(0.5)  # 等待半秒钟

     

  • win系统的任务计划程序使用

    若启动python脚本

    不管用户是否登录都要运行,

    不存储密码

    触发器

    在系统启动时,高级设置-延迟任务时间-1分钟

    操作-程序或脚本填写

    python

    添加参数:主程序.py

    起始于:

    E:\code\flask\视频网站\

    条件:

    因为本程序不需要联网,也无其他要求,因此都不勾选

    设置:

    允许按需运行任务

    如果请求后任务还在运行,强行将其停止(F)

     

     

     

  • mysql数据库主从配置

    我的主库ip:192.168.10.7
    我的主库ip:192.168.10.11

    主从的server_id不一致即可,只要你知道哪个是主库,哪个是从库就行
    主库my.ini配置mysqld里面增加:

    [mysqld]
    server_id=1
    log_bin=mysql-bin

    从库my.ini配置mysqld里面增加:

     

    [mysqld]
    server_id=2
    log_bin=mysql-bin

    主库创建用户:

    GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
    

    给这个用户分配能够复制的权限:

    GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';

     

    主库查询2个字段File和Position:

     

    SHOW MASTER STATUS;

     

     File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    +------------------+----------+--------------+------------------+-------------------+
    | mysql-bin.000002 |     1042 |              |                  |                   |

    从库进入mysql设置主库的信息,执行以下命令:

    change master to
    master_host='192.168.10.7',
    master_user='repl',
    master_password='123456',
    master_port=3306,
    master_log_file='mysql-bin.000002', 
    master_log_pos=1042;

    从库开启同步:

    slave start;

    验证:

    现在去主库里创建一个数据库,就会发现从库也创建了一个数据库了.

  • ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost’ (10061)

    如果这个报错,没别的办法,只有先把mysql弄成一个服务启动了就行了.

  • phpstudy里面的mysql复制到另一个机器上运行报错

    停止mysql服务,

    压缩整个mysql,

    复制到另一台机器上,

    如果想要保存数据的话,把data文件夹里除了文件夹其他的东西能删掉的都删掉.

    然后到bin目录下进cmd,还能用以前的数据库账号和密码登录.

    若不想保留数据的话,重新初始化mysql.如何初始化百度一下

  • 取消提示:mysql: [Warning] Using a password on the command line interface can be insecure.

    目前使用的方法

    mysql路径 mysql用户账号密码配置文件的路径
    示例:
    E:\application\phpstudy_pro\Extensions\MySQL5.7.26\bin\mysql.exe --defaults-file="E:\application\phpstudy_pro\Extensions\MySQL5.7.26\my.cnf"

    my.cnf里面这样写

    [client]
    user=root
    password=123456

     

     

    在cmd里直接设置一个mysql密码的环境变量 MYSQL_PWD后面是你的数据库的密码

    set MYSQL_PWD=123456

    然后直接在cmd里输入用户名即可,例如

    mysql -u root

    若是想要弄一个bat脚本的话,你需要这样写:

    @echo off
    set MYSQL_PWD=123456
    start cmd /k "E:\application\phpstudy_pro\Extensions\MySQL5.7.26\bin\mysql.exe -u root -h 127.0.0.1"

     

  • js自定义html提示弹窗

    function alertTip(tipText){
    let customAlertDiv = document.getElementById('customAlert');
    var contentElement = customAlertDiv.querySelector('p');
    contentElement.textContent = tipText;
    customAlert.style.display = 'block';
    setTimeout(function() {
        customAlert.style.display = 'none';
    }, 1000);
    }

     

    <!-- 自定义提示弹窗的容器 -->
    <div id="customAlert">这是一段提示文本!</div>
    <style>
    /* 简单样式,用于美化提示弹窗 */
    #customAlert {
        display: none;
        position: fixed;
        top: 30%;
        left: 50%;
        transform: translateX(-50%);
        background-color: #f44336; /* 红色背景 */
        color: white;
        padding: 20px;
        z-index: 1000;
        border-radius: 5px;
        box-shadow: 0 4px 6px rgba(0,0,0,0.1);
        text-align: center;
    }
    </style>

    来自kimi的详细解释:

    这段代码定义了一个自定义的提示弹窗(通常称为模态框或对话框),包括HTML和CSS两个部分。下面是详细解释:

    HTML部分

    <!-- 自定义提示弹窗的容器 -->
    <div id="customAlert">这是一段提示文本!</div>

    这里定义了一个<div>元素,它用作提示弹窗的容器。这个<div>被赋予了一个ID customAlert,这个ID在后面的CSS和JavaScript中用来选择和操作这个元素。<div>中包含的文本”这是一段提示文本!”是弹窗显示的消息内容。

    CSS部分

    #customAlert {
        display: none;           /* 默认情况下弹窗不显示 */
        position: fixed;         /* 固定定位,相对于浏览器窗口定位 */
        top: 30%;                /* 垂直方向上距离窗口顶部30%的位置 */
        left: 50%;               /* 水平方向上距离窗口左侧50%的位置 */
        transform: translateX(-50%); /* 使用CSS的transform属性向左移动50%自身的宽度,实现水平居中 */
        background-color: #f44336; /* 弹窗的背景颜色为红色 */
        color: white;             /* 文字颜色为白色 */
        padding: 20px;            /* 内边距为20像素,增加点击区域和内容与边框的距离 */
        z-index: 1000;            /* 层级值为1000,确保弹窗显示在页面其他元素的上方 */
        border-radius: 5px;       /* 边框圆角为5像素,使弹窗边框看起来更平滑 */
        box-shadow: 0 4px 6px rgba(0,0,0,0.1); /* 阴影效果,增强立体感 */
        text-align: center;       /* 文本内容水平居中 */
    }

    CSS样式定义了#customAlert弹窗的外观和定位。使用了一些CSS3的特性,如transformbox-shadow,这些特性在现代浏览器中广泛支持,但在旧版IE中可能需要额外的polyfills或回退策略。

    工作原理

    • display: none; 确保在页面加载时弹窗是隐藏的。
    • position: fixed;  top, left, 和 transform 属性一起工作,将弹窗定位在浏览器窗口的中心。
    • background-color, color, padding, border-radius  box-shadow 属性用于美化弹窗,使其看起来更像一个模态框。
    • z-index 确保弹窗显示在页面上的其他元素之上。
    • text-align: center; 确保弹窗内的文本水平居中。

    使用方法

    要显示和隐藏这个自定义提示弹窗,你将需要使用JavaScript来添加事件监听器,并在适当的时机改变#customAlertdisplay样式。例如:

    function showAlert() {
        document.getElementById('customAlert').style.display = 'block';
    }
    
    function hideAlert() {
        document.getElementById('customAlert').style.display = 'none';
    }

    在实际应用中,你可能会将showAlerthideAlert函数绑定到按钮的点击事件或其他用户交互上,以便控制弹窗的显示和隐藏。

  • js实时显示屏幕尺寸

    <div id="screenWidthDisplay">屏幕宽度: </div>
    <script>
    // 函数用于更新屏幕宽度显示
    function updateScreenWidth() {
    var screenWidthDisplay = document.getElementById('screenWidthDisplay');
    // 刷新屏幕宽度显示,而不是追加
    screenWidthDisplay.textContent = '屏幕宽度: ' + window.innerWidth + 'px';
    }
    // 监听窗口resize事件
    window.addEventListener('resize', updateScreenWidth);
    // 初始化屏幕宽度显示
    updateScreenWidth();
    </script>