百度
360搜索
搜狗搜索

jenkins菜鸟教程,Jenkins 打包遇到的问题及解决详细介绍

本文目录一览: Gitlab+Jenkins通过钩子实现自动部署web项目,图文详细教程

扩展参考:Jenkins+Gitlab通过脚本自动部署回滚web项目至集群
1):Gitlab服务器:ubuntu 192.168.152.131 ---参考搭建:Linux安装gitlab,docker安装gitlab教程
2):Jenkins服务器:ubunu 192.168.152.130 ---参考搭建:linux安装Jenkins,或docker安装Jenkins教程
在服务器上生成ssh-keygen,用于配置web服务器和Gitlab服务器。
3):web服务器:centos 192.168.152.150 ---已搭建好LNMP环境
4):开发者电脑:Windows+key密钥 (用于提交代码)
1:在gitlab创建项目Test Project
2.1): 配置一个开发者电脑的ssh公钥到gitlab
配置一个开发者电脑的ssh公钥到gitlab,这样才能模拟开发上传代码到gitlab。
windows生成key过程及git安装,可参考:Windows下git和github的使用图文详细教程_the丶only的博客-CSDN博客_github win
在windows测试clone,和提交代码。

注:最新版git 已经将默认分支master改为main了。所以看到main,而不是master不要太奇怪
测试成功,在gitlab也显示有index.html文件。
2.2): 配置jenkins公钥到gitlab
同理,同样需要jenkins公钥,因为jenkins也需要拉去gitlab的代码。
在 jenkins服务器 上查看公钥并复制添加到gitlab,并命名为jekins。
1:插件管理,安装插件
jenkins本身没什么功能,主要是依靠插件来实现各种强大的功能。
基本需要添加的插件:Gitlab Hook、Build Authorization Token Root、Publish Over SSH、Gitlab Authentication、Gitlab、Git Parameter
可以在 Manage Jenkins >> Manage Plugins 查看管理插件。在Available 选项搜索安装插件即可。
安装完成后,重启Jenkins。
2:添加需要部署的web主机
在 Manage Jenkins >> Configure System 中往下翻,找到 Publish over SSH 选项,点击add ssh server。
在Jenkins服务器上,查看私钥,注,是私钥,不是公钥。
将私钥填写在key位置,还有添加web服务器相关信息。
注:如果测试报错如下
Failed to connect or change directory jenkins.plugins.publish_over.BapPublisherException: Failed to add SSH key. Message [invalid privatekey: [B@2e54414f]
是因为默认用ssh-keygen命令,默认生成了OPENSSH 格式密钥。而Jenkins暂时不支持这种私钥,私钥开头结尾如下:
所以,需要生成rsa密钥格式的。用开头说的ssh-keygen加其他参数生成即可。
私钥开头结尾如下:
再次测试,显示success,则成功。然后点击save保存即可。
3:构建任务项目
首页创建任务或者一个项目
命名为web-project,选择为freestyle project 自由项目。然后ok确认。
3.1):源码管理 Source Code Management
选择源码管理,添加gitlab的项目clone地址。
注:最后路径选择分支,我gitlab主分支名字为main,如果是master,则写master,或者合并的其他分支。
在add添加用户
添加完成后,选择git用户,这时没有红色提醒,说明已成功连接
3.2):构建触发器 Build Triggers
现在Build Triggers,勾选build when....,其他默认,并记下链接 http://192.168.152.130:8080/project/web-project
点击高级 advance 选项。
勾选filter branches regex选择,填写分支,生产token。其他默认
3.3):构建 Build
选择Build 选项。选择ssh
添加web服务器
添加完毕,最后save保存。
1:添加钩子webhooks.
选择自己的项目Test Project,在设置setting里,选择钩子webhooks.
填写刚才记下的http://192.168.152.130:8080/project/web-project和token值。
最后Add webhook完成:
2:如添加失败,报错,更改Network
注:如填写失败提示Url is blocked: Requests to the local network are not allowed
还需更改Network选项。
3:测试钩子
添加完成后,下面会出现钩子选择。点击test中的,push event。
出现successful,即添加成功。
在Jenkins也可以看到刚才的测试时间信息。
在开发电脑上测试提交,我这里为Windows电脑测试。
打开Git Bash,输入以下命令:
提交成功,回到Jenkins,查看是否构建成功:
绿色显示构建成功,无错误显示。回到gitlab查看项目。
时间显示刚才也提交成功,无错误。最后在浏览器输入web地址测试,本人配置了web访问端口8082。所以输入IP加端口访问。
内容也已经自动更新成功。
完结撒花!!!

Jenkins 打包遇到的问题及解决

jenkins 自动打包环境搭建,大家可以自己去搜索。我这里只总结了两个问题。

如果遇到类似的错误 解决办法:
打开keychain keys(钥匙串访问),检查左侧系统目录里是否包含你所使用的证书,如果没有,在登录目录里复制,并粘贴到系统目录

如果构建还是失败。

检查/Users/Shared/Jenkins/Library/MobileDevice/Provisioning Profile 路径文件下是否包含你所需要的配置文件,如果没有,或者没有此路径,创建路径。并把/Users/xxx/Library/MobileDevice/Provisioning Profiles (xxx表示你自己的用户名)
路径下的文件复制到/Users/Shared/Jenkins/Library/MobileDevice/Provisioning Profile 这个文件里。

2、Xcode9 打包时需要的ExportOptions.plist 里需要provisioningProfiles这个字段,这是一个字典。里面包含的参数key是APP的BundleID,value是provisioning profile 的name。
这个文件可以用Xcode9 手动导出包,里面就有需要的ExportOptions.plist文件,移动到你需要的路径即可

附上打包成功的脚本,上传到fir,用的是官方插件,这个也有很多教程,自行查找都可以。我的是Debug包

自己摸索,试了好多次才成功,如果有什么问题,欢迎交流

Tinker结合Jenkins一键打包

