不灭的焱

革命尚未成功,同志仍须努力

作者:php-note.com  发布于:2017-08-31 21:08  分类:Java库/系统 

数据库

MyCat:数据库中间件

IM、消息推送

t-io:不仅仅是百万级即时通讯框架

tio-im:基于t-io写的IM,主要目标降低即时通讯门槛,实现多端不同协议间的消息发送如http、websocket、tcp自定义协议等

MPush:开源实时消息推送系统

作者:php-note.com  发布于:2017-08-28 21:07  分类:MySQL/NoSQL 

这篇文章主要介绍了Redis中5种数据结构的使用场景介绍,本文对Redis中的5种数据类型String、Hash、List、Set、Sorted Set做了讲解,需要的朋友可以参考下

一、redis 数据结构使用场景

原来看过 redisbook 这本书,对 redis 的基本功能都已经熟悉了,从上周开始看 redis 的源码。目前目标是吃透 redis 的数据结构。我们都知道,在 redis 中一共有5种数据结构,那每种数据结构的使用场景都是什么呢?

String——字符串
Hash——字典
List——列表
Set——集合
Sorted Set——有序集合

作者:php-note.com  发布于:2017-08-25 21:06  分类:Go基础 

Java 中的集合(set)去重很方便,PHP 中的数组值去重,就更加方便,一个函数搞定:array_unique(),Golang 中就比较苦逼了,官方没有提供对“切片去重”的功能,而项目中,又经常用到这个功能,,我们可以模拟 Java 集合的功能,实现 Golang 版集合的同时,顺便把 去重 和 排序 做了,它的主要实现原理是:利用 map 数据 不允许键重名 的特点,参考代码如下:

作者:php-note.com  发布于:2017-08-25 16:09  分类:Go基础 

Go里面有很多方式返回一个struct的值或者slice,我们经常会看到的是如下的代码:

type MyStruct struct {
    Val int
}

func myfunc() MyStruct {
    return MyStruct{Val: 1}
}

func myfunc() *MyStruct {
    return &MyStruct{}
}

func myfunc(s *MyStruct) {
    s.Val = 1
}
作者:php-note.com  发布于:2017-08-15 21:06  分类:Go基础 

interface简介

Go 语言以简单易上手而著称,它的语法非常简单,熟悉 C++,Java 的开发者只需要很短的时间就可以掌握 Go 语言的基本用法。

interface 是 Go 语言里所提供的非常重要的特性。一个 interface 里可以定义一个或者多个函数,例如系统自带的 io.ReadWriter 的定义如下所示:

type ReadWriter interface {
    Read(b []byte) (n int, err error)
    Write(b []byte) (n int, err error)
}

任何类型只要它提供了 Read 和 Write 的绑定函数实现,Go 就认为这个类型实现了这个 interface(duck-type),而不像 Java 需要开发者使用 implements 标明。

作者:php-note.com  发布于:2017-08-14 21:04  分类:Go基础 

golang 的 nil 在概念上和其它语言的 null、None、nil、NULL一样,都指代零值或空值。nil 是预先说明的标识符,也即通常意义上的关键字。在 golang 中,nil 只能赋值给 指针channelfuncinterfacemapslice 类型的变量。如果未遵循这个规则,则会引发 panic。对此官方有明确的说明:http://pkg.golang.org/pkg/builtin/#Type

作者:php-note.com  发布于:2017-08-14 21:00  分类:Go基础 

nil是什么

相信写过Golang的程序员对下面一段代码是非常非常熟悉的了:

if err != nil {
    // do something....
}

当出现不等于nil的时候,说明出现某些错误了,需要我们对这个错误进行一些处理,而如果等于nil说明运行正常。那什么是nil呢?查一下词典可以知道,nil的意思是无,或者是零值。零值,zero value,是不是有点熟悉?在Go语言中,如果你声明了一个变量但是没有对它进行赋值操作,那么这个变量就会有一个类型的默认零值。

作者:php-note.com  发布于:2017-08-13 21:00  分类:Go基础 

注意:这些“坑”不是bug,只是自己当时没搞明白。

用到的框架为 Beego

1、字典 map 是“引用类型”,本身就是指针,作为参数传递时,直接传 map 变量名即可(不要传 map 变量指针)。

在调用方法内,如果修改了 map 变量值,外部的 map 变量值也会被改变的!

作者:php-note.com  发布于:2017-08-09 20:57  分类:Go基础 
import (
     "unicode"
)

func Ucfirst(str string) string {
    for i, v := range str {
        return string(unicode.ToUpper(v)) + str[i+1:]
    }
    return ""
}

func Lcfirst(str string) string {
    for i, v := range str {
        return string(unicode.ToLower(v)) + str[i+1:]
    }
    return ""
}

 

作者:php-note.com  发布于:2017-08-07 20:57  分类:Go基础 
package main

import (
	"crypto/md5"
	"encoding/hex"
	"fmt"
	"io"
)

// 官网的例子:http://golang.org/pkg/crypto/md5/
func main() {
	str := "123456" // 需要加密的字符串

	h := md5.New()
	io.WriteString(h, str)
	fmt.Printf("%x\n", h.Sum(nil)) // 输出加密结果

	c := md5.New()
	c.Write([]byte(str))
	fmt.Printf("%s\n", hex.EncodeToString(c.Sum(nil))) // 输出加密结果(项目中,用这个)
}