收集于:
vocat的專欄
http://blog.csdn.net/vocat/archive/2006/10/21/1344388.aspx
結合我的情況,寫下來以后忘記了,可以看下。
=============================如下是:vocat原文===============================
很多和我一樣的菜鳥,為了學linux都會在原來windows的基礎上安裝linux。但windows的病毒是在太多了,難保哪天中了病毒殺不掉甚至進不windows了就只好重裝了。重裝后往往就默認直接進入windows,而沒有出現個菜單讓你選擇是進windows和linux。原因嘛,網上搜下到處都是,下面直接進入正題,找回進不去的linux。
先準備好以下兩個軟件
grub for dos(http://sourceforge.net/project/showfiles.php?group_id=104188),選擇GRUB4DOS那個就行,用這個來引導linux
explore2fs(http://www.chrysocome.net/explore2fs),這個是在windows下看linux文件用的
以上兩個軟件或者百度,google下,到處都有,很多,好啦,開始進入步驟
1:把下好的grub for dos 解壓到C盤根目錄下,取名為grub,把里面的grlrd復制到C盤根目錄下
2:找到C盤下面的boot.ini文件(這是個隱藏文件),在里面最后一行加入c:\grldr="linux"
3:新建一個menu.lst文件,把它放在C盤根目錄下,里面的內容,以我的為例,如下
title redhat 9.0
root (hd0,7)
kernel (hd0,7)/boot/vmlinuz-2.4.20-8 root=/dev/hda8
initrd (hd0,7)/boot/initrd-2.4.20-8.img
boot
總共5行,每行的意思如下
第一行:title redhat 9.0
這個title跟的值是指你要在菜單上出現用來顯示linux的名稱
第二行:root (hd0,7)
一般的寫法為root(hdX,Y)
對于X,如果你只有一個硬盤且裝在這個硬盤(好像是廢話……)那么當然為0啦,否則的話以此類推為1,2,等
對于Y,這個會稍微復雜些。在windows下面,由一個主分區-C盤,和N個擴展分區-D,E,F……等組成。但在linux下,hd1~hd4代表主分區,對應于windows下就是C盤,hd5開始為擴展分區,如hd5對應D盤,hd6對應E盤等。grub的分區算法和linux類似,但有一個差別是,它是從0開始計數的,也就是說0~3對應C盤,4對應D盤,以此類推。我自己的電腦分區如下C盤-windows,D,E,F存儲資料,剩下的空間給了linux,所以為root(hd0,7)
第三行:kernel (hd0,7)/boot/vmlinuz-2.4.20-8 root=/dev/hda8
把vmlinuz-2.4.20-8換成你對應的文件就行啦。用explre2fs這個軟件就可以在windows下看linux分區的文件啦。要有點注意的是,root=/dev/hda8 中的hda8而不是hda7,因為此時是按照liuux的規則而不是grub的規則。
第四行:initrd (hd0,7)/boot/initrd-2.4.20-8.img
也只要把initrd-2.4.20-8.img 替換成你相應的文件就行啦
第五行:root
好像沒什么好說吧……
OK,大功告成也~
=============================以上是:vocat原文===============================
現在來看我的情況:我硬盤有C、D、E、F分區,其中linux分區在E、F之間,有/boot、/、swap三個分區。
整個硬盤分區的順序C、D、E、/boot、/、swap、F
我的menu.lst的寫法是:
title FC7
root (hd0,7)
kernel /vmlinuz-2.6.21-1.3194.fc7 ro root=LABEL=/ rhgh quiet
initrd /initrd-2.6.21-1.3194.fc7.img
boot
在
kernel (hd0,7)/boot/vm... root=/dev/sda8
initrd (hd0,7)/boot/initrd...
反而不行
我的是怎樣看到的呢?,是安裝Linux后啟動后的第一幕的前面幾行就是。
posted @
2007-09-07 21:22 流浪汗 閱讀(5530) |
評論 (0) |
編輯 收藏
UTF-8修改(寫xml文件亂碼),報Invalid byte 2 of 2-byte UTF-8 sequence錯誤。寫gb2312和gbk沒事,寫xml是網上的例子,用了FileWirter。然后找到
博客:http://blog.csdn.net/redez/archive/2005/11/11/527897.aspx
說到用FileOutPutStream
看例子(是個測試類,只給出這個修改方法,測試類請看——dom4j 讀 xml:http://www.aygfsteel.com/chenlb/archive/2007/09/05/143036.html):
public void testModXml() {
List list = document.selectNodes("/company/tel" );
Random rm = new Random();
for(Element tel : (List<Element>) list) {
logger.info("tel: "+tel.getTextTrim());
tel.setText("020-12345678-"+rm.nextInt(100));
}
Element root = document.getRootElement();
for(int i=0; i<2; i++) {
Element tel = root.addElement("tel");
tel.setText("020-12345678-"+rm.nextInt(100));
}
XMLWriter writer;
try {
OutputFormat format = OutputFormat.createPrettyPrint();
//format.setEncoding("UTF-8");
FileOutputStream fos = new FileOutputStream(xmlFile);
//writer = new XMLWriter(new FileWriter(xmlFile), format);
writer = new XMLWriter(fos, format);
writer.write(document);
writer.close();
} catch (IOException e) {
// TODO 自動生成 catch 塊
logger.error("修改xml文件失敗!");
e.printStackTrace();
}
}
posted @
2007-09-06 00:10 流浪汗 閱讀(6185) |
評論 (1) |
編輯 收藏
由于要保存一些項目中只有一個而且很少改的,用數據庫存儲太浪費了,用xml保存吧。
1.現在來看下讀xml,xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<company>
<tel>020-12345678-66</tel>
<tel>020-12345678-85</tel>
<introduce>
<![CDATA[
<br/><h1>公司簡介</h1>
]]>
</introduce>
</company>
2.用dom4j 讀,
package cn.rentbus;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
//import java.io.FileWriter;
import java.util.Iterator;
import java.util.List;
import java.util.Random;
import junit.framework.TestCase;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class Dom4jXmlTest extends TestCase {
protected final Log logger = LogFactory.getLog(getClass());
private SAXReader reader;
private Document document;
private File xmlFile;
protected void setUp() throws Exception {
xmlFile = new File("WEB-INF/company.xml");
reader = new SAXReader();
document = reader.read(xmlFile);
}
protected void tearDown() throws Exception {
super.tearDown();
}
public void testReadXml() {
Element root = document.getRootElement();
for ( Iterator i = root.elementIterator( "tel" ); i.hasNext(); ) {
Element tel = (Element) i.next();
logger.info("tel: "+tel.getTextTrim());
// do something
}
logger.info("==== XPath use on tel ====");
List list = document.selectNodes("/company/tel" );
for(Element tel : (List<Element>) list) {
logger.info("tel: "+tel.getTextTrim());
}
for ( Iterator i = root.elementIterator( "introduce" ); i.hasNext(); ) {
Element introduce = (Element) i.next();
logger.info("introduce: "+introduce.getTextTrim());
// do something
}
logger.info("==== XPath use on introduce ====");
Node node = document.selectSingleNode("/company/introduce");
String introduce = node.getText();
logger.info("introduce: "+introduce.trim());
}
}
注意:如果用到XPath,需要jaxen-1.1-beta-6.jar(發本包/lib下有)
我的環境:
dom4j-1.6.1.jar
jaxen-1.1-beta-6.jar
posted @
2007-09-05 23:58 流浪汗 閱讀(3649) |
評論 (2) |
編輯 收藏
不知那天開始,任務管理器標題沒了,光禿禿的,想看任務管理器其它的內容沒法切換。郁悶……
百度一下,有結果了。發現百度的知道發展得很好,很多電腦應用問題都有答案。
解決方法是:雙擊任務管理器面板就出來了,再雙擊又是光禿禿的……,^_^
百度知道
http://zhidao.baidu.com/question/869385.html
posted @
2007-09-03 20:38 流浪汗 閱讀(712) |
評論 (0) |
編輯 收藏
Javascript檢測整數或小數,寫的正則表達式:
^(+|\-)?\d+(.\d+)?$
報錯,說數量詞錯誤。
然后改用:
^[+\-]?\d+(.\d+)?$
就行了,^_^
posted @
2007-08-27 14:56 流浪汗 閱讀(11058) |
評論 (7) |
編輯 收藏
這里使用一個小技巧,就是先將其轉換為可編輯的JSP文件,然后再像操作其它的JSP頁面一樣操作,就這么簡單。
因為ms word和excel的文檔都支持html文本格式,因此可以先用word或excel做好模版,另存為web頁,然后將該html改成jsp,將數據部分動態填入即可,不用很辛苦的調整格式 。
word頁面只要在jsp頭設置如下指令:
<%@page contentType="application/msword;charset=gb2312" %>
excel如下:
<%@page contentType="application/vnd.ms-excel;charset=gb2312" %>
使用這種方式,就不用使用其它的復雜技術,并且可以達到很好的效果,所謂走路走捷徑,呵呵,例子就不給了。
http://blog.csdn.net/fenglibing/archive/2007/06/27/1668809.aspx
posted @
2007-08-22 13:15 流浪汗 閱讀(304) |
評論 (0) |
編輯 收藏
由于項目里要發郵件,用了spring 和 velocity 模板。寫下來以后可以看,好記性不如博客。
版本說明下:
spring 2.0.6
velocity 1.5
javamail 用 spring/lib下的
1.封裝郵件信息類:
package com.chenlb.mail;
import java.util.Map;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.velocity.app.VelocityEngine;
import org.springframework.mail.MailException;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.ui.velocity.VelocityEngineUtils;
/**
* 郵件發送器
* @作者 chenlb
* @創建時間 2007-7-28 下午03:35:31
*/
public class VelocityTemplateMailMessage {
protected final Log logger = LogFactory.getLog(getClass());
private JavaMailSender javaMailSender;
private VelocityEngine velocityEngine;
private String from;
private String title;
private String encoding;
private String templateLocation;
private String[] toEmails;
private Map model;
public boolean send() {
MimeMessage msg = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(msg);
try {
helper.setFrom(from);
helper.setSubject(title);
helper.setTo(toEmails);
helper.setText(getMessage(), true); //如果發的不是html內容去掉true參數
javaMailSender.send(msg);
} catch (MessagingException e) {
// TODO 自動生成 catch 塊
if(logger.isWarnEnabled()) {
logger.warn("郵件信息導常! 郵件標題為: "+title);
}
return false;
//e.printStackTrace();
} catch (MailException me) {
// TODO: handle exception
if(logger.isWarnEnabled()) {
logger.warn("發送郵件失敗! 郵件標題為: "+title);
}
return false;
}
return true;
}
/**
* 郵件模板中得到信息
* @return 返回特發送的內容
*/
private String getMessage() {
return VelocityEngineUtils.mergeTemplateIntoString(velocityEngine,
templateLocation, encoding, model);
}
private String[] createToEmail(String to) {
return new String[] {to};
}
public void setToEmail(String to) {
setToEmails(createToEmail(to));
}
public void setJavaMailSender(JavaMailSender javaMailSender) {
this.javaMailSender = javaMailSender;
}
public void setVelocityEngine(VelocityEngine velocityEngine) {
this.velocityEngine = velocityEngine;
}
public void setEncoding(String encoding) {
this.encoding = encoding;
}
public void setModel(Map model) {
this.model = model;
}
public void setTemplateLocation(String templateLocation) {
this.templateLocation = templateLocation;
}
public void setTitle(String title) {
this.title = title;
}
public void setToEmails(String[] toEmails) {
this.toEmails = toEmails;
}
public void setFrom(String from) {
this.from = from;
}
public String getTemplateLocation() {
return templateLocation;
}
}
2.spring配置文件,applictionContext-mail.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"
"dtd/spring-beans-2.0.dtd">
<!-- http://www.springframework.org/ -->
<beans>
<!-- 屬性文件加載 -->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:mail.properties</value>
</list>
</property>
</bean>
<!-- 郵件發送器 -->
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="${mail.host}" />
<property name="username" value="${mail.username}" />
<property name="password" value="${mail.password}" />
<property name="defaultEncoding" value="UTF-8"></property>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">${mail.smtp.auth}</prop>
<prop key="mail.smtp.timeout">${mail.smtp.timeout}</prop>
</props>
</property>
</bean>
<bean id="velocityEngine" class="org.springframework.ui.velocity.VelocityEngineFactoryBean">
<property name="resourceLoaderPath" value="classpath:velocity"></property>
</bean>
<bean id="templateMail" class="com.chenlb.mail.VelocityTemplateMailMessage">
<property name="javaMailSender" ref="mailSender"></property>
<property name="from" value="${mail.from}"></property>
<property name="encoding" value="UTF-8"></property>
<property name="templateLocation" value="test.vm"></property>
<property name="velocityEngine" ref="velocityEngine"></property>
<property name="title" value="wwww.aygfsteel.com/chenlb"></property>
</bean>
</beans>
說明:模板文件放到classpath的velocity目錄下,可自行改。
3.發送者郵件信息,mail.properties(classpath位置):
mail.from=yourname@126.com
mail.host=smtp.126.com
mail.password=yourpassword
mail.smtp.auth=true
mail.smtp.timeout=25000
mail.username=yourname
4.模板文件,text.vm(classpath的velocity目錄下):
你好!${me} 這是模板生成的郵件。
5.使用:
VelocityTemplateMailMessage vtmm = (VelocityTemplateMailMessage) context.getBean("templateMail");
Map<String, String> data = new HashMap<String, String>();
data("me","yourname");
vtmm.setModel(data);
vtmm.setToMail("yourOtherMail@163.com");
vtmm.setTitle("mail with veloctiy and spring");
vtmm.send();
看下是否收到郵件了。^_^
posted @
2007-08-21 19:43 流浪汗 閱讀(3332) |
評論 (6) |
編輯 收藏
請參:
方法一:使用插入分節符的方式在第一頁的最后,插入/分隔符/分節符使之與后面的成為兩節再從第二頁即第二節的頁眉處插入頁碼設置頁碼的起始編號為1.
方法二:使用首頁不同的設置,可見頁面設置/版式:首頁不同,將首頁設置為與后面不一樣的頁眉頁腳,在第二頁的頁眉中的頁碼格式設置(頁眉頁碼工具欄),設置起始頁碼為1.
方法三使用域計算,在頁眉或者頁腳處插入如下域代碼:{ if { page } > 1 { = { page } - 1 } "" }
此域代碼的意思是如果頁碼大于1,則當前頁碼數-1,反之則為空.
注意花括號為CTRL+F9系統自動插入的,文字為英文標點下的字符輸入,中間有空格詳細的域使用方法可見置頂貼子<也談域在WORD中的應用>
相關鏈接:http://club.excelhome.net/dispbbs.asp?BoardID=23&replyID=326315&id=67463&skin=0
http://club.excelhome.net/dispbbs.asp?boardID=23&ID=48825&page=1
posted @
2007-08-21 17:08 流浪汗 閱讀(2106) |
評論 (0) |
編輯 收藏
數據源:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/study"></property>
<property name="username" value="root"></property>
<property name="password" value=""></property>
</bean>
事務管理者:
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
被管理的對象:
<bean id="myBusinessObjectTarget" class="mybusiness.MyBusinessObject"></bean>
事務性代理對象:
<bean id="myBusinessObject" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager" ref="transactionManager"></property>
<property name="target" ref="myBusinessObjectTarget"></property>
<property name="transactionAttributes">
<props>
<prop key="myBusinessMethod">
PROPAGATION_REQUIRED,-MyCheckedException
</prop>
</props>
</property>
</bean>
說明:-MyCheckedException表示拋出此導常時回滾,+MyCheckedException表示拋出此導常時提交。
MyBusinessObject:
package mybusiness;
/**
*
* 2007-8-20 上午11:26:28
* @author chenlb
*/
public class MyBusinessObject {
public void myBusinessMethod() throws MyCheckedException {
// do some resource access
// return some result object or throw MycheckedException
}
}
聲明式事務的其中一種形式。^_^
posted @
2007-08-20 11:39 流浪汗 閱讀(584) |
評論 (0) |
編輯 收藏
spring 對 JdbcTemplate……的事務管理不用擔心。就是對直接Jdbc實現的Dao事務管理有點小問題,如:我直接,用dataSource.getConnection()。spring是管理不了事務的。原因是Jdbc實現的Dao里的connection是自動提交的。要改用經過spring 處理過的connection = DataSourceUtil.getConnection(dataSource);才行。
我這有個例子——用戶注冊,有備份。只是例子而且。
下面是原始的Dao實現,
備份方法:
public User backUp(User user) throws SQLException {
Connection conn = dataSource.getConnection();
try {
PreparedStatement pstmt = conn.prepareStatement("insert into user(name) values (?)");
pstmt.setString(1, user.getName()+" 備份");
pstmt.executeUpdate();
pstmt = conn.prepareStatement("select last_insert_id()");
ResultSet rs = pstmt.executeQuery();
if(rs != null && rs.next()) {
user.setUId(rs.getInt(1));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
throw e;
} finally {
if(conn != null) {
try {
conn.close();
} catch (SQLException e) {
System.out.println("數據庫連接關閉失敗!");
}
}
}
return user;
}
現在要改成:
public User backUp(User user) throws SQLException {
Connection conn = DataSourceUtils.getConnection(dataSource);
try {
PreparedStatement pstmt = conn.prepareStatement("insert into user(name) values (?)");
pstmt.setString(1, user.getName()+" 備份");
pstmt.executeUpdate();
pstmt = conn.prepareStatement("select last_insert_id()");
ResultSet rs = pstmt.executeQuery();
if(rs != null && rs.next()) {
user.setUId(rs.getInt(1));
}
} catch (SQLException e) {
throw e;
} finally {
DataSourceUtils.releaseConnection(conn, dataSource);
}
return user;
}
然后你在邏輯層就可以用spring的任何方式管理事務了。
如:注冊
public User register(User user) throws SQLException {
userDao.backUp(user);
userDao.insert(user);
return user;
}
posted @
2007-08-20 11:22 流浪汗 閱讀(651) |
評論 (0) |
編輯 收藏