- 博客(662)
- 资源 (7)
- 收藏
- 关注
原创 【机器学习技术系列】FM系列算法详解(FM、FFM、DeepFM)
可解释性强。形式简单,训练速度快。表达能力有限只在处理二分类问题上优势明显。
2024-04-23 17:36:06 3753 1
原创 【深度学习技术系列】推荐系统-双塔模型基本原理与实践
双塔模型经典又简单,就是NLP领域的 query 和 document,推荐领域的 user 和 item,多模态检索领域的图像和文字等,都可以用双塔表示,分别把两个领域的特征编码成一个向量,然后向量相似度进行召回。较早使用双塔模型的是DSSM模型。将文本编码成对应低维向量,然后通过优化向量点积估值,得到合适的query和文档向量。线上通过query和文档的相似度进行文档的召回。推荐系统中使用的双塔模型结构如下:真实的推荐领域的大规模推荐系统,通常有百万到上亿的item和user。
2024-04-06 23:28:46 3561
原创 【深度学习技术系列】大模型基础组件 - Tokenizer
文章目录1. 前言2. 示例3. 对比4. 子词切分4.1 字节对编码(Byte-Pair Encoding, BPE)4.1.1 训练阶段4.1.2 推理阶段4.1.3 BBPE4.2 WordPiece4.2.1 训练阶段4.2.2 推理阶段4.3 Unigram4.3.1 训练阶段4.3.2 推理阶段4.4 SentencePiece4.4.1 byte回退5. 语法5.1 英文文本向量化5.2 对中文文本向量化参考1. 前言Tokenizer是一个用于向量化文本,将文本转换为序列的类。计算机在
2024-03-10 22:12:50 2298 1
原创 【深度学习技术系列】Bert生成向量实践
对于AI开发者的GitHub,提供了模型、数据集(文本|图像|音频|视频)、类库(Transformer|peft|accelerate)、教程等。社区HuggingFace是一个高速发展的社区,包括Meta、Google、Microsoft、Amazon在内的超过5000家组织机构在为HuggingFace开源社区贡献代码、数据集和模型。目前包括模型236,291个,数据集44,810个。刚开始大多数的模型和数据集是NLP方向的,但图像和语音的功能模型正在快速更新中。GitHub。
2024-03-10 19:40:02 1456
原创 【PyTorch】Pytorch 入门简介
PyTorch 是一个由Facebook的人工智能研究团队开发的,开源深度学习框架。2016年发布后,PyTorch很快就因其易用性、灵活性和强大的功能而在科研社区中广受欢迎。发布伊始:2016年Facebook的AI研究团队公开了PyTorch,其旨在提供一个快速、灵活且动态的深度学习框架。PyTorch的设计哲学与Python非常相似:易读性和间接性优于隐式的复杂性。PyTorch用Python语言编写,是Python的一种扩展。
2024-03-08 16:31:12 1314
原创 【Go】Go语言的介绍
连续栈策略在协程的栈空间不足时,调用newstack创建一块为原来大小两倍的栈空间,然后调用copystack将原来空间中所有内容复制到新开辟的栈空间中,将指向旧栈对应变量的指针重新指向新栈(想同变量在栈扩容前后地址发生变化),最后调用stackfree销毁并回收原来的栈空间。1) 分段栈:Go1.13之前栈扩容使用分段栈策略,如果栈空间不足调用newstack创建一个新的栈空间,但是新创建的栈空间和原来的栈空间不连续,协程多个栈空间之间用双向链表的形式串联,通过指针找到这些栈空间。
2024-03-08 10:31:54 881
原创 【前端vue】 mac搭建vue环境
sudo cnpm install vue-router vue-resource --save //vue 路由模块vue-router和网络请求模块vue-resource。sudo npm install webpack-dev-server@2.9.1//下载重装webpack-dev-serve。参考链接:https://jjxliu306.github.io/ng-form-element/dist/index.html。替换成 sudo vue init webpack vuedemo。
2024-03-07 09:08:54 1083
原创 【Go】Go语言入门
可以使用命令下载如果需要指定版本可以去官网下载: https://golang.google.cn/dl/,直接安装即可有时间的同学可以看看,go的学习文档: https://topgoer.cn/docs/golang/golang-1ccjbpfstsfi1。
2024-03-06 10:20:55 979 1
原创 [缓存 - tair] tair的基本知识点和架构设计
通过代理解决:对于正常的数据迁移来说,假设桶2,3,4的数据从DataServer A同步到DataServer B,其中2的数据已经迁移完成,3的数据正在迁移,4的数据还没迁移。当因为某台dataserver宕机导致的数据迁移时,客户端会收到ConfigServer发送过来的中间临时状态的路由表,表中会把宕机的DataServer所负责的bucket临时指派给具有其备份副本的DataServer来处理,此时,服务保持可用,但负载可能不均衡,当迁移完成后,才能重新达到一个新的负载均衡的状态。
2024-02-28 02:05:59 1805
原创 【AI.OS】深入解读阿里开源系统全图化引擎
看到这张图可能会有点懵,熟悉和使用过搜索推荐服务的同学可能都知道在线技术组件如DII、RTP、HA3、BE、IGraph,它们在不同场景发挥各自擅长的作用。那么AI.OS(Artificial Intelligence Online Serving) 是个啥概念?乍一看,是将搜索、推荐、广告、深度学习、信息流所应用到的技术组件融合成了一个体系,形成一个基础的引擎平台。仔细一琢磨,这么做是想干啥呢?带着这个问题一步一步往下看在这个组件的最下层是资源的管理,叫 Hippo,是一个非常高效的资源管理系统。
2024-02-27 21:44:24 2121 2
原创 阿里开源高性能搜索引擎 Havenask - Ha3
本文会重点介绍一下阿里系的搜索引擎中间件 Havenask(内部代号Ha3),在阿里内部支持了淘宝、天猫、菜鸟、优酷、高德、饿了么等在内的阿里搜索业务。Ha3 支持千亿级别数据实时检索、百万qps查询,百万TPS高时效性写入保障,毫秒级查询延迟和数据更新。开源地址:http://github.com/alibaba/havenask。
2024-02-24 12:10:42 2910
原创 [缓存 - redis] Redis的基本知识点 数据结构和常用操作命令
redis(remote dicitionary server)是一个高性能的key-value数据库,对数据库的操作是原子性的,采用C语言编写。Set 类型是一个无序并唯一的键值集合,它的存储顺序不会按照插入的先后顺序进行存储。Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。相对于列表,集合也有两个特点:无序、不可重复。
2024-02-21 01:49:14 1025
原创 [缓存] RingBuff 环形队列、环形缓冲区及有锁无锁实现
由于自旋锁不需要进行线程切换,所以它完全在用户态下实现,加锁开销低,但是由于其采用忙等待的策略,对于短期加锁来说没问题,但是长期锁定的时候就会导致CPU资源的大量消耗。如果读取数据的速度跟不上写入数据的速度,旧的数据将被新写入的数据覆盖。所以当互斥锁加锁失败的时候,就伴随着两次上下文切换的开销,而如果我们锁定的时间较短,可能上下文切换的时间会比锁定的时间还要长。由于自旋锁和互斥锁的失败策略不同,自旋锁采用忙等待的策略,而互斥锁采用线程切换的策略,由于策略不同,它们的应用场景也不同。
2024-02-20 03:33:47 1991
原创 第8章 融入实际应用
可见,编译器未成功地将GBK编码的“你好”转换为UTF-8的码值“你”(E4 BD A0)“好”(E5 A5 BD),原因是使用编译选项-finput-charset=utf-8指定代码文件编码为UTF-8,而实际上代码文件编码为GBK,导致编译器出现错误的认知。当编译器处理字符串时,可以通过前缀来判断字符串的编码类型,如果目标编码与原编码不同,则编译器会进行转换,比如C++11中的前缀u8表示目标编码为UTF-8的字符,如果代码文件采用的是GBK,编译器按照UTF-8去解析字符串常量,则可能会出现错误。
2024-02-16 21:58:06 857
原创 第3、4章 Kafka 生产者 和 消费者 ——向 Kafka 写入数据 和读取数据
点对点模型:适用于一对一的消息传递,具有高可靠性。发布/订阅模型:适用于广播消息给多个消费者,实现消息的广播。主题模型:适用于根据消息的主题进行灵活的过滤和匹配,处理复杂的消息路由需求。
2024-02-16 19:14:29 1746 1
原创 第2章 安装Kafka
num.recovery.threads.per.data.dir:每个目录的恢复线程数量,当服务器启动、重启、关闭时,都会使用线程池对日志目录下的分区进行处理,若每个目录下分区多恢复缓慢,建议加大这个值,kafka此时用于恢复分区的线程为:log.dir的目录数量*num.recovery.threads.per.data.dir,即log.dir指定了3个目录,而num.recovery.threads.per.data.dir为5,则总共启动15个线程。linger.ms:同一批次消息等待发送时间。
2024-02-16 02:29:09 790
原创 第1章 初识Kafka
消息被提交到磁盘,根据设置的保留规则进行保存。例如,一个包含了多 个微服务的网站,可以为页面视图创建一个单独的主题,所有服务都以相同的消息格式向 该主题写入数据。网站活动跟踪:网站的访问量,搜索量,或者其他用户的活动行为如注册,充值,支付,购买等行为可以发布到中心的topic,每种类型可以作为一个topic,这些信息流可以被消费者订阅实时处理、实时监控或者将数据流加载到Hadoop中进行离线处理等;,kafka有更好的吞吐量(每秒几十万),内置了分片、复制、容错机制,是大规模数据消息处理的更好的解决方案;
2024-02-16 00:02:14 886
原创 第7章 改变思考方式
捕获列表。在C++规范中也称为Lambda导入器, 捕获列表总是出现在Lambda函数的开始处。实际上,[]是Lambda引出符。编译器根据该引出符判断接下来的代码是否是Lambda函数,捕获列表能够捕捉上下文中的变量以供Lambda函数使用。参数列表。与普通函数的参数列表一致。如果不需要参数传递,则可以连同括号“()”一起省略。可变规格。mutable修饰符, 默认情况下Lambda函数总是一个const函数,mutable可以取消其常量性。在使用该修饰符时,参数列表不可省略(即使参数为空)。
2024-02-15 21:31:27 640
原创 第6章 提高性能和操作硬件的能力
A>中A是 (非类型的)模板参数包,它可以接收分离多个非类型参数作为模板参数,具体来说,Pack<1,0,2>会将A推导为整值1,0,2的pack,而B<A…有一个比较特殊的原子类型是 atomic_flag,因为 atomic_flag 与其他原子类型不同,它是无锁(lock_free)的,即线程对其访问不需要加锁,而其他的原子类型不一定是无锁的。A>中A是 (类型的)模板参数包,它可以接收任意多个类型参数作为模板参数,具体来说,Template<X,Y>会将A推导为X和Y类型的pack。
2024-02-15 15:22:16 638
原创 第5章 提高类型安全
智能指针的本质是 类模版 ,可以创建任意类型的指针对象,智能指针对象使用完毕之后,对象自动调用析构函数释放指针指向的资源。智能指针的出现主要是为了解决C++中内存泄漏的问题,用对象创建指针,对象生命周期结束后调用析构函数来释放指针指向的资源。不是线程安全的,虽然share_ptr 内部的引用计数是加锁且线程安全的,但是指向的内容在操作写的时候并不是线程安全的。share_ptr 是共享式的管理,利用内部的引用计数来计算当前指向指针资源的个数,当计数为0时候释放指针指向的资源。
2024-02-14 11:51:19 898
原创 第4章 新手易学
enum // 匿名枚举A,B,C,}test;union // 匿名联合体/共用体char* name;}test2;struct // 匿名结构体数组int d;}test3[10];int main()// 引用匿名强类型枚举的值return 0;
2024-02-14 01:01:59 943
原创 第3章 通用性【下】
POD : Plain Old Data 简单旧数据 指的是可以通过 简单内存复制 和传输的数据类型。POD对象可以通过memcpy或者其他等价操作进行复制,而且它们的内存布局是完全透明和可预测的。C++ 中POD类型可以分为两类:trivial 和 standard layout 类型分别可以通过如下判断Trivial类型Trivial类型是一种简单的类型,它没有用户定义的构造函数、析构函数或复制操作符,没有私有或保护的非静态成员,没有基类,也没有虚函数。
2024-02-13 20:57:50 700
原创 C++ 一文讲透内存分配
我们都知道C++中的内存管理是一个比较麻烦的事情,现在有个需求,需要在程序中记录主动申请的内存和主动释放的内存,以确保没有发生内存泄漏。程序在运行时,操作系统将可执行文件载入到计算机的内存中,成为一个进程。面试官:(笑)好吧,最后一个问题,咱们上面一直在讨论堆中的内存的分配和释放,请问一下,如果在栈上分配一块固定的内存?存放程序执行的机器指令,通常情况下,代码段是共享的,频繁执行的程序在内存中只有一个副本就可以。与data数据段不同的是,如果程序未运行,bss段的存储空间是不存在的,因而也不会有初始值。
2024-02-13 20:04:40 912
原创 第3章 通用性【上】
可以看到,std::forward模板函数对传入的参数进行强制类型转换,转换的目标类型符合引用折叠规则,因此左值参数最终转换后仍为左值,右值参数最终转成右值。完美转发实现了参数在传递过程中保持其值属性的功能,即若是左值,则传递之后仍然是左值,若是右值,则传递之后仍然是右值。答:在 C++11标准产生之前,是没有右值引用这个概念的,当时如果想要一个类型既能接收左值也能接收右值的话,需要用const左值引用,比如标准容器的 push_back 接口:void push_back (const T& val)。
2024-02-12 12:21:00 736
原创 mac下安装Elasticsearch实践
下载地址:elasticsearch打开找到config/目录下面的elasticsearch.yml配置文件,把安全认证开关从原先的true都改成false,实现免密登录访问即可,修改这两处都为false后:enabled:再次打开报错flase 拼写错误,应该是false。
2024-02-10 22:42:05 1995
原创 第1章 新标准的诞生
本文目录1 C++ 11比C++98/03 显著增强2 C++ 11 的理念3. 保持语言的稳定性和兼容性4. 更倾向于使用库而不是扩展语言来实现特性5. 更倾向于通用的而不是特殊的手段来实现特性6. 专家新手一概支持7. 增强类型的安全性8. 开发能够改变人们思维方式的特性9. 融入编程现实10.C ++11 的新关键字1 C++ 11比C++98/03 显著增强本地并行编程: 内存模型、线程、原子操作等支持泛型编程:初始化表达式、auto、declytype、移动语义系统编程:constex
2024-02-08 22:15:11 624
原创 第2章 保证稳定性和兼容性
如果用户重定义(#define)或#undef 了预 定义的宏,那么后果是“未定义” 的。因此在代码编写中,程序员应该注意避免自定义宏与 预定义宏同名的情况。返回所在函数的名字的预定义标识符func注意:预定义标识符_func_ 可以在类或者结构体中使用,但是不能当成参数默认值。struct Test{ // 允许void funcFail(){// 不允许// 参数声明_func_还未被定义1.3 _Pragma操作符#pragma once //告诉编译器头文件只被编译一次。
2024-02-08 21:48:10 594
原创 第1章 MySQL架构与历史
本章主要是讲解了MySQL的一个组织架构,包括存储引擎的一些关键设计和优缺点。对于MySQL的一个发展史也做了一个简单的介绍。
2024-02-07 23:06:12 974
原创 高性能MySQL概要
为了在技术的路上继续扬帆起航,用读书笔记的形式督促自己对MySQL进行一个系统的研究和学习。在进行读书笔记之前,先对整本书进行一个刚要性的概括,先梳理出脑图对后续的学习可以起到一个先总后分、承前启后的作用。第4章 Schema与数据类型优化。第1章 MySQL架构与历史。第7章 MySQL高性能特性。第11章 可扩展的MySQL。第16章 MySQL用户工具。第2章 MySQL基准测试。第13章 云端的MySQL。第5章 创建高性能的索引。第8章 优化服务器设置。第14章 应用层优化。
2024-02-07 20:14:50 145
原创 【网络代理】代理IP检测的知识
做网络的基本都知道代理,这个是肯定的,不管是用花刺还是猎手的网页代理,还是直接VPN的通道代理,代理有着不用说大家也知道的重要性。不管是做CPA还是做点击亦或者投票,代理都能帮我们一下,虽然帮的忙不大,但是却很重要。下面风就网页代理而言,探讨一下啊,有的时候我们从网上找到了一大批的免费代理,但是却不知道到底哪些是高匿,哪些是透明,用IP138查询的话,普通的匿名代理和高匿代理是区分不开的。那么我们
2015-05-13 15:32:10 6411
原创 【Linux】Linux下配置apache - 安装目录详解
一,apache安装路径解释 默认安装路径 /var/apache2# /etc/apache2/# |-- apache2.conf# | `-- ports.conf# |-- mods-enabled# | |-- *.load# | `-- *.conf# |-- conf-enabled# | `-- *.conf# `-- si
2014-11-12 10:45:46 8693 1
原创 【Linux数据库】Redis安装配置
1、下载安装cd /tmpwget http://redis.googlecode.com/files/redis-2.2.13.tar.gztar -zxf redis-2.2.13.tar.gzcd redis-2.2.13makesudo make install这时Redis 的可执行文件被放到了/usr/local/bin2、下载配置文件和
2014-11-05 15:07:38 1591
原创 【Linux】Linux下配置apache
1.获取软件: http://httpd.apache.org/ httpd-2.2.21.tar.gz2.安装步骤:解压源文件:1) tar zvxf httpd-2.2.21.tar.gz 2) cd httpd-2.2.213) ./configure --prefix=/usr/local/apache2 --enable-so --enable-rewr
2014-11-03 18:15:04 1503
原创 【PHP】PHP入门第一章
一,PHP大小写敏感 1)所有用户定义的函数、类和关键字都对大小写不敏感。如下结果输出一致: echo "hello world" Echo "hello world" EcHo "hello world" 2)用户自定义的变量,区分大小写 如下只有第一行输出正确的 color<?
2014-10-20 11:43:10 1779
转载 【计算机网络】HTTP协议讲解
引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of H
2014-08-10 09:57:19 2481
转载 【HTTP】Cookie/Session机制详解
会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。本章将系统地讲述Cookie与Session机制,并比较说明什么时候不能用Cookie,什么时候不能用Session。1.1 Cookie机制
2014-08-09 12:25:35 1462
原创 【剑指Offer】鸟瞰50题之31 - 40题
面试题31连续子数组的最大和 面试题32从1到n整数中1出现的次数 面试题33把数组排成最小的数 面试题34丑数 面试题35第一个只出现一次的字符 面试题36数组中的逆序对面试题37两个链表的第一个公共结点 面试题38数字在排序数组中出现的次数 面试题39二叉树的深度 面试题40数组中只出现一次的数字 面试题41和为S的两个数字 面试题41和为S的连续正
2014-07-27 22:23:14 1558
原创 【剑指Offer】鸟瞰50题之21 - 30题
面试题21包含min函数的栈 面试题22栈的压入、弹出序列 面试题23从上往下打印二叉树 面试题24二叉搜索树的后序遍历序列 面试题25二叉树中和为某一值的路径 面试题26复杂链表的复制 面试题27二叉搜索树与双向链表 面试题28字符串的排列 面试题29数组中出现次数超过一半的数字 面试题30最小的K个数
2014-07-13 08:45:56 1666 1
原创 【剑指Offer】鸟瞰50题之11 - 20题
面试题11数值的整数次方 面试题12打印1到最大的N位数 面试题13在O(1)时间删除链表结点 面试题14调整数组顺序使奇数位于偶数前面 面试题15链表中倒数第k个结点 面试题16反转链表 面试题17合并两个排序的链表 面试题18树的子结构 面试题19二叉树的镜像 面试题20顺时针打印矩阵 面试题2
2014-07-09 23:11:02 1752
libconio-1.0.0.tar.gz
2012-05-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人