自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

IT_Beijing_BIT的博客

共享知识,一起向未来

  • 博客(104)
  • 资源 (3)
  • 收藏
  • 关注

原创 C++并行处理支持库 之六

通过使用Futures标准库,我们可以获取异步任务返回值,捕获异步任务引发的异常。异步任务就是在独立线程中启动运行的函数。这些值以共享状态进行通信,其中异步任务可以写入其返回值,或存储异常,并且可以其他线程检查、等待或以其他方式操作,这些线程包含std::future或std::shared_future实例,而std::future或std::shared_future引用该共享状态。

2025-01-01 11:00:53 370

原创 C++并行处理支持库 之五

当控制权离开创建scoped_lock对象的作用域时,scoped_lock将被破坏,并释放互斥锁。锁定shared_lock会在共享模式下,锁定关联的共享mutex,要在独占模式下锁定它,可以使用std::unique_lock。scoped_lock类是一个mutex包装器,它提供了一种方便的RAII风格的机制,用于在作用域块的持续时间内,拥有零个或多个mutex。lock_guard 类是一个互斥锁包装器,它提供了一种方便的RAII样式机制,用于在作用域块的持续时间内,拥有互斥锁。

2025-01-01 09:01:06 907

原创 C++并行处理支持库 之四

条件变量是一个同步原语,允许多个线程相互通信。它允许一定数量的线程等待(可能超时)来自另一个线程的通知,它们可以继续。条件变量始终与互斥锁相关联。std::condition_variable 是一种与 std::mutex 一起使用的同步原语,用于阻止一个或多个线程,直到另一个线程修改共享变量(条件),并通知 std::condition_variable。获取 std::mutex(通常通过 std::lock_guard)。在拥有锁的情况下修改共享变量。

2024-12-31 12:34:42 874

原创 C++并行处理支持库 之三

互斥算法可防止多个线程同时访问共享资源。这可以防止数据竞争,并为线程之间的同步提供支持。

2024-12-31 03:17:28 895

原创 C++并行处理支持库 之二

std::atomic模板的每个实例化和完全特化都定义了一个原子类型。如果一个线程写入原子对象,而另一个线程从中读取,则行为是良定义的。此外,对原子对象的访问可以建立线程间同步,并按照 std::memory_order 指定的顺序,对非原子内存访问进行排序。原子操作是为细粒度操作提供的,允许无锁并发编程。每个原子操作对于涉及同一对象的任何其他原子操作都是不可分割的。std::atomic 既不可复制,也不可移动。下列代码说明几个atomicAPIs如何使用。原子对象不存在数据竞争。

2024-12-19 10:57:24 439

原创 C++并行处理支持库 之一

类线程代表单个执行线程。线程允许多个函数同时执行。线程在构造关联的线程对象后立即开始执行(等待任何操作系统调度延迟),从作为构造函数参数提供的顶级函数开始。顶级函数的返回值将被忽略,如果它通过抛出异常而终止,则调用 std::terminate。顶级函数可以通过 std::promise 或通过修改共享变量(这可能需要同步,请参阅 std::mutex 和 std::atomic)向调用者传达其返回值或异常。

2024-12-19 10:56:51 468

原创 C++动态内存管理 之一

在默认初始化范围 [first, last) ,指定的未初始化存储中构造 typename std::iterator_traits::value_type 类型的对象。该将 [first, last) 范围内的元素复制到从 d_first 开始的未初始化内存区域。如果包括policy参数,则按照policy执行。将元素从 [first, last) 范围移动到从 d_first 开始的未初始化内存区域。下面代码将初始化存储器区域到约定值。上述代码运行屏幕输出。上述代码运行屏幕输出。上述代码运行屏幕输出。

2024-12-03 12:49:15 796

原创 C++ 智能指针smart pointer 之二

当通过调用std::make_shared或std::allocate_shared创建shared_ptr时,控制块和托管对象的内存都是通过单个分配创建的。此函数调用的 std::shared_ptr 构造函数启用带有指向新构造的T类型对象的指针的 shared_from_this。std::shared_ptr 是一个智能指针,它通过指针保留对象的共享所有权。Shared_ptr 直接持有的指针是 get() 返回的指针,而控制块持有的指针/对象是当共享所有者数量为零时将被删除的指针/对象。

2024-12-03 12:48:32 1026

原创 BLDC与PMSM电机

