今天的主题是宣扬企业文化。没错,宣扬企业文化。

老师说了,你做的东西经理不一定能看懂,理论上里面的东西也不一定是公司的东西,但是表面上你要让经理知道你做的是公司的东西。emmmm……这么一说确实好像挺有道理……

不过听起来虽然挺复杂,但实际上就是换个软件启动时出现的图的事。

鉴于我写到这的时候还没装“特别版”的 MyEclipse 8.6,那么就先说说 Eclipse 怎么换图。

首先,找到 Eclipse 的安装路径。

里面有个 plugins 文件夹。在这个文件夹里找到一个名称为“org.eclipse.epp.package.common_<版本号>”的文件夹,里面有个splash.bmp,这个文件就是加载图,把它改掉就行了。

如果你的Eclipse曾经坐地升级过(就是执行过Update操作),那么应该会有好几个“org.eclipse.epp.package.common_<版本号>”文件夹,找其中版本号和你对应的那个(一般就是最新的那个),改这个文件夹里的splash图就好。

鉴于我写到这的时候,“特别版”的 MyEclipse 8.6 还是没到手……那么我就再写点别的……

这老师啊……怎么说呢……讲SQL的时候觉得好水啊,内容也拓展不开(比如分组查询的部分),操作也菜得很,总感觉知识深度又不够,推进速度又慢……感觉上都不如我高中刚毕业那会师从的一位在营口移动工作的已经提前进入退休养老状态的早就不剩多少头发了的老程序员。不是因为我自恃水平不错而作此评价,而是基于较为客观的考虑:俺们毕竟也算是正经211大学的学生,就算这学校再水,俺们学院在学校的地位再水,接受知识的能力应该不至于这么差吧……也不知道是老师懒得讲还是天生性子慢还是因为性子慢又考虑到教学计划所以才略掉不讲还是怎么样的我就不得而知了,但毕竟这老师居然连三款数据库的异同都熟知,讲的东西也基本上都够入门了,也就算是功过相抵了,毕竟不能指望一个人的知识面又广又深,熊和鱼掌不可兼得嘛~

但是昨天俺是真的对这老师改观了……

这是个杂学大师啊!!!杂学啊!!!杂!学!啊!

杂学这种东西,说没用也没用,说有用还有用。没用是因为这东西不算正经知识,只能算是经验之谈,对解决真正的实际问题并没有什么正经的帮助,有用是因为这东西可以在各种方面对解决问题起到一定的“辅助”作用,有的时候也确实会提供各种“神奇”且不乏有效的思路,最重要的是,逼格高啊(其实是最没用的一点吧呵呵)!

俺就是杂学学派而不是深学学派。虽然解决问题的时候思路清晰地不得了,但做出来的东西总是处于一坨屎的状态。尤其是和算法有关的东西,简直了,都算不上一坨屎,只能是一滩屎。(我怎么总是对屎这种东西情有独钟啊呵呵……)

我从小接受的就是针对知识面的教育而不是往深专研的教育,而我也早就逐渐习惯这种思维模式和学习方法了。我是明确知道自己的缺陷的,因此,我倒是想往“深度学习”发展,但是多年以来形成的思维方式已经难以转变了……最好的方案也许是重新开发一种适合与“深度学习”的思维模式。也正因如此,我最近读上了《苏菲的世界》,企图从中获取一丝灵感。(不过怎么想都觉得《苏菲的世界》也算是知识面系列的作品吧……)

回到这老师身上。

这老师在敲“FirstProject”输出一个5位的十进制数的时候留了一手。他把这个数用计算器转换成16进制,复制到 Microsoft Office Word 2010 里,选中,按了 Ctrl+X,就变出来了他的姓氏。

只听这时后面一片嘘声,不乏有惊奇者,也不乏有吐槽者。正如杂学这种东西本身,有人赞赏,觉得这玩意挺有意思的,也有人觉得屁用没有,都是垃圾。

