Skip to content

Instantly share code, notes, and snippets.

@goangular
goangular / C++四种类型转换运算符:static_cast、dynamic_cast、const_cast和reinterpret_cast
Created December 1, 2020 02:08
C++四种类型转换运算符:static_cast、dynamic_cast、const_cast和reinterpret_cast
http://c.biancheng.net/cpp/biancheng/view/3297.html
上节讲到,隐式类型转换是安全的,显式类型转换是有风险的,C语言之所以增加强制类型转换的语法,就是为了强调风险,让程序员意识到自己在做什么。
但是,这种强调风险的方式还是比较粗放,粒度比较大,它并没有表明存在什么风险,风险程度如何。再者,C风格的强制类型转换统一使用( ),而( )在代码中随处可见,所以也不利于使用文本检索工具(例如 Windows 下的 Ctrl+F、Linux 下的 grep 命令、Mac 下的 Command+F)定位关键代码。
为了使潜在风险更加细化,使问题追溯更加方便,使书写格式更加规范,C++ 对类型转换进行了分类,并新增了四个关键字来予以支持,它们分别是:
关键字 说明
static_cast 用于良性转换,一般不会导致意外发生,风险很低。
const_cast 用于 const 与非 const、volatile 与非 volatile 之间的转换。
@goangular
goangular / k8s service
Created September 18, 2019 09:21
k8s service
https://kubernetes.io/zh/docs/concepts/services-networking/service/
一个 Service 在 Kubernetes 中是一个 REST 对象,和 Pod 类似。 像所有的 REST 对象一样, Service 定义可以基于 POST 方式,请求 apiserver 创建新的实例。 例如,假定有一组 Pod,它们对外暴露了 9376 端口,同时还被打上 "app=MyApp" 标签。
kind: Service
apiVersion: v1
metadata:
name: my-service
spec:
selector:
@goangular
goangular / grpc status
Created August 28, 2019 11:57
grpc status
return nil, status.Error(codes.Unavailable, "")
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
@goangular
goangular / fnv_hash_example.cpp
Created June 3, 2019 08:52 — forked from filsinger/fnv_hash_example.cpp
C++11 : FNV-1 and FNV-1a compile-time string hashing
// C++11 32bit FNV-1 and FNV-1a string hasing (Fowler–Noll–Vo hash)
//
// Requires a compiler with C++11 support
// See main(...) for examples
#include <iostream>
#include <cassert>
namespace hash
{
package main
import (
"crypto/aes"
"crypto/cipher"
"fmt"
"crypto/rand"
"io"
"encoding/base64"
"encoding/hex"
@goangular
goangular / Git-Rebase.MD
Last active December 19, 2018 03:44
git rebase

Rebase 场景一:如何合并多次提交纪录? 基于上面所说问题,我们不难想到:每一次功能开发, 对多个 commit 进行合并处理。

这时候就需要用到 git rebase 了。这个命令没有太难,不常用可能源于不熟悉,所以我们来通过示例学习一下。

1.我们来合并最近的 4 次提交纪录,执行:

git rebase -i HEAD~4 2.这时候,会自动进入 vi 编辑模式:

@goangular
goangular / tmux-cheatsheet.markdown
Created May 18, 2017 05:40 — forked from ryerh/tmux-cheatsheet.markdown
Tmux 快捷键 & 速查表

Tmux 快捷键 & 速查表

启动新会话:

tmux [new -s 会话名 -n 窗口名]

恢复会话:

tmux at [-t 会话名]
// Copyright 2012 Junqing Tan <ivan@mysqlab.net> and The Go Authors
// Use of this source code is governed by a BSD-style
// Part of source code is from Go fcgi package
// Fix bug: Can't recive more than 1 record untill FCGI_END_REQUEST 2012-09-15
// By: wofeiwo
package fcgiclient
import (