在我们写程序的过程中,往往会经常遇到一些常见的功能。而这些功能或效果往往也是相似的,解决方案也相似。下面是我在写代码的过程中总结的一些有用的代码片段。

1、在多线程环境中操作同一个Collection,会出现线程同步的问题,甚至有时候会抛出异常

解决方案:使用Collections.synchronizeMap(),并使用如下代码访问或者删除元素

 public class ConcurrentMap {
private Map<String, String> map = Collections.synchronizedMap(new HashMap<>()); public synchronized void add(String key, String value) {
map.put(key, value);
} public synchronized void remove(String key) {
Set<Map.Entry<String, String>> entries = map.entrySet();
Iterator<Map.Entry<String, String>> it = entries.iterator();
while (it.hasNext()) {
Map.Entry<String, String> entry = it.next();
if (key.equals(entry.getKey())) {
it.remove();
}
}
} public synchronized void remove2(String key) {
Set<Map.Entry<String, String>> entries = map.entrySet();
entries.removeIf(entry -> key.equals(entry.getKey()));
}
}

2、根据URL获取ip

解决方案,使用java.net.InetAddress工具类

/**
* 根据url获取对应的ip
* @throws UnknownHostException UnknownHostException
*/
@Test
public void testGetIP() throws UnknownHostException {
Pattern domainPattern = Pattern.compile("(?<=://)[a-zA-Z\\.0-9]+(?=\\/)"); //匹配域名
String url = "http://ngcdn001.cnr.cn/live/zgzs/index.m3u8";
Matcher matcher = domainPattern.matcher(url);
if (matcher.find()) {
InetAddress inetAddress = Inet4Address.getByName(matcher.group());
String hostAddress = inetAddress.getHostAddress();
System.out.println("hostAddress = " + hostAddress);
}
}

3、正确匹配URL的正则表达式

解决方案:(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]  IP地址、前后有汉字、带参数的,都是OK的。

辅助:RegexBuddy 正则神器

java,有用的代码片段的更多相关文章

  1. 60个有用CSS代码片段

    1.垂直对齐 如果你用CSS,则你会有困惑:我该怎么垂直对齐容器中的元素?现在,利用CSS3的Transform,可以很优雅的解决这个困惑: .verticalcenter{ position: re ...

  2. Css学习总结(2)——60个有用CSS代码片段

    1.垂直对齐 如果你用CSS,则你会有困惑:我该怎么垂直对齐容器中的元素?现在,利用CSS3的Transform,可以很优雅的解决这个困惑: .verticalcenter{ position: re ...

  3. CSS有用的代码片段

    1.垂直对齐 .vc{ position:relative; top:50%; -webkit-transform:translateY(-50%); -o-transform:translateY( ...

  4. JavaScript 有用的代码片段和 trick

    浮点数取整 const x = 123.4545; x >> 0; // 123 ~~x; // 123 x | 0; // 123 Math.floor(x); // 123 注意:前三 ...

  5. JavaScript有用的代码片段和trick

    浮点数取整 const x = 123.4545; x >> 0; ~~x; x | 0; Math.floor(x); 注意:前三种方法只适用于32个位整数,对于负数的处理上和Math. ...

  6. 分享非常有用的Java程序 (关键代码) (一)

    原文:分享非常有用的Java程序 (关键代码) (一)   分享一些非常有用的Java程序 (关键代码) ,希望对你有所帮助. 1.  得到当前方法的名字 String methodName = Th ...

  7. 30+有用的CSS代码片段

    在一篇文章中收集所有的CSS代码片段几乎是不可能的事情,但是我们这里列出了一些相对于其他的更有用的代码片段,不要被这些代码的长度所吓到,因为它们都很容易实现,并且具有良好的文档.除了那些解决常见的恼人 ...

  8. 【转】30+有用的CSS代码片段

    来自:WEB资源网 链接:http://webres.wang/31-css-code-snippets-to-make-you-a-better-coder/ 原文:http://www.desig ...

  9. 高效Web开发的10个jQuery代码片段(10 JQUERY SNIPPETS FOR EFFICIENT WEB DEVELOPMENT)

    在过去的几年中,jQuery一直是使用最为广泛的JavaScript脚本库.今天我们将为各位Web开发者提供10个最实用的jQuery代码片段,有需要的开发者可以保存起来. 1.检测Internet ...

随机推荐

  1. [C++ STL] 常用算法总结

    1 概述 STL算法部分主要由头文件<algorithm>,<numeric>,<functional>组成.要使用 STL中的算法函数必须包含头文件<alg ...

  2. C# 生成 bmp 格式的图片

    using System; using System.Collections.Generic; using System.Diagnostics; using System.Drawing; usin ...

  3. A Python example for HiveServer2

    要做一个通过调用python来实现对hive server2 的连接.在网上搜索了很多资料,有些说的hive sever的,但是由于认证方式发生改变,行不通. 最后,找到了权威的说明(PS: 还是应该 ...

  4. Knockout应用开发指南(完整版) 目录索引(转)

    使用Knockout有一段时间了(确切的说从MIX11大会宣传该JavaScript类库以来,我们就在使用,目前已经在正式的asp.net MVC项目中使用),Knockout使用js代码达到双向绑定 ...

  5. Scala-基础-函数(1)

    import junit.framework.TestCase //函数(1) class Demo5 extends TestCase { def testDemo(){ println(" ...

  6. 解决 HTTP Status 500 - Unable to show problem report: freemarker.core.InvalidReferenceException:

    HTTP Status 500 - Unable to show problem report: freemarker.core.InvalidReferenceException: The foll ...

  7. TensorFlow车牌识别实践(1)

    本文对公开的文章进行验证,从环境搭建到运行到结果分析. 1,文章:基于TensorFlow的车牌号识别系统 文章(译文) http://www.cnblogs.com/Jsmile2017/p/680 ...

  8. PHP几个常用的概率算法

    算法一 /** * 全概率计算 * * @param array $p array('a'=>0.5,'b'=>0.2,'c'=>0.4) * @return string 返回上面 ...

  9. Discuz伪静态代码

    <?php /** * [伪静态跳转(xugui_redirect.{modulename})] (C)2012-2099 Powered by 懒人V难人. * Version: 1.0 * ...

  10. 用Java实现在【520,1314】之间生成随机整数的故事

    做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 在未来城市工作的的程序员小木,做了一个梦,梦到自己在塔鲁姆的街道上看到一个姑娘,这个姑娘从远处走向他,脸上带着微笑.让小木 ...