自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小田的专栏

算法,Linux,编程语言,设计模式,笔试面试

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

原创 【深度学习技术系列】推荐系统-双塔模型基本原理与实践

双塔模型经典又简单,就是NLP领域的 query 和 document,推荐领域的 user 和 item,多模态检索领域的图像和文字等,都可以用双塔表示,分别把两个领域的特征编码成一个向量,然后向量相似度进行召回。较早使用双塔模型的是DSSM模型。将文本编码成对应低维向量,然后通过优化向量点积估值,得到合适的query和文档向量。线上通过query和文档的相似度进行文档的召回。推荐系统中使用的双塔模型结构如下:真实的推荐领域的大规模推荐系统,通常有百万到上亿的item和user。

2024-04-06 23:28:46 895

原创 【深度学习技术系列】大模型基础组件 - 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 1243 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 1050

原创 【PyTorch】Pytorch 入门简介

PyTorch 是一个由Facebook的人工智能研究团队开发的,开源深度学习框架。2016年发布后,PyTorch很快就因其易用性、灵活性和强大的功能而在科研社区中广受欢迎。发布伊始:2016年Facebook的AI研究团队公开了PyTorch,其旨在提供一个快速、灵活且动态的深度学习框架。PyTorch的设计哲学与Python非常相似:易读性和间接性优于隐式的复杂性。PyTorch用Python语言编写,是Python的一种扩展。

2024-03-08 16:31:12 588

原创 【Go】Go语言的介绍

连续栈策略在协程的栈空间不足时,调用newstack创建一块为原来大小两倍的栈空间,然后调用copystack将原来空间中所有内容复制到新开辟的栈空间中,将指向旧栈对应变量的指针重新指向新栈(想同变量在栈扩容前后地址发生变化),最后调用stackfree销毁并回收原来的栈空间。1) 分段栈:Go1.13之前栈扩容使用分段栈策略,如果栈空间不足调用newstack创建一个新的栈空间,但是新创建的栈空间和原来的栈空间不连续,协程多个栈空间之间用双向链表的形式串联,通过指针找到这些栈空间。

2024-03-08 10:31:54 823

原创 【前端vue】 mac搭建vue环境

sudo cnpm install vue-router vue-resource --save //vue 路由模块vue-router和网络请求模块vue-resource。sudo npm install [email protected]//下载重装webpack-dev-serve。参考链接:https://jjxliu306.github.io/ng-form-element/dist/index.html。替换成 sudo vue init webpack vuedemo。

2024-03-07 09:08:54 678

原创 【Go】Go语言入门

可以使用命令下载如果需要指定版本可以去官网下载: https://golang.google.cn/dl/,直接安装即可有时间的同学可以看看,go的学习文档: https://topgoer.cn/docs/golang/golang-1ccjbpfstsfi1。

2024-03-06 10:20:55 939 1

原创 [缓存 - tair] tair的基本知识点和架构设计

通过代理解决:对于正常的数据迁移来说,假设桶2,3,4的数据从DataServer A同步到DataServer B,其中2的数据已经迁移完成,3的数据正在迁移,4的数据还没迁移。当因为某台dataserver宕机导致的数据迁移时,客户端会收到ConfigServer发送过来的中间临时状态的路由表,表中会把宕机的DataServer所负责的bucket临时指派给具有其备份副本的DataServer来处理,此时,服务保持可用,但负载可能不均衡,当迁移完成后,才能重新达到一个新的负载均衡的状态。

2024-02-28 02:05:59 977

原创 【AI.OS】深入解读阿里开源系统全图化引擎

看到这张图可能会有点懵,熟悉和使用过搜索推荐服务的同学可能都知道在线技术组件如DII、RTP、HA3、BE、IGraph,它们在不同场景发挥各自擅长的作用。那么AI.OS(Artificial Intelligence Online Serving) 是个啥概念?乍一看,是将搜索、推荐、广告、深度学习、信息流所应用到的技术组件融合成了一个体系,形成一个基础的引擎平台。仔细一琢磨,这么做是想干啥呢?带着这个问题一步一步往下看在这个组件的最下层是资源的管理,叫 Hippo,是一个非常高效的资源管理系统。

