2014年3月16日
#
参考: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、重启服务
准备工作:
需要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、小程序送审,审核通过即可分享给你的朋友
新建项目坑
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
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,重新执行以上命令。
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
在<head>里写java代码有提示,在<body>里不写%>就有提示。
这是由于按提示快捷键alt+enter导致。解决方法一直未找到合适的。
解决方法:
挣值管理(PV、EV、AC、SV、CV、SPI、CPI)记忆之我见
http://www.cnitpm.com/pm/7707.html
https://blog.csdn.net/weixin_38197294/article/details/79852129
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() ;
spring boot结合thymeleaf通过后台传入的数值循环生成标签
<span th:each="i:${#numbers.sequence(1,page.pages)}">
<span th:text="${i}"/>
</span>
模态框传值:
https://blog.csdn.net/linhaiyun_ytdx/article/details/77417702
摘要: 父页面bootstrap模态框: <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="false" > <div class="modal-dialog modal-lg"> ...
阅读全文
来源:
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 + '\'' +
'}';
}
}
接口
int add(Customer customer);
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;
}
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>
前台:
<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}" />
<a 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">
<a th:href="@{/bbs/list(start=0,title=${queryBbs.title})}">[首 页]</a>
<a th:href="@{/bbs/list(start=${page.pageNum-1},title=${queryBbs.title})}">[上一页]</a>
<a th:href="@{/bbs/list(start=${page.pageNum+1},title=${queryBbs.title})}">[下一页]</a>
<a th:href="@{/bbs/list(start=${page.pages},title=${queryBbs.title})}">[尾 页]</a>
共[[${page.total}]]条记录
</div>
摘要: 错误如下:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->org.thymeleaf.exceptions.TemplateInputException: An error happened during&nbs...
阅读全文
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/
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);
$("input[name='a']").each(function () {
Aval = $(this).val();
alert(Aval);
});
解释:取当前页面所有name='a'的input元素,循环每一个取到的元素,将其value的值赋
给Aval,并输出。
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';
第二步:重启服务
$(":text[name='username']").val()
$("#logOn").click(function () {
});
1、jquery引入基本语法:
$(
function
(){});
2、
触发所有button元素的click事件
$(":button").click( ); // 调用不带任何参数的click()函数,会触发每个匹配元素的click事件.
3、// 点击链接时,阻止链接跳转
$("a").click( function(){
return false;
} );
HikariPool-1 - Driver does not support get/set network timeout for connections. (com.mysql.jdbc.JDBC4Connection.getNetworkTimeout()I)
解决办法:在application.properties数据库连接中增加:
&serverTimezone=UTCRegistered driver with driverClassName=com.mysql.jdbc.Driver was not found, trying direct instantiation.
解决办法:
打开mysql,输入set global time_zone='+8:00';
还有给我自己提个醒,报错信息千万别只看一句,如果第一句报错没给你答案,后面的报错信息继续看。
@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);
}
微信获取openid时,如遇到以下错误
解决方法如下:
1、获取openid时,链接地址https://open.weixin.qq.com/connect/oauth2/authorize? 中redirect_uri一定要带上http,
公众号设置->功能设置->网页授权域名中的域名与redirect_uri域名要一模一样,记得一定要加上http://
最近一直在做单点登录,随着客户需求不同,解决方案也是多种多样,来说说我总结的解决方案:
一、采用标准接口方式实现单点登录,由于夜已深,以后再上传。
二、采用模拟登录,在门户中让用户输入用户名密码,再模拟用户登录的方式实现系统登录。
当客户提出这种方式时,本人是表示不理解,考虑到安全性本想拒绝,但。。。客户永远是god。
说说这种方式实现的思路吧,用户登录无非几种,
第一:输入用户名密码然后uget或post提交,有密码在手,get方式大家都会,post也很容易,登陆页另存为,form action填远程登陆地址,正常就O了。
千万注意,如果用户传的中文,一定要保证不乱码,传输的编码要与系统对应,在<post 中增加编码格式就行了,如:
<form action="远程提交地址" accept-charset="GB2312" onsubmit="document.charset='GB2312';"/>
第二:如果碰到先加密,再私钥配对这种,模拟他的整个过程,因为密码在手,他调什么方法,你也调,他怎么混,你也照着混。只是步骤多,其他都一样,
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
- callback:假如指定的值是callbackAction,服务端返回的json数据必须包含在callbackAction()里面。(具体原因请了解一下Jsonp实现原理)
找了很久终于找到64位的powerdesigner16.5了,网上基本所有的默认为32位的,但是现在数据库基本都是64位的了,这样在逆向生成pdm时就会报错,请叫我雷锋。
链接:http://pan.baidu.com/s/1slwAjSh
提取密码:d4gw
需要破解文件的可以在我的上传资源里找到,绝对可以用,本人亲测的!
转自:http://blog.csdn.net/danfeixia123/article/details/53381733
最近开始微信公众平台的捣鼓,但相信和很多新手一样,遇到的第一件事就是如何配置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
//强制显示软银盘
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
//edittext默认焦点
scanbill.setFocusable(true);
scanbill.requestFocus();
scanbill.setFocusableInTouchMode(true);
第一步:在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");
//执行事件
}
}
摘要: 转自:http://blog.sina.com.cn/s/blog_4f1c99de0101hur1.html除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。SharedPrefer...
阅读全文
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();
}
转自: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>
</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);
String url = "file:///android_asset/index.html";
webview.loadUrl(url);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
View Code
5.最后效果如下:
img{max-width:100%;height:auto;}
一、适应某控制:
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);
原文:
http://blog.csdn.net/huangbiao86/article/details/8072128
最近遇到一个问题,在Android机器上,调用自带的相机拍摄后获得相处,并且对获得的相片进行缩放,旋转,截取等操作,看似很简单,但是却遇到了一个,让人心疼的问题,我这里用五能手机进行测试,当然,功能测试是没有问题,当发给客户去测试的时候,却出现了内存溢出,哎无言啊...
原来他用的是三星的G3手机进行测试的,我们没有这款手机,后来借别人的G3手机测试,果然也出现这个问题:
- java.lang.OutOfMemoryError
- at android.graphics.BitmapFactory.nativeDecodeByteArray(Native Method)
- at android.graphics.BitmapFactory.decodeByteArray(BitmapFactory.java:518)
- at android.graphics.BitmapFactory.decodeByteArray(BitmapFactory.java:535)
- at com.yippeearts.flashcards.CameraPage$1.onPictureTaken(CameraPage.java:73)
- at android.hardware.Camera$EventHandler.handleMessage(Camera.java:734)
- at android.os.Handler.dispatchMessage(Handler.java:99)
- at android.os.Looper.loop(Looper.java:137)
- at android.app.ActivityThread.main(ActivityThread.java:4514)
- at java.lang.reflect.Method.invokeNative(Native Method)
- at java.lang.reflect.Method.invoke(Method.java:511)
- at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993)
- at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)
- at dalvik.system.NativeStart.main(Native Method)
java.lang.OutOfMemoryError
at android.graphics.BitmapFactory.nativeDecodeByteArray(Native Method)
at android.graphics.BitmapFactory.decodeByteArray(BitmapFactory.java:518)
at android.graphics.BitmapFactory.decodeByteArray(BitmapFactory.java:535)
at com.yippeearts.flashcards.CameraPage$1.onPictureTaken(CameraPage.java:73)
at android.hardware.Camera$EventHandler.handleMessage(Camera.java:734)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4514)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)
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内存,具体解决办法如下:
-
-
- BitmapFactory.Options opts = new BitmapFactory.Options();
-
- opts.inSampleSize = 4;
- Bitmap bmp = null;
- bmp = BitmapFactory.decodeResource(getResources(), mImageIds[position],
- opts);
-
- bmp.recycle();
// 解决加载图片 内存溢出的问题
// Options 只保存图片尺寸大小,不保存图片到内存
BitmapFactory.Options opts = new BitmapFactory.Options();
// 缩放的比例,缩放是很难按准备的比例进行缩放的,其值表明缩放的倍数,SDK中建议其值是2的指数值,值越大会导致图片不清晰
opts.inSampleSize = 4;
Bitmap bmp = null;
bmp = BitmapFactory.decodeResource(getResources(), mImageIds[position],
opts);
// 回收
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类来设置最小堆内存为例:
- private final static int CWJ_HEAP_SIZE = 6* 1024* 1024 ;
-
- VMRuntime.getRuntime().setMinimumHeapSize(CWJ_HEAP_SIZE);
private final static int CWJ_HEAP_SIZE = 6* 1024* 1024 ;
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取图片)
- private ImageView preview;
- BitmapFactory.Options options = new BitmapFactory.Options();
- options.inSampleSize = 2;
- Bitmap bitmap = BitmapFactory.decodeStream(cr.openInputStream(uri), null, options);
- preview.setImageBitmap(bitmap);
private ImageView preview;
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 2;//图片大小,设置越大,图片越不清晰,占用空间越小
Bitmap bitmap = BitmapFactory.decodeStream(cr.openInputStream(uri), null, options);
preview.setImageBitmap(bitmap);
eg2:(通过路径去图片)
- private ImageView preview;
- private String fileName= "/sdcard/DCIM/Camera/2010-05-14 16.01.44.jpg";
- BitmapFactory.Options options = new BitmapFactory.Options();
- options.inSampleSize = 2;
- Bitmap b = BitmapFactory.decodeFile(fileName, options);
- preview.setImageBitmap(b);
- filePath.setText(fileName);
private ImageView preview;
private String fileName= "/sdcard/DCIM/Camera/2010-05-14 16.01.44.jpg";
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 2;//图片宽高都为原来的二分之一,即图片为原来的四分之一
Bitmap b = BitmapFactory.decodeFile(fileName, options);
preview.setImageBitmap(b);
filePath.setText(fileName);
在图片处理的时候,确保图片引用及时回收。
<!-- hardwareAccelerated解决4.0启动了硬件加速 ,HTML网络图片无法正常显示的问题-->
android:hardwareAccelerated="false"
方法1、使用 CDATA(推荐)
<string name="demoStr"><Data><![CDATA[ <b>ABC</b> ]]> </Data></string>
方法2、转义HTML标签
<string name="myHeadStr"><b><u>bold, underline </u></b></string>
在程序里引用:
Html.fromHtml(getResources().getString(R.string.myHeadStr));
效果图
string.xml代码
- <string name="test"><Data><![CDATA[ <b><font color="#ff0000">ABC</font></b> ]]></Data></string>
java代码:
- import android.app.Activity;
- import android.app.AlertDialog;
- import android.content.DialogInterface;
- import android.os.Bundle;
- import android.text.Html;
-
- public class testActivity extends Activity {
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- AlertDialog.Builder dialog = new AlertDialog.Builder(testActivity.this);
- dialog.setTitle("测试HTML标签").setMessage(Html.fromHtml(getString(R.string.test))).setPositiveButton(getString(R.string.btn_confirm), new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
-
- }
- }).create().show();
- }
- }
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/项目名 测试一下吧。
一、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
http://www.cnblogs.com/gaizai/archive/2011/07/14/2106617.html
记住要选择dbo_owner 别选sysadmin
摘要: 一、在JSP中通过传参数实现源代码:(在jasper模板中定义好查询条件及参数)
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><%@ page language="java" import="java.util...
阅读全文
Spring MVC程序中得到静态资源文件css,js,图片
文件的路径
问题总结
作者:轻舞肥羊 日期:2012-11-26
用 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种方法,根据情况自己任意选择一种,现在没办法说那种好,那种方法不好,都有可取之处,用在不同的场景而已。
1、重新刷新替换iframe:
$("#childRightFrame1").attr('src',"http://www.baidu.com");
2、
$('#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、获取选中行的值
- var row = grid.datagrid('getSelected');
- if (row){
- alert(row.id);
- }
6、
利用原生JSON对象,将对象转为字符串
- var jsObj = {};
- jsObj.testArray = [1,2,3,4,5];
- jsObj.name = 'CSS3';
- jsObj.date = '8 May, 2011';
- var str = JSON.stringify(jsObj);
- alert(str);
从JSON字符串转为对象
- var jsObj = {};
- jsObj.testArray = [1,2,3,4,5];
- jsObj.name = 'CSS3';
- jsObj.date = '8 May, 2011';
- var str = JSON.stringify(jsObj);
- var str1 = JSON.parse(str);
- alert(str1);
在使用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>
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 "%r" %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: 下发布成功,没有报错信息;
摘要:
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 名成员因为自身原因突然离职,导致项目的团队建设出现
一些小问题,还有,曾经由于需要购买的服务器由于连日暴雨的不可抗力导致环境搭建进度出
现些许异常(自己去想一些小问题,切忌,别出现什么大问题),不过,经过我后期的纠偏,
并没有对项目产生什么影响。在后续的学习和工作中,我将不断的充电学习,和同行进行交流,
提升自己的业务和管理水平,力争为我国信息化建设做出自己的努力。
方法一:
事务配置: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 试试。
方法二:
引起问题的原因:
由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"/>