自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

JoeySheng的专栏-移动互联网技术发展博客

关于移动互联网开发,Android、iOS、移动Web等技术。

  • 博客(33)
  • 资源 (6)
  • 收藏
  • 关注

原创 面试总结

面试总结

2016-08-30 15:39:48 756

原创 Git常用命令

2016-08-18 15:11:58 259

原创 Android中的Touch事件

Activity或View类的onTouchEvent()回调函数会接收到touch事件。   一个完整的手势是从ACTION_DOWN开始,到ACTION_UP结束。   简单的情况下,我们只需要在onTouchEvent()中写个switch case语句,处理各种事件(Touch Down、Touch Move、Touch Up等),但是比较复杂的动作就需要更多的处理了。   V

2016-08-18 13:29:16 965

原创 Android Webview中解决H5的音视频不能自动播放的问题

今天在开发webview的时候,当加载有声音的H5的时候,声音不会自动播放,必须手动触摸一下屏幕,声音才会播放出来,虽然在H5文件中设置了autoplay属性,也调用了play方法,依然不能自动播放,最后通过在webview中调用js方法来解决。   代码如下:view.loadUrl("javascript:(function() { " + "var videos

2016-08-17 17:06:15 9789 4

原创 android中px、dp、dip以及屏幕密度

1. dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这    这个,不依赖像素。    这里要特别注意dip与屏幕密度有关,而屏幕密度又与具体的硬件有关,硬件设置不正确,有可能导致dip不能正常显示。在屏幕密度为160的显示屏上,1dip=1px,有时候可能

2016-08-17 15:28:57 392

转载 View绘图原理总结

Android系统的视图结构的设计也采用了组合模式,即View作为所有图形的基类,Viewgroup对View继承扩展为视图容器类,由此就得到了视图部分的基本结构--树形结构View定义了绘图的基本操作基本操作由三个函数完成:measure()、layout()、draw(),其内部又分别包含了onMeasure()、onLayout()、onDraw()三个子方法。具体操作如下:

2016-08-16 16:45:59 320

原创 RestFul架构

由于面试中对RestFul架构的理解描述不是特别理想,所以今天就花了数多时间查找资料,然后结合项目经验做了一些总结,如下。什么是REST   REST全称是Representational State Transfer,中文意思是表述性状态转移。它首次出现在2000年Roy Fielding的博士论文中,Roy Fielding是HTTP规范的主要编写者之一。他在论文中提到:“我这篇文章的

2016-08-12 14:07:40 452

原创 阿里面试的随想

昨天接到了阿里巴巴的电话面试,聊了大概20分钟,不甚理想,对一些问题并不能流利回答,其实很多技术自己在日常开发工作中都在用,却不能组织成文,比如“android的资源预加载”、“RestFul架构”、“View的加载过程”等等,究其原因,还是太浮,对技术没有深刻理解把握,并记录成文,以便于后续复习。   经过面试,也发现自己在深度和广度两个维度都没有大的成就,决定在以后能够在广度有所涉猎,

2016-08-12 09:55:39 491

转载 Android移动开发者必须知道的Deep Linking技术

1.概述Deep Linking(译:深度链接)作为移动开发者可能对这个概念有点陌生,但是对于它的实现原理,说出来大家肯定都知道。不过我们先说一下Deep Linking能做什么?它可以唤起指定应用并向其传递数据,根据传递的数据显示特定内容页的详细信息;它不再受制于应用,只通过一个链接便可唤起应用并跳转到指定页面;它使应用之间产生了联

2016-08-11 11:26:16 2632

转载 Android Patch方案与持续交付

Android 不仅系统版本众多,机型众多,而且各个市场都各有各的政策和审核速度,每次发布一个版本对于开发同学来讲都是一种漫长的煎熬。相比于 iOS 两三天就能达到 80% 的覆盖速度而言,Android 应用版本升级至少需要两周才能达到 80% 的升级率,严重阻碍了版本迭代速度。也导致市场上 App 版本分散,处理 bug 和投诉等也越来越麻烦。修复的 bug 需要等待下个版本发布窗口才

2016-08-11 11:24:04 535

转载 HTTP状态码大全

HTTP状态码大全完整的 HTTP 1.1规范说明书来自于RFC 2616,你可以在http://www.talentdigger.cn/home/link.php?url=d3d3LnJmYy1lZGl0b3Iub3JnLw%3D%3D在线查阅。HTTP 1.1的状态码被标记为新特性,因为许多浏览器只支持 HTTP 1.0。你应只把状态码发送给支持 HTTP 1.1的客户端,支持

2016-08-11 11:20:16 448

原创 Go语言编程(十五)之接口

接口在Go语言有着至关重要的地位。如果说goroutine和channel是支撑起Go语言的并发模型的基石,让Go语言在如今集群化与多核化的时代成为一道极为亮丽的风景,那么接口是Go语言整个类型系统的基石,让Go语言在基础编程哲学的探索上达到前所未有的高度。   Go语言在编程哲学上是变革派,而不是改良派。这不是因为Go语言有goroutine和channel,而更重要的是因为Go语言的类型系

2016-08-09 16:28:15 853

原创 Go语言编程(十四)之可见性

Go语言对关键字的增加非常吝啬,其中没有private、protected、public这样的关键字。要使某个符号对其他包(package)可见(即可以访问),需要将该符号定义为以大写字母开头,如:type Rect struct {  X, Y float64  Width, Height float64}这样,Rect类型的成员变量就全部被导出了,可以被所有其他引用了Rec

2016-08-09 16:18:38 1519

原创 Go语言编程(十三)之匿名组合

确切的说,Go语言也提供了继承,但是采用了组合的文法,所以我们将其称为匿名组合:type Base struct {    Name string}func (base *Base) Foo() {...}func (base *Base) Bar() {...}type Foo struct {    Base    ...}func (foo *Fo

2016-08-09 14:45:22 820

原创 Go语言编程(十二)之类型系统初始化

在定义了Rect类型后,该如何创建并初始化Rect类型的对象实例呢?这可以通过如下几种方法实现:rect1 := new(Rect)rect2 := &Rect{}rect3 := &Rect{0, 0, 100, 200}rect4 := &Rect{width: 100, height: 200}在Go语言中,未进行显式初始化的变量都会被初始化为该类型的零值,例如boo

2016-08-09 14:30:41 767

原创 Go语言编程(十一)之类型系统

类型系统type system   类型系统是指一个语言的类型体系结构。一个典型的类型系统通常包含如下基本内容:   基础类型,如byte、int、bool、float等   复合类型,如数组、结构体、指针等   可以指向任意对象的类型(Any类型)   值语义和引用语义   面向对象,即所有具备面向对象特征(比如成员方法)的类型   接口   类型系统描述的是

2016-08-09 14:23:24 683

原创 Go语言编程(十)之面向对象编程

之前文章介绍了Go语言顺序编程的相关特性,很多人说Go语言是更好的C语言,接下来的篇章,我们将介绍Go语言对于面向对象思想的支持。   Go语言并没有沿袭传统面向对象编程中的诸多概念,比如继承、虚函数、构造函数和析构函数、隐藏的this指针等。Go语言对面向对象编程的支持是语言类型系统中的天然组成部分。整个类型系统通过接口串联。

2016-08-08 15:47:57 726

原创 Go语言编程(九)之错误处理

错误处理是任何编程语言都需要考虑的一个重要话题。error接口   Go语言引入了一个关于错误处理的标准模式,即error接口,该接口的定义如下:type error interface {    Error() string}对于大多数函数,如果要返回错误,大致上都可以定义为如下模式,将error作为多种返回值中的最后一个,但这并非强制要求:func

2016-08-08 14:07:50 831

原创 Go语言编程(八)之函数

函数构成代码执行的逻辑结构。在Go语言中,函数的基本组成为:关键字func、函数名、参数列表、返回值、函数体和返回语句。

2016-08-08 11:14:48 851

原创 Go语言编程(七)之流程控制

程序设计语言的流程控制语句,用于设定计算执行的次序,建立程序的逻辑结构。可以说,流程控制语句是整个程序的骨架。   从根本上说,流程控制只是为了控制程序语句的执行顺序,一般需要与各种条件配合,因此,在各种流程中,会加入条件判断语句。流程控制语句一般起以下3个作用:   选择,即根据条件跳转到不同的执行序列;   循环,即根据条件反复执行某个序列,当然每一次循环执行的输入输出可能会发生变

2016-08-08 10:49:13 632

原创 Go语言编程(六)之类型

布尔类型:bool整型:int8  byte  int16  int  uint  uintptr浮点类型:float32  float64复数类型:complex64  complex128字符串:string字符类型:rune错误类型:error此外,Go语言也支持以下这些复合类型指针(pointer)数组(array)切片(slice)字典

2016-08-05 15:13:31 301

原创 Go语言编程(五)之常量

在Go语言中,常量是指编译期间就已知且不可改变的值。常量可以是数值类型(包括整型、浮点型和复数类型)、布尔类型、字符串类型等。字面常量是指程序中硬编码的常量。Go语言的字面常量是无类型的。只要这个常量在相应类型的值域范围内,就可以作为该类型的常量。常量定义通过const关键字,可以给字面常量指定一个友好的名字:const Pi float64 = 3.1415926cons

2016-08-05 14:58:31 564

原创 Go语言编程(四)之变量

变量相当于对一块数据存储空间的命名,程序可以通过定义一个变量来申请一块数据存储空间,之后可以通过引用变量名来使用这块存储空间。变量声明   Go语言中使用var关键字声明变量,而类型信息放在变量名之后。变量声明不需要使用分号作为结束符。示例如下var v1 intvar v2 stringvar v3 [10]int // 数组var v4 []

2016-08-05 11:49:14 360

原创 Go语言编程(三)之过过瘾

开发一个基于命令行的计算器程序。工程下载地址如下:https://github.com/JoeySheng/calcproj.git编译过程:1. 为了能够构建这个工程,需要先把这个工程的根目录加入到环境变量GOPATH中。假设calcproj目录位于~/go下,则应编辑~/.bash_profile文件,并添加下面这行代码:  export GOPATH=~/go/calcp

2016-08-05 09:55:32 417

原创 Go语言编程(二)之编译环境

第一个Go程序代码清单  hello.gopackage mainimport "fmt" // 我们需要使用fmt包中的Println()函数func main() { fmt.Println("Hello, world.");}

2016-08-03 23:41:52 589

原创 Android WebView 播放视频的问题(只有声音没有图像)

使用Android自带的Webview加载带有视频的网页,出现视频只有声音没有图像的问题,究其原因,需要对webview添加硬件加速,只要对webview添加即可,代码如下mWebView.setLayerType(View.LAYER_TYPE_HARDWARE, null);不对webview所在的activity添加也是可以的。

2016-08-03 19:45:32 12565 4

原创 Android动态加载插件APK

问题起因我曾经在开发Android Application的过程中遇到过那个有名的65k方法数的问题。如果你开发的应用程序变得非常庞大,你八成会遇到这个问题。这个问题实际上体现为两个方面:一、65k方法数Android的APK安装包将编译后的字节码放在dex格式的文件中,供Android的JVM加载执行。不幸的是,单个dex文件的方法数被限制在了65536之内,这其中除了我们自己实

2016-08-03 15:01:26 2461

原创 Android动态加载基础 ClassLoader工作机制

类加载器ClassLoader早期使用过Eclipse等Java编写的软件的同学可能比较熟悉,Eclipse可以加载许多第三方的插件(或者叫扩展),这就是动态加载。这些插件大多是一些Jar包,而使用插件其实就是动态加载Jar包里的Class进行工作。这其实非常好理解,Java代码都是写在Class里面的,程序运行在虚拟机上时,虚拟机需要把需要的Class加载进来才能创建实例对象并工作,而完成这

2016-08-03 11:17:00 2485 3

原创 Go语言编程(一)之Go语言特性

Go语言特性自动垃圾回收更丰富的内置类型函数多返回值错误处理匿名函数和闭包类型和接口并发编程反射语言交互性

2016-08-02 22:30:25 692

原创 Node.js编程规范

前言   并没有一个官方的文档规定Node.js应用程序代码的风格,但Node.js代码分割有着一些“事实上的约定”,大多数项目的代码都已定程度上遵循了这一标准。作为Node.js开发新手,我认为有必要遵守这个约定,以便于今后的交流。追根溯源,这个规范发轫于Node.js核心模块的实现,而Node.js核心模块的代码很大程度上符合JavaScript代码的一贯风格。   事实上代码风格永远

2016-08-02 16:52:06 924 1

原创 使用Facebook的create-react-app快速构建React开发环境

create-react-app:来自 Facebook官方的零配置命令行工具create-react-app 是来自于 Facebook 出品的零配置命令行工具,能够帮你自动创建基于 Webpack+ES6 的最简易的 React 项目模板,有助于初学者快速上手实践。安装 create-react-app 的方式也非常简单,可以直接使用npm命令进行全局安装。npm install -g

2016-08-01 17:04:05 1692

原创 Android表情面板简单实现

源码下载地址:http://download.csdn.net/detail/joeysheng/9591767github下载地址:https://github.com/JoeySheng/EmojiDemo

2016-08-01 15:20:42 831

原创 SparseArray替代HashMap提高性能

SparseArray是 Android框架独有的类,在标准的JDK中不存在这个类。它要比 HashMap 节省内存,某些情况下比HashMap性能更好,按照官方问答的解释,主要是因为SparseArray不需要对key和value进行auto- boxing(将原始类型封装为对象类型,比如把int类型封装成Integer类型),结构比HashMap简单(SparseArray内部主要使用 两

2016-08-01 13:11:48 695

使用Go语言实现的简易计算器

使用Go语言实现的简易计算器

2016-08-05

Android动态加载插件apk

Android动态加载插件apk模版工程

2016-08-03

Android表情面板简单实现

Android表情面板的简单实现

2016-08-01

Stomp over websocket for android

Android WebSocket并没有原生的支持,所以那些第三方库如雨后春笋的出现了,那些就不举例了,这里就把一些最简单的开源的东西整合到一起,并且加入了对STOMP的支持,这里命名为cn.fullstacks.websocket

2016-07-20

混淆打包Android library工程的混淆配置文件

混淆打包Android library工程的混淆配置文件

2016-07-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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