自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(103)
  • 资源 (11)
  • 收藏
  • 关注

原创 3D 实时全局光照技术(二)——直接光照

游戏引擎中的直接光照一般分为两大类:光源和环境光。光源一般有:平行光、点光源、聚光源、面光源等,而作为直接光照的环境光一般是指[1]。中提到,实时全局光照考虑的是直接光照和一次弹射的间接光照,本文会重点介绍各类的着色计算方法。

2023-02-06 15:53:35 524

原创 实时全局光照技术(一)——开篇

本系列文章将以实时全局光照为切入点来介绍不同时期人们提出的精妙的算法理论,看看这些理论是如何解渲染方程的,最后还会介绍虚幻引擎(UnrealEngine)中的全局光照背后是如何应用这些算法的。本篇是实时全局光照技术的开篇,将介绍全局光照的概念,怎么理解实时全局光照中的“实时”;本系列文章主要介绍的是光照相关的技术理论,但是避免不了牵涉 BRDF 和 Render Equation 相关内容,所以在进入系列篇章之前我会对这些内容做一些简单介绍,可以作为前置阅读资料,也可以在后面的篇章中遇到了再回头来看。

2023-02-01 19:40:15 651

原创 一个 web 开发者眼中的技术美术(TA—Technical Artist)

其实 TA 从某一个维度还可以分为美术向 TA 和 技术向 TA,现在有一个比较多人认同的观点是:美术我们也称为艺术家,他们是更偏感性的,而技术则更偏理性,想两者都很深入是非常难的;而 TA 一般情况下也确实不需要两方面都非常深入,能够掌握处理交叉问题的能力就好。我也很认同这个观点,不过我还是想两方面都尽量深入一点,毕竟我都很感兴趣,知识嘛,贪婪一点也不是坏事~

2023-01-05 15:19:12 365

原创 Javascript 解惑 (一)

Javascript 引擎与运行时环境Javascript 引擎和运行时环境这两个概念很容易被弄混,但它俩真不是一个东西。Javascript 引擎做的事情是实现 ECMAScript 标准,解释(或编译) Javascript 代码;而运行环境是包括引擎并提供一些类库让 Javascript 代码能够在其上运行,例如 Chrome, Node。

2016-08-01 00:59:37 870

翻译 打造atom成为golang开发神器

无论你是Sublime Text爱好者还是VIM粉丝,你都应该尝试使用一下1.0版本的atom。

2015-12-29 00:37:30 27241 2

原创 Gitflow实践

Gitflow实践这两周在和别的团队的两个小伙伴开发新项目,他们团队刚刚成立不久,各种规范还没跟上,于是我便各种安利我们团队的工作流,其中代码管理方面我就推荐他们使用gitflow。在给他们讲gitflow的过程中我发现他们不是很理解这种工作方式,或者说不太明白为什么要这样做,为了加深自己对gitflow的理解我觉得有必要记录一下,也让正在学习使用gitflow的同学们有个初步的了解。

2015-12-16 01:14:03 2724

原创 Koa中间件方式实现API的Undo功能

不要在用户每做一步操作时弹出Alert让用户选择"确定"或者"取消",更好的做法是执行操作,然后让用户能够Undo

2015-05-08 23:12:05 2809

翻译 Twemproxy来自Twitter的Redis代理

在大量用户大规模使用大型Redis节点的时候,目前从项目本身来看Redis基本上可以说是一个单例的业务。关于这个项目的分布式我有一个很大的想法,在这个想法下,我不需要去对多线程版本的Redis做任何评估:在这个角度上对我来说,一个核就像是一台计算机,所以在多核上扩展就相当于分布在计算机之间的集群。多实例是一个无共享的架构。如果我们找到一个可用的方式来分片,那么所有事情就合理了

2014-12-31 22:35:41 3108

原创 设计高可用Web服务

高可用的设计可以说是web服务架构的目标,如果服务达不到高可用,万一出现故障将会对产品带来重大的负面影响。高可用的架构就是能够让服务在任何情况下都能正常响应,比如双十一的淘宝,面对激增的洪峰照样正常工作;而聚美三周年时服务器的宕机恰好是高可用的反例。在服务架构时,我们不能相信任何一个环节是100%没问题的,服务的每个层级,使用的数据库,缓存,甚至是服务器本身,服务器放置的机房这些硬件环节都不能完全相信。如果我们假设每个环节都有可能出现问题,在每个环节出现问题时都有方案应对,那么这样设计出来的服务一定就是高

2014-12-28 23:22:03 5053 9

翻译 从S3中导入数据到Dynamodb

本节假设你已经从Dynamodb中导出过数据,并且导出的文件以及被存入S3。文件内部结构会在Verify Data Export File 中描述。我们称之前导出数据的原始表为source table,数据将要被导入的表为destination table。你可以将S3中的导出文件导入到dynamodb的表中,但是要先确保满足下面条件:The destination table 已经存在。 (导入任务不会为你创建表)The destination table 与 source table 有相同的名称

