微信快速开发框架(五)-- 利用快速开发框架,快速搭建微信浏览博客园首页文章...

这几天接连发布了《快速开发微信公众平台框架---简介》和《体验微信公众平台快速开发框架》几篇关于微信平台的文章,不过反响一般,可能需求不是很多吧。闲来无事,还是继续改造一下这个框架。

今天更新了框架代码,听取了 @RMay 的建议,加入了一个信息中间件,用来处理xelement,避免了重复解析,所以所有接口都更改了下。此次更新如下:

1、增加信息中间件MiddleMessage

2、更改了接口参数类型,把原来的XElement都改成了MiddleMessage

3、删除了Demo项目,以后都用WebDemo进行演示。

所有代码都已经更新到我的Gibhub上

介绍了更新内容,下面继续打造我们的Demo项目。

之前我们写的,都是返回文本信息,今天上午,我加入了一个CnblogsArticleNewsMessageHandler,主要是返回一个ResponseNewsMessage(图文信息),只要发消息:博客园文章,就能获取在首页前5的文章列表,但为了避免给博客园造成鸭梨,我把信息缓存了下,10分钟更新一次。这次主要采用了webclient+正则的方式,采集的方式无所谓,大家都可以自由发挥。

先看下CnblogsArticleNewsMessageHandler:

public class CnblogsArticleNewsMessageHandler : IMessageHandler
    {
        public ResponseMessage HandlerRequestMessage(MiddleMessage msg)
        {
            //var request = new RequestTextMessage(xml);
            var response = new ResponseNewsMessage(msg.RequestMessage);
            var cnblogsFeed = new CnBlogsFeed(5);
            var articles = cnblogsFeed.GetTopCnblogsFeed();
            response.ArticleCount = articles.Count;
            response.CreateTime = DateTime.Now.Ticks;
            response.Articles = articles;

            return response;
        }
    }

大家可以看到,接口参数已经改成了MiddleMessage,这样就避免了原先我再new一个RequestMessage了, 直接用了MiddleMessage.RequestMessage。

CnBlogsFeed是一个自己写的采集类,目的是采集博客园首页数据,数字类型的构造函数,是一个提取数量,因为微信平台的限制,这个值必须在1-10之间。

因为是图文消息,而博客园呢只在Description中提供了用户的头像,而微信多图文消息会把第一篇文章的图片作为主图,大小为:320*200,所以我把第一张图片做成了默认图片,小图的话如果用户有头像就用用户的头像,如果没有则会显示一个默认小图,大小为:200*200。

看下CnBlogsFeed类,写的不好,将就看看吧:

