8. 解析XML

8.1 问题

应用程序需要解析从API或其他资源返回的XML格式的响应结果。

8.2 解决方案

(API Level 1)
可以通过实现org.xml.sax.helpers.DefaultHandler的一个子类来解析数据,它使用的是基于事件的SAX方式(Simple API for XML)。android有三种用于解析XML数据的主要方式:DOM(文档对象模型)、SAX和Pull。这其中最容易实现的就是SAX解析器,它也是内存效率最高的。SAX解析通过遍历XML数据来实现,并在每个元素的开头和结尾产生回调事件。

8.3 实现机制

为了进一步介绍如何解析XML,先来看一下请求RSS/ATOM新闻源时返回的XML格式数据(参见以下代码)。

RSS基本结构


    
        
            
            
            
        
        
            
            
            
        
        ...
    

在各组、<link>和<description>标签之间就是每个项的值。我们可以使用SAX将这段数据解析成一个项数组,应用程序可以很方便地在列表中将数据呈现给用户(参见以下代码):</p> <p><strong>自定义的RSS解析处理程序</strong></p> <pre><code>public class RSSHandler extends DefaultHandler { public class NewsItem { public String title; public String link; public String description; @Override public String toString() { return title; } } private StringBuffer buf; private ArrayList<NewsItem> feedItems; private NewsItem item; private boolean inItem = false; public ArrayList<NewsItem> getParsedItems() { return feedItems; } //在每个新元素开始时调用 @Override public void startElement(String uri, String name, String qName, Attributes atts) { if("channel".equals(name)) { feedItems = new ArrayList<NewsItem>(); } else if("item".equals(name)) { item = new NewsItem(); inItem = true; } else if("title".equals(name) && inItem) { buf = new StringBuffer(); } else if("link".equals(name) && inItem) { buf = new StringBuffer(); } else if("description".equals(name) && inItem) { buf = new StringBuffer(); } } //在每个元素结束时调用 @Override public void endElement(String uri, String name, String qName) { if("item".equals(name)) { feedItems.add(item); inItem = false; } else if("title".equals(name) && inItem) { item.title = buf.toString(); } else if("link".equals(name) && inItem) { item.link = buf.toString(); } else if("description".equals(name) && inItem) { item.description = buf.toString(); } buf = null; } //调用元素中的字符数据 @Override public void characters(char ch[], int start, int length) { //Don't bother if buffer isn't initialized if(buf != null) { for (int i=start; i<start+length; i++) { buf.append(ch[i]); } } } } </code></pre> <p>在每个元素开始和结束时都会通过startElement()方法通过RSSHandler。在这之间,组成元素值的字符会传递给character()回调方法。当解析器遍历文档,会产生如下步骤:<br> (1)当解析器碰到第一个元素时,会初始化项列表。<br> (2)对于遇到的每个项元素,会初始化一个新的NewsItem模型。<br> (3)在每个项元素的内部,数据元素被置入一个StringBuffer中,然后插入NewsItem的成员中。<br> (4)当到达每个项的结尾时,会把NewsItem添加到列表中。<br> (5)解析完成后,feedItems中包含了源数据中的所有项。<br> 接下来,使用第6节的API示例中介绍的一些技巧来下载最新的RSS格式的Google新闻内容(参见以下代码)。</p> <p><strong>解析XML并显示各个项内容的Activity</strong></p> <pre><code>public class FeedActivity extends Activity implements ResponseCallback { private static final String TAG = "FeedReader"; private static final String FEED_URI = "http://news.google.com/?output=rss"; private ListView mList; private ArrayAdapter<NewsItem> mAdapter; private ProgressDialog mProgress; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mList = new ListView(this); mAdapter = new ArrayAdapter<NewsItem>(this, android.R.layout.simple_list_item_1, android.R.id.text1); mList.setAdapter(mAdapter); mList.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View v, int position, long id) { NewsItem item = mAdapter.getItem(position); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse(item.link)); startActivity(intent); } }); setContentView(mList); } @Override public void onResume() { super.onResume(); //获取RSS源数据 try{ RestTask task = RestUtil.obtainGetTask(FEED_URI); task.setResponseCallback(this); task.execute(); mProgress = ProgressDialog.show(this, "Searching", "Waiting For Results...", true); } catch (Exception e) { Log.w(TAG, e); } } @Override public void onRequestSuccess(String response) { if (mProgress != null) { mProgress.dismiss(); mProgress = null; } //处理响应数据 try { SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser p = factory.newSAXParser(); RSSHandler parser = new RSSHandler(); p.parse(new InputSource(new StringReader(response)), parser); mAdapter.clear(); for(NewsItem item : parser.getParsedItems()) { mAdapter.add(item); } mAdapter.notifyDataSetChanged(); } catch (Exception e) { Log.w(TAG, e); } } @Override public void onRequestError(Exception error) { if (mProgress != null) { mProgress.dismiss(); mProgress = null; } //显示错误 mAdapter.clear(); mAdapter.notifyDataSetChanged(); Toast.makeText(this, error.getMessage(), Toast.LENGTH_SHORT).show(); } } </code></pre> <p>这个示例修改之后会显示一个ListView,其中的数据就是从RSS源解析出来的。在这个示例中,我们为列表添加一个OnItemClickListener,用户点击时会在浏览器中加载新闻项的链接。<br> 当数据从API的响应回调方法返回时,Android内置的SAX解析器会遍历XML字符串。SAXParser.parse()会使用RSSHandler的实例来处理XML,从XML中解析的内容会用来填充RSSHandler的feedItems列表。接收器在逐个处理解析出来的项,将其添加到ArrayAdapter中,最终显示在ListView中。</p> <p><strong>XMLPullParser</strong></p> <p>由框架提供的XmlPullParser是另一种高效解析传入的XML数据的方式。和SAX一样,解析过程也是基于流的,由于解析开始之前并不需要加载整个XML数据结构,因此在解析大文档源时也就不需要太多的内存。下面让我们看一下使用XmlPullParser解析RSS源数据的实例。但与SAX不同,我们必须手动地干预每一步的数据流解析过程,即使是我们不感兴趣的标签元素。<br> 以下代码包含一个工厂类,它会迭代源数据以构造元素模型。</p> <p><strong>用来将XML解析成模型对象的工厂类</strong></p> <pre><code>public class NewsItemFactory { /* 数据模型类 */ public static class NewsItem { public String title; public String link; public String description; @Override public String toString() { return title; } } /* * 将 RSS 源解析为一个NewsItem 元素的列表 */ public static List<NewsItem> parseFeed(XmlPullParser parser) throws XmlPullParserException, IOException { List<NewsItem> items = new ArrayList<NewsItem>(); while (parser.next() != XmlPullParser.END_TAG) { if (parser.getEventType() != XmlPullParser.START_TAG) { continue; } if (parser.getName().equals("rss") || parser.getName().equals("channel")) { //跳过这些元素,但允许解析它们内部的元素 } else if (parser.getName().equals("item")) { NewsItem newsItem = readItem(parser); items.add(newsItem); } else { //跳过其他元素以及它们的子元素 skip(parser); } } //返回解析后的列表 return items; } /* *将每个 <item> 元素解析为一个NewsItem */ private static NewsItem readItem(XmlPullParser parser) throws XmlPullParserException, IOException { NewsItem newsItem = new NewsItem(); //开头必须是有效的 <item> 元素 parser.require(XmlPullParser.START_TAG, null, "item"); while (parser.next() != XmlPullParser.END_TAG) { if (parser.getEventType() != XmlPullParser.START_TAG) { continue; } String name = parser.getName(); if (name.equals("title")) { parser.require(XmlPullParser.START_TAG, null, "title"); newsItem.title = readText(parser); parser.require(XmlPullParser.END_TAG, null, "title"); } else if (name.equals("link")) { parser.require(XmlPullParser.START_TAG, null, "link"); newsItem.link = readText(parser); parser.require(XmlPullParser.END_TAG, null, "link"); } else if (name.equals("description")) { parser.require(XmlPullParser.START_TAG, null, "description"); newsItem.description = readText(parser); parser.require(XmlPullParser.END_TAG, null, "description"); } else { //跳过其他元素以及它们的子元素 skip(parser); } } return newsItem; } /* * 读取当前元素的文本内容,该内容start和end标签之间包含的数据 */ private static String readText(XmlPullParser parser) throws IOException, XmlPullParserException { String result = ""; if (parser.next() == XmlPullParser.TEXT) { result = parser.getText(); parser.nextTag(); } return result; } /* * 辅助方法,用来跳过当前元素以及该元素的子元素 */ private static void skip(XmlPullParser parser) throws XmlPullParserException, IOException { if (parser.getEventType() != XmlPullParser.START_TAG) { throw new IllegalStateException(); } /* * 对于每个新标签,会把一个depth计数器加1。到达每个标签的结尾时会把 * 计时器减1并且在end标签与开始时的标签匹配时会返回 */ int depth = 1; while (depth != 0) { switch (parser.next()) { case XmlPullParser.END_TAG: depth--; break; case XmlPullParser.START_TAG: depth++; break; } } } } </code></pre> <p>Pull解析过程的工作原理就是把数据流作为一系列的事件来处理。应用程序通过调用next()方法或该方法的一个或多个指定变体来告诉解析器处理下一个事件。以下是解析器会处理的事件类型:</p> <ul> <li>START_DOCUMENT :当解析器首次初始化时会返回这个事件。在首次调用next()、nextToken()或nextTag()之前,解析器都会是这个状态。</li> <li>START_TAG :解析器刚刚读取标签元素的开始部分。标签的名称可以通过getName()获得,里面的任何属性也可以通过getAttributeValue()和相关的方法获得。</li> <li>TEXT :读取标签元素内部的字符数据,可以通过getText()获取。</li> <li>END_TAG :解析器刚刚读取标签元素的结尾部分。和它相匹配的开始标签的名称可以通过getName()获得。</li> <li>END_DOCUMENT :表明到达了数据量的结尾。</li> </ul> <p>由于必须自己操作解析器,因此我们创建了一个辅助方法skip(),它可以帮助解析器跳过我们不感兴趣的标签。这个方法从当前位置开始遍历所有的内嵌子元素,直到找到匹配的结束标签,并把它们全部跳过。这里使用了一个depth计数器,碰到每个开始标签时会递增,碰到每个结束标签时会递减。当depth计数器到达0时,我们就找到了与开始位置相匹配的结束标签了。<br> 本例中,在调用parseFeed()方法时,解析器首先会迭代数据流来查找可以转换为NewsItem的<item>标签。除了<rss>和<channel>,所有不是<item>的元素都可以跳过。这是因为所有的项都是内嵌在这两个标签之中的,因此即使我们对它们不直接感兴趣,也不能把它们交给skip()处理,否则所有的项都会被跳过。<br> 分析每个<item>元素的工作是由readItem()方法完成的,它会构造一个新的NewsItem,该NewsItem的内容来自于<item>内部的数据。readItem()方法首先会调用require(),它是一种安全性检查能够确保XML是我们希望的格式。如果当前的解析器事件和传入的命名空间、标签名称相匹配的话,这个方法会静默地返回;否则,它会抛出异常。当我们遍历子元素时,我们主要查找title、link和description标签,这样就可以把它们的值读取到模型数据中。查找到所需的标签后,readText()会操作解析器并把相关字符数据取出。同样,在<item>内部有一些其他元素我们并没有解析,对于不需要的标签只需要调用skip()即可。<br> 可见XmlPullParser非常灵活,原因是可控制整个过程的每一步,但这也要求写更多的代码来完成相同的结果。以下代码清单展示了使用新的解析器来完成源数据显示的Activity。</p> <p><strong>显示解析的XML源的Activity</strong></p> <pre><code>public class PullFeedActivity extends Activity implements ResponseCallback { private static final String TAG = "FeedReader"; private static final String FEED_URI = "http://news.google.com/?output=rss"; private ListView mList; private ArrayAdapter<NewsItem> mAdapter; private ProgressDialog mProgress; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mList = new ListView(this); mAdapter = new ArrayAdapter<NewsItem>(this, android.R.layout.simple_list_item_1, android.R.id.text1); mList.setAdapter(mAdapter); mList.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View v, int position, long id) { NewsItem item = mAdapter.getItem(position); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse(item.link)); startActivity(intent); } }); setContentView(mList); } @Override public void onResume() { super.onResume(); //获取RSS 源数据 try{ RestTask task = RestUtil.obtainGetTask(FEED_URI); task.setResponseCallback(this); task.execute(); mProgress = ProgressDialog.show(this, "Searching", "Waiting For Results...", true); } catch (Exception e) { Log.w(TAG, e); } } @Override public void onRequestSuccess(String response) { if (mProgress != null) { mProgress.dismiss(); mProgress = null; } //处理响应数据 try { XmlPullParser parser = Xml.newPullParser(); parser.setInput(new StringReader(response)); //跳过第一个标签 parser.nextTag(); mAdapter.clear(); for(NewsItem item : NewsItemFactory.parseFeed(parser)) { mAdapter.add(item); } mAdapter.notifyDataSetChanged(); } catch (Exception e) { Log.w(TAG, e); } } @Override public void onRequestError(Exception error) { if (mProgress != null) { mProgress.dismiss(); mProgress = null; } //显示错误 mAdapter.clear(); mAdapter.notifyDataSetChanged(); Toast.makeText(this, error.getMessage(), Toast.LENGTH_SHORT).show(); } } </code></pre> <p>使用Xml.newPullParser()可以实例化一个新的XmlPullParser,通过setInput()可以将数据源的输入流作为一个Reader。本例中,从Web服务器返回的数据已经是字符串了,所以我们把它封装成一个StringReader来让解析器解析。我们可以把解析器传给NewsItemFactory,之后会返回NewsItem元素的列表,我们把它添加到ListAdapter中,然后像之前那样显示出来。</p> <p><strong>提示:</strong><br> 还可以使用XmlPullParser解析应用程序中绑定的本地XML数据。把你的原始XML放到资源文件中(如res/xml),然后你就可以实例化一个XmlResourceParser,它会使用Resourse.getXml()预加载你的本地数据。</p> </article> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1731126586272460800"></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">你可能感兴趣的:(8. 解析XML)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1835504217729626112.htm" title="Python教程:一文了解使用Python处理XPath" target="_blank">Python教程:一文了解使用Python处理XPath</a> <span class="text-muted">旦莫</span> <a class="tag" taget="_blank" href="/search/Python%E8%BF%9B%E9%98%B6/1.htm">Python进阶</a><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>目录1.环境准备1.1安装lxml1.2验证安装2.XPath基础2.1什么是XPath?2.2XPath语法2.3示例XML文档3.使用lxml解析XML3.1解析XML文档3.2查看解析结果4.XPath查询4.1基本路径查询4.2使用属性查询4.3查询多个节点5.XPath的高级用法5.1使用逻辑运算符5.2使用函数6.实战案例6.1从网页抓取数据6.1.1安装Requests库6.1.2代</div> </li> <li><a href="/article/1835462192720343040.htm" title="可以赚钱的app,你们都在用哪些?" target="_blank">可以赚钱的app,你们都在用哪些?</a> <span class="text-muted">配音新手圈</span> <div>1.七猫免费小说2.有柿3.番茄小说兼职副业推荐公众号,配音新手圈,声优配音圈,新配音兼职圈,配音就业圈,鼎音副业,有声新手圈,每天更新各种远程工作与在线兼职,职位包括:写手、程序开发、剪辑、设计、翻译、配音、无门槛、插画、翻译、等等。。。每日更新兼职。4.速读免费小说5.得间免费小说6.快手7.快手极速8.抖音火山版(可提0.2,可能我懒赚的慢,但真不推荐)9.拼多多10.淘宝11.点淘12.美</div> </li> <li><a href="/article/1835424325776273408.htm" title="感恩日记6.10" target="_blank">感恩日记6.10</a> <span class="text-muted">舞动精灵Yummy</span> <div>1.感恩我早起如约而至去参加讲师互助活动2.感恩我在书店也能放开自己做呼吸法,3.感恩所有今天来参加EHE讲师们,谢谢他们的如约而至,谢谢4.妈妈准备丰盛的早餐和晚餐,谢谢,谢谢5.感恩钱宝宝让我可以坐公交车,可以买好吃的,谢谢,谢谢6.感恩男神一直的在和陪伴,谢谢,谢谢7.感恩陈彧老师的大爱接纳,谢谢,谢谢8.感恩林子姐姐总是对我那么的宠爱和关心,谢谢,谢谢9.感恩林子姐姐的看见,谢谢,谢谢10</div> </li> <li><a href="/article/1835418100149874688.htm" title="天上的每颗星星 都是殉难者的生命" target="_blank">天上的每颗星星 都是殉难者的生命</a> <span class="text-muted">摘到月亮了吗</span> <div>1.“小孩怎么一见到哥哥就脸红”——《偷偷藏不住》2.“娶她是我高中就认定的事”──《痛仰》3.“他扛下一切风雨先你一步成长然后来宠你他真的好喜欢你”——《偏偏宠爱》4.天上的每颗星星都是殉难者的生命——耳东兔子5.未经允许擅自特别喜欢你不好意思了——《默读》6.“许星纯你猜我在干嘛我在等风等风热吻你”——《等风热吻你》7.“我爱你如鲸向海似鸟投林不可避免退无可退”——陆霆骁《许你万丈光芒好》8.</div> </li> <li><a href="/article/1835409339293200384.htm" title="润忻21天跨年魔力打卡D12早.正月初九《感恩日记》" target="_blank">润忻21天跨年魔力打卡D12早.正月初九《感恩日记》</a> <span class="text-muted">尧安妈咪呀</span> <div>1.感恩阳光透过窗帘照进我家。2.感恩暖气让我们家如此温暖。3.感恩水让我们可以洗漱。4.感恩老公对我的包容。5.感恩及时进入工作状态。6.感恩孩子们一如既往的可爱。7.感恩孩子们对我的爱。8.感恩一切顺利。8.感恩工作高效。9.感恩钱宝宝。10.感恩一切的发生。</div> </li> <li><a href="/article/1835399052678754304.htm" title="感恩日记Day 236" target="_blank">感恩日记Day 236</a> <span class="text-muted">E姐小酒窝</span> <div>图片发自App1.感谢16愿意听我"唠叨",人与人的信任和托付在此刻弥足珍贵珍贵;2.感谢到家就能吃上美味的中餐,辛苦妞爸;3.感谢妞中午愿意听我叼叼旅行中的事儿;4.感谢星巴克就在家附近,让我一杯回魂;5.感谢美妞总结我和爸爸优点并说两者揉和就很棒了。6.感谢看到妞第一天数学成绩后淡定的自己;将责任归回妞自己并总结行动。7.感谢林姐姐信任,又定变啦减脂套餐。8.感谢梅姐知道我旅行回来后约我吃饭;</div> </li> <li><a href="/article/1835165832242622464.htm" title="父亲语录" target="_blank">父亲语录</a> <span class="text-muted">小慕雅的牧屋</span> <div>以前多次都想记录下父亲的语录,等他老了之后读给他听。一直拖延到现在才开始写,这篇文章后续我会慢慢添加和调整。1.少壮不努力,老大徒伤悲。2.只要功夫深铁杵磨成针3.吃点亏少不了你的一块肉4.不是你的东西,在别人不知道的情况下不许碰5.不管在哪,把自己的位置放低一点6.天下没有免费的午餐7.出门在外不要沾小便宜就不会上当受骗7.娘家永远是你的靠山8.只要我活一天就有一天的底气9.谢谢老天让我得了糖尿</div> </li> <li><a href="/article/1835136270758670336.htm" title="⭐Unity 安卓环境中正确地读取和处理 XML 文件" target="_blank">⭐Unity 安卓环境中正确地读取和处理 XML 文件</a> <span class="text-muted">惊鸿醉</span> <a class="tag" taget="_blank" href="/search/Unity/1.htm">Unity</a><a class="tag" taget="_blank" href="/search/unity/1.htm">unity</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a> <div>写了一个选择题Demo,电脑包和编辑器内无问题,但是打包安卓手机之后题目无法正常使用,想到的是安卓环境中正确地读取文件的问题改进方案:1.由于XmlDocument.Load方法在Android上的路径问题(由于文件位于APK内部,无法像在文件系统中那样直接访问),需要先使用UnityWebRequest来异步加载文件内容,然后再解析XML。2.异步处理:修改你的代码,以支持异步文件加载和处理,这</div> </li> <li><a href="/article/1835124489625628672.htm" title="2023-10-31" target="_blank">2023-10-31</a> <span class="text-muted">贤知国学</span> <div>易经八卦与佛学八识的对应关系如下:1.乾卦对应第八阿赖耶识。2.坤卦对应第七末那识。3.震卦对应第六意识。4.离卦对应眼识。5.坎卦对应耳识。6.巽卦对应鼻识。7.兑卦对应舌识。8.艮封对应身识。</div> </li> <li><a href="/article/1835113407108444160.htm" title="回首" target="_blank">回首</a> <span class="text-muted">静竟</span> <div>2019.1.29听了表姐一席话,感触良多浪漫之后是柴米油盐酱醋茶的现实我的蓝朋友标准:1.年龄大5岁2.身高1.8米左右3.学历本科以上4.脾气好,不轻易生气5.工作稳定,福利齐全,周末双休,节假日正常,还有年休假6.在万科买房7.对我大方8.有上进心9.不抽烟不喝酒,无不良嗜好10.寒暑假调休出门旅游11.有车12.至少比我弟帅</div> </li> <li><a href="/article/1835103360517238784.htm" title="2024上半年软考系统架构设计师-综合知识选择题及答案" target="_blank">2024上半年软考系统架构设计师-综合知识选择题及答案</a> <span class="text-muted">不对法</span> <a class="tag" taget="_blank" href="/search/%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84/1.htm">系统架构</a> <div>1.操作系统先来先服务调度算法2.操作系统多道程序设计,利用率3.操作系统状态流转错误的,执行态到运行态4.数据库2NF每一个非主属性完全依赖主键5.数据库笛卡尔积m*n6.数据库不属于事务的特点,并发性7.数据库交集表达式R-(R-S)8.数据库反规范化属于逻辑设计9.网络没有加密功能,物理层10.网络二层交换机数据,数据链路层11.知识产权专利法是否属于民法12.知识产权商标不属于,其他几个是</div> </li> <li><a href="/article/1835092628933275648.htm" title="复盘2019-09-20" target="_blank">复盘2019-09-20</a> <span class="text-muted">飞翔的毛毛虫lh</span> <div>昨日计划:1.学审核的知识,审核两个小时√(心得:审核规范里只是关于审核的基本规则,具体详细的还需要自己摸索。)2.锻炼一次,公园健走半小时;仰卧起坐30个3.跟进PDCA的进程,催促各个环节的进度。√4.完成每日复盘√5.每日听书10分钟打卡√6.每日读书10分钟√(读书半个小时)7.背单词百词斩8.给二子做早教,每天至少讲一本书,√学数数1-10,√识字卡片2个,(大、人、小)五官的英文单词,</div> </li> <li><a href="/article/1835088550723416064.htm" title="有了男朋友之后的个人感受" target="_blank">有了男朋友之后的个人感受</a> <span class="text-muted">一条大蟒蛇</span> <div>1.男生力气真的好大。2.好爱亲亲抱抱摸摸。3.喜欢趴我胸上或者把我抱在怀里。4.对视三秒,就亲上来。5.亲一会,就给我敬礼。6.开房,不存在开门推倒,还是要先洗澡澡。7.可以厚颜无耻,我在洗澡,隔着玻璃门拉臭臭。8.韧性比我好。9.好容易出汗,开着空调稍微一运动就疯狂冒汗。10.很容易吃醋,害怕我跟别人跑了。11.太直男了,有时候商量事情,不过脑直接说出来,导致我太难接。比如说年假约好一起回老家</div> </li> <li><a href="/article/1835073488541544448.htm" title="网上商城项目总结 续" target="_blank">网上商城项目总结 续</a> <span class="text-muted">猫只i</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/web/1.htm">web</a><a class="tag" taget="_blank" href="/search/%E7%94%B5%E5%AD%90%E5%95%86%E5%9F%8E/1.htm">电子商城</a><a class="tag" taget="_blank" href="/search/%E7%BB%93%E6%9E%84/1.htm">结构</a> <div>前台1.用户登录注册邮箱验证校验用户名是否存在验证码自动登录2.导航条自定义标签库采用异步读取数据(使用gson将集合转换json数据)Redis服务器3.首页热门商品查询展示4.分类列表分页查询5.商品详情用cookie实现浏览记录6.购物车实现商品添加到购物车商品的查询,添加,修改,删除清空购物车7.提交订单添加订单(订单详情)确认订单(易宝支付)8.我的订单9.Fliter定义权限拦截(提交</div> </li> <li><a href="/article/1835066678912839680.htm" title="PyCharm配置及使用Git教程_pycharm配置git(2)" target="_blank">PyCharm配置及使用Git教程_pycharm配置git(2)</a> <span class="text-muted">2401_84182146</span> <a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/pycharm/1.htm">pycharm</a><a class="tag" taget="_blank" href="/search/git/1.htm">git</a><a class="tag" taget="_blank" href="/search/elasticsearch/1.htm">elasticsearch</a> <div>文章目录1.安装PyCharm2.安装Git3.在PyCharm中配置Git插件4.连接远程仓库5.Clone项目代码6.将本地文件提交到远程仓库6.1gitadd6.2gitcommit6.3gitpush6.4gitpull7.代码回滚8.分支操作8.1新建分支8.2切换分支8.3合并分支</div> </li> <li><a href="/article/1835051794393296896.htm" title="pat甲级刷题计划-字符串" target="_blank">pat甲级刷题计划-字符串</a> <span class="text-muted">清尘浊水ll</span> <a class="tag" taget="_blank" href="/search/PTA/1.htm">PTA</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a> <div>PAT甲级刷题计划-字符串字符串整理的共19题(持续整理中),后续会整理相应的题号。题目参考自acwing~,争取在8月份前完成更新!目录1.计算a+b2.拼写正确3.签到与签出4.密码5.男孩vs女孩6.字符串减法7.说法方式8.约会(1061)1.计算a+b并以标准格式输出总和----也就是说,从最低位开始每隔三位数加进一个逗号(千位分隔符),如果结果少于四位则不需添加。输入格式共一行,包含两</div> </li> <li><a href="/article/1834959252985311232.htm" title="清醒文案丨优先考虑那个优先考虑你的人。" target="_blank">清醒文案丨优先考虑那个优先考虑你的人。</a> <span class="text-muted">晚藏温柔屿</span> <div>1.优先考虑那个优先考虑你的人。2.不要因为说了你想听的你就信了。3.一直停在原地,麻的不是腿脚是脑子。4.过去的事情唯一可爱之处就在于它已经过去。5.一个人的时间用在什么地方是看得见的。6.做你害怕做的事情,然后你会发现,不过如此。7.有时候你以为天要塌下来了,其实是自己站歪了。8.生活里有时无论你说的多么谨慎,却总有人曲解你的意思。9.无底线的迎合,只会让自己站在大雾里,连自己都看不清自己。1</div> </li> <li><a href="/article/1834834201300529152.htm" title="Java-后端程序员个人知识总结" target="_blank">Java-后端程序员个人知识总结</a> <span class="text-muted">金肴羽</span> <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>文章目录概要1.编程语言2.数据结构与算法3.数据库知识4.框架和库5.服务器管理6.网络知识7.版本控制8.测试9.安全知识10.系统设计11.编码规范与最佳实践12.持续学习和适应能力概要后端程序员,主要负责应用程序的逻辑、数据库交互、服务器配置以及应用的性能优化等。成为一名优秀的后台程序员,需要掌握以下技能:1.编程语言掌握至少一种后台编程语言JavaPythonHtmlJavaScript</div> </li> <li><a href="/article/1834812115614003200.htm" title="感恩单1.11" target="_blank">感恩单1.11</a> <span class="text-muted">krysdracula</span> <div>1.感谢早上我的手机闹钟叫我起床.2.感谢感谢游艺阿姨家人送我们去医院…3.感谢简老师今天教给我的知识…4.感谢公交车司机送我回来…真的挺快的5.感谢许节节借给我煮药的罐子6.感谢郑荣枰和吕怡买了好多东西一起吃7.感谢今天我的小雨伞辛苦了~8.感谢郑荣枰家热水器让我洗了个热水澡今日观想:看到姐姐就还是有些接受不了她去世的消息…这个真的好难</div> </li> <li><a href="/article/1834799642714402816.htm" title="感恩日记第65篇" target="_blank">感恩日记第65篇</a> <span class="text-muted">富敬</span> <div>2020年3月5日(星期四)天气阴,墨墨宝贝6周岁,骁骁宝贝1岁10个月墨墨宝贝读经典内容.89周1.墨墨137读经法《皇帝内经,官针第七》1遍,累计4遍《诗经周南》1遍,累计4遍《中国古典长诗精选4孔雀东南飞汉乐府二》1遍,累计4遍累计读经内容:全文跟读:1.易经7遍,2.弟子规7遍,3.三字经7遍,4.大学7遍,5.中庸7遍,6.百家姓7遍,7.德育启蒙7遍,8.成语接龙7遍,9.论语7遍,1</div> </li> <li><a href="/article/1834680916820193280.htm" title="【问题解决】记一次 ubuntu 报错 version `GLIBC_2.28‘ not found (required by node) 解决过程" target="_blank">【问题解决】记一次 ubuntu 报错 version `GLIBC_2.28‘ not found (required by node) 解决过程</a> <span class="text-muted">瘦子由</span> <a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a> <div>在ubuntu安装node.js20.x版本的时候报标题中错误现象解决方案1.更新系统软件包2.查看系统的GLIBC版本3.添加debian软件源4.添加软件源key5.更新软件源6.安装libc67.验证系统中的GLIBC版本8.验证node可用现象解决方案1.更新系统软件包sudoaptupdatesudoaptupgrade2.查看系统的GLIBC版本strings/lib/x86_64-l</div> </li> <li><a href="/article/1834680743104704512.htm" title="每日一联(5.24)飞鸿衔落日" target="_blank">每日一联(5.24)飞鸿衔落日</a> <span class="text-muted">乔平_</span> <div>每日一联(5.24)出句:飞鸿衔落日对句:1.垂柳钓新图(兰馨幽幽)2.电信显微频(磊硌)3.秋水拥残霞(泉水叮咚)4.朗月伴归舟(王凤捷)5.陈酿化凡愁(丁贵明)6.淡雾笼高楼(乔平)7.谷雨润禾苗(磊硌)8.走马踏西风(闲客)9.战马踏晨曦(刘君杰)10.铁马踏冰河(四海波平)11.海浪卷朝云(钦建军)12.瘦马啸寒风(磊硌)13.跃鲤抱黄河(涛声依旧)14.流水送经年(梦清幽)15.舞燕点清</div> </li> <li><a href="/article/1834656081398296576.htm" title="MySQL8.0主从" target="_blank">MySQL8.0主从</a> <span class="text-muted">彭宇栋</span> <a class="tag" taget="_blank" href="/search/MySQL/1.htm">MySQL</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><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a> <div>目录1.环境说明3.在主数据库里创建一个同步账号授权给从数据库使用4配置主数据库5.配置从数据库6.配置并启动主从复制7.测试主从复制8.问题集锦8.1为什么开启主从复制Slave_IO_Running不是YES?8.2主库授权的用户为什么从库登不上?1.环境说明数据库角色IP应用与系统版本主数据库192.168.5.55CentOS7.8mysql8.0从数据库192.168.5.56CentO</div> </li> <li><a href="/article/1834628195186470912.htm" title="来尝尝这碗毒鸡汤,如何?" target="_blank">来尝尝这碗毒鸡汤,如何?</a> <span class="text-muted">佛祖说</span> <div>图片发自App1.你以为有钱人很快乐吗?他们的快乐你根本想象不到!2.时间真的能改变一个人,比如你以前丑,现在更丑。33.条条大路通罗马,而有些人就住在罗马。4.你只看到别人在表面上活得春风得意,却不知道人家在背后也过得也风生水起。5.人生就像一杯水,孤独,孤独,孤独,一辈子就完了。6.别灰心,人生就是这样起起落落落落落落落落落落落的。7.长得丑就是病,不然为什么整形医院叫医院。8.熟练的用运“关</div> </li> <li><a href="/article/1834463362046586880.htm" title="2022.6.25生命基本功打卡" target="_blank">2022.6.25生命基本功打卡</a> <span class="text-muted">60a405094922</span> <div>2022.6.25打卡第167天【基本功】1.超级祝福术2.日行一善(捐款)3.大悲咒14次4.喜悦曼陀罗5.抄经6.颤抖功7.动功8.大自然【今日乐事】1.今天做了一个个案淡淡定定轻松搞定,我跟孩子说2点钟以后不要大声说话,果然给了我很安静的环境,孩子太棒啦!2.我是不是喜悦曼陀罗上瘾?我又做了喜悦曼陀罗,果然老师说的太对了,集体喜悦曼陀罗和自己做的不同是,自己做的能量感更强3.天黑了,带着娃出</div> </li> <li><a href="/article/1834429401584988160.htm" title="感恩日记-Day65" target="_blank">感恩日记-Day65</a> <span class="text-muted">不断升华的灵魂</span> <div>5.12感恩日记1.感恩水,可以帮我洗衣服,洗去脏污,焕然一新2.感恩阳光,可以帮我晒干衣物,这大热天,一会儿就干了3.感恩衣架,可以帮我挂好衣物,很方便,整整齐齐的4.感恩阳台,可以有一个很好的空间去晾晒衣物5.感恩汰渍洗衣粉,可以很轻松就去除了污渍,很好用6.感恩阅读,让我的思想越来越进步,每天都有成长7.感恩我的朋友圈,积极的信息我都会去点赞支持8.感恩阳台的绿色的植物,看上去很清凉,一点都</div> </li> <li><a href="/article/1834414208184315904.htm" title="【大数据】如何读取多个Excel文件并计算列数据的最大求和值" target="_blank">【大数据】如何读取多个Excel文件并计算列数据的最大求和值</a> <span class="text-muted">熬夜的王</span> <a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/excel/1.htm">excel</a><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><a class="tag" taget="_blank" href="/search/big/1.htm">big</a><a class="tag" taget="_blank" href="/search/data/1.htm">data</a> <div>导语:在数据分析和处理中,我们经常需要从多个Excel文件中提取数据并进行计算。本文将带您通过一个实用的Python教程,学习如何读取D盘目录下特定文件夹内的多个Excel文件,并计算特定列数据的最大求和值。文章目录一、准备工作二、教程步骤1.导入必要的库2.设置文件路径3.获取Excel文件列表4.选择文件5.初始化最大求和值6.指定求和的列索引7.读取Excel文件并计算列求和8.输出结果三、</div> </li> <li><a href="/article/1834400467820572672.htm" title="Django核心面试题" target="_blank">Django核心面试题</a> <span class="text-muted">闲人编程</span> <a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98%E9%9D%A2%E8%AF%95/1.htm">程序员面试</a><a class="tag" taget="_blank" href="/search/django/1.htm">django</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a> <div>Django核心面试题Django核心面试题Django核心面试题1.Django的MVT架构是什么?2.如何创建Django项目和应用?3.DjangoORM是什么?4.什么是Django的middleware?举例说明。5.Django中的静态文件如何处理?6.如何定义Django模型?7.什么是Django的QuerySet?如何使用?8.如何进行Django的数据库迁移?9.Django中</div> </li> <li><a href="/article/1834393906062651392.htm" title="【鼎典美育】家庭美育延伸" target="_blank">【鼎典美育】家庭美育延伸</a> <span class="text-muted">小龙虾的妈妈是兔兔</span> <div>家庭美育拓展训练•涂鸦阶段:家庭美育拓展训练•想象力阶段:磨痕。一根线的魔力家庭美育拓展训练•线的练习阶段:1.鸡蛋壳边缘2.钱老师拉长画3.画半个脸4.拓印、硫酸纸5.找图案组合6.找树皮纹理,机理,树叶纹理,7.光..影子,8.包装袋花纹,9.找痕迹、印迹、10.指纹密码、11.服饰独特花纹,12.化妆品盒,13.鞋盒图案,14.标签️、15.左手画画、16.鞋带,充电线,17.麻花儿,18.</div> </li> <li><a href="/article/1834376612485885952.htm" title="肖馨感恩日记590天" target="_blank">肖馨感恩日记590天</a> <span class="text-muted">肖馨肖馨</span> <div>图片发自App1.感谢今天上课的三个家庭对我的信赖,认真学习知行合一2.感谢自己从事了教育工作,让我不断地看见和成长3.感谢自己温柔而坚定的没心,对待我的家长和孩子们4.感谢七月这么美好,安安心心快快乐乐的上课5.感谢今天佳敏做了好吃的饭菜当晚餐,太幸福了6.感谢今天顺顺家庭的坚定和果断,因为相信所以看见,因为看见所以成长7.感谢今天中午睡了一个小午觉,调整了自己的上课状态8.感谢宇宙天使已使我拥</div> </li> <li><a href="/article/80.htm" title="java杨辉三角" target="_blank">java杨辉三角</a> <span class="text-muted">3213213333332132</span> <a class="tag" taget="_blank" href="/search/java%E5%9F%BA%E7%A1%80/1.htm">java基础</a> <div> package com.algorithm; /** * @Description 杨辉三角 * @author FuJianyong * 2015-1-22上午10:10:59 */ public class YangHui { public static void main(String[] args) { //初始化二维数组长度 int[][] y</div> </li> <li><a href="/article/207.htm" title="《大话重构》之大布局的辛酸历史" target="_blank">《大话重构》之大布局的辛酸历史</a> <span class="text-muted">白糖_</span> <a class="tag" taget="_blank" href="/search/%E9%87%8D%E6%9E%84/1.htm">重构</a> <div>《大话重构》中提到“大布局你伤不起”,如果企图重构一个陈旧的大型系统是有非常大的风险,重构不是想象中那么简单。我目前所在公司正好对产品做了一次“大布局重构”,下面我就分享这个“大布局”项目经验给大家。   背景         公司专注于企业级管理产品软件,企业有大中小之分,在2000年初公司用JSP/Servlet开发了一套针对中</div> </li> <li><a href="/article/334.htm" title="电驴链接在线视频播放源码" target="_blank">电驴链接在线视频播放源码</a> <span class="text-muted">dubinwei</span> <a class="tag" taget="_blank" href="/search/%E6%BA%90%E7%A0%81/1.htm">源码</a><a class="tag" taget="_blank" href="/search/%E7%94%B5%E9%A9%B4/1.htm">电驴</a><a class="tag" taget="_blank" href="/search/%E6%92%AD%E6%94%BE%E5%99%A8/1.htm">播放器</a><a class="tag" taget="_blank" href="/search/%E8%A7%86%E9%A2%91/1.htm">视频</a><a class="tag" taget="_blank" href="/search/ed2k/1.htm">ed2k</a> <div>本项目是个搜索电驴(ed2k)链接的应用,借助于磁力视频播放器(官网: http://loveandroid.duapp.com/ 开放平台),可以实现在线播放视频,也可以用迅雷或者其他下载工具下载。 项目源码: http://git.oschina.net/svo/Emule,动态更新。也可从附件中下载。 项目源码依赖于两个库项目,库项目一链接: http://git.oschina.</div> </li> <li><a href="/article/461.htm" title="Javascript中函数的toString()方法" target="_blank">Javascript中函数的toString()方法</a> <span class="text-muted">周凡杨</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/js/1.htm">js</a><a class="tag" taget="_blank" href="/search/toString/1.htm">toString</a><a class="tag" taget="_blank" href="/search/function/1.htm">function</a><a class="tag" taget="_blank" href="/search/object/1.htm">object</a> <div>简述     The toString() method returns a string representing the source code of the function.     简译之,Javascript的toString()方法返回一个代表函数源代码的字符串。 句法     function.</div> </li> <li><a href="/article/588.htm" title="struts处理自定义异常" target="_blank">struts处理自定义异常</a> <span class="text-muted">g21121</span> <a class="tag" taget="_blank" href="/search/struts/1.htm">struts</a> <div>很多时候我们会用到自定义异常来表示特定的错误情况,自定义异常比较简单,只要分清是运行时异常还是非运行时异常即可,运行时异常不需要捕获,继承自RuntimeException,是由容器自己抛出,例如空指针异常。 非运行时异常继承自Exception,在抛出后需要捕获,例如文件未找到异常。 此处我们用的是非运行时异常,首先定义一个异常LoginException: /** * 类描述:登录相</div> </li> <li><a href="/article/715.htm" title="Linux中find常见用法示例" target="_blank">Linux中find常见用法示例</a> <span class="text-muted">510888780</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>Linux中find常见用法示例 ·find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \; find命令的参数;</div> </li> <li><a href="/article/842.htm" title="SpringMVC的各种参数绑定方式" target="_blank">SpringMVC的各种参数绑定方式</a> <span class="text-muted">Harry642</span> <a class="tag" taget="_blank" href="/search/springMVC/1.htm">springMVC</a><a class="tag" taget="_blank" href="/search/%E7%BB%91%E5%AE%9A/1.htm">绑定</a><a class="tag" taget="_blank" href="/search/%E8%A1%A8%E5%8D%95/1.htm">表单</a> <div>1. 基本数据类型(以int为例,其他类似): Controller代码: @RequestMapping("saysth.do") public void test(int count) { } 表单代码: <form action="saysth.do" method="post&q</div> </li> <li><a href="/article/969.htm" title="Java 获取Oracle ROWID" target="_blank">Java 获取Oracle ROWID</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a> <div> A ROWID is an identification tag unique for each row of an Oracle Database table. The ROWID can be thought of as a virtual column, containing the ID for each row. The oracle.sql.ROWID class i</div> </li> <li><a href="/article/1096.htm" title="java获取方法的参数名" target="_blank">java获取方法的参数名</a> <span class="text-muted">antlove</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><a class="tag" taget="_blank" href="/search/parameter/1.htm">parameter</a><a class="tag" taget="_blank" href="/search/method/1.htm">method</a><a class="tag" taget="_blank" href="/search/reflect/1.htm">reflect</a> <div>reflect.ClassInformationUtil.java package reflect; import javassist.ClassPool; import javassist.CtClass; import javassist.CtMethod; import javassist.Modifier; import javassist.bytecode.CodeAtt</div> </li> <li><a href="/article/1223.htm" title="JAVA正则表达式匹配 查找 替换 提取操作" target="_blank">JAVA正则表达式匹配 查找 替换 提取操作</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</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><a class="tag" taget="_blank" href="/search/%E6%9B%BF%E6%8D%A2/1.htm">替换</a><a class="tag" taget="_blank" href="/search/%E6%8F%90%E5%8F%96/1.htm">提取</a><a class="tag" taget="_blank" href="/search/%E6%9F%A5%E6%89%BE/1.htm">查找</a> <div>正则表达式的查找;主要是用到String类中的split();       String str;      str.split();方法中传入按照什么规则截取,返回一个String数组   常见的截取规则: str.split("\\.")按照.来截取 str.</div> </li> <li><a href="/article/1350.htm" title="Java中equals()与hashCode()方法详解" target="_blank">Java中equals()与hashCode()方法详解</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/set/1.htm">set</a><a class="tag" taget="_blank" href="/search/equals%28%29/1.htm">equals()</a><a class="tag" taget="_blank" href="/search/hashCode%28%29/1.htm">hashCode()</a> <div>一.equals()方法详解     equals()方法在object类中定义如下:  public boolean equals(Object obj) { return (this == obj); }    很明显是对两个对象的地址值进行的比较(即比较引用是否相同)。但是我们知道,String 、Math、I</div> </li> <li><a href="/article/1477.htm" title="精通Oracle10编程SQL(4)使用SQL语句" target="_blank">精通Oracle10编程SQL(4)使用SQL语句</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</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/plsql/1.htm">plsql</a> <div>--工资级别表 create table SALGRADE ( GRADE NUMBER(10), LOSAL NUMBER(10,2), HISAL NUMBER(10,2) ) insert into SALGRADE values(1,0,100); insert into SALGRADE values(2,100,200); inser</div> </li> <li><a href="/article/1604.htm" title="【Nginx二】Nginx作为静态文件HTTP服务器" target="_blank">【Nginx二】Nginx作为静态文件HTTP服务器</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/HTTP%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">HTTP服务器</a> <div> Nginx作为静态文件HTTP服务器 在本地系统中创建/data/www目录,存放html文件(包括index.html) 创建/data/images目录,存放imags图片 在主配置文件中添加http指令   http { server { listen 80; server_name </div> </li> <li><a href="/article/1731.htm" title="kafka获得最新partition offset" target="_blank">kafka获得最新partition offset</a> <span class="text-muted">blackproof</span> <a class="tag" taget="_blank" href="/search/kafka/1.htm">kafka</a><a class="tag" taget="_blank" href="/search/partition/1.htm">partition</a><a class="tag" taget="_blank" href="/search/offset/1.htm">offset</a><a class="tag" taget="_blank" href="/search/%E6%9C%80%E6%96%B0/1.htm">最新</a> <div>kafka获得partition下标,需要用到kafka的simpleconsumer   import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.List; import java.</div> </li> <li><a href="/article/1858.htm" title="centos 7安装docker两种方式" target="_blank">centos 7安装docker两种方式</a> <span class="text-muted">ronin47</span> <div>      第一种是采用yum 方式              yum install -y docker           </div> </li> <li><a href="/article/1985.htm" title="java-60-在O(1)时间删除链表结点" target="_blank">java-60-在O(1)时间删除链表结点</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div> public class DeleteNode_O1_Time { /** * Q 60 在O(1)时间删除链表结点 * 给定链表的头指针和一个结点指针(!!),在O(1)时间删除该结点 * * Assume the list is: * head->...->nodeToDelete->mNode->nNode->..</div> </li> <li><a href="/article/2112.htm" title="nginx利用proxy_cache来缓存文件" target="_blank">nginx利用proxy_cache来缓存文件</a> <span class="text-muted">cfyme</span> <a class="tag" taget="_blank" href="/search/cache/1.htm">cache</a> <div>user  zhangy users; worker_processes 10; error_log  /var/vlogs/nginx_error.log  crit; pid        /var/vlogs/nginx.pid; #Specifies the value for ma</div> </li> <li><a href="/article/2239.htm" title="[JWFD开源工作流]JWFD嵌入式语法分析器负号的使用问题" target="_blank">[JWFD开源工作流]JWFD嵌入式语法分析器负号的使用问题</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F/1.htm">嵌入式</a> <div>     假如我们需要用JWFD的语法分析模块定义一个带负号的方程式,直接在方程式之前添加负号是不正确的,而必须这样做:     string str01 = "a=3.14;b=2.71;c=0;c-((a*a)+(b*b))"     定义一个0整数c,然后用这个整数c去</div> </li> <li><a href="/article/2366.htm" title="如何集成支付宝官方文档" target="_blank">如何集成支付宝官方文档</a> <span class="text-muted">dai_lm</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>官方文档下载地址 https://b.alipay.com/order/productDetail.htm?productId=2012120700377310&tabId=4#ps-tabinfo-hash 集成的必要条件 1. 需要有自己的Server接收支付宝的消息 2. 需要先制作app,然后提交支付宝审核,通过后才能集成 调试的时候估计会真的扣款,请注意 </div> </li> <li><a href="/article/2493.htm" title="应该在什么时候使用Hadoop" target="_blank">应该在什么时候使用Hadoop</a> <span class="text-muted">datamachine</span> <a class="tag" taget="_blank" href="/search/hadoop/1.htm">hadoop</a> <div>原帖地址:http://blog.chinaunix.net/uid-301743-id-3925358.html 存档,某些观点与我不谋而合,过度技术化不可取,且hadoop并非万能。 --------------------------------------------万能的分割线-------------------------------- 有人问我,“你在大数据和Hado</div> </li> <li><a href="/article/2620.htm" title="在GridView中对于有外键的字段使用关联模型进行搜索和排序" target="_blank">在GridView中对于有外键的字段使用关联模型进行搜索和排序</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/yii/1.htm">yii</a> <div>在GridView中使用关联模型进行搜索和排序 首先我们有两个模型它们直接有关联: class Author extends CActiveRecord { ... } class Post extends CActiveRecord { ... function relations() { return array( '</div> </li> <li><a href="/article/2747.htm" title="使用NSString 的格式化大全" target="_blank">使用NSString 的格式化大全</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/Objective-C/1.htm">Objective-C</a> <div>格式定义The format specifiers supported by the NSString formatting methods and CFString formatting functions follow the IEEE printf specification; the specifiers are summarized in Table 1. Note that you c</div> </li> <li><a href="/article/2874.htm" title="使用activeX插件对象object滚动有重影" target="_blank">使用activeX插件对象object滚动有重影</a> <span class="text-muted">蕃薯耀</span> <a class="tag" taget="_blank" href="/search/activeX%E6%8F%92%E4%BB%B6/1.htm">activeX插件</a><a class="tag" taget="_blank" href="/search/%E6%BB%9A%E5%8A%A8%E6%9C%89%E9%87%8D%E5%BD%B1/1.htm">滚动有重影</a> <div>  使用activeX插件对象object滚动有重影   <object style="width:0;" id="abc" classid="CLSID:D3E3970F-2927-9680-BBB4-5D0889909DF6" codebase="activex/OAX339.CAB#</div> </li> <li><a href="/article/3001.htm" title="SpringMVC4零配置" target="_blank">SpringMVC4零配置</a> <span class="text-muted">hanqunfeng</span> <a class="tag" taget="_blank" href="/search/springmvc4/1.htm">springmvc4</a> <div>基于Servlet3.0规范和SpringMVC4注解式配置方式,实现零xml配置,弄了个小demo,供交流讨论。     项目说明如下: 1.db.sql是项目中用到的表,数据库使用的是oracle11g 2.该项目使用mvn进行管理,私服为自搭建nexus,项目只用到一个第三方 jar,就是oracle的驱动; 3.默认项目为零配置启动,如果需要更改启动方式,请</div> </li> <li><a href="/article/3128.htm" title="《开源框架那点事儿16》:缓存相关代码的演变" target="_blank">《开源框架那点事儿16》:缓存相关代码的演变</a> <span class="text-muted">j2eetop</span> <a class="tag" taget="_blank" href="/search/%E5%BC%80%E6%BA%90%E6%A1%86%E6%9E%B6/1.htm">开源框架</a> <div>问题引入 上次我参与某个大型项目的优化工作,由于系统要求有比较高的TPS,因此就免不了要使用缓冲。 该项目中用的缓冲比较多,有MemCache,有Redis,有的还需要提供二级缓冲,也就是说应用服务器这层也可以设置一些缓冲。 当然去看相关实现代代码的时候,大致是下面的样子。 [java] view plain copy print ? public vo</div> </li> <li><a href="/article/3255.htm" title="AngularJS浅析" target="_blank">AngularJS浅析</a> <span class="text-muted">kvhur</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a> <div>概念 AngularJS is a structural framework for dynamic web apps. 了解更多详情请见原文链接:http://www.gbtags.com/gb/share/5726.htm Directive 扩展html,给html添加声明语句,以便实现自己的需求。对于页面中html元素以ng为前缀的属性名称,ng是angular的命名空间</div> </li> <li><a href="/article/3382.htm" title="架构师之jdk的bug排查(一)---------------split的点号陷阱" target="_blank">架构师之jdk的bug排查(一)---------------split的点号陷阱</a> <span class="text-muted">nannan408</span> <a class="tag" taget="_blank" href="/search/split/1.htm">split</a> <div>1.前言.    jdk1.6的lang包的split方法是有bug的,它不能有效识别A.b.c这种类型,导致截取长度始终是0.而对于其他字符,则无此问题.不知道官方有没有修复这个bug. 2.代码 String[] paths = "object.object2.prop11".split("'"); System.ou</div> </li> <li><a href="/article/3509.htm" title="如何对10亿数据量级的mongoDB作高效的全表扫描" target="_blank">如何对10亿数据量级的mongoDB作高效的全表扫描</a> <span class="text-muted">quentinXXZ</span> <a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a> <div>  本文链接:  http://quentinXXZ.iteye.com/blog/2149440 一、正常情况下,不应该有这种需求 首先,大家应该有个概念,标题中的这个问题,在大多情况下是一个伪命题,不应该被提出来。要知道,对于一般较大数据量的数据库,全表查询,这种操作一般情况下是不应该出现的,在做正常查询的时候,如果是范围查询,你至少应该要加上limit。 说一下,</div> </li> <li><a href="/article/3636.htm" title="C语言算法之水仙花数" target="_blank">C语言算法之水仙花数</a> <span class="text-muted">qiufeihu</span> <a class="tag" taget="_blank" href="/search/c/1.htm">c</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a> <div>/** * 水仙花数 */ #include <stdio.h> #define N 10 int main() { int x,y,z; for(x=1;x<=N;x++) for(y=0;y<=N;y++) for(z=0;z<=N;z++) if(x*100+y*10+z == x*x*x</div> </li> <li><a href="/article/3763.htm" title="JSP指令" target="_blank">JSP指令</a> <span class="text-muted">wyzuomumu</span> <a class="tag" taget="_blank" href="/search/jsp/1.htm">jsp</a> <div> jsp指令的一般语法格式: <%@ 指令名 属性 =”值 ” %> 常用的三种指令: page,include,taglib page指令语法形式: <%@ page 属性 1=”值 1” 属性 2=”值 2”%> include指令语法形式: <%@include file=”relative url”%> (jsp可以通过 include</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>