2015年创业中遇到的技术问题:31-40

来源:互联网 发布:mac matlab2017a激活 编辑:程序博客网 时间:2024/06/06 08:52
31.Linux下启动Mysql有N种方式。
  service mysql start;
  service mysqld strat;
  
  上述2种方式是,mysql已经安装作为了服务,有的叫做“mysql”,有的叫做“mysqld”。
  
  如果没有服务,还得手动启动。
  
  比如,/usr/bin/mysqld start &。
  
  一段时间不搞,记忆已经模糊了。
  o(︶︿︶)o 唉

32.用户表-索引-类型。
user表:uid,name
A类用户:1开头,10001
B类用户:2开头,20001
C类用户:3开头,30001

按照我之前的想法,想给用户增加一个type字段,感觉更清楚一些。
  
  boss觉得呢,从长远和性能角度,加前缀的方式更合适。
  
  加前缀,查询一类用户,用uid < 10001 ,uid >= 20000 and uid < 30000。每次查询可以走索引。
  
  根据类型type查询,type =1, type =2.
  type的值是固定的1,2,3。
  
  据说,索引的值不同反而更好。
  数据库索引这一块一直没有认真细看过)
33.jquery事件委派。
jquery提供了delegate方法。

// tab 选项卡
$(".tab-package").delegate(".tab-menu li", "click", function() {
var self = $(this);
var parent = self.parents(".tab-package:first");
var content = parent.find(".tab-content");
content.eq(self.index()).show().siblings().not('.tab-menu').hide();
self.parent().children().removeClass('on');
self.addClass('on');
});

弊端就是,页面改版后,如果样式被改了,很多依赖JS的效果出不来,不容易发现问题原因。

34.HTML表格的colspan。
想简单实现横跨所有列,网上找了个资料,感觉很坑啊,又说0表示横跨到列组的最后一列,又说没有浏览器支持。
只好去动态计算应该横跨多少列。

定义和用法
colspan 属性规定单元格可横跨的列数。
浏览器支持
所以浏览器都支持 colspan 属性。
没有浏览器支持 colspan="0",这个值有特殊的意义。(参见属性值表格中的描述)

语法
<td colspan="value">
属性值
描述
number
设置单元格可横跨的列数。
注释:colspan="0" 指示浏览器横跨到列组的最后一列。


template="<tr><td></td><td></td></tr>";
横跨2列。

实践发现,把colspan设置大一点,比如20,就能横跨所有列了。

35.SpringMVC异常处理,不需要加多余的“后缀”了。
<bean id="exceptionResolver" class="com.p2p.base.util.MyExceptionHandler">
<property name="exceptionPage" value="/error/500" />
</bean>
错误的写法:
<property name="exceptionPage" value="/error/500.html" />

36.表格分页组件fupage,实现加载动画。
加载数据的时候,显示动画效果。

在组件刚刚执行的时候,先设置表格内容为“展示加载图片的html代码”。
等加载完之后,再重新设置表格的主体内容。

//动画效果
function loadingAnimation(bodyHolder,loadingImageUrl,isTable) {
console.log("fupage-loading...");
var loadingText = "加载中...";
var loadingImage = "<img src='" + loadingImageUrl + "' alt='玩名加载中...'/>";
var loadingDiv = "<div style='text-align:center;' >";
//表格才加“<tr>”
if(isTable){
//偷懒,一般表格不会超过20列,设置为20,横跨所有列
loadingDiv +='<tr><td colspan=20>';
}
if (loadingImageUrl) {
loadingDiv += loadingImage;
} else {
loadingDiv += loadingDiv;
}
if(isTable){
loadingDiv +='</td></tr>';
}
loadingDiv += "</div>";
$("#" + bodyHolder).html(loadingDiv);
}

37.Truncate Table。
在第21个问题,说到快速清空表数据的一种方法,drop table tablename,然后再重建表。
有粉丝给出了另外一种方式:Truncate Table。

Truncate是一个能够快速清空资料表内所有资料的SQL语法。并且能针对具有自动递增值的字段,做计数重置归零重新计算的作用。

TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。
DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。
TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用 DELETE。
如果要删除表定义及其数据,请使用 DROP TABLE 语句。
对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TABLE,而应使用不带 WHERE 子句的 DELETE 语句。由于 TRUNCATE TABLE 不记录在日志中,所以它不能激活触发器。
TRUNCATE TABLE 不能用于参与了索引视图的表。

参考资料:http://baike.baidu.com/link?url=ZQerws0xw22RxNSqcVbbATypqv6S9uxuP8k-SInjNBxRsnc9OmRsqWSBslWY8GxRlPr_OzAnU93EkkufepWFAa

38.kinMaxShow轮播图异常,最终发现是WebUploader图片上传坑爹,图片被压缩了。
  宽度由350变成了250,因此显示不正常了。

39.Java生成某个范围的随机数。
方法一:
 int max=20;
 int min=10;
 Random random = new Random();
 int s = random.nextInt(max)%(max-min+1) + min;
 参考:http://www.cnblogs.com/xwdreamer/archive/2012/06/13/2547426.html

方法二:
  import org.apache.commons.lang3.RandomUtils;
  Integer n=RandomUtils.nextInt(100, 1000);
  System.out.println("3位数的随机数:"+n);
  
40.订单编号等唯一字符串,用17位的时间+3位的随机数。
/**
 * 20位的唯一数,前17位是系统当前时间,后3位是随机数。
 */
public static String uniqueNo() {
String dateStr = DateFormatUtil.format(new Date(), "yyyyMMddHHmmssSSS");
Integer threeRandomStr=RandomUtils.nextInt(100, 1000);
return dateStr+threeRandomStr;
}
 System.out.println("20位唯一时间戳:"+uniqueNo());
 
 20位唯一时间戳:20150319101506558462
0 0