Tinker 是微信团队开源的Android热修复解决方案,我们主要将这项技术用于在不发版的情况修复线上app存在的问题.
我们的项目一直使用Jenkins构建来完成上线,在接入Tinker后我们也希望在发布补丁的时候也能通过Jenkins一键构建完成,因此有了这篇文字.第一次写博客,如有不足之处,请多多指正.
Tinker官方 文档 给出了详细的接入教程,然后很多同学在接入上还是觉得太难,太麻烦!我在接入的时候,采取的简单粗暴的方式,直接照搬官方demo tinker-sample-android 来完成接入.由于要在多个项目中使用,因此将其当做一个library提供给多个项目依赖;如图:
本文demo地址: TinkerDemo
下面的做法建立在Application改造完成的前提下
1.主工程的 build.gradle 文件添加tinker插件和资源混淆组件(AndResGuard)插件
2.主Module依赖tinkelib
3.拷贝config文件到根目录
4.主Module引入tinker.gradle和resguard.gradle配置
5.TINKER_ID的配置
5.1 build.gradle文件末尾添加,通过git commit来作为TINKER_ID
5.2 主module的defaultConfig中添加
注:当然有人想用app版本号作为TINKER_ID,只要将getTinkerIdValue()改为对应的版本号即可
6.运行 gradle resguardRelease 命令,即可生成发布包(基准包),同时在工程根目录下会自动备份tinker需要的文件(apk、R、mapping、Resource mapping); 图:

7.生成补丁时,只需要执行 gradle tinkerPatchRelease 命令即可
至此,gradle的相关配置就完成了!
Jenkins的搭建及相关用法请自行google.
我们的Jenkins有一个线上job,由于我们使用master分支上线,因此在Jenkins的Branch Specifier中保持master不变
发布版本的时候使用 clean resguardRelease 命令,如图:

发布补丁时将tasks修改为 tinkerPatchRelease 即可
我们的渠道包使用美团的旧版生成方案,这一步工作是在服务器将apk拷入相应文件夹来完成,同时再执行一些其他脚本;
TinkerDemo
tinker.gradle中的备份脚本来着 w4lle 的 Gradle模块化配置 ;感谢w4lle同学

「自动化运维」从0到1 CICD自动化部署落地分享

目录

一、CICD简介
二、CICD实践过程
三、含泪踩坑
四、 历史 文章指路

一、CICD简介

1、CICD定义

2、DevOps定义
DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

DevOps的基础核心是CICD。

CICD的基础核心是自动化。

阅读更多 >>>  域名如果不备案会怎么样,域名买完后,不备案,不解析能用吗?

二、CICD实践过程

1、起因
在我之前的团队,因为要切换全新业务线,需要为新业务搭建一套全新的环境,所有东西从0开始。

原先只是用于部署测试环境,后面决定一起部署生产环境,这个过程中我还造成了一个严重生产环境问题,好在当时的生产环境还未正式使用,未造成严重影响。

在当时挺害怕也挺有压力的,但是后面项目完整落地,平稳运行,我还是挺有成就感的,接下来我将整个项目过程完整的分享出来。

2、技术栈选型
首先进行技术栈选型,我们选择的是Jenkins,Jenkins当属业内持续集成老大哥,有着非常丰富的插件,也可以选择gitlab集成的CICD,因为我们还有其它的测试脚本需要集成,所以Jenkins对于我们来说是最优的选择;

Ansible是批量运维工具,通过编写yaml脚本,可以方便实现批量管理多台机器,并且Ansible是比较轻量级应用,很容易上手;

shell脚本可以用于执行一系列命令。

其它的就结合团队项目情况进行搭建。

3、Jenkins应用部署实现流程
首先来梳理下整个项目的实现流程,主要分为Jenkins主节点和应用服务器,是一对多的关系。

Jenkins主节点的主要负责项目部署前的工作,主要包含拉取代码,前端打包,后端打包,快照版检测,将压缩包和部署脚本发送到目标机器(即应用服务器),远程调用目标机器上的部署脚本进行代码替换。

应用服务器部署脚本执行过程有:解压压缩包,停止服务,覆盖代码,拉取disconf,应用目录分组赋权,重启服务,检查服务是否有进程,查看启动日志,删除/tmp目录下旧压缩包。

Jenkins应用部署流程图

4、任务计划
4.1、搭建环境
Jenkins
指路【Jenkins系列】如何搭建Jenkins环境。

Ansible

Git

GitLab
因为这个我没有实践成功的教程,所以在这里就不贴啦~

Node.js

Maven

JDK

Nginx

2、编写前置脚本

3、编写应用部署脚本

4、Jenkins配置
指路【Jenkins系列】如何构建Jenkins Job。
新增Job,主要用于拉取代码,执行Maven编译,执行app_build.sh,将压缩包通过ssh发送到目标机器,远程调用目标机器的deploy.sh。

三、含泪踩坑

踩坑1
问题描述:在错误的路径拉取配置,原因是未成功解压压缩包。
解决方案:校验压缩包是否解压成功解压成功,并且在cd到正确的路径后添加&&(&&表示上一条命令执行成功再执行下一条命令)才进行拉取配置。

踩坑2
问题描述:项目没有正常停止,导致无法重新启动。
解决方案:虽然执行kill -9,但是未找到根本原因,因此加了一个检测机制,如果检测没有正常停止服务,则退出程序。

踩坑3
问题描述:生产部署脚本拉取了开发环境的的jdbc配置,原因是生产部署脚本写错了开发环境disconf的域名,当时我同时在搞开发生产环境的脚本,开发和生产是两套不同的脚本,一时混乱写错了,吓得一批,好在当时生产环境还没投产使用。
解决方案:为了避免后续这种情况的发生,而且是必须避免的,我们通过环境名称来判断走开发还是生产域名,这样就能保证脚本一致性了。

在这个项目实际遇到的问题远不止上面这几个,在这个实践过程中,我对整个应用部署流程有了更深的理解,平时方方面面的学习终于集中化起来进行实践了。

我习惯将学到的知识和遇到的问题记录起来,在写这篇文章的过程回过头来看,五味杂陈,原来我都经历了这些哈哈哈......

踩过的坑终究使我更加强大,带你见证呱呱本呱成长为参天大呱~

搞测试,不迷路
呱呱大王本呱带你飞!

基于K8s的CICD系统

