自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小鹅鹅的博客

兴趣使然的博主,鹅厂小开发,邮箱derrychan@foxmail.com

  • 博客(87)
  • 资源 (3)
  • 收藏
  • 关注

原创 多任务学习模型MMoE详解 Multi-gate Mixture-of-Experts 与代码实现

背景在线上推荐预测任务时往往需要预测用户的多个行为,如关注、点赞、停留时间等,从而调整策略进行权衡。其中涉及到多任务学习,本篇将会大概整理一些常用的模型如MMoE, ESMM, SNR方便理解与学习。MMoE背景与动机在工业界基于神经网络的多任务学习在推荐等场景业务应用广泛,比如在推荐系统中对用户推荐物品时,不仅要推荐用户感兴趣的物品,还要尽可能地促进转化和购买,因此要对用户评分和购买两种目标同时建模。阿里之前提出的ESMM模型属于同时对点击率和转换率进行建模,提出的模型是典型的shared-bot

2021-06-07 11:26:23 5928 1

原创 代码安全常见漏洞简介概述笔记

文件上传漏洞文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。常见场景是web服务器允许用户上传图片或者普通文本文件保存,而用户绕过上传机制上传恶意代码并执行从而控制服务器。显然这种漏洞是getshell最快最直接的方法之一,需要说明的是上传文件操作本身是没有问题的,问题在于文件上传到服务器后,服务器怎么处理和解释文件。https://xz.aliyun.com/t/7365https://www.secpulse.com/archives/95987.h

2020-11-14 23:08:50 2102

原创 Tlinux/CentOS7安装NVIDIA显卡驱动和CUDA10.1 cuDNN

1. 背景与前期准备此篇博客记录一下TLinux系统安装显卡NVIDIA驱动与CUDA10/11的艰难过程。1.1 显卡驱动与CUDA对应关系1.2 查看内核版本与安装系统开发库如果已安装可以忽略此步骤查看内核版本uname -a下载网址(相对应的内核版本)如果是TLinux可以在这里下载:https://tlinux-mirror.tencent-cloud.com本地下载,上传至机器执行命令安装:rpm -ivh kernel-tlinux2-devel-3.10.107-1

2020-10-06 00:08:10 4561 2

原创 数据库底层数据结构 B树B+树LSM树 详解对比与总结

文章目录1. 背景2. 二叉树、平衡二叉树和红黑树3. B树(B-树)与B+树3.1 B树(B-树)3.2 B+树3.3 B树和B+树总结:3.4 为什么说B+tree比B树更适合实际应用中操作系统的文件索引和数据库索引?3.5 MySIAM与InnoDB的B+树3.5.1 MySIAM索引实现3.5.2 InnoDB索引实现4. LSM树4.1 LSM树与其他结构对比5. 总结 | Ref1. 背景我们熟知常用数据库MySQL MongoDB HBase等底层存储都用了各种树结构,如B树LSM树,不过

2020-08-30 16:10:14 2576

原创 Snorkel 学习笔记 简介与入门 LF TF SF Labeling Functions Transformation Function Slicing Function 示例

文章目录Snorkel简介与入门背景LF 标注函数RefSnorkel简介与入门背景弱监督(Weak Supervision)可以让我们低成本的利用领域专家的知识来程序化的标注上百万级别的 数据样本,从而帮助我们解决人工智能时代的数据瓶颈问题。更确切地说,这是一个帮助将领域专家的知识编码到AI系统中的框架,专家知识注入的方式可以采用手写的推理规则或者远程监督。弱监督的主要优点在于:灵活:需要更新模型时,只需要更新标注函数、重新生成训练集和分类器即可提高召回率:判别模型将提供优于弱监督模型的泛化

2020-07-31 16:42:31 2930

原创 分布式系统 概念 高可用 高并发 学习笔记

