自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(209)
  • 资源 (28)
  • 收藏
  • 关注

转载 WebSocket服务端消息推送

服务器推指的是HTML5规范中提供的服务端事件EventSource,浏览器在实现了该规范的前提下创建一个EventSource连接后,便可收到服务端的发送的消息,实现一个单向通信。这种方式的优点是,后端编写非常简单,逻辑不复杂。Netty是由jboss提供的一款开源框架,常用于搭建RPC中的TCP服务器和WebSocket服务器,甚至是类似Tomcat的web服务器,反正就是各种网络服务器,在处理高并发的项目中,功能丰富且性能良好,基于Java中NIO的二次封装,具有比原生NIO更好更稳健的体验。

2024-03-19 15:36:46 81

原创 mysql创建用户授权步骤详解

将向"database_name"数据库中的表授予SELECT和INSERT权限给"username"用户。可以同名 仍让使用test 也可以,创建一个新的用户名也可以。

2024-02-27 09:32:46 161

转载 uniapp微信浏览器H5授权微信登录

3.回调地址是完整的链接,所以,要确保在公众号里设置了授权回调域名 ,你用的这个回调地址的域名,必须和公众号设置的一致(可以去微信公众平台登录关联的公众号看看有没有设置)2.那个appID,记住,一定要是公众号的ID ,一般是如果是小程序同步的H5,那就是这个小程序关联的那个公众号ID,不是开放平台的ID。// 看地址中有没有code参数,如果没有code参数的话则请求微信官方的接口并获取包含code的回调链接。//通过微信官方接口获取code之后,会重新刷新设置的回调地址【redirect_uri】

2024-02-22 13:57:37 606

转载 若依框架 spring boot+ mybatis + 多数据库配置(mysql+oracle)

oracle数据库中有2种字段类型 BLOB 和 NCLOB(具体的解释请自行百度),在创建对象时,BLOB类型的字段对应的是java中的byte[],NCLOB类型的字段对应的是java中的String,而且在配置XML文件时,需要在对应的字段标注jdbcType和typeHandler。# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒。记录一下使用若依框架配置多数据库时踩到的坑,主数据库是mysql,从数据库是oracle。# 配置一个连接在池中最小生存的时间,单位是毫秒。

2023-03-31 10:43:44 3826 1

转载 Java 将带有 ‘T’的时间字符串转换成yyyy-MM-dd HH:mm:ss 格式

看代码: //将带有T的时间字符串转换成yyyy-MM-dd HH:mm:ss public static String convertDate(String strDate) { String str = ""; try { String fmt = "yyyy-MM-dd HH:mm:ss"; strDate = strDate.replace("T", " "); DateTime...

2022-03-13 20:58:00 3292 1

原创 安装electron失败 postinstall: `node install.js`

解决方法:将electron下载地址指向taobao镜像npm config set electron_mirror "https://npm.taobao.org/mirrors/electron/"

2022-02-15 09:09:25 4235

原创 UNI-APP运行环境版本和编译器版本不一致的问题