由于采用永磁转子,它们还具有更高的扭矩、更小的机架尺寸和无转子电流,所有这些都是相对于交流感应电机 (AICM) 的优势。它们还可以使用钕磁铁,并且可以是外转子(定子被转子包围)、内转子(转子被定子包围)或轴向(转子和定子平坦且平行)。当 BLDC 电机的定子绕组连接到开关电路(或控制电路)时,它会为定子绕组供电。现在,转子磁体倾向于与通电的定子绕组(充当电磁体)对齐,一旦对齐,下一个定子绕组(定子电磁体)就会通电。定子的旋转磁场与转子的磁场相互作用,即转子极与定子的旋转磁场锁定,并开始以同步速度旋转。

2024-11-30 04:38:46 1220

原创 C++ 智能指针smart pointer 之一

如果T是某个基B的派生类,则 std::unique_ptr 可以隐式转换为 std::unique_ptr<B>。生成的 std::unique_ptr<B> 的默认删除器将使用 B 的删除运算符,从而导致未定义的行为,除非 B 的析构函数是虚拟的。std::unique_ptr 是一个智能指针,它通过指针拥有并管理另一个对象,并随后在 unique_ptr 超出范围时,处置该对象。下列程序实例说明如何释放std::unique_ptr指针和std::unique_ptr指向的对象。

2024-11-30 04:33:58 938

原创 Python库numpy之七

两个结构化数组之间的赋值,就好像将源元素转换为元组,然后赋值给目标元素一样。也就是说,源数组的第一个字段将赋值给目标数组的第一个字段,第二个字段赋值给目标数组的第二个字段,依此类推。两个结构化数组的字段名称不同,不影响赋值。具有不同字段数的结构化数组不能互相赋值。为结构化数组赋值的最简单方法是使用 python 元组。元组的元素从左到右赋值数组的连续字段。结构化数组也可以赋值给非结构化数组,只要结构化数据类型只有一个字段。赋值给结构化元素的标量将赋值给所有字段。非结构化数组赋值给结构化数组。

2024-10-29 13:53:40 657

原创 Python库numpy之六

该字典有两个必需的键,“名称”和“格式”,以及四个可选的键,“偏移量”,“域大小”,“对齐”和“标题”。在字段之间插入填充字节,以便每个字段的字节偏移量将是该字段对齐的倍数,对于简单数据类型,该对齐通常等于字段的字节大小。fieldname 是一个字符串(如果使用标题,则为元组,请参阅下面的字段标题),datatype 可以是可转换为数据类型的任何对象,shape 是指定子数组形状的整数元组。结构化数组是 ndarray,其数据类型是,更简单数据类型构成的,被命名的字段序列的组合。

2024-10-29 13:53:19 792

原创 Python库numpy之五

某些类型,例如 numpy.int_ 和 numpy.intp,具有不同的位数,具体取决于平台,例如 32 位与 64 位 CPU 架构。NumPy 知道 int 指的是 numpy.int_,bool 指的是 numpy.bool,float 指的是 numpy.float64,complex 指的是 numpy.complex128。以上都是固定宽度的数据类型。可以使用 numpy 顶级API中的标量类型创建具有指定 dtype 的数组,例如numpy.bool、numpy.float32 等。

2024-10-20 04:15:35 976

原创 Python库matplotlib之十二

bool, 如果为 True,则将启用拾取,并且如果鼠标事件位于artist上方,artist将触发拾取事件。设置 pickradius 将添加一个以点为单位的 epsilon 容差,如果其数据在鼠标事件的 epsilon 范围内,artist将触发一个事件。对于某些artist,如线条和补丁集合,artist可以向生成的拾取事件提供附加数据,例如,拾取事件的 epsilon 内的数据索引。函数, 如果选择器是可调用的,则它是用户提供的函数,用于确定artist是否被鼠标事件击中。

2024-10-19 07:58:26 457

原创 Python库matplotlib之十一

下列程序运行时,滚动鼠标的滚轮,on_scroll函数被调用,依据滚轮的滚动方向,参数w被加1,或减1。当鼠标进入Axes,特定的Axes中, timer控制sin的相位角,引起波形变化。下列程序通过处理figure和Axes进入和离开事件,控制sin函数的波形显示。参数w改变,引起sin波形变化。

2024-10-19 04:55:07 268

原创 Python库matplotlib之十

