自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(97)
  • 收藏
  • 关注

原创 使用Lyra项目动画蓝图

参考的是up八层肚的视频教程:https://www.bilibili.com/video/BV1Da411n71c。

2023-07-03 15:53:04 322

原创 使用graylog rest api查询日志

由于项目需要,调研使用graylog收集项目操作日志, 并使用api查询日志。

2023-06-29 10:43:13 495

原创 python项目加密

Python 语法简单,使用方便,我们可以使用它快速地编写程序和构建应用。在编写好程序之后,我们必然要进行程序的分发。而这,就涉及到了。我们不需要程序的使用者能够看到程序的源码。但是,Python 作为一门动态语言和脚本语言,运行通过它编写的程序,并不需要进行静态编译和打包的过程,。虽说Cython的主要目的是带来性能的提升,但是基于它的原理:将.py.pyx编译为.c文件,再将.c文件编译为.so(Unix) 或.pyd(Windows),其带来的另一个好处就是难以破解。而且文件可直接import。

2023-06-29 10:27:58 224

原创 graylog日志部署与使用

graylog是一个简单易用、功能较全面的日志管理工具,graylog也采用Elasticsearch作为存储和索引以保障性能,MongoDB用来存储少量的自身配置信息,master-node模式具有很好的扩展性,UI上自带的基础查询与分析功能比较实用且高效,支持LDAP、权限控制并有丰富的日志类型和标准(如syslog,GELF)并支持基于日志的报警。

2022-11-28 18:53:34 1832 1

原创 UE Lyda项目学习 二、距离匹配 步幅适配 同步组

UE Lyda项目学习 二、距离匹配 步幅适配 同步组

2022-10-30 17:31:57 954

原创 UE Lyda项目学习 一、基础移动

Lya 项目学习,基础运动制作

2022-10-28 17:37:23 623

原创 UE游戏制作记录(一、ik动画重定向)

ue中的IK动画重定向

2022-10-27 14:54:44 1398

原创 编译jdk12过程 on ubuntu

一 依赖环境对于Linux系统,须确保最低的版本为GCC 4.8或者CLang 3.2以上,官方推荐使用GCC 7.8或者CLang 9.1来完成编译。在Ubuntu系统上安装GCC的命令为: sudo apt-get install build-essential在编译过程中需要依赖FreeType、CUPS等若干第三方库,OpenJDK全部的依赖库:工具命令FreeTpyesudo apt-get install libfreetype6-devCUPSsudo

2020-10-27 18:37:51 255

原创 3 mysql 相关工具

1. PDman简介:PDMan是一款开源免费的数据库模型建模工具,支持Windows,Mac,Linux等操作系统,是PowerDesigner之外,更好的免费的替代方案。他具有颜值高,使用简单的特点。包含数据库建模,灵活自动的自动生成代码模板,自动生成文档等多种开发人员实用的功能。项目地址:https://gitee.com/robergroup/pdman功能: 设计表结构, 逆向表关系2. percona-toolkit简介:Percona Toolkit简称pt工具,是Percona公司

2020-10-22 15:11:50 121

原创 2 开启mysql慢查询

1 开启慢查询a. 查询慢查询相关设置mysql> show variables like 'slow_query%';+---------------------+-------------------------------+| Variable_name | Value |+---------------------+-------------------------------+| slow_query_log

2020-10-22 11:58:40 148

原创 1 ubuntu下mysql 8.0.22安装 并导入sakila 数据

1. 添加mysql apt源把MySQL apt源添加至系统的软件仓库列表里,需要下载mysql-apt-config包;下载页面:https://dev.mysql.com/downloads/file/?id=487007下载得到mysql-apt-config_0.8.15-1_all.deb文件2 安装mysqlsudo dpkg -i mysql-apt-config_0.8.15-1_all.deb // 安装deb文件sudo apt-get update // 更新源s

2020-10-22 09:21:57 771

原创 python装饰器——定义可给装饰器传递参数的装饰器

