自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

软件工程学森

在读学生的博客

  • 博客(68)
  • 资源 (5)
  • 收藏
  • 关注

原创 Android无需权限显示悬浮窗, 兼谈逆向分析app

本文先在简书上发布, 获得许多反馈, 所以在CSDN也发一下, 与大家分享前言最近UC浏览器中文版出了一个快速搜索的功能, 在使用其他app的时候, 如果复制了一些内容, 屏幕顶部会弹一个窗口, 提示一些操作, 点击后跳转到UC, 显示这个悬浮窗不需要申请android.permission.SYSTEM_ALERT_WINDOW权限.如下图, 截图是在使用Chrome时截的, 但是屏幕顶部却有U

2015-10-17 12:35:24 1665

原创 Android回弹效果新思考与更加易用的实现

前言最近app需要在首页上做一个类似iOS的回弹效果, 我们的首页是一个ExpandableListView, 如果要做到类似iOS的回弹效果, 最先想到的思路就是使用额外添加的Header和Footer配合改写事件分发机制实现. 众所周知, 这种做法非常的不通用, 下次一个页面用ListView, 至少需要把代码复制一遍, 如果是ScrollView, 则要重写一部分逻辑. 如果是LinearLa

2015-10-03 15:38:00 2135

原创 细说Java内部类, 静态内部类, 局部类, 匿名内部类

