- 博客(63)
- 资源 (5)
- 收藏
- 关注
原创 IM系统该如何选择消息推送平台
UPush推送系统是我们在实际项目中总结出来的”方法论“,达到了消息推送和业务的完美平衡。- 首先它适配了所有主流操作系统Android、IOS、Windows、MacOS、Linux,主流跨平台开发框架Uniapp、Electron、Qt - 集成所有厂商推送(苹果、华为、小米、OPPO、VIVO、魅族、谷歌FCM),注意不是其他友商简单的集成
2023-03-19 23:17:27
482
转载 AppRTC(WebRTC)服务器搭建
前言最近研究了几天 appr.tc 服务器的搭建,主要目的是想在本地搭建一套 webrtc 服务器环境,可以做一些webrtc相关的实验。经过几天的折腾,得到以下几点结论:一、最新的 appr.tc服务器是不能使用非https服务的。主要有两种原因:1. chrome浏览器不支持在非https方式下打开音/视频设备。2. appr.tc中的信令服务器(collider)不支持非 htt...
2019-07-01 11:04:15
998
原创 ios中@class和 #import,两种方式的讨论
很多刚开始学习iOS开发的同学可能在看别人的代码的时候会发现有部分#import操作写在m文件中,而h文件仅仅使用@class进行声明,不禁纳闷起来,为什么不直接把#import放到h文件中呢?这是因为h文件在修改后,所有import该h文件的所有文件必须重新build,因此,如果把#import写在h文件中,import该h文件的文件也就会产生不必要的编译,增加编译时间,特别是在项目...
2012-05-22 14:40:29
202
原创 SoftReference
本文介绍对象的强、软、弱和虚引用的概念、应用及其在UML中的表示。1.对象的强、软、弱和虚引用 在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高到低依次为:...
2012-05-22 14:22:26
126
基于.NET 的WebSocket 的简单实例 --- 数据格式
上一篇我们已经在服务器和客户端之间建立起一个能双向通讯的途径,如果你马上按以前的经验直接丢送数据,恭喜,数据能过去,可你却根本不认识,这是自然,他的地盘他要做主,websocket 有其自己约定的数据格式,我们必须按照这个格式来才行的。协议这玩意,很是枯燥,只能用,不能创新,但多了解一些这种规则,对以后我们定义传输协议有很强的参考价值,所以我们还是得认真瞧瞧。打开:http://tools...
2012-04-25 16:40:00
171
WebSocket草案10文本数据解析和发送
握手协议实现了,接下来就是解析数据了,这个相对来说要麻烦很多,相比草案7.6变得更复杂了。下图是数据传输的格式:各个值的具体含义可以参考这个中文翻译:http://blog.youkuaiyun.com/fenglibing/article/details/6852497,英文原文在这里:http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketpr...
2012-04-19 17:06:00
187
VC++实现的WebSocket服务器端握手协议
本程序是VC++实现windows上程序内嵌WebSocket的部分代码,因为想让浏览器和本地程序直接交互,最好的办法就是websocket,windows的exe程序内嵌一个websocket服务器端程序,浏览器访问localhost,建立交互,这种办法比做成插件更好,所以我采用这种办法来联通桌面程序和浏览器。VC++实现WebSocket的服务器代码,网上还是有示例的,不过基本上不能用,我...
2012-04-18 14:57:00
2069
在iPhone上实现简单Http服务
原文:A simple, extensible HTTP server in Cocoa原文地址:http://cocoawithlove.com/2009/07/simple-extensible-http-server-in-cocoa.htmlhttp是计算机之间通讯协议的比较简单的一种。在iPhone上,由于没有同步数据和文件共享的APIs,实现iPhone应用程序与PC之...
2012-04-18 10:37:00
176
Object-C 中的Selector 概念
在iphone程序中会大量看到@selector这样的用法。<<iphone开发基础>花了很大一个篇幅来解析这个语法,但是不知是翻译问题,还是解释过细,不大看得懂,很是不给力.直到程序用这个语法,并且仔细看了一些解析文章。才明白这一语法。 简而言之,你可以理解 @selector()就是取类方法的编号,他的行为基本可以等同C语言的中函数指针,只不过C语言中,可以把函数名直...
2012-04-17 16:04:00
127
NSOperationQueue队列的优先级
在使用NSOperationQueue简化多线程开发中介绍了iOS的操作队列使用方法。这里补充一下队列的优先级功能。假设现在队列中有多个操作(NSOperation),现在再向队列中加入新的操作,并且希望新增加的操作排在未执行操作的最前面。这时就需要设置操作的优先级了。编写了个最简单的NSOperation,头文件:#import <Foundation/F...
2012-04-16 17:24:00
861
判断SOCKET连接状态
1.用read函数来判断读到长度0不能断定是已经断开.除非是-1,才代表输入流已经被关闭,说名socket已经close,而且关键在于你怎么读,实际上应该是一个单独的线程一直在读,因为你无法预先知道能不能一次将发过来的包读完,也无法知道一次是不是读完整了包,所以线称一直循环在读并且一直在解包.这样即能知道什么时候server断,也完成了消息的解读,我的方案是这样的,在大数据量高速率网络上运行没...
2012-04-16 15:37:00
603
ios网络编程
网络编程专题总结(重要)一:确认网络环境3G/WIFI1. 添加源文件和framework开发Web等网络应用程序的时候,需要确认网络环境,连接情况等信息。如果没有处理它们,是不会通过Apple的审(我们的)查的。Apple 的 例程 Reachability 中介绍了取得/检测网络状态的方法。要在应用程序程序中使用Reachability,首先要完...
2012-04-16 14:18:00
105
send或者write socket遭遇SIGPIPE信号
当服务器close一个连接时,若client端接着发数据。根据TCP协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开了,不要再写了。又或者当一个进程向某个已经收到RST的socket执行写操作是,内核向该进程发送一个SIGPIPE信号。该信号的缺省学位是终止进程,因此进程必须捕获它以免不情愿的被终止。...
2012-04-12 11:20:00
422
Qt configure参数说明
前面是*号的表示默认参数. +号表示该功能要求被评估,评估成功后才能被接受.1. -release ........... 调试关闭.没有调试库,自己的项目只能发布,不能调试(没有调试库的缘故),如果你硬要编译debug版本的话,会提示找不到xxxxxd.dll 2. * -debug ............. 只有调试库,没有释放库,也就是说以后自己的项目只能调试,如果你硬要编译d...
2012-04-10 11:31:00
397
把ndk作为独立编译器
USING THE ANDROID TOOLCHAIN AS A STANDALONE COMPILER使用 Android 工具链作为一个独立编译器======================================================WARNING WARNING WARNING WARNING WARNING WARNING WARNINGWARNIN...
2012-04-10 10:29:00
281
ndk编译c可执行程序
继续NDK的开发。上次我们的实例中,对C应用程序的编译链接,自己编写的makefile是件比较困难的事情。虽然最后成功了,不过中间经历了不少坎坷。我们现在研究下如何用NDK提供的build工具,实现我们的目标。还是以Hello Android工程为例。建立好工程hello-a,在jni目录下创建文件hello-a.c,文件内容如下。#include <stdio.h...
2012-04-09 09:48:00
367
linux 查看可执行文件动态链接库相关信息
ldd <可执行文件名>查看可执行文件链接了哪些系统动态链接库nm <可执行文件名>查看可执行文件里面有哪些符号strip <可执行文件名>去除符号表可以给可执行文件瘦身如果我们想从可执行程序里面提取出来一点什么文本信息的话,还可以用strings命令strings <可执行文件名>Linux操作系统上面的动态共享库大致分为三类:1、操作...
2012-04-08 09:39:00
120
iOS高效开发必备的10款Objective-C类库
因为iOS SDK相对比较底层,所以开发者就得受累多做一些体力活。不过幸运的是,有很多第三方的类库可以用来简化很多不必要的工作.经过作者团队的慎重讨论,他们评选出了10款能够极大提高iOS开发效率的类库,根据原文作者的评价来看,基本上有了这10款工具,做iOS开发就真的跟泡Cocoa一样了。MBProgressHUD(进展指示符库)地址:https://github.com...
2012-03-31 13:40:00
96
Qt + ffmpeg+SDl
(1)先转QT中.pro原文档的写法1. 注释 从“ #” 开始,到这一行结束。 2. 指定源文件 SOURCES = *.cpp对于多源文件,可用空格分开,如: SOURCES = 1.cpp 2.cpp3.cpp 或者每一个文件可以被列在一个分开的行里面,通过反斜线另起一行,就像这样 : SOURCES = hello.cpp main.cpp一个更冗长的...
2012-03-31 12:30:00
120
用Android NDK编译FFmpeg
Android内置的编解码器实在太少,于是我们需要FFmpeg。Android提供了NDK,为我们使用FFmpeg这种C语言代码提供了方便。不过为了用NDK编译FFmpeg,还真的花费了不少时间,也得到了很多人的帮助,最应该谢谢havlenapetr。我觉得我现在这些方法算是比较简洁的了--下面就尽量詳細的说一下我是怎么在项目中使用FFmpeg的,但是基于我混乱的表达能力,有不明白的就问我...
2012-03-31 12:25:00
76
Android编程获取root权限问题
为了方便给出前一篇地址:http://blog.youkuaiyun.com/weiyirong/article/details/7380651调了几天这个root权限获取问题终于搞定了,各种百度谷歌,各种方法全部都测试过终于有眉目了.我通过这几天测试总结了三个方法获取root权限问题:1 上一篇文章所引用的方法[java] view plaincopy/***应用...
2012-03-31 11:41:00
129
Android系统开机画面修改
Android系统开机画面分为下面三个阶段:1、开机图片:Android内核是基于标准内核的,对linux比较熟悉,特别是在开发板上移植过Linux系统的人就知道在内核引导过程中会显示出一个小企鹅的图片,这就是第一阶段的开机图片,相信大家知道怎么去修改它。Android1.5及其以上版本都取消了这个图片的显示,具体的看内核相关代码就知道了;2、开机文字:Android系统开机会...
2012-03-31 11:35:00
93
Qt4.8.1移植至iOS的小体会
前几天看到gitorious上有人移植了,但是下载链接打不开,于是clone了他的项目打算自己编译。后来发现他是在mac上移植的,mkspec还要自己重新。借鉴了他的代码,自己写了mkspec,感觉比他写得好。 编译过程会遇到一些问题,只要是条件编译问题,解决起来不难。最恶心的一个问题是编译qlibraryinfo.cpp时出现如此错误[plain] view plainc...
2012-03-31 11:22:00
135
Dalvik虚拟机探析
Dalvik虚拟机是google专门为android平台开发的一个java虚拟机,但它并没有使用JVM规范。Dalvik虚拟机主要完成对象生命周期的管理、线程管理、安全和异常管理以及垃圾回收等重要功能。 java虚拟机和Dalvik虚拟机的区别:java虚拟机Dalvik虚拟机java虚拟机基于栈。基于栈的机器必须使用指令来载入和操作栈上数据,所需指令更多更多d...
2012-03-31 11:06:00
93
Android博客文章整理
闭关了四个多月,整理了博客上所有的Android文章,一共划分为三大篇,十六个章节,820页,系统地分析了Android系统的源代码,从Linux内核层、HAL层、运行时库层到应用程序框架层。整理期间困难重重,多次想要放弃,但是看到在四个多月不更新文章的情况下,博客访问量仍节节攀升,从评论中感受到了网友们的热情支持,受到了极大的鼓舞,最终坚持了下来。现在将整理的内容提纲发表出来,欢迎大家提供建议。...
2012-03-31 10:38:00
131
典型的 C++ 程序员成长经历
一个典型的 C++ 程序员成长经历:1. 完整的学一遍 C++ 所有语言特性,典型书籍 "The C++ Programming Language" Part1, Part2, "C++ Primer" 感觉 C++ 像大杂烩(多编程范型),各种精妙的语法特性 (friend, virtual/RTTI, const/mutable, exception, template),太多精妙的东...
2012-03-31 10:23:00
85
Windows平台下tuxedo应用simpapp举例
Windows平台下tuxedo应用simpapp举例 一、 课程目标通过本课程学习,你可以掌握如下知识:初步理解tuxedo应用的各个组成部分:客户端、服务端、配置文件、系统管理等了解tuxedo应用客户端、服务端程序代码组成部分及编译方法了解tuxedo应用的ubbconfig配置文件的作用及编译方法了解tuxedo应用的启动、停止方法了解tuxedo应用的系...
2012-02-16 17:38:00
147
windows XP 调通tuxedo的simpapp所经历的艰苦过程
下面这张图就是部属一个完整的tuxedo应用的流程(使用ATMI接口访问)从图上可以看出,总共需要3步。我在这里再细分一下。流程为1.配置环境变量2.编辑ubbconfig文件3.将ubbconfig文本文件编译为tuxconfig二进制文件4.编译服务器端程序5.编译客户端程序6.启动服务器7.调用服务初看起来,好像也不复杂。很清晰的几步 我在...
2012-02-16 16:55:00
245
TUXEDO应用系统的配置
配置文件UBBCONFIG介绍一个TUXEDO应用系统的所有资源都在一个文本文件中进行定义,该文件称为UBBCONFIG,在配置完成后,UBBCONFIG被编译成一个二进制的文件TUXCONFIG.在TUXEDO系统启动时,从该文件中读取系统的配置信息。 UBBCONFIG文件类似WINDOWS下的*.INI文件。它包括以下9大部分, 我们称之为节,RESOURCES,MACHIENS,GRO...
2012-02-16 16:49:00
177
深入解读Linux与Android的相互关系
大家都知道Android是基于Linux内核的操作系统,也曾经和Linux基金会因为内核问题产生过分歧,本文将开始对Android的内核进行剖析,主要介绍Android和Linux之间的关系,后续还会讲到Android系统在Linux系统之上扩展的部分功能和驱动。 虽然Android基于Linux内核,但是它与Linux之间还是有很大的差别,比如Android在Linux内核的基础上添加了自...
2012-02-06 13:02:00
102
Android系统在超级终端下必会的命令大全(adb shell命令大全)
1. 显示系统中全部Android平台: android list targets 2. 显示系统中全部AVD(模拟器): android list avd 3. 创建AVD(模拟器): android create avd --name 名称 --target 平台编号 4. 启动模拟器: emulator -avd 名称 -sdcard ~/名称.img (...
2012-01-16 13:42:00
352
android linux 基础知识总结
android linux 基础知识总结===================================================linux ,Android基础知识总结1. Android编译系统分析2. 文件系统分析3. 制作交叉工具链4. 软件编译常识5. 设置模块流程分析6. linux系统启动流程分析7. linux下svn使用指南...
2012-01-16 13:32:00
322
VC连接soap
首先下载并安装SoapToolkit30,搭建IIS服务(baidu下吧)建立vc控制台程序,内容如下:把下面的192.168.120.59都替换成你的服务的ip,如果在本地搭建的改为localhost#include <stdio.h>#import "msxml4.dll" using namespace MSXML2;#import "C:\Pro...
2011-12-31 13:31:00
169
Qt的皮肤设计
Qt的皮肤设计,也可以说是对Qt应用程序的界面美化,Qt使用了一种类CSS的样式规则QSS。一、Style Sheet的应用1.直接在程序代码中设置样式,利用setStyleSheet()方法widget->setStyleSheet("color:red"); //widget内字体颜色为红色widget->->setStyleSheet(QPushButt...
2011-12-21 16:10:00
422
Android系统架构解析
Andriod是什么?首先,就像Android开源和兼容性技术负责人Dan Morrill在Android开发手册兼容性部分所解释的,“Android并不是传统的Linux风格的一个规范或分发版本,也不是一系列可重用的组件集成,Android是一个用于连接设备的软件块。”Linux:所有东西的底层是一个稳定的保持更新的Linux内核(我现在用的Nexus手机所用的就是2.6.32版...
2011-12-19 14:06:00
94
Android 检测是否有ROOT权限
ndroid (linux)很多命令需要root权限才能执行,比如说查看系统目录文件等,如果我们的程序需要用到查看此类文件或执行系统命令,就必须先获取Root权限。view plainprint?importjava.io.DataInputStream;importjava.io.DataOutputStream;importjava.io.InputStr...
2011-12-16 16:05:00
99
如何让android apk 获得系统权限
如何让自己写的apk获得系统权限? 第一个方法简单点,不过需要在Android系统源码的环境下用make来编译: 1. 在应用程序的AndroidManifest.xml中的manifest节点中加入 android:sharedUserId="android.uid.system"这个属性。 2. 修改Android.mk文件,加入LOCAL_CERTIF...
2011-12-16 16:04:00
198
Android APK反编译详解 Android APK反编译详解(附图)
Android APK反编译详解(附图)这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到源代码吧,google了一下,确实很简单,以下是我的实践过程。在此郑重声明,贴出来的目的不是为了去破解人家的软件,完全是一种学习的态度,不过好像通过这种方式也可以去汉化一些外国软件。一、反编译Apk得到Java源代码...
2011-12-13 22:18:00
129
ubuntu输入法失效解决
ubuntu更新到11.10,出现了输入法不好用的现象,网上看到的方法: killall ibus-daemon (结束进程) ibus-daemon -d (重启ibus)我用了发现不好用,可能不适用于我吧,我的方法是,注销帐户,再进入就好了。...
2011-12-11 10:08:00
584
Syncro.SVN.Client.v8.1.MacOSX破解版
2013-10-01
svg查看器svg查看器
2010-10-01
Ogre1.7的地形编辑
2010-05-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人