JBOSS 点滴

丰丰的博客

2014年1月8日 #

mysql5.x忘记密码

参考:https://blog.csdn.net/qq_34102150/article/details/126120056


1、停止MySQL服务,输入 net stop mysql 停止服务。
2、切换到MySQL的bin文件下,
    mysql5.x:  mysqld --console --skip-grant-tables --shared-memory

mysqld --console --skip-grant-tables --shared-memory
3、输入mysql -uroot -p回车,不用输入密码,直接按回车跳过,
    输入:  use mysql 
    输入:  update user set password=PASSWORD('123456') where USER='root';
    或者:   GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '123456' WITH GRANT OPTION;
    输入:  FLUSH PRIVILEGES;
4、重启服务

posted @ 2024-02-17 15:09 半导体 阅读(15) | 评论 (0)编辑 收藏

微信小程序开发流程

准备工作:
    需要https的域名
    1、域名申请、备案   (我是在阿里云买的服务器,域名也在阿里云购买  )
    2、域名与IP绑定 
    3、ssl安全证书 申请(https
    4、下载ssl安全证书布署在tomcat服务器
    4、在云服务器tomcat中布署https           
           参考   https://blog.csdn.net/qq_35206244/article/details/97613498

          ps:任何操作不会,直接打阿里云客服电话 95187
    
小程序开发流程:
    1、在微信官网注册帐号
    2、下载小程序开发工具
    3、小程序开发、上传   
    4、小程序送审,审核通过即可分享给你的朋友

posted @ 2020-08-08 10:11 半导体 阅读(98) | 评论 (0)编辑 收藏

mall 工程创建踩坑

新建项目坑 
www.macrozheng.com项目,打开maven总是引入失败,后来
https://www.cnblogs.com/dk1024/p/10778841.html


https://blog.csdn.net/ken_ding/article/details/85623092这个是前端有可能遇见的坑的解决办法


 安装环境文档:
http://www.macrozheng.com/#/deploy/mall_deploy_windows

posted @ 2020-07-20 21:52 半导体 阅读(100) | 评论 (0)编辑 收藏

springboot 打包 后,在dos命令行运行提示没有主清单属性的解决办法

1.在pom.xml文件中插入
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
2.双击IDEA右侧Maven Projects的lifecycle下的package,打包成jar,重新执行以上命令。

posted @ 2020-06-27 16:42 半导体 阅读(188) | 评论 (0)编辑 收藏

MyBatis出现org.apache.ibatis.executor.ExecutorException异常

DEBUG [main] - PooledDataSource forcefully closed/removed all connections.
DEBUG [main] 
- PooledDataSource forcefully closed/removed all connections.
DEBUG [main] 
- PooledDataSource forcefully closed/removed all connections.
DEBUG [main] 
- PooledDataSource forcefully closed/removed all connections.
DEBUG [main] 
- Opening JDBC Connection
DEBUG [main] 
- Created connection 29011566.
DEBUG [main] 
- Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@1baae6e]
DEBUG [main] 
- ==>  Preparing: select * from user where username like concat(?,'%') 
DEBUG [main] - ==> Parameters: 张(String)

org.apache.ibatis.exceptions.PersistenceException: 
### 
Error querying database.  Cause: org.apache.ibatis.executor.result.ResultMapException: Error attempting to get column 'username' from result set.  Cause: java.sql.SQLException: Cannot convert value '张三' from column 2 to TIMESTAMP.
### The error may exist in sqlmap/User.xml
### The 
error may involve test.findUserByName3
### The 
error occurred while handling results
### SQL: 
select * from user where username like concat(?,'%')
### Cause: org.apache.ibatis.executor.result.ResultMapException: Error attempting to get column 'username' from result set.  Cause: java.sql.SQLException: Cannot convert value '张三' from column 2 to TIMESTAMP.

    at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:
30)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:
149)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:
140)
    at com.swjd.test.B.test2(B.java:
40)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
43)
    at java.lang.reflect.Method.invoke(Method.java:
497)
    at org.junit.runners.model.FrameworkMethod$
1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:
12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:
47)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:
17)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:
325)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:
78)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:
57)
    at org.junit.runners.ParentRunner$
3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$
1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:
288)
    at org.junit.runners.ParentRunner.access$
000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$
2.evaluate(ParentRunner.java:268)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:
363)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:
137)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:
68)
    at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:
47)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:
242)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:
70)
Caused by: org.apache.ibatis.executor.result.ResultMapException: 
Error attempting to get column 'username' from result set.  Cause: java.sql.SQLException: Cannot convert value '张三' from column 2 to TIMESTAMP.
    at org.apache.ibatis.type.BaseTypeHandler.getResult(BaseTypeHandler.java:83)
    at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.createUsingConstructor(DefaultResultSetHandler.java:
671)
    at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.createByConstructorSignature(DefaultResultSetHandler.java:
654)
    at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.createResultObject(DefaultResultSetHandler.java:
618)
    at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.createResultObject(DefaultResultSetHandler.java:
591)
    at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.getRowValue(DefaultResultSetHandler.java:
397)
    at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValuesForSimpleResultMap(DefaultResultSetHandler.java:
354)
    at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValues(DefaultResultSetHandler.java:
328)
    at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSet(DefaultResultSetHandler.java:
301)
    at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSets(DefaultResultSetHandler.java:
194)
    at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:
65)
    at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:
79)
    at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:
63)
    at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:
324)
    at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:
156)
    at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:
109)
    at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:
83)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:
147)
     
24 more
Caused by: java.sql.SQLException: Cannot convert value 
'张三' from column 2 to TIMESTAMP.
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:
956)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:
926)
    at com.mysql.jdbc.ResultSetRow.getTimestampFast(ResultSetRow.java:
1328)
    at com.mysql.jdbc.ByteArrayRow.getTimestampFast(ByteArrayRow.java:
124)
    at com.mysql.jdbc.ResultSetImpl.getTimestampInternal(ResultSetImpl.java:
6669)
    at com.mysql.jdbc.ResultSetImpl.getTimestamp(ResultSetImpl.java:
5988)
    at com.mysql.jdbc.ResultSetImpl.getTimestamp(ResultSetImpl.java:
6026)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
43)
    at java.lang.reflect.Method.invoke(Method.java:
497)
    at org.apache.ibatis.logging.jdbc.ResultSetLogger.invoke(ResultSetLogger.java:
69)
    at com.sun.proxy.$Proxy6.getTimestamp(Unknown Source)
    at org.apache.ibatis.type.DateTypeHandler.getNullableResult(DateTypeHandler.java:
39)
    at org.apache.ibatis.type.DateTypeHandler.getNullableResult(DateTypeHandler.java:
28)
    at org.apache.ibatis.type.BaseTypeHandler.getResult(BaseTypeHandler.java:
81)
     
41 more
Caused by: java.lang.NumberFormatException: 张三
    at com.mysql.jdbc.StringUtils.getInt(StringUtils.java:
756)
    at com.mysql.jdbc.ResultSetRow.getTimestampFast(ResultSetRow.java:
1253)
     
54 more


Process finished 
with exit code -1

上网找了一些答案也没有解决我的问题,

后来发现原来是User类的构造函数问题,找不到相关的构造函数;试着在User中加一个默认的构造函数,就解决了。。。

希望能帮到大家。

         默认的构造函数在创建构造函数后,不会自动创建默认构造函数

DEBUG [main] 
- Logging initialized using 'class org.apache.ibatis.logging.slf4j.Slf4jImpl' adapter.
DEBUG [main] - PooledDataSource forcefully closed/removed all connections.
DEBUG [main] 
- PooledDataSource forcefully closed/removed all connections.
DEBUG [main] 
- PooledDataSource forcefully closed/removed all connections.
DEBUG [main] 
- PooledDataSource forcefully closed/removed all connections.
DEBUG [main] 
- Opening JDBC Connection
DEBUG [main] 
- Created connection 27155935.
DEBUG [main] 
- Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@19e5ddf]
DEBUG [main] 
- ==>  Preparing: select * from user where id=
DEBUG [main] 
- ==> Parameters: 27(Integer)

org.apache.ibatis.exceptions.PersistenceException: 
### 
Error querying database.  Cause: org.apache.ibatis.reflection.ReflectionException: Error instantiating class com.swjd.po.User with invalid types () or values (). Cause: java.lang.NoSuchMethodException: com.swjd.po.User.<init>()
### The 
error may exist in sqlmap/User.xml
### The 
error may involve test.findUserById-Inline
### The 
error occurred while setting parameters
### SQL: 
select * from user where id=?
### Cause: org.apache.ibatis.reflection.ReflectionException: 
Error instantiating class com.swjd.po.User with invalid types () or values (). Cause: java.lang.NoSuchMethodException: com.swjd.po.User.<init>()

    at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:
26)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:
111)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:
102)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:
66)
    at com.test.Test1.test1(Test1.java:
31)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
43)
    at java.lang.reflect.Method.invoke(Method.java:
497)
    at org.junit.runners.model.FrameworkMethod$
1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:
12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:
47)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:
17)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:
325)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:
78)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:
57)
    at org.junit.runners.ParentRunner$
3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$
1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:
288)
    at org.junit.runners.ParentRunner.access$
000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$
2.evaluate(ParentRunner.java:268)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:
363)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:
137)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:
68)
    at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:
47)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:
242)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:
70)
Caused by: org.apache.ibatis.reflection.ReflectionException: 
Error instantiating class com.swjd.po.User with invalid types () or values (). Cause: java.lang.NoSuchMethodException: com.swjd.po.User.<init>()
    at org.apache.ibatis.reflection.factory.DefaultObjectFactory.instantiateClass(DefaultObjectFactory.java:
86)
    at org.apache.ibatis.reflection.factory.DefaultObjectFactory.create(DefaultObjectFactory.java:
48)
    at org.apache.ibatis.reflection.factory.DefaultObjectFactory.create(DefaultObjectFactory.java:
41)
    at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.createResultObject(DefaultResultSetHandler.java:
528)
    at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.createResultObject(DefaultResultSetHandler.java:
507)
    at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.getRowValue(DefaultResultSetHandler.java:
331)
    at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValuesForSimpleResultMap(DefaultResultSetHandler.java:
291)
    at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValues(DefaultResultSetHandler.java:
266)
    at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSet(DefaultResultSetHandler.java:
236)
    at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSets(DefaultResultSetHandler.java:
150)
    at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:
60)
    at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:
73)
    at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:
