关闭
当前搜索:

[置顶] 服务器端编程心得(七)——开源一款即时通讯软件的源码

在我的《服务器端编程心得》这个系列的第一篇至第六篇都是讲了一些零散的不成体系的网络编程细节。今天,在这篇文章中,我将介绍一款我自主开发的即时通讯软件flamingo(中文:火烈鸟),并开源其服务器和pc客户端代码。以此来对前几篇文章中说到的理论进行实践。        代码在github和csdn.net上各上传了一份: github地址:  服务器端代码地址:https://github....
阅读(6389) 评论(9)

centos7 cannot find -lstdc++ 错误

解决CentOS 7 中,make源文件时出现 /usr/bin/ld: cannot find -lstdc++ 错误在CentOS 7中,使用static方法编译,需要安装static version of glibc-static libstdc++-static。使用如下命令安装yum install glibc-static libstdc++-static文章来源:https://ji...
阅读(27) 评论(0)

git分支管理

git分支确实是一个非常好的东西,先看一个截图吧:这个图其实是很有讲究的,其中历史上的工作顺序是从C0->C1->C2->...->C13。下面开始正式备忘一下git与分支有关的记录。首先,需要明确的一个概念是无论是远程仓库还是本地仓库,git会自动将这个仓库命名成origin,默认会有一个主分支,叫master,所以引用origin仓库中master分支可以表示成origin/master。1....
阅读(53) 评论(0)

Android--UI布局

概述  布局(Layout)的概念是针对Activity的,Activity就是布满整个Android设备的窗口或者悬浮于其他窗口上的交互界面。在一个应用程序中通常由多个Activity构成,每个需要显示的Activity都需要在AndroidManifest.xml文件之中声明。  通常情况下,开发人员可以使用两种方式来创建UI组件,一种方式是使用XML方式来配置UI组件的相关属性,然后装载这些...
阅读(49) 评论(0)

Android Studio下的build工具路径和设置位置

Android Studio下的编译工具gradle的安装路径在:磁盘路径\Android Studio\gradle\m2repository\com\android\tools\build\gradle而不是:磁盘路径\Android Studio\gradle\项目中配置gradle的位置是:项目目录下build.gradle文件中:// Top-level build file where...
阅读(101) 评论(0)

C++11中调用函数内部定义匿名lamda函数

#include "stdafx.h" #include int _tmain(int argc, _TCHAR* argv[]) { int i = 0; int j = 0; [i, j](int k, int j) { std::cout << k << ", " << j << std::endl; }(1, 2); ...
阅读(145) 评论(0)

关于std::shared_ptr与std::enable_shared_from_this循环引用导致的问题

自从C++11有了std::shared_ptr这样的智能指针,作为C++程序只要将一个堆上的类对象用std::shared_ptr包裹一下就可以做到内存自动释放了。看一个例子:#include "stdafx.h" #include class A { public: A() { m_i = 9; } ~A() { m...
阅读(120) 评论(0)

Java中的HashMap

http://mp.weixin.qq.com/s?__biz=MzAxOTc0NzExNg==&mid=2665514069&idx=1&sn=2996d864bbe596d0af763fba3d244fa7&chksm=80d67c16b7a1f500ec6a191eb4a0beac0e95dbd5a7bf8ee01f5ed2cb17960b9ab32c0b965949&mpshare=1&s...
阅读(88) 评论(0)

Mysql中LAST_INSERT_ID()的函数使用详解

see: http://www.jb51.net/article/62973.htm...
阅读(122) 评论(0)

一位10年Java工作经验的架构师聊Java和工作经验

黄勇,从事近十年的 JavaEE 应用开发工作,现任阿里巴巴公司系统架构师。对分布式服务架构与大数据技术有深入研究,具有丰富的 B/S 架构开发经验与项目实战经验,擅长敏捷开发模式。国内开源软件推动者之一,Smart Framework 开源框架创始人。热爱技术交流,乐于分享自己的工作经验。著有《架构探险——从零开始写Java Web框架》一书。我的十年技术之路和大家介绍下我目前所从事的工作。我目...
阅读(320) 评论(0)

客户端软件的结构思考(一)

关于这个标题的内容我思考了很多年,也求索了很多年,每次遇到一份新的质量看起来不错客户端软件的源码时,我总是不自己觉的去学习它和研究它,以期能解决我的困惑,希望能达到我心中“完美”方案的样子。但是直到今天,我仍然没找到所谓的“完美”的答案,但是在这个成长过程中,因为借鉴、融合和吸纳了许多其他的pc软件的设计思想和技巧,我在做pc软件整体结构设计时越来越得心应手。下面是我成长的心路历程,故事很长,太多...
阅读(578) 评论(0)

网络编程难点解析(二)—— TCP之心跳包实现思路