前言自己看了一眼oracle官网关于内部类的介绍, 不多, 但是有些点还是要注意的. 当然这些知识只能说是面试有用, 平时使用内部类, 如果违反规则, 编译器会提示你的, 所以看看就行, 没必要背熟.名词介绍先把我们用的名词说清楚. 我们说的内部类, 官方的叫法是嵌套类(Nested Classes), 嵌套类包括两种, 分别是静态嵌套类(Static Nested Classes)和内部类(In

2015-09-24 22:38:09 5592

原创 BroadcastReceiver生命周期探讨

前言之前做线控耳机连点两下切下一首歌的需求时, 曾经尝试在BroadcastReceiver中用一个成员变量保存最后一次按下的时间, 但后来发现这个值一直是初始值, 对它赋值后, 再次收到Intent时发现它的值又变成初始值了. 后来看到一些问题, 问BroadcastReceiver的生命周期, 按理说它就一个onReceive能有什么生命周期, 其实这里问的生命周期和我们平时说的Activit

2015-09-10 14:10:56 6592

原创 最近开发中的一些坑#1

牢骚最近回学校, 听说阿里好多实习生都被拒了, 不过大概都被捡漏了, UC这方面还没动静, 不知道是打算把我当临时工使还是怎么, 有点烦躁, 还是得加强自己的能力才行. 最近半年一直在做音乐播放器项目, 开发期间遇到了许多奇怪的问题, 有些我单独写了文章, 有些没那个必要, 这里总结一下.坑下载进度item无法长按上面是一个比较常见的下载item, 开发中我们发现经常出现不能对其进行长按操作的情况

2015-09-08 17:45:28 1048

原创 monkeyrunner截图限时免费阅读#2:多线程保存

这是monkeyrunner截图限时免费阅读#1的后作. 之前的脚本中将所有的东西都放在主线程里面执行, 实际上, 保存MonkeyImage到磁盘的过程是IO相当大的, 将这类操作放入单独的线程进行处理能大大提高脚本运行的效率. 我们创建一个线程, 指定一个方法和要传入的参数, 就可以让这个方法在线程中执行, 线程需要是非守护线程, 不过这个是默认的.from com.android.monk

2015-09-08 00:46:41 986

原创 QQ音乐/酷狗音乐锁屏控制实现原理

我实现的效果混乱的锁屏控制Android自4.0版本, 也就是API level 14开始, 加入了锁屏控制的功能, 相关的类是RemoteControlClient, 这个类在API level 21中被标记为deprecated, 被新的类MediaSession所替代. 我们的音乐App中最开始使用的是原生锁屏控制API, 说实话这个API不好用, 遇到了一些小坑, 最要命的是不同品牌的手机,

2015-08-31 00:27:46 5101 6

原创 Android沉浸式状态栏攻略

前言这里不讨论[沉浸式]这个词用得好不好, 大家听得懂就行. 这篇文章主要是我在实际项目中的一些经验, 整理出来和大家分享, 欢迎探讨. 由于实习一直是996, 没时间做总结, 今天突然觉得这样的工作让我都忘了生活了, 是时候做个了断了. 写这篇文章的时候已经是23:44, 来不及贴一些demo, 但是这里的代码都是曾经的项目中摘出来的, 是可以运行的, 但我现在没有真的执行一遍. 注意所有的代码都

2015-08-13 01:22:27 3077 2

原创 为什么不推荐用UniversalImageLoader加载res/drawable

前言UniversalImageLoader是一个应用广泛的库, 使用简单方便, 编译也方便, 很多大公司都是用的这个库, 最近遇到了一个奇怪的bug, 踩中了UIL的一个坑, 虽然作者有在wiki上提醒我们, 但因为语焉不详, 所以直到我找到bug的出现原因才想明白那句话是什么意思.一个奇怪的bug项目里面有一个自绘控件, 是一个下载按钮, 点击之后可以显示当前下载进度, 最近我们发现在一台2.3

2015-08-03 00:35:38 3356 4

原创 monkeyrunner截图限时免费阅读#1

最近有个读书的app搞限时免费阅读, 有几本书我想看, 但是又没有时间, 以前想过更改系统时间来延长阅读时间, 大概是同样有人这么干, 所以现在的限时阅读都是要联网验证一次才能看, 其实这种东西让懂前端的人写几个js就能把人家一整本书的文字全部抠下来永久免费看.如果说是Android端, 比较好的思路是反编译代码再移除一些判断逻辑, 不过既然我能想到, 别人估计也防御了. 一个笨方法就是一页一页的截

2015-07-13 00:38:32 865

原创 TransitionDrawable使用不当导致内存泄露

最近要做类似网易云音乐背景高斯模糊的效果, 同时也想让背景变化时不要那么生硬, 就是下面这个效果Google一番后决定用TransitionDrawable, 由于是配合UniversalImageLoader使用, 所以只需要实现一个BitmapDisplayer作为UIL的配置项就行了.最初的代码是这样写的private static class DrawableFadeDisplayer im

2015-07-12 00:42:24 3385 4

原创 viewpager不显示内容

最近做一款音乐播放器, 需要在fragment中用viewpager展示内容, 恰好遇到了这个问题, viewpager不显示内容, 因为是配合slidingtablayout使用的, 所以能很明显的看到, 确实可以滑动viewpager, 但是就好像上面有胶水一样.后来发现是xml中用了相同的id, 也就是说, 有两个xml中用到了viewpager, 但是这俩viewpager的id相同.虽然理

2015-06-19 16:44:01 4121 1

原创 解决魅族机器adb找不到设备

魅族近期的几款机型都有这个问题, 比如MX4, 魅蓝. 开启了usb调试模式, 但是执行adb devices找不到设备. 解决办法: 在C:\Users\<用户名>\.android\adb_usb.ini中添加一行0x2a45然后在cmd中执行adb kill-serveradb devices就可以看到设备了.

2015-05-22 14:43:51 6172 1

原创 滑动返回库SwipeBackLayout解析

这个库本身并没有很难, 但是它在交互方面的思想是超前的, 虽然现在我们对滑动返回已经习惯了, 但是在当时还是很新鲜的交互方式.如果要我实现滑动返回, 我第一个看的一定是DrawerLayout的实现, 它用了ViewDragHelper.接下来我们结合源码解析SwipeBackLayout是如何做到让我们能使用滑动返回的手势的.SwipeBackActivity用过的都知道, 想让一个activit

2015-03-22 12:16:04 5427 1

原创 android简单流畅的下拉刷新pulltorefresh实现过程

前言我很早之前就使用过pulltorefresh的开源项目, 唯一的感觉就是卡. 最近在做graph api的demo, 想顺便实现一个pulltorefresh, 所以从网上找了一些实现来看, 不满意的是他们都非常的卡, 即便是在小米4上面也有明显的掉帧, 但是我又发现另外一些应用的下拉刷新做的非常流畅, 没有丝毫卡顿, 研究了一下这些应用, 他们的pulltorefresh控件远没有网上的其他实

2015-03-21 22:43:21 2067

原创 调用graph api上传图片到facebook

前言最近实习的任务是做个类似facebook第三方客户端, 要求用graph api. 调用graph api就是普通的http请求, 但是facebook在这方面挖了不少坑, 特别恶心. 写篇文章记录一下, 顺便介绍一下思路和方法, 有好几个方法, 有的成功了, 有的失败了, 会具体分析, 最后有一个最佳的方法.图片上传sdk文档的错误查询facebook的graph api文档可以知道如果使用s

2015-03-09 23:35:42 3594

原创 解决eclipse Blocked : the user operation is waiting

出现这种情况的时候整个adb都跪了, eclipse一run就会跪, 而且还容易停止响应. 一般来讲是其他应用占用了5037端口, 这个端口是adb默认的端口, 如果adb的端口被占用, eclipse就会在run的时候被block, 因为这个功能是需要adb的. 在中国, 一般遇到这种情况, 肯定是装了类似金山毒霸这种东西, 这些软件往往会带有手机助手, 这些手机助手其实就是自带了类似adb的

2015-03-06 23:04:52 11160

原创 Linux/Mac下命令行批量修改文件夹名

一般来说在linux/unix下命令行更强大, windows上可以装cygwin来模拟各种命令的执行. 比如我们的目标是将当前目录中的所有的org文件夹改名为com, 包括子目录中的文件夹. 我们一步一步来.find . -name org这个命令可以列出当前目录中所有的org文件的路径, 注意org是可以看成是文件的. 接下来我们将输出作为下一个命令的输入, 在它们之间加上管道符号|就可以

2015-03-06 22:52:07 7474

原创 牛顿法开方原理及代码

牛顿法(Newton’s method)又称为牛顿-拉弗森方法(Newton-Raphson method) (为了简便下文称之为NR法), 它是一种在实数域和复数域上近似求解方程的方法. 下面是维基百科上的演示图片.在计算机入门的时候往往会讲解使用二分法求解一个正数的平方根. 通过不断的猜测, 检查, 改进再猜测来取到一个最接近结果的值. 实质是求 f(g)=g2−af(g) = g^{2}

2015-02-20 20:21:13 3245

原创 完整cmm解释器构造实践(五):解释执行与GUI

解释执行接下来要做的事情就是解释执行, 我们只需要将中间代码一条一条执行下来就行. 我们可以模仿CPU的执行方式, 使用一个叫pc的变量存储下一条需要执行的指令的序号. 每次执行一条执行就将pc+1, 当然, 如果是跳转指令要求跳转, 就将值赋给pc, 而不是加1. 中间代码的意思可以自己理解, 根据代码很容易完成. 上一次忘记讲了, 在生成代码的时候, 由于TreeNode的存储结构, 导致表

2015-02-17 23:13:33 3171 1

原创 完整cmm解释器构造实践(四):语义分析与代码生成

语义分析语法分析只是分析了代码在语法上是不是合法的, 但是代码仍然有可能存在问题, 比如一些需要上下文才能分析的错误, 语法分析就不能分析出来. 比如下面的代码a = 10;从语法上来看, 这是一句合法的赋值语句. 但是从语义上看, 我们并不知道a有没有被声明为变量, 类型是否和10匹配. 这一次我们将介绍语义分析.分析内容不同的人做语义分析, 分析的内容都有不同, 比如有些人会把数组越界作为分析的

2015-02-17 21:54:30 5151 1

原创 本地Service的onBind方法使用

onBind方法在Android中写Service时总有一个onBind方法, 默认情况下返回null, 在最新的Android Studio中是抛出一个异常. 之所以有这个方法, 是因为在Activity中启动Service之后, 他俩就没有联系了, 这个方法可以让我们给Service发消息, 让其执行相关的操作.写作原因最近看书看到了Service部分, 里面恰好讲到了onBind. 我突然想

2015-02-16 20:45:36 20382 4

原创 Android自定义视图与自定义属性

这是Android UI Fundamentals里的内容创建自定义视图创建自定义UI组件首先要继承一个视图类. 首先创建一个简单的自定义视图, 展示一条十字线. 需要做的第一件事是创建一个继承自View的CrossView类. public CrossView(Context context, AttributeSet attrs) { super(context,

2015-02-11 00:01:54 2170 2

原创 清除eclipse中Launch configuration

eclipse里面export runnable jar之前要先run一下才行, 但是之后launch configuration里面的记录一直存在, 非常难看, 清除的方法是: 清空workspace文件夹下的 .metadata/.plugins/org.eclipse.debug.core/.launches里的内容 注意是删掉文件夹里面的内容, 而不是把文件夹删了

2015-02-07 17:49:49 12172 3

原创 完整cmm解释器构造实践(三):语法分析

完整cmm解释器构造实践(三):语法分析语法树节点我的语法分析器不仅会判断cmm代码的语法是否正确, 同时会存储分析过程中得到的信息, 完成语法树的构建. 为什么要有语法树呢, 其实还是为了计算机方便做进一步的处理才用的, 语法树里面存储了从代码里面提取的信息, 我们生成语法树之后再通过遍历语法树来得到中间代码. 当然直接遍历语法树并解释执行也是可以的, 我们老师非得让我们有中间

2015-02-07 17:36:05 7358 3

原创 完整cmm解释器构造实践(二):词法分析

cmm是c的一个子集,保留字只有如下几个if else while read write int real特殊符号有如下几个+ - * / = ( ) ; { } [ ] /* */标识符:由数字,字母或下划线组成的字符串,且不能使关键字,第一个字母不能是数字如果了解c很容易明白上面的是什么意思,也会明白cmm其实有的东西并不多,所以做cmm解释器相对来说比较简单。

2015-01-23 18:22:24 5551 1

原创 完整cmm解释器构造实践(一):搭建环境

事先声明:本教程弱化编译理论,侧重实践,如果想详细了解编译原理,务必自己看书!从一个编译器的角度来看,我这个解释器做的实际上功能不强,也就是说如果想增加函数等的功能,可能需要比较多的思考和代码,但是对于cmm解释器的功能来说是绝对够用了。

2015-01-23 16:05:31 4150 1

原创 adb无法识别设备的解决办法

保证Android设备开启了USB调试再往下看.首先要确保电脑安装了驱动,也就是通过USB连接电脑后,电脑自动安装的驱动,必须要保证驱动安装了,否则之后的步骤没有意义.Android设备为了防止未经允许的电脑使用USB调试设备,使用未知主机进行USB调试前需要用户在设备上确认.问题在于确认对话框的触发时机,我不知道什么条件下会触发,如果电脑能识别手机,但是adb找不到,肯定是因为没有授

2014-12-15 22:11:45 10516

原创 将odex转为jar

最近实习要了解一下部分手机自带浏览器的搜索引擎是怎么配置在手机里的,

2014-11-07 14:58:11 3426

原创 android 2.x上Dialog特定情况导致无法dismiss的bug

最近发现某种情况下,在android 2.x上的Dialog对话框无法被dismiss,只要弹出来界面就卡死,强行使用eclipse重新run的话会导致android设备黑屏无响应,如果是模拟器,则直接崩溃,看到启动画面.而且这个还不是ANR错误.

2014-10-28 10:26:49 2083

原创 解决ubuntu登录后黑屏

我觉得ubuntu做到这个份上也是够拼的,默认的安装xi

2014-10-18 16:19:28 9415

原创 C语言中为什么不能把char**赋给const char**

这个问题是C中的一个深坑,首先说结论:char ** 和 const char ** 是两个不相容(incompatible)的类型,可以理解为不能直接赋值在C11的6.5.2.2 Function calls中有如下内容Each argument shall have a type such that its value

2014-10-11 14:21:27 2741

原创 Android根据包名启动其他app

1

2014-09-28 16:18:25 2496

原创 关于No Launcher activity found!

一般来在console里面看到这个错误,是manifest.xml当中缺少默认的启动页面,也就是相面

2014-08-04 11:30:16 1729

原创 Android NoClassDefFoundError解决办法

能通过编译,运行时报NoClassDefFoundError可能是因为为了attach source,把jarjiadao

2014-07-31 15:14:35 1764

原创 使用TexturePacker打包游戏贴图制作帧动画

TexturePacker是个非常好用的贴图da'bao

2014-06-12 21:57:40 3619

原创 [POJ][1019]Number Sequence

这其实也是一道水

2014-05-31 22:23:23 2065

原创 [POJ][1018]Communication System

DescriptionWe have received an order from Pizoor Communications Inc. for a special communication system. The system consists of several devices. For each device, we are free to choose from several

2014-05-30 10:28:26 1215

原创 [ZOJ][1001]A + B Problem

Calculate a + bInputThe input will consist of a series of pairs of integers a and b,separated by a space, one pair of integers per line.OutputFor each pair of input integers a and b you sh

2014-05-29 14:38:24 1395

原创 VS2012环境下win32 C++编写的坦克大战源代码

这是我去年暑假写的,独立完成,在VS2012下bian

2014-05-21 19:07:06 6200 1

完整cmm解释器构造实践 四 :语义分析与代码生成

完整cmm解释器构造实践 四 :语义分析与代码生成

2015-02-17

完整cmm解释器

完整cmm解释器, 带语法高亮, 词法分析, 语法分析, 代码生成, 解释执行功能, 带GUI. 使用JAVA编写, 使用SWT框架

2015-02-17

完整cmm解释器构造实践(三):语法分析

完整cmm解释器构造实践(三):语法分析

2015-02-07

完整cmm解释器构造实践 二 词法分析

完整cmm解释器构造实践 二 词法分析对应源代码 参看http: blog csdn net shaw1994 article details 43057129

2015-01-23

VS2012工程坦克大战

这是我2013年暑期工程实践写的,一个人完成,所以有很多瑕疵.代码给大家参考参考,所有的代码都在里面,这是visual studio 2012编写的,语言是C++

2014-04-07

空空如也

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

TA关注的人

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