普通装饰器:def wrap(f): @wraps(f) def wrapped_f(*args, **kw): print(args, kw) f(*args, **kw) return wrapped_f@wrapdef t(a, b): a += bif __name__ == '__main__': t(1,3)可传递参数的装饰器:from functools import wrapsfrom retrying

2020-10-20 16:00:18 214

原创 kafka-demo 7 偏移量

7 偏移量代码地址:https://github.com/luslin1711/kafka_demo/tree/master/kafka_demo_07一、同步与异步组合提交偏移量一般情况下,针对偶尔出现的提交失败,不进行重试不会有太大问题,因为如果提交失败是因为临时原因导致的,那么后续的提交总会有成功的。但如果这是在关闭消费者前的最后一次提交,就要确保能够提交成功因此,在消费者关闭前一般会组合使用commitAsync() 与commitSync()public void run() {

2020-10-20 15:15:03 150

原创 kafka-demo 6 分区再均衡

6 分区再均衡代码地址:https://github.com/luslin1711/kafka_demo/tree/master/kafka_demo_06消费者群组里的消费者共同读取主题的分区。一个新的消费者加入群组时,它读取的是原来由其他消费者读取的消息。当一个消费者被关闭或者发生崩溃时,他就离开群组,原本由它读取的分区将由群组里的其他消费者读取。在主题发生变化时,如添加了新的分区,也会发生分区重分配。分区的所有权从一个消费者转移到另一个消费者,这被称为再均衡。再均衡非常重要,它为消费者群组带来了

2020-10-20 15:14:14 150

原创 kafka-demo 5 消费者组的功能

5 消费者组的功能代码地址:https://github.com/luslin1711/kafka_demo/tree/master/kafka_demo_05kafka 消费者从属于消费者群组。 一个群组里的消费者订阅的是同一主题。 每个消费者接收主题的一部分。分区与消费者群组的数量关系:1 分区数 > 消费者数 某些消费者可能会订阅多个分区的内容2 分区数 = 消费者数 一个消费者订阅一个分区的内容3 分区数 < 消费者数 一个消费者订阅一个分区的内容, 多余的消费

2020-10-20 15:13:38 165

原创 kafka-demo 4 分区与自定义分区器

4 分区与自定义分区器代码地址:https://github.com/luslin1711/kafka_demo/tree/master/kafka_demo_04ProducerRecord 对象 有多个构造方法, 常用的有public ProducerRecord(String topic, Integer partition, K key, V value) { this(topic, partition, null, key, value, null); }publi

2020-10-20 15:12:43 158

原创 kafka-demo 3 生产者发送消息的同步与异步

3 生产者发送消息的同步与异步代码地址:https://github.com/luslin1711/kafka_demo/tree/master/kafka_demo_03producer.send() 返回的是Future 对象。 可以通过 Future 对象同步或是异步获取结果public interface Future<V> { /** * Attempts to cancel execution of this task. This attempt will

2020-10-20 15:11:37 496

原创 kafka-demo 2 自定义serializer

2 自定义serializer代码地址:https://github.com/luslin1711/kafka_demo/tree/master/kafka_demo_02一、序列化与反序列化一般情况下,我们传递的value都是自己定义的结构。 如果想让kafka识别这些数据结构, 需要实现org.apache.kafka.common.serialization.Serializer 接口。public interface Serializer<T> extends Closeable

2020-10-20 15:10:15 327

原创 kafka-demo 1 快速开始

1 快速开始一、kafka集群部署使用docker-compose 文件进行项目部署version: '3'services: zookeeper: image: wurstmeister/zookeeper ports: - "2181:2181" kafka1: image: wurstmeister/kafka depends_on: [ zookeeper ] ports: - "9092:9092" envir

2020-10-20 15:08:18 159

原创 Java 多线程编程

多线程线程池1.为什么要用线程池:反复创建线程开销大过多的线程会占用太多内存同一管理线程状态2.线程池构造函数的参数:参数名类型含义corePoolSizeint核心线程数maxPoolSizeint最大线程数keepAliveTimelong保持存活时间(如果线程池当前的线程数多余corePoolSize,那么多余的线程空闲时间超过keepAliveTime, 它们就会被终止)workQueueBlockingQueue任务储存队列

