Idea maven技巧总结

首先idea中maven生命周期的的操作在Lifecycle中进行,在plugins中有同样类似的操作,很容易让人误解,至今我也分不清两边的区别。相关知识还有待后人进行补充。

将自己的项目安装到本地仓库使用的是install命令,发布到远程用的是deploy这里和eclipse以及maven命令以一样的使用,只是idea中方便了操作。

另外发布到远程仓库用需要在pom中进行指定

<distributionManagement>
<snapshotRepository>
<id>jason-snapshots</id>
<name>jason-snapshots</name>
<url>http://www.qqxh.net/nexus/content/repositories/jason-snapshots/</url >
</snapshotRepository>
</distributionManagement>

jquery 树形下拉框插件

jquery 树形下拉框插件
MultipleTreeSelect.js是基于jquery和ztree开发的树形下拉选择框插件,支持ie8+,谷歌,火狐,360等浏览器

MultipleTreeSelect.js有如下主要特点
体积小巧,大小只有4k
兼容到ie8以及各大主流浏览器
低侵入式使用
使用简单方便
继承了ztree高效渲染
MultipleTreeSelect 欢迎使用本插件: MultipleTreeSelect

示例图片:
demo

快速上手示例:
1. 引入jquery,ztree,MultipleTreeSelect等js和css文件

<meta charset=”UTF-8″>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<html>
<head>
<title>$Title$</title>
<link type=”text/css” rel=”stylesheet” href=”css/demo.css”>
<link type=”text/css” rel=”stylesheet” href=”css/metroStyle/metroStyle.css”>
<script src=”js/jquery-1.11.2.min.js”></script>
<script type=”text/javascript” src=”js/jquery.ztree.all.js”></script>
<script type=”text/javascript” src=”MultipleTreeSelect.js”></script>

<script>

 

</script>
<script type=”text/javascript”>

/*节点列表(这里演示的是非异步方式的实现)*/
var zNodes = [
{id: 1, pId: 0, name: “火之国”, open: true},
{id: 11, pId: 1, name: “木叶忍者”, open: true },
{id: 111, pId: 11, name: “鸣人” },
{id: 112, pId: 11, name: “佐助”},
{id: 12, pId: 1, name: “木叶暗部” },
{id: 121, pId: 12, name: “鼬”},
{id: 122, pId: 12, name: “卡卡西”},
{id: 2, pId: 0, name: “沙之国”, open: true},
{id: 21, pId: 2, name: “千代婆婆”},
{id: 26, pId: 2, name: “我爱罗”} ,
{id: 22, pId: 2, name: “沙之国忍者”, open: true},
{id: 221, pId: 22, name: “手鞠”},
{id: 222, pId: 22, name: “勘九郎”},
{id: 3, pId: 0, name: “水之国”},
{id: 4, pId: 0, name: “土之国”}
];
/*配置项*/
var defaults = {
textLabel: “jasontext”,
zNodes: zNodes
}
/*注册下拉树方法也很简单*/
$(document).ready(function () {
$(“textarea”).drawMultipleTree(defaults);
});
//–>
</script>
</head>

<body style= “width: 1080px ;margin: 0 auto” >
<br>
<!–在此元素上进行渲染下拉树–>
<textarea style=”width: 300px” checks=”1,11,2,23″ type=”text” readonly></textarea>

</body>
</html>
2.异步加载配置实例

var defaultsw = {
textLabel: “qtrxbText”,
async: {
enable: true,
url: “http://qqxh.net”
}
}
3.配置文件详解

var settingAsync = {
textLabel: “选中的文本在表单项中的name”,
async: {
enable: true,
url: “异步加载url地址”
},
chkStyle: “radio”,/*radio:单选模式,checkbox:多选模式,默认为多选*/
radioType : “all”,/*all:整个树只能有一个选中,level:在每一级节点范围内当做一个分组*/
height:433,/*容器高度*/
callback:{
onCheck: function() {}/*选中事件的回调*/
}
}
4.api列表

