private static Random myRand; //基本java随机对象
private static SecureRandom mySecureRand; //安全随机对象
private static String s_id; //ip地址字符串
static
{
mySecureRand = new SecureRandom();
//用安全随机对象产生一随机数并用该随机数初始化基本java随机对象
long secureInitializer = mySecureRand.nextLong();
myRand = new Random(secureInitializer);
try
{
//获得当前主机的ip地址字符串
s_id = InetAddress.getLocalHost().toString();
}
catch (UnknownHostException e)
{
e.printStackTrace();
}
}
/**
- 缺省构造器
*/
public GuidGenerator()
{
}
/**
-
缺省的产生随机GUID的方法
-
@return 正确返回32字节的字符串,错误则返回长度为零的字符串
*/
public static String genRandomGUID()
{
return genRandomGUID(false);
}
/**
-
产生随机GUID的方法,考虑产生GUID的效率,将来可以应用设计模式,先生成一堆id并缓存
-
@param secure true : 带安全选项,用安全随机数对象生成
-
false : 不带安全选项,用基本随机数对象生成
-
@return 正确返回32字节的字符串,错误则返回长度为零的字符串
*/
public static String genRandomGUID(boolean secure)
{
String valueBeforeMD5 = “”; //消息消化对象消化前的字符串
String valueAfterMD5 = “”; //经消息消化对象消化后的GUID字符串
MessageDigest md5 = null; //消息消化对象
StringBuffer sbValueBeforeMD5 = new StringBuffer();
try
{
md5 = MessageDigest.getInstance(“MD5”);
}
catch (NoSuchAlgorithmException e)
{
System.out.println("Error: " + e);
return valueBeforeMD5;
}
long time = System.currentTimeMillis(); //获得系统时间
long rand = 0; //随机数
if (secure) //用安全随机对象获得随机数
{
rand = mySecureRand.nextLong();
}
else
//用基本随机对象获得随机数
{
rand = myRand.nextLong();
}
//拼接组成GUID的各个信息
sbValueBeforeMD5.append(s_id);
sbValueBeforeMD5.append(“:”);
sbValueBeforeMD5.append(Long.toString(time));
sbValueBeforeMD5.append(“:”);
sbValueBeforeMD5.append(Long.toString(rand));
valueBeforeMD5 = sbValueBeforeMD5.toString();
md5.update(valueBeforeMD5.getBytes());
byte[] array = md5.digest(); //消息消化对象进行消化动作,返回128bit
String strTemp = “”;
for (int i = 0; i < array.length; i++)
{
strTemp = (Integer.toHexString(array[i] & 0XFF));
if (strTemp.length() == 1)
{
valueAfterMD5 = valueAfterMD5 + “0” + strTemp;
}
else
{
valueAfterMD5 = valueAfterMD5 + strTemp;
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
2021年Java中高级面试必备知识点总结
在这个部分总结了2019年到目前为止Java常见面试问题,取其面试核心编写成这份文档笔记,从中分析面试官的心理,摸清面试官的“套路”,可以说搞定90%以上的Java中高级面试没一点难度。
本节总结的内容涵盖了:消息队列、Redis缓存、分库分表、读写分离、设计高并发系统、分布式系统、高可用系统、SpringCloud微服务架构等一系列互联网主流高级技术的知识点。
目录:
(上述只是一个整体目录大纲,每个点里面都有如下所示的详细内容,从面试问题——分析面试官心理——剖析面试题——完美解答的一个过程)
部分内容:
对于每一个做技术的来说,学习是不能停止的,小编把2019年到目前为止Java的核心知识提炼出来了,无论你现在是处于什么阶段,如你所见,这份文档的内容无论是对于你找面试工作还是提升技术广度深度都是完美的。
不想被后浪淘汰的话,赶紧搞起来吧,高清完整版一共是888页,需要的话可以点赞+关注
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
处于什么阶段,如你所见,这份文档的内容无论是对于你找面试工作还是提升技术广度深度都是完美的。
不想被后浪淘汰的话,赶紧搞起来吧,高清完整版一共是888页,需要的话可以点赞+关注
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-kXLWocVk-1712848482752)]