标签‘java’

在 Spring(Spring Boot) 中应用 Kotlin

Kotlin 已悄然成为 Spring 继支持 Groovy 后的第二个 JVM 语言。持续关注 Java 的同时,也顺手在 Spring 上体验了一把。

本例简单记录 Kotlin 的初始化以及配置文件的输出,建立在熟悉 Spring、Spring Boot 及 Kotlin 的基础上,如对 Spring 框架或 Kotlin 语言比较陌生,建议先行了解。

1、创建项目

springboot-1
查看更多...

Java命令行信息国际化输出造成的困扰及解决

最近使用一个第三方开源程序,maven的项目,启动前会跑一遍测试用例,以保障程序正确性,可在本地启动的时候发现一直通不过,重复clean install多次无果。

本地-X打开maven日志,发现某个用例是根据java底层抛出的错误信息做比较,但由于是国外框架,用例都采用英文,而本地由于国际化原因,错误信息是中文,故此类直接拿java底层错误信息做对比的用例都会失败。

解决方法 查看更多...

Spring Boot热部署配置方案

最近朋友吐槽新公司使用Spring boot,不会热更新,改个js都会重启,尝试及搜索后,总结下有三种方案:

1、使用springloaded

配置pom.xml文件新增如下:

maven

<!-- spring boot热部署 -->
<!-- https://mvnrepository.com/artifact/org.springframework/springloaded -->
<dependency>
    <groupid>org.springframework</groupid>
    <artifactid>springloaded</artifactid>
    <version>1.2.8.RELEASE</version>
</dependency>

gradle

// https://mvnrepository.com/artifact/org.springframework/springloaded
compile group: 'org.springframework', name: 'springloaded', version: '1.2.8.RELEASE'

查看更多...

Kotlin Android扩展使用及流行框架支持

接上篇,整理一下Kotlin在Android平台上应用的一些实例及方法。

Kotlin Android Extensions

Kotlin针对Android提供了Kotlin Android Extensions,可以很大程度上增强Android的开发体验。
背景
相信每个Android开发人员都很清楚findViewById()函数,并且备受摧残,毫无疑问,大量的findViewById()会造成代码阅读上的干扰和错误定位的难度,虽然有类似Butterknife之类的库可以通过注解实现绑定,但在实际使用过程中还是要为每个变量增加注解,倘若出现大量注解,维护难度应该不亚于直接编码,而其优点无非是代码看起来简洁了,但整体看似乎并不是特别优雅,且需要增加额外的运行库。

现在,Kotlin Android Extensions插件给我们提供了更优雅的方法,且不需要额外引入运行库,比如,我们的代码可以像下面这样写: 查看更多...

IDEA系列64bit启动时Failed to create JVM…问题解决

大概2015年的时候,写过一篇名为《合理使用Intellij Idea,提高开发效率,避免内存溢出》的博文,简单介绍了自己在使用idea过程中解决操作界面卡顿等性能问题的方法。意外的是,近一年来百度来路每天都有二三十个搜idea内存优化找到上面提到的文章,可能国内最近使用idea的用户越来越多了吧。

个人猜测,可能是因为当时版本的idea系列安装时并不会提示用户该软件有64bit的入口,而且安装后的快捷方式默认都是32bit,所以大部分用户都是直接使用32bit做开发,而且很多用户怨声载道。而近一年的版本已经做了改进,如果系统是64bit,默认有复选框提示生成32bit、64bit的快捷方式,这样一来,稍微有点计算机基础的用户,可能都会选择使用64bit作为入口了。

随之而来的,可能是对于内存的调优,但稍有不慎,可能出现Failed to create JVM:error code -1。

网上大部分介绍是说没有配置JAVA_HOME,当然如果是非idea用户,真有可能忽略了此步骤,但如果本身就是Java开发人员,基本可以忽略这个可能性(当然是在自己确认无误的情况下)。接下来遇到这样的问题,就不能看错误提示表象了,可能是改了配置,配置参数不对或者内存不够,因为初始化最大内存750,作为开发人员,基本也可以忽略这个了。所以,只有一种情况,配置不对。

最新版的配置参数有所缩减,移除了-XX:MaxPermSize等配置项,基本如下(64bit) 查看更多...