基于k8s搭建的一套CI/CD系统,其目的是方便k8s和服务端相关技术的实践,在搭建过程中会涉及docker、dockerhub、k8s、github、jenkins、kubesphere
一台Mac物理机+3台Centos虚拟机
Docker是这个教程的基石,对Docker一点都不了解的同学,建议去B站看一下我发布的 Docker小白快速入门+实战 ,课程比较简洁,主要帮助不了解Docker的同学快速掌握并应用 安装命令如下
k8s是一个容器编排工具,可以轻松实现应用的扩/缩容、集群等,具体安装方式参考文档我的 k8s集群安装
这是k8s的一个web管理界面,用于简化k8s的操作。
在k8s继续的所有节点上都需要安装nfs-utils、rpcbind,搭建步骤参考我的 Centos7搭建NFS服务端
kubesphere明确说明基于k8s安装需要配置DefaultStorageclass,创建步骤参考我的 k8s基于NFS创建Storageclass
安装时间会有一点长,安装步骤参考我的 k8s集群安装Kubersphere
jenkins在这里是作为一个纽带的作用,因为jenkins在构建项目时可以执行shell脚本,因此通过shell脚本轻松的将github、docker注册服务器、k8s集群三者关联起来,从而简化jenkins的使用(就是一个偏运维的工具而已)
这里之所以使用Docker安装Jenkins,是因为我不想在物理机上安装jenkins(毕竟只是一个工具),而虚拟机已经启动了三台,再创建就会影响我的物理机性能,所以这里直接使用物理机的Docker跑Jenkins,用完就删了。 安装步骤参考我的 基于Docker安装Jenkins
免密访问k8s集群的master服务器 参考我的 Linux配置免密登录 ,这里需要进入jenkins容器内部进行操作
配置github的ssh key访问
在jenkins创建一个自由风格的软件->填写仓库地址->编写如下脚本
一个简单的CI/CD系统就搭建完成了,后面可以把更多的重心放在k8s资源文件的编写上,理解yaml中各节点的含义也是一项不小的工作量,搞清楚k8s的各个模块,对服务端的架构设计是有益的。

yum安装报错Error in PREIN scriptlet in rpm package

在安装jenkins的时候一直失败。报错内容是

问题的关键是 PREIN scriptlet ,就是preinstall scriptlet,这是rpm在安装前执行的一段sh脚本,为安装创建相应的文件夹什么的。

上面的三个No such file or directory显然就是,这三个文件夹没有被创建好。

我们看看preinstall出了什么问题。

关于这两条命令在做什么应该很明了吧。我们找一下和那三个文件夹有关的部分。

这问题就很明白了,结合前面的stat报错,明确了就是这段报错误。这段的意思是,如果 /etc/sysconfig/jenkins 存在,执行下面一系列操作,应该是为了重复安装写的。

一看这个 /etc/sysconfig/jenkins ,真的有,是昨天看教程的时候看漏了一步给加上去的...这就很搞笑了

出了问题,搞明白工具在干嘛是最好的解决方法

Ubuntu 命令教程全录

ubuntu如何卸载apt-get install安装的软件

ubuntu下使用apt方式安装、卸载nginx

ubuntu下apt-get安装及卸载jdk

linux命令(5)Ubuntu apt-get安装卸载命令

ubuntu下apt-get安装和彻底卸载mysql

ubuntu 下 apt-get来安装tomcat的几个问题

ubuntu中安装和卸载apache2

Ubuntu中安装和删除Tocmat6

Ubuntu安装VSCode

linux apt-get安装和卸载命令

如何在Ubuntu 14.04上安装与卸载PostgreSQL

Haproxy在linux下安装配置,以及开日志

【Ubuntu16】apt-get安装MariaDB

ubantu 安装erlang18.0 记录

如何重新安装boost,在ubuntu下

nodeJs express 安装与升级,ubuntu 卸载apt 包管理的软件

ubuntu10.10下network-manager的删除与安装

Ubuntu下boost库的编译安装步骤及卸载方法详解

Ubuntu 下面到 apt-get 命令安装和删除deb软件包

xrdp登录失败,最终卸载xrdp,重新安装解决

Ubuntu14.04 下apt-get安装Code::Blocks

ubuntu 16.04安装redis的两种方式(apt和编译方式)和卸载

ubuntu下安装go语言;sublime+gocode搭建;go的卸载和环境变量配个人.bashrc;2空位3个网

Ubuntu 16.04 apt终端命令的使用以及软件的安装和卸载

Ubuntu 下配置protobuf

Ubuntu apt-get彻底卸载软件包

ubuntu12.04上的mongodb卸载

Ubuntu16.04 python3.5安装 / 卸载opencv

在Ubuntu14.01 LTS下安装OpenMPI

Ubuntu如何重新安装g++编译器

Ubuntu14.04 下apt-get安装Code::Blocks

ubuntu 16.04安装redis的两种方式(apt和编译方式)和卸载

ubuntu下安装go语言;sublime+gocode搭建;go的卸载和环境变量配个人.bashrc;2空位3个网

Ubuntu 16.04 apt终端命令的使用以及软件的安装和卸载

Ubuntu 下配置protobuf

Ubuntu apt-get彻底卸载软件包

ubuntu12.04上的mongodb卸载

Ubuntu16.04 python3.5安装 / 卸载opencv

在Ubuntu14.01 LTS下安装OpenMPI

Ubuntu如何重新安装g++编译器

Ubuntu14.04 下apt-get安装Code::Blocks

ubuntu 16.04安装redis的两种方式(apt和编译方式)和卸载

ubuntu下安装go语言;sublime+gocode搭建;go的卸载和环境变量配个人.bashrc;2空位3个网

Ubuntu 16.04 apt终端命令的使用以及软件的安装和卸载

Ubuntu 下配置protobuf

Ubuntu apt-get彻底卸载软件包

ubuntu12.04上的mongodb卸载

Ubuntu16.04 python3.5安装 / 卸载opencv

在Ubuntu14.01 LTS下安装OpenMPI

Ubuntu如何重新安装g++编译器

ubuntu下内核的升级与卸载

Ubuntu 环境下,卸载Nginx后重装失败的处理方法

Ubuntu 安装MTP驱动访问安卓设备

ubuntu搭建libevent环境

