首页 > 其他分享 >2014年工作中遇到的20个问题:181-200

2014年工作中遇到的20个问题:181-200

时间:2023-09-11 14:03:16浏览次数:140  
标签:200 fansunion 20 cn userId replace 181 user id


181.项目中需要用到commons-email,想通过maven引入。

<dependency>
 <groupId>org.apache.commons</groupId>
 <artifactId>commons-email</artifactId>
 <version>1.2</version>
 </dependency>

在下载javax-mail的时候,遇到问题了。

我不断尝试各种方法,最后把Maven从Classpath删除了,然后想再把maven加入到Classpath下,

结果总是失败。


   先尝试把项目删除,再重新导入,结果还是不行。

   

   最后,把项目的Maven特性禁掉,Disable maven nature,再把项目convert to maven,这个时候

   Maven就加入到Classpath了,然后jar包也都顺利下载了。


182.checkbox复选框表单提交。

<form action="b.html" method="post">
<input type="checkbox" name="bike" value="1" />
I have a bike
<br />
<input type="checkbox" name="car" />
I have a car
<input type="submit" value="submit"/>
</form>


如果不选中,不会被提交。

如果选中,如果没有设置value,值是on,比如car=on。

如果value有值,比如1,那么car=1被提交。


183.超链接的URL,如果直接带中文,容易出现乱码。

Freemarker把中文名字进行url编码。

<#setting url_escaping_charset='utf-8'> 
<#assign url="${base}/search/search.html?keyword=${keyword?url}"/>

http://fansunion.cn/search/search.html?keyword=%E5%A4%A7%E5%AD%A6&pageNo=2&pageSize=20


184.Maven、Eclipse等经常出现的“非法字符”问题。

错误: 非法字符: \65279

.java文件是UTF-8,有BOM的。

用Nodepad打开,另存为没有BOM的。


185.一个很奇怪的问题。

一个静态变量public static  String luceneIndexDir = "c://lucene";

程序某个地方会修改为,从配置文件读取的值,比如/root/lucene。


在线上Linux环境的值怎么变成了“/root/C:/lucene”。实在是搞不明白啊。


本地却是正常的。


最后改了,把luceneIndexDir的初始值设置为空,就没有问题了。


186.replace into。

replace into 跟 insert 功能类似,不同点在于:replace into 首先尝试插入数据到表中,

 1. 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。

 2. 否则,直接插入新数据。

要注意的是:插入数据的表必须有主键或者是唯一索引!否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据。


除了主键,唯一索引也是可以的,unique。

唯一索引,可以是一个字段,也可以是多个字段。


187.Nginx域名跳转与“=”。

server_name fansunion.cn www.fansunion.cn blog.fansunion.cn;
        if ($host = 'blog.fansunion.cn'){
             rewrite ^/(.*)$ http://fansunion.cn/ permanent;
        }
        if ($host !=  'fansunion.cn'){
           rewrite ^/(.*)$ http://fansunion.cn/$1 permanent;
        }

把blog.fansunion.cn永久跳转到Fansunion.cn

www.fansunion.cn,去掉www,为fansunion.cn。

判断相等,是用“=”,而不是“==”。

188.登录再跳转的时候,浏览器很可能没有重新刷新页面,用的是以前的“缓存”。

手动刷新就可以了。


189.Mybatis取值,特殊场景。

List<Map<String, Object>> findAllByUserId(Long userId);
<select id="findAllByUserId" resultType="java.util.Map">
 <if test="userId != 1">and ur.user_id = #{userId}</if>
 order by p.parent_acl asc, p.sort_no,p.acl
</select>

这个地方,出了问题,#{userId}可以取得值。

而 test="userId != 1"的userId,报错,提示:

“There is no getter for property named 'userId' in 'class java.lang.Long'”。


如果参数类型使用Map或者Bean就可以,或者使用@Param("userId")标注下。


190.Java的Long比较。

Long id = 1L;

id.equals(1);

返回false。


id.equals(1L);

Long型的,都得显示指定L,标志这个整数是Long类型的。


191.Mybatis的@Select注解中不能直接使用<if></if>表达式,在xml中才行。


192.Mysql的replace into,先执行delete,再执行插入操作。

会导致表的主键id,会不断变化。

id user_id role_id,user_id和role_id作为联合唯一unique索引。


193.客户遇到了个问题,数据库调用存储过程,插入的数据为乱码。

call p_user_register('email2','雷文','123','11',1,@a,@desc);
select @a;
select @desc;

百度了下,在百度知道找到了调用方式和获得返回值的用法。


我本地没有出现乱码,猜测客户那边可能是因为mysql安装时没有指定utf8编码。


后来找到问题了,如果数据库原有编码是GBK,直接改数据库编码为UTF8,虽然编码变了,但是还是容易遇到乱码。

重建数据库,选择utf8编码,再导入数据,或执行存储过程,就不会有乱码了。


194.mysql导入sql,出现问题,然后就卡住了,导致后面的正常数据也无法导入。

问题一般出现在,用mysql-front等可视化工具导入sql。

如果出现这种问题,直接在dos命令行中,source c:/p2p.sql,就算遇到了错误,

也会直接跳过,不影响正确的导入。


195.今天发现Eclipse的一个好功能。

  项目名称-右键菜单-Source->Fromat,Clean up等。

  

196.晚上把中国象棋2开源到Code,结果由于声音文件比较大,导致push失败。

所以,先把本地的删除,再同步,再分批次,提交大的文件。


197.最近两天遇到了,复选框无法提交多个值的问题。