2020-09-08 17:21:34 167

原创 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 2630

原创 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 1503

原创 MYSQL优化—索引优化(高性能MySQL(第3版))

索引的优点大大减少了服务器需要扫描的数据量帮助服务器避免排序和临时表将随机I/O变为顺序I/O评价一个索引是否适合某个查询的“三星系统”:索引将相关的记录放到一起则获得一星如果索引中的数据顺序和查找中的排序顺序一致则获得二星如果索引中的列包含了查询中需要的全部列则获得三星...

2020-07-01 17:16:15 211

原创 mysql Cant create more than max_prepared_stmt_count statements错误

错误原因当缓存的预编译SQL数量超过默认最大值时 就会产生如上错误 导致数据库直接无法使用检查查询数据库预编译SQL创建次数show global status like 'com_stmt%';每个连接创建的预编译语句有限, 需要着重检查是否出现动态测试代码:func TestPrepare(t *testing.T) { var wg sync.WaitGroup txn := sql.TxOptions{sql.LevelDefault,false} tx, err := db

2020-06-04 11:45:35 984

原创 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 149

原创 python测试框架 unittest 配合 flask 使用

代码:class TestInterface(unittest.TestCase): # 测试代码执行之前调用 (方法名固定) def setUp(self): """在执行具体的测试方法前,先被调用""" app.testing = True # 指定app在测试模式下运行。 (测试模式下,视图中的意外异常可以正常打印显示出来) # 使用flask提供的测试客户端进行测试 (Flask客户端可以模拟发送请求) self.

2020-06-02 16:38:26 472

原创 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 1665

原创 golang微服务框架go-micro使用 (六) Config And Errors

Config特征1 动态加载:根据需要动态加载多个资源文件。 go config 在后台管理并监控配置文件,并自动更新到内存中2 资源可插拔: 从任意数量的源中进行选择以加载和合并配置。后台资源源被抽象为内部使用的标准格式,并通过编码器进行解码。源可以是环境变量,标志,文件,etcd,k8s configmap等3 可合并的配置:如果指定了多种配置,它们会合并到一个视图中。4 监控变化:可以选择是否监控配置的指定值,热重启5 安全恢复: 万一配置加载错误或者由于未知原因而清除,可以指定回退值进

2020-05-25 15:53:04 848

原创 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 905 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 1002

原创 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 1391 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 983

原创 golang微服务框架go-micro使用 (一) Getting Started

文档不断更新的文档,需要翻墙官方文档服务发现服务发现是每个分布式系统都需要解决的问题,go-micro将这个任务抽象到一个接口中,

2020-05-22 10:56:50 914

原创 golang微服务框架Kratos使用

简介项目地址:https://github.com/go-kratos/kratos项目致力于提供完整的微服务研发体验,整合相关框架及工具后,微服务治理相关部分可对整体业务开发周期无感,从而更加聚焦于业务交付。对每位开发者而言,整套Kratos框架也是不错的学习仓库,可以了解和参考到bilibili在微服务方面的技术积累和经验。Quick startRequirmentsGo version>=1.13InstallationGO111MODULE=on && go g

2020-05-21 16:32:35 6230

原创 使用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 1107 2

原创 go-kratos 微服务框架 warden模块使用

pb文件创建项目成功后,进入api目录下可以看到api.proto文件:option go_package = "api";option (gogoproto.goproto_getters_all) = false;service RPCDemo { rpc Ping(.google.protobuf.Empty) returns (.google.protobuf.Empty); rpc SayHello(HelloReq) returns (.google.protobuf.Empt

2020-05-20 16:31:27 2449

原创 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 2305

原创 go-kratos 微服务框架 bm 模块使用

路由创建项目成功后,进入internal/server/http目录下,打开http.go文件,其中有默认生成的blademaster模板。其中:func New(s api.DemoServer) (engine *bm.Engine, err error) { var ( cfg bm.ServerConfig ct paladin.TOML ) if err = paladin.Get("http.toml").Unmarshal(&ct); err != nil { r

2020-05-19 11:17:22 3291

原创 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 1642

原创 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 2065

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除