- 博客(91)
- 资源 (15)
- 问答 (2)
- 收藏
- 关注
原创 CountDownLatch,CyclicBarrier,Semaphore的区别
CountDownLatch闭锁 作用是设置一个数量n,latch.await()阻塞住一个线程t,每当latch.countDown()一次,n-1,直到n=0,线程t会被释放,阻塞结束CyclicBarrier栅栏 作用是设置一个数量n,调用barrier.await()的线程都会被阻塞(同时n-1),直到n=0,所有被barrier阻塞的队列都会被释放Semaphore信号量 作用是设置一个数量n,调用semaphore.acquire()一次,n就-1,如果n=0,调...
2021-02-26 18:00:51 268
原创 feign api controller不需要再写@RequestBody和@RequestParam
如果是Controller实现api接口,在api中已经写了@requestBody和@RequestParam,在controller不想写了,就可以加如下配置import org.apache.commons.lang3.StringUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.autoconfigure.http.HttpMessageCo
2021-01-11 17:52:40 1879 2
原创 feign api Ambiguous mapping
@Configuration@ConditionalOnClass({Feign.class})public class FeignConfig { @Bean public WebMvcRegistrations feignWebRegistrations() { RequestMappingHandlerMapping handlerMapping = this.requestMappingHandlerMapping(); return new .
2021-01-11 17:47:47 1104 4
原创 Spring可以通过@DependsOn控制两个类的初始化顺序
开发过程中有这样一个场景,2个 bean 初始化逻辑中有依赖关系,需要控制二者的初始化顺序,如B需要A中的配置更新后才能初始化,否则就获取不到最新的配置。方案一:使用DependsOn Spring 中的 @DependsOn 注解可以保证被依赖的bea...
2018-11-14 18:20:26 3504
原创 @Autowired是byType还是byName
假设以下场景,有一个接口UserService,一个实现类的时候是UserServiceImpl,两个的时候是UserServiceImpl1,UserServiceImpl21,默认是byType@Autowiredprivate UserService userService;如果只有一个实现类,不会报错;如果有多个会报错;@Autowiredprivate UserServi...
2018-11-14 18:16:00 5565
原创 延时任务调度系统——技术选型
经常会有这样的需求,包含大量的延时执行任务1,如一个代办事项app,代办实现可以设定触发时间,像闹钟一样。2,如美团的订单,下单后10分钟不支付,会自动取消。3,淘宝用户7天不确认收货,自动确认收货。诸如以上需求,需要的就是一个延时任务执行系统。实现的方案有很多,各有优劣:一,为每个任务创建一个倒计时线程优点:实现简单,及时性高缺点:严重浪费服务器CPU资源...
2018-11-14 17:42:39 1058
原创 跨域问题
1,什么是跨域? 一个网页的js代码,向一个url发出请求,不管是提交数据还是获取数据,只要当前网页的域和url的域不同,就会发生跨域问题。 2,什么是域? 那什么是域,包括协议(http,https等),域名,端口三部分。只要这三个有一个不同,就会发生跨域 3,谁造成的? 浏览器造成的,浏览器为了web安全,采取同源策略,不允许跨域访问。报错如下:No 'Access-Contr
2017-05-12 11:29:09 540
转载 volatile不能保证原子性,也就不能保证线程安全
volatile只能保证变量的可见性,无法保证对变量的操作的原子性。 还是以最常用的i++来说吧,包含3个步骤 1,从内存读取i当前的值 2,加1 3,把修改后的值刷新到内存对于普通变量来说多线程下1,2之间被中断,其它线程修改了i的值,那原来已经在1,2之间被中断的线程的i的值就已经无效了,所以多线程是不安全的。另外对于普通变量来说,步骤1并不是每次都会从内存中读取,步骤3
2017-03-23 18:09:46 4690
转载 程序员成长道路上必经的几个阶段
很久之前读到过这篇文章,深以为是,今天又无意间看到,转载过来,引以为戒。转载自http://www.codeceo.com/article/programmer-load-level.html 下面是一位前辈总结的程序员成长四个阶段,个人觉得非常有道理,你在哪个阶段?阶段一:不知道自己不知道(Unconscious incompetence) 大学期间,我和老师做过一些小项目,自认为自己很牛,当
2016-12-13 13:58:35 583 1
原创 事务学习总结
1事务的定义2事务的生命周期3事务的四大特性4事务的类型5事务的传播特性propagation6事务并发和产生的问题7事务的隔离级别1,事务的定义 事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。 事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。如果事务开始到结束之间没有出现异常
2016-12-08 15:13:40 784
原创 Java并发编程(三)——synchronized
Java并发编程(三)——synchronized一,概述 synchronized关键字是Java中用来控制线程并发访问的基础机制,利用synchronized来控制一块代码同一时间只能有一个线程访问,其它线程等待,相当于加锁。 synchronized提供的是互斥锁,仅能实现对资源的互斥访问,而concurrent.lock不仅有互斥锁,还有读写锁。把读锁和写锁分开,写锁相当于互斥锁,而
2016-03-21 12:14:18 711
原创 Java并发编程(二)——Thread.currentThread()研究
Java并发编程(二)——Thread.currentThread()研究一,存在的问题 Thread.currentThread()是Thread的一个静态方法,用来获取当前线程对象的一个引用。 问题在于为什么不简单的用this来获取,而单独写了一个静态的currentThread()方法来获取当前线程呢?二,一个小demo 首先看一个小例子,该例子引用自知乎https://www.zh
2016-03-21 12:13:23 6648
原创 Java并发编程(一)——线程
Java并发编程(一)——线程一,线程的实现方式 Java中实现多线程有两种方式,如下:1,继承java.lang.Thread类,重载它的run()方法; 2,实现java.lang.Runnable接口,重载接口中的run()方法。 这两种实现方式没有优劣,但由于Java中不允许多继承,所以使用第二种实现接口的方式更加灵活。 另外需要注意的是实现了Runnable的类,就像其字面描述
2016-03-21 11:41:31 819
原创 RMI java.rmi.ConnectException: Connection refused to host: 192.168.1.108
具体请参照http://stackoverflow.com/questions/8485239/java-rmi-connect-exception-connection-refused-to-host-timeoutRMI开发时出现这种错误时,可采用如下方式解决:This RMI tutorial explains:Before starting the comput
2015-08-25 09:21:52 5562
原创 Hibernate Validator的三个非空注解的区别
@NotNull 适用于所有对象,不允许对象为null,用于8种基本数据类型是无效的@NotEmpty 适用于String, collection, map or array,不允许是null而且不允许为empty(即长度不能为0) 源码中的注释为: @NotBlank 适用于Str
2015-04-16 17:03:22 4678
原创 git各种状态下撤销修改的方法
使用git时会出现各种各样的问题,下面是几种情况下怎么反悔的操作一,未加入缓存区,撤销文件修改 git checkout -- file二,已加入缓存区,撤销文件提交 git reset HEAD file三,已提交到本地,回滚提交 git reset --HARD commit_id/HEAD^n四,已push到远程1,git revert...
2015-04-03 11:12:05 9915 2
原创 Eclipse常用快捷键
Eclipse是个很好的IDE,而其快捷键是其特色之一,熟练的掌握其快捷键可以大大提高我们的编程速度,接下来就对常用快捷键做一个总结,分组并按其重要性排序。Ctrl系列1,Ctrl+1:快速修复,每个使用Eclipse的人都应该掌握的一个快捷键,重要性不亚于Alt+/。使用方法是将光标放到报错的位置,按下Ctrl+1,会出现选项来修复错误。2,Ctrl+Q:回到最后一次编辑的位置,也是
2015-01-30 15:35:08 917
原创 如何利用Chrome浏览器将网页保存为pdf文件
Chrome浏览器很强大,最近发现一种利用Chrome可以将网页保存为pdf的方法,写下来分享给大家。1,以csdn首页为例,在Chrome浏览器中,打开网页,按Ctrl+P,会弹出打印机对话框,如下图2,找到左侧“目标打印机”,点击更改,弹出如下对话框选择另存为PDF3,点击左上角保存,会弹出保存位置对话框,选择好位置,点击确定就大功告成了。
2014-12-27 13:09:21 11155 4
转载 javascript中的urlencode
javascript中对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,对应的有3个解码函数:unescape,decodeURI,decodeURIComponent1,escape:采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及更多有联系非ASCII字符都将被转化成%xx各式的字符编码(xx等于
2014-12-02 14:42:42 3672
转载 jquery中各个ajax事件执行顺序如下:
jquery中各个事件执行顺序如下:1.ajaxStart(全局事件)2.beforeSend3.ajaxSend(全局事件)4.success5.ajaxSuccess(全局事件)6.error7.ajaxError (全局事件)8.complete9.ajaxComplete(全局事件)10.ajaxStop(全局事件)
2014-09-29 13:55:38 903
转载 程序员成长历程的四个阶段
阶段一:不知道自己不知道(Unconscious incompetence)大学期间,我和老师做过一些小项目,自认为自己很牛,当时还去过一些公司面试做兼职,但是就是不知道为什么没有回复。那个时期的我,压根不知道自己不知道,还以为自己懂很多,现在想起自己以前就好笑,那个时候还算不上程序员,顶多只能算是个业余编程爱好者。表现:假自信、过度承诺、满口我能行没问题、看不起其他程序员
2014-09-29 13:54:00 847
转载 linux下ftp相关命令
本文转自1. 连接ftp服务器格式:ftp [hostname| ip-address]a)在linux命令行下输入:ftp 192.168.1.1b)服务器询问你用户名和密码,分别输入用户名和相应密码,待认证通过即可。2. 下载文件下载文件通常用get和mget这两条命令。a) get 格式:get [remote-file] [l
2014-09-28 13:10:57 860
转载 vim命令详解
本文转自http://www.cnblogs.com/softwaretesting/archive/2011/07/12/2104435.htmlVim命令合集命令历史以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令。启动vim在命令行窗口中输入以下命令即可vim 直接启动vimvim filename 打开vim
2014-09-28 12:38:17 713
转载 自适应移动设备页面的设计
现在移动设备越来越多,使用手机上网的人也越来越多,移动设备也成为访问互联网的常见终端设置。以前我们在编写管理系统的时候,客户端只需要考虑PC机桌面设备,现在则必须要考虑到移动终端设备了。移动终端设备的屏幕分辨率很多都不一样,手机就分很多种大小的,然后还有一些平板电脑,如ipad,ipad迷你,等等,大小很难统一, 浏览器也各式各样,这使得做移动设备的客户端界面有了一定的困难,总不不能每种尺
2014-08-15 16:08:10 775
原创 后台程序返回的json值包含<pre></pre>
今天做程序的时候后台返回的json值应该是{"success",true}response.setContentType("text/html; charset=UTF-8");
2014-07-18 18:33:58 1622
原创 org.springframework.web.multipart.MultipartException: The current request is not a multipart request
SpringMorg.springframework.web.multipart.MultipartException: The current request is not a multipart request
2014-07-17 09:34:34 15909 2
转载 js和css判断屏幕方向
方法一:用触发手机的横屏和竖屏之间的切换的事件window.addEventListener("orientationchange", function() { // 宣布新方向的数值 alert(window.orientation);}, false);// 方法二:监听调整大小的改变window.addEventList
2014-06-26 11:13:54 935
转载 HTML5中input背景提示文字(placeholder)的CSS美化
本文转自http://www.webhek.com/html5-placeholder-css/
2014-06-17 09:24:37 1587
转载 Spring MVC Controller单例陷阱
Spring MVC的Controller默认是单例的:单例的原因有二:1、为了性能。2、不需要多例。1、这个不用废话了,单例不用每次都new,当然快了。2、不需要实例会让很多人迷惑,因为spring mvc官方也没明确说不可以多例。 我这里说不需要的原因是看开发者怎么用了,如果你给controller中定义很多的属性,那么单例肯定会出
2014-06-04 23:10:24 952
转载 伪元素:after和:before
::after是一个CSS伪元素,使用::after,你可以从CSS里往页面上新增内容(不再要在HTML里有相应的东西)。虽然最终生成的东西并不是真正的DOM里的内容,但这些内容能像普通内容一样显示,基本的效果是这样的:CSS代码div::after { content: "你好";}HTML代码div> 你好div>::before跟::afte
2014-06-03 09:01:07 896
转载 vertical-align垂直居中
本文转自:http://www.webhek.com/vertical-align/各种技术论坛里经常会有这样的问题提出,“我如何能将这个东西竖向居中?”这个问题通常会跟随着这样一句话,“我使用了vertical-align:middle,但是不管用! ”这个问题其实有三个层面的原因HTML布局通常都不是专门针对竖向呈现而设计的。这很自然,一般文字占宽会自动扩展
2014-05-23 15:38:42 1170
转载 List.toArray()出现ClassCastException
ArrayList提供了一个将List转为数组的一个非常方便的方法toArray。toArray有两个重载的方法:1.list.toArray();2.list.toArray(T[] a);对于第一个重载方法,是将list直接转为Object[] 数组;第二种方法是将list转化为你所需要类型的数组,当然我们用的时候会转化为与list内容相同的类型。
2014-05-22 13:59:05 2026
JMS的一个非常好的demo
2014-04-14
PriorityQueue不能排序?
2020-10-29
Jersey+Spring程序中如何实现拦截器
2014-12-03
TA创建的收藏夹 TA关注的收藏夹
TA关注的人