今天,找到了问题原因,后端表单组件是某个同事写的,有bug。

最初以为是,SpringMVC接收参数的方式不对,后来想到查看HTTP请求,发现只有1个。

再写一个原生的form表单,发现是可以有多个的,这样就确定了问题。


198.checkbox表单提交,用数组接收比较合适,map不行,只能接收到一个,多个值会覆盖。

<input type="checkbox" name="privileges" value="${item.acl}"/>
public void doadd(RoleForm params,Model model) {
}
RoleForm {

 private Integer id;
 private String name;
 
 private String remark;
 
 private  Map<String, Object> privilege;

 private  Integer[] privileges;
 }

199.Map的局限性,类型不够明确。Map没有Model清晰,也不利于面向对象编程,也不能充分利用java内置的特性,比如equals。

List<Map<String, Object>> ownPrivilegeList=privilegeService.listByRole(id);
List<Map<String, Object>> privilegeList = privilegeService.listAll();

2个集合中的map,不是同一个对象,但是他们的id是一样的。

如果是对象,重写equals方法,按照id进行比较,就可以使用

List.contains方法了,而用map只能自己手写。

private boolean contains(List<Map<String, Object>> ownPrivilegeList,
 Map<String, Object> p) {
 for(Map<String, Object> own:ownPrivilegeList){
 if(own.get("acl").equals(p.get("acl"))){
 return true;
 }
 }
 return false;
 }

Apache的MapUtils方法,也没有这个比较的。

200. 如果用mysql的“replace into”实现add方法,方法的名字用add感觉不太合适。

因为update方法,也会调用这个。

@Insert("replace into p2p_user_role(user_id,role_id) values (#{user_id},#{role_id})")

void addOrUpdate(Map<String, Object> params);

使用addOrUpdate,更好,这样service层add和update方法都可以调用底层的dao方法,不会出现歧义。


标签:200,fansunion,20,cn,userId,replace,181,user,id
From: https://blog.51cto.com/fansunion/7435665

相关文章

  • 商业研究(20):滴滴出行,进军海外包车?与OTA携程和包车创业公司,共演“三国杀”?看看分析师
     小雷友情提示:创业有风险,投资需谨慎。     前一篇文章,在探讨境外游创业公司-皇包车和易途8的时候,提到“滴滴如果进军海外包车,为海外华人提供打车和包车服务,有较大可能对海外包车公司进行较大打击”。   这个想法,之前没怎么考虑,而是通过一个朋友的公众号得知的。  ......
  • 2023年9月DAMA-CDGA/CDGP数据治理认证哪好?
    DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职业竞争能力。DAMA是数据管理方面的认证,帮助数据从业者提升......
  • 2023年9月NPDP产品经理国际认证报名哪靠谱些?
    产品经理国际资格认证NPDP是新产品开发方面的认证,集理论、方法与实践为一体的全方位的知识体系,为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。 【认证机构】 产品开发与管理协会(PDMA)成立于1979年,是全球范围内产品开发与管理专业人士最杰出的倡导者,协助个人、企业或......
  • 2023年9月CSPM-3国标项目管理中级认证报名,哪有?
    CSPM-3中级项目管理专业人员评价,是中国标准化协会(全国项目管理标准化技术委员会秘书处),面向社会开展项目管理专业人员能力的等级证书。旨在构建多层次从业人员培养培训体系,建立健全人才职业能力评价和激励机制的要求,培养我国项目管理领域复合型人才。  【证书含金量】 ·竞聘优先......
  • 2023年下半年杭州/深圳软考(中/高级)认证报名,去哪?
    软考是全国计算机技术与软件专业技术资格(水平)考试(简称软考)项目,是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试,既属于国家职业资格考试,又是职称资格考试。 系统集成项目管理工程师,属于软考三个级别中的“中级”。信息系统项目管理师,属于软考三个级别中的“高级......
  • 2023年9月深圳CPDA数据分析师认证到弘博创新
    CPDA数据分析师认证是大数据方面的认证,助力数据分析人员打下扎实的数据分析基础知识功底,为入门数据分析保驾护航。帮助数据分析人员掌握系统化的数据分析思维和方法论,提升工作效率和决策能力,遇到问题能够举一反三,为大部分决策难题提供解决方案。帮助数据分析人员掌握几种通用的数据......
  • 【2023-09-08】梳理怨气
    20:00路沾蔬草白,天气转青高。叶下和秋吹,惊看两鬓毛。养羞因野鸟,为客讶蓬高。火急收田种,晨昏莫辞劳。                                                 ——唐·元稹《白......
  • 【2023-09-09】连岳摘抄
    23:59当天空中出现乌云的时候,我们就指出:这不过是暂时的现象,黑暗即将过去,曙光即在前头。                                                 ——XXX你的直觉是对的,你现......
  • 开源 & Dad:聊一下我与 2022 的故事
    开源&Dad:聊一下我与2022的故事董天成​github.com/andycall​关注他 22人赞同了该文章​展开目录 每个人都有这自己难忘的2022年,同样,2022对于我来说,是个重要的人生转折点。通常每次在新年的时候,我都是向前看,想象着新的一年后,自......
  • Acwing.第 120 场周赛
    Acwing.第120场周赛比赛链接A最大GCD给定一个正整数n(n≥2),请你确定两个正整数a,b,使得1≤a<b≤n,且gcd(a,b)尽可能大。输出gcd(a,b)的最大可能值。gcd(a,b)指a,b的最大公约数。提示:可以通过给定样例观察一下n和答案之间的关系。输入格式第一行包含整数T,表示共有T......