聚合文章列表
23 浏览

mqtt异步publish方法

2、Connect这里connect没有使用自动重连机制connect(),而是单独开一个协程执行掉线后自动重连_auto_reconnect重连函数,每隔1s执行一次:1asyncdef_auto_reconnect(client):2whileTrue:3ifnotclient.session.transitions.is_connected():#如果已经连接上则不执行重连4try:5awaitclient.reconnect()6exceptConnectException:7pass8awaitasyncio.sleep(1)连接函数,仅执行一次,并启动重连函数协程1asyncdefconnect():2client=MQTTClient(config={"auto_reconnect":False})

消息系统 2018-01-05 发布
21 浏览

Prefetch count--预取数量

一、前言前面提到如果有多个消费者同时订阅同一个Queue中的消息,Queue中的消息会被平摊给多个消费者。这时如果每个消息的处理时间不同,就有可能会导致某些消费者一直在忙,而另外一些消费者很快就处理完手头工作并一直空闲的情况。我们可以通过设置prefetchCount来限制Queue每次发送给每个消费者的消息数,比如我们设置prefetchCount=1,则Queue每次给每个消费者发送一条消息;消费者处理完这条消息后Queue会再给该消费者发送一条消息。二、事例生产端:#-*-coding:UTF-8-*-importpikaconnection=pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))channel=connection.channel()#声明队列,并进行队列持久化channel.queue_declare(queue='task_queue',durable=True)#信息内容message="Hell

消息系统 2018-01-05 发布
20 浏览

消息队列设计思路

ActiveMQ、RabbitMQ、Kafka等都是大家耳熟能详的消息队列,了解消息队列的原理,我们也可以尝试构建一个自己的消息队列。从消息队列的功能上思考-生产者创建一条消息流,通过http或tcp协议传输到消息队列中;消息队列对数据流进行处理,在适当的时机发送给合适的消费者;消费者接收处理消息后,将处理结果反馈给消息队列服务。简而言之,消息队列作为中间人,为生产者和消费者架起数据流传输的桥梁,使生产者和消费者之间无需关注自己在和谁交换数据,整个过程都是异步的。向后走一步,我们会发现必须面对生产者、消费者、消息队列之间的关系如何管理的问题。在分布式服务中,生产者与消费者之间通常是多对多的关系,为确保消息的正确投递,消息队列可以无需感知生产者的存在,但必须感知消费者的存在,否则生产者必须在每个消息头部附带消费者的地址信息,很大程度地削减了消息队列的作用。通过这个场景预设,我们就可以确定一个基本的消息队列需要实现哪些功能:消息接收消息转发消费者确认消费者注册从功能上思考消息接收、转发与确认MQ需要开放一个服务用于接

消息系统 2018-01-05 发布
AD 友情赞助
16 浏览

合格的配置中心应有的素养

