效率

原码, 反码, 补码

廉价感情. 提交于 2020-11-04 06:09:17
原码, 反码, 补码 很好的文章,博主证明很详细 1.如果你还在为 计算机中的+0,-0困惑 2.如果你还不理解补码如何演变的 原码, 反码, 补码 详解 原文,有些未更正的错误,比如这个举例有问题: 运用同余数的两个定理: 反身性: a ≡ a (mod m) 这个定理是很显而易见的. 线性运算定理: 如果a ≡ b (mod m),c ≡ d (mod m) 那么: (1)a ± c ≡ b ± d (mod m) (2)a * c ≡ b * d (mod m) 如果想看这个定理的证明, 请看: http://baike.baidu.com/view/79282.htm 所以: 7 ≡ 7 (mod 12) (-2) ≡ 10 (mod 12) 7 -2 ≡ 7 + 10 (mod 12) 现在我们为一个负数, 找到了它的正数同余数. 但是并不是7-2 = 7+10, 而是 7 -2 ≡ 7 + 10 (mod 12) , 即计算结果的余数相等. 应该是: (-5) ≡ 7 (mod 12) (-2) ≡ 10 (mod 12) --> -5 -2 ≡ 7 + 10 (mod 12) -7 ≡ 5 (mod 12) 注:如有问题欢迎大家指正。 来源: oschina 链接: https://my.oschina.net/u/96193/blog/297503

到底什么才是软件开发效率高

独自空忆成欢 提交于 2020-10-29 05:04:29
写给没有意识到这点的自己和他人,或许看着简单,但未必就做到了。 到底什么才是编程效率高? 眼前有一个项目或者产品要做,招一大堆人来风风火火的堆代码,然后很快完成,这是效率高吗? 或者,招的都是技术娴熟的程序员,写代码效率高,遇到问题解决快,新技术上手快,然后技术娴熟的程序员大家一起堆代码,这似乎比前一种情况好,效率高,但这是真的效率高吗?一组编程人员,技术娴熟能到什么程度,就拿打字速度来说,没有提高的前路。所以,这个不是提高效率的方向。 真正的高效率在于 重用 第一,时间上的代码重用,也就是,今天写的东西,明天,后天,以后能够重复不停的使用,这段代码的编写工作就真正做到了高效率。 第二,空间上的 代码 重用,也就是,当前时间,其实就是当前编程工作中,代码互相之间的重用,有10个程序员共同完成一个50个功能的系统,堆代码,每人要做5个功能,如果系统设计,编码设计将重复的功能抽离出来50个功能可能会缩减为30个功能,每个程序员只需要完成3个功能,这才是提高了效率。 所以,程序开发的重点内容是系统设计和程序设计,程序员的技术能力,是程序开发的基础,就如同写文章一样,识汉字是基础,字都不识,怎么写文章?而只有基础不够,写好文章更重要是有好的构思。 程序员同志们,不要再堆代码了,如果你现在做的事情还是你曾经做过的,那就别做了,停下来,好好想想为什么之前做过的东西没能写的更好些

想要提高效率,就得不公平

人走茶凉 提交于 2020-04-24 16:53:56
(首发于《罗辑思维》,2016年4月19日) 假设让你来模拟上帝,给世界上所有人分配财富。你必须按照什么原则分配,才会得到一个与真实世界差不多的结果呢? 首先你不可能均匀分配,否则世界上就不会有穷人和富人的区别。你可能会考虑随心情分配,今天看到这个人心肠好就给她多分点儿,明天看到那个人太可怜再给他多分点儿。但谁都能找到个需要钱的理由对吧?或者你干脆搞随机分配,让世人完全凭运气获得财富。可是这样也不对。根据统计学,如果你是随机分配的话,那么人群的财富应该是个正态分布,就好像身高和智商一样,人与人之间有差异,但是特别高和特别聪明的人是极少的。这很容易理解,如果抽奖结果完全随机,一个人不可能反复中头奖。 可是财富不是这样,非常有钱的人有很多,人与人财富的差异要比身高的差异大得多。身高是正态分布,财富却是幂率(power law)分布。 1. 幂率 (图中横坐标代表每个人的财富,纵坐标代表有这么多财富的人数。两种分布最大的差异在于横轴上距离原点很远处:在财富特别高的地方,幂律分布预言的个体个数,比正态分布要多很多。) 世界上最高的人的身高,并不会比世界上最矮的人高10倍,但世界上却有很多千万富翁和亿万富翁。我记得有统计说千万富翁的人数大约是百万富翁人数的六分之一,而亿万富翁的人数又是千万富翁的六分之一。这就是幂率分布的特点,整个是一个分形结构:百万富翁看千万富翁,就如同千万富翁看亿万富翁。

如何提升你的远程开发的成功率

