自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一蓑烟雨任平生

个人技术学习笔记仓库

  • 博客(51)
  • 资源 (7)
  • 收藏
  • 关注

转载 python异步调用 asyncio、await

asyncio是Python 3.4版本引入的标准库,直接内置了对异步IO的支持。asyncio的编程模型就是一个消息循环。我们从asyncio模块中直接获取一个EventLoop的引用,然后把需要执行的协程扔到EventLoop中执行,就实现了异步IO。用asyncio实现Hello world代码如下:import [email protected] hello(): print("Hello world!") # 异步调用asyncio.sle

2021-12-29 19:45:58 1384

原创 bilibili弹幕游戏

开了一个项目坑,弹幕玩游戏,后续会不断优化哔哩哔哩直播,二次元弹幕直播平台待优化项实现弹幕的爬取的发送【12-29完成】 整理代码模块,添加公共消息队列类,用来全局处理数据【12-29完成】 代码模块化,分成游戏,弹幕,数据库文件夹【12-29完成】 加一个日志文件夹,一个弹幕日志,一个其他日志,代码注意单例模式【12-29完成】 加一个配置全局变量代码文件,把需要经常修改的配置放里面。比如数据库文件名,roomId,cookie等,然后其他代码来引用它【12-29完成.

2021-12-29 15:45:21 3756

转载 python单例模式

python实现单例模式几种方式。①文件导入的形式:python的模块就是天然的单例模式,因为模块在第一次导入的时候,会生成.pyc文件,当第二次导入的时候,就会直接加载.pyc文件,而不是再次执行模块代码。将Foo类在某个文件(test1.py)中实例化,赋值给某个变量v。在其他文件如test2.py中引入该实例,多次引用打印其内存地址,发现是一样。#test1.pyclass Foo(object): def test(self): print("123")...

2021-12-29 15:39:08 401

转载 消息队列分类

选择消息队列产品的基本标准虽然这些消息队列产品在功能和特性方面各有优劣,但我们在选择的时候要有一个最低标准,保证入选的产品至少是及格的。接下来我们先说一下这及格的标准是什么样的。首先,必须是开源的产品,这个非常重要。开源意味着,如果有一天你使用的消息队列遇到了一个影响你系统业务的 Bug,你至少还有机会通过修改源代码来迅速修复或规避这个 Bug,解决你的系统火烧眉毛的问题,而不是束手无策地等待开发者不一定什么时候发布的下一个版本来解决。其次,这个产品必须是近年来比较流行并且有一定社区活跃度的

2021-12-28 11:53:03 350

转载 【代码规范】常见注释规范

1.在有处理逻辑的代码中,源程序有效注释量必须在20%以上。说明:注释的原则是有助于对程序的阅读理解,在该加的地方都加了,注释不宜太多也不能太少,注释语言必须准确、易懂、简洁。2.文件注释:文件注释写入文件头部。说明:以/* 开始示例:/ ** 文件名:[文件名]* 作者:〈版权〉* 描述:〈描述〉* 修改人:〈修改人〉* 修改时间:YYYY-MM-DD * 修改内容:〈修改内容〉 */说明:每次修改后在文件头部写明修改信息。示例:/ *

2021-12-26 10:53:07 3067

原创 Golang 注释规范

注释的意义#注释可以帮我们很好的完成文档的工作,写得好的注释可以方便我们以后的维护。 /**/ 的块注释和 // 的单行注释两种注释风格, 在我们的项目中为了风格的统一,全部使用单行注释,注释的质量决定了生成的文档的质量。 下面从包注释、结构体(接口)注释、函数(方法)注释、代码逻辑注释以及注释规范方面进行说明。包注释#每个包都应该有一个包注释,一个位于 package 子句之前行注释 包注释应该包含下面基本信息// @Title 请填写文件名称(需要改)// @Descriptio

2021-12-26 10:48:58 1324

原创 好看的代码注释

代码注释

2021-12-26 10:45:52 533

原创 栈与堆,new的坑

#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <vector>#include <string>#include <string.h>#include <set>#include <algorithm>using namespace std;string getString() { return "1111";}char *...

2021-12-26 10:25:36 472

原创 消息队列优质资源

消息中间件MQ与RabbitMQ面试题(2020最新版)_ThinkWon的博客-CSDN博客_rabbitmq面试题

2021-12-21 21:06:22 1032

转载 实战一(上):业务开发常用的基于贫血模型的MVC架构违背OOP吗?