60)
    at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:
267)
    at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:
137)
    at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:
96)
    at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:
77)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:
108)
     
25 more
Caused by: java.lang.NoSuchMethodException: com.swjd.po.User.
<init>()
    at java.lang.Class.getConstructor0(Class.java:
3082)
    at java.lang.Class.getDeclaredConstructor(Class.java:
2178)
    at org.apache.ibatis.reflection.factory.DefaultObjectFactory.instantiateClass(DefaultObjectFactory.java:
60)
     
42 more


Process finished 
with exit code -1


  

这种错也是同样的问题,


加上无参构造函数就可以了。


当创建对象来接受sql结果时会遍历实体类的构造方法找到与之匹配的,如果实体类中有构造方法了但是参数不匹配的话就会报上述错误,此时添加无参构造方法(默认的构造方法),会走其他方法,
https://blog.csdn.net/qq_35975416/article/details/80488267




posted @ 2020-03-25 20:01 半导体 阅读(5358) | 评论 (0)编辑 收藏

idea jsp代码不提示Java代码

在<head>里写java代码有提示,在<body>里不写%>就有提示。

这是由于按提示快捷键alt+enter导致。解决方法一直未找到合适的。 
解决方法:

posted @ 2020-03-08 20:11 半导体 阅读(222) | 评论 (0)编辑 收藏

项目管理推荐好文

挣值管理(PV、EV、AC、SV、CV、SPI、CPI)记忆之我见 http://www.cnitpm.com/pm/7707.html https://blog.csdn.net/weixin_38197294/article/details/79852129

posted @ 2020-03-08 11:41 半导体 阅读(102) | 评论 (0)编辑 收藏

jquery传参及获取方式

html写法
<form id="myform">
<input type="radio" value="1" name="gender">
<input type="radio" value="2" name="gender">
<input type="text" name="username" />
<input type="button" value="提交" onclick="fun()"/>
</form>
<div id="myText"></div>



获取值方式一
    <script src="js/jquery-3.3.1.min.js"></script>
    
<script>
        
//定义方法
        function fun(){
           alert($('#myform').serialize());
            
//使用ajax发送异步请求
              $.post("ajaxServletH",$('#myform').serialize(),function(data){
                  
var divA = document.getElementById("myText");
                  divA.innerHTML 
= "<br/><hr><br/>"+data;
               },
"text")
        }
    
</script>
获取值方式二:

var gender = $ ("input [name= 'gender' ] : checked") .val() ;

posted @ 2020-02-08 18:36 半导体 阅读(143) | 评论 (0)编辑 收藏

spring boot结合thymeleaf通过后台传入的数值循环生成标签

spring boot结合thymeleaf通过后台传入的数值循环生成标签

 <span th:each="i:${#numbers.sequence(1,page.pages)}">
   
<span th:text="${i}"/>
</span>

posted @ 2019-10-16 16:06 半导体 阅读(315) | 评论 (0)编辑 收藏

模态框传值

模态框传值:
https://blog.csdn.net/linhaiyun_ytdx/article/details/77417702

posted @ 2019-10-12 16:35 半导体 阅读(136) | 评论 (0)编辑 收藏

Bootstrap 模态框 + iframe > 打开子页面 > 数据传输/关闭模态框

     摘要: 父页面bootstrap模态框: <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="false" > <div class="modal-dialog modal-lg"> ...  阅读全文

posted @ 2019-05-28 21:23 半导体 阅读(320) | 评论 (0)编辑 收藏

mybatis学习之路----mysql批量新增数据

来源:
https://blog.csdn.net/xu1916659422/article/details/77971867
 
   mysql新增语句 
    insert into 表名(字段,字段。。。) values ( 值,值 。。。);此种适合单条插入。
批量插入,
   一种可以在代码中循环着执行上面的语句,但是这种效率太差,下面会有对比,看看它有多差。
另一种,可以用mysql支持的批量插入语句,
insert into
     表名(字段,字段。。。) values ( 值,值 。。。),( 值,值 。。。),( 值,值 。。。)....