卸载VMware Tools、重新安装VMware Tools、Ubuntu无法共享文件夹

Ubuntu 16.04 apt终端命令的使用以及软件的安装和卸载

ubuntu apt-get卸载软件无法卸载干净的解决方法(ubuntu卸载apache)

ubuntu 安装/卸载redis

ubuntu下virtualbox的安装、卸载

ubuntu14.04 安装及卸载opencv2.4.9

ubuntu下内核的升级与卸载

Ubuntu 环境下,卸载Nginx后重装失败的处理方法

Ubuntu 安装MTP驱动访问安卓设备

ubuntu搭建libevent环境

卸载VMware Tools、重新安装VMware Tools、Ubuntu无法共享文件夹

Ubuntu 16.04 apt终端命令的使用以及软件的安装和卸载

ubuntu apt-get卸载软件无法卸载干净的解决方法(ubuntu卸载apache)

ubuntu 安装/卸载redis

ubuntu下virtualbox的安装、卸载

ubuntu14.04 安装及卸载opencv2.4.9

ubuntu下内核的升级与卸载

Ubuntu 环境下,卸载Nginx后重装失败的处理方法

Ubuntu 安装MTP驱动访问安卓设备

ubuntu搭建libevent环境

卸载VMware Tools、重新安装VMware Tools、Ubuntu无法共享文件夹

Ubuntu 16.04 apt终端命令的使用以及软件的安装和卸载

ubuntu apt-get卸载软件无法卸载干净的解决方法(ubuntu卸载apache)

阅读更多 >>>  电脑网络连接域名,网域名称是什么意思

ubuntu 安装/卸载redis

ubuntu下virtualbox的安装、卸载

ubuntu14.04 安装及卸载opencv2.4.9

在linux 系统下如何卸载go 语言

Ubuntu中安装ZMQ以及pyzmq

Ubuntu下安装GTK的三种方法

ubuntu安装及卸载cuda

Ubuntu 16.04 安装 Java JDK

Ubuntu通过apt-get命令安装java jdk6

ubuntu16.04卸载mysql5.7安装mysql5.6

Ubuntu下安装Jenkins

ubuntu安装groovy

ubuntu卸载已经安装的软件包

如何快速的学好java?

