as3读取/修改xml
使用as3操作xml开发,它能自动把子项转变为一个属性或数组,子项的属性也可以直接通过@操作符进行访问。还有哪门语言对xml的操作如此简单呢?
一个小小例子:
package {
import flash.display.Sprite;
public class XmlTest extends Sprite {
public function Xml1() {
var myXml : XML =
<order>
<item id="1">
<menuName>my burger</menuName>
<price>13.95</price>
</item>
<item id="2">
<menuName>my fries</menuName>
<price>11.45</price>
</item>
</order>
trace("获取");
trace(myXml.item[0].menuName);
trace(myXml.item.(@id==2).menuName);
trace(myXml.item.(menuName=="burger").price);
trace("修改");
myXml.item[0].menuName = "程序员";
myXml.item.(@id==2).menuName="讨厌的程序员";
myXml.item.(menuName=="程序员").price = 1500;
trace("获取修改后");
trace(myXml.item[0].menuName);
trace(myXml.item.(@id==2).menuName);
trace(myXml.item.(menuName=="程序员").price);
}
}
}
编译 $ mxmlc XmlTest.as
执行 $ flashplayer XmlTest.swf
原文:http://anycent.blog.163.com/blog/static/84498427201031694125667/
如何配置Apache不同的端口指向不同的网站
在搭建Apache服务器时,配置Apache指向一个网站很容易,但如果要使多个端口分别指向不同的网站要怎样配置呢?本文将以Apache2.2配置为例来解答这个问题。
1、到Apache官网http://www.apache.org下载Apache服务器,本文以版本2.2为例;
2、安装Apahce,这里我安装到D:Apache下;
3、到安装目录下的conf目录下找到httpd.conf文件,这是Apache的配置文件,用记事本打开;
4、找到Listen 80,这是Apache的默认端口,你可以修改该端口,也可以添加新端口,这里我改为如下(也就是为该服务器配置2个端口):
Listen 8888
Listen 9999
5、找到DocumentRoot "D:/Apache/htdocs",配置网站的存放空间,我这里改为DocumentRoot "D:/myweb";找到<Directory "D:/Apache/htdocs">,做类似的修改;
6、找到#Include conf/extra/httpd-vhosts.conf,把前面的“#”去掉;
7、找到安装目录下conf/extra/下的httpd-vhosts.conf文件,并用记事本打开;
8、你将看到最后有如下默认配置,这是不同端口指向不同网站目录的配置,可以根据端口数量对下面的配置项进行相应的删减:
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.q.com
DocumentRoot "D:/Apache/docs/dummy-host.q.com"
ServerName dummy-host.q.com
ServerAlias www.dummy-host.q.com
ErrorLog "logs/dummy-host.q.com-error.log"
CustomLog "logs/dummy-host.q.com-access.log" common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host2.q.com
DocumentRoot "D:/Apache/docs/dummy-host2.q.com"
ServerName dummy-host2.q.com
ErrorLog "logs/dummy-host2.q.com-error.log"
CustomLog "logs/dummy-host2.q.com-access.log" common
</VirtualHost>
下面分别给端口8888、9999配置到网站web1、web2(这两个网站要位于前面设置的网站存放空间中,我这里是D:myweb),修改后的代码如下:
<VirtualHost *:8888>
ServerAdmin webmaster@dummy-host.q.com
DocumentRoot "D:/myweb/web1"
ServerName dummy-host.q.com
ServerAlias www.dummy-host.q.com
ErrorLog "logs/dummy-host.q.com-error.log"
CustomLog "logs/dummy-host.q.com-access.log" common
</VirtualHost>
<VirtualHost *:9999>
ServerAdmin webmaster@dummy-host2.q.com
DocumentRoot "D:/myweb/web2"
ServerName dummy-host2.q.com
ErrorLog "logs/dummy-host2.q.com-error.log"
CustomLog "logs/dummy-host2.q.com-access.log" common
</VirtualHost>
9、重启服务器后地址栏分别输入http://localhost:8888/、http://localhost:9999/将分别访问网站web1、web2,当然这里只能访问静态网站,如果需要支持动态网站(如php),需要添加动态支持,这里就不再介绍了。
如何使用MYSQL游标
//建立表结构
create table person(name varchar(10));
insert into person values(¹a¹);
insert into person values(¹b¹);
insert into person values(¹c¹);
insert into person values(¹d¹);
insert into person values(¹e¹);
//初始化
drop procedure if exists cursorTest
//建立
CREATE PROCEDURE cursorTest()
BEGIN
//定义变量
declare name1 varchar(10) default ¹¹ ;
declare name2 varchar(100) default ¹¹ ;
declare mycursor CURSOR FOR select name from person;
declare CONTINUE HANDLER FOR SQLSTATE ¹02000¹ SET tmpname = null;
//打开游标
OPEN mycursor;
//遍历游标
FETCH mycursor INTO name1;
//把游标查询出的 name 都加起并用 ; 号隔开
WHILE( name1 is not null) DO
set name1 = CONCAT(name1, ";") ;
set name2 = CONCAT(name2, name1) ;
FETCH mycursor INTO name1;
END WHILE;
CLOSE mycursor;
select mycursor;
END;
//调用游标
call mycursor()
运行结果:
mysql> call mycursor()
+--------------------------------------+
| name2 |
+--------------------------------------+
| a;b;c;d;e; |
+--------------------------------------+
1 row in set (0.01 sec)
如何防止代码腐烂问题
很多团队都有这个问题,一个项目的代码本来开始设计得好好的,一段时间以后,代码就会变得难以理解,难以维护,难以修改。为什么?我一直在思考这个问题。
我们先看一个人的情况。
1.程序员的成长
新手的代码
新手的代码没有经验,基本不考虑代码设计,代码规模稍稍大一点则自己就乱了。

