删除java的注释信息的源码

一次JPA联表查询,竟让我服务器无限循环崩溃?! 当Spring JPA联表查询遇上双向关联时,很多人第一次都会被“无限递归”坑惨。其实,只要懂得给实体加上@JsonBackReference或@JSONField(serialize = false),就能轻松化解。今天,小米带你从一个真实踩坑故事,彻底搞懂它们的用法与区别! 阅读详情

删除java的注释信息的源码
 
import java.util.regex.*;
import java.io.*;
import util9.*;
//某些java文件注释信息过多从而影响了可读性。利用此类可解决这个问题。
//使用方法略。
public class DelNoteInJavaFile {
  static BufferedReader br;
  static BufferedWriter bw;
  static String suffix=".noNote.java";
  public DelNoteInJavaFile()
  {
          String message="input file name:";
          String   ret=Read9.stringFromControl(message);
          if(inJava(new File(ret)))System.out.println("successed");
          else  System.out.println("failed");
  }
  public DelNoteInJavaFile(String f)
  {
          if(inJava(new File(f)))System.out.println("successed");
          else  System.out.println("failed");
  }
  public DelNoteInJavaFile(File f)
  {
          if(inJava(f)) System.out.println("successed");
          else  System.out.println("failed");
  }
  public static boolean check(File f)
  {
    if (!f.exists()) {
      System.err.println("wrong1.file not exists");
      return false;
    }
    if (!f.isFile()) {
      System.err.println("wrong2.abstract file is not a file");
      return false;
    }
    return true;
  }
  public static boolean inJava(File f) {
    if(check(f)==false ) return false ;
    File ff = new File(f.getName() + suffix);
    if (ff.exists()) {
      System.out.println("wrong3");
      return false;
    }
    String s, ss;
    try {
      ff.createNewFile();
      br = new BufferedReader(new FileReader(f));
      bw = new BufferedWriter(new FileWriter(ff));
      //the slash is char '/',the star is char '*'.
      Pattern slash_star_start = Pattern.compile("///*.*");//just like:/*....
      Pattern star_slash = Pattern.compile("^.*//*/");
      Pattern slash_star_both = Pattern.compile("///*.*//*/");
      Pattern slash2 = Pattern.compile("
//s{0,}//");
      //      Pattern star = Pattern.compile("
//s{0,}//*");
      Matcher mat;
      int i = 0;
      boolean note = false;
      while ( (s = br.readLine()) != null) {
        //deal with such string:... /*...*/....
        if(s.trim().length()==0) continue;
        s = s.replaceAll(slash_star_both.pattern(), "");
        //deal with:....//....
        mat = slash2.matcher(s);
        if (mat.find()&¬e==false) {
                System.out.println("s1="+s);
          s = s.substring(0, mat.start());
          if (s.trim().length() == 0)continue;
          bw.write(s);
          bw.newLine();
          continue;
        }
        //deal with:...*/...
       mat = star_slash.matcher(s);
        if (mat.find()) {
          note = false;
          System.out.println("s2="+s);
          s = s.substring(mat.end());

          if (s.trim().length() == 0) {
            continue;
          }
        }
        if (note == true) {
          continue;
        }
        //deal with:..../*....
        mat = slash_star_start.matcher(s);
        if (mat.find()) {
          note = true;
          System.out.println("s=" + s);
          s = s.substring(0, mat.start());
          System.out.println("s1=" + s + ",mat.start()=" + mat.start());
          if (s.trim().length() == 0) {
            continue;
          }

        }
        bw.write(s);
        bw.newLine();
      }
      br.close();
      bw.close();
      /*
      if (f.renameTo(new File(ff.getName() + ".bak"))) {
        System.out.println("backup file is:" + ff.getName() + ".bak");
        if( ff.renameTo(f))
        System.out.println("output file is:"+f.getName());
        else {System.out.println("wrong53");return false;}
      }
      else {
        System.out.println("wrong55");
        return false;
      }
      */
    }
    catch (IOException e) {
      e.getMessage();
      return false;
    }
    return true;
  }

  public static boolean inJava(String s) {
    return inJava(new File(s));
  }
  public static void main(String a[])
  {if(a.length==0)new DelNote9();
   else new DelNoteInJavaFile(a[0]);
  }
}
 
 

深夜调Bug:那次我被@OneToMany坑到怀疑人生 在一次看似普通的订单开发中,我被一个@OneToMany注解坑得差点怀疑人生。循环依赖、栈溢出、无尽的JSON嵌套,让我熬了整整一夜。直到我真正理解@JoinColumn、@JsonBackReference、@JSONField背后的逻辑,才彻底破局。 阅读详情

相关推荐

递归回溯动态规划:从暴力搜索到优化算法的核心脉络

递归算法、回溯策略与动态规划是算法学习中的三大核心概念,它们并非彼此孤立,而是同一条问题求解链路上的不同层次:递归提供拆解问题的编码手段,回溯基于DFS构建暴力搜索框架,动态规划则通过状态定义与状态转移实现高效优化。理解从汉诺塔到01背包、从记忆化搜索到剪枝优化的演进,是掌握算法思维的关键。在实际工程与面试场景中,无论是处理全排列、N皇后这类枚举问题,还是求解最优装载、路径计数等最值问题,都需要先判断问题的重叠子结构与无后效性,再决定采用回溯穷举还是DP递推。掌握这条由暴力到优化的通用路线,不仅有助于刷题进

weixin_34268310的博客 258

删除Java源代码中的注释

//类似于有限状态机 import java.io.FileReader; import java.io.IOException; public class RemoveComment { //遍历字符串,记录闭合状态 public static String removeComment(String src){ StringBuffer sb = new StringBuffer()

Not The End 1061

签名安全规范:解决【请求对象json序列化时,时间字段被强制转换成时间戳的问题】| 签名计算(数组用[]表示,对象(字典)用{} 表示进行排序拼接。)

API接口协议中包含字段nonce_str,主要保证签名不可预测。我们推荐生成随机数算法如下:调用随机数函数生成,将得到的值转换为字符串。接口协议中包含字段nonce_str,主要保证签名不可预测。我们推荐生成随机数算法如下:调用随机数函数生成,将得到的值转换为字符串。尤其是涉及敏感词操作的接口:支付、密码、登陆、验证码等接口。允许的请求头字段: 添加sign。

专注于计算机研发知识和资讯分享 1174

删除Java代码中的所有注释

文章来源:http://blog.youkuaiyun.com/fullstack/article/details/22688777package tools;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.

Mr.Sun 9492

基于递归实现的JSON拆分工具类设计与实战

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用键值对(Key-Value Pair)和嵌套结构来表示数据。其基本结构包括:对象(Object):使用花括号{}包裹,键值对之间用冒号分隔,多个键值对之间用逗号分隔。数组(Array):使用方括号[]包裹,元素之间用逗号分隔。基本数据类型:包括字符串(String)、数值(Number)、布尔值(Boolean)、null 和对象或数组的嵌套。

weixin_35755823的博客 753

去除源程序注释

给定 C/C++源程序的源代码,要求去掉所有的注释代码并输出去除注释后的代码。已知 C/C++ 代码的注释有两种:单行注释和多行注释,前者稳以“//”引导的行;后者则是由“/*”和 “*/”包含的部分,可以在同一行内,也可以包括多行。

java源代码注释删除插件_删除java的注释信息的源码

删除java的注释信息的源码import java.util.regex.*;import java.io.*;import util9.*;//某些java文件注释信息过多从而影响了可读性。利用此类可解决这个问题。//使用方法略。public class DelNoteInJavaFile {static BufferedReader br;static BufferedWriter bw;st...

weixin_36307549的博客 141

Python自动化监控:实时捕捉LOF基金溢价套利机会并微信预警

本文详细介绍了如何使用Python构建一个自动化监控系统,实时捕捉LOF基金的溢价套利机会。通过AKShare获取基金数据,结合雪球API计算实时溢价率,并利用企业微信API实现微信推送预警,帮助投资者高效、自动地发现并抓住转瞬即逝的套利机会。

weixin_28327051的博客 524

去掉java源文件的注释

代码如下 基本上可以去除所有的注释了 package test; import java.io.*; public class test { /*编写一个能够整理“*.Java“源程序代码的程序, * 生成新源代码文件名为 “*2.java”, * 整理要求如下: * ①删除*.java 文件中的空行; * ②对注释行的处理: 删除“//”起始的整代码; ...

践踏记忆的博客 718

从零到一:Firefly-RK3399上的Ubuntu镜像构建与GPU加速实战

本文详细介绍了在Firefly-RK3399开发板上从零构建深度优化的Ubuntu系统镜像的全过程,包括交叉编译环境配置、内核定制、GPU加速环境部署(Mesa Panfrost驱动、OpenCL/Vulkan支持)以及深度学习推理优化(TFLite + LinuxNN)。通过实战案例展示了如何充分发挥Mali-T860 GPU的硬件潜力,提升边缘AI应用的性能和能效。

pz8901234的博客 1019

用AT7456E给监控摄像头加OSD?5步搞定时间水印和Logo叠加

本文详细解析了如何使用AT7456E视频字符叠加芯片为监控系统添加专业级OSD功能,涵盖硬件设计、字符库编程和系统集成等关键步骤。通过5步操作实现时间水印和Logo叠加,提升监控系统的可用性和专业性,特别适合安防和工业视觉应用。

sea99的博客 1012

fastjson遇到的无限递归的问题

        fastjson是用反射的,如果在实体类里存在getXxx()方法,生成的json字符串中就会存在一个key为xxx的值,而无需实体类中有xxx这个属性,如果getXxx()方法中调用了JSON.toJSONString(this),就会引起无限递归,最后虚拟机内存溢出,报java.lang.StackOverflowError。 ...

iteye_5495的博客 2208

长短期记忆网络(Long Short-Term Memory networks, LSTM)

如何简单的理解LSTM——其实没有那么复杂:

weixin_39910711的博客 2万+

Fastjson序列化原理

而getJson被简单当作了json属性的getter,所以在writer.write(object)中调用了getJson从而出现了递归。最后,在github的issue中也翻到了一个对应的问题,作者给出的答案就是换个名字。返回继续分析,在做了部分如注解别名之类的处理后,将分析得到的结果生成一个FieldInfo,并保存在fieldInfoMap中。排除自己的错误后,就将代码定位到了fastjson中,应该是fastjson中出了问题。在项目中使用了fastjson,然后出现了一个奇怪的bug。.....

qq_36996635的博客 3611

嵌入式系统实战:DroneCAN协议栈移植与避坑指南

本文详细介绍了在嵌入式系统中移植DroneCAN协议栈的完整流程与实战技巧。内容涵盖移植前的准备工作、内存管理优化、CRC校验实现、多帧数据处理及硬件平台适配等关键环节,并以STM32F4为例提供了具体的移植步骤和避坑指南,帮助开发者高效完成DroneCAN在嵌入式设备上的集成与应用。

solidity8miner的博客 547

【Unity】Unity 跨平台及编译过程

早期的Unity跨平台是基于MONO运行时的,又通过CLS实现了跨语言。其基本思路是将各个版本的语言统一编译成CIL语言,在不同平台运行时使用CLR进行解释。有点类似于Java的jdk和jvm。 CLS(Common Language System)通用语言规范:CLS是一种规范,类似于schema,当文件被指定遵守CLS规范后,在某语言中写出不符合通用规范的代码后将被警告或报错。 MONO是一个开源工程,其中包含C#编译器,CLR运行时,以及一组类库。该工程常见了一系列符合ECMA标准的.NET工具,MO

一个普普通通的游戏开发者 7237

java:fastjson,jackson自定义反序列化器设计暨jackson反序列化时出现StackOverflowError异常的原因分析

方法实现字段解析,在字段解析过程中自动识别snake-case的数据库字段名转为camel-case的JavaBean字段名(参见findProperty方法),并在最后调用setter方法赋值modified,initialized字段确保它们的值与原始输入值一致。字段的值是不确定的。取决于这两个字段被反序列化时的顺序,如果它们被在放在最后反序列化,那它们的值是正确的,否则它们的值与原始输入值肯定是不一致的。为基类,BeanDeserializer是Jackson默认的Java Bean反序列化实现。

10km的专栏 2360

双目摄像头全景解析:从几何光学到深度智能

双目视觉系统基于仿生学原理,通过水平排列的双摄像头模拟人眼视差机制实现三维感知。其核心是通过标定、校正、匹配等算法流程,将视差转换为深度信息,最终生成三维点云。该系统在自动驾驶、机器人导航、工业检测等领域有广泛应用,但面临弱纹理、重复图案等挑战。未来发展趋势包括与事件相机、深度学习等技术的融合,进一步提升精度和动态性能。

reset2021的博客 120

JSON关联属性转换异常

问题:FastJSON在转换对象过程中,该对象还有关联属性,该属性还是一个对象,就出现栈溢出异常,会报一下错误,解决办法:在该属性类的一边加上@JSONField(serialize=false);有时控制台不报任何错误,就在浏览器中检查,如图 Struts Problem Report Struts has detected an unhandled exception: ...

weixin_33816300的博客 452

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

深入解析 FastJSON:SerializerFeature.DisableCircularReferenceDetect [特殊字符]

当对象之间存在。

流楚丶格念的博客 1480

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Jackson序列化无限递归错误:Could not write JSON: Infinite recursion (StackOverflowError)

文章目录问题一、分析二、解决1.@JsonIgnore2.@JsonBackReference总结Jackson替换为fastjson排除Jackson依赖,增加fastjson依赖增加fastjson配置 问题 今天遇到个问题,返回个自定义的对象,Jsckson在对其序列化时抛了堆栈溢出。 Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processin

aaaassss602的博客 4628

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Java项目禁用fastjson迁移Jackson:反序列化漏洞治理与依赖安全

JSON序列化与反序列化是Java后端开发的基础技术,而反序列化安全性直接决定系统边界是否可靠。在Java生态中,组件默认配置的开放程度往往成为攻防博弈的关键,fastjson的autoType机制允许通过@type字段动态加载类,虽提升了多态处理便利性,却也导致攻击者利用危险类构造利用链,引发fastjson反序列化漏洞。相比之下,Jackson作为Spring Boot默认JSON库,默认关闭多态反序列化,安全基线与生态集成更优,技术价值体现在可控的攻击面和稳定的社区维护。在工程实践中,团队需通过依赖树

weixin_34178244的博客 417

Infinite recursion (StackOverflowError)解决方案@JsonBackReference

参考:http://blog.youkuaiyun.com/ludengji/article/details/11584281 http://my.oschina.net/u/943437/blog/145246 环境:springmvc+hibernate+json 在controller返回数据到统一json转换的时候,出现了json infinite recursion sta

马旭的专栏 5354

Fastjson和Jackson处理循环引用,谁更优雅?一份详细的对比与避坑指南

本文深度对比了Fastjson和Jackson在处理循环引用时的机制差异,分析了各自的优缺点及适用场景。Fastjson采用路径标记法生成`$ref`标识,而Jackson使用对象标识符机制。文章提供了详细的性能测试数据和架构选型指南,帮助开发者在JSON序列化中优雅处理循环引用问题。

weixin_42561476的博客 192

反序列化漏洞深度解析:从原理到防御的实战指南

序列化与反序列化是软件系统中实现对象持久化和网络传输的核心机制,其本质是将内存中的对象状态转换为可存储或传输的字节流,并在需要时重新构建为对象。这一过程在Java、Python、PHP等主流语言中均有广泛应用。然而,其原理决定了反序列化引擎必须执行字节流中指定的操作以重建对象,这构成了潜在的安全风险。当程序从外部可控的输入(如HTTP请求参数、Cookie、文件)中读取数据并进行反序列化时,攻击者可能通过精心构造的恶意字节流,在反序列化过程中触发非预期的代码执行路径,从而实现远程代码执行(RCE)、拒绝服务

weixin_30509393的博客 306
上一篇: java文件的缩进排版
下一篇: 取得指定月份的第一天与取得指定月份的最后一天
CodingMouse
博客等级 码龄19年 82粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值