工作五年第一次,我失业了

公司也算是一个神奇的存在了,每次都悄无声息,第二天突然说要裁员。

我所经历的第一次是去年11月初,加班到晚上11点多发布版本后,第二天一早,研发团队砍掉一半。倒是把我留下了,当时心灰意冷,已不想再待下去,但因为一时没找到合适的坑,还是继续留下来,做着时有时无的新需求,半年后的今天,我们都要走人了,研发部剩下两个兄弟维护,其余的都撤了。

至此,我失业了!

谨以此文警示那些想去创业公司、已经去了创业公司的朋友们,互联网泡沫已破灭,且行且珍惜!

顺带提一句,有需要人的可以联系我哦,坐标深圳,五年经验,三年Java前后端,两年前端,联系方式见关于页。

Android优化之SparseArray替代HashMap

Java开发过程中,一般免不了使用HashMap来存储键值对以方便各种需求的实现,但是对于Android这种对内存非常敏感的移动平台,很多时候使用一些Java的API并不能达到更好的性能,相反反而更消耗内存,所以针对Android这种移动平台,也推出了更符合自己的API,比如SparseArray、ArrayMap用来代替HashMap在有些情况下能带来更好的性能提升。

对于SparseArray,比HashMap更省内存,在某些条件下性能更好,主要是因为它避免了对key的自动装箱(int转为Integer类型等),它内部则是通过两个数组来进行数据存储的,一个存储key,另外一个存储value,为了优化性能,它内部对数据还采取了压缩的方式来表示稀疏数组的数据,同时,还实现了SparseIntArray、SparseLongArray、SparseBooleanArray。 查看更多...

Java方法究竟是值传递还是引用传递?

一直以来,Java地址引用概念的影响,认为Java传参分为值传递和引用传递,最近因为追究JavaScript的传递方式,遂翻出Java相关资料看了一下,发现原来这么久一直理解错了。Java中只有按值传递,没有按引用传递!

这里同样涉及到堆与栈的概念,至于区别,这里就不再赘述了,和JavaScript的说法类似,可以参考前面的《JavaScript函数究竟是值传递还是引用传递?》。

对于这个问题,网上说法各异,《Core Java》的作者,以及JAVA的创造者James Gosling都认为当一个对象或引用类型变量被当作参数传递时,也是值传递,这个值就是对象的引用,因此JAVA中只有值传递,没有引用传递。还有一种说法是引用可以看作是对象的别名,当对象被当作参数传递时,传递的是对象的引用,因此是引用传递。当然,也有《Thinking in Java》作者Bruce Eckel站在了中立的立场上。 查看更多...

Jersey2 模拟登陆网站及登陆后301重定向识别

周末群里有人希望帮他搞个程序采集某个网站数据,虽然说没什么技术难点又不缺那点钱,但是好奇心还是比较重,没事看了看,最基本的基于SESSION的认证,POST个用户名密码即可,用java写的话我通常采用HttpClient,很强大,很通用,但是最近时不时有看过Jersey2的一些东西,貌似和我之前熟知的1.x差异挺大,就刚好拿来试试(不是接单帮搞数据,单纯的玩技术,采集别人数据的事我可不做)。

实践下来,发现Jersey2的API写起来更清爽了,因为是用来采集,这里只用了Jersey-client相关功能,期间遇到一些小问题,就是登陆成功后目标网站是301重定向到新页面的,而Jersey2的API调用后还保留在原始页面,最终导致SESSION无效,不能进行下一步操作,Stackoverflow上搜了下,最终解决了,很简单,如下 查看更多...

初识Kotlin

Kotlin 是一个基于 JVM 的新的编程语言,由 JetBrains 开发。作为目前广受欢迎的 Java IDE IntelliJ 的提供商,在 Apache 许可下已经开源其Kotlin 编程语言。

Kotlin设计目标是

1、创建一种兼容Java的语言

2、让它比Java更安全,能够静态检测常见的陷阱。如:引用空指针

3、让它比Java更简洁,通过支持variable type inference,higher-order functions (closures),extension functions,mixins and first-class delegation等实现。

4、让它比最成熟的竞争对手Scala语言更加简单。 查看更多...