分布式系统 概念 高可用 高并发 学习笔记0. 分布式系统基本概念0.1 背景分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。其目的是利用更多的机器,处理更多的数据。首先需要明确的是,只有当单个节点的处理能力无法满足日益增长的计算、存储任务的时候,且硬件的提升(加内存、加磁盘、使用更好的CPU)高昂到得不偿失的时候,应用程序也不能进一步优化的时候,我们才需要考虑分布式系统。因为,

2020-07-03 11:36:25 1385

原创 大数据文件格式对比 Parquet Avro ORC 特点 格式 优劣势

背景在大数据环境中,有各种各样的数据格式,每个格式各有优缺点。如何使用它为一个特定的用例和特定的数据管道。数据可以存储为可读的格式如JSON或CSV文件,但这并不意味着实际存储数据的最佳方式。有三个文件格式用于Hadoop集群:Optimized Row Columnar (ORC)AvroParquetApache AvroAvro是一种远程过程调用和数据序列化框架,是在Apache的Hadoop项目之内开发的。它使用JSON来定义数据类型和通讯协议,使用压缩二进制格式来序列化数据。

2020-05-27 17:04:43 7139

原创 Java volatile 关键字解释 用法原理 并发编程特性

文章目录0. 前言1. java内存模型与原子性,可见性和有序性2. volatile关键字2.1 volatile保证原子性吗?2.2 volatile能保证有序性吗?2.3 volatile底层实现机制3. 正确使用volatile关键字3.1 状态标志3.2 双重检查模式 DCL4. 总结Ref0. 前言有时仅仅为了读写一个或者两个实例域就使用同步的话,显得开销过大,volatile关键字为实例域的同步访问提供了免锁的机制。如果声明一个域为volatile,那么编译器和虚拟机就知道该域是可能被另一

2020-05-20 20:22:40 5492

原创 HBASE Region数量增多问题描述及解决方案

