java,有用的代码片段
在我们写程序的过程中,往往会经常遇到一些常见的功能。而这些功能或效果往往也是相似的,解决方案也相似。下面是我在写代码的过程中总结的一些有用的代码片段。
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,有用的代码片段的更多相关文章
- 60个有用CSS代码片段
		
1.垂直对齐 如果你用CSS,则你会有困惑:我该怎么垂直对齐容器中的元素?现在,利用CSS3的Transform,可以很优雅的解决这个困惑: .verticalcenter{ position: re ...
 - Css学习总结(2)——60个有用CSS代码片段
		
1.垂直对齐 如果你用CSS,则你会有困惑:我该怎么垂直对齐容器中的元素?现在,利用CSS3的Transform,可以很优雅的解决这个困惑: .verticalcenter{ position: re ...
 - CSS有用的代码片段
		
1.垂直对齐 .vc{ position:relative; top:50%; -webkit-transform:translateY(-50%); -o-transform:translateY( ...
 - JavaScript 有用的代码片段和 trick
		
浮点数取整 const x = 123.4545; x >> 0; // 123 ~~x; // 123 x | 0; // 123 Math.floor(x); // 123 注意:前三 ...
 - JavaScript有用的代码片段和trick
		
浮点数取整 const x = 123.4545; x >> 0; ~~x; x | 0; Math.floor(x); 注意:前三种方法只适用于32个位整数,对于负数的处理上和Math. ...
 - 分享非常有用的Java程序 (关键代码) (一)
		
原文:分享非常有用的Java程序 (关键代码) (一) 分享一些非常有用的Java程序 (关键代码) ,希望对你有所帮助. 1. 得到当前方法的名字 String methodName = Th ...
 - 30+有用的CSS代码片段
		
在一篇文章中收集所有的CSS代码片段几乎是不可能的事情,但是我们这里列出了一些相对于其他的更有用的代码片段,不要被这些代码的长度所吓到,因为它们都很容易实现,并且具有良好的文档.除了那些解决常见的恼人 ...
 - 【转】30+有用的CSS代码片段
		
来自:WEB资源网 链接:http://webres.wang/31-css-code-snippets-to-make-you-a-better-coder/ 原文:http://www.desig ...
 - 高效Web开发的10个jQuery代码片段(10 JQUERY SNIPPETS FOR EFFICIENT WEB DEVELOPMENT)
		
在过去的几年中,jQuery一直是使用最为广泛的JavaScript脚本库.今天我们将为各位Web开发者提供10个最实用的jQuery代码片段,有需要的开发者可以保存起来. 1.检测Internet ...
 
随机推荐
- [C++ STL] 常用算法总结
			
1 概述 STL算法部分主要由头文件<algorithm>,<numeric>,<functional>组成.要使用 STL中的算法函数必须包含头文件<alg ...
 - C# 生成 bmp 格式的图片
			
using System; using System.Collections.Generic; using System.Diagnostics; using System.Drawing; usin ...
 - A Python example for HiveServer2
			
要做一个通过调用python来实现对hive server2 的连接.在网上搜索了很多资料,有些说的hive sever的,但是由于认证方式发生改变,行不通. 最后,找到了权威的说明(PS: 还是应该 ...
 - Knockout应用开发指南(完整版) 目录索引(转)
			
使用Knockout有一段时间了(确切的说从MIX11大会宣传该JavaScript类库以来,我们就在使用,目前已经在正式的asp.net MVC项目中使用),Knockout使用js代码达到双向绑定 ...
 - Scala-基础-函数(1)
			
import junit.framework.TestCase //函数(1) class Demo5 extends TestCase { def testDemo(){ println(" ...
 - 解决 HTTP Status 500 - Unable to show problem report: freemarker.core.InvalidReferenceException:
			
HTTP Status 500 - Unable to show problem report: freemarker.core.InvalidReferenceException: The foll ...
 - TensorFlow车牌识别实践(1)
			
本文对公开的文章进行验证,从环境搭建到运行到结果分析. 1,文章:基于TensorFlow的车牌号识别系统 文章(译文) http://www.cnblogs.com/Jsmile2017/p/680 ...
 - PHP几个常用的概率算法
			
算法一 /** * 全概率计算 * * @param array $p array('a'=>0.5,'b'=>0.2,'c'=>0.4) * @return string 返回上面 ...
 - Discuz伪静态代码
			
<?php /** * [伪静态跳转(xugui_redirect.{modulename})] (C)2012-2099 Powered by 懒人V难人. * Version: 1.0 * ...
 - 用Java实现在【520,1314】之间生成随机整数的故事
			
做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 在未来城市工作的的程序员小木,做了一个梦,梦到自己在塔鲁姆的街道上看到一个姑娘,这个姑娘从远处走向他,脸上带着微笑.让小木 ...