electron笔记
安装electron安装cnpm
npm install -g cnpm --registry=https://registry.npm.taobao.org
使用cnpm安装electron,可以解决一些安装错误,比如连接超时等
cnpm install -g electron
项目构建Electron-Vite脚手架构建官网:https://cn.electron-vite.org/
构建命令:
pnpm create @quick-start/electron
Electron在一个空的node项目中执行node初始化命令
npm init
在该项目中安装electron
cnpm install --save-dev electron
可以发现package.json文件的devDependencies多了electron,证明安装成功。安装成功后,在scripts写上electron .,后续用于启动electron
{ "name": "electron_test", "version": "1.0.0", "description": "", "ma ...
JavaScript实现图片裁剪
程序介绍介绍有时候想要将纵向的图片展示到电脑桌面上当壁纸,但是又因为尺寸不合适,使用市面上的截图软件不能准确截取到想要的宽高。因此,打算使用HTML和JavaScript实现准确截取图片功能,HTML用于展示图片和截取结果,JavaScript用于实现截取图片功能
页面展示功能菜单有:选择文件、截取图片
图片展示区
效果展示
操作流程点击选择文件按钮,选择需要截取的源图片;滑动浅米色蒙版,选择要截取的部分;
Html代码展示<div id="main"> <!-- 功能菜单 --> <div class="btn-group"> <input type="file" onchange="handleFileSelect(event)" accept=".jpg,.png"> <button id="crop-image">截取图片</button> </div> <!-- 图片展示 --> <div id="img-grou ...
Numpy笔记
where函数语法numpy.where(condition, [x, y])
condition是一个数组
x和y是可选的
例子
只使用condition参数
import numpy as np# 创建一个NumPy数组arr = np.array([10, 20, 30, 40, 50])# 使用np.where函数找出数组中大于25的元素的位置indices = np.where(arr > 25)print(indices) # 输出: (array([2, 3, 4]),)
加上x和y的参数,小于等于25的元素为-1
# 使用np.where函数找出数组中大于25的元素result = np.where(arr > 25, arr, -1)print(result) # 输出: array([-1, -1, 30, 40, 50])
Node笔记
Node安装设置路径由于使用npm下载包时会将默认将包下载到C盘,因此为了防止减少C盘使用空间,需要将node包全局安装位置和安装缓存设置到其他盘。
npm config set prefix "D:\node18\node_global"npm config set cache "D:\node18\node_cache"
E:\Program Files\nodejs换为node安装位置
设置镜像使用node安装包的时候会使用到国外的镜像网络下载,所以下载的时候会很慢,该为淘宝的镜像可以加速下载
npm config set registry https://registry.npm.taobao.orgnpm config set registry http://registry.npmmirror.com // 最新版
环境变量将目录下的node_global文件夹路径添加到系统的环境变量中
D:\node18\node_global
常见问题Error: EPERM: operation not permitted, mkdir ‘D:\node18\node_c ...
Pandas笔记
读取数据👉read_xxx读取excel的数据
df = pd.read_excel(item_file_path)
读取csv的数据
df = pd.read_csv(file_path, encoding='gbk')
遍历数据👉iterrows、iteritems行遍历👉iterrowsfor index, obj in item_df.iterrows(): index # 行号 obj # 当前行的数据对象 obj['col_name'] # 获取当前行的对应的列名col_name的数据
列遍历👉iteritemsfor col_name, col in item_df.iteritems(): col_name # 列名 col # 列对应行的数据 col[row_index] # 下标为row_index的行对应的col_name的数据
过滤列数据找到对应行数据👉[[condition]]过滤列名为col_name的数据等于val值的行数据,将过滤得到的数据赋值到df_data变量上。
注:需要将 ...
Win10笔记
删除有权限的文件夹删除一个文件夹需要管理员权限
可以在当前文件夹下输入命令rmdir
PS E:\wesofte\项目\xxx> rmdir位于命令管道位置 1 的 cmdlet Remove-Item请为以下参数提供值:Path[0]: dir_namePath[1]:确认E:\wesofte\项目\xxx\dir_name 处的项具有子项,并且未指定 Recurse参数。如果继续,所有子项均将随该项删除。是否确实要继续?[Y] 是(Y) [A] 全是(A) [N] 否(N) [L] 全否(L) [S] 暂停(S) [?] 帮助 (默认值为“Y”): APS E:\wesofte\项目\xxx>
在Path[0]:后输入文件夹名称,遇到Path[1]:直接回车;
之后选择子项全部删除[A] 全是(A)
查看端口占用情况netstat -ano
该命令可以查看端口号和PID
根据对应的PID在任务管理器找到对应的应用程序
切换窗口取消切换浏览器标签
打开win10设置,找到多任务处理,Alt+Tab选择”仅打开的窗口“
设置win10自带微软输入法词库
...
Win10重装笔记
跳过登录微软帐户断掉所有网络
使用shift+F10打开命令框,并输入OOBE\BYPASSNRO
硬件
内存条DDR4与DDR5的区别DDR4和DDR5的区别主要在于架构设计层面。
DDR4采用单个64位通道,而DDR5则具有两个独立的32位子(双)通道。
传输长度也从8字节增加到了16字节。
此外,DDR5内存最大的优势之一是更高的频率。随着多核心处理器的不断推出和更新,内存频率升级变得至关重要。
频率
上图内容表示:DDR4内存条,频率为3200MHz,容量为8/16/32G
内存条频率高是可以提高电脑的性能。
内存的频率越高,内存的读写速度就越快,从而提高电脑的响应速度和运行速度 。
但是,实际使用中,内存条的频率并不是越高越好。因为内存的频率过高会导致CPU和主板的负担加重,从而影响电脑的稳定性和寿命。
3200频率与2667频率的区别3200频率和2667频率的区别在于内存的主频,即内存所能达到的最高工作频率。
3200频率的内存条比2667频率的内存条具有更高的传输效率,因此性能更好 。
但是,实际性能差距取决于多种因素,如CPU决定的频率范围、主板的频率范围、内存颗粒好坏、时序是否合理等。
如何查看CPU决定的频率范围
在cmd窗口执行命令wmic memorych ...
红客笔记
VMware的三种网络VMware虚拟机的三种网络连接方式分别是:桥接(Bridged)模式、NAT 模式和仅主机(Host-only)模式。
桥接模式:桥接模式是VMware虚拟机最常用的网络连接方式,它可以将虚拟机连接到真实的网络上,使其拥有独立的IP地址,并且可以直接与其他设备进行通信。
NAT模式:NAT模式可以将虚拟机连接到宿主机上,利用宿主机来进行网络连接,虚拟机也可以通过宿主机进行网络访问。
Host-only模式:Host-only模式只能将虚拟机与宿主机之间建立网络连接,而不能与其他设备进行通信。
三种模式的区别:
桥接模式:虚拟机和宿主机在同一个网段上,可以直接与其他设备进行通信。
NAT模式:虚拟机将主机作为网络代理,来连接网络。是最常用的方式。会生成一个虚拟网卡(一般安装好VMware的时候就有了),来代理所有的虚拟机。可以和母机不在同一网段。
Host-only模式:只能将虚拟机与宿主机之间建立网络连接,而不能与其他设备进行通信。
三种模式的优缺点:
桥接模式:虚拟机和宿主机在同一个网段上,可以直接与其他设备进行通信,但是会受到宿主机网络流量的影 ...
发送邮件
一、准备数据
准备需要发送邮件发送端的账号
开启STMP服务
开启服务后,保存好授权密码,该密码只会显示一次
还需获取服务器地址和端口号。在该页面最底下有服务器地址,端口信息可以查看这篇文章邮箱端口列表_126邮箱端口号_冷子夜的博客-CSDN博客
二、发送邮件这里使用Python演示,30行代码完成邮件发送
连接服务器,con = smtplib.SMTP_SSL(data['SendAddr'], data['Port'])
登录邮箱,con.login(data['Username'], data['Password'])
发送邮件,con.sendmail(data['Username'], data['Receiver'], msg.as_string())
import smtplibfrom email.mime.multipart import MIMEMultipartfrom email.mime.text import MIMETextdata = { "SendAddr": "Email server address", "Po ...