文章目录HBASE Region数量增多问题描述及解决方案1. 问题描述1.1 HBase 分区概念1.2 region过多影响1.3 合理region数量2. 方案概述2.1 ROWKEY 修改方案细节2.1.1 Rowkey长度原则(最好不超过16字节)2.1.2 rowkey散列原则2.1.3 rowkey唯一原则2.1.4 时间戳反转2.1.5 整个rowkey如下(timestamp并不...

2020-05-06 19:34:20 4334

原创 Java Spring JPA 参数校验 JSON 等常用注解 及解析

文章目录1. `@SpringBootApplication`2. Spring Bean 相关2.1. `@Autowired`2.2. `Component`,`@Repository`,`@Service`, `@Controller`2.3. `@RestController`2.4. `@Scope`2.5. `Configuration`3. 处理常见的 HTTP 请求类型3.1. G...

2020-04-30 22:30:43 3798

原创 Java连接HBase的正确方法及Connection创建步骤与详解

文章目录Java连接HBase的正确方法及Connection创建步骤与详解**Connection**是什么?连接HBase的正确姿势Connection 创建连接步骤及代码解析Java连接HBase的正确方法及Connection创建步骤与详解HBASE的连接不像其他传统关系型数据库连接需要维护连接池。HBASE连接若使用错误则会导致随时间推移程序创建的TCP连接过多,导致HBASE连接失...

2020-03-18 14:56:18 11751 3

原创 Kubernetes k8s 基础架构与设计理念 名词解释 学习笔记

文章目录1. Kubernetes架构1.1 Borg简介1.2 Kubernetes架构1.3 Kubernetes架构示意图1.3.1 整体架构1.3.2 Master架构1.3.3 Node架构2. Kubernetes的设计理念2.1 Kubernetes设计理念与分布式系统2.1.1 分层架构2.2.2 API设计原则2.2.3 控制机制设计原则2.2 Kubernetes的核心技术概念...

2020-03-11 14:59:13 1162

原创 Java JVM GC 垃圾回收 详细介绍 学习笔记

文章目录JVM 垃圾回收本文导火索1 揭开 JVM 内存分配与回收的神秘面纱1.1 对象优先在 eden 区分配1.2 大对象直接进入老年代1.3 长期存活的对象将进入老年代1.4 动态对象年龄判定2 对象已经死亡?2.1 引用计数法2.2 可达性分析算法2.3 再谈引用2.4 不可达的对象并非“非死不可”2.5 如何判断一个常量是废弃常量2.6 如何判断一个类是无用的类3 垃圾收集算法3.1 ...

2020-03-07 11:03:22 1008

原创 Java 虚拟机中内存区域介绍 JDK8区别 对象创建 学习笔记

文章目录Java 内存区域详解一 概述 程序执行过程二 运行时数据区域2.1 线程私有2.1.1 程序计数器2.1.2 Java 虚拟机栈2.1.3 本地方法栈2.2 线程共享2.2.1 堆2.2.2 方法区2.2.2.1 方法区和永久代的关系2.2.2.2 常用参数2.2.2.3 为什么要将永久代 (PermGen) 替换为元空间 (MetaSpace) 呢?2.2.3 运行时常量池2.2.4 ...

2020-03-04 12:01:13 1244

原创 Hadoop集群运维相关笔记 hdfs参数设置调优等

文章目录1. DataNode服务经常僵死描述分析解决2. DataNode因数据盘损坏重启失败描述分析解决3. 优化Hadoop Balancer平衡的速度Ref本篇博客将持续更新一些遇到过的Hadoop大数据集群的问题,及相关的解决方案1. DataNode服务经常僵死描述集群一共设置了8个DataNode,经常不知道什么原因会导致其中3 4 个一直处于僵死状态,重启可以恢复单身过一段...

2020-02-11 16:38:07 2403

原创 Java线程的6种状态及切换

文章目录1. 基本概念1.1 状态描述1.2 状态图2. 详细描述2.1 初始状态(NEW)2.2 运行状态(RUNNABLE)2.2.1 就绪状态(READY)2.2.2 运行中状态(RUNNING)2.3 阻塞状态(BLOCKED)2.4 等待(WAITING)2.5 超时等待(TIMED_WAITING)2.6 终止状态(TERMINATED)3. 其他知识点3.1 等待队列3.2 同步队列...

2020-01-07 12:05:19 891

原创 kafka 命令行工具常用命令行操作

文章目录1. 数据命令1.1 启动kafka服务1.2 创建topic1.3 向topic中发送数据1.4 开启一个消费端2. check命令2.1 查看kafka topic列表2.2 查看kafka特定topic的详情2.3 查看consumer group列表2.4 查看特定consumer group 详情2.5 查看指定topic上每个partition的offset1. 数据命令1...

2019-12-27 16:48:09 11312

原创 HBase client 客户端重试机制

文章目录背景代码解析重要参数设置参数推荐背景在hbase集群故障时,hbase client无法连接region server的时候,因为重试参数配置问题,程序并不会直接抛出异常,而是会一直重试,导致异常报警没有触发。此篇文章讲述client的重试机制及参数配置。代码解析RpcRetryingCall.java 中 callWithRetries函数是Rpc请求重试机制的实现, 可以参考以...

2019-12-25 10:56:45 1994

原创 Java 线程调优 JDK常用命令行工具 Jstack & Arthas使用笔记 查找耗时线程

Jstack使用jps查找出java进程的pid,如7777或 ps -ef | grep java使用top -p 7777观察进程情况,然后Shift+h,显示该进程的所有线程。找出CPU消耗较多的线程id,如7788,将7788转换为16进制0x1e6c,注意是小写。使用jstack 7777 | grep -A 10 0x1e6c 来查询出具体的线程状态。-A ...

2019-11-24 15:17:33 5672

原创 Redis详解 单线程 基于内存设计 主从 持久化 与 memcached区别 及常见问题

文章目录1. Redis简介2. Redis支持的数据类型与适用场景2.1 数据类型2.2 适用场景3. Redis设计3.1 为什么redis需要把所有数据放到内存中?3.2 Redis是单进程单线程的4. 虚拟内存5. 分布式 / 主从复制5.1 主从复制特点5.2 主从复制原理5.3 主从复制过程5.3 主从复制配置6. 常见Redis模型6.1 读写分离模型6.2 数据分片模型7. 持久化...

2019-10-29 17:27:20 930

原创 javaHashMap 概述 HashMap 底层实现原理 及JDK1.8更新

文章目录1. HashMap 概述2. HashMap 的数据结构2.1 Node结构2.2 HashMap中的哈希与threshold, loadFactor, szie等几个字段3. HashMap功能实现-方法3.1 确定哈希桶数组索引位置3.2 分析HashMap的put方法3.3 扩容机制4. HashMap多线程场景下的问题4.1 问题产生4.2 Fail-Fast 机制5. Hash...

2019-10-24 20:29:00 325

原创 Hive 修改 查询 分区信息 列 及 表 语句 整理

文章目录1. 分区操作1.1 查询分区信息1.2 添加分区1.3 删除分区1.4 修改分区2.列操作2.1 添加列2.2 修改列3. 表操作3.1 创建外部表3.2 修改表属性3.3 表的重命名4. Ref1. 分区操作1.1 查询分区信息show partitions t_test;describe formatted t_test partition (sample_date="20...

2019-10-16 21:54:41 861

原创 HBase客户端Write Buffer 介绍及设置

文章目录1. 什么时候需要Write Buffer?2. 如何配置使用Write Buffer?3. 如何确定每次flushCommits()时实际的RPC次数?4. 如何确定每次flushCommits()时提交的记录条数?5. Write Buffer有什么潜在的问题?6. 如何预估Write Buffer占用的内存?7. RefHBase客户端API提供了Write Buffer的方式,即...

2019-09-22 19:06:59 986

原创 HBASE 技术细节 读取与写入 Region Split与合并介绍

文章目录1. Hbase的Region介绍1.1 region实例1.2 Region的寻址1.2.1 老的Region寻址方式1.2.2 新的Region寻址方式2. Hbase的写逻辑2.1 Hbase写入逻辑2.2 MemStore刷盘2.2.1 全局内存控制2.2.2 MemStore达到上限2.2.3 RegionServer的Hlog数量达到上限2.2.4 手工触发2.2.5 关闭Re...

2019-09-22 19:06:11 1951

原创 HBASE BufferedMutator 批量写入使用举例与源码解析

文章目录1. 基本介绍2. BufferedMutator使用举例2.1 单次一张表批量写入多次多张表批量写入3 源码介绍3.1 主要类介绍3.2 源码过程3.2.1 BufferedMutator构建的过程3.2.2 数据发送的过程3.2.3 HRegionserver端处理4. 总结5. Ref1. 基本介绍BufferedMutator主要用来异步批量的将数据写入一个hbase表,就像H...

2019-09-14 12:44:46 7371 1

原创 java synchronized 关键字 使用方法 学习笔记

文章目录java synchronized 关键字 使用方法 学习笔记1. 综述2. synchronized作用于实例方法3. synchronized作用于静态方法4. synchronized同步代码块5. synchronized作用于类同步方法最好运用在 共享资源 内部而不是使用它的外部总结Refjava synchronized 关键字 使用方法 学习笔记1. 综述线程安全是并发...

2019-08-27 16:50:24 191

原创 Java JVM 内存泄露 基本概念 解析及排查处理办法

0. 背景本文章会一步一步的探讨内存泄露的问题。JAVA是垃圾回收语言的一种,开发者无需特意管理内存分配。但是JAVA中还是存在着许多内存泄露的可能性,如果不好好处理内存泄露,会导致APP内存单元无法释放被浪费掉,最终导致内存全部占据堆栈(heap)挤爆进而程序崩溃。1. 内存泄露 or 内存溢出?说到内存泄露,就不得不提到内存溢出,这两个比较容易混淆的概念,我们来分析一下。内存泄露:...

2019-08-04 22:35:02 360

原创 Spark 查看某个正在执行的或已结束的任务中executor与driver日志

1. 在web界面上查看任务正在运行如果运行在 YARN 模式,可以在 ResourceManager 节点的 WEB UI 页面根据 任务状态、用户名 或者 applicationId Search 到应用。点击表格中 Tracking UI 列的History 链接;点击相关的 ApplicationId 链接,进入到详情页面点击上面的 Tracking URL: History 链...

2019-07-26 15:28:44 14611

原创 控制反转 依赖注入 基本概念 与 Spring IOC 源码学习

Background1996年,Michael Mattson在一篇有关探讨面向对象框架的文章中,首先提出了IOC 这个概念。IOC是Inversion of Control的缩写,多数书籍翻译成“控制反转”,还有些书籍翻译成为“控制反向”或者“控制倒置”。IOC理论提出的观点大体是这样的:借助于“第三方”实现具有依赖关系的对象之间的解耦。2004年,Martin Fowler探讨了同一个问题...

2019-07-21 22:57:31 227

原创 Spring AOP 基本概念与代理模式 实现原理 及常用AspectJ注解

0. 背景Spring框架用的时间蛮久了,但是一直都没怎么系统的学习,致使用法比较单一不灵活,也出过一些低级错误,是时候好好学习一下啦1. AOP简述回到主题,何为AOP?AOP即面向切面编程——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完...

2019-06-24 22:06:25 315

原创 Spark Structrued Streaming 及 DStreaming 调优笔记

背景项目中用的是Spark Structrued Streaming ,也就是Spark 2.0的新版Streaming,看官方文档也说过性能及实时性会比之前的Dstreaming好点,但是相关的资料相比Dstreaming实在是少很多,现在调优阶段很多都要参考Dstreaming的文章以及经验。这里整理一个Structured Streaming和DStreaming通用的不同方向、思路的调...

2019-05-19 16:43:38 2133

原创 MongoDB 常用操作笔记 find ,count, 大于小于不等, select distinct, groupby,索引

本博客将列举一些常用的MongoDB操作,方便平时使用时快速查询,如find, count, 大于小于不等, select distinct, groupby等1. 大于,小于,大于或等于,小于或等于,不等于$gt: 大于$lt: 小于$gte: 大于或等于$lte: 小于或等于$ne: 不等于// greater than : field > valuedb.colle...

2019-04-20 12:48:18 2679

原创 JVM 概述,层次结构 以及 GC工作原理 笔记

1. JVM概述Java 虚拟机 Java 虚拟机(Java virtual machine,JVM)是运行 Java 程序必不可少的机制。JVM实现了Java语言最重要的特征:即平台无关性。原理:编译后的 Java 程序指令并不直接在硬件系统的 CPU 上执行,而是由 JVM 执行。JVM屏蔽了与具体平台相关的信息,使Java语言编译程序只需要生成在JVM上运行的目标字节码(.class),就...

2019-04-20 12:47:22 352

原创 Java final, static, this, super 关键字总结

Java 中 final, static, this, super 关键字总结1. final 关键字final关键字主要用在三个地方:变量、方法、类。对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。当用final修饰一个类时,表明这个类不能被继承。final类中的所有成员方法...

2019-03-10 22:55:23 473

原创 Spark Streaming(DStreaming) VS Spark Structured Streaming 区别比较 优劣势

Spark Streaming(DStreaming) VS Spark Structured Streaming 区别比较 优劣势背景这篇博客主要记录Spark Streaming(DStreaming) 与 Spark Structured Streaming 之间的差别与优劣势。Apache Spark 在 2016 年的时候启动了 Structured Streaming 项目,一个...

2019-03-07 21:04:46 6932

原创 Java 多线程与线程池 Thread弊端与Executor存在问题 及解决方法

文章目录Java 多线程与线程池 Thread弊端与Executor存在问题 及解决方法1. 使用Thread弊端2. 线程池背景及优势3. Executor解析3.1 线程池原理3.2 配置线程池3.3 优雅关闭线程池4. Executor存在问题解决方法5. RefJava 多线程与线程池 Thread弊端与Executor存在问题 及解决方法1. 使用Thread弊端new Threa...

2019-02-24 22:08:53 5510

原创 Spring Boot 创建及使用多线程

文章目录Spring Boot多线程1. 介绍2. 配置类3. 基于@Async无返回值调用3.1 任务执行3.2 测试代码4. 基于@Async返回值的调用RefSpring Boot多线程1. 介绍Spring是通过任务执行器(TaskExecutor)来实现多线程和并发编程,使用ThreadPoolTaskExecutor来创建一个基于线城池的TaskExecutor。在使用线程池的大...

2019-02-19 16:25:36 43937 7

原创 Kafka入门教程其二 生产与消费详解 Rebalance过程 leader选举过程

文章目录1. 概述2. 生产3. 消费1. 概述接着上一篇博客,本篇主要介绍Kafka的生产与消费的过程。Producers往Brokers里面的指定Topic中写消息,Consumers从Brokers里面拉去指定Topic的消息。图中有两个topic,topic 0有两个partition,topic 1有一个partition,三副本备份。2. 生产创建一条记录,记录中一个要指...

2019-02-17 22:33:13 994

原创 Kafka入门教程其一 消息队列基本概念 及常用Producer Consumer配置详解学习笔记

1. 综述Apache Kafka是基于发布/订阅的容错消息系统,由Scala和Java编写,是一个分布式消息队列,具有高性能、持久化、多副本备份、横向扩展能力。与其他消息传递系统相比,Kafka具有更好的吞吐量,内置分区,复制和固有的容错能力,这使得它非常适合大规模消息处理应用程序。Kafka适合离线和在线消息消费。 Kafka消息保留在磁盘上,并在群集内复制以防止数据丢失。 Kafka构...

2019-01-27 18:18:19 1197

原创 Hbase Rowkey CF 架构 概述 预分区及Rowkey设计 学习笔记

1. 概述HBase是建立在Hadoop文件系统之上的分布式面向列的数据库。它是一个开源项目,是横向扩展的。类似于数据库的存储层,HBase适用于结构化存储,并且为列式分布式数据库。HBase是一个数据模型,类似于Google Big Table设计,可以提供快速随机访问海量结构化数据。它利用了Hadoop的文件系统(HDFS)提供的容错能力。它是Hadoop的生态系统,提供对数据的随机实...

2019-01-11 18:12:20 2157

NVIDIA 显卡驱动 TLinux 签名内核

NVIDIA 显卡驱动 TLinux 签名内核,下载 NVIDIA-Linux-x86_64-418.87.00/kernel 下内核模块文件nvidia-uvm.ko 和 nvidia.ko 之后再将这两个文件下载拷贝到相应的文件夹,depmod更新模块依赖

2020-10-06

Python 强化学习 DQN Flappy Bird

Playing Flappy Bird Using Deep Reinforcement Learning (Based on Deep Q Learning DQN)

2018-09-25

推荐系统实践

随着信息技术和互联网的发展,人们逐渐从信息匮乏的时代走入了信息过载(information overload)的时代 。在这个时代,无论是信息消费者还是信息生产者都遇到了很大的挑战:对于信息消费者,从大量信息中找到自己感兴趣的信息是一件非常困难的事情;对于信息生产者,让自己生产的信息脱颖而出,受到广大用户的关注,也是一件非常困难的事情。推荐系统就是解决这一矛盾的重要工具。推荐系统的任务就是联系用户和信息,一方面帮助用户发现对自己有价值的信息,另一方面让信息能够展现在对它感兴趣的用户面前,从而实现信息消费者和信息生产者的双赢。

2018-09-11

空空如也

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

TA关注的人

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