ubuntu下更改用户名

1.进入单用户模式:

(1)开机到grub时,用上下键移到第二行的恢复模式,按e(注意不是回车)

即Ubuntu,With Linux 3.2.0-23-generic(recovery mode)

(2) 把ro recovery nomodeset 改成rw single init=/bin/bash

然后按ctrl+x 或者F10   就可以进入 单用户模式

2.默认会进入只读模式栋recovery,需要重新挂载:

mount -o remount rw /

3.

usermod -l new_username -d /home/new_username -m old_username

用usermod命令来修改用户帐户相关信息,-l指定新的登录名称,-d指定新的主目录,如果同时指定-m选项则移动原来用户主目录的内容到新的用户住目录,最后指定原来的登录用户名。

groupmod -n new_username old_username

groupmod命令用来修改组相关信息,-n用来指定新的组名,用原来的组名作为参数。这里修改的是与用户默认同名的组。

chfn -f new_fullname new_username

chfn命令来修改真实的用户名称和其他相关信息,-f指定新的用户全称,需要修改全称的用户名作为参数。

另外,刚刚安装的ubuntu是没有root密码的。在terminal中不能执行su。初始化密码的方式:

sudo passwd

根据提示填写密码。

MAC/XCODE SVN UPGRADE

解决方法:

在 /usr/bin 下新建文件夹 ,如 svnbak

7F91DBC29A082B0A8333664C5AE0262857E01C4662C4B_336_122

把 /usr/bin 中的所有 svn* 移动到 svnbak

0E6EFF21B5D030D57DBD10EB1A76EB03D6D1F72C2D09D_324_214

然后,可用

brew install subversion

安装最新的 svn ,重新启动 Terminal ,检查 svn 版本。

5ED3523DFEB1A8D1E32DF014D80CCAC3B1C32536A8862_306_80

升级 Xcode中的SVN

brew 安装的 svn 的路径在这里

/usr/local/Cellar/subversion
然后,在 Terminal 输入下面的命令,替换 Xcode 里面的 svn 文件

sudo ln -s /usr/local/Cellar/subversion/1.7.5/bin/svn* /Applications/Xcode.app/Contents/Developer/usr/bin/

如果遇到这种情况

DDE37999ABF1689A3843540ADB4CA1FB554AAE152CF1B_500_119

那么,进到 Xcode 那个目录,把相关的旧版本 svn* 文件删除掉,然后重新执行命令即可

让Mac也能拥有apt-get类似的功能——Brew

之前一直怀念Ubuntu下的apt-get,因为实在是方便,需要安装什么,一个命令搞定,相关的依赖包统统由apt-get维护。下载,编译,安装,那叫一个痛快。什么软件用着不爽,一个命令卸载!

怀念apt-get之余,发现了替代工具MacPorts,据说也可以解决我的问题。但可惜,我总是无法更新本地软件索引库!

homebrew主页对brew进行了详细的描述,不过我们更希望下载下来实战演练!

1.安装brew

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

上述命令,在官网上可以找到!
2.使用brew安装软件
别的工具不说,wget少不了,但是mac上默认没有!
就先拿它来开刀了:

$ brew install wget

甚至是安装tomcat

$ brew install tomcat

或者是unrar

$ brew install unrar

3.使用brew卸载软件
安装简单,卸载就更简单了:

$ brew uninstall unrar

4.使用brew检索软件
看看我们能搜到什么:

$ brew search /apache*/

/apache*/使用的是正则表达式,注意使用/分隔!
5.查看已经安装的软件

$ brew list

6. 删除所有软件升级后的遗留旧版本

$ brew cleanup

至此,brew已经能解决我的大部分软件安装问题了!

7.设置国内的软件源,加快更新速度

# 替换formula 索引的镜像(即 brew update 时所更新内容)
$ cd "$(brew --repo)"

$ git remote set-url origin https://mirrors.ustc.edu.cn/brew.git

$ cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"

$ git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git

$ brew update

# 替换Homebrew 二进制预编译包的镜像
$ echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.bashrc

$ source ~/.bashrc

参考链接


junit4入门例子

