`
BucketLi
  • 浏览: 190877 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
博客专栏
5a76a659-f8e6-3bf3-b39a-8ae8f7a0f9d9
Percolator与分布...
浏览量:5570
社区版块
存档分类
最新评论

java代码细节

 
阅读更多
看代码过程中一些细节记录,不断补充。质量可靠,开发高效的捷径在于使用一些成熟的库和代码,并且了解其特性和主要原理,特别是工具类。

1.向左补充特定字符
StringUtils.leftPad(String.valueOf(i), startStr.length(), '0')


2.值为null抛IllegalArgumentException
Assert.notNull(mode);


3.截取特定字符之前的字符串
StringUtils.substringBefore(rawValue, "[")


4.匹配任意一个字符
StringUtils.containsAny(value, new char[] { '*', '?', '+', '|', '(', ')', '{', '}', '[', ']', '\\', '$','^', '.' })


5.将一个类转换成一个特定格式的string
ToStringBuilder.reflectionToString(this);


6.反射设置值之前让字段可访问
ReflectionUtils.makeAccessible(field);


7.拷贝同一个类的对象之间字段
BeanUtils.copyProperties(this, globalParmeter);


8.对collection进行排序
Collections.sort(processIds);


9.fastJson转换json String到特定对象
JSON.parseObject(json, targetClass);


10.使用String format字符串
private static final String PATH        = "/destinations/%s";
private static final String CURSOR_PATH = PATH + "/%s/cursor"
String path = String.format(CURSOR_PATH, destination, String.valueOf(clientId));


11.使用apache commons 包的RandomUtil进行随机数选择
this.index = RandomUtils.nextInt(this.managerAddress.size());


12.按某个分隔符拼接字符串列表
String addr = StringUtils.join(node.getParameters().getZkCluster().getServerList(), ',');


13.获取Collection中最小值
Collections.min(progress.keySet())


14.拷贝两个对象之间的同名属性,不需要对象类型一致
BeanUtils.copyProperties(authenticationInfo, datasourceInfo);


15.有时候使用系统启动时设置的系统变量也能达到不错的效果
String nid = System.getProperty(NID_NAME);


16.单点到单点(可能有HA)的面向对象编程可以使用rmi来(比如spring)做通讯
   
    RmiServiceExporter export = new RmiServiceExporter();
        export.setServiceName("endpoint");
        export.setService(this);// 暴露自己
        export.setServiceInterface(CommunicationEndpoint.class);
        export.setRegistryHost(host);
        export.setRegistryPort(port);
        export.setAlwaysCreateRegistry(alwaysCreateRegistry);/


17.有时候可以内嵌jetty容器(org.eclipse.jetty)来构建web应用,特别是快速测试阶段,具备动态代码更新的能力
       
<dependency>
			<groupId>org.eclipse.jetty</groupId>
			<artifactId>jetty-server</artifactId>
		</dependency>
		<dependency>
			<groupId>org.eclipse.jetty</groupId>
			<artifactId>jetty-webapp</artifactId>
		</dependency>

   
public void start() throws Exception {
        Resource configXml = Resource.newSystemResource("jetty.xml");
        XmlConfiguration configuration = new XmlConfiguration(configXml.getInputStream());
        server = (Server) configuration.configure();

        Handler handler = server.getHandler();
        if (handler != null && handler instanceof WebAppContext) {
            WebAppContext webAppContext = (WebAppContext) handler;
            webAppContext.setResourceBase(JettyEmbedServer.class.getResource("/webapp").toString());
        }
        server.start();
        if (logger.isInfoEnabled()) {
            logger.info("##Jetty Embed Server is startup!");
        }
    }


18.使用spring的时候不一定使用init-method方式初始化bean,也可以实现InitializingBean接口实现afterPropertiesSet()的方式初始化。

19. 添加shutdownhook在程序关闭的时候做一些操作
Runtime.getRuntime().addShutdownHook(new Thread() {
                public void run() {
                    
                }
            });


20.得到异常的整个堆栈
 ExceptionUtils.getFullStackTrace(e));


21.得到内存使用率
MemoryUsage memoryUsage = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage();


22.大量产生String的时候,并且有很大概率相同的时候,可以用intern优化
sql.toString().intern();// intern优化,避免出现大量相同的字符串


23.不可变map
Collections.unmodifiableMap(parameters);


24.根据host获取ip
InetAddress.getByName(hostName).getHostAddress();


25.获取原始类型数据,valueOf是多了一个装箱操作
Double.parseDouble(xx);


26.直接读取文件内容为string的便利方法
String json = FileUtils.readFileToString(dataFile, charset.name());


27.多行join成一行
String ruleStr = StringUtils.join(IOUtils.readLines(resource.getInputStream()), SystemUtils.LINE_SEPARATOR);


28.可以使用apache的Configuration来load各种配置,其有很多便利功能
PropertiesConfiguration config = new PropertiesConfiguration();
config.load(new FileInputStream(conf));


29.使用apache的StringUtils截取字符串
StringUtils.substringAfter(conf, CLASSPATH_URL_PREFIX);


30.google guava包中的一些有用的细节
this.queries = ImmutableList.copyOf(checkNotNull(queries, "queries is null"));

HostAndPort host = HostAndPort.fromString(server);

Splitter NAME_VALUE_SPLITTER = Splitter.on('=').limit(2).trimResults();

MapSplitter TAGS_SPLITTER=Splitter.on("\n").trimResults().withKeyValueSeparator('=')

checkArgument(name.indexOf('=') < 0, "Session property name must not contain '=': %s", name);

ImmutableList.builder()
                .add("suite")
                .add("query")
                .addAll(tagNames)
                .add("wallTimeP50")
                .add("wallTimeMean")
                .add("wallTimeStd")
                .add("processCpuTimeP50")
                .add("processCpuTimeMean")
                .add("processCpuTimeStd")
                .add("queryCpuTimeP50")
                .add("queryCpuTimeMean")
                .add("queryCpuTimeStd")
                .add("status")
                .add("error")
                .build()

Joiner.on('\t').join(values);//value是list

MoreObjects.toStringHelper(this)
                .add("name", name)
                .add("tags", tags)
                .toString();

Map<Type, String> SQL_TYPES = ImmutableMap.<Type, String>builder()
            .put(BOOLEAN, "boolean")
            .put(BIGINT, "bigint")
            .put(DOUBLE, "double precision")
            .put(VARCHAR, "varchar")
            .put(VARBINARY, "varbinary")
            .put(DATE, "date")
            .put(TIME, "time")
            .put(TIME_WITH_TIME_ZONE, "time with timezone")
            .put(TIMESTAMP, "timestamp")
            .put(TIMESTAMP_WITH_TIME_ZONE, "timestamp with timezone")
            .build();

int jitter = ThreadLocalRandom.current().nextInt(100);//jdk自带的

分享到:
评论

相关推荐

    java代码细节总结1.0版本.zip

    java代码细节总结1.0版本.zip

    java代码细节总结1.0版本.7z

    java代码细节总结1.0版本.7z

    Java代码优化细节总结

    代码优化也是一样,如果项目着眼于尽快无BUG上线,那么此时可以抓大放小,代码的细节可以不精打细磨;但是如果有足够的时间开发、维护代码,这时候必须考虑每个可以优化的细节了,一个一个细小的优化点累积起来,...

    java代码优化细节总结1.0版本.zip

    java代码优化细节总结1.0版本.zip

    java 细节代码收集 供自己查看

    NULL 博文链接:https://lullabyus.iteye.com/blog/848552

    java代码优化细节总结1.0版本.7z

    java代码优化细节总结1.0版本.7z

    必会的40个Java代码优化细节.pdf

    必会的40个Java代码优化细节 自学成长,成为大拿

    基于eclipse的Java代码规范自动生成技术

    java代码checkstyle的规范检查点特别多。再加上同时还有部门自己的一套编码规范,在eclipse开发环境中,研发人员很难驾驭如此多的条条框框。本文提供的技术能轻松的解决研发人员关于编码规范的苦恼,因为这部分工作...

    java细节优化代码1.0版本.zip

    java细节优化代码1.0版本.zip

    java细节优化代码1.0版本.7z

    java细节优化代码1.0版本.7z

    审查Java 代码的常见错误

    代码审查是消灭Bug最重要的方法之一,这些审查在大多数时候都特别奏效。由于代码审查本身所...本文就常见的Java代码中容易出现的问题提出一些建设性建议,以便您在审查代码的过程中注意到这些常见的细节性错误。  

    Java代码优化细节

    主要为大家详细介绍了Java代码优化细节,通过不同细节对java代码进行优化,感兴趣的小伙伴们可以参考一下

    Java基础笔记,代码结构

    适合一些卖课程或者有学习过Java的人选。里面是Java一开始需要掌握的一些代码知识和常识,一些基础知识的笔记,Java代码的基本运用和代码里需要掌握的一些细节。

    Java编写的显示器显示模式测试代码

    Java编写的显示器显示模式测试代码Java编写的显示器显示模式测试代码

    Java项目开源源码,共111个

    Java项目实现细节 在这些Java项目源码中,可以看到以下实现细节: * 使用requests库来发送HTTP请求,获取网页内容。 * 使用BeautifulSoup库来解析HTML网页内容。 * 使用docx库来生成Word文档。 * 使用selenium库来...

    销售管理系统源代码 Java

    它包含了安装和有效使用本系统的全部资料,详细讲述了包括基本概念、使用技巧、专家提示以及技术细节。 安装的运行环境:TOMCAT和浏览器以及JDK, 数据库要求MySQL。Tomcat下载地址:...

    java 五子棋简单版源代码

    其中许多细节可以先放一放,比如 五子棋咋样就算胜利,我们且先不管,写用一个win()方法代替,等答题架子搭起来后,在去细细的琢磨,这样往往要比只在脑子空想不去认真敲代码要强很多。我也是初学者,高手么见笑。

    《Java并发编程的艺术》源代码

    第5章介绍Java并发包中与锁相关的API和组件,以及这些API和组件的使用方式与实现细节。 第6章介绍了Java中的大部分并发容器,并深入剖析其实现原理,让读者领略大师的设计技巧。 第7章介绍了Java中的原子操作类,并...

Global site tag (gtag.js) - Google Analytics