Menu Home

从AndroidStudio的启动参数开始,了解一下JVM的一些东西(内存使用,JIT等)

如果你使用AndroidStudio经常觉得很卡,那有可能是因为系统给AS分配的内存不够的原因。打开/Applications/Android Studio.app/Contents/bin/studio.vmoptions (Mac),可以看到有以下配置: -Xms128m -Xmx750m -XX:MaxPermSize=350m -XX:ReservedCodeCacheSize=96m -XX:+UseCompressedOops 这些参数分别是什么意思呢? ####-Xms128m The -Xms option sets the initial and minimum Java heap size. The Java heap (the “heap”) is the part of the memory where blocks of memory are allocated to objects and freed during garbage collection. 就是JVM启动的起始堆内存,堆内存是分配给对象的内存。这里我把它改成了512m ####-Xmx750m This option sets […]

在Rails app中使用Bootstrap

这篇文章基本上算是对railscast 328: Twitter Bootstrap Basics 的一个学习总结。提供一个step-by-step的guide。同时也加入了一些需要注意的地方,比如说这个video cast是2012年做的,到现在为止无论是rails还是bootstrap都变了很多,在rails里面使用bootstrap的方法也有所不同。 让rails支持LESS Rails使用的CSS precompiler是SASS,而Bootstrap使用的是LESS,因为Rails不支持LESS,所以首先要使用一个第三方的library让Rails支持LESS。 在Gemfile 里面加入 gem ‘less-rails’ gem ‘twitter-bootstrap-rails’ 在这里可以了解到更多关于LESS和SASS的信息。 注意:在railscast里面说的是将gem twitter-bootstrap-rails加入到Gemfile的assets group里面就好了。这里有两个问题,一是rails4里面将assets 这个group 去掉了,二是twitter-bootstrap-rails这个gem不自带less-rails,所以我们要手动添加。 2. 执行bundle install to install the gem。 3. 执行rails g bootstrap:install less –no-coffeescript 这句话的作用是将Bootstrap的一些CSS等文件加入到我们的rails app里面。这个命令的输出如下: 可以看到,这个命令增加了三个文件,修改了两个文件。到此为止,你就可以在rails里面使用Bootstrap的style了。至于怎么样使用Bootstrap把页面变得更漂亮,那就看你的CSS跟Bootstrap技术了。 当然,话说回来,twitter-bootstrap-rails作为一个ruby gem,如果它的作用只是将bootstrap,那也实在是有点弱。其实它还给我们带来了很多使用bootstrap的便利和快捷方法。在这个gem的github官网 可以看到详细的教程。这里介绍一个我试用过的,也是最基本的用法。 rails g bootstrap:themed [RESOURCE_NAME] Resource就是Entity在Rails里面的叫法,类似于一个JavaBean的概念,需要注意的是,这里要用Resource的复数。比如我们创建一个博客文章的评论的entity: rails g scaffold Comment […]

Java 8的Lambda及其在Android 开发中的应用

上次在盆友圈发了一张照片 上面的两段代码是完全等效的,但是代码行数从11行降低到了一行,更不用说在第一段代码里面,我在run方法的前后以及内部都没有加入任何的空行。由此可以看出,使用lambda可以让你的Java代码在某些情况下达到何等的简洁。 那么问题来了。。。 什么叫lambda呢? Java 8 给我们带来了lambda,然而在Oracle的文档中,我没有找到lambda的定义,wikipedia里面也没有找到适合Java中的lambda的定义。写这篇文章的时候,我在这里 看到一篇很好的介绍lambda的文章,它里面给了一个定义,我觉得还挺合适的。 A lambda expression is a block of code with parameters. lambda的写法 首先列举一个完整的lambda expression: (int a, int b) -> { System.out.println(“Performing add operation…”); return a+b; } 一个lambda expression由三部分组成: – 参数:(int a, int b)是这个lambda expression的参数部分,包括参数类型和参数名 – 箭头:-> – 代码块:就是用”{}”包含着的那两句代码。 上面说的是一个完整的lambda表达式,在很多情况下,很多东西是可以省略的。比如说,当系统可以根据context自动推断出参数的类型的时候,参数类型是可以神略的。这样的话就可以写成: (a, b) -> { […]

1分钟学会Markdown

发现很多人对markdown都有一种偏见,以为是像HTML一样,是多么复杂的东西。其实markdown真的灰常灰常简单,有多简单呢?简单到看完这篇文章,你就会了。标题说一分钟学会,其实也不夸张,如果你能在一分钟之内看完这篇文章,那么不用一分钟,就会了。 首先介绍一下,markdown是什么东西,他就是在没有任何格式的纯文本的基础上,加上一些特殊的格式(比如粗体,斜体等)的语法。听起来有点像HTML,其实他的工作原理就是将它的一些语法转化成一些HTML tag,只不过使用上比HTML要简单多了。 基本的markdown就8条规则。在日常码字中,这8条规则足以满足95%的需求了。 1. 斜体 如果你想让某些文字变成斜体,只需要用一颗星“*”包围着他们就好了。比如 hello *world*! 将显示成 hello world! 2. 粗体 如果你想让某些文字变成粗体,只需要用两颗星“**”包围着他们就好了。比如 hello **world**! 将显示成 hello world! 3. 链接 [link title](link url) 比如: [个人主页](http://www.chriszou.com) 将显示成 个人主页 注意“]”和“(”之间不能有空格 4. 图片 图片与链接之间的区别是,在前面多了一个”!” ![链接描述](image_url) 将显示image_url所链接到的那个图片,如: ![美国队长](https://images4blogs.oss-cn-hangzhou.aliyuncs.com/images/ca.jpg) 将显示: 5. 标题 如果你想让文字变得粗大,像文章的标题一样,可以在前面加上“#”,如 # 1分钟学会markdown 将显示成: 1分钟学会markdown 需要注意的是,#和后面的文字之间需要有一个空格。 前面一个“#”为一级标题,是最粗最大的。二级标题为两个“#”,以此类推,共6级 6. 列表 列表有三种,分别对应三种语法: A) […]

如何学习一样东西

学习一样东西,除了要学习这个东西是什么,是干什么的,还要尽量去理解这个东西是如何work的,此外,更关键的事,要知道这个东西什么时候用,什么时候不能用。这个是很关键的!