在前面几节课中,我们学习了面向对象的一些理论知识,比如,面向对象四大特性、接口和抽象类、面向对象和面向过程编程风格、基于接口而非实现编程和多用组合少用继承设计思想等等。接下来,我们再用四节课的时间,通过两个更加贴近实战的项目来进一步学习,如何将这些理论应用到实际的软件开发中。据我了解,大部分工程师都是做业务开发的,所以,今天我们讲的这个实战项目也是一个典型的业务系统开发案例。我们都知道,很多业务系统都是基于 MVC 三层架构来开发的。实际上,更确切点讲,这是一种基于贫血模型的 MVC 三层架构开发模..

2021-12-21 20:55:52 564

原创 Linux优质资源

Shell脚本基础—编写脚本会遇到的各种问题_YAIMZA的博客-CSDN博客_shell脚本基本错误类型

2021-12-18 22:36:37 75

原创 C++优质资源

C++实现常用八大排序算法—实现及其对比_YAIMZA的博客-CSDN博客_c++排序算法 常见的七种排序算法(插入排序—直接插入排序和希尔排序)_YAIMZA的博客-CSDN博客 平衡搜索树—红黑树RBTree_YAIMZA的博客-CSDN博客 平衡搜索树-AVLTree_YAIMZA的博客-CSDN博客_平衡搜索树 归并排序算法详解及其优化_YAIMZA的博客-CSDN博客_归并排序算法 ...

2021-12-18 22:35:05 2542

转载 【C语言】笔记总结—思维导图

2021-12-18 22:29:00 170

原创 计算机网络优质资源

IO多路转接—select,并且实现select版本的TCP服务器_YAIMZA的博客-CSDN博客 IO多路转接—poll,并且实现poll版本的TCP服务器_YAIMZA的博客-CSDN博客 简单的TCP网络程序_YAIMZA的博客-CSDN博客_tcp程序

2021-12-18 22:20:42 1837

转载 【C++】思维导图

2021-12-18 22:11:39 310 2

转载 【数据库mysql命令】思维导图总结

2021-12-18 22:07:10 202

转载 10丨理论七:为何说要多用组合少用继承?如何决定该用组合还是继承?

在面向对象编程中,有一条非常经典的设计原则,那就是:组合优于继承,多用组合少用继承。为什么不推荐使用继承?组合相比继承有哪些优势?如何判断该用组合还是继承?今天,我们就围绕着这三个问题,来详细讲解一下这条设计原则。为什么不推荐使用继承?继承是面向对象的四大特性之一,用来表示类之间的 is-a 关系,可以解决代码复用的问题。虽然继承有诸多作用,但继承层次过深、过复杂,也会影响到代码的可维护性。所以,对于是否应该在项目中使用继承,网上有很多争议。很多人觉得继承是一种反模式,应该尽量少用,甚至不用。为什么

2021-12-18 19:47:18 210

转载 09为什么基于接口而非实现编程?有必要为每个类都定义接口吗?

基于接口而非实现编程。这个原则非常重要,是一种非常有效的提高代码质量的手段,在平时的开发中特别经常被用到。如何解读原则中的“接口”二字?“基于接口而非实现编程”这条原则的英文描述是:“Program to an interface, not an implementation”。理解这条原则的时候,千万不要一开始就与具体的编程语言挂钩,局限在编程语言的“接口”语法中(比如Java中的interface接口语法)。这条原则最早出现于1994年GoF的《设计模式》这本书,它先于很多编程语...

2021-12-15 11:18:46 105

转载 08丨理论五:接口vs抽象类的区别?如何用普通的类模拟抽象类和接口?

在面向对象编程中,抽象类和接口是两个经常被用到的语法概念,是面向对象四大特性,以及很多设计模式、设计思想、设计原则编程实现的基础。比如,我们可以使用接口来实现面向对象的抽象特性、多态特性和基于接口而非实现的设计原则,使用抽象类来实现面向对象的继承特性和模板设计模式等等。不过,并不是所有的面向对象编程语言都支持这两个语法概念,比如,C++这种编程语言只支持抽象类,不支持接口;而像Python这样的动态编程语言,既不支持抽象类,也不支持接口。尽管有些编程语言没有提供现成的语法来支持接口和抽象类,我们仍...

2021-12-15 11:15:20 119

原创 sqlite3

