本左传媒网络野狼科技网络传媒官网有限公司

共10页到页
您可能还感兴趣的厂家:
您可能还感兴趣的产品:
您可能还感兴趣的其他内容左本的博客
https://blog.csdn.net/
https://static-blog.csdn.net/images/logo.gif
https://blog.csdn.net/baidu_
https://blog.csdn.net/
https://blog.csdn.net/baidu_/article/details/
https://blog.csdn.net/baidu_/article/details/
sui mobile和light7都是同一个作者开发的,都是用于手机端的UI。两个框架简直就是同卵双胞胎,其中sui mobile必须配合zepto,light7可以使用zepto也可以使用jquery。如果说你想在项目中选择这样一套框架,建议使用light7而不是sui mobile,连boostrap都抛弃了zepto,我想不到有任何理由使用它。zepto比jquery的优势只有体积小而已,然而现在移动网络这么快,而且有各种cdn可以使用,体积小的优势可以忽略不计了。它的缺点就是扩展插件没有jquery多,而且他还有自身有但是jquery没有的api,这就是导致为什么sui mobile不可以将zepto替换成jquery的原因。说下这两个框架比较坑人的问题——路由,路由作用其实就是异步刷新、缓存页面、修改url,支持浏览器上一步下一步,路由可以给用户更好的使用体验,可以很平滑的跳转页面。但是如果你使用路由(默认开启),你就必须将所有页面的js提取到同一个js中,并且使用pageInit方式来初始化。所有业务的页面逻辑代码都放到同一个文件,这其实很不利于维护。而且我实际使用中发现路由和angularjs也有冲突。所以我建议关闭路由,把它作为一个单纯的css库来使用。
作者:baidu_ 发表于
https://blog.csdn.net/baidu_/article/details/
https://blog.csdn.net/baidu_/article/details/
https://blog.csdn.net/baidu_/article/details/
苹果手机中运行的页面,在iframe 中 ,手指点击input框,自动弹出键盘后,输入几个文字,然后手指再点击一下input框之后,再在键盘里敲字母,就无法在input框显示所敲入的内容了。
input组件接管keydown事件 获取光
var el = $('#input');
el.on('keydown', function() {
window.focus()
el.focus()
参考地址:
作者:baidu_ 发表于
https://blog.csdn.net/baidu_/article/details/
https://blog.csdn.net/baidu_/article/details/
https://blog.csdn.net/baidu_/article/details/
var img = "data:image/base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAAIAAsDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9Bftqf3x+f/2VH21P74/P/wCyoor/AAs9nD+VH8wKnHTTt/7Z/n/Wt//Z";
function dataURLtoFile(dataurl, filename) {//将base64转换为文件
var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
while(n--){
u8arr[n] = bstr.charCodeAt(n);
return new File([u8arr], filename, {type:mime});
function fileup() {
var form=document.forms[0];
var formData = new FormData();
formData.append("myfile", dataURLtoFile(img,"123.png"));
formData.append("name", "123");
formData.append("sex", "0");
formData.append("employeeId", "123");
formData.append("idCard", "123");
formData.append("phoneNumber", "");
formData.append("facesetToken", "021f4c37-aa70-4d03-b97a-a");
url: 'http://122.112.238.8:8080/api/v1/addface' ,
type: 'POST',
data: formData,
async: false,
cache: false,
contentType: false,
processData: false,
success: function (returndata) {
console.log(returndata);
error: function (returndata) {
alert(returndata);
作者:baidu_ 发表于
https://blog.csdn.net/baidu_/article/details/
https://blog.csdn.net/baidu_/article/details/
https://blog.csdn.net/baidu_/article/details/
&!DOCTYPE html&
&meta charset="utf-8"&
&meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"&
&title&Examples&/title&
&meta name="description" content=""&
&meta name="keywords" content=""&
&link href="" rel="stylesheet"&
!function(){function n(n,e,t){return n.getAttribute(e)||t}function e(n){return document.getElementsByTagName(n)}function t(){var t=e("script"),o=t.length,i=t[o-1];return{l:o,z:n(i,"zIndex",-1),o:n(i,"opacity",.5),c:n(i,"color","0,0,0"),n:n(i,"count",99)}}function o(){a=m.width=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,c=m.height=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight}function i(){r.clearRect(0,0,a,c);var n,e,t,o,m,l;s.forEach(function(i,x){for(i.x+=i.xa,i.y+=i.ya,i.xa*=i.x&a||i.x&0?-1:1,i.ya*=i.y&c||i.y&0?-1:1,r.fillRect(i.x-.5,i.y-.5,1,1),e=x+1;e&u.e++)n=u[e],null!==n.x&&null!==n.y&&(o=i.x-n.x,m=i.y-n.y,l=o*o+m*m,l&n.max&&(n===y&&l&=n.max/2&&(i.x-=.03*o,i.y-=.03*m),t=(n.max-l)/n.max,r.beginPath(),r.lineWidth=t/2,r.strokeStyle="rgba("+d.c+","+(t+.2)+")",r.moveTo(i.x,i.y),r.lineTo(n.x,n.y),r.stroke()))}),x(i)}var a,c,u,m=document.createElement("canvas"),d=t(),l="c_n"+d.l,r=m.getContext("2d"),x=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(n){window.setTimeout(n,1e3/45)},w=Math.random,y={x:null,y:null,max:2e4};m.id=l,m.style.cssText="position:top:0;left:0;z-index:"+d.z+";opacity:"+d.o,e("body")[0].appendChild(m),o(),window.onresize=o,window.onmousemove=function(n){n=n||window.event,y.x=n.clientX,y.y=n.clientY},window.onmouseout=function(){y.x=null,y.y=null};for(var s=[],f=0;d.n&f;f++){var h=w()*a,g=w()*c,v=2*w()-1,p=2*w()-1;s.push({x:h,y:g,xa:v,ya:p,max:6e3})}u=s.concat([y]),setTimeout(function(){i()},100)}();
作者:baidu_ 发表于
https://blog.csdn.net/baidu_/article/details/
https://blog.csdn.net/baidu_/article/details/
https://blog.csdn.net/baidu_/article/details/
&option value="国家开发银行"&国家开发银行&/option&
&option value="中国进出口银行"&中国进出口银行&/option&
&option value="中国农业发展银行"&中国农业发展银行&/option&
&option value="中国银行"&中国银行&/option&
&option value="中国工商银行"&中国工商银行&/option&
&option value="中国建设银行"&中国建设银行&/option&
&option value="中国农业银行"&中国农业银行&/option&
&option value="中国光大银行"&中国光大银行&/option&
&option value="中国民生银行"&中国民生银行&/option&
&option value="中信银行"&中信银行&/option&
&option value="交通银行"&交通银行&/option&
&option value="华夏银行"&华夏银行&/option&
&option value="招商银行"&招商银行&/option&
&option value="兴业银行"&兴业银行&/option&
&option value="广发银行"&广发银行&/option&
&option value="平安银行"&平安银行&/option&
&option value="上海浦东发展银行"&上海浦东发展银行&/option&
&option value="恒丰银行"&恒丰银行&/option&
&option value="浙商银行"&浙商银行&/option&
&option value="渤海银行"&渤海银行&/option&
&option value="中国邮政储蓄银行"&中国邮政储蓄银行&/option&
&option value="城市商业银行"&城市商业银行&/option&
&option value="北京银行"&北京银行&/option&
&option value="天津银行"&天津银行&/option&
&option value="河北银行"&河北银行&/option&
&option value="沧州银行"&沧州银行&/option&
&option value="唐山市商业银行"&唐山市商业银行&/option&
&option value="承德银行"&承德银行&/option&
&option value="张家口市商业银行"&张家口市商业银行&/option&
&option value="秦皇岛银行"&秦皇岛银行&/option&
&option value="邢台银行"&邢台银行&/option&
&option value="廊坊银行"&廊坊银行&/option&
&option value="保定银行"&保定银行&/option&
&option value="邯郸银行"&邯郸银行&/option&
&option value="衡水银行"&衡水银行&/option&
&option value="晋商银行"&晋商银行&/option&
&option value="大同市商业银行"&大同市商业银行&/option&
&option value="长治银行"&长治银行&/option&
&option value="其他&/"&其他&/option&
作者:baidu_ 发表于
https://blog.csdn.net/baidu_/article/details/
https://blog.csdn.net/baidu_/article/details/
https://blog.csdn.net/baidu_/article/details/
http://guotaowang.cn
作者:baidu_ 发表于
https://blog.csdn.net/baidu_/article/details/
https://blog.csdn.net/baidu_/article/details/
https://blog.csdn.net/baidu_/article/details/
这两天自己在写一个手机网页,用到了触屏滑动的特效,就是往右滑动的时候左侧隐藏的菜单从左边划出来。做完之后在手机原生浏览器中运行正常,但在QQ和微信中打开,发现touchmove只会触发一次,而且touchend也经常不触发。之后百度了一下这个问题,原因是主要是由于200ms超时导致内核不一定会一直处理touchmove事件,一旦超时会将后续所有的事件转交给UI处理,导致touchmove不会一直触发。为了解决开发者需要,建议开发者在touchstart时调用event.preventDefault,这样就可以保证内核会一起触发touchmove事件了。地址:根据上面所说,在touchstart中添加了event.preventDefault()方法,在QQ和微信中果然正常了。但是!!!页面中的超链接点击没反应了!!!给其他地方加的click事件也不触发了!!!之后继续百度,得知当在移动端上点击屏幕时,会依次触发touchstart,touchmove,touchend,click事件。之后测试了一下,发现正确的触发过程应该是:touchstart→touchmove→touchend或者touchstart→touchend→click。如果在点击屏幕的时候手指滑动的话,是不会触发click事件的。参考地址:上面说event.preventDefault()的方法,会阻止事件的默认行为。可以通过调用preventDefault()方法,可以阻止后面事件的触发。我知道event.preventDefault()会阻止a标签默认的动作(跳转到href指定的页面),但是为什么click也不触发了呢?之后我大胆推测了一下:会不会是因为在移动端click事件的触发条件就是必须touchstart和touchend同时触发才能触发click呢?我在touchstart中调用了event.preventDefault方法,是不是让浏览器误以为没有触发touchstart事件,只触发了touchend事件,所以没有触发click事件呢?之后我删除了touchstart中的event.preventDefault方法,果然超链接和click事件都触发了,但是前面说的问题又出现了,在QQ和微信中touchmove和touchend又出问题了。怎么办呢?后来突然脑袋灵光一闪,既然在touchstart中加了event.preventDefault会导致不触发click事件,那我在touchmove中加可以吧?抱着试一试的心态,果然好了,click能顺利触发,QQ和微信中也没有问题,我以为这样就好了,但是为什么页面不能滚动了?原来touchmove中添加event.preventDefault方法之后会阻止浏览器默认的滚动。。。所以页面无法滚动了,之后又去找找找,找了很久一直没找到怎么解决这个问题,突然想起之后用的一个移动端的图片轮播插件,为什么他们可以左右滑动,不影响click事件和a标签,也不影响页面的滚动。然后我打开了这个插件的源码,终于在touchmove中找到了答案在touchmove中有这样一段代码(下面是我自己抄过来简化过的):var w = x&0?x*-1:x;
//x轴的滑动值
var h = y&0?y*-1:y;
//y轴的滑动值
//如果是在x轴中滑动
event.preventDefault();
}就是在touchmove中判断x轴和y轴的移动值,判断当前是往哪个方向滑动,如果是在x轴上滑动(左右),就调用event.preventDefault()方法,如果是在y轴上滑动(上下),就不调用event.preventDefault()。然后测试一下,QQ和微信中特效没有问题,click事件和a标签链接也可以顺利触发,页面滚动也没有问题。所有问题终于解决了。。 总结一下:在QQ和微信(当然还包括其他浏览器,不过我没测试过)中如果有需要用到touch事件做的特效一定要在touchstart或者touchmove中添加event.preventDefault()方法。在touchstart中如果有event.preventDefault()方法, 将不会触发click事件和a标签方法。在这里可以使用tap代替click,但是a标签的话就不太方便了。如果在touchmove中有event.preventDefault()方法,最好加上方向判断,当然如果你页面内容不需要滚动条就不需要加判断了。
作者:baidu_ 发表于
https://blog.csdn.net/baidu_/article/details/
https://blog.csdn.net/baidu_/article/details/
https://blog.csdn.net/baidu_/article/details/
1.1 Maven 简介
Apache Maven 是一个项目构建工具。基于项目对象模型的概念,Maven可用来管理项目的依赖、编译、文档等信息。
使用Maven管理项目时,项目依赖的jar包将不再包含在项目内,而是集中放置在用户目录的.m2文件夹下。
1.2 Maven 安装
1、下载Maven
根据操作系统下载正确的Maven版本,并解压到任意目录。
Maven下载地址:http://maven.apache.org/download.cgi。
2、配置Maven
在系统属性——&高级——&环境变量中分别配置M2_HOME 和 Path,如下图图所示。
3、测试安装
在控制台输入“mvn -v”,获得下图所示信息表示安装成功。
1.3 Maven 的pom.xml
Maven 是基于项目对象模型的概念运作的,所以Maven的项目都有一个pom.xml用来管理项目的依赖以及项目的编译功能。
在我们的项目中,我们主要关注下面的元素。
dependencies 元素
&dependencies&&/dependencies&,此元素包含多个项目依赖需要使用的 &dependency&&/dependency&。
2. dependency 元素
&dependency&&/dependency&内部通过groupId、artifactId以及version确定唯一的依赖,有人称这三个为坐标,代码如下。
groupId:组织的唯一标识。
artifactId:项目的唯一标识。
version:项目的版本。
&dependency&
&groupId&org.springframework
&artifactId&spring-webmvc&artifactId&
&version&4.1.5.RELEASE&/version&
&/dependency&
3. 变量定义
变量定义:&properties&&/properties&可定义变量在dependency中引用,代码如下。
&dependency&
&groupId&org.springframework
&artifactId&spring-webmvc&artifactId&
&version&4.1.5.RELEASE&/version&
&/dependency&
4. 编译插件
Maven 提供了编译插件,可在编译插件中涉及java的编译级别,代码如下。
&groupId&org.apache.maven.plugins&/groupId&
&artifactId&maven-compiler-plugin&/artifactId&
&version&2.3.2&/version&
&configuration&
&source&1.7&/source&
&target&1.7&/target&
&/configuration&
&/plugins&
&/plugins& &/build&
5. Maven 运作方式
Maven 会自动根据dependency中的依赖配置,直接通过互联网在Maven中心库下载相关依赖包到.m2目录下,.m2目录下是你本地Maven库。
如果你不知道你所依赖jar包的dependency怎么写的话,推荐到http://mvnrepository.com网站检索。
若Maven中心库中没有你需要的jar包(如Oracle),你需要通过下面的Maven命令打到本地Maven库后应用即可,如安装Oracle驱动到本地库:
mvn install:install-file -DgroupId=com.oracle "-DartifactId=ojdbc14"
"Dversion=10.2.0.2.0" "-Dpackaging=jar" "-Dfile=D:\ojdbc14.jar"
作者:baidu_ 发表于
https://blog.csdn.net/baidu_/article/details/
https://blog.csdn.net/baidu_/article/details/
https://blog.csdn.net/baidu_/article/details/
public class LocationUtils {
private static double EARTH_RADIUS = ;
private static double rad(double d) {
return d * Math.PI / 180.0;
* 通过经纬度获取距离(单位:米)
* @param lat1
* @param lng1
* @param lat2
* @param lng2
* @return 距离
public static double getDistance(double lat1, double lng1, double lat2,
double lng2) {
double radLat1 = rad(lat1);
double radLat2 = rad(lat2);
double a = radLat1 - radLat2;
double b = rad(lng1) - rad(lng2);
double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2)
+ Math.cos(radLat1) * Math.cos(radLat2)
* Math.pow(Math.sin(b / 2), 2)));
s = s * EARTH_RADIUS;
s = Math.round(s * 10000d) / 10000d;
s = s * 1000;
public static void main(String[] args) {
double distance = getDistance(34., 108.,
34., 108.);
System.out.println("距离" + distance / 1000 + "公里");
作者:baidu_ 发表于
https://blog.csdn.net/baidu_/article/details/
https://blog.csdn.net/baidu_/article/details/
https://blog.csdn.net/baidu_/article/details/
$(".check").prop("checked", false);
$(".check").prop("checked", true);
// 所有check循环 value为checked对象,key键值
$('.check').each(function(key,value){
//选中checkbox 触发事件
$("#type").change(function() {
// 禁止操作 checkbox
$("#style option[value='2']").prop("selected", false); // 可以操作
$("#style option[value='2']").prop("selected", true); // 禁止操作
// checkbox 设置option选中
$("#style").find("option[value='2']").attr("selected",true);
作者:baidu_ 发表于
https://blog.csdn.net/baidu_/article/details/
https://blog.csdn.net/baidu_/article/details/
https://blog.csdn.net/baidu_/article/details/
maven install是将你的maven项目按照packaging属性打包为制定类型到本地仓库中。maven package是将打包文件放在项目target文件目录下。
如果b项目依赖a项目,而a打了包(package).jar仅仅时打到了a项目的target下。这时编译b项目,还是会报错,找不到所依
赖的a项目,说明b项目在本地仓库是没有找到它所依赖的a项目。然后,我install a项目这时,有以下日志
[INFO] Installing G:\projects\a\target\a-0.0.1-SNAPSHOT.jar to F:\repository\com\0.0.1-SNAPSHOT\a-0.0.1-SNAPSHOT.jar
[INFO] Installing G:\projects\a\pom.xml to F:\repository\com\chenjun\a\0.0.1-SNAPSHOT\a-0.0.1-SNAPSHOT.pom,
说明a项目已安装到本地仓库了,并且是jar和pom同时安装的,这时候去compileb项目,编译通过.
总之,package是把jar打到本项目的target下,而install时把target下的jar安装到本地仓库,供其他项目使用.
作者:baidu_ 发表于
https://blog.csdn.net/baidu_/article/details/
https://blog.csdn.net/baidu_/article/details/
https://blog.csdn.net/baidu_/article/details/
项目中瓦片资源越来越多,如果提高瓦片的访问效率是一个需要解决的问题。这里,我们考虑使用Nginx来代理静态资源进行初步解决。
2.Nginx简介
Nginx ("engine x") 是一个高性能的和服务器,也是一个IMAP/POP3/SMTP。Nginx是由Igor
Sysoev为访问量第二的Rambler.ru站点开发的。
何为反向代理呢?即以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
而Nginx主要完成的工作就是反向代理,比如我们向一台服务器的80端口发送了请求,该请求首先由Nginx监听到,其接受到请求内容后再转发给其他服务器,其他服务器处理完后再将结果传送给Nginx,最后由Nginx来统一返回给初始请求端。
Nginx最常见的使用方法就是作为静态资源伺服器,比如将CSS,JS,html,htm等文件进行缓存处理。
3.环境搭建
首先在官网中下载所需版本:。目前我使用的版本是windows环境下的1.13.6。
下载完毕后,解压。
3.2开启Nginx
开启Nginx有两种方法,一种是直接点击开启,一种是命名行开启。
a.点击开启:
b.命名行开启:
此时我们打开任务管理器,可以看到两个nginx.exe在那里好好的。
3.3常见问题—启动失败
出现启动失败问题,一般是端口冲突问题,比如win7下的IIS已经启动并占用了80端口。在config目录下找到nginx.conf,打开文件进行如下修改:
4.初步使用
4.1用网页测试是否启动成功
其中的配置为:
其表示监听8010端口请求后,会首先去html文件夹下寻找index.html页面。
4.2详解部分参数含义
这段代码在server里面,相当于一个代理服务器,当然可以配置多个。
下面我们仔细来分析一下:
listen:表示当前的代理服务器监听的端口,默认的是监听80端口。
注意,如果我们配置了多个server,这个listen要配置不一样,不然就不能确定转到哪里去了。
server_name:表示监听到之后需要转到哪里去,这时我们直接转到本地,这时是直接到nginx文件夹内。
location:表示匹配的路径,这时配置了/表示所有请求都被匹配到这里
root:里面配置了root这时表示当匹配这个请求的路径时,将会在这个文件夹内寻找相应的文件,这里对我们之后的静态文件伺服很有用。
index:当没有指定主页时,默认会选择这个指定的文件,它可以有多个,并按顺序来加载,如果第一个不存在,则找第二个,依此类推。
下面的error_page是代表错误的页面
4.3配置tomcat跳转
通过proxy_pass配置请求转发地址。即当访问localhost的8010端口时,请求会跳转至localhost的8080端口处。
修改完Nginx的配置后不需要重启Nginx,输入如下命令即可:
测试如下:
5.进一步使用
5.1静态文件分离配置
上面我们直接试了一个小例子,让nginx进行转发,即所谓的反向代理。但实际上我们的需求不会是这样的,我们需要分文件类型来进行过滤,比如jsp直接给tomcat处理,因为nginx并不是servlet容器,没办法处理JSP,而html,js,css这些不需要处理的,直接给nginx进行缓存。
下面我们来进行一下配置,让JSP页面直接给tomcat,而html,png等一些图片和JS等直接给nginx进行缓存。
这时最主要用的还是location这个元素,并且涉及到一部分正则,但不难,具体配置如下:
此时再直接输入localhost:8010,显示找不到请求页面。
但是输入localhost:8010/index.jsp,则会跳转到项目页面
5.2 负载配置
当一台服务器出现故障后,我们需要将请求自动转向另一台服务器,此种需求该如何配置呢?利用Nginx也是比较方便能够实现,具体配置如下:
到此配置完成,下面开始演示负载均衡。
5.4关闭Nginx
注意:每次修改完nginx.conf配置文件,输入 nginx -s reload 重新加载配置文件。
作者:baidu_ 发表于
https://blog.csdn.net/baidu_/article/details/
https://blog.csdn.net/baidu_/article/details/
https://blog.csdn.net/baidu_/article/details/
Eclipse --& Project Explorer --& 左边模块,点击三角形,下拉 --& Customize View... --& Empty packages (勾选)
作者:baidu_ 发表于
https://blog.csdn.net/baidu_/article/details/
https://blog.csdn.net/baidu_/article/details/
https://blog.csdn.net/baidu_/article/details/
import java.util.HashM
import java.util.M
import net.sf.json.JSONO
import com.google.gson.G
import com.google.gson.JsonO
* JSON数据处理
* @author zhaojunchang
public class Json {
static String jsonStr =
JSONObject json = new JSONObject();
json.put("aa", "11");
json.put("bb", "22");
json.put("cc", "33");
json.put("dd", "44");
jsonStr = json.toString();
* json字符串转Map
@SuppressWarnings("unchecked")
public static Map&String, String& jsonToMap(String jsonstr) {
Map&String, String& map = new HashMap&String, String&();
if (jsonstr == null) {
Gson gson = new Gson();
map = gson.fromJson(jsonstr, map.getClass());
* map转json
public static JSONObject mapToJson(Map&String, Object& map) {
JSONObject jsonObject = JSONObject.fromObject(map);
return jsonO
public static void main(String[] args) {
Map map2 = new HashMap();
map2.put("name", "json");
map2.put("bool", Boolean.TRUE);
map2.put("int", new Integer(1));
map2.put("arr", new String[] { "a", "b" });
map2.put("func", "function(i){return this.arr[i]}");
Map map = new HashMap();
map.put("name", map2);
map.put("bool", map2);
map.put("int", map2);
map.put("arr", map2);
map.put("func", map2);
Map&String,Map& map3 = mapToJson(map);
System.out.println(map3.get("arr"));
作者:baidu_ 发表于
https://blog.csdn.net/baidu_/article/details/
https://blog.csdn.net/baidu_/article/details/
https://blog.csdn.net/baidu_/article/details/
import java.io.BufferedR
import java.io.IOE
import java.io.InputStreamR
import java.io.OutputS
import java.net.HttpURLC
import java.net.MalformedURLE
import java.net.URL;
public class HttpURLConnectionUtil {
public static void sendGet() {
String path = "http://localhost/news/getlist";
// 1. 得到访问地址的URL
URL url = new URL(path);
// 2. 得到网络访问对象java.net.HttpURLConnection
HttpURLConnection connection = (HttpURLConnection) url
.openConnection();
/* 3. 设置请求参数(过期时间,输入、输出流、访问方式),以流的形式进行连接 */
// 设置是否向HttpURLConnection输出
connection.setDoOutput(false);
// 设置是否从httpUrlConnection读入
connection.setDoInput(true);
// 设置请求方式
connection.setRequestMethod("GET");
// 设置是否使用缓存
connection.setUseCaches(true);
// 设置此 HttpURLConnection 实例是否应该自动执行 HTTP 重定向
connection.setInstanceFollowRedirects(true);
// 设置超时时间
connection.setConnectTimeout(3000);
connection.connect();
// 4. 得到响应状态码的返回值 responseCode
int code = connection.getResponseCode();
// 5. 如果返回值正常,数据在网络中是以流的形式得到服务端返回的数据
String msg = "";
if (code == 200) { // 正常响应
// 从流中读取响应信息
BufferedReader reader = new BufferedReader(
new InputStreamReader(connection.getInputStream()));
String line =
while ((line = reader.readLine()) != null) { // 循环从流中读取
msg += line + "\n";
reader.close(); // 关闭流
// 6. 断开连接,释放资源
connection.disconnect();
// 显示响应结果
System.out.println(msg);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
public static void sendPOST() {
// 1. 获取访问地址URL
URL url = new URL("http://localhost/news/getlist");
// 2. 创建HttpURLConnection对象
HttpURLConnection connection = (HttpURLConnection) url
.openConnection();
/* 3. 设置请求参数等 */
// 请求方式
connection.setRequestMethod("POST");
// 超时时间
connection.setConnectTimeout(3000);
// 设置是否输出
connection.setDoOutput(true);
// 设置是否读入
connection.setDoInput(true);
// 设置是否使用缓存
connection.setUseCaches(false);
// 设置此 HttpURLConnection 实例是否应该自动执行 HTTP 重定向
connection.setInstanceFollowRedirects(true);
// 设置使用标准编码格式编码参数的名-值对
connection.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
connection.connect();
/* 4. 处理输入输出 */
// 写入参数到请求中
String params = "pageSize=1";
OutputStream out = connection.getOutputStream();
out.write(params.getBytes());
out.flush();
out.close();
// 从连接中读取响应信息
String msg = "";
int code = connection.getResponseCode();
if (code == 200) {
BufferedReader reader = new BufferedReader(
new InputStreamReader(connection.getInputStream()));
while ((line = reader.readLine()) != null) {
msg += line + "\n";
reader.close();
// 5. 断开连接
connection.disconnect();
// 处理结果
System.out.println(msg);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
public static void main(String[] args) {
sendGet();
sendPOST();
作者:baidu_ 发表于
https://blog.csdn.net/baidu_/article/details/
https://blog.csdn.net/baidu_/article/details/
https://blog.csdn.net/baidu_/article/details/
import java.sql.T
import java.text.ParseE
import java.text.SimpleDateF
import java.util.C
import java.util.D
import java.util.HashM
import java.util.M
* 取得标准格式日期和时间
* @author zhaojunchang
public class DateFormat {
/** 缺省日期格式 */
public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";
/** 缺省时间格式 */
public static final String DEFAULT_TIME_FORMAT = "HH:mm:ss";
/** 缺省月格式 */
public static final String DEFAULT_MONTH = "MONTH";
/** 缺省年格式 */
public static final String DEFAULT_YEAR = "YEAR";
/** 缺省日格式 */
public static final String DEFAULT_DATE = "DAY";
/** 缺省小时格式 */
public static final String DEFAULT_HOUR = "HOUR";
/** 缺省分钟格式 */
public static final String DEFAULT_MINUTE = "MINUTE";
/** 缺省秒格式 */
public static final String DEFAULT_SECOND = "SECOND";
/** 缺省长日期格式 */
public static final String DEFAULT_DATETIME_FORMAT = "yyyy-MM-dd HH-mm";
/** 缺省长日期格式,精确到秒 */
public static final String DEFAULT_DATETIME_FORMAT_SEC = "yyyy-MM-dd HH:mm:ss";
/** 星期数组 */
public static final String[] WEEKS = { "星期日", "星期一", "星期二", "星期三", "星期四",
"星期五", "星期六" };
* 取当前日期的字符串表示
* @return 当前日期的字符串 ,如
public static String today() {
return today(DEFAULT_DATE_FORMAT);
* 根据输入的格式得到当前日期的字符串
* @param strFormat
public static String today(String strFormat) {
return toString(new Date(), strFormat);
* 取当前时间的字符串表示,
* @return 当前时间,如:21:10:12
public static String currentTime() {
return currentTime(DEFAULT_TIME_FORMAT);
* 根据输入的格式获取时间的字符串表示 'hh:mm:ss'
* @return 当前时间,如:21:10:12
public static String currentTime(String strFormat) {
return toString(new Date(), strFormat);
* 取得相对于当前时间增加天数/月数/年数后的日期 &br&
* 欲取得当前日期5天前的日期,可做如下调用:&br&
* getAddDay("DATE", -5).
* @param field
,段,如"year","month","date",对大小写不敏感
* @param amount
,增加的数量(减少用负数表示),如5,-1
* @return 格式化后的字符串 如""
* @throws ParseException
public static String getAddDay(String field, int amount)
throws ParseException {
return getAddDay(field, amount, null);
* 取得相对于当前时间增加天数/月数/年数后的日期,按指定格式输出
* 欲取得当前日期5天前的日期,可做如下调用:&br&
* getAddDay("DATE", -5,'yyyy-mm-dd hh:mm').
* @param field
,段,如"year","month","date",对大小写不敏感
* @param amount
,增加的数量(减少用负数表示),如5,-1
* @param strFormat
,输出格式,如"yyyy-mm-dd","yyyy-mm-dd hh:mm"
* @return 格式化后的字符串 如""
* @throws ParseException
public static String getAddDay(String field, int amount, String strFormat)
throws ParseException {
return getAddDay(null, field, amount, strFormat);
* 功能:对于给定的时间增加天数/月数/年数后的日期,按指定格式输出
* @param date
String 要改变的日期
* @param field
int 日期改变的字段,YEAR,MONTH,DAY
* @param amount
int 改变量
* @param strFormat
日期返回格式
* @throws ParseException
public static String getAddDay(String date, String field, int amount,
String strFormat) throws ParseException {
if (strFormat == null) {
strFormat = DEFAULT_DATETIME_FORMAT_SEC;
Calendar rightNow = Calendar.getInstance();
if (date != null && !"".equals(date.trim())) {
rightNow.setTime(parseDate(date, strFormat));
if (field == null) {
return toString(rightNow.getTime(), strFormat);
rightNow.add(getInterval(field), amount);
return toString(rightNow.getTime(), strFormat);
* 获取时间间隔类型
* @param field
时间间隔类型
* @return 日历的时间间隔
protected static int getInterval(String field) {
String tmpField = field.toUpperCase();
if (tmpField.equals(DEFAULT_YEAR)) {
return Calendar.YEAR;
} else if (tmpField.equals(DEFAULT_MONTH)) {
return Calendar.MONTH;
} else if (tmpField.equals(DEFAULT_DATE)) {
return Calendar.DATE;
} else if (DEFAULT_HOUR.equals(tmpField)) {
return Calendar.HOUR;
} else if (DEFAULT_MINUTE.equals(tmpField)) {
return Calendar.MINUTE;
return Calendar.SECOND;
* 获取格式化对象
* @param strFormat
格式化的格式 如"yyyy-MM-dd"
* @return 格式化对象
public static SimpleDateFormat getSimpleDateFormat(String strFormat) {
if (strFormat != null && !"".equals(strFormat.trim())) {
return new SimpleDateFormat(strFormat);
return new SimpleDateFormat();
* 得到当前日期的星期数
* @return 当前日期的星期的字符串
* @throws ParseException
public static String getWeekOfMonth() throws ParseException {
return getWeekOfMonth(null, null);
* 根据日期的到给定日期的在当月中的星期数
* @param date
* @throws ParseException
public static String getWeekOfMonth(String date, String fromat)
throws ParseException {
Calendar rightNow = Calendar.getInstance();
if (date != null && !"".equals(date.trim())) {
rightNow.setTime(parseDate(date, fromat));
return WEEKS[rightNow.get(Calendar.WEEK_OF_MONTH)];
* 将java.util.date型按照指定格式转为字符串
* @param date
* @param format
想得到的格式字符串
* @return 如:
public static String toString(Date date, String format) {
return getSimpleDateFormat(format).format(date);
* 将java.util.date型按照缺省格式转为字符串
* @param date
* @return 如:
public static String toString(Date date) {
return toString(date, DEFAULT_DATE_FORMAT);
* 强制类型转换 从串到日期
* @param sDate
源字符串,采用yyyy-MM-dd格式
* @param sFormat
* @return 得到的日期对象
* @throws ParseException
public static Date parseDate(String strDate, String format)
throws ParseException {
return getSimpleDateFormat(format).parse(strDate);
* 根据传入的毫秒数和格式,对日期进行格式化输出
* @version
* @param object
* @param format
public static String millisecondFormat(Long millisecond, String format) {
if (millisecond == null || millisecond &= 0) {
throw new IllegalArgumentException(String.format("传入的时间毫秒数[%s]不合法",
"" + millisecond));
if (format == null || "".equals(format.trim())) {
format = DEFAULT_DATE_FORMAT;
return toString(new Date(millisecond), format);
* 强制类型转换 从串到时间戳
* @param sDate
* @param sFormat
* @return 取得的时间戳对象
* @throws ParseException
public static Timestamp parseTimestamp(String strDate, String format)
throws ParseException {
Date utildate = getSimpleDateFormat(format).parse(strDate);
return new Timestamp(utildate.getTime());
* getCurDate 取当前日期
* @return java.util.Date型日期
public static Date getCurDate() {
return (new Date());
* getCurTimestamp 取当前时间戳
* @return java.sql.Timestamp
public static Timestamp getCurTimestamp() {
return new Timestamp(new Date().getTime());
* getCurTimestamp 取遵循格式的当前时间
* @param sFormat
* @return java.sql.Timestamp
public static Date getCurDate(String format) throws Exception {
return getSimpleDateFormat(format).parse(toString(new Date(), format));
* Timestamp按照指定格式转为字符串
* @param timestamp
* @param format
ps(如yyyy.mm.dd)
* @return 如: 或 13:21
public static String toString(Timestamp timestamp, String format) {
if (timestamp == null) {
return "";
return toString(new Date(timestamp.getTime()), format);
* Timestamp按照缺省格式转为字符串
* @param ts
* @return 如:
public static String toString(Timestamp ts) {
return toString(ts, DEFAULT_DATE_FORMAT);
* Timestamp按照缺省格式转为字符串,可指定是否使用长格式
* @param timestamp
欲转化之变量Timestamp
* @param fullFormat
是否使用长格式
* @return 如: 或 21:21
public static String toString(Timestamp timestamp, boolean fullFormat) {
if (fullFormat) {
return toString(timestamp, DEFAULT_DATETIME_FORMAT_SEC);
return toString(timestamp, DEFAULT_DATE_FORMAT);
* 将sqldate型按照指定格式转为字符串
* @param sqldate
* @param sFormat
* @return 如: 或 00:00
public static String toString(java.sql.Date sqldate, String sFormat) {
if (sqldate == null) {
return "";
return toString(new Date(sqldate.getTime()), sFormat);
* 将sqldate型按照缺省格式转为字符串
* @param sqldate
* @return 如:
public static String toString(java.sql.Date sqldate) {
return toString(sqldate, DEFAULT_DATE_FORMAT);
* 计算日期时间之间的差值, date1得时间必须大于date2的时间
* @version
* @param date1
* @param date2
* @return {@link java.util.Map} Map的键分别为, day(天),
hour(小时),minute(分钟)和second(秒)。
public static Map&String, Long& timeDifference(final Date date1,
final Date date2) {
if (date1 == null || date2 == null) {
throw new NullPointerException("date1 and date2 can't null");
long mim1 = date1.getTime();
long mim2 = date2.getTime();
if (mim1 & mim2) {
throw new IllegalArgumentException(String.format(
"date1[%s] not be less than date2[%s].", mim1 + "", mim2
long m = (mim1 - mim2 + 1) / 1000l;
long mday = 24 * 3600;
final Map&String, Long& map = new HashMap&String, Long&();
map.put("day", m / mday);
map.put("hour", (m) / 3600);
map.put("minute", (m % 3600) / 60);
map.put("second", (m % 3600 % 60));
public static Map&String, Integer& compareTo(final Date date1,
final Date date2) {
if (date1 == null || date2 == null) {
long time1 = date1.getTime();
long time2 = date2.getTime();
long time = Math.max(time1, time2) - Math.min(time1, time2);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(time);
Map&String, Integer& map = new HashMap&String, Integer&();
map.put("year", (calendar.get(Calendar.YEAR) - 1970) & 0 ? (calendar
.get(Calendar.YEAR) - 1970) : 0);
map.put("month", (calendar.get(Calendar.MONTH) - 1) & 0 ? (calendar
.get(Calendar.MONTH) - 1) : 0);
map.put("day",
(calendar.get(Calendar.DAY_OF_MONTH) - 1) & 0 ? (calendar
.get(Calendar.DAY_OF_MONTH) - 1) : 0);
map.put("hour",
(calendar.get(Calendar.HOUR_OF_DAY) - 8) & 0 ? (calendar
.get(Calendar.HOUR_OF_DAY) - 8) : 0);
map.put("minute", calendar.get(Calendar.MINUTE) & 0 ? calendar
.get(Calendar.MINUTE) : 0);
map.put("second", calendar.get(Calendar.SECOND) & 0 ? calendar
.get(Calendar.SECOND) : 0);
public static void main(String[] args) {
System.out.println(today());
作者:baidu_ 发表于
https://blog.csdn.net/baidu_/article/details/
https://blog.csdn.net/baidu_/article/details/
https://blog.csdn.net/baidu_/article/details/
如果每天都有86400元进入你的银行户头,而你必须当天用光,你会如何运用这笔钱?
天下真有这样的好事吗?
是的,而且这种好事每天都在发生着,你真的有这样一个户头,那就是“时间”。每天每一个人都会有新的86400秒进账,而这86400秒的价值要远远的大于86400元.那么,面对这样的一大笔财富。你打算怎样利用它们呢?
其实吧,我并不知道你是如何利用它们,但我知道我自己是如何利用的,下面把我的一些时间管理经历和大家分享.
今天是 ,是我来到这个世界上的第9142天.
关于时间管理的概念理解,我是在大学二年级的某一天通过百度百科所学习到的.因为在那之前自己也经常的听到时间管理这个,时间管理那个,不过貌似它们都和我没有关系,因为那之前正处于大学的"逍遥时期",每天的时间都很"充裕",根本不需要什么管理.如果你经历大学的生活的话,你应该懂得我所说的指的是什么.
但是命运注定每个人都会有一个人生的转折.当我进入一个新的集体,新的环境(提高班)的时候,突然发现自己的时间是多么的匮乏,那么多的学习任务,那么多的要做的事情,可一天下来剩下给自己的还是那么多的乱糟糟.于是我给自己提出了一个命题:"我的时间应该如何管理?"
命题有了,于是开始找各种理论,各种工具,并加以实践.其实我个人觉得时间管理并不是一件简单的事情.在早期时候我认为的时间管理是一场持久的"战争",而且大部分的时候自己都是战败者,被自己的懒惰,被自己的拖延,被自己的缺乏行动一次次的打败,而那些所谓的"计划安排"都被束之高阁.
这种现象很让我头疼,我的目的是为了管理时间,怎么管理管理着反而越来越乱了呢?于是又开始反思,找问题产生的原因,找网络上的一些大牛们向他们请教.经过一番"折腾"终于在2010年10月26日找到了问题的所在:时间是我管理不了的,我管理的应该是自己.真正的敌人不是"时间",而是我自己.
原来时间一直都留在那里,而流逝的是我们自己.
于是重新给自己提出命题:"在有限的时间内,我应该如何去管理我自己?".
2010年10月26日对我来说是一个值得纪念的日子.这天似乎有点顿悟的感觉.让我由原先的被动转变为主动,时间由原来的"敌人"变成现在的朋友.而真正的敌人我已经锁定,就是我自己身上的那些缺点:懒惰,拖延,不行动.
又一场战争开始了.从2010年10月26日开始用实际行动来和那些敌人宣战.于是便有了我现在的晨间日记.有了我现在的自我管理体系.到今天为止晨间日记已经坚持了366篇,整整一年的时间,但是从我开始写到现在有533天.这么一算366/533=0.6866,这表明着我的胜算概率大过一半了.而那些167天由于各种原因:放假回家,状态不佳,外出,没有电脑写的环境,懒惰,拖延等等......但从宏观上看,我已经开始慢慢的掌握主动权了.能够更好的把控自己.关于晨间日记具体的内容可以参阅这本书.
接下来和大家分享一下我个人是如何与时间相处的.这里先说明一下,以下的时间管理方式并不是一开始就这么做的,而是经过了两年左右的时间,尝试过各种方式,各种软件和理念,也经历了各种失败,最终按照自己的特点形成自己的时间管理体系,并不一定适合每一个人,这里作为分享,希望大家共同学习和提高并指出我体系中所出现的不足指出进行指点.
现在指导我时间管理的核心理念为GTD(Get
Things Done),它的最高目标是让个人能够达到心止如水的境界.主要的原则是把自己的脑子中的各种东西(包括想法,计划,任务等等)转移出来,集中精力去做正在做的事情,达到高效的工作方法.
GTD的基本步骤可以分为收集,整理,组织,行动,回顾.核心流程可以参考下图:
以上的解释和图的介绍比较概括和抽象,我接下来结合我自己的实际情况对整个的流程进行介绍.
我的工作学习场所(大部分时间在计算机面前);
我所用到的硬件:(笔记本一台,智能手机一部);
我所用到的软件:(OneNote,Google Calander,OutLook,Wakoopa);
第一步:收集(OneNote+OutLook)
每天我会在早晨八点到八点半的时间用半个小时用OneNote来写晨间日记,在晨间日记中专门有一个模块叫做今日目标,这里是我最主要的Inbox之一.
OneNote晨间日记中的Inbox.
如果有其他的想法,则直接添加在此模块中.填完之后选中所有事项,按住快捷键Ctrl+Shift+1则会在每个事项前面添加一个小旗,表示今天事项的意思(当然还可以选择其他的小旗,明天,后天,下一周等等)当出现小旗的同时,这些事项会同步的出现在你的OutLook之中.
当然也可以在Outlook中直接写入你的事项.这里的Inbox里面的事项主要是今天的,如果纯粹的想法和没有规律的事项可以放入不显示日记的Inbox中.到这里收集的工作基本结束.
第二步:整理
将这些事项(Stuff)放入inbox中后要化一些时间对其进行整理,我个人是在写完晨间日记之后开始对其进行整理,并对这些事项和想法进行分类,分类的方式是按照史蒂芬柯维所写的中建议的分类方式进行,能够更好的掌控个人生活的平衡.例如我吧事项4归类为英语,并标记为重要不紧急.
事项4小旗的前面就会添加两个小方框(当然颜色和分类的名称可以自定义命名)
第三步:组织(核心步骤)
分好类,并对每件事请进行轻重缓急的安排,剩下的就是对其进行组织和规划.对事件的性质进行分析.首先先坚持两分钟原则,如果这件事情能在两份中做完,好,那就立刻去做,如果两份中做不完?
1推迟.可以安排到具体的日历中,作为代办事项.
2委托.需要交给别人事项.
3项目.安排项目计划.
在这里是一天安排的重要开始,在Outlook中可以把事项直接拖到日历中,并对其进行编辑,安排,如下图
在这里需要说明一下,由于这些事项和日历对自己的反思和回顾有很大的作用和帮助,为了能够更好的保存这笔财富.建议将这些日历同步到网络上,这里推荐GoogleCalander.注册账号之后通过一个同步软件可以对本地的日历进行同步,同步软件相当于备份的作用,当然GoogleCalander有着更丰富的提醒方式和功能,这也是用它的一个方面,缺点是必须在有网络的情况下才能用,所以我自己认为OutLook+GoogleCalander是个不错的选择,推荐.
第四步:行动
经过上面的步骤,你可以按照日程表或者清单开始行动了.而行动是整个GTD中最关键的一步,因为好多人都在这里停止了脚步.而影响行动的主要因素可以抽象为两个:内因干扰,外因干扰.在这里推荐使用.行动只能用行动去证明,再多的理论和思想,如果不行动那都成了浮云.
第五步:回顾
关于这最后一步也不不可缺失的一环,在回顾的过程中可以看到我们这一天都做了什么?那些计划受到打扰?自己的时间浪费在哪里?在执行的过程中又有什么问题?下一步应该如何去做的更好?我会在每天的晚上,以及周一的上午,一个月的最后一天,一年结束的时候会对自己进行回顾和分析整理.采取的方式有两个.
1再给自己一个日历,晚上花上十分钟的时间把这一天做什么事情安排到另一个日历,并和自己的计划进行对比,从中发现问题.如果在一个日历上进行更改的话会感觉比较乱.建议用两个日历.如下图,可以随意切换视角,这是google支持多日历所展现的功能,可以用实际的情况去看自己计划的事项.并总结和反思.
时间追踪软件:因为我主要的工作学习环境是在电脑面前,所以大部分的时间都是在和电脑,具体来说就是各种应用程序打交道.在这里推荐一个电脑时间追踪软件,(需要注册)它可以追踪你一天电脑在那个应用程序上花费的时间比较多,并且会对你的应用程序进行分析介绍同类的软件.非常不错.如下图:
最后可以在自己的晨间日记里把一天的总结和收获记录在其中,作为一笔珍贵的财富保留起来.
至此为止,整个GTD的一个流程结束.读者或许觉得上面的流程有些复杂,刚开始接触是有一些,不过等学会并把它作为自己的习惯之后它给你带来的收益要远远的大于你去学它和用它的成本.
ps:上面所提到的软件和书籍点击链接可直接下载,希望这些内容能给读者带来一些帮助.
转载:http://blog.csdn.net/jnqqls/article/details/7450899
作者:baidu_ 发表于
https://blog.csdn.net/baidu_/article/details/
https://blog.csdn.net/baidu_/article/details/
https://blog.csdn.net/baidu_/article/details/
Java 关于时间日期的处理有两个基础类 Calendar 和 Date 。
Calendar 有子类 GregorianCalendar ;
Date 有子类 (java.sql.Date,java.sql.Time,java.sql.Timestamp)
在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不便于实现国际化,所以从JDK1.1版本开始,推荐使用Calendar类进行时间和日期处理。这里简单介绍一下Date类的使用。
1、使用Date类代表当前系统时间
Date d = new Date();
System.out.println(d);
使用Date类的默认构造方法创建出的对象就代表当前时间,由于Date类覆盖了toString方法,所以可以直接输出Date类型的对象,显示的结果如下:
Sun Mar 08 16:35:58 CST 2009
在该格式中,Sun代表Sunday(周日),Mar代表March(三月),08代表8号,CST代表China
Standard Time(中国标准时间,也就是北京时间(东八区))。
2、使用Date类代表指定的时间
Date d1 = new Date(-1,9);
System.out.println(d1);
使用带参数的构造方法,可以构造指定日期的Date类对象,Date类中年份的参数应该是实际需要代表的年份减去1900,实际需要代表的月份减去1以后的值。例如上面的示例代码代表就是2009年3月9号。
实际代表具体的年月日时分秒的日期对象,和这个类似。
3、获得Date对象中的信息
Date d2 = new Date();
int year = d2.getYear() + 1900;
int month = d2.getMonth() + 1;
int date = d2.getDate();
int hour = d2.getHours();
int minute = d2.getMinutes();
int second = d2.getSeconds();
int day = d2.getDay();
System.out.println("年份:" + year);
System.out.println("月份:" + month);
System.out.println("日期:" + date);
System.out.println("小时:" + hour);
System.out.println("分钟:" + minute);
System.out.println("秒:" + second);
System.out.println("星期:" + day);
使用Date类中对应的get方法,可以获得Date类对象中相关的信息,需要注意的是使用getYear获得是Date对象中年份是减去1900以后的值,所以需要显示对应的年份则需要在返回值的基础上加上1900,月份类似。在Date类中还提供了getDay方法,用于获得Date对象代表的时间是星期几,Date类规定周日是0,周一是1,周二是2,后续的依次类推。
4、Date对象和相对时间之间的互转
Date d3 = new Date(-1,10);
long time = 0L;
//将Date类的对象转换为相对时间
long t = d3.getTime();
System.out.println(t);
//将相对时间转换为Date类的对象
Date d4 = new Date(time);
System.out.println(d4);
使用Date对象中的getTime方法,可以将Date类的对象转换为相对时间,使用Date类的构造方法,可以将相对时间转换为Date类的对象。经过转换以后,既方便了时间的计算,也使时间显示比较直观了。
Calendar类
从JDK1.1版本开始,在处理日期和时间时,系统推荐使用Calendar类进行实现。在设计上,Calendar类的功能要比Date类强大很多,而且在实现方式上也比Date类要复杂一些,下面就介绍一下Calendar类的使用。
Calendar类是一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用getInstance方法创建即可。
1、使用Calendar类代表当前时间
Calendar c = Calendar.getInstance();
由于Calendar类是抽象类,且Calendar类的构造方法是protected的,所以无法使用Calendar类的构造方法来创建对象,API中提供了getInstance方法用来创建对象。
使用该方法获得的Calendar对象就代表当前的系统时间,由于Calendar类toString实现的没有Date类那么直观,所以直接输出Calendar类的对象意义不大。
2、使用Calendar类代表指定的时间
Calendar c1 = Calendar.getInstance();
c1.set(2009, 3 - 1, 9);
使用Calendar类代表特定的时间,需要首先创建一个Calendar的对象,然后再设定该对象中的年月日参数来完成。
set方法的声明为:
public final void set(int year,int month,int date)
以上示例代码设置的时间为2009年3月9日,其参数的结构和Date类不一样。Calendar类中年份的数值直接书写,月份的值为实际的月份值减1,日期的值就是实际的日期值。
如果只设定某个字段,例如日期的值,则可以使用如下set方法:
public void set(int field,int value)
在该方法中,参数field代表要设置的字段的类型,常见类型如下:
Calendar.YEAR——年份
Calendar.MONTH——月份
Calendar.DATE——日期
Calendar.DAY_OF_MONTH——日期,和上面的字段完全相同
Calendar.HOUR——12小时制的小时数
Calendar.HOUR_OF_DAY——24小时制的小时数
Calendar.MINUTE——分钟
Calendar.SECOND——秒
Calendar.DAY_OF_WEEK——星期几
后续的参数value代表,设置成的值。例如:
c1.set(Calendar.DATE,10);
该代码的作用是将c1对象代表的时间中日期设置为10号,其它所有的数值会被重新计算,例如星期几以及对应的相对时间数值等。
3、获得Calendar类中的信息
Calendar c2 = Calendar.getInstance();
int year = c2.get(Calendar.YEAR);
int month = c2.get(Calendar.MONTH) + 1;
int date = c2.get(Calendar.DATE);
int hour = c2.get(Calendar.HOUR_OF_DAY);
int minute = c2.get(Calendar.MINUTE);
int second = c2.get(Calendar.SECOND);
int day = c2.get(Calendar.DAY_OF_WEEK);
System.out.println("年份:" + year);
System.out.println("月份:" + month);
System.out.println("日期:" + date);
System.out.println("小时:" + hour);
System.out.println("分钟:" + minute);
System.out.println("秒:" + second);
System.out.println("星期:" + day);
使用Calendar类中的get方法可以获得Calendar对象中对应的信息,get方法的声明如下:
public int get(int field)
其中参数field代表需要获得的字段的值,字段说明和上面的set方法保持一致。需要说明的是,获得的月份为实际的月份值减1,获得的星期的值和Date类不一样。在Calendar类中,周日是1,周一是2,周二是3,依次类推。
4、其它方法说明
其实Calendar类中还提供了很多其它有用的方法,下面简单的介绍几个常见方法的使用。
a、add方法
public abstract void add(int field,int amount)
该方法的作用是在Calendar对象中的某个字段上增加或减少一定的数值,增加是amount的值为正,减少时amount的值为负。
例如在计算一下当前时间100天以后的日期,代码如下:
Calendar c3 = Calendar.getInstance();
c3.add(Calendar.DATE, 100);
int year1 = c3.get(Calendar.YEAR);
int month1 = c3.get(Calendar.MONTH) + 1;
int date1 = c3.get(Calendar.DATE);
System.out.println(year1 + "年" + month1 + "月"
+ date1 + "日");
这里add方法是指在c3对象的Calendar.DATE,也就是日期字段上增加100,类内部会重新计算该日期对象中其它各字段的值,从而获得100天以后的日期,例如程序的输出结果可能为:
2009年6月17日
b、after方法
public boolean after(Object when)
该方法的作用是判断当前日期对象是否在when对象的后面,如果在when对象的后面则返回true,否则返回false。例如:
Calendar c4 = Calendar.getInstance();
c4.set(2009, 10 - 1, 10);
Calendar c5 = Calendar.getInstance();
c5.set(2010, 10 - 1, 10);
boolean b = c5.after(c4);
System.out.println(b);
在该示例代码中对象c4代表的时间是2009年10月10号,对象c5代表的时间是2010年10月10号,则对象c5代表的日期在c4代表的日期之后,所以after方法的返回值是true。
另外一个类似的方法是before,该方法是判断当前日期对象是否位于另外一个日期对象之前。
c、getTime方法
public final Date getTime()
该方法的作用是将Calendar类型的对象转换为对应的Date类对象,两者代表相同的时间点。
类似的方法是setTime,该方法的作用是将Date对象转换为对应的Calendar对象,该方法的声明如下:
public final void setTime(Date date)
转换的示例代码如下:
Date d = new Date();
Calendar c6 = Calendar.getInstance();
//Calendar类型的对象转换为Date对象
Date d1 = c6.getTime();
//Date类型的对象转换为Calendar对象
Calendar c7 = Calendar.getInstance();
c7.setTime(d);
5、Calendar对象和相对时间之间的互转
Calendar c8 = Calendar.getInstance();
long t = 8L;
//将Calendar对象转换为相对时间
long t1 = c8.getTimeInMillis();
//将相对时间转换为Calendar对象
Calendar c9 = Calendar.getInstance();
c9.setTimeInMillis(t1);
在转换时,使用Calendar类中的getTimeInMillis方法可以将Calendar对象转换为相对时间。在将相对时间转换为Calendar对象时,首先创建一个Calendar对象,然后再使用Calendar类的setTimeInMillis方法设置时间即可。
作者:baidu_ 发表于
https://blog.csdn.net/baidu_/article/details/
https://blog.csdn.net/baidu_/article/details/
https://blog.csdn.net/baidu_/article/details/
* 冒泡排序
public class Test {
public static void main(String[] args) {
int[] aa = { 1, 3, 5, 6, 7, 23, 43, 1, 34, 5, 74, 53, 23, 68, 34, 2 };
int bb = 0;
for (int i = 0; i & aa. i++) {
for (int j = 0; j & aa. j++) {
if (aa[i] & aa[j]) {
bb = aa[i];
aa[i] = aa[j];
for (int i = 0; i & aa. i++) {
System.out.println(aa[i]);
作者:baidu_ 发表于
https://blog.csdn.net/baidu_/article/details/
https://blog.csdn.net/baidu_/article/details/
https://blog.csdn.net/baidu_/article/details/
* 创建一个二维数组(4*3),实现该数组的行列转置,输出。
* 运行结果:
转置前:1 2 3
public class Test5 {
public static void main(String[] args) {
int[][] a = {{1,2,3},{4,5,6},{7,8,9},{10,11,12}};
for (int i = 0; i & 3; i++) {
for (int j = 0; j & 4; j++) {
System.out.print(a[j][i]+" ");
System.out.println();
作者:baidu_ 发表于
https://blog.csdn.net/baidu_/article/details/}

我要回帖

更多关于 康冠网络传媒科技 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信