第一步:eclipse中新建一个项目,java build path中导入junit jar包(本文例子junit-4.9b1.jar)

第二步:新建一个package,导入如下四个文件

第三步:右键AllCalculatorTests(或者CalculatorTest、SquareTest),run as junit test,查看执行结果。

代码中的注释能够帮你理解Junit4。

package andycpp;

public class Calculator {
private static int result; // 静态变量,用于存储运行结果
public void add(int n) {
result = result + n;
}
public void substract(int n) {
result = result - 1; //Bug: 正确的应该是 result =result-n
}
public void multiply(int n){
} // 此方法尚未写好
public void divide(int n) {
result = result / n;
}
public void square(int n) {
result = n * n;
}
public void squareRoot(int n) {
for (;  ;) ; //Bug : 死循环
}
public void clear() { // 将结果清零
result = 0;
}
public int getResult() {
return result;
}
}

 

package andycpp;
/*
* import static,这是一个静态包含(static),是JDK5中新增添的一个功能。也就是说,assertEquals是Assert类中的一系列的静态方法,
* 一般的使用方式是Assert. assertEquals(),但是使用了静态包含后,前面的类名就可以省略了,使用起来更加的方便
* */
import static org.junit.Assert.*;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
//测试类名称任意

public class CalculatorTest {
//你要测试哪个类,那么你首先就要创建一个该类的对象
private static Calculator calculator = new Calculator();
/*
* @Before和@After是每个测试方法执行前后均需要执行,
* 因此不适合累中耗资源,或者耗时过大的操作。
* @BeforeClass 和 @AfterClass两个Fixture来帮规避此问题。
* 从名字上就可以看出,用这两个Fixture标注的函数,只在测试用例
* 初始化时执行 @BeforeClass方法,当所有测试执行完毕之后,执行
* @AfterClass进行收尾工作。在这里要注意一下,每个测试类只能有
* 一个方法被标注为 @BeforeClass 或 @AfterClass,
* 并且该方法必须是Public和Static的
* */
@BeforeClass
public static void setUpBeforeClass() throws Exception {
}

@AfterClass
public static void tearDownAfterClass() throws Exception {
}
/*
* 我们非常希望每一个测试都是独立的,相互之间没有任何耦合度。
* 因此,我们就很有必要在执行每一个测试之前,对Calculator对象进行一个“复原”操作,
* 以消除其他测试造成的影响。因此,“在任何一个测试执行之前必须执行的代码”就是一个Fixture,
* 我们用@Before来标注它 这里不在需要@Test标注*
* */
@Before
public void setUp() throws Exception {
calculator.clear();
}

@After
public void tearDown() throws Exception {
}
//@Test 标准的方法,返回值必须是void,而且无参数
@Test
public void testAdd() {
calculator.add(2);
calculator.add(3);
assertEquals(5,calculator.getResult());//第一个参数填写期待结果,第二个参数填写实际结果

}

@Test
public void testSubstract() {
calculator.add(10);
calculator.substract(2);
assertEquals(8,calculator.getResult());
}
/*
* 如果你已经把该方法的测试用例写完,但该方法尚未完成,那么测试的时候一定是“失败”。
* 这种失败和真正的失败是有区别的,因此JUnit提供了一种方法来区别他们,那就是在这种
* 测试函数的前面加上@Ignore标注,这个标注的含义就是“某些方法尚未完成,暂不参与此次测试”。
* 这样的话测试结果就会提示你有几个测试被忽略,而不是失败。一旦你完成了相应函数,只需要把@Ignore标注删去,
* 就可以进行正常的测试。
* */
@Ignore
@Test
public void testMultiply() {
calculator.add(2);
calculator.multiply(3);
assertEquals(6,calculator.getResult());
}

@Test
public void testDivide() {
calculator.add(8);
calculator.divide(2);
assertEquals(4, calculator.getResult());
}
/*
* 对于那些逻辑很复杂,循环嵌套比较深的程序,
* 很有可能出现死循环,因此一定要采取一些预防措 施。
* 限时测试是一个很好的解决方案。我们给这些测试函数设定
* 一个执行时间,超过了这个时间,他们就会被系统强行终止,
* 并且系统还会向你汇报该函数结束的原 因是因为超时,这样你就可以发现这些Bug了
* 测试例子calculator中的squareRoot是个死循环。
* */
@Test(timeout = 1000)//单位为毫秒
public void squareRoot() {
calculator.squareRoot(4);
assertEquals(2, calculator.getResult());
}
/*使用@Test标注的expected属性,将我们要检验的异常传递给他,
* 这样JUnit框架就能自动帮我们检测是否抛出了我们指定的异常
* */
@Test(expected = ArithmeticException.class)
public void divideByZero() {
calculator.divide(0);
}
}
package andycpp;

