Java程序员拿穗需要掌握哪些技术?Java的技术体系是非常庞大的,需要我们学习的技术非常多,往往很多初学的人,通过互联网查阅了一个庞大的学习列表,然后不知道如何下手。网上很多大牛列的技术不是不重要,但是掌握住企业应用的Java的核心技术,快速上手,是一种高效的学习手段。下面汇总了一下关于Java程序员需要掌握那些技术
第一、Java程序员需要掌握哪些技术?学会一个web服务
J2EE服务器——tomcat、Nginx、httpd等。其实要掌握的也简单那,知道什么文件部署在什么地方,只要会下载,能启动,能知道最直接、最关键的配置文件名字和位置就可以了。其他的服务器的名字了解一下就足够了。
第二、Java程序员需要掌握哪些技术?会一个框架
建议你学springMVC,因为所有的mvc框架都类似,只要坚持学习了MVC,其他的SSH、SSM等是容易借鉴的。作为一名新人在面试的时候可以说你自己擅长的,其他的框架了解一点点原理就行了,但是欠账还是要补上的,虽然说平时用顺手的框架也就那么几个,但是后期还要继续学习。
第三、Java程序员需要掌握哪些技术?数据库
mysql关系型数据库就很好,坑浅应用多,最近连集群支持的都很好了,你只要强调一点,数据库,你不是DBA,你还不懂如何调优,如何调执行计划,你只懂增删改查,所以你要学的就是T-SQL,标准是你能手写带条件的增删改消扮卜查,会复杂语句更好,稍微了解下sql效率方面的问题,为了面试也是可以。MSSQL在国内被鄙视的不行,如果有人叫你弄oracle,那又是太装逼,我身边有一票的5年+程序员,其中有超过一半连oracle的AWR都不会读,有的连数据字典都不知道。
第四、Java程序员需要掌握哪些技术?程序方面
jdbc需要了解下,相关的有连接字的写法,如何准备和获取结果,什么是resultset这类东西,当然,数据库连接的关闭和释放也是需要的。
类和抽象类和接口的关系搞清楚,继承和实现搞清楚,重载重写搞清楚这些都是基本概念。
由于Java主要是B/S结构,无论是集成还是自己的前后端,你都要看一下http,整个http的生命周期是什么?存在哪些步骤和不同的application负责哪个阶段,相关的有几个request和response实体,包含什么是session了解下。
业务逻辑的话,上手仔细写几个例子就好了
第五、Java程序员需要掌握哪些技术?IDE
你总逃不过eclipse和几个大厂的东西。要用简单易用的,别花太多时间在这个上面。
第六、Java程序员需要掌握哪些技术?设计模式
你要稍微看一下,了解什么是设计模式,你大可以老实说,你根本刚入行,只是粗通工厂模式和单粒,其他的需要在工作中学习,这样既不会显得完全不懂,也不会出什么纰漏。
第七、Java程序员需要掌握哪些技术?前端
前端不需要了解太多,JSP+JS就足够了。jsp上有缺闭个容易忽视的基础点:tag到底是什么如何处理。jsp的生命周期这些也最好看一下。
基础的devops稍微了解下,git的代表,github可以注册一个账号,搞清楚本地repo和远程repo之间的关系即可。SVN更为简单一点。
Maven也要学习一下,主要是pom文件的几个主要的部分,尤其是depedency。
Java程序员需要掌握哪些技术?想要成为一名合格的Java程序员需要具备以上技术技能,并且不断地进行学习才能获得更好的发展。
Ⅱ 程序员需要学什么软件
现在做为一名程序员,压力越来越大,各种开发工具越来越庞大、不断推陈出新,各种开发设计工程理念缤纷精彩、需要融入平常的开发当中,还有很多新的知识点在不断开拓中,相比以前,做为一名程序员尤其是合格程序员的难度的确增加了不少。
那么,做为一名程序员你应该学习掌握哪些软件与技能呢?
1. 数据库管理工具
MySQL,使用Navicat是针对数据库而研发管理工具,Navicat擅长于对数据库的管理,可以帮助程序员更好的管理数据库,视觉化创建 SQL 语句,自动生成报表等,Navicat具备所有数据库类型的绝大部分功能,包括存储过程、事件、触发器、函数、视图等。
Mongodb,使用Robomongo,是一个基于 Shell 的跨平台开源 MongoDB 管理工具。嵌入了 JavaScript 引擎和 MongoDB mogo。提供语法高亮、自动完成、差别视图等。
Sublime,具有漂亮的用户界面和强大的功能,可自定义键绑定菜单和工具栏。Sublime的主要功能包括拼写检查、书签、完整的 Python API,Goto 功能、即时项目切换、多选择、多窗口等。
插件多,Markdown插件,各种语言插件
Ⅲ [程序员]一个连git的都不会用的前端能留吗
程序员一个连git的都不会用的前端不能留。
git版本控制工具是程序开发行业的基础技能之一,也是整个软件行业中的必要技能。岩喊因此,如果一个郑拿前端工程师完全不会使用git这一工具,那么在职粗丛野场竞争中,恐怕会相对于其他有相关知识和技能的前端工程师更加受到限制,因此不能留。
对于一个连git都不会用的前端,如果有自检和提升技能的想法和计划,通过自学和进一步学习Git这一工具,也有在职业上取得进步和长期发展的机会。
Ⅳ Git 经典操作场景,专治不会合代码
git 对于大家应该都不太陌生,熟练使用git已经成为程序员的一项基本技能,尽管在工作中有诸如 Sourcetree 这样牛X的客户端工具,使得合并代码变的很方便。但找工作面试和一些需彰显个人实力的场景,仍然需要我们掌握足够多的git命令。
下边我们整理了45个日常用git合代码的经典操作场景,基本覆盖了工作中的需求。
如果让困你用 git commit -a 提交了一次变化(changes),而你又不确定到底这次提交了哪些内容。你就可以用下面的命令显示当前 HEAD 上的最近一次的提交(commit):
或者
如果你的提交信息(commit message)写错了且这次提交(commit)还没有推(push), 你可以通过下面的方法来修改提交信息烂吵(commit message):
这会打开你的默认编辑器, 在这里你可以编辑信息. 另一方面, 你也可以用一条命令一次完成:
如果你已经推(push)了这次提交(commit), 你可以修改这次提交(commit)然后强推(force push), 但是不推荐这么做。
如果这只是单个提交(commit),修改它:
如果你需要修改所有 历史 , 参考 'git filter-branch'的指南页.
通过下面的方法,从一个提交(commit)里移除一个文件:
这将非常有用,当你有一个开放的补丁(open patch),你往上面提交了一个不必要的文件,你需要强推(force push)去更新这个远程补丁。
如果你需要删除推了的提交(pushed commits),你可以使用下面的方法。可是,这会不可逆的改变你的 历史 ,也会搞乱那些已经从该仓库拉取(pulled)了的人的 历史 。简而言之,如果你不是很确定,千万不要这么做。
如果你还没有推到远程, 把Git重置(reset)到你最后一次提交前的状态就可以了(同时保存暂存的变化):
这只能在没有推送之前有用. 如果你已经推了, 唯一安全能做的是 git revert SHAofBadCommit , 那会创建一个新的提交(commit)用于撤消前一个提交的所有变化(changes);或者, 如果你推的这个分支是rebase-safe的 (例如:其它开发者不会从这个分支拉), 只需要使用 git push -f 。
同样的警告:不到万不得已的时候不要这么做.
或者做一个 交互式rebase 删除那些你想要删除的提交(commit)里所对应的坦历念行。
注意, rebasing(见下面)和修正(amending)会用一个 新的提交(commit)代替旧的 , 所以如果之前你已经往远程仓库上推过一次修正前的提交(commit),那你现在就必须强推(force push) ( -f )。注意 – 总是 确保你指明一个分支!
一般来说, 要避免强推 . 最好是创建和推(push)一个新的提交(commit),而不是强推一个修正后的提交。后者会使那些与该分支或该分支的子分支工作的开发者,在源 历史 中产生冲突。
如果你意外的做了 git reset --hard , 你通常能找回你的提交(commit), 因为Git对每件事都会有日志,且都会保存几天。
你将会看到一个你过去提交(commit)的列表, 和一个重置的提交。选择你想要回到的提交(commit)的SHA,再重置一次:
这样就完成了。
一般来说, 如果你想暂存一个文件的一部分, 你可这样做:
-p 简写。这会打开交互模式, 你将能够用 s 选项来分隔提交(commit);然而, 如果这个文件是新的, 会没有这个选择, 添加一个新文件时, 这样做:
然后, 你需要用 e 选项来手动选择需要添加的行,执行 git diff --cached 将会显示哪些行暂存了哪些行只是保存在本地了。
git add 会把整个文件加入到一个提交. git add -p 允许交互式的选择你想要提交的部分.
多数情况下,你应该将所有的内容变为未暂存,然后再选择你想要的内容进行commit。但假定你就是想要这么做,这里你可以创建一个临时的commit来保存你已暂存的内容,然后暂存你的未暂存的内容并进行stash。然后reset最后一个commit将原本暂存的内容变为未暂存,最后stash pop回来。
注意1: 这里使用 pop 仅仅是因为想尽可能保持幂等。注意2: 假如你不加上 --index 你会把暂存的文件标记为为存储。
如果你只是想重置源(origin)和你本地(local)之间的一些提交(commit),你可以:
重置某个特殊的文件, 你可以用文件名做为参数:
如果你想丢弃工作拷贝中的一部分内容,而不是全部。
签出(checkout)不需要的内容,保留需要的。
另外一个方法是使用 stash , Stash所有要保留下的内容, 重置工作拷贝, 重新应用保留的部分。
或者, stash 你不需要的部分, 然后stash drop。
这是另外一种使用 git reflog 情况,找到在这次错误拉(pull) 之前HEAD的指向。
重置分支到你所需的提交(desired commit):
完成。
先确认你没有推(push)你的内容到远程。
git status 会显示你领先(ahead)源(origin)多少个提交:
一种方法是:
在main下创建一个新分支,不切换到新分支,仍在main下:
把main分支重置到前一个提交:
HEAD^ 是 HEAD^1 的简写,你可以通过指定要设置的 HEAD 来进一步重置。
或者, 如果你不想使用 HEAD^ , 找到你想重置到的提交(commit)的hash( git log 能够完成), 然后重置到这个hash。使用 git push 同步内容到远程。
例如, main分支想重置到的提交的hash为 a13b85e :
签出(checkout)刚才新建的分支继续工作:
假设你正在做一个原型方案(原文为working spike (see note)), 有成百的内容,每个都工作得很好。现在, 你提交到了一个分支,保存工作内容:微信搜索公众号:Java后端编程,回复:java 领取资料 。
当你想要把它放到一个分支里 (可能是 feature , 或者 develop ), 你关心是保持整个文件的完整,你想要一个大的提交分隔成比较小。
假设你有:
我去可以通过把内容拿到你的分支里,来解决这个问题:
这会把这个文件内容从分支 solution 拿到分支 develop 里来:
然后, 正常提交。
Note: Spike solutions are made to analyze or solve the problem. These solutions are used for estimation and discarded once everyone gets clear visualization of the problem.
假设你有一个 main 分支, 执行 git log , 你看到你做过两次提交:
让我们用提交hash(commit hash)标记bug ( e3851e8 for #21, 5ea5173 for #14).
首先, 我们把 main 分支重置到正确的提交( a13b85e ):
现在, 我们对 bug #21 创建一个新的分支:
接着, 我们用 cherry-pick 把对bug #21的提交放入当前分支。这意味着我们将应用(apply)这个提交(commit),仅仅这一个提交(commit),直接在HEAD上面。
这时候, 这里可能会产生冲突, 参见交互式 rebasing 章 冲突节 解决冲突.
再者, 我们为bug #14 创建一个新的分支, 也基于 main 分支
最后, 为 bug #14 执行 cherry-pick :
一旦你在github 上面合并(merge)了一个pull request, 你就可以删除你fork里被合并的分支。如果你不准备继续在这个分支里工作, 删除这个分支的本地拷贝会更干净,使你不会陷入工作分支和一堆陈旧分支的混乱之中(IDEA 中玩转 Git)。
如果你定期推送到远程, 多数情况下应该是安全的,但有些时候还是可能删除了还没有推到远程的分支。让我们先创建一个分支和一个新的文件:
添加文件并做一次提交
现在我们切回到主(main)分支,‘不小心的’删除 my-branch 分支
在这时候你应该想起了 reflog , 一个升级版的日志,它存储了仓库(repo)里面所有动作的 历史 。
正如你所见,我们有一个来自删除分支的提交hash(commit hash),接下来看看是否能恢复删除了的分支。
看! 我们把删除的文件找回来了。Git的 reflog 在rebasing出错的时候也是同样有用的。
删除一个远程分支:
你也可以:
删除一个本地分支:
首先, 从远程拉取(fetch) 所有分支:
假设你想要从远程的 daves 分支签出到本地的 daves
( --track 是 git checkout -b [branch] [remotename]/[branch] 的简写)
这样就得到了一个 daves 分支的本地拷贝, 任何推过(pushed)的更新,远程都能看到.
你可以合并(merge)或rebase了一个错误的分支, 或者完成不了一个进行中的rebase/merge。Git 在进行危险操作的时候会把原始的HEAD保存在一个叫ORIG_HEAD的变量里, 所以要把分支恢复到rebase/merge前的状态是很容易的。
不幸的是,如果你想把这些变化(changes)反应到远程分支上,你就必须得强推(force push)。是因你快进(Fast forward)了提交,改变了Git 历史 , 远程分支不会接受变化(changes),除非强推(force push)。这就是许多人使用 merge 工作流, 而不是 rebasing 工作流的主要原因之一, 开发者的强推(force push)会使大的团队陷入麻烦。使用时需要注意,一种安全使用 rebase 的方法是,不要把你的变化(changes)反映到远程分支上, 而是按下面的做:
假设你的工作分支将会做对于 main 的pull-request。一般情况下你不关心提交(commit)的时间戳,只想组合 所有 提交(commit) 到一个单独的里面, 然后重置(reset)重提交(recommit)。确保主(main)分支是最新的和你的变化都已经提交了, 然后:
如果你想要更多的控制, 想要保留时间戳, 你需要做交互式rebase (interactive rebase):
如果没有相对的其它分支, 你将不得不相对自己的 HEAD 进行 rebase。例如:你想组合最近的两次提交(commit), 你将相对于 HEAD~2 进行rebase, 组合最近3次提交(commit), 相对于 HEAD~3 , 等等。
在你执行了交互式 rebase的命令(interactive rebase command)后, 你将在你的编辑器里看到类似下面的内容:
所有以 # 开头的行都是注释, 不会影响 rebase.
然后,你可以用任何上面命令列表的命令替换 pick , 你也可以通过删除对应的行来删除一个提交(commit)。
例如, 如果你想 单独保留最旧(first)的提交(commit),组合所有剩下的到第二个里面 , 你就应该编辑第二个提交(commit)后面的每个提交(commit) 前的单词为 f :
如果你想组合这些提交(commit) 并重命名这个提交(commit) , 你应该在第二个提交(commit)旁边添加一个 r ,或者更简单的用 s 替代 f :
你可以在接下来弹出的文本提示框里重命名提交(commit)。
如果成功了, 你应该看到类似下面的内容:
--no-commit 执行合并(merge)但不自动提交, 给用户在做提交前检查和修改的机会。 no-ff 会为特性分支(feature branch)的存在过留下证据, 保持项目 历史 一致(更多Git资料,参见IDEA 中如何完成 Git 版本回退?)。
有时候,在将数据推向上游之前,你有几个正在进行的工作提交(commit)。这时候不希望把已经推(push)过的组合进来,因为其他人可能已经有提交(commit)引用它们了。
这会产生一次交互式的rebase(interactive rebase), 只会列出没有推(push)的提交(commit), 在这个列表时进行reorder/fix/squash 都是安全的。
检查一个分支上的所有提交(commit)是否都已经合并(merge)到了其它分支, 你应该在这些分支的head(或任何 commits)之间做一次diff:
这会告诉你在一个分支里有而另一个分支没有的所有提交(commit), 和分支之间不共享的提交(commit)的列表。另一个做法可以是:
如果你看到的是这样:
这意味着你rebase的分支和当前分支在同一个提交(commit)上, 或者 领先(ahead) 当前分支。你可以尝试:
如果你不能成功的完成rebase, 你可能必须要解决冲突。
首先执行 git status 找出哪些文件有冲突:
在这个例子里面, README.md 有冲突。打开这个文件找到类似下面的内容:
你需要解决新提交的代码(示例里, 从中间 == 线到 new-commit 的地方)与 HEAD 之间不一样的地方.
有时候这些合并非常复杂,你应该使用可视化的差异编辑器(visual diff editor):
在你解决完所有冲突和测试过后, git add 变化了的(changed)文件, 然后用 git rebase --continue 继续rebase。
如果在解决完所有的冲突过后,得到了与提交前一样的结果, 可以执行 git rebase --skip 。
任何时候你想结束整个rebase 过程,回来rebase前的分支状态, 你可以做:
暂存你工作目录下的所有改动
你可以使用 -u 来排除一些文件
假设你只想暂存某一个文件
假设你想暂存多个文件
这样你可以在 list 时看到它
或
首先你可以查看你的 stash 记录
然后你可以 apply 某个 stash
此处, 'n'是 stash 在栈中的位置,最上层的 stash 会是0
除此之外,也可以使用时间标记(假如你能记得的话)。
你需要手动create一个 stash commit , 然后使用 git stash store 。
如果已经克隆了:
如果你想恢复一个已删除标签(tag), 可以按照下面的步骤: 首先, 需要找到无法访问的标签(unreachable tag):
记下这个标签(tag)的hash,然后用Git的 update-ref
这时你的标签(tag)应该已经恢复了。
如果某人在 GitHub 上给你发了一个pull request, 但是然后他删除了他自己的原始 fork, 你将没法克隆他们的提交(commit)或使用 git am 。在这种情况下, 最好手动的查看他们的提交(commit),并把它们拷贝到一个本地新分支,然后做提交。
做完提交后, 再修改作者,参见变更作者。然后, 应用变化, 再发起一个新的pull request。
在 OS X 和 Linux 下, 你的 Git的配置文件储存在 ~/.gitconfig 。我在 [alias] 部分添加了一些快捷别名(和一些我容易拼写错误的),如下:
你可能有一个仓库需要授权,这时你可以缓存用户名和密码,而不用每次推/拉(push/pull)的时候都输入,Credential helper能帮你。
你把事情搞砸了:你 重置(reset) 了一些东西, 或者你合并了错误的分支, 亦或你强推了后找不到你自己的提交(commit)了。有些时候, 你一直都做得很好, 但你想回到以前的某个状态。
这就是 git reflog 的目的, reflog 记录对分支顶端(the tip of a branch)的任何改变, 即使那个顶端没有被任何分支或标签引用。基本上, 每次HEAD的改变, 一条新的记录就会增加到 reflog 。遗憾的是,这只对本地分支起作用,且它只跟踪动作 (例如,不会跟踪一个没有被记录的文件的任何改变)。
上面的reflog展示了从main分支签出(checkout)到2.2 分支,然后再签回。那里,还有一个硬重置(hard reset)到一个较旧的提交。最新的动作出现在最上面以 HEAD@{0} 标识.
如果事实证明你不小心回移(move back)了提交(commit), reflog 会包含你不小心回移前main上指向的提交(0254ea7)。
然后使用git reset就可以把main改回到之前的commit,这提供了一个在 历史 被意外更改情况下的安全网。
Ⅳ 程序员必备技能-git 不会到还有人不会用吧,不会吧不会吧
版本控制 :版本控制最重要的作用是记录一个文件的修改 历史 记录,并且根据该记录可以切换到对应的 历史 版本,这个也是由个人开发到团或改队开发重要的工具。
集中式版本控制系统 :具有一个统一的中央服务器,里面存放着项目的源码。各个客户端都从该服务器中拉取代码和上传自己编写的代码到服务器中。
优点:各个客户端可以查看其他客户端在该项目中做了什么,一定程度上了解项目的进度。同时,管理员可以控制各个程序员的权限。
缺点:无法应对中央服务器的单点故障问题,当中央服务器宕机后,各个客户端都不能提交代码和拉取代码,同时在宕机的期间,做不到版本的 历史 记录。
分布式版本控制系统 :每个客户端都是一个版本库(本地库),各个客户端维护自己的版本 历史 记录。各个客户端的协作是通过使用远程库(GitHub等)进行的,push把代码推送到远程库中,pull把远程库的代码拉取下来。
优点:解决了集中式版本控制的缺点。在远程库宕机的情况下(虽然说这个概率极低),客户端还是能进行开发的,因为版本的控制是在本地进行的。姿团圆同时,每个客户端保存的是整个项目,包括 历史 记录,使得更迹塌加安全。
Git的工作机制
代码托管中心(远程库) :
底层:head指针指向分支,分支指针指向版本号。当版本号发生变化时,分支指针指向对应的版本号
(1)配置git的忽略文件
(2)在idea中配置git
(3)初始化项目