- 博客(37)
- 资源 (5)
- 收藏
- 关注
原创 Linux Socket TCP处理粘包问题
下面例子中客户端不停给服务器发送8000个'0'接8000个'1',服务器需要不断接收并检查字节流是否满足这个格式。TCP协议由于有组合发包机制(多个send语句中的字节合并到一个包中),会出现粘包问题。
2024-08-01 14:22:05
366
原创 Bazel离线编译SPU
以及http_archive中的url可以指定为本地地址。下面给出/spu/bazel/repositories.bzl示例。本文介绍如何离线编译隐语的spu库,前提是依赖都已经下载好。
2024-04-26 16:41:36
405
原创 Bazel离线编译Yacl
Yacl是Secretflow的组件库。一般先删除.bazelversion官网的安装流程是下面一句话解决,事实上这个语句需要在线下载很多库安装。
2024-03-25 14:44:39
562
原创 隐语第1讲笔记--数据可信流通
滥用数据会导致严重后果,数据可信流通推动从运维信任走向技术信任。信任的基石:身份可确认,利益可依赖,能力有预期,行为有后果。数据以密态流通,保障全链路安全。
2024-03-18 21:03:34
297
原创 CMake编译Yacl
本文展示如何用CMake编译Yacl,前提是"*.proto"文件已经用Google protobuf编译好。本文还会解释如何链接Yacl的静态库。
2023-12-18 15:13:37
581
原创 关于Googletest框架的猜测
本文致力于猜测著名的开源库Googletest的主要框架,即“记录函数、执行所有测试”功能的实现。作者只是粗略浏览了Googletest的源码,所以只能给出一个可能的框架。下面以代码来描述Googletest的主要框架。核心类UnitTest记录需要测试的函数,源码似乎使用了Singleton,所以这里也模仿使用Singleton。一个关键的猜测是测试函数被封装成类,类的对象在实例化时执行注册,即让UnitTest记录这个类的指针。
2023-08-26 13:33:19
92
原创 STL limits文件
_INT_N(TYPE, BITSIZE, EXT, UEXT)同时处理TYPE和unsigned TYPE。numeric_limits主要用于萃取类型的比特数、符号类型,并据此给出最大最小值。BITSIZE是比特数,2136/643是log2(10)。
2023-05-05 14:41:33
90
原创 NTL(Number Theory Library)源码剖析(1.2)__内存管理
下面所有内容在命名空间NTL_NAMESPACE中,即夹在NTL_OPEN_NNS和NTL_CLOSE_NNS中。先列出用于析构的函数。所以在NTL_VECTOR_HEADER_SIZE占16字节。下面假设在64位windows中long占4字节,
2023-04-13 20:32:03
195
原创 NTL(Number Theory Library)源码剖析_文件概述
tool: 定义常用宏,例如NTL_TLS_GLOBAL_DECL(type,var)实际上定义了一个具有线程存储期的静态变量var,类型为type。本文给出NTL源码中src和include文件夹中的文件的概述。ctools: 定义常用宏,这些宏作为工具。config: 配置一些标识符。lip: 定义基本运算。
2023-04-12 21:19:24
464
原创 FFT实现的高精度乘法
这篇笔记很好地解释了FFT用于高精度乘法的原理,首先阐述FFT如何处理多项式,再把大整数看成多项式。这里不赘述离散傅里叶变换DFT,FFT的一种解释见。
2023-02-04 14:07:06
602
原创 NTL(Number Theory Library)源码剖析(2)__基本运算
本文讲解NTL库中的基本运算代码。下面是高精度加法函数,b相当于进位标志,先把b加到rp,把ap的低n个_ntl_limb_t加到rp. 返回需要加到更高位的b.. 尽管每个数据单元_ntl_limb_t占32位,但实际只用低30位。_ntl_limb_t_ptr所指内存的格式详见我的源码剖析系列文章。本文讲解NTL库中的基本运算代码。NTL_LIMB_MASK在我的计算机上是32位的。,下面的CLIP函数即截取a的低30位。
2022-11-24 21:41:34
423
原创 NTL(Number Theory Library)源码剖析(1.1)__内存管理
本文讲解NTL源码中关于内存管理的部分。ntl_gbigint_body用于管理存储big integer的空间,alloc_取值最低位是frozen_flag,第1位为continue_flag,(alloc_ >> 2)表示分配的_ntl_limb_t的个数。size_表示使用的_ntl_limb_t个数。本讲解NTL源码中关于内存管理的部分,下面提到源码文件a.h时同时指a.cpp。一个二进制数最低位为第0位。主要在中。_ntl_limb_t用于表示数据单元。下面函数用于释放内存。
2022-11-23 19:49:36
1115
原创 安装NTL: A Library for doing Number Theory
官网链接下面介绍使用Windows系统的Visual Studio软件的NTL安装使用教程。在不全面了解这个库的情况下,可以把库的源文件都编译为静态库来使用。
2022-11-12 20:47:21
872
原创 Matlab写Excel文件
writetable(T, filename)表示把表格T写入文件filename. 后面的参数为'Name', 'Value'对,比如Sheet参数为表的序号,Range参数为写入开始的单元格。本文介绍Matlab写Excel文档的方法。主要方法是直接调用writetable函数。调用之前先构建好table的内容。其中Index, A, B是表格的3列。table函数可以接受若干个列向量组成表格。............
2022-08-30 10:48:46
2807
原创 解析Simulink Coder生成的C代码
关键的2个函数是SingleSubsystem_step, SingleSubsystem_initialize. 前者是仿真的每一步要执行的函数,后者是初始化函数。以上代码列出并不是直接从Simulink生成的代码中复制过来的,有一点点修改。首先SingleSubsystem_M_ 全局变量,保存仿真过程中的模型整体数据,其实就是为了控制模型的仿真步数。这个函数先把SingleSubsystem_M_清零,然后将结束时间设置为10.0,步长为0.2,这2个数据都可以在模型中设置。...
2022-08-22 17:55:15
2199
5
原创 Matlab appdesigner树控件
表示创建1个parent的子结点,并返回这个子结点对象。这种结点具有属性Text, NodeData, Icon,分别表示在窗口中显示的文字、含在子结点中的数据(不会在窗口显示出来)、显示出来的图标。uitree( Figure )表示在窗口Figure中生成一棵树,并返回树这个对象。树本身可以看成是根节点,但是这个根结点不会在窗口中显示出来。函数ButtonPushed()表示按下按键就生成结点,TreeSelectionChanged()表示鼠标选择树结点时应该执行的内容。这里我把结点的数据输出出来。.
2022-08-18 17:53:00
4339
原创 Matlab脚本创建simulink模型
add_block也没有指定位置的参数。当然可以通过get_param([Model_Name'/Pulse1'],'Position')查看位置参数,用的是Windows默认坐标系,即左上角是原点,向右是x轴,向下是y轴。本文介绍如何用simulink脚本全自动创建simulink模型。封装子系统的关键是把子系统看成1个模块,注意在子系统中加线格式为。如果想要封装一些已存在的模块,用下列代码。或者整个子系统内部模块再封装为子系统。运行simulink模型仿真的语句为。完整的封装子系统例子如下。......
2022-08-01 14:23:48
5232
原创 Matlab写Word文档
注意有多个字符串分开输出时,需要令Word.Selection.Start=Word.Selection.End或Word.Selection.Start=Doc.Content.End.否则Start不会变化,再写字符串会覆盖之前的内容。到底用哪个End,取决于上1个操作用的是Word还是Doc.比如插图是Doc的操作,就用Word.Selection.Start=Doc.Content.End.表格的行、列编号都从1开始。......
2022-07-23 19:06:51
3854
原创 Simulink Autosar component designer
注意AdaptivePlatform和ClassicPlatform的区别,前者是面向服务的平台,后者是面向信号的平台。生成代码的操作如下点击App->Autosarcomponentdesigner.点击Settings->C/C++codegenerationsettings.由于我们用的是adaptiveplatform,系统目标文件改为autosar_adaptive.tlc,工具链为Autosar_Adaptive|CMake,总之尽量选有adaptive的选项。......
2022-07-21 17:53:50
823
原创 Panel Designer教程
在CANoe中有Panel Designer,用于绘制面板,用法和Microsoft Foundation Class(MFC)非常相似,我猜测CANoe软件是使用MFC开发的。在Home->Views中可以调出一些窗口: Symbol explorer, Tool Box, Properties, Output Window. 在这个界面可以浏览signal, message, node. 并且可以拖拽变量到工作区的控件,使得变量和控件关联起来。...............
2022-07-12 17:31:18
2439
原创 Overloaded resolution(多载化决议程序)
多载化决议是在STL实现中的一种技术,例如有多个同名函数实现相似的功能,甚至参数列表难以区分(考虑模板函数)。要区分这些函数使得编译通过,修改函数名不是一种好方法,更好的方法是设置过个标记,增加一个参数接收标记,通过标记来决定用哪个函数。这里会输出T1T3这里T2继承T1,所以对T2的调用转到了对T1的调用。但是如果把注释取消,则会输出T2..........
2022-07-10 22:56:16
152
原创 Winsock(4) UDP
Just as most connection-oriented communication is also streaming, connectionless communication is almost always message-based. Thus, there are some considerations when you're sending and receiving data.
2022-06-22 14:15:40
92
原创 Winsock(3) UDP
Teach you how to construct connectionless communication, such as UDP.
2022-06-21 22:33:31
172
原创 Winsock(2) TCP Client
This is about basic knowledge of TCP client in Windows socket programming.
2022-06-18 10:52:56
513
原创 Winsock(1) TCP Server
This is an article about basic knowledge of Windows socket programing.
2022-06-16 10:22:28
428
原创 Windows窗口应用入门
// WindowsProject1.cpp : 定义应用程序的入口点。//#include "framework.h"#include "WindowsProject1.h"#define MAX_LOADSTRING 100// 全局变量:HINSTANCE hInst; // 当前实例WCHAR szTitle[MAX_LOADSTRING]; // 标题栏文本WCHAR szWin.
2022-03-05 13:36:03
290
用Bazel编译项目,链接隐语Yacl库的示例
2024-06-24
Advanced Encryption Standard
2023-04-05
TCP客户端:与网站建立TCP连接
2022-06-18
MFC模态窗口、非模态窗口、树控件的使用
2022-06-11
MFC统计窗口处理ON_PAINT消息次数以及鼠标左键按下时位置、键盘按下的按键并输出在窗口。
2022-06-05
Windows窗口程序发送消息WM_PAINT的时机的实验
2022-06-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人