自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 SAP云平台架构概述

在我们开始SAP云平台的架构之旅之前,让我们先看看SAP已经发布的一些其他云产品。这些云产品方案可以分为公有云和私有云两种。 SAP公有云解决方案见下图最右侧,比较著名的有SAP SuccessFactors和SAP Cloud for Customer(C4C)等,作为SAP软件即服务(Saa...

2018-08-29 12:09:39 4181 0

原创 如何在ABAP里用函数式编程思想打印出非波拉契Fibonacci(数列)

在JavaScript里可以用ES6提供的FunctionGenerator这种黑科技来打印非波拉契数列,具体细节参考我这篇文章。 在ABAP里也有很多种方式实现这个需求。 下面这个report分别用递归和ABAP internal table的方式实现了非波拉契数列的打印。 REPOR...

2018-08-27 12:07:32 157 0

原创 使用JavaScript ES6的新特性计算Fibonacci(非波拉契数列)

程序员面试系列 Java面试系列-webapp文件夹和WebContent文件夹的区别? 程序员面试系列:Spring MVC能响应HTTP请求的原因? Java程序员面试系列-什么是Java Marker Interface(标记接口) 使用JDK自带的工具jstack找出造成运行程序死...

2018-08-27 12:06:19 281 0

原创 Java异常处理:如何写出“正确”但被编译器认为有语法错误的程序

文章的标题看似自相矛盾,然而我在“正确”二字上打了引号。我们来看一个例子,关于Java异常处理(Exception Handling)的一些知识点。 看下面这段程序。方法pleaseThrow接受一个Exception的实例,然后简单地将该实例抛出。然后调用这个方法时,我传入了一个SQLEx...

2018-08-27 12:05:41 571 0

原创 聊聊JavaScript和Scala的表达式 Expression

我们先看下面这段简单的JavaScript代码。 我在第10行调用了函数f,其中传入的第二个和第三个参数都是一个逗号表达式。 函数f的实现,会检查这两个参数的类型,如果是函数,则执行函数调用,再打印其返回值,否则直接打印传入的表达式的值。 执行上面这段代码,打印输出如下: 我们可以...

2018-08-27 12:05:07 305 0

原创 在SAP UI中使用纯JavaScript显示产品主数据的3D模型视图

在Jerry写这篇文章时,通过Google才知道,SAP其实是有自己的3D模型视图显示解决方案的。 故事要从Right Hemisphere说起,这是一家专业的企业级2D/3D模型浏览及转换的软件供应商。后来,Right Hemisphere被SAP收购,解决方案也更名为SAP Visual...

2018-08-23 23:16:12 91 0

原创 一个SAP开发人员的双截棍之路

由于种种原因,Jerry最近加入了SAP成都研究院的一个演讲俱乐部,这个俱乐部主要是提高大家的英语演讲能力。 说来Jerry也是大一下期和大二上期一次性高分通过四六级考试的,但是当毕业进入SAP成都研究院后,通过和同事比较才知道自己口语有多烂。在SAP成都研究院,我能听到同事们地道的伦敦腔,纽约...

2018-08-23 23:15:38 345 0

原创 使用Recast.AI创建具有人工智能的聊天机器人

很多SAP顾问朋友们对于人工智能/机器学习这个话题非常感兴趣,也在不断思考如何将这种新技术和SAP传统产品相结合。Jerry之前的微信公众号文章C4C和微信集成系列教程曾经介绍了Partner如何利用SAP Cloud for Customer内置的社交媒体集成框架,做一些简单的开发将微信集成到C...

2018-08-23 23:13:41 1597 0

原创 编程面试题:编写一个会造成数据库死锁的应用

相信对于”开发一个会产生死锁的Java应用”这类需求,大家都能顺利完成。但是如果题目要求得更具体一些,要求这个死锁发生在数据库层面,应该怎样完成呢? 下面我提供一种答案,采用SAP的编程语言ABAP(Advanced Business Application Programming)实现。 ...

2018-08-23 12:17:18 1128 1

原创 使用JDK自带的工具jstack找出造成运行程序死锁的原因

Java多线程编程也是Java面试中经常考察的内容。刚接触Java多线程编程的朋友们,可能会不慎写出一些会导致死锁(deadlock)的应用出来。如何分析造成Java多线程的原因呢?很多时候我们在怀疑造成死锁的语句设置断点,单步调试,反而又不能重现了。这种现象很正常,因为咱们单步调试和直接运行程序...

2018-08-23 12:16:28 415 0

原创 npm scripts的生命周期管理

我们平时阅读一些开源项目,可能会发现有些项目的package.json里的scripts区域定义的脚本很复杂,令人眼花缭乱。 其实这些脚本是有规律可循的。让我们从最简单的一个例子开始学习。 新建一个空文件夹,执行命令npm init,会自动在该文件夹下生成一个package.json。 ...

2018-08-23 12:15:11 506 0

原创 如何用JavaScript判断前端应用运行环境(移动平台还是桌面环境)

我们部署在某些云平台或者Web服务器上的前端应用,既可以用PC端浏览器访问,也可以用手机上的浏览器访问。 在前端应用里,有时候我们需要根据运行环境的不同做出对应处理。比如下面这段逻辑,如果判断出应用当前是运行在手机上,则需要设置对应的viewport。 if (this.isMobil...

2018-08-23 12:14:16 2670 0

原创 100行代码让您学会JavaScript原生的Proxy设计模式

面向对象设计里的设计模式之Proxy(代理)模式,相信很多朋友已经很熟悉了。比如我之前写过代理模式在Java中实现的两篇文章: Java代理设计模式(Proxy)的四种具体实现:静态代理和动态代理 Java动态代理之InvocationHandler最简单的入门教程 其实和Java一样,...

2018-08-20 19:07:57 438 0

原创 一个具体的例子学习Java volatile关键字

相信大多数Java程序员都学习过volatile这个关键字的用法。百度百科上对volatile的定义: volatile是一个类型修饰符(type specifier),被设计用来修饰被不同线程访问和修改的变量。volatile的作用是作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求...

2018-08-20 12:19:47 91 0

原创 JavaScript实现的水果忍者游戏,支持鼠标操作

智能手机刚刚普及时,水果忍者这款小游戏可谓风靡一时。几年过去了,现在,让我们用纯JavaScript来实现这个水果忍者游戏,就算是为了锤炼我们的JavaScript开发技能吧。 大家可以通过这个链接在线玩一玩(该链接是我的github地址): http://i042416.github.io/...

2018-08-20 12:18:19 673 0

原创 记录我开发工作中遇到HTTP跨域和OPTION请求的一个坑

我通过这篇文章把今天工作中遇到的HTTP跨域和OPTION请求的一个坑记录下来。 场景是我需要在部署在域名a的Web应用里用JavaScript去消费一个部署在域名b的服务器上的服务。域名b上的服务也是我开发的,因此我将域名a加到了该服务的HTTP响应结构的头文件里,这样就允许了域名a上的Jav...

2018-08-20 12:17:08 5632 2

原创 SAP成都研究院姚瑶:软件质量保证工作的变迁

大家好,我是来自SAP成都研究院Revenue Cloud 团队的质量工程师 , yoyo。很高兴可以和大家分享我个人的工作体会。每个团队都有QE(Quality Engineer), 相信大家对QE 的工作并不陌生,我也就不唠叨QE 的具体工作啦。作为从事软件质量保证工作十年的“老人”,我想就我...

2018-08-20 12:13:12 172 0

原创 HTML5应用 + Cordova = 平台相关的混合应用

Jerry之前的一篇文章 SAP Fiori应用的三种部署方式 曾经提到SAP Fiori应用的三种部署方式: On Premise环境下以ABAP BSP应用作为Fiori应用部署和运行的载体 部署并运行在On Cloud环境下,比如SAP云平台 用Cordova打包成平台原生应用安装在移动...

2018-08-20 12:12:23 475 1

原创 SAP成都研究院安德鲁:自己动手开发一个Chrome Extension

各位好,我叫何金鑫(He Andrew), 团队同事亲切地称呼在下为安德鲁。如果你在附近找到wifi热点名为 「安德鲁森面包房5g」,可能是我就在附近,我们可以去喝杯咖啡,聊聊最近有趣的东西。 鄙人现效力于一个SAP云产品的标准开发项目中,团队主要做的是一款2B的电商SaaS应用。我是个很普通的...

2018-08-20 12:11:07 387 0

原创 使用Cordova将您的前端JavaScript应用打包成手机原生应用

假设我用JavaScript和HTML开发了一个前端应用,我想把该应用打包成能直接在手机上安装和运行(不通过浏览器)的原生应用,例如像下面这样。对应用的用户来说,他们得到的用户体验和真正的用Android Studio或者XCode开发的原生应用完全一致。 这是怎么做到的? 答案是使用Ap...

2018-08-15 11:48:03 835 0

原创 分享一个WebGL开发的网站-用JavaScript + WebGL开发3D模型

这张图每位程序员应该都深有感触。 人民心目中的程序员是这样的:坐在电脑面前噼里啪啦敲着键盘,运键如飞。 现实中程序员是这样的:编码5分钟,调试两小时。 今天我要给大家分享一个用WebGL开发的网站,感兴趣的朋友可以在Chrome开发者工具里调试它的源码来学习WebGL。 WebGL...

2018-08-15 11:47:05 18022 0

原创 Java动态代理之InvocationHandler最简单的入门教程

网上关于Java的动态代理,Proxy和InvocationHandler这些概念有讲解得非常高深的文章。其实这些概念没有那么复杂。现在咱们通过一个最简单的例子认识什么是InvocationHandler。值得一提的是,InvocationHandler在Spring框架实现中被广泛使用,这意味着...

2018-08-15 11:46:28 3870 0

原创 如何让Spring MVC显示自定义的404 Not Found页面

不知道大家对千篇一律的404 Not Found的错误页面是否感到腻歪了?其实通过很简单的配置就能够让Spring MVC显示您自定义的404 Not Found错误页面。 在WEB-INF的web.xml里添加一个新的区域: 意思是一旦有404错误发生时,显示resouces文件夹下的4...

2018-08-15 11:46:01 1025 1

原创 在Windows笔记本上调试运行在iOS设备上的前端应用

我在每天工作中需要在不同的移动设备上测试我们开发的前端应用是否正常工作,比如iOS设备和Android设备。我用的工作笔记本电脑又是Lenovo的,安装的是Windows操作系统。 有的时候一个开发好的前端应用,在Android设备上正常工作,但是在iOS平板上测试却发现问题(相当广大前端开...

2018-08-15 11:45:34 5534 1

原创 通过90行代码学会HTML5 WebSQL的4种基本操作

Web SQL数据库API是一个独立的规范,在浏览器层面提供了本地对结构化数据的存储,已经被很多现代浏览器支持了。 我们通过一个简单的例子来了解下如何使用Web SQL API在浏览器端创建数据库表并存储数据。 <!doctype html> &...

2018-08-15 11:44:54 875 0

原创 JavaScript的语音识别

有没有想过给您的网站增添语音识别的功能?比如您的用户不用点鼠标,仅仅通过电脑或者手机的麦克风发布命令,比如”下拉到页面底部”,或者“跳转到下一页”,您的网站就会执行对应命令。听起来很酷对么?然而为了实现这个功能,必须得让您网站的JavaScript脚本能够识别到这些语音输入。 这里介绍一个开...

2018-08-15 11:44:23 2636 0

原创 使用JDK自带的VisualVM进行Java程序的性能分析

VisualVM是什么? VisualVM是JDK自带的一个用于Java程序性能分析的工具,JDK安装完毕后就有啦,在JDK安装目录的bin文件夹下能找到名称为jvisualvm.exe。 要使用VisualVM分析您的应用性能,首先得让VisualVM识别出您的应用。Eclipse有...

2018-08-14 18:49:11 203 0

原创 SAP产品的Field Extensibility

SAP开发人员的工作职责,除了实现软件的功能性需求外,还会花费相当的精力实现一些非功能性需求,来满足所谓的SAP Product Standard(产品标准)。这些产品标准,包含在SAP项目实施中大显身手的Extensibility,为客户业务流程的安全运行保驾护航的Security,也有看起来不...

2018-08-14 18:48:29 204 0

原创 SAP不同的产品是如何支持用户创建自定义字段的

我们从SAP CRM,Cloud for Customer(简称C4C)和S/4HANA这三个产品分别来看看。 SAP CRM 我们使用所谓的Application Enhancement Tool(AET)来创建扩展字段。首先在Personalize里将Configuration模式打开...

2018-08-14 18:47:52 501 0

原创 使用ABAP编程实现对微软Office Word文档的操作

SAP ABAP里提供了一个标准的类CL_DOCX_DOCUMENT,提供了本地以”.docx”结尾的微软Office word文档的读和写操作。 本文介绍了ABAP类CL_DOCX_DOCUMENT的简单用法。 Office OpenXML 从微软 Office2007开始, 当我...

2018-08-14 18:47:17 1335 1

原创 在ABAP里模拟实现Java Spring的依赖注入

Dependency Injection- 依赖注入,在Java Spring框架中有着广泛地应用。通过依赖注入,我们不必在应用代码里繁琐地初始化依赖的资源,非常方便。 那么ABAP能否从语言层面上也支持依赖注入,享受这种设计思路带来的便利呢?让我们做一次尝试。 尝试的场景 在现实生活中...

2018-08-14 18:46:22 147 0

原创 一个简单的例子教会您使用javap

javap是JDK自带的工具: 这篇文章使用下面这段简单的Java代码作为例子进行讲解。 class Outer { Nested nested; Nested getNested() { return nested; } } class Nes...

2018-08-14 18:45:40 152 0

原创 Java和ABAP中的几种引用类型的分析和比较

Java编程语言中几种不同的引用类型是面试时经常容易被问到的问题:强引用,软引用,弱引用,虚引用。 其实除了Java之外,某些 其他编程语言也有类似概念,比如ABAP。今天我们就来比较一下。 根据ABAP帮助文档,我们可以把某个对象的引用包在一个Weak Reference的实例里。ABAP的...

2018-08-14 18:45:01 462 0

原创 小技巧:如何突破某些网站只能登陆后才能进行文字拷贝的限制

我写公众号文章时,经常需要从一些网站的文章上查阅一些资料。比如我想把这个网页上的一个标题“SAP Fiori 2.0用户体验设计概念获红点大奖”进行拷贝。 然而当我按了键盘上的拷贝快捷键Ctrl C后,却收到这个提示,告诉我只有登陆后才能够进行复制操作。 可是为了登陆我得先注册,有点麻...

2018-08-14 18:43:43 962 1

原创 Cordova插件中JavaScript代码与Java的交互细节介绍

在Cordova官网中有这么一张架构图:大家看右下角蓝色的矩形框”Custom Plugin”——自定义插件。意思就是如果您用Cordova打包Mobile应用时,发现您的移动应用里需要使用一些功能,这些功能用普通的JavaScript无法实现,而是需要调用移动平台的一些原生API才能实现时,我们...

2018-08-14 18:42:01 1622 0

原创 使用javap深入理解Java整型常量和整型变量的区别

我下图代码第五行和第九行分别定义了一个整型变量和一个整型常量: static final int number1 = 512; static int number3 = 545; Java程序员都知道两者的区别。 下面我们就用javap将.class文件反编译出来然后深入研究Java里...

2018-08-12 20:15:18 1247 0

原创 使用javap分析Java的字符串操作

我们看这样一行简单的字符串赋值操作的Java代码。 String a = “i042416”; 使用命令行将包含了这行代码的Java类反编译查看其字节码: javap -v constant.ConstantFolding 我们看到字符串 “i042416” 被Java编译器加到了常量...

2018-08-12 20:14:46 152 0

原创 使用JavaScript调用手机平台上的原生API

我之前曾经写过一篇文章使用Cordova将您的前端JavaScript应用打包成手机原生应用,介绍了如何使用Cordova框架将您的用JavaScript和HTML开发的前端应用打包成某个手机平台(比如Android,iOS)的原生应用。 那么,您也许会有一些需求,需要在您的前端应用里使用到手机...

2018-08-12 20:14:15 2867 0

原创 Spring MVC能响应HTTP请求的原因?

很多Java面试官喜欢问这个问题: 一个Spring MVC的项目文件里,开发人员没有开发自己的Servlet,只通过注解@RequestMapping定义了方法home能响应发向 /mvc/test1的请求。 使用url http://localhost:9098/MavenSandbo...

2018-08-12 20:13:48 692 0

原创 什么是Java Marker Interface(标记接口)

先看看什么是标记接口?标记接口有时也叫标签接口(Tag interface),即接口不包含任何方法。在Java里很容易找到标记接口的例子,比如JDK里的Serializable接口就是一个标记接口。 首先明确一点,Marker Interface(标记接口)决不是Java这门编程语言特有的,...

2018-08-12 20:13:13 1578 0

提示
确定要删除当前文章?
取消 删除