关于CodeReviewer的想法 CodeReview的由来 CodeReview 对代码质量的作用体现在哪些方面?...CodeReview的由来 其实对于CodeReview的由来,简单的说就像工厂流水线一样,为了保证产品的质量,一定会有一个最终环节的质检员来进行质检。...通过CodeReview来规范大家开发过程中的命名习惯,让每一个方法名都有其正确的意义,这便是体现; 通过CodeReview来规范总是偷懒不写注释的小伙伴,从而提高代码的可阅读性,这也是体现; 通过...当时为了规范约束大家的CodeReview代码的习惯,还在网上找了一个开源的sonar项目,部署到内网服务器,对项目组开发的项目进行sonar代码规范的检测。...沿用的代码检测规约是阿里巴巴开发者社区的p3c开发手册版的插件,要求是开发人员都安装了p3c的代码检测插件在本地自行规范开发代码。
看到朋友们狂转这个游戏里面圈,然后打了一下,说下自己的想法。。...默认的障碍应该也是随机生成的,所以没什么难度。 感觉这个最麻烦的地方就是猫逃跑的路线。一開始 以为是6个方向随即一个跑,可是后来发现是能逃出去的最短路线。由于本人比較菜。所以就用广搜来实现的。...起点就是猫的位置,终点就是坐标超出地图范围 。 广搜就是最主要的广搜。没有剪枝。没有双向(9*9还要这些的仅仅有一斤葱才干干出来吧。 。。)...然后每扩展到一个节点都记录一下他前一个节点的位置用于作为逃跑路径,广搜里面的Visit数组我设了两个。一个是点击过的,一个是在搜索中暂时的。然后在搜索的时候假设在两个数组中都没有訪问过就訪问。...由于相对于矩阵,这个的坐标实在没法用两层for搞定,就想推数学公式,推了半天繁琐不说,代码看的叫一难受。。。后来忽然想起一斤葱的常量数组。轻松解决~这样代码长度仅仅有原来的1/3。
大概2016年的时候了解到js可以写桌面应用,当时正在用wpf/winform开发cs应用,近几年vue和react在前端的火热,以及node.js在中间层和后端的大量应用,js正在往多端...,多平台方向渗透,这个对前端来说是好的,大前端的影响力越来越大。 ...之前开发了一个系统,主要是用cefsharp+vue实现混合开发的,主要利用C#连接硬件的优势,vue的开发效率就不用说了,最近越来越多的关注到electron,和cefsharp+vue分析比较了一下... 1.构建和开发 两者相差不多,electron的项目更紧凑,不像cefsharp需要另开一个C#项目 2.更新 electron团队专门开发了自动更新的组件,而且有热更新,这个比cefsharp...更有优势,C#项目当然也有自动更新,也可以自定义实现 3.打包 二者都可以通过inno setup打包 4.硬件交互 C#更有优势,可以调用大量系统api或者第三方dll,electron可以调用C++的dll
可能需要在对应的结构数据中添加一些必要的信息才能达到扩展的可能,一旦出错,调试也是个麻烦事。优点就是占的地方小,如果用到web中可以很大程度上的提高性能。...------------------- 那么理想中的权限应该是可以扩展的,而且在网络传输中尽可能的减少传输内容,最好是在这个基础上再减少IO的操作,让各部分的负载能达到某种意义上的平衡。...当然这个里边该考虑的还有json支持的数据量的大小。 还有一个容易忽略的问题,就是如何将这些信息定义到一个类里边,或者某个可结构化的东西中去。...这需要注意的就是xml中的pagename,元素id,与对应页面的耦合度高,一处页面名称的修改直接会导致权限控制失效,id的修改也会导致。一般情况下,页面的名称是不会变的。...会变化的可能只会页面中的元素ID.可以添加额外的标签描述Attribute。来判断对应元素的显示隐藏..
0x00 前言 最近不少朋友都咨询过居士关于数据质量的问题,群里面也有很多相关的话题讨论。正巧,一位群友(Z)昨天发给我了一些他关于数据质量的思考,在此分享给大家。...关于数据质量,也可以参考居士之前写的两篇文章: 《数据质量监控》 《No.22 漫谈数据质量监控》 如下,是Z的分享。 0x01 关于数据质量监控 本人是一名在上海工作的数据仓库工程师。...之前很多人都在催我,让我写一些关于数据质量管理的东西,今天就稍微整理一点吧(仅为个人意见,不喜勿喷。欢迎指点交流。)...那对于事实表和数据集市的表(比如用户画像)其实是不妥的,会产生很多“理论上”的告警,而从业务角度,是没有问题的。 所以,在一些类似于维度表,或者缓慢渐变维的表,可以使用固定阈值进行监控。...特别是阿里和美团这些大厂对外都有一些关于数据质量解决方案的平台或者文章,大家可以自行查找学习。
有如下代码: /** * B中代码的实现是依赖A的,两者之间的耦合度非常高,当两者之间的业务逻辑复杂程度增加的情况下 * 维护成本与代码的可读性都会随着增加,并且很难再多引入额外的模块进行功能扩展...A的,两者之间的耦合度非常高,当两者之间的业务逻辑复杂程度增加的情况下,维护成本与代码的可读性都会随着增加,并且很难再多引入额外的模块进行功能扩展。...刚刚举的这个例子,就是典型的通过框架来实现“控制反转”的例子。框架提供了一个可扩展的代码骨架,用来组装对象、管理整个执行流程。...程序员利用框架进行开发的时候,只需要往预留的扩展点上,添加跟自己业务相关的代码,就可以利用框架来驱动整个程序流程的执行。...这里所说的“控制”指的是对程序执行流程的控制,而“反转”指的是在没有使用框架之前,程序员自己控制整个程序的执行。在使用框架之后,整个程序的执行流程通过框架来控制。流程的控制权从程序员“反转”给了框架。
Nim语言有很多语言上先进的特性和接近Python的语法,Rust定位成C++的直接竞争者。...它们的出现就不是冲着解决多核编程问题来的,基因决定了,靠这两门语言解决不了多核编程的问题。 怎么解决多核编程的问题?...因为Rust官方明白,实现完整高效的的协程调度,难度很大。这方面Go做的很好,其他静态编译类型的语言都没有超过它。 我们可以说Nim和Rust的定位不同,要解决各自的目标问题。...许世伟说过,他在C++中实现协程和协程调度,到头来也只是对Golang的拙劣的模仿,我想Rust官方最初的想法也大概如此吧。 而且我相信Ken Thompson和Russ Rox这两位大师的眼界。...知乎上关于Rust高并发框架实现的问题:http://www.zhihu.com/question/30325880
,这样就提高了代码的扩展性,我们可以灵活地替换依赖的类。...我们用一句话来概括就是:不通过 new() 的方式在类内部创建依赖类对象,而是将依赖的类对象在外部创建好之后,通过构造函数、函数参数等方式传递(或注入)给类使用。...,但是我们通常在使用nestjs时,使用依赖注入时并没有特意的去实例化相应的类,而是直接通过构造函数,将参数类型传递到构造函数,这是因为nestjs框架替我们做了这一步操作,我忘了在哪里看到的了,nestjs...会扫描构造函数的参数,并根据其参数类型将其实例化。...以上便是关于依赖注入的一些想法,希望对你有所帮助。
过去的几个月,发生了许多事,因此我想,这是个好机会来写写关于Mesos和其生态的文章。 关于Mesos和YARN已经有很多讨论了。...我也看到过诸如“Mesos的资源请求模型非常落后”的评论,也注意到Mesos在过去几年变得更加流行。这里的关键因素之一也许是Docker天花乱坠般的宣传以及各自对于协作层的需要。...Mesos应对的核心挑战是,在不了解一个框架的前提下如何满足对框架的 约束(constraints),这也是资源分配中最难以理解的地方。...Mesos处理资源的方式就像家长主持一个孩子的生日派对:好比你要为15个孩子 (==框架)提供食物(==资源),并且不可能知道他们的喜好(==安置倾向)。...有一个有趣的事实(虽然我认为这是公知的),Mesos和Spark有一个共同点:Matei Zaharia——来自一个靠近加拿大安大略的小镇——他是加州伯克利分校AMP实验室的学生,这个实验室为Mesos
这三年接触了很多东西,自己也有过很多想法,但实际上去做的却很少。花了很多时间,做了一款插件化的漏洞扫描器,这里不做介绍。...这里主要介绍的是另外一个想法(这些年做的最有成就感的事情),我把它理解为真正意义上的“入侵检测”。...只有不断的改进,这个世界才有可能不断的进步变好。 0x00、前面的废话 “入侵检测”,从字面上的意思来解释就是“对入侵行为的检测”。...上面那张图就是我想要表达的想法(通过流量镜像,将请求数据全量保存,响应存在异常才保存)。 通过分析网络中的请求和响应,来判断漏洞的存在(攻击者前脚发现漏洞,我们可以实现实时发现,并溯源)。...其实也很简单,检测都是基于数据是明文传输的基础上的。如果对http响应数据进行一些简单的编码再传输(dns隧道木马就是这样做的,它会对执行命令的结果进行编码后传输。),这样肯定会加大检测的难度。 ?
=> { ReceiveMessage(data); }) function ReceiveMessage(data) { /* TODO */ } Eval 一个简单的想法是让用户直接编程...现在我们就有了一个新的问题:我们不能使用eval,但是我们需要某种方法来接收任意的指令。 指令数组 我们可以将这些指令通过JSON数组的方式传送。每条指令包含需要执行的函数名和参数。...但是还有rotate这样的指令,他的参数本身是另一个指令。...我们可以设定一个特殊的关键词“do”来作为顶级的指令,然后执行之后所有的指令。...最后 现在我们的这个接口已经实现了通过json数据来执行函数,自定义变量,自定义函数,就好像提供了一个语法的解释器。 我们可以通过编写json数据来控制程序的行为。而无需修改代码本身。
想法来源于与刚才龙老大的一番讨论,文中对于NoSQL概念性的东西摘录自:http://www.infoq.com/cn/news/2011/01/nosql-why 概念 NoSQL是对应SQL而演变而来的...来源 – 传统关系数据库遇到瓶颈 传统的关系数据库具有不错的性能,高稳定型,久经历史考验,而且使用简单,功能强大,同时也积累了大量的成功案例。...在互联网领域,MySQL成为了绝对靠前的王者,毫不夸张的说,MySQL为互联网的发展做出了卓越的贡献。 在90年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付。...在那个时候,更多的都是静态网页,动态交互类型的网站不多。 到了最近10年,网站开始快速发展。火爆的论坛、博客、sns、微博逐渐引领web领域的潮流。...而NoSQL中最常见的存储方式,则是key-value存储(当然还有其他的文档型的、列存储、图型数据库、xml数据库等) NoSQL的优势: 易扩展 大数据量,高性能 灵活的数据模型 高可用 我觉得
关于第三方库,同样也不推荐过多使用,如下: 1、消耗时间,一个开源库,拿过来需要仔细考察代码质量,确认是否足够可靠。如果出现问题,需要仔细审查开源库的内部实现。...如果跟进第三方库的改变,仍然容易出现新问题。 3、法律问题。大公司需要仔细审查许可协议,小公司各种不怕那就没问题。
这篇是规划的SDK总结系列的最后一篇,也是比较难写的一篇了。之前以为经过了这么多的坑,再来写这个系列没那么难,规划的就比较多。...技术优化 除非一开始有一个比较牛逼或者有经验的开发来设计一套有效的成熟的架构(很可惜,我觉得我们当时设计的架构并不是很好),一般SDK前期的开发时间都很紧张,而且更多的精力聚焦在功能的实现上,因此很多时候采用的都是最快的解决方案...模块的彻底独立,可以最大的程度降低多人协同开发的沟通成本。 插件化 模块化主要是为了方便SDK的开发者适应各种需求的变化。而插件化则更主要的是为了方便SDK的使用者。...这里额外补充两点点关于全局限频的。 全局限频怎么做: 最简单的就是有一个地方记录调用额度,定时刷新额度,在接口调用时,每调用一次去减一。...这部分数据对于市场的开拓会有很大的效果。 在大数据的时候,数据的拥有者是大有可为的,基于SDK的数据分析,可以为SDK的开发者,SDK的使用者提供更多的基于数据分析的运营、开发、决策等建议。
BizOps:把企业当成进程一样诊断 对于基本面指标(也就是不从OHLC计算的指标),有了 GPT 的加持,便可以从财报里面获取。...可以封装成库,但更好的是封装成一个应用,结合基本面和技术指标,像监控容器那样更好的监控企业健康状态。名副其实的BizOps。...第二个想到的就是源码解析。AI高效率和自然语言理解的能力彻底解决程序员不喜欢写注释的问题。我们当然准备了充足的资金把github上所有高星代码都注释一遍。...【AI情感】 很多导师的问题就是,他们只是说理,但人类记住道理是通过故事的,除了少数编导转型过来的导师之外,其他人讲故事的能力太差了。...讲故事好的作家基本不懂情感,总是传播一些独角兽思维的错误想法。 我记得有个情感作者叫 Jacobi,它写超级吸引力的时候,就是通过一个一个故事来引出各种情感理论而不是直接灌输。
Qt翻译功能最近用得好好的,却是一份新需求导致对这一功能的思考。 最近接到一个新需求就是为公司的某个软件添加多语言翻译功能,由于之前已经做过类似的了。直接移植就可以了。...可是翻译人员不会用Qt的语言家软件。除了中英文自己翻译外,其余的7种语言都需要发给专门的翻译人员翻译。...于是我不发excel文档给他们翻译了,和他们说你翻译到Qt的语言家软件吧。教他们安装Qt语言家,并教他们如何使用。说多是泪,我一顿操作猛如虎,一问他们会不会,都说太难了!只好放弃这一想法。...顿时陷入沉思中,究竟是谁走漏了风声说:Qt翻译很简单的!!! 还有就是,语言家提供提取Qt项目文件的翻译到文件,我想说的是这操作挺好的。...作者可能是使用类似命名空间的做法来实现翻译字段的命名空间限制,实际使用上只会增加额外的使用负担和学习成本。
下的回答,其他回答也很精彩,如果感兴趣可以查看 现在基于 spring web 的同步微服务有一个非常大的缺陷就是:相对于基于 spring-webflux 的异步微服务,基于 spring-web 的同步微服务没有很好的处理客户端有请求超时配置的情况...还有就是 Java Log 框架的 MDC 的实现,一般都是基于 ThreadLocal 的 Map.还有就是像 redisson 的分布式锁,它让每个线程生成唯一id并和线程绑定,解锁的时候会检查。...但是也就解决方案,就是通过其他线程池,专门处理数据库请求并等待返回进行回调,也就是业务线程池 A 将数据库 BIO 请求交给线程池B处理,读取完数据之后,再交给 A 执行剩下的业务逻辑。...Project Loom 解决了主要的网络 IO 阻塞问题,并且基本不用改现有代码就能实现纤程,用阻塞的代码风格实现非阻塞的代码(而且和现在的基于 Thread 的上下文框架兼容)。...,从 19:17 秒开始: Nicolai 与 Goetz 关于 Java AMA 的讨论 Brian Goetz: “I think Project Loom is going to kill Reactive
多列布局 定宽+自适应 1)使用float+overflow (1)原理、用法 原理:通过将左边框脱离文本流,设置右边规定当内容溢出元素框时发生的事情以达到多列布局。...,以达到视觉上的多列布局。...flex中的flex属性以达到多列布局。...flex中的flex属性以达到多列布局,加上给左框中的内容定宽、给右框设置flex达到不定款+自适应。...flex中的flex属性以达到等分布局。
那么一个常见的解决方案就是加配置项。 加配置项的话呢 有两种加法,一种是根据是否需要某个流程来加,一种是根据项目来加。...那么之前的IsNeedX的配置方式不再管用了,我们必须再另外加一种流程的配置项 IsB->C ? B->C : C->B 。 我想写到这里大家应该发现了。根据流程加配置项的复杂度增加的太快了。...,再多的项目配置起来也不会增加配置的复杂度。...在不新增特殊流程的情况下,仅仅修改已有的流程不需要修改代码可以吗? 改进 显而易见的我们可以把流程的数据之间加入配置项中。 比如我们用这样的一个配置项 ProjectData。配合之前的接口设计。...测试时也可仅单独测试F流程的功能。 这样一来 ,假如再来一个新的项目 仅仅需要A->E的流程。那么配置起来再方便不过了。
前端布局非常重要的一环就是页面框架的搭建,也是最基础的一环。在页面框架的搭建之中,又有居中布局、多列布局以及全局布局,今天我们就来总结总结前端干货中的CSS布局。...居中布局 水平居中 1)使用inline-block+text-align (1)原理、用法 原理:先将子框由块级元素改变为行内块元素,再通过设置行内块元素居中以达到水平居中。...缺点:transform属于css3内容,兼容性存在一定问题,高版本浏览器需要添加一些前缀 4)使用flex+margin (1)原理、用法 原理:通过CSS3中的布局利器flex将子框转换为flex...{ margin:0 auto; } (3)优缺点 缺点:低版本浏览器(ie6 ie7 ie8)不支持 5)使用flex+justify-content (1)原理、用法 原理:通过CSS3中的布局利器...缺点:transform属于css3内容,兼容性存在一定问题,高版本浏览器需要添加一些前缀 3)使用flex+align-items (1)原理、用法 原理:通过设置CSS3中的布局利器flex中的属性
领取专属 10元无门槛券
手把手带您无忧上云