2006年8月15日
http://ubuntu.dormforce.net/使用说明
打开Software Manager,点击Edit⇒Software Sources
在Download from中选择Other
选择China⇒mirrors.ustc.edu.cn
点击Choose Server
a wonderful Eclipse plugin:
WindowBuilder, which can be used to develope Swing/SWT UI:
WindowBuilder is built as a plug-in to Eclipse and the various Eclipse-based IDEs (RAD, RSA, MyEclipse, JBuilder, etc.). The plug-in builds an abstract syntax tree (AST) to navigate the source code and uses GEF to display and manage the visual presentation.
Develop Java graphical user interfaces in minutes for Swing, SWT, RCP and XWT with WindowBuilder Pro's WYSIWYG, drag-and-drop interface. Use wizards, editors and intelligent layout assist to automatically generate clean Java code, with the visual design and source always in sync.
The project website: http://www.eclipse.org/windowbuilder/
To install the plugin in Eclipse: http://www.eclipse.org/windowbuilder/download.php
Example:
abc 1000 3452 2463 2343 2176 7654 3452 8765 5643 3452
abc 1000 3452 2463 2343 2176 7654 3452 8765 5643 3452
tas 3420 3562 2123 1343 2176 7654 3252 8765 5643 3452
aer 1000 3452 2463 2343 2176 7654 3452 8765 5643 3452
tas 3420 3562 2123 1343 2176 7654 3252 8765 5643 3452
UNIX:display the no of occurance and the record
> sort f1.txt|uniq -c
2 abc 1000 3452 2463 2343 2176 7654 3452 8765 5643 3452
1 aer 1000 3452 2463 2343 2176 7654 3452 8765 5643 3452
2 tas 3420 3562 2123 1343 2176 7654 3252 8765 5643 3452
display only the duplicate records
> sort f1.txt|uniq -dabc 1000 3452 2463 2343 2176 7654 3452 8765 5643 3452
tas 3420 3562 2123 1343 2176 7654 3252 8765 5643 3452
display distinct records
> sort f1.txt|uniqabc 1000 3452 2463 2343 2176 7654 3452 8765 5643 3452
aer 1000 3452 2463 2343 2176 7654 3452 8765 5643 3452
tas 3420 3562 2123 1343 2176 7654 3252 8765 5643 3452
Reference:
Shell: How To Remove Duplicate Text Lines
Windows:
Notepad++ can sort by line, and remove the duplicate lines at the same time.
- Open the menu under: TextFX-->TextFX Tools
Make sure "sort outputs only unique..." is checked
select a block of text (ctrl-a to select the entire document).
click "sort lines case sensitive" or "sort lines case insensitive"
1.安装JAVA环境
sudo apt-get install sun-java5-jre
2.下载tomcat: http://tomcat.apache.org/
3.解压tomcat
$sudo tar zxvf apache-tomcat-7.0.26.tar.gz -C /opt
$sudo mv /opt/apache-tomcat-7.0.26.tar.gz /opt/tomcat
4.启动tomcat
$sudo /opt/tomcat/bin/startup.sh
如果能看到下列提示,就表明启动成功了!
>Using CATALINA_BASE: /opt/tomcat
>Using CATALINA_HOME: /opt/tomcat
>Using CATALINA_TMPDIR: /opt/tomcat/temp
>Using JRE_HOME: /usr/lib/j2sdk1.5-sun
打开Firefox,在地址栏中输入http://localhost:8080,如果出来Tomcat的缺省界面,说明测试通过!
5.停止Tomcat服务
$sudo /opt/tomcat/bin/shutdown.sh
1.下载安装 RubyInstaller: http://rubyforge.org/frs/?group_id=167&release_id=46588
2. 检查 RubyGems 版本,须高于 1.3.6
gem -v
3.如果版本不是最新,可以通过下面的命令更新至最新版本:
gem update --system
gem uninstall rubygems-update
4.安装 Rails:
gem install rails
1.按照github上的指南配置(
http://help.github.com/win-set-up-git/)基础的git环境。
2.在github上创建一个Repository。
3.在Eclipse中通过“Eclipse Marketplaces”,在Market Places里安装egit。
4.在Eclipse中生public key, 并添加到GitHub Repository中。
Eclipse中通过:performance -> SSH2 -> Key Management -> Gernerate RSA Key 生成 SSH 的 public key。
在GitHub中通过:edit your profile -> ssh key -> Add SSH Key 添加SSH Key, 把上面生成的 public key 拷贝到这里,保存。
5.Eclipse里File菜单,Import,即可从git导入刚添加到git的项目了。
6.修改,并提交。在项目上点右键–>team–>commit。commit是commit到本机的git库,而push才是同步到github。
1.下载最新版 Eclipse:
官方下载:http://www.eclipse.org/downloads/
2.解压下载的压缩包:
$sudo tar xvfz eclipse-SDK-3.1.2-linux-gtk.tar.gz -C /opt
这个时候,就可以在 /opt 文件夹中看到出现了一个eclipse的文件夹,双击其中的eclipse文件就可以运行eclipse了。
3.在菜单设置Eclipse选项: $gedit ~/.local/share/applications/eclipse-user.desktop
插入一下内容:
[Desktop Entry]
Comment=Java IDE
Name=Eclipse
Exec=/opt/eclipse/eclipse
Encoding=UTF-8
Terminal=false
Type=Application
Categories=Application;Development;
Icon=/opt/eclipse/icon.xpm
方法1: 用SET PASSWORD命令
mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
方法2:用mysqladmin
mysqladmin -u root password "newpass"
如果root已经设置过密码,采用如下方法
mysqladmin -u root password oldpass "newpass"
方法3: 用UPDATE直接编辑user表
mysql -u root
mysql> use mysql;
mysql> UPDATE user SET Password = PASSWORD('newpass') WHERE user = 'root';
mysql> FLUSH PRIVILEGES;
方法4: 在丢失root密码的时候,可以这样
mysqld_safe --skip-grant-tables&
mysql -u root mysql
mysql> UPDATE user SET password=PASSWORD("new password") WHERE user='root';
mysql> FLUSH PRIVILEGES;
---------------------------------------
经测试,方法三修改成功,其他三种方法没有测试。
一.问题环境:
Eclipse3.4 + Tomcat6.0.20
二.问题现象:
在Eclipse下启动Tomcat6时,控制台会有下面警告信息
警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:...' did not find a matching property.
三.详细解决办法:
1.打开服务器视图:窗口 > 显示视图 > 服务器 > 服务器
2.双击服务器列表中的Tomcat,打开“服务器概述”窗口
3.选中"Publish module contexts to separate XML files"选项。
小提示:如果Tomcat处于启动状态,请先停止,否则,在保存服务器设置时,提示不能保存。
Here is a simple way to generate a analyze report by using FindBugs plugins in RSA:
- Using FindBugs to scan the code and save the result as XML file
- the XML report is in a bad format for reading, we can use XSL file to make it easy and clear to read:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="summary.xsl"?>
- Use Internet Explore to open the XML report, now we get a report:
Note: FindBugs provided following xsl files for different format: 1、default.xsl;
2、fancy.xsl;
3、fancy-hist.xsl;
4、plain.xsl;
5、summary.xsl;
摘要: GZIP
1. Compressing a File in the GZIP Format
2. Uncompressing a File in the GZIP Format
ZIP
1. Creating a ZIP File
2. Listing the Contents of a ZIP File
3. Retrieving a Compressed File from a ZIP File
阅读全文
摘要: 使用 JSEclipse,JavaScript 程序员现在有了自己的 Eclipse 插件,该插件将提供许多重要功能来辅助开发 JavaScript 应用程序。像 Eclipse 多年来为 Java™ 语言和其他语言提供了易用性一样,JSEclipse 为 JavaScript 开发人员提供了同样的优点。
阅读全文
分享一个不错的编写properties文件的Eclipse插件(plugin),有了它我们在编辑一些简体中文、繁体中文等
Unicode文本时,就不必再使用native2ascii编码了。您可以通过Eclipse中的软件升级(Software
Update)安装此插件,步骤如下:
1、展开Eclipse的Help菜单,将鼠标移到Software Update子项,在出现的子菜单中点击Find and Install;
2、在Install/Update对话框中选择Search for new features to install,点击Next;
3、在Install对话框中点击New Remote Site;
4、在New Update Site对话框的Name填入“PropEdit”或其它任意非空字符串,在URL中填入http://propedit.sourceforge.jp/eclipse/updates/;
5、在Site to include to search列表中,除上一步加入的site外的其它选项去掉,点击Finsih;
6、在弹出的Updates对话框中的Select the features to install列表中将所有结尾为“3.1.x”的选项去掉(适用于Eclipse 3.2版本的朋友);
7、点击Finish关闭对话框;
8、在下载后,同意安装,再按提示重启Eclipse,在工具条看到形似vi的按钮表示安装成功,插件可用。此时,Eclpise中所有properties文件的文件名前有绿色的P的图标作为标识。
摘要: 在Eclipse中遇到The type XXX cannot be resolved. It is indirectly referenced from required .class files错误.....,查找的解决办法如下:
阅读全文
摘要: 要對資料庫管理系統進行操作,最基本的就是使用SQL(Standard Query Language)語句,大部份的資料庫都支援標準的SQL語句,然而也有一些特定於資料庫的SQL語句,應用程式配合SQL語句進行資料庫查詢時,若使用到特定於資料庫的SQL語句,程式本身會有相依於特定資料庫的問題。
使用Hibernate時,即使您不了解SQL的使用與撰寫,也可以使用它所提供的API來進行SQL語句查詢,org.hibernate.Criteria對SQL進行封裝,您可以從Java物件的觀點來組合各種查詢條件,由Hibernate自動為您產生SQL語句,而不用特別管理SQL與資料庫相依的問題。
阅读全文
整理自:
SpringSide中文论坛
实际执行任务的Class: CourseService
public
class
CourseService
{
public
void
sendCourseEnrollmentReport()
{
System.out.println(
"
HelloWorld
"
);
}
}
调度任务的Class: TaskApp
import
org.springframework.beans.factory.BeanFactory;
import
org.springframework.beans.factory.xml.XmlBeanFactory;
import
org.springframework.core.io.FileSystemResource;
public
class
TaskApp
{
public
static
void
main(String[] args)
throws
Exception
{
BeanFactory factory
=
new
XmlBeanFactory(
new
FileSystemResource(
"
WebRoot/WEB-INF/classes/scheduleTask.xml
"
));
factory.getBean(
"
z
"
);
}
}
配置调度执行任务的配置文件:
scheduleTask.xml
<?
xml version="1.0" encoding="UTF-8"
?>
<!
DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"
>
<
beans
>
<!--
起动Bean
-->
<
bean
id
="z"
class
="org.springframework.scheduling.quartz.SchedulerFactoryBean"
>
<
property
name
="triggers"
>
<
list
>
<
ref
bean
="cronReportTrigger"
/>
</
list
>
</
property
>
</
bean
>
<!--
实际的工作Bean
-->
<
bean
id
="courseService"
class
="CourseService"
>
</
bean
>
<!--
jobBean用于设定启动时运用的Bean与方法
-->
<
bean
id
="scheduledReportJobDetail"
class
="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"
>
<
property
name
="targetObject"
>
<
ref
bean
="courseService"
/>
</
property
>
<
property
name
="targetMethod"
>
<
value
>
sendCourseEnrollmentReport
</
value
>
</
property
>
</
bean
>
<!--
定时器设定起动频率&启动时间我设的是每5秒起动一次 (0 0 4 * * ?每日四点起动.)
-->
<
bean
id
="cronReportTrigger"
class
="org.springframework.scheduling.quartz.CronTriggerBean"
>
<
property
name
="jobDetail"
>
<
ref
bean
="scheduledReportJobDetail"
/>
</
property
>
<
property
name
="cronExpression"
>
<
value
>
10,15,20,25,30,35,40,45,50,55 * * * * ?
</
value
>
</
property
>
</
bean
>
</
beans
>
关于配置文件中参数cronExpression的说明:
字段 允许值 允许的特殊字符
秒
0
-
59
,
- * /
分
0
-
59
,
- * /
小时
0
-
23
,
- * /
日期
1
-
31
,
- * ? / L W C
月份
1
-
12
或者 JAN-DEC
,
- * /
星期
1
-
7
或者 SUN-SAT
,
- * ? / L C #
年(可选) 留空
,
1970
-
2099
,
- * /
表达式意义:
"
0 0 12 * * ?
"
每天中午12点触发
"
0 15 10 ? * *
"
每天上午10:15触发
"
0 15 10 * * ?
"
每天上午10:15触发
"
0 15 10 * * ? *
"
每天上午10:15触发
"
0 15 10 * * ? 2005
"
2005年的每天上午10:15触发
"
0 * 14 * * ?
"
在每天下午2点到下午2:59期间的每1分钟触发
"
0 0/5 14 * * ?
"
在每天下午2点到下午2:55期间的每5分钟触发
"
0 0/5 14,18 * * ?
"
在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
"
0 0-5 14 * * ?
"
在每天下午2点到下午2:05期间的每1分钟触发
"
0 10,44 14 ? 3 WED
"
每年三月的星期三的下午2:10和2:44触发
"
0 15 10 ? * MON-FRI
"
周一至周五的上午10:15触发
"
0 15 10 15 * ?
"
每月15日上午10:15触发
"
0 15 10 L * ?
"
每月最后一日的上午10:15触发
"
0 15 10 ? * 6L
"
每月的最后一个星期五上午10:15触发
"
0 15 10 ? * 6L 2002-2005
"
2002年至2005年的每月的最后一个星期五上午10:15触发
"
0 15 10 ? * 6#3
"
每月的第三个星期五上午10:15触发
0
6
* * * 每天早上6点
0
*/
2
* * * 每两个小时
0
23
-
7
/
2
,
8
* * * 晚上11点到早上8点之间每两个小时,早上八点
0
11
4
*
1
-
3
每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0
4
1
1
* 1月1日早上4点
Download:
Quartz
相关文档:
http://blog.csdn.net/ezerg/archive/2004/09/24/115894.aspx
http://blog.csdn.net/yujiebo025/archive/2005/09/13/479049.aspx
http://blog.csdn.net/mengz/archive/2005/01/13/252267.aspx
http://blog.csdn.net/jorwang/archive/2005/05/12/374111.aspx
http://blog.csdn.net/Mailbomb/archive/2005/10/26/517128.aspx
http://blog.csdn.net/stonecai/archive/2007/01/06/1475745.aspx
http://landerchan.spaces.live.com/Blog/cns!8759A7C5A9737DC!116.entry
http://hanxinyu.javaeye.com/blog/37000
http://www.onjava.com/pub/a/onjava/2004/03/10/quartz.html
摘要: JDK 5 新增一些特性来简化开发,这些特性包括泛型,for-each 循环,自动装包/拆包,枚举,可变参数, 静态导入 。使用这些特性有助于我们编写更加清晰,精悍,安全的代码。
阅读全文
<
ec:table
items
="itemList"
var
="item"
action
="${pageContext.request.contextPath}/query.do"
retrieveRowsCallback
="limit"
filterRowsCallback
="limit"
sortRowsCallback
="limit"
>
<
ec:exportXls
fileName
="CouponList.xls"
tooltip
="导出 Excel"
/>
<
ec:row
>
<
ec:column
property
="rowcount"
cell
="rowCount"
sortable
="false"
title
="序号"
/>
<
ec:column
property
="id"
title
="编号"
/>
<
ec:column
property
="type"
title
="种类"
>
${typeMap[item.type]}
</
ec:column
>
<
ec:column
property
="name"
title
="名称"
/>
<
ec:column
property
="beginDate"
title
="开始时间"
cell
="calendar"
format
="date"
/>
<
ec:column
property
="endDate"
title
="结束时间"
cell
="calendar"
format
="date"
/>
<
ec:column
property
="state"
title
="状态"
>
${statusmap[coupon.status]}
</
ec:column
>
<
ec:column
property
="edit"
title
="操作"
sortable
="false"
viewsAllowed
="html"
style
="width: 56px;text-align: center"
>
<
A
href
="<c:url value="
/security/user.do?method
=selectRoles&userId=${user.id}"
/>
">
<
img
src
="<c:url value="
/images/icon/16x16/manage.gif"
/>
" border="0"/>
</
A
>
</
ec:column
>
</
ec:row
>
</
ec:table
>
其中:
retrieveRowsCallback="limit"
filterRowsCallback="limit"
sortRowsCallback="limit"
指定了callback函数 limit
在controller 中的处理:
/**
* 列表查看
*/
protected
void
onList(HttpServletRequest request,HttpServletResponse response, ModelAndView mav)
throws
Exception
{
Limit limit
=
ExtremeTablePage.getLimit(request);
Map map
=
WebUtils.getParametersStartingWith(request,
"
search_
"
);
Page page
=
service.queryForPage(map,ExtremeTablePage.getSort(limit),limit.getPage(), limit.getCurrentRowsDisplayed());
mav.addObject(
"
itemList
"
, page.getResult());
mav.addObject(
"
totalRows
"
,page.getTotalCount());
}
摘自:
chinaunix
SELECT
S.SID SESSION_ID, S.USERNAME, DECODE(LMODE,
0
,
'
None
'
,
1
,
'
Null
'
,
2
,
'
Row-S (SS)
'
,
3
,
'
Row-X (SX)
'
,
4
,
'
Share
'
,
5
,
'
S/Row-X (SSX)
'
,
6
,
'
Exclusive
'
, TO_CHAR(LMODE)) MODE_HELD, DECODE(REQUEST,
0
,
'
None
'
,
1
,
'
Null
'
,
2
,
'
Row-S (SS)
'
,
3
,
'
Row-X (SX)
'
,
4
,
'
Share
'
,
5
,
'
S/Row-X (SSX)
'
,
6
,
'
Exclusive
'
, TO_CHAR(REQUEST)) MODE_REQUESTED, O.OWNER
||
'
.
'
||
O.
OBJECT_NAME
||
'
(
'
||
O.OBJECT_TYPE
||
'
)
'
, S.TYPE LOCK_TYPE, L.ID1 LOCK_ID1, L.ID2 LOCK_ID2
FROM
V$LOCK L, SYS.DBA_OBJECTS O, V$SESSION S
WHERE
L.SID
=
S.SID
AND
L.ID1
=
O.
OBJECT_ID
执行上记SQL语句,可以查寻到数据库中的锁的情报.
SESSION_ID, USERNAME, MODE_HELD, MODE_REQUESTED, OBJECT_NAME, LOCK_TYPE, LOCK_ID
分别是 拥有锁的SESSION_ID,拥有锁的USERNAME,锁的执行模式MODE_HELD,锁的请求MODE_REQUESTED,锁所在的数据库对象名
,锁的类型,锁的ID
摘要: Java中的多线程使用synchronized关键字实现同步.为了避免线程中使用共享资源的冲突,当线程进入synchronized的共享对象时,将为共享对象加上锁,阻止其他的线程进入该共享对象.但是,正因为这样,当多线程访问多个共享对象时,如果线程锁定对象的顺序处理不当话就有可能线程间相互等待的情况,即常说的: 死锁现象.
阅读全文
摘要: Java Socket简单入门例子.
阅读全文
Dear all:
result love(boy, girl)
{
if ( boy.有房() and boy.有车() )
{boy.set(nothing);
return girl.嫁给(boy); }
if ( girl.愿意等() )
{
while( ! (boy.赚钱 > 100,000 and girl.感情 > 8 )
{for ( day=1; day <=365; day++)
{if ( day == 情人节 )
if ( boy.give girl(玫瑰) )
girl.感情++;
else
girl.感情--;
if( day == girl.生日)
if ( boy.give girl(玫瑰) )
girl.感情++;
else
girl.感情--;
boy.拼命赚钱();
}
}
if ( boy.有房() and boy.有车() )
{ boy.set(nothing);
return girl.嫁给(boy);
}
年龄++;
girl.感情--;
return girl.goto( another_boy);
}
(注:稍懂点C语言的应该都能看懂吧!)
摘要: 组件(Component)类必须在类一级定义@Embeddable注解.
在特定的实体的关联属性上使@Embedded和@AttributeOverride注解可以覆盖该属性对应的嵌入式对象的字段映射:
阅读全文
摘要: 1.简单主键:
使用@Id注解可以将实体bean中的某个属性定义为标识字段.使用 @GeneratedValue注解可以定义标识字段的生成策略:
AUTO - 可以是identity类型的字段,或者sequence类型或者table类型,取决于不同的底层数据库.
TABLE - 使用表保存id值
IDENTITY - identity字段
SEQUENCE - sequence
阅读全文
摘要: 1. 基本属性映射
通过 @Basic 可以声明属性的存取策略:
@Basic(fetch=FetchType.EAGER) 即时获取(默认的存取策略)
@Basic(fetch=FetchType.LAZY) 延迟获取
阅读全文
摘要: Displaytag1.1支持在外部实现大数据量分页。主要有两种方式实现:
Displaytag 1.1 offers two alternative ways for working with partial lists:
the first one uses the valuelist pattern, and requires that the object that you give to displaytag implements the org.displaytag.pagination.PaginatedList interface. You can pass this object to displaytag as an usual list, and it will extract paging and sorting information from it. This way is more recommended if you have to build your backend layer and you can easily
阅读全文
1.打开
Google主页
2.把浏览器地址栏清空,再将下面的内容复制到地址栏内:
javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300; y4=200; x5=300; y5=200; DI=document.images; DIL=DI.length; function A(){for(i=0; i-DIL; i++){DIS=DI[ i ].style; DIS.position='absolute'; DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5; DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5}R++}setInterval('A()',5); void(0);
3.回车....
摘要: Launchy,一款免费开源软件实现了键盘快捷启动程序的功能。
你只需要输入程序的名称,Launchy就可以自动帮你匹配出你想要运行的程序:
阅读全文
摘要: Table
Table用来定义entity主表的name,catalog,schema等属性。
元数据属性说明:
name: 表名
catalog: 对应关系数据库中的catalog
schema:对应关系数据库中的schema
UniqueConstraints:定义一个UniqueConstraint数组,指定需要建唯一约束的列
阅读全文
摘要: Apache的Jakata项目的POI子项目,目标是处理ole2对象。
POI可以到
http://www.apache.org/dyn/closer.cgi/jakarta/poi/
下载。...
阅读全文
摘要: 方法一:循环元素删除
方法二:通过HashSet剔除
方法三:删除ArrayList中重复元素,保持顺序
阅读全文
摘要: As per the documentation on MySQL I moved the storage of passwords from using Password() to using MD5(). I read a number of places that stated that this was a method that couldn't be reversed and it was far more secure than the previous method. I was feeling confident that life was about to get a little more secure. While going through my daily RSS feeds and mailing lists for SpikeSource, I happenned upon a thread about someone discussing how easy it was to break MD5 hashes. It was a simple matt
阅读全文
摘要: name="resultList" 将记录集存在session或者request中的键值
pagesize="100" 每页显示100条数据
sort="external" 外部排序
id="row" 表格id值,用于程序得相关的参数
partialList="true" 分段从数据库中读数据
size="resultSize" 记录的总条数,用于计算总页数
阅读全文
摘要: Apache jakarta
各项目主要用途及简单说明
来源出处:http://www.javaworld.com.tw/jute/post/view?bid=11&id=1672
为了让大...
阅读全文
一定得是N层结构,
层数越多越好,层少了用户会误会我们不重视,
什么数据访问层呀,实体控制层啊,能给他加上的全加上。
程序员一定都得是老鸟,30以下基本不考虑,
还得清一色的外企空降兵,
都有10年以上编程经验的那种,用过的语言越多越好,
编程都不带查MSDN的,牛吧!
程序员个个都配IBM笔记本,
CPU要3G以上的,内存硬盘和屏幕都要最大的,
扩展槽别剩下,能插上的全插上。
能安的操作系统全安上,开机一屏幕上就一堆系统等你选,
倍有面子!
系统平台就得是J2EE,人家竞争对手除了C++就是JAVA,
你要用一.NET都不好意思和别人打招呼。
你说这样的系统设计出来得卖多少钱?
我觉得怎么也得100万吧?
100万,那是单机版!
1000万起!
你还别嫌太贵,还不免实施服务费。
你得研究有钱用户得心理,
愿意花1000万买这套软件用的,
根本不在乎再多花上几百万!
什么叫软件泡沫你知道么?
软件泡沫就是做都做最复杂的,
用就得用最贵的,还得特难用,显得用户水平高。
所以我们搞软件的口号就是:
不求好用,但求费劲!
摘要: 参考文档:使用 Spring 更好地处理 Struts 动作
可以通过三种方式实现Spring管理Struts Action:
1.使用 Spring 的 ActionSupport 类整合 Structs
2.使用 Spring 的 DelegatingRequestProcessor 覆盖 Struts 的 RequestProcessor
3.将 Struts Action 管理委托给 Spring 框架
阅读全文
摘要: 元字符及其在正则表达式中行为的列表
阅读全文
摘要: 1.如果存在就更新,不存在就插入用一个语句实;
2.分页算法;
3.抽取/删除重复记录;
阅读全文
摘要: EssentialPIM 是一套非常不错的个人时间日程安排软件,它具有相当方便的操作接口,让使用者能够对于所排定的行程一目了然,而每一个事件也都允许使用者进行夹档,让你可以把例如会议结果、计划案等数据附带于该记录中。往后,使用者就能够直接对所输入的数据进行搜寻,让你不论在何时都能够找到该事件发生时的一些特定信息。
阅读全文
摘要: Windows Live Writer
MS推出的写日志工具,一个桌面程序,需要在本地安装,并且需要安装 .NET Framework SDK.界面UI十分友好,支持主要的Blog API,包括:Windows Live Spaces,RSD ,Metaweblog API,Movable Type API 和 WordPress.
阅读全文
摘要: JSTL包含以下的标签:
常用的标签:如 c:out、c:remove、c:catch、c:set等
条件标签:如 c:if、c:when、c:choose、c:otherwise等
URL标签:如 c:import、c:redirect 和 c:url 等
XML标签:如 xml:out 等
国际化输出标签:如 fmt:timeZone 等
SQL标签:如 sql:query、sql:update、sql:transaction 等
阅读全文
摘要: 在SpringSide里翻到一个好东西: jodd:form
阅读全文
使用forward的話,網址列上並不會出現被轉發的目標位址,而且forward是在Web應用程式之內進行,可以訪問Web應用程式的隱藏目錄,像是WEB-INF,然而forward只能在Web應用程式中進行,不能指定至其它的Web應用程式位址。
使用redirect的話,是要求客戶端瀏覽器重新發出一個指定的請求位址,因此網址列上會出現被重導的目錄位址,重導的請求是由瀏覽器發出,所以不能訪問Web應用程式中的隱藏目錄,像是WEB-INF,然而重導是重新要求一個網頁,所以可以指定至其它的Web應用程式位址。
摘要: Hibernate中支持3种形式实现继承关系:
1. Table per concrete class 表与子类之间独立一对一关系
2. Table per subclass 每个子类对应一张子表,并与主类共享主表
3. Table per class hierarchy 表与类一对多关系
阅读全文
摘要: 数据库中提供了两种字段类型 Blob 和 Clob 用于存储大型字符串或二进制数据(图片)。
Blob 采用单字节存储,适合保存二进制数据,如图片文件。
Clob 采用多字节存储,适合保存大型文本数据。
阅读全文
摘要: 手机可以有多少创意应用?无疑的,日本绝对是重要的指标,但也别忽略欧洲电信业者的企图,他们不只将手机当做是通话的工具,它可以变成贴身的秘书、全天候无休的最佳伴游,当然也会是帮助你随时掌控周遭动态变化的秘密狗仔,十二种行动生活提案,让你每天的生活更有行动力!
阅读全文