自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Elsa's Blog

Professional & Nice

  • 博客(40)
  • 收藏
  • 关注

翻译 李飞飞:如何教计算机理解图片

2016年早期读论文阶段,我第一次接触Artificial Intelligence,当时只觉得这个词汇,真难拼,听起来逼格蛮高的,cool;2017年,人工智能已经成了媒体年度新词,甚至带动了一票AI概念股涨起来,比如当前时间(2017/12/29 15:00:00 北京时间)PE值已经在365.29左右的科大讯飞,还有相对理性的PE值43.59的海康。2017年4、5月份假期,又听了Andrew

2018-01-01 23:27:12 1180

原创 Notes:《程序员的自我修养——链接、装载与库》

记录下每章的知识点,便于以后对着这份知识图谱,复习和重组。温故而知新万变不离其宗掌握硬件中的核心部件:CPU、内存、I/O控制芯片 了解CPU核心频率提升过程中硬件构架的演进:从Bus,到PCI/ISA,再到PCI Express站得高,望得远系统软件分为:平台性的和程序开发性的 平台性系统软件:操作系统内核、驱动、运行库、系统工具 程序开发性系统软件:编译器、汇编器、链接器软件体系结构层与层

2017-12-19 00:00:58 642

原创 CS107-Lecture 7-Note

距离上一次听CS107已经有一个月了,非常尴尬。最近花一周左右时间粗糙看完了《Linux内核设计与实现》,compile custom Linux kernel,又复习了之前课程的笔记,和CS107结合起来,感觉消化了更多。比如书中介绍的(1)内核编程的特点之inline;(2)内核数据结构中对struct、list的使用;(3)malloc、realloc使用时的注意事项,本质上都是CS107中a

2017-07-11 14:33:24 816

原创 Mac OS X下(Ubuntu虚拟机)编译Linux内核

用了十天时间看完《Linux内核设计与实现》,想在Mac上编译Linux内核实践下。编译过程遇到了不少问题,根本原因还是对内核的编译、安装和启动的理解不够。流程整理1. 安装VMware和Ubuntu(1) 我的配置: Mac OS X 10.10.5,VMware Fusion 8,Ubuntu 16.04.2安装时我给虚拟机划分了50G磁盘空间,其中30G给/,1G给swap,2G给/boot,

2017-07-07 11:16:07 3369

原创 CS107-Lecture 6-Note

int型StackLecture 5讲到用C的语法实现“栈”,并给出了StackNew()的实现。StructNew通过传入结构体s的地址,将某个12字节的内容未知的内存块用来在逻辑上表示一个深度为0的栈: Jerry: and take it from a 12-byte block of question marks to be logically representing a stack

2017-05-31 16:56:34 726 1

原创 CS107-Lecture 5-Note

lsearch在Lecture 4和5介绍lsearch的设计过程中,我有一些小感悟:程序设计的问题有很多种答案,优秀的答案不是大笔一挥就跃然纸上的,而是不断地思考完善,不断地根据需求(比如采用的语言,针对的数据类型)优化得到的。言归正传,继续上次课的内容,从针对specific数据类型的lsearch优化得到generic的lsearch,再优化得到generic lsearch中的自定义的com

2017-05-02 18:12:53 766 1

原创 粒子群优化算法(一):算法性能测试函数

Rastrigin Function数学优化问题需要一些函数测试算法性能,例如Ras函数测试粒子群优化算法。Ras函数定义:f(x⃗ )=An+∑i=1n[x2i−cos(2πxi)]f(\vec{x})=An+ \sum_{i=1}^{n}[x_{i}^{2}-cos(2\pi x_{i})]这里的x⃗ \vec{x}是矢量,所以这是一个有维度的函数。Wikipedia: Rastrigin fu

2017-03-31 11:36:20 15256 2

原创 CS107-Assignment 1

