2 天前 / Thinkgamer
本系列主要是基于 Spark 的推荐算法实战系列,本文为首篇,欢迎关注! 1.Swing 算法介绍 Swing 算法原理比较简单,是阿里早期使用到的一种召回算法,在阿里多个业务被验证过非常有效的一种召回方式,它认为 user-item-user 的结构比 itemCF 的单边结构更稳定,截止目前并没有公开的论文进行介绍和说明(可能是因为比较简单,阿里看不上哈哈),但是根据网上的各种资料,对该算法的原理进行介绍,如有错误,欢迎指正。 Swing 指的是秋千,例如用户和用户,都购买过同一件商品,则三者之间会构成一个类似秋千的关系图。
4 天前 / AI算法笔记
论文:《Learning Fashion Compatibility with Bidirectional LSTMs》 论文地址:https://arxiv.org/abs/1707.05691 代码地址:https://github.com/xthan/polyvore 1. 简介时尚搭配推荐的需求越来越大,本文是基于两个方面的时尚推荐: 给定已有的服饰,推荐一件空缺的衣服,从而形成一套搭配,即在已经有上衣、裤子的情况下推荐一双鞋子;根据多种形式的输入,比如文本或者一件衣服图片,生成一套搭配;目前存在的难点在于:如何对不同时尚类别的单品通过简单计算视觉相似性来建模和推理其匹配性关系。
6 天前 / Silently9527
本文已被 Github 仓库收录 https://github.com/silently9527/JavaCore 程序员常用的 IDEA 插件:https://github.com/silently9527/ToolsetIdeaPlugin 完全开源的淘客项目:https://github.com/silently9527/mall-coupons-server 微信公众号:贝塔学 Java 前言快速排序可以说是使用最广的排序算法了,主要的特点是基于原地排序(不需要使用辅助数组,节省空间);其实对于长度为 N 的数组使用快速排序时间复杂度为 NlogN;在前几篇也一起讨论了其他的排序算法,都没能够把这两个特点结合起来。
9 天前 / Silently9527
本文已被 Github 仓库收录 https://github.com/silently9527/JavaCore 程序员常用的 IDEA 插件:https://github.com/silently9527/ToolsetIdeaPlugin 完全开源的淘客项目:https://github.com/silently9527/mall-coupons-server 微信公众号:贝塔学 Java 前言在上一篇《常见的初级排序算法,这次全搞懂》,主要谈了常用的初级算法,这些算法的时间复杂度都是 O(n2),这些算法无法处理大量数据;本篇我们谈一种基于归并操作完成排序的算法。
9 天前 / bigsai
点击上方蓝字关注我们 前言 数据结构与算法是程序员内功体现的重要标准之一,且数据结构也应用在各个方面,业界更有程序 = 数据结构 + 算法这个等式存在。各个中间件开发者,架构师他们都在努力的优化中间件、项目结构以及算法提高运行效率和降低内存占用,在这里数据结构起到相当重要的作用。此外数据结构也蕴含一些面向对象的思想,故学好掌握数据结构对逻辑思维处理抽象能力有很大提升。 为什么学习数据结构与算法?如果你还是学生,那么这门课程是必修的,考研基本也是必考科目。
10 天前 / 云水木石
今天,在网上看到一则不起眼的消息,首个 IETF 国密标准正式发布,加速国密算法应用进程。新闻中提到,《商密算法在 TLS 1.3 中的应用》标准(RFC 8998)在 IETF 发布,这是我国首次正式将国密算法推进到 IETF 国际标准中。从国密标准在 2012 年正式颁布,到推进到 IETF 国际标准中,也算是历经波折,终成正果。 仔细看研究了一下,本次发布的是 RFC 8998: ShangMi (SM) Cipher Suites for TLS 1.3,标准中定义了两个 TLS 1.3 中的国密加密套件,个 SM2 椭圆曲线 ID,以及个 SM2-SM3 的签名法。 此外,SM2、SM3、SM4 算法也已经加入到 ISO 标准中。
11 天前 / xF0rk
引言 DGA(domain generate algorithm)是一种伪随机域名生成算法,可批量生成大量的伪随机域名,作为 C&C(command and control server)域名,由于算法和参数可以预先确定,因此服务端可以利用同样的算法生成与客户端相同的域名。当攻击者需要对受害者机器进行操控时,可注册其中的一个或几个域名,受害者机器作为客户端,会定时尝试连接 C&C 服务器,一旦连接成功,恶意程序即可接受服务端指令,进行信息收集和恶意破坏等一系恶意活动。
11 天前 / Silently9527
本文已被 Github 仓库收录 https://github.com/silently9527/JavaCore 程序员常用的 IDEA 插件:https://github.com/silently9527/ToolsetIdeaPlugin 完全开源的淘客项目:https://github.com/silently9527/mall-coupons-server 微信公众号:贝塔学 Java 前言相信所有的程序员刚开始接触到的算法都会是排序算法,因为排序在对数据处理和计算有这重要的地位,排序算法往往是其他算法的基础;本文我们就先从初级排序算法开始学习算法。
12 天前 / lucifer210
开篇词:为什么要出这个专栏市面上关于算法学习的书和专栏很多,其中也不乏一些特别优秀的,比如《数据结构与算法之美》,《算法 4》等等。我为什么还要写这么一个专栏呢?主要有以下几个原因: 市面上精准定位前端岗位的算法面试和学习专栏不多除了算法岗,不同的工程师岗位考察算法面试的范围和难度差异虽然不大(尤其是 Google 这样的大公司),但侧重仍然会有不同。而市面上资料站多是普适性的,不具有针对性。这些资料前端岗位可以看, 后端岗位可以看,算法岗位依然可以看。 以下分析针对的是「非绝对头部互联网公司」,比如 Google,Facebook。
12 天前 / HueiFeng
前言 在之前的一篇文章详解递归的正确打开方式中,我们详细讲解了经典的斐波那契数列问题从递归到 DP 的优化过程, classSolution{ publicintfib(intN){ if(N==0){ return0; }elseif(N==1){ return1; } returnfib(N-1)+fib(N-2); } } 体会了递归的思想, 即: 递归的实质是能够把一个大问题分解成比它小点的问题,然后我们拿到了小问题的解,就可以用小问题的解去构造大问题的解。 但缺点就是随着 n 值的增大,递归树 Recursion Tree 变的越来越深,相应需要计算的节点也越来越多。
12 天前 / 程序猿石头
背景大家好,我是石头哥,最近有读者问我关于浮点的问题,大概问题就是 0.1 + 0.2 == 0.3 ?0.8-0.6 == 0.6-0.4 ? 我给他丢了一篇我早在 2014 年写的一篇文章 ——一个由跨平台产生的浮点数 bug | 有你意想不到的结果,讲述了自己在开发过程中的一个“bug”,也因浮点数的表达引起的。 回想,当初这篇文章投稿到了著名的 CoolShell 博主 —— 左耳朵耗子那里,因为文中的表述不太清楚,还引起了一些讨论。
17 天前 / 云水木石
办理过买房抵押贷款的朋友,应该还记得在贷款合同上不断按手印。这种现实世界的签字画押,一方面是保证合同的文本不会替换,另一方面双方事后都不能否认此次交易(个人方面靠签字和手印,银行方靠公章)。 借助生物特征(指纹)上的唯一性,完成了现实世界中的防篡改和防抵赖。 在计算机世界里,数字签名技术用来达成现实世界中的签名和盖手印相同的目的,所以现数字签名有两个作用,防篡改和防抵赖。 在前面的文章中讲到,MAC 和非对称加密也可以用于防篡改,但前面介绍的算法都无法防抵赖。先来说说现有算法为什么无法防抵赖。
18 天前 / Charles_Tang
这道题目的意思是,计算每个数字的二进制表示里 1 的数量。其实,计算方法,也比较简单,就是写个循环,计算当前循环中的数字的 bit 位数。怎么计算一个数字的 bit 里的 1 的位数呢? 我想到的方法很简单,就是使用 “位与” 计算,一个整数,与 1 进行 & 运算,结果 1,说明最低位是 1,结果是 0,说明最低位是 0。然后,我们把这个数字往右移 1 位。重复这个过程,直到这个数字变为 0。就统计出了所有的 1 的数量。
19 天前 / 三分恶
在前面我们了解了虚拟机如何判断对象可回收,接下来我们了解 Java 虚拟机垃圾收集的一些理论和算法。 1、分代收集理论分代收集理论,是基于程序运行对象存活数量和对象年龄之间关系的一套经验法则。 存活对象数量与年龄的关系它建立在两个分代假说之上: 「弱分代假说(Weak Generational Hypothesis)」:绝大多数对象都是朝生夕灭的。「强分代假说(Strong Generational Hypothesis)」:熬过越多次垃圾收集过程的对象就越难以消亡。用通俗的话总结:大部分污渍很容易擦干净,多次擦都没擦干净的无责越来越难擦干净。
24 天前 / Zoker
摘要:最近看到了一篇文章,细讲了各种分布式调度原理,其中加权轮询算法(Weighted Round-Robin)应该是离我们最近的一种方式了,Nginx 的 Upstream 就是用的这个算法,这个算法可以根据权重使得每个服务器能够均匀的负载请求,本篇主要就是来总结下使用这个算法以及 Go 内置的方法来实现一个简单的加权轮询的 HTTP 负载分发代理,并对负载分发及路由做一些延伸思考。 本篇主要从以下两个方面进行展开: 使用 Go 实现一个反向代理 使用 WRR 算法实现此反向代理的加权轮询 什么是代理代理一般情况下我们是分为正向代理和反向代理两种形式 正向代理一般是配...