这道题目是搜狗笔试题第一道大题,求无限循环小数的循环节,例如1/7=0.14285714285714285,则循环节为428571
拿到这道题目第一想法就是当作普通字符串来处理,依次截取前面部分与后面部分进行比较,直到找到重复的,则重复部分为循环节
侥幸进了面试,面试官第一题就问我这题的解题思路,我把思路讲给他听,被他抓了N了Bug,最后也找不出好的解决方案,于是第一题就以失败告终...
回来之后,用笔算了一下,发现了规律,思路如下:
回想我们使用手算时如何发现循环节:
如果除得的余数等于0,则说明整除;
如果除得的余数不等于0,则将余数乘以10,继续相除;
直到发现两次获得的余数相等,则找到了循环节
继续阅读 »
问题描述
项目使用SpringMVC框架,并用jackson库处理JSON和POJO的转换。在POJO转化成JSON时,有些属性我们不需要输出或者有些属性循环引用会造成无法输出。
例如:实体User其中包括用户名、密码、邮箱等,但是我们在输出用户信息不希望输出密码、邮箱信息;
例如:实体user和department是多对一的关系,user内保存着department的信息,那么json输出时会导致这两个实体数据的循环输出;
jackson默认可以使用JsonIgnoreProperties接口来定义要过滤的属性,然后使用ObjectMapper#addMixInAnnotations来设置对应实体对应的JsonIgnorePr
继续阅读 »
我们的常用的系统中,程序的工作通常是有事件驱动和消息驱动两种方式,在Android系统中,Java应用程序是靠消息驱动来工作的。
消息驱动的原理就是:
1. 有一个消息队列,可以往这个队列中投递消息;
2. 有一个消息循环,不断从消息队列中取出消息,然后进行处理。
在Android中通过Looper来封装消息循环,同时在其中封装了一个消息队列MessageQueue。
另外Android给我们提供了一个封装类,来执行消息的投递,消息的处理,即Handler。
more
在我们的线程中实现消息循环时,需要创建Looper,如:
cla
继续阅读 »
如何遍历一个数组的元素?在 20 年前,当 JavaScript 出现时,你也许会这样做:
javascript
for (var index = 0; index < myArray.length; index++) {
console.log(myArray[index]);
}
自从 ES5 开始,你可以使用内置的 forEach 方法:
javascript
myArray.forEach(function (value) {
console.log(value);
});
代码更为精简,但有一个小缺点:不能使用 break 语句来跳出循环,也不能使用 return 语句来从闭包函数中返回。
如果有 for
继续阅读 »
“Eat, sleep, code, repeat” is such bullshit
原文链接 : “Eat, sleep, code, repeat” is such bullshit
原文作者 : Dan Kim
译者 : rogero0o
继续阅读 »
最近在写一个动画效果,使 ul 下面的 li 逐个进入,就像下图
做这个效果用到了 css 的 animation 中 animation-delay,给 li 设置入场动画后,再给 li 设置 animation-delay,像这样:
css
.li-animation-delay-1 {
animation-delay: 0.1s;
}
并且每一个 li 的 animation-delay 都比前一个 li 的长 .1s,也就达到了后面的 li 的入场动画后播放的效果。
因为 li 的数量也不确定,所以我打算批量生成一些 li-animation-delay-*, 查了一下 scss 正好有 for 的用法:
继续阅读 »
网上传的最多的方法就是使用接口interface解决
这个文章,实际上, 我认为这个方法并不可行.
到作者的github项目上看, 他给出的例子并没有解决此问题(醉
继续阅读 »
1. import module 流程
首先,明确一下 import module_name 和 from module_name import module_element 是两条可执行的语句。
其次,sys.modules 里记录了当前 run time 下所有已经导出的 module。
继续阅读 »
/**
* 【数据结构类】一种计算机,其有如下原子功能:
* 1.赋值
* 2.+1操作 ++a;a+1;
* 3.循环,但是只支持按次数的循环for(变量名)(循环里面对变量的修改不影响 循环次数)
* 4.只能处理0和正整数
* 5.函数调用 fun(参数列表)
* 在这个计算机上编程实现变量的加法减法,乘法
**/
//add operation
fun_add(a,b)
{
for(b)
++a;
return a;
}
//redu
继续阅读 »
go只提供了一种循环方式,即for循环,在使用时可以像c那样使用,也可以通过for range方式遍历容器类型如数组、切片和映射。但是在使用for range时,如果使用不当,就会出现一些问题,导致程序运行行为不如预期。比如,下面的示例程序将遍历一个切片,并将切片的值当成映射的键和值存入,切片类型是一个int型,映射的类型是键为int型,值为*int,即值是一个地址。
继续阅读 »