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

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,开放网络视频接口论坛)是一种全球性的...

    164个完整的Java代码

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

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

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

    java 代码块折叠插件

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

    课程设计java代码

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

    提高java代码性能各种技巧

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

    java代码cmpp 2.0简单示例绝对可用

    Java代码实现CMPP 2.0协议是一种在移动通信领域常见的技术,主要用于短信服务。CMPP(China Mobile Packet Protocol)是中国移动制定的一种基于TCP/IP的通信协议,用于连接SP(Service Provider)与SCP(Service ...

    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