自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

安辰的博客

骑着骆驼写代码

  • 博客(105)
  • 资源 (4)
  • 收藏
  • 关注

原创 机器学习实战课后习题(八)

机器学习实战课后习题第八章答案课本:handson-ml21.减少数据集维度的主要动机是什么?主要缺点是什么?1.降维的主要动机是:为了加速后续的训练算法(在某些情况下,也可能为了消除噪声和冗余特征,使训练算法性能更好)。为了将数据可视化,并从中获得洞见,了解最重要的特征。为了节省空间(压缩)。主要的弊端是:丢失部分信息,可能使后续训练算法的性能降低。可能是计算密集型的。为机器学习流水线增添了些许复杂度。转换后的特征往往难以解释。2.维度的诅咒是什么?答:维度的诅咒是指许多在

2021-12-05 13:44:24 1830

原创 机器学习实战课后习题(四)

机器学习实战课后答案handson-ml2

2021-12-05 13:30:31 2600 2

原创 模式识别(1)协方差矩阵相关和K-means聚类算法实现(含源码)

模式识别实验一实验一、协方差矩阵和矩阵特征值、特征向量的计算一、协方差部分1.协方差的定义协方差在概率论和统计学中用于衡量两个变量的总体误差。而方差是协方差的一种特殊情况,即当两个变量是相同的情况。 协方差表示的是两个变量的总体的误差,这与只表示一个变量误差的方差不同。计算公式:2.协方差矩阵3.代码实现1.2 特征值部分调用numpy中的函数来实现计算矩阵的特征值、特征向量函数解析1.特征值和特征向量2.代码部分实验二、K-means聚类算法实现2.1 算法理论

2021-12-04 10:52:23 2068

原创 机器学习实战课后习题(一)

机器学习实战课后题答案机器学习实战练习handson-ml2

2021-12-04 10:45:39 2121

原创 分布式通信机制

分布式通信机制这里主要介绍鸿蒙系统中的通信机制。主要分为下面两种基于话题的通信基于服务的通信1、基于话题的通信机制如图2-10所示,在该图中有两个节点:一个是发布者Talker,另一个是订阅者Listener.两个节点分别发布、订阅同一个话题,启动顺序没有强制要求,此处假设Talker 首先启动,可分成图中所示的七步来分析建立通信的详细过程。Talker注册Talker启动,通过某端口使用RPC向管理端注册发布者的信息,包含所发布正息的话题名: 管理端会将节点的注册信息加人注册列表中

2021-11-21 00:40:22 702

原创 个人博客梳理

个人博客梳理部分1、分布式软总线模块软总线下的auth认证机制trans service实现Cjson的介绍tcp_socket通信机制和套接字的介绍tcp_socket代码的实现和函数功能分析互斥锁和消息队列的介绍操作系统的适配层介绍和实现tcp_session机制介绍和实现trans_lock介绍和代码实现tcp会话的管理代码实现分布式软总线下trans_service模块总结coap_socket代码的实现2、安全模块RSA加密的介绍Aead、gcm、ccm相关知识点介

2021-11-20 23:38:22 2605

原创 鸿蒙源码分析(七十四)---安全子系统

比赛中提到的安全子系统模块huks是一种通用密钥管理服务,它为应用程序提供KeyStore和Crypto API,以执行密钥管理,加密和解密操作。包括密钥管理及密钥的密码学操作等功能。HUKS所管理的密钥可以由应用导入或者由应用调用HUKS接口生成。主要就是三大部分:HUKS SDK层: 提供HUKS API供应用调用。HUKS Service层: 实现HUKS密钥管理、存储等功能。HUKS Engine层: HUKS核心模块,负责密钥生成以及加解密等工作。对于L2设备,该部分模块在商用场景下必须

2021-11-12 17:01:38 5371

原创 鸿蒙源码分析(五十三)

内存适配器memory_adapter.c该部分代码位于分布式调度模块下,samgr文件夹下面。该部分代码只有两个函数,分别是空间的事情和释放。基本原理就是对malloc和free函数进行了封装。该函数的具体使用情况在该模块下没有出现代码分析该文件就俩个函数,是对malloc函数和free函数的简单封装//该文件主要用来申请空间void *SAMGR_Malloc(uint32 size){ if (size == 0) { return NULL; }

2021-10-31 11:22:41 620

原创 鸿蒙源码分析(七十二)

