-
本地远程服务器java代码调试
2019-10-07 21:23:29在java程序开发时,当前后端在服务器构建完后,程序出现了问题,想定位是代码哪里出错了,怎么办呢?这时候只需要有一份构建前的java程序代码, 利用idea和jenkins两个工具就可以完成! 步骤: 1. 用idea打开后端...需求:
在java程序开发时,当前后端在服务器构建完后,程序出现了问题,想定位是代码哪里出错了,怎么办呢?这时候只需要有一份构建前的java程序代码, 利用idea和jenkins两个工具就可以完成!
步骤:
1. 用idea打开后端源码
2. 编辑Configurations3. 选择远程
3. 配置远程
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5000
4. 打开项目的jenkins配置
5. 重新构建一次即可
-
Java 文件上传服务器代码
2018-05-22 09:57:01Service 层代码public String uploadImage(String imageUrl);Impl 层代码public String uploadImage(String imageUrl) { System.out.println("imageUrl="+imageUrl); try { File file = download...Service 层代码
public String uploadImage(String imageUrl);
Impl 层代码
public String uploadImage(String imageUrl) { System.out.println("imageUrl="+imageUrl); try { File file = download(imageUrl); String ossPath = OssUtils.upload(file); System.out.println("ossUrl="+ossPath); file.delete(); return ossPath; } catch (Exception e) { throw new RuntimeException("上传失败"); } } private File download(String imageUrl) throws Exception { System.out.println("downloadImageUrl="+imageUrl); String suffix = imageUrl.substring(imageUrl.lastIndexOf(".") + 1); if(StringUtils.isNotBlank(suffix)&&suffix.length()>4){ suffix="jepg"; } File tempFile = File.createTempFile("img", "." + suffix); tempFile.deleteOnExit(); URL url = new URL(imageUrl); URLConnection con = url.openConnection(); con.setConnectTimeout(5 * 1000); try (InputStream is = con.getInputStream()) { byte[] bs = new byte[1024]; int len; try (OutputStream os = new FileOutputStream(tempFile)) { while ((len = is.read(bs)) != -1) { os.write(bs, 0, len); } } }catch (Exception e){ throw new RuntimeException("下载失败"); } return tempFile; }
controller 层代码
@ResponseBody @RequestMapping("/upload") public Object upload(String url){ System.out.println("url="+url); String s = userFileService.uploadImage(url); return s; }
-
如何更新线上的 Java 服务器代码
2020-04-01 15:52:11(1)当线上服务器出现问题时,有些时候现有的手段不足以发现问题所在,可能需要追加打印日志或者增加一些调试代码,如果我们去改代码重新部署,会破坏问题现场,可以通过热部署的手段来增加调试代码 (2)线上出现...一、前言
1、热更新代码的场景
(1)当线上服务器出现问题时,有些时候现有的手段不足以发现问题所在,可能需要追加打印日志或者增加一些调试代码,如果我们去改代码重新部署,会破坏问题现场,可以通过热部署的手段来增加调试代码
(2)线上出现紧急bug,通过Review代码找到问题,修改好后打包部署的流程可能比较久,可以通过热部署代码及时解决问题
二、Arthas的使用
使用阿里巴巴开源的Java诊断工具---Arthas,他可以附着在我们的Java服务器进程上面,查看服务器状态,jvm状态等各种参数指标,还可以进行热更新
1、下载启动Arthas
get https://alibaba.github.io/arthas/arthas-boot.jar
java -jar arthas-boot.jar
2、启动后会显示当前机器上面所有的java进程,选择我们需要监控/修改的进程,输入序号回车
3、一些常用命令,如果线上出现问题,可以通过以下命令查看各项指标是否有异常
dashboard——当前系统的实时数据面板
thread——查看当前 JVM 的线程堆栈信息
jvm——查看当前 JVM 的信息
sysprop——查看和修改JVM的系统属性
sysenv——查看JVM的环境变量
getstatic——查看类的静态属性
(1)打印前五名最消耗CPU的线程,可以及时找到CPU过高的代码位置
thread -n 5
(2)查看某个函数的调用堆栈
stack <类全包名> <函数名>
(3)查看某个函数的哪个子调用最慢,耗时最久的调用会标红显示,可以方便找出某个功能中最耗时的操作
trace <类全包名> <函数名>
(4)监控某个函数的调用统计数据,包括总调用次数,平均运行时间,成功率等信息
monitor <类全包名> <函数名>
4、输入exit可以退出当前的连接,但是附着在服务器进程上的Arthas依然在运行,完全退出可以输入shutdown
三、热更新
1、首先找到我们需要更新代码的全包名,通过jad命令将线上正在运行的代码反编译出来
jad --source-only <全包名> > <导出目录+文件名>
2、拿到java代码后,我们根据需求来修改代码,需要注意的是这里热更新代码的实际原理是调用Java基础类java.lang.instrument.Instrumentation的redefineClasses方法,他可以通过修改字节码来替换已有的class文件,其中有诸多的限制:
(1)比如不能增加或删除field/method
(2)没有退出的函数不能生效,比如一个函数体内是一个where(true)循环,永远不会结束,那么我们修改的代码也永远不会生效
我们可以在函数中增加一些代码,比如增加日志打印等
3、修改好代码后,我们要找到这个这个类对应的类加载器,再去加载这个class,执行如下命令会返回类加载器的对象地址
sc -d <全包名> | grep classLoaderHash
4、通过内存编译将Java文件编译成Class文件
mc -c <类加载器的对象地址> <Java文件所在目录+文件名>
5、最后,我们通过命令将class文件进行热更新
redefine <Class文件所在目录+文件名>
6、更新完毕不出意外会立即生效,这时候就可以去验证代码是否生效了
-
Java RTSP服务器端 代码
2015-04-19 15:44:59 -
Java游戏服务器代码热更新
2017-04-25 09:09:34游戏服务器的bug基本上只需要方法级别的更新就可以了,因为很多重大的bug基本在测试阶段被修复了,少量偶线的bug出现之后有些时候仅仅只需要改动一行代码却有时不得不需要重启所有应用程序,代价都似乎有点大。... -
在阿里云服务器上部署Java代码
2020-03-16 16:08:19把Java代码部署到阿里云服务器上一、工具准备及环境搭建二、将代码部署到服务器 需要使用苹果手机测试,奈何被“封”在家中,没有苹果真机可用,只得把代码部署到阿里云服务器,借用同学的手机。 一、工具准备及... -
Win10搭建FTP服务器+java代码实现文件上传至FTP服务器
2019-09-07 08:54:02Win10搭建ftp服务器 打开控制面板 -> 程序和功能,点击启用或关闭Windows功能,勾选红色方框内的选项 控制面板 -> 管理工具,如下打开IIS管理器 先在本地磁盘中创建一个目录用来存放FTP站点的内容,如 E:\... -
使用七牛云做图片服务器(Java代码)
2018-12-30 21:03:58这里申请的是测试域名,所以只有...做好了这些准备,那么就可以开始写代码了。 我这里使用的是SpringBoot,这样可以省去很多配置,在这个项目中,几乎是零配置。 图片上传,这里需要两个jar包 &lt;depend... -
使用JAVA代码实现文件上传到阿里云服务器
2020-01-06 19:46:05Java 项目开发中阿里云 oss上传本地到服务器,这篇博客给出了完整的代码实现。 -
java轻量级后端应用服务器从零开始一步步搭建到上线运行(二) 服务器代码 打包jar上传云服务器,脚本启动
2019-03-11 18:26:21java轻量级后端应用服务器从零开始一步步搭建到上线运行(二) 服务器代码 打包jar上传云服务器,脚本启动准备一, bat脚本批处理 打包服务器代码 jar二,云服务器运行java程序环境搭建三,上传本地文件到云服务器四... -
服务器怎样执行一段java代码
2016-07-16 07:25:44怎样从安卓客户端发出一个命令到服务器,然后服务器端收到命令后执行一段java代码,比如计算1+1,然后返回结果到安卓客户端?请问服务器端需要用什么软件和方法? -
java https通讯,服务器代码与客户端代码,单向验证,ssl
2018-06-29 10:35:05服务端:package client....import java.io.DataInputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.ObjectOutputStream; import ja... -
使用Netbeans远程调试服务器java代码
2015-03-02 17:03:34首先,JAVA自身支持调试功能,并提供了一个简单的调试工具--JDB,类似于功能强大的GDB,JDB也是一个字符界面的调试环境,并支持设置断点,支持线程线级的调试。 编写Java程序: [java] view plaincopyprint? ... -
Java web 服务器连接MySQL数据库代码
2020-03-16 17:23:42本文内容分为两部分,分别是java web连接MySQL数据库,java web对数据库进行基本数据操作。附加代码。 -
Java 文件分块上传服务器端源代码
2013-03-07 16:27:36如果读者还想了解文件的“分块”下载相关内容可以去参考博客《Java 服务器端支持断点续传的源代码【支持快车、迅雷】》。 本文侧重介绍服务器端,客户端端请参考本篇博客的姊妹篇《Java 文件分块上传客户端源代码... -
Sftp实现服务器之间文件传输java代码实现
2017-12-29 15:44:12Sftp实现服务器之间文件传输java代码实现 1.定义一个sftp工具类 import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.util.... -
android上传文件,java服务器接收 客户端与服务器端两端上传代码
2014-02-06 23:18:24android手机客户端上传文件,java servlet服务器端接收并保存到服务器。 客户端和服务器端代码已完整提供,如无法使用,请联系 -
IDEA如何远程调试服务器上的java代码,详细点
2017-12-05 10:57:02IDEA如何远程调试服务器上的java代码,服务器是tomcat,idea中如何配置(最好有截图),tomcat如何配置,求解答,谢谢! -
java代码获取服务器的地址
2017-11-25 11:49:51很实用的代码:HttpServletRequest httpRequest=(HttpServletRequest)request; String strBackUrl = "http://" + request.getServerName() //服务器地址 + ":" + request.getServe -
七牛云服务器获取Token代码【java】
2018-10-07 17:47:33简单说明:本来服务器只需要返回一个 token 就好了, 但是我这里多返回了一个 UUID 的字符串。我是把它当作文件的名称,防止重复,不想用,也可以不用。 主要代码(下面三个 空格 ,不用说应该也知道填什么吧)... -
servlet 接收 base64编码图片上传到服务器 java 代码
2019-04-09 09:02:40java.util.Base64.getEncoder().encodeToString("进制)//编码 java.util.Base64.getDecoder().decode(字符串内容)//解码 import java.util.Base64; import java.util.Base64.Decoder; 需要导入这两个类 public... -
Apache FTPServer Java代码搭建FTP服务器
2017-09-30 11:09:19官网地址:http://mina.apache.org/ftpserver-project/使用Java代码搭建FTP服务器,步骤如下:第一步:导入maven依赖<dependencies> <dependency> <groupId>org.apache.ftpser -
Java代码获取NTP服务器时间
2018-11-08 18:42:41Java代码段: public static void main(String[] args) throws IOException { try { NTPUDPClient timeClient = new NTPUDPClient(); String timeServerUrl = "202.120.2.101"; ... -
gb28181简单实现sip信令服务器(java版基于springboot):三、sip摄像头注册(代码实现)
2020-04-13 14:38:05gb28181简单实现sip信令服务器(java版基于springboot):三、sip摄像头注册(代码实现) -
兼容https和http协议的java代理服务器代码
2015-10-18 23:42:03* 将客户端发送过来的数据转发给请求的服务器端,并将服务器返回的数据转发给客户端 * */ public class ProxyTask implements Runnable { private Socket socketIn; private Socket socketOut; private long...