2014-12-19 19:04:20 3144

翻译 Aws Dynamodb数据导出到S3

本节将描述如何从一个或多个DynamoDB的表导出数据到S3的bucket中。

2014-12-19 11:55:21 3968 1

转载 js中(function(){…})()立即执行函数写法理解

转自:js中(function(){…})()立即执行函数写法理解

2014-11-14 18:09:17 1152

翻译 Android学习路线(三十三)缓存Bitmap

加载一个bitmap到UI上是很简单的,然而,如果要一次加载一个大的图片集事情就变的复杂了许多。在多数情况下(例如在使用在ListView, GridView 和 ViewPager中),屏幕上的图片以及将要滚动到屏幕的图片的总数大体上是无限的。内存使用量可以通过回收不在屏幕上显示的子View来保持较低的状态。在不保持引用长期有效的情况下,GC也会将这些加载过的bitmaps回收。 这样做其实很好,但是要保持一个流畅快速响应的UI,你可能想要避免每次都重复的加载图片近内存。在这种情况下,磁盘加上内存双重

2014-10-31 23:43:14 1126

翻译 Android学习路线(三十二)在非UI线程中处理Bitmap

如果图片源数据是从硬盘,网络或是其他非内存中读取的话,在高效地夹在大Bitmaps 中讨论的BitmapFactory.decode*方法就不能在主线程(UI线程)中执行。这种数据加载进内存的时间是不可预测的,并且还要依赖各种其他因素(磁盘读取速度,网络速度,图片大小,CPU性能等等)。如果这些任务的其中之一阻塞了UI线程,那么系统就认为你的app处于无响应状态并且弹出对话框提示用户关闭app。

2014-10-31 23:41:35 1446

翻译 Android学习路线(三十一)高效地加载大的Bitmap

图片的大小形状千变万化。在很多情况下图片都比一个app的UI所需要展示的大小大很多。例如,系统的相册应用所展示的用系统相机拍摄的相片,这些相片比手机屏幕的分辨率大得多。假设你的app所使用的内存有限制,理想情况下你只想要在内存中加载一个较低分辨率的图片。同事这个低分辨率的图片要匹配用来显示它的UI组件的大小。高分辨率的图片并不能带来任何可见的好处,但是仍然会消耗珍贵的内存同时还会导致额外的性能开销。

2014-10-31 23:40:38 1121

翻译 Android学习路线(三十)高效地显示Bitmaps

学习如何使用常规的技术来加载Bitmap 对象,保持你的UI灵敏,同时避免溢出应用内存限制。

2014-10-31 23:39:24 1132

翻译 Android学习路线(二十八)保存文件

Android使用了一个类似其他平台的基于磁盘的文件系统。本课将介绍如何使用android的文件APIS来在这样的文件系统中读写文件。

2014-09-30 23:57:47 1549

翻译 Android学习路线(二十六)Android数据存储

大部分的Android应用都需要保存数据,甚至是为了让用户在 onPause() 时不至于丢失数据都需要保存信息。大多数一般的app同样需要保存用户设置的数据,而一些app则必须在文件或是数据库中管理大量的账号信息。

2014-09-30 23:56:52 1178

翻译 Android学习路线(二十七)键值对(SharedPreferences)存储

如果你又一个相对较小的键值对数据想要保存,你应该使用SharedPreferences APIs。一个SharedPreferences 对象指向一个包含键值对的文件,它提供简单的方法来读写他们。每个SharedPreferences 文件系统框架管理,它们可以是私有的也可以被共享。

2014-09-30 23:56:29 2243

翻译 Android学习路线(二十九)保存数据到SQLite中

对于可复用或者结构化的数据来说,把它们存储到数据库中是理想的方式。学习本课前你需要对通常的数据库有所了解,本课在此前提下会帮助你学习如何在android系统中操作SQLite数据库。你需要使用到的APIs都可以在android.database.sqlite 包中访问到。

2014-09-30 23:55:32 1478

原创 Android学习路线(二十五)全面理解Android Navigation逻辑

应用导航的一致性是整体用户体验的重要组成部分,如果app的导航方式不一样,用户不能很快理解,那么这个应用会让用户有很大的挫败感,大大地影响了用户体验。Android 3.0后,系统像大家介绍了其在全局导航表现上的重大改变。全面地理解“Back”以及“Up”的导航效果以及意义,能够大大地减少用户的学习时间,用户在使用过程中很快能够学习如何在应用的各个界面间的切换。

2014-08-27 01:23:17 4985 10

原创 Zookeeper集群搭建

Zookeeper是Apache的一个开源项目,在集群管理中十分常用。它的集群搭建也十分简单,只需要简单的配置,集群的各个节点会完成自行通讯,自动选取Leader等。

