- 博客(85)
- 收藏
- 关注
原创 正排索引与倒排索引
正排索引与倒排索引正排索引也叫正向索引(forward index),倒排索引也叫反向索引(inverted index)。他们都是搜广推经常用到的工具,用于记录海量 对象与特征 之间的关系,这里的对象可以是商品、店铺、广告,特征可以是关键词、标签等等。假设对象为商品,特征为关键词。下面举例说明一下什么是正排索引,什么是倒排索引。对于每个商品,我们将它的标题和描述进行分词,然后可以建立如下正排索引(key是商品id,value是该商品的各个关键词的出现次数和出现位置):商品1 -> [(关键词
2020-07-03 23:45:43 2241 1
原创 准确率、召回率、F-Measure
准确率、召回率、F-Measure1.准确率(Precision)与召回率(Recall)Precision指的是检索出来的条目(比如:文档、网页等)有多少是准确的,衡量的是检索系统的查准率;Recall指的是所有准确的条目有多少被检索出来了,衡量的是检索系统的查全率。两者取值在0和1之间,数值越接近1,查准率或查全率就越高。2.综合评价指标(F-Measure)当然希望检索结果Precision越高越好,同时Recall也越高越好,但事实上这两者在某些情况下有矛盾的。比如极端情况下,我们只搜索
2020-07-03 23:44:24 1441
原创 gitlab架构科普
gitlab架构科普底层存储由三个组件负责:①PostgreSQL:类似于mysql,存储业务数据,比如有哪些项目组,某个项目组下有哪些项目,某项目下哪些人有权限等等②redis:用于缓存热点数据以及存储异步任务,sidekiq这组件会定期拉取分发异步任务给worker执行③gitaly:存储底层代码文件,提供rpc接口对外提供git操作服务接入层由两个组件负责:gitlab shell和gitlab workhorse,前者负责处理ssh请求,后者负责处理http/https请求gitla
2020-07-03 23:41:01 2231
原创 React hook && 函数组件相关
React hook && 函数组件相关Hook 是 React 16.8 的新增特性,函数组件每次调用其生产的hook类型、顺序、数量应该都是一致的。不然会报错uncaught Invariant Violation: Rendered more/less hooks than during the previous render.1.useStateimport { useState } from 'react';const [columns, setColumns] = use
2020-07-03 23:36:02 1090
原创 React底层原理
React底层原理1.react合成事件react在事件处理上具有如下特点:1.几乎所有的事件代理(delegate)到document,达到性能优化的目的2.对于每种类型的事件,拥有统一的分发函数dispatchEvent3.事件对象(event)是合成对象(SyntheticEvent),不是原生的合成事件与原生事件混用时,需要注意。例如存在如下的业务场景: 点击input框展示日历,点击文档其他部分,日历消失,代码如下:var React = require('react');var
2020-07-03 23:35:06 4981 2
原创 浏览器渲染 && 卡顿排查
浏览器渲染 && 卡顿排查一、浏览器进程与线程Chrome浏览器使用多个进程来隔离不同的网页,在Chrome中打开一个网页相当于起了一个进程,每个tab网页都有由其独立的渲染引擎实例。一个页面进程一般包括以下线程:GUI 渲染线程GUI渲染线程负责渲染浏览器界面HTML元素,当界面需要重绘(Repaint)或由于某种操作引发回流(reflow)时,该线程就会执行。JavaScript引擎线程JS为处理页面中用户的交互,以及操作DOM树、CSS样式树。但为了避免因为引入了
2020-07-03 23:30:28 2855
原创 kafka知识点总结
kafka笔记一、名词解释Kafka 的发布订阅的对象是topic。我们可以为每类数据创建一个topic,把向topic发布消息的客户端称作producer,从topic订阅消息的客户端称作consumer。Producers和consumers可以同时从多个topic读写数据。一个kafka集群由一个或多个broker服务器组成,它负责持久化和备份具体的kafka消息。1.Broker:Kafka节点,一个Kafka节点就是一个broker,多个broker可以组成一个Kafka集群。2.Topi
2020-07-03 23:28:51 186
原创 Redis知识点总结
Redis知识点总结0. 简单入门知识点1.redis是key-value的数据结构每条数据都是一个键值对键的类型是字符串,并且不能重复值的数据类型分为五种:string、hash、list、set、zset2.数据库没有名字,默认有16个库,通过0-15来标识连接redis数据库。默认选择第一个数据库,即01. 六大底层数据结构可以使用OBJECT ENCODING key来查看某个数据类型的底层实现1.1. SDS(simple dynamic string)简单动态字符串sdshdr
2020-07-03 23:25:01 328
原创 Docker知识点总结
Docker笔记一、镜像、容器、仓库1.镜像(image):Docker 镜像可以看作是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)统一文件系统(Union File System)技术能够将不同的层整合成一个文件系统,为这些层提供了一个统一的视角。用到了一个重要的资源管理技术,叫写时复制。写时复制(copy-on-write),也叫隐式共享,是一种对可修改资源实现高效复制的资源管理技术。对于一个重复
2020-07-03 23:18:20 606
原创 k8s相关知识点
k8s相关知识点零、k8s哲学Kubernetes中的大部分概念如Node、Pod、ReplicationController、Service等都可以看作一种“资源对象”,几乎所有的资源对象都可以通过Kubernetes提供的kubectl工具(或者API编程调用)执行增、删、改、查等操作并将其保存在etcd中持久化存储。从这个角度来看,Kubernetes其实是一个高度自动化的资源控制系统,它通过跟踪对比etcd库里保存的“资源期望状态”与当前环境中的“实际资源状态”的差异来实现自动控制和自动纠错的高
2020-07-03 23:14:46 310
原创 Golang 协程调度知识点总结
Golang 协程调度一、用户态、内核态、系统调用、中断现代cpu通常有多种特权级别,一般来说特权级总共有4个,编号从Ring 0(最高特权)到Ring 3(最低特权),在Linux上之用到Ring 0和RIng 3,用户态对应Ring 3,内核态对应Ring 0系统调用,例如操作文件、进行网络通讯或者申请内存资源等中断一般有两个属性,一个是中断号,一个是中断处理程序。不同的中断有不同的中断号,每个中断号都对应了一个中断处理程序。在内核中有一个叫中断向量表的数组来映射这个关系。当中断到来时,cpu会
2020-07-03 23:13:03 531
原创 webpack打包知识点总结
webpack打包1.webpack 是一个模块打包工具,能够从一个需要处理的 JavaScript 文件开始,构建一个依赖关系图(dependency graph),该图映射到了项目中每个模块,然后将这个依赖关系图输出到一个或者多个 bundle 中。2.关键概念:entry:项目入口module:开发中每一个文件都可以看做 module,模块不局限于 js,也包含 css、图片等chunk:代码块,一个 chunk 可以由多个模块组成loader:模块转化器,模块的处理器,对模块进行转换处理
2020-07-03 23:11:51 247
原创 mysql锁相关知识点总结
mysql锁相关知识点总结1.mysql server分为3层:服务层、核心层(查询缓存、分析器、优化器、执行器)、存储层。Mysql在5.5之前默认使用MyISAM存储引擎,之后使用InnoDB1.MySQL事务包含四个特性,号称ACID四大天王。原子性(Atomicity):语句要么全执行,要么全不执行,是事务最核心的特性,事务本身就是以原子性来定义的;实现主要基于undo log日志实现的。持久性(Durability:保证事务提交后不会因为宕机等原因导致数据丢失;实现主要基于redo log
2020-07-03 23:07:48 180
原创 手把手教你Sphinx(二)——制作一份学习研讨会报告
手把手教你Sphinx(二)——制作一份学习研讨会报告1. 创建项目在目标目录下执行sphinx-quickstart命令,创建一个名为report的项目文档,除了以下配置项外,其余均取默认值即可:$ sphinx-quickstart report> Project name: Sphinx学习研讨会报告> Author name(s): hymanlu> Projec
2018-01-22 18:33:14 691
原创 手把手教你Sphinx(一)
手把手教你Sphinx(一)1. 什么是Sphinx?所谓Sphinx,其实就是一个能将reStructuredText(类似于Markdown)语法的文本文件转换为HTML、PDF、epub等格式的强大工具。要知道,Python的官方文档就是利用这款工具书写而成的,并且被广泛用于各式各样的说明文档。2. Sphinx的安装由于Sphinx运行于python之上,因此可
2018-01-15 20:25:53 1899
原创 从零开始开发一个大型网站
从零开始开发一个大型网站更新:前端代码已全部由TypeScript进行重写这是本人第一个从零开始开发一个大型网站(前后端+部署代码),是一个内容分享社区,详细信息见github。目前还是开发中后期,随后还要进行优化完善,对某模块感兴趣的可以查看对应的源码。github不仅有部署教程和代码介绍,还附带了本人的开发笔记。网站临时首页:http://119.23.69.178/git
2017-12-20 15:27:18 24307 1
翻译 jQuery插件编写规范
本文详细剖析了jQuery插件的编写规范,即使你并不打算编写jQuery插件,相信也会对你以后理解和使用插件带来极大的帮助。
2017-12-12 20:06:51 684
原创 深入浅出的TensorFlow数据格式化存储工具TFRecord用法教程
本文详尽地介绍了使用TFRecord的好处、必要性,然后介绍相关核心概念,最后把它整合到我们的模型训练代码当中。
2017-11-05 13:58:30 9781 2
原创 深入浅出的TensorFlow可视化工具TensorBoard用法教程(二)
本文用详尽的代码实例,教会你如何把TensorBoard应用到真实编码生产环境中。
2017-11-05 00:20:37 2558 3
原创 深入浅出的TensorFlow可视化工具TensorBoard用法教程(一)
本文详尽介绍了TensorFlow可视化工具TensorBoard的核心概念和用法示例。
2017-11-03 23:51:05 11837
原创 TensorFlow图变量tf.Variable的用法解析
本文详细剖析了TensorFlow中的一个最基础但又最重要的概念——图变量的含义和用法。
2017-10-27 20:42:24 94759 11
原创 TensorFlow集群搭建与编程
文本手把手教会你利用docker搭建TensorFlow集群环境,然后利用该环境进行深度学习模型的训练,比较单机版本和集群版本的性能差异。
2017-10-11 14:29:56 5315
翻译 深入浅出的强化学习笔记(二)——使用OpenAI Gym实现游戏AI
本文以利用OpenAI Gym来实现一个游戏AI为主线,一步步地优化模型,慢慢引入强化学习中一些重要概念和训练技巧,最终完美地实现了任务。
2017-10-05 23:08:16 20420 15
原创 深入浅出的强化学习笔记(一)——概述
本文介绍了强化学习的基本特征和模型定义,并举了两个十分形象的例子来方便读者理解大致的决策过程是如何进行的。
2017-10-05 17:36:38 2995
原创 SHELL与空格
本文详细剖析了shell脚本的参数传递机制,并以多个代码示例解析了如何处理参数带空格的情况,还有关于$@和$*变量用法的分析。
2017-09-24 16:24:17 16131
原创 调参神器:Hyperopt
本文介绍了一个调参常用的python库——hyperopt,并给出了一个简单实用的代码demo(附带详尽注释哦)。
2017-09-23 00:13:01 5819 3
翻译 Batch Normalization:加速神经网络训练的通用手段
本文详尽介绍了近几年在深度学习领域十分重要的“小trick,大杀器”——Batch Normalization,实际编码实现对比加入BN前后模型的性能表现差异。
2017-09-18 15:26:02 2530
翻译 使用Tampermonkey进行JavaScript编程
本文介绍了一个十分强大的Chrome插件——Tampermonkey,并通过一些简单的demo展示了如何使用它来实现一些有趣的功能。
2017-09-17 16:15:36 11665 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人