即使Java方法说明文档说是线程安全的,不代表就多线程下的线程操作肯定安全,还是会遇到同步问题的。比如Vector,对比ArrayList是一个线程安全的类,但是不恰当的操作,还是会有问题,下面的代码中,Vector中放了10000个数字,有20个线程,循环删除这个列表中的最后一个数字。运行的时候,很大的概率会出现java.lang.ArrayIndexOutOfBoundsException的异
C#中的泛型有时会被人吐槽不支持void。试了一下Java的泛型,发现泛型参数类型中,Void(不是void)是支持的,编译不报错。但是真的的写方法的时候,还是要输入返回值。比如下面的代码@OverridepublicVoidcall(){returnnull;}你不得不返回一个null,不然编译会不过的。所以说,Java泛型虽然支持了Void,但看上去就是一个假象。
用久了C#中的DateTime类型之后,再用回Java中的时间类,真是一种痛苦的事情。Java8之前,Date类就以其糟糕的设计,被人吐槽,比如最简单的初始化日期的方法,会出现反直觉的结果,比如Datedate=newDate(1980,12,25);它的真实日期是WedJan1200:00:00CST3881这种不可思议结果。当然,它也是有一种算法的,是1900+1980+1导致的,至于为啥是这
51CTO博客开发李涛的技术专栏不胜人生一场醉beniao我不是AI点亮代码
Controller中,回填到模板的的一个数据类型是Calendar,在前端显示的时候,直接显示会报错,比如模板中这样写${submitDate},会出现如下的错误: java.util.GregorianCalendar[time=-2209017600000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=java.util.
FreeMarker中调用Java后台中的方法。 需要在Controller传回模板的时候,把该方法的类进去,类似如下的方法: model.addAttribute("freeMarkerHelper", new FreeMarkerHelper()); model.addAttribute("myController", this);this参数为当
Controller响应,喷出图片,是一个很常见的功能,代码如下@RequestMapping(value = { "/img/{filename:.+}" }, method = RequestMethod.GET, produces = { MediaType.IMAGE_JPEG_VALUE,
thymeleaf中使用layout功能,根据官方的文档,看上去非常的简单,但是就是各种搞不定。百度谷歌都没能查到有效的方案,有些方案是需要再写代码配置。 直到后来我在pom文件中更新的Thymeleaf的版本,才搞定。 原来我开发的时候,是从springboot官网http://projects.spring.io/spring-boot/#quick-start上下载了一个工程文件,这个工
最近流行语又多了个微服务,事实上已经流行蛮久了。对于微服务的概念,其实业界并没有给出明确的定义。只是罗列了几个微服务的特征,比如:独立部署组件化,按业务或者服务的功能来划分粒度低易于部署,快速部署去中心化......还有其它的一下特征,一时枚举不全,因为各个文章都有自己的解释。但是我读了个大概,发现个名词和SOA并没有什么大不同,硬是要有什么不同点,那就是原先早起的SOA还依赖于ESB这种东西,而
敏捷编程的概念出来已经很久了,期间涌现出了很多名词,什么XP啊,Scrum啊,被很多人所推崇。我想说的是TDD这个东西,也是被很多人认为是保证软件质量的法宝,一旦选择了TDD方式,就自动的获得了设计代码的能力,这其实只是一种假设,不是一种必然。我觉得这些都是错的,不要认为TDD了,就能解决现在的问题。首先,TDD意味着还未开发就要写大量的测试用例,这本来就是和敏捷开发的初衷是违背的,因为写大量的测
在重构一个结构繁杂,代码逻辑千丝万缕的业务系统时,除了对代码层面的重构之外,很多人会忽视对于业务结构的重构和简化。目前正在遭遇着这个事情,一个异常复杂的系统,不断的在上面添加需求,代码量增大,函数的体积也在增长,Web服务也越来越臃肿。关于代码层面的解耦,方法论很多,但本质上就是“提取公因式”,即相同的代码不要写两遍。通常,良好模块的模块设计,很容易达成这种只写一次的目标。还有的复杂度就是模块之间
很久没更新博客了,因为太忙了。没什么时间写东西,也好久没学习新的东西。
前端传到Controller:方法1通过HttpServletRequest 。写法如下:@Controller public class MyTestController { @RequestMapping("/print") public String PrintInfo(HttpServletRequest request)&nbs
由于进制的关系,十进制下的大多数小数,在二进制下无法完美的表示,只能表示为无限循环小数。比如0.5可以表示为0.1,0.4则只能表示为0.011001100110......十进制小数转换成二进制小数的方法,可以通过对小数部分乘2法来实现,比如:0.40.4 *2 0.80.8 *2 &nbs
javascript中java语言不一样,它没有类这个说法,更没有子类父类一说,所以它所谓的继承机制,也是和其他语言完全不同的。创建对象三种方式1.最简单的方式,创建一个object对象,然后为它添加属性和方法var person=new object(); person.name="zhangsan"; person.age=20; person.sayName=functi
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号