2014-08-26 10:05:51 2249

原创 Android学习路线(二十四)ActionBar Fragment运用最佳实践

通过前面的几篇博客,大家看到了Google是如何解释action bar和fragment以及推荐的用法。俗话说没有demo的博客不是好博客,下面我会介绍一下action bar和fragment在实战中的应用,以及相关demo源码,希望和大家相互交流。了解过fragment的同学们应该都知道,fragment是android 3.0版本才出现的的,因此如果要在支持android 3.0一下版本的工程中使用fragment的话是需要添加Support Library的。具体如何添加我就不再赘述,可以看我前

2014-08-21 03:03:52 11527 21

翻译 Android学习路线(二十三)运用Fragment构建动态UI——Fragment间通讯

为了要重用Fragment的UI组件,你应该为它们每一个都构建一个完整独立的,模块化的组件来定义他自身的布局和行为。一旦你定义了这些可重用的Fragments,你可以通过activity关联它们同时通过应用逻辑连接它们来实现所有复杂的UI。

2014-08-15 00:07:26 2361

翻译 Android学习路线(二十二)运用Fragment构建动态UI——构建一个灵活的UI

当你设计你的应用来支持多个屏幕尺寸,你可以基于可用的屏幕空间通过在不同的布局上重用fragment来优化用户体验。

2014-08-15 00:07:22 2295

翻译 Android学习路线(二十一)运用Fragment构建动态UI——创建一个Fragment

你可以把fragment看成是activity的模块化部分,它拥有自己的生命周期,接受它自己的输入事件,你可以在activity运行时添加或者删除它(有点像是一个“子activity”,你可以在不同的activity中重用它)。本课将向你展示如何使用Support Libaray继承 Fragment 类来让你的应用能够兼容正在运行Android 1.6的设备。

2014-08-14 23:25:12 2848 1

翻译 Android学习路线(二十)运用Fragment构建动态UI

要在Android系统上创建一个动态或者多面板的用户界面,你需要将UI组件以及activity行为封装成模块,让它能够在你的activity中灵活地切换显示与隐藏。你可以使用Fragment类来创建这些模块,它们能够表现得有些像嵌套的activity,它们定义着自己的布局,管理自己的生命周期。

2014-08-14 22:29:14 1936

转载 git - 简易指南(原文:http://www.bootcss.com/p/git-guide/)

git - 简易指南助你开始使用 git 的简易指南,木有高深内容,;)。Tweet作者:罗杰·杜德勒 感谢:@tfnico, @fhd and Namics其他语言 english, deutsch, español, français, italiano, nederlands, português, русский, türkçe, မြန်မာ, 日本語, 한국

2014-08-14 00:48:50 1471

翻译 Android学习路线(十九)支持不同设备——支持不同(Android)平台版本

当最新的Android版本为你的应用提供着很棒的APIs时,你却要在更多的设备更新之前继续支持老的系统版本。这篇课程如何在继续支持低版本的系统的情况下使用新版本的高级API。Platform Versions 仪表板展示了最新的活跃设备上运行的Android系统版本的分布,基于设备访问Google Play商店的次数。通常情况下,支持90%的活跃设备同时使用最新版本作为target是一个好习惯。

2014-08-13 01:20:13 1984

翻译 Android学习路线(十八)支持不同设备——支持不同的屏幕

Android系统使用两个普通属性:尺寸和密度,来对设备屏幕进行分类。你需要先预测你的应用将会在什么样屏幕的设备上安装,包括屏幕尺寸和密度。这样的话,你就需要提供一些可选的资源类让你的应用在不同屏幕的设备上有最佳的展示。

2014-08-13 00:37:43 2245

翻译 Android学习路线(十七)支持不同设备——支持不同的语言

将UI中的字符串从应用代码中提取出来并存放在额外的文件中是一个好习惯。Android在每个项目中通过一个资源目录让这件事变得很简单。

2014-08-12 23:57:33 1164

翻译 Android学习路线(十六)支持不同设备

全世界的Android 设备有很多很多不同的形状和大小。凭借着广泛的设备类型,你的应用程序可以有机会拥有一个庞大的用户群。为了让你的应用在android平台上更成功,你的应用需要适配各种设备类型。有几个重要的差异必须被考虑进去,包括不同的语言,屏幕尺寸以及android平台版本。

2014-08-12 23:28:22 1033

翻译 Android学习路线(十五)Activity生命周期——重新创建(Recreating)一个Activity

有几个你的activity由于正常行为被销毁的场景,例如当用户点击了返回键,或者你的activity接收到自身调用 finish()方法发送的销毁信号。系统还可能会销毁那些被停止后长时间没有被使用到的activity,或者前台的activity需要更多的资源,系统会关闭后台进程来回收内存。