最近在看配置中心的一些设计,好像基本都是五花八门,主要看的是还是携程的Apollo这个开源的配置中心项目。一直以来都觉得配置中心很重要,因为这对于灰度发布,线上实施干预都有非常重大的作用。但是嘛,你们都知道我有多懒,所以又一直没去好好了解一下,今天趁这个时间跟大家聊聊配置一个合格的配置中心应有的素养。首先什么是配置?配置有什么获取方式?为什么需要实时变更配置?为什么需要配置中心配置中心的分层有必要吗?实时变更配置的方式有几种?配置中心还有什么其他基本的素养?一个实时推送的配置中心架构是怎样的?01、首先什么是配置?我的理解是,配置是同一个程序在不同场景不同环境下做出不同表现的一个可变动频繁的点。配置在启动的时候通过各种形式进行获取,在整个生命流程中配置一般来说,是只读的,程序是不会主动去变更的,只有其他地方变更了之后才会触发程序的变更。最经典的配置有两类,一类是数值型,比如客户的授信额度比例。一类是Bool型,用来对某些功能做禁用或启用。publicclassconfiguration{privatei

消息系统 2018-01-05 发布
29 浏览

程序员玩手游的方式

可是很多人费尽心思跳了一下午也没超过100分但排行榜里四分之三的人都超过三位数了……真是扎心了……今天小编来告诉你,如何才能获取高分,如何才能占据朋友圈榜首?游戏攻略拿高分普通版本的高分秘籍是这样的:如果你每次都能挑到各自的正中间的话,可以+2分,如果连着跳到中间会+4、+6、+8、+10……跳到污水井盖上面,停留2秒,等到下水道声音响起直接+5分跳到魔方上面,停留2秒,等到魔方转正会直接+10分跳到音乐盒上面,停留2秒,等到音乐响起会直接+30分跳到便利店,停留2秒,等到便利店开门会直接+15分以上是针对普通用户,但对咱们程序猿来说用这套太Low了,接下来要说的是如何从技术层面去实现高分:技术手段实现高分通过Python手段在Github上面已经有人用Python来玩跳一跳这个游戏了,想多少分就有多少分。GitHub地址:https://github.com/wangshub/wechat_jump_game

程序员 2018-01-05 发布
22 浏览

全家都是程序员,会是一种什么样的体验?

4、网友丁:家庭游玩爸爸用Java,妈妈用C,叔叔用Python,阿姨用VB,然后每次家庭游玩都会虐我这个用PHP的。5、网友戊:节假日每年家里面会有两个能全部休息的假日,一个是春节,一个是10月24日。当然也有很多网友表示打死不能让孩子当程序员。并表示:家里有我跟老公是程序员就够了,孩子要是再学编程之间断绝关系,太累了。其实程序员这个行业是非常辛苦的,尤其很多正在当程序员的人更是深有体会。所以如果使你的话,你希望自己的孩子长大以后当个程序员吗?欢迎各位读者在评论区进行谈论分享呦!最后我要推荐一下我的前端教程学习群:657137906,里面都是学习前端的,如果你正在学习前端,小编欢迎你加入。小编会在群中不定期分享干货,包括我精心整理的一份前端零基础教程。欢迎各位初学和进阶中的小伙伴。

程序员 1900-01-01 发布
AD 友情赞助
10 浏览

开发者谈游戏开发中的三大易耗资源:金钱,时间和士气

原文作者:SaraCasen译者:MeganShieh在联合创立MidnightHub之前,我曾在Paradox和Tarsier等公司工作过。MidnightHub是一个由五位开发者组成的瑞典游戏工作室。我们即将推出的《LakeRidden》是一款第一人称益智游戏,游戏中充满了故事和谜团。时间、资金、体力、士气和脑力当我们在做某件事情的时候,无论具体是什么事,大家都必须管理好手中的资源。最基本的资源是:时间,资金以及你产品的规模。时间这个概念对于人类的大脑来说,其实是有点不好理解的。有些日子似乎在眨眼间就过去了,而另一些日子却感觉度日如年。不同的任务会消耗团队中的不同种资源。比如:为游戏中的房子建造30个新道具可能不会花费任何额外的资金,但它需要很多时间来制作,如果是单调的工作,团队成员的士气可能就会受到打击。开发游戏的时候,大部分团队手中的资金都是有限的。游戏发行后,你会希望自己能够把之前花出去的这些钱赚回来;不仅如此,要想继续开发其他的游戏,你还得赚更多的钱。有些东西是非常烧钱的,比如人力(员工薪水)或者雇

程序员 2018-01-05 发布
17 浏览

40个只有程序员才看得懂的段子

来源:烽烟博客作者:烽烟无限1、一程序员去面试,面试官问:“你毕业才两年,这三年工作经验是怎么来的?!”程序员答:“加班。”2、某程序员对书法十分感兴趣,退休后决定在这方面有所建树。于是花重金购买了上等的文房四宝。一日,饭后突生雅兴,一番磨墨拟纸,并点上了上好的檀香,颇有王羲之风范,又具颜真卿气势,定神片刻,泼墨挥毫,郑重地写下一行字:helloworld。3、问:程序员最讨厌康熙的哪个儿子。答:胤禩。因为他是八阿哥(bug)4、程序猿要了3个孩子,分别取名叫Ctrl、Alt和Delete,如果他们不听话,程序猿就只要同时敲他们一下就会好的。5、今天在公司听到一句惨绝人寰骂人的话:“你TM就是一个没有对象的野指针!”6、程xx遭遇车祸成植物人,医生说她活下来的希望只有万分之一,唤醒更为渺茫。她的同事和亲人没放弃,并根据程xx对testing痴迷的作风,每天都在她身边念:“你测的模块上线后回滚了。”奇迹发生了,程xx醒来第一句话:确认那模块是我测的?7、一个程序员在海滨游泳时溺水身亡。他死前拼命的

程序员 2018-01-05 发布
18 浏览

MHA高可用架构与Atlas读写分离

1.1MHA简介1.1.1MHA软件介绍MHA(MasterHighAvailability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在10~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。MHA能够在较短的时间内实现自动故障检测和故障转移,通常在10-30秒以内;在复制框架中,MHA能够很好地解决复制过程中的数据一致性问题,由于不需要在现有的replication中添加额外的服务器,仅需要一个manager节点,而一个Manager能管理多套复制,所以能大大地节约服务器的数量;另外,安装简单,无性能损耗,以及不需要修改现有的复制部署也是它的优势之处。MHA还提供在线主库切换的功能,能够安全地切换当前运行的主库到一个新的主库中(通过将从库提

MySQL 2015-12-29 发布
AD 友情赞助
17 浏览

在linux中安装mysql并解决中文乱码问题

安装包下载地址下载完成后直接sudodpkg-ipath/to/package即可2.增加官方apt源,然后下载官方源下载地址此处下载最下边30k左右的deb包,下载完成后用管理员权限运行sudodpkg-ipath/to/package此时已经将官方源加入到我们自己的仓库中了。然后升级一下sudoapt-getupdate此时可使用命令来安装mysqlsudoapt-getinstallmysql-server安装过程中会提示我们输入root密码,按照指示运行即可。下面几个命令比较常用,都应该能懂什么意思sudoservicemysqlstatesudoservicemysqlstartsudoservicemysqlstopsudoservicemysqlrestart此时mysql安装完毕。假如你使用了其他的shell终端,可能会出现不能启动mysql的情况,只需要将你的设置的环境变量的文件加入到你的新shell中启动执行即可。mysql中文乱

MySQL 2018-01-05 发布
23 浏览

前端职场腹黑学:醉心于编程的你被腹黑了吗?

前言2018刚开年,职场上、公司里本应该是一片喜气洋洋的和谐氛围。结果,某晚的一次深度聊天,让我对程序员的职场有了个重新的认知。我在想,程序员不就是敲个代码吗,这么简单淳朴的生物,难道还有职场腹黑学一说?不听不知道,一听还真是那么回事。如果你在职场中被腹黑过,那么赶紧搬好小板凳,一起来听听闰土怎么说。接下来,正文从这开始~看到这,可能有的老司机忍不住会跳出来喷我,说月薪都没过万,你还谈什么腹黑,还谈什么职场?​各位看官别急,下面我会按照几个小节来具体聊聊。首先我想谈谈上面的言论,如果所在职场太LOW,应该将精力放在自我提升上而非勾心斗角,这是对的,但是去全盘否定中低薪资层的职场,就不是对的。因为对世界上绝大部分的人来说,那些微不足道的蝇头小利,一直以来都是他们对生活真正赤裸裸的追求。而且那种欲望更强烈,更残忍,更不择手段。身为小白的你,该如何面对这个纷扰的前端圈,及编程界?也许有童鞋会问,面对暗流涌动的前端编程世界,我该如何应对?我的回答是:基础打好配合实战,关注技术趋势,不抗拒,持续学习。只有基础是没用的,一味的追

Angular 1900-01-01 发布
25 浏览

前端:2018秋招面试经验总结

前言从8月中旬实习结束就开始找工作了,一直到十一,终于尘埃落定,十一出去好好放松了一下,今天写一些面经回报牛客。非科班,从大三开始学习前端,几乎是零基础,但很庆幸遇到了很好的学长,帮助我少走了不少弯路,自己也比较喜欢前端,所以最后虽然没有拿到bat的offer,但目前也收到了美团、迅雷、网宿、CVTE的,最终还是决定去美团了。比较后悔的时内推比较晚了,之前实习一直没有在意,实习回来内推已经不多了,我笔试也比较菜,所以前期挂到绝望。。。笔试笔试没有太多的方法,主要就是刷题,牛客网上的题、剑指offer等等,由于自身不是科班,秋招之前准备的也不是很充分,自学了计算机网络、操作系统、数据结构课程,但是算法一直都是弱项,只是把剑指offer刷了好几遍,才能勉强过一些公司的笔试。面试技巧1、多看面经。多看,多总结,很多知识点都是常考的,提前看看没有坏处。2、多面。对于水平一般的同学,可以在前期多投一些公司,不管大的小的。小的公司可以帮助你积累面试经验,这样,在后面面试大公司的时候心里也就有底了。3、尽量去表现自己,表现的自信一

HTML5 1900-01-01 发布
AD 友情赞助
23 浏览

C#/.NET 匿名函数会捕获变量,并延长对象的生命周期

小伙伴在一次垃圾回收中,发现对象并没有被回收掉,而注释掉一句代码后它便能够回收。这究竟是为什么?不关心探索过程的就直接拉到最后看结论吧!探索测试代码是这样的:privatevoidOnLoaded(objectsender,RoutedEventArgse){varvariable=newMainPage();varreference=newWeakReference(variable);variable=null;GC.Collect();Console.WriteLine($"{reference.TryGetTarget(outvartarget)}:{target}");DoSomething(x=>DoAnotherThing(x));}需要验证的是MainPage对象是否被回收。然而在这段代码中,MainPage并没有被回收;然而去掉最后一行,MainPage便可以正常回收。关键是,即便是在Console.WriteLine上打下断点,让代码

.Net 2018-01-05 发布
16 浏览

自定义个“缓存数据库”玩玩

前言:首先声明,此文题目算是标题党的一种,是本人为了完成与widows服务通信编程学习幻想出来的一个模型(并不是真的缓存数据库),并且会作为本人以后加深多线程、设计模式、非关系型数据库等方面学习的一个模型实例,毕竟有一个实际的模型更容易加深理解。完成这部分模型,大概会做一下几件事情:1、创建一个Windows服务(用来寄存这个“缓存数据库”)2、创建一个WCF服务,寄宿在windows服务中(用于跟客户端通信,对“缓存数据库”进行增删查操作)3、创建客户端进行测试第1步:WCF服务的创建及对缓存对象增删查的实现WCF服务创建的过程及其Endpoint节点相关基础在这里不作累述,网上很多资料,这里直接贴Contract及其实现的代码,保存表数据的数据结构是Dictionary,其中key存放是表名,DataTable存放是数据。1usingSystem;23usingSystem.Collections.Generic;45usingSystem.Data;67

.Net 2018-01-05 发布
31 浏览

【ASP.NET Core】运行原理(4):授权

本系列将分析ASP.NETCore运行原理【ASP.NETCore】运行原理(1):创建WebHost【ASP.NETCore】运行原理(2):启动WebHost【ASP.NETCore】运行原理(3):认证【ASP.NETCore】运行原理(4):授权在认证阶段通过用户令牌获取到用户的Claims,而授权就是对这些Claims的验证。目录授权核心AuthorizationOptionsAuthorizationPolicyAuthorizationPolicyBuilder执行授权AuthorizeFilterIPolicyEvaluatorIAuthorizationService总结授权核心services.AddAuthorization(opt=>opt.AddPolicy("isAdmin",builder=>builder.RequireUserName("admin")));通过上面的代码,可以添加一个isAdmin的授权。对于第一个参数opt:publicclassAuthorizat

.Net 2018-01-05 发布
19 浏览

Visual Studio Code 编辑器使用

image.png之前一直都是用sublimetext作为开发工具,用久了自然而然会觉得生活无趣,而且当时用sublimetext装了很多插件,有些插件不能用,于是决定试试微软的新产品VisualStudioCode。1.开始在这里界面里你就可以看到一个非常有情怀的快速链接:安装键盘快捷方式(你可以安装包括但不限于Vim、Sublime、Atom的键盘快捷方式),所有这个coding工具还是非常容易上手的。从体积来说比Sublimetext大了不少,30多兆,启动速度也肯定会慢一些,但还是在可接受的范围内,这个还跟机器有关系。VisualStudioCode的快捷键设置是统一管理的,所以你只需要修改一个文件就可以了。我们先来看看VisualStudioCode的常用快捷键。VisualStudioCode有两个比较重要的文件,一个是setting.json(基本设置),另一个是keybindings.json(配置快捷键文件)。它们分别在【文件】-【首选项】-【设置】

.Net 1900-01-01 发布
23 浏览

ASP.NET Core使用静态文件、目录游览与MIME类型管理

前言今天我们来了解了解ASP.NETCore中的静态文件的处理方式.以前我们寄宿在IIS中的时候,很多静态文件的过滤和相关的安全措施都已经帮我们处理好了.ASP.NETCore则不同,因为是跨平台的,解耦了IIS,所以这些工作我们可以在管道代码中处理.正文在我们的Web程序开发中,肯定要提供很多的静态文件(比如:JS,CSS)给客户端下载使用.所以我们先来看看ASP.NETCore中是怎么处理的.当我们创建一个ASP.NETCoreMVC的模版程序后,会发现它与传统的文件结构还是会有区别.多了一个wwwroot文件夹,少了很多其他的资源文件夹.如图:我们点进去,就可以看到,微软的模版,已经把所有的资源文件全放到了这里面,如图:这样,项目就干净了许多,下面,我们就来讲讲这个资源根目录1.提供静态文件我们到模版的Startup管道配置中,可以看到,注入相关静态资源的代码,已经帮我们写好了,如图:这句话就是注入静态资源用的,默认会将wwwroot的资源直接配置的和根目录一样,来方便访问.

.Net 2018-01-05 发布
23 浏览

RabbitMQ消息分发轮询和Message Acknowledgment

一、消息分发RabbitMQ中的消息都只能存储在Queue中,生产者(下图中的P)生产消息并最终投递到Queue中,消费者(下图中的C)可以从Queue中获取消息并消费。多个消费者可以订阅同一个Queue,这时Queue中的消息会被平均分摊给多个消费者进行处理,而不是每个消费者都收到所有的消息并处理。启动3个消费者生产者依次生成3条消息可见3条消息分别被3个消费者获取,所以RabbitMQ是采用轮询机制将消息队列Queue中的消息依次发给不同的消费者二、消息确认(MessageAcknowledgment)在实际应用中,可能会发生消费者收到Queue中的消息,但没有处理完成就宕机(或出现其他意外)的情况,这种情况下就可能会导致消息丢失。为了避免这种情况发生,我们可以要求消费者在消费完消息后发送一个回执给RabbitMQ,RabbitMQ收到消息回执(Messageacknowledgment)后才将该消息从Queue中移除;如果RabbitMQ没有收到回执并检测到消费者的RabbitMQ连接断开,则

消息系统 2018-01-05 发布
20 浏览

程序员最常说的15句话,你中枪了没

1.“在我的电脑上正常的。”2.“如果有bug出现,肯定是你的操作问题。”3.“这不是bug,这只不过是配置问题,或者网络问题。”4.“这个需求做不了。”5.“好了,但还有一些细节要调一下。”6.“只是改一行代码,没事,放心。”7.“这些bug是上一个开发者写的,不是我写的。”8.“之前一直都没有出现过这种情况啊。”9.“这个简单的,我一小时能完成。”10.“没办法,这是一个公认的bug。”11.“我是来写bug的。”12.“啥时候上线?”“快了!”13.“如果有bug出现,肯定是你的操作问题。”14.“我不是修电脑的。”15.“谁改了我的代码?!”

程序员 2018-01-05 发布
23 浏览

比CRUD多一点儿(一):MySQL常用命令

GoogleEarth截图这是MySQL系列笔记的第一部分,本系列笔记希望能按照笔者自己学习MySQL技术的经历来记录,避免纯粹按照内容一块一块总结,也就是不同于一般按内容分配章节的书籍的结构,有一个平滑的阅读曲线。内容比较丰富的技术点会按照专题在多个学习笔记中逐渐深入。首先,请如果还完全为接触过MySQL的读者先阅读w3c的SQL教程,再来读本篇内容。这部分的标题叫比CRUD多一丁点儿,比起最基础的w3c的SQL教程之外,只多一点的扩展,满足应付从纯粹阅读入门资料到可以上手完成一个简单的工作的需求。第一篇的主要内容会是最常用的一些mysql命令。因为虽然有很多图形化的工具,但在实际的工作中因为需要去线上服务查看数据,处理问题,字符界面的命令行工具是必不可少的。客户端程序mysql:连接交互式终端mysql-h$host-P$port-u$user-p$passsword$database_name例如用户root使用密码mydb@xxx用链接到地址为192.168.1.99,端口为3306的数mysql进程,并默

MySQL 1900-01-01 发布
AD 友情赞助