进阶者的代码

小规模的时候

大规模的时候
进阶者已经知道如何设计代码,懂得代码规则,但一般局限于一个模块。规模一大,模块间的调用就会比较混乱,难以维护。
有经验者的代码

有经验者的代码,模块内部代码整洁,模块之间层次清晰,有设计模式,有成熟的体系。可以保持长期的代码整洁。
那么一个团队里面会出现什么情况呢?似乎,我们只要让一堆有经验的人来开发,那么代码必然不会出什么问题。可惜,事实不是这样。
2.背景
代码风格的多样性
有这样的。

也有这样的

放眼一看,会发现不同的代码风格,不同的设计思想,不同的设计理念。每个程序员都有自己的代码个性。

团队层次的差异
一个团队内部有新人,有熟手,有牛人。一个设计好的架构可能会变坏。

3.原因
风格的融合
当程序员A和程序员B在一起的时候,会有如下变化

原本整洁的代码变得不整洁了。
进度的压力
进度导致了“飞线”的产生,未经设计的代码在时间的借口下产生了。
多个人修改一个模块

4.本质
所有代码腐烂问题的本质是沟通问题。其表现又都可以统一为修改别人的代码。
当一个程序员在没有沟通的情况下,修改另一个程序员的模块的代码的时候,他可能不理解此模块的设计思路,代码结构,逻辑结构,于是按自己的想法去修改,虽然看起来解决了眼前的问题。但是留下了一个不稳定因素。此因素可以通过重构来解决。但是,大家都非常的“忙”,谁也没有空时间去 Review 代码,去沟通我改了你的哪里的代码。所以不稳定的因素越来越多,导致了代码的腐烂。
最快腐烂的代码,一定是很多人在修改的代码,相反,长期由一个人来维护的代码,就不会那么容易腐烂。因为一个人不存在沟通的问题,他修改代码的时候,明确的知道自己应该怎样去修改,怎样让代码更整洁。
5.解决
就一个办法,多沟通。
当你工作的时候需要修改别人的代码的时候,应该先找这个人沟通。说清楚需要改动的逻辑,然后尽量让他来修改。这样可以保证一块代码是由一个人维护,这样成本最少。
如果此人真的太忙,没有时间,那么你必须说明你的计划,让他做一个建议,最好能让他给你讲讲此模块的设计思路,代码设计,逻辑设计,现在的问题,以后的计划。保证你修改的代码都是合理的。
最理想的状态就是整个团队的思想是高度统一的,N个人可以像一个人那样去工作。这个需要团队长期的磨合。
你可以会想到,我们制定一个规范不就可以了么?纸面上的规范通常是不起作用的,成功团队的规范是在整个团队达到一个很高的水平以后总结的经验。与其说执行规范,不如说是学习经验。MFC的代码像是由一个人写出来的,Office所有产品都像是一个人做出来的。这就是高度的统一。我们把微软的规范搬过来,不一定就有效果。
代码的腐烂都是由于没有深入理解的情况下修改别人的代码导致的。
总结一下:
- 解决的方法就是任何修改之前确保经过深入的沟通。
- 简单的规则是一个模块仅允许一个人维护。
- 理想的状态是整个团队思想高度统一。
文章出自:djt.open
JavaScript判断浏览器类型与版本
/**
* @deprecated 获取浏览器类型,调用getOS();
* @return 浏览器名字
*
*/
function getOS()
{
if(navigator.userAgent.indexOf("MSIE")>0)
{
return "MSIE";
}
else if(isFirefox = navigator.userAgent.indexOf("Firefox")>0)
{
return "Firefox";
}
else if(isSafari = navigator.userAgent.indexOf("Safari")>0)
{
return "Safari";
}
else if(isCamino = navigator.userAgent.indexOf("Camino")>0)
{
return "Camino";
}
else if(isMozilla = navigator.userAgent.indexOf("Gecko/")>0)
{
return "Gecko";
}
else
{
return "";
}
}
function versionNumber()
{
return parseFloat(navigator.appVersion);
}
var isFirefox2 = navigator.userAgent.indexOf("Firefox")>0 && parseFloat(navigator.appVersion) == 2;
var isFirefox3 = navigator.userAgent.indexOf("Firefox")>0 && parseFloat(navigator.appVersion) == 3;
var isIE6 = navigator.userAgent.indexOf("MSIE")>0 && parseFloat(navigator.appVersion) == 6;
var isIE7 = navigator.userAgent.indexOf("MSIE")>0 && parseFloat(navigator.appVersion) == 7;
第一种,只区分浏览器,不考虑版本
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title> 判断浏览器</title>
<script type="text/javascript">
function myBrowser(){
var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
var isOpera = userAgent.indexOf("Opera") > -1;
if (isOpera){return "Opera"}; //判断是否Opera浏览器
if (userAgent.indexOf("Firefox") > -1){return "FF";} //判断是否Firefox
if (userAgent.indexOf("Safari") > -1){return "Safari";} //判断是否Safari
if (userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera){return "IE";} ; //判断是否IE
} //myBrowser() end
//调用上面的函数
if(myBrowser()=="IE"){alert("IE");}
if(myBrowser()=="FF") {alert("Firefox");}
if(myBrowser()=="Opera"){alert("Opera");}
if(myBrowser()=="Safari") {alert("Safari");}
//下面这两句是显示 navigator.userAgent 信息 以方便理解
var userAgent = navigator.userAgent;
document.write(userAgent);
</script>
</head>
<body>
</body>
</html>
第二种,区分浏览器,并考虑IE5.5 6 7 8
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title> 判断浏览器</title>
<script type="text/javascript">
function myBrowser(){
var isFF = userAgent.indexOf("Firefox") > -1 ; //判断是否Firefox
var isSafari = userAgent.indexOf("Safari") > -1 ; //判断是否Safari
var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
var isOpera = userAgent.indexOf("Opera") > -1; //判断是否Opera
var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera ; //判断是否IE
if(isIE){
var IE5 = IE55 = IE6 = IE7 = IE8 = false;
var reIE = new RegExp("MSIE (d+.d+);");
reIE.test(userAgent);
var fIEVersion = parseFloat(RegExp["$1"]);
IE55 = fIEVersion == 5.5 ;
IE6 = fIEVersion == 6.0 ;
IE7 = fIEVersion == 7.0 ;
IE8 = fIEVersion == 8.0 ;
if(IE55){ return "IE55"; }
if(IE6){ return "IE6"; }
if(IE7){ return "IE7"; }
if(IE8){ return "IE8"; }
}//isIE end
if(isFF){ return "FF"; }
if(isOpera){ return "Opera"; }
}//myBrowser() end
//调用上面的函数
if(myBrowser()=="FF") {alert("Firefox");}
if(myBrowser()=="Opera"){alert("Opera");}
if(myBrowser()=="Safari") {alert("Safari");}
if(myBrowser()=="IE55"){alert("IE5.5");}
if(myBrowser()=="IE6") {alert("IE6");}
if(myBrowser()=="IE7"){alert("IE7");}
if(myBrowser()=="IE8") {alert("IE8");}
//下面这两句是显示 navigator.userAgent 信息 以方便理解
var userAgent = navigator.userAgent;
document.write(userAgent);
</script>
</head>
<body >
</body>
</html>
Struts2+Hibernate实现分页
实际开发中,Struts2+Hibernate实现分页是JAVA WEB最常用的东西了,本文将分步为您分享如何进行分页操作,有不足之处请指出,希望与大家一起进步。
第一步:建立一个SQL数据库Tb_soft ,数据库表,software(字段:Tsoftware,fSoftname,fListImage,fVar,fFeilname,fUsedSystem,fUpdateTime,fInf,fClassID,fDownTimes 字段
类型并不重要自己随便设置然后直接通过SQL企业管理器直接在表里输入内容方便测试就是了)
第二步:建立一个名为productlist JAVA的WEB项目(我用的是NetBeans IDE 6.9,所以在新建项目的时候选择了Struts2 HIBERNATE框架,新建后会自动生成 hibernate.cfg.xml的配置文件
)。
第三步:配置hibernate.cfg.xml文件,主要是对数据库的链接设置以及数据表映射文件的设置
1、文件名:hibernate.cfg.xml文件代码:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
<property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
<property name="hibernate.connection.url">jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Tb_soft </property>
<property name="hibernate.connection.username">sa</property>
<property name="hibernate.connection.password">123456</property>
<mapping resource="soft.hbm.xml"/>
</session-factory>
</hibernate-configuration>
注: <mapping resource="soft.hbm.xml"/> 元素对数据库表software 配置文件soft.hbm.xml的映射配置,注意soft.hbm.xml文件的路径如果和hibernate.cfg.xml文件没在同一个目录必须
加上路径例如 <mapping resource="DatatableXML/soft.hbm.xml"/>
2、新建 名为:soft.hbm.xml 的映射文件,该文件主要是对数据库表software的映射配置全部代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name= "com.bean.soft" table="Tsoftware">
<id name="id" column="id" type="int">
<generator class="native"/>
</id>
<property name="fSoftname" type="string" length="20">
<column name="fSoftname"/>
</property>
<property name="fListImage" type="string" length="20">
<column name="fListImage"/>
</property>
<property name="fVar" type="string" length="10">
<column name="fVar"/>
</property>
<property name="fFeilname" type="string" length="30">
<column name="fFeilname"/>
</property>
<property name="fUsedSystem" type="string" length="30">
<column name="fUsedSystem"/>
</property>
<property name="fUpdateTime" type="string" length="30">
<column name="fUpdateTime"/>
</property>
<property name="fInf" type="string" length="2000">
<column name="fInf"/>
</property>
<property name="fDownTimes" type="string" length="10">
<column name="fDownTimes"/>
</property>
</class>
</hibernate-mapping>
注: <class name= "com.bean.soft" table="Tsoftware">设置了soft属于一个javabean,关于javabean我就不解释了。关于这个文件的代码后面再贴出来。class name=javabean包
+javabean构成, table="Tsoftware",其中Tsoftware就是SQL数据库表。有关property 元素我这里简单的说一下 例如下:
<property name="fDownTimes" type="string" length="10">
<column name="fDownTimes"/>
</property>
name,映射文件构成表的的字段名,这里的name必须与com.bean.soft 中的熟悉对应,千万记住要设置好type ,这里的type好比SQL的字段类型,具体类型对应关系请查相关资料我就不详细解
释了。
第四步:在包com.bean 建立JAVAbean soft 代码如下:
package com.bean;
/**
*
* @author Even
*/
public class soft {
private String fSoftname;
private int id;
private String fListImage;
private String fVar;
private String fFeilname;
private String fUsedSystem;
private String fUpdateTime;
private String fInf;
private String fDownTimes;
/**
* @return the fSoftname
*/
public String getfSoftname() {
return fSoftname;
}
/**
* @param fSoftname the fSoftname to set
*/
public void setfSoftname(String fSoftname) {
this.fSoftname = fSoftname;
}
/**
* @return the id
*/
public int getId() {
return id;
}
/**
* @param id the id to set
*/
public void setId(int id) {
this.id = id;
}
/**
* @return the fListImage
*/
public String getfListImage() {
return fListImage;
}
/**
* @param fListImage the fListImage to set
*/
public void setfListImage(String fListImage) {
this.fListImage = fListImage;
}
/**
* @return the fVar
*/
public String getfVar() {
return fVar;
}
/**
* @param fVar the fVar to set
*/
public void setfVar(String fVar) {
this.fVar = fVar;
}
/**
* @return the fFeilname
*/
public String getfFeilname() {
return fFeilname;
}
/**
* @param fFeilname the fFeilname to set
*/
public void setfFeilname(String fFeilname) {
this.fFeilname = fFeilname;
}
/**
* @return the fUsedSystem
*/
public String getfUsedSystem() {
return fUsedSystem;
}
/**
* @param fUsedSystem the fUsedSystem to set
*/
public void setfUsedSystem(String fUsedSystem) {
this.fUsedSystem = fUsedSystem;
}
/**
* @return the fUpdateTime
*/
public String getfUpdateTime() {
return fUpdateTime;
}
/**
* @param fUpdateTime the fUpdateTime to set
*/
public void setfUpdateTime(String fUpdateTime) {
this.fUpdateTime = fUpdateTime;
}
/**
* @return the fInf
*/
public String getfInf() {
return fInf;
}
/**
* @param fInf the fInf to set
*/
public void setfInf(String fInf) {
this.fInf = fInf;
}
/**
* @return the fDownTimes
*/
public String getfDownTimes() {
return fDownTimes;
}
/**
* @param fDownTimes the fDownTimes to set
*/
public void setfDownTimes(String fDownTimes) {
this.fDownTimes = fDownTimes;
}
}
关于JAVAbean就不解释了。
第五步:在com.Hibernate包建立Hibernate的sessionFactory(文件名:NewHibernateUtil.java)用于获取Session
NewHibernateUtil.java 代码:
package com.Hibernate;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
/**
* Hibernate Utility class with a convenient method to get Session Factory object.
*
* @author Even
*/
public class NewHibernateUtil {
private static SessionFactory sessionFactory = null;
private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
static {
try {
sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
} catch (Throwable ex) {
// Log the exception.
System.err.println("对不起数据工厂构建失败." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
public static Session getsession() throws HibernateException {
Session session = (Session) threadLocal.get();
if (session == null || !session.isOpen()) {
if (sessionFactory == null) {
rebuildsessionFactory();
}
session = (sessionFactory != null) ? sessionFactory.openSession() : null;
threadLocal.set(session);
}
return session;
}
private static void rebuildsessionFactory() {
try {
Configuration cfg = new Configuration().configure();
sessionFactory = cfg.buildSessionFactory();
} catch (Exception e) {
System.out.print("创建工厂会话失败!");
e.printStackTrace();
}
}
public static SessionFactory getsessionFactory() {
return sessionFactory;
}
public static void closesessicon() {
Session session = (Session) threadLocal.get();
if (session != null) {
session.close();
}
}
}
这里注意session的关闭。
第六步:在包com.dao包建立整个程序的dao层;文件名为:softDao.java
代码如下:
package com.dao;
/**
*
* @author Even
*/
import com.Hibernate.NewHibernateUtil;
import com.bean.soft;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
public class softDao {
public List<soft> queryByPage(int pageSize, int pageNow, String HQL) {
Session session = null;
List sftlist = new ArrayList();
try {
session = NewHibernateUtil.getsession();// 获得session对象
//String hql = "from Employee emp";// 查询HQL语句
HQL = "from soft sft";// 条件查询HQL语句
Query q = session.createQuery(HQL);// 执行查询操作
q.setFirstResult(pageSize * (pageNow - 1));
q.setMaxResults(pageSize);
sftlist = q.list();
} catch (HibernateException e) {
e.printStackTrace();
System.out.println("查询失败");
} finally {
NewHibernateUtil.closesessicon();// 关闭session
}
return sftlist;
}
//获得总页数的方法有时间可能会单独使用该工程所以将获得session的过程也单独写出来
public int getpageCount(int pagesize, String HQL) {
int pageCount;
int Datacount = 0;
Session session = null;
try {
session = NewHibernateUtil.getsession();// 获得session对象
HQL = "from soft sft";//条件查询HQL语句,这里注意使用的实例查询方式,soft是我们建立的javabean
Query q = session.createQuery(HQL);// 执行查询操作
Datacount = q.list().size();//获得记录总数
} catch (HibernateException e) {
e.printStackTrace();
System.out.println("查询失败");
} finally {
NewHibernateUtil.closesessicon();// 关闭session
}
if (Datacount % pagesize == 0) {
pageCount = Datacount / pagesize;
} else {
pageCount = Datacount / pagesize + 1;
}
return pageCount;
}
}
这里就不多解释了。
第七步:在包com.action 建立分页的Action文件名为:softlistAction.java
代码如下:
package com.action;
import com.bean.leavetalk;
import com.bean.soft;
import com.dao.Dao;
import java.util.List;
import com.opensymphony.xwork2.ActionSupport;
public class softlistAction extends ActionSupport {
private List<soft> softs;//用于数据集合对象并非只是软件
private List<soft> downcountlist;//显示下载列表的集合
private List<leavetalk> leavatalks;//显示用户留言列表的集合
private int pageNow = 1; //默认从第一页开始显示
private int pageSize = 4; //每页显示5条
private int pageCount;//总页数
private String doing;//标记Action返回的值
private Dao pageDAO = new Dao();
private Dao leivetalkdao = new Dao();
private int id;
private String fbadcount;
private String fgoodcount;
public List<soft> getSofts() {
return softs;
}
public void setSofts(List<soft> softwares) {
this.softs = softs;
}
public int getPageNow() {
return pageNow;
}
public void setPageNow(int pageNow) {
this.pageNow = pageNow;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getPageCount() {
Dao sa = new Dao();
sa.getpageCount(pageSize, "");
this.pageCount = sa.getpageCount(pageSize, "");
return sa.getpageCount(pageSize, "");
}
/**
* @param pageCount the pageCount to set
*/
public void setPageCount() {
Dao sa = new Dao();
sa.getpageCount(pageSize, "");
this.pageCount = sa.getpageCount(pageSize, "");
}
/**
* @return the doing
*/
public String getDoing() {
return doing;
}
/**
* @param doing the doing to set
*/
public void setDoing(String doing) {
this.doing = doing;
}
//主方法
public String execute() throws Exception {
String returnstr = "erro";
String HQLstr = "";
// softs = pageDAO.queryByPage(pageSize, pageNow, HQLstr);
if (doing.equals("productlist")) {
returnstr = "productlist";
HQLstr = "from soft sft";
this.setPageSize(4);
this.leavatalks = leivetalkdao.getleavetalks("from leavetalk lt order by lt.id desc");
this.softs = pageDAO.queryByPage(pageSize, pageNow, HQLstr);
} else if (doing.equals("productshow")) {
returnstr = "productshow";
HQLstr = "from soft sft where sft.id=¹" + getId() + "¹ order by sft.id asc";
downcountlist = pageDAO.queryByPage(10, pageNow, "from soft sft order by sft.fDownTimes desc");
} else if (doing.equals("index")) {
returnstr = "index";
HQLstr = " from soft sft where sft.ftype=¹T¹order by sft.id asc";
this.setPageSize(5);
} else if (doing.equals("web")) {
returnstr = "web";
HQLstr = " from soft sft where sft.ftype=¹T¹order by sft.id asc";
this.setPageSize(5);
} else if (doing.equals("service")) {
returnstr = "service";
//HQLstr = " from service sr where order by sr.id asc";
// this.setPageSize(1);
} else if (doing.equals("Updatefgood")) {
returnstr = "Updatefgood";
HQLstr = "from soft sft where sft.id=¹" + getId() + "¹ order by sft.id asc";
downcountlist = pageDAO.queryByPage(10, pageNow, "from soft sft order by sft.fDownTimes desc");
pageDAO.UpdatefgoodAndfbad(getId(), "updategood", fgoodcount);
} else if (doing.equals("Updatefbad")) {
returnstr = "Updatefgood";
HQLstr = "from soft sft where sft.id=¹" + getId() + "¹ order by sft.id asc";
downcountlist = pageDAO.queryByPage(10, pageNow, "from soft sft order by sft.fDownTimes desc");
pageDAO.UpdatefgoodAndfbad(getId(), "updatebad", fbadcount);
} else {
returnstr = "erro";
}
softs = pageDAO.queryByPage(pageSize, pageNow, HQLstr);
System.out.println(softs.size());
return returnstr;
}
/**
* @return the id
*/
public int getId() {
return id;
}
/**
* @param id the id to set
*/
public void setId(int id) {
this.id = id;
}
/**
* @return the downcountlist
*/
public List<soft> getDowncountlist() {
return downcountlist;
}
/**
* @param downcountlist the downcountlist to set
*/
public void setDowncountlist(List<soft> downcountlist) {
this.downcountlist = downcountlist;
}
/**
* @return the fbadcount
*/
public String getFbadcount() {
return fbadcount;
}
/**
* @param fbadcount the fbadcount to set
*/
public void setFbadcount(String fbadcount) {
Integer b = Integer.valueOf(fbadcount) + 1;
this.fbadcount = b.toString();
}
/**
* @return the fgoodcount
*/
public String getFgoodcount() {
return fgoodcount;
}
/**
* @param fgoodcount the fgoodcount to set
*/
public void setFgoodcount(String fgoodcount) {
Integer b = Integer.valueOf(fgoodcount) + 1;
this.fgoodcount = b.toString();
}
/**
* @return the leavatalks
*/
public List<leavetalk> getLeavatalks() {
return leavatalks;
}
/**
* @param leavatalks the leavatalks to set
*/
public void setLeavatalks(List<leavetalk> leavatalks) {
this.leavatalks = leavatalks;
}
}
第八步:配置ACTION 文件STRUTS.xml的代码如下:
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<include file="example.xml"/>
<!-- Configuration for the default package. -->
<package name="default" extends="struts-default">
<action name="softlist" class="com.action.softlistAction">
<result name="SUCCESS">test.jsp</result>
<result name="error">error.jsp</result>
</action>
</package>
</struts>
第九步:建立JSP文件 来享受结果了
test.jsp代码如下:
< import="java.sql.ResultSet"%>
< import="java.util.List"%>
< contentType="text/html"%>
< import="org.apache.struts2.ServletActionContext"%>
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<script language="javascript" type="text/javascript">
<%
String PageNow = request.getAttribute("pageNow").toString();
String pageCount = request.getAttribute("pageCount").toString();
%>
</script>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>分页测试</title>
</head>
<table style=" border: 2px">
<s:iterator value="softs">
<td><s:property value="fSoftname"/></td>
<td><s:property value="fUsedSystem"/></td>
<td><s:property value="fUpdateTime"/></td>
</s:iterator>
</table>
<div>
<ul><li><a href=¹softlist.action?pageNow=1¹>首页</a></li>
<li><a href=¹softlist.action?pageNow=<s:property value="%{PageNow-1}"/>¹> 上一页</a></li>
<li><a href=¹softlist.action?pageNow=<s:property value="%{PageNow+1}"/>¹>下一页</a></li>
<li><a href=¹softlist.action?pageNow=<%=pageCount%>¹>末页</a></li>
<li><span class="pageinfo">第<strong><s:property value="#request.pageNow"/></strong>页</span></li>
<li><span class="pageinfo">共<strong><s:property value="#request.pageCount"/></strong>页</span></li>
</ul></div>
<body>
</body>
</html>
第十步:建立link.jsp
代码:
<%--
Document : link
Created on : 2011-1-24, 18:42:14
Author : Even
--%>
< contentType="text/html" pageEncoding="GBK"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>JSP Page</title>
</head>
<body>
<h1><a href="softlist.action">单击显示效果</a></h1>
</body>
</html>
注意:后面的演示我是重新制作的页面不是我的网站页面效果所以只是完成了一个原理而已,网上很多 STRUTS2的分页文章没有一个完整的。这里面的分页原理用的是 session里面的记录集查询中的 setFirstResult和setMaxResults,关于算法大家自己去揣摩就是了很简单。
来自: http://hi.baidu.com/sunnywfg/blog/item/4aa5a563acbe5e730d33fa3f.html
访问Google很慢的解决办法
最近访问Google慢死了,Gmail也时常打不开,在网上看到了一个hosts,修改hosts后可以大幅加快Google的访问速度,支持Google搜索、Reader、网页快照、加密搜索、Gmail、文档。
程序员不要想着一辈子靠技术混饭吃
我现在是自己做,但我此前有多年在从事软件开发工作,当回过头来想一想自己,觉得特别想对那些初学JAVA/DOT .NET技术的朋友说点心里话,希望你们能从我们的体会中,多少受点启发(也许我说的不好,你不赞同但看在我真心的份上别扔砖头啊)。
一、在中国你千万不要因为学习技术就可以换来稳定的生活和高的薪水待遇,你千万更不要认为哪些从事市场开发,跑腿的人,没有前途。
不知道你是不是知道,咱们中国有相当大的一部分软件公司,他们的软件开发团队都小的可怜,甚至只有1-3个人,连一个项目小组都算不上,而这样的团队却要承担一个软件公司所有的软件开发任务,在软件上线和开发的关键阶段需要团队的成员没日没夜的加班,还需要为测试出的BUG和不能按时提交的软件模块功能而心怀忐忑,有的时候如果你不幸加入现场开发的团队你则需要背井离乡告别你的女友,进行封闭开发,你平时除了编码之外就是吃饭和睡觉(有钱的公司甚至请个保姆为你做饭,以让你节省出更多的时间来投入到工作中,让你一直在那种累了就休息,不累就立即工作的状态). 更可怕的是,会让你接触的人际关系非常单一,除了有限的技术人员之外你几乎见不到做其他行业工作和职位的人,你的朋友圈子小且单一,甚至破坏你原有的爱情(想象一下,你在外地做现场开发2个月以上,却从没跟女友见过一面的话,你的女友是不是会对你呲牙裂嘴)。
也许你拿到了所谓的白领的工资,但你却从此失去享受生活的自由,如果你想做技术人员尤其是开发人员,我想你很快就会理解,你多么想在一个地方长期待一段时间,认识一些朋友,多一些生活时间的愿望。
比之于我们的生活和人际关系及工作,那些从事售前和市场开发的朋友,却有比我们多的多的工作之外的时间,甚至他们工作的时间有的时候是和生活的时间是可以兼顾的,他们可以通过市场开发,认识各个行业的人士,可以认识各种各样的朋友,他们比我们坦率说更有发财和发展的机会,只要他们跟我们一样勤奋。(有一种勤奋的普通人,如果给他换个地方,他马上会成为一个勤奋且出众的人。)
二、在学习技术的时候千万不要认为如果做到技术最强,就可以成为100%受尊重的人。
有一次一个人在面试项目经理的时候说了这么一段话:我只用最听话的人,按照我的要求做只要是听话就要,如果不听话不管他技术再好也不要。随后这个人得到了试用机会,如果没意外的话,他一定会是下一个项目经理的继任者。
朋友们你知道吗?不管你技术有多强,你也不可能自由的腾出时间象别人那样研究一下LINUX源码,甚至写一个LINUX样的杰作来表现你的才能。你需要做的就是按照要求写代码,写代码的含义就是都规定好,你按照规定写,你很快就会发现你昨天写的代码,跟今天写的代码有很多类似,等你写过一段时间的代码,你将领略:复制,拷贝,粘贴那样的技术对你来说是何等重要。(如果你没有做过1年以上的真正意义上的开发不要反驳我)。
如果你幸运的能够听到市场人员的谈话,或是领导们的谈话,你会隐约觉得他们都在把技术人员当作编码的机器来看,你的价值并没有你想象的那么重要。而在你所在的团队内部,你可能正在为一个技术问题的讨论再跟同事搞内耗,因为他不服你,你也不服他,你们都认为自己的对,其实你们两个都对,而争论的目的就是为了在关键场合证明一下自己比对方技术好,比对方强。(在一个项目开发中,没有人愿意长期听别人的,总想换个位置领导别人。)
三、你更不要认为,如果我技术够好,我就自己创业,自己有创业的资本,因为自己是搞技术的。
如果你那样认为,真的是大错特错了,你可以做个调查在非技术人群中,没有几个人知道C#与JAVA的,更谈不上来欣赏你的技术是好还是不好。一句话,技术仅仅是一个工具,善于运用这个工具为别人干活的人,却往往不太擅长用这个工具来为自己创业,因为这是两个概念,训练的技能也是完全不同的。
创业最开始的时候,你的人际关系,你处理人际关系的能力,你对社会潜规则的认识,还有你明白不明白别人的心,你会不会说让人喜欢的话,还有你对自己所提供的服务的策划和推销等等,也许有一万,一百万个值得我们重视的问题,但你会发现技术却很少有可能包含在这一万或一百万之内,如果你创业到了一个快成功的阶段,你会这样告诉自己:我干吗要亲自做技术,我聘一个人不就行了,这时候你才真正会理解技术的作用,和你以前做技术人员的作用。
小结
基于上面的讨论,我奉劝那些学习技术的朋友,千万不要拿科举考试样的心态去学习技术,对技术的学习几近的痴迷,想掌握所有所有的技术,以让自己成为技术领域的权威和专家,以在必要的时候或是心里不畅快的时候到网上对着菜鸟说自己是前辈。
技术仅仅是一个工具,是你在人生一个阶段生存的工具,你可以一辈子喜欢他,但最好不要一辈子靠它生存。
掌握技术的唯一目的就是拿它找工作(如果你不想把技术当作你第二生命的话),就是干活。所以你在学习的时候千万不要去做那些所谓的技术习题或是研究那些帽泡算法,最大数算法了,什么叫干活?
就是做一个东西让别人用,别人用了,可以提高他们的工作效率,想象吧,你做1万道技术习题有什么用?只会让人觉得酸腐,还是在学习的时候,多培养些自己务实的态度吧,比如研究一下当地市场目前有哪些软件公司用人,自己离他们的要求到底有多远,自己具体应该怎么做才可以达到他们的要求。等你分析完这些,你就会发现,找工作成功,技术的贡献率其实并没有你原来想象的那么高。
不管你是学习技术为了找工作还是创业,你都要对技术本身有个清醒的 认识,在中国不会出现BILL GATES,因为,中国目前还不是十分的尊重技术人才,还仅仅的停留在把软件技术人才当作人才机器来用的尴尬境地。(如果你不理解,一种可能是你目前仅仅从事过技术工作,你的朋友圈子里技术类的朋友占了大多数,一种可能是你还没有工作,但喜欢读比尔盖茨的传记)。
文章来源:blog.csdn.net/chen__jinfei/article/details/5178144
一名程序员的自我诊断书
病人情况
今年7月份毕业于某非著名城市某非著名本科院校,专业方向是计算机师范类,但是选择了传说中牛逼叉叉的程序员这个行业,放弃了去初中或者高中的当一枚伟大的人类灵魂工程师(教师)的职业,而且还选择据说门槛最低的PHP语言,去年十月份,南漂于据说是人间天堂的杭州,真正的程序员生涯大概是在快毕业的时候(5月份),喝罢散伙酒,吃完散伙饭,大学四年同学感情的点点滴滴只能存在记忆,现有女友一枚,蜗居于杭。
病症表现
感觉生活每天忙忙碌碌,碌碌无为,时间一天天重复,物价一天天飞涨,自己只能艰难靠自己的工资生活,每当夜晚来临的时候,晚上睡觉前的时候,总感觉生活总是少了些什么,惊慌和忧虑困扰着自己。
病人的一天活动
公司上班时间:8:30--17:30, 午休2.5h,住处到公司大概2.5kM
6:30醒来,在床上赖上30分钟
7:00开始拿起手机,使用uc看了一下cnbeta的新闻
7:30开始起床
7:45左右开始骑自行车上班
8:05到公司 停车 打卡
8:10 到公司 开启电脑 倒杯开水 QQ 博客园 csdn 等等
8:30 公司上班时间
9:00 开启 ecilips dw 等等工具开始工作
11:30 去吃饭
12:00 回到办公室 又是qq 博客园 微博 音乐等等
13:00 开始休息
14:00 醒来 洗洗脸 继续工作
17:30 公司下班时间, 自己习惯性的留下来加班 查看今天遇到的问题所涉及的知识点 解决没有解决的问题
18:00 主任提醒该下班了
19:00开始准备下班走人
19:20开始到家
19:30 开始自己做饭, 等女友回来吃饭, 吃完饭 刷锅洗碗
20:30在优酷上看一集电视剧
21:30洗澡等等
22:00开始准备睡觉休息
22:20进入梦乡
“医生”诊断
1、该病人属于典型的蚁族一类----(非著名高校,典型穷二代,某偏僻农村)
2、该病人的处于校园思想和社会大环境的思想冲撞之中(尤其是刚刚毕业的学生,豪情万丈出校园,结果发现社会与学校是两回事)
3、该病人是典型的80后的焦虑综合症(房价,物价……都在涨,只有工资如蜗牛,女友可能考虑结婚买房,父母想着好不容易培养出来村子里唯一一枚大学生,要儿子有出息……)
4、该病人处于人生迷茫阶段(刚毕业的学生不知道如何定位自己,如何给自己做好人生规划,才会感觉生活忙忙碌碌,随波逐浪,但是内心又豪情万丈,以至于感觉惊慌和困扰不安)
“医生”建议
生活态度
1. 做实事
不要抱怨,不解释。
2. 欲速则不达
不要用小聪明、权宜之计解决问题,有些东西必须勇敢彻底的解决。
3. 对事不对人
就事论事,明智、真诚、虚心地讨论问题,提出创新方案。
4. 排除万难,奋勇前进
勇气往往是克服困难的唯一方法。
生活压力
对物价上涨等,各个方面的压力的态度,推荐一种经典的图:

工作学习
把握开发节奏
控制好时间,养成好习惯,不要加班。加班不是好习惯,个人感觉效率不高。
1、今日事今日毕 要有肯钻研的精神和态度去学习工作
2、懂得丢弃 程序员对于老的套路和技术该丢弃就丢弃,不要因循守旧!
3、跟踪变化 新技术总是层出不穷,对于新技术学习要以解决工作问题为动机,切忌一味的跟风
4、搞好团队关系 一个良好的团队不仅是一种很好的氛围,更重要是对于提高自身和技术交流的一个重要因素。
5、站在用户的角度思考问题 做出来的产品都是给不懂电脑的人看的,不是给你们这些程序员看的,所以不要骂用户白痴,而要反省自己。
6、及时做好个人总结 以及开发文档的整理
7、伟大是熬出来! 贵在坚持
针对你的生活药方
你个人浪费时间的地方:
1:赖床 和在床上玩手机
2:qq 微博等等社交类网站 因为早上 中午 晚上 睡觉 也就是说一天光顾了四次 可以节约成一次
3:工作的时候没有计划性
针对你一天时间的建议:
1:工作之前写写一下一天的工作计划标签
2:禁止多次在qq等上闲逛
3:不要赖床和在床上玩手机
4:做事情要快速点,勤奋点,因为人一旦懒惰,就很难在勤奋起来了。
使用方法
日日坚持,坚持是一种美德,伟大是熬出来的!
注意事项:
1、忌骄忌躁,需要长期坚持才可有限
2、本药方因人而异,切忌胡乱生搬硬套,使用前请先咨询医生
3、资深愤青就要不要用了
文章来源:PHP淮北
Discuz! X2头像不显示
当你升级Discuz或者程序安装不正常时,可能会导致登录后头像不显示,注册会员头像也不显示的情况,这很可能是路径错误或者通信密钥不一致导致的。
如果出现以上discuz头像不显示的情况时,可以通过以下步骤进行尝试:
1、使用管理员身份登录Discuz! X2后台;
2、站长——UCenter设置,看看“UCenter访问地址”是否正确,例如 http://localhost:8088/discuz_x2/uc_server,注意此处uc_server后面是没有“/”的;
3、站长——UCenter设置,看看“UCenter通信密钥”是否与UCenter——应用管理中的“通信密钥”一致,若不一致,可以拷贝其中一个到另一个以确保一致。
完成以上步骤后到前台界面看看头像是否可以正常显示了,有些浏览器可能由于缓存问题不能马上看到效果,建议重新打开浏览器试试或使用另一种浏览器打开网站。
- 默认分类(20)
- J2EE(25)
- Java(56)
- PHP(55)
- SEO(10)
- 网页设计(20)
- 网站建设(37)
- 数据库(7)
- JavaScript(17)
- JQuery(6)
- MySQL(20)
- SQL Server(6)
- Access(1)
- Oracle(6)
- office(6)
- Dreamweaver(4)
- Photoshop(12)
- Flash(9)
- Fireworks(13)
- CSS(14)
- HTML(4)
- .NET(7)
- ASP(2)
- DB2(1)
- Ajax(2)
- Linux(12)
- Struts(7)
- Hibernate(8)
- Spring(2)
- Jsp(22)
- Asp(8)
- C#(3)
- C++(1)
- 网络安全(5)
- 软件工程(7)
- XML(1)
- English(2)
- 计算机等级考试(2)
- 计算机病毒(4)
- 个人日志(76)
- 互联网(15)
- ActionScript(10)
- Android(3)
- 数据结构与算法(1)
- 游戏策略(3)
- 美文翻译(2)
- 编程开发(19)
- 计算机应用(4)
- 计算机(10)
- Unity3d(6)
- 其他(1)
- egret(1)