写Java代码的一些小技巧】的更多相关文章

写Java代码有三年多了,遇到过很多坑,也有一些小小的心得.特地分享出来供各位学习交流.这些技巧主要涉及谷歌Guava工具类的使用.Java 8新特性的使用.DSL风格开发.代码封装等技巧. 一.null的判断 对于Java Developer来说空指针异常让我们深恶痛绝.我们进行单元测试的时候很多的时间就是在消除空指针异常,一个容易报空指针的代码肯定称不上是合格的代码.当然,完全消除空指针绝非易事,但我们可以最大限度地让空指针异常变得可控.只要我们知道代码何时会出现null,那么我们就成功一大…
IT咨询顾问:一次吐血的项目救火   年后的一个合作公司上线了一个子业务系统,对接公司内部的单点系统.我收到该公司的技术咨询:项目启动后没有规律的突然无法登录了,重新启动后,登录一断时间后又无法重新登录,对方技术人员一头雾水不知道什么原因,后台日志没有任何错误信息.我临危受命,赶往该项目进行扑火工作,其实本来2天都可以解决的问题,让我花了5天解决.具体原因待我一一解释. 1,未掌握log日志的精髓 log日志的debug,info,error信息乱打,该用debug的用info,该用info的用…
转载: Java 性能优化手册 - 提高 Java 代码性能的各种技巧 Java 6,7,8 中的 String.intern - 字符串池 这篇文章将要讨论 Java 6 中是如何实现 String.intern 方法的,以及这个方法在 Java 7 以及 Java 8 中做了哪些调整. 字符串池 字符串池(有名字符串标准化)是通过使用唯一的共享 String 对象来使用相同的值不同的地址表示字符串的过程.你可以使用自己定义的 Map<String, String> (根据需要使用 weak…
前言 我曾经是一名 .Net 开发,如今的我是一名 Java 开发者.在我享受着 Java 成熟的生态时,我常常怀念 c# 简洁的语法:自动属性.类型推断.自动初始化器 .... 鱼,我所欲也,熊掌亦我所欲也; 二者不可得兼; 直到我遇到了 lombok . 添加依赖及 IDE 插件 maven 添加依赖: <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok-maven&l…
最近做项目需要在JS脚本里面调用一个JAVA的函数得到数据,在网上查了很久,发现JS脚本里面不能写JAVA函数.只能把JS脚本里面的代码写进JSP文件里面的<script>标签内,然后写JAVA代码.(或许是我资料查少了,如果有办法,请告诉我一下)如: <!-- 动态生成li标签 --> <script type="text/javascript"> var JSarraylistProjectname = new Array(); <% fo…
http://geek.csdn.net/news/detail/238243 原文:4 More Techniques for Writing Better Java 作者:Justin Albano 翻译:Vincent 译者注:如果现在要求对你写的Java代码进行优化,那你会怎么做呢?作者在本文介绍了可以提高系统性能以及代码可读性的四种方法,如果你对此感兴趣,就让我们一起来看看吧.以下为译文. 我们平时的编程任务不外乎就是将相同的技术套件应用到不同的项目中去,对于大多数情况来说,这些技术都…
经常使用MyEclipse要么Eclipse编辑写java程序猿代码.您可能经常会遇到一个黄色警戒线:dead code:一般程序猿遇到这些问题都会置之不理,反正也不影响程序的编译运行.对,这不是bug,仅仅是一个提示,对于一个有强迫症的程序猿来说,他非要代码一点问题都没有,包含黄线警告都要消灭掉,这里简单说下dead code 即死代码.无作用的代码提示的原因和解决方法. 顾名思义,死代码.即你编写的那一行是无效代码,可有可无,说白了就是一行废话:这是你就要看一下这一行的处理逻辑是什么,可能是…
Github搜索之代码搜索 可以使用下列搜索限定符的任意组合进行代码搜索 提示:通过将一连串的搜索语法添加到搜索限定符来进一步提高搜索结果的精度. ·代码搜索注意事项 由于搜索代码的复杂性,有一些搜索限制: ·默认搜索是从master分支搜索代码. ·只有小于384 KB的文件是可搜索的. ·在搜索源代码时,必须至少包含一个搜索词. 例如,搜索:language:go 是无效的,而 amazing language:go 则是有效的 ·在大多数情况下,搜索结果可以显示同一个文件中的两个片段, 但…
写业务代码的时候,我们经常要做条件判断,有的时候条件判断的或判断长达20多个.reg.equals("1") || reg.equals("2") || reg.equals("3")||.....是不是很奔溃 1,这个时候代码维护不好维护,字段一多对字段就会出错. 2,在最差情况下,执行语句要对这20个判断都判断一下才知道最终的结果,在高性能业务下发挥并不好. 这个时候我们可以用map或set来进行判断,因为hashmap是一个hash桶,查找…
我们平时的编程任务不外乎就是将相同的技术套件应用到不同的项目中去,对于大多数情况来说,这些技术都是可以满足目标的.然而,有的项目可能需要用到一些特别的技术,因此工程师们得深入研究,去寻找那些最简单但最有效的方法.本文我们将介绍一些有助于解决常见问题的通用设计策略和目标实现技术,即: 只做有目的性的优化 常量尽量使用枚举 重新定义类里面的equals()方法 尽量多使用多态性 值得注意的是,本文中描述的技术并不是适用于所有情况.另外这些技术应该什么时候使用以及在什么地方使用,都是需要使用者经过深思…
1.在知道必要之前不要优化系统 这可能是最重要的性能调整技巧之一.你应该遵循常见的最佳实践做法并尝试高效地实现用例.但是,这并不意味着在你证明必要之前,你应该更换任何标准库或构建复杂的优化. 在大多数情况下,过早优化不但会占用大量时间,而且会使代码变得难以阅读和维护.更糟糕的是,这些优化通常不会带来任何好处,因为你花费大量时间来优化的是应用程序的非关键部分. 那么,你如何证明你需要优化一些东西呢? 首先,你需要定义应用程序代码的速度得多快,例如,为所有API调用指定最大响应时间,或者指定在特定时…
记录一些做论文实验写代码时遇到的问题. 数据库SQL语句方面: 1.java通过JDBC连接MySql数据库方法 参见:http://hzy3774.iteye.com/blog/1689525 2.出现错误java.sql.SQLException: Can not issue data manipulation statements with executeQuery(). 注意sql语句如果是查询,用executeQuery(),要对表产生修改的话则使用executeUpdate() 3.…
学 Python 怎样才最快,当然是实战各种小项目,只有自己去想与写,才记得住规则.本文是 30 个极简任务,初学者可以尝试着自己实现:本文同样也是 30 段代码,Python 开发者也可以看看是不是有没想到的用法. Python 是机器学习最广泛采用的编程语言,它最重要的优势在于编程的易用性.如果读者对基本的 Python 语法已经有一些了解,那么这篇文章可能会给你一些启发.作者简单概览了 30 段代码,它们都是平常非常实用的技巧,我们只要花几分钟就能从头到尾浏览一遍. 1. 重复元素判定 以…
angular的工具函数 在angular的API文档中,在最前面就是讲的就是angular的工具函数,下面列出来 angular.bind //用户将函数和对象绑定在一起,返回一个新的函数 angular.bootstrap //angular启动函数,一般不用,除了e2e测试 angular.copy //对象拷贝 angular.element //jQlite,作用类似于jQuery angular.equals //对象比较.用 == 对两个对象进行比较,除非他们是同一个对象的引用,否…
<%@page import="java.text.SimpleDateFormat"%><%@page language="java" import="java.util.* ,java.awt.*" errorPage="jsps/error.jsp" pageEncoding="UTF-8"%><!-- JSP中的导包方式,见上面(两种方式) jsps/error.jsp…
今天公司SQA问我目前项目代码行数有多少,我当时就是想,以前好像写过类似的统计工具但是一时又找不到 公司网络又不能下载,所以想想eclipse是不是又类似功能,找了下没有,但突然一想有一个转弯方法:统计工程里面的\n个数 1. 按 CTRL+H 打开查找对话框 选择file search 按下图方式输入 注意: I. 输入查找\n, 勾选正则式选项 II. 输入文件匹配, *.java是所有java文件 III. 勾选 Enclosing projects 代表当前项目 点击Search 就可以…
不可关闭窗口 setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);…
今天公司SQA问我目前项目代码行数有多少,我当时就是想,以前好像写过类似的统计工具但是一时又找不到 公司网络又不能下载,所以想想eclipse是不是又类似功能,找了下没有,但突然一想有一个转弯方法:统计工程里面的\n个数 1. 按 CTRL+H 打开查找对话框 选择file search 按下图方式输入 注意: I. 输入查找\n, 勾选正则式选项 II. 输入文件匹配, *.java是所有java文件 III. 勾选 Enclosing projects 代表当前项目 点击Search 就可以…
Java 6,7,8 中的 String.intern – 字符串池 这篇文章将要讨论 Java 6 中是如何实现 String.intern 方法的,以及这个方法在 Java 7 以及 Java 8 中做了哪些调整. 字符串池 字符串池(有名字符串标准化)是通过使用唯一的共享 String 对象来使用相同的值不同的地址表示字符串的过程.你可以使用自己定义的 Map<String, String> (根据需要使用 weak 引用或者 soft 引用)并使用 map 中的值作为标准值来实现这个目…
首先要搞清楚堆栈里放的什么东西: 栈存储运行时声明的变量——对象引用(或基础类型, primitive)内存空间,堆分配每一个对象内容(实例)内存空间. 一个变量可以先后指向多个对象实例:数组.链表等可以存放对多个实例对象内容的引用关系.没有引用关系的对象内容按说被虚拟机回收(recycled,destroy,在C++叫delete,在C叫free). 栈的实现是先入后出的, 相似的集装箱那种货舱. 堆是随机存放的, 相似于现在的停车场. 记得曾经,有一本游戏的外国书, 说游戏要分配好栈空间和堆…
import java.util.Scanner; import java.util.Random; public class mulTip{ public static void main(String[] args){ System.out.println("请输入0-100的整数"); Scanner sc = new Scanner(System.in); Random ac = new Random(); int guess = ac.nextInt(100)+1; for(…
随着工作经验的积累,在代码编写和优化方面,个人的心得体会总结以及有些从网上或书本中看到的有用技巧 1. 判断何时使用keySet()和entrySet() 获取Map 的key 和value 当循环中只获取key时,使用keySet()是更正确的做法.而使用entrySet(),当既获取key,又获取value时,使用entrySet():或者需要主键key去取value时,迭代entrySet()才是更高效的做法.其比先迭代keySet()获取key后再通过get取值更佳: 反例: Map<S…
一.安装EditPlus EditPlus: https://www.editplus.com/latest4.html EditPlus注册码在线生成: https://www.jb51.net/tools/editplus/ 下载EditPlus安装: 激活时,用户名为任意英文名,然后复制粘贴激活码便可激活. 二.安装JDK 1.jdk默认安装: 2.配置: 2.1计算机右键管理——环境变量 2.2.新建变量名: JAVA_HOME,变量值:JDK安装地址 点击[确定] 2.3.再新建,输入…
(一) 小结:具体我最大的担心,害怕就是方法调用的时候,new对象之后,赋值,是在new后面的括号里实现,还是在 对象.方法名()这样的.当然带参数的构造方法,调用时本身就直接调用,普通方法,选后者.初学者困惑不解,欢迎举例详讲!!!!!! public class Class4 {     private String name;     private int sno;     private int age;     private double sJava;     public Cla…
1.打开eclipse→Windows→Preferences→Java→Editor→Content Assist 改动Auto Activation triggers for java的值为:zjava 点击applybutton 如图: 2.继续打开JavaScript→Editor→Content Assist 改动Auto Activation triggers for javaScript的值为:zjs 点击applybutton 如图: 3.继续打开web→html Files→E…
1,尽量使用直接量.     采用String str="hello"; 而不是 String str = new String("hello"): 2,使用StringBuilder和StringBuffer进行字符串连接.     String.StringBuilder.StringBuffer都可代表字符串,其中String代表字符序列不可变的字符串,而StringBuilder.StringBuffer都代表字符序列可变的字符串. 3,尽早释放无用对象的引…
这里我简单谈谈 Java 语法在编程效率方面的弱势,以及如何补救. 一.集合的快速创建 C# 是少数拥有集合字面值(又叫初始化表达式)的静态语言之一. var list = new List<int> {1, 2, 3}; var set = new HashSet<int> {1, 2, 3}; var map = new Dictionary<int, int> {{1, 2}, {2, 3}, {3, 4}}; 在 Java 中如果想要达到相同效果,可以用List…
1. 数组中通过赋值语句来改变值 var a = 1; var msg = ["value0","value1"]; for(var i = 0;i<10;i++){ alert(msg[a = a == 1 ? 0 : 1]);// 0,1,0,1… } 能实现切换两个不同的值.  msg[a=1] 相当于 msg[1], a=1,同时执行赋值和取值 2.类型转换 一般把"123"转成number类型,都是parseInt("1…
1.打开如下路径: C:\Windows\System32\drivers\etc 2.将此处的HOSTS文件复制到其他地方,比如桌面.(此处大概率是没有编辑权限的) 3.用记事本打开HOSTS文件,添加如下: 192.30.253.112 github.com 151.101.72.133 assets-cdn.github.com 151.101.193.194 github.global.ssl.fastly.net 4.保存后替换之前的HOSTS文件. 5.打开power shell,输…