9 ssshen14

尚未进行身份认证

我要认证

随笔和心得

等级
TA的排名 6w+

递归调用转为循环

背景有一个接口会返回json格式的字符串,json格式是嵌套的,类似这样的如下的结构,需要转换为一个list,当然最简单的写一个递归就可以了,但是有一句话: “所有的递归都可以转化为循环”,那么就用循环实现吧。{ "respData":[ { "id":1, "isvalid":1, "orgName":"汽车", "parentId":0, "subOrg...

2020-02-21 18:04:35

自定义ClassLoader的实现

背景公司使用的是自己实现的RPC框架,有自己的传输协议和序列化方式,在RPC服务启动的时候,会扫描当前服务的lib目录,然后后加载以com.xxx开头的class文件,为接口的返回结果序列化为java Object做准备。2019年开始,通过不断的调研和思考,RPC服务接口测试平台初具雏形,在开发测试平台的时候,一直存在一个问题,测试平台肯定要能够为所有的RPC服务都提供测试能力,但是每个RP...

2020-02-16 16:10:21

Junit5 动态执行测试类

Junit5 重新构造了junit5,支持在代码中执行测试类使用LauncherDiscoveryRequest、Launcher的方法实现public void executeByJunit5(String serviceName, String branch, String fileName) { //需要执行的测试类绝对路径 String testCase...

2019-12-26 16:55:24

kafka和hive一起使用,SparkSession StreamingContext一起使用

object RealTimeRequestParamCollect { // 在伪分布式中,一个spark 应用对应了一个main函数,放在一个driver里,driver里有一个对应的实例(spark context).driver 负责向各个节点分发资源以及数据。 // 那么如果你把创建实例放在了main函数的外面,driver就没法分发了。所以如果这样写在local模式下是可以成功的...

2019-12-12 21:17:30

记一次配置fiddler转发请求(HTTPS)不生效的解决过程

一、背景同一个域名,其中一个前缀开头的请求需要分到192.168.187.170:8089才能正常访问,8089为web应用监听端口,也就是说这类特殊的请求不通过nginx处理前提:公司网络架构为:nginx–>web应用–>rpc服务二、首次配置fiddler script OnBeforeRequest方法中增加如下配置if (oSession.uriContains('...

2019-10-20 15:56:12

select2动态添加option

select2动态添加option背景html原来的实现javascirpt实现后端接口返回取值修改后javascript实现后端接口返回结果取值结论背景select2 使用ajax remote加载数据方式时,不能使用$(’#select2’).val();的形式获取option的value,为了统一代码风格,需要把请求接口返回的结果以optin的形式动态添加到select2组件上。htm...

2019-06-20 17:21:16

RPC服务测试新思路

RPC服务测试新思路原创:转转QA转转QA引言为了保证RPC服务的稳定,最大可能的防止BUG带到线上,测试过程中对RPC服务做接口测试是必要的步骤。目前的通用做法是在测试框架中引入被测服务的contract 包,再基于contract包开发对应的接口测试代码,并尽量全面的构建覆盖多个场景的入参。目前的方式有几方面不足: 必须有一定Java基础的测试同学才能够胜任; ...

2019-04-02 11:00:53

公开课,业余时间分享了一节公开课,有需要的朋友可以看看

腾讯课堂:https://ke.qq.com/course/329678?tuin=1b04813e 公开课内容:抓包工具fiddler讲解

2018-09-07 17:00:26

自动生成testng.xml

工作中接到一个任务,调研是否可以实现rpc服务自动diff功能。本篇是其中的一个子功能,测试类的testng.xml自动实现。实现原理: 1.实例化XmlSuite类 2.扫描目录下所有的classes文件,然后遍历class的所有方法是否包含@Test注解 3.步骤2中的必要信息放到XmlSuite中 4.保存XmlSuite到指定位置主要方法:/** * 生成test...

2018-07-24 14:31:10

java在运行时动态编译.java文件,转载Stack OverFlow

原始地址:https://stackoverflow.com/questions/27608408/compiling-a-class-at-runtime-with-classpathI’m currently trying to compile a class at runtime but for some reason it’s only working on one system. B...

2018-07-19 11:23:48

扫描Class文件,获取所有可调用方法及方法的入参等信息

主要思路: 1.从gitlab上下载contract源码,使用org.eclipse.jgit 2.mvn编译并把生成的jar和依赖的jar拷贝到指定目录下,使用org.apache.maven.shared maven-invoker 3.扫描源码列出所有以I开头,以.java结尾的文件绝对路径getCanonicalPath() 4.根据第三步的文件绝对路径,切割转换出classNa...

2018-07-16 16:35:48

java指定目录下的jar加到classloader中

List<URL> libUrls = new ArrayList<URL>();// contract依赖的所有jar,加到classloader的classpath中File libPath = new File(Const.ROOT_TESTCASES_PATH + File.separator + Const.SERVICE_PREFIX + serviceNa...

2018-07-16 16:11:56

jdk8删除非空文件夹,拷贝自StackOverflow

import java.io.File;import java.nio.file.Files;import java.nio.file.Path;import java.nio.file.Paths;import java.util.Comparator;/** * 多个文件相关的复杂操作,组合到一起 * * @author shenyanfang * @date 2018年...

2018-07-16 16:03:59

python heapq简述 从https://github.com/qiwsir/algorithm/blob/master/heapq.mdfuzh复制

python中的堆排序peapq模块heapq模块实现了python中的堆排序,并提供了有关方法。让用Python实现排序算法有了简单快捷的方式。heapq的官方文档和源码:8.4.heapq-Heap queue algorithm下面通过举例的方式说明heapq的应用方法实现堆排序#! /usr/bin/evn python#coding:utf-8from he...

2018-07-11 11:40:54

eclipse 4.5 离线安装mybatis generator1.3.6卡在Install New Software的解决方法

eclipse Mars Release (4.5.0) 离线安装 Mybatis generator 1.3.6 卡在Install New Software的解决方法

2018-04-19 14:28:59

记一次crontab 报“abrt: detected unhandled Python exception in ”错误的解决过程

题记 上周把一个python服务迁移到新的机器上,顺带着需要把python写的一个后台任务也迁移到新的机器。但是在新的机器上python的定时任务就是不执行。下面记录一下自己的解决过程,以备以后查阅。现象 先来看一下现象: 首先查看 vi /var/log/cron文件,看定时任务是否执行了,从该文件可以看到任务确实执行了 接下来查看vi /var...

2018-04-13 19:23:06

python2.7.14 translate解释

先把源码放在这里PyDoc_STRVAR(translate__doc__,"S.translate(table [,deletechars]) -> string\n\\n\Return a copy of the string S, where all characters occurring\n\in the optional argument deletechars are remo

2018-03-09 17:04:49

python2.7 maketrans工作原理

今天用到了python str maketrans,顺道看了一下实现原理,做一下记录# Case conversion helpers# Use str to convert Unicode literal in case of -U# 把ascii表的字符放到list中l = map(chr, xrange(256))# 把list转换为str_idmap = str('')....

2018-02-28 17:20:54

二十、python 字符串去重,主要依赖maketrans和translate这两个方法

最近遇到一个问题,怎么来对一个字符串去重? 我的思路是1.先分割字符串;2.然后使用set去重;3.用join连接起来。 那就引入了另一个问题:怎么分割字符串来保证结果中不包含空格?当然有很笨的方法,本篇主要谈论有没有一种更简单的方法?首先,先来看一下需要分割的字符串# 张三;李四;王五;张三;李四bbb = u';\u5f20\u4e09;\u674e\u56db;\u738...

2018-02-28 16:19:28

十九、弹出框文字带超链接

原因:弹出提示框,让用户先登录,才可以进行被保护的操作,想要提示框中的文档带超链接; 过程: alert:实现不了,文字会原样展示 自定义alert:就想实现一个简单的功能,不想写太多代码 jquery ui dialog:简单,div中支持复杂的样式展示 html:<div id="alertlogin" title="请先登陆"> <p><a href='/login?next

2017-11-30 11:05:06

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。