精华内容
下载资源
问答
  • 现在大部分的java项目都是前后端分离,以前不分离的时候测试自己所做的界面都是直接启动界面输入数据打断点等进行调试,那现在前后端分离了,后端接口写好后如何测试自己的接口对不对呢?*test类——本地测试第一种...

    d61e50923fba3074b4f9f0ee8bf53842.png

    现在大部分的java项目都是前后端分离,以前不分离的时候测试自己所做的界面都是直接启动界面输入数据打断点等进行调试,那现在前后端分离了,后端接口写好后如何测试自己的接口对不对呢?

    *test类——本地测试

    第一种方法就是写一个test类,调用Facade接口,并从数据库中取一个值,在测试类中给接口的形参赋一个实参,然后运行或者断点调试。详细操作如下:

    1.写测试类

    2.拿值赋值/**

    * 根据教师id查询老师所教公选课和非公选课的课程信息

    */

    @Test

    public void queryTeachercourseInfo() {

    //把从数据库里取得值赋给接口的形参

    String teacherId = "ShfxVkbMvX9ZW5P7n4WnmN";

    //调Facade接口

    List list = teacherCourseFacade.queryTeachercourseInfo(teacherId);

    //循环打印获取的id

    for(QueryMyCourseModel queryMyCoureseModel : list){

    System.out.println(queryMyCoureseModel.getTeacherId());

    }

    }

    3.启动测试

    2a32d6207577647ceddd090bd76046ec.png4.查看结果

    ecd9b7f205b4853feefd511804d35b07.png

    *swagger——服务器测试

    第二种方法就是利用swagger进行测试,想要用swagger测试,一定要记得测试之前先把代码提交了,然后构建一下,否则或无法远程你写的方法哟。详细操作如下:

    1.启动service和web

    7666ca87a49958b8b6fa9db62082dccb.png

    af765486eeab5a1c6ef0e11b1d2d99ff.png2.在swagger中找到要测试的接口方法

    c8bec99be87198f976f0c5cae143965d.png3.赋值测试

    eda8b45eb4f0959b88866db5773043a7.png4、查看测试结果

    ab73154067d8eec344c92b036430d7bb.png更多java知识请关注java基础教程栏目。

    展开全文
  • mall项目是一套电商系统,包括前台商城系统及后台管理系统,看完代码对自己能力将有非常大提高,为了更好让大家心里明白后端究竟该做什么,前端项目就直接废弃,我们全部改用在线调用接口的方式进行调试处理!...

    mall项目是一套电商系统,包括前台商城系统及后台管理系统,看完代码对自己能力将有非常大的提高,为了更好的让大家心里明白后端究竟该做什么,前端项目就直接废弃,我们全部改用在线调用接口的方式进行调试处理!

    项目地址:

    https://github.com/macrozheng/mall

    后端技术栈:

    SpringBoot 容器+MVC框架

    SpringSecurity 认证和授权框架

    MyBatis ORM框架

    MyBatisGenerator 数据层代码自动生成

    PageHelper MyBatis物理分页插件

    Swagger-UI 文档生产工具

    Hibernator-Validator 验证框架

    Elasticsearch 搜索引擎

    RabbitMQ 消息队列

    Redis 分布式缓存

    MongoDB NoSql数据库

    Docker 应用容器引擎

    Druid 数据库连接池

    OSS 对象存储

    MinIO 对象存储

    JWT JWT登录支持

    LogStash 日志收集工具

    Lombok 简化对象封装工具

    Jenkins

    运行mall项目

    1、下载项目:

    下载git工具(https://git-scm.com/download/win),执行:

    423e88e649fb611225e2870630bcbaab.png

    2、IDEA导入mall多模块项目

    一定要选择import的方式(ps:如果是IDEA的主界面,记得选那个import,不要new,实质上是跟这个一样)

    35057fe818f56112c9c9614c09ee4f13.png

    当然,你也可以选择其它的方式,不过那样需要多一点配置,其实所有的java项目配置都在这里,自己去百度这个点,就知道所有的java项目怎么弄了

    accc36bcefbfc90b186b2dff2b394e64.png

    3、剩下的就是等待了,IDEA会自动下载maven所有的依赖包(大概3个小时左右)

    4、项目结构分析:

    这是一个多模块项目,其实企业现在几乎所有的项目都是这种结构了,为什么,因为tm符合企业的生产环境了,不明白这样结构的人,请自己百度一下:maven的聚合和继承

    64e133b58fa71288f1749c0a010731e7.png

    5、修改项目Mysql配置,Redis、Mongodb等等其它的数据库缓存消息队列的配置也跟Mysql一样,用到再改,我现在需要讲解调试的是Mysql配置

    数据库持久层mapper,dao,mapper.xml文件都在模块mall-mbg中,直接修改这里就行了:

    首先在Mysql中建立mall数据库,然后导入sql文件,sql文件在这里:

    11dd59326b0e5b714c6b13ad0d2d2a8b.png

    然后修改Mysql配置:

    7d2de3e26719371727d6398df1a885c5.png

    搜索:username: root

    6d268b286d449261cb399754b0d3ca18.png

    点进去直接修改,把搜到的这5个都改了:

    90c732ace3ffa9eb018d5b3cd9854711.png

    dc0f53fd66f5ef2b843851aef02d416c.png

    6、项目运行:

    8076b6a672042df8bd793e2975fd5160.png

    7、结果呈现:

    浏览器访问:

    http://localhost:8080/

    当出现:

    {"code":401,"data":"Full authentication is required to access this resource","message":"暂未登录或token已经过期"}

    说明你成功了

    另外,请自行百度去搜索:springboot热部署,这样让你的开发更快

    8、用户注册和登录调试:

    用户注册

    打开在线接口调试网址:

    https://getman.cn

    输入如下地址和参数:

    c735973c3f2d39902a98cc092ca1d81a.png

    看见没,注册成功了,然后你自己去细品注册的代码哦

    b24306a2403778cfa946c73fb17f9f94.png

    用户登录:

    成功后返回了一个token,自己去看生成token之前做的工作,和生成token之后做的工作

    ce0372513791f1b51e6d971b04464a88.png

    用户登录代码

    b2ad91f3bbc68084a7bae51ac7e8ae43.png

    其它的所有的接口,请访问这个地址:

    http://localhost:8080/swagger-ui.html

    3aab32068469d1408dd6758c8d28be1c.png

    请自己一步一步把涉及到的接口都调试完毕,这样前端可有可无,所以,你应该清楚了前后端分离了哦,不要再管前端花里胡哨的展示,把后端代码看懂,这样你的能力将会有质的提升,看项目源码,比如这里:

    数据持久层(dao、mapper、mapper.xml)是怎么生成和布局的?

    service是怎么弄的?

    controller是怎么调用service的?

    中间涉及到各种处理是怎么弄的

    看懂了,这些项目其实也就这回事,程序也就这回事

    展开全文
  • java作为一门成熟语言,怎么能没有成熟机制?我们平时一般会用IDE自带的调试工具,eclipse、Intellij 等。本文将讲解一下java debug 体系基础知识。intellij1 JPDA (Java platform debug Architect...

    86ec47435cfc

    nobug

    作为一个程序员,每天都会遇到问题、调试代码。常见的调试一般是加日志、打断点。在java中添加日志,每次都要编译,极其不便。java作为一门成熟的语言,怎么能没有成熟的机制?我们平时一般会用IDE自带的调试工具,eclipse、Intellij 等。本文将讲解一下java debug 体系的基础知识。

    86ec47435cfc

    intellij

    1 JPDA (Java platform debug Architecture)体系介绍

    我们在调试的过程中,一般需要一些方法来观察和测试运行态中的环境信息,比如变量、状态、jvm 状态、堆栈信息等。这些通过JPDA都可以搞到。

    2 JPDA结构

    86ec47435cfc

    JPDA结构

    JPDA定义了一个完整独立的体系,它由三个相对独立的层次共同组成,而且规定了三者之间的交互方式。这三个层次由低到高依次是Java 虚拟机工具接口(JVMTI),Java 调试线协议(JDWP)以及 Java 调试接口(JDI)。这三个模块把调试过程分解成几个很自然的概念:调试者(debugger)和被调试者(debuggee),以及他们中间的通信器。

    3 JPDA三层结构的交互

    86ec47435cfc

    交互

    基本交互可以分为如下步骤:

    3.1、jvmti 相关的步骤

    jvm启动,注册JVMTI:jvm启动时,会检查对应的jvm参数,加载jvmti。

    jvm启动, jdwp以agent的方式加载,并且设置对应的callback函数。启动jdwp的监听socket ;并且会初始化一个eventQueue实例,用户后续跟jdi 进行event交互。event 共有18种。(这个过程可以在启动时加载,也可以jvm其中之后以attach的方式加载 你假笨的jvm attach机制实现)。具体的jvm启动过程可以看一些我的这篇文章:jvm启动 ;

    3.2、JDI相关的步骤

    上述步骤主要描述了一下jvmti 相关的启动,下面讲一下JDI相关的步骤(以断点调试为例):

    从Intellij建立Remote debug, 此时就是建立了一个socket连接(上面步骤中jdwp agent 已经建立了socket ,等待客户端的连接)

    建立完连接,第一件事情就是双方进行handshake 交互,彼此之间确认对方使用的都是jdwp协议。

    Intellij 设置断点,就是通过jdi 的eventRequestManage 生成一个类型为breakpoint event 并且带有filter(保证只在特定地方生效)的eventRequest, 然后按照jdwp协议组装成command ,发送给目标jvm.

    3.3、目标jvm的处理

    目标jvm接收到来自调试端的command 指令,会解析指令

    目标jvm 运行,当触发breakpoint event 且满足调试端的filter 规则时 ,将这个breakpoint event加入到breakpoint eventSet 中

    然后 eventQueue 实例会将eventSet 按照FIFO的顺序返回给调试端。当然返回之前会将结果按照jdwp协议组装成reply 命令返回。

    4 总结

    参考文献

    展开全文
  • JNI_OnLoad 里 第三个参数 是一个方法表 里面是 java接口函数 与 so层里真实函数 映射 每3个DCD为一组 Java层函数 前面 so层真实函数 地址 按理说 每一组 第一个DCD为Java层函数 是一个 可见 字符串 然而...

    JNI_OnLoad 里 第三个参数 是一个方法表 里面是 java层接口函数 与 so层里真实的函数 的 映射
    每3个DCD为一组 Java层函数 前面 so层真实函数 地址
    按理说 每一组的 第一个DCD为Java层函数 是一个 可见的 字符串
    然而 这里却 看不到 这个字符串 , 为啥呢?
    是因为 它被加密了 IDA没分析出来

    那么我们怎么才能找到这个映射函数呢?

    我们思路是这样的:
    当运行的时候 JNI_Onload 函数下的
    _JNIEnv::RegisterNatives(v3, v4, &gMethods, 1) //注册
    这个 函数的 第三个参数 方法表 里面肯定是 明文的

    所以我们就这么弄
    想办法在它运行的时候 在这个 关键地方 下断点 就能分析出来 它的明文了
    这个JNI_Onload 是加载so的时候 就运行了
    那么我们就要想办法 在这个so 启动(加载)之前 就去附加 程序
    不然时机晚了 就已经运行过去了

    方法是这样的:
    以调试模式 启动apk 这时候 apk是 初始化完毕的阶段
    这时候 的so只有系统 so apk内部的so都是还没别加载进来的
    那么我们到哪去下断点了?
    到系统
    libdvm.so 里的 LoadNative (简写)函数处 去下断点 这里说的是5.0以下系统的
    在 LoadNative 函数里 找到 关键字 “Calling JNI_Onload” 这个的 下边一行 代码 就是 调用JNI_Onload 的地方
    注意 注意: 这个地方所说的 JNI_Onload 是系统so libdvm.so 里LoadNative函数里 去调用apk 里的 SO apk里有很多so (apk里Java代码用System.loadLibrary(“library”) 去加载 apk 的so 的 )

    这里下好断点 运行的时候 在这断下来
    单步跟踪进入 这时会到 JNI_Onload 函数
    这个时候 你要注意看 当前加载的是哪个 so 是不是我们要分析的so
    因为每个so都有 一个JNI_Onload 函数
    以前我们也说过 so就类比dll so里的JNI_Onload 函数 就类比 Main函数
    第一时间启动的就是它
    so里的JNI_Onload 函数 要想被调用 就必须得 在java层 System.loadLibrary(“library”) 去加载它时才能被调用

    如果不是 F9继续运行 知道 运行到 加载的是我们 要分析的那个so 后
    单步跟踪进入 这时 就到了 我们要分析的 那个so 里的 JNI_Onload 函数

    再运行到 动态注册 java层接口函数的 地方 即
    _JNIEnv::RegisterNatives(v3, v4, &gMethods, 1) //注册

    这时在 Hex View窗口里 看 R2 第三个参数 的值
    咋一看 貌似乱码 别慌
    我们选中 这一块区域(十六进制区域) 然后 右键
    Data format -> Addresses with text
    意思是 把这一块内存数据 格式化成 前面是地址 后面是 文本 显示出来
    这样就 全部显示出来 了
    按照规则
    每3行为一组
    每组里的 第一行是 Java层函数名 第二行是 前面
    第三行是 so里的对应的映射的 真实地址 这里这行显示出来的是
    地址 后面是乱码 因为它不是文本 所以显示出来是乱码
    这里我们要用的 就是 这个 地址

    那么我们如何在静态分析 这个so的时候 定位到 这个映射到的 函数处了

    这里我们先得到 这个映射函数 在这个so中的偏移
    在动态分析的时候 我们得到了 一个地址 那个地址是 动态运行时
    映射函数 在内存中所处的位置
    我们到 Module 模块列表中 找到这个 so 里面有个 Base 这个 是基址是 这个so 被加载到 内存中 这个地址处
    这样 我们得到了 so在内存中的 起始地址 这个映射函数 在内存中的地址
    把 映射函数在内存中的 地址 - 减去 so在内存中的 起始地址
    这样得到的结果 就是 映射函数 在 so中的 偏移值
    这样 我们 到静态分析的 这个so 中 按G 键 输入 这个 偏移值 就是我们的 映射函数的 地址

    展开全文
  • java中面向接口编程好处 事情起因 刚开始学时候还在想 弄什么接口,真麻烦 还有那个什么List 直接用ArrayList不行吗,非要再写个接口 虽然在学完ArrayList和LinkedList之后感觉的确是有一点点用途,但是感觉还是...
  • 我们讲解了怎么配置相关配置文件,下面我们调试一下怎么使其在IDEAweb项目中跑起来,然后在浏览器中进行操作。我们用IDEA导入支付宝对接Demo是时候发现不能运行,下面讲解一下怎么在IDEA中运行支付宝Demo并且在...
  • 因为安卓自动化测试都绕不开google自己研发自动化测试框架,于是张大胖哼哧哼哧开始学java,开始上手UiAutomator做自动化测试。2周过去了,张大胖开始向王哥抱怨:王哥一看他代码,demo都还没跑起来,再让他玩...
  • JVM工作原理和特点主要是指操作系统装入JVM是通过jdk中Java.exe来完成,通过下面4步来完成JVM环境....在我们运行和调试Java程序时候,经常会提到一个JVM概念.JVM是Java程序运行环境,但是他同时...
  • 6.自动化测试功能,目前市面上类似平台的接口自动化测试大部分都是伪自动化,对于一个复杂的场景,比如获取验证码,登陆,获取订单列表,获取某个特定订单详情这样一个上下文关联的一系列操作无能为力。而DOClever...
  • 里面有联通的VAC接口文档,和自认为比较重要但很简单的几段代码,是java的,但不教你怎么发布webservice,只说这个接口要注意的事项,我当时做因为文档少,所以搞的特别郁闷,其实里面没多少东西,你要舍不得分可以不下,自己...
  • 原创:http://blog.csdn.net/iwanghang一些跟我一样小白,在Eclipse调试好了,可能不知道怎么发布到Tomcat上,这篇博文简单4步,告诉大家如何操作。不管是本机使用Tomcat调试,还是发布到服务器上,都必须要学会。很...
  • 把核心业务表,可以简单罗列出来,表与表关系如果你面试是互联网公司,最好说些分布式一些技术,面试官爱听,根据你面试公司性质调整你回答问题走向 面试官:oracle存储过程怎么调试很多调试工具使用熟练度...
  • 说来惭愧这个问题找了挺久,作为一个并发编程渣渣,甚至都不知道怎么用idea进行多线程调试,这次虽然找问题找了半天,但也算有点收获 场景是我要开一个线程去定期用各种参数请求一个接口,来缓存这个接口的结果,...
  • 上周接到个新任务,一个遗留的接口工程需要改造,然而根据前任开发留下的文档看,这个工程没有代码,只有生产环境的jar包供使用。。边吐(咒)槽(骂)边在SVN服务器上四处翻找,想找到这个工程的源码,毕竟没源码怎么跑...
  • 呵呵,因为,未必所有的数据库服务器提供商都提供下面的JDBC驱动程序(给JDBC访问提供相应的接口),所以就有了JDBC<->ODBC Bridge。 接着再让我们来看看第二种访问流程: JDBC Driver Mannager->局部JDBC驱动...
  • 这套视频教程讲解JavaSE高级技术,包括程序调试技术,抽象类与接口的基本应用,异常处理及异常在开发中应用,使用数组存储数据, Java常用类以及常用类常用操作,Collection集合及Map集合特点及应用, 使用IO流读写...
  • 前后端分离的接口规范,我们是这样做的! 前后端分离式开发:高效协作10板斧 前后端都分离了,该搞个好用的API管理系统了! 微服务 RPC框架实践之:Apache Thrift RPC框架实践之:Google gRPC 微服务调用链追踪...
  • Java的代理—JDK Proxy

    2016-05-07 22:21:25
    最近空闲时间在研究dubbo,里面用到了代理,正好这块以前不怎么了解,现在学习并记录下来。 参考:Java核心技术 卷I 基础知识(原书第9版) 6.5 代理 JDK代理是Java 1.3新增特性,主要用于以下一些场景: ...
  • 都知道webservice 底层也是用http通信 ,但是怎么把底部通信报文打印出来也是我们调试接口时最方便最快捷方式. 这些只适用于用工具生成代理类.亲测java jdk生成代理类好使.也称JAX-WS. 下面代码 ...
  • mypanel类实现了线程接口,在run函数中定义了sleep(100)后调用repaint函数,做一个小坦克游戏,在repaint之前要判断是否击中坦克,击中后要显示三张图片来体现爆炸效果,可是经过调试发现,每次第一次击中时候,...
  • 最近弄了几天微信自定义菜单开发,对比着接口文档写了一段时间,但是一直都有错误,我用了接口在线调试工具https://mp.weixin.qq.com/debug/看到了一个菜单初级效果,在实现自定义菜单开发中主要参考了这篇...
  • Java 与 php

    千次阅读 2017-05-21 00:19:16
    这些天第三方二开人员一直问一下怎么调用我们产品接口, 再次体会java程序编写悲喜,感觉一堆jar,也不知道到底该用那个,让我们这些半路编写Java的人有些晕. php的调试环境又搞了三天,主要也是apache+...
  • 调试微信推广支持中二维码生成api的接口,使用chrome浏览器的postman插件,post请求时有一个选项是form-data,或者raw,使用raw可以请求成功,from-data不知道怎么组装key和value所以一直失败。非常不明白raw是什么...
  • 问题可能就出在这个上面,你给出代码只能根据异常提示---类或者接口找不到做推断,具体是在运行中那个类或者接口找不到不不好确定,因为代码不全没有办法调试而且也不知道你方法里怎么要实现什么功能。...
  • 定义一个程序员的接口,只干两件事情(程序员太忙,别的做不了)Java程序员长这个样,他会开发Java代码,会调试Java代码有个很牛逼的叫 Farmerbrag 的程序员,他在开发之前,会祈祷一下,这样他开发的代码就不会有bug...
  • java 面试题 总结

    2009-09-16 08:45:34
    面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 4. 多态性: 多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多...
  • 最近在调试dubbo接口,dubbo jar包更新,开发小哥哥没有直接给我更新包,而是给了maven坐标,然后,懵了,要怎么把maven搞到java工程里面去,我需要里面依赖包,不好意思直接给开发同事讲,我没有用过maven,作为...
  • 原文转载至:https://blog.csdn.net/mxmxz/article/details/73043156上周接到个新任务,一个遗留的接口工程需要改造,然而根据前任开发留下的文档看,这个工程没有代码,只有生产环境的jar包供使用。。边吐(咒)槽(骂...
  • 41、Java的异常处理机制是什么? 23 42、一个静态方法,里面可不可以用this和super关键字 24 三、JavaScript/JQuery/Ajax部分 24 1、用js和jQuery怎么进行表单验证 24 3、列举javaScript的3种主要数据类型,2种复合...
  • 点击上方Java后端,选择设为星标优质文章,及时送达作者 |Yrion链接 |cnblogs.com/wyq178/p/10291447.html前言:作为一个以前后端分离为模式开发小组,我们每隔一段时间都进行这样一个场景:前端人员和后端开发在...

空空如也

空空如也

1 2 3 4 5
收藏数 94
精华内容 37
关键字:

java的接口怎么调试

java 订阅