Golang/Java/Storm
沈子恒
计算机视觉 自然语言处理 推荐系统 架构设计
展开
-
Go协程池设计思路(Task-Job-Worker)
1. 铺垫:Go 的接收器Receiver在go语言中,没有类的概念,但是可以给类型(结构体,自定义类型)定义方法。所谓方法就是定义了接受者的函数。接受者定义在func关键字和函数名之间。可以理解成为结构体定义函数方法,类似于C++中的类方法。type Person struct { name string age int}func (p Person) say()...原创 2020-04-13 00:18:24 · 1742 阅读 · 1 评论 -
Go协程与协程池
1. Golang协程golang和其它语言最大区别莫过于goroutine,也就是go的协程,example如下:package mainimport "fmt"import "time"func go_worker(name string) { for i:=0; i<10; i++ { fmt.Println("this is go worker :" , na...原创 2020-04-12 16:25:20 · 2961 阅读 · 0 评论 -
HashMap底层实现和原理
本文是在阅读知乎老刘作品后的整理。内容基于JDK1.7进行分析,1.8做的改动文章末尾进行讲解。1. 基本要义1.1 概述Hashmap在Map派生中的位置HashMap基于Map接口实现,元素以键值对的方式存储,并且允许使用null键和null值,因为key不允许重复,因此只能有一个键为null,另外HashMap不能保...原创 2020-04-05 23:52:30 · 2380 阅读 · 1 评论 -
golang中的flag模块小结
1. flag常用函数无论是c语言还是golang语言或是其他语言,启动应用程序时都可以带一些参数,然后系统根据传入的参数进行特点的工作。如:./main -mode online -model bert_ch. 在Go中可以方便地使用flag模块进行命令行参数解析。// 解析字符串type string stringfunc String(name string, value st...原创 2020-01-08 21:59:17 · 1672 阅读 · 0 评论 -
Java中恒等条件判断:“equals”和“==”
1. 起因:字符串恒等判断//String is reference typeString str1 = new String("hello");String str2 = new String("hello");System.out.println(str1==str2);// falseSystem.out.println(str1.equals(str2));// tru...原创 2019-11-27 19:36:02 · 2173 阅读 · 1 评论 -
[java进阶]2.Jedis基础与List的接口
1. Jedis应用与基本连接jedis 是 redis推荐的java客户端。通过Jedis可以很方便地使用java代码的方式,从而对redis进行操作。jedis使用起来比较简单,它的操作方法与redis命令相类似。jedis在github上的下载地址为https://github.com/xetorthio/jedis 。如需要maven管理,可以添加如下依赖:<depe...原创 2019-08-28 00:49:59 · 670 阅读 · 0 评论 -
[java进阶]3.slf4j作用及其实现原理
参考博客:https://www.cnblogs.com/xrq730/p/8619156.html1.简单回顾门面模式slf4j是门面模式的典型应用,因此在讲slf4j前,我们先简单回顾一下门面模式,门面模式,其核心为外部与一个子系统的通信必须通过一个统一的外观对象进行,使得子系统更易于使用。用一张图来表示门面模式的结构为:门面模式的核心为Facade即门面对象,门面对象核心为...原创 2019-08-28 01:13:09 · 376 阅读 · 0 评论 -
[java进阶]4.关键字throws和throw
1. throws 关键字throws关键字主要用于方法声明上,指的是当方法之中出现异常后交由被调用处处理。class MyMath{ //由于存在throws,那么就表示此方法里面产生的异常交给被调用处处理 public static int div(int x, int y) throws Exception{ return x/y...原创 2019-08-29 02:42:07 · 6470 阅读 · 1 评论 -
Go进阶(9): For Range 性能研究
遍历数组,map集合,Slice切片等,Go提供比较好用的For Range方式。range是一个关键字,表示范围,和for配合使用可以迭代数组,map等集合。用法简洁,而且map、channel等也都是用for range的方式,所以在编码中我们使用for range进行循环迭代是最多的。对于这种最常使用的迭代,尤其是和for i=0;i<N;i++对比,性能怎么样?需要深入了解。1....原创 2019-09-21 15:25:16 · 964 阅读 · 0 评论 -
[java进阶]1.Java读取txt文件和写入txt文件
1. Java读取txt文件import java.io.*;import java.util.ArrayList;import java.util.List;public class unitTest { public static void main(String[] args){ List<String> checkins = new Arr...原创 2019-08-28 00:05:20 · 6225 阅读 · 4 评论 -
Go进阶(8): map嵌套的两轮初始化
test := make(map[string]map[int]int)test["go"][0] = 0 // error:assignment to entry in nil mapNote:这种map的嵌套的形式,make只初始化了map[string]T部分(T为map[int]int),所以赋值会出现错误.正确的做法:test := make(map[string]ma...原创 2019-08-26 23:35:53 · 6528 阅读 · 0 评论 -
Go进阶(4): string接口函数+时间接口函数+内置函数+错误处理
1. string接口函数len():内建函数,返回字符串/数组的长度,按字节(UTF-);例如,ascii字符占一个字节,汉字占三个字节; r:=[]rune(str):字符串遍历函数,同时可以处理中文问题,中间是转成了slicer类型package mainimport "fmt"func main() { str := "hello 沈子恒" for i:=0; i&l...原创 2019-08-18 21:06:40 · 2483 阅读 · 0 评论 -
Go进阶(5): 数组与切片+多维数组+map切片
1. 数组array数组可以存放多个同一类型数据,数组也是一种数据类型,在Go中,数组是值类型。与C++一致 长度是的固定的,不能够动态变化 var arr [] int 相当于slice切片var 数组名 [数组大小] 数据类型eg: var hens[100]float64heroes := [...]string{"songjiang","lujunyi","wuyong"...原创 2019-08-18 22:20:52 · 4960 阅读 · 0 评论 -
Go进阶(1): Golang + Goland 研究Redis的基本操作与函数接口
1. 开发环境搭建 GOROOT变量值是安装的go路径 PATH环境变量就是%GOROOT%\bin路径 GOPATH环境变量是工作目录,就是写代码的目录,编译源代码等生成的文件都会放到这个目录下 Note:需要在工作目录下新建三个文件夹,分别是bin、pkg、src;src 目录存放的是我们的go源代码,不同工程项目的代码以包名区分;pkg 中存放编译后生成的文件(...原创 2019-08-14 02:19:25 · 1626 阅读 · 0 评论 -
Go进阶(2): 变量+数据类型
变量是程序的基本组成单位。Note: 1. Go可以根据值自行判断变量类型(类型推导),如 var num = 10.10; 2. 省略var 利用 := 进行变量定义。:= 左侧的变量不应该是已经生命过的,否则会导致编译器编译错误,如 num := 10.10 (声明与赋值,与等同上面)。 3. 多变量同时定义,如 var num1, num2, num3 int; var num1, name...原创 2019-08-15 02:23:21 · 211 阅读 · 0 评论 -
Go进阶(7): JSON 序列化和反序列化
1. json序列化和反序列化基础json数据的序列化和反序列化是一种非常常见的方式,尤其是在http/rcp的微服务调试中。基础语法在 Go 中我们主要使用官方的encoding/json包对 JSON 数据进行序列化和反序列化,主要使用方法有:// 序列化func Marshal(v interface{}) ([]byte, error)// 反序列化func Un...原创 2019-08-25 11:47:55 · 2459 阅读 · 0 评论 -
Go进阶(6): uuid生成及其作用
1. uuid的作用uuid是Universally Unique Identifier的缩写,即通用唯一识别码。uuid的目的是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定。如此一来,每个人都可以建立不与其它人冲突的 uuid。A universally unique identifier (UUID) is a 128-bit number ...原创 2019-08-21 00:40:31 · 7455 阅读 · 0 评论 -
Golang + Goland环境配置 + Goland破解
Golang + Goland环境配置 :https://www.jianshu.com/p/d9cb6b3aacc6Goland破解:https://blog.csdn.net/u014044812/article/details/87621168原创 2019-08-13 00:48:29 · 3247 阅读 · 0 评论 -
Sorm进阶(1):storm实现github提交数监控看板
1. 基础组件及其APIstorm中有关spout类的层次在本例中,spout基于github的API监控某指定项目仓库的动态,并将变动情况发射为元组,每个元组包含针对该仓库的全部提交消息。紧接着,spout类文件的changelog.txt文件包含了所期望格式的提交消息,如下所示:代码实现:import org.apache.logging.log4j.core.util...原创 2019-08-22 02:32:25 · 492 阅读 · 0 评论 -
Go进阶(3): 函数+闭包+defer
1. 函数是一种数据类型函数参数的传递方式有值传递和引用传递(指针/slicer/map/channel/interface)两种;不管哪一种,传递的都是值或者地址的副本;一般来说,地址传递的效率更高,因为数据量小,而值传递随着数据量的增加而效率降低(如结构体拷贝)。示例:package mainimport ( "fmt" "reflect")func getSum(...原创 2019-08-18 16:16:52 · 1050 阅读 · 1 评论