获取选中文本
$(“#yourContentId”).drawMultipleTree(“getChecks”,”val”);
获取选中code
$(“#yourContentId”).drawMultipleTree(getChecks,”text”);
设置默认选中值

通过给元素设置checks属性来进行设置,格式为:checks=”1,2,3,4,5″
MultipleTreeSelect 开发者网站:http://www.qqxh.net

小型应用使用vue假如不用单文件组件的实现方式

通过将js和css进行分离引入的模式来进行开发。主页面中通过常规js和css引入。这种只适应简单架构的情景,如果应用比较大型。不推荐使用这种方式进行组织代码。只是针对对webpack等前端构建不熟悉的人才使用这种模式进行开发

Failed to resolve directive: link

Failed to resolve directive: link的原因是vue route 2.0取消了v-link写法。最新的写法是

<router-link to="/goods">商品</router-link>

idea远程debugger Tomcat

首先在远程tommcat的(tomcat版本为7.0以后版本)
catalina.bat开头加上:
set CATALINA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=127.0.0.1:8888,server=y,suspend=n
启动startup.bat时,出现:
Listening for transport dt_socket at address: 8888
监听正常
在idea中找到remote debugger配置debugger监听端口为8888运行debugger,然后在访问服务器上面的地址就可以在本机的tomcat进行debugger了。注意访问地址不是8888而是tomcat本身的发布应用端口,也就是默认的8080等等

ie浏览器提交两次的导致的问题

问题:网站在谷歌火狐等浏览器可正常登陆,但是在ie浏览器登陆总是会失败

问题跟踪:通过后台捕捉浏览器请求,发现ie和其他浏览器相比登陆请求发送了两次。于是猜测是ie表单提交两次导致的问题。

问题原因:ie部分浏览器通过js提交form的时候写法必须严格。

问题解决:1.在form元素中给提交按钮input元素加上type=”submit”。2.js提交方法结尾出加上return false;

git常用命令总结

使安装完成之后。
命令1:标示本机全局用户名和邮箱。在某个目录下创建git仓库
$ git config –global user.name “Your Name” $ git config –global user.email “email@example.com”
git init
命令2:把本地改动添加到git暂存库
git add “filename”
命令3:把暂存区的改动提交到当前分支
git commit -m “提交内容的描述”
扩展如何不写描述
命令4:查看当前仓库状态
git status
命令5:查看当前文件改动比较对象是最后一次add或者commit
git diff
命令6:查看提交历史后面参数是简化版
$ git log –pretty=oneline
按q退出
命令7:版本回退,参数^个数代表回退到之前多少版本,COMMITID为提交版本id
$ git reset –hard HEAD^
$ git reset –hard COMMITID
命令8:命令操作历史
git reflog
命令9:撤销本地修改。会撤销到想一次add或者上一次commit。注意–前后都有空格
git checkout — readme.txt
命令10:撤销缓存区内容。将该文件缓存区内容清空
git reset HEAD file
命令11:删除文件
$ git rm test.txt $ git commit -m “删除文件”
扩展如果远程仓库被删除了如何恢复,需要注意什么
命令12:创建ssh key
$ ssh-keygen -t rsa -C “youremail@example.com”
命令13:关联远程仓库origin是远程仓库名字。可以自定义多个远程库
git remote add origin git@server-name:path/repo-name.git
命令14:将主分支推送到远程仓库 -u意思是推送的同时将主分支和远程仓库的主分支进行关联。其中origin是远程仓库的名字
$ git push -u origin master
$ git push origin master master为指定的本地分支
命令15:从远程库下载
$ git clone git@github.com:michaelliao/gitskills.git
命令16:创建分支-b表示创建并且切换
$ git checkout -b dev=$ git branch dev $ git checkout dev
命令17:查看所有分支
$ git branch
命令18:合并某分支到当前分支
$ git merge otherbranch
命令19:删除分支
$ git branch -d branchname
命令20:查看分支图
$ git log –graph –pretty=oneline –abbrev-commit
冲突解决流程。git merge之后手动处理文件然后再次add commit即可
命令21:禁用快速合并模式–no-ff
$ git merge –no-ff -m “merge with no-ff” dev
命令22 :暂存工作空间的改动和恢复
$ git stash暂存
$ git stash pop 恢复并删除当前缓存
$ git stash apply 恢复某个默认第一个
$ git stash dorp删除
$ git stash list 缓存列表
命令23:强制删除某个废弃分支
$ git bransh -D branchname
命令24:查看远程库信息
$ git remote简略信息
$ git remote -v详细信息
命令25:给commit打标记
$ git tag tagname给当前最新的commit打标记
$ git tag查看所有标记
$ git tag tagname commitid给某个commit打标记
$ git log –pretty=oneline –abbrev-commit查看历史commit版本
$ git show tagname 查看当前标记详情
git tag -a <tagname> -m “blablabla…”对标记进行描述方式创建
命令26:标签删除和标签推送
$ git tag -s tagname
$ git push origin tagname推送某个
$ git push origin –tags推送所有
远程删除
先删除本地git tag -d tagname
git push origin :refs/tags/tagname
命令27:使git窗口显示颜色
$ git config –global color.ui true
命令28:配置命令别名st为别名也就是说alias是别名前缀
$ git config –global alias.st status
拓展知识设置忽略
通过编写.gitignore文件进行配置
好看的log输出log –color –graph –pretty=format:’%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset’ –abbrev-commit
# 删除 untracked files
git clean -f

# 连 untracked 的目录也一起删掉
git clean -fd

# 连 gitignore 的untrack 文件/目录也一起删掉 (慎用,一般这个是用来删掉编译出来的 .o之类的文件用的)
git clean -xfd

# 在用上述 git clean 前,墙裂建议加上 -n 参数来先看看会删掉哪些文件,防止重要文件被误删
git clean -nxfd
git clean -nf

用远程覆盖本地
git fetch --all
git reset --hard origin/master

关于jsessionid来源的研究

java开发中偶然是会遇到,系统登陆的各种问题。比如有的浏览器能登陆有的不能登陆,这时候就需要人工去在具体的环境中找寻原因。首先要找的就是跟踪登陆时候session的状态。那么浏览器中sessionid到底是在哪里看又在哪里生成呢。大多数人只知道session的作用但是没研究过的工作原理。首先session有两种模式进行工作,1.浏览器自动cookie模式。这种模式一般情况session名字是叫做jsessionid,这应该是一个规范。具体不同的服务器可能名字不一样。反正tomccat就是jsessionid;2.url重构的方式来实现这种情况需要每个url后面都需要追加当前sessionid,这是针对有浏览器被禁用cookie的时候使用的方式。所以一旦出现登陆不能成功的时候就要记得注意检查是不是浏览器禁用了cookie,如果cookie没有被禁用的时候,再看下跟踪下后台,看下后台有没有接收到该sessionid。在没有手动管理session的系统中跟踪session时不要想着找sessionid在哪里创建的,是没有意义的。这些都是servlet完成,而且tomcat容易会自动进行cookie标示存到浏览器,浏览器下次请求也能自动传递该域下的cookie并且tomcat会自动关联响应的session。你只需要查看当前session和浏览器对应的是不是同一个id,有没有过期即可。

iframe无法自适应高度问题

在给iframe的onload方法对iframe进行自适应高度时,遇到不能正常适应的情况,页面总是保持最大的高度。其后的页面不管多小,都保持最大的高度,页面底部会有大片空白。用户体验很不好。找了网上很多代码都未曾有效适应。后来经过测试发现iframe每次加载新的url如果高度足够内容展示,容器的高度就不会改变。解决方法是在iframe加载新页面之前手动将iframe的高度设置为一个最小值,但是不要设置为0,因为为0用户体验不好,页面会特别闪眼。预先设置好高度后再次加载时候就会重新按照新的高度进行撑开了。具体怎么自适应就自行百度吧

ORA-00911: 无效字符问题和解决

当捕捉到这个异常ORA-00911,后首先相当的是把sql放到sqlplus等软件中测试一下,结果发现在那边是可以执行的,而且没有报错。

然后再回去看sql因为sql太长不太好找具体哪里有无效字符,而且报错定位不明显。这个时候一般情况是sql中有分号导致的。如果你的sql结尾处没有分号,那么hibernate执行的异常中一般是会告诉哪个字符是非法字符的。只有这一种情况最恶心,异常太不明显了。不知道的人要想一个个排查查半天都查不出所以然。