随着社会信息的发展,Java技术已经无处不在,无论是手机软件、手机Java游戏还是电脑软件等,只要你使用到电子产品就会碰到和Java有关的东西,更多的企业正采用Java语言开发网站,而在所有程序员中,Java开发工程师就占据20%的比例,不可否认,Java语言有着广泛的行业发展前景,它在行业中的影响力已是不可避免的。
如何快速的学好java?学java无非就是自学和报班这两种方式,至于java自学还是报班好,这个还是需要根据您自身的条件来判断的。如果您自控能力、自学能力且有基础那自学好。反之报班好。下面跟您说一下java自学与报java培训班学的不同之处,供您参考。
Java自学:好的地方是省钱,不太好的就是学习时间不确定,学习周期很容易拉长,学习不够系统,对于没有基础的或者自控力不强的人来说,也容易导致半途而废。遇到不懂的问题没有人解答,难以往下进行学习,而且容易学的半知半解。
Java培训:学习时间相对较短,整体学习比较全面,学习内容也比较集中。专业老师按照大纲进行系统授课,在学习中遇到技术问题能够快速得到解决,同时还有专项的练习相对于自学,学习气氛更加浓厚,跟同期学员对问题的探讨,对拓展思路有很大的帮助。并且像一些专业的培训机构,培训完后有相应的就业课程和就业指导,比起自学来说求职胜算更大。
如果您学Java是因为单纯的兴趣爱好,自学是一个很不错的选择。但如果您想通过学Java技术转行的话,那么最好是选择参加Java培训班。当然,可能现在的您感觉参加Java培训班学费很贵,但是对于可以通过学习找到工作,还是比较值得的。
总之,零基础小白学习JAVA要懂得一个道理,学习和掌握java相关技术也非一朝一夕之事,不可能一蹴而就,除了知识理论的学习,还需要后续更深入的学习和大量的实践,所以需要你一个良好的学习规划。
另外,所有语言的知识体系分为三大块:
数据存储 (内存,文件,数据库,分布式,集群, 关系型 ,非关系型 。。)
业务逻辑 (业务需求,语言语法,算法,类库框架,性能优化等)
信息交互(展示)(多端,app,小程序,公众号,移动端,pc端,web开发等。。)
这三块知识作为学习来说,可以有侧重,但是不能有某一块完全不懂。
java学习路线
先学习j2se
要学习j2ee就要先学习j2se,刚开始学习j2se先建议不要使用IDE,然后渐渐的过渡到使用IDE开发,毕竟用它方便嘛。学习j2se推荐两本书,《java2核心技术一二卷》,《java编程思想》,《java模式》。其中《java编程思想》要研读,精读。这一段时间是基本功学习,时间会很长,也可能很短,这要看学习者自身水平而定。
不要被IDE纠缠
在学习java和j2ee过程中,你会遇到五花八门的IDE,不要被他们迷惑,学JAVA的时候,要学语言本身的东西,不要太在意IDE的附加功能,JAVA编程在不同IDE之间的转换是很容易的,过于的在意IDE的功能反而容易耽误对语言本身的理解。目前流行的IDE有jbuilder,eclipse和eclipse的加强版WSAD。用好其中一个就可以了,推荐从eclipse入手j2ee。因为Jbuilder更适合于写j2se程序。
选择和学习服务器使用配置
当你有了j2se和IDE的经验时,可以开始j2ee的学习了,web服务器:tomcat,勿庸置疑,tomcat为学习web服务首选。而应用服务器目前主要有三个:jboss、weblogic、websphere。有很多项目开始采用jboss,并且有大量的公司开始做websphere或weblogic向jboss应用服务器的移植(节省成本),这里要说的是,学习tomcat和jboss我认为是首选,也是最容易上手的。学习服务器使用配置最好去询问有经验的人(有条件的话),因为他们或许一句话就能解决问题,你自己上网摸索可能要一两天(我就干过这种傻事),我们应该把主要时间放在学习原理和理论上,一项特定技术的使用永远代替不了一个人的知识和学问。
学习web知识
如果你是在做电子商务网站等时,你可能要充当几个角色,这是你还要学习: .'l:8SxT?L
html,可能要用到dreamwave等IDE。 ZO(T u%xU
Javascript,学会简单的数据校验,数据联动显示等等
J2eeAPI学习
学习j2eeAPI和学习服务器应该是一个迭代的过程。
先学习jsp和servlet编程,这方面的书很多,我建立看oreilly公司的两本《jsp设计》和《java servlet编程》,oreilly出的书总是那本优秀,不得不佩服。
学习jdbc数据库编程,j2ee项目大多都是MIS系统,访问数据库是核心。这本应属于j2se学习中,这里拿出来强调一下。
学习jndi api,它和学习ejb可以结合起来。
学习ejb api,推荐书《精通ejb》
经过上面的这些的学习,大概可以对付一般的应用了。
有人说跟着sun公司的《j2ee tutorial》一路学下来,当然也可以。
学习ejb设计模式和看代码(最重要)
设计模式是练内功,其重要性可以这么说吧,如果你不会用设计模式的话,你将写出一堆使用了ejb的垃圾,有慢又是一堆bug,其结果不如不用ejb实现(ejb不等于j2ee)
无论学习什么语言,都应该看大量代码,你看的代码量不到一定数量,是学不好j2ee的
目前有很多开源的工程可以作为教材:
jive论坛
petstore sun公司
dune sun公司
等等,研读一个,并把它用到自己的工程中来。
J2ee其他学习
当你渐渐对j2ee了解到一定深度时,你要开始关注当前领域中的一些技术变化,J2ee是一块百家争鸣的领域,大家都在这里提出自己的解决方案,例如structs,hiberate,ofbiz等等,学习这些东西要你的项目和目标而定,预先补充一下未尝不可,但不用涉及太深,毕竟学习原理和理论是最最重要的事。
目前常见j2eeAPI
JavaServer Pages(JSP)技术1.2
Java Servlet技术2.3
JDBC API 2.0
Java XML处理API(JAXP)1.1
Enterprise JavaBeans技术2.0
Java消息服务(JMS)1.0
Java命名目录接口(JNDI)1.2
Java事务API(JTA) 1.0
JavaMail API 1.2
JavaBeans激活架构(JAF)1.0
J2EE连接器体系结构(JCA)1.0
Java认证和授权服务(JAAS)1.0
学习上面的某些API要以你的项目而定,了解所有他们总之是有好处的
上面印证了大家说的一句话,java语言本身不难学,但是技术太多,所以学java很费劲。回想一下,基本上每个初学者,在刚学习java的时候可能都会问别人这么一句话,你怎么知道的哪个方法(api)在哪个包里的?呵呵,无他,唯手熟尔。
======================================
J2EE总体的学习计划
第一部分:
JAVA语言基础知识。包括异常、IO流、多线程、集合类、数据库。(切记基础知识一定要时时刻刻巩固)
要求:对java的封装,生命周期等有一定的了解;
异常------掌握try-catch-finally的使用
IO流------掌握字节流、字符流和对象序列化的处理.。熟练使用各种输入、输出流类(InputStream、 OutputStream、FileInputStream、FileOutputStream、DataInputStream、 DataOutputStream、BufferedInputStream、BufferedOutputStream、Reader、Writer、 InputStreamReader、OutputStreamWriter、BufferReader、BufferedWriter、 ObjectInputStream、ObjectOutputStream)。
多线程-------掌握多线程实现的两种实现方法,分别是继承Thread类与实现Runnable接口。理解线程间的同步与互斥。
集合类-------掌握Set、Collection、Map、List、Iterator、Enumeration接口的使用,掌握HashSet、ArrayList、Vector、HashMap、HashTable类的使用。
数据库-------掌握JDBC API的使用,包括DriverManager类、Connection接口、Statement类和接口、PreparedStatement接口、ResultSet接口。
还有了解java反射机制,对Java1.5的新功能必须有了解与使用,泛型等。.
另外-------理解Unicode、GB2132、GBK、UTF-8、ISO8859编码方式。
参考:《Java编程思想》、张孝祥视频教学。
第二部分:
JAVA网络编程。包括Socket、RMI、HTML、XML、JSP、JavaBean、Servlet。
要求:Socket--------了解java.io包中的套接口类和服务器套接口类的使用。
RMI--------掌握RMI基本工作原理、掌握定义远程服务接口类、远程接口类、客户端调用类和部署、编译RMI应用程序。
HTML--------了解HTML语言的语法、各种标签。
JSP-------掌握JSP2.0语法、隐含对象、EL、JSTL1.1、JSP自定标签。
JavaBean-------理解JavaBean的特点和事件模型。
XML--------了解XML语言的语法、DTD、Schema。
Servlet---------掌握HTTP协议、Servlet工作过程、Servlet会话跟踪、Servlet过滤器、Serlvet事件侦听器、配置web.xml。
UML-------掌握用例图、类图、活动图、顺序图、状态图。
Aglet-------学会安装使用tahiti服务器,掌握Aglet API。[以后再学,在彭老师的项目才会用到]
开发工具------掌握Rational Rose 、ant 、cvs版本控制、myeclipse、dreamweave等开发工具使用。
另外-------学习过程中学会使用Tomcat、JBoss/Weblogic服务器
参考书:《JSP2.0技术手册》林上杰编著;
《深入体会Java Web开发内幕---核心基础》
在JSP上不要花太多时间,在时间放在servlet多一些.
第三部分:
流行MVC架构和Java对象持久化技术。包括webwork、Spring、Hibernate
要求:MVC-------理解MVC设计模式、处理过程。
webwork-------理解webwork实现MVC的机制、工作流程。掌握配置webwork应用、webwork控制器组 件、webwork应用的国际化、异常处理、webwork标签库。(其实很多遗留系统用的是Struts,但现在越来越少人用了,所以我鼓励你们学 webwork,但要必须要了解一下Struts)
Spring-------掌握控制反转(IoC)、面向方面编程(AOP)、事务服务(JTA)、邮件服务(JavaMail)、持久化服务(DAO、JDBC、ORM)、远程服务(RMI)。
Hibernate--------理解ORM,掌握映射对象标识符、映射关系(一对多、多对多、一对一)、映射类型、检索策略、检索方式、数据库事务与并发、管理Hibernate的缓存。
学习过程:先学习webwork2,再学习Hibernate,最后学Spring。
下面的东西有时间了解一下:
测试/敏捷开发-----关注测试,掌握Junit单元测试框架,以及现在两个流行的mock工具EasyMock/JMock,熟 悉其中一种。(提示:测试非常重要,有效的测试可以减少很多开发的时间,当然刚开始觉得不耐烦,好像没有必要写测试代码,一定要说服自己尝试写测试代码, 或多或少的)
UNIX系统------了解最主要的shell编程,及主要的相关的命令行操作.
AJAX-----了解基本的javascript,csss,以及ajax常用的用法,还有JSON框架.
(ajax的框架太多,但不要花太多时间去学,因为你不知道公司用不用ajax,而且用的那一框架你没有办法知道,所以懂最基础就可以了)
参考书:《webwork in action中文版》
《精通Struts》、《精通Hibernate》孙卫琴著,
《Spring技术手册》林信良著
《JUnit in action中文版》Vincent Massol著的
书籍只是用来入门的,其他的工具必须多上英文网址,尽量多看一些英文文档,提高自己的水平,同时有空的时候也可以下载的一些开源项目的文档。
最后一句话:无论什么技术,学了不要以为自己多牛,学技术只是为了更好提高自己做项目的能力以及提升自身的水平。你做的项目效果怎样才能最终看出你自身的水平。
Java前景是很不错的,像Java这样的专业还是一线城市比较好,师资力量跟得上、就业的薪资也是可观的,
0基础学习Java是没有问题的,关键是找到靠谱的Java培训机构,你可以深度了解机构的口碑情况,问问周围知道这家机构的人,除了口碑再了解机构的以下几方面:
1. 师资力量雄厚
要想有1+1>2的实际效果,很关键的一点是师资队伍,你接下来无论是找个工作还是工作中出任哪些的人物角色,都越来越爱你本身的技术专业java技术性,也许的技术专业java技术性则绝大多数来自你的技术专业java教师,一个好的java培训机构必须具备雄厚的师资力量。
2. 就业保障完善
实现1+1>2效果的关键在于能够为你提供良好的发展平台,即能够为你提供良好的就业保障,让学员能够学到实在实在的知识,并向java学员提供一对一的就业指导,确保学员找到自己的心理工作。
3. 学费性价比高
一个好的Java培训机构肯定能给你带来1+1>2的效果,如果你在一个由专业的Java教师领导并由Java培训机构自己提供的平台上工作,你将获得比以往更多的投资。
希望你早日学有所成。
首先我要给你说的是,任何一个东西从零到精通,都是需要一个过程的,都是需要我们慢慢的去渡过这个阶段,我们才能慢慢的掌握,其次,毕竟这是一门编程语言,你学精通就可以拿到一份不错的高薪工作,所以说,对于任何一个零基础的小白来说,都是比较难的。
所以零基础小白入门学习java,你一定要规划好自己的学习方法和学习方式。
选择机构重点要多试听,多比较,毕竟每个人接受信息的方式不一样,老师技术再好,如果不能有效的传达给学生,那对学生来说也是没用的。所以建议试听后找到适合自己的最重要。
学习Java的话,可以考虑尚学堂啊,尚学堂就是从Java起家的,已经创办14年。
因为尚学堂的口碑和学习效果都是可以保证的,我就是在朋友的推荐下去尚学堂学习的,已经学完找到工作。
尚学堂有领先的、实战化的课程体系。独立的项目开发部,承接国内很多企业的项目。
有超强的师资力量,老师都是业内大牛,8年以上的授课经验可以讲得更加容易理解,学习更有效率。
国内第一的每周5-20家上门企业招聘;双保险式的就业服务;免费提供猎头服务。
全国唯一”从零到百万年薪”的服务体系
有这么多的优势,学习编程肯定是去尚学堂学习呀,可以学习到技术,又有好的就业推荐。完全没有担心
还可以参加参加线上百战程序员,边工作边学习
没有什么快速学习的办法,只能是自己一步一步脚踏实地的去学习。想要学习Java,还是需要自己去努力学下,没有什么特别好的办法。任何一个东西从零到精通,都是需要一个过程的,都是需要我们慢慢的去渡过这个阶段,我们才能慢慢的掌握。
从小白开始,没有任何编程基础,一般情况下,入门半年,上道半年,入行半年,这时就成为一名初级java程序员,可以正常在公司工作,总花要花一年半时间。
但也有更短,或更长时间的,不能一概而论,因人而异。再短,也不太可能,我是说不太可能,在3个月之内全部搞定,然后进公司做软件。
想缩短路径参加线下培训班,可以快速的进入公司做项目
如果想系统全面学习Java,可以去搜一下像南昌雅腾一样的老师面授的小班课,一对一教学解决你不懂的问题。希望对你有帮助。
好的学习方法对于你的学习至关重要,对于每一个刚开始学习Java的程序员新人来说,都希望有一种快速学习的方法,漫无目的和长时间的学习很容易消耗你的信息,最后学的混乱,也没有实质性的收获,以至于学习到最后越来越焦虑。
初学者想要快速学习Java技术的心情大家都可以理解,但是有一句话:欲速则不达。盲目的追求快并不能达到理想的学习效果,问题来了,那么作为Java新人如何快速的学习Java编程呢?
新人学习进步非常缓慢,是因为很多的Java难题自己都没有办法解决,身边没有懂技术的人,所以只能一直在网上苦苦查找答案,就算你找到了解答,但是也不一定能够保证是对的。
初学者如何快速学Java?
方法1:Java初学者可以加入一个比较好的Java学习交流群,或者论坛,群不需要加的太多,在群中提出问题,有时候其他人的只言片语也可以帮助你走出困境。多与技术好的人交流沟通,你的技术才能变得更好。比如我的这个技术交流群
我创建的Java自学交流裙,前面输入是:926中间是:452最后连起来:303,需要java最新录制视频教程及学习路线,开发工具,jar包。源码等都可以找我,有遇见任何问题都可以随时来交流,只有不断的碰撞和交流,我们才能发现解决自己的问题,以此取长补短。
方法2:对于初学者来说快速学Java,还有一个有效的办法就是收集有用代码和工具,一些代码是可以重复使用的,随着你Java代码的练习越来越多,你对Java代码编写越来越得心应手,你就会发现你之前搜集的有用的代码和工具,大大节省了你敲代码的时间,比如工具类的:StringUtils(字符串工具),DBUtils(数据库工具)等等。
方法3:养成良好的记录笔记的习惯,因为在快速学习Java的过程中,记录显得尤为重要,比如在Java学习中,把你碰到的问题,或者突然间的奇思妙想记录下来,不时翻翻,你会很清楚你一路以来的学习历程是怎样的。
它不仅是你Java学习的成长日记,更是鼓励支持你坚持学Java的好法宝,还可以成为你Java学习的动力源泉。
好的学习方法再加上良好的习惯,你会发现学习Java也不是一件多么困难的事情。当然,以上这些方法适用于那些有足够时间学习,或者是有较强自控力的人,如果你面临的就业,面临着经济问题,很难有一颗平常心去好好学习。
总之,学好Java技术才你才能享受生活带来的乐趣,为了你的梦想,努力学习吧。
有哪些适合java初学者的项目?
20个当时初学时的Java 练手项目,结尾提供项目源码。
需要可以群文件自行下载
请点击输入图片描述

小白如何学习Java?

零基础小白学习JAVA要懂得一个道理,学习和掌握java相关技术也非一朝一夕之事,不可能一蹴而就,除了知识理论的学习,还需要后续更深入的学习和大量的实践,所以需要你一个良好的学习规划。
随着社会信息的发展,Java技术已经无处不在,无论是手机软件、手机Java游戏还是电脑软件等,只要你使用到电子产品就会碰到和Java有关的东西,更多的企业正采用Java语言开发网站,而在所有程序员中,Java开发工程师就占据20%的比例,不可否认,Java语言有着广泛的行业发展前景,它在行业中的影响力已是不可避免的。
那小白如何学习java?学java无非就是自学和报班这两种方式,至于java自学还是报班好,这个还是需要根据您自身的条件来判断的。如果您自控能力、自学能力且有基础那自学好。反之报班好。下面跟您说一下java自学与报java培训班学的不同之处,供您参考。
Java自学:好的地方是省钱,不太好的就是学习时间不确定,学习周期很容易拉长,学习不够系统,对于没有基础的或者自控力不强的人来说,也容易导致半途而废。遇到不懂的问题没有人解答,难以往下进行学习,而且容易学的半知半解。
Java培训:学习时间相对较短,整体学习比较全面,学习内容也比较集中。专业老师按照大纲进行系统授课,在学习中遇到技术问题能够快速得到解决,同时还有专项的练习相对于自学,学习气氛更加浓厚,跟同期学员对问题的探讨,对拓展思路有很大的帮助。并且像一些专业的培训机构,培训完后有相应的就业课程和就业指导,比起自学来说求职胜算更大。
如果您学Java是因为单纯的兴趣爱好,自学是一个很不错的选择。但如果您想通过学Java技术转行的话,那么最好是选择参加Java培训班。当然,可能现在的您感觉参加Java培训班学费很贵,但是对于可以通过学习找到工作,还是比较值得的。
总之,决定了要学习Java技术就不要犹豫,要行动起来,时间可不等人。不管是自学也好还是参加Java培训也罢,都要进行实际了解才行。
Java的学习路线是什么样的呢?下面,给大家介绍一下。
第一阶段:Java 基础以及 Web 开发基础—小程序项目阶段。让学习者可掌握Java 基本面向对象知识、Java 常用集合的使用、JDBC 与 MySQL 基础、HTML/CSS/JavaScript 前端基础技术、 Servlet 编写服务端程序等,同时熟练使用 IDEA 开发工具,能实现简单的小程序;
第二阶段Java 高级基础 SSM 前端框架 代码管理 持续集成,是进阶阶段。让学习者可以深入理解 Java 面向对象相关知识点,可以胜任Java 初级软件工程师、Web 初级前端开发工程师、初级 BI 工程师等岗位。
第三阶段微服务与分布式解决方案。让学习者掌握Linux、Docker、Vue、SpringBoot、Shiro、分布式事务的使用等,可以熟练使用Docker 完成项目部署,胜任Java 中级开发工程师等岗位;
第四阶段大型互联网解决方案。让学习者掌握JUC、Zookeeper、Dubbo、MySQL 高级、MyCat和小程序的开发等内容,可以胜任Java 高级软件工程师等岗位。
其实,对于初学者而言,除了要在学习过程中打牢基础之外,实战项目经验的积累也非常重要,毕竟我们学习Java的目的就是为了学成后能更好的就业,而想要成为符合企业需求的Java开发工程师,那么,项目实战经验必不可少。
1.通过菜鸟教程等在线学习网站学习JAVA
2.购买JAVA语言的基础类书籍,跟着书中流程和案例一步步走
3.参加JAVA相关培训课程
4.参加JAVA类型的竞赛,在比赛中学习进步
Java虽然比C++要好学一些,但相比Web和Python来说,Java还是要复杂很多的,如果是非科班0基础小白,自学起来并没有那么容易。
学习java中会遇到很多难点,很多复杂嵌套的逻辑,有时候单纯靠自己,是无法理解这些技术难点的。有时候写完一段程序,代码中出现一个Bug,可能自己想一整天也想不出是哪里出错了。这时候,如果旁边有个高人帮你指点,效果就好很多。
同时,自学过程中,写出来的代码会有很多Bug,如果不能及时解决,长此以往会对学习热情造成打击,逐渐放弃学习。
比较重要的是,现在大部分公司招聘java开发人员,注重的是项目经验和工作经验,可以说初学者一般无法独立参与到某个项目的开发中,更不要谈项目经验了,因此,0基础小白想通过自学找到工作难度比较大。
如果有个经验丰富的人能系统性地带着你学,带着你做一些简单的项目,由浅入深,能帮你把很多不懂的复杂逻辑讲解清楚,这比起自学肯定要事半功倍,会节省很多不必要的时间。
  制定计划
  既然想在短时间学好一个技术,那么就应该运筹帷幄,如果你连一个明确的规划都没有,那很难说你能比别人做的更好,用更短的时间学好应该掌握的那些技术,一个好的规划非常重要,有很多人学习的时候就很混乱,结果必然不好。能每天按照计划完成的人并不多,这需要你个人的自律性,如果自己懒惰,神仙都救不了。你每天应该学习多少知识点,应该如何巩固,你要很明确。
首先零基础的你要了解什么是Java?有哪些优势?1995年,Oak语言更名为Java语言(以下简称为Java)。Java的取名有一个趣闻:据说有一天,几位Java成员组的会员正在讨论给这个新的语言取什么名字,当时他们正在咖啡馆喝着Java(爪哇)咖啡。有一个人灵机一动,说就叫Java,并得到了其他人的赞赏。于是,Java这个名字就这样传开了。
Java应用如此广泛是因为Java具有多方面的优势。其特点如下:(1)面向对象。Java自诞生之时就被设计成面向对象的语言,而C++语言是一种强制面向对象的语言。面向对象可以说是Java最重要的特性,它不支持类似C语言那样的面向过程的程序设计技术。Java支持静态和动态风格的代码重用。
(2)跨平台。对于Java程序,不管是Windows平台还是UNIX平台或是其他平台,它都适用。Java编辑器把Java源程序编译成与体系结构无关的字节码指令,只要安装了Java运行系统,Java程序就可在任意的处理器上运行。这些字节码指令由Java虚拟机来执行,Java虚拟机的解释器得到字节码后,对它进行转换,使之能够在不同的平台运行。
(3)直接支持分布式的网络应用。除了支持基本的语言功能,Java核心类库还包括一个支持HTTP、SMTP和FTP等基于TCP/IP协议的类库。因此,Java应用程序可凭借URL打开并访问网络上的对象,其访问方式与访问本地文件系统几乎完全相同。在Java出现以前,为分布式环境尤其是Internet提供动态的内容无疑是一项非常宏伟、难以想象的任务,但Java的语言特性却使我们很容易地达到了这个目标。
(4)安全性和健壮性。Java致力于检查程序在编译和运行时的错误,类型检查帮助检查出许多开发早期出现的错误。Java支持自动内存管理,这不但让程序员减轻了许多负担,也减少了程序员犯错的机会。Java自己操纵内存减少了内存出错的可能性。Java还能够检测数组边界,避免了覆盖数据的可能。在Java语言里,指针和释放内存等功能均被抛弃,从而避免了非法内存操作的危险。
接下来就看一下java的学习路线以及学习方法吧!首先是学习路线:
第一阶段JavaEE基础:Java基础语法、面向对象、核心类库、集合、异常、IO、线程、JDK新特性
第二阶段JavaWeb开发:前端技术、数据库、JAVA数据库操作、软件服务器及服务器相关技术、动态网页JSP、AJAX
第三阶段Java高级框架:SpringMVC、MyBatis、Spring、MySQL高级、Linux&Redis&Nginx、Maven、中公MIS权限系统
第四阶段大型微服务分布式项目实战:SpringBoot、SpringCloud、Git、Dubbo、Zookeeper、AngularJS、Spring Security、BCrypt加密、FastDFS、分布式事务处理、Redis Cluster、Solr、SolrCloud、MongoDB简介、MyCat、Docker、Jenkins、大型电商实战、百战商城等
第五阶段项目设计分析:医疗管理项目
其次是java学习方法:第一步:对于Java的基本认知很多同学刚刚入门学习java,看书,或者看视频。这个阶段是积累理论知识的时候,相对比较容易,一个小知识点,信息量少,跟着老师的思路走就可以。
Java零基础入门视频教程推荐:
Java300集零基础适合初学者视频教程_Java300集零基础教程_Java初学入门视频基础巩固教程
本套课程是由高淇老师开讲的Java300集! 为初学者而著! 适合准备入行开发的零基础员学习Java。基于最新JDK13、IDEA平台讲解的,视频中穿插多个实战项目。每一个知识点都讲解的通俗易懂,由浅入深。不仅适用于零基础的初学者,有经验的程序员也可做巩固学习。
在这个阶段,很多同学学得很快,感觉编程好简单。
随着学习的深入,大多数同学会产生混乱。 为什么? 所有的技术背后都有原理,前面都有应用场景,不同应用场景有不同使用方法。 信息量逐级增加。
信息量逐级增大后,会有什么问题?
学到后面忘记前面。
新技术不断出现,感觉永远学不完。 丧失兴趣或信心。
第二步:理论知识学习这一过程尤为重要,毕竟这是学习Java的关键,而且,这一过程对于系统化的要求更高,如何循序渐进,有方式有目的的学习,将是小白更加快速的学懂Java的关键。
理论知识阶段,更重要的是理解原理和规律, 知识点的细节记不住可后面查找。学习方法更重要的是 交流讨论,理解和总结。 多问为什么是关键!
第三步、真实实训项目、培养实操能力一个项目从0到1的过程才是最宝贵的,也是初学者提升最大的部分。 但从书本或者视频中,很难学习这个过程。
技术的应用能力换句话说是 技术的分解排序能力, 当遇到一个需求,该如下实现?
基本的思路是 把需求分解成原子操作。 原子操作代表开发当中的基本操作,也就是在知识点当中学到的,比如数据库操作,sql,框架的基本使用等等。
如果能把需求分解为原子操作序列,开发完成只是时间快慢的问题。往往刚刚开始学习编程的同学,不善于或者懒得去思考。毕竟看视频是被动的,分析问题是主动思考。学习只是看看视频,本质上是思考的懒惰。
所以需要找大量的练习和项目案例进行实践!!!
生命是无止境的,学习不止,每天都“强迫”自己取得一点进步。随着时间的流逝,成就将不可避免地出现。

阅读更多 >>>  阿里云服务器怎么看是ssh还是linux

网站数据信息

"jenkins菜鸟教程,Jenkins 打包遇到的问题及解决"浏览人数已经达到20次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:jenkins菜鸟教程,Jenkins 打包遇到的问题及解决的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!