pgsql数据库
问题记录
安装pgsql数据库之前,一定要确保 cmd的编码为 GBK,否则,安装期间会报错,不能自动初始化data文件夹。因为安装期间会使用命令行初始化data文件夹,如果为 UTF-8格式的编码就会运行失败,安装后的data文件夹为空。
如果重新启动pgsql服务失败,可能也是 1.原因造成的
Python小程序
1. 将图片转为icon图标from PIL import Imagedef convert_to_icon(png_path, icon_path): image = Image.open(png_path) image.save(icon_path, format='ICO')# Example usage# 第一个参数是图片地址,第二个参数是需要输出的icon图片文件名和文件后缀convert_to_icon('./data/hexo.png', './data/icon.ico')
2. 将UI文件转为Python文件安装pyqt5包
pip install pyqt5
在ui文件目录下执行命令
pyuic5 -o mainwindow.py mainwindow.ui
该命令可以将ui文件转为Python文件
注:UI文件由Qt界面设计器(Qt Designer)设计
3. 手写签名转为白底黑字import cv2# 读取手写签名图片img = cv2.imread('./data/sign.jpg')# 将图片转换为灰度图像gray = cv2.cvt ...
算法
1. 算法
排序算法
平均时间复杂度
最坏时间复杂度
最好时间复杂度
空间复杂度
稳定性
冒泡排序
O(n^2)
O(n^2)
O(n)
O(1)
稳定
选择排序
O(n^2)
O(n^2)
O(n^2)
O(1)
不稳定
插入排序
O(n^2)
O(n^2)
O(n)
O(1)
稳定
希尔排序
O(n log n)
O(n^2)
O(n log^2 n)
O(1)
不稳定
归并排序
O(n log n)
O(n log n)
O(n log n)
O(n)
稳定
快速排序
O(n log n)
O(n^2)
O(n log n)
O(log n)
不稳定
堆排序
O(n log n)
O(n log n)
O(n log n)
O(1)
不稳定
计数排序
O(n + k)
O(n + k)
O(n + k)
O(k)
稳定
桶排序
O(n + k)
O(n^2)
O(n)
O(n + k)
稳定
基数排序
O(n * k)
O(n * k)
O(n * k)
O(n + k)
稳定
鼠标右键执行程序
前言最近在研究如何右键使用Typora打开当前文件夹,于是到网上查找注册表相关的知识,学到了一下有趣的东西
设置注册表设置注册表右键使用Typora打开当前文件夹
方法一使用cmd打开注册表(regedit)
找到计算机\HKEY_CLASSES_ROOT\Directory\Background\shell
在这个目录下文件夹都是右键打开的项目,比如:
配置的步骤如下:
在shell目录下,右键新建项,名字可以随便起,但是可以清楚知道这个项主要配置的右键打开的哪个项目;
将名称为默认的数据改为Open With Typora,这个即为右键显示的项目名;
添加一个字符串值,名称为icon,数据为Typora的图标地址,直接复制图标地址,不需要使用双引号括起来,标签图片必须为ico类型的图标文件;
再回到Typora右键新建项,名字为command;
将名称为默认的数据改为"Typora地址" "%V"(双引号加上Typora的地址,加上空格,再加上双引号,里面是%和V)
注:%V表示站位符,表示当前文件夹的路径
方法二使用注册表方式直接将数据注册到注册表
Windows R ...
前端回顾
隐藏页面中某个元素的方法1.opacity:0,该元素隐藏起来了,但不会改变页面布局,并且,如果该元素已经绑定 一些事件,如 click 事件,那么点击该区域,也能触发点击事件的
2.visibility:hidden,该元素隐藏起来了,但不会改变页面布局,但是不会触发该元素已 经绑定的事件 ,隐藏对应元素,在文档布局中仍保留原来的空间(重绘)
3.display:none,把元素隐藏起来,并且会改变页面布局,可以理解成在页面中把该元素。 不显示对应的元素,在文档布局中不再分配空间(回流+重绘)
CSS 选择器及优先级选择器
id 选择器(#myid)
类选择器(.myclass)
属性选择器(a[rel=”external”])
伪类选择器(a:hover, li:nth-child)
标签选择器(div, h1,p)
相邻选择器(h1 + p)
子选择器(ul > li)
后代选择器(li a)
通配符选择器(*)
优先级:
!important
内联样式(1000)
ID 选择器(0100)
类选择器/属性选择器/伪类选择器(0010)
元素选择器/伪元素选择器(00 ...
Python
Python导入包顺序
标准库导入
相关第三方库导入
本地应用/库的导入,按照字母顺序
配置pip源Linux系统执行命令即可
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
Windows系统
在C:\Users\Administrator下新建pip文件夹
在文件夹里新建pip.ini文件,并写入如下内容
[global]index-url = https://pypi.tuna.tsinghua.edu.cn/simple/[install]trusted-host = pypi.tuna.tsinghua.edu.cn
*args与*kwargs 的区别*args 用于传递可变数量的非关键字参数,以元组的形式传递。
*kwargs 用于传递可变数量的关键字参数,以字典的形式传递。
def example_function(*args, **kwargs): print("Non-keyword arguments:") for arg in args: ...
JVM
JVM 的组成
常用的是 Hotspot,Hotspot8 以上收费
JDK、JRE、JVM 之间的关系
前端面试速记
1. this
箭头函数没有作用域,this 指向上一级
2. 闭包为什么使用闭包?
避免变量被污染
私有化
保存变量,常驻内存
;(function fn () { let a = 10 let b = 30 function a () {} return {}})()// 当前的a与闭包里的a不冲突let a = 15
使用场景
防抖和节流中也会用到闭包
库的封装(保证数据私有性)
例子
// 计数器// 闭包应用 => 处理私有数据let makeCounter = function () { let privateCounter = 0 function changeBy (val) { privateCounter += val } return { increment: function () { changeBy(1) }, decrement: function () { changeBy(-1) }, value: function () { return privat ...
计算机网络
1. TCP 的三次握手和四次挥手三次握手和四次挥手是 TCP 协议中的概念,用于建立和断开 TCP 连接。
三次握手的过程如下第一次握手:客户端向服务器发送 SYN 包,并进入 SYN_SENT 状态。第二次握手:服务器收到 SYN 包后,向客户端发送 SYN+ACK 包,并进入 SYN_RCVD 状态。第三次握手:客户端收到 SYN+ACK 包后,向服务器发送 ACK 包,并进入 ESTABLISHED 状态。
四次挥手的过程如下第一次挥手:客户端向服务器发送 FIN 包,并进入 FIN_WAIT_1 状态。第二次挥手:服务器收到 FIN 包后,向客户端发送 ACK 包,并进入 CLOSE_WAIT 状态。第三次挥手:服务器向客户端发送 FIN 包,并进入 LAST_ACK 状态。第四次挥手:客户端收到 FIN 包后,向服务器发送 ACK 包,并进入 TIME_WAIT 状态,等待 2MSL 后进入 CLOSED 状态。
作用三次握手是为了确保客户端和服务器之间的通信是可靠的,防止因为网络延迟等原因导致的数据传输错误。四次挥手是为了确保客户端和服务器之间的连接能够正常断开,防止因为 ...
JavaScript
进制转换可以使用toString(a),进行进制转换,a填需要转换的进制
let a = 10a.toString(2) // '1010'a.toString(16) // 'a'
字符串新增方法
includes():是否找到了参数字符串。
startsWith():参数字符串是否在原字符串的头部。
endsWith():参数字符串是否在原字符串的尾部。
repeat(n):将原字符串重复n次。会先将n取整,若仍为负数,则报错Infinity;若n为字符串,则转换成数字。
padStart():用于头部补全。
padEnd():用于尾部补全。
trimStart()、trimLeft():消除字符串头部的空格。
trimEnd()、trimRight():消除尾部的空格。
matchAll():返回一个正则表达式在当前字符串的所有匹配,返回的是一个遍历器(Iterator),需要使用for…of取出,也可以使用结解构将其转成数组[...string.matchAll(regex)]。
replaceAll():可以一次性替换所有匹配,searchValue必须是全局的正则 ...