安装:SQLite 安装 | 菜鸟教程格式化输出.header on.mode column --按列输出.timer on.mode line --按行输出子查询SQLite 子查询 | 菜鸟教程C/C++连接接口SQLite – C/C++ | 菜鸟教程python连接接口SQLite – Python | 菜鸟教程...

2021-12-15 10:16:17 2653

原创 PyQT5 + pycharm +anaconda

1.在虚拟环境安装pyqt、pydesigner、pyuicPyCharm安装PyQt5及其工具(Qt Designer、PyUIC、PyRcc)详细教程_思绪无限的博客-CSDN博客_pycharm安装教程2.配置系统环境变量3.使用PyQt5 - 获取+修改文本框内容+禁止编辑_(^_−)☆ 欢迎~-CSDN博客_pyqt5 settextpyqt5按钮点击后,修改按钮文本内容_zhaoyangjian724的专栏-CSDN博客_pyqt5更改按钮文本...

2021-12-15 10:10:19 628

原创 STL概论——源码之前,了无秘密

“在研究STL的过程中,每一分每一秒我们都要谨记在心,效率是个重要课题。”——侯捷1、为什么要建立STL:程序的复用性的提升(建立在标准之上)2、STL的价值:1)STL带来了极具实用价值的组件2)以泛型思想为基础的”软件组件分类学”,STL是一个抽象概念库3、一句话总结STLSTL实现的的是以抽象概念构架起的接口标准。在这个接口下,任何组件相互独立;任何组件通过Iterator胶合;通过adaptor配接;通过functor选择policy4、STL形成cl.

2021-12-14 10:56:46 446

转载 STL源码——空间配置器

1.概述整个STL的操作对象(所有的数值)都存放在容器之内,而容器一定需要配置空间以置放资料。一般C++内存配置和释放操作是这样的:class A {};A* pa = new A;//...执行其他操作delete pa;这其中的new算式内含两阶段操作:(1)调用:: operator new配置内存(2)调用Fo::F0o()构造对象内容。 delete算式也内含两阶段操作:(1)调用Foo::~foo()将对象析构;(2)调用:: operator delete释放内存为

2021-12-14 10:56:45 212

转载 STL源码——序列式容器priority_queue源码剖析

一、priority_queue概述priority_queue是一种以权值进行排序的queue。由于其也是一个队列,因此也遵循先进先出(FIFO)的原则,其形式如下图所示:特点:priority_queue会对队列中的元素根据权值进行排序(权值默认为元素的值),权值最高的在队列的头部底层实现:SGI STL默认用一个max-heap来实现priority_queue,而max-heap又是以vector实现的complete binary tree。因此priority_queue是默认以

2021-12-14 10:56:43 323

转载 STL源码——迭代器iterators

1.迭代器作用迭代器(iterators)是一种抽象的设计概念,现实程序语言中并没有直接对应于这个概念的实物。《Design Patterns》中iterator模式定义如下:提供一种方法,使之能够依序巡访某个聚合物(容器)所含的各个元素,而又无需暴露该聚合物的内部表述方式。STL的中心思想在于:将数据容器和算法分开,彼此独立设计,最后再以一贴胶合剂(iterator)将它们撮合在一起。迭代器是数据结构容器中非常有用的“特殊指针”,在不暴露容器中结构的条件下,可以取出容器里所有的元素。2.迭代器..

2021-12-14 10:56:41 518

原创 二叉树___

遍历前序遍历中序遍历后序遍历层序遍历树的层次遍历算法思想:①初始化一个辅助队列②根结点入队③若队列非空,则队头结点出队,访问该结点,并将其左、右孩子插入队尾(如果有的话)④重复③直至队列为空递归1.刷题套路 二叉树的递归解题套路:设定当前节点为根节点,首先,根据当前节点运行的情况,考虑递归的停止条件和返回的结果;然后,根据题目确定根节点从左子节点和右子节点中获取的信息(可以建立两个类存放获取的信息);接下来,在当前节点...

2021-12-14 10:56:24 201

转载 STL源码——序列式容器vector★★★

一.vector概述任何特定的数据结构都是为了实现某种特定的算法.STL容器即是将运用最广的一些数据结构实现出来。vector的数据安排以及操作方式,与array非常相似。两者的唯一差别在于空间的运用的灵活性。array是静态空间,一旦配置了就不能改变;要换个大(或小)一点的房子,可以,一切琐细得由客户端自己来:首先配置一块新空间,然后将元素从旧址一一搬往新址,再把原来的空间释还给系统。vector是动态空间,随着元素的加人,它的内部机制会自行扩充空间以容纳新元素。因此,vector的运用对于