2024-02-27 21:44:24 935 2

原创 阿里开源高性能搜索引擎 Havenask - Ha3

本文会重点介绍一下阿里系的搜索引擎中间件 Havenask(内部代号Ha3),在阿里内部支持了淘宝、天猫、菜鸟、优酷、高德、饿了么等在内的阿里搜索业务。Ha3 支持千亿级别数据实时检索、百万qps查询,百万TPS高时效性写入保障,毫秒级查询延迟和数据更新。开源地址:http://github.com/alibaba/havenask。

2024-02-24 12:10:42 1065

原创 [缓存 - redis] Redis的基本知识点 数据结构和常用操作命令

redis(remote dicitionary server)是一个高性能的key-value数据库,对数据库的操作是原子性的,采用C语言编写。Set 类型是一个无序并唯一的键值集合,它的存储顺序不会按照插入的先后顺序进行存储。Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。相对于列表,集合也有两个特点:无序、不可重复。

2024-02-21 01:49:14 977

原创 [缓存] RingBuff 环形队列、环形缓冲区及有锁无锁实现

由于自旋锁不需要进行线程切换,所以它完全在用户态下实现,加锁开销低,但是由于其采用忙等待的策略,对于短期加锁来说没问题,但是长期锁定的时候就会导致CPU资源的大量消耗。如果读取数据的速度跟不上写入数据的速度,旧的数据将被新写入的数据覆盖。所以当互斥锁加锁失败的时候,就伴随着两次上下文切换的开销,而如果我们锁定的时间较短,可能上下文切换的时间会比锁定的时间还要长。由于自旋锁和互斥锁的失败策略不同,自旋锁采用忙等待的策略,而互斥锁采用线程切换的策略,由于策略不同,它们的应用场景也不同。

2024-02-20 03:33:47 881

原创 第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 823

原创 第3、4章 Kafka 生产者 和 消费者 ——向 Kafka 写入数据 和读取数据

点对点模型:适用于一对一的消息传递,具有高可靠性。发布/订阅模型:适用于广播消息给多个消费者,实现消息的广播。主题模型:适用于根据消息的主题进行灵活的过滤和匹配,处理复杂的消息路由需求。

2024-02-16 19:14:29 1107 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 752

原创 第1章 初识Kafka

消息被提交到磁盘,根据设置的保留规则进行保存。例如,一个包含了多 个微服务的网站,可以为页面视图创建一个单独的主题,所有服务都以相同的消息格式向 该主题写入数据。网站活动跟踪:网站的访问量,搜索量,或者其他用户的活动行为如注册,充值,支付,购买等行为可以发布到中心的topic,每种类型可以作为一个topic,这些信息流可以被消费者订阅实时处理、实时监控或者将数据流加载到Hadoop中进行离线处理等;,kafka有更好的吞吐量(每秒几十万),内置了分片、复制、容错机制,是大规模数据消息处理的更好的解决方案;

2024-02-16 00:02:14 829

原创 第7章 改变思考方式

捕获列表。在C++规范中也称为Lambda导入器, 捕获列表总是出现在Lambda函数的开始处。实际上,[]是Lambda引出符。编译器根据该引出符判断接下来的代码是否是Lambda函数,捕获列表能够捕捉上下文中的变量以供Lambda函数使用。参数列表。与普通函数的参数列表一致。如果不需要参数传递,则可以连同括号“()”一起省略。可变规格。mutable修饰符, 默认情况下Lambda函数总是一个const函数,mutable可以取消其常量性。在使用该修饰符时,参数列表不可省略(即使参数为空)。