import java.util.Arrays;
import java.util.Collection;
import static org.junit.Assert.*;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;

/*
* 对于参数测试需要重新写一个类, 而不能与其他测试共用同一个类,此例中我们定义了一个SquareTest类。
* 然后,你要为这个类指定一个 Runner,而不能使用默认的Runner了,因为特殊的功能要用特殊的Runner嘛。
* @RunWith(Parameterized.class)
*
* */
@RunWith(Parameterized.class)
public class SquareTest {
private static Calculator calculator = new Calculator();
private int param;
private int result;
/*
* 定义测试数据的集合,也就是上述的data()方法,
* 该方法可以任意命名,但是必须使用@Parameters标注进行修饰。
* 这个方法的框架就不予解释了,大家只需要注意其中的数据,是一个二维数组,
* 数据两两一组,每组中的这两个数据,一个是参数,一个是你预期的结果
* */
@Parameters
public static Collection date(){
return Arrays.asList(new Object[][]{
{2, 4},
{0, 0},
{-3, 9},
});
}

//构造函数,对变量进行初始化

//定义一个待测试的类,并且定义两个变量,一个用于存放参数,一个用于存放期待的结果。
public SquareTest(int param, int result) {
this.param = param;
this.result = result;
}

@Test
public void square() {
calculator.square(param);
assertEquals(result, calculator.getResult());
}

}

 

package andycpp;
import org.junit.runner.RunWith;

import org.junit.runners.Suite;

/*
* 大家可以看到,这个功能也需要使用一个特殊的Runner,
* 因此我们需要向@RunWith标注传递一个参数Suite.class。
* 同时,我们还需要另外一个标注@Suite.SuiteClasses,
* 来表明这个类是一个打包测试类。我们把需要打包的类作为参数传递给该标注就可以了。
* 有了这两个标注之后,就已经完整的表达了所有的含义,因此下面的类已经无关紧要,
* 随便起一个类名,内容全部为空既可
* */
@RunWith(Suite.class)

@Suite.SuiteClasses({

CalculatorTest.class,

SquareTest.class

})
public class AllCalculatorTests {

}

 

Ubuntu下使用ZTE ac2736无线上网

ZTE ac2736的无线上网卡,Window下的使用是相当的简单,Ubuntu下还是需要稍作设置,这里就简单介绍一下ubuntu下的设置方式。

首先说明一下环境,Ubuntu 10.04,所有已装软件已升级到最新版本(请先安装usb-modeswitch和usb-modeswitch-data)。

步骤1:插上ZTE ac2736后使用lsusb命令查看状态

正常的话结果中应该有如下信息:

Bus 006 Device 007: ID 19d2:fff1 ONDA Communication S.p.A

其中0×19d2是vendor的代号,0xfff1是product的代号。

此外,此时/dev下应该也出现了ttyUSB[0-4]5个设备标示。

步骤2:设置连接拨号方式

查看右上角的NetworkManager,在移动宽带下会出现一个名为China telecom conn 1的连接项,www.linuxidc.com这时候直接连接是不行的,需要先右键点击NetworkManager,点选编辑连接,找到移动宽带->China telecom conn 1,选择编辑->移动宽带选项卡,可以看到编号中已经是#777,用户名和密码填入card后保存。

如果未出现China telecom conn 1的选项,可以重新插拔ac2736,或者编辑NetworkManager,手动添加一个移动宽带的连接项,第一步设备选择ZTE Incorporated ZTE CMDA Tech,第二步选择China,第三步提供商选China Telecom,应用后可以看到弹出的页面中编号为#777,同样将用户名和密码设置为card保存后即可,其他选项用默认的即可。

