- 博客(426)
- 收藏
- 关注

原创 基于知识图谱的调用链分析精准化测试平台
精准化测试技术是一种可追溯的软件测试技术,通过构建一套计算机测试辅助分析系统,对测试过程的活动进行监控,将采集到的监控数据进行分析,得到精准的量化数据,使用这些量化数据进行质量评价,利用这些分析数据可以促进测试过程的不断完善,形成度量及分析闭环,实现软件测试从经验型方法向技术型方法的转型 。
2022-10-11 14:17:19
2488
2

原创 LynTest 接口自动化平台介绍
项目介绍本项目支持单接口调试、并发测试,支持批量测试、定时执行、报告在线展示及推送。支持变量传递、函数助手等功能。所有批量执行、压测功能等均为异步执行。为支持企业级的应用落地,新版本支持较为复杂的权限管理系统,并内置大量可拓展功能,例如:自定义入参校验、okhttp请求拦截、redis键空间通知、七牛等第三方接入、企业微信推送等。平台技术栈为 SpringBoot + Vue,前后端分离实现。为方便部署,数据库简化为仅使用MySQL,当然平台也内置了Redis操作类,可根据需要让同学们进行快速的二次迁
2020-12-25 15:48:06
2593
15

原创 SpringBoot+Kafka+ELK 完成海量日志收集(超详细)
SpringBoot项目准备引入log4j2替换SpringBoot默认log,demo项目结构如下:pom<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!-- 排除
2020-07-16 16:19:16
4473
1

