最好的java反编译工具
最好的java反编译工具不是一款,而是三款。一个工具总有疏漏,三款互相参照,天下无敌。
JD-GUI这是老牌劲旅,口碑好。反编译一个war包,上千个class,眨眼之间。成熟稳重。缺点是变量识别上偶有问题,Iterator循环代码块的反编译上偶有问题。下载
javare没错,这是一个在线反编译网站。极其的准,JD-GUI的毛病他没有。缺点是中文乱码,不能批量逆向。访问
luyten这是一个后期之秀,纯java编写,开源代码。三个月前还在更新,能兼容更新版本的JAVA(测试1.7OK)。缺点是中文会被反编译成UNICODE格式。下载
JPA关键词
JPA相较Hibernate来说,比较优秀的一点就是实现了根据方法名的自动解析创建查询。今天看到团队的小伙伴无论查询复杂或简单还在吭哧吭哧的写@Query,于是决定把JPA的能自动解析的关键词扒出来。供大家参考。
简单示例public interface UserRepository extends JPARepository<User, Long> { List<User> findByEmailAddressAndLastname(String emailAddress, String lastname);}
以上就是一个简单的查询的示例。当继承了JPARepository接口之后,JPA就会尝试根据方法名去自动生成sql,上面的方法会被解析成
select u from User u where u.emailAddress = ?1 and u.lastname = ?2
JPARepository<User, Long> ,第一个参数是对应的实体类,第二个参数是这个实体类的主键的数据类型。根据需要修改。
所有关 ...
Spring MVC中上传文件大小超过限制的异常处理
今天团队里的一个小伙子在写代码的时候,遇到一个问题。他在做上传文件的表单时,限制最大上传文件的大小。但当用户上传的文件超过大小后,虽然后台有报异常,前台却没有错误提示。他拿着这个问题问到了我,我把解决问题的过程记录下来,做个分享。
总体思路服务端拦截异常,并直接返回值给前台。前台根据返回的值给用户做下一步处理。
主要代码
Spring Boot 配置文件
server.port=8888# 下面两个参数是设置上传文件大小multipart.maxFileSize=2MBmultipart.maxRequestSize=2MB# 下面两个参数是禁用spring的默认异常映射,比如将异常会自动映射到 /error下。spring.mvc.throw-exception-if-no-handler-found=truespring.resources.add-mappings=false
捕获文件超过设置大小的异常,并直接返回错误信息
@RestControllerAdvicepublic class RestExceptionHandler { @ExceptionH ...
设计模式演绎-模板方法模式
定义
Define the skeleton of an algorithm in an operation,deferring some steps to subclasses.Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithm’s structure.
定义一个操作中的算法的框架,而将一些步骤延迟到子类,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
通用类图模板方法模式是一个比较简单和常见的模式。其通用类图如下。
AbstractClass是抽象模板。在抽象模板中实现模板方法。而在具体的实现类中实现基本方法。
在模板方法中调用基本方法,实现算法逻辑。
通用代码/* 抽象模板类 */public abstract class AbstractClass{ //基本方法 protected abstract void doSomething(); protected abstract ...
设计模式演绎-抽象工厂模式
定义
Provide an interface for creating families of related or dependent objects without specifying their concrete classes.
为创建一组相关或相互依赖的对象提供一个接口,而无须指定它们的具体类。
通用类图
通用代码/* 抽象产品类 */public abstract class AbstarctProductA{ // A产品的共有的方法 public void shareMethod(){ } // A类产品必须实现的方法 public abstract void doSomething();}// 省略抽象产品B/* 产品A1的实现 */public class ProductA_1 extends AbstactProductA{ // 实现抽象类的要求 public void doSomething(){ }}// 省略其他产品实现类/* 抽象工厂类 */publ ...
读《软件开发本质论》
书籍信息
中文书名: 软件开发本质论英文书名: The Nature of Software Development作者: [美]Ron Jeffries译者: 王凌云
阅读感悟
我们最终想要的是价值,提供价值的是功能特性。功能特性发布的越早,我们就能越早提供价值。
基于价值的的管理比基于时间或工件等不提供价值的事物更胜一筹。
根据功能特性做计划很简单,只要在必要的时候才进行估算。根据以往完成的工作量来安排下一阶段的工作,效果会更好。
采用逐渐增加功能特性的增量式开发方法,要求我们每隔几周就能开发出小而完整的产品。所开发的必须总是能够正常运行,而且其设计也是良好的。
开发工作必须要交付真正可用的功能特性。
专注于价值。
目的、自主与专精是提高员工满意度和工作效率的三大驱动力。
目的来源于具体的业务。开发团队需要专门配备一位业务人员(产品负责人或客户),由他来指导团队确定哪些功能特性需要首先完成,哪些可以推迟。业务人员负责将疑虑或问题告诉团队,而不是解决方法,团队一起努力解决。
自主能够给整个团队带来责任感。
专精源自迭代过程。每经过一次迭代,都会完善完成一词的定义。所 ...
Centos7安装Chrome浏览器
2018年7月17日更新:
# 不需要那么麻烦,一条命令搞定yum install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
以下是原文:
Centos7默认的是Firefox,但还是更喜欢Chrome。以下是安装方法。
# 添加Fedora中文社区提供的镜像源sudo wget http://repo.fdzh.org/chrome/google-chrome-mirrors.repo -P /etc/yum.repos.d/sudo yum install google-chrome-stable
补充:Centos7上Chrome有各种小问题,用了30分钟之后,卸载,换回了firefox- -#
再补充:经测试,安装Chrome-beta版本没有任何问题了。
sudo yum install google-chrome-beta
乔布斯:遗失的访谈(1995)
这是乔布斯在1995年接受的一次采访的视频。无意中看到深受触动。收藏,分享。
将Spring Boot Application设为服务
通过Spring Boot构建的项目,可以在pom中设置,使用maven生成jar包,而非传统的war包。相较war包,jar包简化了实施的难度,但在windows下,需要想办法将jar设置成开机启动,否则重启就是个悲剧了。将ja包装为一个windows 服务是一个很好的办法。下面具体说说怎么做。
如何构建可运行Jar<packaging>jar</packaging> <!--这里是jar--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.0.RELEASE</version></parent> <dependencies> ....</dependencies> <build> <plug ...
内网环境中的BS系统前端埋点
行业软件的运行环境通常有三个特点:没有外网、浏览器版本低、业务优先。我们要做前端埋点,就必须考虑这三点。
监控谁行软的前端埋点,主要是为了分析用户的使用路径,用以改善冲浪率;分析用户在页面的驻留时间,用以改善信息传递的准确性;识别出哪些功能是主要关注功能。基于此点,我们设置监控的对象应为:
页面的button元素
页面的a元素
浏览器的页面后退
浏览器的页面关闭
记录操作时间、操作人、操作元素的相关信息、url轨迹
怎么监控使用js对button和a绑定onclick事件,并捕获page的onbeforeunload事件,结合url轨迹来判断是返回还是关闭
怎么记录对于频繁操作,不应每次触发都往后端post数据,最好使用localStorage;先将埋点捕获的日志写入localStorage中,然后择机提交,比如页面关闭时、用户退出时、或者每5分钟,提交后清空对应的key值。
附录
localStorage的兼容性
九种缓存机制对比
