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

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编程的一些关键知识点和最佳实践的详细概述,旨在帮助开发者提升代码质量和效率。以下是根据提供的文件名“java代码细节总结1.0版本.md”可能涵盖的一些核心Java...

    Java代码优化细节总结

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

    powerDesigner 导出 JAVA 代码

    - **在“Selection”栏目中选择要导出JAVA代码的类**:可以通过选择特定的类来导出相应的JAVA代码。 - **点击“确定”**:完成导出操作。导出完成后,系统会弹出一个提示框显示导出文件的存放目录。 示例截图如下...

    把wsdl文件或地址转化成java代码工具

    【标题】:“把wsdl文件或地址转化成java代码工具” 在软件开发中,Web服务是一种通过网络(通常是HTTP)交换数据的方式。WSDL(Web Services Description Language)是描述Web服务的标准XML格式,它定义了服务的...

    C++代码转java工具

    在某些情况下,开发者可能需要将已有的C++代码转换为Java代码,以便在Java平台上运行或利用Java的生态系统。 标题“C++代码转Java工具”暗示了一个软件或服务的存在,它的功能是自动化C++源代码到Java源代码的转换...

    Java代码直接转化成smail代码工具(完整项目)

    Java代码和Smali代码是两种不同的编程语言,它们在Android应用开发中扮演着不同角色。Java是高级语言,而Smali是Dalvik虚拟机(DVM)的汇编语言,通常用于逆向工程和安全分析。这个“Java代码直接转化成Smali代码...

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

    在Java编程语言的世界里,对细节的掌握是提升代码质量、效率和可维护性的关键。这篇集合了关于Java编程的一些重要细节,旨在帮助开发者更好地理解和运用这个强大的后端语言。以下是一些基于提供的文件名和标签所衍生...

    java源代码查看工具.zip

    对于那些需要频繁查看或分析Java代码的开发者来说,这是一款不可或缺的辅助工具。 在实际应用中,此工具可以广泛应用于以下场景: 1. **逆向工程**:当没有源代码的情况下,需要分析或修改已有的二进制Java程序,...

    onvif wsdl转成java代码

    【标题】"onvif wsdl转成java代码"涉及的主要知识点是ONVIF协议、Web服务描述语言(WSDL)以及Java编程在服务端开发中的应用。 ONVIF(Open Network Video Interface Forum,开放网络视频接口论坛)是一种全球性的...

    java代码审查.pdf

    从【部分内容】中可以看出,文档涉及到了Java代码审查的相关细节,尤其是代码中的常见错误以及如何在审查过程中发现并修复这些错误。以下是对这部分内容的详细解读和知识点总结。 1. 代码审查的目标和意义 代码审查...

    在Qt平台C++和Java代码的交互

    本文将深入探讨在Qt平台上如何实现C++与Java代码的交互。 首先,理解C++与Java交互的基本原理至关重要。这种交互通常通过JNI(Java Native Interface)来实现,它允许Java代码调用本地(如C++)代码,反之亦然。JNI...

    164个完整的Java代码

    - **知识点解释**:标题中提到这是“经典的资料,书籍”,这意味着这些Java代码不仅限于简单的示例,可能还包含了更深入的理论知识和技术细节。 - **实践意义**:结合书籍中的理论知识来实践代码,可以让学习者更加...

    java 代码块折叠插件

    5. **代码审查**:在代码审查或团队协作时,折叠功能有助于集中讨论重点部分,避免无关细节的干扰。 "说明.txt"文件应该是提供关于如何安装和使用该插件的指南。通常,这会包括以下步骤: 1. **下载插件**:获取...

    课程设计java代码

    在这个“课程设计Java代码”的资源中,我们可以期待一系列与Java学习相关的实践示例,这些示例涵盖了从基础到进阶的各个阶段。 首先,让我们了解一下Java的基础知识。Java程序由类组成,类是对象的模板。类定义了...

    提高java代码性能各种技巧

    Java 代码性能优化技巧总结 Java 代码性能优化是每个 Java 开发者都需要掌握的重要技能。以下是对 Java 代码性能优化的各种技巧的总结: 字符串池的实现 在 Java 中,字符串池(String Intern Pool)是通过使用...

    java 一些细节知识

    在这个"java一些细节知识"的压缩包中,包含了一份名为"java test.doc"的文档,我们可以期待它涵盖了作者个人测试后总结的Java关键知识点。以下是对这些可能包含的内容的详细解释: 1. **变量与数据类型**:Java支持...

    课程设计java程序源代码

    6. **注释**:好的源代码通常包含清晰的注释,帮助解释代码的功能和实现细节。 通过深入学习和理解这些源代码,你可以增强对Java编程的理解,进一步提升编程技能。同时,这也是一个很好的机会去实践代码阅读和调试...

    WinMerge(java代码比较工具)

    总的来说,WinMerge作为一款优秀的Java代码比较工具,它的强大功能和易用性使其成为开发人员不可或缺的助手,尤其是在代码管理和协同开发的过程中。掌握并熟练使用WinMerge,无疑能够提升开发效率,降低出错概率,...

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

    以下是对`java代码优化细节总结1.0版本`的一些核心知识点的阐述: 1. **避免冗余计算**:在Java编程中,如果一个值在多处被使用,应当将其存储在变量中,避免重复计算,提升执行速度。 2. **减少对象创建**:频繁...

Global site tag (gtag.js) - Google Analytics