public class CnBlogsFeed
    {
        private int m_topNum = 5;

        //缓存过期时间,这里是10分钟
        private static int s_timeout = 10 * 60 * 1000;
        //缓存过期时间
        private static DateTime s_outDate = DateTime.Now;
        //博客园文章列表正则表达式
        private static Regex s_cnblogsIndexRegex = new Regex("\\s*.*\\s*.*\\s*.*\\s*.*\\s*.*\\s*.*\\s*.*\\s*\\s*

.*)\"\\s*target=\"_blank\">(?.*)</a>.*\\s*<p\\s*class=\"post_item_summary\">\\s*(?<content>.*)\\s*</p>"</span><span style="background:#FFFFFF;color:#000000;">); </span><span style="background:#FFFFFF;color:#008000;">//内容中,用户头像正则表达式 </span><span style="background:#FFFFFF;color:#0000FF;">private static </span><span style="background:#FFFFFF;color:#2b91af;">Regex </span><span style="background:#FFFFFF;color:#000000;">s_picUrlRegex = </span><span style="background:#FFFFFF;color:#0000FF;">new </span><span style="background:#FFFFFF;color:#2b91af;">Regex</span><span style="background:#FFFFFF;color:#000000;">(</span><span style="background:#FFFFFF;color:#a31515;">"src=\"(?<picurl>.*)\"\\s"</span><span style="background:#FFFFFF;color:#000000;">); </span><span style="background:#FFFFFF;color:#008000;">//博客园文章列表uri </span><span style="background:#FFFFFF;color:#0000FF;">private static string </span><span style="background:#FFFFFF;color:#000000;">s_cnblogsIndexUri = </span><span style="background:#FFFFFF;color:#a31515;">"http://www.cnblogs.com/mvc/AggSite/PostList.aspx?CategoryId=808&PageIndex=1"</span><span style="background:#FFFFFF;color:#000000;">; </span><span style="background:#FFFFFF;color:#008000;">//默认的一个大图,一个小图的图片地址 </span><span style="background:#FFFFFF;color:#0000FF;">private static string </span><span style="background:#FFFFFF;color:#000000;">s_defaultBigPicUri = </span><span style="background:#FFFFFF;color:#a31515;">"http://wx.jamesying.com/images/default_title.jpg"</span><span style="background:#FFFFFF;color:#000000;">; </span><span style="background:#FFFFFF;color:#0000FF;">private static string </span><span style="background:#FFFFFF;color:#000000;">s_defaultSmallPicUri = </span><span style="background:#FFFFFF;color:#a31515;">"http://wx.jamesying.com/images/default_small.jpg"</span><span style="background:#FFFFFF;color:#000000;">; </span><span style="background:#FFFFFF;color:#008000;">//用来缓存请求过来的数据,不高兴用Cache了。 </span><span style="background:#FFFFFF;color:#0000FF;">private static </span><span style="background:#FFFFFF;color:#2b91af;">List</span><span style="background:#FFFFFF;color:#000000;"><</span><span style="background:#FFFFFF;color:#2b91af;">Article</span><span style="background:#FFFFFF;color:#000000;">> s_articles = </span><span style="background:#FFFFFF;color:#0000FF;">null</span><span style="background:#FFFFFF;color:#000000;">; </span><span style="background:#FFFFFF;color:#0000FF;">public </span><span style="background:#FFFFFF;color:#000000;">CnBlogsFeed(</span><span style="background:#FFFFFF;color:#0000FF;">int </span><span style="background:#FFFFFF;color:#000000;">topNum) { m_topNum = topNum; } </span><span style="background:#FFFFFF;color:#0000FF;">public </span><span style="background:#FFFFFF;color:#2b91af;">List</span><span style="background:#FFFFFF;color:#000000;"><</span><span style="background:#FFFFFF;color:#2b91af;">Article</span><span style="background:#FFFFFF;color:#000000;">> GetTopCnblogsFeed() { </span><span style="background:#FFFFFF;color:#0000FF;">if </span><span style="background:#FFFFFF;color:#000000;">(s_articles == </span><span style="background:#FFFFFF;color:#0000FF;">null</span><span style="background:#FFFFFF;color:#000000;">) { GetTopCnblogsFeed(m_topNum); } </span><span style="background:#FFFFFF;color:#0000FF;">else </span><span style="background:#FFFFFF;color:#000000;">{ </span><span style="background:#FFFFFF;color:#0000FF;">if </span><span style="background:#FFFFFF;color:#000000;">(</span><span style="background:#FFFFFF;color:#2b91af;">DateTime</span><span style="background:#FFFFFF;color:#000000;">.Now > s_outDate) { GetTopCnblogsFeed(m_topNum); } } </span><span style="background:#FFFFFF;color:#0000FF;">return </span><span style="background:#FFFFFF;color:#000000;">s_articles; } </span><span style="background:#FFFFFF;color:#0000FF;">private void </span><span style="background:#FFFFFF;color:#000000;">GetTopCnblogsFeed(</span><span style="background:#FFFFFF;color:#0000FF;">int </span><span style="background:#FFFFFF;color:#000000;">m_topNum) { </span><span style="background:#FFFFFF;color:#0000FF;">try </span><span style="background:#FFFFFF;color:#000000;">{ </span><span style="background:#FFFFFF;color:#0000FF;">var </span><span style="background:#FFFFFF;color:#000000;">html = GetRemoteUri(s_cnblogsIndexUri, </span><span style="background:#FFFFFF;color:#2b91af;">Encoding</span><span style="background:#FFFFFF;color:#000000;">.UTF8); </span><span style="background:#FFFFFF;color:#0000FF;">var </span><span style="background:#FFFFFF;color:#000000;">matchs = s_cnblogsIndexRegex.Matches(html); </span><span style="background:#FFFFFF;color:#0000FF;">var </span><span style="background:#FFFFFF;color:#000000;">i = 0; s_articles = </span><span style="background:#FFFFFF;color:#0000FF;">new </span><span style="background:#FFFFFF;color:#2b91af;">List</span><span style="background:#FFFFFF;color:#000000;"><</span><span style="background:#FFFFFF;color:#2b91af;">Article</span><span style="background:#FFFFFF;color:#000000;">>(); </span><span style="background:#FFFFFF;color:#0000FF;">foreach </span><span style="background:#FFFFFF;color:#000000;">(</span><span style="background:#FFFFFF;color:#2b91af;">Match </span><span style="background:#FFFFFF;color:#000000;">match </span><span style="background:#FFFFFF;color:#0000FF;">in </span><span style="background:#FFFFFF;color:#000000;">matchs) { </span><span style="background:#FFFFFF;color:#0000FF;">if </span><span style="background:#FFFFFF;color:#000000;">(i >= m_topNum) </span><span style="background:#FFFFFF;color:#0000FF;">break</span><span style="background:#FFFFFF;color:#000000;">; </span><span style="background:#FFFFFF;color:#0000FF;">var </span><span style="background:#FFFFFF;color:#000000;">article = </span><span style="background:#FFFFFF;color:#0000FF;">new </span><span style="background:#FFFFFF;color:#2b91af;">Article </span><span style="background:#FFFFFF;color:#000000;">{ Title = match.Groups[2].Value, Url = match.Groups[1].Value, Description = match.Groups[3].Value }; </span><span style="background:#FFFFFF;color:#0000FF;">if </span><span style="background:#FFFFFF;color:#000000;">(i == 0) { article.PicUrl = s_defaultBigPicUri; } </span><span style="background:#FFFFFF;color:#0000FF;">else </span><span style="background:#FFFFFF;color:#000000;">{ </span><span style="background:#FFFFFF;color:#0000FF;">var </span><span style="background:#FFFFFF;color:#000000;">matchPic = s_picUrlRegex.Match(article.Description); </span><span style="background:#FFFFFF;color:#0000FF;">if </span><span style="background:#FFFFFF;color:#000000;">(matchPic.Success) { article.PicUrl = matchPic.Groups[1].Value; } </span><span style="background:#FFFFFF;color:#0000FF;">else </span><span style="background:#FFFFFF;color:#000000;">{ article.PicUrl = s_defaultSmallPicUri; } } s_articles.Add(article); i += 1; } s_outDate = </span><span style="background:#FFFFFF;color:#2b91af;">DateTime</span><span style="background:#FFFFFF;color:#000000;">.Now.AddMilliseconds(s_timeout); } </span><span style="background:#FFFFFF;color:#0000FF;">catch</span><span style="background:#FFFFFF;color:#000000;">(</span><span style="background:#FFFFFF;color:#2b91af;">Exception </span><span style="background:#FFFFFF;color:#000000;">ex) { s_articles = </span><span style="background:#FFFFFF;color:#0000FF;">null</span><span style="background:#FFFFFF;color:#000000;">; s_outDate = </span><span style="background:#FFFFFF;color:#2b91af;">DateTime</span><span style="background:#FFFFFF;color:#000000;">.Now; </span><span style="background:#FFFFFF;color:#0000FF;">#if </span><span style="background:#FFFFFF;color:#000000;">DEBUG </span><span style="background:#FFFFFF;color:#0000FF;">throw </span><span style="background:#FFFFFF;color:#000000;">ex; </span><span style="background:#FFFFFF;color:#0000FF;">#endif </span><span style="background:#FFFFFF;color:#000000;">} </span><span style="background:#FFFFFF;color:#008000;">//return s_articles; </span><span style="background:#FFFFFF;color:#000000;">} </span><span style="background:#FFFFFF;color:#0000FF;">private string </span><span style="background:#FFFFFF;color:#000000;">GetRemoteUri(</span><span style="background:#FFFFFF;color:#0000FF;">string </span><span style="background:#FFFFFF;color:#000000;">uri, </span><span style="background:#FFFFFF;color:#2b91af;">Encoding </span><span style="background:#FFFFFF;color:#000000;">encoding) { </span><span style="background:#FFFFFF;color:#0000FF;">var </span><span style="background:#FFFFFF;color:#000000;">client = </span><span style="background:#FFFFFF;color:#0000FF;">new </span><span style="background:#FFFFFF;color:#2b91af;">WebClient</span><span style="background:#FFFFFF;color:#000000;">(); client.Encoding = encoding; </span><span style="background:#FFFFFF;color:#0000FF;">return </span><span style="background:#FFFFFF;color:#000000;">client.DownloadString(uri); } }</span></pre> <p>基本工作完成,只要更改之前的TextMessageRole:</p> <pre class="code"><span style="background:#FFFFFF;color:#0000FF;">public </span><span style="background:#FFFFFF;color:#2b91af;">IMessageHandler </span><span style="background:#FFFFFF;color:#000000;">MessageRole(</span><span style="background:#FFFFFF;color:#2b91af;">MiddleMessage </span><span style="background:#FFFFFF;color:#000000;">msg) { </span><span style="background:#FFFFFF;color:#0000FF;">var </span><span style="background:#FFFFFF;color:#000000;">request = (</span><span style="background:#FFFFFF;color:#2b91af;">RequestTextMessage</span><span style="background:#FFFFFF;color:#000000;">)msg.RequestMessage; </span><span style="background:#FFFFFF;color:#0000FF;">if </span><span style="background:#FFFFFF;color:#000000;">(request.Content.IndexOf(</span><span style="background:#FFFFFF;color:#a31515;">"博客园文章"</span><span style="background:#FFFFFF;color:#000000;">) > -1) { </span><span style="background:#FFFFFF;color:#0000FF;">return new </span><span style="background:#FFFFFF;color:#2b91af;">CnblogsArticleNewsMessageHandler</span><span style="background:#FFFFFF;color:#000000;">(); } </span><span style="background:#FFFFFF;color:#0000FF;">if </span><span style="background:#FFFFFF;color:#000000;">(request.Content.IndexOf(</span><span style="background:#FFFFFF;color:#a31515;">"博客园"</span><span style="background:#FFFFFF;color:#000000;">) > -1) { </span><span style="background:#FFFFFF;color:#0000FF;">return new </span><span style="background:#FFFFFF;color:#2b91af;">CnblogsTextMessageHandler</span><span style="background:#FFFFFF;color:#000000;">(); } </span><span style="background:#FFFFFF;color:#0000FF;">return new </span><span style="background:#FFFFFF;color:#2b91af;">DefaultMessageHandler</span><span style="background:#FFFFFF;color:#000000;">(); }</span></pre> <p><span style="color:#000000;">这个规则简陋了点,之后会考虑下,打造一个文本命令的规范,因为Demo还不涉及到数据库,暂时都是手工判断。</span></p> <p>接下来上传代码,测试一下:</p> <p>输入博客园:</p> <p><a href="http://img.e-com-net.com/image/info8/19431268cbfc4cb1b6568bdd96ce8955.jpg" target="_blank"><img style="border:0px;;border:1px solid black;" title="image" src="http://img.e-com-net.com/image/info8/19431268cbfc4cb1b6568bdd96ce8955.jpg" alt="微信快速开发框架(五)-- 利用快速开发框架,快速搭建微信浏览博客园首页文章..._第1张图片" width="584" height="151"></a></p> <p> </p> <p><span style="color:#444444;">输入博客园文章:</span></p> <p><a href="http://img.e-com-net.com/image/info8/b1dc62ce412146269571658702dd8f67.jpg" target="_blank"><img style="border:0px;;border:1px solid black;" title="image" src="http://img.e-com-net.com/image/info8/b1dc62ce412146269571658702dd8f67.jpg" alt="微信快速开发框架(五)-- 利用快速开发框架,快速搭建微信浏览博客园首页文章..._第2张图片" width="573" height="357"></a></p> <p> </p> <p> </p> <p>测试完成,还能凑活用用,后续会用一个统一的文本命令方式,但有点纠结,不知道用什么方式,大家可以提供下意见。目前想到的是:</p> <p>关键字+命令+参数(可选)</p> <p>博客园+inday+5(博客园,用户为inday,前5文章)</p> <p>天气+上海(获取上海今天的天气)</p> <p>天气+上海+3(获取上海未来3天的天气)</p> <p>后面会写一系列教程,尽量把常用的消息类型都用到。</p> <p>PS:求职下吧,上海地区+电子商务类型公司,最好有旅游行业,职位的话无所谓,一个抬头而已,有发展前景,因本人30+了,不太想经常换工作了,薪资12k+就行,对于自我评价,还算是个负责的人,项目也好,学习也好,都会投入进去,对于C#比较精通点,也可以其他语言。需要的Email给我:james#taogame.com(#->@)</p> <p>PS2:今天收到宝宝的台历了,哈,真嗲</p> </div> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1304255830379499520"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(微信快速开发框架(五)-- 利用快速开发框架,快速搭建微信浏览博客园首页文章...)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1892363994723840000.htm" title="《运维工程师如何利用DeepSeek实现智能运维:分级实战指南》" target="_blank">《运维工程师如何利用DeepSeek实现智能运维:分级实战指南》</a> <span class="text-muted">进击的雷神</span> <a class="tag" taget="_blank" href="/search/%E6%AD%A6%E6%9E%97%E7%BB%9D%E5%AD%A6%EF%BC%9A%E6%8A%80%E6%9C%AF%E6%9D%82%E8%B0%88%E5%89%91%E5%BD%B1%E6%B5%81%E8%BD%AC/1.htm">武林绝学:技术杂谈剑影流转</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a> <div>目录智能运维革命:DeepSeek带来的范式转变DeepSeek核心运维能力全景解析分级实战场景与解决方案3.1初级工程师:自动化运维入门3.2中级工程师:复杂系统诊断与优化3.3高级工程师:架构级智能运维典型项目案例深度剖析4.1金融系统全链路监控体系构建4.2电商大促资源弹性调度实战4.3混合云环境下的安全加固分级能力提升路径效能提升数据验证挑战与演进方向构建智能运维体系行动指南1.智能运维革</div> </li> <li><a href="/article/1892362734704586752.htm" title="【人工智能】提升编程效率的6种GPT实用应用技巧!保姆级讲解!" target="_blank">【人工智能】提升编程效率的6种GPT实用应用技巧!保姆级讲解!</a> <span class="text-muted">ChatGPT-千鑫</span> <a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/AI%E9%A2%86%E5%9F%9F/1.htm">AI领域</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/gpt/1.htm">gpt</a><a class="tag" taget="_blank" href="/search/AI%E7%BC%96%E7%A8%8B/1.htm">AI编程</a> <div>文章目录实用教程:六大AI编程技巧解锁效率提升技巧1:快速实现需求demo操作步骤技巧2:代码审查——AI帮你提升代码质量操作步骤技巧3:错误排查——AI助你快速定位问题操作步骤技巧4:代码注释——AI帮你理解复杂逻辑操作步骤技巧5:数据整理——AI帮你高效准备测试数据操作步骤技巧6:学习未知代码库——AI助你快速掌握新工具操作步骤使用教程:全面掌握CodeMoss的高效编程工具(1)VSCode</div> </li> <li><a href="/article/1892362735564419072.htm" title="MapEX - Mind the map! Accounting for existing maps when estimating online HDMaps from sensors." target="_blank">MapEX - Mind the map! Accounting for existing maps when estimating online HDMaps from sensors.</a> <span class="text-muted">zisuina_2</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/3d/1.htm">3d</a> <div>MapEX加入地图编码的MAP检测论文链接MapEX背景与动机:HD地图的重要性与高成本:HD地图是自动驾驶的关键组成部分,但其采集和维护成本极高。现有方法的局限性:现有方法主要依赖传感器数据生成HD地图,但通常忽略了已有的HD地图资源。当前方法最多只是对低质量地图进行地理定位或使用通用的已知地图数据库,效率和效果都有限。提出的解决方案:充分利用现有地图:在HD地图估计中引入现有HD地图资源,具体</div> </li> <li><a href="/article/1892362356776824832.htm" title="利用人工智能增强可读性:自动为文本添加标点符号" target="_blank">利用人工智能增强可读性:自动为文本添加标点符号</a> <span class="text-muted">姚家湾</span> <a class="tag" taget="_blank" href="/search/AI/1.htm">AI</a><a class="tag" taget="_blank" href="/search/%E6%A0%87%E7%82%B9%E7%AC%A6%E5%8F%B7/1.htm">标点符号</a> <div>在数字通信时代,文本的清晰度和可读性至关重要。无论是转录口语、处理原始文本数据还是改进用户生成的内容,标点符号在传达预期信息方面都起着至关重要的作用。但是,手动编辑文本以添加标点符号可能非常耗时且容易出错。这就是人工智能(AI)发挥作用的地方,它提供了一种强大的解决方案,可以自动将标点符号插入句子中。目前,利用大模型的能力,完全可以胜任添加标点符号的工作,不需要其它特别的处理程序。参考代码from</div> </li> <li><a href="/article/1892362228376596480.htm" title="用 TensorFlow 搭建简单的手写数字识别模型" target="_blank">用 TensorFlow 搭建简单的手写数字识别模型</a> <span class="text-muted">lozhyf</span> <a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/tensorflow/1.htm">tensorflow</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>一、引言手写数字识别是机器学习领域中一个经典且基础的问题,它在很多实际场景中都有广泛的应用,比如邮政系统中的邮件分拣、银行支票金额识别等。TensorFlow是一个强大的开源机器学习框架,由Google开发并维护,它提供了丰富的工具和接口,能帮助我们快速搭建和训练深度学习模型。在这篇博客中,我们将使用TensorFlow构建一个简单的神经网络模型,用于识别手写数字。二、环境准备在开始之前,你需要安</div> </li> <li><a href="/article/1892360967430402048.htm" title="深度学习在医疗影像分析中的革命性应用" target="_blank">深度学习在医疗影像分析中的革命性应用</a> <span class="text-muted">Echo_Wish</span> <a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E6%B2%BF%E6%8A%80%E6%9C%AF/1.htm">前沿技术</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a> <div>深度学习在医疗影像分析中的革命性应用引言医疗影像分析是现代医学中不可或缺的一部分,特别是在疾病诊断和治疗过程中发挥了至关重要的作用。随着深度学习技术的发展,医疗影像分析的效率和准确性得到了显著提升。本文将探讨如何利用深度学习技术,特别是Python编程语言,来优化医疗影像分析,展示具体的代码实例,并举例说明其实际应用效果。深度学习与医疗影像分析深度学习(DeepLearning)是一种基于人工神经</div> </li> <li><a href="/article/1892358446083272704.htm" title="以太网协议介绍" target="_blank">以太网协议介绍</a> <span class="text-muted">归宿688</span> <a class="tag" taget="_blank" href="/search/%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91/1.htm">软件开发</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E9%A9%BE%E9%A9%B6/1.htm">自动驾驶</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/1.htm">网络协议</a> <div>目录一.以太网主要协议关系介绍二.协议介绍及帧结构2.1媒体访问控制子层协议MAC2.2地址解析协议ARP2.2.1ARP帧结构2.2.2ARP协议工作原理2.3网际互连协议IP2.3.1IP协议帧2.3.2IP数据报分片重组2.4互联网控制消息协议ICMP2.5用户数据报协议UDP2.6传输控制协议TCP一.以太网主要协议关系介绍  网络结构可以分为五层,自底向上依次为:物理层、数据链路层、网络</div> </li> <li><a href="/article/1892357436141006848.htm" title="vue-router 中滚动行为设置的妙用" target="_blank">vue-router 中滚动行为设置的妙用</a> <span class="text-muted">代码搬运媛</span> <a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>在vue-router里,滚动行为设置能够对路由切换时的页面滚动位置进行控制,这在单页面应用(SPA)里十分有用,能够为用户带来更流畅、更符合预期的浏览体验。下面为你详细介绍滚动行为设置的作用和使用方法。作用恢复滚动位置当用户在某个页面滚动到特定位置后,再导航到其他页面,之后又返回到该页面时,滚动行为设置可以让页面恢复到之前的滚动位置。这在浏览长页面或者列表页时非常实用,用户无需重新滚动到之前查看</div> </li> <li><a href="/article/1892355294596493312.htm" title="设计模式-模板方法实现" target="_blank">设计模式-模板方法实现</a> <span class="text-muted">阿绵</span> <a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>文章目录模式结构模式特点示例代码输出结果关键点解析模式的优缺点使用场景总结模板方法模式(TemplateMethodPattern)是一种行为型设计模式,它定义了一个操作中的算法骨架,而将某些步骤的实现延迟到子类中。通过这种方式,模板方法模式可以让子类在不改变算法结构的情况下,重新定义算法中的某些步骤模式结构模板方法模式的结构包括以下几个关键部分:抽象类(AbstractClass):定义算法的骨</div> </li> <li><a href="/article/1892355295259193344.htm" title="数据库基础以及 MySQL 知识点" target="_blank">数据库基础以及 MySQL 知识点</a> <span class="text-muted">阿绵</span> <a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80/1.htm">计算机基础</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a> <div>文章目录1、基本概念2、主键和外键的区别2.1、使用外键的优劣3、数据库范式4、drop、delete与truncate区别?5、MySQL1、基础概念2、存储引擎2.1、InnoDB和MyISAM区别2.2、InnoDB如何保持事务的四大特性(实现事务的原理)3、锁机制与InnoDB锁算法3.1、表级锁和行级锁对比4、事务4.1、ACID特性4.2、并发事务带来的问题4.3、事务隔离级别1、基本</div> </li> <li><a href="/article/1892350630975041536.htm" title="自动驾驶感知、端到端论文集(2024-10-11)" target="_blank">自动驾驶感知、端到端论文集(2024-10-11)</a> <span class="text-muted">自动驾驶小学生</span> <a class="tag" taget="_blank" href="/search/%E6%AF%AB%E7%B1%B3%E6%B3%A2%E9%9B%B7%E8%BE%BE/1.htm">毫米波雷达</a><a class="tag" taget="_blank" href="/search/%E6%91%84%E5%83%8F%E5%A4%B4/1.htm">摄像头</a><a class="tag" taget="_blank" href="/search/%E5%A4%9A%E4%BC%A0%E6%84%9F%E5%99%A8%E8%9E%8D%E5%90%88/1.htm">多传感器融合</a> <div>文章目录1.Detection2.Segmentation(Map)3.DepthEstimation4.HighResolution5.End-to-EndAutonomousDriving1.DetectionLabelDistill:Label-guidedCross-modalKnowledgeDistillationforCamera-based3DObjectDetectionECCV</div> </li> <li><a href="/article/1892349116927766528.htm" title="Selenium使用指南" target="_blank">Selenium使用指南</a> <span class="text-muted">程序员杰哥</span> <a class="tag" taget="_blank" href="/search/selenium/1.htm">selenium</a><a class="tag" taget="_blank" href="/search/%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7/1.htm">测试工具</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%B5%8B%E8%AF%95%E7%94%A8%E4%BE%8B/1.htm">测试用例</a><a class="tag" taget="_blank" href="/search/%E8%81%8C%E5%9C%BA%E5%92%8C%E5%8F%91%E5%B1%95/1.htm">职场和发展</a><a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E4%BA%BA%E7%94%9F/1.htm">程序人生</a><a class="tag" taget="_blank" href="/search/%E5%8A%9F%E8%83%BD%E6%B5%8B%E8%AF%95/1.htm">功能测试</a> <div>概述selenium是网页应用中最流行的自动化测试工具,可以用来做自动化测试或者浏览器爬虫等。官网地址为:相对于另外一款web自动化测试工具QTP来说有如下优点:免费开源轻量级,不同语言只需要一个体积很小的依赖包支持多种系统,包括Windows,Mac,Linux支持多种浏览器,包括Chrome,FireFox,IE,safari,opera等支持多语言,包括Java,C,python,c#等主流</div> </li> <li><a href="/article/1892347353243906048.htm" title="TensorFlow LiteRT 概览" target="_blank">TensorFlow LiteRT 概览</a> <span class="text-muted">姚家湾</span> <a class="tag" taget="_blank" href="/search/tensorflow/1.htm">tensorflow</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>LiteRT(简称LiteRuntime,以前称为TensorFlowLite)是Google面向设备端AI的高性能运行时。您可以找到适用于各种机器学习/AI任务的LiteRT就绪模型,也可以使用AIEdge转换和优化工具将TensorFlow、PyTorch和JAX模型转换为TFLite格式并运行。主要特性针对设备端机器学习进行了优化:LiteRT解决了五项关键的ODML约束条件:延迟时间(无需</div> </li> <li><a href="/article/1892346219720667136.htm" title="DeepSeek 助力 Vue 开发:打造丝滑的导航栏(Navbar)" target="_blank">DeepSeek 助力 Vue 开发:打造丝滑的导航栏(Navbar)</a> <span class="text-muted">宝码香车</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/DeepSeek/1.htm">DeepSeek</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/ecmascript/1.htm">ecmascript</a><a class="tag" taget="_blank" href="/search/DeepSeek/1.htm">DeepSeek</a> <div>前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦目录DeepSeek助力Vue开发:打造丝滑的导航栏(Navbar)前言页面效果指令输入属性定义1.导航栏样式相关2.导航项相关3.响应式相关4.对齐方式相关事件定义1.导航项点击事件2.菜单折叠切换事件其他建议1.可访问性2.动画效果3.图标支</div> </li> <li><a href="/article/1892344959785299968.htm" title="百度极速版APP 自动脚本 javascript代码" target="_blank">百度极速版APP 自动脚本 javascript代码</a> <span class="text-muted">zaxjb123</span> <a class="tag" taget="_blank" href="/search/dubbo/1.htm">dubbo</a> <div>使用JavaScript编写针对百度极速版APP的自动化脚本通常涉及到使用WebView测试框架,比如Puppeteer或Selenium,这些工具允许你控制一个浏览器或WebView环境,从而与网页或APP中的Web内容进行交互。然而,对于原生APP(如百度极速版)的自动化测试,通常需要使用专门的移动应用自动化框架,如Appium。Appium支持多种编程语言,包括JavaScript。要使用J</div> </li> <li><a href="/article/1892344833436086272.htm" title="C#项目04——递归求和" target="_blank">C#项目04——递归求和</a> <span class="text-muted">yue008</span> <a class="tag" taget="_blank" href="/search/C%23/1.htm">C#</a><a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a><a class="tag" taget="_blank" href="/search/%E9%80%92%E5%BD%92%E6%B1%82%E5%92%8C/1.htm">递归求和</a><a class="tag" taget="_blank" href="/search/%E9%A1%B9%E7%9B%AE%E6%A1%88%E4%BE%8B/1.htm">项目案例</a><a class="tag" taget="_blank" href="/search/%E6%BA%90%E7%A8%8B%E5%BA%8F/1.htm">源程序</a> <div>实现逻辑利用递归,求取1~N以内的和知识点正常情况下,C#每条线程都会分配1MB的地址空间,因此执行递归的层次不能太深,否则就会出现溢出的风险,业务设计程序代码privatevoidbutton1_Click(objectsender,EventArgse){intP_int_01;if(int.TryParse(tbx01.Text,outP_int_01)){if(P_int_01=0&&i<</div> </li> <li><a href="/article/1892341301819535360.htm" title="Day46(补)【AI思考】-栈帧和全局变量关系的全面解析" target="_blank">Day46(补)【AI思考】-栈帧和全局变量关系的全面解析</a> <span class="text-muted">一个一定要撑住的学习者</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/AI%E6%B7%B1%E5%BA%A6%E6%80%9D%E8%80%83%E5%AD%A6%E4%B9%A0%E6%96%B9%E6%B3%95/1.htm">AI深度思考学习方法</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>文章目录栈帧和全局变量关系的全面解析**栈帧的全面解析****1.栈帧的定义****2.栈帧的核心组成****3.栈帧与各变量的关系****(1)形参变量****(2)返回地址****(3)局部变量****(4)全局变量****4.栈帧的工作原理****(1)函数调用过程****(2)函数返回过程****5.栈帧的直观示意图****6.栈帧与堆、全局区的区别****7.为什么除数为零属于事务故障?</div> </li> <li><a href="/article/1892340166937341952.htm" title="python进程数上限_python 多进程数量 对爬虫程序的影响" target="_blank">python进程数上限_python 多进程数量 对爬虫程序的影响</a> <span class="text-muted">weixin_39759995</span> <a class="tag" taget="_blank" href="/search/python%E8%BF%9B%E7%A8%8B%E6%95%B0%E4%B8%8A%E9%99%90/1.htm">python进程数上限</a> <div>1.首先看一下python多进程的优点和缺点多进程优点:1.稳定性好:多进程的优点是稳定性好,一个子进程崩溃了,不会影响主进程以及其余进程。基于这个特性,常常会用多进程来实现守护服务器的功能。然而多线程不足之处在于,任何一个线程崩溃都可能造成整个进程的崩溃,因为它们共享了进程的内存资源池。2.能充分利用多核cpu:由于python设计之初,没预料到多核cpu能够得到现在的发展,只考虑到了单核cpu</div> </li> <li><a href="/article/1892338276010881024.htm" title="如何在Python中使用Etherscan API进行以太坊数据查询" target="_blank">如何在Python中使用Etherscan API进行以太坊数据查询</a> <span class="text-muted">scaFHIO</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>Etherscan是领先的区块链浏览器、搜索、API和分析平台,专注于以太坊——一个去中心化的智能合约平台。在本篇文章中,我们将介绍如何在Python中使用EtherscanAPI进行以太坊数据查询,并提供详细的代码示例。1.技术背景介绍Etherscan提供了丰富的API接口,允许开发者查询以太坊网络上的各种数据,包括交易、账户、合约等信息。使用这些API接口,开发者可以方便地集成以太坊数据到自</div> </li> <li><a href="/article/1892331846763606016.htm" title="python爬虫--安装XPath Helper" target="_blank">python爬虫--安装XPath Helper</a> <span class="text-muted">S903784597</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>给chrome浏览器安装xpath插件。-从网盘下载xpath的插件文件链接:https://pan.baidu.com/s/1B85d5cLDyAz1xUQqmL3uug?pwd=3306提取码:3306-在chrome中输入chrome://extensions/打开扩展程序。-将从百度网盘中下载的xpath.zip文件直接拖到浏览器的扩展程序页面中-得到chrome插件,将插件开关开启,并且</div> </li> <li><a href="/article/1892327939836538880.htm" title="Day48(补)【AI思考】-设计模式三大类型统一区分与记忆指南" target="_blank">Day48(补)【AI思考】-设计模式三大类型统一区分与记忆指南</a> <span class="text-muted">一个一定要撑住的学习者</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/AI%E6%B7%B1%E5%BA%A6%E6%80%9D%E8%80%83%E5%AD%A6%E4%B9%A0%E6%96%B9%E6%B3%95/1.htm">AI深度思考学习方法</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a> <div>文章目录设计模式三大类型统一区分与记忆指南**一、创建型模式(对象如何生?)****二、结构型模式(对象如何组?)****三、行为型模式(对象如何动?)****1.行为型类模式(靠继承)****2.行为型对象模式(靠组合)****四、统一对比表****五、终极记忆技巧**设计模式三大类型统一区分与记忆指南让思想碎片重焕生机的灵魂:行为模式分三类,每一类又有好多不同的模式,特别是行为式模式,还要区分</div> </li> <li><a href="/article/1892322896781570048.htm" title="Git入门与进阶:详细使用指南" target="_blank">Git入门与进阶:详细使用指南</a> <span class="text-muted">向着开发进攻</span> <a class="tag" taget="_blank" href="/search/git/1.htm">git</a><a class="tag" taget="_blank" href="/search/git/1.htm">git</a> <div>Git入门与进阶:详细使用指南Git是一款强大的分布式版本控制工具,广泛用于软件开发中的源代码管理。无论你是一个刚刚开始学习编程的新手,还是一个已经有经验的开发者,Git都是你日常工作中的必备工具。在这篇文章中,我将详细介绍Git的使用方法,帮助你从基础到进阶掌握Git。什么是Git?Git是一种分布式版本控制系统(VCS),它让多个开发者能够高效地协同开发,跟踪代码的历史版本,并且管理项目的不同</div> </li> <li><a href="/article/1892322770436550656.htm" title="UART协议——异步全双工串行通信方式" target="_blank">UART协议——异步全双工串行通信方式</a> <span class="text-muted">dsjljdfniuevf</span> <a class="tag" taget="_blank" href="/search/%E6%80%BB%E7%BA%BF%E5%8D%8F%E8%AE%AE/1.htm">总线协议</a><a class="tag" taget="_blank" href="/search/%E6%8E%A5%E5%8F%A3%E5%8D%8F%E8%AE%AE/1.htm">接口协议</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/UART%E5%8D%8F%E8%AE%AE/1.htm">UART协议</a> <div>文章目录前言一、简介1、优点2、缺点二、数据格式三、波特率1、定义2、波特率和采样频率3、计算四、常见接口电平1、TTL电平2、RS232(负逻辑)3、RS485前言2023.4.22世界地球日一、简介UART:UniversalAsynchronousReceiver/Transmitter,通用异步收发器广泛的应用在各类MCU和SOC产品上“不需要额外的时钟线进行数据的同步传输”。即只要信号拉</div> </li> <li><a href="/article/1892322013918326784.htm" title="使用LM Studio在WordPress基于大模型原创文章上稿进行SEO优化" target="_blank">使用LM Studio在WordPress基于大模型原创文章上稿进行SEO优化</a> <span class="text-muted">Mr数据杨</span> <a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E6%8A%80%E6%9C%AF/1.htm">自然语言技术</a><a class="tag" taget="_blank" href="/search/wordpress/1.htm">wordpress</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%A8%A1%E5%9E%8B/1.htm">大模型</a><a class="tag" taget="_blank" href="/search/seo/1.htm">seo</a><a class="tag" taget="_blank" href="/search/1024%E7%A8%8B%E5%BA%8F%E5%91%98%E8%8A%82/1.htm">1024程序员节</a> <div>在进行自动化文章生成与发布的流程中,首先需要确保基础配置的完善性和数据的准确性。通过手动设置分类和标签,文章能够在发布时被准确归类,从而提升SEO的效果。通过Excel表格的方式管理这些分类与标签,结合Python脚本,可以高效地实现自动化文章的生成和发布。该流程依赖于对WordPress数据库的操作,包括标签的批量导入、分类和标签的映射,以及通过AI生成内容的自动发布。全面的配置不仅节省了手动处</div> </li> <li><a href="/article/1892321635403362304.htm" title="uniapp邪门事件" target="_blank">uniapp邪门事件</a> <span class="text-muted">岑梓铭</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E9%97%AE%E9%A2%98/1.htm">前端问题</a><a class="tag" taget="_blank" href="/search/uni-app/1.htm">uni-app</a> <div>很久之前在这篇《THREEJS在uni-app中使用(微信小程序)》:THREEJS在uni-app中使用(微信小程序)_uni-app_帶刺的小葡萄-华为开发者空间中学到了如何在uniapp的微信小程序里接入three.js的3d模型由于小程序自身很多不兼容原因,博主建议去用GitHub一个大佬改写的js库来引入适合小程序的three.js,于是我去照搬模仿,然后手动检查了一下,确实可以正常运行</div> </li> <li><a href="/article/1892319746720854016.htm" title="Leave No Context Behind: Efficient Infinite Context Transformers with Infini-attention" target="_blank">Leave No Context Behind: Efficient Infinite Context Transformers with Infini-attention</a> <span class="text-muted">UnknownBody</span> <a class="tag" taget="_blank" href="/search/LLM/1.htm">LLM</a><a class="tag" taget="_blank" href="/search/Daily/1.htm">Daily</a><a class="tag" taget="_blank" href="/search/LLM/1.htm">LLM</a><a class="tag" taget="_blank" href="/search/context/1.htm">context</a><a class="tag" taget="_blank" href="/search/%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B/1.htm">语言模型</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a> <div>本文是LLM系列文章,针对《LeaveNoContextBehind:EfficientInfiniteContextTransformerswithInfini-attention》的翻译。不让任何上下文掉队:无限关注的高效无限上下文Transformer摘要1引言2方法3实验4相关工作5结论摘要这项工作介绍了一种将基于Transformer的大型语言模型(LLM)扩展到具有有限内存和计算的无限</div> </li> <li><a href="/article/1892315715524947968.htm" title="为什么WP建站更适合于谷歌SEO优化?" target="_blank">为什么WP建站更适合于谷歌SEO优化?</a> <span class="text-muted">推广小赵</span> <a class="tag" taget="_blank" href="/search/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/1.htm">经验分享</a> <div>在当今数字时代,建立一个网站似乎变得容易,但要构建一个真正能够带来流量和订单的网站却并非易事。特别是在谷歌SEO优化方面,不同的建站程序在SEO支持方面的效果差异显著。对于希望提升搜索引擎表现的用户来说,WordPress无疑是最佳选择。WordPress的优势作为一款强大且广泛使用的内容管理系统(CMS),WordPress最大的优势在于其灵活性和可扩展性。该平台允许用户利用丰富的SEO插件来优</div> </li> <li><a href="/article/1892313320698998784.htm" title="Java中锁升级的探究" target="_blank">Java中锁升级的探究</a> <span class="text-muted">我心向阳iu</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/Java%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">Java多线程</a><a class="tag" taget="_blank" href="/search/Java%E9%9D%A2%E8%AF%95%E7%9F%A5%E8%AF%86%E7%82%B9%E7%B2%BE%E8%AE%B2/1.htm">Java面试知识点精讲</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>文章目录锁升级概述四种锁介绍1.无锁2.偏向锁实现原理3.轻量级锁(自旋锁)实现原理4.重量级锁实现原理锁升级过程锁升级过程举例说明锁升级原理锁升级概述JDK1.6之前,synchronized还是一个重量级锁,是一个效率比较低下的锁。但是在JDK1.6后,JVM为了提高锁的获取与释放效率对synchronized进行了优化,引入了偏向锁和轻量级锁,从此以后锁的状态就有了四种:无锁:无锁是指没有对</div> </li> <li><a href="/article/1892312438930468864.htm" title="CSS 修改 SVG图标的颜色" target="_blank">CSS 修改 SVG图标的颜色</a> <span class="text-muted">小达学徒</span> <a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/svg/1.htm">svg</a><a class="tag" taget="_blank" href="/search/%E5%9B%BE%E6%A0%87%E9%A2%9C%E8%89%B2%E6%94%B9%E5%8F%98/1.htm">图标颜色改变</a> <div>方法1、利用filter中的drop-shadow给icon加样式(利用原图标的阴影区域,同时将原图标移动超过之前父元素范围)filter:drop-shadow(red80px0);transform:translateX(-80px);给父元素加样式(父元素超范围隐藏,正好把原图标的隐藏掉,显示阴影区域)overflow:hidden;filter的drop-shadow标准用法drop-sh</div> </li> <li><a href="/article/1892310043714449408.htm" title="腿足机器人之五- 粒子滤波" target="_blank">腿足机器人之五- 粒子滤波</a> <span class="text-muted">shichaog</span> <a class="tag" taget="_blank" href="/search/%E8%85%BF%E8%B6%B3%E6%9C%BA%E5%99%A8%E4%BA%BA/1.htm">腿足机器人</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E4%BA%BA/1.htm">机器人</a> <div>腿足机器人之五粒子滤波直方图滤波粒子滤波上一篇博客使用的是高斯分布结合贝叶斯准则来估计机器人状态,本篇是基于直方图和粒子滤波器这两种无参滤波器估计机器人状态。直方图方法将状态空间分解成有限多个区域,并用直方图表示后验概率。直方图为每个区域分配一个单独的累积概率;可以将其视为对连续密度函数的逐段常数近似。第二种技术通过有限多个样本来表示后验概率。由此产生的滤波器被称为粒子滤波器,在某些机器人问题中获</div> </li> <li><a href="/article/122.htm" title="java数字签名三种方式" target="_blank">java数字签名三种方式</a> <span class="text-muted">知了ing</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/jdk/1.htm">jdk</a> <div>以下3钟数字签名都是基于jdk7的 1,RSA String password="test"; // 1.初始化密钥 KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA"); keyPairGenerator.initialize(51</div> </li> <li><a href="/article/249.htm" title="Hibernate学习笔记" target="_blank">Hibernate学习笔记</a> <span class="text-muted">caoyong</span> <a class="tag" taget="_blank" href="/search/Hibernate/1.htm">Hibernate</a> <div>1>、Hibernate是数据访问层框架,是一个ORM(Object Relation Mapping)框架,作者为:Gavin King 2>、搭建Hibernate的开发环境      a>、添加jar包:      aa>、hibernatte开发包中/lib/required/所</div> </li> <li><a href="/article/376.htm" title="设计模式之装饰器模式Decorator(结构型)" target="_blank">设计模式之装饰器模式Decorator(结构型)</a> <span class="text-muted">漂泊一剑客</span> <a class="tag" taget="_blank" href="/search/Decorator/1.htm">Decorator</a> <div>1. 概述        若你从事过面向对象开发,实现给一个类或对象增加行为,使用继承机制,这是所有面向对象语言的一个基本特性。如果已经存在的一个类缺少某些方法,或者须要给方法添加更多的功能(魅力),你也许会仅仅继承这个类来产生一个新类—这建立在额外的代码上。       </div> </li> <li><a href="/article/503.htm" title="读取磁盘文件txt,并输入String" target="_blank">读取磁盘文件txt,并输入String</a> <span class="text-muted">一炮送你回车库</span> <a class="tag" taget="_blank" href="/search/String/1.htm">String</a> <div>public static void main(String[] args) throws IOException {    String fileContent = readFileContent("d:/aaa.txt");    System.out.println(fileContent);    </div> </li> <li><a href="/article/630.htm" title="js三级联动下拉框" target="_blank">js三级联动下拉框</a> <span class="text-muted">3213213333332132</span> <a class="tag" taget="_blank" href="/search/%E4%B8%89%E7%BA%A7%E8%81%94%E5%8A%A8/1.htm">三级联动</a> <div> //三级联动 省/直辖市<select id="province"></select> 市/省直辖<select id="city"></select> 县/区 <select id="area"></select> </div> </li> <li><a href="/article/757.htm" title="erlang之parse_transform编译选项的应用" target="_blank">erlang之parse_transform编译选项的应用</a> <span class="text-muted">616050468</span> <a class="tag" taget="_blank" href="/search/parse_transform/1.htm">parse_transform</a><a class="tag" taget="_blank" href="/search/%E6%B8%B8%E6%88%8F%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">游戏服务器</a><a class="tag" taget="_blank" href="/search/%E5%B1%9E%E6%80%A7%E5%90%8C%E6%AD%A5/1.htm">属性同步</a><a class="tag" taget="_blank" href="/search/abstract_code/1.htm">abstract_code</a> <div>         最近使用erlang重构了游戏服务器的所有代码,之前看过C++/lua写的服务器引擎代码,引擎实现了玩家属性自动同步给前端和增量更新玩家数据到数据库的功能,这也是现在很多游戏服务器的优化方向,在引擎层面去解决数据同步和数据持久化,数据发生变化了业务层不需要关心怎么去同步给前端。由于游戏过程中玩家每个业务中玩家数据更改的量其实是很少</div> </li> <li><a href="/article/884.htm" title="JAVA JSON的解析" target="_blank">JAVA JSON的解析</a> <span class="text-muted">darkranger</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div> // { // “Total”:“条数”, // Code: 1, // // “PaymentItems”:[ // { // “PaymentItemID”:”支款单ID”, // “PaymentCode”:”支款单编号”, // “PaymentTime”:”支款日期”, // ”ContractNo”:”合同号”, // </div> </li> <li><a href="/article/1011.htm" title="POJ-1273-Drainage Ditches" target="_blank">POJ-1273-Drainage Ditches</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/ACM_POJ/1.htm">ACM_POJ</a> <div>POJ-1273-Drainage Ditches http://poj.org/problem?id=1273 基本的最大流,按LRJ的白书写的 #include<iostream> #include<cstring> #include<queue> using namespace std; #define INF 0x7fffffff int ma</div> </li> <li><a href="/article/1138.htm" title="工作流Activiti5表的命名及含义" target="_blank">工作流Activiti5表的命名及含义</a> <span class="text-muted">atongyeye</span> <a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C%E6%B5%81/1.htm">工作流</a><a class="tag" taget="_blank" href="/search/Activiti/1.htm">Activiti</a> <div>activiti5 - http://activiti.org/designer/update在线插件安装 activiti5一共23张表 Activiti的表都以ACT_开头。 第二部分是表示表的用途的两个字母标识。 用途也和服务的API对应。 ACT_RE_*: 'RE'表示repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。 A</div> </li> <li><a href="/article/1265.htm" title="android的广播机制和广播的简单使用" target="_blank">android的广播机制和广播的简单使用</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/%E5%B9%BF%E6%92%AD%E6%9C%BA%E5%88%B6/1.htm">广播机制</a><a class="tag" taget="_blank" href="/search/%E5%B9%BF%E6%92%AD%E7%9A%84%E6%B3%A8%E5%86%8C/1.htm">广播的注册</a> <div>      Android广播机制简介 在Android中,有一些操作完成以后,会发送广播,比如说发出一条短信,或打出一个电话,如果某个程序接收了这个广播,就会做相应的处理。这个广播跟我们传统意义中的电台广播有些相似之处。之所以叫做广播,就是因为它只负责“说”而不管你“听不听”,也就是不管你接收方如何处理。另外,广播可以被不只一个应用程序所接收,当然也可能不被任何应</div> </li> <li><a href="/article/1392.htm" title="Spring事务传播行为详解" target="_blank">Spring事务传播行为详解</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/%E4%BA%8B%E5%8A%A1%E4%BC%A0%E6%92%AD%E8%A1%8C%E4%B8%BA/1.htm">事务传播行为</a> <div>        在service类前加上@Transactional,声明这个service所有方法需要事务管理。每一个业务方法开始时都会打开一个事务。         Spring默认情况下会对运行期例外(RunTimeException)进行事务回滚。这</div> </li> <li><a href="/article/1519.htm" title="eidtplus operate" target="_blank">eidtplus operate</a> <span class="text-muted">征客丶</span> <a class="tag" taget="_blank" href="/search/eidtplus/1.htm">eidtplus</a> <div>开启列模式: Alt+C 鼠标选择   OR   Alt+鼠标左键拖动 列模式替换或复制内容(多行): 右键-->格式-->填充所选内容-->选择相应操作 OR Ctrl+Shift+V(复制多行数据,必须行数一致) -------------------------------------------------------</div> </li> <li><a href="/article/1646.htm" title="【Kafka一】Kafka入门" target="_blank">【Kafka一】Kafka入门</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/kafka/1.htm">kafka</a> <div>这篇文章来自Spark集成Kafka(http://bit1129.iteye.com/blog/2174765),这里把它单独取出来,作为Kafka的入门吧   下载Kafka http://mirror.bit.edu.cn/apache/kafka/0.8.1.1/kafka_2.10-0.8.1.1.tgz 2.10表示Scala的版本,而0.8.1.1表示Kafka</div> </li> <li><a href="/article/1773.htm" title="Spring 事务实现机制" target="_blank">Spring 事务实现机制</a> <span class="text-muted">BlueSkator</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/%E4%BB%A3%E7%90%86/1.htm">代理</a><a class="tag" taget="_blank" href="/search/%E4%BA%8B%E5%8A%A1/1.htm">事务</a> <div>Spring是以代理的方式实现对事务的管理。我们在Action中所使用的Service对象,其实是代理对象的实例,并不是我们所写的Service对象实例。既然是两个不同的对象,那为什么我们在Action中可以象使用Service对象一样的使用代理对象呢?为了说明问题,假设有个Service类叫AService,它的Spring事务代理类为AProxyService,AService实现了一个接口 </div> </li> <li><a href="/article/1900.htm" title="bootstrap源码学习与示例:bootstrap-dropdown(转帖)" target="_blank">bootstrap源码学习与示例:bootstrap-dropdown(转帖)</a> <span class="text-muted">BreakingBad</span> <a class="tag" taget="_blank" href="/search/bootstrap/1.htm">bootstrap</a><a class="tag" taget="_blank" href="/search/dropdown/1.htm">dropdown</a> <div>bootstrap-dropdown组件是个烂东西,我读后的整体感觉。 一个下拉开菜单的设计: <ul class="nav pull-right"> <li id="fat-menu" class="dropdown"> </div> </li> <li><a href="/article/2027.htm" title="读《研磨设计模式》-代码笔记-中介者模式-Mediator" target="_blank">读《研磨设计模式》-代码笔记-中介者模式-Mediator</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a> <div>声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/ /* * 中介者模式(Mediator):用一个中介对象来封装一系列的对象交互。 * 中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 * * 在我看来,Mediator模式是把多个对象(</div> </li> <li><a href="/article/2154.htm" title="常用代码记录" target="_blank">常用代码记录</a> <span class="text-muted">chenjunt3</span> <a class="tag" taget="_blank" href="/search/UI/1.htm">UI</a><a class="tag" taget="_blank" href="/search/Excel/1.htm">Excel</a><a class="tag" taget="_blank" href="/search/J%23/1.htm">J#</a> <div>  1、单据设置某行或某字段不能修改 //i是行号,"cash"是字段名称 getBillCardPanelWrapper().getBillCardPanel().getBillModel().setCellEditable(i, "cash", false); //取得单据表体所有项用以上语句做循环就能设置整行了 getBillC</div> </li> <li><a href="/article/2281.htm" title="搜索引擎与工作流引擎" target="_blank">搜索引擎与工作流引擎</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E/1.htm">搜索引擎</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%BA%94%E7%94%A8/1.htm">网络应用</a> <div>      最近在公司做和搜索有关的工作,(只是简单的应用开源工具集成到自己的产品中)工作流系统的进一步设计暂时放在一边了,偶然看到谷歌的研究员吴军写的数学之美系列中的搜索引擎与图论这篇文章中的介绍,我发现这样一个关系(仅仅是猜想)   -----搜索引擎和流程引擎的基础--都是图论,至少像在我在JWFD中引擎算法中用到的是自定义的广度优先</div> </li> <li><a href="/article/2408.htm" title="oracle Health Monitor" target="_blank">oracle Health Monitor</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/Health+Monitor/1.htm">Health Monitor</a> <div>About Health Monitor Beginning with Release 11g, Oracle Database includes a framework called Health Monitor for running diagnostic checks on the database. About Health Monitor Checks Health M</div> </li> <li><a href="/article/2535.htm" title="JSON字符串转换为对象" target="_blank">JSON字符串转换为对象</a> <span class="text-muted">dieslrae</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/json/1.htm">json</a> <div>    作为前言,首先是要吐槽一下公司的脑残编译部署方式,web和core分开部署本来没什么问题,但是这丫居然不把json的包作为基础包而作为web的包,导致了core端不能使用,而且我们的core是可以当web来用的(不要在意这些细节),所以在core中处理json串就是个问题.没办法,跟编译那帮人也扯不清楚,只有自己写json的解析了.   </div> </li> <li><a href="/article/2662.htm" title="C语言学习八结构体,综合应用,学生管理系统" target="_blank">C语言学习八结构体,综合应用,学生管理系统</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/C%E8%AF%AD%E8%A8%80/1.htm">C语言</a> <div>实现功能的代码: # include <stdio.h> # include <malloc.h> struct Student { int age; float score; char name[100]; }; int main(void) { int len; struct Student * pArr; int i,</div> </li> <li><a href="/article/2789.htm" title="vagrant学习笔记" target="_blank">vagrant学习笔记</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/vagrant/1.htm">vagrant</a> <div>想了解多主机是如何定义和使用的, 所以又学习了一遍vagrant   1. vagrant virtualbox 下载安装 https://www.vagrantup.com/downloads.html https://www.virtualbox.org/wiki/Downloads   查看安装在命令行输入vagrant     2.</div> </li> <li><a href="/article/2916.htm" title="14.性能优化-优化-软件配置优化" target="_blank">14.性能优化-优化-软件配置优化</a> <span class="text-muted">frank1234</span> <a class="tag" taget="_blank" href="/search/%E8%BD%AF%E4%BB%B6%E9%85%8D%E7%BD%AE/1.htm">软件配置</a><a class="tag" taget="_blank" href="/search/%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/1.htm">性能优化</a> <div>1.Tomcat线程池 修改tomcat的server.xml文件: <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" maxThreads="1200" m</div> </li> <li><a href="/article/3043.htm" title="一个不错的shell 脚本教程 入门级" target="_blank">一个不错的shell 脚本教程 入门级</a> <span class="text-muted">HarborChung</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/shell/1.htm">shell</a> <div>一个不错的shell 脚本教程 入门级 建立一个脚本   Linux中有好多中不同的shell,但是通常我们使用bash (bourne again shell) 进行shell编程,因为bash是免费的并且很容易使用。所以在本文中笔者所提供的脚本都是使用bash(但是在大多数情况下,这些脚本同样可以在 bash的大姐,bourne shell中运行)。   如同其他语言一样</div> </li> <li><a href="/article/3170.htm" title="Spring4新特性——核心容器的其他改进" target="_blank">Spring4新特性——核心容器的其他改进</a> <span class="text-muted">jinnianshilongnian</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/%E5%8A%A8%E6%80%81%E4%BB%A3%E7%90%86/1.htm">动态代理</a><a class="tag" taget="_blank" href="/search/spring4/1.htm">spring4</a><a class="tag" taget="_blank" href="/search/%E4%BE%9D%E8%B5%96%E6%B3%A8%E5%85%A5/1.htm">依赖注入</a> <div>Spring4新特性——泛型限定式依赖注入 Spring4新特性——核心容器的其他改进 Spring4新特性——Web开发的增强 Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC  Spring4新特性——Groovy Bean定义DSL Spring4新特性——更好的Java泛型操作API  Spring4新</div> </li> <li><a href="/article/3297.htm" title="Linux设置tomcat开机启动" target="_blank">Linux设置tomcat开机启动</a> <span class="text-muted">liuxingguome</span> <a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E6%9C%BA%E8%87%AA%E5%90%AF%E5%8A%A8/1.htm">开机自启动</a> <div>执行命令sudo gedit /etc/init.d/tomcat6 然后把以下英文部分复制过去。(注意第一句#!/bin/sh如果不写,就不是一个shell文件。然后将对应的jdk和tomcat换成你自己的目录就行了。 #!/bin/bash # # /etc/rc.d/init.d/tomcat # init script for tomcat precesses</div> </li> <li><a href="/article/3424.htm" title="第13章 Ajax进阶(下)" target="_blank">第13章 Ajax进阶(下)</a> <span class="text-muted">onestopweb</span> <a class="tag" taget="_blank" href="/search/Ajax/1.htm">Ajax</a> <div>index.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/</div> </li> <li><a href="/article/3551.htm" title="Troubleshooting Crystal Reports off BW" target="_blank">Troubleshooting Crystal Reports off BW</a> <span class="text-muted">blueoxygen</span> <a class="tag" taget="_blank" href="/search/BO/1.htm">BO</a> <div>http://wiki.sdn.sap.com/wiki/display/BOBJ/Troubleshooting+Crystal+Reports+off+BW#TroubleshootingCrystalReportsoffBW-TracingBOE   Quite useful, especially this part: SAP BW connectivity For t</div> </li> <li><a href="/article/3678.htm" title="Java开发熟手该当心的11个错误" target="_blank">Java开发熟手该当心的11个错误</a> <span class="text-muted">tomcat_oracle</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a><a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">多线程</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/1.htm">单元测试</a> <div>#1、不在属性文件或XML文件中外化配置属性。比如,没有把批处理使用的线程数设置成可在属性文件中配置。你的批处理程序无论在DEV环境中,还是UAT(用户验收 测试)环境中,都可以顺畅无阻地运行,但是一旦部署在PROD 上,把它作为多线程程序处理更大的数据集时,就会抛出IOException,原因可能是JDBC驱动版本不同,也可能是#2中讨论的问题。如果线程数目 可以在属性文件中配置,那么使它成为</div> </li> <li><a href="/article/3805.htm" title="正则表达式大全" target="_blank">正则表达式大全</a> <span class="text-muted">yang852220741</span> <a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a><a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a> <div>今天向大家分享正则表达式大全,它可以大提高你的工作效率 正则表达式也可以被当作是一门语言,当你学习一门新的编程语言的时候,他们是一个小的子语言。初看时觉得它没有任何的意义,但是很多时候,你不得不阅读一些教程,或文章来理解这些简单的描述模式。 一、校验数字的表达式 数字:^[0-9]*$ n位的数字:^\d{n}$ 至少n位的数字:^\d{n,}$ m-n位的数字:^\d{m,n}$</div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html>