购物记录:Sennheiser HD201

耳机坏了,所以买了一个头戴式的森海塞尔HD201,后来才发现当时的决定是错误的。当时入手价159。现在看来还是比较便宜的。这也是在“易迅”的第一单。
地址:http://item.51buy.com/item-705.html

HD201依然使用了该系列经典的黑色调,而耳罩背面则有一个椭圆形冷银色的区域,这样的搭配还是蛮不错的。另外,它还采用了很受欢迎的双边出线方式,其线材富有弹性、不容易缠结。从整体看上去,HD201透露着一种低调而专业的HiFi气质。

包装清单
耳机1副
转换插头1个
保修卡1张
品牌类型
品牌 Sennheiser 森海塞尔
型号 HD201
佩带方式 头戴式
类型 耳机
功能用途 监听/HIFI
颜色 黑色
耳机参数
换能方式 动圈封闭式
频率响应 21-18000Hz
灵敏度 108dB
阻抗 24欧姆
功率 N/A
单元直径 (@1KHz,1Vrms) 108db
失真率 <0.7 %
线长 双边出线方式
接口参数 3.5MM直插
麦克风参数
响应频率 N/A
抗阻 N/A
灵敏度 N/A
麦克风规格 N/A
其他特点
产品特点 强大的立体声
丰富清脆的低音
配戴舒适轻巧
良好的减燥性
乐声层次感极强
高品质的耳机衬垫
6.3mm适配器,镀金接头
售后服务
保修期 两年保修
保修点及联系方式 保修请直接联系易迅售后,售后服务电话:400-640-1878

购物记录:TOSHIBA CANVIO DESK 系列2T硬盘

写完两篇购物记录文章之后,我觉得有必要把我大学以来买过的东西一一列举出来,作为回忆也好,作为记录也好,作为分享也好,总是件乐事。
今年年初过年前入手的2T硬盘,用来备份资料,电影,歌曲,目前新蛋网上价格依然还是599,不过当时入手的时候有“蛋券”所以其实只付了579。
这里补充下参数呗,因为我突然发现之前写的那篇文章不在我的购物记录系列中
TOSHIBA 东芝 CANVIO DESK 系列 3.5英寸 USB3.0 2TB 移动硬盘 黑色 HDWC120HK3JA/HDWC120AK3J1
● 传输接口 :USB3.0
● 传输速度: 最高5Gb/s
● 外观尺寸:167mm(H)*42mm(W)*129mm(I)
● 重量: 1,000g max
● 保固期限:三年有限保固
● 环境信息:符合RoHS规范
● 兼容性: Microsoft Windows7 Vista 或XP
● 安装系统使用需求:于Mac OS r X Tiger &snow leopard 环境下需要自行格式化适用USB2.0Y以及USB3.0端口
● 产品包装内容物:
东芝凯乐(内附备份软件)
USB3.0连接线
ACPOWER 转接头
快速安装指南(Quick Start Guide)

● 感受USB3.0超快速的传输档案的体验
● 存储容量最高2TB、3TB
● 可向下兼容2.0
● 完整计算机系统备份及支持还原修复功能
● 提供存储空间不足的预警功能
● 适用于桌上型和膝上型计算机,即插即用

其实在买这个硬盘之前我完全不知道“新蛋”这个网站,后来才渐渐的知道原来新蛋在美国也是挺出名的,主卖电子产品的电商。

购物记录:Philips/飞利浦 SHE8005

我想买个耳机,在广大基友的推荐下,我最终选择了Philips(飞利浦)SHE8005,原因如下:
我想买一个既能够手机使用,又能够电脑使用的耳机,平时出门也不方便将我的头戴式HD201带出去
我想买一个耳塞式的,听说入耳式的对耳朵有伤害
我想买一个能够使用久一点的,价格也不要太贵的
我想买一个最好带有线控的。

综合好友的推荐,我最终选择停留在森海塞尔MX80,MX170,飞利浦SHE8005,还有其他一些产品上面,而森海塞尔是大家一致口碑不错的,唯一让我不爽的就是没有线控,所以最终选择了飞利浦的。

产品名称:Philips/飞利浦 SHE8005
颜色分类: 送耳机袋+集线器+鼠标垫
佩戴方式: 耳塞式
耳机类型: 有线
有无麦克风: 有
插头直径: 3.5mm
插头类型: 直插型
耳机输出音源: PC电脑
缆线长度: 1.2M
灵敏度: 100 dB
耳机阻抗: 16 Ohm
频响范围: 6 -23 500 Hz
耳机类别: 普通耳机 手机线控耳机 语音耳机 降噪耳机 监听耳机 运动耳机 游戏影音耳机 其他耳机品牌: Philips/飞利浦
型号: SHE8005

惠惠网比价(飞利浦SHE8005/10):http://www.huihui.cn/detail_75757b7de078a08e.html
下单地址
http://detail.tmall.com/item.htm?id=23218972827
付款:¥105

安装Android Studio

Google在 #IO13 上面发布了Android Studio,一款全新的Android开发IDE环境,撇开Eclipse+ADT。IO大会上面演示效果非常惊人,现在我来体验一下。

Getting Started with Android Studio

如果不出意外的话,跟随者安装程序一步一步下去就能够完成安装了。而我在安装过程中出现了找不到JDK的错误,打开安装程序,点击下一步,查找Java SE Development Kit的时候会直接程序崩溃,报一个"$(^name)"乱码的错误(我的计算机环境:Windows 7 Ultimate旗舰版SP1 x64位,JDK版本Java\jdk1.7.0_07\)。
经过Google之后StackOverflow的帖子帮助很大,看完我怀疑是我JDK版本的问题,所以我去下载了最新版本的JDK(1.7.0_21)。安装之后也不用修改环境变量,不用做任何修改安装成功。
出现下面截图。
找到JDK路径
安装过程:
安装完成之后会要求你选择配置文件,我又从来没用过这个IDE,所以I do not have
然后就看到了令人欣喜的一幕:
这里你可以选择新建Project,或者你可以按照官方的这篇教程将Eclipse下的工程转移到Android Studio下。
如果你还不知道过程,这里还有一段视频:


如果你在新建项目的时候发现下载”http://services.gradle.org/distributions/gradle-1.6-bin.zip“这里东西卡死,设置代理吧。

Android多线程(Thread、Runnable)

Android多线程(Thread、Runnable)以及Timer(Timer部分

认识Thread和Runnable

Java中实现多线程有两种途径:继承Thread类或者实现Runnable接口。Runnable是接口,建议用接口的方式生成线程,因为接口可以实现多继承,况且Runnable只有一个run方法,很适合继承。在使用Thread的时候只需继承Thread,并且new一个实例出来,调用 start()方法即可以启动一个线程。

Thread Test = new Thread();

Test.start();

在使用Runnable的时候需要先new一个实现Runnable的实例,之后启动Thread即可。

Test impelements Runnable;

Test t = new Test();

Thread test = new Thread(t);

test.start();

总结:Thread和Runnable是实现java多线程的2种方式,runable是接口,thread是类,建议使用runable实现 java多线程,不管如何,最终都需要通过thread.start()来使线程处于可运行状态。

认识Thread的start和run

1) start:
用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的 start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到cpu时间片,就开始执行run()方法,这里方法 run()称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,此线程随即终止。

2) run:
run()方法只是类的一个普通方法而已,如果直接调用Run方法,程序中依然只有主线程这一个线程,其程序执行路径还是只有一条,还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码,这样就没有达到写线程的目的。

总结:调用start方法方可启动线程,而run方法只是thread的一个普通方法调用,还是在主线程里执行。

线程状态说明

线程状态从大的方面来说,可归结为:初始状态、可运行状态、不可运行状态和消亡状态,具体可细分为上图所示7个状态,说明如下:

1)线程的实现有两种方式,一是继承Thread类,二是实现Runnable接口,但不管怎样,当我们new了thread实例后,线程就进入了初始状态;

2) 当该对象调用了start()方法,就进入可运行状态;

3) 进入可运行状态后,当该对象被操作系统选中,获得CPU时间片就会进入运行状态;

4) 进入运行状态后case就比较多,大致有如下情形:

﹒run()方法或main()方法结束后,线程就进入终止状态;

﹒当线程调用了自身的sleep()方法或其他线程的join()方法,就会进入阻塞状态(该状态既停止当前线程,但并不释放所占有的资源)。当 sleep()结束或join()结束后,该线程进入可运行状态,继续等待OS分配时间片;

﹒当线程刚进入可运行状态(注意,还没运行),发现将要调用的资源被锁牢(synchroniza,lock),将会立即进入锁池状态,等待获取锁标记(这时的锁池里也许已经有了其他线程在等待获取锁标记,这时它们处于队列状态,既先到先得),一旦线程获得锁标记后,就转入可运行状态,等待OS分配 CPU时间片;

﹒当线程调用wait()方法后会进入等待队列(进入这个状态会释放所占有的所有资源,与阻塞状态不同),进入这个状态后,是不能自动唤醒的,必须依靠其他线程调用notify()或notifyAll()方法才能被唤醒(由于notify()只是唤醒一个线程,但我们由不能确定具体唤醒的是哪一个线程,也许我们需要唤醒的线程不能够被唤醒,因此在实际使用时,一般都用notifyAll()方法,唤醒有所线程),线程被唤醒后会进入锁池,等待获取锁标记。

﹒当线程调用stop方法,即可使线程进入消亡状态,但是由于stop方法是不安全的,不鼓励使用,大家可以通过run方法里的条件变通实现线程的 stop。

Timer部分见这里

Android联网时显示进度等待

Android中不知道什么时候加入了,联网不能再UI线程中进行的限制,之前调SDK=8的时候一点问题都没有,到了SDK=17就会报错误。Android做这样的限制肯定是好的,只是对于我这种新手就要纠结一点了。

这些天折腾Android联网的东西比较多,总结一些重要的东西,方便以后使。

将联网写在线程中,前台等待
public class Download extends Activity {
        private static final int MESSAGE_OK = 0x0001;
        private ProgressDialog progressDialog = null;

        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                this.setContentView(R.layout.main);        
                
                progressDialog = ProgressDialog.show(HelloXML.this, "下载", "正在下载,请稍候!");                                
                
                new Thread() {
                        public void run() {                        
                                try {
                                    //   连接网络获取数据
                                } catch (Exception e) {
                                        // 显示错误提示
                                        //Log.d("TAG",e.toString());
                                }
                                Message msg_listData = new Message();
                                msg_listData.what = MESSAGE_OK;
                                handler.sendMessage(msg_listData);
                        }
                }.start();
        }

        private Handler handler = new Handler() {     
                public void handleMessage(Message message) {
                        switch (message.what) {
                        case MESSAGE_OK:                                        
                        //刷新UI,显示数据,并关闭进度条                        
                                progressDialog.dismiss(); //关闭进度条
                                break;
                        }
                }
        };
}
Android中如果UI线程等待时间超过5秒钟,系统就会弹出菜单叫你强制关闭,所以一般情况下涉及到联网,就会涉及到线程。(以上参考

之前看过AsyncTask的一些资料,那个东西还是挺有用的,避免了Thread,Handle复杂的操作。

Quote Of The Day