几句话说说三大模块本次比赛,我们主要集中精力写了三个模块涉及通信的软总线模块安全加密部分的安全密钥库模块任务调度使用的分布式调度模块软总线模块软总线模块,主要看了tcp通信部分的代码。看了message.c中的数据转换,看了socket.c中的通信部分,套接字的部分现在还记忆有新。tcp/udp协议的理解,三次握手……种种概念,其中也有coap协议的理解。安全模块这一部分,就我个人感觉而言是我最喜欢的模块,也是难度最高的模块。这一部分,有很多数学加密知识,这是最吸引我的。那些数据的加

2021-10-31 00:37:24 1671

原创 鸿蒙源码分析(七十一)

最后还是想说一下消息队列之前的文章消息队列之前提到的基本概念消息队列,是一种常用于任务间通信的数据结构。队列接收来自任务或中断的不固定长度消息,并根据不同的接口确定传递的消息是否存放在队列空间中。任务能够从队列里面读取消息,当队列中的消息为空时,挂起读取任务;当队列中有新消息时,挂起的读取任务被唤醒并处理新消息。任务也能够往队列里写入消息,当队列已经写满消息时,挂起写入任务;当队列中有空闲消息节点时,挂起的写入任务被唤醒并写入消息。如果将读队列和写队列的超时时间设置为0,则不会挂起任务,接口会直

2021-10-30 23:05:02 520

原创 鸿蒙源码分析(七十)

service和feature介绍分布式任务调度中常常出现这两个概念——service和feature。这一片我们主要介绍这两个概念。对分布式Service和Feature进行注册,注册Feature之前需要注册一个与之同名的Service,Feature才能注册成功。这里面存在一个从属关系,就是feature可以理解为一个子功能,挂在service下面service篇1、service的定义g_distributedService是一个全局对象static DistributedService

2021-10-30 21:15:08 1262

原创 鸿蒙源码分析(六十九)

service剩下函数分析我们知道该模块下经常出现的任务概念,这里我们也可以理解为消息。这里有消息的处理函数。任务或者消息通过iunknown接口发送,这个函数就是默认的处理该接口发送过来的消息。先根据参数identity来判断身份是否合法。如果合法调用相应的函数来处理消息。其中还需要判断是service还是feature,根据不同情况调用不同处理函数。参数参数:serviceImpl:服务实例identity:身份信息标识msg:消息数据void DEFAULT_MessageHandl

2021-10-30 15:18:33 441

原创 鸿蒙源码分析(六十八)--service代码

service代码分析主要分析service部分代码和service_impl.h相关结构体文件位置distributedschedule_samgr_lite\samgr\source\service.c头文件注释传送门service.h注释service_impl.h相关结构体的支撑服务实例//服务的实例对象typedef struct ServiceImpl ServiceImpl;struct ServiceImpl { Service *service;//指定服务

2021-10-30 12:24:51 536

原创 service代码分析——从头文件开始

