<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[噬日者]]></title><description><![CDATA[Eclipser : 吞噬sun ... ]]></description><link>https://blog.youkuaiyun.com/eclipser1987</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; eclipser1987]]></copyright><item><title><![CDATA[程序中,嵌套依赖静态链接库和动态链接库]]></title><link>https://blog.youkuaiyun.com/eclipser1987/article/details/30505053</link><guid>https://blog.youkuaiyun.com/eclipser1987/article/details/30505053</guid><author>eclipser1987</author><pubDate>Fri, 13 Jun 2014 17:19:50 +0800</pubDate><description><![CDATA[静态链接库    LIB   A   有函数 f,打印 1
动态链接库    DLL  B   B依赖静态链接库A
程序              EXE  C   C依赖静态库A,执行f.打印1. 程序C进入SLEEP
此时,重新编写静态链接库A 修改 f,打印 2,并且编译依赖最新静态链接库的动态链接库B.
完毕后,程序C SLEEP完毕,C程序加载动态链接库B,再次执行f.请问打印内]]></description><category></category></item><item><title><![CDATA[golang指针的使用,类似C语言]]></title><link>https://blog.youkuaiyun.com/eclipser1987/article/details/26066639</link><guid>https://blog.youkuaiyun.com/eclipser1987/article/details/26066639</guid><author>eclipser1987</author><pubDate>Sat, 17 May 2014 14:07:58 +0800</pubDate><description><![CDATA[src
src\main\main.go
src\model\model.go
package model

import "strconv"

type User struct {
	username string
	password string
	age int32
}

func (this *User) String() string {
	return "username: " ]]></description><category></category></item><item><title><![CDATA[golang select 选择器的两种方案]]></title><link>https://blog.youkuaiyun.com/eclipser1987/article/details/26058861</link><guid>https://blog.youkuaiyun.com/eclipser1987/article/details/26058861</guid><author>eclipser1987</author><pubDate>Sat, 17 May 2014 11:37:50 +0800</pubDate><description><![CDATA[golang select 选择器




常规模式:]]></description><category></category></item><item><title><![CDATA[C++11 std::bind std::function 高级用法]]></title><link>https://blog.youkuaiyun.com/eclipser1987/article/details/24406203</link><guid>https://blog.youkuaiyun.com/eclipser1987/article/details/24406203</guid><author>eclipser1987</author><pubDate>Thu, 24 Apr 2014 13:11:28 +0800</pubDate><description><![CDATA[C++11 std::bind std::function 高级用法]]></description><category></category></item><item><title><![CDATA[C++实现golang chan 版本一]]></title><link>https://blog.youkuaiyun.com/eclipser1987/article/details/24324955</link><guid>https://blog.youkuaiyun.com/eclipser1987/article/details/24324955</guid><author>eclipser1987</author><pubDate>Tue, 22 Apr 2014 19:51:50 +0800</pubDate><description><![CDATA[这是我的一个简单例子，目前不够完善。
需要]]></description><category></category></item><item><title><![CDATA[DynamicLinkLibraryAPI]]></title><link>https://blog.youkuaiyun.com/eclipser1987/article/details/23926395</link><guid>https://blog.youkuaiyun.com/eclipser1987/article/details/23926395</guid><author>eclipser1987</author><pubDate>Thu, 17 Apr 2014 13:22:02 +0800</pubDate><description><![CDATA[#pragma once

#if defined(WIN32) || defined(WIN64)
#include 
typedef HINSTANCE DLLHANDLER;
#elif defined(__linux__)
#include 
typedef void* DLLHANDLER;
#endif

namespace dll {
	
// 打开动态链接库。
bool OpenD]]></description><category></category></item><item><title><![CDATA[C++11 lambda 快速理解]]></title><link>https://blog.youkuaiyun.com/eclipser1987/article/details/19428849</link><guid>https://blog.youkuaiyun.com/eclipser1987/article/details/19428849</guid><author>eclipser1987</author><pubDate>Tue, 18 Feb 2014 21:25:55 +0800</pubDate><description><![CDATA[lambda 匿名函数
现阶段，编译器会将lanmbda匿名函数，转换为仿函数！故，stl算法完全可以使用lambda匿名函数。
auto b2 = [a, &b] (int c) -> int{ // a只读， b读写
    b = a + c;
    return a + c;
}(1000);


