2013年工作中遇到的20个问题:241-260

241.DAO层很多代码都是重复的。
分页:记录列表,多少条记录;
是否授权:授权的,没授权的。
一定要写一个功能强大的高度复用的BaseDao,大大减少重复代码。

242.SQL语句in有个数限制。

这问题在这有描述 2013年工作中遇到的20个问题:201-220,第220个。

http://blog.csdn.net/fansunion/article/details/12046259
//当in语句的id个数太多的时候,Oracle、MySQL等数据库不支持。

select ... from a where col in (select ... from b where b.col='')
一种高效率的解决办法是使用exists语句。
select ... from a where exists ( select 1 from b where a.col = b.col and b.colxx='')

//我写了个错误的例子,TUser  和VisitLog应该有个关联条件
select * from TUser where exists(select 1 from VisitLog where id = 492); 如果只是写这1条语句 有意义么??

其实这个语句若把链接条件加上
它就是一个链接查询
类似于select a.* from a inner join b on a.col=b.col where b.id = 492)

243.不同数据库日期函数用法不同。

将日期减少1年的函数:
SQLServer中的用法是select DateAdd(m, -1 , startTime)。

MySQL中的用法是select DATE_ADD(startTime,INTERVAL -1 MONTH)。

参考资料:http://www.cnblogs.com/zeroone/archive/2010/05/05/1727659.html

本来我在考虑是否可以先把日期获取出来,再用Java函数-1个月,发现太麻烦了。

244.CSDN在文章中插入代码。
博客编辑器可以选择插入Code,而且可以选择编程语言的类型,如C++/Java等。
注意排版,方便读者,也方便了自己。

245.Linux服务器安全性。
公司线上的服务器不能通过自己的电脑直接SSH连接,需要先SSH到一台中转电脑(比如测试环境的Linux),
然后通过中转电脑SSH到线上服务器。
这样,大大提高了Linux服务器的安全性。
对公司的线上服务器来说,安全实在是太重要了。

246.MySQL Localhost匿名登录。
今天登录了公司的服务器,直接在Linux命令行下输入mysql就自动登录成功了。
以前还不知道。
为了下boss,这是MySQL支持的本机匿名登录功能。
我擦,以前看数据库表的时候,确实有一些支持匿名用户访问的记录,原来是这么回事。
高端啊。

247.Linux服务器常用软件安装。
公司要上线一个新项目,需要在Linux服务器上部署mysql,apache,tomcat,redis等环境。
我以前只在自己的云主机上部署了JDK,MySQL,Apache,Tomcat等,Redis没有弄过。

对于开发人员来说,懂运营部署还是非常必要的。

248.Linux下启动Tomcat并查看启动信息。
常用却不够犀利的用法:
./startup.sh
看不到启动信息

 $TOMCAT_HOME为tomcat安装目录
在linux如果按$TOMCAT_HOME/bin/startup.sh来起动tomcat则得不到象windows一样的控制台效果,查看日志很不方便.
是不是linux下没有象windows下一样的控制台呢,不是的,只是大家都习惯这样来启动它。
在LINUX下如何使启动TOMCAT后象WINDOWS一样呢?,解决办法如下:
$TOMCAT_HOME/bin/catalina.sh run
象这样来运行它就得到象windows一样的控制台了
 
cd到Tomcat的bin 目录
./catalina.sh run(这种方式也有弊端,不能关闭shell窗口。关闭窗口,会导致Tomcat关闭。)

 

另外更好的方式

./bin/startup.sh && tail -f catalina.out

或tail -f catalina.out(也会动态更新)

 

#下面这种方式总是提示找不到命令
catalina.sh run
                
249.cp默认带了 -i参数,需要首先取消cp的别名。
有的系统在安装的时候,cp - i 的 alias 就是 cp也就是说你在执行cp的时候,其实是执行的cp -i
这样,复制文件夹的时候,如果出现重复的文件,可费劲了。
unalias cp

http://zhidao.baidu.com/link?url=idgm0NqvHOd2H7joY-1qTu5P0TgetjL5IMjm4nW9YdgeUKMdr0lmXD2Y-qPOCMXJmyrsBc4iK1E89xmachCkwq

250.MySQL-Front自带数据导入功能。
选择表格-右键-输入,支持CSV、Excel、XML等格式,这些文件应该有一定的规律。
可以是以下形式。
id    projectId
1    16

251.MultiValueMap也不是完全理想的数据结构。
MultiValueMap map = new MultiValueMap();
map.put(1, 1);
map.put(1, 2);
map.put(1, 1);
map.put(2, 1);
map.put(2, 2);
map.put(2, 1);
value的值也需要去重。
1,[1,2]
2,[1,2]

项目中需要的数据结构是,唯一的key,并且唯一key的多个value也不能重复。

252.环比和同比的区别。
与上一统计段比较,例如2005年7月份与2005年6月份相比较,叫环比。
与历史同时期比较,例如2005年7月份与2004年7月份相比,叫同比。

环比增长率=(本期数-上期数)/上期数×100% 反映本期比上期增长了多少;
环比发展速度,一般指是指报告期水平与前一时期水平之比,表明现象逐期的发展速度。
环比=(本统计周期数据/上统计周期数据)×100%。
 
253.更新网站小图标,需要清除浏览器缓存。
搜狗和QQ浏览器小图标缓存的位置。
C:\Users\Fans\AppData\Roaming\SogouExplorer\FavIcon
C:\Users\Fans\AppData\Roaming\Tencent\QQBrowser\icons

254.JavaDoc指定编码。
-encoding utf-8 -charset utf-8  

255.Commit之后,Rollback不再有效。

256.Hibernate打印sql语句影响性能。
10万条 10分钟。打印sql语句。
不显示sql语句,只要7分钟。

打印sql语句是需要IO操作的,而笔记本的IO一般般。

此外,以前,根据实际工作经验证实了,Struts2开发模式devMode下,效率大大降低。

257.Maven工程CLASSPATH的2种情况。
Maven项目的结构
src/main/java
src/main/resources

src/test/java
src/test/resourcs

当正常运行程序的时候,CLASSPATH指的是src/main/java和src/main/resources这2个路径。
当单元测试执行的时候,CLASSPATH指的是src/test/java和src/test/resources这2个路径,
如果找不到资源文件,比如struts.xml,则还会去src/main/java和src/main/resources这2个路径找。


如果正常执行和单元测试执行,需要的配置信息完全一样,可以只维护一份。
或者那些完全相同的配置,只维护一份。

不同的配置,维护2份。
(这可是我认真分析了好久才发现的,千万要理解呀)

258.MySQL同一个用户的密码竟然可以不一样。

mysql-user。
Host,User,Password
同样都是root,密码是可以不一样的。只要使用host(访问来源的主机)不一样就可以了。

localhost,root,123
fansunion.cn,root,456

我通过本机MySQL-Front直接连接远程MySQL,通过Putty连到远程主机-再连接MySQL,
同一样是root用户,一个是123,一个是456。
看了下mysql-user表的数据,才知道这个问题。

259.当数据库表中的数据有很多的时候,比如600万,修改列的名字等操作比较耗时。

260.将查询结果插入到表中。
DataResource表中的数据量很大。
insert into DataResource2
(select * from DataResource where id >0 and id < 600000);
这个sql语句的效率很高。

我新建了一个临时表DataResource2,每次同步一些数据到DataResource2,然后进行测试,
如果没有问题,再直接对DataResource中的数据进行处理。

相关阅读

工作问题 http://blog.csdn.net/FansUnion/article/category/1334371

 

你可能感兴趣的:(sql,mysql,linux,数据库,Hibernate)