下列代码,当用户点击关闭窗口时,调用关闭回调函数on_close。这给程序员在窗口关闭之前,做一些cleanup工作, 比如,关闭文件,TCP/IP端口等。下列运行时,当用户点击鼠标的左键,一条竖线随鼠标移动;当用户点击右键时,竖线停止移动。再次点击左键,竖线再次随鼠标移动。下列程序检测四个键x,y,+ 和 -。x和y改变正弦曲线的画线方式和颜色, +和-改变正弦曲线的相位角。下列的例子通过连接移动和单击事件与绘图画布进行交互的例子。

2024-10-18 23:58:38 307

原创 Python库numpy之三

词法:numpy.eye(N, M=None, k=0, dtype=<class ‘float’>, order=‘C’, *, device=None, like=None)numpy.eye产生一个二维数组,对角线上的值为 1,其他位置的值为0。order,该参数类型是{‘C’, ‘F’}, 是可选的。dtype,该参数类型是data-type, 是可选的。like,该参数类型是array_like, 是可选的。M,该参数类型是int, 是可选的。k,该参数类型是int, 是可选的。

2024-10-17 00:32:02 1004

原创 Python库numpy之二

词法:numpy.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None, axis=0)仅当参数start,stop,或base是类数组时,才相关。词法:numpy.geomspace(start, stop, num=50, endpoint=True, dtype=None, axis=0)如果endpoint不是False,则stop是列的结束值。如果endpoint不是False,则stop是列的结束值。

2024-10-12 10:58:07 1088

原创 Python库numpy之一

词法:numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0, *, device=None)一维数组创建函数,例如numpy.linspace 和 numpy.arange,通常需要至少两个输入,start和stop。如果retstep为True,则该函数返回两个值,即 (samples, step),其中 step 是样本之间的间距。endpoint,该参数类型是bool, 是可选的。

2024-10-12 09:04:10 1102

原创 Python库matplotlib之九

ArtistAnimation是TimedAnimation的子类,它使用一组固定的Artist对象创建动画。Matplotlib基于其绘图功能,还提供了一个使用动画模块,生成动画的接口。动画是一系列帧,其中每个帧对应于图形上的一个图。artists是一个list,list的每个条目都是Artist对象的集合,它将在相应帧上可见。如果参数repeat为True,则它是连续动画运行之间的以毫秒为单位延迟。该参数确定,当帧序列完成时,动画是否重复。repeat,该参数类型是bool, 默认值为True。

2024-10-12 02:40:02 729

原创 Python库matplotlib之六

词法:matplotlib.animation.FuncAnimation(fig, func, frames=None, init_func=None, fargs=None, save_count=None, *, cache_frame_data=True, **kwargs)该函数的第一个参数将是frames参数的下一个值。在所有参数类型情况下,frames中的值只是简单地传递给用户提供的函数,因此可以是任何类型。blit == False,则返回值不被使用,并且在这种情况下可以被省略。

2024-10-11 23:58:17 1229

原创 Python库matplotlib之八

【代码】Python库matplotlib之八。

2024-10-09 09:18:58 247

原创 Python库matplotlib之七

使用参数labeldistance,分别改变改变楔形图标注位置;使用参数rotatelabels,改变楔形图标注的角度。每个楔形的分数面积由 x/sum(x) 给出。默认情况下,从 x 轴开始,逆时针绘制楔形。绘制饼图,并标记楔形图。要添加标签,将标签列表传递给labels参数。使用参数pctdistance,改变autopct 文本位置。将函数或格式字符串传递给 autopct 以标记切片。使用参数colors,设置 楔形图的颜色。

2024-10-09 09:18:20 675

原创 Python库pandas之七

不是有效的属性字典,因为“asdf”不是有效的HTML属性,即使它是有效的XML属性。该字典的键可以是整数或列标签,值是采用一个输入参数、单元格(而不是列)内容并返回转换后的内容的函数。用于解码网页的编码。是一个有效的属性字典,因为“id”HTML 标签属性对于本文档中的任何HTML标签来说,都是有效的 HTML 属性。flavor,该参数类型是{“lxml”, “html5lib”, “bs4”} 或i类似list, 是可选的。该参数是用于制作列标题的行,该参数也可以用于MultiIndex的行列表。

2024-10-07 05:56:07 1045

转载 Python库pandas之五

如果“infer”和“path_or_buf”是类似路径,则检测以下扩展名的压缩:“.gz”、“.bz2”、“.zip”、“.xz”、“.zst”、“.tar” 、“.tar.gz”、“.tar.xz”或“.tar.bz2”。path_or_buf,该参数类型是字符串, 文件路径对象, 有类似文件特征的对象, 或None, 默认值为None。如果该参数是一个非二进制文件对象,则应使用 newline=‘’ 打开它,禁用通用换行符。mode,该参数类型是{‘w’, ‘x’, ‘a’}, 默认值为‘w’

