9 stevewongbuaa

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 1w+

go学习:特殊之处

背景学习一门新语言,其实大多数东西都是类似的,我们只需要关注这么语言特殊的地方。本文就是在学习过程中记录go特殊的地方特殊之处闭包b站git_bookvscode搭建环境defer把语句放到栈中,函数结束的时候再执行一般用于打开文件/数据库后立马defer 关闭,有点像把finally提前package mainimport ( _ "encoding/json" "fmt")func sum(n1 int, n2 int) int { defer fmt.Prin

2020-08-11 16:14:56

SQLite FTS3 和 FTS4 插件

总览FTS3和FTS4是SQLite虚表模块,允许用户在一堆文档中实现全文搜索。用户输入一个短语(term),或者一些列term,然后这个系统找到一些列文档,最佳地匹配了哪些terms。这篇文章介绍了FTS3和FTS4的部署和使用FTS1和FTS2是过时的全文搜索模块。有一些已知的问题。FTS3的部分恭喜到了SQLite的项目中。现在作为SQLite的一部分被开发和维护。1、FTS3和FTS4的介绍FTS3和FTS4扩展模块允许用户创建特殊的表,内置了全文索引(FTS表)全文索引允许用户有效地查询数

2020-08-08 18:53:29

Lucene实战-第2章-构建索引

本章要点执行基本索引操作在索引过程中对文档和域进行加权操作对日期、数字和可排序域进行索引高级索引技术如果想要搜索存储在硬盘上的文件、电子邮件、网页或是数据库中的数据,Lucene都可帮你完成。但在进行搜索前,你必须对搜索内容进行索引,Lucene同样能帮你完成,这就是本章要讨论的内容。在第1章我们演示了一个索引示例。本章将更深入讲解索引更新操作,如何通过参数来调整索引过程,以及更高级的索引技巧,从而帮助你更好理解Lucene。本章还将涉及Lucene索引的结构,使用多线程和多进程访问Luce

2020-07-31 17:45:11

如何解决redis缓存击穿?代码实例

背景缓存击穿,是指对那些会失效的key有高并发的请求,然后在失效的那一瞬间,高并发请求来了,读不到redis的值,全都会把请求打到数据库,导致数据库压力过大解决方案1、分布式锁当发现缓存失效的时候,先使用setnx设置分布式锁,只有获取锁成功的那个线程可以查数据库并回写缓存。优点:能解决问题。缺点:1、如果不支持原子操作的话,这个setnx的分布式锁可能会发生死锁。2、性能一般2、本地锁同上,只是使用本地锁,解决死锁问题。优点:没有死锁问题缺点:有多少个机器实例,最多就有多少个“查数

2020-07-28 18:21:22

ES-Lucene-FST的原理是啥?跟Trie树的区别是啥?

参考Lucene-FST

2020-07-23 10:32:21

规则引擎:调研与使用

背景在很多应用后台,经过需要搞一些保存一些规则,然后在线判断规则是否匹配。(感觉抽象的不是太好)实际例子:规定某个应用(打车)只有符合某些员工可以看到:1、工作地在北京的2、是一线员工3、除去某些部门再或者4、是某些大佬id也可以看到可以看到 1-3是【与】的关系 再跟4是【或】的关系这种怎么玩呢?直接想法肯定是写死代码实现咯。但是我们又要求这个这些规则是可配置的。(通过后台管理系统配置),那肯定不能代码写死了于是我们引入了规则引擎参考github demo阿里云更多的demo

2020-07-19 15:19:38

搜索引擎:Frame of Reference 和 Roaring Bitmaps

背景检索的时候,在做一些过滤操作的时候(与或非),实际上是对倒排索引的一个拉链归并操作。为了做高效地实现这个功能,ES采用了roaring bitmap的数据结构,参见文章比如拉链1:[1,2,3]&拉链2:[2,3,4]&拉链3:[3,4]...

2020-07-16 23:23:49

搜索引擎:ES的评分逻辑

背景难道不好奇怎么评分的吗!?直接先上例子参考官网注意 在有分片的情况下 需要用routing来限制在一个shard里再搞,不然都搞不清楚什么情况# 按照routing来索引PUT /hjx_test_index/doc/1?routing=text1&refresh=true{ "text" : "quick brown fox 11" }PUT /hjx_test_index/doc/2?routing=text1&refresh=true{ "text" : "ba

2020-07-16 22:53:47

搜索引擎:ES没有Lexical Parser,对应的功能是怎么实现的?(是否真的需要Lexical Parser?)

背景上一篇文章我们提到了 搜索引擎:Lexical Parser 成分解析ES里没有这种模块,他是怎么实现这个类似的功能的呢分析假设我们的原始数据是// doc1{ "city": "南京", "type": "租房", "desc": "南京租房挺便宜"}// doc2{ "city": "南京", "type": "二手房" "desc": "南京二手房老贵了"}假设我们对city字段和type字段建索引,得到的倒排索引应该类似这样:city_南京:doc1 doc

2020-07-16 10:20:40

搜索引擎:Lexical Parser 成分解析

这是啥?在搜索引擎中,对搜索query进行分析,分析出其pattern的一套算法举例:query: 南京二手房分析结果:南京:city; 二手房: typequery: 南昌二手房分析结果:南昌:city; 二手房: type这是怎么做到的呢?首先我们需要配置一些模板,定义我们一些召回的规则,如:词槽配置[city]南京南昌[type]二手房租房...

2020-07-15 20:36:33

OAuth第三方登录 如何搭建系统?

参考第三方应用应该怎么搞:springboot+oauth”微信“: 微信微信官方文档开搞okta这个好像很厉害,直接就搞定了?先按照上面的教程在okta注册个账号。github直接clone到本地。这个运行起来的话其实依赖okta的服务,我们要自己搞一套那肯定不能这么玩,pass掉dev.todev.to直接按照他的步骤创建一个server可以得到一个resource server,使用jwt做authorization。但是这也不完整啊,有没有完整的????spring官方

2020-07-14 17:52:24

OAuth2.0 图解

其实可以直接看官网https://tools.ietf.org/html/rfc6749但是为了图省事咱们也可以看中文相关资料http://www.ruanyifeng.com/blog/2019/04/oauth_design.html干什么用的?授权第三方应用获取用户信息。我登录了微信,微信小程序pdd可以获取我的用户信息类比快递哥哥(第三方应用pdd)进门禁(微信系统)送快递(获取用户手机号)流程快递哥哥想要进小区送快递(第三方应用想要获取用户手机号)快递哥哥向门禁系统申请(pd

2020-07-09 20:10:01

sentinel源码:小结

内部的模块通过责任链的设计模式串联起来,每个模块实现相应的功能。同时每个模块都是通过SPI实现的,我们可以自定义SPI然后插入到处理流程中间。其中比较重要的模块,StatisticSlot,利用滑动窗口的算法计算窗口时间内的运行数据(如qps),同时内部使用了高性能的数据结构LeapArray,支持高并发写多读少的场景...

2020-07-08 21:04:54

sentinel源码:最简单的qps限流是怎么做的?滑动窗口算法原理

参考首先当然要先看下官方文档知道大概原理,然后再细看构建demo走源码在这里参考官网demo好了pom中引入:<dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-core</artifactId> <version>1.7.2</version></dependency>main函数pa

2020-07-08 18:46:39

sentinel:如何自定义mysql数据源?mybatis

背景反复阅读sentinel的官方文档,发现:1、默认情况下sentinel的限流规则是写在内存里的,一旦重启,规则就会丢失2、限流规则的持久化,提供了以下几个推荐的方式,主要分为推和拉模式:公司一般不会直接暴露redis、ZooKeeper等给业务同学使用,看了下redis的demo是需要输入用户名密码等,无法与公司的系统融合再考虑到使用mysql相对比较简单,容易理解,于是选择使用拉模式定时从数据库中读取数据具体实现然而sentinel官网并没有提供拉模式读取mysql数据库的demo,

2020-07-07 21:03:19

JWT原理 对比 appid secretkey 鉴权

参考看东西就先看官网小结大概思想就是1、客户端用用户名密码请求server,server校验通过之后,返回JWT,里面包含着用户信息(base64编码的payload可破解,不应该包含敏感信息)2、客户端从此在header上带着这个JWT请求server3、server拿到JWT,解密成功则说明鉴权成功,否则鉴权失败问题流程是这么个流程,但感觉疑点重重问题1、具体应用场景是啥,JWT里存什么呢参考这个:比较正确的用法我是单纯瞎想的,没有实证。拿钉钉做例子吧,有点类似于单点登录的感觉假

2020-07-06 22:26:36

HTTPS 原理 对称加密 非对称加密 CA证书

参考可汗学院掘金网文章小结先介绍对称加密通信的双方,使用同一个secretKey,可以对密文进行解密,得到明文。问题:在开放的internet如何交换secretKey,这本身就是个问题。这个交换的过程也是需要加密的。这就套娃了无解了。再介绍非对称加密通信双方各自有一个公钥,还有私钥;私钥只有自己知道,公钥全世界都知道;非对称加密算法,保证了用公钥加密的信息,可以用 对应的 私钥解密。比如:Curry和Klay 需要进行通信。Curry有私钥privateKeyCurry 和公钥publ

2020-06-30 12:17:01

ES pinyin 插件 拼音搜索 原理 match_phase

背景中文搜索很多时候都要用到pinyin搜索,基本绕不开这个插件;如搜索人名之类的;介绍插件github:地址在README的最后,举的例子挺有意思;经过一系列操作之后,对刘德华建index,竟然搜liudh,刘dh,各种奇葩的搜索都能搜出来,这是为啥呢?让我们来仔细分析一下。如官网的配置配置analyzerPUT /medcl3/{ "settings" : { "analysis" : { "analyzer" : {

2020-06-18 15:35:58

Guava RateLimiter 原理 理解

背景项目中限流可以用Guava RateLimiter,不想了解原理是啥吗?!这篇文章已经写的很好了没啥可补充了,加一些个人思考吧思考如果让你来造一个限流器,有啥想法?直观想法1,对应参考文章的漏桶算法就是用一个固定大小的队列。比如设置限流为5qps,1s可以接受5个请求;那我们就造一个大小为5的队列,如果队列为满了,就拒绝请求;如果队列未满,就往队列添加请求。如何控制速率呢,我们通过控制消费者的消费速率是5qps,1s消费5个即可。问题,说的挺轻巧,具体怎么控制消费者的速率呢?又加一个定

2020-06-15 17:35:19

CAS Spring 中文文档

原文链接Spring官方文档译文32.CAS鉴权32.1 概述JA-SIG 搞了一个 企业范围内的单点登录系统:就是闻名天下的CAS。跟其他替代品不一样的地方在于,JA-SIG的中心鉴权服务是开源的,被广泛是用的,容易理解的,独立于平台的,支持代理能力的。Spring的安全模块完全支持CAS,并提供了比较容易的迁移方案,从单应用部署(Spring Security)到多应用部署(企业层CAS server)可以从这个网址了解CAS。你也需要访问这个网址来下载CAS服务器文件。32.2 CAS是

2020-06-15 11:19:13

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。