2024-02-15 21:31:27 604

原创 第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 591

原创 第5章 提高类型安全

智能指针的本质是 类模版 ,可以创建任意类型的指针对象,智能指针对象使用完毕之后,对象自动调用析构函数释放指针指向的资源。智能指针的出现主要是为了解决C++中内存泄漏的问题,用对象创建指针,对象生命周期结束后调用析构函数来释放指针指向的资源。不是线程安全的,虽然share_ptr 内部的引用计数是加锁且线程安全的,但是指向的内容在操作写的时候并不是线程安全的。share_ptr 是共享式的管理,利用内部的引用计数来计算当前指向指针资源的个数,当计数为0时候释放指针指向的资源。

2024-02-14 11:51:19 859

原创 第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 916

原创 第3章 通用性【下】

POD : Plain Old Data 简单旧数据 指的是可以通过 简单内存复制 和传输的数据类型。POD对象可以通过memcpy或者其他等价操作进行复制,而且它们的内存布局是完全透明和可预测的。C++ 中POD类型可以分为两类:trivial 和 standard layout 类型分别可以通过如下判断Trivial类型Trivial类型是一种简单的类型,它没有用户定义的构造函数、析构函数或复制操作符,没有私有或保护的非静态成员,没有基类,也没有虚函数。

2024-02-13 20:57:50 656

原创 C++ 一文讲透内存分配

我们都知道C++中的内存管理是一个比较麻烦的事情,现在有个需求,需要在程序中记录主动申请的内存和主动释放的内存,以确保没有发生内存泄漏。程序在运行时,操作系统将可执行文件载入到计算机的内存中,成为一个进程。面试官:(笑)好吧,最后一个问题,咱们上面一直在讨论堆中的内存的分配和释放,请问一下,如果在栈上分配一块固定的内存?存放程序执行的机器指令,通常情况下,代码段是共享的,频繁执行的程序在内存中只有一个副本就可以。与data数据段不同的是,如果程序未运行,bss段的存储空间是不存在的,因而也不会有初始值。

2024-02-13 20:04:40 820

原创 第3章 通用性【上】

可以看到,std::forward模板函数对传入的参数进行强制类型转换,转换的目标类型符合引用折叠规则,因此左值参数最终转换后仍为左值,右值参数最终转成右值。完美转发实现了参数在传递过程中保持其值属性的功能,即若是左值,则传递之后仍然是左值,若是右值,则传递之后仍然是右值。答:在 C++11标准产生之前,是没有右值引用这个概念的,当时如果想要一个类型既能接收左值也能接收右值的话,需要用const左值引用,比如标准容器的 push_back 接口:void push_back (const T& val)。

2024-02-12 12:21:00 697

原创 mac下安装Elasticsearch实践

下载地址:​​​​elasticsearch打开找到config/目录下面的elasticsearch.yml配置文件,把安全认证开关从原先的true都改成false,实现免密登录访问即可,修改这两处都为false后:enabled:再次打开报错flase 拼写错误,应该是false。

2024-02-10 22:42:05 786

原创 第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 582

原创 第2章 保证稳定性和兼容性