一曲冷凌霜 提交于 2020-04-14 07:38:42
【今日推荐】:为什么一到面试就懵逼!>>> 远程工作是趋势,一方面降低企业成本,提升企业人才素质而不受地域局限,一方面让员工可以对自己的时间和生活质量有更大的把握。然而,要建立一个远程团队,却不是一蹴而就的事情。我们客栈自从2015年9月远程项目正式上线,迄今已完成350个远程项目,100+项目正在进展,在此期间,我们在不断和客户一起学习来提升远程项目的成功率。总结我们自己350个项目的成功经验,以及学习国外远程团队先进经验,我们总结出以下几个方面的经验:   1,什么样的人适合做远程工作   2,如何提升你的远程开发的成功率   本文谈谈,如何提升你的远程开发的成功率。    一,找到正确的人   如果合作过程中发现有人持续不能完成任务,比如说,连续不能完成每周的交付,那么你需要去分辨是哪种原因:   1,本身不具备完成本项任务的能力   2,态度不对,没有契约精神。   3,受到突发事件影响,很快能解决。   如果是第3种,可以继续合作。如果是前2种,建议尽早替换人员。    二、颗粒化需求,做到可拆分到每周,甚至每天的交付。   如果一个项目拆分出来最小的子任务,都需要起码一个月以上的时间来完成,更有可能的是需求没有整理清楚,这个时候的关键任务是整理需求,不要急着开发。   整理的关键,是以可交付任务为基本单元来准备产品文档,开发者只用基于产品文档来实现

基于三维GIS技术的动态LOD渲染方法的实验及验证

谁说胖子不能爱 提交于 2020-04-08 00:22:58
针对透视投影下现有矢量地图动态LOD渲染方法存在的不足,本文从渲染的客观需求出发使用梯形格网统一了简化与剖分的过程,并研究了透视投影下梯形格网的简化算法。之后,分析了地图简化的影响因素,最终,针对GPU的渲染流程提出了一种基于 三维GIS 梯形格网的矢量地图动态LOD渲染方法。在此基础上,设计可视化平台的渲染引擎以实现地图渲染,并设计典型的实验案例验证本文方法的可行性与适用性。 1.可视化平台的框架结构 本文设计的可视化平台主要包括地图组织模块、地图操作模块和渲染执行模块三大子模块。以地理数据、符号库和样式数据确定地图渲染样式。地图数据以图层样式和地理数据进行组织,针对矢量地图的渲染需求设计地图渲染模块,同时添加地图操作模块用以支持用户操作。可视化平台的框架结构如下图所示。 (1)地图组织模块 地图组织模块用以对可视化平台进行全局组织,包含图层类、数据源类、渲染类和地图类。数据源类包含顶点几何数据和顶点索引数据,在数据源类进行构建梯形格网并添加空间索引,用户操作时,依据地图区域检索相应数据,交给渲染模块进行渲染。图层类包含图层ID、图层可见比例范围、图层颜色、图层透明度等相关属性,每一个图层类对应一个渲染模块中的图层渲染类,针对图层属性设置着色器程序完成对地图的渲染。 (2)地图操作模块 地图操作模块用以实现用户对地图的基本操作。地图操作模块提供了诸多接口包含获取地图数据

Hive性能优化——介绍

一世执手 提交于 2020-04-06 06:49:32
依据Hadoop的计算框架特性,衍生出来的问题? 数据量大不是问题,数据倾斜是个问题。 jobs数比较多的作业运行效率相对比较低,比如即使有几百行的表,如果多次关联多次汇总,产生十几个jobs,耗时很长。原因是map reduce作业初始化的时间是比较长的。 sum,count,max,min等UDAF,不怕数据倾斜问题,hadoop在map端的汇总合并优化,使数据倾斜不成问题。 count(distinct ),在数据量大的情况下,效率较低,如果是多count(distinct )效率更低,因为count(distinct)是按group by 字段分组,按distinct字段排序,一般这种分布方式是很倾斜的。举个例子:比如男uv,女uv,像淘宝一天30亿的pv,如果按性别分组,分配2个reduce,每个reduce处理15亿数据。 优化手段 好的模型设计事半功倍。 解决数据倾斜问题。 减少job数。 设置合理的map reduce的task数,能有效提升性能。(比如,10w+级别的计算,用160个reduce,那是相当的浪费,1个足够)。 了解数据分布,自己动手解决数据倾斜问题是个不错的选择。set hive.groupby.skewindata=true;这是通用的算法优化,但算法优化有时不能适应特定业务背景,开发人员了解业务,了解数据

基于三维GIS技术的动态LOD渲染方法的实验及验证