哦,俺的 MyEclipse 8.6 到货了,该说说怎么换图了。

找到软件安装目录,依次进入 Common、plugins 文件夹,如我的路径是C:\Program Files\Genuitec\Common\plugins。在其中找到一个名为“com.skyway.<版本名>_<版本号>”的文件夹,比如我的叫“com.skyway.myeclipseforspring_7.0.1.201007201747”。里面有个splash.bmp,替换掉就OK。

虽然老师说图片尺寸最好做成一样的,但是根据我的实际测试,尺寸不同也没有什么问题。

最后,提一下几个与Java有关的内容。

& 与 &&,| 与 || 运算符的区别。
这两种运算符的运算结果是相同的,区别在于计算过程。
对于单个符号的这种,比如&,无论&左侧的表达式结果否为false,都会继续执行右侧的表达式并判断得到的结果。而两个的这种,比如&&,要检测到左边表达式的值false,就会直接给出结果,而不再执行右侧的表达式。| 与 || 同理。
概述一下,单个符号的,无论符号左侧是否能直接得出最终结论,都要执行并判断符号右侧的表达式。而两个符号的,只要左侧表达式可以得出最终结果,就不会再执行右侧表达式了。
更简要地概括以下,单个符号的,右侧表达式一定会执行,而两个的则不一定。

另外,提一个老师提到了但是讲的不够U详细的Java的基本数据类型与类的实例(也就是对象)的传递时的差别。
Java在传递基本数据类型时,传递的时这一数据的值的拷贝。而在传递对象的时候,传递的是这一对象在内存中的地址,相当于在C/C++里面传递了一个指针。具体原因似乎是因为基本数据类型的值和对象的引用(也就是对象的标识符,不严格地俗称叫变量名)保存在栈中,而具体对象值保存在堆中。这个我不太懂,啥时候整明白了再写,但是应用方面的事情我还是能说明白的。
先提一种与对象有关的情况:字符串的比较。
由于String类是对象,那么在比较两个字符串(可以是两个String类,也可以是一个String类和一个由引号包起来的字符串(其实本质上也是一个String类)进行比较)是否相等的时候,不能使用双等号“==”,而必须使用equals()函数。由于Java在传递对象时,传递的时它的引用(也就是内存地址),因此如果使用双等号比较对象,那么比较的就是二者的内存地址,即“是否为同一对象”而非“对象的内容是否相同”,因此,就算两个字符串的内容是相同的,但其并不是同一个对象,其内存地址也必定不同,因此返回的结果必定为false。因此,应当使用equals()函数比较对象的内容。equals()函数的具体实现在Object类中,这里就不作描述了。
另外一种与之相关的情况是:写一个方法(函数)交换两个同类型变量的值。
假设我们的交换方法定义如下:

public void swap(int a, int b){
// 这是一种错误的两数交换函数的写法,错的并不是本行下面的交换算法,而是本行上面的传参
int c = a;
a = b;
b = c;
}

该函数无论如何都不可能将a、b两数的值交换后反映到方法体外。因为Java在传入基本数据类型时,传递的是其值的拷贝。因此,尽管名称相同,该方法体内的a和b并不是方法体外部的a和b,只是值相同而已。所以,被交换的a和b也并不是方法体外部的a和b。而由于变量域的存在(变量域就是用{...}包起来的部分),该方法体执行结束的时候将会销毁这一变量域内的所有实例。于是,交换后的a和b就这么被Java的自动垃圾回收机制销毁掉了,GG。所以,这个函数并没有什么卵用。

当我写到此处时,老师正好讲到了两数交换……俺倒是还挺有先见之明的,容我洋洋自得一会,呵呵。

忽然发现今天的日志把昨天的某个部分一口气写掉了,那昨天的写啥啊……俺决定将本文的昨天部分复制以下,贴到昨天的日志中去……嗯,就这么决定了,我真机智,呵呵。