步骤3:连接网络

选择NetworkManager中的China telecom conn 1,稍等片刻就可以看到连接成功的提示了,此时ifconfig查看网络连接可发现:

ppp0 Link encap:点对点协议
inet 地址:114.81.187.173 点对点:115.168.41.208 掩码:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1448 跃点数:1
接收数据包:7752 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:7589 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:3
接收字节:7017443 (7.0 MB) 发送字节:904706 (904.7 KB)
ppp0 Link encap:点对点协议
inet 地址:114.81.187.173 点对点:115.168.41.208 掩码:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1448 跃点数:1
接收数据包:7752 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:7589 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:3
接收字节:7017443 (7.0 MB) 发送字节:904706 (904.7 KB)

Mac OS X 安装mysql过程

从mysql官网http://mysql.com/downloads/mysql/下载dmg格式的安装文件。推荐使用64位(x86, 64-bit)。

打开安装包,第一个扩展名为pkg的文件即是安装文件。mysql不必编译安装,直接运行pkg安装即可。MySQL的Mac OS X PKG安装到/usr/local/mysql-VERSION,并且还会生成一个符号连接,/usr/local/mysql,指向新的位置。如果有/usr/local/mysql目录,首先将它改名为/usr/local/mysql.bak。安装完后,安装器会自动执行mysql_install_db在MySQL数据库中创建授权表。

安装完成后,双击MySQL.prefPane文件,即可给系统编好设置添加一个mysql的管理面板,可以在系统偏好设置中开启和关闭mysql。

如果安装了MySQL.prefPane这个偏好设置项,打开系统偏好设置会看到新增一项“MySQL”项。打开后可以启动和停止mysql服务。同时可以看到下方有个单选框“Automatically Start MySQL Server on Startup”,就是是否随系统开机启动Mysql服务,选中它的话,下面这项MySQLStartupItem.pkg就不必安装了。

MySQLStartupItem.pkg这个文件是干吗的呢?它提供了mysql随mac系统开机启动的功能。如何取消随系统启动呢?前面刚刚说完,不选中随机启动就行了。

仔细阅读readme.txt文件会发现,你可以为mysql和mysqladmin做两个alias。这样就不必每次输入完整路径来执行mysql和mysqladmin了。

在终端中运行:

alias mysql=/usr/local/mysql/bin/mysql
alias mysqladmin=/usr/local/mysql/bin/mysqladmin

刚安装完的mysql是没有密码的。可以使用如下命令来给root用户创建一个密码,例如我们给mysql 的root用户设置初始密码为123456

/usr/local/mysql/bin/mysqladmin -u root password 123456

除了在控制面板中开启和关闭mysql,还可以使用终端命令行来控制启动,停止和重启:

sudo /Library/StartupItems/MySQLCOM/MySQLCOM [start|stop|restart]

OK,安装到此完成。

部署War包到Tomcat根目录位置(Ubuntu/CentOS)

操作系统:CentOS 5.6

对于ubuntu 14.04来说,Tomcat的war包默认目录路径位置在 /var/lib/tomcat7/webapps

对于ubuntu 18.04来说,Tomcat的war包默认目录路径位置在 /var/lib/tomcat8/webapps 或 /var/lib/tomcat9/webapps

对于CentOS 7来说,Tomcat的war包默认目录路径位置在 /usr/share/tomcat/webapps

Tomcat版本:apache-tomcat-6.0.33

在Tomcat中部署war包很简单:

首先,直接把相应的war包放到$TOMCAT_HOME/webapps下,不用建目录;

然后,修改$TOMCAT_HOME/conf/server.xml,在Host配置段中添加类似于如下内容:

<Context path="/" docBase="hdfs-webdav.war" debug="0" privileged="true" reloadable="true"/>

其中,docBase参数标识的是war包的名称。

访问时,使用如下地址进行访问:http://ip:port/hdfs-webdav

