- 博客(129)
- 收藏
- 关注
原创 HTTP跨域
HTTP跨域是指不同域名下的网页请求资源时,由于浏览器同源策略限制,导致请求被阻止。为解决这一问题,开发者常采用跨域资源共享(CORS)等技术来允许合法跨域请求,确保网站功能正常运行。同源协议域名端口常见HTTP跨域技术跨域资源共享(CORS):下面会专门介绍。JSONP:下面会专门介绍。WebSocket:WebSocket不受同源策略限制,可以实现跨域通信。代理服务器:在服务器端设置一个代理,前端请求发送到这个代理,然后由代理去请求真正的跨域资源,最后返回给前端。
2024-03-21 19:50:44 563
原创 Go编译DLL与SO
将Go编译成DLL/SO供其他语言调用。.DLL:文件是 Windows 操作系统的动态链接库文件。.SO 文件是 Unix、Linux 和其他类 Unix 系统的共享库文件。
2024-02-28 11:24:26 426
原创 Go Barrier栅栏
实现与python库类似的功能,多线程同时等待达到指定数量一起放行。有待改进地方wait方法没有支持context控制。
2024-02-28 08:48:25 710
原创 Go 跨平台编译
跨平台编译,也称为交叉编译,是指在一个平台上生成另一个平台上的可执行文件。这个过程涉及到一个体系架构(Architecture)和操作系统(Operating System)两个概念。同一个体系架构可以运行不同的操作系统,同样,同一个操作系统也可以在不同的体系架构上运行。具体到跨平台编译,是指将一个源代码编译成适合另一个平台的可执行文件,这需要考虑到目标平台的体系架构和操作系统的特性。
2023-12-31 12:11:49 1052
原创 Python with
with是一个用于上下文管理的关键字,在Python 2.5版本引入了这个特性。它提供了一种更加优雅的方式来管理资源,比如文件、网络连接、数据库连接等。通过使用with语句,我们可以确保在进入代码块之前获取资源,并在代码块执行完成后自动释放资源,无论代码块是否发生异常。除了使用Python内置的上下文管理器(如open()函数返回的文件对象),我们还可以自定义上下文管理器。自定义上下文管理器需要实现和__exit__()方法。这使得with语句非常灵活,适用于各种资源管理情况。
2023-12-31 12:07:58 546
原创 Go配置镜像源
GOPROXY是一个加速Go语言包下载和更新的工具。它通过镜像源的方式,帮助开发者快速获取Go语言包,提高开发效率。GOPROXY的使用非常简单,只需在终端中设置其地址,然后使用go get、go mod等命令即可享受更快的下载速度。对于Go语言开发者来说,GOPROXY是一个必备的实用工具。
2023-12-26 21:13:12 1174
原创 tcpdump
Tcpdump是Linux中强大的网络数据采集分析工具之一。用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。作为互联网上经典的的系统管理员必备工具,tcpdump以其强大的功能,灵活的截取策略,成为每个高级的系统管理员分析网络,排查问题等所必备的工具之一。tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。
2023-12-25 18:42:54 826
原创 Linux User & Group
Linux中的用户和组是权限管理的基础。用户代表一个个体,组则是用户的集合。通过创建和管理用户和组,管理员可以合理分配资源并控制权限。使用sudo等工具,普通用户也能执行高级任务。合理管理用户和组对系统安全至关重要。
2023-12-25 09:21:35 405
原创 Linux ulimit配置
在Linux系统中,ulimit是一个强大的工具,用于控制用户进程可以使用的资源。然而,有时候我们可能会遇到需要关闭或者调整这些资源限制的情况,以满足特定需求。本文将介绍如何关闭Linux系统中的ulimit限制,使得进程能够更自由地利用系统资源。
2023-12-22 14:05:14 516
原创 macOS输入法卸载
macOS上输入法卸载还是很不方便的,很多输入法没有提供卸载方法,也不能像普通应用一样直接从应用程序文件夹中移除,下面提供一些我常用的输入法卸载方法。想卸载其他输入法,也可以以下作为参考。
2023-11-20 15:56:50 252
原创 Swift | 属性包装器
Swift Property Wrapper 是一种特性,它允许我们在声明属性时添加自定义的包装逻辑。通过使用属性包装器,我们可以在不修改类或结构体定义的情况下,定制属性的访问和存储方式。这种特性在很多场景下非常有用,例如:属性验证、类型转换、延迟初始化等。
2023-10-06 22:01:35 857 1
原创 Python threading
Python的threading模块是用于创建和管理线程的标准库。线程是在同一进程中执行的多个执行路径,使程序可以同时执行多个任务。threading模块提供了Thread类,通过创建Thread对象,可以轻松地在Python中启动和管理线程。
2023-08-04 18:47:17 453
原创 Redis | 集群模式
Redis 集群模式是 Redis 数据库的一种分布式部署方式,它通过数据分片(Sharding)将数据存储在多个节点上,从而实现数据的水平拆分和负载均衡。每个节点负责处理其中一部分数据,并支持主从复制以提供数据冗余和高可用性。在 Redis 集群中,数据被分成 16384 个槽(slots),每个槽对应一个节点。数据根据一定的规则(通常是键的哈希值)被映射到不同的槽上,从而实现分布式存储。当集群中添加或移除节点时,Redis 会自动重新分片数据,无需手动迁移数据,大大简化了扩容和缩容操作。
2023-08-04 18:45:40 525
原创 Redis | 哨兵模式
Redis Sentinel(哨兵)是Redis提供的一种高可用性解决方案。它是一个独立的进程,用于监控和管理Redis主从模式的节点,并在主节点故障时自动进行故障转移。哨兵模式可以确保Redis集群的高可用性和数据一致性。在哨兵模式中,有一个主节点(Master)和多个从节点(Slave),以及一个或多个哨兵(Sentinel)。主节点负责接收写操作和复制数据到从节点,而从节点负责复制主节点的数据。哨兵负责监控主节点和从节点的状态,并在主节点故障时自动将一个从节点提升为新的主节点。
2023-08-04 18:44:38 645
原创 Redis | 主从模式
Redis主从模式(Replication)是Redis提供的一种数据备份和高可用性解决方案。通过主从复制,可以将一个Redis服务器的数据复制到其他多个从服务器,从而实现数据的备份和读写分离,提高系统的性能和可用性。
2023-08-04 18:43:41 757
原创 Go context
Go语言的context包是用于在并发编程中传递请求作用域的工具。它解决了在多个goroutine之间传递请求相关数据、控制请求超时、取消请求等问题。
2023-07-27 08:44:21 251
原创 Vue3 | Element Plus resetFields不生效
先打开创建对话框没有问题,但只要先打开编辑对话框,后续在打开对话框就会有默认值,还无法使用重置。下面是用来复现问题的示例代码和示例GIF。
2023-06-04 16:59:51 1621
原创 Go json: unsupported value: NaN
除数为浮点数并且值为0时不会引发panic,此时得到的结果是NaN是不可以用来进行数学运算和JSON对象序列化反序列化。下面是对问题复现。
2023-01-19 10:39:11 571
原创 Docker | COPY *只复制文件
COPY *会将当所有文件夹下文件,拷贝到镜像同一文件夹下,不会保留文件夹层级关系。将Dockerfile中。
2022-09-24 11:55:13 627
原创 Python | JSON(Dict)与Class转换
JSON⇔Dict⇔ClassJSON⇔Dict⇔Class这里主要讲的是Dict与Class转换,至于Dict与JSON字符串之前转换可以直接使用系统方法,如下d={'name'{'phone'
2022-07-28 09:31:07 1278
原创 Python | peewee.InterfaceError
服务器上运行的Python后台,每次到第二天就会出现后台管理账号无法登录情况。查看后台日志发现是数据库方面出现了问题,最先以为是数据库无法访问。因为后台有正在运行的任务,会经常访问数据库发现并没有报数据库方面的错,只有HTTP请求的线程无法访问。2. 原因peewee会为每个线程分配一条数据库链接,当页面长时间没有收到HTTP请求数据操作数据库时,处理HTTP请求的线程的数据库连接就会失效,所有会出现页面无法登录,而后台运行的任务会经常访问数据库,所有连接不会失效。第1步修改数据库wait_timeou
2022-06-21 15:48:53 666
原创 我的创作纪念日
转眼间从事程序员这个行业已经4年,现在想想当前当前选择了这人行业,感觉到十分幸运。程序员虽然是一个辛苦的行业,但是确是给了我这样一个平凡的人改变命运的机会。如果不是程序员这个行业,现在的我可能是在某个厂子里过着过着机械重复的每一天,见不到现在这个精彩的生活。我的博客目前像学习笔记,记录自己学习的知识,踩过的坑。我工作4年所有的知识基本都是靠自学,现在发现学习新的东西越来越快,忘记的越来越快学完一个技术只记得一个技术概念,它是谁,它能做什么我什么时候需要它。所以通过笔记形式把它具体的使用记录下来方便自己未来快
2022-06-11 22:25:27 110 4
原创 Docker | 构建镜像
Docker | 构建镜像1. 修改已有镜像在ubuntu:22.04中添加Gitdocker run -it --name example ubuntu:22.04 bash## example容器内下面命令安装gitapt-get updateapt-get install git# 构建新镜像docker container commit example ubuntu-git:22.042. Dockerfile构建在ubuntu:22.04中添加GitDockerfile
2022-05-02 15:36:19 267
原创 Python | 使用Socks5
Python | 使用Socks51. TCPimport socks# 创建sockets: socks.socksocket = socks.socksocket()# 设置代理l(username, password, ip, port) = ('', '', '', 0)s.set_proxy(socks.SOCKS5, addr=ip, port=port, username=username, password=password)# 连接百度s.connect(("www.b
2022-05-02 15:34:04 5628 4
原创 Docker | 镜像分发
Docker | 镜像分发1. Docker Hub直接从镜像仓库拉取docker pull busybox:latest2. 文件共享镜像导出成文件# 拉取镜像docker pull busybox:latest# 保存镜像去文件docker save -o myfile.tar busybox:latest从文件中加载镜像docker load -i myfile.tar3. Dockerfile这里我们hello.sh理解为我们需要执行的程序。文件树example
2022-04-22 13:34:25 1106
原创 Go | 常见坑
Go | 常见坑1. randimport ( "math/rand" "time")var generator = rand.New(rand.NewSource(time.Now().Unix()))func main() { go func() { for { generator.Int() } }() go func() { for { generator.Int() } }() time.Sleep(time.Second * 100)
2022-04-17 14:02:48 504
原创 算法 | 字符串所有组合
算法 | 字符串所有组合1. 简介通过递归交换位置,找到所有可能的的结果。如果需要对结果去重可以使用类似Set数据结构保存结果数据。2. 演示func main() { list := []string{"a", "b", "c"} combination(list, 0)}func combination(strs []string, index int) { if index == len(strs)-1 { fmt.Println(strings.Join(strs, ""
2022-04-10 16:31:58 368
原创 Python | 动态加载模块
Python | 动态加载模块1. 文件结构hello-python├── commands│ └── command1.py└── main.py2. 代码command1.pydef hello(): print("this is command1")class Example: def print_info(self): print(f'this is {self.__class__}')print('command
2022-04-06 10:43:16 1738
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人