JMX的bug尼玛 坑死我了
adaptor.start();
JMX的bug尼玛 坑死我了
如果你是秦岭之巅的一滴雨,落到北边,就会流入黄河,经由东营入渤海;落到南边,就会流入长江,经由上海入东海。
此次出差,从徽县出发,达到仇池古国——西和县,再辗转天水,最后回到徽县。沿途在秦岭西端山区穿梭,虽然没有巍峨的大山,但是区区几十公里的行程让你分分钟感觉南方和北方的差异,黄河流域和长江流域的不同。
尤其是从天水回徽县的路上,八盘山隧道的北边,车子逆着水流方向行驶,从渭河到不知名的小溪,两边的小秃山明显的黄土地貌,让我不禁想起老家的千沟万壑。过了八盘山隧道,公路沿河而下,山上绿到发黑的的树林把地表裹得严严实实,偶尔有滑坡形成的流沙像一道道伤口。
如果你是秦岭之巅的一滴雨,落到北边,就会流入黄河,经由东营入渤海;落到南边,就会流入长江,经由上海入东海。不同的命运,决定不同的生命历程。汇入黄河将见证北方的干旱,贫瘠;汇如长江将见证富饶、湿润。
如果我能够从头活过,
我会试着犯更多的错。
我会放松一点,
我会灵活一点。
我会比这一趟过得傻。
很少有什么事能让我当真。
我会疯狂一点。
我会很少讲究卫生,
我会冒更多的险。
我会更经常地旅游,
我会爬更多的山,
游更多的河,
看更多的日落。
我会吃更多冰淇淋,少吃豆子。
我会惹更多麻烦,
可是不在想象中担忧。
你看,我小心翼翼地稳健地理智地活着,
一个又一个小时,一天又一天。
噢,我有过难忘的时刻,
如果我能够重来一次,
我会要更多这样的时刻。
事实上,我不需要别的什么。
仅仅是时刻,一个接着一个,
而不是每天都操心着往后的漫长日子。
我曾经不论到哪里去都不会忘记带上
温度计、热水壶、漱口杯,雨衣和降落伞。
如果我能够重来一次,
我会到处走走,
什么都试试,并且轻装上路。
如果我能够从头活过,
我会延长打赤脚的时光,
从尽早的春天到尽晚的秋天。
我会更经常地逃学,
我不会考那么高的分数,
除非是一不小心。
我会多骑些旋转木马。
我会采更多的雏菊。
——纳丁·斯待尔,时年87岁
最近再看《你的生命有什么可能》,中间关于生活、兴趣和价值观谈的非常有见地,特摘抄附诗以记之。
play framework打破了web开发中容器的概念,默认支持RESTful,快速开发、部署,感觉不错。缺憾的是IOC得依靠其他框架支持,spring当之无愧啊,废话不说,上手操作。
背景介绍:window平台,play2.2.3,Spring3.1,java语言
一、引入Spring容器
play快速入门请移步http://www.playframework.com/documentation/2.3.x/JavaTodoList
原始的play项目结构如下:
PS:类型必须是Global,且只能放到default package下,攻破技能尚未修炼。
代码如下:
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import play.Application;
import play.GlobalSettings;
public class Global extends GlobalSettings {
/**
@Override
public void onStart(Application arg0) {
//初始化Spring容器
context = new ClassPathXmlApplicationContext(“applicationContext.xml”);
}
@Override
public <A> A getControllerInstance(Class<A> clazz) throws Exception {
//根据类型获取控制器
return context.getBean(clazz);
}
}
二、Spring容器配置
我用的是注解配置,简单不述,代码如下:
Controller层:
package controllers.user;
import javax.annotation.Resource;
import play.Logger;
import play.data.DynamicForm;
import play.data.Form;
import play.libs.Json;
import play.mvc.Controller;
import play.mvc.Result;
import services.user.UserService;
import com.fasterxml.jackson.databind.node.ObjectNode;
@org.springframework.stereotype.Controller
public class UserController extends Controller {
@Resource(name = “userServiceImpl”)
private UserService userService;
/**
Service层:
package services.user.impl;
import org.springframework.stereotype.Service;
import services.user.UserService;
@Service(“userServiceImpl”)
public class UserServiceImpl implements UserService {
@Override
public boolean check(String username, String password) throws Exception {
return “admin”.equals(username) && “111111”.equals(password);
}
}
routes配置:
GET / @controllers.Application.index
POST /user/login @controllers.user.UserController.login
GET /*file controllers.Assets.at(path=”/public”, file)
三、访问请求
登陆页面:
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8”>
<title>登陆页面</title>
</head>
<body>
<div>
<form action=”/user/login” method=”post”>
用户名:<input type=”text” name=”username” /><br/>
密 码:<input type=”password” name=”password” /><br/>
<input type=”submit” name=”登录” />
</form>
</div>
</body>
</html>
最后看下目录结构吧
背景介绍:代码仓库是小乌龟mercurial,因为目前开发的项目迭代频率要求较高,因此需要定时自动打包发布程序。
一、在dynamic web project中添加ant build.xml,内容如下:
<?xml version=”1.0”?>
<project name=”round_server” default=”war” basedir=”.”>
<!– 申明常用变量 –>
<property name=”classes” value=”build/classes”/>
<property name=”build” value=”build”/>
<property name=”lib” value=”WebContent/WEB-INF/lib/“/>
<!– 定义编译时依赖包搜索路径 –>
<path id=”rlib”>
<fileset dir=”${lib}”>
<include name=”*.jar”/>
</fileset>
</path>
<!– 删除build路径–>
<target name=”clean”>
<delete dir=”build”/>
</target>
<!– 建立build/classes目录,并将java文件到build/classes路径下,注意指定编码格式,否则编译信息会乱码–>
<target name=”compile” depends=”clean”>
<mkdir dir=”${classes}”/>
<javac srcdir=”src” destdir=”${classes}” encoding=”UTF-8”>
<classpath refid=”rlib”></classpath>
</javac>
</target>
<!– 拷贝配置文件,如log4j.properties,config.properties和db.properties等 –>
<target name=”copy” depends=”compile”>
<copy todir=”${classes}”>
<fileset dir=”resource”/>
</copy>
</target>
<!– 打成war包–>
<target name=”war” depends=”copy”>
<war destfile=”${build}/round_server.war” webxml=”WebContent/WEB-INF/web.xml”>
<!– 拷贝WebContent下除了WEB-INF和META-INF的两个文件夹–>
<fileset dir=”WebContent” includes=”*/.jsp”/>
<!– 拷贝lib目录下的jar包–>
<lib dir=”${lib}”/>
<!– 拷贝build/classes下的class文件–>
<classes dir=”${classes}”/>
</war>
</target>
</project>
备注:将所有第三方的jar统统放到WebConten/WEB_INFO/lib文件下,包括servlet-apI.jar
二、下载并安装ant和hg
服务器为debian,安装操作如下:
安装ant
apt-get install ant
安装hg
apt-get install mercurial
三、克隆代码并使用ant编译打包
cd /home/hg/repos
hg clone http://ip:port//repos/round_server
cd round_server
ant -f build.xml
至此文件打包完成,根据第一步骤的配置,war文件被生成到build目录下,接下来将文件拷贝到tomcat下,重启服务器,一次打包成功完成。
四、定时任务配置
将上述命令变成脚本:
vi deploy-round.sh
cd /home/hg/repos/round_server
hg update
ant -f build.xml
cp build/round_server.war /var/lib/tomcat/webapps/
/etc/init.d/tomcat restart
完成编辑,将文件编辑成可执行文件
chmod 755 deploy-round.sh
加入linux定时计划
crontab -e
键入 0 1 ? /home/deploy-round.sh > /dev/null
保存退出
经过很长时间的努力,终于把站点搭建起来了,白手起家建站真心不易啊。
以后就在此记录生活和工作中的点点滴滴,在此立据为证,fighting……
–查询序列号
select ROW_NUMBER() OVER(ORDER BY score DESC) from cust_basic_info
–查询序列号
select ROW_NUMBER() OVER() sn , t1.* from _user t1;
–日期间隔计算
date_part(‘day’, (now() -stocktime)) <=3
–类型转换
select CAST (1234 AS text)
–日期变更
select timestamp ‘20131219’ + interval ‘3 month’
select now() + interval ‘3 month’
–手动增加 check约束和外键约束
alter table message add CONSTRAINT check_message_active CHECK (msg_type in(0,1))
alter table message add CONSTRAINT foreign_key_message_dialog_id foreign key(dialog_id) REFERENCES dialog(id)
—替换
update goods_pic set goodspicurl = overlay(goodspicurl placing ‘110’ from 18 for 2)
–创建用户
createuser -drSP round_server
mybatis配置JDBCPool连接池,废话不说,直接上文。
1.创建一个自己的数据源工厂类实现 org.apache.ibatis.datasource.DataSourceFactory
添加属性
注意属性要用连接池提供的数据源对象:
org.apache.tomcat.jdbc.pool.DataSource dataSource;
<?xml version=”1.0” encoding=”UTF-8”?>