@ -29,7 +29,7 @@
< meta name = "description" content = "learn from zero,技术博客,Nicksxs,史学森" >
< meta name = "description" content = "learn from zero,技术博客,Nicksxs,史学森" >
< meta property = "og:type" content = "website" >
< meta property = "og:type" content = "website" >
< meta property = "og:title" content = "Nicksxs's Blog" >
< 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:site_name" content = "Nicksxs's Blog" >
< meta property = "og:description" content = "learn from zero,技术博客,Nicksxs,史学森" >
< meta property = "og:description" content = "learn from zero,技术博客,Nicksxs,史学森" >
< meta property = "article:author" content = "Nicksxs" >
< meta property = "article:author" content = "Nicksxs" >
@ -40,7 +40,7 @@
< meta property = "article:tag" content = "森哥" >
< meta property = "article:tag" content = "森哥" >
< meta name = "twitter:card" content = "summary" >
< 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" >
< script id = "page-configurations" >
@ -53,7 +53,7 @@
};
};
< / script >
< / 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 async src = "https://www.googletagmanager.com/gtag/js?id=UA-61358619-1" > < / script >
< script >
< script >
@ -207,12 +207,155 @@
< div class = "post-block" >
< div class = "post-block" >
< div class = "posts-collapse" >
< div class = "posts-collapse" >
< div class = "collection-title" >
< div class = "collection-title" >
< h2 class = "collection-header" > j ava
< h2 class = "collection-header" > J ava
< small > Category< / small >
< small > Category< / small >
< / h2 >
< / h2 >
< / div >
< / div >
< 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-08-02T21:13:59+08:00"
content="2020-08-02">
08-02
< / time >
< / div >
< div class = "post-title" >
< a class = "post-title-link" href = "/2020/08/02/%E8%81%8A%E8%81%8A-Java-%E8%87%AA%E5%B8%A6%E7%9A%84%E9%82%A3%E4%BA%9B%E9%80%86%E5%A4%A9%E5%B7%A5%E5%85%B7/" 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-06-06T22:39:38+08:00"
content="2020-06-06">
06-06
< / time >
< / div >
< div class = "post-title" >
< a class = "post-title-link" href = "/2020/06/06/%E8%81%8A%E8%81%8A-Dubbo-%E7%9A%84-SPI-%E7%BB%AD%E4%B9%8B%E8%87%AA%E9%80%82%E5%BA%94%E6%8B%93%E5%B1%95/" itemprop = "url" >
< span itemprop = "name" > 聊聊 Dubbo 的 SPI 续之自适应拓展< / 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-05-31T21:06:13+08:00"
content="2020-05-31">
05-31
< / time >
< / div >
< div class = "post-title" >
< a class = "post-title-link" href = "/2020/05/31/%E8%81%8A%E8%81%8A-Dubbo-%E7%9A%84-SPI/" itemprop = "url" >
< span itemprop = "name" > 聊聊 Dubbo 的 SPI< / 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-05-22T23:26:50+08:00"
content="2020-05-22">
05-22
< / time >
< / div >
< div class = "post-title" >
< a class = "post-title-link" href = "/2020/05/22/%E8%81%8A%E8%81%8A%E6%88%91%E5%88%9A%E5%AD%A6%E4%BC%9A%E7%9A%84%E5%BA%94%E7%94%A8%E8%AF%8A%E6%96%AD%E6%96%B9%E6%B3%95/" itemprop = "url" >
< span itemprop = "name" > 聊聊我刚学会的应用诊断方法< / 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-04-05T21:41:41+08:00"
content="2020-04-05">
04-05
< / time >
< / div >
< div class = "post-title" >
< a class = "post-title-link" href = "/2020/04/05/Comparator%E4%BD%BF%E7%94%A8%E5%B0%8F%E8%AE%B0/" itemprop = "url" >
< span itemprop = "name" > Comparator使用小记< / 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-02-16T10:39:42+08:00"
content="2020-02-16">
02-16
< / time >
< / div >
< div class = "post-title" >
< a class = "post-title-link" href = "/2020/02/16/Maven%E5%AE%9E%E7%94%A8%E5%B0%8F%E6%8A%80%E5%B7%A7/" itemprop = "url" >
< span itemprop = "name" > Maven实用小技巧< / 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-02-09T20:52:02+08:00"
content="2020-02-09">
02-09
< / time >
< / div >
< div class = "post-title" >
< a class = "post-title-link" href = "/2020/02/09/G1%E6%94%B6%E9%9B%86%E5%99%A8%E6%A6%82%E8%BF%B0/" itemprop = "url" >
< span itemprop = "name" > G1收集器概述< / span >
< / a >
< / div >
< / header >
< / article >
< div class = "collection-year" >
< div class = "collection-year" >
< span class = "collection-header" > 2019< / span >
< span class = "collection-header" > 2019< / span >
< / div >
< / div >
@ -222,15 +365,35 @@
< div class = "post-meta" >
< div class = "post-meta" >
< time itemprop = "dateCreated"
< time itemprop = "dateCreated"
datetime="2019-09-23T23:40:05+08:00"
content="2019-09-23">
09-23
datetime="2019-12-21T01:03:09+08:00"
content="2019-12-21">
12-21
< / time >
< / div >
< div class = "post-title" >
< a class = "post-title-link" href = "/2019/12/21/%E8%81%8A%E8%81%8AJava%E4%B8%AD%E7%9A%84%E5%8D%95%E4%BE%8B%E6%A8%A1%E5%BC%8F/" 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="2019-12-07T00:54:19+08:00"
content="2019-12-07">
12-07
< / time >
< / time >
< / div >
< / div >
< div class = "post-title" >
< div class = "post-title" >
< a class = "post-title-link" href = "/2019/09/23/AbstractQueuedSynchronizer/" itemprop = "url" >
< span itemprop = "name" > AbstractQueuedSynchronizer< / span >
< a class = "post-title-link" href = "/2019/12/07/JVM-G1-Part-1 /" itemprop = "url" >
< span itemprop = "name" > JVM源码分析之G1垃圾收集器分析一 < / span >
< / a >
< / a >
< / div >
< / div >
@ -562,164 +725,6 @@
< 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 >
{
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 bp = document.createElement('script');
var curProtocol = window.location.protocol.split(':')[0];
bp.src = (curProtocol === 'https') ? 'https://zz.bdstatic.com/linksubmit/push.js' : 'http://push.zhanzhang.baidu.com/push.js';
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(bp, s);
})();
< / script >
< script src = "//cdn.jsdelivr.net/npm/quicklink@1/dist/quicklink.umd.js" > < / script >
< script src = "//cdn.jsdelivr.net/npm/quicklink@1/dist/quicklink.umd.js" > < / script >
< script >
< script >
window.addEventListener('load', () => {
window.addEventListener('load', () => {