本文是Sruts2初学后的一个小练习,实现了一个简单的注册登录模块的功能。本文可供Struts2初学者的参考,看完本文后你会觉得Struts2比Struts1.x简单易学,容易上手,更为重要的是使得Web开发更加简单了。写到此突然更加的佩服那些架构和开发Struts2的开发人员,以及Apache软件基金组织。
1.开发环境:NeatbBeans 6.5.1 JDK1.6 Tomcat 6 Windows XP Professional SP2 离线博客书写工具:Zoudry Blog Writer
2.首先写一个User类,属性有username和password;原代码如下:
public class User { private long ID; private String username; private String password;
public User(String username,String password){ this.username = username; this.password = password; } public User(){}
public long getID() { return ID; }
public void setID(long ID) { this.ID = ID; }
public String getPassword() { return password; }
public void setPassword(String password) { this.password = password; }
public String getUsername() { return username; }
public void setUsername(String username) { this.username = username; }
} 3.配置User类的映射文件:User.hbm.xml
4.写一个Connection类,负责创建Session;
public class Connection {
public static SessionFactory sessionfactory;
static { try { Configuration config = new Configuration().configure(); sessionfactory = config.buildSessionFactory(); } catch (Exception e) { e.printStackTrace(); } }
public static Session getSession() { try { Session session = sessionfactory.openSession(); return session; } catch (Exception e) { e.printStackTrace(); return null; } } public static void closeConnection(){ sessionfactory.close(); } }
5.实现一个UserDAO类,实现具体的数据库操作;
public class UserDAO {
private User user;
public User getUser() { return user; }
public void setUser(User user) { this.user = user; }
public static boolean Add(User user) { user.setID(getNextID()); Session session=null; Transaction tx=null; try { session = Connection.getSession(); tx = session.beginTransaction(); session.save(user); tx.commit(); return true; } catch (Exception e) { tx.rollback(); System.out.println("注册失败"); e.printStackTrace(); return false; }finally{ session.close(); Connection.closeConnection(); }
}
public static boolean registerValidate(String username){ boolean conflict_flag; Session session = Connection.getSession(); String hql = "select u.username from User u where u.username=?"; Query query = session.createQuery(hql); query.setString(0, username); List list = query.list(); if (list.size()>0 ) { conflict_flag=true; return conflict_flag; }else{ conflict_flag = false; return conflict_flag; } }
public static List select(User user){ String sql = "select u from User as u "; Session session = Connection.getSession(); Query query = session.createQuery(sql); List list = query.list(); return list; }
public static boolean loginValidate(String name,String pswd){ Session session = Connection.getSession(); String hql = "select u from User as u where u.username=? and u.password=?"; Query query = session.createQuery(hql); query.setString(0,name); query.setString(1,pswd); List list = query.list(); if (list.size()>0) return true; else return false;
} public static long getNextID(){ Session session = Connection.getSession(); String sql = "select max(ID) from User"; Query query = session.createQuery(sql); List list = query.list(); long nextID = list.get(0)+1; return nextID; } } 6.Action类及其数据校验文件:
Login.java 文件如下:
public class Login extends ActionSupport {
String username; String password;
@Override public String execute() { boolean flag = UserDAO.loginValidate(getUsername(), getPassword()); if (flag) { return SUCCESS; } else { return "error"; }
}
public String getPassword() { return password; }
public void setPassword(String password) { this.password = password; }
public String getUsername() { return username; }
public void setUsername(String username) { this.username = username; }
}
Login-validation.xml文件如下:
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
请输入你的登录用户名! 请输入有效的用户名,用户名只能是数字和字母,且长度在6-16之间! 请输入你的登录密码 请输入有效的密码,密码只能是数字和字母,且长度在6-16之间!
7.Register类及其数据验证文件:
public class Register extends ActionSupport {
private String username; private String password; private String password2;
public String getPassword2() { return password2; }
public void setPassword2(String password2) { this.password2 = password2; }
@Override public String execute() throws Exception { boolean accept = !UserDAO.registerValidate(getUsername()); if (accept) { User u = new User(getUsername(), getPassword()); boolean flag = UserDAO.Add(u); if (flag) { return "success"; } else { return "error"; } } else { return "refuse"; }
}
public String getPassword() { return password; }
public void setPassword(String password) { this.password = password; }
public String getUsername() { return username; }
public void setUsername(String username) { this.username = username; } }
Register-validation.xml文件如下:
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
请输入你要注册的用户名! 请输入有效的用户名,用户名只能是数字和字母,且长度在6-16之间! 请输入你的登录密码 请输入有效的密码,密码只能是数字和字母,且长度在6-16之间! 请再次确认密码
请输入有效的密码,密码只能是数字和字母,且长度在6-16之间! 两次密码不一致
8.login.jsp和register.jsp文件 <%@page contentType="text/html" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags"%>
欢迎登录
<%@ page contentType="text/html" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%>
注册 用户名: 密 码: 确认密码:
9.登陆成功以及注册成功的jsp页面;
<%@page contentType="text/html" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags"%>
登录成功 欢迎你回来,
<%@page contentType="text/html" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags"%> "http://www.w3.org/TR/html4/loose.dtd">
注册成功 欢迎新用户 的加入!
9.登录失败以及注册失败的JSP页面:
<%@page contentType="text/html" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags"%> "http://www.w3.org/TR/html4/loose.dtd">
登录失败 登录失败,您还不是注册用户!返回注册
<%@page contentType="text/html" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags"%> "http://www.w3.org/TR/html4/loose.dtd">
注册失败 注册失败,该用户已存在,请重新注册
10:配置Struts.xml文件
demo.xml文件如下:
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">login.jsp loginsuccess.jsp loginerror.jsp register.jsp regsuccess.jsp regerror.jsp regerror.jsp 11.配置web.xml文件:
struts2 org.apache.struts2.dispatcher.FilterDispatcher struts2 /* 30demo/login.jsp
参考来源:http://hiro.iteye.com/blog/420476
你可能感兴趣的:(程序学习)
小程序学习中遇到的一些问题
chenzhuo997
看到112,113项目基本结束,没有token重要课程(节)是61和62:如何把各种嵌套的数据分为不同的块然后注入屏幕的左右两边(样式的效果的实现),如何通过Index传值来更新所得到的不同列表然后得到详情获得具体的数据letleftMenuList=this.Cates.map(v=>v.cat_name);//构造右侧的商品数据letrightContent=this.Cates[0].chi
探索微信小程序开发之旅
来恩1003
微信小程序 微信小程序 小程序
微信小程序学习资料微信小程序学习资料微信小程序学习资料在移动互联网蓬勃发展的当下,微信小程序以其无需下载安装、触手可及的特性,成为众多开发者和企业的热门选择。无论是为了拓展业务渠道、提升用户体验,还是追求技术创新,学习微信小程序开发都能为你打开一扇充满机遇的大门。接下来,让我们一同踏上微信小程序的学习征程。一、基础搭建:开启小程序开发之门开发工具准备:微信官方提供了功能强大且易用的开发工具——微信
使用matplotlab绘制多条形图
MADAO_luv
数据分析入门 python
##黑马程序学习这种多个条形图放在一起的图形该怎么画呢?请看以下代码#横着的条形图frommatplotlibimportpyplotaspltimportmatplotlib#设置显示中文和负号matplotlib.rcParams['font.sans-serif']=['SimHei']matplotlib.rcParams['axes.unicode_minus']=Falsea=["猩球
Laravel小程序学习日记2018-07-10
Purson
有那么一个星期没有写日记了,因为答应了Sheldon15号前完成小程序的学习,很多东西都来不及总结,但是由于有vuejs的基础,wepy的使用是比较清楚的。今天为什么记录主要有1个原因,就是我在laravel小程序课程里面提交的修改被合并了,这次不是一两个错字那么简单,是一个小方法,这里截图庆祝一下。投稿小记录在wepy里面异步函数更新数据,一定要在后面加个this.$apply()
【java程序学习】从零开始编写美颜相机程序——第一讲
ecplice123
数码相机 java 学习
首先来看最终效果图美颜相机主要由多种功能组成:基本窗体,菜单栏,拉杆,灰度,二值,放大一倍,缩小一倍,以及三原色滤镜和透明度调节组成。万丈高楼平地起,咱们先从基础款开始搞起1.首先创建一个包,然后创建一个类,以下,我以imagepan和drawlis为例之后咱们正式开始创建项目首先,为了方便我们可以将imagepan类继承到JFream中(这里默认咱们已经创建了main主函数)publicclas
微信小程序学习记录(2)视图层之wxml(数据绑定大括号,wx:for,wx:if)
Spider_man_
微信小程序
1,数据绑定WXML中的动态数据均来自对应Page的data。用双大括号将变量包起来,可以作用于(参考:https://www.w3cschool.cn/weixinapp/weixinapp-data.html)内容{{message}}Page({data:{message:'HelloMINA!'}})组件属性(需要在双引号之内)Page({data:{id:0}})控制属性(需要早双引号之
Lua入门
Lodger007
Game Development lua linux c++ windows 脚本 dll
翻译自http://gamedevgeek.com/tutorials/getting-started-with-lua/Lua入门Lua是一个被设计成用于扩展C/C++编程的轻量级脚本语言。不幸的是,网上很少有关于这个语言的在线教程。我主要通过阅读其源代码来了解它是怎样工作并且通过一些发布的程序学习它。希望,通过下面的教程,会让学习Lua更加简单。本教程涵盖了Lua5.1。在Lua的每一个版本中
微信小程序学习记录——4.框架-视图层
赈川
微信小程序 微信小程序
文章目录1.WXML数据绑定简单绑定运算组合列表渲染wx:forblockwx:forwx:key条件渲染wx:ifblockwx:ifwx:ifvshidden模板定义模板使用模板模板的作用域引用importimport的作用域include事件什么是事件事件的使用方式事件分类事件绑定和冒泡事件的捕获阶段事件对象timeStamptargetcurrentTargetdatasettouches
微信小程序学习指南:从基础知识到代码展示
Java Fans
前端开发者成长之路 微信小程序 notepad++ 小程序
✅作者简介:2022年博客新星第八。热爱国学的Java后端开发者,修心和技术同步精进。个人主页:JavaFans的博客个人信条:不迁怒,不贰过。小知识,大智慧。当前专栏:微信小程序学习分享✨特色专栏:国学周更-心性养成之路本文内容:微信小程序学习指南:从基础知识到代码展示文章目录引言一、微信小程序的基础知识1.1小程序的概念和特点1.2开发工具的选择和安装1.3小程序的目录结构和文件类型二、微信小
Linux设备驱动程序学习(九)——块设备驱动程序
Alex-wu
Linux设备驱动程序 Linux设备驱动程序 Linux 块设备 驱动程序
Linux块设备特点 字符设备与块设备的不同主要有:块设备只能以块为单位接收输入和返回输出,而字符设备则以字节为单位。大多数设备是字符设备,因为它们不需要缓冲而且不以固定块大小进行操作。块设备对于I/O请求有对应的缓冲区,因此它们可以选择以什么顺序进行响应,字符设备无须缓冲且被直接读写。对于存储设备而言,调整读写的顺序作用巨大,因为在读写连续的扇区的存储速度比分离的扇区更快。字符设备只能被顺序读
微信小程序的学习(2018.4.18)
zn_Liujiang
微信小程序学习页面跳转的两种方式:a).新闻跳转b).在微信里面alert没法用,带window的都不可以用index.wxml跳转到新闻界面index.jsaaa(){console.log(111)wx.navigateTo({url:'../news/news',})添加事件bindtapwx的全局对象css的修改:跳转到新闻界面.nav-text{color:blue;font-size:
日常开发记录
VernonJsn
C++
2024-01-29Linux驱动程序学习好网站:Linux设备驱动程序教程Linux设备驱动程序——read()、write()以及ioctl():这个图很关键,对深入理解这个驱动过程有着很重要的帮助。通过上面的图来看,为了是实现程序,使用ictI函数的时候必须使用共同的头文件,而该头文件.上定义了想ioctl传送的命令以及互换处理命令的辅助信息的结构体,驱动程序上的ioct()函数调用file
Solana 代币合约入口程序学习
AiMateZero
Rust和Solana学习 学习 rust Solana
本文是学习Solana程序库代币合约系列,需要有一定的Rust基础我们今天学习spl/token/program/src/lib.rs与entrypoint.rs文件,也就是Solana统一代币合约的入口文件。我们首先学习lib.rs文件,其代码只有93行,也比较简单,我们来快速学习一下。一内部属性内部属性应用于定义它的元素整体,因为它定义在作用的元素内部,所以在内部属性。相应的,定义在元素之外的
Win32 MDI 程序学习1
bcbobo21cn
VC++ MDI 多文档窗口 MDICREATESTRUCT
这个是从Windows程序设计第五版改来的;我还没完全理解;先初步看一下;#include#include"resource.h"#defineINIT_MENU_POS0#defineHELLO_MENU_POS2#defineIDM_FIRSTCHILD50000LRESULTCALLBACKFrameWndProc(HWND,UINT,WPARAM,LPARAM);BOOLCALLBACKC
小程序学习-21
m0_51519738
小程序学习 小程序 学习
目前小程序分包大小有以下限制:整个小程序所有分包大小不超过20M单个分包/主包大小不能超过2M独立分包:"independent":true
小程序学习-12
m0_51519738
小程序学习 小程序 学习
跟着老师做了一个上拉触底的案例建议局部开启通常是用于分类中的功能应进行节流处理,要上一个请求完成后才开始下一个请求
微信小程序学习笔记( 小程序框架 )
BYE&
wx小程序学习 wx小程序入门 小程序框架
必看这个只是我的学习过程算是日记形式吧,过程是按微信的官方文档的循序来,从指南中的小程序框架开始,指南中这一节之前还有页面配置,目录结构,还有很多介绍,没有写但是是非常重要的,一定要看,像指南后面的框架,组件,API更像是字典形式很细,所以*指南*这里很重要,建议学之前先学一点框架vue,react都可以,当然学框架之前也要了解一点node(深入浅出nodejs这本书挺好的的,至少了解一下前两章N
小程序学习记录九:小程序npm包的使用
努力练级中...
小程序 小程序
包的概念一、npm包的限制二、VantWeapp组件库1.安装2.构建npm包3.修改app.json三、定义和使用CSS变量1.定义变量2.使用变量3.vant里使用css变量一、npm包的限制1.不支持依赖于Node.js内置库的包2.不支持依赖于浏览器内置对象的包jq就不支持。3.不支持依赖c++插件的包一些加密的包。二、VantWeapp组件库使用的MIT开源许可协议,对商业使用友好。1.
小程序学习
未晞~
小白 vscode 小程序 微信小程序
7、样式WXSS7.1、尺寸单位1.小程序中不需要主动来引用样式文件2.需要把页面中某些元素的单位由px改成rpx1px=2rpx3.存在一个设计稿,宽度414或者未知page1、设计稿page存在一个元素宽度100px2、拿以上的需求去实现不同宽度的页面适配例如:pagepx=750rpx1px=750rpx/page100px=750rpx*100/page4.利用一个属性calc属性css和
机器学习笔记(1): 基础概念
大锅烩菜
1.机器学习基础概念1.1定义AcomputerprogramissaidtolearnformexperienceEwithrespecttosometaskTandsomperformancemeasureP,ifitsperformanceonT,asmeasuredbyP,improveswithexperienceE.例如:根据你将那些邮件标记为垃圾邮件的行为,邮件程序学习更好的过滤邮件
小程序学习-19
m0_51519738
小程序学习 小程序 学习
VantWeapp-轻量、可靠的小程序UI组件库VantWeapp-轻量、可靠的小程序UI组件库安装出现问题:rollbackFailedOptional:verbnpm-session53699a8e64f465b9解决办法:http://t.csdnimg.cn/rGUbeVantWeapp-轻量、可靠的小程序UI组件库
小程序踩坑第二谈
Jiwenjie
小程序学习总结首先贴上官方文档的链接地址小程序开发文档1.触发upper和lower事件的条件。如何在scroll-view中触发该条件首先upper事件和lower事件是在scroll-view中使用,可以用在上拉自动加载和下拉刷新;或者单独的下拉刷新也可以,即onPullDownRefresh,不过需要在全局变量中开启才行。*在滚动scroll-view时会阻止页面回弹,所以在scroll-v
小程序学习(01)——template模块化
默色留恋
文件夹有.json的别忘记在json文件里输入"()",不然会报错文件夹有.js的别忘记在js文件里输入"page({})",不然会报错wxss尽量使用rpx,起到自适应效果一般1px=2rpxapp.json{"pages":["pages/welcomes/welcome",//页面第一个显示"pages/posts/post"],"window":{"backgroundTextStyle"
小程序学习-13
m0_51519738
小程序学习 小程序 学习
生命周期函数:自动按次序执行onLoad和onReady比较常用在onReady中可以改标题(如下图)WXS是用来帮助开发者渲染页面结构的过滤器:渲染数据之前,对数据做一层包装处理,过滤器处理的结果最终会渲染到页面上在小程序中,wxs就充当了过滤器的角色
小程序学习基础(首页展示)
冯运山
小程序基础学习 微信小程序 微信开发 微信
原理通过首页展示的方式设置一个按钮,然后点击按钮跳转到相应的页面即可。一在js中定义一个需要展示页面的数组二在页面中使用fou循环来遍历其中的数据,并展示出来页面代码{{item.name}}//index.jsPage({data:{"pages":[{name:"one",path:"/pages/one/one"},{name:"two",path:"/pages/two/two"},{na
C# &OpenCV 从零开发(0):前言
打工人 老王
C#&OpenCV c# opencv 开发语言
文章目录前言可行性研究Nuget安装+第一个OpenCV程序学习方法总结前言由于我想换个机器视觉+运动控制的工作,我就开始了自学机器视觉方向的技术。但是Halcon毕竟是商业化的库,国内用盗版还是怕被告。所以期望使用OpenCV。OpenCV目前已知的方法的有两个版本Python:用起来挺简单的,就是Python的语言不适合管理,感觉以后必定会出现问题,不适合写复杂的项目C++:太过于朴素,写起来
小程序学习基础(页面加载)
冯运山
微信小程序 微信 微信开放平台
打开首页,然后点击第一个按钮进去心得页面进入心得页面以后第一个模块是轮播图用的是swiper组件,然后就是四个按钮绑定点击事件,最后就是下拉刷新,下拉滚动,上拉加载。代码顺序wxml,js,wcss,json。初始化numbers为:{{numbers}}按钮{{item}}{{item}}//pages/one/one.jsPage({/***页面的初始数据*/data:{banners:[],
小程序学习篇(二)
六公子向小哇
准备工作小程序官网地址:https://developers.weixin.qq.com/miniprogram/dev/,进行申请小程序账号。(eg.:
[email protected] ),申请完进行登录。登录后在“开发设置”中查看AppID并记下,并配置request的合法请求域名。开发管理中的开发版本-审核版本-线上版本。访问体验版需要在“用户身份”中进行管理人员和配置权限。整体结构图片目录
微信小程序学习笔记(1)
东篱_Y
前端学习笔记 微信小程序 学习 小程序
微信小程序学习笔记1.小程序代码结构2.逻辑层和视图层3.小程序的宿主环境(通信模型、运行机制、组件、API)4.数据绑定和事件绑定1.小程序代码结构当开发者新建一个工程时,项目文件包括下图所示的各部分:pages文件夹该文件夹是页面文件的所在,小程序中的一个页面对应一个文件夹。上图所示,起初该文件夹下有index和logs两个文件夹即对应两个页面(要为自己的小程序加页面就自己继续添加文件夹,然后
微信小程序学习笔记,知识点全面概括总结
秋绥冬禧.
vant 微信小程序 学习 小程序
目录一、安装依赖包二、小程序简介2.1小程序与普通网页开发的区别?2.2使用2.3项目文件结构介绍2.4运行机制:2.5组件2.6API:事件监听、同步异步API三、数据绑定四、事件对象属性4.1常用事件4.2bindtap的使用4.3访问和修改data中的数据、data-*事件传参五、事件绑定5.1条件渲染1.block包裹性容器:条件成立渲染2.wx:if:动态创建移除元素控制展示与隐藏3.h
关于旗正规则引擎中的MD5加密问题
何必如此
jsp MD5 规则 加密
一般情况下,为了防止个人隐私的泄露,我们都会对用户登录密码进行加密,使数据库相应字段保存的是加密后的字符串,而非原始密码。
在旗正规则引擎中,通过外部调用,可以实现MD5的加密,具体步骤如下:
1.在对象库中选择外部调用,选择“com.flagleader.util.MD5”,在子选项中选择“com.flagleader.util.MD5.getMD5ofStr({arg1})”;
2.在规
【Spark101】Scala Promise/Future在Spark中的应用
bit1129
Promise
Promise和Future是Scala用于异步调用并实现结果汇集的并发原语,Scala的Future同JUC里面的Future接口含义相同,Promise理解起来就有些绕。等有时间了再仔细的研究下Promise和Future的语义以及应用场景,具体参见Scala在线文档:http://docs.scala-lang.org/sips/completed/futures-promises.html
spark sql 访问hive数据的配置详解
daizj
spark sql hive thriftserver
spark sql 能够通过thriftserver 访问hive数据,默认spark编译的版本是不支持访问hive,因为hive依赖比较多,因此打的包中不包含hive和thriftserver,因此需要自己下载源码进行编译,将hive,thriftserver打包进去才能够访问,详细配置步骤如下:
1、下载源码
2、下载Maven,并配置
此配置简单,就略过
HTTP 协议通信
周凡杨
java httpclient http 通信
一:简介
HTTPCLIENT,通过JAVA基于HTTP协议进行点与点间的通信!
二: 代码举例
测试类:
import java
java unix时间戳转换
g21121
java
把java时间戳转换成unix时间戳:
Timestamp appointTime=Timestamp.valueOf(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()))
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:m
web报表工具FineReport常用函数的用法总结(报表函数)
老A不折腾
web报表 finereport 总结
说明:本次总结中,凡是以tableName或viewName作为参数因子的。函数在调用的时候均按照先从私有数据源中查找,然后再从公有数据源中查找的顺序。
CLASS
CLASS(object):返回object对象的所属的类。
CNMONEY
CNMONEY(number,unit)返回人民币大写。
number:需要转换的数值型的数。
unit:单位,
java jni调用c++ 代码 报错
墙头上一根草
java C++ jni
#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00000000777c3290, pid=5632, tid=6656
#
# JRE version: Java(TM) SE Ru
Spring中事件处理de小技巧
aijuans
spring Spring 教程 Spring 实例 Spring 入门 Spring3
Spring 中提供一些Aware相关de接口,BeanFactoryAware、 ApplicationContextAware、ResourceLoaderAware、ServletContextAware等等,其中最常用到de匙ApplicationContextAware.实现ApplicationContextAwaredeBean,在Bean被初始后,将会被注入 Applicati
linux shell ls脚本样例
annan211
linux linux ls源码 linux 源码
#! /bin/sh -
#查找输入文件的路径
#在查找路径下寻找一个或多个原始文件或文件模式
# 查找路径由特定的环境变量所定义
#标准输出所产生的结果 通常是查找路径下找到的每个文件的第一个实体的完整路径
# 或是filename :not found 的标准错误输出。
#如果文件没有找到 则退出码为0
#否则 即为找不到的文件个数
#语法 pathfind [--
List,Set,Map遍历方式 (收集的资源,值得看一下)
百合不是茶
list set Map遍历方式
List特点:元素有放入顺序,元素可重复
Map特点:元素按键值对存储,无放入顺序
Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的)
List接口有三个实现类:LinkedList,ArrayList,Vector
LinkedList:底层基于链表实现,链表内存是散乱的,每一个元素存储本身
解决SimpleDateFormat的线程不安全问题的方法
bijian1013
java thread 线程安全
在Java项目中,我们通常会自己写一个DateUtil类,处理日期和字符串的转换,如下所示:
public class DateUtil01 {
private SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public void format(Date d
http请求测试实例(采用fastjson解析)
bijian1013
http 测试
在实际开发中,我们经常会去做http请求的开发,下面则是如何请求的单元测试小实例,仅供参考。
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.httpclient.HttpClient;
import
【RPC框架Hessian三】Hessian 异常处理
bit1129
hessian
RPC异常处理概述
RPC异常处理指是,当客户端调用远端的服务,如果服务执行过程中发生异常,这个异常能否序列到客户端?
如果服务在执行过程中可能发生异常,那么在服务接口的声明中,就该声明该接口可能抛出的异常。
在Hessian中,服务器端发生异常,可以将异常信息从服务器端序列化到客户端,因为Exception本身是实现了Serializable的
【日志分析】日志分析工具
bit1129
日志分析
1. 网站日志实时分析工具 GoAccess
http://www.vpsee.com/2014/02/a-real-time-web-log-analyzer-goaccess/
2. 通过日志监控并收集 Java 应用程序性能数据(Perf4J)
http://www.ibm.com/developerworks/cn/java/j-lo-logforperf/
3.log.io
和
nginx优化加强战斗力及遇到的坑解决
ronin47
nginx 优化
先说遇到个坑,第一个是负载问题,这个问题与架构有关,由于我设计架构多了两层,结果导致会话负载只转向一个。解决这样的问题思路有两个:一是改变负载策略,二是更改架构设计。
由于采用动静分离部署,而nginx又设计了静态,结果客户端去读nginx静态,访问量上来,页面加载很慢。解决:二者留其一。最好是保留apache服务器。
来以下优化:
java-50-输入两棵二叉树A和B,判断树B是不是A的子结构
bylijinnan
java
思路来自:
http://zhedahht.blog.163.com/blog/static/25411174201011445550396/
import ljn.help.*;
public class HasSubtree {
/**Q50.
* 输入两棵二叉树A和B,判断树B是不是A的子结构。
例如,下图中的两棵树A和B,由于A中有一部分子树的结构和B是一
mongoDB 备份与恢复
开窍的石头
mongDB备份与恢复
Mongodb导出与导入
1: 导入/导出可以操作的是本地的mongodb服务器,也可以是远程的.
所以,都有如下通用选项:
-h host 主机
--port port 端口
-u username 用户名
-p passwd 密码
2: mongoexport 导出json格式的文件
[网络与通讯]椭圆轨道计算的一些问题
comsci
网络
如果按照中国古代农历的历法,现在应该是某个季节的开始,但是由于农历历法是3000年前的天文观测数据,如果按照现在的天文学记录来进行修正的话,这个季节已经过去一段时间了。。。。。
也就是说,还要再等3000年。才有机会了,太阳系的行星的椭圆轨道受到外来天体的干扰,轨道次序发生了变
软件专利如何申请
cuiyadll
软件专利 申请
软件技术可以申请软件著作权以保护软件源代码,也可以申请发明专利以保护软件流程中的步骤执行方式。专利保护的是软件解决问题的思想,而软件著作权保护的是软件代码(即软件思想的表达形式)。例如,离线传送文件,那发明专利保护是如何实现离线传送文件。基于相同的软件思想,但实现离线传送的程序代码有千千万万种,每种代码都可以享有各自的软件著作权。申请一个软件发明专利的代理费大概需要5000-8000申请发明专利可
Android学习笔记
darrenzhu
android
1.启动一个AVD
2.命令行运行adb shell可连接到AVD,这也就是命令行客户端
3.如何启动一个程序
am start -n package name/.activityName
am start -n com.example.helloworld/.MainActivity
启动Android设置工具的命令如下所示:
# am start -
apache虚拟机配置,本地多域名访问本地网站
dcj3sjt126com
apache
现在假定你有两个目录,一个存在于 /htdocs/a,另一个存在于 /htdocs/b 。
现在你想要在本地测试的时候访问 www.freeman.com 对应的目录是 /xampp/htdocs/freeman ,访问 www.duchengjiu.com 对应的目录是 /htdocs/duchengjiu。
1、首先修改C盘WINDOWS\system32\drivers\etc目录下的
yii2 restful web服务[速率限制]
dcj3sjt126com
PHP yii2
速率限制
为防止滥用,你应该考虑增加速率限制到您的API。 例如,您可以限制每个用户的API的使用是在10分钟内最多100次的API调用。 如果一个用户同一个时间段内太多的请求被接收, 将返回响应状态代码 429 (这意味着过多的请求)。
要启用速率限制, [[yii\web\User::identityClass|user identity class]] 应该实现 [[yii\filter
Hadoop2.5.2安装——单机模式
eksliang
hadoop hadoop单机部署
转载请出自出处:http://eksliang.iteye.com/blog/2185414 一、概述
Hadoop有三种模式 单机模式、伪分布模式和完全分布模式,这里先简单介绍单机模式 ,默认情况下,Hadoop被配置成一个非分布式模式,独立运行JAVA进程,适合开始做调试工作。
二、下载地址
Hadoop 网址http:
LoadMoreListView+SwipeRefreshLayout(分页下拉)基本结构
gundumw100
android
一切为了快速迭代
import java.util.ArrayList;
import org.json.JSONObject;
import android.animation.ObjectAnimator;
import android.os.Bundle;
import android.support.v4.widget.SwipeRefreshLayo
三道简单的前端HTML/CSS题目
ini
html Web 前端 css 题目
使用CSS为多个网页进行相同风格的布局和外观设置时,为了方便对这些网页进行修改,最好使用( )。http://hovertree.com/shortanswer/bjae/7bd72acca3206862.htm
在HTML中加入<table style=”color:red; font-size:10pt”>,此为( )。http://hovertree.com/s
overrided方法编译错误
kane_xie
override
问题描述:
在实现类中的某一或某几个Override方法发生编译错误如下:
Name clash: The method put(String) of type XXXServiceImpl has the same erasure as put(String) of type XXXService but does not override it
当去掉@Over
Java中使用代理IP获取网址内容(防IP被封,做数据爬虫)
mcj8089
免费代理IP 代理IP 数据爬虫 JAVA设置代理IP 爬虫封IP
推荐两个代理IP网站:
1. 全网代理IP:http://proxy.goubanjia.com/
2. 敲代码免费IP:http://ip.qiaodm.com/
Java语言有两种方式使用代理IP访问网址并获取内容,
方式一,设置System系统属性
// 设置代理IP
System.getProper
Nodejs Express 报错之 listen EADDRINUSE
qiaolevip
每天进步一点点 学习永无止境 nodejs 纵观千象
当你启动 nodejs服务报错:
>node app
Express server listening on port 80
events.js:85
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE
at exports._errnoException (
C++中三种new的用法
_荆棘鸟_
C++ new
转载自:http://news.ccidnet.com/art/32855/20100713/2114025_1.html
作者: mt
其一是new operator,也叫new表达式;其二是operator new,也叫new操作符。这两个英文名称起的也太绝了,很容易搞混,那就记中文名称吧。new表达式比较常见,也最常用,例如:
string* ps = new string("
Ruby深入研究笔记1
wudixiaotie
Ruby
module是可以定义private方法的
module MTest
def aaa
puts "aaa"
private_method
end
private
def private_method
puts "this is private_method"
end
end