Java
文章平均质量分 93
0945v1
活到老,学到老
展开
-
Token的作用及原理
讲到Token的作用和原理,网上有很多相关的技术文章,通过搜集整理并加入自己的理解体会,做一个总结整理,希望可以帮助到更多有需要的人。1、token作用及原理Token,即令牌,是服务器产生的,具有随机性和不可预测性,它主要有两个作用:(1)防止表单重复提交;使用Token防表单重复提交步骤:①在服务器端生成一个唯一的随机标识号,专业术语称为Token(令牌),同时在当前用户的Session域中保存这个Token;②将Token发送到客户端的Form表单中,在Form表单中使用隐藏域原创 2020-07-09 16:11:10 · 11330 阅读 · 1 评论 -
Mysql超时重连解决方案3: 配置c3p0连接池(终极方案)
前面的文章中,我介绍了修改mysql默认超时时间和配置proxool连接池的方法来解决Mysql超时重连的问题。方案1不推荐,它并没有从根本上解决问题;方案2可用,但配置相对复杂;所有才有了方案3,它既解决了关键问题,并且配置简单易懂。c3p0连接池的testConnectionOnCheckout属性,类似于autoReconnect属性可自动保持数据库的连接,在获取连接时先检查连接是否有效(即检查Connection是否被mysql数据库关闭了),如果连接无效就重新建立一个新的连接。C3P0连接原创 2020-06-04 17:29:30 · 1796 阅读 · 1 评论 -
Mysql连接超时解决方案2: 配置Proxool连接池
MySQL数据库默认的连接超时时间为8h(即wait_timeout=28800s),如果一个连接闲置时间超过8h,MySQL会主动断开这个连接。用proxool连接池可以解决Mysql自动断开重连的问题,它具有移植性好,快速、成熟、健壮等特性,同时还提供了可视化的连接池实时监控工具。proxool连接池配置如下:1、下载相关JAR包;从http://proxool.sourceforge.net/站点下载jar包,proxool-0.9.1.jar和proxool-cglib.jar拷贝至项目中。原创 2020-05-29 23:24:28 · 2299 阅读 · 0 评论 -
AWS Lambda学习2:通过S3事件触发调用Lambda函数,实现缩略图地生成
创建一个Amazon Lambda函数,实现从S3源存储桶读取图片对象并创建缩略图到目标存储桶,开发实现过程如下:1、创建存储桶并上传示例对象(1)打开 Amazon S3 控制台(2)创建两个存储桶。源存储桶lambda-demo1-bucket,目标存储桶lambda-demo1-bucketresized。(3)在源存储桶中,上传一个 .jpg 对象 sidatianwang...原创 2020-04-23 16:34:36 · 2821 阅读 · 1 评论 -
AWS Lambda学习1:Java编程方式调用Lambda函数
什么是 AWS Lambda?AWS Lambda 是一项无服务器计算服务,可使您无需预配置或管理服务器即可运行代码。简单地说,Lambda其实是一个函数运行环境。借助 AWS Lambda,您可以为任何类型的应用程序或后端服务运行代码,并且不必进行任何管理。如何调用 AWS Lambda 函数?您可以使用 Lambda 控制台、Lambda API、AWS 开发工具包、AWS CLI...原创 2020-04-23 11:10:06 · 1715 阅读 · 0 评论 -
JDBC和JNDI的区别
1、JDBC和JNDI 的区别:两者都是API,是一个标准。并不是什么产品或方法。JDBC :Java Database Connectivity,是由数据库服务商提供的,用于连接数据库的Java API。使用JDBC带来的问题:(1)数据库服务器名称 、用户名和口令都可能需要改变,由此引发JDBC URL需要修改;(2)数据库可能改用别的产品,如改用DB2或者Oracle,引...原创 2020-02-27 12:25:02 · 5104 阅读 · 0 评论 -
Nginx 连接超时参数优化
1. 什么是连接超时当服务器建立的连接没有接收处理请求时,可以在指定的时间内让它超时自动退出2. 连接超时的作用(1) 将无用的连接设置为尽快超时,可以保护服务器的系统资源(CPU、内存、磁盘)(2) 当连接很多时,及时断掉那些建立好的但又长时间不做事的连接,以减少其占用的服务器资源(3) 如果黑客攻击,会不断地和服务器建立连接,因此设置连接超时以防止大量消耗服务器的资源...原创 2020-01-13 18:31:31 · 2135 阅读 · 0 评论 -
nginx的作用及正则配置
nginx的基本功能1.静态HTTP服务器Nginx是一个HTTP服务器,可以将服务器上的静态文件(如HTML、图片)通过HTTP协议展现给客户端。server { listen 80; # 端口号 location / { root /usr/share/nginx/html; # 静态文件路径 }}2、反向代理服务器什么是反向代理?...转载 2020-01-13 17:03:49 · 266 阅读 · 0 评论 -
动态代理与静态代理区别
一、代理概念为某个对象提供一个代理,以控制对这个对象的访问。 代理类和委托类有共同的父类或父接口,这样在任何使用委托类对象的地方都可以用代理对象替代。代理类负责请求的预处理、过滤、将请求分派给委托类处理、以及委托类执行完请求后的后续处理。图1:代理模式从图中可以看出,代理接口(Subject)、代理类(ProxySubject)、委托类(RealSubject)形成一个“品”...转载 2019-12-20 15:30:48 · 202 阅读 · 0 评论 -
CGLIB介绍与原理
一、什么是 CGLIB?CGLIB是一个功能强大,高性能的代码生成包。它为没有实现接口的类提供代理,为JDK的动态代理提供了很好的补充。通常可以使用Java的动态代理创建代理,但当要代理的类没有实现接口或者为了更好的性能,CGLIB是一个好的选择。CGLIB作为一个开源项目,其代码托管在github,地址为:https://github.com/cglib/cglib二、CGLIB 原...转载 2019-12-20 10:31:47 · 802 阅读 · 0 评论 -
解决:java.lang.ClassCastException:[Ljava.lang.Object
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.alibaba.domain.Person解决方法:public Person queryById(Integer personId) { return (Person) getSession().createSQLQuery(" selec...原创 2019-10-24 16:06:47 · 1819 阅读 · 0 评论 -
启动 Eclipse 弹出 "Failed to load the JNI shared library jvm.dll "错误的解决方法
这篇文章主要介绍,在打开Eclipse时,弹出提示“Failed to load the JNI shared library jvm.dll”错误,这里给大家分享解决方案。错误如下图所示:通常情况下,如果你是64位的系统,却安装了32位的JDK,就会导致上面的情况。解决办法1.卸载掉原来安装的32位的JDK,然后安装64位的JDK到电脑中。2.重新修改path 和原创 2017-07-12 09:51:12 · 929 阅读 · 0 评论 -
java下载网络文件的N种方式
通过java api下载网络文件的方法有很多,在这里我做个汇总,主要方式有以下几种:1、使用 common-io库下载文件,需要引入commons-io-2.6.jarpublic static void downloadByCommonIO(String url, String saveDir, String fileName) { try { ...原创 2019-05-30 10:36:41 · 2976 阅读 · 0 评论 -
Java实现ftp文件上传、下载和删除
本文利用apache ftp工具实现文件的上传下载和删除。具体如下:1、下载相应的jar包: commons-net-1.4.1.jar2、实现代码如下:public class FtpUtils { //ftp服务器地址 public String hostname = "192.168.1.249"; //ftp服务器端...原创 2019-05-30 16:41:05 · 13690 阅读 · 2 评论 -
Java8实现ftp与sftp文件上传下载
一般连接windows服务器使用FTP,连接linux服务器使用SFTP。linux都是通过SFTP上传文件,不需要额外安装,非要使用FTP的话,还得安装FTP服务(虽然刚开始我就是这么干的)。 另外就是jdk1.8和jdk1.7之前的方法有些不同,网上有很多jdk1.7之前的介绍,本篇是jdk1.8的添加依赖Jsch-0.1.54.jar<!-- https:...原创 2019-05-30 16:56:04 · 2304 阅读 · 0 评论 -
负载均衡服务器如何保证上传文件同步
负载服务器Z,应用服务器A 和B ,从A上传的附件,如何在B上下载下来?这个问题我的解决思路如下: 服务器A、B 上传附件的时候,将这个附件备份到服务器Z ,当A、B下载文件的时候,首先会在自己服务器的目录下寻找,如果找不到,就会从服务器Z 上下载一份到当前服务器。这里主要介绍一下重写上传、下载的方法时应该添加的代码上传文件,异步操作new Thread(() -> {...转载 2019-05-30 17:30:33 · 2329 阅读 · 0 评论 -
如何解决:java.io.FileNotFoundException.....\img (拒绝访问)
今天,在写文件流时,碰到读取文件夹“拒接访问”的问题。权限不够:上网搜资料说是权限级别不够,照着做,之后再试,依然出错,头大了。换workspance:换workspace目录盘,换到D盘,依然“拒接访问“,死的心都有啦。跟它耗上了。最后,百度一段不起眼的问答,找到原因了:FileOutputStream读取流的时候如果是文件夹,就会出次错。恍然大悟!病根:FileOutputStream读取...转载 2019-07-08 16:33:08 · 6680 阅读 · 2 评论 -
Eclipse怎样导出含第三方jar的可执行jar包
当我们开发完java项目后,就需要导出可执行的java文件。java的部署可以有很多种,我这里介绍非常简单的一种,只要项目中包含main方法,而且安装完了java,这个方法就可以使用。方法/步骤 首先我们在编辑器中编写一个简单的类代码,这个类只有一行就是System.out.println("test");输出test的字样。 在Eclipse左侧找到项目,选择项目后右键...转载 2019-08-06 15:53:03 · 339 阅读 · 0 评论 -
restful实现文件下载
private static final byte[] UTF8_BOM = {(byte)0xEF, (byte)0xBB, (byte)0xBF}; private static final String FAV_ICO = "fav.ico"; @GET @Path("/getFile") @...原创 2019-08-06 16:01:37 · 4196 阅读 · 0 评论 -
Java以流的形式下载文件
@RequestMapping("download") @ResponseBody public void download(HttpServletResponse response, Integer userId, String fileUrl) { try { File file=new File(fileUrl); ...原创 2019-08-06 16:03:27 · 2412 阅读 · 0 评论 -
面试系列-并发编程72道面试题及答案
1.Java中守护线程和本地线程区别java中的线程分为两种:守护线程(Daemon)和用户线程(User)。任何线程都可以设置为守护线程和用户线程,通过方法Thread.setDaemon(bool on);true则把该线程设置为守护线程,反之则为用户线程。Thread.setDaemon()必须在Thread.start()之前调用,否则运行时会抛出异常。两者的区别:...原创 2019-08-09 11:05:44 · 279 阅读 · 0 评论 -
Java反射-高级开发必须懂的
理解反射对学习Java框架有很大的帮助,如Spring框架的核心就是使用Java反射实现的,而且对做一些Java底层的操作会很有帮助。一:Class类的使用①.万事万物皆对象,(当然,基本数据类型,静态成员不是面向对象(属于类的)),所以我们创建的每一个类也都是对象,即类本身是java.lang.Class类的实例对象,但是这些对象都不需要new出来,因为java.lang.Cla...原创 2019-08-09 11:07:35 · 266 阅读 · 0 评论 -
深入浅出SOA
前一阵换了份工作,来到新公司,恰好新同事问起SOA是什么,我随口说了几点,其实自己以前研究过,不过并没有详细的整理过,说的比较模糊,恰好周末,拿出点时间整理下以前对SOA的认知。 SOA是什么?SOA全英文是Service-Oriented Architecture,中文意思是中文面向服务编程,是一种思想,一种方法论,一种分布式的服务架构(具体可以百度)。 用途:...转载 2019-04-29 14:11:12 · 179 阅读 · 0 评论 -
web.xml详解
写在前面:鄙人才学疏浅,关于这篇文章,鄙人也是在网上收集的。有两个目的。一是记录下来加深自己的理解,二是希望这篇文章能对大家有所帮助。最后欢迎大家一起讨论。 一:web.xml加载过程 简单说一下,web.xml的加载过程。当我们启动一个WEB项目容器时,容器包括(JBoss,Tomcat等)。首先会去读取web.xml配置文件里的配置,当这一步骤没有出错并且完成之后,项目才能正常的被...转载 2019-04-28 16:13:36 · 155 阅读 · 0 评论 -
Windows下安装RabbitMQ及常用操作命令
rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统。它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rabbit MQ 是建立在Erlang OTP平台上。1.安装Erlang所以在安装rabbitMQ之前,需要先安装Erlang 。小编使用的是otp_win64_18.1,需要其他版本或...转载 2019-03-21 15:10:05 · 148 阅读 · 0 评论 -
Get和Post区别
在B/S模式中,客户端与服务端交互的方法有:get和post。所有网站框架都是在此基础上发挥,因为它们是Http协议定义的与服务器交互的方法,只要用到http协议,都会使用这两种方法。Http还定义了put和delete方法。现总结区别如下:1.get是从服务器上获取数据,post是向服务器传送数据。在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式。...原创 2019-03-12 10:56:16 · 159 阅读 · 0 评论 -
解决eclipse中java各类中文乱码问题
Eclipse JAVA文件注释乱码将别人的项目或JAVA文件导入到自己的Eclipse中时,常常会出现JAVA文件的中文注释变成乱码的情况,主要原因就是别人的IDE编码格式和自己的Eclipse编码格式不同。 总结网上的建议和自己的体会,可以参考以下几种解决方式: 1、改变整个文件类型的编码格式1) eclipse->window->preferences->...原创 2018-12-05 09:48:25 · 11358 阅读 · 2 评论 -
防止form表单重复提交的X种方法
Form表单重复提交是在多用户Web应用中最常见、带来很多麻烦的一个问题。有很多的应用场景都会遇到重复提交问题,比如:(1)点击提交按钮两次。(2)点击刷新按钮。(3)使用浏览器后退按钮重复之前的操作,导致重复提交表单。(4)使用浏览器历史记录重复提交表单。(5)浏览器重复的HTTP请求。(6)用户提交表单时可能因为网速的原因,或者网页被恶意刷新,致使同一条记录重复插入到数...原创 2017-12-07 16:29:42 · 18380 阅读 · 0 评论 -
解决530 5.7.57 SMTP; Client was not authenticated to send anonymous mail during MA
使用java调用Office365发送邮件的时候报如下错误: com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM at com.sun.mail.smtp.SMTP转载 2017-12-07 16:17:31 · 12569 阅读 · 0 评论 -
java中Cookie的使用
1 什么是cookie浏览器与WEB服务器之间是使用HTTP协议进行通信的,当某个用户发出页面请求时,WEB服务器只是简单的进行响应,然后就关闭与该用户的连接。因此当一个请求发送到WEB服务器时,无论其是否是第一次来访,服务器都会把它当作第一次来对待,这样的不好之处可想而知。为了弥补这个缺陷,Netscape开发出了cookie这个有效的工具来保存某个用户的识别信息,因此人们昵称为“小甜饼转载 2015-07-24 16:49:46 · 496 阅读 · 0 评论 -
cookie 和session 的区别详解
这些都是基础知识,不过有必要做深入了解。先简单介绍一下。二者的定义: 当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是一些选择,都纪录下来。当下次你再光临同一个网站,WEB 服务器会先看看有没有它上次留下的 Cookie 资料,有的话,就会依据 Cookie里的内容来判断使用者,送出特定的网页内容给你。 Co转载 2015-07-24 17:12:10 · 369 阅读 · 0 评论 -
生成MyEclipse6.5&7.5&8.0注册码的java源码
生成MyEclipse6.5&7.5&8.0注册码的java源码原创 2015-07-27 17:42:03 · 582 阅读 · 0 评论 -
Eclipse导入外部项目无法识别为web项目并且无法在部署到tomcat下
1、进入项目目录,找到.project文件,打开。2、找到...代码段,加入如下标签内容并保存:>org.eclipse.jem.workbench.JavaEMFNaturenature>nature>org.eclipse.wst.common.modulecore.ModuleCoreNaturenature>nature>org.eclipse.wst.common.p转载 2015-09-22 16:35:25 · 516 阅读 · 0 评论 -
Struts2工作原理
Struts是一个web开源框架,由Craig Mcclanahan创建。它是以Webwork的设计思想为核心,吸收struts1的优点,可以说Struts2是struts1和Webwork结合的产物。Struts2工作原理图: Strus2工作原理:一个请求在Struts2框架中的处理分为以下几个步骤:1.客户端发出一个指向servlet容器的请求(t...原创 2019-04-04 15:55:53 · 364 阅读 · 0 评论 -
SpringMVC工作原理
上面的是springMVC的工作原理图:1、客户端发出一个http请求给web服务器,web服务器对http请求进行解析,如果匹配DispatcherServlet的请求映射路径(在web.xml中指定),web容器将请求转交给DispatcherServlet。2、DipatcherServlet接收到这个请求之后将根据请求的信息(包括URL、Http方法、请求报文头和请求参数...原创 2019-04-04 15:58:32 · 190 阅读 · 0 评论 -
Maven项目配置log4j2.xml
log4j2相对于log4j 1.x有了脱胎换骨的变化,其官网宣称的优势有多线程下10几倍于log4j 1.x和logback的高吞吐量、可配置的审计型日志、基于插件架构的各种灵活配置等。以下是log4j2在maven 项目中的配置步骤:1、在pom.xml文件中引入log4j依赖<!-- https://mvnrepository.com/artifact/org.apach...原创 2019-04-28 14:29:28 · 6101 阅读 · 0 评论 -
Java面试题集锦(含答案)
Java面试题集锦 Java基础1、ArrayList、Vector和LinkedList有什么区别?答:ArrayList底层实现是数组,查找快,增删慢,线程不安全Vector 和ArrayList内部实现一样,线程安全LinkedList内部实现是链表,查找慢,增删快,封装了许多增删操作的方法2、说说final、 finally和finalize的区别。答: f...原创 2019-04-09 17:57:46 · 1004 阅读 · 0 评论 -
Struts2防表单重复提交
在Web应用中,经常会碰到连续多次点击“提交”按钮或者刷新页面导致form重复提交的情况,如何有效避免这种情况的发生呢?这里我们重点讨论采用Struts2的token机制来处理。闲话说到这里,直接上代码。struts.xml配置文件:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "...原创 2019-04-03 16:21:27 · 136 阅读 · 0 评论 -
拦截器(Intercepter)与过滤器(Filter)
Struts2中拦截器与过滤器的区别总结如下:1)Intercepter是基于java反射机制的,是AOP的一种实现,而Filter是基于函数回调的。2)Intercepter不依赖servlet容器,而Filter依赖于servlet容器。3)Intercepter只对Action请求起作用,而Filter几乎对所有请求都起作用。4)Intercepter可以访问Action上下...原创 2019-03-29 13:15:22 · 440 阅读 · 0 评论 -
控制反转(IoC)与依赖注入(DI)
关于Spring控制反转和依赖注入的文章、书籍很多,大家对其解释也仁者见仁,这里就不赘述了。下面我用通俗的例子和平实话语谈一谈自己的理解,希望对您有所帮助。 控制反转(IoC/Inverse Of Control): 应用程序(调用者)本身不负责依赖对象(被调用者)的创建和维护,而是由外部容器负责创建组装。这样控制权就由调用者转移到了外部容器,控制权的转移就是所谓...原创 2019-03-29 12:30:12 · 184 阅读 · 0 评论