喜欢而已 提交于 2020-04-06 03:57:51
针对透视投影下现有矢量地图动态LOD渲染方法存在的不足,本文从渲染的客观需求出发使用梯形格网统一了简化与剖分的过程,并研究了透视投影下梯形格网的简化算法。之后,分析了地图简化的影响因素,最终,针对GPU的渲染流程提出了一种基于 三维GIS (ztmapinfo.com)梯形格网的矢量地图动态LOD渲染方法。在此基础上,设计可视化平台的渲染引擎以实现地图渲染,并设计典型的实验案例验证本文方法的可行性与适用性。 1. 可视化平台的框架结构 本文设计的可视化平台主要包括地图组织模块、地图操作模块和渲染执行模块三大子模块。以地理数据、符号库和样式数据确定地图渲染样式。地图数据以图层样式和地理数据进行组织,针对矢量地图的渲染需求设计地图渲染模块,同时添加地图操作模块用以支持用户操作。可视化平台的框架结构如下图所示。 (1)地图组织模块 地图组织模块用以对可视化平台进行全局组织,包含图层类、数据源类、渲染类和地图类。数据源类包含顶点几何数据和顶点索引数据,在数据源类进行构建梯形格网并添加空间索引,用户操作时,依据地图区域检索相应数据,交给渲染模块进行渲染。图层类包含图层ID、图层可见比例范围、图层颜色、图层透明度等相关属性,每一个图层类对应一个渲染模块中的图层渲染类,针对图层属性设置着色器程序完成对地图的渲染。 (2)地图操作模块 地图操作模块用以实现用户对地图的基本操作

gen语言

半世苍凉 提交于 2020-04-03 17:02:35
概率编程语言(PPL)领域正经历着机器学习技术快速发展带来的奇迹般的复兴。在短短的几年里,PPL 已经从一个模糊的统计研究领域发展出十几个活跃的开源方案。最近,麻省理工学院(MIT)的研究人员推出了一种新的概率编程语言 Gen。这种新语言让研究人员在不需要处理方程式和手动编写高性能代码的情况下,编写应用人工智能技术的多个领域的模型和算法。 PPL 是机器学习 pipeline 的常规组件,但其实现仍然具有挑战性。虽然市场上的 PPL 显著增加,但大多数 PPL 仍局限于研究工作,不适用于实际的应用。在 2015 年谷歌开源 TensorFlow 之前,深度学习领域也经历了类似的挑战。使用 TensorFlow,开发人员能够使用一致的框架构建复杂但高效的深度学习模型。从某种意义来说,Gen 正在寻找概率规划的方法,正如 TensorFlow 为深度学习所做的那样。然而,为了做到这一点,Gen 需要在 PPL 的两个关键特征上进行精细平衡。 表达性与效率 现代 PPL 最大的挑战是在建模表达性和推理效率之间取得平衡。虽然许多 PPL 在语法上都很丰富,可以用来表示几乎任何模型,但它们往往支持有限的推理算法,这些算法的收敛速度非常慢。其他 PPL 有丰富的推理算法,但仍然局限于特定的领域,使其不适用于一般的应用。 通用 PPL 应能实现两个基本效率向量: 1)推理算法效率:一个通用的

is_file和file_exists效率比较

房东的猫 提交于 2020-04-02 20:28:41
目前在弄文件缓存的时候用到了判定文件存在与否,is_file()还是file_exists()呢?is_file和file_exists两者效率比较起来,谁的运行速度更快呢?还是做个测试吧: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 <?php $start_time = get_microtime(); for ( $i =0; $i <10000; $i ++) //默认1万次,可手动修改 { if ( is_file ( 'test.txt' )) { //do nothing; } } echo 'is_file-->' .(get_microtime() - $start_time ). '<br>' ; $start_time = get_microtime(); for ( $i =0; $i <10000; $i ++) //默认1万次,可手动修改 { if ( file_exists ( 'test.txt' )) { //do nothing; } } echo 'file_exits-->' .(get_microtime() - $start_time ). '<br>' ; function get_microtime() //时间 { list( $usec , $sec )

oracle中in 和exists的使用效率

。_饼干妹妹 提交于 2020-03-28 08:41:54
有两个简单例子,以说明 “exists”和“in”的效率问题 1) select * from T1 where exists(select 1 from T2 where T1.a=T2.a) ; T1数据量小而T2数据量非常大时,T1<<T2 时,1) 的查询效率高。 2) select * from T1 where T1.a in (select T2.a from T2) ; T1数据量非常大而T2数据量小时,T1>>T2 时,2) 的查询效率高。 exists 用法: 请注意 1)句中的有颜色字体的部分 ,理解其含义; 其中 “select 1 from T2 where T1.a=T2.a” 相当于一个关联表查询,相当于 “select 1 from T1,T2 where T1.a=T2.a” 但是,如果你当当执行 1) 句括号里的语句,是会报语法错误的,这也是使用exists需要注意的地方。 “exists(xxx)”就表示括号里的语句能不能查出记录,它要查的记录是否存在。 因此“select 1”这里的 “1”其实是无关紧要的,换成“*”也没问题,它只在乎括号里的数据能不能查找出来,是否存在这样的记录,如果存在,这 1) 句的where 条件成立。 in 的用法: 继续引用上面的例子 “2) select * from T1 where T1.a in