这种方式相比起来,更高效。
实现过程mapper.xml
 

    <!-- 跟普通的insert没有什么不同的地方 ,主要用来跟下面的批量插入做对比。-->
    <insert id="insert" parameterType="com.soft.mybatis.model.Customer">
        <!-- 跟自增主键方式相比,这里的不同之处只有两点
                    1  insert语句需要写id字段了,并且 values里面也不能省略
                    2 selectKey 的order属性需要写成BEFORE 因为这样才能将生成的uuid主键放入到model中,
                    这样后面的insert的values里面的id才不会获取为空
              跟自增主键相比就这点区别,当然了这里的获取主键id的方式为 select uuid()
              当然也可以另写别生成函数。-->
        <selectKey keyProperty="id" order="BEFORE" resultType="String">
            select uuid()
        </selectKey>
        insert into t_customer (id,c_name,c_sex,c_ceroNo,c_ceroType,c_age)
        values (#{id},#{name},#{sex},#{ceroNo},#{ceroType},#{age})
    </insert>
 
    <!-- 批量插入, -->
    <insert id="batchInsert" parameterType="java.util.Map">
        <!-- 这里只做演示用,真正项目中不会写的这么简单。 -->
        insert into
          t_customer (id,c_name,c_sex,c_ceroNo,c_ceroType,c_age)
        values
        <!-- foreach mybatis循环集合用的
              collection="list" 接收的map集合中的key 用以循环key对应的属性
                 separator=","  表示每次循环完毕,在sql后面放一个逗号
                 item="cus" 每次循环的实体对象 名称随意-->
        <foreach collection="list" separator="," item="cus">
            <!-- 组装values对象,因为这张表的主键为非自增主键,所以这里 (select uuid()) 用于生成id的值-->
            ((select uuid()),#{cus.name},#{cus.sex},#{cus.ceroNo},#{cus.ceroType},#{cus.age})
        </foreach>
    </insert>
实体model对象

package com.soft.mybatis.model;

 

/**

 * Created by xuweiwei on 2017/9/10.

 */

public class Customer {

 

    private String id;

    private String name;

    private Integer age;

    private Integer sex;

    private String ceroNo;

    private Integer ceroType;

 

    public String getId() {

        return id;

    }

 

    public void setId(String id) {

        this.id = id;

    }

 

    public String getName() {

        return name;

    }

 

    public void setName(String name) {

        this.name = name;

    }

 

    public Integer getAge() {

        return age;

    }

 

    public void setAge(Integer age) {

        this.age = age;

    }

 

    public Integer getSex() {

        return sex;

    }

 

    public void setSex(Integer sex) {

        this.sex = sex;

    }

 

    public String getCeroNo() {

        return ceroNo;

    }

 

    public void setCeroNo(String ceroNo) {

        this.ceroNo = ceroNo;

    }

 

    public Integer getCeroType() {

        return ceroType;

    }

 

    public void setCeroType(Integer ceroType) {

        this.ceroType = ceroType;

    }

 

    @Override

    public String toString() {

        return "Customer{" +

                "id='" + id + '\'' +

                ", name='" + name + '\'' +

                ", age=" + age +

                ", sex=" + sex +

                ", ceroNo='" + ceroNo + '\'' +

                ", ceroType='" + ceroType + '\'' +

                '}';

    }

}
接口
  1. int add(Customer customer);
  2.     int batchInsert(Map<String,Object> param);

    实现
实现

   
/**

     * 新增数据

     * 
@param customer

     * 
@return

     
*/

    
public int add(Customer customer) {

        
return insert("customer.insert", customer);

    }

 

    
/**

     * 批量插入数据

     * 
@param param

     * 
@return

     
*/

    
public int batchInsert(Map<String,Object> param) {

        
return insert("customer.batchInsert", param);

    }

 

    
/**

     * 公共部分

     * 
@param statementId

     * 
@param obj

     * 
@return

     
*/

    
private int insert(String statementId, Object obj){

        SqlSession sqlSession 
= null;

        
try {

            sqlSession 
= SqlsessionUtil.getSqlSession();

            
int key =  sqlSession.insert(statementId, obj);

            
// commit

            sqlSession.commit();

            
return key;

        } 
catch (Exception e) {

            sqlSession.rollback();

            e.printStackTrace();

        } 
finally {

            SqlsessionUtil.closeSession(sqlSession);

        }

        
return 0;

    }

posted @ 2019-05-23 11:29 半导体 阅读(120) | 评论 (0)编辑 收藏

springboot中树形结构的开发

POM中引入
        <!--JSON树形结构 转换-->
        
<dependency>
            
<groupId>net.sf.json-lib</groupId>
            
<artifactId>json-lib</artifactId>
            
<version>2.4</version>
            
<classifier>jdk15</classifier>
        
</dependency>
实体类创建
import net.sf.json.JSONArray;

import java.util.ArrayList;
import java.util.List;

/**
 * 构造目录JSON树
 * Created by   network on 2019/5/22
 
*/
public class TreeBuilder {

    List
<Node> nodes = new ArrayList<>();

    
public String buildTree(List<Node> nodes) {

        TreeBuilder treeBuilder 
= new TreeBuilder(nodes);

        
return treeBuilder.buildJSONTree();
    }

    
public TreeBuilder() {
    }

    
public TreeBuilder(List<Node> nodes) {
        
super();
        
this.nodes = nodes;
    }

    
// 构建JSON树形结构
    public String buildJSONTree() {
        List
<Node> nodeTree = buildTree();
        JSONArray jsonArray 
= JSONArray.fromObject(nodeTree);
        
return jsonArray.toString();
    }

    
// 构建树形结构
    public List<Node> buildTree() {
        List
<Node> treeNodes = new ArrayList<>();
        List
<Node> rootNodes = getRootNodes();
        
for (Node rootNode : rootNodes) {
            buildChildNodes(rootNode);
            treeNodes.add(rootNode);
        }
        
return treeNodes;
    }

    
// 递归子节点
    public void buildChildNodes(Node node) {
        List
<Node> children = getChildNodes(node);
        
if (!children.isEmpty()) {
            
for (Node child : children) {
                buildChildNodes(child);
            }
            node.setChildren(children);
        }
    }

    
// 获取父节点下所有的子节点
    public List<Node> getChildNodes(Node pnode) {
        List
<Node> childNodes = new ArrayList<>();
        
for (Node n : nodes) {
            
if (pnode.getId().equals(n.getPid())) {
                childNodes.add(n);
            }
        }
        
return childNodes;
    }

    
// 判断是否为根节点
    public boolean rootNode(Node node) {
        
boolean isRootNode = true;
        
for (Node n : nodes) {
            
if (node.getPid().equals(n.getId())) {
                isRootNode 
= false;
                
break;
            }
        }
        
return isRootNode;
    }

    
// 获取集合中所有的根节点
    public List<Node> getRootNodes() {
        List
<Node> rootNodes = new ArrayList<>();
        
for (Node n : nodes) {
            
if (rootNode(n)) {
                rootNodes.add(n);
            }
        }
        
return rootNodes;
    }

    
public static class Node {

        
private String id;
        
private String pid;
        
private String name;
        
private List<Node> children;

        
public Node() {
        }

        
public Node(String id, String pid, String name) {
            
super();
            
this.id = id;
            
this.pid = pid;
            
this.name = name;
        }

        
public String getId() {
            
return id;
        }

        
public void setId(String id) {
            
this.id = id;
        }

        
public String getPid() {
            
return pid;
        }

        
public void setPid(String pid) {
            
this.pid = pid;
        }

        
public String getName() {
            
return name;
        }

        
public void setName(String name) {
            
this.name = name;
        }


        
public List<Node> getChildren() {
            
return children;
        }

        
public void setChildren(List<Node> children) {
            
this.children = children;
        }
    }
}
mapper.xml
    <!--根据条件查询返回Node-->
    
<select id="findByItemtypeTree" parameterType="BsItemtype" resultType="Node">
        SELECT upcode as pid,itemname as name,itemtypecode as id FROM 表名 WHERE 1=1
        
<if test="upcode != null  and upcode != '' ">
            and upcode = #{值}
        
</if>
    
</select>
controller:返回结果
    //树形结构
    @RequestMapping("left")
    ModelAndView left() 
throws JSONException {
        String mavStr 
= "";
        BsItemtype queryItemtype 
= new BsItemtype();
        
//查询根目录树
      
//  queryItemtype.setUpcode("00");
        
// 获取全部目录节点
        List<TreeBuilder.Node> itemtypeTree = itemtypeService.findByItemtypeTree();

        
// 拼装树形json字符串
         mavStr = new TreeBuilder().buildTree(itemtypeTree);
        mavStr 
= mavStr.replaceAll("\"children\"","\"nodes\"");
        mavStr
= mavStr.replaceAll("\"id\"","\"value\"");
        mavStr 
= mavStr.replaceAll("\"name\"","\"text\"");
        ModelAndView mav 
= new ModelAndView("/bs/itemtype/itemtypeLeft.html");//配置返回路径
        System.out.println(mavStr);
        mav.addObject(
"mavStr", mavStr.toString());
        
return mav;
    }
DAO层:
List<TreeBuilder.Node> findByItemtypeTree();

html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<html lang="en">
<head>
    
<meta charset="UTF-8">
    
<title></title>

    
<!-- Required Stylesheets -->
    
<link href="/oastyle/css/bootstrap.css" rel="stylesheet">
    
<!-- Required Javascript -->
    
<script src="/js/jquery.js"></script>
    
<script src="/js//bootstrap-treeview.js"></script>
</head>
<body>
<div id="tree"></div>
<script th:inline="javascript">
var tree = eval([[${mavStr}]]);
         
function getTree() {
        
// Some logic to retrieve, or generate tree structure
        return tree;
    }

    $('#tree').treeview({
        data: getTree(),
        enableLinks: 
true});

    $('#tree').on('nodeSelected',
function(event, data) {
          window.parent.itemtypeRight.location.href
="/itemtype/list?upcode="+data.value;
    });

</script>

</body>
</html>

posted @ 2019-05-21 19:08 半导体 阅读(2043) | 评论 (0)编辑 收藏

技巧

layui
可以做表格排序。

posted @ 2019-05-16 21:14 半导体 阅读(67) | 评论 (0)编辑 收藏

分页方式:

前台:
<form   method="post" action = "/bbs/list"  id="queryform">
        
<input type="hidden" name="start" id="start"/>
        
<li>搜索:</li>
                
<input type="text" placeholder="请输入公告名称" name="title"  th:value ="${queryBbs.title}" />
              
<href="javascript:void(0)" class="button border-main icon-search" onclick="changesearch()" > 搜索</a>
    
</form>
    //搜索
    function changesearch() {
        $(
"#queryform").submit();
    }
通过page传值
<div class="pagelist" th:include="common/footer::page"/>
包含页面
<!--fotter-->
<div class="pagelist" th:fragment="page">
    
<a th:onclick="javascript:page(0)">[首 页]</a>
    
<a th:onclick="javascript:page([[${page.pageNum}]]-1)">[上一页]</a>
    
<a th:onclick="javascript:page([[${page.pageNum}]]+1)">[下一页]</a>
    
<a th:onclick="javascript:page([[${page.pages}]])">[尾 页]</a>
    共[[${page.total}]]条记录
</div>
//分页跳转方法
function page(pageNum) {
$(
"#start").val(pageNum);
$(
"#queryform").submit();
}
此种方法可以将搜索查询框内容通过form表单的方式提交给controller,controller再分页,但点“下一页”事件多点二次很容易导致浏览器假死。

第二种方式:直接通过href传值,这种方式不死机。
                        <div class="pagelist">
                        
<th:href="@{/bbs/list(start=0,title=${queryBbs.title})}">[首  页]</a>
                        
<th:href="@{/bbs/list(start=${page.pageNum-1},title=${queryBbs.title})}">[上一页]</a>
                        
<th:href="@{/bbs/list(start=${page.pageNum+1},title=${queryBbs.title})}">[下一页]</a>
                        
<th:href="@{/bbs/list(start=${page.pages},title=${queryBbs.title})}">[尾  页]</a>
                            共[[${page.total}]]条记录
                        
</div>

posted @ 2019-05-15 15:21 半导体 阅读(104) | 评论 (0)编辑 收藏

org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing

     摘要: 错误如下:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->org.thymeleaf.exceptions.TemplateInputException: An error happened during&nbs...  阅读全文

posted @ 2019-05-12 15:15 半导体 阅读(7793) | 评论 (0)编辑 收藏

好看的界面

windows风格
https://www.toufu.xyz
layui

网页模板素材
http://www.htmlsucai.com/forum-78-1.html
http://www.cssmoban.com/cssthemes/houtaimoban/
http://www.16sucai.com/
https://www.58pic.com/

posted @ 2019-05-11 23:17 半导体 阅读(92) | 评论 (0)编辑 收藏

Spring+Mybatis 查询所有数据时发生异常:org.apache.ibatis.reflection.ReflectionException: There is no getter for

Spring+Mybatis框架整合时,根据条件查询数据,发生异常
Caused by: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'sname' in 'class java.lang.String'
userinfoMapper.xml文件:
<select id="findAll" parameterType="string" resultMap="userinfoMap">  select * from userinfo where sname like '%${sname}%' </select>
UserinfoMapper接口:

public List<Userinfo> findAll(String sname);
解决方法:在参数前加@Param标签
public List<Userinfo> findAll(@Param("sname") String sname);

posted @ 2019-05-11 16:05 半导体 阅读(1585) | 评论 (0)编辑 收藏

全选输出checkbox的值

$("input[name='a']").each(function () {
            Aval 
= $(this).val();
            alert(Aval);
        });

解释:取当前页面所有name='a'的input元素,循环每一个取到的元素,将其value的值赋

给Aval,并输出。


posted @ 2019-05-11 14:48 半导体 阅读(81) | 评论 (0)编辑 收藏

mysql8.0使用sqlyog无法连接时

 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

如果mysql只能本地连接,不能远程 连接
第一步:
 update user set host='%' where user='root';
第二步:重启服务

posted @ 2019-05-06 10:14 半导体 阅读(241) | 评论 (0)编辑 收藏

jquery常用语法

$(":text[name='username']").val()

$("#logOn").click(function () {
});
1、jquery引入基本语法:
 $(function(){});

2、触发所有button元素的click事件
    $(
":button").click( ); // 调用不带任何参数的click()函数,会触发每个匹配元素的click事件.
 3、// 点击链接时,阻止链接跳转
    $(
"a").click( function(){
       
return false;
    } );

posted @ 2019-05-04 21:57 半导体 阅读(88) | 评论 (0)编辑 收藏

springboot+ssm+mysql 错误记录

HikariPool-1 - Driver does not support get/set network timeout for connections. (com.mysql.jdbc.JDBC4Connection.getNetworkTimeout()I)
解决办法:在application.properties数据库连接中增加:&serverTimezone=UTC
Registered driver with driverClassName=com.mysql.jdbc.Driver was not found, trying direct instantiation.
解决办法:打开mysql,输入set global time_zone='+8:00';
还有给我自己提个醒,报错信息千万别只看一句,如果第一句报错没给你答案,后面的报错信息继续看。

posted @ 2019-04-29 23:05 半导体 阅读(477) | 评论 (0)编辑 收藏

字符串型转换为JSON并获取值

@RequestMapping(value = "updateInvestorApplyAccountNo", method = RequestMethod.POST)
@ResponseBody
public void updateInvestorApplyAccountNo(HttpServletRequest request,
HttpServletResponse response,
@RequestBody String requestBody) {
int num = 0;
String result = "";
//下面是把拿到的json字符串转成 json对象
JSONObject jsStr = JSONObject.parseObject(requestBody); //将字符串{“id”:1}
//int jsID = Integer.parseInt(jsStr.getString("id"));//获取id的值


/** 
* json对象转换成java对象 
*/ 
InvestorApplyModel stud = (InvestorApplyModel) JSONObject.toJavaObject(jsStr,InvestorApplyModel.class);

}

posted @ 2018-08-25 15:38 半导体 阅读(156) | 评论 (0)编辑 收藏

redirect_uri域名与后台配置不一样,错误码10003

微信获取openid时,如遇到以下错误

解决方法如下:
1、获取openid时,链接地址https://open.weixin.qq.com/connect/oauth2/authorize? 中redirect_uri一定要带上http,
   公众号设置->功能设置->网页授权域名中的域名与redirect_uri域名要一模一样,记得一定要加上http://

posted @ 2018-08-22 10:14 半导体 阅读(604) | 评论 (0)编辑 收藏

JAVA+ORACLE+BLOB+Mybatis

实体类:
    private  byte[] richContent;
    
public byte[] getRichContent() {
        
return richContent;
    }


    
public void setRichContent(byte[] richContent) {
        
this.richContent = richContent;
    }

Mapper.xml
    <result column="RICH_CONTENT" property="richContent" jdbcType="BLOB" typeHandler="org.apache.ibatis.type.BlobTypeHandler"/>

      <if test="richContent != null" >
        UPDATE_DATE = #{richContent,jdbcType=BLOB},
      
</if>
JSP
<td class="propname">发布内容:</td>
<td class="propvalue" colspan="6">
<div id="myEditor" type="text/plain" name='content' style="width: 900px;height:400px;"/>
</td>
CONTROL保存
    //利用content转换为二进制,存入richcontent
String strRich = newsBean.getContent();
if(strRich.length()>0) {
byte[] temp = strRich.getBytes();
newsBean.setRichContent(temp);
newsBean.setContent("");
}

CONTROL显示:
if(casNewsModel.getRichContent().length>0) {
content = new String(casNewsModel.getRichContent());
casNewsModel.setContent(content);
}



posted @ 2018-01-22 20:34 半导体 阅读(197) | 评论 (0)编辑 收藏

模拟登录解决方案

最近一直在做单点登录,随着客户需求不同,解决方案也是多种多样,来说说我总结的解决方案:
一、采用标准接口方式实现单点登录,由于夜已深,以后再上传。
二、采用模拟登录,在门户中让用户输入用户名密码,再模拟用户登录的方式实现系统登录。
当客户提出这种方式时,本人是表示不理解,考虑到安全性本想拒绝,但。。。客户永远是god。
说说这种方式实现的思路吧,用户登录无非几种,
第一:输入用户名密码然后uget或post提交,有密码在手,get方式大家都会,post也很容易,登陆页另存为,form action填远程登陆地址,正常就O了。   
        千万注意,如果用户传的中文,一定要保证不乱码,传输的编码要与系统对应,在<post 中增加编码格式就行了,如:
<form action="远程提交地址"   accept-charset="GB2312" onsubmit="document.charset='GB2312';"/>
第二:如果碰到先加密,再私钥配对这种,模拟他的整个过程,因为密码在手,他调什么方法,你也调,他怎么混,你也照着混。只是步骤多,其他都一样,

posted @ 2017-12-24 00:13 半导体 阅读(125) | 评论 (0)编辑 收藏

ajax调用方法

i不跨域调用

$(document).ready(function() {
$.ajax({
type : 'post',
url :' <%=path%>/mplat/InitAllMenu',
data : {},
cache : false,
dataType : 'json',
success : function(data, stats) {alert(data.menus);
// var returnData=JSON.parse(data);
/* var returnData = data;
appname = returnData.appname;
allTreeNodes = JSON.parse(returnData.menus);*/
},
error : function() {debugger;
alert( "加载应用名出现问题..");
}
})
;

跨域请用jsonp访问,由于回调时会报callback错误,请直接用jquery-jsonp插件;

做跨域数据处理的时候经常使用Jquery的getJSONP方法。但是这个方法跟普通的Ajax是完全不一样的,尽管指定了error,当请求发生错误的时候也不会去执行这个函数。

jQuery-JSONP 是一个支持 JSONP 调用的 jQuery 插件,它支持出错时的 Ajax 回调。下载地址:https://github.com/jaubourg/jquery-jsonp

使用方法很简单,直接引用Down到的文件到你的页面。

$.jsonp({
        url: "/Handler/demo",
        data: { yourdata: "data" },
        callback:"callbackAction",
        success: function (json) {
            //your code            
        },
        error: function (xOptions, textStatus) {
            //your code           
        }
    });

  

注意事项:


http://blog.csdn.net/function_jx_/article/details/47124815
  1. callback:假如指定的值是callbackAction,服务端返回的json数据必须包含在callbackAction()里面。(具体原因请了解一下Jsonp实现原理)

posted @ 2017-12-13 16:50 半导体 阅读(173) | 评论 (0)编辑 收藏

java文件上传工具

uploadify:文件可以切片存放,目前常用

http://www.plupload.com/examples/ 

webUploader

swfUpload:界面漂亮,但文件不能切片存放

posted @ 2017-11-20 16:51 半导体 阅读(151) | 评论 (0)编辑 收藏

powerdesigner反向工程时报错odbc驱动问题

找了很久终于找到64位的powerdesigner16.5了,网上基本所有的默认为32位的,但是现在数据库基本都是64位的了,这样在逆向生成pdm时就会报错,请叫我雷锋。

链接:http://pan.baidu.com/s/1slwAjSh

提取密码:d4gw

需要破解文件的可以在我的上传资源里找到,绝对可以用,本人亲测的!

转自:http://blog.csdn.net/danfeixia123/article/details/53381733

posted @ 2017-11-07 15:17 半导体 阅读(231) | 评论 (0)编辑 收藏

IDE环境配置

oracle 下载地址:http://blog.itpub.net/16886618/viewspace-1365348/
MAVEN安装:http://www.cnblogs.com/izecsonLee/p/6155868.html   最后setting文件localRepository改为 本机地址。

posted @ 2017-10-17 23:43 半导体 阅读(210) | 评论 (0)编辑 收藏

微信公众平台申请测试接口URL和TOKEN的配置,怎么在本地让微信能通过80端口访问

  最近开始微信公众平台的捣鼓,但相信和很多新手一样,遇到的第一件事就是如何配置url,主要是微信的80端口的蛋疼限制,我想这其中的流程应该是这样 的。我们在申请测试帐号时,微信需要指定一个URL和TOKEN,这样微信就可以根据分配给你的APPID和SECRET来通过你提供的URL来认证并且 通过这个接口返回你要的数据,所以也就是我们的程序和微信是能过这个URL来完成交互的,根据这个思路,我们需要一个能让微信访问到你项目的URL,至于 TOKEN可以任意填写,用作生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性)

在公司,首先应当解决的是怎么让外网访问你的项目,我用的是JAVA语言来做开发,刚 开始想通过3322动态解析平台让外网映射到公司来,然后用路由来做一个映射到我的tomcat 8080端口,但尝试后发现3322这个是不能用80端口做映射(很多都这样),所以没办法,也不能直接上公司的服务器来开发,而且80会被其他端口占 用,如果把项目托管到云服务器上也不方便开发,幸好在一个群里遇到高手,建议用ngrok直接把本地开放给外网(大喜),下载后直接把这个解压(我用的是ubuntu,所以下的linux版),在终端里运行./ngrok 8080,这样ngrok会返回一个动态的URL,果然可以访问了,但问题是我在微信里填写的这个URL不可能每次都变呀,于是运行./ngrok -subdomain=test 8080,但这个需要注册才可以用,于是去官网注册。 再根据提示运行一次验证,然后运行这个就OK了,这样我的URL就固定为http://test.ngrok.com。于是乎,我填写微信的URL为 http://test.ngrok.com/mywork/app/action/service(项目访问路径), 打开这tomcat,这样不要做任何更改就可以让外网访问了,然后点击申请认证,就可以看到微信平台已经访问到这我的项目了,接下来做一些验证(下篇贴出 验证代码-java版),OK。这下可以看到配置成功了。至此结束,开始微信之旅,这里感谢群里的老K,和其他的一些兄弟。


来源:
http://blog.csdn.net/aj1031689/article/details/17436125

posted @ 2015-10-23 13:11 半导体 阅读(374) | 评论 (0)编辑 收藏

android软银盘始终显示,并显示在焦点上

//强制显示软银盘
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
//edittext默认焦点
scanbill.setFocusable(true);
scanbill.requestFocus();
scanbill.setFocusableInTouchMode(true);

posted @ 2015-07-03 20:09 半导体 阅读(207) | 评论 (0)编辑 收藏

安卓安装

http://wenku.baidu.com/link?url=7c2-Fo9694hJtWxlwsab09f8fv81BPQmrWMQD8z1zxUSnvnM2FfECc4gN0yewgxkSUhLkdbrG4euc2CULcjQHY7fUn5xzjDedELXAcY-2sG&qq-pf-to=pcqq.c2c

posted @ 2015-06-03 12:17 半导体 阅读(183) | 评论 (0)编辑 收藏

[Android实例] 查找手机中所有的APK,并点击其中任一应用程序进入其中

http://www.eoeandroid.com/forum.php?mod=viewthread&tid=203302

posted @ 2015-05-26 11:37 半导体 阅读(180) | 评论 (0)编辑 收藏

android跳转到另一个类再返回当前类和值

第一步:在A类中点击按钮时调用B类
A类中:
int OUTBILL_CODE = 10;//全局啊
  case R.id.diyoutbill:
   intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
   intent.setClass(ctx, Itemdiydown.class);
   intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
   startActivityForResult(intent,OUTBILL_CODE);
   break;
第二步:
B类中:
      Bundle bundle = new Bundle();   
      bundle.putString("downtype",pubdowntype);
      bundle.putString("startDate",pubstartDate);
      bundle.putString("endDate", pubendDate);
   Itemdiydown.this.setResult(RESULT_OK, this.getIntent().putExtras(bundle));   
   Itemdiydown.this.finish();//关闭当前窗口 
第三类:
返回A类中:
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  // TODO Auto-generated method stub
  super.onActivityResult(requestCode, resultCode, data);
  if (requestCode == OUTBILL_CODE&& resultCode == RESULT_OK) {//
    Bundle bundle = data.getExtras();
          startDate = bundle.getString("startDate");
          endDate = bundle.getString("endDate");
          downtype = bundle.getString("downtype");
          //执行事件
  }
 }

posted @ 2015-05-23 16:59 半导体 阅读(185) | 评论 (0)编辑 收藏

android连接数据库sqllist基础操作学习:

基础学习:
http://blog.csdn.net/liuhe688/article/details/6715983/

Android 数据存储——SQLite实例、判断数据库中表是否存在
http://www.2cto.com/kf/201502/375368.html

posted @ 2015-05-23 11:19 半导体 阅读(345) | 评论 (0)编辑 收藏

SharedPreferences存储和读取数据

     摘要: 转自:http://blog.sina.com.cn/s/blog_4f1c99de0101hur1.html除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。SharedPrefer...  阅读全文

posted @ 2015-05-21 13:14 半导体 阅读(189) | 评论 (0)编辑 收藏

JAVA获取配置信秘

java.util.Properties props = new java.util.Properties();
  in = getClass().getResourceAsStream("/HotelBeContextDAO.properties");
  try {
   props.load(in);
    props.getProperty("officeCode")
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

posted @ 2015-05-20 09:33 半导体 阅读(161) | 评论 (0)编辑 收藏

用webview写界面,加载本地js,js,html文件

转自:http://www.tuicool.com/articles/3mE7BzR
以jquery mobile为例

1.在android界面拖入一个webview,然后添加一个internet权限

<uses-sdk  
    android:minSdkVersion="8"  
    android:targetSdkVersion="18" />  
<uses-permission android:name="android.permission.INTERNET"/>  
  
<application  
            .............................  
View Code

2.  在assets目录里面放入js,css,html资源文件

3.在写本地html的时候引入assert里的对应路径

<!DOCTYPE html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
<meta name="viewport" content="width=device-width, initial-scale=1">   
<title> 标题 </title>  
<link rel="stylesheet" type="text/css" href="file:///android_asset/css/jquery.mobile-1.4.2.min.css">  
<script src="file:///android_asset/js/jquery-1.7.1.min.js"></script>  
<script src="file:///android_asset/js/jquery.mobile-1.4.2.min.js"></script>  
</head>  
<body>  
  
  
 <div data-role="page">  
   <div data-role="header">  
    <h1>My Title</h1>  
   </div>  
     
   <div data-role="content">  
    <ul data-role="listview" data-inset="true" >  
      <li><a href="#">Acura</a></li>  
      <li><a href="#">Audi</a></li>  
      <li><a href="#">BMW</a></li>  
      <li><a href="#">Cadillac</a></li>  
      <li><a href="#">Ferrari</a></li>  
    </ul>   
   </div>  
 </div><!-- /page -->  
  
</body>  
</html>
View Code

4.在代码里访问页面

package com.example.asd_webview;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.webkit.WebSettings;
import android.webkit.WebSettings.RenderPriority;
import android.webkit.WebView;

public class MainActivity extends Activity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    
    WebView webview = (WebView)findViewById(R.id.webView1);
    WebSettings wv_setttig = webview.getSettings();
    wv_setttig.setJavaScriptEnabled(true);
    //wv_setttig.setRenderPriority(RenderPriority.HIGH);
    
    String url = "file:///android_asset/index.html";
    webview.loadUrl(url);
    
  }

  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
  }

}
View Code