[var]   传值方式（只读）将变量传递到匿名函数中
[=]]]></description><category></category></item><item><title><![CDATA[C++11 nullptr的意义]]></title><link>https://blog.youkuaiyun.com/eclipser1987/article/details/19413249</link><guid>https://blog.youkuaiyun.com/eclipser1987/article/details/19413249</guid><author>eclipser1987</author><pubDate>Tue, 18 Feb 2014 15:50:08 +0800</pubDate><description><![CDATA[#include 


void f(int) {
    std::cout << "int" << std::endl;
}

void f(char*) {
    std::cout << "char*" << std::endl;
}

/*
 * 
 */
int main(void) {
    f(0);
    f(NULL);
    f(nullptr);
    retur]]></description><category></category></item><item><title><![CDATA[C++11 遍历]]></title><link>https://blog.youkuaiyun.com/eclipser1987/article/details/19155765</link><guid>https://blog.youkuaiyun.com/eclipser1987/article/details/19155765</guid><author>eclipser1987</author><pubDate>Thu, 13 Feb 2014 11:24:11 +0800</pubDate><description><![CDATA[/* 
 * File:   main45.cpp
 * Author: Vicky.H
 * Email:  eclipser@163.com
 */
#include 
#include 
#include 

void f1(int& i) {i *= 2;}

void f2(int& i) {std::cout << i << std::endl;}

/*
 * 
 */
int ma]]></description><category></category></item><item><title><![CDATA[C++11 追踪返回类型]]></title><link>https://blog.youkuaiyun.com/eclipser1987/article/details/19154855</link><guid>https://blog.youkuaiyun.com/eclipser1987/article/details/19154855</guid><author>eclipser1987</author><pubDate>Thu, 13 Feb 2014 10:58:09 +0800</pubDate><description><![CDATA[首先，我们先掌握C++11对泛型的支持：


decltype RTTI

    int z = 0;
    decltype(z) x = 100;
    std::cout 


    float a = 1.0;
    double b = 2.0;
    decltype(a + b) c = a + b;
    std::cout]]></description><category></category></item><item><title><![CDATA[C++11实现golang的defer类似Java finally操作。]]></title><link>https://blog.youkuaiyun.com/eclipser1987/article/details/18558481</link><guid>https://blog.youkuaiyun.com/eclipser1987/article/details/18558481</guid><author>eclipser1987</author><pubDate>Mon, 20 Jan 2014 17:05:28 +0800</pubDate><description><![CDATA[// Copyright 2013 . All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

#ifndef _DEFER_H_
#define _DEFER_H_

#include 
#includ]]></description><category></category></item><item><title><![CDATA[C++简单封装共享内存]]></title><link>https://blog.youkuaiyun.com/eclipser1987/article/details/18552315</link><guid>https://blog.youkuaiyun.com/eclipser1987/article/details/18552315</guid><author>eclipser1987</author><pubDate>Mon, 20 Jan 2014 13:36:05 +0800</pubDate><description><![CDATA[目前代码只考虑linux环境，win32将随后补充：
Assertx.h

/* 
 * File:   Assertx.h
 * Author: Vicky.H
 * Email:  eclipser@163.com
 *
 * Created on 2014年1月16日, 下午8:33
 */

// 断言

#ifndef CN_VICKY__ASSERTX_H
#define	CN_]]></description><category></category></item><item><title><![CDATA[go hot update (1)]]></title><link>https://blog.youkuaiyun.com/eclipser1987/article/details/17766693</link><guid>https://blog.youkuaiyun.com/eclipser1987/article/details/17766693</guid><author>eclipser1987</author><pubDate>Thu, 02 Jan 2014 21:37:13 +0800</pubDate><description><![CDATA[package main

import (
	"net"
	"reflect"
	"fmt"
	"os"
)

func main() {

	listener, _ := net.Listen("tcp", ":8000")
	for {
		c , _ := listener.Accept()
		go connHandler(c)
	}
}

func connHandler(c net.]]></description><category></category></item><item><title><![CDATA[go语言RPC]]></title><link>https://blog.youkuaiyun.com/eclipser1987/article/details/17716501</link><guid>https://blog.youkuaiyun.com/eclipser1987/article/details/17716501</guid><author>eclipser1987</author><pubDate>Tue, 31 Dec 2013 16:17:06 +0800</pubDate><description><![CDATA[RPC remote procedure call，远程过程调用。
go语言对RPC的支持有以下要求：
1.以对象形式注册RPC
2.RPC函数必须是对象的公共函数。public，也就是首字母大写的函数
3.RPC函数必须有2个参数，类型为公共类型，或go内嵌类型。
4.RPC函数第2个参数作为返回值，必须是指针类型。
5.RPC函数必须返回一个error类型的值。