service.h代码分析这里主要是说明一些和服务相关的结构体,一些任务相关的配置结构体文件位置:distributedschedule_samgr_lite\interfaces\kits\samgr\service.h结构体介绍下面是一些结构体的介绍任务类型这个就是一个共用体,枚举所有的任务task类型有哪些。typedef enum TaskType { //根据服务的优先级共享任务 SHARED_TASK = 0, //服务独占的任务 SINGLE_TA

2021-10-30 11:32:51 439

原创 客户端代理

进程间通信代码default_client.c本篇主要是一些客户端代理相关代码,主要是代理的创建,代理中服务名和特征名的获取等文件路径:\distributedschedule_samgr_lite\samgr_endpoint\source\default_client.c数据结构的铺垫客户端这部分的的实现,需要一些结构体来支撑saname主要是存放服务和feature的name//标识服务名称和功能名称struct SaName { const char *service;

2021-10-29 00:38:32 1028

原创 令牌桶算法原理

token_bucket令牌桶算法原理讲在原理之前我们今天主要是分析令牌桶算法,分析之前我们先介绍一下使用该算法的背景。限流每个API接口都是有访问上限的,当访问频率或者并发量超过其承受范围时候,我们就必须考虑限流来保证接口的可用性或者降级可用性.即接口也需要安装上保险丝,以防止非预期的请求对系统压力过大而引起的系统瘫痪.通常的策略就是拒绝多余的访问,或者让多余的访问排队等待服务,或者引流.如果要准确的控制QPS,简单的做法是维护一个单位时间内的Counter,如判断单位时间已经过去,则将Cou

2021-10-27 17:18:27 5216 2

原创 鸿蒙源码分析(六十六)

令牌桶代码介绍token_bucket主要是令牌桶相关处理,本篇博客主要是分析一下令牌桶代码,理论知识见下篇博客。令牌桶理论介绍理论知识。(占个位置,待会传)先从头文件开始头文件是相关结构体的申明,我们先看最重要的结构体TokenBucket,这个就是最基础的令牌桶。主要有下面几个属性rate:这个参数是指令牌生成速度的指标burst:我们可以看作是桶的大小last:是指消息传送时候最后一个消息的时间used:当前正在使用的桶#define TOKEN_PRE_MSG 1000ty

2021-10-27 11:57:45 324

原创 鸿蒙源码分析(六十七)

客户端与服务端订阅的介绍今天主要是结合分布式任务调度模块下消息播报模块的代码,目前市场上比较出名的定于机制有redis机制,下面我们结合redis机制简单先给大家介绍一下订阅和发布。大家要是想看相关代码请看这里互斥锁介绍pubsubfeature代码订阅和发布机制当一个客户端通过 PUBLISH 命令向订阅者发送信息的时候,我们称这个客户端为发布者(publisher)。而当一个客户端使用 SUBSCRIBE 或者 PSUBSCRIBE 命令接收信息的时候,我们称这个客户端为订阅者(subsc

2021-10-25 22:44:28 444

原创 鸿蒙源码分析(六十六)

分布式任务调度下的samgr文件夹整体把握本篇我们主要来分析一下samgr该文件夹在这里起到的作用,按照官方文档中的介绍,samgr应该是起到管理系统资源的作用,这里主要是接口的调用,消息队列的实现,消息的收发,打包,解包以及服务的实现先从整体文件夹开始Samgr文件夹adapter 这里是一些数据结构的定义cmsis:消息队列,WDT,等的设置memory_adapter:内存适配,主要是空间的申请和释放queue_adapter:队列适配thread_adapter:线程适配ti

2021-10-22 22:55:48 453

原创 鸿蒙源码分析(六十五)

任务or线程?经过分析take_manager代码,我们发现任务的出现常常伴随着线程,任务池的工作和线程的工作原理有一定的相似度,我们今天分析一下这两者的区别。鸿蒙中任务就是一种线程,二者本质上没有区别,只是在不同的应用环境下有不一样的名字下面附上任务的定义代码typedef struct { VOID *stackPointer; /**< Task stack pointer */ //内核态栈指针,SP位置,切换任务时先保存上下文并指向TaskCo

2021-10-21 22:14:14 598

原创 鸿蒙源码分析(六十四)

take_manager.c代码分析线程通信代码解释这里就是监控消息队列中是否有消息,如果有便将消息提取出来。否则就持续监控;当消息提取出来还给查看消息的type是否为EXIT,如果是,则该进程可能要退出或者注销。//这里也是监视进程变量,就是从消息队列中提取消息static void *TaskEntry(void *argv){ ServiceImpl *serviceImpl = NULL; //定义一个服务实例 THREAD_SetThreadLocal(argv

2021-10-21 21:19:19 193

原创 weka过滤器介绍

作业三、所有Filter介绍下面将罗列weka中所有filter介绍AllFilter 一个实例过滤器,它不经过修改就通过所有实例。主要用于测试目标目的。MultiFilter: 连续应用多个过滤器。如果所有提供的过滤器都是StreamableFilters,它也将作为一个可流过滤器。RenameRalation: 允许更改一组实例的关系名称的筛选器。有监督:属性FilterAddClassification:用于将分类、类分布和错误标志添加到具有分类器的数据集的过滤器。分类器要么根据数

2021-10-15 21:58:47 1974

原创 鸿蒙源码分析(六十三)

message.c分析相关知识代码部分Provides message communication APIs that help you to implement asynchronous functions

2021-10-15 11:18:05 473

原创 鸿蒙源码分析(六十二)

iunknown.c文件文件主要目的为系统功能的外部功能提供基类和默认实现文件路径:ddistributedschedule_samgr_lite\samgr\source\iunknown.c代码部分1.IUNKNOWN_AddRef函数功能:添加一个引用计数#define OLD_VERSION 0//添加一个引用计数int IUNKNOWN_AddRef(IUnknown *iUnknown){ if (iUnknown == NULL) { return E

2021-10-07 11:09:42 289

原创 鸿蒙源码分析(六十一)

feature.c文件分析接口相关使用文件知识分享Feature:开发功能时,需要实现的功能的生命周期接口。IUnknown:基于IUnknown开发服务或功能的对外接口。特征实施结构体的组成struct FeatureImpl { Feature *feature; IUnknown *iUnknown;};这里的结构体有两个元素组成,一个是feature生命周期元素,另一个是iUnknown接口这个文件主要功能就是一些接口的添加和获取代码部分1.SAMGR_Add

2021-10-06 22:50:00 189

原创 鸿蒙源码分析(六十)

common.c文件这里的common.c是在samgr下面source一个子文件,samgr的作用是Manages system capabilities,也就是管理系统功能,它主要提供面向服务的体系结构(SOA)的开发框架基础。还提供了服务的基本模型、特性模型、功能模型和注册模型以及发现功能,我们还可以基于samgr框架节构开发自己的接口等功能,而common在里扮演什么角色呢?--------就是提供Samgr和外部模块的常用对象和函数,具体一点就是这个文件提供了简化的矢量容器和向下转换函数。背景

2021-10-05 13:31:12 246

原创 鸿蒙源码分析(五十九)

samgr中注册表api解释这个文件都是些对外的调用接口api,大致的变量指向api都在代码中注释。都是cortex-A核进程间服务调用的对外接口定义。Provider: 服务的提供者,为系统提供能力(对外接口)。Consumer: 服务的消费者,调用服务提供的功能(对外接口)。Samgr: 作为中介者,管理Provider提供的能力,同时帮助Consumer发现Provider的能力。SamgrLite: 主要提供服务的注册与发现能力。Service: 开发服务时,需要实现的服务的生命周期接口

2021-10-01 11:59:13 215

原创 鸿蒙源码分析(五十八)

分布式调度之lock_free_qunne.c介绍这一片主要是介绍lock_free_quene.c中的代码知识。lock_free是一种线程中的无锁安全算法。无锁编程是指在不使用锁的情况下,在多线程环境下实现多变量的同步。即在没有线程阻塞的情况下实现同步。这样可以避免竞态、死锁等问题。Lock-free 算法的基础是 CAS (Compareand-Swap) 原子操作。当某个地址的原始值等于某个比较值时,把值改成新值,无论有否修改,返回这个地址的原始值。目前的cpu 支持最多64位的CAS。并且指

2021-10-01 11:20:33 271

原创 鸿蒙源码分析(五十七)

hks_storage.c代码分析这里添加密钥节点信息通过新申请一个密钥节点,申请缓冲区,指定一个偏置信息将buffer中写进节点,然后节点指针偏移(自增运算一次)在读进缓冲区,相当于节点多了一位,主要是靠这里的在自增运算实现。密钥节点的减少原理类似,这里就不赘述了//添加密钥节点static int32_t hks_add_key_count(void){ uint8_t *buffer = hks_get_buffer(); if (buffer == NULL)

2021-09-30 00:25:45 428

原创 鸿蒙源码分析(五十六)

WDT相关函数的定义该文件主要是在time_adapter.c中定义,里面是WDT相关函数的封装(看门狗)知识介绍看门狗定时器(WDT,Watch Dog Timer)是单片机的一个组成部分,它实际上是一个计数器,一般给看门狗一个数字,程序开始运行后看门狗开始计数。如果程序运行正常,过一段时间CPU应发出指令让看门狗置零,重新开始计数。如果看门狗增加到设定值就认为程序没有正常工作,强制整个系统复位。工作原理: 使用时,WDT将递增,直到溢出,或称“超时”。除非处于休眠或空闲模式,WDT 超时会强制器

2021-09-23 11:50:43 271

原创 鸿蒙源码分析(五十四)

队列适配器的相关操作queue_adapter.c是一个和队列queue相关的文件,里面主要涉及到消息队列的创建等功能的实现。文件路径:distributedschedule_samgr_lite\samgr\adapter\cmsis\queue_adapter.c队列的作用:基于FreeRTOS的应用程序是由一系列独立或交互的任务构成的,每个任务都拥有自己相对独立的资源。FreeRTOS中大多数通信和同步都是基于队列实现的。通常队列被作为FIFO使用,即数据由队列尾写入,从队列首读出。

2021-09-22 20:46:21 157

原创 鸿蒙源码分析(五十二)

hks_storage.c代码分析本篇博客主要介绍内存中hash加密算法的实现,主要是一些内存的操作。对密钥和文件内存的交互进行实现。文件路径:security_huks\frameworks\huks_lite\source\hw_keystore_sdk\soft_service\hks_storage.c代码分析hks_calc_hash_sha512函数实现hash算法,基于SHA512算法。//计算hash算法 static int32_t hks_calc_hash_sha512(u

2021-09-15 21:36:46 210

原创 鸿蒙源码分析(五十一)

hks_storage.c 代码及其头文件分析由于本片代码篇幅过长,这里分多篇博客分析。该文件主要涉及内存中密钥的信息、状态、和一些算法的设置。文件路径头文件头文件主要是一些函数的声明、变量的宏定义以及部分结构体的说明。设计密钥在内存中的存放和数据的缓冲区定义#define HKS_KEY_INFO_RESERVE_NUMBER 2 //密钥信息保存的组数#define HKS_LOCAL_STORAGE_KEY_MAX_NUM 20 //本地密钥保存的最大数量#def

2021-09-13 21:39:56 294

原创 鸿蒙源码分析(五十五)

pub_sub_implement.c和其相关头文件分析文件功能:文件路径:一、头文件pub_sub_implement.h头文件主要是一些结构体和共用体的定义//MessageId德定义enum MessageID { MSG_PUBLISH = 1, MSG_BUTT};typedef struct PubSubImplement { INHERIT_IUNKNOWNENTRY(PubSubInterface); //一个接口 PubSubFeatur

2021-09-08 17:50:10 169

原创 鸿蒙源码分析(五十)

pub_sub_feature.c代码分析该文件主要功能文件路径一、背景知识1.结构体和宏定义消费节点结构体typedef struct ConsumerNode { UTILS_DL_LIST node; Consumer *consumer;} ConsumerNode;关系结构体typedef struct Relation { UTILS_DL_LIST node; //节点 ConsumerNode callbacks; ///回调的消费节点

2021-09-06 23:03:25 197

原创 鸿蒙源码分析(四十九)

broadcast_service.c文件分析该文件位于分布式系统模块下,主要是广播服务函数。文件路径代码分析一、相关结构体和宏定义Identity结构体struct Identity { /** Service ID */ int16 serviceId; //服务id /** Feature ID */ int16 featureId; //特征信息 /** Message queue ID */ MQueueId queueId; /

2021-09-05 22:04:43 151

原创 鸿蒙源码分析(四十八)

hks_file_operator.c文件分析该文件主要是鸿蒙当中文件的相关函数,主要涉及文件的读写删除,还有文件权限的赋值。以及文件路径读取,文件存在的判断等等相关功能。文件路径:security_huks\services\huks_standard\huks_service\main\os_dependency\posix\hks_file_operator.c一、代码分析获取文件名的函数(指的是全名)参数魏路径,文件名和带路径的文件全名,以及全名的长度//获取文件名,参数为路径,一个存放

2021-09-05 18:09:17 294

原创 鸿蒙源码分析(四十七)

鸿蒙轻内核M核的动态内存介绍芯片片内RAM大小无法满足要求,需要使用片外物理内存进行扩充。对于多段非连续性内存,需要内存管理模块统一管理,应用使用内存接口时不需要关注内存分配属于哪块物理内存,不感知多块内存。多段非连续性内存如下图所示:鸿蒙轻内核M核新增支持了多段非连续性内存区域,把多个非连续性内存逻辑上合一,用户不感知底层的不同内存块。1. 结构体和宏定义在文件kernel/include/los_memory.h中新增了结构体LosMemRegion用于维护多个非连续的内存区域,包含各个内存

2021-09-03 22:20:47 325

原创 鸿蒙源码分析(四十六)

hks_client_check.c代码分析该文件代码主要围绕check展开,全文都在check各种密钥的参数以及size和各种信息是否为空。文件路径一、代码注释该部分代码都是检查结构体的数据域、size域是否为空或是否为0。有一部分函数是基于其他检查函数的hks封装实现。//检查进程名和参数static int32_t CheckProcessNameAndKeyAliasSize(uint32_t processNameSize, uint32_t keyAliasSize){

2021-09-02 18:38:15 240

原创 鸿蒙源码分析(四十五)

hks_auth.c代码分析该文件主要涉及认证机制。文件路径security_huks\services\huks_standard\huks_engine\main\core\src\hks_auth.c代码注释结构体元素介绍//结构体的封装struct HksAuthPolicy { uint32_t authId; //标识id uint32_t policyCnt; //数量 uint32_t *policyTag; //tag的数组};初始化#ifnde

2021-08-31 18:58:49 259

my_sh_lessons .rar

本人上课用的脚本程序,大家不用下载

2021-04-15

凸性证明和仿射包仿射集证明.pdf

凸优化概念和结论的证明

2021-03-30

凸优化数学优化问题分类概述.pdf

凸优化分类概述

2021-03-25

c程序设计源程序word版.docx

相信很多人开始编程都是从c开始,这里有上百个教学源程序,为刚开始学习c语言的小伙伴们备足了福利。如果你也是小白,我相信他对你的c语言学习之路非常友好,非常有用!快点行动吧!

2020-04-11

空空如也

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

TA关注的人

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