2021-12-13 20:51:23 158

转载 STL源码——序列式容器list

一、list概述list的使用语法:https://blog.csdn.net/qq_41453285/article/details/105483054总的来说:环形双向链表特点:底层是使用链表实现的,支持双向顺序访问在list中任何位置进行插入和删除的速度都很快不支持随机访问,为了访问一个元素,必须遍历整个容器与其他容器相比,额外内存开销大设计目的:令容器在任何位置进行插入和删除都很快何时使用:容器需要不断地在中间插入或删除元素无论删除还是增加,list的迭代器、引用、指针都不会

2021-12-13 20:50:30 189

转载 STL源码——序列式容器deque

一、deque概述deque的使用语法:https://blog.csdn.net/qq_41453285/article/details/105483037总的来说:是一个双端队列特点:支持快速随机访问(支持索引取值)在头尾插入/删除速度很快deque是非常复杂的数据结构,由多个vector组成,迭代器使用时会在不同的区间跳转存取元素的时候,deque的内部结构会多出一个间接过程,相比vector操作会慢一些对内存有限制的系统中,deque比vector可以包含更多元素,因为它不止使用一

2021-12-13 20:49:54 324

转载 STL源码——序列式容器stack

一、stack概述stack的使用语法见文章:C++(标准库):21---STL容器之(容器适配器之stack)_董哥的黑板报-CSDN博客stack是一种先进后出(First In Last Out,FILO)的数据结构。它只有一个出口, 形式如下图所示特点:stack允许新增元素、移除元素、取得最顶端元素。但除了最顶端外,没有任何其他方法可以存取stack的其他元素。换言之stack不允许有遍历行为将元素推入stack的动作称为push,将元素推出stack的动作称为pop底层实现:SG

2021-12-13 20:48:07 164

转载 STL源码——序列式容器queue源码剖析

一、queue概述queue的使用语法见文章:C++(标准库):22---STL容器之(容器适配器之queue)_董哥的黑板报-CSDN博客 queue是一种先进先出(First In First Out,FIFO)的数据结构。它有两个出口,形式如下图所示特点:queue允许新增元素、移除元素、从最底端加入元素、取得最顶端元素但除了最底端可以加入、最顶端可以取出外,没有任何其他方法可以存取queue的其他元素。换言之queue不允许有遍历行为将元素推入queue的动作称为push,将元素推

2021-12-13 20:47:34 361

转载 STL源码——heap算法

一、heap概述heap并不归属于 STL 容器组件binary heap作为priority queue的底层实现机制。顾名思义,priority queue允许使用者以任何次序将任何元素推入容器内,但取出时一定是从优先权最高(也就是数值最高)之元素开始取。binary max heap正是具有这样的特性,适合做为priorityqueue的底层机制heap作为priority queue的底层实现假设list作为priority queue的底层机制:元素插入动作可享常数时间但是要找到l

2021-12-13 20:47:04 1136

转载 STL源码——平衡二叉搜索树AVL-tree与RB-tree(红黑树)★★★

一、二叉搜索树所谓二叉搜索树,可提供对数时间的元素插入和访问 节点放置规则:任何节点的键值一定大于其左子树的每一个节点的键值;并小于其右子树中的每一个节点的键值最大值、最小值:最小值:从根节点出发,一直往左走,直至无左路可走,即得到最小元素最大值:从根节点出发,一直往右走,直至无右路可走,即得到最大元素二叉搜索树的查找从根节点出发,根据值的大小,逐个向左或向右查找,就可以查找到元素二叉搜索树的插入插入新元素时,从根节点开始,遇键值较大者就向左,遇键值较小者就向右,一直到.

2021-12-13 20:46:10 447

转载 STL源码——hash table(哈希表)与关联式容器hash_set、hash_map★★★

一、哈希介绍前面介绍的二叉搜索树和平衡二叉搜索树。二叉搜索树具有对数平均时间的表现,但这样的表现构造在一个假设上:输入数据有足够的随机性文本要介绍一种名为hash table(哈希表/散列表)的数据结构,这种结构在插入、删除、搜索等操作上也具有“常数平均时间”的表现,而且这种表现是以统计为基础,不需依赖输入元素的随机性哈希表可以在本人的数据结构文章中查看,文本就不再详细介绍了:hash table是作为hash_set、hash_map、hash_multiset、hash_multimap容器的底

2021-12-13 20:44:23 272

