
java
最老程序员闫涛
关注全文检索、数据挖掘、推荐引擎技术,Android开发技术,互联网及移动互联网创业。
展开
-
Java语言学习1
首先,需要明确的是Java已经不是一门简单的语言,也不是一门可以速成的语言了,而是一门功能强大,体系复杂的语言,需要花很大精力才能掌握并精通的语言。其次,Java即使在Web开发领域,也不等于仅SSH(Struts+Spring+Hibernate),这三种框架的流行,使多数程序员浮于开发的表面,不能深入进去,同时是Java在Web开发领域被PHP、Python甚至Node.js所超越的原因。最后原创 2012-11-29 15:09:53 · 6192 阅读 · 1 评论 -
工业互联网平台IMSA---1.2.启动过程详解1
虽然微服务工业云IMSA内部采用基于消息总线的异步消息处理机制,但是当前工业企业无论自动化App还是业务管理App,通常采用的是类REST的请求响应式接口,因此IMSA系统提供了门户Facade子系统,由该子系统与外部系统进行请求响应式交互,在内部则将请求转换为系统的消息,发送到消息总线Plato上,由消息驱动完成所需业务逻辑,最后门户Facade系统从消息总线中获得响应结果,发送给外部系统。因此原创 2018-01-24 16:32:08 · 845 阅读 · 0 评论 -
工业互联网平台IMSA---1.1.项目概述
工业互联网是新一代信息通信技术和现代工业技术深度融合的产物,是制造业数字化、网络化、智能化的重要载体,是全球产业竞争的制高点。工业互联网通过建立连接机器、物料、人、信息系统的基础网络,实现工业数据的全面感知、动态传输、实时分析,形成科学决策和智能控制,提高制造资源配置效率,正成为领先企业竞争的新赛道,全球产业布局的新方向,制造大国竞争的新焦点。工业互联网平台是工业全要素链接的枢纽,是工业资源配置的原创 2018-01-24 14:27:35 · 1919 阅读 · 0 评论 -
工业互联网平台IMSA---1.3.启动过程详解2
在上一篇博文中,我们启动了门户Facade的基于NIO技术的服务器,可以监听到外部系统发送过来的REST类型请求,门户Facade在收到请求后,会将其转化为系统消息,并发送到消息总线Plato中,这样对这个消息感举趣的微服务控件器Caesar就可以得到消息,从而完成所需的业务逻辑,并将最终处理结果发送到消息总线Plato上,最后门户Facade从消息总线上获取消息,然后转化为HTTP响应,发送给外原创 2018-01-25 15:58:27 · 671 阅读 · 0 评论 -
工业互联网平台IMSA---1.4.启动过程详解3
我们已经实现了一些基础的功能,但是由于我们只是以最简实现的方式来实现这些功能,所以代码远谈不上优化,因此我们在这篇博文中,先暂时不开发新功能,而是对现有功能进行重构。首先,我们不仅在门户Facade中需要Nio服务器,在消息总线Plato接收微服务注册、接收系统消息时也需要NIO服务器,同时微服务控制器和微服务接收消息总线消息时,也需要NIO服务器,目前这种实现方式,显然不能满足这些重用需求,原创 2018-01-26 12:15:29 · 685 阅读 · 0 评论 -
Spring Cloud微服务实战---1.8.Eureka下的服务调用
在上一节中,我们成功的将微服务注册到Eureka中,并实现了Eureka的高可用性,在这一节中,我们将实现一个微服务使用者程序,通过查询Eureka找到微服务,然后调用根据一定的负载均衡算法,调用相应的微服务实例,完成自己所需的功能。...原创 2018-12-13 11:16:20 · 646 阅读 · 0 评论 -
Spring Cloud微服务实战---1.9.微服务架构容错处理
在微服务架中,所有功能均通过微服务来提供,如果其中某个关键微服务出现问题,如响应时间过长,那么所有调用这个微服务的微服务都会变慢,由于调用者微服务变慢,进一步会使其他更广泛的微服务变慢,最终整个系统可能会因为一个微服务出现问题,而使整个微服务架构出现故障。为了防止这种现象的发生,我们可以使用Spring Cloud中的Hystrix组件。Hystrix组件的原理是对每个微服务,都会维护其当前状态...原创 2018-12-13 14:29:24 · 561 阅读 · 0 评论 -
Spring Cloud微服务实战---1.1.配置开发环境
随着应用系统的功能越来越复杂,应用系统的复杂度也越来越大,传统的基于单体应用模式,在实践中遇到了非常大的问题,微服务架构在此背景下应运而生。由于微服务架构还比较新,对开发团队的要求非常高,所以实际中还没有得到广泛的应用。而随着Spring Cloud的推出和成熟,集成了微服务架构所需的服务,大大降低了微服务采用门槛。本系列文章将向大家详细介绍采用Spring Cloud进行微服务应用系统开发的技术...原创 2018-12-06 16:54:41 · 1040 阅读 · 0 评论 -
Spring Cloud微服务实战---1.2.采用HTTPS协议
当前主流网站基本都开始支持HTTPS协议了,对于电商网站来说,由于对安全性的要求还是比较高的,所以支持HTTPS协议是非常必要的。在本节中,我们将把我们在上一节中开发的微服务,启动在8443这个HTTPS的协议上。我们首先需要生成一个证书文件,因为目前我们是在开发阶段,我们可以使用JDK中自带的工具,生成一个开发证书,在实际运行中,我们需要购买一个CA证书。打开一个命令窗口,运行如下命令:k...原创 2018-12-06 17:33:37 · 3209 阅读 · 0 评论 -
Spring Cloud微服务实战---1.3.使用Mysql数据库
在本节中,我们将在前一节微服务的基础上,将数据库从内存数据库H2,转换为我们在项目中经常使用的Mysql,同时我们将采用普通的增删改操作采用JPA,复杂多表查询直接使用JDBC的方式。我们首先来设置Mysql数据库,我们首先建立数据库和用户,如下所示:create database MseDb default character set utf8 collate utf8_general_ci...原创 2018-12-07 00:15:24 · 3204 阅读 · 5 评论 -
Spring Cloud微服务实战---1.4.JPA与JDBC协同
我们知道,如果采用领域驱动开发(DDD)的话,采用JPA技术,会非常方便。但是对于复杂的多表联合查询,使用JPA技术就比较费力了。为了解决复杂SQL查询问题,很多项目采用了MyBatis。但是Spring提倡大家使用JPA,对MyBatis技术实际上是有一点儿抵制的。我们在实际项目中,采用数据库增删改采用JPA,而复杂数据库SQL查询,直接采用JDBC来实现。采用这种方式,也符合大容量、高并发网站...原创 2018-12-07 14:00:36 · 726 阅读 · 1 评论 -
Spring Cloud微服务实战---1.5.测试先行的开发策略
为了提高软件开发质量,我们需要对所开发的功能进行单元测试,在Spring Boot中,进行单元测是非常容易的。在开发过程中,认真准备单元测试用例,不仅可以保证代码质量,也便于进行回归测试。今后在修改或代码重构时,通过回归测试,可以保证修改和代码重构的正确性。...原创 2018-12-10 10:44:04 · 624 阅读 · 0 评论 -
Spring Cloud微服务实战---1.6.微服务监控
我们现在已经可以基于Spring Boot来开发微服务了,但是由于我们将原来单体应用打散,形成众多的微服务,微服务之间相对独立,而且每个微服务都可能存在多个实例,这对运维人员来说,想管理好这些微服务的难度很大。...原创 2018-12-10 13:51:10 · 1134 阅读 · 0 评论 -
基于Java8的日志类实现
基于Java8的日志类实现原创 2016-06-12 12:35:15 · 2132 阅读 · 0 评论 -
Java 8学习之旅1---Lambda表达式
Java 8的新特性中,最著名的可能就是Lambda表达式了,基于此才能Java 8下面的函数式编程。虽然Lambda表达式说的很神奇,其实它并不能做任何新东西,只是能以比以前更简洁的方式来实现一些功能而已。Lambda的一个典型场景就是在处理不断变化的需求时,将函数做为方法的参数,这样满足不断变化的需求。举例来说,比说我们做一个在线书籍查询应用,假设我们需要按照书名(模糊查询)、类别、价格区原创 2014-11-10 16:58:00 · 2018 阅读 · 0 评论 -
Java8学习之旅2---基于Lambda的JDBC编程
Java8的Lambda表达式确实是一个非常好的特性,但是在哪些场合下使用,其实还是需要仔细考虑的。我们当然不能为了使用而使用,而是需要找到切实有用的场合。在JDBC编程中,例如查询语句,首先需要进行查询参数绑定,其次是处理返回的结果集,这两步操作是每个查询都不同的,而获取JDBC连接,准备PreparedStatement,以及释放资源则都是完全相同的,这就是一个Lambda表达式应用的绝佳场景原创 2014-11-11 12:50:32 · 3529 阅读 · 1 评论 -
Java语言学习2---Maven版Hellow World
刚开始学Java时,总是非常奇怪,为什么一些开源软件总是那么变态,使用Ant或Maven来编译程序,用Eclipse不好吗?后来才渐渐发现,Eclipse的工程,由于每个人机器中Eclipse的配置可能不同,所以可能造成工程导入失败,而采用Ant或Maven则可以在很大程度上避免这种情况的发生,尤其是Maven,这个工具可以使你建立与工程开发者相同的开发环境,自动处理Jar包依赖,把我们从查找下载原创 2012-11-30 11:57:34 · 5650 阅读 · 0 评论 -
Java语言学习3---变量
变量是一个语言中最基本的东西,在Java中也不例外。在变量命名方面,Java允许以字母、下划线、$开头,但是通常只以小写字母开头,而且很少使用下划线、$符号。另外,需要认真看一看Java的关键字和保留字,经常见笔试题上问,const是不是Java的关键字这类问题,所以还是需要适当注意一下。接下来就是Java的变量类型,Java的变量类型一共有8种原始数据库型:byte, short, int,原创 2012-11-30 13:22:59 · 4954 阅读 · 15 评论 -
Java语言学习4--变量及数组
首先来回顾一下Java变量的类型:实例变量:类属性中未加static的属性,存储在每个类对象实例中。系统会为其分配缺省值。类变量:类属性中加static的属生,与类代码存储在一起,与类的实例无关。本地变量:在方法中声明的变量,存储在用户栈中,系统不为其提供初始值,必须显示初始化,否则值是不确定的。函数形参:不调用时不分配空间,只有与实参结合时才分配空间。Java中数组数组一原创 2012-12-11 13:25:42 · 4309 阅读 · 5 评论 -
java语言学习5---运算符1
赋值运算符赋值运算符具有从右至左的结合性,而且表过式的值即为右侧的值,如:int a = 0;a = 3;上面代码中,a的值是3,同时a=3这个表达式的值也是3,在Java的考题中经常出现类似的考题:int a = 0;int b = 5 + (a=2);此时如果知道a=2这个表达式的值等于2的话,问题就很简单了。四则运算 + - * / %,本身并没有什么需要说明的。就是原创 2012-12-11 13:48:08 · 4513 阅读 · 4 评论 -
新Java运动Nava:师PHP技术以开发Web应用
当前开发Web应用中,尤其是互联网及移动互联网网站,PHP是绝对的主流。另外,Python也以小清新的姿态,越来越在技术为导向的项目中采用。而一些敢于尝新者,也有应用node.js来开Web网站的例子。而前些年风光无限的Java,如今在Web开发领域,逐渐处于边缘化状态。然而,单就语言本身而言,无论从表现能力、性能、可扩展性方面来看,Java语言无疑是很优秀的,造成Java在Web领域困境的根本原原创 2013-03-06 10:23:16 · 5131 阅读 · 2 评论 -
新Java运动:测试驱动开发3---用户注册2
测试驱动开发(TDD)其实不是一个新概念,但是这种方法论的实质经常被误解。以我为例,我觉得测试驱动开发就是写单元测试,对代码进行充分测试。其实这是一种对测试驱动开发的一种最常见的误解,测试驱动开发不仅仅是强调测试,其同时更强调驱动开发。编写测试用例的的目的不仅仅是进行测试,而且是一种设计,是对功能及接口的设计,而且是以功能或接口使用者的角度来进行设计,而其他方法学中的设计,则是在开发人员角度上的设原创 2013-03-08 09:39:51 · 5614 阅读 · 2 评论 -
新Java运动:测试驱动开发3---用户注册3
直到目前为止,我们还没有接触到用户注册的实质性问题,即向数据库中添加用户。我们现在来处理这个需求。首先需要确定数据库访问所用的技术,这里可以选择Hibernate、JPA或JDBC。相信绝大多数应用都是采用Hibernate来作为数据库访问技术,另外一部分人可能会选择JPA,但是我们在这里选择JDBC。原因比较简单,底层的东西看上去好像比较复杂,但是一旦掌握,由于它的内容少,相对来讲更容易精通原创 2013-03-08 10:20:11 · 4373 阅读 · 0 评论 -
新Java运动:测试驱动开发2---最小初始可运行系统
设计驱动开发要测试先行,因此需要有一个运行环境来运行测试和开发代码。因此,我们第一步是开发一个最小的,包括所有参与者的系统。然后在这个最小框架系统下,我们才可以每次测试、开发、重构一小步。我们所要开发的是一个Web系统,因此需要开发一个Web应用,同时我们需要与股票交易所交互,因此需要一个股票交易所模拟器,暂时规定股票交易所模拟器采用Json Over HTTP协议。为了接收股票交易所的通知,我们原创 2013-03-07 14:15:31 · 4992 阅读 · 7 评论 -
新Java运动:测试驱动开发3---用户注册
经过上节的努力,我们终于可以进入正式功能开发了。用户注册流程是用户输入用户名和密码,然后正确将用户基本信息和账户信息建立到数据库中去。让我们先从简单的步聚做起,第一步是写一个测试用例,传入cmd=registerUser,userName=闫涛,然后调用Servlet,最后在d:/ablog/app.html文件中回写出收到的用户名。首称是则试代码:@Test public vo原创 2013-03-07 15:22:06 · 4580 阅读 · 3 评论 -
新Java运动:设计驱动开发实践1需求分析
在这里我们要开发一个融资融券平台,采用Java技术,用例驱动(TDD)开发模式进行开发。首先,我们需要充分理解我们要做的系统。由于通常系统都比较复杂,因此我们需要阶段来实施,在第一阶段,先实现一个最小系统,然后逐渐加入新的功能,这就是迭代式增量开发的核心精神。我们第一步是做一个简单的融资平台,具体业务模式为:用户通过在证券公司系统中开户,可以向证券公司借钱在T日购买股票,然后在T+1日将股原创 2013-03-07 09:51:55 · 4408 阅读 · 8 评论 -
新Java运动:测试驱动开发3---用户注册4
完成数据库操作的基础架构之后,就是我们真正进行JDBC数据操作的时候了。所涉及的数据库表ER图如下所示:如上图所示,我们第一步是向t_user表中添加记录。由于用户注册需要操作多张表,因此需要用到事务,先写出一个简单的基于JDBC的事务框架,代码如下所示:@Override public long registerUser(Map userInfo) { Connection原创 2013-03-08 12:06:29 · 5040 阅读 · 0 评论 -
Android测试驱动开发实践
在Android应用开发中,相信很少有人在坚持先由设计人员做完整的概要设计 、详细设计,然后交给程序员进行编码实现了。通常是在有一个大体框架的情况下,就开始进行具体编码开发了。在这种情形下,开发速度可以有很大的提高,但是最终代码质量却不可避免的降低了。如何能既保持开发速度,同时又能保证开发质量呢?相信测试驱动开发是一种比较可行的开发方法学。测试驱动开发首先通过设计测试用例,对从用户需求到方法接原创 2013-03-21 14:16:17 · 6125 阅读 · 1 评论 -
Spring Cloud微服务实战---1.7.Eureka的微服务注册与管理
在微服务架构中,服务的注册与管理是一项特别重要的基础功能。因为在微服务架构下,随着业务的发展,微服务的数量会越来越多,而且微服务集群规模、微服务的位置、微服务的命名等,都需要维护,如果以手工方式维护的话,将是非常困难的,所以需要使用微服务注册与管理工具。在Spring Cloud中,我们采用Eureka来完成这一功能。Spring Cloud Eureka采用Netflix Eureka来实现服...原创 2018-12-11 18:53:16 · 801 阅读 · 0 评论