Python
并发编程之进程通信(队列和管道)
引言 什么是进程间通信 进程间通信(Inter-Process Communication, IPC)是指两个或多个进程之间进行信息交换的过程。它是一种计算机编程技术,用于在不同进程之间共享数据和资源。 如何实现进程间通信 借助于消息队列,进程可以将消息放入队列中,然后由另一个进程从队列中取出。这种通信方式是非阻塞的,即发送进程不需要等待接收进程的响应即可继续执行。 multiprocessing
并发编程之进程互斥锁
什么是进程同步(互斥锁) 互斥锁(Mutex)是一种用于多线程编程中控制对共享资源访问的机制。 其作用是保证在同一时刻只有一个线程在访问共享资源,从而避免多个线程同时读写数据造成的问题。 互斥锁的基本原理是在对共享资源进行访问前加锁,使得其他线程无法访问该资源,当访问完成后再解锁,使得其他线程可以进行访问。 通过这种方式,可以保证同一时间只有一个线程在执行关键代码段,从而保证了数据的安全性。 需要
并发编程之进程通信(生产消费模型)
什么是生产者消费者模式 生产者消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取,阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力。 (1)生产者模型 生产者模型和消费者模型是指通过利用队列解耦生产者和消费者的一
并发编程之多线程理论篇
什么叫线程 线程也叫轻量级进程,是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。 线程自己不用有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个一个进程的其他线程共享其所拥有的全部资源。一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行。 为什么要使用多线程 总结起来,使用多线程编程具有如下几个优点: 1. 进程之间不能共
并发编程之多线程操作篇
多线程简单介绍 多线程,或者说多任务,指的是操作系统同时运行多个任务。例如,听歌、洗衣服、看视频可以同时进行,这种就是多任务。 单核CPU执行多任务:操作系统轮流让各个任务交替执行,任务1执行t1时间,切换到任务2,任务2执行t2时间,再切换到任务3,执行t3时间...如此反复执行,表面上看,每个任务交替执行,但是由于CPU的执行速度很快,在人看来就好像所有任务同时执行。 这里需要注意并发和并行的
并发编程之GIL解释器锁
引言 首先需要明确的一点是GIL并不是Python的特性,它是在实现Python解析器(CPython)时所引入的一个概念。就好比C++是一套语言(语法)标准,但是可以用不同的编译器来编译成可执行代码。有名的编译器例如GCC,INTEL C++,Visual C++等。Python也一样,同样一段代码可以通过CPython,PyPy,Psyco等不同的Python执行环境来执行。像其中的JPyth
并发编程之死锁和递归锁
死锁 所谓死锁: 是指两个或两个以上的进程或线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程,如下就是死锁 代码解释: 注:互斥锁只能acquire一次 递归锁 递归锁(也叫可重入锁)是一种特殊的锁,它允许一个线程多次请求同一个锁,称为“递归地”请求锁。 在该线程释放锁之前
并发编程之信号量Semaphore
信号量Semaphore Semaphore管理一个内置的计数器, 每当调用acquire()时内置计数器-1; 调用release() 时内置计数器+1; 计数器不能小于0;当计数器为0时,acquire()将阻塞线程直到其他线程调用release()。 代码示例: 信号量与进程池是完全不同的概念,进程池Pool(4),最大只能产生4个进程,而且从头到尾都只是这四个进程,不会产生新的,而信号量
大模型应用(1) 搭建本地知识库
本文将讲述如何在本地部署大模型服务,并使用Embeeding、向量数据库和LangChain构建本地知识库 本地部署LLM 通常使用LangChain会去调用OpenAI的服务,但是我们在使用OpenAI服务时,但经常会遇到很多阻力,比如付费、网络不稳定等。因此我们可以在下载一个较小的大模型到本地,并将其部署成OpenAI服务,这样也便于我们使用LangChain去直接调用。 首先需要下载Fast
DC-7靶机做题记录
靶机下载地址: 参考: DC7靶机地址:http://www.five86.com/downloads/DC-7.zip DC7靶场介绍: https://www.vulnhub.com/entry/dc-7,356/ php插件地址:https://ftp.drupal.org/files/projects/php-8.x-1.x-dev.tar.gz 【DC系列靶机DC7通关讲解】 htt
langchain中的Document类
在Langchain-Chatchat的上传文档接口(upload_docs)中有个自定义的docs字段,用到了Document类。根据发现指的是from langchain.docstore.document import Document。本文简要对Document类进行介绍。 1.上传文档接口upload_docs def upload_docs( &nb
selenium 安装
selenium 使用 1. 安装 selenium 虽然是工具,但是实际是 python 中一个库 2. 浏览器驱动下载 https://googlechromelabs.github.io/chrome-for-testing/ 下载后放入到 python 的 scripts 中去
DC-6靶机做题记录
靶机下载地址: 参考: DC6靶场介绍:https://www.vulnhub.com/entry/dc-6,315/ 靶机:http://www.five86.com/downloads/DC-6.zip http://t.csdnimg.cn/5eTG9 DC-6 (1).pdf https://wpscan.com/ 【网安神器篇】——WPScan漏洞扫描工具-CSDN博客 ChatGP
xshell配置隧道转移规则
钢铁知识库,一个学习python爬虫、数据分析的知识库。人生苦短,快用python。 xshell是什么 通俗点说就是一款强大ssh远程软件,可以方便运维人员对服务器进行管理操作,功能很多朋友们自行探索,今天只聊其中一个功能点那就是隧道转发。 隧道转移是什么 xshell隧道转移到底是干嘛的,有什么作用呢?隧道是一种技术,它允许你通过一个加密连接发送原本不安全的流量。这就像在不安全的网络上建立了一
小程序开发:修复了两个问题和页面改名
今天发现首页的笔记本的徽标数位置不一致,如果笔记本标题长了,徽标数也会挤到其它位置去,如下: 很明显两个徽标的位置不一致,html结构如下: 将徽标和标题调整如下: 再看看页面: 解决! 还有一个问题是新增所思所想如果内容区只有html元素,如:img、换行等都被视为html元素,这些元素将被过滤,从而视内容区长度为
模块,包,库,框架的使用
一、模块Module 模块是一个变量、数组、函数和类的集合。另外,模块是一种以.py为后缀的文件,用于表示程序的一部分,模块的名称是该.py文件的名称。模块的名称**作为一个全局变量__name__**的取值可以被其他模块获取或导入。 模块的导入通过ipmort来实现,导入模块的方式如下: import <moduleName> from &l
Python Matplotlib 常见图形绘制
参考文档:Python Matplotlib 常见图形绘制-CJavaPy 1、折线图(Line Plot) 绘制折线图(Line Plot)是一项基础且常用的功能。折线图非常适合展示数据随时间或其他连续变量变化的趋势。使用plt.plot() 函数用于在坐标轴上绘制折线图(Line Plot),它提供了多种参数来自定义图像的外观。常用参数如下, 参数 描述
ubuntu定时/监控运行python脚本
网上的教程千篇一律,但是我的不成功,于是自己写了个。 环境:ubuntu20 首先安装,参考其它教程【一般ubuntu都自带了】 然后: vim /etc/crontab 回车看到: 解决了,反正cd避免了工作目录的问题,su - 直接login上去,可以避免很多问题。。 对上面的解释 这是一个 cron 表达式,用于定时执行指定的命令。具体来说,这个 cron 表达式是: 解释如下:
【机器学习】基于AnimeGAN的漫画人脸生成系统
一、课题描述 1.1 课题背景 1.1.1 论文背景 动画是一种被广泛应用于广告、电影、儿童教育的日常生活中常见的艺术形式。目前,动画的制作主要依靠手工实现。然而,手工制作动画是非常费力的,需要大量的艺术技巧。对于动画艺术家来说,创作高质量的动画作品需要考虑线条、纹理、颜色、阴影等在内的要素,导致创作作品的难度和耗时。因此,能够将真实世界的照片自动转换成高质量的动画风格图像的自动化技术是非常有价值
Go语言核心36讲 04 | 程序实体的那些事儿(上)
我已经为你打开了Go语言编程之门,并向你展示了“程序从初建到拆分,再到模块化”的基本演化路径。 一个编程老手让程序完成基本演化,可能也就需要几十分钟甚至十几分钟,因为他们一开始就会把车开到模块化编程的道路上。我相信,等你真正理解了这个过程之后,也会驾轻就熟的。 上述套路是通用的,不是只适用于Go语言。但从本篇开始,我会开始向你介绍Go语言中的各种特性以及相应的编程方法和思想。 我在讲解那两种