原创 C++代码优化,提升性能★★★

1.背景背景:部分代码中对于string字符串的添加采用+=方式,经测验,append方式执行效率更高。2.测验代码#include<iostream> #include<ctime> #include<map> using namespace std; int main() { for (int j = 0; j < 10; ++j) { string strinfo;

2021-12-13 20:41:52 4814

原创 为什么很多编程语言中数组都从0开始编号?

从数组存储的内存模型上来看,“下标”最确切的定义应该是“偏移(offset)”。前面也讲到,如果用 a 来表示数组的首地址,a[0] 就是偏移为 0 的位置,也就是首地址,a[k] 就表示偏移 k 个 type_size 的位置,所以计算 a[k] 的内存地址只需要用这个公式:a[k]_address = base_address + k * type_size但是,如果数组从 1 开始计数,那我们计算数组元素 a[k] 的内存地址就会变为:a[k]_address = base_addre

2021-12-13 20:39:57 113

转载 linux的UDP通信编程

文章将对linux下udp socket编程重要知识点进行总结,无论是开发人员应知应会的,还是说udp socket的一些偏僻知识点,本文都会讲到。尽可能做到,读了一篇文章之后,大家对udp socket有一个比较全面的认识。本文分为两个专题,第一个是常用的upd socket框架,第二个是一些udp socket并不常用但又相当重要的知识点。一、基本的udp socket编程1. UDP编程框架要使用UDP协议进行程序开发,我们必须首先得理解什么是什么是UDP?这里简单概括一下。UDP(u

2021-12-11 12:33:47 3742

转载 CMakeLists.txt编译C++

cmakelist 编写函数才把消息处理函数所返回的值返回给调用者。我们常见的方法的调用大部分是同步,在方法内部调用另外的方法,往往都是在等待方法的处理结果然后获取结果,接着进行后续的处理。在我们进行断点调试时,可以看出方法的执行就如流水一样,一句一句执行,一句未执行完毕就等待。我们将这种想法放到一些需要协同工作,或者需要花费函数才把消息处理函数所返回的值返回给调用者。我们常见的方法的调用大部分是同步,在方法内部调用另外的方法,往往都是在等待方法的处理结果然后获取结果,接着进行后续的

2021-12-11 12:32:37 920

转载 C调用C++(C++封装以及C对其调用)

例子1. apple.h 原C++代码#ifndef __APPLE_H__#define __APPLE_H__class Apple{public: Apple(); int GetColor(void); void SetColor(int color); private: int m_nColor;};#endif 2.apple.cpp原C++代码#include "apple.h"Apple::Apple() ...

2021-12-07 09:11:32 250

原创 递归、回溯、DFS、BFS

递归递归三要素:目的,停止条件,传递条件。做递归思考三步: 递归的函数要干什么? 函数作用是判断传入的两个树是否镜像。 输入:TreeNode left, TreeNode right 输出:是:true,不是:false 递归停止的条件是什么? 左节点和右节点都为空 -> 倒底了都长得一样 ->true 左节点为空的时候右节点不为空,或反之 -> 长得不一样-> false 左右节点值不相等 -&gt..

2021-12-05 22:04:29 556

六维传感器UDP通信、六维传感器UDP通信

六维传感器UDP通信、六维传感器UDP通信、

2022-03-02

pdf转换器,免费 pdf转换器,免费 pdf转换器,免费

pdf转换器,免费 pdf转换器,免费 pdf转换器,免费

2022-02-24

六维力传感器的工业机器人末端重力补偿算法

六维力传感器的工业机器人末端重力补偿算法

2021-12-06

SOEM-EtherCAT-cia402-motorControl.zip

基于SOEM-EtherCAT-cia402-motorControl的电机控制代码

2021-01-12

typed_ast-1.4.0-cp36-cp36m-win_amd64.whl

Twisted-typed_ast-1.4.0-cp36-cp36m-win_amd64 Twisted-typed_ast-1.4.0-cp36-cp36m-win_amd64

2019-07-05

typed_ast-1.4.0-cp36-cp36m-win32.whl

Twisted-typed_ast-1.4.0-cp36-cp36m-win32.whl Twisted-typed_ast-1.4.0-cp36-cp36m-win32.whl

2019-07-05

typed_ast-1.4.0-cp37-cp37m-win32.whl

typed_ast-1.4.0-cp37-cp37m-win32.whl typed_ast-1.4.0-cp37-cp37m-win32.whl

2019-07-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除