Name or service not known, ping域名报错
一. 问题现象
ping公网域名失败,提示Name or service not known,但可以ping通弹性公网IP。
二. 问题根因
出现该问题通常有三个原因:
/etc/resolv.conf未配置DNS地址或者DNS地址错误导致。
/etc/nsswitch.conf文件删除DNS解析记录导致。
/lib64/libnss_dns.so.2库文件丢失导致无法解析域名。
安装JDK出现内部错误61003
问题:安装java出现内部错误61003,安装成功输入java -version提示无法打开dll文件
原因:没有装visual c++2015 redistributable
解决方案 下载并安装该插件
安装 visual c++2015 redistributable
链接 https://www.microsoft.com/en-us/download/details.aspx?id=48145
View DetailsJava获取毫秒值
1.java.lang.System类 该方法的作用是返回当前的计算机时间,时间的表达格式为当前计算机时间和GMT时间(格林威治时间)1970年1月1号0时0分0秒所差的毫秒数。
1 |
System.currentTimeMillis(); |
2.Calendar类 先由getInstance获取Calendar对象,然后用clear方法将时间重置为(1970.1.1 00:00:00),接下来用set方法设定指定时间,最后用getTimeMillis获取毫秒值。
1 2 3 4 5 6 |
Calendar calendar = Calendar.getInstance(); calendar.clear(); //指定时间的毫秒数 calendar.set(2021, 0, 1); long millis = calendar.getTimeInMillis(); |
※ Calendar 的 month 从 0 开始,也就是全年 12 个月由 0 ~ 11 进行表示。 3.java.util.Date类、SimpleDateFormat类 先由时间格式创建SimpleDateFormat对象,然后通过parse方法由指定时间创建Date对象,最后由Date对象的getTime方法获取毫秒值。
1 2 3 4 5 6 7 8 9 10 11 |
SimpleDateFormat format = new SimpleDateFormat("yyyy-mm-dd"); Date date = null; try { //指定时间的毫秒数 date = format.parse("2021-01-01"); } catch (ParseException e) { e.printStackTrace(); } long millis = date.getTime(); |
测试
1 2 3 4 5 6 7 8 9 10 |
public static void test() { long curTime1 = System.nanoTime(); System.out.println("System.currentTimeMillis() " + System.currentTimeMillis() + " 耗时(ns):" + (System.nanoTime() - curTime1)); long curTime2 = System.nanoTime(); System.out.println("new Date().getTime() " + new Date().getTime() + " 耗时(ns):" + (System.nanoTime() - curTime2)); long curTime3 = System.nanoTime(); System.out.println("Calendar.getInstance().getTimeInMillis() " + Calendar.getInstance().getTimeInMillis() + " 耗时(ns):" + (System.nanoTime() - curTime3)); } |
结果 System.currentTimeMillis() 1630315030949 耗时(ns):39600 new Date().getTime() 1630315030949 耗时(ns):500300 Calendar.getInstance().getTimeInMillis() 1630315030956 耗时(ns):19424400 参考: https://www.cnblogs.com/jpfss/p/10455524.html 转载请注明出处:BestEternity亲笔。 from:https://blog.csdn.net/BestEternity/article/details/119998914
View Details@Transactional 详解 示例
Spring 事务管理分为编码式和声明式的两种方式。编程式事务指的是通过编码方式实现事务;声明式事务基于AOP,将具体业务逻辑与事务处理解耦。
声明式事务管理使业务代码逻辑不受污染, 因此在实际使用中声明式事务用的比较多。
声明式事务有两种方式,一种是在配置文件中做相关的事务规则声明,另一种是基于@Transactional 注解的方式。
一口气说出 6种,@Transactional注解的失效场景
昨天公众号粉丝咨询了一个问题,说自己之前面试被问@Transactional注解哪些场景下会失效,一时语塞致使面试失败。所以今天简单的和大家分享一下@Transactional相关的知识。@Transactional 注解相信大家并不陌生,平时开发中很常用的一个注解,它能保证方法内多个数据库操作要么同时成功、要么同时失败。使用@Transactional注解时需要注意许多的细节,不然你会发现@Transactional总是莫名其妙的就失效了。
View DetailsJava stream排序
List<类> list; 代表某集合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
//返回 对象集合以类属性一升序排序 list.stream().sorted(Comparator.comparing(类::属性一)); //返回 对象集合以类属性一降序排序 注意两种写法 list.stream().sorted(Comparator.comparing(类::属性一).reversed());//先以属性一升序,结果进行属性一降序 list.stream().sorted(Comparator.comparing(类::属性一,Comparator.reverseOrder()));//以属性一降序 //返回 对象集合以类属性一升序 属性二升序 list.stream().sorted(Comparator.comparing(类::属性一).thenComparing(类::属性二)); //返回 对象集合以类属性一降序 属性二升序 注意两种写法 list.stream().sorted(Comparator.comparing(类::属性一).reversed().thenComparing(类::属性二));//先以属性一升序,升序结果进行属性一降序,再进行属性二升序 list.stream().sorted(Comparator.comparing(类::属性一,Comparator.reverseOrder()).thenComparing(类::属性二));//先以属性一降序,再进行属性二升序 //返回 对象集合以类属性一降序 属性二降序 注意两种写法 list.stream().sorted(Comparator.comparing(类::属性一).reversed().thenComparing(类::属性二,Comparator.reverseOrder()));//先以属性一升序,升序结果进行属性一降序,再进行属性二降序 list.stream().sorted(Comparator.comparing(类::属性一,Comparator.reverseOrder()).thenComparing(类::属性二,Comparator.reverseOrder()));//先以属性一降序,再进行属性二降序 //返回 对象集合以类属性一升序 属性二降序 注意两种写法 list.stream().sorted(Comparator.comparing(类::属性一).reversed().thenComparing(类::属性二).reversed());//先以属性一升序,升序结果进行属性一降序,再进行属性二升序,结果进行属性一降序属性二降序 list.stream().sorted(Comparator.comparing(类::属性一).thenComparing(类::属性二,Comparator.reverseOrder()));//先以属性一升序,再进行属性二降序 //空/Null数据排序 list.stream().sorted(Comparator.comparing(类::属性一).thenComparing(item -> item.属性二, Comparator.nullsLast(Date::compareTo))).collect(Collectors.toList()); //空/Null数据分组 Map<String, List<类>> map = list.stream().collect(Collectors.groupingBy(item -> { if (item.属性一 == null || item.属性一.equals("")) { return ""; } return DateFormat.getDateInstance().format(item.属性一); })) |
———————————————— 版权声明:本文为CSDN博主「小屁孩大帅-杨一凡」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/weixin_41722928/article/details/111993964
View DetailsString.format()的简单用法介绍
Java中String.format()的简单用法介绍 在运用字符串的时候,我们常常会用到String.fromat()函数来对字符串进行加工,得到我们想要的格式,那我们就来看看一些简单用法。 String.format()函数相当于将括号内的量,按照自己的想要的格式拼接成一个字符串,然后输出。作用效果有点像C语言中的printf()函数。 常用转换符: ①通用浮点数: 比%f,%a长度更短的一种格式输出,显示6位有效数字,而且会进行四舍五入。 ②散列码: 不必用冗长的线性搜索技术来查找一个键,而是用一个特殊的值,名为“散列码”。散列码可以获取对象中的信息,然后将其转换成那个对象“相对唯一”的整数(int)。所有对象都有一个散列码。
View Details正则表达式 整数
^[1-9]\d*$ //匹配正整数 ^-[1-9]\d*$ //匹配负整数 ^-?[1-9]\d*|0$ //匹配整数 ^[1-9]\d*|0$ //匹配非负整数(正整数 + 0) ^-[1-9]\d*|0$ //匹配非正整数(负整数 + 0) ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ //匹配正浮点数 ^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ //匹配负浮点数 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$ //匹配浮点数 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ //匹配非负浮点数(正浮点数 + 0) ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$ //匹配非正浮点数(负浮点数 + 0) 参照来源:http://www.cnblogs.com/freexiaoyu/archive/2008/12/17/1356690.html
View Details