2014-08-09 02:09:11 2672 1

翻译 Android学习路线(十四)Activity生命周期——停止和重启(Stopping and Restarting)一个Activity

Activity 类提供了这两个生命周期方法,onStop() 和onRestart(),来允许你指定如何处理activity被停止和重启的情况。不像暂停状态,有一部分UI被遮挡,停止状态下UI完全不可见,同时用户的焦点在另一个activity上(或者另一个应用)。

2014-08-09 02:04:10 3007

翻译 Android学习路线(十三)Activity生命周期——暂停和恢复(Pausing and Resuming )一个Activity

在正常使用应用的过程中,前台的activity在一些时候会被其他的组件遮挡,导致这个activity暂停。举个例子,当一个半透明的activity被打开(例如一个dialog样式的activity),它之前的activity就会暂停。如果这个activity长时间一直只能部分可见并且获取不到当前的焦点,它就保持暂停状态。

2014-08-09 02:00:03 3186

翻译 Android学习路线(十二)Activity生命周期——启动一个Activity

不像其它的编程模式那样应用是通过main()函数启动的,Android系统通过调用特定的回调方法对应着特定的生命周期阶段,来初始化一个Activity 实例中的代码。有一系列的方法来启动一个activity,同时也有一系列的方法来销毁activity。本课展示了大多数重要生命周期方法的预览,并且告诉你如何处理第一个生命周期方法来创建一个新的activity实例。

2014-08-08 08:22:40 2286 1

翻译 Android学习路线(十一)管理Activity的生命周期

当一个用户进入,退出,再次进入你的应用时,你的应用中的Activity 会在它的生命周期的各个状态下切换。例如,当你的activity第一次启动,它出现在系统的前方接受用户的焦点。在这个过程中,Android系统调用了一系列的生命周期方法来设置UI和其他组件。如果用户执行了一个操作,启动了另一个activity或者切换到其它应用中,你的activity会移动到后台(这时activity已经不可见,但是它的实力和状态都保持不变),系统会调用另外的一些生命周期方法。

2014-08-08 08:08:42 1592

转载 GIT基本概念和用法总结

GIT基本概念和用法总结 [email protected] 在日常使用GIT过程中,经常会出错,比如无意间丢失了未提交的数据,回退版本时丢失了工作目录,等等。经过思考发现,所有这些错误都是因为对GIT中一些基本的概念模糊而导致,因为对一些基本概念不清晰,导致对GIT每一条命令将会产生的结果不符合预期。下面我就梳理以下我经常碰到的问题相关的基本概念。 1. Wor

2014-08-07 10:56:14 1193

翻译 Android学习路线(十)如何将Action Bar叠放在你的布局上

默认情况下,action bar出现在activity窗口的顶部,略微减少了activity布局的总空间。如果你想隐藏或者显示action bar,在这堂用户体验的课程中,你可以通过调用hide() 和show() 方法来实现。然后这样会导致你的activity基于它的新大小重新计算和绘制布局。

2014-08-07 01:07:18 3163

翻译 Android学习路线(九)为Action Bar添加Style

Action bar为用户提供熟悉且可预测的方式来执行actions和导航应用,但是那并不意味着它需要和别的应用的action bar看起来完全一样。如果你想要去设计你的action的风格,让它更适合你的产品的品牌,你可以通过使用Android的style and theme 资源很容易做到这些。

2014-08-07 00:58:54 2948

Android Design中文版

Google推荐Android设计文档,设计适合Android风格的App。 百度用户体验团队翻译中文版本。

2014-08-28

actionbar,fragment最佳实践demo

Android学习路线(二十四)ActionBar Fragment运用最佳实践demo, 博客地址:http://blog.csdn.net/sweetvvck/article/details/38645297

2014-08-21

创建Fragment Demo

Android学习路线 创建一个fragment demo

2014-08-15

Android声明周期DEMO

Android声明周期管理,生命周期方法学习,理解; 博客地址:http://blog.csdn.net/sweetvvck/article/details/38433847

2014-08-08

Android自定义Progressbar

Android自定义Progressbar, 任何图片都能够像Porgressbar一样转动

2014-04-16

ActionBarPull2Refresh

Google 最新的ActionPullToRefresh效果, 在google官方的应用中都使用了这种效果...

2014-04-13

Android support-v4

Android support 包v4 Android support 包v4

2014-03-29

鸟哥的私房菜

鸟哥的私房菜

2014-02-17

计组第四版课后习题参考

计算机组成原理第四版课后习题参考

2014-02-17

CalendarViewTest

使用ViewPager实现左右“无限”滑动的日历 启动时显示本月,可以左右滑动显示上下月

2013-08-25

sqlite详解项目demo

sqlite详解项目demo,详细描述了在android环境下对sqlite数据库的增删改查操作

2013-05-29

空空如也

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

TA关注的人

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