
后端
文章平均质量分 69
luslin1711
这个作者很懒,什么都没留下…
展开
-
graylog日志部署与使用
graylog是一个简单易用、功能较全面的日志管理工具,graylog也采用Elasticsearch作为存储和索引以保障性能,MongoDB用来存储少量的自身配置信息,master-node模式具有很好的扩展性,UI上自带的基础查询与分析功能比较实用且高效,支持LDAP、权限控制并有丰富的日志类型和标准(如syslog,GELF)并支持基于日志的报警。原创 2022-11-28 18:53:34 · 2156 阅读 · 1 评论 -
Java 多线程编程
多线程线程池1.为什么要用线程池:反复创建线程开销大过多的线程会占用太多内存同一管理线程状态2.线程池构造函数的参数:参数名类型含义corePoolSizeint核心线程数maxPoolSizeint最大线程数keepAliveTimelong保持存活时间(如果线程池当前的线程数多余corePoolSize,那么多余的线程空闲时间超过keepAliveTime, 它们就会被终止)workQueueBlockingQueue任务储存队列原创 2020-09-08 17:21:34 · 203 阅读 · 0 评论 -
flask 实现文件预览或下载
实现文件下载的关键,是在response的headers中加入Content-Disposition, 而对于文件预览与下载,需要的参数值不同:文件下载:{ "Content-Disposition": "attachement;filename=7415f814ddd111eaa0b0f8597131cd0b.pdf", "Content-Type": "application/pdf"}文件预览:{ "Content-Disposition": "inline;filename原创 2020-08-14 19:17:30 · 2862 阅读 · 0 评论 -
mongo数组操作(增、删、改、查)python
连接数据库pythonmongopymongo3.6.53.4.10 Community3.7.2import pymongoclass MongoStore(object): def __init__(self): try: self._server_client = pymongo.MongoClient(Config.SERVER_MONGOURL, connect=False) self.原创 2020-07-02 17:56:29 · 1607 阅读 · 0 评论 -
MYSQL优化—索引优化(高性能MySQL(第3版))
索引的优点大大减少了服务器需要扫描的数据量帮助服务器避免排序和临时表将随机I/O变为顺序I/O评价一个索引是否适合某个查询的“三星系统”:索引将相关的记录放到一起则获得一星如果索引中的数据顺序和查找中的排序顺序一致则获得二星如果索引中的列包含了查询中需要的全部列则获得三星...原创 2020-07-01 17:16:15 · 243 阅读 · 0 评论 -
mysql too many connections错误
1、show processlist;查看连接数,查看处于sleep状态连接,这些其实是暂时没有用的,所以可以kill掉2、show variables like “max_connections”;查看最大连接数,应该是与上面查询到的连接数相同,才会出现too many connections的情况3、set GLOBAL max_connections=1000;修改最大连接数,但是这不是一劳永逸的方法,应该要让它自动杀死那些sleep的进程。4、show global variable原创 2020-06-04 10:38:50 · 191 阅读 · 0 评论 -
elasticsearch对text类型进行聚合时遇到的问题
在elasticsearch中对数据进行聚合,想得出每个来源的数据量,mapping: "news_source": { "type": "text" }, "related_freq": { "type": "integer" },查询条件:GET /event_news/_search{ "size": 0, "aggs": { "news_source_info":{ "terms": { "field":原创 2020-05-27 17:25:06 · 1791 阅读 · 0 评论 -
golang微服务框架go-micro使用 (六) Config And Errors
Config特征1 动态加载:根据需要动态加载多个资源文件。 go config 在后台管理并监控配置文件,并自动更新到内存中2 资源可插拔: 从任意数量的源中进行选择以加载和合并配置。后台资源源被抽象为内部使用的标准格式,并通过编码器进行解码。源可以是环境变量,标志,文件,etcd,k8s configmap等3 可合并的配置:如果指定了多种配置,它们会合并到一个视图中。4 监控变化:可以选择是否监控配置的指定值,热重启5 安全恢复: 万一配置加载错误或者由于未知原因而清除,可以指定回退值进原创 2020-05-25 15:53:04 · 931 阅读 · 0 评论 -
golang微服务框架go-micro使用 (五) Message Broker
前一篇文章,我们讨论了在micro中如何发布/订阅消息。它的优点是简单,缺点是缺乏灵活性。如果你想使用底层去发送与接收消息,需要使用接口:github.com/micro/go-micro/v2/broker.Broker这个接口是micro异步消息处理的核心,事实上,发布/订阅也依赖它下面,使用一个例子来使用Brokerpackage mainimport ( "fmt" "github.com/micro/go-micro/v2" "github.com/micro/go-micro/v原创 2020-05-25 11:17:05 · 963 阅读 · 1 评论 -
golang微服务框架go-micro使用 (四) Pub/Sub
订阅消息首先,我们定义消息处理程序,./subscriber/micro.go:package subscriberimport ( "context" log "github.com/micro/go-micro/v2/logger" "micro-hello/proto/hello")type Micro struct{}func (e *Micro) Handle(ctx context.Context, msg *hello.Message) error { log.Inf原创 2020-05-25 09:50:04 · 1071 阅读 · 0 评论 -
golang微服务框架go-micro使用 (三) Call a service
通过命令行工具调用服务luslin@local:~/software/zipkin$ MICRO_REGISTRY=etcd micro list servicescom.foo.service.microgo.micro.webmicro.http.brokercom.foo.service.micro 是我们的目标服务,micro.http.broker 是默认的中间件服务。在调用前,使用get命令查看服务的详情,端点定义,元数据和节点信息等luslin@local:~/software原创 2020-05-24 14:27:49 · 1446 阅读 · 1 评论 -
golang微服务框架go-micro使用 (二) Ultimate Guide For Bootstrap
main.go 说明package mainimport ( "github.com/micro/go-micro/v2" log "github.com/micro/go-micro/v2/logger" "micro-hello/handler" hello "micro-hello/proto/hello" "micro-hello/subscriber")func main() { // New Service service := micro.NewService(原创 2020-05-23 14:43:33 · 1070 阅读 · 0 评论 -
golang微服务框架go-micro使用 (一) Getting Started
文档不断更新的文档,需要翻墙官方文档服务发现服务发现是每个分布式系统都需要解决的问题,go-micro将这个任务抽象到一个接口中,原创 2020-05-22 10:56:50 · 981 阅读 · 0 评论 -
golang微服务框架Kratos使用
简介项目地址:https://github.com/go-kratos/kratos项目致力于提供完整的微服务研发体验,整合相关框架及工具后,微服务治理相关部分可对整体业务开发周期无感,从而更加聚焦于业务交付。对每位开发者而言,整套Kratos框架也是不错的学习仓库,可以了解和参考到bilibili在微服务方面的技术积累和经验。Quick startRequirmentsGo version>=1.13InstallationGO111MODULE=on && go g原创 2020-05-21 16:32:35 · 6472 阅读 · 0 评论 -
使用go-micro/etcd 报错undefined: resolver.BuildOption resolver.ResolveNowOption balancer.PickOptions...
如图, 在写完简单的demo文件后,发现报错了。# github.com/coreos/etcd/clientv3/balancer/resolver/endpoint../../../../../pkg/mod/github.com/coreos/etcd@v3.3.18+incompatible/clientv3/balancer/resolver/endpoint/endpoint.go:114:78: undefined: resolver.BuildOption../../../../...原创 2020-05-21 14:24:55 · 1162 阅读 · 2 评论 -
go-discovery服务注册与发现
简介go-discovery 是bilibili开源的服务注册与发现中心,参考Eureka设计。项目地址:https://github.com/bilibili/discovery集群部署envgo1.12.x (and later)buildcd $GOPATH/srcgit clone https://github.com/bilibili/discovery.gitcd discovery/cmd/discoverygo buildrun在本机开启了三个进程,进行集群部署d原创 2020-05-20 16:16:04 · 2445 阅读 · 0 评论 -
memcached 使用 / go 操作memcached (gomemcache) / python 操作 memcached (python-memcached)
简介Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。Memcached是一种基于内存的key-value存储,用来存储小块的任意数据(字符串、对象)。这些数据可以是数据库调用、API调用或者是页面渲染的结果安装这里使用docker安装docker-compose.yaml version: "3.7" services: memcached: image: memcached ports: - 21211:11211原创 2020-05-18 11:34:27 · 1716 阅读 · 0 评论 -
go 依赖注入工具( go-wire )使用(二 用户指南)
go 依赖注入工具( go-wire )使用(二 用户指南)wire 有两个核心概念: 提供者与注入者提供者providersproviders 是一个能够返回值的方法:package foobarbaztype Foo struct { X int}func ProvideFoo() Foo { return Foo{X: 42}}type Bar struct { X int}func ProvideBar(foo Foo) Bar { return Bar{X: -原创 2020-05-16 10:50:07 · 2194 阅读 · 0 评论 -
go 依赖注入工具( go-wire )使用(一 讲解)
go 依赖注入工具( go-wire )使用(一 讲解)项目地址:github.com/google/wire简介wire是 Google 开源的一个依赖注入工具。它是一个代码生成器,并不是一个框架。我们只需要在一个特殊的go文件中告诉wire类型之间的依赖关系,它会自动帮我们生成代码,帮助我们创建指定类型的对象,并组装它的依赖。使用1. 简单例子:一个普通的符合依赖注入设计原理的例子:package daoimport ( "errors" "fmt" "time")type原创 2020-05-15 16:26:38 · 3655 阅读 · 3 评论 -
toml文及其解析方法(golang)
toml文及其解析方法(golang)tomal简介参考文档:https://github.com/toml-lang/toml#user-content-offset-date-timeTOML 旨在成为一个语义显著而易于阅读的最低限度的配置文件格式。TOML 被设计地能够无歧义地转化为哈希表。TOML 应当能简单地解析成形形色色的语言中的数据结构。TOML 是大小写敏感的。TOML 文件必须是有效的 UTF-8 编码的 Unicode 文档。空白的意思是 Tab(0x09)或空格(0x2原创 2020-05-15 11:48:14 · 4879 阅读 · 3 评论 -
go net/http 源码阅读
go net/http 源码阅读实现一个简单的http服务器:package net_httpimport ( "net/http" "testing")func index(response http.ResponseWriter, request *http.Request) { response.WriteHeader(http.StatusOK) response.Write([]byte("index"))}func TestHttpServer(t *testing原创 2020-05-14 15:18:55 · 1435 阅读 · 0 评论 -
使用go net 实现简单的redis通信协议
使用go net 实现简单的redis通信协议图解redis通信协议(转自:https://www.jianshu.com/p/f670dfc9409b)请求协议:请求协议一般格式:*<参数数量> CR LF$<参数 1 的字节数量> CR LF<参数 1 的数据> CR LF...$<参数 N 的字节数量> CR LF<参数 N 的数据> CR LF例如,一个登录命令:*2 2-> 参数数量原创 2020-05-13 14:08:56 · 1167 阅读 · 0 评论 -
golang 操作 redis(github.com/go-redis/redis 包使用)
go-redis/redis 使用go-redis 是go用来链接redis数据库的包。截止当前时间github上star 8.7k环境:gogo-redisgo1.13.5v6.15.7+incompatible安装:使用go mod 进行安装在go.mod 中加入:module github.com/luslin/toolsgo 1.13requir...原创 2020-05-07 17:10:38 · 6681 阅读 · 0 评论 -
使用单例模式封装go-kafka链接(github.com/Shopify/sarama)
package kafkaimport (“errors”“github.com/Shopify/sarama”“github.com/luslin/webs/src/server1/conf”“github.com/luslin/webs/src/server1/dbsource/redis”“github.com/prometheus/common/log”“sync”)va...原创 2020-05-04 09:41:21 · 3110 阅读 · 0 评论 -
golang操作mysql(go-sql-driver 包使用)
go-sql-driver 使用go-sql-driver 是go用来链接mysql数据库的包。截止当前时间github上star 9.3k环境:gogo-sql-drivergo1.13.5v1.5.0安装:使用go mod 进行安装在go.mod 中加入:module github.com/luslin/toolsgo 1.13require ( ...原创 2020-05-03 11:34:24 · 8303 阅读 · 1 评论 -
go json包 json、json-iterator、gjson使用
go json包 json、json-iterator、gjson、easyjson使用区别:json 是go自带的json编码与解码包。json-iterator是目前github上star最多的json编码与解码包。效率高。并且可以通过简单的代码替换官方json方法。gjson则用来进行json解码,或者从json中获取数据。没有编码方法easyjson则通过预先生成编码与解码方...原创 2020-04-29 21:45:34 · 2353 阅读 · 0 评论 -
go 操作kafka包 sarama (Producer流程)
go 操作kafka包 sarama (Producer流程)代码:package mainimport ( "github.com/Shopify/sarama" "log" "os" "os/signal" "sync" "time")func main() { var ( wg sync.WaitGroup success_num, error_num ...原创 2020-04-29 12:58:06 · 5296 阅读 · 1 评论 -
go 操作kafka包 sarama 使用(示例)
go 操作kafka包 sarama 使用(一)截止当前时间,github上golang操作kafka的包主要有两个:Shopify/sarama starts 5.7kconfluentinc/confluent-kafka-go starts 2ksaram 使用纯go语言编写, confluent-kafka-go 这是包装了c的api...原创 2020-04-27 20:14:58 · 70014 阅读 · 0 评论