如果用户重定义(#define)或#undef 了预 定义的宏,那么后果是“未定义” 的。因此在代码编写中,程序员应该注意避免自定义宏与 预定义宏同名的情况。返回所在函数的名字的预定义标识符func注意:预定义标识符_func_ 可以在类或者结构体中使用,但是不能当成参数默认值。struct Test{ // 允许void funcFail(){// 不允许// 参数声明_func_还未被定义1.3 _Pragma操作符#pragma once //告诉编译器头文件只被编译一次。

2024-02-08 21:48:10 563

原创 第1章 MySQL架构与历史

本章主要是讲解了MySQL的一个组织架构,包括存储引擎的一些关键设计和优缺点。对于MySQL的一个发展史也做了一个简单的介绍。

2024-02-07 23:06:12 933

原创 高性能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 115

原创 【网络代理】代理IP检测的知识

做网络的基本都知道代理,这个是肯定的,不管是用花刺还是猎手的网页代理,还是直接VPN的通道代理,代理有着不用说大家也知道的重要性。不管是做CPA还是做点击亦或者投票,代理都能帮我们一下,虽然帮的忙不大,但是却很重要。下面风就网页代理而言,探讨一下啊,有的时候我们从网上找到了一大批的免费代理,但是却不知道到底哪些是高匿,哪些是透明,用IP138查询的话,普通的匿名代理和高匿代理是区分不开的。那么我们

2015-05-13 15:32:10 6326

原创 【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 8630 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 1556

原创 【Linux】CentOS系统研究

版本:CentOS release 5.7

2014-11-04 11:37:58 1423

原创 【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 1474

原创 【PHP】PHP入门第一章

一,PHP大小写敏感        1)所有用户定义的函数、类和关键字都对大小写不敏感。如下结果输出一致:                 echo  "hello world" Echo  "hello world" EcHo  "hello world"        2)用户自定义的变量,区分大小写         如下只有第一行输出正确的 color<?

2014-10-20 11:43:10 1735

转载 【计算机网络】HTTP协议讲解

引言                                        HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of H

2014-08-10 09:57:19 2354

转载 【HTTP】Cookie/Session机制详解

会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。本章将系统地讲述Cookie与Session机制,并比较说明什么时候不能用Cookie,什么时候不能用Session。1.1  Cookie机制

2014-08-09 12:25:35 1430

原创 【剑指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 1523

原创 【剑指Offer】鸟瞰50题之21 - 30题

面试题21包含min函数的栈 面试题22栈的压入、弹出序列 面试题23从上往下打印二叉树 面试题24二叉搜索树的后序遍历序列 面试题25二叉树中和为某一值的路径 面试题26复杂链表的复制 面试题27二叉搜索树与双向链表 面试题28字符串的排列 面试题29数组中出现次数超过一半的数字 面试题30最小的K个数

2014-07-13 08:45:56 1633 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 1715

原创 【剑指Offer】鸟瞰50题之1-10题

面试题1赋值运算符函数  为下面类型添加赋值运算符class CMyString{public: CMyString(char *pData = NULL); CMyString(const CMyString &str); ~CMyString(void);private: char *m_pData;};答案如下:CMyString& CMyString::

2014-07-08 00:23:08 1837

C++ 11 新特性 脑图 讲解C++ 面试

C++ 11 新特性 脑图 讲解C++ 面试

2024-02-19

C++中 的Set容器

Set是一种关联容器,它用于存储数据,并且能从一个数据集合中取出数据。它的每个元素的值必须唯一,而且系统会根据该值来自动将数据排序。每个元素的值不能直接被改变。

2012-05-24

libconio-1.0.0.tar.gz

conio是Console Input/Output(控制台输入输出)的简写,其中定义了通过控制台进行数据输入和数据输出的函数,主要是一些用户通过按键盘产生的对应操作,比如getch()函数等等。

2012-05-21

STL中map详细介绍

map 是一个容器,它用于储存数据并且能从一个数据集合中取出数据。它的数据组成包含两项,一个是它的数据值,一个是用于排序的关键字。其中关键字是惟一的,它用于将数据自动排序。而每个元素的数据值与关键字无关,可以直接改变。

2012-05-21

算法艺术与信息学竞赛

算法艺术与信息学竞赛

2011-12-13

实用算法的分析与程序设计

实用算法的分析与程序设计

2011-12-13

android sdk

android sdk android sdk android sdk android sdk

2011-09-08

确定系统版本确定系统版本

确定系统版本确定系统版本确定系统版本确定系统版本确定系统版本确定系统版本确定系统版本确定系统版本确定系统版本确定系统版本

2009-09-30

空空如也

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

TA关注的人

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