加密重要的通信消息,是一个常见的需求.在一些政府部门的即时通信软件中(如税务系统),对聊天消息进行加密是非常重要的一个功能,因为谈话中可能会涉及到机密的数据.我在最新的GG 4.5中,增加了对聊天消息进行加密的功能,但这一功能并不是强制的,可以通过开关来进行控制.本文就从 为什么要加密消息.不加密有什么风险开始说起,一直到把GG即时通信系统中实现加密消息的完整实现介绍清楚. 想要直接下载体验的朋友请点击:下载中心 一.为什么要加密消息? 我们知道所有的消息在底层是以bytep[]进行传输的,如果…
当QQ收到好友的消息时,托盘的图标会变成好友的头像,并闪动起来,点击托盘,就会弹出与好友的聊天框,随即,托盘恢复成QQ的图标,不再闪动.当然,如果还有其它的好友的消息没有提取,托盘的图标会变成另一个好友的图标,并继续闪动.那么,QQ的这一效果是如何实现的了?我在QQ高仿GG2014中实现了同样的效果,这里我就详细地介绍一下.另外,文末最后会奉上GG最新版本4.1的源码,这次甚至包含了JustLib项目的源码哦! 想要直接下载体验的朋友请点击:“下载中心” 一.TwinkleNotifyIcon的…
前段时间做个项目,客户需要将视频对话的整个过程录制下来,这样,以后就可以随时观看.想来录制整个视频聊天的过程这样的功能应该是个比较常见的需求,比如,基于网络语音视频的1:1的英语口语辅导,如果能将辅导的整个过程录制下来生成一个标准的MP4文件,就是一份难得的资料,便于以后复习和分享.我将1:1的视频对话录制的功能实现为了一个组件VideoChatRecorder,方便大家复用.并且,我在GG的最新版本4.3中使用了它,这样GG也有了视频聊天录制的功能. (想要直接下载体验的朋友请点击:“下载中心…
像QQ这样的即时通信软件,时不时就会从桌面的右下角弹出一个小窗口,或是显示一个广告.或是一个新闻.或是一个公告等.在这里,我们将其统称为“全局系统通知”.很多使用GGTalk的朋友都建议我加上一个类似的功能,今天,GGTalk 5.1终于实现了这一功能,并且可以通过Web后台发送全局系统通知.下面,我们将一步步讲述这一功能是如何实现的(通过类似同样的步骤,大家可以为GGTalk添加任意的自己需要的功能). 1.定义消息类型和协议类 我们将全局系统通知分为两类: (1)第一种通知,是发给所有用户的…
在即时通讯系统(IM)中,加密重要的通信消息,是一个常见的需求.尤其在一些政府部门的即时通信软件中(如税务系统),对即时聊天消息进行加密是非常重要的一个功能,因为谈话中可能会涉及到机密的数据.我在最新的GG 4.5中,增加了对即时聊天消息进行加密的功能,但这一功能并不是强制的,可以通过开关来进行控制.本文就从 为什么要加密消息.不加密有什么风险开始说起,一直到把GG即时通信系统中实现加密消息的完整实现介绍清楚. 想要直接下载体验的朋友请点击:下载中心 一.为什么要加密即时聊天消息? 我们知道所有…
像QQ这样的即时通信软件,时不时就会从桌面的右下角弹出一个小窗口,或是显示一个广告.或是一个新闻.或是一个公告等.在这里,我们将其统称为“全局系统通知”.很多使用C#开源即时通讯系统——GGTalk的朋友都建议我加上一个类似的功能,今天,GGTalk 5.1终于实现了这一功能,并且可以通过Web后台发送全局系统通知.下面,我们将一步步讲述这一功能是如何实现的(通过类似同样的步骤,大家可以为GGTalk添加任意的自己需要的功能). 1.定义消息类型和协议类 我们将全局系统通知分为两类: (1)第一…
在广域网中,由于网络的结构纷繁复杂.而且其实时状况又是千变万化的,所以,要使广域网中的视频聊天达到一个令人满意的效果,存在诸多挑战.这次发布的GG 3.7版本尝试在这一方向上做一些努力,据我自己测试,相比之前版本,新版本GG的视频聊天的效果确实有较大提升.本文不仅会分享GG的最新源码,而且也会把我在过去项目中总结的一些语音视频聊天的优化心得分享给大家. 一.GG V3.7 新增功能展现 针对视频聊天的优化,主要体现在以下几点,为了方便介绍,我将VideoForm的窗体设计的截图放在这里: 1.实…
(几句题外话:虽然就如何将GG发展为一个有商业价值的产品,我还没有很清晰明确的思路,但是从GG发布以来,通过GG认识了一些朋友,也接了一些小单子,赚了一点小钱.有了一点甜头,目前和2.3个好朋友一起做做小项目也是不错的,这未尝不是一条养家糊口之路了?呵呵) 距离上次更新(GG叽叽V3.0,完善基础功能)正好有1个月了,在这个月中,我主要为GG增加了离线消息和离线文件的功能.之所以将这两个功能提前实现,是因为至GG发布以来,就有很多朋友问我在GG的基础上如何实现离线消息和离线文件.看来作为一个能用…
自从微信出来后,语音消息和语音留言变得非常流行,按下一个键说话,比打字要方便多了.GG在V3.6版本增加了对语音消息和语音留言(或称为离线语音消息)的支持.这两个功能的实现已经很完整,只是比较遗憾的一点是:GG所使用的文本框控件,还没有办法像微信的聊天窗口的文本框那样嵌入表示语音消息的控件,所以,我不得不把接收到的语音消息使用一个下拉列表罗列出来,实在很无奈. 一.GG V3.6 新增功能展现 1.语音消息 2.语音留言 3.离线消息分类:离线文字消息.离线语音消息. 4.修复bug:V3.5版…
两个人的孤独 两个人的孤独,大抵是,你每发出去一句话,都要经由无数网络.由几百个计算机处理后,出在他的面前,而他就在你不远处. 连接管理之后 Openfire使用MINA网络框架,并设置ConnectionHandler为MINA的处理器,连接的启停.消息的收发,都在这个类中做中转.这是我们上一篇文章分析的内容. 那么,消息到了ConnectionHandler之后,是如何实现路由的,本文来一探究竟. ConnectionHandler类,MINA的处理器 ConnectionHandler是个…
  (最新版本:V6.2,2019.01.03 .Xamarin移动端版本已经推出,包括 Android 和 iOS) GGTalk开源即时通讯系统(简称GG)是QQ的高仿版,同时支持局域网和广域网,包括客户端(PC客户端.android移动端).服务端.数据库.从2013年最初的GG1.0开放源码以来,到后来陆续增加了网盘功能.远程协助功能.离线文件功能.群聊功能.语音聊天功能.视频聊天功能.以及视讯录制功能.和增加了数据库.我想写一个类似汇总的文章,通过这篇文章,大家可以了解到GGTalk开…
原文地址:http://www.cnblogs.com/justnow/p/3382160.html (最新版本:V6.0,2017.12.11 .即将推出Xamarin移动端版本,包括 Android 和 iOS) GGTalk开源即时通讯系统(简称GG)是QQ的高仿版,同时支持局域网和广域网,包括客户端(PC客户端.android移动端).服务端.数据库.从2013年最初的GG1.0开放源码以来,到后来陆续增加了网盘功能.远程协助功能.离线文件功能.群聊功能.语音聊天功能.视频聊天功能.以及…
(2016年3月更:由于后来了解到GGTalk开源即时通讯系统,因此直接采用了该资源用于项目开发,在此对作者表示由衷的感谢!) —————————————————————————————————— 人在外包公司,身不由己!各种杂七杂八的项目都要做,又没有自己的技术沉淀,每次涉足新的项目都倍感吃力,常常现学现卖,却不免处处碰壁!当然,话说回来,也是自己的水平有限在先,一马配一鞍,无奈也只能留在外包公司. 这不,就在上一周,领导下达一个任务:3天内搭建一个C#即时通讯系统,与原有的办公系统集成. 我…
转:http://blog.csdn.net/huwenfeng_2011/article/details/43412617 源码搭建 下载地址: 地址:http://www.igniterealtime.org/downloads/source.jsp 环境准备 第1步:  在官网上在下最新源码,这里是3.8.1.解压后得到如下图所示: 第2 步: 在IDE工具上新建一个Java普通工程命名openfire 第3步: 将解压后的openfire_src目录的下的所有文件源码复制到此项目下,例图…
首先要感谢大家一直以来对于GGTalk即时通讯系统的关注和支持!GGTalk即时通讯系统的不断完善与大家的支持分不开! 从2013年最初的GG1.0开放源码以来,到后来陆续增加了网盘功能.远程协助功能.离线文件功能.群聊功能.语音聊天功能.视频聊天功能.以及视讯录制功能.和增加了数据库——一路走来,结识许多朋友,大家不仅对GGTalk即时通讯系统的源码提了许多宝贵的建议,我还有幸与某些朋友取得了项目上的合作,这一切都是美妙的缘分! 一直以来,GGTalk即时通讯系统的移动端始终是一个缺憾.前段时…
原文地址:http://www.cnblogs.com/justnow/p/4836636.html 首先要感谢大家一直以来对于GGTalk即时通讯系统的关注和支持!GGTalk即时通讯系统的不断完善与大家的支持分不开! 从2013年最初的GG1.0开放源码以来,到后来陆续增加了网盘功能.远程协助功能.离线文件功能.群聊功能.语音聊天功能.视频聊天功能.以及视讯录制功能.和增加了数据库——一路走来,结识许多朋友,大家不仅对GGTalk即时通讯系统的源码提了许多宝贵的建议,我还有幸与某些朋友取得了…
距上次GG V3.7版本(可在广域网部署运行的QQ高仿版 -- GG叽叽V3.7,优化视频聊天.控制更多相关细节)的发布,已经有50天了,这50天对于GG来说,是一个重大的飞跃.因为这段时间通过一些基于GG的实战项目,发现了GG的很多bug和不足之处,我都一一做了修正,并增加了一些基础且必须的功能.这次发布的是GG V4.0版本,又称为GG 2014. 记得在GG早期版本时,园子里的吉日兄跟我留言说:"GG完全不能正式使用......",那时我还不是很服气,后来当我基于GG开发正式项目…
本篇提纲.png 本篇所述源码基于JDK1.8.0_121 在写上一篇线性表的文章的时候,笔者看的是Android源码中support24中的Java代码,当时发现这个ArrayList和LinkedList的源码和Java官方的没有什么区别,然而在阅读HashMap源码的时候,却发现Android中的Java与官方版的出入略大,遂不得不转而用Eclipse导入jdk源码阅读,这里不得不吐槽一句,用惯了IDEA的快捷键,Eclispe还真是用不习惯~~好了,接下来我们言归正传: 一.什么是Has…
经过连续两个多月的努力(开发.调试.测试.改bug),我们终于赶在中秋国庆之前能把全新的GGTalk Android版本献给大家. 4年之前我们就推出了GGTalk Android的第一个版本,但是功能太简单,界面很粗糙,代码也很糟糕.后面了,因为一直忙着做项目,也没有太多时间去完善它. 很多使用GGTalk的朋友经常问新的Android版什么时候出来,我们也是不好意思地一拖再拖,到了今年7月份,终于再也拖不下去了,必须要发布一个功能相对完整的版本,才能对得住关注的朋友们. 终于,在今天GGTa…
前言:分析Qt的代码也有一段时间了,以前在进行QT源码解析的时候总是使用ue,一个函数名在QTDIR/src目录下反复的查找,然后分析函数之间的调用关系,效率实在是太低了,最近总结出一个更简便的方法,就是利用Qt Creator这个IDE. 带来的好处是: 1. Qt Creator可以很方便的跟踪代码的调用,这样大大提高了分析代码的速度. 2. 函数间的调用关系能更加直观的找到. 3. 便于对代码的纵向关系的把握. 带来的坏处: 1. 只是展现了调用到的函数或者类的关系. 2. 缺少对类.某一…
不要心急,一点一点的进步才是最靠谱的. 读完本文你将了解: 前言 Message 如何获取一个消息 Messageobtain 消息的回收利用 MessageQueue MessageQueue 的属性 何时初始化 消息入队的过程 消息出队的过程 Looper 线程相关 ThreadLocal 无限循环调度 如何停止 Handler Handler 的属性 发送消息 处理消息 移除消息 主线程消息机制 总结 Thanks 前言 本来我以为自己很了解 Handler,在印象中 Android 消息…
好记性不如烂笔头,今天来分析一下Handler的源码实现 Handler机制是Android系统的基础,是多线程之间切换的基础.下面我们分析一下Handler的源码实现. Handler消息机制有4个类合作完成,分别是Handler,MessageQueue,Looper,Message Handler : 获取消息,发送消息,以及处理消息的类 MessageQueue:消息队列,先进先出 Looper : 消息的循环和分发 Message : 消息实体类,分发消息和处理消息的就是这个类 主要工…
上一篇博客我们介绍了remote模式下Actor的创建,其实与local的创建并没有太大区别,一般情况下还是使用LocalActorRef创建了Actor.那么发消息是否意味着也是相同的呢? 既然actorOf还是委托给了LocalActorRef,那么在本地创建的Actor发消息还是跟以前一样的,那么如果如何给远程的Actor发消息呢?我们一般是通过actorSelection或者给远程Actor发送一个Identify消息,来接收对应的ActorRef,然后再发消息.我们来分析一下这两者的区…
CopyOnWrite 思想在 Kafka 源码中的运用 在 Kafka 的内核源码中,有这么一个场景,客户端在向 Kafka 写数据的时候,会把消息先写入客户端本地的内存缓冲,然后在内存缓冲里形成一个 Batch 之后再一次性发送到 Kafka 服务器上去,这样有助于提升吞吐量. 请看下图: 这个时候 Kafka 的内存缓冲用的是什么数据结构呢?请看源码: private final ConcurrentMap<TopicPartition, Deque<RecordBatch>>…
该系列总览: Hadoop3.1.1架构体系——设计原理阐述与Client源码图文详解 : 总览 在上一章(Hadoop3.1.1源码Client详解 : 写入准备-RPC调用与流的建立) 我们提到,在输出流DFSOutputStream创建后,DataStreamer也随之创建,并且被启动 下文主要是围绕DataStreamer进行讲解 DataStreamer是一个守护线程类,继承关系如下.       观察DataStreamer的run方法,没有意外的,我们可以发现他和普通的做法一样,用…
[源码分析] 消息队列 Kombu 之 启动过程 0x00 摘要 本系列我们介绍消息队列 Kombu.Kombu 的定位是一个兼容 AMQP 协议的消息队列抽象.通过本文,大家可以了解 Kombu 是如何启动,以及如何搭建一个基本的架子. 因为之前有一个综述,所以大家会发现,一些概念讲解文字会同时出现在后续文章和综述之中. 0x01 示例 下面使用如下代码来进行说明. 本示例来自https://liqiang.io/post/kombu-source-code-analysis-part-5系列…
[源码分析] 消息队列 Kombu 之 Consumer 目录 [源码分析] 消息队列 Kombu 之 Consumer 0x00 摘要 0x01 综述功能 0x02 示例代码 0x03 定义 3.1 定义 3.2 Queue 0x04 Init 4.1 处理调用 4.1.1 queues 4.1.2 channel 4.1.3 on_message 4.2 建立联系 4.2.1 channel与queue 4.2.2 channel与exchange 4.2.3 Exchange & Bind…
[源码分析] 消息队列 Kombu 之 Hub 0x00 摘要 本系列我们介绍消息队列 Kombu.Kombu 的定位是一个兼容 AMQP 协议的消息队列抽象.通过本文,大家可以了解 Kombu 中的 Hub 概念. 0x01 示例代码 下面使用如下代码来进行说明. 本示例来自https://liqiang.io/post/kombu-source-code-analysis-part-5系列,特此深表感谢. def main(arguments): hub = Hub() exchange =…
前言:有的时候自己不知道自己是井底之蛙,这并没有什么可怕的,因为你只要蜷缩在方寸之间的井里,无数次的生活轨迹无非最终归结还是一个圆形:但是可怕的是有一天你不得不从井里跳出来生活,需要重新审视井以外的生活,你就会发现世界如此美好,我知道的如此的少! 好比,但你看到如下代码 namespace Singleton { public class Singleton { private static Singleton singleton; private Singleton() { } public…
PHP批量替换MySql数据库内容 UTF-8 1.0版 <?php //声明 //1.本源码开发意图:作者在使用一些CMS建站的时候发现很多CMS把网址写入到数据库了,如果换网址,那么就需要更新数据库中的老网址,如果一个一个修改,很不方便,所以开发此源码,供大家学习或使用: //2.源码开发者:杨波: //3.源码开发者联系QQ:773003231: //4.源码开发者博客:http://www.cnblogs.com/phpyangbo/: //5.源码开放性:任何人都可以随意更改或使用本源…