func]]></description><category></category></item><item><title><![CDATA[go语言与excel的序列化与反序列化（1）]]></title><link>https://blog.youkuaiyun.com/eclipser1987/article/details/17691745</link><guid>https://blog.youkuaiyun.com/eclipser1987/article/details/17691745</guid><author>eclipser1987</author><pubDate>Mon, 30 Dec 2013 22:17:18 +0800</pubDate><description><![CDATA[很多时候，尤其是游戏开发中，策划往往将文档，数据等写入excel中，程序，需要通过各种方式解析excel，让程序可以读。
常见的方案有：
1.将excel转换为csv，逗号分割方式，程序通过split逗号按照特定格式进行转换。（功能不够强大，格式要求很严，无法灵活配置很多特殊的功能）
2.将excel转换为lua table。这是C++游戏开发的常用方式。 （无法通过c++对象序列化为exc]]></description><category></category></item><item><title><![CDATA[安装openssl错误解决]]></title><link>https://blog.youkuaiyun.com/eclipser1987/article/details/17588041</link><guid>https://blog.youkuaiyun.com/eclipser1987/article/details/17588041</guid><author>eclipser1987</author><pubDate>Thu, 26 Dec 2013 17:38:51 +0800</pubDate><description><![CDATA[安装openssl错误解决



1.nmake -f ms\ntdll.mak
在这一步出错


        cl /Fotmp32dll\cryptlib.obj -Iinc32 -Itmp32dll /MD /Ox /O2 /Ob2 -DOPENS
SL_THREADS -DDSO_WIN32 -W3 -WX -Gs0 -GF -Gy -nologo -DOPENSSL]]></description><category></category></item><item><title><![CDATA[go语言chan 和 routine活用]]></title><link>https://blog.youkuaiyun.com/eclipser1987/article/details/17502283</link><guid>https://blog.youkuaiyun.com/eclipser1987/article/details/17502283</guid><author>eclipser1987</author><pubDate>Mon, 23 Dec 2013 14:25:25 +0800</pubDate><description><![CDATA[这里，我们以游戏中的一个情况为例。比如魔兽世界里的40人团队副本BOSS战，很多玩家同时攻击BOSS，BOSS的血量会进行平凡修改，我们要记录对BOSS的致命一击。常规 对BOSS血量的操作经行加锁，然后修改，每次攻击甚至还会判断怪物是否处于死亡状态以判断客户端是否能施放某个技能，但这样会让一个锁控制40个玩家的攻击操作，会导致攻击，技能等释放的不流畅。所以魔兽世界应该不是采用这种加锁的方式。为什]]></description><category></category></item><item><title><![CDATA[go语言变参，匿名函数的多种用法]]></title><link>https://blog.youkuaiyun.com/eclipser1987/article/details/17396201</link><guid>https://blog.youkuaiyun.com/eclipser1987/article/details/17396201</guid><author>eclipser1987</author><pubDate>Wed, 18 Dec 2013 15:49:30 +0800</pubDate><description><![CDATA[/**
 * Created by Administrator on 13-12-18.
 */
package main

import (
	"fmt"
	"os"
)

func f1(args ...interface {}) {
	f2(args...)
	f2(args[1:]...)
}

func f2(args ...interface {}) {
	for i, v := ra]]></description><category></category></item><item><title><![CDATA[go语言string遍历细节]]></title><link>https://blog.youkuaiyun.com/eclipser1987/article/details/17394341</link><guid>https://blog.youkuaiyun.com/eclipser1987/article/details/17394341</guid><author>eclipser1987</author><pubDate>Wed, 18 Dec 2013 14:24:37 +0800</pubDate><description><![CDATA[/**
 * Created by Administrator on 13-12-18.
 */
package main

import (
	"fmt"
	"os"
)

func main() {

	str := "hello, 世界"
	n := len(str)

	for i := 0; i < n; i++ {
		fmt.Fprintf(os.Stdout, "%d  %v  %]]></description><category></category></item><item><title><![CDATA[Linux tcpdump命令详解]]></title><link>https://blog.youkuaiyun.com/eclipser1987/article/details/17356553</link><guid>https://blog.youkuaiyun.com/eclipser1987/article/details/17356553</guid><author>eclipser1987</author><pubDate>Mon, 16 Dec 2013 17:32:51 +0800</pubDate><description><![CDATA[简介

用简单的话来定义tcpdump，就是：dump the traffic on a network，根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤，并提供and、or、not等逻辑语句来帮助你去掉无用的信息。

 

实用命令实例

默认启动

tc]]></description><category></category></item></channel></rss>