- 博客(145)
- 收藏
- 关注
转载 mybatis中传入的值始终为null
在service层的orgId、type都是有值的,但是始终查询不到结果,查看sql发现,orgId的值始终为‘null’字符串。困扰了好久,结果发现自己犯了一个非常低级的错误。这里应该使用双等号。...
2019-01-28 14:30:10 2460
原创 update与delete时,一定不能缺少where条件
在实际开发过程中,update语句和delete语句一定不能缺少where条件,否则会引起非常严重的后果。而且,在代码中对where中条件做非空校验,如果为空就要报异常,一定不能让执行。 ...
2019-01-16 22:05:06 2921
原创 Truncated incorrect DOUBLE value错误
sql中update时,为多列设置值时,列与列之间不能用 and ,必须是用逗号sql的update语法错误 eg: update Person set name = ‘auhnayuiL’ and age = 1 where id = 1; 改and为, update Person set name = ‘auhnayuiL’ , age = 1 where id = 1;...
2019-01-16 21:59:02 16797
原创 两个list中数据对应关系错乱的bug
看下边这段代码,风险很大。这段代码,接收两个从前端传过来的字符串,一个是供应商企业名称,一个是核心企业名称,都以逗号作为企业名称的分隔符。供应商企业名称与核心企业名称是一一对应的,第0个供应商企业名称与第0个核心企业名称对应,第1个与第1个对应。问题就出在这个名称的对应上,这里风险很大,如果有一个环节企业名称的顺序乱了,那么供应商企业名称与核心企业名称的对应关系就乱了。这里用的是数...
2019-01-14 22:39:55 858 1
转载 in与exists执行过程的区别
in 确定给定的值是否与子查询或列表中的值相匹配。in在查询的时候,首先查询子查询的表,然后将内表和外表做一个笛卡尔积,然后按照条件进行筛选。所以相对内表比较小的时候,in的速度较快。相当于一个双重循环,外表是外层循环,内表示内层循环。exists 指定一个子查询,检测行的存在。遍历循环外表,然后看外表中的记录有没有和内表的数据一样的。匹配上就将结果放入结果集中。区...
2019-01-14 22:12:13 604
原创 not in (null)导致无查询结果
问题:语句1 :Select * from table1 A where A.col1 not in ( select col1 from table2 B )转载注明出处:http://x- spirit.iteye.com/、http: //www.blogjava.net/zhangwei217245/如果这样,本来应该有一条数据,结果没有。如果...
2019-01-14 22:02:40 1849 1
原创 变量名写错:coding是个精细活
今天,测试同事再进行回归测试时,发现了一个问题,是一个小问题,多亏自己当时没有轻易放过这个问题,仔细看了下代码,原来有个字段的名字拼写错误。我错把企业名称字段赋给了企业id字段。通过这个bug,再次提醒自己,coding是个精细活,一定要注意变量的拼写。...
2019-01-14 21:52:25 267
原创 协议文本错误
涉及到系统中与签署协议有关的功能时,一定要注意协议文本不能出现任何错误,因为协议一旦签署了,就是具有法律效力的,协议文本中出现错误,这是非常麻烦的。协议文本是由法务人员提供的,但是法务人员并不清楚如何在程序中签署协议。当程序员在把法务人员提供的doc协议文本转变成程序中协议文本时,一定不能无脑的复制粘贴,一定得用脑子去看协议的内容。上周同事就遇到一个协议文本出问题的生产bug。大概...
2019-01-09 22:53:04 270
原创 边界值处理不当:定价模板边界值处理不当
今天同事遇到一个生产问题,定价模板取值问题。融单系统中的定价模板,是指融资时利率如何取值。例如:(1)当融资金额在[0,10000)这个区间时,利率取2%(2)当融资金额在[10000,20000)这个区间时,利率取2.5%问题就出在边界值这里,当融资金额超过20000万时利率如何取值?同事遇到的问题是,融资金额的最大值设置为1亿,因为当时考虑到单笔融资的金额是不会超过1亿...
2019-01-09 22:33:55 261
原创 Address already in use: JVM_Bind 端口被占用
在启动Tomcat或者使用SocketServer时,端口已经被占用了,就会报这个错。解决办法很简单:1.换个端口号2.干掉占用端口的jvm进程
2019-01-06 10:57:28 348
转载 web.xml配置session详解
在许多情况下,都可以在Java EE中直接使用HTTP会话,不需要添加显示地配置。不过可以在部署描述符中配置它们,并且出于安全地目的也应该配置。在部署描述符中使用<session-config>标签配置会话。样例<session-config> <session-timeout>30</session-timeout> <cook...
2019-01-02 22:31:10 2879
原创 Ctrl + H 进行全局搜索,定位代码
Eclipse中使用Ctrl + H 进行全局搜索进行是定位代码非常重要且好用的方式。最近几次debug的过程中,发现Ctrl + H是非常好用的,之前对这个功能使用的不够灵活。要注意两点:1.搜索的关键字要足以准确定位代码2.全局搜索代码的唯一方式例如:上次删除冗余代码的时候,在删除某个方法之前,我肯定需要首先判断某个方法是否被调用、在哪里被调用,对于controller中的...
2018-12-26 10:04:34 2923
原创 ‎,这是一个特殊的字符,一个肉眼看不见空字符
今天遇到一个很奇葩的问题,检验UKEY的证书序列号,肉眼看上去明明完全一样的两个证书序列号,但是偏偏就不相等。排查好久,最后终于发现原来是有一个特殊的字符在捣鬼,这个字符完全看不见,而且不占位子。就像这样,两个字符串看上去一模一样,但是有一个看不见的字符,&lrm;在定位这个问题的过程中,浏览器中调试帮我了大忙。如果,我能更善于使用IE8js调试工具,可能就更快的解决这个问...
2018-12-25 21:58:08 7540
原创 WEB-INF目录名称写错
昨天犯了一个非常低级的错误,在创建WEB-INF目录时,将目录名称写错,结果就导致web.xml文件无法被加载。一开始我还以为是我web.xml文件写的有问题,所以就将问题的排查重点放在对web.xml内容的检查上。浪费了太多时间,最后发现仅仅是目录的名字写错了。可给我气死了,太抓狂了,怒气难消,导致晚上还严重失眠!从这个bug的产生,以及对这个bug的处理上,有三点是要反思的:1.当...
2018-12-25 21:18:07 308
原创 生成图片验证码报Could not initialize class sun.awt.X11GraphicsEnvironment
今天把java web项目部署到一个新的服务器上时,生成图片验证码报Could not initialize class sun.awt.X11GraphicsEnvironment。经查,服务器所用操作系统是没有GUI的,所以X11GraphicsEnvironment无法调用系统的与图形处理有关的功能,就报错了。解决这个问题,只需在启动java虚拟机的时候,添加一个参数,设置java图...
2018-12-23 11:03:48 519
转载 linux下的X server
linux下的X server: linux图形界面原理Moblin Core是在Gnome Mobile的平台上建立。我以前玩Linux,提交的都和图像没有关系,连Xwindows都不用启动,开机后直接进入文本命令行,所以这方面了解得很少,需要学习一下. 严格来讲,Linux这个词本身只表示Linux内核,但在实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用 GN...
2018-12-23 10:42:33 1607
原创 Linux headless mode (无头模式)
今天遇到一个问题,把java web 项目部署到客户的服务器上时,登录界面的图片验证码无法显示。经排查发现,java后台代码使用X11GraphicsEnvironment类来生成图片验证码的时候出错了。因为在正常情况下,X11GraphicsEnvironment会调用操作系统的X server来生成图片。但是在操作系统的headless mode下,是没有X server的,所以使用X11Gr...
2018-12-23 10:38:21 13207 1
原创 身份证号规则
1.号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。 2.地址码 表示编码对象常住户口所在县(县级市、旗、区)的行政区划代码,按GB/T2260的规定执行。 3.出生日期码 表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日代码...
2018-12-22 11:33:28 8856 1
原创 快捷键冲突,eclipse ctrl + shift + f快捷键失效
今天想格式化一下代码,使用eclipse的ctrl + shift + f 快捷键,但是发现不起作用。原因是快捷键冲突了,我使用了搜狗输入法,在搜狗输入法中,ctrl + shift + f 用于切换繁简体。解决办法就是,在eclipse中使用ctrl + shift + f 快捷键时,先切换到其他非搜狗输入法就可以了。 ...
2018-12-07 12:58:31 1234
原创 当引用类型做方法参数时,修改属性时一定要注意
public void test() { T param = new T(); test1(param); test2(param);}public void test1(T param) { // modify param param.setXxx();}public void test2(T param) { // do something}上例中,在test1()...
2018-12-06 10:23:04 1437
原创 SQL注意
1.判断字段是否为null,是用 is nullselect * from table_name where col_name is null;2.判断字段是否为空select * from table_name where col_name is null or col_name = '';3.注释(1)单行注释使用#(2)单行注释还可以使用 "-- ", 注意--后跟有...
2018-12-05 18:04:05 97
原创 Java instanceof用法
instanceof运算符用于判断某个对象是否是某个类或某个类的子类或接口的实现类的实例。boolean flag = obj instanceof ClassName;判断obj是否是ClassName的实例,或obj是否是ClassName子类的实例,或obj是否是ClassName的实现类的实例(接口是特殊的类)。特别注意:obj必须与ClassName具有父子继承关系,否则编译...
2018-12-04 18:50:20 262
原创 Java BigDecimal比较大小
BigDecimal比较大小使用compareTo(BigDecimal)方法。int flag = bigdemical.compareTo(bigdemical1)flag = -1,表示bigdemical小于bigdemical1;flag = 0,表示bigdemical等于bigdemical1;flag = 1,表示bigdemical大于bigdemical1;实际中...
2018-12-04 18:28:57 57316
原创 Java私有成员可以被子类继承
之前在看书的是有一直有个错误认识,即私有成员不能被子类继承。私有成员,可以被子类继承,只是在子类中不能直接访问,要在子类中访问父类的私有成员,需要通过父类的可见方法(非private修饰的方法)。构造器是不能被继承的。 ...
2018-12-04 16:36:30 2271
原创 Java类直接量
在使用反射的时候,获得类的Class对象时,可以使用类名.class的方式。之前不知道Java类直接量,还以为class是类的属性,在Object中找了一遍没找到。类名.class,这种用法叫类直接量,可以获得该类对应的Class对象。...
2018-12-04 16:27:18 166
转载 Java抽象路径
抽象路径名:JAVA为了方便对不同命名规则的路径进行统一的处理,以JAVA的抽象路径名代表不同系统的路径名。以java.io.File的构造方法源码为例: public File(String pathname) {//pathname可以是windows系统的路径名称,也可以是Linux系统下的路径名称。if (pathname == null) { throw new NullPo...
2018-12-04 16:15:47 1002
原创 模糊查询及日期查询变量命名规范
(1)有时需要进行模糊查询,有时又需要进行精确查询,例如企业名称。这时就不能使用同一个变量,此时应该定义一个用于模糊查询的变量。定义方式,在精确查询的变量后+Like。(2)还有进行日期字段的查询时,有时需要精确查询,有时需要查询某个时间段。当需要查询某个时间段时,需要再定义两个变量,xxxStart表示起始日期,xxxEnd表示终止日期。...
2018-12-04 10:23:52 1172
原创 delete方法的规范写法
今天遇到一个细思极恐的问题,就是delete语句。当写delete语句时,一定要谨慎,要对delete感到恐惧!下边是一段无知无畏的代码:这个删除方法代码很好理解,就是将根据条件,拼接一个delete语句,实现按条件删除数据库中记录的SQL。这个方法的非常危险!就是当各个条件都为空的时候,上边的SQL就会是这样,delete from eb_agreement_record w...
2018-12-03 18:15:46 3173
原创 变量命名要注意扩展性
变量命名的扩展性,我理解的就是当业务发生变化之后,该变量的命名仍然是适用的。最近在开发中遇到的一个问题就是,定义一个变量,boolean型,用于标志是否需要签署用户服务协议。当前业务需求是,金茂用户、国新用户不需要签署该协议。于是,我这样命名:我直接将该标记变量命名为isJinmaoOrGuoxin,当时的想法就是简单直接,“金茂或国鑫”不用签署用户服务协议,所以就用isJinmaoO...
2018-12-03 12:31:17 208
原创 try catch中对捕获到的异常一定要做处理
在catch中捕获到的异常一定要做处理,不能直接return。处理方式:(1)继续抛出(2)打出日志反例:上例中,对捕获到的异常没有做任何处理,这是不合适的,虽然不影响代码的逻辑,但是代码确实出问题了,而又没有将错误内容显示出来,这样会影响代码排除错误。正例:上例中,将捕获到的异常信息打印到日志中,这样就可以在不影响业务逻辑的情况下,还知道出现了什么异常,可以进...
2018-12-03 11:22:37 13153 1
原创 魔鬼数字
今天优化代码的时候,切实感受到魔鬼数字使代码的可读性变得极差。开发的过程中,通常会使用数字来表示某种跟业务逻辑有关的状态,不同的状态通常对应着不同的处理逻辑。在代码里,就容易出现魔鬼数字的问题。尤其当遇到缺少注释的代码时,代码的可读性就变得很糟,很理解那段代码究竟是要干什么。在代码中使用魔鬼数字(没有具体含义的数字、字符串等)将会导致代码难以理解,应该将数字定义为名称有意义的常量。将数...
2018-12-01 17:58:42 2818
原创 Java标记接口
标记接口,顾名思义就是起到标记作用的接口,标记接口中没有任何属性和方法,所以对标记接口的实现类没有任何要求。至于标记接口是如何起作用的,猜测对于实现了标记接口的类,jvm会进行特殊处理吧。最常见的两个标记接口,Cloneable和Serializable。当在自定义的类中实现clone()方法时,是要必须实现Cloneable接口的。...
2018-12-01 16:28:57 151
原创 账号登录框,设计不友好
这个用户登录界面,有几点不友好的地方。(1)对于用户名输入框、验证码输入框,提示文字的颜色与背景色太接近,导致提示文字显示不清晰。(2)密码输入框缺少提示。...
2018-11-28 13:11:07 285
原创 包装类型之间一律使用equals来判断值是否相等
包装类型是引用类型,所以使用==是不能比较包装类型对象包含的值是否相等,==只是比较两个引用变量是否指向相同的对象。由于在jdk1.5之后,支持自动装箱功能,对于Integer会出现下面这种情况:Integer a = 1;Integer b = 1;System.out.println(a == b);// true上述代码中,a == b 结果为true,这只是一个假象,让人...
2018-11-27 23:33:59 3047
原创 Java常见错误提示信息意思
1.the return type is imcompatible with xxx.xxx();大意:返回值类型与xxx方法的返回值类型不兼容,该错误提示信息发生在子类重写父类方法时2.Java complier level does not match大意:eclipse设置的编译器版本设置不匹配...
2018-11-27 14:18:53 1618
原创 BigDecimal实用讲解
网上讲BigDecimal的内容很多了,就不再做重复工作了,现就根据自己的使用体会,以实用为目的将自己的学习笔记整理一下。想要回答以下问题:1.为什么要使用BigDecimal;2.BigDecimal的基本用法;3.使用BigDecimal时,需要注意的问题。就直接以我学习过程中的测试代码为例,进行说明。import java.math.BigDecimal;pub...
2018-11-23 23:26:10 168
原创 BigDecimal:java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable
在使用BigDecimal进行除法运算时,一定要注意设置精确度与取整方式,如果没有设置,当遇到除不尽的情况时就会抛这个异常,java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable ,大意就是说得到的是一个没有终止的,不能精确表示的数,通俗的讲就是除不尽。看以下代码:B...
2018-11-23 22:38:24 407
原创 BigDecimal:java.lang.ArithmeticException: Rounding necessary
BigDecimal bd1 = new BigDecimal("1.11");BigDecimal bd2 = new BigDecimal("3.33");// java.lang.ArithmeticException: Rounding necessary// 精度不够,导致存在舍入误差,所以必须得指定取整模式System.out.println("before set scal...
2018-11-23 22:22:57 852
原创 Hello World的由来
Hello World是一个非常著名的小程序。任何一个学过编程语言的人,大概都写过Hello World。这似乎是一种传统,几乎任何一种编程语言的任何一本教程,都会以Hello World作为入门小程序。今天翻书,就看到这个Hello World,于是就好奇Hello World究竟是起源于哪里?以下内容为网上搜的,应该可信。就是这个牛人Hello, World最早是由 Br...
2018-10-27 22:09:55 5351
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人