5.最后效果如下:

posted @ 2015-05-15 17:03 半导体 阅读(461) | 评论 (0)编辑 收藏

CSS图片适应DIV或TD

img{
max-width:100%;height:auto;
}

posted @ 2015-05-15 12:19 半导体 阅读(195) | 评论 (0)编辑 收藏

android在布局中图片大小自适应

一、适应某控制:
      XML:

                <WebView
                    android:id="@+id/awaimage"
                    android:layout_width="90dp"
                    android:layout_height="80dp"
                    android:layout_marginLeft="2dp"
            android:layout_marginRight="2dp"
            android:scaleType="fitXY"

     JAVA:
/*            WebSettings webSettings = holder.imageView.getSettings();    
            webSettings.setUseWideViewPort(true); //设置加载进来的页面自适应手机屏幕 
            webSettings.setLoadWithOverviewMode(true); 
*/

            
//允许使用javascript  
       
//     webSettings.setJavaScriptEnabled(true); 

二、自动适应屏幕大小:
         WebSettings webSettings = holder.imageView.getSettings();   
         webSettings.setUseWideViewPort(true); //设置加载进来的页面自适应手机屏幕
         webSettings.setLoadWithOverviewMode(true); 
         //允许使用javascript  
         webSettings.setJavaScriptEnabled(true);

