@ -29,7 +29,7 @@
< meta name = "description" content = "learn from zero,技术博客,Nicksxs,史学森" >
< meta property = "og:type" content = "website" >
< meta property = "og:title" content = "Nicksxs's Blog" >
< meta property = "og:url" content = "https://nicksxs.me/categories/J ava/index.html" >
< meta property = "og:url" content = "https://nicksxs.me/categories/j ava/index.html" >
< meta property = "og:site_name" content = "Nicksxs's Blog" >
< meta property = "og:description" content = "learn from zero,技术博客,Nicksxs,史学森" >
< meta property = "article:author" content = "Nicksxs" >
@ -40,7 +40,7 @@
< meta property = "article:tag" content = "森哥" >
< meta name = "twitter:card" content = "summary" >
< link rel = "canonical" href = "https://nicksxs.me/categories/J ava/" >
< link rel = "canonical" href = "https://nicksxs.me/categories/j ava/" >
< script id = "page-configurations" >
@ -53,7 +53,7 @@
};
< / script >
< title > Category: J ava | Nicksxs's Blog< / title >
< title > Category: j ava | Nicksxs's Blog< / title >
< script async src = "https://www.googletagmanager.com/gtag/js?id=UA-61358619-1" > < / script >
< script >
@ -207,14 +207,14 @@
< div class = "post-block" >
< div class = "posts-collapse" >
< div class = "collection-title" >
< h2 class = "collection-header" > J ava
< h2 class = "collection-header" > j ava
< small > Category< / small >
< / h2 >
< / div >
< div class = "collection-year" >
< span class = "collection-header" > 202 1< / span >
< span class = "collection-header" > 2019 < / span >
< / div >
< article itemscope itemtype = "http://schema.org/Article" >
@ -222,198 +222,15 @@
< div class = "post-meta" >
< time itemprop = "dateCreated"
datetime="2021-02-18T10:29:54 +08:00"
content="2021-02-18 ">
02-18
datetime="2019-09-23T23:40:05 +08:00"
content="2019-09-23 ">
09-23
< / time >
< / div >
< div class = "post-title" >
< a class = "post-title-link" href = "/2021/02/18/AQS%E7%AF%87%E4%B8%80/" itemprop = "url" >
< span itemprop = "name" > AQS篇一< / span >
< / a >
< / div >
< / header >
< / article >
< article itemscope itemtype = "http://schema.org/Article" >
< header class = "post-header" >
< div class = "post-meta" >
< time itemprop = "dateCreated"
datetime="2021-01-24T22:45:03+08:00"
content="2021-01-24">
01-24
< / time >
< / div >
< div class = "post-title" >
< a class = "post-title-link" href = "/2021/01/24/Leetcode-124-%E4%BA%8C%E5%8F%89%E6%A0%91%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E8%B7%AF%E5%BE%84%E5%92%8C-Binary-Tree-Maximum-Path-Sum-%E9%A2%98%E8%A7%A3%E5%88%86%E6%9E%90/" itemprop = "url" >
< span itemprop = "name" > Leetcode 124 二叉树中的最大路径和(Binary Tree Maximum Path Sum) 题解分析< / span >
< / a >
< / div >
< / header >
< / article >
< article itemscope itemtype = "http://schema.org/Article" >
< header class = "post-header" >
< div class = "post-meta" >
< time itemprop = "dateCreated"
datetime="2021-01-10T21:09:28+08:00"
content="2021-01-10">
01-10
< / time >
< / div >
< div class = "post-title" >
< a class = "post-title-link" href = "/2021/01/10/Leetcode-160-%E7%9B%B8%E4%BA%A4%E9%93%BE%E8%A1%A8-intersection-of-two-linked-lists-%E9%A2%98%E8%A7%A3%E5%88%86%E6%9E%90/" itemprop = "url" >
< span itemprop = "name" > Leetcode 160 相交链表(intersection-of-two-linked-lists) 题解分析< / span >
< / a >
< / div >
< / header >
< / article >
< div class = "collection-year" >
< span class = "collection-header" > 2020< / span >
< / div >
< article itemscope itemtype = "http://schema.org/Article" >
< header class = "post-header" >
< div class = "post-meta" >
< time itemprop = "dateCreated"
datetime="2020-12-13T21:19:43+08:00"
content="2020-12-13">
12-13
< / time >
< / div >
< div class = "post-title" >
< a class = "post-title-link" href = "/2020/12/13/Leetcode-105-%E4%BB%8E%E5%89%8D%E5%BA%8F%E4%B8%8E%E4%B8%AD%E5%BA%8F%E9%81%8D%E5%8E%86%E5%BA%8F%E5%88%97%E6%9E%84%E9%80%A0%E4%BA%8C%E5%8F%89%E6%A0%91-Construct-Binary-Tree-from-Preorder-and-Inorder-Traversal-%E9%A2%98%E8%A7%A3%E5%88%86%E6%9E%90/" itemprop = "url" >
< span itemprop = "name" > Leetcode 105 从前序与中序遍历序列构造二叉树(Construct Binary Tree from Preorder and Inorder Traversal) 题解分析< / span >
< / a >
< / div >
< / header >
< / article >
< article itemscope itemtype = "http://schema.org/Article" >
< header class = "post-header" >
< div class = "post-meta" >
< time itemprop = "dateCreated"
datetime="2020-12-06T21:55:55+08:00"
content="2020-12-06">
12-06
< / time >
< / div >
< div class = "post-title" >
< a class = "post-title-link" href = "/2020/12/06/Leetcode-155-%E6%9C%80%E5%B0%8F%E6%A0%88-Min-Stack-%E9%A2%98%E8%A7%A3%E5%88%86%E6%9E%90/" itemprop = "url" >
< span itemprop = "name" > Leetcode 155 最小栈(Min Stack) 题解分析< / span >
< / a >
< / div >
< / header >
< / article >
< article itemscope itemtype = "http://schema.org/Article" >
< header class = "post-header" >
< div class = "post-meta" >
< time itemprop = "dateCreated"
datetime="2020-11-22T21:37:55+08:00"
content="2020-11-22">
11-22
< / time >
< / div >
< div class = "post-title" >
< a class = "post-title-link" href = "/2020/11/22/%E8%81%8A%E8%81%8A-Dubbo-%E7%9A%84%E5%AE%B9%E9%94%99%E6%9C%BA%E5%88%B6/" itemprop = "url" >
< span itemprop = "name" > 聊聊 Dubbo 的容错机制< / span >
< / a >
< / div >
< / header >
< / article >
< article itemscope itemtype = "http://schema.org/Article" >
< header class = "post-header" >
< div class = "post-meta" >
< time itemprop = "dateCreated"
datetime="2020-11-15T23:47:20+08:00"
content="2020-11-15">
11-15
< / time >
< / div >
< div class = "post-title" >
< a class = "post-title-link" href = "/2020/11/15/Leetcode-234-%E5%9B%9E%E6%96%87%E8%81%94%E8%A1%A8-Palindrome-Linked-List-%E9%A2%98%E8%A7%A3%E5%88%86%E6%9E%90/" itemprop = "url" >
< span itemprop = "name" > Leetcode 234 回文链表(Palindrome Linked List) 题解分析< / span >
< / a >
< / div >
< / header >
< / article >
< article itemscope itemtype = "http://schema.org/Article" >
< header class = "post-header" >
< div class = "post-meta" >
< time itemprop = "dateCreated"
datetime="2020-11-08T22:53:19+08:00"
content="2020-11-08">
11-08
< / time >
< / div >
< div class = "post-title" >
< a class = "post-title-link" href = "/2020/11/08/%E8%81%8A%E8%81%8A-Java-%E7%9A%84%E7%B1%BB%E5%8A%A0%E8%BD%BD%E6%9C%BA%E5%88%B6/" itemprop = "url" >
< span itemprop = "name" > 聊聊 Java 的类加载机制一< / span >
< / a >
< / div >
< / header >
< / article >
< article itemscope itemtype = "http://schema.org/Article" >
< header class = "post-header" >
< div class = "post-meta" >
< time itemprop = "dateCreated"
datetime="2020-11-01T23:26:43+08:00"
content="2020-11-01">
11-01
< / time >
< / div >
< div class = "post-title" >
< a class = "post-title-link" href = "/2020/11/01/Apollo-%E7%9A%84-value-%E6%B3%A8%E8%A7%A3%E6%98%AF%E6%80%8E%E4%B9%88%E8%87%AA%E5%8A%A8%E6%9B%B4%E6%96%B0%E7%9A%84/" itemprop = "url" >
< span itemprop = "name" > Apollo 的 value 注解是怎么自动更新的< / span >
< / a >
< / div >
< / header >
< / article >
< article itemscope itemtype = "http://schema.org/Article" >
< header class = "post-header" >
< div class = "post-meta" >
< time itemprop = "dateCreated"
datetime="2020-10-25T23:43:29+08:00"
content="2020-10-25">
10-25
< / time >
< / div >
< div class = "post-title" >
< a class = "post-title-link" href = "/2020/10/25/Leetcode-104-%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E5%A4%A7%E6%B7%B1%E5%BA%A6-Maximum-Depth-of-Binary-Tree-%E9%A2%98%E8%A7%A3%E5%88%86%E6%9E%90/" itemprop = "url" >
< span itemprop = "name" > Leetcode 104 二叉树的最大深度(Maximum Depth of Binary Tree) 题解分析< / span >
< a class = "post-title-link" href = "/2019/09/23/AbstractQueuedSynchronizer/" itemprop = "url" >
< span itemprop = "name" > AbstractQueuedSynchronizer< / span >
< / a >
< / div >
@ -427,9 +244,6 @@
< nav class = "pagination" >
< span class = "page-number current" > 1< / span > < a class = "page-number" href = "/categories/Java/page/2/" > 2< / a > < a class = "page-number" href = "/categories/Java/page/3/" > 3< / a > < a class = "extend next" rel = "next" href = "/categories/Java/page/2/" > < i class = "fa fa-angle-right" aria-label = "Next page" > < / i > < / a >
< / nav >
@ -764,6 +578,213 @@
< script src = "//cdn.jsdelivr.net/npm/quicklink@1/dist/quicklink.umd.js" > < / script >
< script >
window.addEventListener('load', () => {
quicklink({
timeout : 3000,
priority: true,
ignores : [uri => uri.includes('#'),uri => uri === 'https://nicksxs.me/categories/java/',]
});
});
< / script >
< script >
function loadCount() {
var d = document, s = d.createElement('script');
s.src = 'https://nicksxs.disqus.com/count.js';
s.id = 'dsq-count-scr';
(d.head || d.body).appendChild(s);
}
// defer loading until the whole page loading is completed
window.addEventListener('load', loadCount, false);
< / script >
< / body >
< / html >
v class="busuanzi-count">
< script async src = "https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js" > < / script >
< span class = "post-meta-item" id = "busuanzi_container_site_uv" style = "display: none;" >
< span class = "post-meta-item-icon" >
< i class = "fa fa-user" > < / i >
< / span >
< span class = "site-uv" title = "Total Visitors" >
< span id = "busuanzi_value_site_uv" > < / span >
< / span >
< / span >
< span class = "post-meta-divider" > |< / span >
< span class = "post-meta-item" id = "busuanzi_container_site_pv" style = "display: none;" >
< span class = "post-meta-item-icon" >
< i class = "fa fa-eye" > < / i >
< / span >
< span class = "site-pv" title = "Total Views" >
< span id = "busuanzi_value_site_pv" > < / span >
< / span >
< / span >
< / div >
< script >
(function() {
function leancloudSelector(url) {
url = encodeURI(url);
return document.getElementById(url).querySelector('.leancloud-visitors-count');
}
function addCount(Counter) {
var visitors = document.querySelector('.leancloud_visitors');
var url = decodeURI(visitors.id);
var title = visitors.dataset.flagTitle;
Counter('get', '/classes/Counter?where=' + encodeURIComponent(JSON.stringify({ url })))
.then(response => response.json())
.then(({ results }) => {
if (results.length > 0) {
var counter = results[0];
leancloudSelector(url).innerText = counter.time + 1;
Counter('put', '/classes/Counter/' + counter.objectId, { time: { '__op': 'Increment', 'amount': 1 } })
.catch(error => {
console.error('Failed to save visitor count', error);
});
} else {
leancloudSelector(url).innerText = 'Counter not initialized! More info at console err msg.';
console.error('ATTENTION! LeanCloud counter has security bug, see how to solve it here: https://github.com/theme-next/hexo-leancloud-counter-security. \n However, you can still use LeanCloud without security, by setting `security` option to `false`.');
}
})
.catch(error => {
console.error('LeanCloud Counter Error', error);
});
}
function showTime(Counter) {
var visitors = document.querySelectorAll('.leancloud_visitors');
var entries = [...visitors].map(element => {
return decodeURI(element.id);
});
Counter('get', '/classes/Counter?where=' + encodeURIComponent(JSON.stringify({ url: { '$in': entries } })))
.then(response => response.json())
.then(({ results }) => {
for (let url of entries) {
let target = results.find(item => item.url === url);
leancloudSelector(url).innerText = target ? target.time : 0;
}
})
.catch(error => {
console.error('LeanCloud Counter Error', error);
});
}
let { app_id, app_key, server_url } = {"enable":true,"app_id":"ysza182Vghlqjdt7QiwGLLJy-gzGzoHsz","app_key":"s9GDqbn7gnGGkusf66YRVccw","server_url":"https://leancloud.cn","security":true};
function fetchData(api_server) {
var Counter = (method, url, data) => {
return fetch(`${api_server}/1.1${url}`, {
method,
headers: {
'X-LC-Id' : app_id,
'X-LC-Key' : app_key,
'Content-Type': 'application/json',
},
body: JSON.stringify(data)
});
};
if (CONFIG.page.isPost) {
if (CONFIG.hostname !== location.hostname) return;
addCount(Counter);
} else if (document.querySelectorAll('.post-title-link').length >= 1) {
showTime(Counter);
}
}
let api_server = app_id.slice(-9) !== '-MdYXbMMI' ? server_url : `https://${app_id.slice(0, 8).toLowerCase()}.api.lncldglobal.com`;
if (api_server) {
fetchData(api_server);
} else {
fetch('https://app-router.leancloud.cn/2/route?appId=' + app_id)
.then(response => response.json())
.then(({ api_server }) => {
fetchData('https://' + api_server);
});
}
})();
< / script >
< / div >
< / footer >
< / div >
< script src = "/lib/anime.min.js" > < / script >
< script src = "//cdn.jsdelivr.net/npm/jquery@3/dist/jquery.min.js" > < / script >
< script src = "//cdn.jsdelivr.net/gh/fancyapps/fancybox@3/dist/jquery.fancybox.min.js" > < / script >
< script src = "//cdn.jsdelivr.net/npm/lozad@1/dist/lozad.min.js" > < / script >
< script src = "/lib/velocity/velocity.min.js" > < / script >
< script src = "/lib/velocity/velocity.ui.min.js" > < / script >
< script src = "/js/utils.js" > < / script >
< script src = "/js/motion.js" > < / script >
< script src = "/js/schemes/pisces.js" > < / script >
< script src = "/js/next-boot.js" > < / script >
< script >
(function(){
var canonicalURL, curProtocol;
//Get the < link > tag
var x=document.getElementsByTagName("link");
//Find the last canonical URL
if(x.length > 0){
for (i=0;i< x.length ; i + + ) {
if(x[i].rel.toLowerCase() == 'canonical' & & x[i].href){
canonicalURL=x[i].href;
}
}
}
//Get protocol
if (!canonicalURL){
curProtocol = window.location.protocol.split(':')[0];
}
else{
curProtocol = canonicalURL.split(':')[0];
}
//Get current URL if the canonical URL does not exist
if (!canonicalURL) canonicalURL = window.location.href;
//Assign script content. Replace current URL with the canonical URL
!function(){var e=/([http|https]:\/\/[a-zA-Z0-9\_\.]+\.baidu\.com)/gi,r=canonicalURL,t=document.referrer;if(!e.test(r)){var n=(String(curProtocol).toLowerCase() === 'https')?"https://sp0.baidu.com/9_Q4simg2RQJ8t7jm9iCKT-xh_/s.gif":"//api.share.baidu.com/s.gif";t?(n+="?r="+encodeURIComponent(document.referrer),r&&(n+="&l="+r)):r&&(n+="?l="+r); var i=new Image;i.src=n}}(window);})();
< / script >
< script src = "//cdn.jsdelivr.net/npm/quicklink@1/dist/quicklink.umd.js" > < / script >
< script >
window.addEventListener('load', () => {