2018-09-24 Java源码英翻中网页演示
在线演示地址: 源代码翻译
两部分如下.
独立的Java代码翻译库
续前文代码翻译尝试-使用Roaster解析和生成Java源码
源码库: program-in-chinese/java_code_translator
功能
在前文基础上: 重构; 完善测试(基本涵盖主要接口); 小改进 - 支持数组类型的属性和方法返回类型的翻译, 如"String[]" -> "字符串[]"
源码节选
翻译Java代码.java, 按类/Bean属性/方法三部分翻译命名. 仍不处理方法内容.
public static String 翻译源码结构(String 源码) {
JavaClassSource 类结构;
try {
类结构 = 取类结构(源码);
} catch (ParserException e) {
return e.getLocalizedMessage();
}
翻译类(类结构);
翻译属性(类结构);
翻译方法(类结构);
return 类结构.toUnformattedString();
}
部署
暂未发布到Maven, 在部署时, 运行'mvn install'安装jar包到本地(服务器同样).
Spring Boot实现源码服务
源码库: program-in-chinese/code_translator_service, maven依赖上面的库java_code_translator
前端部分暂时合在同一库"前端"文件夹: program-in-chinese/code_translator_service
功能
- 前端方面
- 实现了最简单的前端, 左边输入源码, 右边显示翻译结果
- 支持语法高亮: 基于CodeMirror, 包括行号, 关键词高亮, 类名等等. 它支持100多编程语言, 适于今后添加其他语言支持.
源码节选
前端-Java模式语法高亮:
var 输入 = CodeMirror.fromTextArea(document.getElementById("英文源码输入"), {
mode : "text/x-java",
lineNumbers : true,
matchBrackets : true
});
输入.setSize(500, 500);
前端-访问后台
$(document).ready(function() {
$("#翻译按钮").click(function() {
输出.setValue("处理中...");
$.post("http://74.91.17.250:8091/", {
code : 输入.getValue()
}, function(结果) {
输出.setValue(结果.内容);
}, "json");
});
});
后台部分-翻译控制器.java
@RestController
public class 翻译控制器 {
private static final Logger 笔录 = LoggerFactory.getLogger(翻译控制器.class);
@CrossOrigin(origins = "http://74.91.17.250:9000")
@RequestMapping(value = "/", method = RequestMethod.POST)
@ResponseBody
public 翻译 翻译(@RequestParam(name = "code", required = false, defaultValue = "") String 英文源码) {
笔录.info("输入: " + 英文源码);
return new 翻译(翻译Java代码.翻译源码结构(英文源码));
}
}
部署
后台部分
打包: mvn package
运行: nohup java -jar target/code_translator_service-0.0.1-SNAPSHOT.jar --server.port=8091 &
前端部分
服务器: 将'前端'的public部分拷贝到tomcat(设置port为9000).
本地调试: 运行'spring run app.groovy'即在8080启动前端服务; 需修改post地址为"http://localhost:8091/", 以正确配置CORS.
2018-09-24 Java源码英翻中网页演示的更多相关文章
- 2018-10-08 Java源码英翻中进展-内测上线
创建了一个子域名: http://translate.codeinchinese.com/ 欢迎试用, 如有建议/发现问题欢迎在此拍砖: program-in-chinese/code_transla ...
- 2018-09-15 Java源码英翻中库以及服务原型
服务很简单, 只为演示这个库, 源码在: program-in-chinese/code_translator_service. 在Postman测试效果: 演示服务地址: 74.91.17.250: ...
- java源码——统计字符串中字符出现的次数
对于任意输入的一段字符串,读取并且计算其中所有字符出现的次数. 使用HashMap存储字符和其对应的出现的次数,输出时,对HashMap进行遍历. 难点在于对HashMap的遍历,第一次使用,也是学习 ...
- java源码研究--List中的set和add方法区别
在处理一道题目是,发现他们使用了List 中的set 方法,这个方法我平时很少用到,今天来研究一下,set和add的区别 add(int index,Object obj)方法与set(int ind ...
- 常见算法合集[java源码+持续更新中...]
一.引子 本文搜集从各种资源上搜集高频面试算法,慢慢填充...每个算法都亲测可运行,原理有注释.Talk is cheap,show me the code! 走你~ 二.常见算法 2.1 判断单向链 ...
- java源码——0~9十个数字不重复地使用使加法表达式成立
这个问题是在我写个的几个博客里较为复杂的一个.首先,先看看整个问题的表述. 星号表示0~9的一个数字,而且不允许重复,使得下面的加法表达式成立.输出所有结果. ※ ※ ※ ※ ※ + 2 ...
- java源码——文件读写和单词统计
本文要解决的问题:"键盘输入一段英语语句,将这段话写入content.txt中,然后输出这段话,并且统计语句中英文单词的数目以及各个单词出现的次数." 分析问题知,核心是文件读写和 ...
- 24点扑克牌游戏——(含java源码)(GUI实现)
给出四个数字,要求,在其间添加运算符和括号,使得计算结果等于24. 括号的放置即为决定哪几个数先进行计算.所以,我们先确定首先进行计算的两个相邻的数,计算完成后,就相当于剩下三个数字,仍需要在它们之间 ...
- Android反编译(一)之反编译JAVA源码
Android反编译(一) 之反编译JAVA源码 [目录] 1.工具 2.反编译步骤 3.实例 4.装X技巧 1.工具 1).dex反编译JAR工具 dex2jar http://code.go ...
随机推荐
- 解决微信小程序使用wxcharts在屏幕不固定问题-开发工具里也显示好了布局,为啥到真机就是乱的
解决微信小程序使用wxcharts在屏幕不固定问题-开发工具里也显示好了布局,为啥到真机就是乱的 .chart{ width: 100%; text-align: center; } .canvas{ ...
- requests 处理异常错误 requests.exceptions.ConnectionError HTTPSConnectionPool [Errno 10060]
使用python requests模块调用vmallarg.vmall.com接口API时报如下错误: requests.exceptions.ConnectionError: HTTPSConnec ...
- 引入CSS的三种方式
虽然入职已经大半年,并自诩前端工程师,但是我真的不会……(有一种我有罪我该死的感觉 从CSS 样式代码插入的形式来看基本可以分为以下3种:内联式.嵌入式和外部式三种. 1.内联式 内联式css样式表就 ...
- sql server 性能调优之 资源等待SOS_SCHEDULER_YIELD
一.概念 SOS_SCHEDULER_YIELD等待类型是一个任务自愿放弃当前的资源占用,让给其他任务使用. 这个等待类型与CPU有直接关系,与内存与也有间接关系,与CPU有关系是因为在sql s ...
- JVM学习(一)、垃圾收集器简介
一.垃圾收集算法 (1)标记-清除算法:最基础的收集算法“标记--清除”(Mark-sweep)算法,算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的 ...
- vue的router-link传参问题
一般来说,可以通过查询字符串的方式将参数传过去,方法如下: <router-link :to="{path:'/Detail', query:{ name: id }}"&g ...
- Java 容器 & 泛型:六、容器讲到为什么要使用泛型
Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket ArrayList是集合类中无处不在的,泛型也是,泛型对集合类尤其有用.但是为啥要使用泛型?理解好了这 ...
- HP-JavaUtil: xls 操作类
Written In The Font 谢谢,陈明.哈哈!共勉,努力搞定它. 路漫漫其修远兮,吾将上下而求索 Content ExportExcelAndSave( String[] header, ...
- [NewLife.XCode]扩展属性(替代多表关联Join提升性能)
NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netstandard,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示 ...
- solr查询特殊字符的处理
1. 使用solr的页面功能时,遇到语法错误 2. 确认原因 从lexical error分析时特殊字符的问题. 首先 solr查询有哪些特殊字符? 查找官方文档:http://lucene.apac ...