posted @ 2015-05-13 14:39 半导体 阅读(368) | 评论 (0)编辑 收藏

Android图片处理内存溢出学习

    

        Android图片处理内存溢出学习             

原文:

http://blog.csdn.net/huangbiao86/article/details/8072128

最近遇到一个问题,在Android机器上,调用自带的相机拍摄后获得相处,并且对获得的相片进行缩放,旋转,截取等操作,看似很简单,但是却遇到了一个,让人心疼的问题,我这里用五能手机进行测试,当然,功能测试是没有问题,当发给客户去测试的时候,却出现了内存溢出,哎无言啊...

原来他用的是三星的G3手机进行测试的,我们没有这款手机,后来借别人的G3手机测试,果然也出现这个问题:

  1. java.lang.OutOfMemoryError  
  2. at android.graphics.BitmapFactory.nativeDecodeByteArray(Native Method)  
  3. at android.graphics.BitmapFactory.decodeByteArray(BitmapFactory.java:518)  
  4. at android.graphics.BitmapFactory.decodeByteArray(BitmapFactory.java:535)  
  5. at com.yippeearts.flashcards.CameraPage$1.onPictureTaken(CameraPage.java:73)  
  6. at android.hardware.Camera$EventHandler.handleMessage(Camera.java:734)  
  7. at android.os.Handler.dispatchMessage(Handler.java:99)  
  8. at android.os.Looper.loop(Looper.java:137)  
  9. at android.app.ActivityThread.main(ActivityThread.java:4514)  
  10. at java.lang.reflect.Method.invokeNative(Native Method)  
  11. at java.lang.reflect.Method.invoke(Method.java:511)  
  12. at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993)  
  13. at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)  
  14. at dalvik.system.NativeStart.main(Native Method)  

这个在不同的手机上出现这种错误还是有点尴尬的。一直以为是对图片的逻辑处理出了什么问题,经过总结发现,估计是因为G3手机拍摄相片分辨率过高,使图片过大,造成过程中内存溢出,通过网上搜索若干解决加载大图片时内存溢出的问题:

 

尽量不要使用setImageBitmap或setImageResource或BitmapFactory.decodeResource来设置一张大图,因为这些函数在完成decode后,最终都是通过java层的createBitmap来完成的,需要消耗更多内存。

因此,改用先通过BitmapFactory.decodeStream方法,创建出一个bitmap,再将其设为ImageView的 source,decodeStream最大的秘密在于其直接调用JNI>>nativeDecodeAsset()来完成decode,无需再使用java层的createBitmap,从而节省了java层的空间。
如果在读取时加上图片的Config参数,可以跟有效减少加载的内存,从而跟有效阻止抛out of Memory异常
另外,decodeStream直接拿的图片来读取字节码了, 不会根据机器的各种分辨率来自动适应, 使用了decodeStream之后,需要在hdpi和mdpi,ldpi中配置相应的图片资源, 否则在不同分辨率机器上都是同样大小(像素点数量),显示出来的大小就不对了。


内存溢出解决办法:

1、模拟器RAM比较小,只有8M内存,当我放入的大量的图片(每个100多K左右),就出现上面的原因。由于每张图片先前是压缩的情况,放入到Bitmap的时候,大小会变大,导致超出RAM内存,具体解决办法如下:

  1. // 解决加载图片 内存溢出的问题  
  2. // Options 只保存图片尺寸大小,不保存图片到内存  
  3. BitmapFactory.Options opts = new BitmapFactory.Options();  
  4. // 缩放的比例,缩放是很难按准备的比例进行缩放的,其值表明缩放的倍数,SDK中建议其值是2的指数值,值越大会导致图片不清晰  
  5. opts.inSampleSize = 4;  
  6. Bitmap bmp = null;  
  7. bmp = BitmapFactory.decodeResource(getResources(), mImageIds[position],  
  8.                 opts);  
  9. // 回收  
  10. bmp.recycle();  

2、优化Dalvik虚拟机的堆内存分配

 

对于Android平台来说,其托管层使用的Dalvik JavaVM从目前的表现来看还有很多地方可以优化处理,比如我们在开发一些大型游戏或耗资源的应用中可能考虑手动干涉GC处理,使用dalvik.system.VMRuntime类提供的setTargetHeapUtilization方法可以增强程序堆内存的处理效率。当然具体原理我们可以参考开源工程,这里我们仅说下使用方法:   private final static floatTARGET_HEAP_UTILIZATION = 0.75f; 在程序onCreate时就可以调用VMRuntime.getRuntime().setTargetHeapUtilization(TARGET_HEAP_UTILIZATION);即可。

Android堆内存也可自己定义大小

对于一些Android项目,影响性能瓶颈的主要是Android自己内存管理机制问题,目前手机厂商对RAM都比较吝啬,对于软件的流畅性来说RAM对性能的影响十分敏感,除了 优化Dalvik虚拟机的堆内存分配外,我们还可以强制定义自己软件的对内存大小,我们使用Dalvik提供的dalvik.system.VMRuntime类来设置最小堆内存为例:

  1. private final static int CWJ_HEAP_SIZE = 610241024 ;  
  2.   
  3. VMRuntime.getRuntime().setMinimumHeapSize(CWJ_HEAP_SIZE); //设置最小heap内存为6MB大小。当然对于内存吃紧来说还可以通过手动干涉GC去处理  

bitmap 设置图片尺寸,避免 内存溢出 OutOfMemoryError的优化方法
★android 中用bitmap 时很容易内存溢出,报如下错误:Java.lang.OutOfMemoryError : bitmap size exceeds VM budget

 

主要是加上这段:

BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 2;

 eg1:(通过Uri取图片)

  1. private ImageView preview;  
  2. BitmapFactory.Options options = new BitmapFactory.Options();  
  3. options.inSampleSize = 2;//图片大小,设置越大,图片越不清晰,占用空间越小  
  4. Bitmap bitmap = BitmapFactory.decodeStream(cr.openInputStream(uri), null, options);  
  5. preview.setImageBitmap(bitmap);  

eg2:(通过路径去图片)

 

  1. private ImageView preview;  
  2. private String fileName= "/sdcard/DCIM/Camera/2010-05-14 16.01.44.jpg";  
  3. BitmapFactory.Options options = new BitmapFactory.Options();  
  4. options.inSampleSize = 2;//图片宽高都为原来的二分之一,即图片为原来的四分之一  
  5. Bitmap b = BitmapFactory.decodeFile(fileName, options);  
  6. preview.setImageBitmap(b);  
  7. filePath.setText(fileName);  

在图片处理的时候,确保图片引用及时回收。

posted @ 2015-05-12 18:54 半导体 阅读(217) | 评论 (0)编辑 收藏

安卓 html显示时,图片无法加载

<!--  hardwareAccelerated解决4.0启动了硬件加速 ,HTML网络图片无法正常显示的问题-->
android:hardwareAccelerated="false"

posted @ 2015-05-05 20:57 半导体 阅读(260) | 评论 (1)编辑 收藏

安卓显示HTML

