Long Luo's Life Notes

每一天都是奇迹

By Long Luo

  1. 一个.java源文件中是否可以包括多个类(不是内部类)?有什么限制?

可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致

  1. Java有没有goto?

Java中的保留字,现在没有在java中使用。

  1. 说说&&&的区别。

&&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。

&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,例如,对于if(str != null && !str.equals("")表达式,当str为null时,后面的表达式不会执行,所以不会出现NullPointerException如果将&&改为&,则会抛出NullPointerException异常。if(x==33 & ++y>0) y会增长,if(x==33 && ++y>0)不会增长

&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作,我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,例如,0x31 & 0x0f的结果为0x01。

  1. switch语句能否作用在byte上,能否作用在long上,能否作用在String上?

switch(expr1)中,expr1只能是一个整数表达式或者枚举常量,整数表达式可以是int基本类型或Integer包装类型,由于,byte, short, char都可以隐含转换为int,所以,这些类型以及这些类型的包装类型也是可以的。显然,long和String类型都不符合switch的语法规定,并且不能被隐式转换成int类型,所以,它们不能作用于swtich语句中。

  1. short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

对于short s1 = 1; s1 = s1 + 1;由于s1+1运算时会自动提升表达式的类型,所以结果是int型,再赋值给short类型s1时,编译器将报告需要强制转换类型的错误。

对于short s1 = 1; s1 += 1;由于 += 是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。

  1. char型变量中能不能存贮一个中文汉字?为什么?

char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字,所以,char型变量中当然可以存储汉字啦。不过,如果某个特殊的汉字没有被包含在unicode编码字符集中,那么,这个char型变量中就不能存储这个特殊汉字。补充说明:unicode编码占用两个字节,所以,char类型的变量也是占用两个字节。

  1. 使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?

使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。

例如,对于如下语句:

1
final StringBuffer a = new StringBuffer("immutable");

执行如下语句将报告编译期错误:

1
a=new StringBuffer("");

但是,执行如下语句则可以通过编译:

1
a.append(" broken!"); 

有人在定义方法的参数时,可能想采用如下形式来阻止方法内部修改传进来的参数对象:

1
2
3
public void method(final  StringBuffer  param) {

}

实际上,这是办不到的,在该方法内部仍然可以增加如下代码来修改参数对象:

1
param.append("a");
阅读全文 »

By Long Luo

通过爬虫抓取的历年收藏的一些微博和网络上语录,时常翻看,会对社会对世界对人生有更清晰的认识…


财富即人性。

所有的大财富,归根结底就是,你对人性的透彻理解。人们都需要的东西,就是你提前打桩的位置。穿越周期,靠的是你对人性的理解。你也不要急了,很多事情,我现在和你讲,你现在理解不了,例如什么叫与人为善。等你到四十岁就明白了。屌丝怒了, ~等我到40岁来不及了,大长腿都老了! ~没关系,上半场先扒拉个小短腿。还有下半场,老红也是女人嘛,你凑合吃两口。 越过道德的边境,我们走过爱的禁区。


落地。

以前有个屌丝和我说了心里话。他也愿意脚踏实地,拼命工作,早日发财。但他希望,有个师傅,把卤鸡爪的秘诀告诉他,再给他找个不错的门面房,装修好,锅碗瓢盆买好,再把进货渠道和质量把关的方法告诉他,他就可以安安心心做事业了。你现在让我从零开始,一点一点摸索,我完全没有头绪啊!你安的是什么心?这实在太累了,我不想发财了,算了,算了。我还是去空调房打游戏,摇一摇,最好捞个不要钱的二手女人,我不嫌弃,不花钱就好。

我完全理解这个屌丝。当然,我还最好当个甩手掌柜,你把公司给我,我让老婆去操心,我干收钱!不香吗?事实上,人世间没有这个好事。为什么没有这好事?因为你爹二十年前也是这么想的。吃光用光,身体健康!儿孙自有儿孙福!辣块妈妈滴!


很多人希望别人上赶着来伺候自己。

老子愿意学贴砖,你告诉我,哪里学? 老子愿意发财,你告诉我哪里发? 老子愿意当上门女婿,你告诉我,给几套房? 册那,我又不是你老子,我干嘛操心你啊?你以为你那“苞米脑壳红苕心”有人感兴趣啊?西开! 人生所有的飞黄腾达,都是自己琢磨出来的,真正的发财路子,没人会跑来教你。2009年,某生意火爆,我超级感兴趣,找了好多人问,没人告诉我。那么如何找到适合自己的路子? 一是多听多看。你不是牛逼吗?你就多听多看,不懂就研究,你倒是说个一二三啊!我家门口有个小超市,十年不倒,我就奇了怪了,凭什么?我不停的研究,最后发现原因了。这个超市是自有房产,大部分货是赊账来的,根本没有成本。我后来才知道,世界上居然还有赊账生意。 二是研究聪明人。聪明人有一些小窍门,传男不传女,密不透风。但是,绝大多数人总有打盹的时候,你多接触多研究,总可以破门而入。菜嫂自以为挺聪明的,被我一把拿下,现在我已经是MBA全球总裁班的人了。 三是顺势而为。你千万不要觉得,世人皆醉我独醒。这个世界,跟风生意最好做,当然,前提是你不要想赚最后一个铜板,赚一把就走。很多人不肯走,最后就废了。 多年前,菜嫂家某个生意特别赚钱,手底下的人都跑出去自立门户了,拦也拦不住。菜嫂一看挣钱多,就想扩大产能。被我活活摁住,最后换了套房子,册那,女方家说好给我买个房的,不能耍赖。于是,我就过上了奶油蛋糕的幸福生活。 四是认清自己。很多人认不清自己。总觉得自己快三十岁了,混的一笔吊糟,是因为没有伯乐。要是哪个土豪拉我一把,给我个十亿单子,我也发达了。实际上,没有怀才不遇,而是你压根没有才。 你不是牛吗?你的房呢?你的车呢?你的那几个小红呢?呵呵都没有吧?这就是现实。不要七想八想了。 条条大路通罗马。发财的路子千万条,你要有打游戏的劲头,尽可能找到一条。不要太贪心,只要一条就发了。 小结,去萧山的“躺赢专列”已经很便宜了,你还想怎么样?


不要急于否定别人。

这个世界有太多太多我们不知道的事,你偶尔听到了,那是你的幸运。但是,有太多的屌丝,一听到与自己苞谷脑壳认知不一样的事,第一反应就是急匆匆的否定。这种人已经彻底封闭自己了,年纪二十岁,脑壳七十岁。 我年轻时候,有个朋友和我说,中环靠近外环的孙桥别墅三千一平米,非常漂亮,要不要去看看?我当时大怒,你和我说这个干嘛?我要的是外滩贵州路。我急急忙忙的拒绝了人生最大一个彩蛋。后来这个别墅因为误工逾期,开发商还赔了一笔钱,算下来大概是2700元一平米。 这种事情非常多。我以前觉得自己什么不懂!要你说?对于任何人的建议都嗤之以鼻,就你个二本子,也想说我不好?滚!然后我就成功的把自己封闭起来了,二十年后,妥妥的一根老油条,还骂天骂地! 老子是大学生啊!连个房子也没有,上下五千年都对不起我。册那,我年轻时候也够屌的。


结婚意味着什么?

大部分屌丝不知道答案。他们以为,就是丈母娘把女儿洗的干干净净给你送过来,你舒舒服服用。实际上远远不是这么简单。婚后,你可能没几年就有娃了。这就要你老命了。 1,老婆和闺蜜比房子。你吃得消吧?也不多,千万入门,脱层皮。 2,娃娃是个吞金兽。一年七八万,还要24小时配合班级微信群的家长任务,又要脱层皮。 3,自己也要考职称。副高不是那么容易的。脱层皮。 4,如果你还不服,没关系,再过几年,就可以去三甲收费处刷卡了,上不封顶,四个老人,你一人准备80w,省着点花,大差不差了。 当然,你也可以选择躺死狗,那你倒大霉了。老婆闹,儿子哭,老头老太冲上门,破口大骂,骂你不孝!你自己整两杯牛二吧!

阅读全文 »

By Long Luo

题目:

将一个n元一维数组a[n]左移i个位置。例如,当n=8,i=3时,数组abcdefgh旋转为defghabc。请设计一个算法完成这个任务。

解答

杂技算法

分析:将a[0]存储在一个临时变量中,然后将a[i]替换a[0],a[2i]替换a[i]….当一个循环结束的时候,若替换次数小于n,则从a[1]开始替换…,需要经过gcd(n,i)(n和i的最大公约数)次循环后,才能把每一个元素都移到该移的地方。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/*
**
** tcpipstack @29/10/2012.
** shenzhen.
**
*/
#include <iostream>
#include <string>

using namespace std;

/* Acrobat Rotate Shift Alogrithm */
string AcrobatRotateShift(string str, int n);

//
int main(void)
{
string str1 = "abcdefg";
string str2 = "";

cout<<"str1= "<<str1<<endl;
cout<<"str2= "<<str2<<endl;


str2 = AcrobatRotateShift(str1, 2);

cout<<"str1= "<<str1<<endl;
cout<<"str2= "<<str2<<endl;

getchar();

return 0;
}


/*
*
* the Acrobat Rotate Shift Alogrithm
*
*/
string AcrobatRotateShift(string str, int n)
{
int strlen = str.length();
int count = 0; //统计移动次数
int i, j = 0; //k初始化为0,从str[0]开始
char temp;

while (1)
{
//开始的元素保存到临时变量temp中
temp = str[j];
i = (j + n) % strlen;

//开始移动,直到遇到开始的元素
while (i != j)
{
str[(i - n + strlen) % strlen] = str[i];
count++; //移动次数统计量+1
i = (i + n) % strlen;
}

//临时变量temp中保存的值赋值给刚才移动的最后一个位置
str[(j - n + strlen) % strlen] = temp;
count++;

//判断是否所有元素都已经移动
if (count < strlen)
{
//没有移动所有元素,再次从str[j+1]开始
j++;
}
else
{
//所有元素都已经移动,跳出循环
break;
}
}

return str;
}
阅读全文 »

By Long Luo

如何查看Android进程信息呢?

可以打开adb shell,然后我们就有2种方法:

1. 直接输入ps命令

输入之后,我们就可以看到如下的信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# ps
ps
USER PID PPID VSIZE RSS WCHAN PC NAME
root 1 0 276 188 c0099f1c 000086e8 S /init
root 2 0 0 0 c004df64 00000000 S kthreadd
root 3 2 0 0 c003fa28 00000000 S ksoftirqd/0
root 4 2 0 0 c004abc0 00000000 S events/0
root 5 2 0 0 c004abc0 00000000 S khelper
root 6 2 0 0 c004abc0 00000000 S suspend
root 7 2 0 0 c004abc0 00000000 S kblockd/0
root 8 2 0 0 c004abc0 00000000 S cqueue
root 9 2 0 0 c01780d0 00000000 S kseriod
root 10 2 0 0 c004abc0 00000000 S kmmcd
root 11 2 0 0 c006efa8 00000000 S pdflush
root 12 2 0 0 c006efa8 00000000 S pdflush
root 13 2 0 0 c0073480 00000000 S kswapd0
root 14 2 0 0 c004abc0 00000000 S aio/0
root 22 2 0 0 c0175900 00000000 S mtdblockdc

那么我们禁不住要问:

1
USER     PID   PPID  VSIZE  RSS     WCHAN    PC         NAME

那么这些项各代表着什么意思呢?

  1. USER: 进程的当前用户;
  2. PID : 毫无疑问, process ID的缩写,也就进程号;
  3. PPID :process parent ID,父进程ID
  4. VSIZE : virtual size,进程虚拟地址空间大小;
  5. RSS : 进程正在使用的物理内存的大小;
  6. WCHAN :进程如果处于休眠状态的话,在内核中的地址;
  7. PC : program counter,
  8. NAME: process name,进程的名称

Linux ps命令对比:

Android的内核还是Linux的,我们可以和Linux下ps aux命令的各项参数进行对比,可见:

1
2
3
4
5
6
7
8
9
root@long-desktop:~# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 2804 1684 ? Ss 21:11 0:01 /sbin/init
root 2 0.0 0.0 0 0 ? S 21:11 0:00 [kthreadd]
root 2286 0.0 0.4 8888 3172 ? Ss 21:52 0:00 sshd: root@pts/0
root 2352 0.0 0.2 4684 2048 pts/0 Ss+ 21:52 0:00 -bash
root 2454 0.4 0.4 8888 3164 ? Rs 22:06 0:00 sshd: root@pts/1
root 2518 0.1 0.2 4684 2004 pts/1 Ss 22:06 0:00 -bash
root 2551 0.0 0.1 2736 1088 pts/1 R+ 22:06 0:00 ps aux
阅读全文 »

By Long Luo

时间过的好快,又到了周末了。由于最近休息的不太好,下午的时候就先去了宝体游泳,游了2个小时,刚好2km就到了5点了。

回到住处换了衣服,就约了老朋友春哥去宝体去打了2个小时的羽毛球,打完球之后,由于好久没见,就去吃了顿饭,聊了很久,从春哥身上学到了很多东西。

说说几点收获和感想吧!

一、关于成长

不要在别人面前诉说自己吃过多少苦,有过多少辛酸。虽然可能你确实吃过了很多苦,但是你永远不知道对方经历了什么经历了多少苦涩

一味说自己多不容易,太矫情了。学会咬牙,学会承受,学会埋藏在心里。

当你经历了越多,就会发现以前那些事情都算是小事,就像一阵风,咻咻就过去了。

只有做出结果才算成事。

另外,看到我的羽毛球女神王适娴发的一条微博,说的太好了,讲出了成长的真谛。

成长就是你哪怕难过的快死掉了,但你第二天还是照常。没有人知道你发生了什么,也没有人在意你发生了什么。关于你的未来,只有你自己才知道。既然解释不清,那就不要去解释。没有人在意你的青春,也别让别人左右了你的青春。开心每一天,努力向上,做无怨无悔的自己。

二、进步

虽然知道春哥是个很牛很特别的人,但是并没有想到原来春哥这么牛。春哥才是那种全方位碾压我的人,不光是知识面,社会经验,职场,运动方面…

这个世界太大,聪明人实在太多了。永远不要为眼前的一点点进步窃喜,永远要追求更好的自己,你可以做到更好。

永远要看到更大的世界!

三、职场

过去几年,发现我在职场上没有得到太大进步,简直是职场小白,真不知道以前是怎么混的。

经历了去年不顺利的职场经历,我才明白了很多为人处事方面的经验,又恶补了很多书籍,才算想明白了自己为什么会失败。

当然,最关键还是要有实力

四、精神

春哥的那种不懈努力的精神感染了我,我才发现我还是不够努力,而且不够讲究方法。

我们同属底层阶级出身,很底层底层的那种。幸运的是我们都接受了高等教育,来到深圳,见识了更大的世界。

我们所能依靠的自有自己的双手和大脑,在我们这辈的努力之下,提升自己的阶层,不用让自己的小孩重复一遍自己曾受的苦。

由于时间关系,暂时就想到了这些,先写到这里,下次再补上。

By Long Luo at 2016-05-21 23:40:29 ~ 2016-05-22 00:08:49@Shenzhen, China. Modified By Long Luo at 2018年9月29日22点53分 @Hangzhou, China.

0%