编程语言
首页 > 编程语言> > Java架构师-十项全能

Java架构师-十项全能

作者:互联网

Download: Java架构师-十项全能

作者-\/ 307570512

Java架构师-十项全能-Java架构师职责

负责应用系统的规划和技术架构;
系统核心部分代码编写,技术难点攻关;
协助业务方梳理业务需求,提供业务规划方案、架构设计方案,并能根据方案展开研发工作。
制订和review技术规范;
指导研发工程师的产品开发和技术研究工作,解决各类技术疑难问题;
Java架构师-十项全能-Java架构师职责

Java架构师-十项全能- 如何成为Java架构师

打造高度深度广度兼备的全面技术人才
具备结合团队现状,合理演进架构的选型思维
具备结合项目现状,确保三高的架构设计能力
具备根据业务特点,找到架构根本解的业务抽象能力
具备面向未来进行架构设计的前瞻性能力

Java架构师-十项全能- Java架构师进阶实战

1 确认需求

架构师要懂得用户需求,理解用户真正想要什么,这使得架构师必须要和分析人员不断沟通,反复确认需求规格说明书,以此来保证他精准清楚用户需求。

项目经理刘先生在受访时说:「架构师会与很多人沟通,例如开发人员,例如我们项目经理,有时甚至是用户本身。架构设计的目的很明确,目的是什么呢?挖掘用户需求。」

2 系统分解

在架构师认可需求规格说明书后,架构师已明确用户需求是是什么,这时候便看架构师的分解能力了。

通过入职的全栈技术架构师周先生从「纵向分解」和「横向分解」和我们说明了系统分解是什么——

「一般分为纵向分解和横向分解,纵向分解是将整个系统分层,从而将整体系统分解成下一级的子系统与组件。横向分解是在系统分解成不同的逻辑层或服务后,对逻辑层进行分块,确定层与层之间的关系。」

3 技术选型

在系统分解后,架构师会最终形成软件整体架构,接下来,架构师的职责是技术选型。

「前端到底用瘦客户端还是富客户端呢?数据库是用MySQL还是MSSQL又或是Oracle呢?」架构师张先生在接受采访时说,「在了解用户需求后,分解完系统后,技术选型是非常重要的环节,提出各个方向,我再进行评估。不过,很多人都以为架构师是有决定权的,其实不是,架构师没有拍版的权力,决定由项目经理来做。 」

架构师在技术选型阶段会提供参考信息给项目经理,项目经理再从预算、进度、人力、资源等各方面情况来权衡,最终确认。

4 制定技术规格说明

如前文调查显示,架构师在项目开发过程中是「灵魂人物」,并且要具备协调组织能力和懂得人员分工。

在制定技术规格说明阶段,架构师要协调起所有的开发人员,架构师通常会用技术规格说明书与开发人员保持沟通,让开发人员能从各个视角去观测、理解他们负责的模块或者子系统,确保开发人员能够按照架构意图实现各项功能。

在了解架构师的职责后,再来看看架构师该具备什么能力才能成为一家公司中的「灵魂人物」。我们先来看一下

/**
 * 雇员:  先开发实体类===>自动生成数据表
 */
@Entity
public class Employee {

    private Integer id;

    private String name;

    private Integer age;

    @GeneratedValue
    @Id
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    @Column(length = 20)
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}
当然了,上面根据方法名来使用是有弊端的:

1)方法名会比较长: 约定大于配置

2)对于一些复杂的查询,是很难实现

比如:

    // where name like ?% and age <?
    public List<Employee> findByNameStartingWithAndAgeLessThan(String name, Integer age);

    // where name like %? and age <?
    public List<Employee> findByNameEndingWithAndAgeLessThan(String name, Integer age);

    // where name in (?,?....) or age <?
    public List<Employee> findByNameInOrAgeLessThan(List<String> names, Integer age);

    // where name in (?,?....) and age <?
    public List<Employee> findByNameInAndAgeLessThan(List<String> names, Integer age);
因此,对于这种情况下还是要写SQL语句简单得多。

    @Query("select o from Employee o where id=(select max(id) from Employee t1)")
    public Employee getEmployeeByMaxId();

    @Query("select o from Employee o where o.name=?1 and o.age=?2")
    public List<Employee> queryParams1(String name, Integer age);

    @Query("select o from Employee o where o.name=:name and o.age=:age")
    public List<Employee> queryParams2(@Param("name")String name, @Param("age")Integer age);

    @Query("select o from Employee o where o.name like %?1%")
    public List<Employee> queryLike1(String name);

    @Query("select o from Employee o where o.name like %:name%")
    public List<Employee> queryLike2(@Param("name")String name);

    @Query(nativeQuery = true, value = "select count(1) from employee")
    public long getCount();

...

标签:Java,name,age,十项全能,Integer,架构师,where,public
来源: https://blog.51cto.com/u_15215792/2853598