快捷键
1.内容提示快捷键
alt+/
密钥配置
rsa 私钥和 rsa.pub 公钥:
一、git的学习
1.专业术语
branch(分支)
remote tracking branch(远程跟踪分支)
tag(里程碑)
HEAD(当前所在分支的引用)
2.特点
1.git每次提交记录的是快照(snapshot),即文件的全部内容。每次提交都会有一个唯一的版本号(commit id);
2.所有操作都是在本地执行的,因为本地存储着当前项目的所有更新。
3.git可以知道文件或者目录被修改,保证文件的完整性。
4.高可靠性,一旦提交快照之后就不用担心数据丢失。
3.理解git的 模型 directory structure
4.对象object
一个对象对应着一个40位的十六进制哈希值。将这个哈希值看作指针;对象和对象之间可以通过指针进行一些关联的操作。
git的四种基本对象类型
1.提交(commit)
每次提交的时候都会产生一个新的commit对象。包含了指向tree对象的指针,指向前一次commit对象的指针,还包含了commit的时间,注释,作者等信息;
2.文件内容(blob)
存储文件内容
3.目录树(tree)
存储目录里的文件名
4.里程碑(tag)
指向一个commit而不是一个tree。提供开发者记忆的名字。
5.引用ref
指向某个commit的指针
6.索引index 暂存区 staging area
索引是一个二进制文件。
每次commit的时候提交的是暂存区的内容。
7.git数据迁移示意图
对于任何一个文件,git只有三个状态:已修改,已提交,已暂存
8.git工作区与版本库
版本库:工作区根目录下的一个.git目录
工作区:除了.git目录外的其他目录
git命令
1.创建带工作区的版本库
git init demo
2.创建裸版本库 (裸版本库的命名通常在后面带个.git,例如demo.git)
git init --bare demo.git
9.辅助目录
10.detached HEAD(分离头指针状态)
11.里程碑(tag)
12.non-fast-forward
13.空目录
git中不存在空目录。如果一个目录中的文件全部被删除,那么这个目录会被自动删除。
14.远程仓库
15.git的常用命令
git add files 把当前文件放入暂存区域
git commit 给暂存区域生成快照并提交
git reset --files 用来撤销最后一次git add files 可以使用git reset 撤销所有暂存区域文件
git checkout --files 把文件从暂存区域复制到工作目录,用来丢弃本地修改
git commit -a 相当于运行 git add + git commit
16.个人理解Revert Commit 和 Reset>Soft的区别
使用Revert Commit的时候是已经将错误push带远程服务器的时候,使用Revert commit,然后将产生的新纪录提交到远程服务器即可。
使用Reset>Soft的时候是错误没有提交到远程服务器,使用Reset>Soft可以回到最后一次提交之前;可以根据情况来判断是否回滚暂存区的代码;
17.在切换到远程分支的时候会出现提示目前的状态处于detached HEAD状态(分离头头指针),这个时候是不能在切过去的远程分支上工作的,需要在本地创建一个分支,然后把这个远程分支合并到本地分支上。
18.获取远程仓库的更新(fetch)
在进行fetch操作时并不是将远程仓库的东西复制到本目录下,而是复制到别的目录空间下。举例:如果远程库名为origin,那么会将远程库的文件复制到目录(.\git\ref\remotes\origin).避免了在本地文件的覆盖。
fetch 默认获取远程库的所有分支。
19.删除分支
本地分支的删除
远程分支的删除
1.在git repositories 视图中删除分支只是删除从远程仓库下载到本地分支的一个引用。
并不会真正的删除远程分支,可以通过fetch操作重新获取。
2.删除远程分支对应的命令:推送空分支就相当于删除了远程分支;
git push origin --delete test
20.merge操作("差异比较")
分支合并
COmmit和Squash的区别:
21.rebase操作 ("过程重演")
不要衍合已经已经推送到公共仓库的更新。
merge和rebase操作的结果都是将不同分支的代码合并到一起;使用原理和过程不同
具体可看:https://blog.csdn.net/triples_x/article/details/79066757 笔记本:8.20
区别:merge出现conflict的时候只需要修改一次,但是rebase出现conflict的时候需要修改多次
具体可见公司内网:http://172.21.200.13:8090/devwiki/pages/viewpage.action?pageId=8880400#id-3Git%E5%B8%B8%E7%94%A8%E6%93%8D%E4%BD%9C%E8%AF%B4%E6%98%8E-merge%E5%92%8Crebase%E5%8C%BA%E5%88%AB
22.cherry-pick(拣选提交指令)
理解为将某一次提交(commit id)应用(应用可以理解为提交即commit)到当前分支上
相当于一次重新提交(commit id 会改变)
23.git常用命令
1. git checkout 切换分支;创建分支并切换
举例:git checkout master 切换到master分支上
git checkout -b mybranch master 基于master分支创建mybranch分支,并且切换到mybranch分支上
2.
24.fetch操作是将远程库的代码同步到Remote Teaching上
25.切换分支之前,需要将已经修改的代码提交(commit)添加到index也不行,因为会将修改的代码带到新切换的分支上。
26.revert commit 可以退回错误提交(但是会生成一个新的commit id,这个内容和错误的commit之前的commit内容一样)
27.reset 个人理解为回滚到某一个提交(commit id)的状态。
二、CheckStyle插件
1.Java编程规范
注释规范
单行注释应该与其后面的代码有同样的缩进层级;
代码规范
在一条代码换行的时候应该缩进一个tab键
操作符两端应该各空一个字符以增加可读性
声明规范
在类中的方法的声明顺序
构造方法
静态公共方法
静态私有方法
公共方法
受保护方法
私有方法
继承自Object的方法(toString()、equals()、hashCode()、colone()等方法)
字段声明
尽量将所有的字段都声明为私有,通过get和set方法来进行获取和设置。
注意:
// 数组的声明,应该使用下面的方式。
Integer[] aj = new Integer(3);
// 返回整型数组,应该使用下面的形式
public int[] getIndex(){
return null;
}
一行代码应该只声明一个变量;
语句规范
所有的 if 语句都应该使用{}括起来,即便只有一行
判断语句不要使用"==true"来判断为真
异常处理
在捕获异常后如果不进行处理,就应该记录日志;
抛出异常的代码
throw new MyException("在此处进行异常描述!异常发生时Data:"+data.toString());
其他规范
1.申请的资源,必须要释放(例如数据库操作、IO操作)
2.避免使用不易理解的数字,可以使用静态变量或者枚举来代替
例子:
private static final int STATE_OK = 0;
private static final int STATE_ERROR = 1;
// 使用静态变量来判断状态
if (state = STATE_OK){
// program code
}else if(state = STATE_ERROR){
// program code
}
3.在处理可变String的时候,尽量使用StringBuffer类
4.aux,com1,com2,prn,con.nul等为Windows的系统保留关键字。因此创建包名的时候要注意不要使用这些关键字。因为Windows不能建立对应的文件夹。
2.JS编程规范
1.文件与目录必须小写,英文,使用-或者_进行连接;只能出现数字,英文,连字符,不能出现中文。
2.私有变量,属性,方法以下划线开头。
3.js中, 单行字符串使用单引号
HTML中的Element属性,使用双引号;
例如:var x = '<a href="https://www.baidu.com"/>'
3.代码注释规范
4.代码提交注意
1.确保提交的内容仅为当前修改的部分。
2.一次提交最好体现一个问题的修改。
3.注意编码格式。
4.不能提交测试代码,例如JS中的debug或者Java中的System.out.print...
5.文件名不能包括中文.
5.开发技巧
1.Eclipse快捷键
Alt+ / 代码提示
Alt+ 上下键 当前行上下移动
三、Maven使用说明
1.依赖管理
1.maven坐标
2.本地仓库
3.依赖管理
如果其他jar包也间接依赖了activation.jar,但是使用的是高版本的,于是就会出现冲突,那么需要使用<exclusion>标签将低版本的activation.jar排除掉,写法如下。只需指明groupId和artifactId即可,不写version。
四、Junit单元测试方法
五、util工程下的常用工具类
重点注意的类:StrFunc、StmFunc、XmlFunc、FileFunc、StringMap
1.StrFunc 一个对字符串操作的类,全为静态
1. isNull(s) 判断指定字符串是否为空
2. compareStr(s1,s2) 比较两个字符串是否一致 equals
3. str2Text(s) 将指定字符串的不可见字符转换为可见字符(例如:空格等转换为\\u20 tab键转换为\\t )
4. text2Str(s)
5. data2Str 将日期对象格式化为字符串
6. double2Str
7. ensureEndWith 确保以XX结尾
8. parseBoolean 将字符串解析为boolean值 parse 音标: /pɑrs/ n,v:解析
parseInt
9. null2blank 空对象转换为长度为0的字符串
用处:在进行地址传参的时候如果一个对象为空,那么在拼写的时候
就会转为null的字符串,就可能出错,因此需要使用null2blan
方法进行转换。
null2default
10. format2HtmlStr 代码安全
11. isNumber
2.FileFunc 文件或者目录操作类
1. includepathSeparator 确保路径末尾带文件分隔符
举例:文件路径拼写的时候需要在末尾加 \
2. createTempDir 创建一个当前不存在的临时文件夹
暂时存放文件
3. listFiles
4. ensureExists 确保文件或者文件夹存在
流输出的时候
5. extractFileName 返回指定文件路径的文件名 extract 音标/ˈɛksˌtrækt/ v.提取 n.摘录
6. dirExists
7. copyDir 拷贝目录
8. file2buf 将文件内容转换成byte数组返回
file2str 需要指定该编码
9. formatFileName 将给定的文件名格式化成一个合法的文件名
3.StrFunc 对流进行读写的操作
1. writeLine 向流里输出指定字符串
注意:是以回车换行结尾的
2. stmTryCopyFrom 输入流拷贝至输出流
3. stm2Str 将流的信息以字符串的形式返回
4. reader2str
5. stm2bytes
六、JDBC学习
1.jdbc (java data base connevtivity)
2.esensoft jdbc结构
3.屏蔽数据差异性
建立与数据库的连接
创建语句对象
执行查询并返回结果集对象
处理结果集对象
关闭结果集和语句对象
关闭与数据库的连接
4.新加一个数据库支持
资源的关闭问题
1.谁申请的谁关闭。即当方法申请资源后,需要由这个方法来释放这个资源。外部传递进来的资源,需要有方法外部来进行关闭.
2.在申请资源后,请先写释放资源的代码,避免忘记.
3.释放资源代码的位置(个人理解为在申请资源的下一try-catch-finally的finally语句块中)
例子:
Connection conn = getConn();
try{
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace(); // 输出错误
} finally {
conn.close();
}
1.资源泄露 unreleased resource (数据库和文件流的资源)
2.获取连接的异常应该向外抛出(throws),如果不能抛出,例如线程的run方法,应该使用try-catch
3.不要先赋空值,,关闭的时候再来判断是否为空;不美观,也容易被扫空指针异常
4.sql异常,无特殊情况直接抛出
第二周
1.ORM(对象关系映射)
0.考核重点(创建表,修改表,对象添加、修改、删除、查询、单例模式,工厂模式)
单例模式:
工厂模式:
1.SessionFactory维护着所有连接对象,已经连接对象的分配和销毁。
2.Session表示应用程序和数据库的一次交互。
3.quertExe.query(new Expression("name=?"),id=false,new String[]{"id","name"},name);
第一个参数:new Expression("name=?") 表示where后面的条件
第二个参数:id=false 表示根据id来进行
第三个参数:需要查询的字段
第四个参数:第一个参数的?号的值
4.Class.getResource
getResource("") 获取的是当前类所在包的路径 D:\esendev\gitrepos4.8\abistudy\target\classes\com\esen\study
getResource("/") 获取的是 classpath 根路径 D:\esendev\gitrepos4.8\abistudy\target\classes
5.Action的注意事项
1.action实现的两种方式(execute方法负责跳转,jsexecute方法负责处理前台的js请求)
1.继承Action类,重写execute方法
2.继承Action_Js类,重写execute方法和jsexecute方法
2.action中主要负责处理以下事务
1.接受前台传递过来的参数
2.校验权限
3.安全编码检查
4.将参数传递给底层处理,获得返回值
5.记录日志
6.发集群消息
7.处理异常
8.跳转前台页面
9.将返回值发送给前台
3.注意事项
1.一个模块下的所有操作写一个action文件
2.Spring扫描action的路径可在servletContext.xml中配置
3.@RequestMapping注解是这个类的访问路径(xxxx.do),大部分和类的名字后半本分保持一致,这样方便根据路径找文件(视图解析器ViewResolver)
2.SpringMVC
0.Java中的Action、Service、model和dao层的功能区分
action:控制器
service:业务逻辑处理
model:对应数据库表的实体类
dao:数据持久化(连接数据库、操作数据库)
1.SpringMVC的过程
2.example
// value="请求的实际地址" params={"cmd=login"} 指定request请求中必须包含某些参数值,才让该方法处理
@RequestMapping(value="/login",params={"cmd=login"})
// value="cmd" 请求参数的参数名,作为参数映射名称 required=true 必填
public void login(HttpServletRequest request,
@RequestParam(value="cmd",required=true) String cmd, HttpServletResponse response)
3.集成SpringMVC
1.配置web.xml
2.配置servletContext.xml
3.编写一个Action
3.freemarker
(模板文件) (Java对象) freemarker
template file + Java objects ----------------> Output
0.$ # @(宏)
1.语法
1.文本:直接输出的部分
2.注释:<#-- 注释 --> 不是<!-- X -->
3.插值:${...} 或者#{...}
4.FTL指令:
2.FTL指令的规则
3.插值规则
1.通用插值${expr}
1. 插值结果为字符串值:直接输出表达式结果
2. 插值结果为数字值
3. 插值结果为日期值
4. 插值结果为布尔值
2.数字格式化插值#{expr} 或 #{expr;format}
mX:小数部分最小X位
MX:小数部分最大X位
3.表达式
${}
1.直接指定值
1.字符串
1.有特殊字符需要转义
2.在指定字符串内容的引号前增加r标记,在r标记后的文件将会直接输出.
例子:${r"C:\foo\bar"} 会直接输出: C:\foo\bar
${r"${foo}"} 输出 ${foo}
2.数值
3.布尔值
4.集合
4.常用指令
1.if指令
<#if (a>60)>
老年人
<#elseif (age>40)>
中年人
<#elseif (age>20)>
青年人
<#else>
少年人
</#if>
2.switch、case、default、break指令
<#switch value>
<#case refValue>
。。。
<#break>
<#case refValue>
。。。
<#break>
<#default>
。。。
<#switch>
3.list、break指令、map遍历
1.list
item_index:当前变量的索引值
item_has_next:是否存在下一个变量
<#list ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"] as x>
${x_index + 1}.${x}
<#if x_has_next>
,
</#if>
<#if x="星期四">
<#break>
</#if>
</#list>
<#include>