Random Sentence Generator目瞪狗呆,Assignment 1竟然以介绍Random Sentence Generator开篇。Random Sentence Generator是一个句子随机生成器,和我小时候玩的中文组句的游戏一样,大家做些小卡片,一个人负责写主语,一个人负责写谓语,还有人负责定语、宾语、状语、补语……然后随机的从卡片里抽出主+谓+宾+定+状+补……组成一个句

2017-03-11 15:03:36 662 1

原创 CS107-Lecture 4-Note

swap接上文,在swap函数中,参数ap和bp用来寻址到内存某两处空间,对空间里的值进行了交换。swap过程的本质,就是交换两处地址中存放的位模式,而且隐式地知道交换的字节大小。如果想让swap具有通用性,交换任意大小的,任意类型的量,可以使用通用类型void *,如Program. 1 返回通用的void * 类型:Program. 1. 返回通用的void*类型void* swap(void

2017-03-08 19:09:17 578

原创 CS107-Lecture 3-Note

第三次课继续讲内存管理,介绍了double、array,struct,&,*,以及大小端模式。Jerry会用很直观小方框图画出出内存管理图。高级语言里有很多模板,例如二分搜索、线形搜索、归并排序、快速排序等等,当你理解了内存管理的本质,就可以自己实现这些内存管理的范式。double“Whatever bit pattern happened to reside there before is now

2017-03-07 09:53:39 527

原创 粒子群优化算法

前言:学习算法的第一步,不是理解“什么是算法?”这类对我这种凡人来说飘渺的哲学问题,而是拿出一个例子,在纸上演算演算,再到xcode上敲几行代码,调出结果。大家都在介绍粒子群,都在说“所有鸟都不知道食物在哪里,但是知道距离食物还有多远”,为啥就没有人从最简单的二元三次方程求解的思路讲起,介绍粒子群算法,不过是一种求最大最小值的“解题公式”。因为卡在了粒子群优化,导致这两天里论文进度为0,今日需得牟足

2017-02-22 09:34:13 736

原创 怎样利用好异常处理机制?

前言: 写了两年的遇到异常就随意try-catch-finally或者线程、函数自行崩溃的“自杀式软件”,是时候摒弃这种信马由缰Coding,随缘Debug的编程方式,用更认真的态度来设计程序了。Java,Python等高级语言,提供了异常处理机制和丰富的异常类给开发者,其实也是凌空架出一把双刃剑。无知的开发人员(研究生阶段的我…)利用异常处理机制,恣意捕获本应由良好的程序逻辑,合理的代码结构围追堵

2016-09-26 01:55:18 559

原创 嵌入式系统调试(一)

前言: Android开发时,有了adb,就能在PC Shell或者Eclispe Debug窗口看到调试信息从而定位Bug。Android系统提供的调试手段很强大,Linux也是,但是对没有移植这些成熟系统的开发板来说,实现嵌入式系统的调试,从工具到方式,都需要自己动手搭建。一套调试环境包括:上位机软件:比如串口调试助手,secureCRT调试接口:比如UART,SPI, I2C调试信息”传

2016-09-11 18:05:41 2572

原创 RobotFramework/PythonRemoteServer

前言: RobotFramework是一个很好用的自动化测试框架。测试框架本身是和测试功能无关的,它只是提供了测试库、测试用例、测试报告的接口和界面。使用的时候,将需要的测试库(来自第三方或者自定义)导入,再将遵循其格式输入的测试用例(可以是txt形式,也可以根据RF界面提示输入)导入,最后RF就会将运行结果以标准的格式输出,返回Pass or Fail。但是RF属于一个Windows本地软件,如果

2016-09-07 00:32:51 1016

原创 Unable to get debug signature key

问题问题原因就是手贱改变了adt的路径,导致adt中的debug工具相关也找不到了。要么重新配置adt路径,要么在Windows->Preference->Android->Build,在编译这块修改下Build配置。当然第二种方式鬼知道adt path不配置好将来会出什么新问题。解决方法Default debug keystore是自动生成的,改不了。如果用第二种方法,可以改Custom debu

2016-09-07 00:17:28 1421

原创 Android和RTOS

前言:研究生做了两年Android应用,实习时转了嵌入式应用软件开发,拿着一块移植了RTOS的设备学习。入门了才发现,两者都是开源、稳定、经历众多设备厂商打磨的优秀操作系统,根据以下几点对比学习。通用操作系统和实时操作系统 - 双系统学得越多,发现自己知道的越少。两个操作系统其实经常一起应用:Android手机的双MCUAP(Application Processor)是ARM架构搭载And

2016-09-05 21:25:02 3149

原创 Linux学习笔记(一):指令

前言:”Obama snubbed?”今日学习英语,被CNN首页的大标题酸到了蛤蛤,因为接机时只有奥观海没有red-carpet stairs,美媒们反复抱怨这个welcome实在是太frosty而且inauspicious,而且很不友好地介绍接下来的conversation是the rancour continue。但是official有力地回应说”This is our airport, thi

2016-09-05 01:02:20 589

原创 Android ListView和RecyclerView常见问题

前言:ListView和RecyclerView基本用法很简单,即三要素:(1)控件(界面);(2)数据源;(3)适配器。但基本控件无法满足需求只能定制时,遇到一些问题,总结一下。性能优化滑动时数据加载混乱nofityDataSetChanged不起作用性能优化性能优化,大多是在getView()方法中采用内部类ViewHolder,保存已经加载过的布局convertView和控件实例如Te

2016-08-29 16:34:00 1446

原创 Git 学习(一):Git及相关常识

前言:《Git学习(一)(二)(三)》分别介绍git,git相关常识和git安装步骤Git?一个开源控制系统,做分布式版本管理的软件为了帮助管理Linux内核开发而开发的本地配置好remote 链接和用户信息(git的识别方式是用户名+邮箱)之后,将提交过的代码push到远程仓库,或者将远程仓库的代码fetch到本地SSH (Security Shell)?专为远程登录和其它网络服务提供安

2016-03-30 14:20:38 437

原创 简单的Android SQLite应用设计框架

前言:最近有时间,重构了CRZ第一版代码的数据库部分。画了几张自己能看懂的软件结构图Mark。数据结构采用实体类-服务类-数据库管理类方式:数据加载采用内存缓存-本地数据库方式:应用启动时的数据加载方式:

2016-02-26 11:12:05 810

原创 Activity的任务栈:Activity Task

前言:Activity Task是用户想要实现某个功能进行的操作的合集,这些操作是具有逻辑关系和次序的。例如,在某个应用中调用了“联系人详情”-“编辑短信”的功能,就需要在该应用中跨进程调用“短信”Package中“编辑短信”的Activity。Android根据用户的这种操作逻辑和思维习惯,把所操作的Activity和系统其它组件,依次“装载”到一个类似于“栈”的Task集合中。ActivityT

2016-02-25 14:48:45 806

原创 Android 用Path和Bitmap在绘制折线

一、问题概述当我们希望通过Path绘制图形,而Path又足够大时,开启了硬件加速的手机很可能会无法按编程的预期实现图形绘制,同时Logcat也会出现“Shape path too large to be rendered into a texture” 的警示。作者分析了他遇到的问题:“Path通常都是CPU绘制的,但是当Path所在的View被设置成GPU加速,Path首先被转换成GPU中的tex

2016-01-31 17:16:38 2662 1

原创 Android Hardware Accelaration

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

2016-01-31 17:15:04 650

原创 android.graphics.path的局限

前言: 用户需求使得应用必须通过Socket InputStream快速接收大约800K的数据,并将800K数据分成7个数组绘制成折线图同时显示在界面上。界面自然是卡顿的,甚至卡顿了有4、5s;各种警告各种GC各种skip frames(懵B脸……泡在Stack Overflow上搜索着问题和疑惑,发现了好多篇讨论这类问题的Q&A,惊异于“别人家的“developer对于问题探讨的深度和广度,膜拜之

2016-01-24 20:06:12 688

原创 Android: 调用LayoutInflater方法时warning和exception

前言:Layout Inflation的作用正如inflate字面意思表示的一样:膨胀,充气。将XML文件转换成View结构对象。在绘制界面时,经常会出现以下几类问题,总的来说,还是因为对Android的View结构和LayoutInflation不够理解,所以从分析几个问题出发,好好理解Android界面设计的一些思想和方法。警告 Warning: “Avoid passing null as

2016-01-24 15:31:04 808

翻译 Android应用性能优化的小技巧

本篇文档主要涵盖了一些能够提升App整体性能的小的优化技巧,但对应用的性能不会造成大幅度的改进。大的提升和改进首要的还是选择正确的算法和数据结构,但这两条并不在本篇文档的描述范围内。在平时的编码过程中,你就应当运用文档中提到的技巧,这样才能养成编写高效的代码的良好习惯。编写高效的代码时,有两条基本准则:不做没必要的事。不分配没必要的内存。当你打算优化你的Android应用的时候,最[精妙]的是

2016-01-02 23:36:45 554

原创 Eclipse下Logcat显示Android日志攻略一

Ubuntu下使用adb logcat显示Android日志怎样过滤日志?根据使用的Logcat界面选择最合适的过滤方式,如果是GUI界面,参考方案 I 和 II,如果是Mac终端或者Windows控制台,参考方案 III方案 I. 为项目定制log过滤器不但可以定制Log level,而且可以通过设置Tag/Message/PID等进行过滤,例如在by Log Tag中输入正则表达式: ^(?!.

2015-11-05 11:35:42 5321

原创 Java 中的 ByteArrayOutputStream 应用风险

前言:看到 ByteArrayOutputStream的内存溢出问题 一文,内心捏了一把汗,当初为了实现Socket长连接接收数据并处理,调用了ByteArrayOutputStream类读取输入流,根本没有考虑过关闭、存储、内存溢出等问题。既然有了上文的前车之鉴,就一定要最大限度的规避风险,所以写demo测试打补丁一气呵成(deadline-20151106)

2015-11-04 21:48:49 3038

原创 Socket 中的 InputStream

无论文件读取还是Socket通信,都要操作流。Java为我们提供了InputStream和OutputStream的IO库,从数据流InputStream中读取数据时,有三种读取的方法,方法二、三本质是一样的。三种方法都返回int型,同时能够抛出IOException异常read()read(byte[] b)read(byte[] b, int off, int len)read()从输入

2015-11-03 14:09:43 5229

原创 通俗的理解Gradle

用Eclipse+ADT开发Android的时候,就没有思考过开发环境的原理,直接上手码代码了。现在迁移到Android Studio+Gradle,从Github上直接导入项目出现了太多问题,光是形形色色的报错信息就晃瞎了眼。逮着一个Error就搜一搜,还会有源源不断的Error涌现,并不能从根本上解决问题,一劳永逸,必须发力学习Gradle基础咩!什么是Gradle?要知道Gradle扮演了什么

2015-09-27 11:22:16 864

原创 Git 学习(二):Mac OS X 下 Git 安装教程

前言:《Git学习(一)(二)(三)》分别介绍git,git相关常识和git安装步骤检查Mac是否已经存在Git~ Elsa$ git --version安装(最新版)Git官网下载检查SSH Key没有id_rsa.pub or id_rsa,需要创建;已经创建,需要验证创建SSH Key总之就是不停回车,按指令操作,这里ssh key保存路径我选择了默认路径:验证SSH Key被Gitub服务器

2015-09-22 22:36:10 853

原创 Mac上配置Gradle

安装Android Studio并且新建Hello World程序时,grade就自动安装到了Android Studio上,但是这时的gradle版本是2.4,并且没有配置到系统环境变量中。想使用最新版本,并且可以在Console中使用Gradle,需要手动下载Gradlegradle官网链接配置环境变量在Console输入指令,打开.bash_profile文件:open -e .bash_pr

2015-09-21 22:38:08 1572

原创 使用Java正则表达式匹配IP

前言:在Android 通过UDP广播建立Socket中介绍了通过在局域网内发UDP广播,返回同一局域网下,Wifi模块当前IP的方法。但是接下来又有新的问题,局域网内有多个这样的Wifi模块,还需要在一众IP+MAC的回复中过滤出指定MAC的IP。截取每条回复并用String.equal()查找虽然可行但是有点Low,还是用正则表达式匹配专业一些,逻辑更高、代码更简化、理解更容易。一、 关于Jav

2015-09-03 19:42:55 2087

原创 JRE And Required Android API

一、问题 向Eclipse导入一个Project,以前都是正常编译的,今天突然在很多语句中报错: “…change project compliance and JRE to 1.7”, 搜索了一些方法修改了JRE版本,又报了下面的错: “Using 1.7 requires compiling with Android 4.4 (KitKat); currently using API 14

2015-09-02 14:33:32 1147

原创 Java中的byte/char/String数据类型转换

前言:项目中遇到的实际问题,Android手机和硬件通过Socket通信,手机可能会对硬件批量设置定时任务,最多批量设置16个。但由于硬件接收大量报文后处理不过来,定时任务经常漏设,而且响应相对较慢,最好能将16个报文压缩成一条,提高控制可靠性和硬件响应速度。原有的String类型的报文预留了两位“00-15”分别对硬件编号,现在将这两位String类型的数据改成2位十六进制“00-FF”设置定时任

2015-08-24 20:20:50 6694

原创 Android 通过UDP广播建立Socket

前言:项目中遇到的实际问题,Android手机想要和局域网中的某个主机进行Socket通信,但是Socket连接前却无法获知该主机的IP, 为了建立Socket,就需要Android手机在局域网内发送UDP广播,从而获得目的主机的IP。一、 关于 TCP/UDP项目中主机内置的Wifi模块自带被搜索功能:手机(Client)通过UDP广播发送一个口令,默认口令为:”HF-A11ASSISTHREAD

2015-08-04 22:23:35 6747 1

原创 Mac下Android Studio配置JDK7

前言:从Eclipse迁移到Android Studio(顺便也从Thinkpad迁移到MacBook Pro蛤蛤),直接安装了Android Studio后,版本情况分别是,OS X Yosemite 10.10.5,Android Studio 1.3.1,JDK 6。更新了SDK到SdkVersion23,发现SDK版本和JDK不符,需要自行更新JDK。Error:(3,22) Compile

2015-07-30 10:29:11 1702

原创 Android 平台上的 ARP 和 ARP欺骗

前言:要做的功能是在Android某个连网应用中加入arp,使Android手机和指定MAC的设备进行Socket连接前,能够向路由请求获得该MAC对应IP,当然前提是手机和设备在同一局域网下。因为是从零开始学起,ARP连听说都是第一次⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄,所以写一篇非常非常详细的学习Android平台上的ARP的博客吧。一、关于ARP1. ARP概述把百度百科_ARP,维基百科_ARP都

2015-07-29 23:08:35 12409 5

翻译 Android GUI 单线程消息队列机制 —— 多线程GUI工具箱:一个破碎的梦

前言:Android、Swing、MFC等的GUI库都采用了单线程消息队列机制来处理绘制界面、事件响应等消息《GUI为什么不设计多线程》,文章中提到了负责Swing开发的一个大师的一篇博客《Multithreaded toolkits: A failed dream?》,博客使作者了解到开发多线程的GUI toolkits是一件吃力不讨好的事,不仅开发难度大Bug多多,用起来也未必可以获得理想中的效

2015-07-28 09:47:52 1384

原创 Android OTG (USB Hos) 编程

前言:最近在做一个汽车故障检测的项目,我需要完成的功能就是APP开发。汽车发动机将各种数据通过OTG传输到Android手机,APP可以实时显示数据。一、权限1. 声明支持USB Hos模式在AndroidManifest中声明该应用支持USB Hos模式<uses-sdk android:minSdkVersion="8" android:targetSdkVe

2015-07-22 16:12:44 12896 5

空空如也

空空如也

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

TA关注的人

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