如果要把war包部署到Tomcat根目录,直接使用http://ip:port进行访问,需要的操作稍微复杂一些:

一、把war包解压,部署到除$TOMCAT_HOME/webapps以外的目录

二、删除$TOMCAT_HOME/ webapps/ROOT目录下的所有文件

三、在$TOMCAT_HOME/conf/Catalina/localhost目录下,新建一个ROOT.xml文件,写入类似于如下内容:

<?xml version='1.0' encoding='utf-8'?>
<Context path="/" docBase="/usr/local/tomcat-6.0/webdav" debug="0" privileged="true" reloadable="true"/>

其中,docBase指向的是war包解压后的目录名称,需绝对路径。

一个简单的Jsp+Servlet实例

开发环境Eclipse+Tomcat7

1、先创建web project,项目名为Hello,

2、在WebRoot 目录下创建login.jsp文件,只需修改body中的内容,如下所示:

<body>
   <form action="login">
   username:<input type="text" name="username"><br>
   password:<input type="password" name="pwd"><br>
   <input type="submit">
   </form>
 </body>

3、在scr目录下的com.ht.servlet编写AcountBean.java文件,代码如下:

package com.ht.servlet;

public class AccountBean {
private String username = "";
private String password = "";
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;
}
}

4、在scr目录下的com.ht.servlet编写servlet类CheckAccount.java文件,代码如下:

package com.ht.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class CheckAccount extends HttpServlet {

 @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
  throws ServletException, IOException {
 doGet(req,resp);
 }

 @Override
public void doGet(HttpServletRequest req, HttpServletResponse resp)
  throws ServletException, IOException {
 HttpSession session = req.getSession();
  AccountBean account = new AccountBean();
  String username = req.getParameter("username");
 String pwd = req.getParameter("pwd");
  account.setPassword(pwd);
 account.setUsername(username);
  if((username != null)&&(username.trim().equals("jsp"))) {
  if((pwd != null)&&(pwd.trim().equals("1"))) {
   System.out.println("success");
   session.setAttribute("account", account);
    String login_suc = "success.jsp";
   resp.sendRedirect(login_suc);
    return;
  }
 }
 String login_fail = "fail.jsp";
 resp.sendRedirect(login_fail);
  return;
}

}

5、在WebRoot目录下编写success.jsp文件 成功后跳转

<body>
   <%
   AccountBean account = (AccountBean)session.getAttribute("account");
    %>
   username:<%= account.getUsername()%>
    <br>
    password:<%= account.getPassword() %>
 </body>

6、在WebRoot目录下编写fail.jsp文件 失败后跳转

<body>
  Login Failed! <br>
 </body>

7、修改web.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 <welcome-file-list>
   <welcome-file>login.jsp</welcome-file>
 </welcome-file-list>

 <servlet>
      <description>This is the description of my J2EE component</description>
      <display-name>This is the display name of my J2EE component</display-name>
        <servlet-name>CheckAccount</servlet-name>
      <servlet-class>com.ht.servlet.CheckAccount</servlet-class>
    </servlet>

     <servlet-mapping>
      <servlet-name>CheckAccount</servlet-name>
      <url-pattern>/login</url-pattern>
    </servlet-mapping>

</web-app>

Eclipse with Tomcat 7 on Ubuntu

Eclipse with Tomcat V7.0 in Ubuntu
1. Download Eclipse from the Eclipse web site. (J2EE version)
2. Download Tomcat version 7 or install it via apt-get
apt-get install tomcat7 tomcat7-admin tomcat7-common tomcat7-docs tomcat7-examples
3. Set the following configuration:

cd /usr/share/tomcat7
sudo ln -s /var/lib/tomcat7/conf conf
sudo ln -s /etc/tomcat7/policy.d/03catalina.policy conf/catalina.policy
sudo ln -s /var/log/tomcat7 logs
sudo chmod -R 777 /usr/share/tomcat7/conf

3. Run eclipse
4. Add a view ( Windows -> Show View -> Other -> Server -> Servers -> OK )
5. Go to the view
6. Add a Tomcat v7 (consider /user/share/tomcat7 as your path)
7. Enjoy Tomcat 7 in Eclipse.