2024-10-05 13:00:01 752

原创 Python库pandas之六

词法:pandas.read_sql(sql, con, index_col=None, coerce_float=True, params=None, parse_dates=None, columns=None, chunksize=None, dtype_backend=<no_default>, dtype=None)如果传递的是表而不是查询,则忽略该参数。dtype_backend,该参数类型是{‘numpy_nullable’, ‘pyarrow’}, 默认值为‘numpy_nullable’

2024-10-05 00:08:48 844

原创 Python库pandas之四

如果“infer”和“path_or_buf”是类似路径,则检测以下扩展名的压缩:“.gz”、“.bz2”、“.zip”、“.xz”、“.zst”、“.tar” 、“.tar.gz”、“.tar.xz”或“.tar.bz2”,否则不压缩。也可以是字典,该字典包含 'method’键,而且该键的值为 {‘zip’, ‘gzip’, ‘bz2’, ‘zstd’, ‘xz’, ‘tar’}。‘table’ : 字典,值有 {‘schema’: {schema}, ‘data’: {data}} 的形式。

2024-10-03 11:02:31 1277

原创 Python库pandas之二

如果 data 是包含一个或多个 Series的字典,Series可能具有不同数据类型,则 copy=False 将确保不会复制这些输入。词法:pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=None)当数据没有列标签时,该参数用于结果帧的列标签,默认为RangeIndex(0, 1, 2, …算术运算对齐行和列。data,该参数类型是ndarray, Iterable, dict, 或者DataFrame。

2024-10-03 04:52:31 1148

原创 Python库pandas之三

例如,有效的类似列表的 usecols 参数将为 [0, 1, 2] 或 [‘foo’, ‘bar’, ‘baz’]。要从保留元素顺序的数据实例化 DataFrame,请对 [‘foo’, ‘bar’ 中的列使用 pd.read_csv(data, usecols=[‘foo’, ‘bar’])[[‘foo’, ‘bar’]] '] 顺序或 pd.read_csv(data, usecols=[‘foo’, ‘bar’])[[‘bar’, ‘foo’]] 为 [‘bar’, ‘foo’] 顺序。

2024-10-03 00:06:32 1464

原创 Python库pandas之一

标签不必是唯一的,但必须是可哈希类型。该对象支持基于整数和基于标签的索引,并提供了许多用于执行涉及索引的操作的方法。词法:pandas.Series(data=None, index=None, dtype=None, name=None, copy=None, fastpath=<no_default>)系列(+、-、/、*、**)之间的运算,根据关联的索引值,进行对齐, 它们不需要具有相同的长度。参数data是字典的Series。参数data是元组的Series。参数data是列表的Series。

2024-09-30 06:24:42 1273

原创 Python库matplotlib之五

词法:RangeSlider(ax, label, valmin, valmax, valinit=None, valfmt=None, closedmin=True, closedmax=True, dragging=True, valstep=None, orientation=‘horizontal’, track_color=‘lightgrey’, handle_style=None, **kwargs)创建一个滑动条,定义包含在ax中的 [valmin, valmax] 的范围。

2024-09-30 00:28:31 1143

原创 Python库matplotlib之四

词法:matplotlib.widgets.RadioButtons(ax, labels, active=0, activecolor=None, *, useblit=True, label_props=None, radio_props=None)Matplotlib不会试图布局这些小部件,所以,您必须自己决定Axes的宽度和高度,以便容纳这些小部件。在 Axes中创建从 valmin 到 valmax 的滑动条。为了使滑动条保持响应,必须维护对其的引用。构造一个代表浮点范围的滑动条。

2024-09-29 15:13:28 1827

原创 Python库matplotlib之三

Matplotlib不会试图布局这些小部件,所以,您必须自己决定Axes的宽度和高度,以便容纳这些小部件。词法:matplotlib.widgets.Button(ax, label, image=None, color=‘0.85’, hovercolor=‘0.95’, *, useblit=True)这是必要的,因为回调登记仅维护函数的弱引用,这些函数是小部件的成员函数。如果没有对小部件对象的引用,它可能会被垃圾收集,这将断开回调。为了始终保持检查按钮的响应,必须保留对此对象的引用。

2024-09-29 13:01:54 1113

原创 Python库matplotlib之二

如果 num 是 int,则它将用于Figure.number 属性,否则,将使用自动生成的整数值(从 1 开始,并针对每个新图形递增)。projection,{None, ‘aitoff’, ‘hammer’, ‘lambert’, ‘mollweide’, ‘polar’, ‘rectilinear’, str}, 是可选参数。constrained_layout,变量类型是bool,默认值:rcParams[“figure.constrained_layout.use”](默认值:False)

2024-09-29 03:14:40 811

原创 Python库matplotlib之一

原因是,如果只给plot提供单个列表,或数组,matplotlib会假定它是y值的序列,并自动为生成 x 值。词法:matplotlib.pyplot.plot(*args, scalex=True, scaley=True, data=None, **kwargs)在 matplotlib.pyplot 中,各种状态在函数调用之间保留,以便它跟踪当前图形和绘图区域等内容,并且绘图函数定向到当前Axes。如果给plot提供两个列表,或数组,则可以绘制x与y的关系图,第一个数组是x, 第二数组树y。

2024-09-26 09:37:12 406

原创 IPMI与服务器管理

IPMI(Intelligent Platform Management Interface)是一组基于硬件的平台管理系统的标准化规范,使集中控制和监控服务器成为可能。IPMI 是带外 (OOB) 管理的一种形式,这意味着无论服务器位置,或安装的什么操作系统,它都可以执行管理任务。IPMI 由服务器的 BMC(底板管理控制器)使用,BMC 是用于提供 OOB 管理的嵌入式计算机。BMC 可以访问和控制服务器的资源,包括内存、电源和存储。此外,它还支持远程启动和服务器环境监控。

2024-09-26 04:31:04 979

原创 python多进程程序设计 之六

函数multiprocessing.Manager()返回一个已启动的 SyncManager 对象,该对象可用于在进程之间共享对象。返回的管理器对象对应于生成的子进程,并具有创建共享对象,并返回相应代理的方法。Managers提供了一种创建可以在不同进程之间共享的数据的方法,包括通过网络在不同机器上运行的进程之间共享。其他进程可以使用代理访问共享对象。创建BaseManager后,应调用start() 或 get_server().serve_forever(),以确保管理器对象引用已启动的管理器进程。

2024-09-23 11:28:42 1200

原创 Python在AI中的应用--使用决策树进行文本分类

决策树是一种非参数监督学习算法,可用于分类和回归任务。它具有分层的树结构,由根节点、分支、内部节点和叶节点组成。看下列的一个例子,假设您正在尝试评估是否一个动物是家猫,您可以使用以下决策规则来做出选择:这种类型的流程图结构还创建了一种易于理解的决策表示形式,使组织中的不同团队能够更好地理解做出决策的原因。决策树学习采用分而治之的策略,通过进行贪婪搜索,识别树内的最佳分裂点。然后以自上而下、递归的方式,重复此拆分过程,直到所有,或大多数记录都被分类到特定的类标签下。

2024-09-23 08:14:21 1363

原创 python多进程程序设计 之五

如果lock为False,那么对返回对象的访问,将不会自动受到锁的保护,因此它不一定是“进程安全的”。如果lock为False,那么,对返回对象的访问将不会自动受到锁的保护,因此它不一定是“进程安全的”。typecode_or_type 确定返回对象的类型:它是 ctypes 类型,或数组模块使用的一个字符的类型代码。这个代码在两个进程之间共享一个结构数组,因为使用了RawArray,RawArray不包含用于进程同步的锁,所以增加一个锁变量,用来同步两个进程对数组的存取。读/写值可能是非原子的。

2024-09-19 09:28:26 1738

原创 python多进程程序设计 之三

这意味着被唤醒的一个或多个线程,不会立即从其 wait() 调用中返回,而是仅在调用 notify() 或 notify_all() 的线程最终放弃锁的所有权时,返回。事件管理一个标志,可以使用 set() 方法将其设置为 true,并使用clear() 方法,将其重置为 false。事件对象管理一个内部标志,可以使用 set() 方法将其设置为 true,并使用clear() 方法将其重置为 false。随后,调用 wait() 的线程将阻塞,直到调用 set() 再次将内部标志设置为 true。

2024-09-19 09:27:31 1184

parallel programming.docx

介绍并行程序设计机制,以及如何在应用程序中使用

2021-03-22

cpp_type_convert.docx

C++中的数据类型,类之间的正确相互转换

2021-03-22

cpp11_Promise_Future.docx

介绍C++11提供的并行程序设计的任务方法。包括异步函数,future和promise,异步可调用包装器

2020-06-15

空空如也

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

TA关注的人

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