Redis和Go中的MongoDB ID布隆过滤器

我正在研究文章建议。 有很多。 考虑一下YouTube视频建议。 为了避免再次建议文章,我想记住特定用户已经看过的文章。 我有很多用户,我也希望避免无限增长的历史数据库。</ p>

每篇文章都有 MongoDB ObjectId 。 我使用Redis和Go语言。</ p>

我认为Bloom Filter可以解决此问题,因为在这种情况下误报是可以的。 我想避免出现假阴性,但这不是100%必需的。</ p>

在此领域,我不知道有什么替代Bloom Bloom的明智选择。 我应该吗?</ p>

我在Go中找不到用于Redis的Bloom Filter的任何实现。 有人可以建议我这是最好的选择吗,我该如何编写自己的代码或存在任何现有的实现?</ p>
</ div>

展开原文

原文

I'm working on articles suggestions. There are lots of them. Think about YouTube videos suggestions. To avoid suggesting article once again I'd like to remember which were seen already by particular user. I have lot's of users and I'd like to avoid infinitely growing database of history as well.

Every article has MongoDB ObjectId. I use Redis and Go language.

I think that Bloom Filter could solve this problem, because false positives are ok in this case. I'd like to avoid false negatives, but it's not 100% obligatory.

I don't know any sensible alternative to Bloom Filter in this area. Should I?

I can't find any implementation of Bloom Filter for Redis in Go. Can somebody advice me is it the best choice, how can I write my own or is there any existing implementation?

dongyi5570
dongyi5570 我相信您会想要使用redis.io/commands/setbit和redis.io/commands/getbit来实现Bloom过滤器。
5 年多之前 回复
douyue1998
douyue1998 对于布隆过滤器:http://godoc.org/?q=bloom除非您找到特定的内容,否则您可能必须在Redis和过滤器之间提供“胶水”。
6 年多之前 回复

2个回答



对于绊倒这篇文章的任何人,如果您在这种情况下使用Redis,那么您可能想使用其 HyperLogLog功能; Antirez在此处对此进行了详细描述。 </ p>
</ div>无需弄清楚如何在Redis中制作Bloom Bloom过滤器,它内置的功能同样出色(它还可以告诉您大约插入了多少个项目)。</ p>
</ div>

展开原文

原文

For anyone stumbling across this post, if you're using Redis in this situation, then you probably want to use its HyperLogLog feature; Antirez wrote about it at length here. No need to figure out how to make a bloom filter in Redis, it has something just as good built in (and it can also tell you approximately how many items have been inserted in it).

dongtun2459
dongtun2459 自发布以来的两年中,Redis似乎现在已通过模块支持此功能。
大约 2 年之前 回复
dongtao6842
dongtao6842 1.不允许不添加就进行探测。 2. hyperloglog不是针对这种技术而设计的。 您是正确的,添加一个已经添加的项目不会更改HLL的状态,但是添加一个新项目通常也不会更改状态(概率随着添加的项目数的增加而降低)。 如果您使用临时副本来处理#1点,那么我将知道如何使用它,但是由于#2点,我认为误报性能会非常差。 布隆过滤器更好。
接近 5 年之前 回复
dtotuki47568
dtotuki47568 如果我错了,请随时纠正我,但是不能使用PFADD命令的结果来判断是否在超级日志中放置了特定项目(在这种情况下为youtube视频)? 返回值指示在执行命令后基本基数是否更改。 如果基数不变,则可以安全地假定该项目已添加到集合中。
接近 5 年之前 回复
du_1993
du_1993 Redis不提供用于查询是否已将项目插入超级日志的命令,并且出于充分的理由,超级日志对于执行此操作不是很好! 与Bloom滤镜相比,它们在相同空间的精度要低得多。 超日志对于“计数不同”很有用,但这不是这个问题的目的。
接近 5 年之前 回复



如@jumand所述,Redis具有一个名为RedisBloom的模块,该模块提供布隆过滤器,布谷鸟过滤器,最小计数和TopK服务。 </ p>

http://redisbloom.io </ p>
</ DIV>

展开原文

原文

As @jumand mentioned, Redis has a module named RedisBloom which provides a Bloom Filter, Cuckoo Filter, Count-Min Sketch and TopK services.