在打包成APP了 使用了的wgt资源更新 由于HbuildX工具的更新吗,打包后会弹出版本不一致问题解决方法在配置manifest填写上"app-plus": { "compatible": { "ignoreVersion": true //true表示忽略版本检查提示框,HBuilderX1.9.0及以上版本支持 }, 或者//... "app-plus": { "compatible": { "runtimeVersion": "1.7...

2022-01-05 09:54:05 1047

转载 uniapp项目提示打包时未添加videoplayer模块

1、uniapp项目,遇到视频提示打包时未添加videoplayer模块2、如果是云打包只需在manifest.json,模块权限配置中勾选即可。跳转官方文档如果是使用Android离线打包则需要把 media-release.aar,weex_videoplayer-release.aar 这两个文件复制到项目的libs目录下(文件可以在原始工程找到,如果找不到则需要下载新版。官方下载链接)4、然后需要在dcloud_properties.xml中添加如下代码,应该就可以正常使..

2022-01-05 09:31:07 4062

原创 vue-video-player 报错The media could not be loaded, either because the server or network failed or bec

main.js 引入import VideoPlayer from 'vue-video-player' import 'video.js/dist/video-js.css' Vue.use(VideoPlayer)<video-player class="video-player vjs-custom-skin" ref="videoPlayer" :playsinline="true" :options="playerOptions" ></video-player>

2021-12-30 10:03:51 7909 2

原创 mysql:The user specified as a definer (‘xxx‘@‘%‘) does not exist 解决方法

发生这种问题。大概率是用户不存在或者是权限不够用户不存在。用可视化工具新建一个。权限不够 ,运行下面命令:如:我的错误:The user specified as a definer ('mysql'@'%') does not existmovitity权限不够。grant all privileges on *.* to 'mysql'@'%' identified by ".";flush privileges;...

2021-12-29 16:22:57 1100

转载 MySQL实现自增的序列(Sequence)

1、Mysql不支持直接的Sequence,首先需要创建一张表来模拟Sequence的功能。CREATE TABLE t_sequence(seq_name varchar(100) NOT NULL COMMENT '主键',table_name varchar(100) NOT NULL COMMENT '表名标识该序列是某张表的',column_name varchar(200) NOT NULL COMMENT '列名标识该序列用于某个字段',current_val int(15) NO

2021-12-09 11:44:41 6057

原创 Bean Validation参数校验

Validation加入validation校验@Datapublic class StaffDto { /** * 用户名称 */ @NotBlank(message = "姓名不能为空!") private String name; /** * 年龄 */ @NotNull(message = "年龄不能为空!") private Integer age; /** * 手机号

2021-12-07 13:41:10 2743

原创 vue中watch高级用法(deep和immediate)

一、handler方法和immdiate属性watch默认绑定,页面首次加载时,是不会执行的。只有值发生改变才会执行。watch:{ name:{ handler(newName,oldName){ //执行代码 }, immediate:true //true就表示会立即执行 }}二、deep属性如果是监听的是对象类型,当手动修改对象的某个属性时,发现是无效的。data:{ obj:{na...

2021-10-28 09:20:50 1327

原创 解决 Vue 中的Element-ui 组件el-checkbox动态赋值点击没反应问题

<el-checkbox :value="form.test=== '1'" @change="val => $set(form,'test',val ? '1' : '0')" label="测试" border></el-checkbox>项目中遇到的问题记录一下

2021-09-24 17:28:57 6649

原创 Druid数据库连接池,java.sql.SQLException: validateConnection false

Springboot2.1.9+druid+mybatits(不重启项目动态添加mysql和oracle数据源)和数据监控动态增加数据源问题如下11:10:44.465 [Druid-ConnectionPool-Create-12796329] ERROR c.a.d.p.DruidDataSource - [run,2803] - create connection SQLException, url: jdbc:sqlserver://172.16.31.1:1433;database=tj.

2021-08-04 11:17:46 1768

原创 jsoup表单提交,参数值为中文?

Connection connect = Jsoup.connect("");//设置多个请求头,头信息保存到Map集合中Map<String, String> header = new HashMap<>();header.put("Accept", "application/json, text/javascript, */*; q=0.01");header.put("Accept-Encoding", " gzip, deflate, br");header.pu.

2021-04-06 15:24:18 213

原创 SpringBoot 对@PathVariable,@RequestParam,@RequestBody三者的比较

面是对@PathVariable,@RequestParam,@RequestBody三者的比较注解 支持的类型 支持的请求类型 支持的Content-Type 请求示例@PathVariable url GET 所有 /test/{id}@RequestParam url GET 所有 /test?id=1 Body POST/PUT/DELETE/PATCH form-data或x-www.form-urlencoded id:1

2020-12-25 16:41:44 380 2

原创 JQurey如何获取下拉菜单中<option>的id

JQurey如何获取下拉菜单中的id获取select标签中的option的id可以使用如下代码$("select option:checked").attr("id")示例。<p> 刷新方式: <select class="refreshChoice" name="refreshChoice"> <option id="manual" value="手动刷新">手动刷新</option> ...

2020-12-24 10:09:52 856

转载 解决ajax返回值无法传回外层函数问题

1.先解释一下原因由于 ajax 是异步刷新,不会对 ajax 里面执行的任务进行任何阻塞,所以如果我们直接 return data,他会在未出结果之前把值传给函数,对此有一个特别简单的方法解决2.具体解决办法:2.1 先在函数内定义一个全局变量var result;12.2 在 ajax 里面添加async:false表示执行完代码之后在返回结果具体代码如下:function test() { var result; $.ajax({ url:

2020-12-23 13:26:19 266

转载 在Windows系统下搭建Redis集群

准备工作需要4个部件:Redis、Ruby语言运行环境、Redis的Ruby驱动redis-xxxx.gem、创建Redis集群的工具redis-trib.rb。使用redis-trib.rb工具来创建Redis集群,由于该文件是用ruby语言写的,所以需要安装Ruby开发环境,以及驱动redis-xxxx.gem。1)下载Redis安装文件:https://github.com/MSOpenTech/redis/releases/,Redis提供msi和zip格式的下载文件,这里下载z..

2020-11-20 13:33:48 248

原创 which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mod

select @@GLOBAL.sql_modeSELECT @@sql_modeset @@sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'set @@GLOBAL.sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERR

2020-11-13 14:42:07 478

转载 java使用dcm4che3 api解析dicom文件

package com.pretreatment.utils;import com.pretreatment.domin.DicomObj;import com.pretreatment.domin.Image;import com.pretreatment.domin.Series;import com.pretreatment.domin.Study;import org.dcm4che3.data.Attributes;import org.dcm4che3.data.Tag;imp.

2020-09-07 14:39:00 939

转载 Oracle11g客户端连接到服务端

Oracle11G配置远程连接服务器操作步骤1.客户端和服务器同时安装oracle11g数据库,(下载客户端和服务端http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-win64soft-094461.html如下图)。打开服务器的oracle监听(windows7:右键电脑,选...

2020-03-04 15:00:08 873

转载 vue后台管理系统项目标准完整的目录开发架构

注意:里面的部分文件夹可根据自己项目需求进行删减(比如lang,icons,mock,vendor这些文件夹),vendor文件夹用来存放第三方提供的功能插件等。static文件夹下一般放一些静态资源(比如静态资源图片等)...

2019-08-15 17:30:50 973

转载 基于kubernetes构建Docker集群环境实战

kubernetes是google公司基于docker所做的一个分布式集群,有以下主件组成  etcd:高可用存储共享配置和服务发现,作为与minion机器上的flannel配套使用,作用是使每台 minion上运行的docker拥有不同的ip段,最终目的是使不同minion上正在运行的docker containner都有一个与别的任意一个containner(别的minion上运行的do...

2019-08-06 15:09:12 189

转载 Oracle命名规范

1、编写目的  使用统一的命名和编码规范,使数据库命名及编码风格标准化,以便于阅读、理解和继承。  2、适用范围  本规范适用于公司范围内所有以ORACLE作为后台数据库的应用系统和项目开发工作。  3、对象命名规范  3.1 数据库和SID  数据库名定义为系统名+模块名  ★ 全局数据库名和例程SID 名要求一致  ★ 因SID 名只能包含字符和数字,所以全局数...

2019-03-07 17:18:34 800

转载 ajax请求加上loading遮罩遇到的坑

本文起源于我之前写过的包含文件上传的form表单提交。在上述代码中关于ajax提交是同步还是异步的问题我也没有关注,结果在添加遮罩的时候就遇到问题了。问题描述:在点击保存提交文件表单数据时,由于加载速度慢,容易给用户系统出错或崩溃的错觉,造成用户多次点击等情况,所以考虑添加loading遮罩,我的ajax请求代码如下,在success之前添加brforeSend:             ...

2019-02-20 15:03:38 460

转载 Java日期查询:日、周、旬、月、季度、年等时间操作

在进行频次、周期业务处理的时候,需要查询日、周、旬、月、季度、年等周期时间,为此而写的一个时间工具类。import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Calendar;import java.util.Date;...

2018-12-21 14:46:28 6209 2

原创 spring 事务控制 设置手动回滚

在事务控制的service层类中使用try catch 去捕获异常后,就会使事务控制失效,因为该类的异常并没有抛出,就不是触发事务管理机制。怎样才能即使用try catch去捕获异常,而又让出现异常后spring回滚呢,这里就要用到@Transactional(rollbackFor = { Exception.class })     public boolean save(String ...

2018-08-30 17:59:21 2217

转载 解决java poi海量数据导出内存溢出问题

摘要: 解决java poi海量数据导出导致内存溢出的问题找了很多天的解决方法,一直被分页查询绕进去了,其实数据都能查出来的,真正卡的地方是ExcelExportUtil类下调错了方法。  最开始调用的方法是(标记的地方):  workbook = new HSSFWorkbook();和 workbook = new XSSFWorkbook();这两个方法就是导出Excel...

2018-08-21 09:20:38 2396

转载 oracle异常关闭,启动:ORA-24324: service handle not initialized

oracle关闭异常,再次启动时错误信息如下:SQL&gt; shutdown immediate;ORA-24324: service handle not initializedORA-24323: value not allowedORA-01089: immediate shutdown in progress - no operations are permittedSQL...

2018-08-16 09:52:24 3004

转载 Java获取一年里某季、某月、某周的第一天及最后一天时间的完整代码如下:

import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;public class DateUtil { /** * 得到某年某周的第一天 * * @param year ...

2018-08-03 17:14:25 1076

转载 input输入框只能输入数字,只能输入字母数字组合

输入大小写字母、数字、下划线:&lt;input type="text" onkeyup="this.value=this.value.replace(/[^\w_]/g,'');"&gt; 输入小写字母、数字、下划线:&lt;input type="text" onkeyup="this.value=this.value.replace(/[^a-z0-9_]/g,'');"&gt;

2018-07-25 10:55:20 9286

转载 Window10下RabbitMQ安装图文教程

一、erlang下载安装1、下载   下载erlang,原因在于RabbitMQ服务端代码是使用并发式语言erlang编写的,下载地址:http://www.erlang.org/downloads,双击.exe文件进行安装就好。 2、安装一直next就可以,不再描述 3、配置环境变量安装完成之后创建一个名为ERLANG_HOME的环境变量,其值指向erlang的安...

2018-07-23 17:05:53 313

转载 tomcat服务器隔一段时间不访问,就会与MySQL数据库断开连接

tomcat服务器隔一段时间不访问,就会与MySQL数据库断开连接,并报错:    java.net.SocketException: Software caused connection abort: socket write error原因是MySQL的连接超时时间是8小时。若空闲超过8小时,MySQL就会自动断开连接。方法一:使用连接池可以解决这个问题,这里使用c3p0:修改hibernat...

2018-07-13 09:21:28 7643

原创 echarts图表在div尺寸变化时的自适应

页面中有一个echarts使用这个:​              myChart.setOption(option);               window.onresize = myChart1.resize;当页面有多个echarts时使用:            myChart.setOption(option);​            window.addEventListener(...

2018-06-28 16:16:13 24788 3

原创 Spring 3整合Quartz 2实现动态定时任务

废话不说了直接上代码 &lt;bean id="schedulerFactoryBean"          class="org.springframework.scheduling.quartz.SchedulerFactoryBean"&gt;      &lt;!--     &lt;property name="startupDelay" value="180"/&gt;  启动

2018-06-14 17:53:57 332

转载 为什么要使用jQuery?

 最近在学习JQuery的知识,首先必须得了解为什么要学习JQuery,JQuery有哪些优点,当然是相对于传统的Javascript和DOM来说了,现在将JQuery的优势总结如下:1,轻量级.  JQuery非常小,压缩包只有18KB左右.2,强大的选择器.  JQuery不仅支持CSS里的所有选择器,还有JQuery独有的选择器.3,出色的DOM操作封装.  JQuery封装了大量常用的DO...

2018-05-10 11:32:25 674

转载 Spring设置定时任务时,关于执行时间的规则设置

Spring设置一个定时任务,可能有如下配置:[html] view plain copy&lt;?xml version="1.0" encoding="UTF-8"?&gt;    &lt;!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"&g

2018-05-08 11:30:12 985

转载 主流消息系统框架「架构师必看」

RabbitMQ 2007年发布,是一个在AMQP(高级消息队列协议)基础上完成的,可复用的企业消息系统,是当前最主流的消息中间件之一。,通常用于应用程序之间或者程序的不同组件之间通过消息来进行集成。RabbitMQ提供可靠的应用消息发送、易于使用、支持所有主流操作系统、支持大量开发者平台。ActiveMQ 是Apache出品,号称“最流行的,最强大”的开源消息集成模式服务器。ActiveMQ特点...

2018-05-03 14:22:24 4770

龙果 java并发编程原理实战

龙果 java并发编程原理实战 第2节理解多线程与并发的之间的联系与区别 [免费观看] 00:11:59分钟 | 第3节解析多线程与多进程的联系以及上下文切换所导致资源浪费问题 [免费观看] 00:13:03分钟 | 第4节学习并发的四个阶段并推荐学习并发的资料 [免费观看] 00:09:13分钟 | 第5节线程的状态以及各状态之间的转换详解00:21:56分钟 | 第6节线程的初始化,中断以及其源码讲解00:21:26分钟 | 第7节多种创建线程的方式案例演示(一)带返回值的方式00:17:12分钟 | 第8节多种创建线程的方式案例演示(二)使用线程池00:15:40分钟 | 第9节Spring对并发的支持:Spring的异步任务00:11:10分钟 | 第10节使用jdk8提供的lambda进行并行计算00:14:22分钟 | 第11节了解多线程所带来的安全风险00:13:16分钟 | 第12节从线程的优先级看饥饿问题00:18:42分钟 | 第13节从Java字节码的角度看线程安全性问题00:25:43分钟 | 第14节synchronized保证线程安全的原理(理论层面) 00:13:59分钟 | 第15节synchronized保证线程安全的原理(jvm层面)00:25:03分钟 | 第16节单例问题与线程安全性深入解析00:27:15分钟 | 第17节理解自旋锁,死锁与重入锁00:24:58分钟 | 第18节深入理解volatile原理与使用00:28:30分钟 | 第19节JDK5提供的原子类的操作以及实现原理00:27:10分钟 | 第20节Lock接口认识与使用00:19:54分钟 | 第21节手动实现一个可重入锁00:26:31分钟 | 第22节AbstractQueuedSynchronizer(AQS)详解00:49:04分钟 | 第23节使用AQS重写自己的锁00:31:04分钟 | 第24节重入锁原理与演示00:12:24分钟 | 第25节读写锁认识与原理00:18:04分钟 | 第26节细读ReentrantReadWriteLock源码00:30:38分钟 | 第27节ReentrantReadWriteLock锁降级详解00:13:32分钟 | 第28节线程安全性问题简单总结00:15:34分钟 | 第29节线程之间的通信之wait/notify00:32:12分钟 | 第30节通过生产者消费者模型理解等待唤醒机制00:20:50分钟 | 第31节Condition的使用及原理解析00:17:40分钟 | 第32节使用Condition重写wait/notify案例并实现一个有界队列00:22:05分钟 | 第33节深入解析Condition源码00:21:15分钟 | 第34节实战:简易数据连接池00:24:53分钟 | 第35节线程之间通信之join应用与实现原理剖析00:10:17分钟 | 第36节ThreadLocal 使用及实现原理00:17:41分钟 | 第37节并发工具类CountDownLatch详解00:22:04分钟 | 第38节并发工具类CyclicBarrier 详解00:11:52分钟 | 第39节并发工具类Semaphore详解00:17:27分钟 | 第40节并发工具类Exchanger详解00:13:47分钟 | 第41节CountDownLatch,CyclicBarrier,Semaphore源码解析00:29:57分钟 | 第42节提前完成任务之FutureTask使用00:11:43分钟 | 第43节Future设计模式实现(实现类似于JDK提供的Future)00:19:20分钟 | 第44节Future源码解读00:29:22分钟 | 第45节Fork/Join框架详解00:28:09分钟 | 第46节同步容器与并发容器00:18:44分钟 | 第47节并发容器CopyOnWriteArrayList原理与使用00:15:52分钟 | 第48节并发容器ConcurrentLinkedQueue原理与使用00:31:03分钟 | 第49节Java中的阻塞队列原理与使用00:26:18分钟 | 第50节实战:简单实现消息队列00:11:07分钟 | 第51节并发容器ConcurrentHashMap原理与使用00:38:22分钟 | 第52节线程池的原理与使用00:42:49分钟 | 第53节Executor框架详解00:36:54分钟 | 第54节实战:简易web服务器(一)00:55:34分钟 | 第55节实战:简易web服务器(二)00:24:36分钟 | 第56节JDK8的新增原子操作类LongAddr原理与使用00:17:45分钟 | 第57节JDK8新增锁StampedLock详解00:29:37分钟 | 第58节重排序问题00:23:19分钟 | 第59节happens-before简单概述00:15:17分钟 | 第60节锁的内存语义00:13:54分钟 | 第61节volatile内存语义00:12:04分钟 | 第62节final域的内存语义00:34:07分钟 | 第63节实战:问题定位00:07:48分钟

2018-02-02

实战Java高并发程序设计 中文pdf版下载

实战Java高并发程序设计主要介绍基于Java的并行程序设计基础、思路、方法和实战。首先,立足于并发程序基础,详细介绍Java中进行并行程序设计的基本方法。第二,进一步详细介绍JDK中对并行程序的强大支持,帮助读者快速、稳健地进行并行程序开发。第三,详细讨论有关“锁”的优化和提高并行程序性能级别的方法和思路。第四,介绍并行的基本设计模式及Java8对并行程序的支持和改进。第五,介绍高并发框架Akka的使用方法。最后,详细介绍并行程序的调试方法。 实战Java高并发程序设计内容丰富,实例典型,实用性强,适合有一定Java基础的技术开发人员阅读。

2018-01-24

hadoop-eclipse-plugin-2.6.0.jar

It takes me two days to find the root cause for the exceptions and finally generate this jar file for hadoop 2.6.0. 1.use hadoop 2.6.0. 2.change the hadoop_home and path to point to hadoop 2.6.0 3.include one more jar file htrace-core-3.0.4.jar compared with previous versions. Tested with eclipse-jee-luna-R-win32-x86_64. Any problem,please let me know.

2017-02-16

HighchartsDemo案例

Highcharts是一个制作图表的纯Javascript类库,主要特性如下: 兼容性:兼容当今所有的浏览器,包括iPhone、IE和火狐等等; 对个人用户完全免费; 纯JS,无BS; 支持大部分的图表类型:直线图,曲线图、区域图、区域曲线图、柱状图、饼装图、散布图; 跨语言:不管是PHP、Asp.net还是Java都可以使用,它只需要三个文件:一个是Highcharts的核心文件highcharts.js,还有a canvas emulator for IE和Jquery类库或者MooTools类库; 提示功能:鼠标移动到图表的某一点上有提示信息; 放大功能:选中图表部分放大,近距离观察图表; 易用性:无需要特殊的开发技能,只需要设置一下选项就可以制作适合自己的图表; 时间轴:可以精确到毫秒;

2017-02-08

SSH2+XFire的框架整合

SSH2+XFire的框架整合

2016-05-06

JasperReport+SSH

JasperReport+struts+spring+hibernate+extjs4.1

2015-11-12

struts2.0 hibernate spring考勤管理系统

struts2.0 hibernate spring考勤管理系统

2015-10-30

jackson-core-2.2.3.jar

spring Android中MappingJackson2HttpMessageConverter()需要此包和jackson-annotations-2.2.3.jar和jackson-databind-2.2.3.jar

2015-10-13

jackson-databind-2.2.3.jar

spring Android中需要此包jackson-databind-2.2.3.jar,还需要jackson-annotations-2.2.3.jar和jackson-core-2.2.3.jar

2015-10-13

jackson-annotations-2.2.3.jar

springandroid中需要此包\jackson-annotations-2.2.3.jar ,还需要jackson-databind-2.2.3.jar和jackson-core-2.2.3.jar

2015-10-13

httpclient-4.5 jar

commons-codec-1.9.jar commons-logging-1.2.jar fluent-hc-4.5.jar httpclient-4.5.jar httpclient-cache-4.5.jar httpclient-win-4.5.jar httpcore-4.4.1.jar httpmine-4.5.jar jna-4.1.0.jar jna-platform-4.1.0.jar

2015-10-13

JAVA上传图片源代码

JAVA上传源代码,包含检查文件格式、大小等功能。已做成项目,经测试没问题!打包上传到资源中,下载后解压缩即可使用!

2015-10-13

上传图片预览java代码

图片上传预览是一种在图片上传之前对图片进行本地预览的技术。 使用户选择图片后能立即查看图片,而不需上传服务器,提高用户体验。 但随着浏览器安全性的提高,要实现图片上传预览也越来越困难。 不过群众的智慧是无限的,网上已经有很多变通或先进的方法来实现。 例如ie7/ie8的滤镜预览法,firefox 3的getAsDataURL方法。 但在opera、safari和chrome还是没有办法实现本地预览,只能通过后台来支持预览。 兼容:ie6/7/8, firefox 3.5.5 后台支持下还兼容:opera 10.10, safari 4.0.4, chrome 3.0 程序说明 【基本原理】 图片预览主要包括两个部分:从file表单控件获取图像数据,根据数据显示预览图像。 程序的file和img属性就是用来保存file控件和显示预览图像的容器的,而img还必须是img元素。 程序有以下几种预览方式: simple模式:直接从file的value获取图片路径来显示预览,适用于ie6; filter模式:通过selection获取file的图片路径,再用滤镜来显示预览,适用于ie7/8; domfile模式:调用file的getAsDataURL方法获取Data URI数据来显示预览,适用于ff3; remote模式:最后的办法,把file提交后台处理后返回图片数据来显示预览,全适用。 程序定义时就自动根据浏览器设置MODE属性: ImagePreview.MODE = $$B.ie7 || $$B.ie8 ? "filter" : $$B.firefox ? "domfile" : $$B.opera || $$B.chrome || $$B.safari ? "remote" : "simple"; 如果用能力检测会比较麻烦,所以只用了浏览器检测。 由于浏览器对应的默认模式是不会变的,这个值会保存到函数属性中作为公用属性。 ps:ie6也可以用filter模式,不过它有更好的simple模式。 【获取数据】 调用preview方法,就会执行预览程序: if ( this.file && false !== this.onCheck() ) { this._preview( this._getData() ); } 在通过检测后,再调用_getData获取数据,并作为_preview的参数进入下一步。 程序初始化时就会根据mode来设置_getData数据获取程序: this._getData = this._getDataFun(opt.mode); mode的默认值是ImagePreview.MODE,也可以在可选参数中自定义。 由于兼容性问题,一般应保留默认值,除非是使用全兼容的remote模式。 在_getDataFun里面,根据mode返回数据获取程序: 代码 switch (mode) { case "filter" : return this._filterData; case "domfile" : return this._domfileData; case "remote" : return this._remoteData; case "simple" : default : return this._simpleData; } 不同的模式有不同的数据获取程序: 滤镜数据获取程序: this.file.select(); try{ return document.selection.createRange().text; } finally { document.selection.empty(); } 一般用在ie7/8,在file控件select后再通过selection对象获得文件本地路径。 此时file控件不能隐藏,否则不能被select,不过一般能选择文件就肯定能被select了。 确实要隐藏也可以在获取数据之后再隐藏。 domfile数据获取程序: return this.file.files[0].getAsDataURL(); 用getAsDataURL从file控件获取数据,这个方法暂时只有ff3支持。 远程数据获取程序: this._setUpload(); this._upload && this._upload.upload(); 用_upload上传文件对象把数据提交后台,根据返回的数据再显示。 这个方法不属于本地预览,是没有办法中的办法。 一般数据获取程序: return this.file.value; 最原始的方法,现在只有ie6还支持从file的value直接获取本地路径。 获取数据后,作为_preview预览程序的参数,再进行处理: if ( !!data && data !== this._data ) { this._data = data; this._show(); } 首先排除空值或相同值的情况,再执行_show程序进行显示预览,其中_data属性用来保存当前的图片数据。 图片使用Data URI数据时可能会设置一个很大的src值,在ie8获取很大的src值会出现“无效指针”的错误。 使用_data属性保存这个值可以避免从src取值而触发这个错误。 远程数据获取程序没有返回值,因为它需要等待返回数据,在_preview中会自动排除。 【显示预览】 程序初始化时就会根据mode来设置_show预览显示程序: this._show = opt.mode !== "filter" ? this._simpleShow : this._filterShow; 除了filter模式,都是使用_simpleShow显示程序来显示预览图片的。 里面会先调用_simplePreload方法设置一般预载图片对象: 代码 if ( !this._preload ) { var preload = this._preload = new Image(), oThis = this, onload = function(){ oThis._imgShow( oThis._data, this.width, this.height ); }; this._onload = function(){ this.onload = null; onload.call(this); } preload.onload = $$B.ie ? this._onload : onload; preload.onerror = function(){ oThis._error(); }; } else if ( $$B.ie ) { this._preload.onload = this._onload; } 预载图片对象保存在_preload属性中,主要用来判断图像能否加载成功并获取图片原始尺寸。 要实现这些功能使用Image对象就足够了。 在onload中执行_imgShow显示预览,在onerror中进行出错处理。 ps:ff、chrome和safari的图片对象还有naturalHeight和naturalWidth属性可以获取图片的原始尺寸,即使图片尺寸已经修改过。 这里要注意ie6/7的gif图片载入bug,测试以下代码: 代码 <!DOCTYPE html><body><img id="img" /><div id="div"></div></body> <script> img.onload = function(){ div.innerHTML += this.complete + ", "; }; img.src = "http://tuan.pcpop.com/image/my/loading.gif"; </script> 一般图片执行一次onload后并不会重复执行,但ie6/7的gif每次循环播放都会执行一次onload。 ps:ie8在非标准(怪辟)模式下也有相同的问题。 可以在onload的时候,判断complete是否为false来判断是否重复加载。 ps:除了ie,其他浏览器在onload时complete就已经为true了。 问题是选择另一个图片时这个complete仍然是true,这样就没有意义了。 所以只好在onload里面重置onload为null,并在每次选择文件重设onload了。 然后设置_preload的src预载图片,如果成功预载就会执行_imgShow显示预览。 要注意src的设置要在onload/onerror的设置之后,否则设置之前就加载完成的话就触发不了事件了。 _imgShow需要三个参数,包括要预览图片的src值,图片原始宽度和图片原始高度。 在_imgShow里面首先设置预览图片的尺寸: 代码 var img = this.img, style = img.style, ratio = Math.max( 0, this.ratio ) || Math.min( 1, Math.max( 0, this.maxWidth ) / width || 1, Math.max( 0, this.maxHeight ) / height || 1 ); style.width = Math.round( width * ratio ) + "px"; style.height = Math.round( height * ratio ) + "px"; 这里的关键是获取ratio比例值,如果自定义的ratio大于0就直接使用自定义的比例,否则就根据参数自动计算。 自动计算首先要确保maxWidth最大宽度和maxHeight最大高度大于等于0。 然后分别跟原始宽高做“/”运算得到比例,如果比例为0表示不限制,那么比例就自动改为1。 最后取比较小的比例来计算,程序设定了比例最大值为1,这样就不会自动放大图片了。 当然比例的计算可以根据需要自行修改。 ps:style的优先级比属性(width/height)高,所以要用style设置。 最后设置img的src就可以实现预览了。 【remote模式】 remote模式会先提交file控件到后台,通过返回的数据来显示图片。 它跟其他模式最大的区别就是获取数据的部分。 在_remoteData远程数据获取程序中,会调用_setUpload来设置上传文件对象。 如果设置了action,并存在QuickUpload函数,就会实例化一个上传文件对象保存到_upload中: 代码 var oThis = this; this._upload = new QuickUpload(this.file, { onReady: function(){ this.action = oThis.action; this.timeout = oThis.timeout; var parameter = this.parameter; parameter.ratio = oThis.ratio; parameter.width = oThis.maxWidth; parameter.height = oThis.maxHeight; }, onFinish: function(iframe){ try{ oThis._preview( iframe.contentWindow.document.body.innerHTML ); }catch(e){ oThis._error("remote error"); } }, onTimeout: function(){ oThis._error("timeout error"); } }); 这里使用的QuickUpload就是简便无刷新文件上传程序。 在onReady中设置参数,在onFinish中处理返回数据,onTimeout进行出错处理。 返回的数据可以是图片的地址或对应的Data URI数据,然后给_preview处理。 当然针对不同的后台输出,数据处理的方式也不同,可以按照需要修改。 后台最好先根据传递的参数缩小图片,尽量减少返回数据来提高预览速度。 【filter模式】 filter模式在_filterData程序中得到文件本地路径,但ie7/8都不允许直接使用本地路径显示图片。 不过还是可以通过滤镜,用本地路径来做预览图片效果。 filter模式使用_filterShow方法来显示预览图片。 里面先调用_filterPreload方法来设置滤镜预载图片对象。 跟一般预载图片对象不同,滤镜预载对象是用滤镜来显示图片,所以并不一定要图像元素。 程序就使用了div元素作为滤镜预载对象: 代码 var preload = this._preload = document.createElement("div"); $$D.setStyle( preload, { width: "1px", height: "1px", visibility: "hidden", position: "absolute", left: "-9999px", top: "-9999px", filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='image')" }); var body = document.body; body.insertBefore( preload, body.childNodes[0] ); 在样式设置中隐藏元素并添加滤镜,要使滤镜生效width和height必须设置一个值。 由于要获取尺寸,只能用visibility来隐藏并插入body,关于AlphaImageLoader滤镜后面再介绍。 然后在_filterShow中预载图片: try{ preload.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = data; }catch(e){ this._error("filter error"); return; } 成功的话,再给img载入图片: this.img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale',src=\"" + data + "\")"; 注意,如果路径中有“)”,“%”这类字符的话,直接拼接到滤镜字符串中会出现类似sql注入的问题。 程序会先对这些敏感字符进行escape编码: data = this._data.replace(/[)'"%]/g, function(s){ return escape(escape(s)); }); 为什么要做两次escape编码呢?测试时发现“%”只转一次的话,遇到“%40”之类的字符时还是会出问题。 所以我推测,字符在使用前会进行两次unescape解码,于是对应的做两次escape编码果然没问题了。 虽然预载对象是直接设置滤镜的src属性,但也有“%”的拼接字问题,所以也要escape编码。 ps:虽然单引号和双引号这里并不是必要,还是一起替换掉安心点。 还要注意预览对象不要用filters.item的方式设置滤镜。 因为元素插入文档之前,并不能通过filters.item获取滤镜对象,但能通过style预先设置filter。 所以在不确定元素位置的情况下,只能用style来设置filter了。 最后调用_imgShow设置尺寸: this._imgShow( ImagePreview.TRANSPARENT, preload.offsetWidth, preload.offsetHeight ); 由于img是一个图片对象,默认会显示一个小图标,为了去掉这个小图标,可以让它显示一个透明图片。 程序传递了ImagePreview.TRANSPARENT来设置透明图片,具体数据在Data URI 和 MHTML再说明。 ps:当然也可以在filter模式用div做预览图片对象就没有小图标了,但这样兼容起来会麻烦很多。 【AlphaImageLoader滤镜】 filter模式使用的是AlphaImageLoader滤镜。 它的作用是在对象容器边界内,在对象的背景和内容之间显示一张图片。 如果载入的是png图片,其透明度会被支持,因此它更多地用来解决png的兼容问题。 详细参考msdn的AlphaImageLoader Filter和“Microsoft.AlphaImageLoader滤镜讲解”。 它包括三个属性:enabled(滤镜是否激活),sizingMethod(图像显示方式)和src(图像路径)。 程序主要使用后面两个属性。 sizingMethod有三种方式: crop:剪切图片以适应对象尺寸; image:默认值。增大或减小对象的尺寸边界以适应图片的尺寸; scale:缩放图片以适应对象的尺寸边界。 预载图片对象_preload,需要获取图片的原始尺寸,所以要用image方式。 而预览图片对象img,则要按设定尺寸显示图片,所以要用scale方式。 而src属性设置的路径还支持本地路径,是实现filter模式的关键所在。 还好滤镜并没有像file控件那样提高安全性,否则ie7/8就没有办法实现本地预览了。 【nsIDOMFile接口】 ff从3.0(或许更早)开始,就不能通过file控件的value属性获取文件本地路径,也不支持直接用本地路径显示图片。 不过欣喜的是,它同时也提供了nsIDOMFile接口,能更好地获取文件数据。 在ff的file控件有一个FileList对象,包含了带nsIDOMFile接口的File对象。 ps:FileList对象貌似是一个NodeList集合,但目前只能用第一个,可能是为了将来实现一个file控件选择多个文件的功能预留的。 这个File对象有三个获取文件数据的方法: getAsText:获取文件的文本数据,可以通过参数设置编码; getAsDataURL:获取文件的Data URI(URL?)数据; getAsBinary:获取文件的二进制数据。 其中getAsDataURL获得的Data URI数据可以用于显示图片,_domfileData中就是用它来获取数据的。 File对象还支持两个属性:fileName(文件名,不包括路径)和fileSize(文件大小)。 相关具体说明参考mozilla的File和nsIDOMFile。 【Data URI 和 MHTML】 上面已经多次提到Data URI,详细介绍请看秦歌的“Data URI 和 MHTML”。 Data URI的主要作用是以字符代替数据,从而把文件“嵌”在代码里。 除了ie,其他浏览器基本都很好的支持了Data URI。 ie8也有限度地支持,详细参考msdn的data Protocol。 由于opera,safari和chrome需要remote模式的浏览器都支持Data URI,所以程序返回的是Data URI形式的数据。 相比返回路径的方法,返回Data URI不需要创建文件,还少一次HTTP请求。 ps:ie8只支持32k的Data URI数据,在ie8使用时要注意数据大小。 在filter模式需要一个透明图片来去掉img默认显示的小图标,一般的方法需要一个图片文件。 为了“省下”这个文件,可以使用Data URI来做一个1*1的透明图片: data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw== 支持Data URI的情况下,只要把img的src设置为这个值就可以显示一个透明图片了。 虽然ie6/7不支持Data URI,但还有mhtml可以使。 在ImagePreviewd.js开头有一段注释了的代码: 代码 Content-Type: multipart/related; boundary="_CLOUDGAMER" --_CLOUDGAMER Content-Location:blankImage Content-Transfer-Encoding:base64 R0lGODlhAQABAJEAAAAAAP///////wAAACH5BAEAAAIALAAAAAABAAEAAAICVAEAOw== 其中boundary的值是分隔符标识,说明用于分隔数据段的字符。 Content-Location说明关联引用位置,可以用作数据段的标识。 Content-Transfer-Encoding就是字符编码形式。 后面的代码就是1*1的透明图片的base64编码数据。 然后在代码中这样调用(例如设置img元素的src属性): mhtml:文件完整路径!blankImage 就可以链接到一个透明图片了。 接着就要解决如何获得script(js文件)的完整路径(包含http开头的路径)的问题了。 首先要在脚本运行时获取,当前运行的script肯定是document.scripts的最后一个: document.scripts[document.scripts.length - 1] ps:ff不支持document.scripts,可以用getElementsByTagName("script")来兼容。 接着可以利用getAttribute从src获取script的完整路径: document.scripts[document.scripts.length - 1].getAttribute("src", 4) ie6/7的getAttribute支持第二个参数,设为4表示返回完整路径的url地址,详细参考msdn的getAttribute Method。 结合Data URI 和 MHTML可以这样得到透明图片数据: ImagePreview.TRANSPARENT = $$B.ie7 || $$B.ie6 ? "mhtml:" + document.scripts[document.scripts.length - 1].getAttribute("src", 4) + "!blankImage" : "data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="; 使用时要注意: 脚本必须单独另存为一个文件,作为mhtml需要的文件路径。 要自动获取完整路径需要用script标签链接文件。 【超空间】 程序还有一个dispose方法用于销毁程序。 包括这几个部分: _upload上传文件对象:它本身已经有一个dispose方法来销毁程序; _preload预载图片对象:先清除它的onload/onerror事件再移除元素; file和img属性:直接设为null,由于不是程序创建的元素,留给使用者来移除。 说到移除元素,顺便说一下超空间(DOM hyperspace),这是从“ppk谈javascript”中看到的。 大概指的是当元素不在dom里面,而js又有关联时,元素并不会消失,而是保存在一个称为“超空间”的地方。 详细参考书的DOM 超空间部分。 书中还说可以根据是否有parentNode来判断元素是否在超空间,但测试以下代码: <body></body> <script> var elm = document.createElement("div"); alert(elm.parentNode); document.body.removeChild(document.body.appendChild(elm)); alert(elm.parentNode); </script> 第一次parentNode都是null,没有问题,按理第二次也应该是null,但ie却是一个object。 经测试,这个object的nodeType是11,也就是一个碎片对象(FRAGMENT)。 而且各个被removeChild移除的元素的parentNode都不相同,即会生成不同的碎片对象。 这种情况算不算在“超空间”呢,不过书中也只是说“一般来说”,也不用太考究。 那么用innerHTML清除呢?再测试以下代码: <body><div id="test"></div></body> <script> var elm = document.getElementById("test"); document.body.innerHTML = ""; alert(elm.parentNode); </script> 结果在ie也是null了,看来removeChild和innerHTML在清除元素时产生了不同的结果。 那个碎片对象貌似没什么用(难道为了保证有parentNode?),那是不是innerHTML就一定比removeChild好呢? 再测试以下代码: 代码 <body> <style>div{border:1px solid #000; height:20px;}</style> <span><div id="test1">test1</div></span> <span><div id="test2">test2</div></span> </body> <script> var div1 = document.getElementById("test1"), parent1 = div1.parentNode; parent1.removeChild(div1); alert(div1.tagName + ":" + div1.innerHTML); parent1.appendChild(div1); var div2 = document.getElementById("test2"), parent2 = div2.parentNode; parent2.innerHTML = ""; alert(div2.tagName + ":" + div2.innerHTML); parent2.appendChild(div2); </script> 当使用removeChild时,移除元素的结构并没有发生变化,各个浏览器的效果都一样。 而使用innerHTML清除时,其他浏览器的效果跟removeChild一样,但在ie被移除的元素就只剩下一个“外壳”了。 个人推测,ie在使用innerHTML时,被移除的元素会变成一个个单独的元素,失去了彼此的联系。 形象点说就是removeChild是直接掰断树枝,还能继续嫁接使用,而innerHTML是把需要的树叶节点取下来,再把树枝烧掉。 ps:仅仅是推测,谁有官方资料请告诉我。 那么removeChild的好处是移除的元素能再次使用,兼容性好,不好的地方是ie会产生一个没用的碎片对象。 而innerHTML的好处是不会产生多余的碎片对象,方便高效,但在ie被移除的元素基本不能再用,有兼容性问题。 那就可以根据需要使用不同的方法了,至于防止内存泄漏用那个好,感觉是innerHTML,但没有更深入研究的话还说不清楚。 使用技巧 一般来preview方法都是在onchange中调用,即选择文件后立即显示预览。 在不需要程序时最好执行一次dispose方法来销毁程序,防止内存泄漏等。 利用ImagePreview.TRANSPARENT可以显示透明图片,而不需另外隐藏或增加文件。 第二个实例中的ResetFile是用来重置file控件的,详细参考这里file的reset。 而file控件样式设置详细参考这里的file样式。 asp版本使用Persits.Jpeg组件缩放图片,测试请先安装该组件。 使用说明 实例化时,有两个必要参数,分别是file控件对象和img元素的预览显示对象: new ImagePreview( file, img ); 可选参数用来设置系统的默认属性,包括: 属性: 默认值//说明 mode: ImagePreview.MODE,//预览模式 ratio: 0,//自定义比例 maxWidth: 0,//缩略图宽度 maxHeight: 0,//缩略图高度 onCheck: function(){},//预览检测时执行 onShow: function(){},//预览图片时执行 onErr: function(){},//预览错误时执行 以下在remote模式时有效 action: undefined,//设置action timeout: 0//设置超时(0为不设置) 如果要使用remote模式必须设置一个action。 还提供了以下方法: preview:执行预览操作; dispose:销毁程序。

2015-10-13

commons-httpclient-3.1jar包

commons-httpclient-3.1jar包,有需要的请下载 本资料共包含以下附件: commons-httpclient-3.1jar包.rar

2015-09-17

java利用htmlparser抓取网页数据

可以直接运行。java利用htmlparser抓取网页数据

2015-09-17

微信订阅号java源码

导入整个工程到eclipse, 压缩包里面有hellochat.war文件部署到百度bae云平台下即可 接口配置信息 url:http://tomcat886.duapp.com/coreServlet Token:weixin 整理本源代码实现基于群主柳峰的博客http://blog.csdn.net/lyq8479/article/details/8944988 他讲的已经很详细了, 有兴趣的可以去他的博客看看。

2015-08-04

微信图书馆查书助手项目源码(java)

微信图书馆查书助手java版项目源码。使用java语言 + EasyWechat框架 开发

2015-08-04

WeiXin调试工具

微信开发本地调试工具(模拟微信客户端)微信部署需要依靠80端口,如何快速有效的调试本地微信开发程序

2015-08-04

springMvc整合源码

本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mvc和rest小例子

2015-03-12

Android高仿微信源码

Android 完美高仿的微信源码,Android 学习/入门的好代码,界面不错

2015-03-12

办公自动化系统oa

企业提供一个安全、稳定、高效、易用而快捷的网络办公环境,系统集成了包括内部电子邮件、短信息、日程安排、通讯录、考勤管理、网络硬盘、讨论区、投票、 聊天室、人事档案、工资管理、办公用品、会议管理、 车辆管理、图书管理、CRM、电话区号查询、邮政编码查询、法律法规查询、万年历、世界时间、等数十个极具价值的oa系统功能模块

2014-05-05

百度编辑器

百度编辑器很强大的,用着很牛的,赶快来下载使用吧

2014-02-22

Spring+Hibernate+Struts2整合开发

Spring+Hibernate+Struts2整合开发

2014-02-18

Struts2、Spring和Hibernate

Struts2、Spring和Hibernate

2014-02-18

WebpageCaptureDemo

WebpageCaptureDemo

2014-02-18

hql批量删除

批量删除数据批量插入数据 9.4.4 直接通过JDBC API来进行批量操作 当通过JDBC API来执行SQL insert、update和delete语句时,SQL语句中涉及到的数据不会被加载到内存中,因此不会占用内存空间。 以下程序直接通过JDBC API来执行用于批量更新的SQL语句:

2014-01-24

struts2.0_zh

Struts作为MVC 2的Web框架,自推出以来不断受到开发者的追捧,得到用广泛的应用。作为最成功的Web框架,Struts自然拥有众多的优点: MVC 2模型的使用 功能齐全的标志库(Tag Library) 开放源代码

2014-01-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除