原创 证券知识检索系统的实现(全栈)
大概实现思路如下:通过Tushare等第三方渠道或Scrapy爬取所需要的股票信息,存在数据库中。通过kafka-canal监控mysql的log,实时更新neo4j内的数据。使用Django rest Framework生成微服务,提供api。使用Vue搭建简单的前端,调取api以获得信息。下面来看下具体的实现细节:1.数据初次采集通过Tushare等第三方渠道获取信息(部分...
2019-03-23 17:38:50
862
4

原创 情感分析系统(v2.0)
项目介绍本文是对情感分析系统的二次优化。优化了数据清洗部分代码做了简单的数据可视化更简便的超参数选择方法对一些函数在时间复杂度上的优化下面来看一下具体的实现过程1.File Reading: 文本读取从结构化的数据集中,提取测试数据与训练数据import redef read_train_file(file_path): comments = [] # 用来存储...
2019-03-05 02:58:50
5232
2

原创 基于知识图谱+机器学习,搭建风控模型的项目落地
本项目主要实现逻辑如下:1.将测试数据分表格存入mysql数据库。2.设计知识图谱关系图,按照设计思路将node与对应的relationship存入neo4j数据库。3.设计一套有效的特征,提取特征用于机器学习模型进行训练,用以风控判断。4.将提取特征的cypher语句存入mysql,使用SpringBoot搭建微服务,用以读取api获取每个进件的特征矩阵。5.使用逻辑回归、GBDT,神...
2018-11-26 00:42:58
8548
13
原创 Golang版本处理Skywalking Trace上报数据
我先尝试了将java版本的SegmentObject转成json,再转成proto文件,然后生成pb.go,用这里生成的。内有我们所有需要的数据,但golang并未找到类似的函数,所以我们需要用golang实现类似。函数,所以我们只需要用golang版本的proto去反序列化base64解密后的byte即可。最后是通过skywalking-go版本agent的源码,找到了对应的pb文件。Tips: 中间记录了解决问题的过程,如不感兴趣可直接跳至结尾。的逻辑,我们先看一下java的源码。
2023-11-22 17:02:42
1695
2
原创 如何用深度强化学习做单元测试代码生成
需要注意的是,这只是一个简单的案例代码,实际情况下需要仔细设计Agent的状态、动作和奖励,并针对具体问题进行调参和优化。奖励可以根据覆盖率的提升量进行设计,比如引入一个目标覆盖率,奖励为当前覆盖率与目标覆盖率之间的差异。在这个问题中,状态可以包括待测试函数的输入和输出,以及已经生成的测试用例和它们对应的覆盖率等信息。,其中包括待测试函数的输入和输出,以及已生成的测试用例和它们对应的覆盖率等信息。每次执行增加或修改操作后,会根据新的测试用例计算出相应的覆盖率,并基于覆盖率的提升量给予奖励或惩罚。
2023-03-21 17:21:49
2115
原创 ast解析go文件
func main() { filepath.Walk("{项目路径}", func(path string, info os.FileInfo, err error) error { if !info.IsDir() { if strings.Contains(path, ".go") { fileAnalysis(path) } } return nil })}func fileAnalysis(path string) { fmt.P
2022-05-07 14:14:24
1209
原创 Go 使用Neo4j v4.x
这里针对neo4j 4.x的版本import ( "log" "strconv" "testing" "github.com/neo4j/neo4j-go-driver/v4/neo4j")var ( neo4jURL = "bolt://${ip}:7687")func CreateDriver(uri, username, password string) (neo4j.Driver, error) { return neo4j.NewDriver(uri, neo4j.Ba
2022-04-29 11:45:53
2018
原创 kubectl常用命令
命令式资源管理创建create:创建一个资源expose:暴露一个资源更新scale:扩展资源annotate:添加备注label:标签删除delete:删除资源资源查看get:最常用的查看命令,显示一个或多个资源的详细信息describe:describe命令同样用于查看资源信息,但相比与get只输出资源本身的信息,describe聚合了相关资源的信息并输出容器管理log:查看容器logexec:执行命令cp:用于从容器与物理机文件的拷贝.
2022-02-21 15:52:44
611
原创 Redis内置lua脚本实现限流
Lua脚本其实比较简单,这里以1r/s的案例为例传入一个key和限流的阈值limit,每当有请求时,如果超出限流标准则返回false,如果未超出限流标准,在methodKey上进行自增+1,同时给methodKey设置1s过期时间。-- 获取方法签名特征local methodKey = KEYS[1]redis.log(redis.LOG_DEBUG, 'key is', methodKey)-- 限流的阈值local limit = tonumber(ARGV[1])-- 当前流量大小
2022-02-18 16:36:24
1338
原创 Nginx实现限流
nginx的限流主要通过修改nginx.conf文件来进行,有两种限流方式:通过请求数进行限流基于连接数进行限流通过请求数进行限流http { limit_req_zone $binary_remote_addr zone=iplimit:10m rate=1r/s; server { server_name www.nginx-lyntest.com; listen 80; location /access-limit/
2022-02-17 19:02:16
8070
1
原创 okHttp忽略SSL验证
主要是在OkHttpClient.Builder()中添加.sslSocketFactory()和.hostnameVerifier()配置OkHttpClient client = new OkHttpClient.Builder() .sslSocketFactory(SSLSocketClient.getSSLSocketFactory(), SSLSocketClient.getX509TrustManager()) .hostnameVerifier(SSLSocketClient.getH
2021-12-22 15:22:02
8406
1
原创 基于物品的协同过滤实现demo
基于物品(item-based)的协同过滤的算法步骤:计算用户-物品打分矩阵计算物品相似度矩阵用户-物品打分矩阵 * 物品相似度矩阵 = 推荐列表例如我们有一个基于用户(userId)对物品(itemId)进行打分(vote)的数据源想获取针对用户A(User_A)的物品推荐列表object Test { case class UserItemVote(userId:String,itemId:String,vote:Float) def main(args: Array[
2021-11-09 16:46:06
864
原创 基于用户的协同过滤实现demo
例如我们有一个基于用户(userId)对物品(itemId)进行打分(vote)的数据源然后我们想根据用户的协同过滤算法计算某用户的TopN相似用户import org.apache.spark.sql.SparkSessionimport org.apache.spark.sql.catalyst.ScalaReflectionimport org.apache.spark.sql.types.StructTypeimport org.apache.spark.sql.functions._
2021-11-08 18:34:42
1923
原创 推荐系统常见问题
推荐系统常见问题主要集中在以下4个维度:冷启动数据稀疏不断变化的用户喜好不可预知的事项冷启动1.用户冷启动:给新用户做个性化推荐解决方案:根据用户注册信息对用户进行分类推荐热门的排行榜基于深度学习的语义理解模型引导用户把自己的属性表达出来利用用户在社交媒体的信息2.物品冷启动:把新的物品推荐给特定的用户解决方案:文本分析主题模型给物品打标签推荐排行榜单3.系统冷启动:新系统让用户感受到个性化推荐数据稀疏解决方案:奇异值分解:降低矩阵维数能降低数据稀疏
2021-11-08 16:14:49
1152
原创 Spark:DataFrame使用
Spark SQLSpark SQL是Spark中的一个模块,主要用于进行结构化数据的处理。它提供的最核心的编程抽象,就是 DataFrame。DataFrame=RDD+Schema它其实和关系型数据库中的表非常类似,RDD可以认为是表中的数据,Schema是表结构信息。 DataFrame可以通过很多来源进行构建,包括:结构化的数据文件,Hive中的表,外部的关系型数据 库,以及RDDSpark1.3出现的 DataFrame ,Spark1.6出现了 DataSet ,在Spark2.0中两者
2021-09-13 09:24:13
1880
原创 Spark程序性能优化
性能优化分析一个计算任务的执行主要依赖于CPU、内存、带宽Spark是一个基于内存的计算引擎,所以对它来说,影响最大的可能就是内存,一般我们的任务遇到了性能瓶颈大概率都是内存的问题,当然了CPU和带宽也可能会影响程序的性能,这个情况也不是没有的,只是比较少。Spark性能优化,其实主要就是在于对内存的使用进行调优。通常情况下,如果你的Spark程序计算的数据量比较小,并且你的内存足够使用,那么只要网络不至于卡死,一般是不会有大的性能问题的。但是Spark程序的性能问题往往出现在针对大数据量进行计算(比
2021-09-07 21:04:09
1197
1
原创 Dart语法快速入门
语言特性强类型语言,静态类型,面向对象语言数据类型数字num: 是数字类型父类,即可接收浮点类型,也可以接收整型int 只能是整数double 双精度void _numType(){ num num1 = -1.0; num num2 = 2; int int1 = 3; double d1 = 1.68; print("num:$num1 num:$num2 int:$int1 double:$d1");}字符串void _stringType(
2021-09-06 17:09:23
208
原创 Spark:checkpoint介绍
checkpoint,是Spark提供的一个比较高级的功能。有时候我们的Spark任务,比较复杂,从初始化RDD开始,到最后整个任务完成,有比较多的步骤,比如超过10个transformation算子。而且整个任务运行的时间也特别长,比如通常要运行1~2个小时。在这种情况下,就比较适合使用checkpoint功能了。因为对于特别复杂的Spark任务,有很高的风险会出现某个要反复使用的RDD因为节点的故障导致丢失,虽然之前持久化过,但是还是导致数据丢失了。那么也就是说,出现失败的时候,没有容错机制,所以
2021-09-05 11:31:15
3137
原创 Spark:shuffle机制分析
在Spark中,什么情况下,会发生shuffle?reduceByKey、groupByKey、sortByKey、countByKey、join等操作都会产生shuffle。那下面我们来详细分析一下Spark中的shuffle过程。Spark的shuffle历经了几个过程Spark 0.8及以前 使用Hash Based ShuffleSpark 0.8.1 为Hash Based Shuffle引入File Consolidation机制Spark1.6之后使用Sort-Base Shuf
2021-09-05 09:32:05
637
原创 Spark:Job的三种提交模式
第一种,standalone模式,基于Spark自己的standalone集群。指定–master spark://bigdata01:7077第二种,是基于YARN的client模式。指定–master yarn --deploy-mode client这种方式主要用于测试,查看日志方便一些,部分日志会直接打印到控制台上面,因为driver进程运行在本地客户端,就是提交Spark任务的那个客户端机器,driver负责调度job,会与yarn集群产生大量的通信,一般情况下Spark客户端机器和Ha.
2021-09-03 09:12:57
507
原创 Spark:Stage介绍
spark job是根据action算子触发的,遇到action算子就会起一个jobstage的划分依据就是看是否产生了shuflle(即宽依赖),遇到一个shuffle操作就划分为前后两 个stagestage是由一组并行的task组成,stage会将一批task用TaskSet来封装,提交给TaskScheduler进行分配,最后发送到Executor执行下面来看一张图来具体分析一下为什么是从后往前呢?因为RDD之间是有血缘关系的,后面的RDD依赖前面的RDD,也就是说后面的RDD要等前
2021-09-03 09:00:26
3332
原创 go获取tfidf词频矩阵
package utilsimport ( "math" "sort" "time")type TfidfUtil struct{}type wordTfidf struct { word string frequency float64}type wordTfidfs []wordTfidftype Interface interface { Len() int Less(i, j int) bool Swap(i, j int)}func (wts
2021-09-02 10:30:33
530
原创 Spark:宽依赖与窄依赖
窄依赖(Narrow Dependency):指父RDD的每个分区只被子RDD的一个分区所使用,例如map、filter等这些算子 一个RDD,对它的父RDD只有简单的一对一的关系,RDD的每个partition仅仅依赖于父RDD 中的一个partition,父RDD和子RDD的partition之间的对应关系,是一对一的。宽依赖(Shuffle Dependency):父RDD的每个分区都可能被子RDD的多个分区使用,例如groupByKey、 reduceByKey,sortBykey等算子,这些算.
2021-09-02 09:17:35
5700
原创 Flink核心API
Flink中提供了4种不同层次的API,每种API在简洁和易表达之间有自己的权衡,适用于不同的场景。目前前3个会用得比较多。SQL:Flink的SQL底层是基于Apache Calcite,Apache Calcite实现了标准的SQL,使用起来比其他API更加灵活,因为可以直接使用SQL语句。Table API和SQL可以很容易地结合在一块使用,因为它们都返回Table对象。Table API:一般与DataSet或者DataStream紧密关联,可以通过一个DataSet或DataStream创.
2021-09-02 08:41:05
487
原创 选择排序法(图文)
例如我们有一个数组[6,4,2,3,1,5]我们建立i与j两个索引游标,先使用j进行遍历,找到最小的 1,将其索引记录为minIndex此时我们将索引i与索引minIndex的两个元素位置进行交换此时i这个位置的元素是整个数组中最小的元素然后我们进行i++,并且使j=i重复上述步骤,找到2,然后再进行交换重复上述步骤我们每一次遍历:arr[i…n) 是未排序的数组arr[0…i) 是已排序的数字arr[i…n) 中的最小值要放到arr[i]的位置代码实现:go
2021-08-31 16:48:17
129
原创 Flink:Streaming+Batch 完成WordCount
我们通过socket实时产生一些单词,使用flink实时接收数据,对指定时间窗口内(例如:2秒)的数据进行聚合 统计,并且把时间窗口内计算的结果打印出来Scala版本import org.apache.flink.streaming.api.scala.StreamExecutionEnvironmentimport org.apache.flink.streaming.api.windowing.time.Timeobject SocketWindowWordCountScala { d
2021-08-30 15:29:05
414
原创 Go实现http接口压测工具
使用方式切换到根目录下,执行:go run main.go -c 500 -n 20 -u https://www.baidu.com项目目录如下:├── go.mod 依赖管理├── main.go 启动函数├── model│ └── request.go 对象定义└── server ├── client │ └── http_client.go http请求发起客户端 ├── dispose
2021-08-27 20:35:11
1576
原创 Kafka集群参数调忧
主要分为3个模块:JVM参数调优Replication参数调优Log参数调优JVM参数调优默认启动的Broker进程只会使用1G内存,在实际使用中会导致进程频繁GC,影响Kafka集群的性能和稳定性通过jstat -gcutil <pid> 1000查看到kafka进程GC情况主要看YHC,YGT,FGC,FGCT这几个参数,如果这几个值不是很大,就没什么问题YGC: young gc发生的次数YGCT: young gc消耗的时间FGC: full gc发生的次数F
2021-08-24 08:58:51
584
1
原创 Kafka的三种语义
kafka可以实现以下三种语义,这三种语义是针对消费者而言的:至少一次:at-least-once这种语义有可能会对数据重复处理实现至少一次消费语义的消费者也很简单。1: 设置enable.auto.commit为false,禁用自动提交offset2: 消息处理完之后手动调用consumer.commitSync()提交offset这种方式是在消费数据之后,手动调用函数consumer.commitSync()异步提交offset,有可能处理多次的场景是消费者的消息处理完并输出到结果库,但
2021-08-24 08:32:26
1592
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人