Java工程师就业前景
Java工程师就业前景
2015年,在美国、加拿大、澳大利亚、新加坡等发达国家和中等发达国家,
JAVA软件工程师年薪均在4—15万美金,而在国内,JAVA软件工程师也有极好的工作机会和很高的薪水。
在未来5年内,合格软件人才的需求将远大于供给。JAVA软件工程师是目前
国际高端计算机领域就业薪资非常高的一类软件工程师。
一般情况下的JAVA软件工程师是分四个等级,从软件技术员到助理软件工程
师,再到软件工程师,**后成为高级软件工程师。
根据IDC的统计数字,在所有软件开发类人才的需求中,对JAVA工程师的需
求达到全部需求量的60%—70%。同时,JAVA软件工程师的工资待遇相对较高。
通常来说,具有3—5年开发经验的工程师,拥有年薪15万元是很正常的一个
薪酬水平。80%的学生毕业后年薪都超过了8万元。
根据专业数据分析,由于我国经济发展不均衡因素,JAVA软件工程师工资待
遇在城市之间的差异也较大,一级城市(如北京、上海等),初级软件工程师的待遇大概在4000-6000之间,中级软件工程师的待遇在6000—8000之间,
而高级软件工程师的待遇基本破万。
流行框架
-
01Struts2
-
1.Struts2流程
-
2.值栈与ONGL
-
3.Struts2标签库
-
4.Struts2模型驱动原理
-
5.Struts2声明式异常处理
-
6.Struts2类型转换&自定义类型转换
-
7.Struts2拦截器原理&自定义拦截器
-
8.Struts2源码分析&运行原理
-
02Hibernate
-
03Spring
-
04SpringMVC
-
1.SpringMVC配置&运行流程
-
2.SpringMVC数据绑定
-
3.模型处理&@ModelAttribute
-
4.RestFulCRUD
-
5.表单标签&静态资源处理
-
6.数据转换&格式化&JSR303数据校验
-
7.HttpMessageConverter
-
8.Ajax&国际化&文件上传**
-
9.异常处理
-
10.整合&父子容器
-
05MyBatis
-
06JPA
-
1.JPA技术体系
-
2.JPA注解
-
3.JPA相关API
-
4.JPA映射
-
5.JPQL
-
6.二级缓存
-
7.Spring整合JPA
-
07SpringData
-
1.SpringData快速入门
-
2.SpringData_Repository接口
-
3.Repository查询规范
-
4.@Query&@Modifying
-
5.CrudRepository
-
6.PagingAndSortingRepository
-
7.JpaRepository
-
8.JpaSpecificationExecutor
-
9.自定义Repository
-
08Maven
-
1.Maven环境搭建
-
2.Maven构建&自动化构建
-
3.本地仓库&中央仓库
-
4.maven创建web工程
-
5.pom.xml、依赖管理
-
6.坐标、依赖、生命周期等
-
7.eclipse下的maven使用
-
8.继承&聚合
-
9.maven构建SSH/SSM应用
-
10.自动部署&持续集成&持续部署
-
09SVN
-
1.SVN简介
-
2.SVN服务器搭建
-
3.SVN创建版本库
-
4.Eclipse整合svn插件
-
5.使用SVN更新提交
-
6.SVN仓库分析
-
7.SVN协同修改&冲突解决
-
8.SVN权限管理
-
9.SVN时光机
-
10.TortoiseSVN
-
10Shiro
-
1.Shiro入门
-
2.Spring集成Shiro
-
3.Shiro工作流程
-
4.权限URL配置
-
5.认证流程&认证Realm
-
6.密码比对,MD5&盐值加密
-
7.授权流程
-
8.标签&权限注解
-
9.会话管理、SessionDao
-
10.缓存
-
11.实现”记住我”
-
11Activiti5
-
1.工作流&工作流引擎
-
2.BPMN2.0规范
-
3.Activiti5框架表结构
-
4.Activiti5核心组件&服务接口
-
5.Activiti5插件安装&整合Spring
-
6.流程定义
-
7.流程实例&任务&历史
-
8.任务领取&流程变量
-
9.排他网关&并行网关
-
12WebService
-
1.WebService简介
-
2.WebService主流框架
-
3.cxf的使用
-
4.SOAP协议
-
5.WSDL讲解
-
6.JAX-WS
-
7.与Spring整合
-
8.JAXB
-
9.JAX-RS
-
10.支付接口原理
-
13Linux
-
14Redis
-
15Git&Git Hub
-
1.Git安装配置
-
2.Git本地库搭建
-
3.Git常用操作命令
-
4.Github注册与配置
-
5.Github与Git协同办公
-
6.TortoiseGit安装配置
-
7.Egit操作push/pull,
-
8.Git工作流
-
9.集中式&GitFlow&Forking
-
16MySQL高级
-
1.MySQL架构组成
-
2.MySQL备份和恢复
-
3.MySQL查询和慢查询日志分析
-
4.MySQL索引优化
-
5.MySQL存储引擎优化
-
6.MySQL锁机制优化
-
7.MySQL高可用设计
-
8.MySQL集群
-
17JVM原理
-
1.JVM简析
-
2.JVM组成结构
-
3.JVM堆、栈原理
-
4.JVM-Heap三区原理
-
5.JVM垃圾收集机制
-
6.堆内存调优
-
7.GC回收策略
-
8.GC三大算法
-
18Quartz
-
19Nginx
-
1.Nginx反向代理介绍
-
2.Nginx **和安装
-
3.Nginx 编译和启动、访问
-
4.在Linux下搭建Nginx集群
-
5.在Windows搭建Nginx集群
-
6.解决Session共享问题
-
20Java JUC 线程高级
android send email demo
>
本文代码基于下面几个类包:
compile ‘com.sun.mail:android-mail:1.5.5’
compile ‘com.sun.mail:android-activation:1.5.5’
封装一个工具类:
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.mail.Message;
import javax.mail.PassWordAuthentication;
import javax.mail.session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.security.Security;
import java.util.PRoperties;
/**
* https://support.google.com/mail/answer/7104828?hl=en&ref_topic=3398031
*/
public class GmailSender extends javax.mail.Authenticator {
private String mailhost = "smtp.yeah.net";
// private String mailhost = "smtp.gmail.com";
private String user;
private String password;
private Session session;
static {
Security.addProvider(new JSSEProvider());
}
public GMailSender(String user, String password) {
this.user = user;
this.password = password;
Properties props = new Properties();
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.host", mailhost);
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "465");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.socketFactory.fallback", "false");
props.setProperty("mail.smtp.quitwait", "false");
session = Session.getDefaultInstance(props, this);
}
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(user, password);
}
/**
*
* @param subject 标题
* @param body 内容
* @param sender 发件人
* @param recipients 收件人
* @throws Exception
*/
public synchronized void sendMail(String subject, String body, String sender, String recipients) throws Exception {
try {
MimeMessage message = new MimeMessage(session);
DataHandler handler = new DataHandler(new ByteArrayDataSource(body.getBytes(), "text/plain"));
message.setSender(new InternetAddress(sender));
message.setSubject(subject);
message.setDataHandler(handler);
if (recipients.indexOf( , ) > 0)
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipients));
else
message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipients));
Transport.send(message);
} catch (Exception e) {
e.printStackTrace();
}
}
public class ByteArrayDataSource implements DataSource {
private byte[] data;
private String type;
public ByteArrayDataSource(byte[] data, String type) {
super();
this.data = data;
this.type = type;
}
public ByteArrayDataSource(byte[] data) {
super();
this.data = data;
}
public void setType(String type) {
this.type = type;
}
public String getContentType() {
if (type == null)
return "application/octet-stream";
else
return type;
}
public InputStream getInputStream() throws IOException {
return new ByteArrayInputStream(data);
}
public String getName() {
return "ByteArrayDataSource";
}
public OutputStream getOutputStream() throws IOException {
throw new IOException("Not Supported");
}
}
}
使用方法,特别简单:
GMailSender sender = new GMailSender("usernamexxxx@yeah.net", "passwordxxx");
sender.sendMail("标题",
"内容" content,
"formxxxx@yeah.net",
"toxxxx@yeah.net");
值得一提的是,发送邮箱需要进行一些安全设置,开启smtp等
相关推荐:
苏州JAVA培训 苏州JAVA培训班 苏州JAVA培训机构