![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java技术
文章平均质量分 65
孤独的远行者
因为爱java,所以做程序员!
展开
-
Java中三种方法重复使用同一输入流
在工作遇到一种情况,需要对同一文件数据进行多次重复读取,我们流像一个管道一样,数据一旦流过去,就无法被再次使用。例如我需要对同一张电子发票,通过定位多次读取相关信息。在工作中还遇到问题:需要对读入的文件 (MultipartFile) 计算 MD5,同时又需要将其上传到 S3上,即需要对同一输入流进行多次重复读取操作,但是按照流本身所代表的抽象含义,数据一旦流过去,就无法被再次使用。......原创 2022-08-04 16:16:24 · 2953 阅读 · 3 评论 -
Lombok首字母小写,第二个字母大写的问题
一、问题描述最近在和前端对接接口的时候,发现后端接口返回给前端的一个字段大小写有问题,具体如下。使用的开发框架及版本:框架:SpringMVC;Lombok版本:1.18.12;对象简化后如下:@Datapublic class MobileInfo { private String iPhone;}预期返回结果:iPhone,实际返回结果:iphone。也就是说SpringMVC环境下,使用Lombok注解@Data之后,返回给前端的是iphone,转载 2022-05-16 13:56:59 · 707 阅读 · 0 评论 -
限制jetty和solr的ip地址
我正在使用Jetty设置Solr。我只想限制访问几个IP地址。用Jetty可以做到这一点似乎并不立即明显。是否可能,如果可以,如何?Solr 4.2.1使用Jetty 8.1.8。Jetty 8(如jonas789所述)不支持.htaccess。相反,它使用IPAccessHandler,它没有大量可用的文档。我必须花很多时间才能使其正常工作,所以我在这里发布了更新的解决方案。IPAccessHandler管理黑名单和白名单,接受IP的任意范围,并支持将特定的URI路径附加到每个白名单/黑名单条目。原创 2021-03-05 17:05:46 · 692 阅读 · 0 评论 -
Java过滤器与SpringMVC拦截器之间的关系与区别
拦截器功在对请求权限鉴定方面确实很有用处,在我所参与的这个项目之中,第三方的远程调用每个请求都需要参与鉴定,所以这样做非常方便,而且他是很独立的逻辑,这样做让业务逻辑代码很干净。和框架的其他功能一样,原理很简单,使用起来也很简单,大致看了下SpringMVC这一部分的源码,其实还是比较容易理解的。 我们项目中仅仅用到了preHandle这个方法,而未用其他的,框架提供了一个已经实现了拦截器接口的适配器类HandlerInterceptorAdapter,继承这个类然后重写一下需要用到的方法就行了,可以少转载 2016-05-17 02:24:38 · 539 阅读 · 0 评论 -
使用Apache通过JK实现多Tomcat负载均衡集群实现总结及自己的感悟
第一次玩负载均衡集群,使用的是Apache、Tomcat,通过JK来实现。由于没有这方面经验,自己摸索了好多天,直到今天才基本完全搞定了。也了解了里面的一些相关原理,自己也亲自动手验证了一些原理。现将自己的经历过程和一些感悟总结分享一下,也以便自己日后查阅。 首先是下载Apache、Tomcat、JK,这没什么说的,主要注意一下需要的Apache的版本,然后是Apache、To原创 2015-05-02 15:09:59 · 1964 阅读 · 2 评论 -
对于网上购票系统12306,如果你是架构师,你会怎么办?-论坛精彩回复整理
过年之前的12306事情很火,特意发帖讨论,收益匪浅,今天特对发帖各位的回复进行了总结,并将精彩回复附后: 1、分省或车次进行分拆,将现在集中地售票,变成分省的售票,分散压力;2、才用排队的思路和分拆子系统的方式,前段才用大量的HTTP服务器作用排队服务器,和银行的排队拿号一个道理,提示你之前还有多少用户,通过有好的提示,减少用户抱怨;3、才用NOSQL技术,比如才用mem转载 2015-04-17 00:45:29 · 2679 阅读 · 0 评论 -
Oralce数据库的优化(面试必问题)
(1) 选择最有效率的表名顺序(只在基于规则的优化器中有效):ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择交叉表 (intersection table)作为基础表, 交叉表是指那转载 2015-04-16 13:48:05 · 651 阅读 · 0 评论 -
js如何实现继承(js实现继承的五种方式)
js如何实现继承(js实现继承的五种方式)原创 2015-04-07 01:38:49 · 25413 阅读 · 4 评论 -
ajax的原理和运行机制
关于ajax,是最近炒得非常火的一种技术,并且时下它也是非常流行。当然,它并不是什么新技术,而是在各种已有的技术和支持机制下的一个统一。在我的项目中,偶尔也会用到ajax,用来给用户一些无刷新的体验。用过几次之后,我个人决定对它的原理和运行机制做一个总结。 ajax这个名字据说是Asynchronous JavaScript + XML的简写,实际上,它由下列几种技术组合而成。转载 2015-04-07 02:00:15 · 5095 阅读 · 0 评论 -
html5的postmessage实现js前端跨域访问及调用解决方案
关于跨域访问,使用JSONP的方法,我前面已经demo过了,具体见http://supercharles888.blog.51cto.com/609344/856886,HTML5提供了一个非常强大的API,叫postMessage,它其实就是以前iframe的进化版本,使用起来极其方便,这里举个实验例子:我们依旧按照与上文相同的设定,假定我们有2个DomainDomain1: h原创 2014-06-16 14:35:00 · 11987 阅读 · 0 评论 -
android webview中加入无线淘宝客页面点击宝贝详情链接进入宝贝详情页面后无法返回问题
这几天弄了下在webview中引入无线淘宝客页面,发现点击宝贝详情进入页面后,无法返回.刚开始按网上大部分说的在同一个webview中展示链接页面,这样重载WebClient的shouldOverrideUrlLoading方法.发现点击宝贝详情链接页面后,无法返回.各种方法都试了,就是解决不了!最后发现解决方法既然就是:不需要重写WebClient的shouldOverrideUrlLoading方法;只需要重写下WebClient的onPageStarted方法,里面什么都不用写,代码如下:原创 2014-04-12 11:41:54 · 6524 阅读 · 1 评论 -
如何根据手机屏幕尺寸做不同的网页呢
随着3G的普及,越来越多的人使用手机上网。 手机的屏幕比较小,宽度通常在600像素以下;PC的屏幕宽度,一般都在1000像素以上(目前主流宽度是1366×768),有的还达到了2000像素。同样的内容,要在大小迥异的屏幕上,都呈现出满意的效果,并不是一件容易的事。 于是,网页设计师不得不面对一个难题:如何才能在不同大小的设备上呈现同样的网页? 很多网站的解决方法,原创 2014-04-10 10:09:05 · 8420 阅读 · 0 评论 -
将毫秒 换算成(天 时 分 秒 毫秒)
将毫秒 换算成(天 时 分 秒 毫秒) 啥也不多说了,直接贴代码,需要的朋友可以拿去直接用,代码比较简单原创 2014-05-10 20:38:37 · 69700 阅读 · 0 评论 -
解决网页背景图片不能自动适应的方法
在网页开发的过程中,偶然遇到一个问题:背景图片不能自动去适应网页窗口大小。找到很久后才找到这个方法来解决,代码如下也听有些人说过就设置背景图片,然后用CSS来控制。但我没有亲自试过,由于时间关系,用这个方法能解决问题,就没用去试别的方法了,有更好的解决办法,谢谢回复交流。原创 2014-04-25 09:34:47 · 3198 阅读 · 0 评论 -
ImageView的属性android:scaleType,即ImageView.setScaleType(ImageView.ScaleType)
1 这里我们重点理解ImageView的属性android:scaleType,即ImageView.setScaleType(ImageView.ScaleType)。android:scaleType是控制图片如何resized/moved来匹对ImageView的size。ImageView.ScaleType / android:scaleType值的意义区别: 2 3 CE原创 2013-12-27 20:02:24 · 4822 阅读 · 0 评论 -
session原理及集群中session共享实现原理
转载网上看到的两篇关于集群中实现session共享的两篇文章,个人觉得不错,学习了:对Web服务器进行集群,Session的安全和同步是最大的问题,实现Session同步有很多种方案,常见的可能的方式有:1、客户端Cookie加密。 用的较少,此处不详述。2、Session复制。 参与集群的每个节点的Session状态都被复制到集群中的其转载 2015-05-02 16:51:32 · 9537 阅读 · 0 评论 -
使用Apache通过JK实现多Tomcat负载均衡集群时,Apache不能将请求分发给Tomcat处理(即Apache反向代理不成功)的问题
前些天在做Apache通过JK实现多Tomcat负载均衡集群时,参考网上的配置将配置文件配置好后,访问已存在tomcat中的JSP文件时发现Apache提示URL不存在,然后检查了配置文件及tomcat工程部署,发现配置部署均无问题。尝试访问Apache静态页面,通过http单独访问tomcat均无问题。然后我猜会不会之前参考的网上的配置有问题,于是继续查询网上其它配置发现都差不多,尝试更改各种参原创 2015-05-02 00:18:07 · 4831 阅读 · 0 评论 -
Spring4新特性——泛型限定式依赖注入
Spring4新特性——泛型限定式依赖注入Spring4新特性——核心容器的其他改进Spring4新特性——Web开发的增强Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC Spring4新特性——Groovy Bean定义DSLSpring4新特性——更好的Java泛型操作API Spring转载 2015-06-11 09:34:50 · 4178 阅读 · 0 评论 -
Java并发编程面试必问的volatile关键字解析
volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先...转载 2018-07-06 18:02:11 · 301 阅读 · 1 评论 -
spring注入时bean的set方法为什么不能是static类型的?(为什么要用单例模式而不是静态方法)
态方法是属于类(class)的,普通方法才是属于实体对象(也就是New出来的对象)的,spring注入是在容器中实例化对象,所以不能使用静态方法在springframework里,我们不能@Autowired一个静态变量,使之成为一个spring bean,例如下面这样:[java] view plaincopy@Autowired private static原创 2017-06-23 19:45:33 · 2615 阅读 · 0 评论 -
如何将Eclipse的一个工作空间的配置文件复制到另一个工作空间
问题: 我们在使用Eclipse创建一个新的工作空间时,发现其配置是默认的。习惯了使用以前配置过的工作空间(如字体、字体大小、语言编码规范......),现在又要重新配置一遍是要花时间和精力的,那么我们会想到去找以前的配置文件将其复制过来,那样熟悉的环境又出现了,又可以快乐的打代码了。解决方法:1、找到旧的工作空间的配置文件目录:\.metadata原创 2017-06-16 13:44:21 · 2096 阅读 · 0 评论 -
Servlet2.5和 3.0区别(Servlet 3.0 新特性详解)
Servlet 3.0 新特性概述Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布。该版本在前一版本(Servlet 2.5)的基础上提供了若干新特性用于简化 Web 应用的开发和部署。其中有几项特性的引入让开发者感到非常兴奋,同时也获得了 Java 社区的一片赞誉之声:异步处理支持:有了该特性,Servlet 线程不再需转载 2017-05-26 02:14:01 · 17906 阅读 · 2 评论 -
Java随机密码生成器,Java随机生成长度不少于6的指定长度的密码,且这个字符串必须包含大小写字母、数字和特殊字符,四种的任意三种
import java.util.Random;public class RandomPassword { public static void main(String[] args) { String password = getRandomPassword(8); System.out.println(password); } //获取验证过的随机密码 public static Str转载 2017-05-25 19:03:39 · 8829 阅读 · 2 评论 -
IE下通过response输出流的方式,输出图片等文件信息到IE,图片显示不了,文件下载不了的问题。
给response增加相应的contentType属性值代码如下://这句代码是必须的(输出的是图片文件)response.setContentType("image/png");//以下代码非必须response.addHeader("cache-control", "no-cache");response.addHeader("cache-control", "Priv原创 2016-09-28 13:08:35 · 6079 阅读 · 1 评论 -
ConcurrentHashMap原理分析
集合是编程中最常用的数据结构。而谈到并发,几乎总是离不开集合这类高级数据结构的支持。比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap)。这篇文章主要分析jdk1.5的3种并发集合类型(concurrent,copyonright,queue)中的ConcurrentHashMap,让我们从原理上细致的了解它们,能够让我们在深度项目开发中获益非浅转载 2016-05-17 02:46:26 · 430 阅读 · 0 评论 -
深入分析Java ClassLoader原理
一、什么是ClassLoader?大家都知道,当我们写好一个Java程序之后,不是管是CS还是BS应用,都是由若干个.class文件组织而成的一个完整的Java应用程序,当程序在运行时,即会调用该程序的一个入口函数来调用系统的相关功能,而这些功能都被封装在不同的class文件当中,所以经常要从这个class文件中要调用另外一个class文件中的方法,如果另外一个文件不存在的,则会引发系统异转载 2016-05-17 02:42:57 · 553 阅读 · 0 评论 -
springMVC工作原理
SpringMVC框架介绍 1) spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还是 Struts 这样的 Web 框架。通过策略接口,S转载 2016-05-17 02:40:57 · 672 阅读 · 0 评论 -
如何在高并发分布式系统中生成全局唯一Id
一些精彩评论(部分更新到原博文对应的地方)一、数据库文件体积只是一个参考值,可水平扩展系统性能(如nosql,缓存系统)并不和文件体积有高指数的线性相关。如taobao/qq的系统比拼byte系统慢,关键在于索引的命中率,缓存,系统的水平扩展。如果数据库很少,你搞这么多byte能提高性能?如果数据库很大,你搞这么多byte不兼容索引不兼容缓存,不是害自已吗?如果数据库要求伸缩性,你搞这么多byte,需要不断改程序,不是自找苦吗?如果数据库要求移植性,你搞这么多byte,移植起来不如重新设计,这转载 2016-05-17 02:36:26 · 3308 阅读 · 0 评论 -
Cannot change version of project facet Dynamic Web Module to 2.5
在eclipse的工程上选择属性,再选择Project Facets里面中选择Dynamic Web Module ,将2.3修改为2.5,提示如下信息:Cannot change version of project facet Dynamic Web Module to 2.5解决方法:在工程目录下有一个.settings文件夹,打开org.eclipse.wst.comm原创 2013-12-23 03:51:26 · 21066 阅读 · 1 评论 -
Failed to install ***.apk on device '019417a3': Unable to open sync connection!解决方法
最近开发,兄弟们问我这个问题,写出来解决方法和大家分享一下。当控制台出现:Failed to install ***.apk on device '019417a3': Unable to open sync connection!java.io.IOException: Unable to open sync connection!Launch canceled!或者原创 2013-01-03 23:23:12 · 4719 阅读 · 0 评论 -
如何在将Jboss 安装为Windows 服务时设定系统参数(jboss5和jboss6下必须这么做才能将jboss安装为Windows 系统服务)
<br />从Jboss4 开始,其默认的绑定地址,即jboss.bind.address 属性,变成了127.0.0.1。就意味着只有本机可以访问jboss 上部署的服务。<br />怎样去指定Jboss 的绑定IP 呢?(以下内容针对Jboss5)<br />我们知道,可以通过设定系统参数jboss.bind.address 来指定Jboss 的绑定IP,但是Jboss 启动时不能识别传递给JVM 的系统参数,即在JAVA_OPTS 中增加-Djboss.bind.address=0.0.0.0 不会有转载 2011-05-13 23:46:00 · 2127 阅读 · 1 评论 -
cvc-complex-type.3.2.2: Attribute 'singleton' is not allowed to appear in element 'bean
<br /> 在spring2.0中,bean没有“singleton”这个属性,而是在“scope”中对它进行设定。“scope”可以设定为“singleton”和“prototype”默认情况下是“singleton”即和原先的“singleton=true”性质一样,如果要实现单例模式则将“scope”设定为“prototype”,即和原先版本的“singleton=false”一样。参考文档链接地址:http://www.springframework.org/schema/beans/spring转载 2011-05-14 00:42:00 · 22865 阅读 · 1 评论 -
DOS下的命令,用于启动/关闭服务
<br />简单介绍两个DOS下的命令,用于启动/关闭服务:1、net start 启动服务,或显示已启动服务的列表。如果服务名是两个或两个以上的词,如 Net Logon 或Computer Browser,则必须用引号"服务名" net start //显示当前所有已启动的服务 net start [services] //启动指定服务 net stop [services] //停止指定服务services包括下列服务: alerter、cl转载 2011-05-13 23:44:00 · 4524 阅读 · 0 评论 -
oracle 删除一个表中全部的数据,速度很快 TRUNCATE
<br />TRUNCATE TABLE tableName <br /><br />tableName是要删除全部行的表的表名 <br /><br />TRUNCATE TABLE 虽然与不带 WHERE 的 DELETE 语句相同 <br />但 TRUNCATE TABLE 速度更快而且占资源少速度快 <br /><br />TRUNCATE TABLE 不记录日志所以不能激活触发器 <br /><br />TRUNCATE TABLE 不能用于参与了索引视图的表 Sql代码 TRUNCATE TA转载 2011-03-18 13:16:00 · 1759 阅读 · 0 评论 -
hibernate批量数据插入优化
Hibernate批量处理: Hibernate批量处理其实从性能上考虑,它是很不可取的,浪费了很大的内存。从它的机制上讲,Hibernate它是先把符合条件的数据查出来,放到内存当中,然后再进行操作。实际使用下来性能非常不理想,在笔者的实际 使用中采用下面的第三种优化方案的数据是:100000条数据插入数据库,主流台式机的配置,需要约30分钟,呵呵,晕倒. 总结下来有三种来处理以解决性能问题: 1:绕过Hibernate API ,直接通过 JDBC API 来做,这个方法性能上是比较好的。也是最快的.转载 2011-03-18 10:24:00 · 5964 阅读 · 2 评论 -
字母数字下划线常用正则表达式
<br />1.由数字、26个英文字母或者下划线组成的字符串:<br />^[0-9a-zA-Z_]{1,}$<br />2.非负整数(正整数 + 0 ):<br />^/d+$<br />3. 正整数:<br />^[0-9]*[1-9][0-9]*$<br />4.非正整数(负整数 + 0):<br />^((-/d+)|(0+))$<br />5. 负整数 :<br />^-[0-9]*[1-9][0-9]*$<br />6.整数:<br />^原创 2011-03-15 17:11:00 · 11981 阅读 · 0 评论 -
正则表达式的数字实例
<br />验证数字的正则表达式集 验证数字:^[0-9]*$ 验证n位的数字:^/d{n}$ 验证至少n位数字:^/d{n,}$ 验证m-n位的数字:^/d{m,n}$ 验证零和非零开头的数字:^(0|[1-9][0-9]*)$ 验证有两位小数的正实数:^[0-9]+(.[0-9]{2})?$ 验证有1-3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$ 验证非零的正整数:^/+?[1-9][0-9]*$ 验证非零的负整数:^/-[1-9][0-9]*$ 验证非负整数(正整数 + 0) ^/d转载 2011-03-15 16:36:00 · 977 阅读 · 0 评论 -
Java定时执行任务的三种方法
<br /> Java定时执行任务的三种方法<br /> <br />定时执行任务的三种方法:<br /> <br />1)java.util.Timer.<br /> <br />2)ServletContextListener.<br /> <br />3)org.springframework.scheduling.timer.ScheduledTimerTask<br /> <br />1)java.util.Timer<br />这个方法应该是最常用的,不过这个方法需要手工启动你的任务:<br转载 2011-03-15 16:29:00 · 1281 阅读 · 0 评论 -
用Eclipse打war包& 用命令行方式将.dat文件导入Oracle数据库
2007/11/22用Eclipse打war包&用命令行方式将.dat文件导入Oracle数据库用Eclipse打war包: 在WebRoot(像我们的工程就是EOMS_J2EE)上单击右键,选择Export选项,然后选择J2EE -- WAR file选项,然后选择工程名称(因为一个Eclipse可能同时打开多个工程)和硬盘上的存储路径,单击Finish就可以了. ----------------------------------------------用命令行方式将.dat文件导入Orac转载 2011-03-15 17:14:00 · 3126 阅读 · 0 评论 -
手机与电话的正则表达式 验证有效日期时间的正则表达式(已解决闰二月)
<br />手机与电话的正则表达式 <br />验证手机号码的正确性:^0{0,1}13[0-9]{9}$<br />验证电话号码的正确性:(^[0-9]{3,4}/-[0-9]{3,8}$)|(^[0-9]{3,8}$)<br />验证有效 日期时间 的正则表达式(已解决闰二月)<br />^((/d{2}(([02468][048])|([13579][26]))[/-///s]?((((0?[13578])|(1[02]))[/-///s]?((0?[1-9])|([1-2][0-9])|(3[01]转载 2011-03-15 16:32:00 · 1017 阅读 · 0 评论