方法1、使用 CDATA(推荐)
<string name="demoStr"><Data><![CDATA[ <b>ABC</b> ]]> </Data></string>
方法2、转义HTML标签
<string name="myHeadStr">&lt;b>&lt;u>bold, underline &lt;/u>&lt;/b></string>
在程序里引用:
Html.fromHtml(getResources().getString(R.string.myHeadStr));
效果图
android string html标签用法
string.xml代码
Code   ViewCopyPrint
  1. <string name="test"><Data><![CDATA[ <b><font color="#ff0000">ABC</font></b> ]]></Data></string>  

java代码:

Code   ViewCopyPrint
  1. import android.app.Activity;   
  2. import android.app.AlertDialog;   
  3. import android.content.DialogInterface;   
  4. import android.os.Bundle;   
  5. import android.text.Html;   
  6.   
  7. public class testActivity extends Activity {   
  8.     public void onCreate(Bundle savedInstanceState) {   
  9.         super.onCreate(savedInstanceState);   
  10.         AlertDialog.Builder dialog = new AlertDialog.Builder(testActivity.this);   
  11.         dialog.setTitle("测试HTML标签").setMessage(Html.fromHtml(getString(R.string.test))).setPositiveButton(getString(R.string.btn_confirm), new DialogInterface.OnClickListener() {   
  12.             public void onClick(DialogInterface dialog, int which) {   
  13.   
  14.             }   
  15.         }).create().show();   
  16.     }   
  17. }   

posted @ 2015-05-05 13:39 半导体 阅读(115) | 评论 (0)编辑 收藏

eclipse luna+tomcat7.0+JDK7.0+maven环境配置

eclipse luna+tomcat7.0+JDK7.0+maven环境配置

一、下载相关包:

eclipse luna下载地址 :  http://www.eclipse.org/downloads/

JDK7.0下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

Tomcat7.0下载地址:

http://tomcat.apache.org/download-70.cgi

MAVEN下载地址:http://maven.apache.org/

二、环境变量配置(根据软件安装位置配置如下)

JAVA_HOME: D:\Program Files\TortoiseSVN\bin;C:\Program Files (x86)\Java\jdk1.6.0_11\;

PATH: D:\Program Files\TortoiseSVN\bin;C:\Program Files (x86)\Java\jdk1.6.0_11\bin;

M2_HOME:  D:\Program Files (x86)\apache-maven-3.2.5-bin\apache-maven-3.2.5

PATH D:\Program Files (x86)\apache-maven-3.2.5-bin\apache-maven-3.2.5\bin

三、    运行eclipse luna

绿色环保,直接运行eclipse.exe就行了


四、导入maven项目前配置

    
A,tomcat
配置





B,JDK配置


C,MAVEN
安装:


D,
导入maven项目:


E,
导入后如果项目报错,请执行:

在项目上右击,选择菜单maven->update project MAVEN会自动搜索项目中需要的jar包)

   F、运行服务:

选择run on server->tomcat 7

iE上输入:http://localhost:8080/项目名   测试一下吧。

posted @ 2015-02-12 10:04 半导体 阅读(2875) | 评论 (1)编辑 收藏

MAVEN环境变量配置

一、JDK配置:JAVA_HOME  PATH 
二、新建M2_HOME环境:  如:D:\Program Files (x86)\apache-maven-3.2.5-bin\apache-maven-3.2.5
三、PATH:如:D:\Program Files (x86)\apache-maven-3.2.5-bin\apache-maven-3.2.5\bin
     测试Maven环境是否搭建成功,在CMD下输入命令:
      mvn -v
     编译maven项目方法:cmd下指向项目目录下,运行命行:mvn compile
     mvn te

posted @ 2015-02-11 17:41 半导体 阅读(188) | 评论 (0)编辑 收藏

sqlserver创建用户,指定数据库,指定表的权限

http://www.cnblogs.com/gaizai/archive/2011/07/14/2106617.html
记住要选择dbo_owner 别选sysadmin

posted @ 2014-12-03 16:57 半导体 阅读(627) | 评论 (0)编辑 收藏

IREPORT报表实现

     摘要: 一、在JSP中通过传参数实现源代码:(在jasper模板中定义好查询条件及参数) Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><%@ page language="java" import="java.util...  阅读全文

posted @ 2014-11-19 11:47 半导体 阅读(359) | 评论 (0)编辑 收藏

Spring MVC程序中得到静态资源文件css,js,图片文件的路径问题总结

Spring MVC程序中得到静态资源文件css,js,图片

文件的路径


问题总结

用 Spring MVC 开发应用程序,对于初学者有一个很头疼的问题,那就是程序数据都已经查询出来了,但界面样式仍然十分丑陋,加载不了 css,js,图片等资源文件。当你在浏览器上直接输入某个css文件的路径时,直接得到404错误,而路径肯定没有错,其原因就在于在web.xml 中配置了类似如下的 spring servlet:
程序代码 程序代码

<servlet>
    <servlet-name>mvc-dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

请注意  <url-pattern>/</url-pattern> 这表示这个servlet 拦截了所有的请求,包括css,js等。所以出现上面描述的情况。如何解决这个css,js等路径问题呢,有如下几种解决方案.

1. 使用spring mvc resource 去读取静态文件
比如在 WEN-INF 下建立static 文件夹,并在 static 文件夹里面建立css 文件夹,然后建立 1.css  文件.
修改 mvc-dispatcher-servlet.xml 文件
程序代码 程序代码

<mvc:resources mapping="/static/**" location="/WEB-INF/static/"/>

这样配置之后,可以通过 http://your-ip:port/your-app/static/css/1.css 直接访问了。