心跳包机制       心跳包之所以叫心跳包是因为:它像心跳一样每隔固定时间发一次,以此来告诉服务器,这个客户端还活着。事实上这是为了保持长连接,至于这个包的内容,是没有什么特别规定的,不过一般都是很小的包,或者只包含包头的一个空包。也有的心跳包中会携带一些需要定期更新的信息。       在TCP的机制里面,本身是存在有心跳包的机制的,也就是TCP的选项:SO_KEEPALIVE。系统默认是设置...
阅读(409) 评论(0)

网络编程难点解析(一) —— 网络异常检查

一、本文目的在涉及网络编程的实际项目应用中,由于网络不可能一直处于理想状态,TCP长连接也可能随时正常或异常地断开,如果不予处理,那么就可能因此而给程序带来很多潜在的问题。 编写该文档的目的就在于针对网络程序中可能遇到的各种问题,拿出来与大家探讨一下具体问题的解决方案,同时本人将前期调研的一些解决方案列出来,抛砖引玉,希望可以集思广益,寻求到更加合理的解决方案。二、网络断开时机1、正常网络断开(1...
阅读(300) 评论(0)

关于std::move和std::forward

这篇文章介绍的真不错:http://www.cnblogs.com/catch/p/3507883.html总结起来:1. std::move是将左值变成右值减少不必要的拷贝;2. std::forward保持一个值的左值和右值特性不变,以变传给既能接受左值又能接受右值的函数,例:template TYPE* acquire_obj(ARG&& arg) { return new TYPE(...
阅读(192) 评论(0)

关于C++11中的std::XXX<void>

一般常见的有:std::sharedstd::weak_ptrstd::unique_ptrstd::function第一个、第二个和第三个的意思是:make a smart pointer which can point to many different types of data structures like structs, vectors, matrices... basically ...
阅读(420) 评论(0)

关于std::bind绑定栈变量对象的思考

我一直以为std::bind函数在给某个函数绑定参数时,如果参数是栈变量,且是类对象,等实际调用std::bind函数时,因为传递的栈变量参数已经不存在了,会导致程序崩溃,但实际上并不是这样,看代码:#include #include class A { public: A() { k = 11; std::cout << "A constru...
阅读(309) 评论(0)

Java服务器与客户端通信框架初探

这篇文章中,我们讲述一下用Java实现网络通信的的基本流程,这里讲述的是不基于任何框架的原生语言自带的写法。Java服务器端写法:程序入口代码如下:public static void main(String[] args) { try { // ① 创建一个线程 等其他客户端的连接 final ServerSocket server = new ServerSocket(8090); ...
阅读(859) 评论(0)

win32程序显示网页

说是win32,实际程序中使用了atl的东西。所以新建win32程序时,记得勾选使用atl:代码如下:#include "stdafx.h" #include "Win32Project3.h" #include CComModule _Module; #include //#pragma comment(lib,"atl.lib") #include #define MAX_LOA...
阅读(369) 评论(0)

DuiLib消息处理剖析

文章来源:http://blog.csdn.net/zhuhongshu/article/details/41725657分为几个大部分:控件容器(本质也是控件)UI构建解析器(XML解析)窗体管理器(消息循环,消息映射,消息处理,窗口管理等)渲染引擎DuiLib 消息循环剖析DuiLib的消息循环非常灵活,但不熟悉的可能会觉得非常混乱,不知道该如何下手。所以,我总结了下DuiLib的各种消息响应...
阅读(389) 评论(0)

开源一款资源分享与下载工具 —— 电驴(eMule)

这里分享一款资源分享与下载工具——电驴,其实严格来说,应该叫电骡,这是我维护的版本,eMuleVeryCD版本,VeryCD是一个不错的资源分享网站:http://www.verycd.com/。大概在08年之前,中国市场流行的下载工具大概有三款:网际快车(flashget)、电驴(eMule)和迅雷,后来前两者都没落了。电驴的源码也开源了,迅雷抓住这个机会分析了电驴的下载协议(Kademlia)...
阅读(1361) 评论(0)

关于windows完成端口(IOCP)的一些理解

本人很多年前接触完成端口以来,期间学习和练习了很多次,本以为自己真正地理解了其原理,最近在看网狐的服务器端源码时又再一次拾起完成端口的知识,结果发现以前理解的其实很多偏差,有些理解的甚至都是错误的。网络上关于windows完成端口的介绍举不胜举,但大多数都是介绍怎么做,而不是为告诉读者为什么这么做。看了很多篇小猪的讲解:http://blog.csdn.net/piggyxp/article/de...
阅读(919) 评论(2)
151条 共8页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:179056次
    • 积分:3129
    • 等级:
    • 排名:第12775名
    • 原创:123篇
    • 转载:27篇
    • 译文:1篇
    • 评论:48条
    博客专栏
    最新评论