-
2018-06-09 13:59:45
写在前面
在工作中,我使用的后台框架是完全遵循Restful API设计的。
遂系统的梳理一遍RESTful API的概念,并且加以工作中的实例,巩固自己的知识,也便于读者更好的理解RESTful API。
什么是RESTful API?
我们可以分为两块来理解,RESTful API = RESTful + API, 也就是基于RESTful的API,那么问题就变成了,什么是RESTful?
先一言以概之:RESTful是网络接口设计应当遵循的一套规范,这套规范包括了一组架构约束条件和原则。
REST全称是Representational State Transfer,中文意思是表述性状态转移。通常市面上所说的RESTful API,都是指其风格在HTTP上的应用,但这只是因为目前HTTP是唯一与REST相关的实例。
RESTful最重要的特征,就是面向资源,通俗一点说,url中只能有名词,动词对应的行为由http方法决定。当然,RESTful还有其他的东西,这个我们之后再看。
举个例子?
最近新开发的网页应用,需求是A公司邀请B公司建立合作关系。具体到实现,就是A公司要能够发送邀请,B公司要能够接受邀请。因为这篇文章只讨论API,所以前端实现全部略过。
假设我已经搭建好了服务器:https://server-address 那么下一步,就是后台实现方法并且暴露给前端调用。
那我们先实现一个A公司发送邀请的功能吧,未经思考,我们给出答案:https://server-address/createInvitation( id = '001')
这个uri的意思是,调用createInvitation对应的后台资源,创建一条id='001'的invitation。
燃鹅,如果我们这样设计,那么我们一下就违背了两条RESTful的规范:
先说违背了哪两条:
1. 前面说过,要面向资源,也就是用名词取名。
2. 要用标准的HTTP方法与后台实现对应,createInvitation(id = '001')实际上用的是get方法来传参数,而get方法应该是幂等的,只用来读取资源,标准的方法应该是调用post方法,把id='001'放进HTTP request 的header中去。
我们给资源的取名是:createInvitation,实际上的主体是动词,可能有同学要说了,我这个是动名词短语做名词呀。那你太秀了,请陈独秀同学坐下来发言。
不如我们先想想,遵循RESTful的话,应该如何设计创建邀请? 答案是: https://server-address/invitations, 注意我用的是复数形式,不要单复数混用,容易引起麻烦
答案我知道了,那这样有什么好处呢? 对于invitation这个资源来说,现在只有创建的需求,但是当A公司需要取消,修改时,如果我们用的是createInvitation作为创建的uri,难以避免要新建deleteInvitation,updateInvitation这两个新的uri,而如果采用invitation作为uri,在新建的时候前端用post方法调用https://server-address/invitations, 在取消(删除)invitation时,用delete方法调用,在修改invitation时,用put方法调用。也就是说,所有对invitation的操作,调用的都是https://server-address/invitations这个url,是不是很符合逻辑,也很简洁明了呢?
我认为RESTful最关键的思维就是上述这个例子了,这是每一个API应该遵守的最佳实践。
更多:
RESTful还有其他的比如关于API的版本等等更详细的规范,这些都是按需使用的,具体可以参考:
RESTful架构详解:http://www.runoob.com/w3cnote/restful-architecture.html
RESTful API的十个最佳实践:https://www.cnblogs.com/xiaoyaojian/p/4612503.html
如果对HTTP方法不熟,可以参考:
http几种请求方法的差别:https://blog.csdn.net/resilient/article/details/52585724
更多相关内容 -
浏览器工作原理和实践
2019-08-31 18:18:51参透了浏览器的工作原理,可解决80%的前端难题. 帮助高效快速安全开发web前端项目.1.介绍
见正文3 2.应用背景
参透了浏览器的工作原理,可解决80%的前端难题.
帮助高效快速安全开发web前端项目.
3.学习
4.问题/补充
Note:
含记名不记名网友问题
4.1 回顾浏览器的进化路线,你认为推动浏览器发展的主要动力是什么?
[一个角度来说,最大动力就是chrome的出现。曾经的IE像极了诺基亚,chrome就像是横空出世的iPhone ,当着IE的面告诉IE,浏览器应该这么玩儿。
另一个角度也是互联网的发展需要,人们所需要的不再是只是简单展示个页面的浏览器,需要有复杂的交互,浏览器应该能做更多的事情,这对浏览器的稳定性、以及性能都有了新的要求。所以出来一个性能符合要求的浏览器也是必须的。
还有就是11年后相对规范的es5的出现,再之后es6.7,web能做的事情越来越多了,web工程化,再后来node的出现,前端体系越来越庞大]07 | 变量提升:JavaScript代码是按顺序执行的吗?
1.老师好,请教您一个问题。
debugger;
(function(){
console.log(g)
if(true){
console.log('hello world');
function g(){ return true; }
}
})();这个函数步进调试时,发现打印g时值是undefined而不是提示not defined,说明if中g函数确实是提升了,但是为何不是g()而是undefined?然后走完function g(){ return true; }这一步后 console.log(g)中的g才变为g()。这里条件声明函数的变量提升有点搞不明白。
作者回复:ES规定函数只不能在块级作用域中声明,
function foo(){
if(true){
console.log('hello world');
function g(){ return true; }
}
}也就是说,上面这行代码执行会报错,但是个大浏览器都没有遵守这个标准。
接下来到了ES6了,ES6明确支持块级作用域,ES6规定块级作用域内部声明的函数,和通过let声明变量的行为类似。
规定的是理想的,但是还要照顾实现,要是完全按照let的方式来修订,会影响到以前老的代码,所以为了向下兼容,个大浏览器基本是按照下面的方式来实现的:
function foo(){
if(true){
console.log('hello world');
var g = function(){return true;}
}
}这就解释了你的疑问,不过还是不建议在块级作用域中定义函数,很多时候,简单的才是最好的。
2. ES6 在附录B里面规定:1.允许在块级作用域内声明函数。
2.函数声明类似于var,即会提升到全局作用域或函数作用域的头部。
3.同时,函数声明还会提升到所在的块级作用域的头部。这里的表现应该是这样:
function foo(){
var g1;
if(true){
function g2(){return true;}
console.log('hello world');
g1 = g2;
}
}g1和g2表示引用不一样,这里是同名关系,但是所在的变量作用域是不一样的。
下面这个文章详细解释了。
https://juejin.im/post/5eaa8211e51d454de64e388e
3. 老师,可以请教下吗,在编译完成之后是单单生成了字节码,再到执行过程中变成对应平台的机器码? 还是编译过程已经生成了对应平台的机器码, 执行阶段就直接去执行相应的机器码?
作者回复: 先是生成字节码,然后解释器可以直接执行字节码,输出结果。 但是通常Javascript还有个编译器,会把那些频繁执行的字节码编译为二进制,这样那些经常被运行的函数就可以快速执行了,通常又把这种解释器和编译器混合使用的技术称为JIT...
5.推荐书籍
TBD 6..参考
极客时间专栏:浏览器工作原理和实践 --李兵 以及不记名网友的评论见解 后续补充
...
-
【工作中存在的问题和不足及改进措施】_工作中的不足与改进_工作中不足及改进措施
2020-12-22 07:04:52篇一:《工作中存在的不足及改进措施》通过近一段时间的工作,反省自身,还存在许多不足和缺点,现将近期的...在日常工作中偏重于日常生产工作,也忽视了自身思想素质的提高,工作中争强当先的意识不强.2、工作上满足于正...篇一:《工作中存在的不足及改进措施》
通过近一段时间的工作,反省自身,还存在许多不足和缺点,现将近期的工作、学习中存在的不足和缺点简要总结如下:
1、自身的专业业务水平不高,事故应急处理能力不强.虽然通过学习和工作经验的积累,在业务水平上有了一定的提高,但业务水平和工作经验与其它老同志比还是比较低.在日常工作中偏重于日常生产工作,也忽视了自身思想素质的提高,工作中争强当先的意识不强.
2、工作上满足于正常化,缺乏开拓和主动精神,有时心浮气躁,急于求成平稳有余,创新不足;处理问题有时考虑得还不够周到,心中想得多,行动中实践得少.工作中总习惯从坏处着想,缺乏敢于打破常规、风风火火、大胆开拓的勇气和魄力.另外,政策理论水平不够高.虽然平时也比较注重学习,但学习的内容不够全面、系统.对公司政策理论钻研的不深、不透.有时候也放松了对自己的要求和标准.
3、全局意识不够强.有时做事情、干工作只从自身出发,对公司及车间作出的一些的重大决策理解不透,尽管也按领导要求完成了要做的工作,心理上还是有一些其他的想法.在工作中还存在看到、听到、想到但还没做到的情况,还需要进一步增强事业心和责任感.
在今后的工作中,我决心从以下几方面进行改进:
1、继续拓宽自己的理论知识面,加强自己对理论知识的应用,在日常工作中,遇问题多查阅文献,熟悉相关知识,从而提高自己解决实际问题的能力.
2、在思想工作方面,深化学习,努力提高自己的思想理论水平,加强自己的事业心和责任感,用新理念武装自己的头脑,增长自己的才干,提高驾驭工作的能力,并坚持理论联系实际,注重学以致用.
3、在实际工作中,要更加积极主动的向领导请教遇到的问题,并多与同事们进行沟通,学习他们处理实际问题的方法及工作经验.通过多学、多问、多想来不断提高自己的实际工作能力.
篇二:《个人及工作中存在的不足及改进措施》
一、个人及工作中存在的不足:
1、个人存在懒惰思想,心浮气躁,不善开动脑筋,贯彻上级精神照抄照搬,不会举一反三;
2、工作思路不对,缺乏创新意识;
3、走动式管理存在走马观花,水过地皮湿,未能做到举一反三的解决问题,从根本上解决问题;
4、工作形式化,如为了应付一些检查,如:安全标准化、无泄漏工厂、清洁文明工厂等,只是为了应付而准备一些资料,处理一些现场问题,未能真正的将工作常态化、持久化,未能真正的将其作为促进工作的一种方法.
二、改进措施:
1、从思想上清除懒的根源,强化自己的责任意识、强化“无功便是过,不进就是退,平庸即是错”的责任意识,每天深入现场不少于4小时,每月坚持业务知识学习不少于3000字;
2、通过理论学习,不断开拓工作思路,敢于打破旧模式,改变一些习以为常的东西,不仅自己要做,且要带动车间的每个人不断创新,善于开动脑筋,把五小活动落到实处;
3、坚持走动式管理,每天检查发现问题不少于4条,并督促落实解决,对未及时整改的问题及责任人坚决进行考核;
4、做好三基工作,切实把安全标准化、无泄漏工厂、清洁文明工厂等实施方案落实并应用到工作中.
篇三:《如何改进自己的不足和缺点》
如何改进自己的不足和缺点
缺点一:情绪控制不到位,遇到事情有时容易急躁或冲动;
改进措施:
1、 在工作中、生活中,逐步控制自己的脾气,做到冷静、冷静、再冷静;
2、 在工作中、生活中,逐步培养自己的耐心,认真倾听,了解事实真相后再做判断;{工作中不足及改进措施}.
3、 在急躁或冲动时,不做任何决定,谨记“冲动时魔鬼”的道理;
4、 从身边小事开始锻炼自己,逐步做到处事不惊、不慌、不乱、不冲动;
5、 定期总结和反省自己“情绪控制能力”;
缺点二:工作上有时有拖拉现象,有时候以思考不周为由导致部分事情实施和执行时间推后和
延迟;
改进措施:
1、 在制定计划时,思考周全,制定详细的时间进度表,严格按计划执行;
2、 不断说服自我,突破心理障碍,养成及时行动的习惯;{工作中不足及改进措施}.
3、 在遵循“行动有方案”的前提下,养成在行动中完善方案的习惯,在时间与计划的完美性之间做好平衡;
4、 牢记“时间价值”,定期总结和反省自己“工作实效性”;
缺点三:做事不够细心,对细节的把控和谨慎程度不够,考虑问题不够全面; 改进措施:
1、 进一步培养自己的责任意识,重视小事和细节;
2、 逐步培养自己的耐心,认真对待每一件事情和每一个细节;
3、 牢记“细节决定成败”的训言,从小事和细节上加强对自身的要求;
4、遇事多换位思考,多角度思考后再制定方案;
缺点四:在管理上,对上司的否定不愿争执;
改进措施:
1、 相信“真理越辩越明”的道理,突破自我心理障碍,勇于面对上司;
2、 当对上司的想法有异议时,勇于提出和直接表达自己对上司观点的看法;
3、 当自己的方案或想法被上司否决时,勇于表达自己真实的想法,不惧怕争论和冲突;
缺点五:对自身形象关注不够,有时随意嘻嘻哈哈;
改进措施:
1、 对自身的言行举止制定一定的标准要求,严格对照去做;
2、 牢记自己的三重身份该具有的形象,时刻注意自己的言行举止,不随意而为;
3、 将工作与生活分开,在工作中,严格按照工作和职业人的标准要求自己,注意自身修养的提高和正能量的发挥;
缺点六:有时妇人之仁,在执行制度时有放松现象;
改进措施:
1、 制定制度时,考虑周全,从实际出发,按照科学的方法和依据制定符合实际的标准;
2、 执行制度时,做到一视同仁和铁面无私;
3、实施和执行制度的过程中,及时发现问题并组织修正和完善;
缺点七:对下属工作跟踪督导不到位;
改进措施:
1、 重视下属周、月工作计划和总结,定期督导和跟进;
2、 定期培训下属,注重下属培养,提升下属思想境界和专业技能;
3、 随时关注下属工作状态,了解下属工作进度及工作中的疑难之处,及时给与指导和
协助;
4、 注意其他部门或人员反馈给自己的关于本部门员工的任何信息,找到问题后,有计
划的改进和跟进;
5、 用心对待每一位下属,和下属之间做到无缝对接,及时化解下属工作压力;
缺点八:亲和力不太强、凝聚团队能力有点弱、策划能力有点弱;
改进措施:
1、 进一步加强自身修养,主动接触和了解员工,提升自身亲和力;
2、 加强学习,努力提高自身的专业技能和管理水平;
3、 多倾听和吸纳他人意见,借助他人的长处来弥补自己的不足;
4、 多总结和反思自己,逐步提升自己的各项技能;
本改进方案自即日起开始实施,本人将在以后的工作中以更高的标准要求自己,加强理论学习和实践锻炼,在提升自身专业技能和管理技能的同时,不断提升自身的思想境界和宏观格局.
汇报人:杨金环
2014年9月10日
篇四:《对自己在工作中存在不足之处的深刻反思和整改措施》
在本年度的考核中,我因为在工作中存在严重不足,尤其是在与一线职工的交往中,因为思想认识上的不到位,给自己的工作也带来了一定的影响.这次考核,我的不足之处很明显的暴露了出来.通过自己深刻的反思,我对自己存在的问题进行了 认真细致的总结汇报如下:
一、在工作中只是注重自己业务能力的提高.
在平时的 工作中,只是想着要尽快提高自己的业务能力.只是想着一门心思的学技术、学业务.忽视了与大家在工作和生活中的接触.使得与工人师傅们产生了隔阂,彼此之间缺少沟通.互相没有深入的了解,与大家没有建立起很好的关系.从而使得有时在工作中也产生了被动.
二、在工作中只是看重了效率.在现场工作中,仅仅是把工作的效率放在了第一位,没有想到首先应该怎样先与大家建立起很好的关系,在与他人融洽的相处之后,会将工作做的更好,效率才能够更快的提高.
三、在工作中没有很好的讲究方式方法.在平时的工作中,包括与大家安排工作的时候,只是想着要将工作尽快、顺利的完成.没有考虑,在工作中也要讲究方式方法, 做事情,不能偏激,不能只是一味的盯着工作,这样做会事与愿违.不能不讲究方法、讲究策略.
对于自己存在的以上三点问题,结合自身的实际情况, 以及对今后工作中需要注意的问题.通过认真的思考,制定了以下整改措施:
一、不能只是注重自己业务能力的提高.在工作中,不能只是注重提高自己的业务能力.还要注重与大家的关系.在平时的工作中,不应该将心思仅仅是放在学技术、学 业务方面.要与大家在工作和生活中多接触、多沟通, 尽快消除与工人师傅们的隔阂,要对他们有深入的了解.从 而使得有时在工作中产生的被动情况变为主动情况.
二、不能只是看重工作效率.在平时的工作中,首先应该与大家建立起和谐、融洽的关系,与现场的师傅们要很好的相处.只有在此基础上,师傅们从心里愿意很好的和我们一起合作,工作才能真正的做好,效率才能够提高 的更快.
三、在工作中要讲究方式方法.在平时的工作中,不能偏激,一定要讲究方 法和策略.一定要明确,要想把工作干好,就应该讲究方式方法.只有在顺利的将工作安排下去的前提下,才能够将工作顺利、尽快的完成.
针对以上三点整改措施,在以后的工作过程中:首先,应该继续深刻的反思, 要从思想上认识到自己存在的不足之处,并且要认真的思考在今后的工作中应该怎样去做. 其次,要在实际工作中,要摆正自己的位置,踏踏实实的工作,不仅要注重提高自己的业务能力,还要学会与现场工人师傅很好的相处.将自己的不足之处进行改正,让自己在今后的工作中有所进步.
一、工作中的不足:
1.在工作中只是注重自己业务能力的提高.在平时的工作中,只是想着要尽快提高自己的业务能力.只是想着一门心思的学业务.忽视了与公司内部人员建立更加良好的关系. 使得与同事产生了隔阂,彼此之间缺少沟通.互相没有深入的了解,没有建立起很好的关系.从而使得有时在工作中与每个部门没有很好的配合,同时也产生了被动.
2.在工作中没有很好的讲究方式方法.在平时的工作中,包括在与客户谈判、聊天时候,只是想着要将工作尽快、顺利的完成.没有考虑,在工作中也要讲究方式方法,做事情,不能偏激,不能只是一味的盯着工作,这样做会事与原违. 不能不讲究方法、讲究策略.
二、需要改进的地方{工作中不足及改进措施}.
对于自己存在的以上两点问题,结合自身的实际情况, 以及对今后工作中需要注意的问题.通过认真的思考,制定了以下整改措施:
1.不能只是注重自己业务能力的提高.在工作中不能只是注重提高自己的业务能力.我们整个公司就是一个团队,公司的销售额不单单需要我们一线业务员,还要各部门的互相配合来创造,因此在工作和生活中还要与公司同事多接触、多沟通,尽快消除部门同事的隔阂,要对他们有深入的了解.从而使得有时在工作中产生的被动情况变为主动情况.
2.在工作中要讲究方式方法.
首先,在平时的工作中,特别是在与客户交流,不能偏激.一定要讲究方法和策略. 一定要明确自己每次拜访客户的目的,拜访客户前要准备要自己所需要的资料跟拜访客户的主题.
其次,在工作中会多向前辈们讨教成功的经验,并且把合适自己的方式方法运用到自己的工作中去.要对于公司工作: 1.公司应该重视培训,特别是中层领导的各方面能力,员工培训是培育和形成共同的价值观、增强凝聚力的关键性工作.
一个企业人才队伍建设一般有两种:一种是靠引进,另一种就是靠自己培养. 员工培训是培育和形成共同的价值观、增强凝聚力的关键性工作.公司应该以多种方式激励我们员工,培训其实就是激励我们的方法之一,不能让员工有既来之则安之的心态,要让员工有付出有收获,当然根据马斯洛需求层次论来讲,我们不仅仅需要的是基本的物质 与生理需求,在一个公司还应该要得到归属尊重等需求,这个正是公司要向我们员工所付出的,在公司的战略方向战略 规划中也应该所提及的.
篇五:《工作中不足及改进措施》
1、工作责任心不足主要是思想上的问题.要改变自己的思想,在思想上有足够的认识.要明白自己为什么要工作,工作要达到什么目的,仔细分析自己工作责任心不足的原因.找出原因后,解决的主要办法就是使自己能正确对待工作,树立为工作服务的思想,下定决心做到爱岗敬业,这样加强自己的工作责任感,就会信心十足,工作起来就有责任心了.
2、改变工作观念.是不是工作观念上有问题,是不是有混的意思.找出这方面的原因,下定决心改掉.我们每天既然已经工作了,为什么不好好的干呢?反正也是一天,为什么不让这一天有所收获呢和有意义呢?自己树立正确的工作观念:要干就干好,要干就干出个样来,一定要正视自己的工作,有这个信念,一定会干出成绩来,不管这个成绩是大还是小,大的成绩也是由小的成绩积累的.工作干好了,能为领导分忧,领导也会对你刮目相看的,得到重视的.
3、提高自己的素质.素质包括两方面,一个是心理素质,一个是能力素质.心理素质要靠自己调整,调整好自己的心态,使自己能够抵抗不良影响,使自己能够承受住失败的挫折,坚决做到越挫越勇.能力素质提高,首先要不断地学习和充实自己的专业知识,提高自己的专业能力,在工作中尽量少出毛病或不出毛病,让自己的工作不说是总比别人好,也要比上不足、比下有余.
4、能抵制不良影响.工作环境肯定有好有坏,但不能因为工作环境的改变而改变自己的良好工作态度.一定要向工作好的同志学习,不受工作不良同志的影响.以积极工作的同志为榜样,并向他看齐,而且在心里说我也一定能做到,让大家看看,我也一定能做出个样,让别人以我为榜样.别人能做到的我也能做到,而且也不比别人差.
5、多一些业余爱好.业余时间不要只顾玩,要把业余时间利用起来,学习一点
专业之外的其它知识,来补充自己知识的不全面.有一些其它爱好,来调整自己的性情和情趣.使自己尽量能达到知识全面些,多掌握一些技能,能适应各方面的变化,这样在任何时候,自己都能掌握工作的主动性、时效性和影响性.注意发现别人的长处,来补己之短处,这应该是自己最应该有的爱好.这个爱好可能是自己做人的优点.
6、要和谐共处、团结友爱.在工作上,要热心地帮助别人,不管自己是否能做好,主要是要有友爱的精神,少与同事拌嘴,多让一些忍让,多与人或是同事沟通感情.到什么时候都要记住:忍一时,风平浪静;退一步,海阔天空.不要争一时之利,更不要图一时之快.我为人人,人人为我,尊重别人的人,才能得到别人的尊重.
以上这些,希望对你有所帮助,祝你工作进步、万事如意!
篇六:《教学工作中的不足和改进措施》
教学工作中的不足和改进措施
作为一名从事教育工作的教师来说,我的的确确可以被称作新人.虽然通过不断的学习以及实践摸索,逐渐在教育工作中取得了些许成效.但是仍然有众多不足之处.在此做一个总结归纳,也是为了更好的认清自己,找出工作中的不足,以便更好的改进不足,不断提升自己,胜任教师这个光荣而神圣的责任.
一、 本人教学中的不足.
1、由于新人的缘故,虽然有些问题上有新的思路,但是毕竟缺乏经验.在许多理论性的知识储备上不够深厚.作为教育工作者,必须要有扎实的理论基础,武装自己的头脑.
2、在课堂教学方面,有些过多注重自身的讲授.从内心来说,总是怕学生不理解,总是会从多方面多角度来帮助学生分析理解教学内容,有些讲授过多,讲课时间偏长.在发挥学生的主体作用方面有所欠缺.再者,在个方面也缺乏相关的学习和经验. 3、在课堂外的教学引导上,缺乏注重学生作业的开拓性.没有花费心思用于启发学生.可能也是思想上的惰性,思维的懒惰.
二、改进措施.
通过认真反省和自我分析,认清主观上的不足之后,感觉到豁然开朗,并不是自身能力不够,多半是年轻人的浮躁和惰性所致.我将在今后的教学中注意,积极改进措施,更好的服务教学工作.
1、首先必须从知识上首先丰富自己,持之以恒的坚持理论学习,不断提升自身的知识储备.多通过媒体、网络等现代化信息渠道关注有助于教学工作的题材和内容,多方面丰富自己.
2、由于经验欠缺,我将在平时多向有经验的老师请教.多多与经验丰富的老师多交流,多听课,多学习有益于提高自身教学水平的教学经验.
3、在课堂教学中,我将注重学习大纲,力求备好每一节课,努力从整体上优化课堂的教学,提高课堂教学的效益.
4、在课后,我将持续关注学生的情况.鼓励学生多通过生活,通过各种媒体网络,勤思考.借以巩固课堂教学,活学活用. 我始终认为教学中有欠缺并不可怕,只要主观思想端正的认识,通过不断研究方法,多学习,多思考,多改进,一定能在教学中取得较大的进步.我相信,自己一定行.
篇七:《工作中存在的不足及改进措施》
本人长期从事教育培训工作,有时一帆风顺,有时烦恼多多,要想进步,尤其是不断进步,有必要不断总结与反思,通过近一段时间的工作,反省自身,还存在许多不足和缺点,现将近期的工作、学习中存在的不足和缺点简要总结如下:
1、自身的专业业务水平高,但事故应急处理能力不强.虽然通过学习和工作经验的积累,事故应急处理能力得到一定程度的提高,在全局战略管理中还存在着片面性,应急综合管理能力还需进一步的加强.
2、工作上虽有开拓和主动精神,但有时也会心浮气躁,急于求成,创新不足;处理问题有时考虑得还不够周到,想得多,行动中实践得少.工作中总习惯从坏处着想,还存在着保守性.虽然平时也比较注重学习,但学习的内容不够全面、系统,有时候也放松了对自己的要求和标准.
3、全局意识不够强.有时做事情、干工作只从自身出发,对公司及车间作出的一些的重大决策理解不透,尽管也按领导要求完成了要做的工作,
更多相关内容:
-
-
收藏!一文搞定工作中Git的使用实践和常用命令合集
2019-09-17 21:02:16工作中git是一项必不可少的技能,在项目的开发进程中起着至关重要的作用,下面介绍一些git在工作中的一些使用实践~ 本文介绍了Git是什么、Git的存储结构、Git的提交规则和一些工作中常会用到的git操作的过程,最后...工作中git是一项必不可少的技能,在项目的开发进程中起着至关重要的作用,下面介绍一些git在工作中的一些使用实践~
一:前言
Git的定义是:分布式版本控制系统,用于项目开发中的版本控制。
从本质上来讲 Git 是一个内容寻址(content-addressable)文件系统,并在此之上提供了一个版本控制系统的用户界面。
Git 的核心部分是一个简单的键值对数据库(key-value data store)。 你可以向该数据库插入任意类型的内容,它会返回一个键值,通过该键值可以在任意时刻再次检索(retrieve)该内容。
git管理的项目工作目录下的每一个文件都不外乎这两种状态:已跟踪或未跟踪。
- 已跟踪的文件是指那些被纳入了版本控制的文件,在上一次快照中有它们的记录,在工作一段时间后,它们的状态可能处于未修改,已修改或已放入暂存区。
- 工作目录中除已跟踪文件以外的所有其它文件都属于未跟踪文件,它们既不存在于上次快照的记录中,也没有放入暂存区。
- 初次克隆某个仓库的时候,工作目录中的所有文件都属于已跟踪文件,并处于未修改状态。
Git 保存的不是文件的变化或者差异,而是一系列不同时刻的文件快照。在进行提交操作时,Git 会保存一个提交对象(commit object)。该提交对象会包含一个指向暂存内容快照的指针。 但不仅仅是这样,该提交对象还包含了作者的姓名和邮箱、提交时输入的信息以及指向它的父对象的指针。
如果转载此博文,请附上本文链接,谢谢合作~ :https://liyangyang.blog.csdn.net/article/details/100939749
点击「文章最下方-Geek Tech」或搜索「Geek Tech」公众号可免费获取多种PDF技术文档:Java、图数据库、Git使用和原理、算法、如何单元测试等PDF! 还有每天的技术文章推送和每月免费送书抽奖
- 《一文教会你写90%的Shell脚本》PDF:发送消息“shell”
- 《Git常用操作和Git底层原理全集》PDF:发送消息“git”
- 《图解-图数据库系列合集》PDF:发送消息“图数据库”
- 《近百页数据库和sql基础知识整理》PDF:发送消息“数据库”
- HRM人事管理系统+经典飞机大战+像素鸟源码+:关注后发送消息“源码”
- 更多免费pdf和资源可关注公众号查看!
二:git存储
git将项目的存储分为4部分,每部分有自己作用,见下图:(图片来自:博客)
Workspace
:工作区(当前用户操作修改的区域)Index / Stage
:暂存区 (add后的区域)Repository
:仓库区或本地仓库(commit后的区域)Remote
:远程仓库(push后的区域)
整体过程可以简述为:
- 工作区–>
add
–>暂存区–>commit
–>本地仓库区–>push
–>远程仓库区 - 远程仓库区–>
fetch
–>使用refs\remotes下对应分支文件记录远程分支末端commit_id 和 本地仓库区 -->merge
–>工作区 - 远程仓库区–>
pull
–>使用refs\remotes下对应分支文件记录远程分支末端commit_id and 本地仓库区 and 工作区
git pull和git fetch有什么不同呢?下面简单说一下
想要知道他们得不同,我们需要先了解两个概念
FETCH_HEAD
:可以看做是一个版本链接,记录在本地的refs\remotes下对应分支文件中,指向着目前已经从远程仓库取下来的分支的最新版本的commit_id。commit-id
:在每次本地commit来保存当前工作到本地仓库区后, 会产生一个commit-id,这是一个能唯一标识一个版本的序列号。 在使用git push后,这个序列号还会同步到远程仓库。
所以他们之间的不同在于:
git pull
直接将远程分支的修改更新到本地仓库区和本地工作区,我们就可以在本地工作区中看到最新代码git fetch
只将远程分支的修改拉取到本地仓库,并更新到FETCH_HEAD,记录远程分支最新的commit_id,不会更新本地工作区代码,只有使用了git merge
才会将提交更新到本地仓库区和工作区
其他想要了解更多git内部消息请移步我的另一篇博文:git内部存储实现机制
在
git status中
的体现,见下图:
Changes to be committed
::代表被add的文件,被加载到了暂存区Changes not staged for commit
:代表在当前分支中被修改的文件,还没有被add,存储在工作区Untracked files
:代表不被git追踪的文件,可以理解为不被git管理的文件- 如果没有Changes to be committed和Changes not staged for commit说明现阶段所有的修改已经被commit到本地仓库
- 如果git status后出现下述情况,说明还有已经的commit到本地仓库的还未被push到远程仓库
$ git status On branch master Your branch is ahead of 'origin/master' by 2 commits. (use "git push" to publish your local commits)
Git 作为一个系统,是以它的一般操作来管理并操纵(HEAD、index、Working Directory)三棵树的
HEAD:
是当前分支引用的指针,它总是指向该分支上的最后一次提交。 这表示 HEAD 将是下一次提交的父结点。 通常,理解 HEAD 的最简方式,就是将它看做 你的上一次提交的快照。index:
index索引是你的 预期的下一次提交。 我们也会将这个概念引用为 Git 的 “暂存区域”,这就是当你运行 git commit 时 Git 看起来的样子。Git 将上一次检出到工作目录中的所有文件填充到索引区,它们看起来就像最初被检出时的样子。 之后你会将其中一些文件替换为新版本,接着通过 git commit 将它们转换为树来用作新的提交。Working Directory:
最后,你就有了自己的工作目录。 另外两棵树以一种高效但并不直观的方式,将它们的内容存储在 .git 文件夹中。 工作目录会将它们解包为实际的文件以便编辑。
三:git提交规则
首先,有个问题需要确认一下,提交信息是使用中文还是英文呢?
如果你的项目是开源项目并且面向国际的开源项目,类似于阿里的Druid\PingCAP的TiDB等,那么一定要是用英文提交信息的!
如果你的项目是公司内部使用或者只会被公司内部开发修改,那么中文也是不错的,更加便于查看和管理。当然,开发组中的英文能力都不错的话,用英文也是可以的。分支Branch管理:
如果没有一个好的branch管理的话,可能会有下述图的情况,刺不刺激~
推荐的分支管理:master
分支为主分支(保护分支),禁止直接在master上进行修改代码和提交,此分支的代码可以随时被发布到线上;develop
分支为测试分支或者叫做合并分支,所有开发完成需要提交测试的功能合并到该分支,该分支包含最新的更改;feature
分支为开发分支,大家根据不同需求创建独立的功能分支,开发完成后合并到develop分支;fix
分支为bug修复分支,需要根据实际情况对已发布的版本进行漏洞修复;
标签Tag管理:
Tag采用三段式:v版本.里程碑.序号(v2.3.1)- 架构升级或架构重大调整,修改第1位
- 新功能上线或者模块大的调整,修改第2位
- bug修复上线,修改第3位
当然,可以根据实际情况来设计,比如项目特别大,可以使用四段表达Tag,项目比较小也可以使用二段式Tag,只要符合场景并有实际意义即可
Tag相关:Tag管理提交信息格式:
下面只是提供一种建议格式,大家可以根据自己的项目实际情况来定格式,只要能把当前提交表达清楚,格式统一,方便快速阅读和定位即可!-
建议中文示例:
- <新功能>(urllAnalyz) 添加解析url功能l
- <修改>(TestServiceImpl) 修改某功能的某个实现为另一个实现
- <Bug修复>(TestUnti) 修复url特殊情况下解析失败问题 (issue#12)
- <重构>(getData) 重构获取数据的方法
- <测试>(getDataTest) 添加(修改、删除)获取数据的单元测试代码
- <文档>(doc)修改(添加、删除)文档
-
对应到英文:
- feat:新功能(feature)
- style: 格式
- fix:修补bug
- refactor:重构
- test:测试相关
- docs:文档(documentation)
-
格式(type:scope:body:issue)
<|新功能|修改|Bug修复|重构|测试>(影响模块)提交描述信息(#issue?)
-
优点作用
- 与github数据issue关联,便于通过issue获取更多信息
- commit 提交时,格式统一,便于后续快速准确定位提交
- 可以更好的将此次提交表述清楚
四:Git操作过程
初始化项目,并上传到git服务器
基本过程: 创建远程仓库、初始化本地git仓库、将本地仓库与远程仓库关联起来、添加本地仓库想要提交的代码到本地git缓冲区,将本地仓库的本地分支与远程仓库的远程分支关联起来、提交代码
-
在git服务器上创建同名git项目,并获取http地址
-
本地git初始化项目git仓库,在项目目录下
git init
-
将本地git仓库和远程仓库关联起来,并设置远程仓库名称
git remote add <name> <http地址>
其中http地址为上述第一步获取的远程仓库的地址,name一般为origin,当然也可以设置其他的名字
例如:git remote add origin http://igit.corp.com/my/test.git-
添加项目文件到本地git缓冲区
git add -A
git commit -m
‘初始化项目’
或者
git commit -a -m
‘初始化项目’ -
将本地分支关联远程分支并提交,git默认在远程分支上创建于本地分支同名的分支
git push --set-upstream origin master
这就是将本地的master分支 与 origin远程仓库关联起来并在远程仓库创建同名master分支,以后本地master都提交到远程仓库中的origin/master分支上。
upstream:上游的意思- 至此,应该就可以了,我们可以在git服务器上刷新看看是否提交上去了
提交某一分支的修改
- 查看当前分支的修改
git status
- 查看想要查看的文件的修改
git diff <file_name>
- 确认正确后,提交修改到暂存区
git add -A 或者 git add <file_name> <file_name>
- 提交到本地仓库
git commit -m '提交信息'
- 提交到远程仓库
git push
拉取远程分支修改到本地分支
当远程分支别人推了一版新的代码时,我们想要将代码拉下来,可以采用两种方式pull 和 fetch+merge:(他们的不同点文章上面已经解释)
使用pull:
- 将远程分支最新代码更新合并到本地仓库区和工作区
git pull
使用fetch:
- 将远程所有分支最新的commit_id更新到FETCH_HEAD,记录远程分支最新的commit_id 和 本地仓库区
git fetch
- 将最新的代码合并到工作区
git merge
取消track某一文件
git rm -r --cache <file_name>
untrack后,使用commit -a 时,不会将其添加到暂存区中
- 之后会在.ignore文件中将该untrack的文件添加进去,完成
保存账号密码,避免每次push都要输入(简单方法)
- 确保在git中手动输入过账号和密码
- 输入下面语句即可
git config --global credential.helper store
暂存自己的修改,便于接着工作(特别有用)
如果你正在一个分支上工作修改,leader让你改另外的分支的BUG或者对其他的分支做一些操作。
我们知道如果一个分支上有还没有commit的修改的话,不可以切换分支,但是又因为自己的工作还未完成,不想commit,此时git stash
就起作用了。
你要把现在正在工作的分支保存下来,等处理完其他的再回来接着当前分支的修改工作。- 将当前分支的修改暂存起来(此处不等于add+commit)
git stash
备份当前的工作区的内容,从最新的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。
同时,将当前的工作区修改的内容保存到Git栈中暂存起来。- 切换到别的分支工作,完成后切换回原来的工作分支,查看暂存列表
git stash list
显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复
- 恢复暂存的修改到工作区
git stash apply <stash_name>
恢复暂存之后不删除暂存
从Git栈中读取最新一次保存的内容,恢复工作区的相关内容。
git stash pop
恢复暂存之后删除暂存从Git栈中读取最新一次保存的内容,恢复工作区的相关内容。之后pop会删除最新的暂存。
- 删除“暂存”
git stash drop <stash_name>
从Git栈删除最旧的一个暂存
- 结束
将文件修改回退到某一状态
一些已经提交的或者已经修改的部分,想要再修改一下,或者删除已经提交的-
删除某些commit,将head重定位到某一commit(回溯到以前的版本)
git reset --hard <commit_id>
注意!!! 此步骤会将commit_id前的所有commit修改删除
或者git reset <commit_id>
此步骤不会将commit_id前的commit删除,而是会将修改回退到本地工作区
git push origin HEAD --force
此步骤将服务器方也设置为相commit -
将文件修改恢复到当前已提交分支的原样(未 git add 情况下)
撤销修改就回到和版本库一模一样的状态,即用版本库里的版本替换工作区的版本
git checkout -- <file_name>
-
将文件修改恢复到当前已提交分支的原样(已经 git add 情况下)
git reset HEAD
将add退回
git checkout -- <file_name>
-
将文件修改恢复到已提交分支的原样(已经 git commit 情况下)
git reset <commit_id>
此处commit_id可以是任意分支的commit_id
git checkout -- <file_name>
版本的回溯与前进
有时候需要回溯或前进到以前的版本 或 回溯前进到以前的commit只要记住commit_id就可以在版本之间来回的穿梭,注意是可以“来回”穿梭哦
- 获取需要回溯到版本的commit_id
git log
--> 复制所需的版本commit_id - 回退到该版本
git reset --hard <commit_id>
- 如果想让服务器也回退到该版本的话
git push origin HEAD --force
五:Git常用命令
初始化项目为git项目
git init
clone服务器代码到本地
git clone <http_url>
添加修改文件到暂存区
git add <file_name>
git add -A
添加所有修改文件到暂存区提交修改到本地仓库
git commit -m '提交信息'
git commit -a -m '提交信息'
相当于git add -A + git commit -m 的整合提交本地仓库的修改到远程仓库
git push
将远程库<remote_name>的远程分支<branch_name>作为当前分支的上游分支
git push --set-upstream <remote_name> <branch_name>
<remote_name>为远程仓库的别名,一般为origin查看文件本次的修改
git diff
显示本次所有被修改文件的修改
git diff <file_name>
显示该文件本次的修改查看当前分支下当前状态
git status
显示出被修改的文件和提交的次数等查看提交历史
git log
git log --graph
查看分支合并图merge其他分支到当前分支
git merge <branch_name>
在merge过程如果出现冲突,在解决冲突后会产生一个新的commit,并且HEAD指向该commit
如果没有冲突,HEAD会在分支的最新commit上切换到上一个分支
git checkout -
切换到其他分支
git checkout <branch_name>
在某一分支基础上创建新分支
git checkout <branch_name>
切换到基础分支
git checkout -b <new_branch_name>
在当前分支基础上 创建新分支显示分支
git branch
所有本地分支
git branch -r
所有远程分支
git branch -a
所有分支,本地和远程删除本地分支
git branch -D <branch-name>
删除远程分支
git push origin --delete <branch-name>
添加一个新的远程仓库
git remote add <shortname> <url>
在同一个项目的git url中可以添加多个远程仓库
每个仓库相互隔离有自己的分支管理将本地分支与远程仓库中分支联系起来
git push --set-upstream <远程仓库名称> <远程仓库中分支名称>
以后本地的该分支的push,会默认提交到设置的远程仓库中远程分支中
删除远程仓库
git remote rm <远程仓库name>
删除本地tag
git tag -d <tag_name>
删除远程tag
git push origin :refs/tags/<tag_name>
查看tag信息
git show <tag_name>
暂存当前修改
git stash
查看暂存列表
git stash lsit
恢复暂存的修改
git stash apply
(恢复后不删除暂存)
git stash pop
(恢复后删除暂存)删除暂存
git stash drop
撤回已经add到暂存区的文件到本地工作区
git reset HEAD <file_name>
git reset HEAD
回退所有addadd会被标识为Changes to be committed,取消add后标识为Changes not staged for commit(不等于untrack)
取消track某一文件
git rm -r --cache <file_name>
untrack后,使用commit -a 时,不会将其添加到暂存区中
只merge某一个分支上的某一个commit
git cherry-pick <被merge分支中的某一个commit的commit-id>
撤销在本地工作区的文件的修改
撤销修改就回到和版本库一模一样的状态,即用版本库里的版本替换工作区的版本
git checkout -- <file_name>
删除某些commit,将head重定位到某一commit(回溯到以前的版本)
git reset --hard <commit_id>
git push origin HEAD --force
此步骤将服务器方也设置为相commit删除本地在远程服务器上不存在的分支
git remote prune origin
拉取远程分支到本地
git fetch origin <branch_name>
新建一个tag到指定commit
git tag <tag_name> <commit_id>
git tag <tag_name>
当前commit取消当前合并,重建合并前状态
git merge --abort
总结
本文介绍了Git是什么、Git的存储结构、Git的提交规则和一些工作中常会用到的git操作的过程,最后总结了常用的命令。Git在工作中的团队开发中起着至关重要的作用,希望本篇文章可以对大家有些许帮助~
推荐阅读:
shell-【技术干货】编写shell脚本所需的语法和示例
Git - 使用git不知道内部实现机制怎么行如果转载此博文,请附上本文链接,谢谢合作~ :https://liyangyang.blog.csdn.net/article/details/100939749
「>>>>>点击下方公众号Tab栏关注我们,专注于程序员的技术公众号!<<<<<」
-
最新中学生学科实践活动50字
2020-12-30 10:41:13综合实践活动作为新课程实施的亮点和...于是,在初中生活的最后一个寒假,我们九(2)班的集体团员们进行了社会实践活动。我们在社区里清扫垃圾,发送宣传单,希望这些微不足道的举动能增强人们的一点环保意识。天早... -
-
-
-
-
-
# file.data \mathcal{J} = \sum_{i=0]^{N-1} \mathcal{L}_i \tag{1-1}