【开发中】基于树莓派的智能家居项目的设想与实现 Hestia

注:本文内容的准确性仅限于笔者写该篇文章时的情况,不保证后续与实际项目代码一致。实时内容还请关注Github项目托管页面:https://github.com/GenialX/hestia-serve树莓派,一个五脏俱全,集几乎所有功能于一身的微型计算器。大约一两月之前,屈屈300百大洋收入囊中。入手之后,出于对自动化的兴趣,慢慢地研究如何实现室内家电的智能自动化控制。在断断续续地,不断地摸索之后,有了若干想实现的点子,迄今为止也有所实践。点子利用红外线传感器智能控制空调、电视等基于红外遥控的家电设备;智能控制家中的灯泡设备(部分基于网络协议);(待更新...方案硬件首先,除了树莓派之外,还需要如下硬件移动端设备 iPhone一台(安卓手机当然也没问题,但是本案例中只基于iPhone做了实现外网可直接访问的服务器一台(本案例使用阿里云服务器基于树莓派的传感器若干基于光敏电阻的光线传感器一个...阅读全文

按位运算代替乘、除和取模:哪个更快?

许多程序员都意识到这个特例,就是当你乘或除一个2次幂的时候,你可以用位移运算符来代替乘法和除法。比如:你可以用i << 1代替i*2和用i>>1代替i / 2。还有一个不太为人所知的方法是取模。但是这些方法实际上哪个更快呢?今天这篇文章就要来测试它们以下就是今天的竞争对手这就是多次执行这些操作后的性能测试我在以下环境中运行了这个测试应用程序• Flex SDK (MXMLC) 4.6.0.23201, compiling in release mode (no debugging or verbose stack traces• Release version of Flash Player 11.3.300.27• 2.3 Ghz Intel Core i• Mac OS X 10.8.下面就是我得到的结果上述结果表明按位操作方法在三分之二的测试中取胜:除法和取模。在乘法案例...阅读全文

写C++就像是抱着一捆指针在浩瀚的内存中裸奔

Ja娃们,好久不见,最近和两位Java大牛喝了牛肉汤后,惊奇发现,他们都提及到了一个很有意思的话题:Java的开发效率比C++要高!小编的常识认为,C++的运行效率高,Java的开发效率高,但究竟是为什么,我觉得有必要弄个明白,我请教了几位大牛,他们这样说A大哥说了C++是面向内存编程,Java则是面向数据结构编程。C++里,内存是裸露的,可以拿到地址,随意徜徉,增了删了,没人拦你,等到跑的时候崩给你看。然而Java里,能操作的都是设计好的数据结构,array有长度,String不可变,每一个都是安全的,在内存和程序员之间,隔着JVM,像是包住了边边角角的房间,随便小孩折腾,不会受伤。Java程序员是孩子,嚷嚷要这个那个,玩完了就丢,JVM是家长,买买买,还要负责收拾。有的孩子熊点,屋子很乱,收拾起来费劲,但房子还在。C++程序员是神,操纵着江河湖海,日月星辰,但能力越大,责任越大,万...阅读全文

拆轮子 – 唯美细腻的夕阳海浪安卓手机动画

好久没有写博客了,一直在弥补基础, 今天带来的是一个博主有史以来见过最最精美的动画效果了。所以我才迫不及待的拆轮子。今天拆的部分是如下的效果。无图无真相呀前人种树,后人乘凉。很早的时候大神CJJ关于这个库的一些分析,大家可以去看看。http://www.jianshu.com/p/a4dabb3554c1 不过由于该文章中对于动画的具体实现没有提及,所以才有这篇文章的存在了=.因为本人水平不咋地,先奉上这个库的下载地址https://github.com/danielzeller/Depth-LIB-Android大家如果之前接触过类似的效果,其实也就没有必要看下去啦=.好了,废话说了这么多,如果有兴趣往下看,就继续吧一.说明因为代码已经存在,所以我认为就没有必要照着代码一点点讲,感觉这样的方式更容易把读者弄得云里雾里的,所以我这里决定从零开始一步步来实现这个效果(当然因为我是先仔...阅读全文

数据结构与算法之线性表

上一篇《数据结构与算法(一),概述》中介绍了数据结构的一些基本概念,并分别举例说明了算法的时间复杂度和空间复杂度的求解方法。这一篇主要介绍线性表。本节内容一、基本概念二、顺序表三、链表1、单向链表2、单向循环链表3、双向链表4、静态链表一、基本概念线性表是具有零个或多个数据元素的有限序列。线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。线性表的基本特征第一个数据元素没有前驱元素;最后一个数据元素没有后继元素;其余每个数据元素只有一个前驱元素和一个后继元素。抽象数据类型线性表一般包括插入、删除、查找等基本操作。其基于泛型的API接口代码如下线性表按物理存储结构的不同可分为顺序表(顺序存储)和链表(链式存储)顺序表(存储结构连续,数组实现链表(存储结构上不连续,逻辑上连续二、顺序表顺序表是在计算机内存中以数组的形式保存的线...阅读全文

Cookie和Session的那些事儿

Cookie和Session都是为了保持用户的访问状态,一方面为了方便业务实现,另一方面为了简化服务端的程序设计,提高访问性能。Cookie是客户端(也就是浏览器端)的技术,设置了Cookie之后,每次访问服务端,请求中都会带上Cookie;Session是服务端技术,在服务端存储用户的访问信息。使用Cookie传递信息,随着Cookie个数增多和访问量增大,它占用的带宽会越来越大;使用Session保存信息,最大的弱点就是不容易在多台服务器之间共享。1 Cooki通俗地讲,当用户使用HTTP访问服务器时,服务器会将一些键值对信息返回给客户端浏览器,并且给这些数据加一些限制条件,在符合限制条件情况下用户下次访问服务器时,会带上之前设置的Cookie键值对信息。当该用户输入 URL 时,浏览器便会在本地硬盘上查找与该 URL 关联的 Cookie。如果该 Cookie 存在,浏览器便将该 ...阅读全文

Java资源大全中文版(Awesome最新版)

Awesome系列的Java资源整理。awesome-java 就是akullpp发起维护的Java资源列表,内容包括:构建工具、数据库、框架、模板、安全、代码分析、日志、第三方库、书籍、Java 站点等等。业务流程管理套件流程驱动的软件系统构建,中间件。jBPM:非常灵活的业务流程管理框架,致力于构建开发与业务分析人员之间的桥梁。 官网Activiti:新一代的开源 BPM 引擎,核心是基于 Java 的超快速、超稳定的 BPMN 2.0 流程引擎,强调流程服务的可嵌入性和可扩展性。 官网  下载字节码操作编程方式操作字节码的开发库。ASM:通用底层字节码操作和分析开发库。 官网Byte Buddy:使用流式API进一步简化字节码生成。 官网Byteman:在运行时通过DSL(规则)操作字节码进行测试和故障排除。 官网Javassist:一个简化字节码编辑尝试。 官网集群管理在集群内动态管理应用程序的框架。...阅读全文

Java类加载器详解

类加载器是负责将可能是网络上、也可能是磁盘上的class文件加载到内存中。并为其生成对应的java.lang.class对象。一旦一个类被载入JVM了,同一个类就不会被再次加载。那么怎样才算是同一个类?在JAVA中一个类用其全限定类名(包名和类名)作为其唯一标识,但是在JVM中,一个类用其全限定类名和其类加载器作为其唯一标识。也就是说,在JAVA中的同一个类,如果用不同的类加载器加载,则生成的class对象认为是不同的。当JVM启动时,会形成由三个类加载器组成的初始类加载器层次结构1、启动类加载器BootstrapClassLoader是嵌在JVM内核中的加载器,该加载器是用C++语言写的,主要负载加载JAVA_HOME/lib下的类库,启动类加载器无法被应用程序直接使用。2、扩展类加载器Extension ClassLoader该加载器器是用JAVA编写,且它的父类加载器是Boots...阅读全文

一文了解Java NIO

Java NI1 背景介绍在上一篇文章中我们介绍了Java基本IO,也就是阻塞式IO(BIO),在JDK1.4版本后推出了新的IO系统(NIO),也可以理解为非阻塞IO(Non-Blocking IO)。引用《Java NIO》中的一段话来解释一下NIO出现的原因操作系统与 Java 基于流的 I/O模型有些不匹配。操作系统要移动的是大块数据(缓冲区),这往往是在硬件直接存储器存取( DMA)的协助下完成的。而 JVM 的 I/O 类喜欢操作小块数据——单个字节、几行文本。结果,操作系统送来整缓冲区的数据, java.io 的流数据类再花大量时间把它们拆成小块,往往拷贝一个小块就要往返于几层对象。操作系统喜欢整卡车地运来数据, java.io 类则喜欢一铲子一铲子地加工数据。有了 NIO,就可以轻松地把一卡车数据备份到您能直接使用的地方( ByteBuffer 对象)。但是Java里的...阅读全文

Codeforces Round #345 (Div. 1) B Image Preview

原题B. Image Previetime limit per test1 seconmemory limit per test256 megabyteinputstandard inpuoutputstandard outpuVasya's telephone contains n photos. Photo number 1 is currently opened on the phone. It is allowed to move left and right to the adjacent photo by swiping finger over the screen. If you swipe left from the first photo, you reach photo n. Similarly, by swiping right from the last ...阅读全文

Codeforces Round #345 (Div. 1) A watchmen

原题A. Watchmetime limit per tes3 secondmemory limit per tes256 megabyteinpustandard inpuoutpustandard outpuWatchmen are in a danger and Doctor Manhattan together with his friend Daniel Dreiberg should warn them as soon as possible. There are n watchmen on a plane, the i-th watchman is located at point (xi, yi).They need to arrange a plan, but there are some difficulties on their way. As yo...阅读全文

Java实现仿QQ界面多人聊天客户端程序

记得几年前,在校期间写过一个聊天程序,也发布了一篇博客在csdn上。然而,近期有好多网友加我qq索要源码,可惜的是源码早已消失在网络中了。所以,借此闲暇时间重写一次Java多人聊天客户端程序,以供爱好者学习交流之用。如下是每日程序的进展日志。项目源码客户端 -> github.com/genialx/Chat服务端 -> github.com/genialx/ChatXServe前面的话对于Java,笔者算是新手,没有用Java做过实际的项目。所以,在做这个项目的过程中,进行了大量的搜索工作,有很多问题都无法短时间内解决。固然,项目中的代码是很糟糕的,甚至垃圾代码。不过,有时间会进行深入的学习来优化项目甚至重构代码。进展日志2016.02.1项目不是起于今日,目前已经完成了客户端的登陆界面,正在着手完善朋友列表的界面。登陆界面朋友列表遇到的一些不是问题的问题...容器组件半透明的问题...阅读全文