技术文章
2017-02-19 13:11
微信小程序兼容性问题
微信小程序发布一周多了,兼容性问题,特别是 Android 平台兼容性问题特别严重。据我观察,好多小程序掉到兼容性的坑里。掉坑里不要紧,更让人捉急的是,从坑里爬上来的时候,手刚抓到坑沿,又被微信官方踩到(紧急修复兼容性的版本没审核通过,被微信打回重审),再次跌落坑底,然后眼睁睁地看着后台用户在破口大骂“什么东西都没有啊~,什么破小程序”。
微信小程序的兼容性问题除了微信本身的 Bug 外,大部分是目标平台对 JavaScript 标准库支持程度不同造成的。
微信本身的 Bug 引起的
...
2017-02-19 13:40
前几天还在群里聊到,博客园是很多老程序员的记忆,很当低调的牛人都在上面耕耘。今天作者五月的仓颉他16年3月份找工作后的面试感悟,作者是做JavaWeb开发。现在17年了,希望能给找工作的朋友一些指导。
PS : Java虚拟机系列相关文章,写的很不错。他基于周志明老师的《深入理解Java虚拟机:JVM高级特性与最佳实践》、陈涛老师的《HotSpot实战》、高翔龙老师的《Java虚拟机精讲》三本书,并在对这些书中的内容进行总结、提炼的基础上加上了自己的理解。邀请了他这篇文章在我公众平台推送。点击【阅读原文】,也可看对应原文。作者blog:http://www.cnblogs.com/xrq730
...
2017-02-18 14:22
最近小程序出来了,公司也要求我们开发一款小程序。
于是,就开始着手做了,做了差不多一周吧,也遇到了很多问题,这里就来总结一下。
之前也发过一个简单的闹着玩儿的demo,应该也有可取之处
搞笑动图app地址
(主要是从一个Android开发者的角度来述说的,可能比较零碎的一些知识点和经验,如果大家还有补充,欢迎)
总结
1:传参,方法判断
js中 方法中可以传递一个方法作为形参,在java中是不可以的。比如start项目中的getUserInfo:function(cb){
var that = this
...
2017-02-18 14:21
继承(inheritance)是面向对象的重要概念。继承是除组合(composition)之外,提高代码重复可用性(reusibility)的另一种重要方式。我们在组合(composition)中看到,组合是重复调用对象的功能接口。我们将看到,继承可以重复利用已有的类的定义。
类的继承
我们之前定义类的时候,都是从头开始,详细的定义该类的每一个成员。比如下面的Human类:
class Human
{
/**
* accessor
*/
public int getHeight()
...
2017-02-18 14:44
一、JAVA虚拟机规范与JAVA虚拟机
内存,是指程序运行时的数据存储区域。
Java虚拟机规范中,将内存划分为六大部分,分别是Java堆、方法区、运行时常量池、Java虚拟机栈、本地方法栈、PC寄存器。
Java虚拟机规范是一种对Java虚拟机实现的规范要求,是由Oracle制定的,而我们平时常说的Java虚拟机一般是指最经常使用的Java虚拟机hotspot。
JVM是Java Virtual Machine(Java虚拟机)的缩写。
二、JVM结构图
...
2017-02-16 15:20
这篇文章总结了所有的Java集合(Collection)。主要介绍各个集合的特性和用途,以及在不同的集合类型之间转换的方式。
Arrays
Array是Java特有的数组。在你知道所要处理数据元素个数的情况下非常好用。java.util.Arrays 包含了许多处理数据的实用方法:
Arrays.asList:可以从 Array 转换成 List。可以作为其他集合类型构造器的参数。
Arrays.binarySearch:在一个已排序的或者其中一段中快速查找。
Arrays.copyOf:如果你想扩大数组容量又不想改变它的内容的时候可以使用这个方法。
...
2017-02-16 15:46
为什么使用多线程
并发与并行
我们知道,在单核机器上,“多进程”并不是真正的多个进程在同时执行,而是通过CPU时间分片,操作系统快速在进程间切换而模拟出来的多进程。我们通常把这种情况成为并发,也就是多个进程的运行行为是“一并发生”的,但不是同时执行的,因为CPU核数的限制(PC和通用寄存器只有一套,严格来说在同一时刻只能存在一个进程的上下文)。
现在,我们使用的计算机基本上都搭载了多核CPU,这时,我们能真正的实现多个进程并行执行,这种情况叫做并行,因为多个进程是真正“一并执行”的(具体多少个进程可以并行执行取决于CPU核数)。综合以上,我们知道,并发是一个比并行更加宽泛的概念。也就是说,在单核情况下,并发只是并发;而在多核的情况下,并发就变为了并行。下文中我们将统一用并发来指代这一概念。
...
2017-02-15 14:27
这篇文章介绍了JAVA读取文件夹大小的几种方法实例,有需要的朋友可以参考一下。
(一)单线程递归方式
package com.taobao.test;
import java.io.File;
public class TotalFileSizeSequential {
public static String fileName = "C:\\Documents and Settings\\Administrator\\桌面\\monkeytalk";
// 递归方式 计算文件的大小
...
2017-02-15 14:29
1 前言
在 Java 语言中,equals 和 == 都是用来检测两个字符串是否相等,返回值也都是布尔型(boolean),但是两者在内部比较的处理中却不尽相同,因此在需要检测两个字符串是否相等的时候,我们一定要特别的注意,选择适当的检测方式,防止造成不必要的 bug。从表面上来看,这种 bug 很像随机产生的间歇性错误。
2 区别
在需要检测两个字符串是否相等的时候,我们可以使用 equals 方法。对于表达式:
s.equals(t)1
1
如果字符串 s 与字符串 t 相等,则返回 true;否则,返回 false。需要注意的是,s 与 t 可以是字符串常量也可以是字符串变量。例如,下面的表达式就是合法的:
...
2017-02-15 14:21
看了一些所谓大公司的JAVA面试问题,发现对于JAVA集合类的使用都比较看重似的,而自己在这方面还真的是所真甚少,抽空也学习学习吧。
java.util包中包含了一系列重要的集合类,而对于集合类,主要需要掌握的就是它的内部结构,以及遍历集合的迭代模式。
接口:Collection
Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”如List和Set。
...
2017-02-14 13:25
每个编程人员都需要至少掌握三种编程语言。当然,这只是我的一家之言。
这是我经过多年养成的观点,也许是偏见,但我能够根据一个人所喜欢的编程语言来快速的了解一个程序员。当我读简历时,我会尝试使用我的这套观念按照“这个程序员为什么要使用这种编程语言”进行分类,我通过我的这些偏见从一堆简历中选出我想要的。
一.快乐的语言
这是一种你用来思考的语言。这是一种你希望无时无刻不在使用的语言。这是一种用来编写自己的项目的语言。对于我来说,它是OCaml (现在还有JavaScript,尽管我正在把CoffeeScript吸收进我的世界里)。对于很多人来说,它可能是LISP 或 Haskell。当一个人告诉我他的快乐的语言后,我能根据这个看出这个人的身上的很多特点。
...
2017-02-14 13:08
本文翻译自 http://friendlydingo.com/blog/ … sucks-and-i-dont-care
嗨,你的应用的架构很完美吗?对呀,这就是为什么你还没有发布你的应用的原因,你仍然在彻夜不眠的担忧着各个功能模块之间的责任分离(你没时间去关心应用的流量和访问率)。
可是,除了我之外,谁还会对你说你的架构很烂?为什么我要关心你的架构?因为我只是你的用户,我不关心你的程序长的什么样、如何被调用的、用什么语言写成的。我关心的是它能用最简单的、最迅速的方式解决我的问题。
你的用户并不关心架构的问题,他们只关心你的应用是否好用。
...
2017-02-13 14:26
在尽可能短的篇幅里,将所有集合与并发集合的特征,实现方式,性能捋一遍。适合所有”精通Java”其实还不那么自信的人阅读。
List
ArrayList
以数组实现。节约空间,但数组有容量限制。超出限制时会增加50%容量,用System.arraycopy()复制到新的数组,因此最好能给出数组大小的预估值。默认第一次插入元素时创建大小为10的数组。
按数组下标访问元素–get(i)/set(i,e) 的性能很高,这是数组的基本优势。
直接在数组末尾加入元素–add(e)的性能也高,但如果按下标插入、删除元素–add(i,e), remove(i), remove(e),则要用System.arraycopy()来移动部分受影响的元素,性能就变差了,这是基本劣势。
...
2017-02-13 13:57
Spring简介
spring框架由Rod Johnson开发,2004年发布了Spring框架的第一版。Spring是一个从实际开发中抽取出来的框架,因此它完成了大量开发中的通用步骤,留给开发者的仅仅是与特定应用相关的部分,从而大大提高了企业应用的开发效率。
Spring总结起来优点如下
低侵入式设计,代码的污染极低
独立于各种应用服务器,基于Spring框架的应用,可以真正实现Write Once,Run Anywhere的承诺
Spring的IoC容器降低了业务对象替换的复杂性,提高了组件之间的解耦
...
2017-02-12 13:40
wait, notify 和 notifyAll,这些在多线程中被经常用到的保留关键字,在实际开发的时候很多时候却并没有被大家重视。本文对这些关键字的使用进行了描述。
在 Java 中可以用 wait、notify 和 notifyAll 来实现线程间的通信。。举个例子,如果你的Java程序中有两个线程——即生产者和消费者,那么生产者可以通知消费者,让消费者开始消耗数据,因为队列缓冲区中有内容待消费(不为空)。相应的,消费者可以通知生产者可以开始生成更多的数据,因为当它消耗掉某些数据后缓冲区不再为满。
...