2. 采用 default servlet
在 web.xml  里面配置
程序代码 程序代码

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/static/*</url-pattern>
</servlet-mapping>

这样做了之后,所有前缀为static 的请求都交给default servlet 去处理。如果你请求  http://your-ip:port/your-app/static/css/1.css ,就表示在 webcontent 目录下的css文件夹下的1.css文件。

3. 通过文件扩展名进行处理
在 web.xml 里面配置
程序代码 程序代码

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.png</url-pattern>
    <url-pattern>*.js</url-pattern>
    <url-pattern>*.css</url-pattern>
</servlet-mapping>


4. 对spring servlet 不用restful 风格。在url 上加上前缀
程序代码 程序代码

<servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
    <url-pattern>/app</url-pattern>
</servlet-mapping>

这样做的目的是让 dispatchservlet 去拦截以/app 开头的那些 URL,并不拦截css,js等。

5. 对spring servlet 不用restful 风格。在url 上加上后缀
程序代码 程序代码

<servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

这样做的目的是让 dispatchservlet 只拦截*.do 的url. 并不拦截css,js等。

上面介绍的5种方法,根据情况自己任意选择一种,现在没办法说那种好,那种方法不好,都有可取之处,用在不同的场景而已。

posted @ 2014-08-24 23:12 半导体 阅读(23828) | 评论 (3)编辑 收藏

easy ui API中文文档

http://www.cnblogs.com/Philoo/archive/2011/10/01/jeasyui_api_layout.html

posted @ 2014-08-20 15:01 半导体 阅读(234) | 评论 (0)编辑 收藏

ajax easy ui总结

1、重新刷新替换iframe:
$("#childRightFrame1").attr('src',"http://www.baidu.com");
2、

取到easyui的tab下iframe方法

http://liuna718-163-com.iteye.com/blog/1672182

3、Easy UI 点击TAB 标签 刷新内容

$('#tabs').tabs({
        onSelect: function (title) {
            var currTab = $('#tabs').tabs('getTab', title);
            var iframe = $(currTab.panel('options').content);
            var src = iframe.attr('src');
            $('#tabs').tabs('update', { tab: currTab, options: { content: createFrame(src)} });
        }
    });

4、页面显示固定值

{
      field : 'tools',
      title : '操作',
      width : 100,
      formatter:function(value,rowData,index){
      var values ="<input type='button' value='设备控制方案'/>";
      return values
      }
      
     }
5、获取选中行的值
  1. var row = grid.datagrid('getSelected');   
  2. if (row){   
  3.   alert(row.id);   
  4. }  

 6、

利用原生JSON对象,将对象转为字符串

 

 

  1. var jsObj = {};  
  2. jsObj.testArray = [1,2,3,4,5];  
  3. jsObj.name = 'CSS3';  
  4. jsObj.date = '8 May, 2011';  
  5. var str = JSON.stringify(jsObj);  
  6. alert(str);  

 

从JSON字符串转为对象

 

 

  1. var jsObj = {};  
  2. jsObj.testArray = [1,2,3,4,5];  
  3. jsObj.name = 'CSS3';  
  4. jsObj.date = '8 May, 2011';  
  5. var str = JSON.stringify(jsObj);  
  6. var str1 = JSON.parse(str);  
  7. alert(str1);  

posted @ 2014-08-20 10:38 半导体 阅读(145) | 评论 (0)编辑 收藏

在JS方法中返回多个值的三种方法 转

在使用JS编程中,有时需要在一个方法返回两个个或两个以上的数据,用下面的几种方法都可以实现:

1 使用数组的方式,如下:

<html>
<head>
    <title>JS函数返回多个值--oec2003</title>
</head>
<body>
    <input type="button" onclick="getNames()" value="test" />

    <script type="text/javascript">
function getData()
{
    var names=new Array("oec2003","oec2004");
    return names;
}
function getNames()
{
    var names=getData();
    alert(getData()[0]); //返回oec2003
}
</script>

</body>
</html>

 

2 将数据封装到Json中返回,如下:

<html>
<head>
<title>JS函数返回多个值--oec2003</title>
</head>
<body>
<input type="button" onclick="getInfo()" value="test"/>
<script type="text/javascript">
function getData()
{
    var info={"name":"oec2003","age":"25"};
    return info;
}
function getInfo()
{
    var info=getData();
    var name=info["name"];
    var age=info["age"];
    alert("姓名:"+name+" 年龄:"+age);
}
</script>
</body>
</html>

更详细的Json的介绍请看这里

3 这是最简单的一种方法,看下面代码:

<html>
<head>
<title>JS函数返回多个值--oec2003</title>
</head>
<body>
<input type="button" onclick="getInfo()" value="test"/>
<script type="text/javascript">
    function getData()
    {
        return ["oec2003", 25]
    }
    function getInfo()
    {
        var info = getData();
        alert("姓名:" + info[0] + "年龄:" + info[1]);
    }
</script>
</body>
</html>

posted @ 2014-08-18 08:23 半导体 阅读(148) | 评论 (0)编辑 收藏

Tomcat部署发布多个工程详细配置;

 

  apache-tomcat-7.0.40配置:

     一、配置解决多个项目出现内存溢出的问题:
 
      找到:D:\apache-tomcat-7.0.40\bin\catalina.bat
      添加:
              set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m
    
     在:   echo Using CATALINA_BASE:   "%CATALINA_BASE%"  的上一行;
    
    找到:D:\apache-tomcat-7.0.40\bin\catalina.sh
    添加:
            JAVA_OPTS="$JAVA_OPTS -server -XX:PermSize=128M -XX:MaxPermSize=512m"
   
   在:  echo "Using CATALINA_BASE:   $CATALINA_BASE"  的上二行;
    
  二、配置项目路径:
       
     1.找到:D:\apache-tomcat-7.0.40\conf\server.xml
     2.注释掉原来的  Host  标签及标签内的所有:
   eg: 
  <!-- <Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true"> -->
   <!-- SingleSignOn valve, share authentication between web applications
    Documentation at: /docs/config/valve.html -->
   <!--
   <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
   -->

   <!-- Access log processes all example.
    Documentation at: /docs/config/valve.html
    Note: The pattern used is equivalent to using pattern="common" -->
   <!-- <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
    prefix="localhost_access_log." suffix=".txt"
    pattern="%h %l %u %t &quot;%r&quot; %s %b" />

        </Host> -->
      3.添加:(同级位置)
     <Host name="localhost" debug="0" appBase="webapps"
                    unpackWARs="true"  xmlValidation="false" xmlNamespaceAware="false">
         <Context path="/sxzx" docBase="D:\apache-tomcat-7.0.40\webapps\sxzx"  reloadable="true"   caseSensitive="false"   debug="0"></Context>
      <Context path="/ywgl" docBase="D:\apache-tomcat-7.0.40\webapps\ywgl" reloadable="true"   caseSensitive="false"   debug="0"></Context>
     </Host>
  
      附:Host标签内的属性及值不用修改;
       只改变Context标签内的值:path:访问时候的工程名;
                             docBase:工程部署的位置;
           其他属性及值不用修改;
  
                                                         \ywgl\
   三、两个部署的项目:D:\apache-tomcat-7.0.40\webapps\sxzx\WEB-INF\web.xml中分别添加:(区别另一个项目)
    
    <context-param>
    <param-name>webAppRootKey</param-name>
    <param-value>web1.root</param-value>
          </context-param>
   
    <context-param>
    <param-name>webAppRootKey</param-name>
    <param-value>web2.root</param-value>
          </context-param>
   
   
  *四、一定注意环境变量JDK的版本 :JAVA_HOME=jdk1.6.0_11、JRE_HOME=jre6: 下发布会有启动报错,只能发布成功一个的情况;  
              JAVA_HOME=jdk1.6.0_16、JRE_HOME=jre6: 下启动一闪而过或则启动失败;
                                      JAVA_HOME=jdk1.7.0_17、JRE_HOME=jre7: 下发布成功,没有报错信息; 
   
   

posted @ 2014-05-21 14:23 半导体 阅读(1160) | 评论 (0)编辑 收藏

项管万能模板

摘要:
2011 年8 月(记住,一定要写和考试时间接近的),我作为项目经理参与了xx 省公安厅
xxxxx项目,该项目投资共500 万元人民币(一定需要写),建设工期为1年,通过该项目的建
设,实现了该省公安信息化工作的……..(自己补充完善),该项目于2012 年8 月,通过了业主
方的验收,赢得了用户的好评。本文结合作者的实际经验,以该项目为例,讨论了信息系统项
目建设过程中的xx 管理(具体根据考试题目来),主要从如下几个方面进行了阐述:(一定要
根据题目,如果说是写进度管理的过程,那就是活动定义,活动排序,资源等等----一定要和下
面正文里的提纲对应上。)------摘要就是这个格式,可以写350-400 字。
正文:
2011年8月,我作为项目经理参与了xx 省公安厅xxxxx项目,该项目投资共500万元人
民币,建设工期为1 年,通过该项目的建设,实现了该省公安信息化工作的……..(自己补充完
善),该系统采用java 语言开发,数据库采用oracle 10g,用到了什么中间件、采用什么架构,
数据库服务器、应用服务器分别采用什么??这些大家根据自己的项目去写,写个500字左右,
别太多,别太少。
由于本项目的顺利上线涉及到业务的考核,因此,在本项目中,xx 管理尤为重要,在本项
目中,我作为项目经理特别除了对其余管理领域进行克制恪守的管理外,特别对xx 管理从如
下几个方面进行了管理-----这是一个过渡段,非常重要。

结尾:(这2 个字在论文里可以不写,我这里写,是让大家好看)
经过我们团队不懈的努力,历时1 年,本项目终于于2012 年8 月,通过了业主方组织的
验收,为用户解决了什么问题,或者是达到了什么目的(根据自己的项目去写)得到了业主的
好评。本项目的成功得益于我成功的xx 管理。当然,在本项目中,还有一些不足之处,比如:
在项目的实施过程中,由于项目组2 名成员因为自身原因突然离职,导致项目的团队建设出现
一些小问题,还有,曾经由于需要购买的服务器由于连日暴雨的不可抗力导致环境搭建进度出
现些许异常(自己去想一些小问题,切忌,别出现什么大问题),不过,经过我后期的纠偏,
并没有对项目产生什么影响。在后续的学习和工作中,我将不断的充电学习,和同行进行交流,
提升自己的业务和管理水平,力争为我国信息化建设做出自己的努力。

posted @ 2014-03-27 10:47 半导体 阅读(135) | 评论 (0)编辑 收藏

spring事务配置及事务测试

方法一:
事务配置:applicatoncontext.xml
 1<!-- 配置事务管理器 -->
 2    <bean id="transactionManager"
 3        class="org.springframework.orm.hibernate3.HibernateTransactionManager">
 4        <property name="sessionFactory">
 5            <ref local="sessionFactory" />
 6        </property>
 7    </bean>
 8    <!---->
 9    <bean id="txProxyTemplate" abstract="true"
10        class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
11        <property name="transactionManager">
12            <ref bean="transactionManager" />
13        </property>
14        <property name="transactionAttributes">
15            <props>
16                <prop key="query*">PROPAGATION_REQUIRED,readOnly,-Exception</prop>
17                <prop key="find*">PROPAGATION_REQUIRED,readOnly,-Exception</prop>
18                <prop key="add*">PROPAGATION_REQUIRED,-Exception</prop>
19                <prop key="update*">PROPAGATION_REQUIRED,-Exception</prop>
20                <prop key="delete*">PROPAGATION_REQUIRED,-Exception</prop>
21                <prop key="save*">PROPAGATION_REQUIRED,-Exception</prop>
22            </props>
23        </property>
24    </bean>
事务测试(BO继承事务):applicationcontext.xml
<bean id="SysJobBO" parent="txProxyTemplate">
        
<property name="target">
            
<bean
                
class="com.gzlt.sys.user.bo.impl.SysJobBOImpl">
                
<property name="commonDAO"
                    ref
="CommonDAO">
                
</property>
            
</bean>
        
</property>
    
</bean>

BOIMPL中:

    @Override
    public boolean updates(SysJob sysJob) throws Exception {
        // TODO Auto-generated method stub
        commonDAO.add(sysJob);
        sysJob.setIsLeaf("453322222222222222ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss");
        commonDAO.add(sysJob);
        return true;
    }

如果事务未起作用,请查看:
1、action中的方法是不是不以add,update,。。开头。
2、有可能是抛出的异常将事务舍弃了。 如果try catch   异常为 applicationException  请改为  applicationException 试试。

方法二:
 

posted @ 2014-03-26 16:46 半导体 阅读(255) | 评论 (0)编辑 收藏

映射文件配置org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save():

引起问题的原因:

由Hibernate根据数据库表自动生成的"类名.hbm.xml"映射文件引起的。

首先我的表(Info)由两个字段组成,即:

int id;//主建

String name;

(自己做测试,所以就简单的建了个表)

由Hibernate生成的Info.hbm.xml中是这样写的:

-----------------------------------------------------

<id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="assigned"/>
</id>

-----------------------------------------------------

<id>这个是必须有的。它是用来定义实体的标识属性(对应数据库表的主键)

而我这里由于id本身就是主键,所以column的属性便是id

下面是很关键的一点<generator>,由于一时兴趣,于是找了很多资料,关于它的解释是:用于指定主键的生成策略。它的值有多,下面是转来的:

--------------------------------------------------------------------------------

“assigned”
主键由外部程序负责生成,在   save()   之前指定一个。
   
“hilo”
通过hi/lo   算法实现的主键生成机制,需要额外的数据库表或字段提供高位值来源。
   
“seqhilo”
与hilo   类似,通过hi/lo   算法实现的主键生成机制,需要数据库中的   Sequence,适用于支持   Sequence   的数据库,如Oracle。
   
“increment”
主键按数值顺序递增。此方式的实现机制为在当前应用实例中维持一个变量,以保存着当前的最大值,之后每次需要生成主键的时候将此值加1作为主键。这种方式可能产生的问题是:不能在集群下使用。
   
“identity”
采用数据库提供的主键生成机制。如DB2、SQL   Server、MySQL   中的主键生成机制。
   
“sequence”
采用数据库提供的   sequence   机制生成主键。如   Oralce   中的Sequence。
   
“native”
由   Hibernate   根据使用的数据库自行判断采用   identity、hilo、sequence   其中一种作为主键生成方式。
   
“uuid.hex”
由   Hibernate   基于128   位   UUID   算法   生成16   进制数值(编码后以长度32   的字符串表示)作为主键。
   
“uuid.string”
与uuid.hex   类似,只是生成的主键未进行编码(长度16),不能应用在   PostgreSQL   数据库中。
     
“foreign”
使用另外一个相关联的对象的标识符作为主键。

--------------------------------------------------------------------------------

看了上面的介绍,再看看代码,原来是<Generator>属性设置有问题。

然后改为"identity"、"native"问题便解决。



   在Hibernate中的映射文件配置中,如果在数据库中设置一列为自动增长列,但又不是主键,则在配置时需要设置 property 节点的 "insert" 和“update” 属性为false. 即: <property column="ID" name="id" type="int" insert="false" update="false"/>

posted @ 2014-03-16 22:20 半导体 阅读(773) | 评论 (0)编辑 收藏

myeclipse编译慢的问题

删除.project配置中

1、javascript validation和jtds 选项。
  <buildCommand>
   <name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
   <arguments>
   </arguments>
  </buildCommand>

2、打开myeclipse时,会提示是否加入javascriptvalidation 选择否。

再编译时,速度会快很多倍。

posted @ 2014-01-08 15:43 半导体 阅读(346) | 评论 (0)编辑 收藏

ORACLE转为sqlservr碰到的问题集

1、更改配置:application.xml

 <!-- PROXOOL连接池的设置数据源sqlserver -->
 
 <bean id="dataSource"
  class="org.logicalcobwebs.proxool.ProxoolDataSource">
  <property name="driver">
   <value>com.microsoft.sqlserver.jdbc.SQLServerDriver</value>
  </property>
  <property name="driverUrl">
   <value>jdbc:sqlserver://127.0.0.1:1433; DatabaseName=ctts</value>
  </property>
  <property name="user">
   <value>sa</value>
  </property>
  <property name="password">
   <value>sadmin</value>
  </property>
  <property name="alias">
   <value>ctts</value>
  </property>

        <property name="maximumActiveTime" value="300000"/> 
        <property name="prototypeCount" value="0"/> 
        <property name="maximumConnectionCount" value="12000"/> 
        <property name="minimumConnectionCount" value="1"/> 
        <property name="simultaneousBuildThrottle" value="2000"/> 
        <property name="houseKeepingTestSql" value="select CURRENT_DATE"/> 
 </bean>
2、hibernate配置更改:
  <property name="dialect">
   org.hibernate.dialect.SQLServerDialect
  </property>
3、oracle字段类型为DATE,牵移到sqlserver下,会出现类型转换错误,如:

           将 nvarchar 值转换为 JDBC 数据类型 TIMESTAMP 时发生错误   
        sqlserver反映射后,date类型为:java.sql.Timestamp

         oracle反映射后,date类型为:java.util.Date    

    解决办法:方法一:oracle转换为sqlserver时,DATE类型全部转换为DATETIME.
                    方法二:oracle日期类型全部用varchr(7)  ,这样就不存在转换问题。


 

posted @ 2014-01-08 11:28 半导体 阅读(316) | 评论 (0)编辑 收藏

ROW_NUMBER() OVER函数的基本用法

ROW_NUMBER() OVER函数的基本用法

ROW_NUMBER() OVER函数的基本用法用法

 转自:http://www.cnblogs.com/icebutterfly/archive/2009/08/05/1539657.html

语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)

简单的说row_number()从1开始,为每一条分组记录返回一个数字,这里的ROW_NUMBER() OVER (ORDER BY xlh DESC) 是先把xlh列降序,再为降序以后的没条xlh记录返回一个序号。
示例:
xlh           row_num
1700              1
1500              2
1085              3
710                4

row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)

实例:

初始化数据

create table employee (empid int ,deptid int ,salary decimal(10,2))
insert into employee values(1,10,5500.00)
insert into employee values(2,10,4500.00)
insert into employee values(3,20,1900.00)
insert into employee values(4,20,4800.00)
insert into employee values(5,40,6500.00)
insert into employee values(6,40,14500.00)
insert into employee values(7,40,44500.00)
insert into employee values(8,50,6500.00)
insert into employee values(9,50,7500.00)

数据显示为

empid       deptid      salary
----------- ----------- ---------------------------------------
1           10          5500.00
2           10          4500.00
3           20          1900.00
4           20          4800.00
5           40          6500.00
6           40          14500.00
7           40          44500.00
8           50          6500.00
9           50          7500.00

需求:根据部门分组,显示每个部门的工资等级

预期结果:

empid       deptid      salary                                  rank
----------- ----------- --------------------------------------- --------------------
1           10          5500.00                                 1
2           10          4500.00                                 2
4           20          4800.00                                 1
3           20          1900.00                                 2
7           40          44500.00                               1
6           40          14500.00                               2
5           40          6500.00                                 3
9           50          7500.00                                 1
8           50          6500.00                                 2

SQL脚本:

SELECT *, Row_Number() OVER (partition by deptid ORDER BY salary desc) rank FROM employee

 

转自:http://www.cnblogs.com/digjim/archive/2006/09/20/509344.html

我们知道,SQL Server 2005和SQL Server 2000 相比较,SQL Server 2005有很多新特性。这篇文章我们要讨论其中的一个新函数Row_Number()。数据库管理员和开发者已经期待这个函数很久了,现在终于等到了!


 通常,开发者和管理员在一个查询里,用临时表和列相关的子查询来计算产生行号。现在SQL Server 2005提供了一个函数,代替所有多余的代码来产生行号。

 我们假设有一个资料库[EMPLOYEETEST],资料库中有一个表[EMPLOYEE],你可以用下面的脚本来产生资料库,表和对应的数据。

 USE [MASTER]
GO

IF  EXISTS (SELECT NAME FROM SYS.DATABASES WHERE NAME = N'EMPLOYEE TEST')
DROP DATABASE [EMPLOYEE TEST]
GO
CREATE DATABASE [EMPLOYEE TEST]
GO
USE [EMPLOYEE TEST]
GO

IF  EXISTS SELECT * FROM SYS.OBJECTS HERE OBJECT_ID = OBJECT_ID(N'[DBO].[EMPLOYEE]') AND TYPE IN (N'U'))
DROP TABLE [DBO].[EMPLOYEE]
GO

CREATE TABLE EMPLOYEE (EMPID INT, FNAME VARCHAR(50),LNAME VARCHAR(50))
GO
INSERT INTO EMPLOYEE  (EMPID, FNAME, LNAME) VALUES (2021110, 'MICHAEL', 'POLAND')
INSERT INTO EMPLOYEE  (EMPID, FNAME, LNAME) VALUES (2021110, 'MICHAEL', 'POLAND')
INSERT INTO EMPLOYEE  (EMPID, FNAME, LNAME) VALUES (2021115, 'JIM', 'KENNEDY')
INSERT INTO EMPLOYEE  (EMPID, FNAME, LNAME) VALUES (2121000, 'JAMES', 'SMITH')
INSERT INTO EMPLOYEE  (EMPID, FNAME, LNAME) VALUES (2011111, 'ADAM', 'ACKERMAN')
INSERT INTO EMPLOYEE  (EMPID, FNAME, LNAME) VALUES (3015670, 'MARTHA', 'LEDERER')
INSERT INTO EMPLOYEE  (EMPID, FNAME, LNAME) VALUES (1021710, 'MARIAH', 'MANDEZ')
GO

 我们可以用下面的脚本查询EMPLOYEE表。

 SELECT EMPID, RNAME, LNAME FROM EMPLOYEE

 这个查询的结果应该如图1.0 

2021110

MICHAEL

POLAND

2021110

MICHAEL

POLAND

2021115

JIM

KENNEDY

2121000

JAMES

SMITH

2011111

ADAM

ACKERMAN

3015670

MARTHA

LEDERER

1021710

MARIAH

MANDEZ


图1.0

 在SQL Server 2005,要根据这个表中的数据产生行号,我通常使用下面的查询。 

SELECT ROWID=IDENTITY(int,1,1) , EMPID, FNAME, LNAME INTO EMPLOYEE2 FROM EMPLOYEE ORDER BY EMPID

 这个查询创建了一个新的表,用identify函数来产生行号。我们用下面的查询来看看这个表的数据。 

SELECT ROWID, EMPID, FNAME, LNAME FROM EMPLOYEE2

 上面的查询结果如图1.1 

1

1021710

MARIAH

MANDEZ

2

2011111

ADAM

ACKERMAN

3

2021110

MICHAEL

POLAND

4

2021110

MICHAEL

POLAND

5

2021115

JIM

KENNEDY

6

2121000

JAMES

SMITH

7

3015670

MARTHA

LEDERER


图1.1

 这个查询结果很明显EMP=2021110的行是重复的数据。

 要删除EMPID=2021110的重复数据,我们必须在EMPLOYEE2表中删除,不能直接在EMPLOYEE中删除。

 SQL Server 2005提供了一个新的函数(Row_Number())来产生行号。我们可以使用这个新函数来删除原来表中的重复数据,只用通常的表达方式再加上Row_Number()函数。

 让我们用Row_Number()函数根据EMPID来产生ROWID。

 SELECT ROW_NUMBER() OVER (ORDER BY EMPID ASC) AS ROWID, * FROM EMPLOYEE

 上面的查询结果如图1.2 

1

1021710

MARIAH

MANDEZ

2

2011111

ADAM

ACKERMAN

3

2021110

MICHAEL

POLAND

4

2021110

MICHAEL

POLAND

5

2021115

JIM

KENNEDY

6

2121000

JAMES

SMITH

7

3015670

MARTHA

LEDERER


图1.2

 在这个结果中,我们可以区别EMPID是2021110的重复数据。

 我们可以用通用表查询表达式和Row_Numner()函数来选出重复的那行数据。

 WITH [EMPLOYEE ORDERED BY ROWID] AS
(SELECT ROW_NUMBER() OVER (ORDER BY EMPID ASC) AS ROWID, * FROM EMPLOYEE)
SELECT * FROM [EMPLOYEE ORDERED BY ROWID] WHERE ROWID =4

上面的查询结果如图1.3 

4

2021110

MICHAEL

POLAND


图1.3

 这一行重复的数据可以用下面这个通用表和Row_Number()函数来删除。

 WITH [EMPLOYEE ORDERED BY ROWID] AS
(SELECT ROW_NUMBER() OVER (ORDER BY EMPID ASC) AS ROWID, * FROM EMPLOYEE)
DELETE FROM [EMPLOYEE ORDERED BY ROWID] WHERE ROWID =4

 删除以后,我们可以用下面的查询语句看一下结果。

 SELECT * FROM EMPLOYEE

 这个查询结果如图1.4 

2021110

MICHAEL

POLAND

2021115

JIM

KENNEDY

2121000

JAMES

SMITH

2011111

ADAM

ACKERMAN

3015670

MARTHA

LEDERER

1021710

MARIAH

MANDEZ


图 1.4

 这里我们可以看到,重复的数据已经被删除了。

 总结

在这篇文章中,我们讨论了SQL Server 2005 的新特性Row_Number()函数,还有通常的表表达式,然后如何使用这两个来删除重复的行。

posted @ 2014-01-08 11:21 半导体 阅读(149) | 评论 (0)编辑 收藏