精华内容
下载资源
问答
  • 而编码的行为又是一个不太好量化的过程,同样一个功能每个人的实现方式不一样,遇到开发问题解决问题的速度也不一样。除此之外还很不好给产品解释具体为什么要这个工期时间,这就像盖楼的图纸最终要多少水泥砂浆一样...


    作者:小傅哥
    博客:https://bugstack.cn - 原创系列专题文章

    沉淀、分享、成长,让自己和他人都能有所收获!😄

    一、前言

    实现不了是研发的借口?

    实现不了,有时候是功能复杂度较高难以实现,有时候是工期较短实现不完。而编码的行为又是一个不太好量化的过程,同样一个功能每个人的实现方式不一样,遇到开发问题解决问题的速度也不一样。除此之外还很不好给产品解释具体为什么要这个工期时间,这就像盖楼的图纸最终要多少水泥砂浆一样。那么这时研发会尽可能的去通过一些经验,制定流程规范、设计、开发、评审等,确定一个可以完成的时间范围,又避免风险的时间点后。再被压缩,往往会出一些矛盾点,能压缩要解释为什么之前要那么多时间,不能压缩又有各方不断施加的压力。因此有时候不一定是借口,是要考虑如何让整个团队健康的发展。

    鼓励有时比压力要重要!

    在学习的过程中,很多时候我们听到的都是,你要怎样,怎样,你瞧瞧谁谁谁,哪怕今天听不到这样的声音了,但因为曾经反复听到过而导致内心抗拒。虽然也知道自己要去学,但是很难坚持,学着学着就没有了方向,看到还有那么多不会的就更慌了,以至于最后心态崩了,更不愿意学。其实程序员的压力并不小,想成长几乎是需要一直的学习,就像似乎再也不敢说精通java了一样,知识量实在是随着学习的深入,越来越深,越来越广。所以需要,开心学习,快乐成长!

    临阵的你好像一直很着急!

    经常的听到;老师明天就要了你帮我弄弄吧你给我写一下完事我就学这次着急现在这不是没时间学吗快给我看看。其实看到的类似的还有很多,很纳闷你的着急怎么来的,不太可能,人在家中坐,祸从天上落。老师怎么就那个时间找你了,老板怎么就今天管你要了,还不是日积月累你没有学习,临时抱佛脚乱着急!即使后来真的有人帮你了,但最好不要放松,要尽快学会,躲得过初一还有初二呢!

    二、开发环境

    1. JDK 1.8
    2. Idea + Maven
    3. 涉及工程一个,可以通过关注公众号bugstack虫洞栈,回复源码下载获取(打开获取的链接,找到序号18)
    工程描述
    itstack-demo-design-17-00开发配置文件备忘录

    三、备忘录模式介绍

    备忘录模式,图片来自 refactoringguru.cn

    备忘录模式是以可以恢复或者说回滚,配置、版本、悔棋为核心功能的设计模式,而这种设计模式属于行为模式。在功能实现上是以不破坏原对象为基础增加备忘录操作类,记录原对象的行为从而实现备忘录模式。

    这个设计在我们平常的生活或者开发中也是比较常见的,比如:后悔药、孟婆汤(一下回滚到0),IDEA编辑和撤销、小霸王游戏机存档。当然还有我们非常常见的Photoshop,如下;

    Photoshop 历史记录

    四、案例场景模拟

    场景模拟;系统发布上线配置回滚

    在本案例中我们模拟系统在发布上线的过程中记录线上配置文件用于紧急回滚

    在大型互联网公司系统的发布上线一定是易用、安全、可处理紧急状况的,同时为了可以隔离线上和本地环境,一般会把配置文件抽取出来放到线上,避免有人误操作导致本地的配置内容发布出去。同时线上的配置文件也会在每次变更的时候进行记录,包括;版本号、时间、MD5、内容信息和操作人。

    在后续上线时如果发现紧急问题,系统就会需要回滚操作,如果执行回滚那么也可以设置配置文件是否回滚。因为每一个版本的系统可能会随着带着一些配置文件的信息,这个时候就可以很方便的让系统与配置文件一起回滚操作。

    我们接下来就使用备忘录模式,模拟如何记录配置文件信息。实际的使用过程中还会将信息存放到库中进行保存,这里暂时只是使用内存记录。

    五、备忘录模式记录配置文件版本信息

    备忘录的设计模式实现方式,重点在于不更改原有类的基础上,增加备忘录类存放记录。可能平时虽然不一定非得按照这个设计模式的代码结构来实现自己的需求,但是对于功能上可能也完成过类似的功能,记录系统的信息。

    除了现在的这个案例外,还可以是运营人员在后台erp创建活动对信息的记录,方便运营人员可以上下修改自己的版本,而不至于因为误操作而丢失信息。

    1. 工程结构

    itstack-demo-design-17-00
    └── src
        ├── main
        │   └── java
        │       └── org.itstack.demo.design
        │           ├── Admin.java
        │           ├── ConfigFile.java
        │           ├── ConfigMemento.java
        │           └── ConfigOriginator.java
        └── test
            └── java
                └── org.itstack.demo.design.test
                    └── ApiTest.java
    

    备忘录模式模型结构

    备忘录模式模型结构

    • 以上是工程结构的一个类图,其实相对来说并不复杂,除了原有的配置类(ConfigFile)以外,只新增加了三个类。
    • ConfigMemento:备忘录类,相当于是对原有配置类的扩展
    • ConfigOriginator:记录者类,获取和返回备忘录类对象信息
    • Admin:管理员类,用于操作记录备忘信息,比如你一些列的顺序执行了什么或者某个版本下的内容信息

    2. 代码实现

    2.1 配置信息类

    public class ConfigFile {
    
        private String versionNo; // 版本号
        private String content;   // 内容
        private Date dateTime;    // 时间
        private String operator;  // 操作人
        
        // ...get/set
    }
    
    • 配置类可以是任何形式的,这里只是简单的描述了一个基本的配置内容信息。

    2.2 备忘录类

    public class ConfigMemento {
    
        private ConfigFile configFile;
    
        public ConfigMemento(ConfigFile configFile) {
            this.configFile = configFile;
        }
    
        public ConfigFile getConfigFile() {
            return configFile;
        }
    
        public void setConfigFile(ConfigFile configFile) {
            this.configFile = configFile;
        }
        
    }
    
    • 备忘录是对原有配置类的扩展,可以设置和获取配置信息。

    2.3 记录者类

    public class ConfigOriginator {
    
        private ConfigFile configFile;
    
        public ConfigFile getConfigFile() {
            return configFile;
        }
    
        public void setConfigFile(ConfigFile configFile) {
            this.configFile = configFile;
        }
    
        public ConfigMemento saveMemento(){
            return new ConfigMemento(configFile);
        }
    
        public void getMemento(ConfigMemento memento){
            this.configFile = memento.getConfigFile();
        }
    
    }
    
    • 记录者类除了对ConfigFile配置类增加了获取和设置方法外,还增加了保存saveMemento()、获取getMemento(ConfigMemento memento)
    • saveMemento:保存备忘录的时候会创建一个备忘录信息,并返回回去,交给管理者处理。
    • getMemento:获取的之后并不是直接返回,而是把备忘录的信息交给现在的配置文件this.configFile,这部分需要注意。

    2.4 管理员类

    public class Admin {
    
        private int cursorIdx = 0;
        private List<ConfigMemento> mementoList = new ArrayList<ConfigMemento>();
        private Map<String, ConfigMemento> mementoMap = new ConcurrentHashMap<String, ConfigMemento>();
    
        public void append(ConfigMemento memento) {
            mementoList.add(memento);
            mementoMap.put(memento.getConfigFile().getVersionNo(), memento);
            cursorIdx++;
        }
    
        public ConfigMemento undo() {
            if (--cursorIdx <= 0) return mementoList.get(0);
            return mementoList.get(cursorIdx);
        }
    
        public ConfigMemento redo() {
            if (++cursorIdx > mementoList.size()) return mementoList.get(mementoList.size() - 1);
            return mementoList.get(cursorIdx);
        }
    
        public ConfigMemento get(String versionNo){
            return mementoMap.get(versionNo);
        }
    
    }
    
    • 在这个类中主要实现的核心功能就是记录配置文件信息,也就是备忘录的效果,之后提供可以回滚和获取的方法,拿到备忘录的具体内容。
    • 同时这里设置了两个数据结构来存放备忘录,实际使用中可以按需设置。List<ConfigMemento>Map<String, ConfigMemento>
    • 最后是提供的备忘录操作方法;存放(append)、回滚(undo)、返回(redo)、定向获取(get),这样四个操作方法。

    3. 测试验证

    3.1 编写测试类

    @Test
    public void test() {
        Admin admin = new Admin();
        ConfigOriginator configOriginator = new ConfigOriginator();
        configOriginator.setConfigFile(new ConfigFile("1000001", "配置内容A=哈哈", new Date(), "小傅哥"));
        admin.append(configOriginator.saveMemento()); // 保存配置
        configOriginator.setConfigFile(new ConfigFile("1000002", "配置内容A=嘻嘻", new Date(), "小傅哥"));
        admin.append(configOriginator.saveMemento()); // 保存配置
        configOriginator.setConfigFile(new ConfigFile("1000003", "配置内容A=么么", new Date(), "小傅哥"));
        admin.append(configOriginator.saveMemento()); // 保存配置
        configOriginator.setConfigFile(new ConfigFile("1000004", "配置内容A=嘿嘿", new Date(), "小傅哥"));
        admin.append(configOriginator.saveMemento()); // 保存配置  
    
        // 历史配置(回滚)
        configOriginator.getMemento(admin.undo());
        logger.info("历史配置(回滚)undo:{}", JSON.toJSONString(configOriginator.getConfigFile()));  
    
        // 历史配置(回滚)
        configOriginator.getMemento(admin.undo());
        logger.info("历史配置(回滚)undo:{}", JSON.toJSONString(configOriginator.getConfigFile()));  
    
        // 历史配置(前进)
        configOriginator.getMemento(admin.redo());
        logger.info("历史配置(前进)redo:{}", JSON.toJSONString(configOriginator.getConfigFile()));   
    
        // 历史配置(获取)
        configOriginator.getMemento(admin.get("1000002"));
        logger.info("历史配置(获取)get:{}", JSON.toJSONString(configOriginator.getConfigFile()));
    }
    
    • 这个设计模式的学习有一部分重点是体现在了单元测试类上,这里包括了四次的信息存储和备忘录历史配置操作。
    • 通过上面添加了四次配置后,下面分别进行操作是;回滚1次再回滚1次之后向前进1次最后是获取指定的版本配置。具体的效果可以参考测试结果。

    3.2 测试结果

    23:12:09.512 [main] INFO  org.itstack.demo.design.test.ApiTest - 历史配置(回滚)undo:{"content":"配置内容A=嘿嘿","dateTime":159209829432,"operator":"小傅哥","versionNo":"1000004"}
    23:12:09.514 [main] INFO  org.itstack.demo.design.test.ApiTest - 历史配置(回滚)undo:{"content":"配置内容A=么么","dateTime":159209829432,"operator":"小傅哥","versionNo":"1000003"}
    23:12:09.514 [main] INFO  org.itstack.demo.design.test.ApiTest - 历史配置(前进)redo:{"content":"配置内容A=嘿嘿","dateTime":159209829432,"operator":"小傅哥","versionNo":"1000004"}
    23:12:09.514 [main] INFO  org.itstack.demo.design.test.ApiTest - 历史配置(获取)get:{"content":"配置内容A=嘻嘻","dateTime":159320989432,"operator":"小傅哥","versionNo":"1000002"}
    
    Process finished with exit code 0
    
    • 从测试效果上可以看到,历史配置按照我们的指令进行了回滚和前进,以及最终通过指定的版本进行获取,符合预期结果。

    六、总结

    • 此种设计模式的方式可以满足在不破坏原有属性类的基础上,扩充了备忘录的功能。虽然和我们平时使用的思路是一样的,但在具体实现上还可以细细品味,这样的方式在一些源码中也有所体现。
    • 在以上的实现中我们是将配置模拟存放到内存中,如果关机了会导致配置信息丢失,因为在一些真实的场景里还是需要存放到数据库中。那么此种存放到内存中进行回复的场景也不是没有,比如;Photoshop、运营人员操作ERP配置活动,那么也就是即时性的一般不需要存放到库中进行恢复。另外如果是使用内存方式存放备忘录,需要考虑存储问题,避免造成内存大量消耗。
    • 设计模式的学习都是为了更好的写出可扩展、可管理、易维护的代码,而这个学习的过程需要自己不断的尝试实际操作,理论的知识与实际结合还有很长一段距离。切记多多上手!

    七、推荐阅读

    展开全文
  • 优秀 java工程师 简历

    万次阅读 多人点赞 2019-06-17 07:05:28
    4、负责将小组任务交付测试,协助运维上线。 5、修改线上BUG,设计后期项目调优。 武汉兰芯数据定向媒体有限公司 职位名称:JAVA开发工程师 工作时间:2015年9月 – 2017年01月 工作描述:1、参与系统部分设计...

    简 历

    基本信息:
    姓  名: 吴春雷 学  历: 本科
    性  别: 男 籍 贯: 湖北
    年  龄: 26 现居住地: 武汉
    毕业院校: 湖北文理学院 工作年限: 3年
    联系电话: 18307202857 E-Mail : work_account@foxmail.com

    自我评价:

    1. 学习能力强,思路清晰,善于从整体上分析、把握复杂事物,对细节难题具备快速钻研解决能力;
    2. 能快速地融入、凝聚团队;
    3. 良好的表达与沟通能力,积极主动,对工作尽心尽责;
    4. 能够适应加班出差,具有良好的抗压能力;
      6、马拉松、中长线徒步、中长线骑行爱好者,能够将体能的韧性迁移到工作中来。

    求职意向:
    工作性质: 全职
    目标地点: 武汉
    目标职能: java开发工程师
    目前状况: 在职(考虑工作机会)
    期望薪资: 面议
    开发技能:

    1. Java基础扎实,理解并能使用Java 多线程及线程池,集合框架,IO类库等,良好的编程习惯
    2. 熟悉主流Spring、SpringBoot、SpringMVC、MyBatis等框架,快速上手新型框架
    3. 熟练使用Oracle、MySQL关系型数据库
    4. 熟悉利用redis来实现的缓存、分布式锁、分布式session、前后端分离、页面静态化、秒杀优化等技术
    5. 熟悉dubbo+zookeeper(分布式服务框架)、webService、HttpClient远程服务调用技术
    6. 熟悉rabbitMq消息队列
    7. 熟练使用Eclipse,MyEclipse做Junit单元测试
    8. 熟练的优化能力(代码优化、业务优化、sql优化等)
    9. 熟练使用tomcat服务器、SVN版本管理工具、Maven项目构建工具、FindBugs项目管理工具
    10. 熟练使用js、jQuery、ECharts等前台集成UI框架技术
    11. 掌握编写接口文档和接口开发
    12. 具有一定的开发小组管理经验、能够完成公共组件的封装
    13. 熟悉linux常用命令、redis服务部署、RabbitMQ的安装、MySQL数据库的安装使用
    14. 了解nginx

    工作经历:
    软通动力信息技术有限公司华为事业部
    职位名称:JAVA开发工程师(开发组小组长)
    工作时间:2017年02月 –至今
    工作描述:1、与产品部门对接相关需求及可行性讨论,落地。
    2、开发相关模块代码编写和相关接口设计。
    3、与第三方公司进行业务协调,接口通信。
    4、负责将小组任务交付测试,协助运维上线。
    5、修改线上BUG,设计后期项目调优。
    武汉兰芯数据定向媒体有限公司
    职位名称:JAVA开发工程师
    工作时间:2015年9月 – 2017年01月
    工作描述:1、参与系统部分设计以及功能模块的详细设计
    2、配合小组完成系统模块任务分配、开发工作。
    3、解决系统的流程问题、数据采集问题、整改问题。
    4、配合对现有系统的升级做出升级方案。

    项目经历:
    项目一:2017.02-至今 中国移动湖北网上营业厅
    软件环境: Struts2+Spring + Mybatis + duboo + zookeeper + nginx + weblogic
    开发工具: Eclipse + Oracle+ Tomcat8.0 + JDK1.8 + SVN + Ant
    责任描述: 主要参与湖北移动天猫对账重构;网厅在线号卡销售流程技术方案选型与设计开发,订单管理,数据库优化以及相关文档编写;融合家庭宽带充值缴费重构优化;京东物流系统开发对接;带领新人等
    项目描述: 本项目为一个网上购物平台,包含前台购物平台,我的移动平台,后台管理系统。前端网站主要是一个形成订单的过程,涉及了选号,套餐,流量专区,宽带专区,增值业务,手机以及智能硬件,其中选号与宽带专区为移动首推重点业务;前台购物平台主要是一个形成订单的过程,涵盖首页的产品导航展示,充值缴费,产品的订购。我的移动平台
    主要包括个人信息,花费账单,套餐使用量,增值业务,上网日志,历史记录,我的宽带等;后台管理模块主要包括权限模块,产品配置,问题处理中心,订单管理模块(派单,审批,流转等功能)等
    项目二:2017.02-至今 中国移动湖北网厅能力开放平台
    软件环境: JFina + duboo + zookeeper + nginx + weblogic
    开发工具: Eclipse + Oracle+ Tomcat8.0 + JDK1.8 + SVN + Ant
    责任描述: 主要参与湖北移动在线号卡销售流程接口设计与开发;湖北移动网厅与集团商城号卡销售订单对接模块的设计与开发;号卡销售与京东物流对接的接口开发;裸宽续费接口开发;优惠券接口开发;带领新人等
    项目描述: 为提供运营商特色能力服务、做大连接,达到连接更简单合作更容易的目的,衍生出网厅能力开放平台,为各渠道提供丰富的能力接口

    项目三:2016.11-2017.01 武汉市公安局数据定制平台(号卡标准化项目子项目)
    软件环境: SpringMVC+Hibernate+Spring jdbc(jeecg 开源框架)
    开发工具: Eclipse + Oracle11g+ Tomcat5.5 + JDK1. + SVN + Maven
    责任描述: 主要参与需求调研、需求分析、业务模块的划分、Bug修复;采用多线程技术完成大数据量的数据推送,echarts技术为分局用户做到丰富数据的图形化展示
    项目描述: 依赖业务系统数据源采用反向建表方式按照公安部标准在目标库中创建相应的标准表结构,将数据推送到用户表中完成数据定制
    项目四:2016.09-2016.11 任务调度平台
    软件环境: LTS轻量级分布式任务调度开源框架
    开发工具: MyEclipse + Oracle11g + jdk1.6 +tomcat5.5+Maven
    责任描述: 主要参与需求分析,业务模块划分;执行ktr文件模块开发及单元测试,集成测试
    项目描述: 为提高频繁手动通过kettle执行大量ktr文件效率,减少单个kettle的负载压力,采用分布式任务调度形式定时执行ktr文件,保证各大轨迹类数据每日增量稳定抽取。
    项目五:2015.09-2016.09 武汉市公安局标准化平台
    软件环境: SDC开发平台 (Struts2+spring+ibatis 基础架构)
    开发工具: Eclipse + Oracle11g + jdk1.6 + tomcat5.5 + svn + Maven
    责任描述: 主要完成项目经理分配需求的程序设计及Bug修复。前端、终端数据采集模块;数据地图模块;数据推送模块;数据质量管理模块;数据元模块;数据预警模块;数据对标等
    项目描述: 公安部颁发数据元标准后,为了规范公安系统的管理与建设,建立此支撑项目。公安局将各个支队及分局的数据结构和数据抽入汇集库统一管理。标准化项目是对汇集库的各个表及数据的管理。标准化项目主要分为数据标准子系统、数据质量子系统、数据服务子系统等。

    展开全文
  • 在当前市面上的语言很多,但java一直处于统治地址,近20年出现了一些语言比java好用,但还是没有办法超越java,所以Java工程师也一直是最火爆的IT岗位,先来看看一组数据。 根据IDC的统计数字,在所有软件开发类...

    在当前市面上的语言很多,但java一直处于统治地址,近20年出现了一些语言比java好用,但还是没有办法超越java,所以Java工程师也一直是最火爆的IT岗位,先来看看一组数据。

    根据IDC的统计数字,在所有软件开发类人才的需求中,对Java工程师的需求达到全部需求量的50%以上。就2021年来说,我国还存在很大的Java人才缺口,且以每年20%左右的速度增长

    TIOBE世界编程语言社区排行榜:

    Java岗位人才的空缺,而需求量又大,所以这种人才供不应求的现状,就是Java工程师的薪资待遇相对优厚的原因所在。Java与其他相比更具备了显著优势和广阔前景,这也使得很多小伙伴都想成为大厂的Java工程师

     

    正所谓“不打无准备之仗”,大家先来看看小编对5家一线互联网大厂Java开发工程师招聘JD的解读

    互联网大厂Java工程师招聘JD解读

    从上图的JD解读可以看出,最核心的就是精通Java语言,然后在此基础上配备其他技能。但大家往往会遇到一个问题:自己掌握的Java编程语言能力还不能够匹配上大厂的标准。

    在我看来,造成这种情况的原因,主要有这么两方面:

     

    第一,没有清晰的学习路径,知识碎片化,不成系统。比如对集合类,并发包,IO/NIO,JVM,内存模型,泛型,异常,反射,等没有系统深入了解,看过源码了解底层的设计,但缺乏对背后的逻辑清晰认知。

    举个例子,如面试阶段会问CopyOnWrite,线程池,CAS,AQS,虚拟机优化等知识的应用,如在使用线程池时,因为使用了无界队列,在远程服务异常情况下导致内层飙升,怎么去解决?你要是连线程池都不清楚,你怎么去玩?面对这些问题,如果没有清晰的学习路径,是无法完成从编程思维到架构思维的跨越,实现技术人的职业发展晋升的,很容易在面试阶段被淘汰。

    第二,缺乏如编程能力,编程思想,算法能力,架构能力胜任。

    一位能够达到2W薪资的程序员对算法的要求我觉得还是比较低,再高级也最多红黑树,但是排序和查询的基本算法得会。编程思想是必须的,问你个AOP和IOC你起码的清清楚楚,设计模式不说每种都用过,但也能了解个几种。

    编程能力并不好直接评价,但是拿一个2000W用户根据姓名年龄排序这种题目也能信手拈来。最后就是架构能力,这种不是说要你设计个多牛逼多高并发的系统,起码让你做一个秒杀系统,得有一个明确的思路和方向。

     

    为了让大家少走弯路,小编针对大厂面试中Java常见问题做出了一系列全面整理,除了语法基础,包含四则运算、数据类型、面向对象、大厂面试题等,让小伙伴们先主要的应用方向知识点都了解、学习一遍,从而建立编程思维、扎实编程能力,确定学习路径建立完整的知识框架。

    扫码添加小龙女入群即可获取

    添加后请发送消息:java

     

    通过以上,大家可以清晰地看到大厂招聘要求与能力认证一一对应、紧密相连。

     

    下图是C站(CSDN)软件工程师能力认证标准中的C4-Java能力认证图,分为基础能力和项目能力两大模块,可以看到模块中的技能点能够全覆盖一线大厂Java开发工程师的招聘JD要求。

    通过以上,大家可以清晰地看到大厂招聘要求与能力认证一一对应、紧密相连。

     

    C站(CSDN)软件工程师能力认证,已上线58天,覆盖全国高校300+,C认证清晰定义了软件工程师的能力,能够夯实软件开发核心技术,掌握企业级开发框架,吃透分布式架构,玩转微服务架构,搞定性能调优,完全胜任编程能力,编程思想,算法能力,架构能力。C站期待更多小伙伴们通过认证,进大厂挑大梁拿高薪!

    通过提供免费训练,在训练过程中采用基于“明确路径+领取任务+刻意练习+大咖指导”的学习模型,让学员提升自我能力,满足大厂招聘要求!

    认证官网:https://ac.csdn.net/

     

    最后是广告时间,CSDN软件工程师能力认证(以下简称C系列认证)是由中国软件开发者网CSDN制定并推出的一个能力认证标准。C系列认证历经近一年的实际线下调研、考察、迭代、测试,并梳理出软件工程师开发过程中所需的各项技术技能,结合企业招聘需求和人才应聘痛点,基于公开、透明、公正的原则,甑别人才时确保真实业务场景、全部上机实操、所有过程留痕、存档不可篡改。

    C系列认证步骤:

    1.打开官网(https://ac.csdn.net/),预约认证,报名成功。

    2.扫描下方二维码,添加小龙女拉你进群领取学习资料和学习任务,群内还有任务直播讲解以及答疑,一起来记录自己的成长过程吧~

    如果还有其他问题

    请在后台留言

    小编为你解答哦~

     

     

    展开全文
  • 对于搞开发的我们其实也是一样,现在流行的框架越来越多,封装的也越来越完善,各种框架可以搞定一切,几乎不用关注底层的实现,初级程序员只要熟悉基本的使用方法,便可以快速的开发上线;但对于高级程序员来讲,...
  • java工程项目完整开发

    千次阅读 2014-11-27 16:20:24
    开始学java以来,一直在想一个完美的java/c等工程程序,如何让它能在像QQ等那些软件一下脱离eclipse坏境独立运行,即... 本例为一个查询数据库功能java工程案例,转换成exe安装文件后可移植到 其他windows环境下安

            开始学java以来,一直在想一个完美的java/c等工程程序,如何让它能在像QQ等那些软件一下脱离eclipse坏境独立运行,即能在任何windows坏境下使用呢?

            通过对java的继续学习,和查询了部分资料现在总结出:将jar文件转换成exe可执行文件

             本例为一个查询数据库功能java工程案例,转换成exe安装文件后可移植到

    其他windows环境下安装使用。

          1.环境:java开发环境(略)(以前博客就提过,网上也有一大堆资料介绍)

                         exe4j_pj.zip 和isetuo-5.5.5.1410769109.exe (这两个文件用来把jar转化exe文件的)

    2.从eclipse中到出工程为jar文件(过程略,太简单),收集工程所需的外联库(这里为数据库所需要的驱动文件),收集java环境jre6所有文件(java_home目录下的那个),如图所示,全都放在一个文件夹(这里为sunset)下:

    2. 使用exe4j软件(后面未说明之处全是next完成操作)

    3.指定所需要转换的工程

    4添加exe文件图表(favicon.ico)(根据自己的喜好和工程需求添加)

    5.        指定编译环境和主类

    6.java版本

    7.java环境

    8.选择默认的vm

    9.应用程序图标

    10 需要依靠java环境的exe文件已经做好(中间还有几个过程省掉了,全是一直next默认下来就可以)

    11. inno setup使上述exe文件脱离java环境,这是软件启动界面

    12.菜单栏file->new

    13指定开发版本和开发商

    15 指定工程对象

    16 形成自定义安装过程

    17 可以添加认证证书/序列号之类的(这里不加那些繁琐的步骤)

    18软件语言

    19这一步比较重要,决定安装软件的样貌

    20 完成配置

    21开始编译

    22保存编译过程的记录和exe文件存放位置

    23编译

    24可以脱离Java环境的安装软件,也是最终形式

    25软件安装后,运行结果(本例为一个数据库查询软件)

    到此整个java开发流程全部结束,java程序有点简略(只是一个对指定数据库的增删改查功能软件),如果用java开发windows游戏,就可以通过此种方式上线,再也不是限制在eclipse里面源代码!!


    展开全文
  • 简单记录java项目从什么都没有开始,到部署到服务器上让所有人都能够访问.
  • 就是下面我会分享出来的这份足足485页的“1000Java工程师面经”,这是我同学在字节的前辈们总结整理出来的,涵盖了当时金九银十高频出现的大部分Java工程师面试题,并且进行了收集整理成这份面经。 内容涵盖:Java...
  • Java后端工程师学习路线

    千次阅读 2020-08-23 20:10:40
    Java工程师学习路线 阶段一 (夯实基础) 学习目标: 1.熟悉Java等基本概念 2.掌握Eclipse/IDEA集成开发工具的安装、配置和应用 3.熟悉Java基本语法、基本类型、运算符和表达式 4.掌握分支、循环逻辑语句、...
  • Java工程构建工具ANT与Maven的区别

    千次阅读 2016-04-15 17:07:27
    Ant与Maven也许几乎所有的程序员在程序开发过程中都遇到过,在我的工作过程中ant和maven都用到过,在这里说一下个人感受。 第一家公司开发业务代码,最后打war包采用了ant+hudson的持续集成方式,ant脚本当时也是...
  • 上线71天 覆盖全国高校300+ 期待更多学员通过认证 进大厂挑大梁拿高薪! 参加C认证的同学每个任务都全力以赴,今日推荐以下同学发布的C1认证训练任务博客,打开链接,从中找到前进的动力! C1-任务一...
  • java】——java项目之逆向工程完结

    万次阅读 多人点赞 2016-11-18 18:31:16
    运用逆向工程的技术,通过部署的文件反编译得到源码的过程,你值得了解与拥有~~~
  • Java软件工程师 (职业简介)

    万次阅读 2017-10-16 15:02:26
    Java软件工程师 引言:信息时代的迅猛发展使得软件工程师十分抢手,而其中的java软件工程师更是备受青睐。那么,如何才能成为Java软件工程师?Java软件工程师又有怎样的发展前途?本文将为你一一解答。  ...
  • Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Micro systems公司于1995年5月推出的面向Java程序设计语言和Java平台的总称(Java平台包括Java EE, Java ME, Java SE)。Java 技术具有卓越的...
  • 上线69天 覆盖全国高校300+ 期待更多学员通过认证 进大厂挑大梁拿高薪! 参加C认证的同学每个任务都全力以赴,今日推荐以下同学发布的C1认证训练任务博客,打开链接,从中找到前进的动力! C1-任务一...
  • Java 后端工程师实习总结

    千次阅读 2017-09-16 17:16:00
    8 月份开始到现在,进行了一个多月的实习,岗位是 Java Web 后端开发。这过程学到的知识着实比自学要来得多,而且也让我意识到需要学习的知识也更加多。在这里我会在比较大的方面总结这次实习中学习到的事情,以及...
  • 作为Java程序员,我想很多人都知道日志对于一个程序的重要性,尤其是Web应用。很多时候,日志可能是我们了解应用程序如何执行的唯一方式。 所以,日志在Java Web应用中至关重要,但是,很多人却以为日志输出只是一件...
  • Java是目前使用最为广泛的网络编程语言之一。 它具有简单,面向对象,稳定,与平台无关,解释型,多线程,动态等特点。一般的JAVA程序员或许只需知道一些JAVA的语法结构就可以应付了。但要成为JAVA(高级)工程师,您...
  • 对于搞开发的我们其实也是一样,现在流行的框架越来越多,封装的也越来越完善,各种框架可以搞定一切,几乎不用关注底层的实现,初级程序员只要熟悉基本的使用方法,便可以快速的开发上线;但对于高级程序员来讲,...
  • 有的企业都会先笔试后面试(笔试不过可能就没面试的机会了),有的还会直接面试(本人经历的还是直接面试的多一些)。...在工作的和自我学习的过程中对Java基础知识和前端知识以及一些前后端框架进行技术知...
  • 在外企工作的七年时间里,肥侠一步一个脚印地从最开始独立做事情,到带领团队做一个小模块,再到带领团队做一个完整项目,不断证明自己、扩大职责范围的过程中,不仅接触到了 Java 底层核心代码的研发,打下了坚实的...
  • 深度学习是人工智能发展最为迅速的领域之一,Google、...目前研究人员使用的深度学习框架有 TensorFlow、Torch 、Caffe、Theano、Deeplearning4j 等,而 Deeplearning4j 是为数不多以 Java/JVM 为基础,能与 Apac
  • 编程开发这条路上的知识是无穷无尽的,就像以前你敢说精通Java,到后来学到越来越多只想写了解Java,过了几年现在可能想说懂一点点Java。当视野和格局的扩大,会让我们越来越发现原来的看法是多么浅显,这就像站在...
  • 2021-Java后端工程师面试指南-(SpringBoot+SpringCloud)

    千次阅读 多人点赞 2021-03-02 00:46:17
    Spring Boot 项目所需的开发或工程时间明显减少,通常会提高整体生产力。 Spring Boot 不需要编写大量样板代码、XML 配置和注释。 Spring 引导应用程序可以很容易地与 Spring 生态系统集成,如 Spring JDBC、Spring...
  • 该认证与国际标准接轨,面向全球的IT开发者,同时具备标准全开源、系统化学习、真实业务场景、完全上机实操、所有过程留痕、存档不可篡改等特点。 全新定义系统化学习成长路径 纵观IT发展的历史阶段,分工...
  • 对于搞开发的我们其实也是一样,现在流行的框架越来越多,封装的也越来越完善,各种框架可以搞定一切,几乎不用关注底层的实现,初级程序员只要熟悉基本的使用方法,便可以快速的开发上线;但对于高级程序员来讲,...
  • 资深算法工程师万宫玺:Java工程师转型AI的秘密法宝——深度学习框架Deeplearning4j | 分享总结 本文作者:杨文 2018-01-02 11:03 导语:一文读懂深度学习框架Deeplearning4j 的构成与...
  • 河软CSDN乐知学院2011届  毕业生推荐信 尊敬的贵单位领导: 您好!  首先感谢您在百忙之中抽出时间来阅读我院的推荐信!今向贵单位推荐我院2011届JAVA、NET、PHP、3G专业毕业生,下
  • 2021-Java后端工程师面试指南-(Redis)

    千次阅读 多人点赞 2021-02-19 11:48:06
    为避免这一问题,运维人员在系统上线时必须确保有足够的空间,这对资源造成了很大的浪费。 说说为啥要用缓存 主要是为了提高系统的吞吐量,应对高并发,高性能场景 为什么要用 Redis 而不用 map/guava 做缓存? Java...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,046
精华内容 9,218
关键字:

java工程上线过程

java 订阅