2014年8月18日
#
参考: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
网页模板素材
![](file:///C:/Users/rain/AppData/Roaming/Tencent/QQTempSys/%25W@GJ$ACOF(TYDYECOKVDYB.png)
http://www.htmlsucai.com/forum-78-1.html
![](file:///C:/Users/rain/AppData/Roaming/Tencent/QQTempSys/%25W@GJ$ACOF(TYDYECOKVDYB.png)
http://www.cssmoban.com/cssthemes/houtaimoban/
![](file:///C:/Users/rain/AppData/Roaming/Tencent/QQTempSys/%25W@GJ$ACOF(TYDYECOKVDYB.png)
http://www.16sucai.com/
![](file:///C:/Users/rain/AppData/Roaming/Tencent/QQTempSys/8LDO48C$8@[GWU0353$FOVS.png)
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时,如遇到以下错误
![](/images/blogjava_net/fiele/QQ图片20180822100945.jpg)
解决方法如下:
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权限
![](http://img2.tuicool.com/7JJJry.gif)
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<uses-permission android:name="android.permission.INTERNET"/>
<application
.............................
View Code
2. 在assets目录里面放入js,css,html资源文件
![](http://img2.tuicool.com/YBRfQni.jpg)
3.在写本地html的时候引入assert里的对应路径
![](http://img2.tuicool.com/7JJJry.gif)
<!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.在代码里访问页面
![](http://img2.tuicool.com/7JJJry.gif)
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.最后效果如下:
![](http://img2.tuicool.com/IRv6bi.jpg)
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:
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**//* 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配置
![](/images/blogjava_net/fiele/图片二.png)
B,JDK配置
![](http://www.blogjava.net/images/blogjava_net/fiele/图片三.png)
C,MAVEN安装:
![](/images/blogjava_net/fiele/图片四.png)
D,导入maven项目:
![](http://www.blogjava.net/images/blogjava_net/fiele/图片五.png)
E,导入后如果项目报错,请执行:
在项目上右击,选择菜单maven->update project (MAVEN会自动搜索项目中需要的jar包)
F、运行服务:![](/images/blogjava_net/fiele/图片产.png)
选择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:
![程序代码](images/code.gif)
程序代码
<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 文件
![程序代码](images/code.gif)
程序代码
<mvc:resources mapping="/static/**" location="/WEB-INF/static/"/>
这样配置之后,可以通过
http://your-ip:port/your-app/static/css/1.css 直接访问了。
2. 采用 default servlet 在 web.xml 里面配置
![程序代码](images/code.gif)
程序代码
<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 里面配置
![程序代码](images/code.gif)
程序代码
<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 上加上前缀
![程序代码](images/code.gif)
程序代码
<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 上加上后缀
![程序代码](images/code.gif)
程序代码
<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>