微信小程序开发系列二:微信小程序的视图设计
大家如果跟着我第一篇文章 微信小程序开发系列一:微信小程序的申请和开发环境的搭建 一起动手,那么微信小程序的开发环境一定搭好了。效果就是能把该小程序的体验版以二维码的方式发送给其他朋友使用。这个系列接下来的文章我们就来研究使用微信开发者工具自动生成的这个小程序的实现文件。本文以小程序的视图设计为主,就是下图所示pages/index目录里的index.wxml文件。我的日常工作
Java异常处理:如何写出“正确”但被编译器认为有语法错误的程序
文章的标题看似自相矛盾,然而我在“正确”二字上打了引号。我们来看一个例子,关于Java异常处理(Exception Handling)的一些知识点。看下面这段程序。方法pleaseThrow接受一个Exception的实例,然后简单地将该实例抛出。然后调用这个方法时,我传入了一个SQLException的实例。因为pleaseThrow的调用包裹在一个try catch块里,问题:plesseTh
如何在ABAP里用函数式编程思想打印出非波拉契Fibonacci(数列)
在JavaScript里可以用ES6提供的FunctionGenerator这种黑科技来打印非波拉契数列,具体细节参考我这篇文章。在ABAP里也有很多种方式实现这个需求。下面这个report分别用递归和ABAP internal table的方式实现了非波拉契数列的打印。REPORT Z_FIBO. PARAMETERS: N type i, v
深入理解Java的整型类型:如何实现2+2=5?
先看下这段神奇的Java代码:public static void main(String[] args) throws Exception { doSomethingMagic();
使用JDK自带的工具jstack找出造成运行程序死锁的原因
Java多线程编程也是Java面试中经常考察的内容。刚接触Java多线程编程的朋友们,可能会不慎写出一些会导致死锁(deadlock)的应用出来。如何分析造成Java多线程的原因呢?很多时候我们在怀疑造成死锁的语句设置断点,单步调试,反而又不能重现了。这种现象很正常,因为咱们单步调试和直接运行程序,代码执行的时序是不同的,很可能无法满足死锁的触发条件。实际上,JDK已经给Java程序员提供了强大的
Java代理设计模式(Proxy)的四种具体实现:静态代理和动态代理
面试问题:Java里的代理设计模式(Proxy Design Pattern)一共有几种实现方式?这个题目很像孔乙己问“茴香豆的茴字有哪几种写法?”所谓代理模式,是指客户端(Client)并不直接调用实际的对象(下图右下角的RealSubject),而是通过调用代理(Proxy),来间接的调用实际的对象。代理模式的使用场合,一般是由于客户端不想直接访问实际对象,或者访问实际的对象存在技术上的障碍,
什么是Java Marker Interface(标记接口)
先看看什么是标记接口?标记接口有时也叫标签接口(Tag interface),即接口不包含任何方法。在Java里很容易找到标记接口的例子,比如JDK里的Serializable接口就是一个标记接口。首先明确一点,Marker Interface(标记接口)决不是Java这门编程语言特有的,而是计算机科学中一种通用的设计理念。我们看Wikipedia里对标记接口的定义。“The tag/ marke
Spring MVC能响应HTTP请求的原因?
很多Java面试官喜欢问这个问题:一个Spring MVC的项目文件里,开发人员没有开发自己的Servlet,只通过注解@RequestMapping定义了方法home能响应发向 /mvc/test1的请求。使用url http://localhost:9098/MavenSandbox/mvc/test1 测试,能观察到home方法返回的字符串,这背后的工作原理是什么?我们通
使用javap分析Java的字符串操作
我们看这样一行简单的字符串赋值操作的Java代码。String a = "i042416";使用命令行将包含了这行代码的Java类反编译查看其字节码:javap -v constant.ConstantFolding我们看到字符串 "i042416" 被Java编译器加到了常量池里。Java代码 String a = "i042416"被
使用javap深入理解Java整型常量和整型变量的区别
我下图代码第五行和第九行分别定义了一个整型变量和一个整型常量:static final int number1 = 512;static int number3 = 545;Java程序员都知道两者的区别。下面我们就用javap将.class文件反编译出来然后深入研究Java里整型变量和整型常量的区别。使用命令行javap -c constant.ConstantFolding查看.class文件
一个具体的例子学习Java volatile关键字
相信大多数Java程序员都学习过volatile这个关键字的用法。百度百科上对volatile的定义:volatile是一个类型修饰符(type specifier),被设计用来修饰被不同线程访问和修改的变量。volatile的作用是作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。可能有很多刚学Java的朋友们看了上面这段非常笼统的描述后仍然觉得云里雾里的。下面我们就用一
Java动态代理之InvocationHandler最简单的入门教程
网上关于Java的动态代理,Proxy和InvocationHandler这些概念有讲解得非常高深的文章。其实这些概念没有那么复杂。现在咱们通过一个最简单的例子认识什么是InvocationHandler。值得一提的是,InvocationHandler在Spring框架实现中被广泛使用,这意味着我们吃透了InvocationHandler,就为将来的Spring源码学习打下一个坚实的基础。开发一
使用JDK自带的jmap和jhat监控处于运行状态的Java进程
对于处于运行状态中的Java进程,JDK自带了很多工具,允许Java开发人员监控运行进程中的各种状态,比如该进程内部创建了多少个对象实例,消耗了多少内存,等等。本文基于JDK1.8而写成。我下面写了一个最简单的Java类,包含了一个无限循环,每隔5秒增加一个计数器的值。package jmap;class Tool{ private