hengyunabc的专栏

日落黄金台金黄落日 -- 横云断岭

排序:
默认
按更新时间
按访问量

移动App通讯协议及序列化方式的选择

简单列一下不同协议,序列化方式等的考虑。 http还是私有协议? http协议优/缺点: 在服务器端只需要提供一份接口,浏览器和app共用。在app中嵌入web view也很容易。 http协议的相关工具非常多。开发人员很方便 。比如负载均衡,直接nginx搞定。 比如统计一个接口的...

2014-07-12 17:59:36

阅读数:6851

评论数:0

Android 的WebView使用CookieManager崩溃的问题

应用里,如果用户退出登陆了,而WebView里还没有退出登陆,这就有点蛋疼了。所以在用户退出时,要清除WebView的Cookie。但是据说调用CookieManager应用可能会崩溃。 先来看下微信是怎么做的,反编绎了下微信的apk,发现是这样的: private void a(Acti...

2014-07-03 20:18:39

阅读数:6639

评论数:2

从一篇Blog看两个并发编程错误

发现公司支付宝接入的代码有点神奇,在网上搜索了下,找到原始版本。估计有不少人都是抄那份代码的。 原文在:http://blog.csdn.net/simdanfeg/article/details/9011603    Android支付接入(一):支付宝 但是代码里有两个明显的并发问题,尽管在...

2014-07-03 20:03:00

阅读数:1803

评论数:1

C++11的thread代码分析

本文分析的是llvm libc++的实现:http://libcxx.llvm.org/ class thread thread类直接包装了一个pthread_t,在linux下实际是unsigned long int。 class thread { pthread_t __t...

2014-06-29 20:50:57

阅读数:10277

评论数:0

移动App该如何保存用户密码

移动App该如何保存用户密码? 这个实际上和桌面程序是一样的。 先看下一些软件是如何保存用户密码的: 我们先来看下QQ是怎么保存密码的: 参考:http://bbs.pediy.com/archive/index.php?t-159045.html, 桌面QQ在2012的时候把密码md5计算...

2014-06-28 14:15:01

阅读数:44967

评论数:12

C++11中的mutex, lock,condition variable实现分析

本文分析的是llvm libc++的实现:http://libcxx.llvm.org/ C++11中的各种mutex, lock对象,实际上都是对posix的mutex,condition的封装。不过里面也有很多细节值得学习。 std::mutex 先来看下std::mutex: 包增了一个pt...

2014-06-22 22:57:32

阅读数:9707

评论数:1

C++11中once_flag,call_once实现分析

本文的分析基于llvm的libc++,而不是gun的libstdc++,因为libstdc++的代码里太多宏了,看起来蛋疼。 在多线程编程中,有一个常见的情景是某个任务只需要执行一次。在C++11中提供了很方便的辅助类once_flag,call_once。 声明 首先来看一下once_flag和...

2014-06-22 01:29:00

阅读数:6463

评论数:1

写程序很难之去除字符串的空白字符

在做性能调优时,用JProfiler测试Web应用的性能,发现有个replaceBlank函数占用了10%的CPU时间,进去看了下,是个简单的用正则去除XML文档里空白字符串的功能。但是这个简单功能却消耗了10%的性能。 在Web应用里,去掉空白字符串,似乎是个简单的功能,但是真正写起来,却也有些...

2014-06-16 02:51:44

阅读数:4922

评论数:0

Java的LockSupport.park()实现分析

LockSupport类是Java6(JSR166-JUC)引入的一个类,提供了基本的线程同步原语。LockSupport实际上是调用了Unsafe类里的函数,归结到Unsafe里,只有两个函数: public native void unpark(Thread jthread); pu...

2014-06-03 02:52:12

阅读数:23422

评论数:5

并行编程之条件变量(posix condition variables)

在整理Java LockSupport.park()的东东,看到了个"Spurious wakeup",重新梳理下。 首先来个《UNIX环境高级编程》里的例子: #include struct msg { struct msg *m_next; /* ... more s...

2014-06-02 00:24:44

阅读数:4621

评论数:2

有意思的游戏:Google XSS Game

Google最近出了一个XSS的游戏: https://xss-game.appspot.com/ 我这个菜鸟看提示,花了两三个小时才全过了。。 这个游戏的规则是只要在攻击网页上弹出alert窗口就可以了。 题目页面是在iframe里嵌套的展现的,那么父窗口是如何知道iframe里成功弹出了窗...

2014-05-31 17:34:38

阅读数:3992

评论数:0

扯谈web安全之JSON

前言 JSON(JavaScript Object Notation),可以说是事实的浏览器,服务器交换数据的标准了。目测其它的格式如XML,或者其它自定义的格式会越来越少。 为什么JSON这么流行? 和JavaScript无缝对接是一个原因。 还有一个重要原因是可以比较轻松的实现跨域。如果是XM...

2014-05-29 21:03:53

阅读数:24655

评论数:2

利用hsdis和JITWatch查看分析HotSpot JIT compiler生成的汇编代码

安装hsdis 要查看JIT生成的汇编代码,要先装一个反汇编器:hsdis。从名字来看,即HotSpot disassembler。 实际就是一个动态链接库。网络上有已经编绎好的文件,直接下载即可。 国内的:http://hllvm.group.iteye.com/ 也可以自己编绎,只是编...

2014-05-25 15:04:26

阅读数:7743

评论数:2

并行编程之多线程共享非volatile变量,会不会可能导致线程while死循环

背景 大家都知道线程之间共享变量要用volatile关键字。但是,如果不用volatile来标识,会不会导致线程死循环?比如下面的伪代码: static int flag = -1; void thread1(){ while(flag > 0){ //wait or d...

2014-05-25 01:30:26

阅读数:4224

评论数:1

ElasticSearch远程任意代码执行漏洞(CVE-2014-3120)分析

原理 这个漏洞实际上非常简单,ElasticSearch有脚本执行(scripting)的功能,可以很方便地对查询出来的数据再加工处理。 ElasticSearch用的脚本引擎是MVEL,这个引擎没有做任何的防护,或者沙盒包装,所以直接可以执行任意代码。 而在ElasticSearch里,默认配置...

2014-05-23 02:11:32

阅读数:11589

评论数:0

写程序很难之logstash之file input插件实现分析

前言 写程序有时候真的有点难,要考虑各种情况。 应用在运行中,会不断生成日志文件。假如要实现一个日志收集的工具,不考虑其它的分析功能,只考虑收集,有哪些方面要考虑的? 首先看下一般的log框架是如何输出日志的: 可能是这样的:a.log.1,  a.log.2, a.log.3, a.lo...

2014-05-14 20:24:09

阅读数:26942

评论数:3

扯谈网络编程之Tcp SYN flood洪水攻击

简介 TCP协议要经过三次握手才能建立连接: (from wiki) 于是出现了对于握手过程进行的攻击。攻击者发送大量的SYN包,服务器回应(SYN+ACK)包,但是攻击者不回应ACK包,这样的话,服务器不知道(SYN+ACK)是否发送成功,默认情况下会重试5次(tcp_syn_retries...

2014-05-12 20:45:03

阅读数:19266

评论数:6

ZPush--基于netty4实现的苹果通知推送服务(APNs)Java客户端

简单说下实现苹果通知推送服务(APNs)客户端的一些要注意的地方: 使用长连接;sanbox服务器是没用的,调试时直接用“gateway.push.apple.com”域名;对于错误的Notification,苹果会回应一个Error response,里面有个identifier,在这个id...

2014-05-10 00:46:11

阅读数:7453

评论数:11

蛋疼的Apple IOS Push通知协议

简介 Apple Push通知机制其实很简单,就是Apple的APNs服务器做为中间人,把消息推送到对应的设备上。 一张来自Apple文档的图: 当然,示意图看起来简单,但是还有一些实际的问题。 比如,如何区分Provicer的?如何区分设备的? 简单而言,是这样的: 每个应用都有一个自己...

2014-05-10 00:33:07

阅读数:8660

评论数:1

用KGdb和VMware调试Linux内核,System Call

Linux的内核和System Call不好调试,参考这里: http://stackoverflow.com/questions/5999205/cannot-step-into-system-call-source-code 简单来说,如果想在本机调试system call,那么当你进...

2014-05-03 20:59:10

阅读数:3561

评论数:0

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