jruby

Error Deploying Java WAR File: SEVERE: Exception fixing docBase for context

孤者浪人 提交于 2021-02-07 12:15:53
问题 I have already resolved this one but it may help someone out there who stumbles across this problem. Stackoverflow has saved me countless hours on seemingly obscure and mysterious IT issues in the past. Here is the error I was getting when deploying a WAR file to Tomcat on Windows. The WAR file was built on a Mac using JRuby & Warbler. SEVERE: Exception fixing docBase for context [/XYZ] java.io.IOException: The filename, directory name, or volume label syntax is incorrect According to others

Error Deploying Java WAR File: SEVERE: Exception fixing docBase for context

可紊 提交于 2021-02-07 12:14:30
问题 I have already resolved this one but it may help someone out there who stumbles across this problem. Stackoverflow has saved me countless hours on seemingly obscure and mysterious IT issues in the past. Here is the error I was getting when deploying a WAR file to Tomcat on Windows. The WAR file was built on a Mac using JRuby & Warbler. SEVERE: Exception fixing docBase for context [/XYZ] java.io.IOException: The filename, directory name, or volume label syntax is incorrect According to others

Writing to a file from multiple threads

邮差的信 提交于 2020-12-13 03:09:50
问题 I am trying to write out to a text file using multiple threads, however the code below gives me an exception - IOError: closed stream threads = [] File.open("test.txt", "a") do |fp| 500.times do |time| threads << Thread.new do fp.puts("#{time}: 1") sleep(rand(100) / 100.0) fp.puts("#{time}: 2") end end end threads.each{ |thread| thread.join } 回答1: Move the join inside the file.open block: threads = [] File.open("test.txt", "a") do |fp| 500.times do |time| threads << Thread.new do fp.puts("#

Writing to a file from multiple threads

你离开我真会死。 提交于 2020-12-13 03:09:26
问题 I am trying to write out to a text file using multiple threads, however the code below gives me an exception - IOError: closed stream threads = [] File.open("test.txt", "a") do |fp| 500.times do |time| threads << Thread.new do fp.puts("#{time}: 1") sleep(rand(100) / 100.0) fp.puts("#{time}: 2") end end end threads.each{ |thread| thread.join } 回答1: Move the join inside the file.open block: threads = [] File.open("test.txt", "a") do |fp| 500.times do |time| threads << Thread.new do fp.puts("#

好好说说Java中的常量池之Class常量池

家住魔仙堡 提交于 2020-12-06 19:13:52
好好说说Java中的常量池之Class常量池 在Java中,常量池的概念想必很多人都听说过。这也是面试中比较常考的题目之一。在Java有关的面试题中,一般习惯通过String的有关问题来考察面试者对于常量池的知识的理解,几道简单的String面试题难倒了无数的开发者。所以说,常量池是Java体系中一个非常重要的概念。 谈到常量池,在Java体系中,共用三种常量池。分别是字符串常量池、Class常量池和运行时常量池。 本文是《好好说说Java中的常量池》系列的第一篇,先来介绍一下到底什么是Class常量池。 什么是Class文件 在Java代码的编译与反编译那些事儿中我们介绍过Java的编译和反编译的概念。我们知道,计算机只认识0和1,所以程序员写的代码都需要经过编译成0和1构成的二进制格式才能够让计算机运行。 我们在深入分析Java的编译原理中提到过,为了让Java语言具有良好的跨平台能力,Java独具匠心的提供了一种可以在所有平台上都能使用的一种中间代码——字节码(ByteCode)。 有了字节码,无论是哪种平台(如Windows、Linux等),只要安装了虚拟机,都可以直接运行字节码。 同样,有了字节码,也解除了Java虚拟机和Java语言之间的耦合。这话可能很多人不理解,Java虚拟机不就是运行Java语言的么?这种解耦指的是什么? 其实

秒懂java规则表达式框架Aviator2.3.0

烂漫一生 提交于 2020-08-17 06:08:32
背景 在我们的业务场景中有一个需求,我们有一个配置功能,该功能需要配置两个变量之间比较大小。使用tab比较难表达,所以就提出了,可以让用户写比较简单的函数进行配置。或者选tab进行选择(前段直接将对应的tab字符串拼接来给后端执行)。 或者这么说吧,可以通过字符串的表达的意思,进行执行这个字符串的索要表达的逻辑,且这个逻辑和这个字符串可以自定义。 Aviator 简介 Aviator是一个高性能、轻量级的java语言实现的表达式求值引擎,主要用于各种表达式的动态求值。现在已经有很多开源可用的java表达式求值引擎,为什么还需要Avaitor呢? Aviator的设计目标是 轻量级 和*高性能 ,相比于Groovy、JRuby的笨重,Aviator非常小,加上依赖包也才450K,不算依赖包的话只有70K;当然,Aviator的语法是受限的,它不是一门完整的语言,而只是语言的一小部分集合。 其次,Aviator的实现思路与其他轻量级的求值器很不相同,其他求值器一般都是通过解释的方式运行,而Aviator则是直接将表达式*编译成Java字节码,交给JVM去执行。简单来说,Aviator的定位是介于Groovy这样的重量级脚本语言和IKExpression这样的轻量级表达式引擎之间。 内部原理 任何语言都是通过一步一步的抽象,从硬件原理再到我们人类可以认识的语言。

日常记录——JVM—JVM简介、class文件解析

99封情书 提交于 2020-08-16 00:05:52
一、JVM简介 JVM :Java Virtual MAchine-Java虚拟机,可以将class文件解释为各种平台可执行的指令行,java中一个类在运行时,首先将java文件编译(javac)为class文件,然后jvm将class文件解释并执行。 JVM可分为三部分:类加载器(ClassLoader)系统、执行引擎、运行时数据区。 类加载器系统 :负责加载程序中的类和接口。 执行引擎 :解释执行+即时编译(JIT),开始对所有的代码都采取解释执行的方式,经常调用的热点方法编译为本地代码(热点代码频率设置-XX:CompileThreshould = 值(默认10000)),默认是解释执行+即时编译(-Xmixed)模式,可设置为纯解释(-Xint)或者纯编译(-Xcomp)模式,纯解释加载快,执行慢,纯编译加载慢,执行快。 运行时数据区 :程序计数器、本地方法栈、虚拟机栈、堆、方法区。 1.程序计数器:指向当前线程所执行的字节码的行号,线程私有。 2.本地方法栈:存储本地方法调用的状态,Native方法,线程私有。 3.虚拟机栈:存储局部变量表,操作数栈,动态链接,方法出口等信息,线程私有。 4.堆:虚拟机启动时创建,存放对象实例和数组,GC工作区域,线程共享。 5.方法区:存储类的信息,如常量(final)、静态变量(static)、JIT(即时编译器)编译后的代码

Java中你必须知道的基础知识点

两盒软妹~` 提交于 2020-08-14 03:25:53
本篇博客主要记录Java中面向对象的概念知识和一些基础Java类的使用。属于自己平时学习过程中知识点的“拼凑”,方便自己回顾总结。 1. 什么是面向对象 面向对象是一种优秀的软件设计思想,是相对于 面向过程、面向切面 等设计思想的一种软件设计理念。它的核心思想是运用更加贴近人类思维的方式去设计软件,将软件中的各个组件抽象成相应的类,再将这些类组装成我们所需的软件系统。这里举个例子,假如用面向对象的方式设计一个电脑,我们会设计CPU类、硬盘类、显示器类、内存类等等,然后将这些类组合在一起设计成Computer类。 面向过程的思想在解决问题时会将问题分解成一个个小的函数,然后按照某种顺序去执行这些方法,当这些方法执行完毕,问题也就解决了。 2. 三大基本特征和五项基本原则 面向对象的三个基本特征是: 封装、继承和多态 。正是基于这些特征,面向对象的开发语言才能拥有更好的可重用性、扩展性和维护性。 封装:将对象的实现细节隐藏起来,然后通过一些公共的方法向外部提供该对象的功能; 继承:继承是软件复用的一种重要手段,子类继承父类之后将直接获得父类的属性和方法; 多态:对象可以赋给父类对象和接口,但是运行时依然表现出子类或实现类的特征。 面向对象的 五大原则 如下: 单一职责原则(SRP):一个类专注于实现一个功能; 开闭原则(OCP):对象或实体应该对扩展开放,对修改封闭; 里氏替换原则

程序员的健康问题终于有救了,有个资深程序员写了本《程序员健康指南》!

时光怂恿深爱的人放手 提交于 2020-08-14 00:23:23
​ 最近黄小斜在网上为小伙伴们找一些关于程序员健康的书籍,没想到居然还真被我找到了一本,看来外国程序员对于健康的关心程度不亚于国人。 这本书是为程序员量身制作的健康指南,针对头痛、眼部疲劳、背部疼痛和手腕疼痛等常见的问题,简要介绍了其成因、测试方法,并列出了每天的行动计划,从运动、饮食等方面给出详细指导,帮助程序员在不改变工作方式的情况下轻松拥有健康。 本书适合程序员、长期伏案工作的其他人群以及所有关心健康的人士阅读。 ​ 作者简介 Joe Kutner 运动员和健身教练出身的资深程序员,住在美国的火箭城亨茨维尔。Joe从事软件开发十余年,专业特长有Ruby、Java以及iOS等。他曾服务于IBM等国际知名公司,也曾在创业公司打拼,现在是一位Ruby独立开发者,不仅为各种规模的公司构建Ruby和JRuby的应用,而且还向很多开源项目贡献代码,其中包括TorqueBox和Warbler。 不知道从什么时候起,程序员已经逆袭成了高富帅的代名词。 说程序员是屌丝职业?地位低? 比尔盖茨,扎克伯格,程序员;马化腾、李彦宏、张小龙,程序员!这是一个程序员能改变世界的时代! 说程序员是码农?活多钱少? 在工作3-5年后,90%以上的程序员达到了月薪1万+的水平,超过1/6的群体甚至年薪达到了30-50万的水平。羡慕不羡慕? ​ (数据来源:程序员客栈/稀土掘金) 不过多劳多得

程序员的健康问题终于有救了,有个资深程序员写了本《程序员健康指南》!

北城以北 提交于 2020-07-26 23:53:56
​ 最近黄小斜在网上为小伙伴们找一些关于程序员健康的书籍,没想到居然还真被我找到了一本,看来外国程序员对于健康的关心程度不亚于国人。 这本书是为程序员量身制作的健康指南,针对头痛、眼部疲劳、背部疼痛和手腕疼痛等常见的问题,简要介绍了其成因、测试方法,并列出了每天的行动计划,从运动、饮食等方面给出详细指导,帮助程序员在不改变工作方式的情况下轻松拥有健康。 本书适合程序员、长期伏案工作的其他人群以及所有关心健康的人士阅读。 ​ 作者简介 Joe Kutner 运动员和健身教练出身的资深程序员,住在美国的火箭城亨茨维尔。Joe从事软件开发十余年,专业特长有Ruby、Java以及iOS等。他曾服务于IBM等国际知名公司,也曾在创业公司打拼,现在是一位Ruby独立开发者,不仅为各种规模的公司构建Ruby和JRuby的应用,而且还向很多开源项目贡献代码,其中包括TorqueBox和Warbler。 不知道从什么时候起,程序员已经逆袭成了高富帅的代名词。 说程序员是屌丝职业?地位低? 比尔盖茨,扎克伯格,程序员;马化腾、李彦宏、张小龙,程序员!这是一个程序员能改变世界的时代! 说程序员是码农?活多钱少? 在工作3-5年后,90%以上的程序员达到了月薪1万+的水平,超过1/6的群体甚至年薪达到了30-50万的水平。羡慕不羡慕? ​ (数据来源:程序员客栈/稀土掘金) 不过多劳多得