http://redisbloom.io

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
redis mongodb 多具体应用场景

redis mongodb 具体应用场景 ,不是 自身特点。。。。。。。。。。

mongoDB和Redis在java web中的使用场景

mongoDB和REDIS在java web开发中的使用场景有哪些?

Redis+MongoDB 服务器端高速缓存

最近想使用Redis数据库当做Windows服务器上的一个高速缓存,我现在的思路是客户端向Redis数据库请求数据,如果Redis中已经缓存的有这些数据,就直接反馈给客户端,如果没有,Redis再向MongoDB中调用数据,将数据存入Redis,之后在发送给客户端,不知道这种思路可否行得通,还请各位大神多多指点。

mongodb和redis哪个更适合日志记录?

有个高并发量的项目,老大要求输出后记录大量数据,作为日志便于之后统计。 mongodb和redis哪个更适合大量写入?不会用到读删改

redis memcache mongodb

redis memcache mongodb 分别储存什么数据,即场景 例如redis 储存session , 求案例

如何在Go中模拟Redis连接

<div class="post-text" itemprop="text"> <p>I am using <a href="https://github.com/go-redis/redis" rel="nofollow noreferrer">https://github.com/go-redis/redis</a> package to make Redis DB calls. For unit testing I want to mock this calls, is there any mock library or way to do it? </p> </div>

redis mongodb 多表怎么弄的

redis mongodb 多表怎么弄的 redis mongodb 多表怎么弄的 redis mongodb 多表怎么弄的

通过Docker连接Golang和Redis

<div class="post-text" itemprop="text"> <p>I'm trying to connect golang and reds through Docker using docker-compose but I'm not having much luck. I have published my attempt at <a href="https://github.com/davidwilde/docker-compose-golang-redis/tree/stackoverflow_question" rel="nofollow">https://github.com/davidwilde/docker-compose-golang-redis/tree/stackoverflow_question</a> and listed the logs below.</p> <p>Redis says it is ready to accept connections but my golang app using <a href="https://github.com/go-redis/redis" rel="nofollow">gopkg.in/redis.v3</a> says no.</p> <pre><code> ~/workspace/composetest   master ●  docker-compose up Starting composetest_db_1... Starting composetest_web_1... . . . ur kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never &gt; /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled. db_1 | 1:M 20 Nov 05:58:33.371 * DB loaded from disk: 0.000 seconds db_1 | 1:M 20 Nov 05:58:33.371 * The server is now ready to accept connections on port 6379 web_1 | panic: dial tcp [::1]:6379: getsockopt: connection refused web_1 | web_1 | goroutine 1 [running]: web_1 | main.main() web_1 | /go/src/app/app.go:19 +0x131 web_1 | web_1 | goroutine 17 [syscall, locked to thread]: web_1 | runtime.goexit() web_1 | /usr/local/go/src/runtime/asm_amd64.s:1696 +0x1 web_1 | panic: dial tcp [::1]:6379: getsockopt: connection refused web_1 | web_1 | goroutine 1 [running]: web_1 | main.main() web_1 | /go/src/app/app.go:19 +0x131 web_1 | web_1 | goroutine 17 [syscall, locked to thread]: web_1 | runtime.goexit() web_1 | /usr/local/go/src/runtime/asm_amd64.s:1696 +0x1 </code></pre> </div>

GoLang Redis:地图和切片

<div class="post-text" itemprop="text"> <p>I'm using GoLang to get a data from redis hash and then map into a struct.</p> <pre><code>type Person struct { ID string `json:"id"` FirstName string `json:"firstName"` LastName string `json:"lastName"` Filters interface{} `json:"filters"` Type string `json:"type"` } </code></pre> <p>In Redis, a hash field contains a stringified JSON.</p> <blockquote> <p>HGET hashname fieldname </p> </blockquote> <p>Above returns a stringified JSON.</p> <p>Now "filters" key can be array or map based on the type (That's why I defined Filters type as interface in struct).<br> I marshall the JSON like below:</p> <pre><code>var p Person content, err := redis.HGet("hashName", "id").Result() _ = json.Unmarshal([]byte(content), &amp;p) </code></pre> <p>Now I have to loop over filters like below but this is giving error that <strong><em>cannot range over p.Filters (type interface {})</em></strong> (I understand why this error is coming)</p> <pre><code>for _, filter := range p.Filters { fmt.Println(filter) } </code></pre> <p>Is there any way we can handle this situation?</p> <p>Thanks,<br> Shashank</p> </div>

