在我负责顺风车LBS以来,感受愈加强烈;区别于无状态服务,数据服务的几个方面需要格外关注。(此处假设数据服务类似redis基于内存,数据量大到需要磁盘存储,关注点会有所不同。)...架构设计:多主、主从或者主备,关系到数据分片;考虑服务故障、数据一致性、读写效率等;扩容缩容要方便; 数据同步:不同的集群架构,选择不同同步方式,主从同步或上游同步,RPC或者MQ; 数据存储:在线部分关注数据结构和锁粒度设计...数据同步 由于分区存在多个角色相同的服务,都接受分区全量数据,数据一致性格外重要;多主架构,上游或者proxy保证数据一致性,如通过RPC请求: ?...数据同步 ? 以redis为例,数据同步通过数据文件和命令操作实现。初次同步master将数据文件完整发送给slave,后者load至内存;随后增量同步,逐命令或者定时同步写操作。...数据存储 数据结构 为了更合理的设计锁,通常都会自研一些数据结构,存储数据,提供快速读写功能。redis由于单线程设计,并没有过多考量,但还是设计了不少优秀的数据结构,如hash、跳表等。
下面要跟大家分享的是,我经手的一个真实数据可视化大屏项目改版,接下来会分享给大家一套全面的数据可视化技法,包括科学的运用图表、运用色彩、把控数据层级以及视觉层级,达到美学形式与功能需要齐头并进。...数据可视化大屏设计慎用大面积的渐变色,小面积可尝试,一般大屏都是拼接屏,品牌不一样色差会表现不一,所以初稿出来后可以先去大屏上看下效果。...注解: 数据需要对比分析,显然这个玫瑰图表并不能很好的说明对比,每个维度大小排列没有规律,实际数据分布不均匀,导致没有对比的效果,改版后突出总的数据,用条形图从大到小依次排列各维度数据,数据上有对比,视觉上更有主次...注解: 首先是旧版用色不恰当,最严重的问题是图表上没有任何数据,因为展示型的大屏,很少有交互行为,这样的设计是不可取的,不能让观者去猜百分比数据,数据可视化就要用图表数据的形式展示出来最直接的信息,除非是展示趋势并不是准确的数据...通过了解数据要表达的本质后,选择适合他的图表,这时候就需要打开几个开源的图表网站找图表,记住你的图表用的是网站的哪一个,开发如果找不到就丢给他网址。
前段时间做了一个 nodejs 应用,项目架构是 前端 vue 单页应用,后端 nodejs 其实有考虑 ssr,但是因开发时间比较紧张,就没能使用。 下面是开发过程中的一些经验以及遇到的一些问题。..., - api/ #对后端的mock(接口数据) - index.js #mock入口文件 node_modules/ # 项目启动开发工具依赖包 server/ # 服务端代码 - channel/...# 数据渠道、来源(java http、java dubbo、数据库、redis) - config/ # 网站配置文件(环境配置、数据库、redis 配置等) - middleware/ # 中间件...使用 vscode开发,并启动nodejs服务,可以很方便的进行断点 debug。...开发此项目的时候用的是方法二,好处是可以少启动一个端口,mock 可以和 client 的 webpack-dev-server 共享端口。
关于开发习惯这部分内容,其实跟SDK关系不大,只是在SDK开发中逐渐沉淀下来的,而且有些也已经纳入到我们的流程中了,所以就简单汇总说明一下。...开发中有时候为了配合测试一些新功能会对一些参数作调整,例如 定时任务的间隔时间 一些配置开关,例如加密不加密等 一些特定逻辑,可能会写死为false或者true强制走进分支方便测试等 有时候开发周期比较长...例如: //TODO hardyshi 暂时写到这里,走开一下,回来继续完成数据落地到DB的逻辑 开发中有时候逻辑比较多,或者比较复杂,可能会优先完成主体部分而遗漏一些待处理的分支,例如:...一些简单的分支逻辑 一些异常逻辑处理 一些特殊数据上报等为接口等服务的逻辑等 这些点同样属于重要但是容易遗漏的点,尤其是如果开发周期比较久的时候,使用TODO就可以轻松避过这些问题了。...对于SDK的功能,开发者怎么去接入,其实我们也用TODO标签标注,开发者接入某一个功能,只需要处理了对应的TODO即可完成接入,不过貌似没有人关注。
开个系列文章,记录自己在日常工作中的踩坑经验,学习和总结如何用正确的姿势做事情。
前些天在边学习边试着写一个后台管理系统,后台的前端是用 Vue + ElementUI 写的,只是一个大体的框架,后端是由 Express 驱动的,数据库是 Mongodb。...然后是后端方面,写路由和数据库操作就不多说了。重要的是路由方面的可复用性。一个接口写一次还好,但是后期可能会用到多次,只是每次的 URI 不同,所以写一套通用接口就必不可少了。...1const app = require('express')() 2app.use('/admin/api', router) COPY 其次是写一个通用接口,比如查询文章和查询分类接口,其实只是查询的数据库模型不同而已...$http = http COPY 视图可复用性 比如编辑和新建,视图应该是差不多的,只是获取数据和提交的接口不同,一样的布局不需要写 2 次相同的代码,修改起来也不太好操作。...COPY 由于编辑文章需要提前向后端获取数据,所以可以这么写。
总结:后台list集合对象,对应前端传参数,数组,那么则定义数组,然后将参数对象push到数组,后台则能接收到参数。
注:本文出自Gcow安全团队绝影小组成员瞳话 SQL注入经验—利用笛卡尔算积进行大负荷注入 在常见的渗透测试中,我们都知道SQL注入攻击中有联合查询,报错注入,盲注还有DNS注入等等,那么如果一个网站存在基于时间的盲注...,而恰好sleep这类核心函数被过滤的话,我们如何绕过进行注入呢,这里就分享一个经验——大负荷注入。...大负荷查询 Mysql支持这种运算方式,我们的思路是让Mysql进行笛卡尔算积使其造成大负荷查询达到延时的效果。...既然要用笛卡尔算积就要需要大额的数值来计算,在mysql数据库中都有information_schema这个表,这个表里面的数据还是蛮多的,查询一下数量 ?...可见是数据库名是test,字母t的Ascii码是116,这里构造payload 发现延迟了5秒,其实这5秒只是数据库进行大负荷的笛卡尔算积 ?
时间维度优先,明确的时间范围和显示颗粒度 这条原则不是非常绝对,但是以我的经验,任何数据指标,你都得先纵向地观察变好还是变坏,才有必要去横向切片(用其他维度去探究为什么)。使用场景参考案例一。...补充一点,静态型的图标传达信息少,占面积大。这与数据产品要在有限的页面空间中传达足够多的信息(个人认为)是相违背的,所以最好还是作为辅图。...——这就是筛选需求 这就是通过数据找到问题并针对性进行解决的一个典型。下钻的深度可以随着数据的积累慢慢增加,但下钻和筛选必须同步开发,缺一不可。...知识无极限 6、回复“啤酒”查看数据挖掘关联注明案例-啤酒喝尿布 7、回复“栋察”查看大数据栋察——大数据时代的历史机遇连载 8、回复“数据咖”查看数据咖——PPV课数据爱好者俱乐部省分会会长招募 9、...专注大数据行业人才的培养。每日一课,大数据(EXCEL、SAS、SPSS、Hadoop、CDA)视频课程。大数据资讯,每日分享!数据咖—PPV课数据爱好者俱乐部!
http://blog.csdn.net/cyblueboy83/article/details/7905862 下周参与开发的第三款MMORPG准备上市了,开发了一年左右,前面感觉拼得有点太过了,心身比较疲惫...近两个月进行了一些调整,感觉状态和开发效率有所提升,在3人的服务器团队的努力下,完成了一些功能并且稳定性还可以。归结下来大概比较有用有几方面。...第一,坚持劳逸结合.无论项目有多急,量有多大,难度有多高,都必须保持健康的身体和良好的精神状态,是项目高效开发的最重要前提。...游戏开发毕竟属于创意行业,一味的长时间加班加点工作很难保持较高的工作效率,特别是服务器这种需要7*24小时长时间稳定运行的服务进程,服务器稳定重于泰山。...所以需要坚持所有服务器组开 发人员每天所提交的代码,在隔天或者版本发布前最好都由服务器组所有人员进行review,review重点检查代码容易造成dmp机的bug,另外关系到经验金钱元宝、装备商城物品这种游戏里面国计民生的代码一定要重点检查
平时习惯了在某些特定的数据集合上做实验,简单的tokenization、预处理等步骤就足够了。但是在数据越来越大的年代,数据清洗越来越重要,也越来越复杂。...前言 科研工作者、工程师、业务分析者这些和数据打交道的职业,数据分析在他们工作中是一项核心任务。数据分析不仅仅针对“大数据”的从业者,即使你笔记本硬盘上的数据也值得分析。...接下来会介绍一些关于如何有效清洗数据,所有介绍的内容都可以由任意编程语言实现。 使用断言 这是最重要的一点经验:使用断言(Assertions)揪出代码中的bug。...可选:把原始数据一并存储下来 当你不用担心存储空间的时候这一条经验还是很有用的。...这一点其实是非常重要的,因为你完成了数据清洗之后,接下来就会直接在这些干净数据上进行下一步工作了。如非万不得已,你甚至再也不会碰那些原始数据了。因此,在你开始数据分析之前要确保数据是足够干净的。
这是数据预处理重要的原因,并且在数据挖掘过程中占有如此大的工作量,这样数据挖掘者 可以从容地操纵问题空间,使得容易找到适合分析他们的方法。 有两种方法“塑造”这个问题空间。...我们可能预料到一些数据挖掘项目会失败,因为解决业务问题的模式并不存在于数据中,但是这与数据挖掘者的实践经验并不相关。...前文的阐述已经提到,这是因为:在一个与业务相关的数据集中总会发现一些有趣的东西,以至于即使一些期望的模式不能被发 现,但其他的一些有用的东西可能会被发现(这与数据挖掘者的实践经验是相关的);除非业务专家期望的模式存在...然而,Watkins提出一个更简单更直接的观点:“数据中总含有模式。”这与数据挖掘者的经验比前面的阐述更一致。...但是,数据挖掘者的经验不仅仅局限于客户关系管理问题,任何数据挖掘问题都会存在模式(Watkins的通用律)。
这也是保证版本出现低级错误的关键,我们根据一次次爬坑的经验总结了一系列的检查项(后面专门说明)。开发者可以根据自身需要制定自己的流程。...TODO标签已经完成, 没有遗漏, 确定要遗留的问题必须注释写明原因 检查相关的so是否都已经提交到SVN 按照冒烟测试测试用例完成冒烟测试 紧急版本一般都是bug修复,也不会有功能更新,也不会大的修改...我们也会根据实际情况和测试协商对checkList做一些调整(这个list也是测试和我们根据经验具体总结的) 接下来我会对新版本提测的list做一个介绍: 提测前版本相关重点检查项目: 对比TAPD需求单和...确认所有TODO标签已经完成, 没有遗漏, 确定要遗留的问题必须注释写明原因 关于TODO我会在SDK那些事之SDK开发中的一些开发经验(点击查看)专门说,一定要看,是干货。...黑盒 黑盒主要是指demo,我们会为游戏提供一套我们的接口调用的demo(我会在SDK开发经验之Demo和文档(点击查看)中描述demo的价值)。
1、数据库的时间记录方式,最好采用时间戳的方式,方便对数据采取时间先后和日期限制的设置。 2、所有参数能让前端传递的,尽量不要从数据库中读取,尽量减少不必要的数据库查询读写操作。...5、前端传入的数据一定要在后台做数据处理后在写入数据库,不然很有可能会写入很多前端传过来的其他不必要数据。...8、尽量不要再没有搞懂需求前就开始写代码,很大可能都会造成数据库收集数据不完全,导致后期二次修改接口,即影响自己开发进度,又影响前端开发进度。...9、数据库的删除操作,如果不是特殊要求的话,尽量先做逻辑删除,在做物理删除,不要直接物理删除。...10、删除功能的实现,除了删除本条数据之后,需要考虑时候需要删除关联数据,例如,删除a用户,是否需要删除a用过的收藏等等一系列的相关联数据
仅仅通过他人的口述、视频、实例往往无法完整的了解到SDK的接口的所有的作用,好比盲人摸象,你对它的认知、印象、经验将完完全全从他人所提供的教程中继承而来。...因为这样开发商下载到一次以后就再也不会更新了…… 文档online化总要解决,不然上面的问题会一直存在。为了让伟大的开发哥哥们不受困于wiki,最后在github终于找到了神器。...使用Markdown可以大大提高开发者的开发效率。 分模块:如果你的SDK够大,建议最好是按照模块来写文档。...包括SDK包内容介绍、SDK的架构的简单介绍、开发者接入SDK、更新SDK的操作指引、打包的混淆规则等内容。 API文档:按照模块区分介绍对应模块API的使用方法。...性能说明:主要是介绍SDK的一些测试指标,例如SDK包的大小,运行时对内存、CPU的占用等性能数据。
因此当我们的新版本发布以后,我们会优先提供内网的下载地址供内部游戏接入,同时我们从后台观察具体的数据;当有游戏通过新版本上线而且没有问题,我们就会正式推出这个版本。...对于转为稳定版,一般是在我们某个有重大功能更新的版本在很多游戏已经验证过没有问题以后。...…… 其实因为类似的问题,我们遇到过一个更坑更坑的问题,这次低版本调整涉及到了本地数据库的变更,我会接下来讲故事说明,这一次在某个老版本插入新功能直接影响了我们超过5个大的版本。...对于一些重点项还该有具体的说明(结合自身实际制定一个提测前的版本checkList)这部分内容我会再SDK开发经验之测试(点击阅读)中来详细说明我们的流程是什么样,踩过什么坑等。...但是这对于接入你SDK的开发来说,却绝对是噩梦,你绝对是他们认为神一样的存在。尤其是你老的版本的覆盖范围已经非常大的时候。 我们的SDK目前被吐槽的最多的很多方面其实我们也知道。
小程序开发对于前端开发者来说其实很简单,稍微看一下官方文档就能够上手了。 但是,如果是第一次开发小程序,多多少少还是还是会遇到一些坑的。...mock 数据: 前后端分离开发,本地 mock 数据是不可缺少的 同 h5 开发一样,我们可以本地启动一个 mock 服务,提供 mock 数据接口,如:127.0.0.1:8587/test1 可以使用...5).小程序数据上报与监控 小程序自己本身后台有做很多数据的统计 除此之外还可以自己上报一些 自定义数据,自定义数据 value 为 number 类型,不得超过 128 个。...如果还不能满足,则可以自己做埋点,然后通过 wx.request 接口做数据上报。...小程序模板与数据双向绑定(待续) 测试阶段 开发提测之后,我们需要给测试人员测试,有两种方式提测,各有优劣。
镜像不包含任何动态数据,其内容在构建之后也不会被改变。容器容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。...(多租户、开发生产化)环境标准化和版本控制通过持续部署可看出环境的标准化,Docker可以像git仓库一样,管理不同的版本。...拷贝文件CMD # 执行命令 EXPOSE # 暴露端口WORKDIR # 指定工作路径 MAINTAINER # 维护者ENV # 设定环境变量 VOLUME #逻辑卷挂载点Docker下的开发部署流程在使用...Docker开发时,我们可以按照下面的步骤来进行操作,以满足我们在日常中的使用。
开发建议:如果要对多个设备发起连接请求,最好是有一个同一个的设备连接管理,把发起连接请求序列化起来。前一个设备请求建立连接,后面请求在队列中等待。如果连接成功了,就处理下一个连接请求。...开发建议:把这写操作都封装成同步操作,一个操作回调之前,阻塞主其他调用。...开发建议:对 BluetoothGatt 的连接和断开请求,都通过发送消息到 Android 的主线程中,让主线程来执行具体的操作。...现在 BLE 设备越来越多,其实并不够用,所以在开发的过程中,需要特别的谨慎使用。...开发建议:按照需要连接设备,如果设备使用完了,应该马上释放连接(调用BluetoothGatt.close()),腾出系统资源给其他可能的设备连接。
最后,再把知乎上关于文档别人说的这一段描述修改下,发现更加恰当了(点击前往知乎): 仅仅通过他人的口述、视频、文档往往无法完整的了解到SDK的接口的所有的作用,好比盲人摸象,你对它的认知、印象、经验将完完全全从他人所提供的教程中继承而来...不然开发看懂你的demo的时间他都接完了。 暂时就写这么多,之前感觉挺难写的,发现逗比起来就好写多了,暂时这么多,后续想起来慢慢补充。
领取专属 10元无门槛券
手把手带您无忧上云