- 博客(218)
- 资源 (14)
- 收藏
- 关注
转载 关于大型网站技术演进的思考(四):存储的瓶颈(4)
如果数据库需要进行水平拆分,这其实是一件很开心的事情,因为它代表公司的业务正在迅猛的增长,对于开发人员而言那就是有不尽的项目可以做,虽然会感觉很忙,但是人过的充实,心里也踏实。数据库水平拆分简单说来就是先将原数据库里的一张表在做垂直拆分出来放置在单独的数据库和单独的表里后更进一步的把本来是一个整体的表进一步拆分成多张表,每一张表都用独立的数据库进行存储。当表被水平拆分后,原数据表成为了一个逻辑的概
2016-02-03 15:53:11 1040
转载 关于大型网站技术演进的思考(三):存储的瓶颈(3)
存储的瓶颈写到现在就要进入到深水区了,如果我们所做的网站已经到了做数据库垂直拆分和水平拆分的阶段,那么此时我们所面临的技术难度的挑战也会大大增强。这里我们先回顾下数据库的垂直拆分和水平拆分的定义:垂直拆分:把一个数据库中不同业务单元的数据分到不同的数据库里。水平拆分:是根据一定的规则把同一业务单元的数据拆分到多个数据库里。垂直拆分是一个粗粒度的拆分数据,它主要是将原来在一个数据库下的表拆分到不同的
2016-02-03 15:46:54 934
转载 关于大型网站技术演进的思考(二):存储的瓶颈(2)
上篇里我讲到某些网站在高并发下会报出503错误,503错误的含义是指网站服务端暂时无法提供服务的含义,503还表达了网站服务端现在有问题但是以后可能会提供正常的服务,对http协议熟悉的人都知道,5开头的响应码表达了服务端出现了问题,在我们开发测试时候最为常见的是500错误,500代表的含义是服务端程序出现了错误导致网站无法正常提供服务,500通常是服务端异常和错误所致,如果生产系统里发现了500
2016-02-03 14:41:04 793
转载 关于大型网站技术演进的思考(一):存储的瓶颈(1)
前不久公司请来了位互联网界的技术大牛跟我们做了一次大型网站架构的培训,两天12个小时信息量非常大,知识的广度和难度也非常大,培训完后我很难完整理出全部听到的知识,今天我换了个思路是回味这次培训,这个思路就是通过本人目前的经验和技术水平来思考下大型网站技术演进的过程。首先我们要思考一个问题,什么样的网站才是大型网站,从网站的技术指标角度考虑这个问题人们很容易犯一个毛病就是认为网站的访问量是衡量的指标
2016-02-03 14:40:11 1255
转载 RESTful最佳实践
背景目前互联网上充斥着大量的关于RESTful API(为方便,下文中“RESTful API ”简写为“API”)如何设计的文章,然而却没有一个”万能“的设计标准:如何鉴权?API 格式如何?你的API是否应该加入版本信息?当你开始写一个app的时候,特别是后端模型部分已经写完的时候,你不得不殚精竭虑的设计和实现自己app的public API部分。因为一旦发布,对外发布的API将会很难改变。在
2016-01-27 01:19:00 993
转载 RESTful
越来越多的人开始意识到,网站即软件,而且是一种新型的软件。这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency)、高并发等特点。网站开发,完全可以采用软件开发的模式。但是传统上,软件和网络是两个不同的领域,很少有交集;软件开发主要针对单机环境,网络则主要研究系统之间的通信。互联网的兴起,使得这两个领域开始融合,现在我们必须考虑,如何开发
2016-01-27 01:03:38 638
转载 Zend Studio配置
在上一篇 PHP 系列的文章 《PHP 集成开发环境比较》 中 ,我根据自己的亲身体验,非常简略的介绍和对比了几款常用的集成开发环境 ,就我个人而言,比较推崇 Zend Studio 和 PhpStorm ,在随手问过度娘和谷歌之后,我发现可以搜到很多 Windows 下介绍配置的版本,却鲜有关于 Mac 下的配置信息,于是我决定自己写一篇。 本文主要阐述在 Mac 下对 PhpStorm 开发
2016-01-22 17:51:59 1167
转载 IOS URL中文乱码
发现NSString类中有内置的方法可以实现。他们分别是:- (NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)encoding- (NSString *)stringByReplacingPercentEscapesUsingEncoding:(NSStringEncoding)encoding
2015-11-05 10:50:29 4307
转载 java.lang.OutOfMemoryError: PermGen space及其解决方法
PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space从表面上看就是内存益出,解决方法也一定是加大内存。说说为什么会内存益出:这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同
2015-10-23 10:13:45 1259
翻译 关于Android import-module 和NDK_MODULE_PATH
=========================== 一、将NDK代码模块化 二、导出一个预编译库===========================一、将NDK代码模块化Android module paths (sharing code made easy): Android模块路径(方便共享代码):===========================================
2015-10-21 00:20:23 6372
转载 单元测试
本文相关的代码下载链接: http://download.csdn.net/detail/stevenhu_223/4895796 本文是在上一篇文章《java单元测试》的基础上继续讲解android的单元测试,android源码中引入了java单元测试的框架(android源码目录:l
2015-09-11 15:42:32 1187
转载 版本控制的分支策略及初步实践
这几天在网上查询了一些资料,了解到比较常见的版本控制分支策略有三种:不稳定主干策略、稳定主干策略、敏捷发布策略。下面是对这几种策略的摘录:不稳定主干策略使用用主干作为新功能开发主线,分支用作发布。被广泛的应用于开源项目。比较适合诸如传统软件产品的开发模式,比如微软的office等。bug修改需要在各个分支中合并。新代码在主干上开发,因此如果主干不能达到稳定的标准,就不可以进行发布。这种策略的好处是
2015-08-20 15:35:07 4267
转载 SVN不错的入门
SVN简介: 为什么要使用SVN? 程序员在编写程序的过程中,每个程序员都会生成很多不同的版本,这就需要程序员有效的管理代码,在需要的时候可以迅速,准确取出相应的版本。Subversion是什么? 它是一个自由/开源的版本控制系统,一组文件存放在中心版本库,记录每一次文件和目录的修改,Subversion允许把数据恢复到早期版本,或是检查数据修改的历史,Subversion可以通过网
2015-08-20 15:07:49 2189 4
转载 Jenkins + Gradle + Android
环境搭建http://blog.csdn.net/lzyzsd/article/details/42131637http://blog.csdn.net/voiceofnet/article/details/45197883http://blog.csdn.net/changemyself/article/details/39927381http://blog.csdn.net/changemys
2015-08-20 09:13:53 994
转载 解决NDK开发中Eclipse报错“Unresolved inclusion jni.h”的最终方法
解决NDK开发中Eclipse报错“Unresolved inclusion jni.h”的最终方法 2014-09-17 21:01 4729人阅读 评论(17) 收藏 举报在做NDK开发过程中有时候在eclipse里会遇到其无法处理inclusion导致symbol显示错误,网上有许多方法可以解决类似“Unresolved inclusion jni.h” 错误的方法,包括include pa
2015-08-06 19:13:27 1506
转载 Errors running builder 'Android Resource Manager' on&nb
Errors running builder 'Android Resource Manager' on&nbs (2014-12-30 16:01:13)转载▼ 进来在ADT中创建工程时,总是会出现NullPointerException的错误,折腾了大半天终于找到原因了这个问题,只出现在Mac OS X 及 安装了JDK1.7 的环境中。在更新了ADT23后很容易出现这个问题,如下图所示r
2015-08-06 16:25:39 1009
转载 【Tech-Android-Other】Android性能优化
随着技术的发展,智能手机硬件配置越来越高,可是它和现在的PC相比,其运算能力,续航能力,存储空间等都还是受到很大的限制,同时用户对手机的体验要求远远高于PC的桌面应用程序。以上理由,足以需要开发人员更加专心去实现和优化你的代码了。选择合适的算法和数据结构永远是开发人员最先应该考虑的事情。同时,我们应该时刻牢记,写出高效代码的两条基本的原则:(1)不要做不必要的事;(2)不要分配不必要的内存。我从去
2015-04-08 10:48:49 1248
转载 Android性能优化案例研究(下)
译者前言:在Android性能优化案例研究(上)中,作者Romain Guy将Falcon Pro这款应用作为例子,通过Android现有的工具追踪和分析了其隐藏的性能问题(重绘)。下篇作者将会带来如何解决此类问题的方法和思路。去掉冗余的图层为 了去掉重绘我们必须首先理解它从哪里产生的。这就轮到Hierarchy Viewer和Tracer for OpenGL大显身手的时候了。Hierarchy
2015-04-08 10:42:54 1206
转载 Android性能优化案例研究(上)
这是Google的Android开发工程师Romain Guy刊登在个人Blog上的一篇文章。Romain Guy 作为Android图形渲染和系统优化的专家,是Android 4.1中的“黄油项目”开发者之一。这篇译文将分为上下两个部分,上部分将通过一个实际的例子来展示如何利用现有的工具来定位Android应用程序的性能瓶颈,下部分将提供一些有效的方法来解决性能问题。希望能给读者和开发者带来启发
2015-04-08 10:42:21 1488
转载 Google 发布 Android 性能优化典范
2015年伊始,Google发布了关于Android性能优化典范的专题, 一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App。课程专题不仅仅介绍了Android系统中有关性能问题的底层工作原理,同时也介绍了如何通过工具来找出性能问题以及提升性能的建议。主要从三个 方面展开,Android的渲染机制,内存与GC,电量优化。下面是对这些问题和建议的总结梳理。0)Rend
2015-04-08 10:41:16 1629
转载 计算机视觉和模式识别的code
UIUC的Jia-Bin Huang同学收集了很多计算机视觉方面的代码,链接如下:https://netfiles.uiuc.edu/jbhuang1/www/resources/vision/index.html TypeTopicNameReferenceLinkCodeStructure from motionlibmv http://code.google.com/p/libmv/Code
2015-01-12 10:31:02 8160
转载 常用开源控件
Android开源项目第一篇——个性化控件(View)篇 包括ListView、ActionBar、Menu、ViewPager、Gallery、GridView、ImageView、ProgressBar、TextView、其他Android开源项目第二篇——工具库篇 包括依赖注入、图片缓存、网络相关、数据库ORM工具包、Android公共库、高版本向低版本兼容库、多媒体、事件总线、传感器、
2015-01-05 14:36:38 5277
转载 Ubuntu10.10源(升级软件包)
10.10停止支持11.10今停止支持赶紧更新吧或者lts版用几新LTS 12.04支持2017想用10.10自改apt配置编辑 /etc/apt/sources.list 文件 源址换 http://old-releases.ubuntu.com/ubuntu 注意要面系统版本类删
2014-08-08 17:20:52 2552
原创 android 添加新的键值,自定义按键
在android中,上层可使用的键值默认情况下是92个,从0-91;一般情况下,这些键值是够用的,但是如果想扩充的话,还是需要添加新的键值的,那么如何将一个新的键值从驱动的设置映射到上层,使应用可以对我们自定义的键值进行相应的处理呢? 对keypad来说,涉及到的文件有以下几个: 1,/vendor/qcom/7k_ffa_keypad.kl
2014-06-13 10:22:22 11961 2
原创 深入浅出 - Android系统移植与平台开发(十三)- Android的对象管理
第六章、Android的对象管理在Java中,不再使用的对象会通过gc机制来自动回收,而Android系统运行时库层代码是由C++编写的,在C++中创建的对象通常使用指针来操作,一旦使用不当,轻则造成内存泄漏,重则造成系统崩溃。不过在Android源码实现中,它为我们提供了智能指针来对C++对象进行管理,这使得程序员不再需要关注对象的生命周期、对象是否已经释放。本章主要内容如下:l 智能指针l R
2014-06-11 22:11:03 7567 1
原创 深入浅出 - Android系统移植与平台开发(十二)- Android JNI机制
第五章、JNI机制4.1 JNI概述 由前面基础知识可知,Android的应用层由Java语言编写,Framework框架层则是由Java代码与C/C++语言实现,之所以由两种不同的语言组合开发框架层,是因为Java代码是与硬件环境彻底“隔离”的跨平台语言,Java代码无法直接操作硬件。比如:Android系统支持大量传感器,Java运行在虚拟机中,无法直接得到传感器数据,而Android系统基于
2014-06-11 22:05:37 16791 3
原创 深入浅出 - Android系统移植与平台开发(十一)- Android系统的定制
4.3定制Android平台系统通常产品厂商在拿到Android源码后会在Android源码基础上进行定制修改,以匹配适应自己的产品,从本节开始,我们从最原始的Android源码系统里一步一步定制出自己的Android系统。本节主要内容包含:根据Android源码,添加新产品编译项,定制系统启动界面和文字,定制系统启动动画和声音,定制系统桌面。4.3.1 添加新产品编译项Android系统的源代码
2014-06-11 22:01:06 69747 3
原创 深入浅出 - Android系统移植与平台开发(十)- Android编译系统与定制Android平台系统
第四章、Android编译系统与定制Android平台系统 4.1Android编译系统Android的源码由几十万个文件构成,这些文件之间有的相互依赖,有的又相互独立,它们按功能或类型又被放到不同目录下,对于这个大的一个工程,Android通过自己的编译系统完成编译过程。4.1.1 Android编译系统介绍Android和Linux一样,他们的编译系统都是通过Makefile工具来组织编译源码
2014-06-11 21:51:01 13846
原创 深入浅出 - Android系统移植与平台开发(九)- Android系统system_server及Home启动
3.3 Zygote守护进程与system_server进程Android的运行环境和Java运行环境有着本质的区别,在Android系统中每个应用程序都是一独立的进程,当一个进程死掉时,不会影响其它进程的运行,这能极大的保证Android系统的稳定。 Zygote守护进程的启动是Android运行环境启动的开始阶段, Zygote进程通过Linux系统特有的Fork机制分裂克隆出完全相同的运行环
2014-06-11 21:46:07 10349
原创 深入浅出 - Android系统移植与平台开发(八)- Android系统的本地服务
3.2 Android本地守护进程由上节可知,最后一个Action boot的最后一个Command为class_startdefault,用来启动所有class为default的Service,其实在init.rc里定义的Service其class类别都没有定义,都使用default,这也意味着所有的Service都会被class_startdefault命令启动,下面列表了Android2.3
2014-06-11 21:36:24 6958 2
原创 深入浅出 - Android系统移植与平台开发(七)- Android系统的启动
第三章、Android系统的启动本章节主要介绍Android系统从init进程启动开始到Android的桌面启动的全部过程。本章节主要内容:Ø Android init进程启动Ø Android本地守护进程启动Ø Zygote进程的启动及SystemServer进程的创建Ø Android系统服务的启动Ø Android桌面HOME的启动3.1 Android init进程启动Linux被boot
2014-06-11 21:22:26 9581 2
原创 Android蓝牙调试助手
PS:最近一直在搞Android上的蓝牙应用,每次在PC上调试蓝牙设备中的数据还可以,但是在Android手机上就非常不方便,所以自己写了个简单的Android蓝牙调试助手,希望各位下载使用,如有问题和Bug跟贴。源码下载地址:https://github.com/michaeltom/BluetoothHelper程序文件名:BluetoothHelper.apk...
2014-05-17 19:49:54 35494 21
原创 Android系统访问串口设备
在常见的嵌入式外设中,串口通信是经常使用的一种通信机制,本篇文章给你带来,如何在Android系统中实现对串口设备的访问。在Android中如何访问底层Linux的设备驱动,必然要用到HAL,即:硬件抽象层。关于HAL的概念及框架分析,请查看作者的下面几篇博文。 > 深入浅出 - Android系统移植与平台开发(七)- 初识HAL http://blog.csdn.net/mr_raptor
2014-03-13 11:44:56 43716 7
原创 深入浅出 - Android系统移植与平台开发(六)- 搭建基于Linux的Android开发环境
2.4搭建Android SDK开发环境上一节我们讲解了如何下载、编译Android系统及Linux内核,接下来,讲解如何搭建Android SDK开发环境,包括Eclipse下载安装、ADT插件安装、Framework源码级调试、定制Android系统等相关知识。2.4.1 下载、安装Eclipse说明:当前新的SDK开发环境Google采用了ADT Bundle,如果为了方便安装和
2014-03-11 11:55:28 15664 6
原创 深入浅出 - Android系统移植与平台开发(五)- 编译Android源码
2.3编译Android源码Android源码体积非常庞大,由Dalvik虚拟机、Linux内核、编译系统、框架代码、Android定制C库、测试套件、系统应用程序等部分组成,在编译Android源码之前,必须要先掌握Android源码的组成。2.3.1Android源码目录结构在Android源码中,按照不同功能代码被放在不同的目录下:目录描述
2014-03-10 17:09:30 26782 1
原创 深入浅出 - Android系统移植与平台开发(四)- 搭建Linux编译环境
Android的源码开发可以在MacOS上或Ubuntu系统上,目前不支持在Windows下进行源码开发,在Ubuntu上建立开发环境的步骤如下:Ø 建立Linux编译环境Ø 安装JDKØ 安装编译必备程序包Ø 下载Android源码及Linux内核注:本书中使用的是针对Android2.3开发环境,并没有使用最新Android版本,原因其一是,Android版本升级比较频繁,
2014-03-10 16:53:10 16446 3
原创 深入浅出 - Android系统移植与平台开发(三)- 配置Vmware网络
2.1.3 VMware网络配置VMware软件的强大之处在于它能够保证虚拟机和宿主机平等并列运行,并且让二者进行网络通信,而我们在开发Android系统应用时会使用到网络,将来做Android系统移植时更需要网络的支持,因此VMware的网络配置对开发者非常重要。Ø 宿主机网络接口:在安装完VMware软件后,在宿主机的网络连接里自动创建了三个虚拟网卡:VMnet0、VMnet1和VMnet8
2013-05-17 16:49:10 11605 8
原创 深入浅出 - Android系统移植与平台开发(二)- 安装Vmware虚拟机及Ubuntu12.04
第一章、Android源码开发环境搭建本章节主要讲解如何搭建基于Ubuntu的Android开发环境,为后面章节的内容讲解做铺垫。本章节主要内容:l 安装VMware虚拟机软件l 安装Ubuntu操作系统l VMware网络配置l VMware与主机数据共享l VMware添加新硬件l JDK安装l 安装Android编译工具l 下载Android源码2.1搭建主机虚拟机环境And
2013-05-17 16:38:29 12131 1
原创 深入浅出 - Android系统移植与平台开发(一)
写在前面的 这是我最近两年的Android开发的经验总结,断断续续的写了几个月了,欢迎大家砖头,有不对的地方,或需要改进的地方,请指出来,先贴出来目录来看看。第一章、 概述... 51.1 Android 操作系统介绍.... 51.2 Android软件架构介绍.... 61.3 Android子系统介绍.... 71.
2013-05-17 16:25:44 22321 11
类似QQ蓝牙聊天室
2014-10-13
BluetoothHelper
2014-07-31
蓝牙调试助手
2014-05-17
Android访问串口设备源码
2014-03-13
Android系统访问串口设备源码
2014-03-13
基于Linux的消息队列及多线程编程实现的聊天室
2013-01-09
miniOS_v2.0免积分
2012-03-28
miniOS_V2.0源码
2012-03-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人