从Redis / Golang客户端读取全部数据

<div class="post-text" itemprop="text"> <p>I have a Redis deployment acting as a caching layer. The cache is not very big and we would like to read all the items (key/values) at once from our Golang program. The only solution I found is to iterate through all master servers (it is a Redis cluster), execute a Scan to get all the keys and then iterate the keys to get the values.</p> <pre><code>err := cch.client.ForEachMaster(func(cl *redis.Client) error { wg.Add(1) defer wg.Done() var cursor uint64 var n int numFor := 0 for { var keys []string var err error keys, cursor, err = cl.Scan(cursor, "*", 10).Result() if err != nil { panic(err) } n += len(keys) for _, keyval := range keys { var cont Content if err := cch.items.Get(keyval, &amp;cont); err == nil { } else { log.Warnf("Error getting Key %s from cache: %s from master %s", keyval, err) } } if cursor == 0 { break } } return nil }) wg.Wait() </code></pre> <p>Is there a better way to do this? Cannot believe I need so many roundtrips to Redis to get the values. Thanks!</p> </div>

如何在Golang中释放WebSocket和Redis网关服务器资源?

<div class="post-text" itemprop="text"> <p>I have a gateway server, which can push message to client side by using websocket, A new client connected to my server, I will generate a <code>cid</code> for it. And then I also subscribe a channel, which using <code>cid</code>. If any message publish to this channel, My server will push it to client side. For now, all unit are working fine, but when I try to test with benchmark test by <a href="https://github.com/observing/thor" rel="nofollow noreferrer">thor</a>, it will crash, I fine the <code>DeliverMessage</code> has some issue, it would never exit, since it has a die-loop. but since redis need to subscribe something, I don't know how to avoid loop.</p> <pre><code>func (h *Hub) DeliverMessage(pool *redis.Pool) { conn := pool.Get() defer conn.Close() var gPubSubConn *redis.PubSubConn gPubSubConn = &amp;redis.PubSubConn{Conn: conn} defer gPubSubConn.Close() for { switch v := gPubSubConn.Receive().(type) { case redis.Message: // fmt.Printf("Channel=%q | Data=%s ", v.Channel, string(v.Data)) h.Push(string(v.Data)) case redis.Subscription: fmt.Printf("Subscription message: %s : %s %d ", v.Channel, v.Kind, v.Count) case error: fmt.Println("Error pub/sub, delivery has stopped", v) panic("Error pub/sub") } } } </code></pre> <p>In the main function, I have call the above function as:</p> <pre><code>go h.DeliverMessage(pool) </code></pre> <p>But when I test it with huge connection, it get me some error like:</p> <blockquote> <p>ERR max number of clients reached</p> </blockquote> <p>So, I change the redis pool size by change <code>MaxIdle</code>:</p> <pre><code>func newPool(addr string) *redis.Pool { return &amp;redis.Pool{ MaxIdle: 5000, IdleTimeout: 240 * time.Second, Dial: func() (redis.Conn, error) { return redis.Dial("tcp", addr) }, } } </code></pre> <p>But it still doesn't work, so I wonder to know, if there any good way to kill a goroutine after my websocket disconnected to my server on the below selection:</p> <pre><code>case client := &lt;-h.Unregister: if _, ok := h.Clients[client]; ok { delete(h.Clients, client) delete(h.Connections, client.CID) close(client.Send) if err := gPubSubConn.Unsubscribe(client.CID); err != nil { panic(err) } // TODO kill subscribe goroutine if don't client-side disconnected ... } </code></pre> <p>But How do I identify this goroutine? How can I do it like <code>unix</code> way. <code>kill -9 &lt;PID&gt;</code>?</p> </div>

将MongoDB对象存储在Redis缓存问题中

<div class="post-text" itemprop="text"> <p>I am having hard time storing some <code>MongoDb</code> objects to <code>Redis cache</code>.</p> <p>I am fetching the items from the database like this:</p> <pre><code>$cursor = $this-&gt;manager-&gt;executeQuery($this-&gt;collection, $query); </code></pre> <p>Which returns <code>object</code> of class <code>MongoDB\BSON\Cursor</code>.</p> <p>Since I cannot store this in the Redis cache, I am trying to convert it to an array to do so.</p> <p>I tried the following things:</p> <pre><code>$redis_cursor = \MongoDB\BSON\toJSON(\MongoDB\BSON\fromPHP($cursor-&gt;toArray())); </code></pre> <p>which produces the following error: <code>Serialization of 'MongoDB\BSON\ObjectID' is not allowed</code></p> <p>I also tried this:</p> <pre><code>$redis_cursor = \MongoDB\BSON\toJSON(\MongoDB\BSON\fromPHP($cursor-&gt;toArray())); </code></pre> <p>which produces this: <code>Cursors cannot yield multiple iterators</code></p> <p>Another try was this:</p> <pre><code>$redis_cursor = \MongoDB\BSON\toJSON(\MongoDB\BSON\fromPHP($cursor)); </code></pre> <p>Which returns an <code>empty string</code></p> <p>Whatever I try, I pretty much get one of the two errors mentioned above. Any help would be appreciated!</p> <p>I am using <code>mongodb version 1.1.5</code> if that is of any importance.</p> </div>

java 数据拦截,分布式锁处理,请大神指点?

为了防止redis缓存穿透问题,系统采用了布隆过滤器,刚开始数据只有几百条 随着时间增长,数据已经过万了,可能后期数据还会快速增长,有可能达到亿 想请教一下大神,如果数据过亿还能使用布隆过滤器吗?或者说还有更好的解决方案? 分布式锁,redis的setnx实现一把分布式锁,通过while来阻塞等待得到锁,最近发现 系统遭受攻击,举例:1万个线程都在等待着,这样耗时比较大,或者说并发量比较大 很多请求都阻塞着,这样的请求该怎么处理啊 请知道的大神给一个思路,谢谢了

Golang中的原子和并发安全Redis事务

<div class="post-text" itemprop="text"> <p>I'm trying to implement the following logic in my go program:</p> <pre><code>def action: 1. GET the value of KEY from Redis 2. SET the value of KEY to 0 </code></pre> <p>I'm using <a href="http://%22github.com/go-redis/redis%22" rel="nofollow noreferrer"><code>go-redis</code></a> module to interact with my Redis instance.</p> <p>I'm familiar with Redis transactions but I couldn't seem to find a decent document or example on how to implement the desired set of actions in a concurrent-safe and atomic manner in Golang.</p> <p><strong>Question</strong>: How can I implement the defined <code>action</code> and be sure no other Redis operation will take place between steps 1 and 2 even if I access my Redis instance from different go routines?</p> </div>

Golang中的管道和管道Redis函数是什么

<div class="post-text" itemprop="text"> <p>I want to perform an atomic transaction in redis using golang. How to do that ? What is the difference b/w Pileline and TxPieline and how to solve the problem using them. I have visited the following link: <a href="https://godoc.org/gopkg.in/redis.v5#example-Client-TxPipeline" rel="nofollow noreferrer">https://godoc.org/gopkg.in/redis.v5#example-Client-TxPipeline</a></p> <p>But explanation is not elaborate.</p> </div>

如何从golang的Redis键值存储中获取列表值?

<div class="post-text" itemprop="text"> <p>I am writing a function in golang to get the value from redis db by passing the key. The value is a list. I am using 'GET' redis command to get the value. But it is giving me error.</p> <p>You can find below the code,</p> <pre><code>func GetValue(key string) []string { var value []string var err error value, err = redis.Strings(conn.Do("GET", key)) if err != nil { log.Fatal(err) } fmt.Println(value) return value } func RetrieveValue() { keyType, _ := conn.Do("TYPE", recentItemKey) fmt.Println("Type", keyType) var results []string results = GetValue(recentItemKey) for _, val := range results { fmt.Println(val) } } </code></pre> <p>And the output is here,</p> <pre><code>Type list 2015/03/14 19:09:12 WRONGTYPE Operation against a key holding the wrong kind of value exit status 1 </code></pre> <p><strong>Version</strong></p> <pre><code>Go 1.4.2 Redis-2.8.19 </code></pre> <p><strong>Redis Go Library</strong></p> <pre><code>github.com/garyburd/redigo/redis </code></pre> <p>Could anyone help me on this.? Thank you</p> </div>

获取redis golang的队列长度

<div class="post-text" itemprop="text"> <p>I am using <a href="https://github.com/go-redis/redis" rel="nofollow noreferrer">go-redis</a> package. I fired below query:</p> <pre><code>rd.LLen("queue_1") </code></pre> <p>Which returning me below result with type <code>*redis.IntCmd</code>:</p> <pre><code>llen queue_1: 100001 </code></pre> <p>Count is perfect but I want only count with type of <code>int</code>. Can anyone help? </p> </div>

如何确保Redis用户在Go(Golang)中接收消息?

<div class="post-text" itemprop="text"> <p>I'm using gin framework to build an API server. In General, I'm build 2 projects. Project <code>'API'</code> and Project <code>'SOCKET'</code>. Project <code>'API'</code> is the main REST API that will used in Android, developed using <code>gin</code> framework (golang). And Project <code>'SOCKET'</code> is the socket server for client that will use socket connection , using node.js (<code>Socket.IO</code>) </p> <p>The process begin like this : <br> User A : as the requester ; A connect to <code>"API"</code> <br> User B : as the responder ; B connect to <code>"SOCKET"</code></p> <p><code>User A</code> call API <code>requestData</code> from android, the request will handled by <code>"API"</code>'s project. And Project <code>"API"</code> will record the request, and publish on redis as <code>new_request</code> using pubsub </p> <p>this is the code for example : </p> <pre><code>client := redis.NewClient(&amp;redis.Options{ Addr: "localhost:6379", Password: "", // no password set DB: 0, // use default DB }) pong, err := client.Ping().Result() fmt.Println(pong, err) if err !=nil { fmt.Println("err",err); } pubsub, err := client.Subscribe("responseclient") if err !=nil { panic(err) } defer pubsub.Close() err = client.Publish("new_request", "Example New Request").Err() if err !=nil { panic(err) } msg, err :=pubsub.ReceiveMessage() if err != nil { panic(err) } fmt.Println(msg.Channel, msg.Payload) </code></pre> <p>}</p> <p>In Project <code>"SOCKET"</code> there is a subscriber that will listen every publish that occured, and publish new message to channel <code>responseclient</code> this is for the example code : </p> <pre><code>ioApp.on ('connection' , function(socket) { redisSub.on('new_request', function (channel, message) { console.log(channel + ':' + message); redisPub.publish("responseclient", JSON.stringify(res)); }); </code></pre> <p>})</p> <p>This work smoothly, if <strong>User B is Connected to Socket.IO</strong>. But if <strong>User B</strong> was offline, or not connected to socket.io, this will waiting for long, until we kill manually or until User B is online</p> <p>What i am asking for , are : </p> <ol> <li>Can we create something like a <code>callback</code> on redis pub/sub ? If the subscriber doesn't accept the message, due to off line, or something else , we close the connection. Is this possible ?</li> <li>In Node.Js i know i can use timeout function, that will close the subscribe or emit any event if on certain time, there was no message received, how to do this on golang ? I need to inform the <code>User A</code> if <code>User B</code> is active or offline, so he can wait for a another time to create request. </li> <li>If nothing can, what is your suggestion for me to do this ? </li> </ol> <p>I hope my question , understandable, and can answered well. <br>*Some code maybe, missing variable. <br> ** I'm using this library for golang redis : <a href="https://github.com/go-redis/redis" rel="nofollow noreferrer">go-redis</a></p> </div>

如何在Golang中设置Redis密钥的到期时间

<div class="post-text" itemprop="text"> <p>I am using golang as my backend.I am storing some token values in redis.I m setting the values HSET and getting the values in HGETALL.I would like to know if there is any function to set the expiry for the keys that i m storing in the redis database.i want the token and its data to be deleted after 1hour. I m using Redigo package for redis. Thanks.Appreciate any help.</p> <pre><code>I use this to set the struct with has token as key redisCon.Do("HMSET", redis.Args{}.Add(hashToken).AddFlat(&amp;dataStruct)...) </code></pre> </div>

软件测试入门、SQL、性能测试、测试管理工具

软件测试2小时入门,让您快速了解软件测试基本知识,有系统的了解; SQL一小时,让您快速理解和掌握SQL基本语法 jmeter性能测试 ,让您快速了解主流来源性能测试工具jmeter 测试管理工具-禅道,让您快速学会禅道的使用,学会测试项目、用例、缺陷的管理、

计算机组成原理实验教程

西北工业大学计算机组成原理实验课唐都仪器实验帮助,同实验指导书。分为运算器,存储器,控制器,模型计算机,输入输出系统5个章节

Java 最常见的 200+ 面试题:面试必备

这份面试清单是从我 2015 年做了 TeamLeader 之后开始收集的,一方面是给公司招聘用,另一方面是想用它来挖掘在 Java 技术栈中,还有那些知识点是我不知道的,我想找到这些技术盲点,然后修复它,以此来提高自己的技术水平。虽然我是从 2009 年就开始参加编程工作了,但我依旧觉得自己现在要学的东西很多,并且学习这些知识,让我很有成就感和满足感,那所以何乐而不为呢? 说回面试的事,这份面试...

winfrom中嵌套html,跟html的交互

winfrom中嵌套html,跟html的交互,源码就在里面一看就懂,很简单

玩转Python-Python3基础入门

总课时80+,提供源码和相关资料 本课程从Python零基础到纯Python项目实战。内容详细,案例丰富,覆盖了Python知识的方方面面,学完后不仅对Python知识有个系统化的了解,让你从Python小白变编程大牛! 课程包含: 1.python安装 2.变量、数据类型和运算符 3.选择结构 4.循环结构 5.函数和模块 6.文件读写 7.了解面向对象 8.异常处理

程序员的兼职技能课

获取讲师答疑方式: 在付费视频第一节(触摸命令_ALL)片头有二维码及加群流程介绍 限时福利 原价99元,今日仅需39元!购课添加小助手(微信号:itxy41)按提示还可领取价值800元的编程大礼包! 讲师介绍: 苏奕嘉&nbsp;前阿里UC项目工程师 脚本开发平台官方认证满级(六级)开发者。 我将如何教会你通过【定制脚本】赚到你人生的第一桶金? 零基础程序定制脚本开发课程,是完全针对零脚本开发经验的小白而设计,课程内容共分为3大阶段: ①前期将带你掌握Q开发语言和界面交互开发能力; ②中期通过实战来制作有具体需求的定制脚本; ③后期将解锁脚本的更高阶玩法,打通任督二脉; ④应用定制脚本合法赚取额外收入的完整经验分享,带你通过程序定制脚本开发这项副业,赚取到你的第一桶金!

HoloLens2开发入门教程

本课程为HoloLens2开发入门教程,讲解部署开发环境,安装VS2019,Unity版本,Windows SDK,创建Unity项目,讲解如何使用MRTK,编辑器模拟手势交互,打包VS工程并编译部署应用到HoloLens上等。

基于VHDL的16位ALU简易设计

基于VHDL的16位ALU简易设计,可完成基本的加减、带进位加减、或、与等运算。

MFC一站式终极全套课程包

该套餐共包含从C小白到C++到MFC的全部课程,整套学下来绝对成为一名C++大牛!!!

利用Verilog实现数字秒表(基本逻辑设计分频器练习)

设置复位开关。当按下复位开关时,秒表清零并做好计时准备。在任何情况下只要按下复位开关,秒表都要无条件地进行复位操作,即使是在计时过程中也要无条件地进行清零操作。 设置启/停开关。当按下启/停开关后,将

董付国老师Python全栈学习优惠套餐

购买套餐的朋友可以关注微信公众号“Python小屋”,上传付款截图,然后领取董老师任意图书1本。

Python可以这样学(第一季:Python内功修炼)

董付国系列教材《Python程序设计基础》、《Python程序设计(第2版)》、《Python可以这样学》配套视频,讲解Python 3.5.x和3.6.x语法、内置对象用法、选择与循环以及函数设计与使用、lambda表达式用法、字符串与正则表达式应用、面向对象编程、文本文件与二进制文件操作、目录操作与系统运维、异常处理结构。

计算机操作系统 第三版.pdf

计算机操作系统 第三版 本书全面介绍了计算机系统中的一个重要软件——操作系统(OS),本书是第三版,对2001年出版的修订版的各章内容均作了较多的修改,基本上能反映当前操作系统发展的现状,但章节名称基

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

Vue.js 2.0之全家桶系列视频课程

基于新的Vue.js 2.3版本, 目前新全的Vue.js教学视频,让你少走弯路,直达技术前沿! 1. 包含Vue.js全家桶(vue.js、vue-router、axios、vuex、vue-cli、webpack、ElementUI等) 2. 采用笔记+代码案例的形式讲解,通俗易懂

微信公众平台开发入门

本套课程的设计完全是为初学者量身打造,课程内容由浅入深,课程讲解通俗易懂,代码实现简洁清晰。通过本课程的学习,学员能够入门微信公众平台开发,能够胜任企业级的订阅号、服务号、企业号的应用开发工作。 通过本课程的学习,学员能够对微信公众平台有一个清晰的、系统性的认识。例如,公众号是什么,它有什么特点,它能做什么,怎么开发公众号。 其次,通过本课程的学习,学员能够掌握微信公众平台开发的方法、技术和应用实现。例如,开发者文档怎么看,开发环境怎么搭建,基本的消息交互如何实现,常用的方法技巧有哪些,真实应用怎么开发。

150讲轻松搞定Python网络爬虫

【为什么学爬虫?】 &nbsp; &nbsp; &nbsp; &nbsp;1、爬虫入手容易,但是深入较难,如何写出高效率的爬虫,如何写出灵活性高可扩展的爬虫都是一项技术活。另外在爬虫过程中,经常容易遇到被反爬虫,比如字体反爬、IP识别、验证码等,如何层层攻克难点拿到想要的数据,这门课程,你都能学到! &nbsp; &nbsp; &nbsp; &nbsp;2、如果是作为一个其他行业的开发者,比如app开发,web开发,学习爬虫能让你加强对技术的认知,能够开发出更加安全的软件和网站 【课程设计】 一个完整的爬虫程序,无论大小,总体来说可以分成三个步骤,分别是: 网络请求:模拟浏览器的行为从网上抓取数据。 数据解析:将请求下来的数据进行过滤,提取我们想要的数据。 数据存储:将提取到的数据存储到硬盘或者内存中。比如用mysql数据库或者redis等。 那么本课程也是按照这几个步骤循序渐进的进行讲解,带领学生完整的掌握每个步骤的技术。另外,因为爬虫的多样性,在爬取的过程中可能会发生被反爬、效率低下等。因此我们又增加了两个章节用来提高爬虫程序的灵活性,分别是: 爬虫进阶:包括IP代理,多线程爬虫,图形验证码识别、JS加密解密、动态网页爬虫、字体反爬识别等。 Scrapy和分布式爬虫:Scrapy框架、Scrapy-redis组件、分布式爬虫等。 通过爬虫进阶的知识点我们能应付大量的反爬网站,而Scrapy框架作为一个专业的爬虫框架,使用他可以快速提高我们编写爬虫程序的效率和速度。另外如果一台机器不能满足你的需求,我们可以用分布式爬虫让多台机器帮助你快速爬取数据。 &nbsp; 从基础爬虫到商业化应用爬虫,本套课程满足您的所有需求! 【课程服务】 专属付费社群+每周三讨论会+1v1答疑

SEIR课程设计源码与相关城市数据.rar

SEIR结合学报与之前博客结合所做的一些改进,选择其中三个城市进行拟合仿真SEIR结合学报与之前博客结合所做的一些改进,选择其中三个城市进行拟合仿真SEIR结合学报与之前博客结合所做的一些改进,选择其

Python数据挖掘简易入门

&nbsp; &nbsp; &nbsp; &nbsp; 本课程为Python数据挖掘方向的入门课程,课程主要以真实数据为基础,详细介绍数据挖掘入门的流程和使用Python实现pandas与numpy在数据挖掘方向的运用,并深入学习如何运用scikit-learn调用常用的数据挖掘算法解决数据挖掘问题,为进一步深入学习数据挖掘打下扎实的基础。

2019 AI开发者大会

2019 AI开发者大会(AI ProCon 2019)是由中国IT社区CSDN主办的AI技术与产业年度盛会。多年经验淬炼,如今蓄势待发:2019年9月6-7日,大会将有近百位中美顶尖AI专家、知名企业代表以及千余名AI开发者齐聚北京,进行技术解读和产业论证。我们不空谈口号,只谈技术,诚挚邀请AI业内人士一起共铸人工智能新篇章!

Java面试题大全(2020版)

发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本套Java面试题大全,全的不能再全,哈哈~ 一、Java 基础 1. JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。 JRE:Java Runtime Environ...

定量遥感中文版 梁顺林著 范闻捷译

这是梁顺林的定量遥感的中文版,由范闻捷等翻译的,是电子版PDF,解决了大家看英文费时费事的问题,希望大家下载看看,一定会有帮助的

GIS程序设计教程 基于ArcGIS Engine的C#开发实例

张丰,杜震洪,刘仁义编著.GIS程序设计教程 基于ArcGIS Engine的C#开发实例.浙江大学出版社,2012.05

人工智能-计算机视觉实战之路(必备算法+深度学习+项目实战)

系列课程主要分为3大阶段:(1)首先掌握计算机视觉必备算法原理,结合Opencv进行学习与练手,通过实际视项目进行案例应用展示。(2)进军当下最火的深度学习进行视觉任务实战,掌握深度学习中必备算法原理与网络模型架构。(3)结合经典深度学习框架与实战项目进行实战,基于真实数据集展开业务分析与建模实战。整体风格通俗易懂,项目驱动学习与就业面试。 建议同学们按照下列顺序来进行学习:1.Python入门视频课程 2.Opencv计算机视觉实战(Python版) 3.深度学习框架-PyTorch实战/人工智能框架实战精讲:Keras项目 4.Python-深度学习-物体检测实战 5.后续实战课程按照自己喜好选择就可以

三个项目玩转深度学习(附1G源码)

从事大数据与人工智能开发与实践约十年,钱老师亲自见证了大数据行业的发展与人工智能的从冷到热。事实证明,计算机技术的发展,算力突破,海量数据,机器人技术等,开启了第四次工业革命的序章。深度学习图像分类一直是人工智能的经典任务,是智慧零售、安防、无人驾驶等机器视觉应用领域的核心技术之一,掌握图像分类技术是机器视觉学习的重中之重。针对现有线上学习的特点与实际需求,我们开发了人工智能案例实战系列课程。打造:以项目案例实践为驱动的课程学习方式,覆盖了智能零售,智慧交通等常见领域,通过基础学习、项目案例实践、社群答疑,三维立体的方式,打造最好的学习效果。

微信小程序开发实战之番茄时钟开发

微信小程序番茄时钟视频教程,本课程将带着各位学员开发一个小程序初级实战类项目,针对只看过官方文档而又无从下手的开发者来说,可以作为一个较好的练手项目,对于有小程序开发经验的开发者而言,可以更好加深对小程序各类组件和API 的理解,为更深层次高难度的项目做铺垫。

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

去除异常值matlab程序

数据预处理中去除异常值的程序,matlab写成

用verilog HDL语言编写的秒表

在秒表设计中,分模块书写。用在七段数码管上显示。输入频率是1KHZ.可以显示百分秒,秒,分。如要显示小时,只需修改leds里的代码和主模块代码。改程序以通过硬件电路验证。完全正确。

[透视java——反编译、修补和逆向工程技术]源代码

源代码。

相关热词 c#框体中的退出函数 c# 按钮透明背景 c# idl 混编出错 c#在位置0处没有任何行 c# 循环给数组插入数据 c# 多线程死锁的例子 c# 钉钉读取员工排班 c# label 不显示 c#裁剪影像 c#工作进程更新ui
立即提问