WKWebView(入门篇)

WkWebView是IOS8中引入的新组件,苹果将UIWebViewDelegate 与 UIWebView 重构成了 14 个类和 3 个协议并引入了不少新的功能和接口。由于一直以来苹果对于WebView内核封锁的程度是令人发指的,WkWebView的引入无疑是另广大开发者兴奋的事。


与传统UIWebView的优劣对比

优点:  A.大幅降低网页加载时所占用的内存

         B.大幅增加网页加载速度

         C.支持高达 60 fps 的滚动刷新率,内置了手势探测

         D.提供更多Web新功能和接口

         E.支持了更多的HTML5特性

         F.更优雅的与JS的交互方式

缺点:A.WkWebView不再支持页面缓存

         B.WkWebView不可以实现NSURLProtocol 拦截

看到它相比于UIWebView有着那么多的优点,是不是已经心动了呢?那么接下来与笔者一起走入WkWebView的奇妙世界吧~


新增的属性

1.estimatedProgress

以往WebView的加载进度条的具体进度值都是假的数据,而estimatedProgress则可以用来显示真实的进度值变化。estimatedProgress是通过KVO的监控来进行使用的。

[webView addObserver:self forKeyPath:@"estimatedProgress" options:NSKeyValueObservingOptionNew context:NULL];

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {

if ([keyPath isEqualToString:@"estimatedProgress"]) {

if (object == webView) {

double progress = webView.estimatedProgress

/** 用当前获取的进度值去处理进度条控件 */

}

else{

[super observeValueForKeyPath:keyPath ofObject:object change:change context:context];

}

}

}

2.title

与estimatedProgress的使用方式类似,可以获取到html页面标签下设置的值</p> <blockquote> <p>[webView addObserver:self forKeyPath:@"title" options:NSKeyValueObservingOptionNew context:NULL];<br></p> </blockquote> <blockquote> <p><br></p> <p>- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {<br></p> <p>if ([keyPath isEqualToString:@"title"]) {<br></p> <p>if (object == webView) {<br></p> <p><b>NSString *title = webView.title;</b></p> <p>}<br></p> <p>else{<br></p> <p>[super observeValueForKeyPath:keyPath ofObject:object change:change context:context];<br></p> <p>}<br></p> <p>}</p> <p>}</p> </blockquote> <p><b>3.WKWebViewConfiguration</b></p> <p>WKWebViewConfiguration可以设置偏好设置,与网页交互的配置,注入对象,注入js等<br></p> <blockquote> <p><br></p> <p>WKWebViewConfiguration *config =[[WKWebViewConfiguration alloc]init];<br></p> <p><b>/** WebView的偏好设置 */</b></p> <p>config.preferences.minimumFontSize = 10;<br></p> <p>config.preferences.javaScriptEnabled = YES;<br></p> <p><b>/** 默认是不能通过JS自动打开窗口的,必须通过用户交互才能打开 */</b><br></p> <p>config.preferences.javaScriptCanOpenWindowsAutomatically = NO;<br></p> <p><b>/**  添加JS到到HTML中  */</b></p> <p>NSString *js = @"window.alert('欢迎体验WkWebView!!');";<br></p> <p>WKUserScript *script = [[WKUserScript alloc]initWithSource:js injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:YES];<br></p> <p>WKWebViewConfiguration *config =[[WKWebViewConfiguration alloc]init];<br></p> <p>[config.userContentController addUserScript:script];<br></p> <p><b>/** 用WkWebView的 - (instancetype)initWithFrame:(CGRect)frame configuration:(WKWebViewConfiguration *)configuration 方法初始化webView */</b></p> <p>webView = [[WKWebView alloc]initWithFrame:self.view.bounds configuration:config];</p> </blockquote> <hr> <h2>新的代理方法</h2> <p>WkWebView中提供了新的三种代理方法,分别是WKNavigationDelegate、WKUIDelegate、WKScriptMessageHandler,下文将对其作用的场景进行一一介绍。</p> <p><b>1.WKNavigationDelegate</b><br></p> <p>该代理方法主要是用来追踪webview的加载过程,和传统的UIWebView比较相似,分别对页面开始加载、加载完成、加载失败等几个过程进行事件捕捉和追踪,另外在页面的跳转时也可对其进行拦截处理、如过滤某些特定网页等业务操作。</p> <blockquote> <p><b>/** 页面开始加载时调用 */</b><br></p> <p>- (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation;<br></p> <p><b>/** 当内容开始返回时调用 */</b><br></p> <p>- (void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation;<br></p> <p><b>/** 页面加载完成之后调用 */</b><br></p> <p>- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation;<br></p> <p><b>/** 页面加载失败时调用 */</b><br></p> <p>- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation;<br></p> <p><b><i>/*** 以上4个代理委托是不是很眼熟?没错,其实就是对应UIWebView中的那几个代理方法 ***/</i></b></p> <p><b>/** 接收到服务器跳转请求之后调用 */</b><br></p> <p>- (void)webView:(WKWebView *)webView didReceiveServerRedirectForProvisionalNavigation:(WKNavigation *)navigation;<br></p> <p><b>/** 在收到响应后,决定是否跳转 */</b><br></p> <p>- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler{<br></p> <p>// 如果响应的地址是百度,则允许跳转<br></p> <p>if ([navigationResponse.response.URL.host.lowercaseString isEqual:@"www.baidu.com"]) {<br></p> <p>decisionHandler(WKNavigationResponsePolicyAllow);<br></p> <p>return;<br></p> <p>}</p> <p>//否则不允许跳转</p> <p>decisionHandler(WKNavigationResponsePolicyCancel);</p> <p>}</p> <p><b>/** 在发送请求之前,决定是否跳转 */</b><br></p> <p>- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler{<br></p> <p>// 如果响应的地址是百度,则允许跳转<br></p> <p>if ([navigationResponse.response.URL.host.lowercaseString isEqual:@"www.baidu.com"]) {<br></p> <p>decisionHandler(WKNavigationResponsePolicyAllow);<br></p> <p>return;</p> <p>}</p> <p>//否则不允许跳转<br></p> <p>decisionHandler(WKNavigationResponsePolicyCancel);<br></p> <p>}</p> </blockquote> <p><b>2.WKUIDelegate</b><br></p> <p>这个代理中包含3个针对于web界面的三种提示框(警告框、确认框、输入框)的弹出事件捕捉</p> <blockquote> <p><b>/**  确认框 */</b></p> <p>- (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(void))completionHandler{<br></p> <p>[[[UIAlertView alloc] initWithTitle:@"标题" message:message delegate:nil cancelButtonTitle:@"确认" otherButtonTitles: nil] show];<br></p> <p>completionHandler();</p> <p>}</p> <p><b>/**  警告框 */</b><br></p> <p>- (void)webView:(WKWebView *)webView runJavaScriptTextInputPanelWithPrompt:(NSString *)prompt defaultText:(nullable NSString *)defaultText initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(NSString * __nullable result))completionHandler;</p> <p><b>/**  输入框 */</b><br></p> <p>- (void)webView:(WKWebView *)webView runJavaScriptTextInputPanelWithPrompt:(NSString *)prompt defaultText:(nullable NSString *)defaultText initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(NSString * __nullable result))completionHandler;<br></p> <p><b>/** webview关闭事件 */</b></p> <p>- (void)webViewDidClose:(WKWebView *)webView;<br></p> <p><br></p> </blockquote> <p><b>3.WKScriptMessageHandler</b><br></p> <p>这个协议只有一个方法,它是APP与Web进行交互的关键,在从web中接收到一个脚本时调用,在下文中会详细进行说明。</p> <blockquote> <p>- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message;<br></p> </blockquote> <hr> <h2>更优雅的与Web交互</h2> <p>在讲WKWebView之前,让我们先来看一下UIWebView是如何与Web进行交互的。</p> <h4>UIWebView -- APP 调 Web</h4> <blockquote> <p>NSString * result = [webView stringByEvaluatingJavaScriptFromString:@"func()"];<br></p> </blockquote> <p>ios9默认是不允许加载http请求的,对于webview加载http网页也是不允许的。可以通过修改info.plist取消http限制。</p> <h3>UIWebView -- Web 调 APP</h3> <p><b>1.在APP本地先写一个方法如下:</b></p> <blockquote> <p>-(void)callNativeFun:(NSString *)args {<br></p> <p>}</p> </blockquote> <p><b>2.在UIWebView的delegate方法中注入一段JS源码</b></p> <blockquote> <p>- (void)webViewDidFinishLoad:(UIWebView *)webView{<br></p> <p>NSString *js = @"(function() {\<br></p> <p>window.JSBridge = {};\<br></p> <p>window.JSBridge.callFunction = function(functionName, args){\<br></p> <p>var url = \"hybrid://invoke?\";\<br></p> <p>var callInfo = {};\<br></p> <p>callInfo.functionname = functionName;\<br></p> <p>if (args)\<br></p> <p>{\<br></p> <p>callInfo.args = args;\<br></p> <p>}\<br></p> <p>url += JSON.stringify(callInfo);\<br></p> <p>var rootElm = document.documentElement;\<br></p> <p>var iFrame = document.createElement(\"IFRAME\");\<br></p> <p>iFrame.setAttribute(\"src\",url);\<br></p> <p>rootElm.appendChild(iFrame);\<br></p> <p>iFrame.parentNode.removeChild(iFrame);\<br></p> <p>};\<br></p> <p>return true;\<br></p> <p>})();";<br></p> <p>[webView stringByEvaluatingJavaScriptFromString:js];<br></p> </blockquote> <p><b>3.在Html某个事件中调用如下方法</b></p> <blockquote> <p>window.JSBridge.callFunction("callNative", "so many args");<br></p> </blockquote> <p>当html调用这段注入的JS方法后,会将hybrid://invoke? 以及后面拼接的内容以IFrame的方式进行加载,在加载的同时会出发APP的delegate方法</p> <p><b>4.在APP的delegate中实现对本地方法的调用,从而完成Web到App的调用</b></p> <blockquote> <p>- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{<br></p> <p>NSString *urlStr = [NSString stringWithString:url];<br></p> <p>if ([[urlStr lowercaseString] hasPrefix:@“hybrid://invoke?”]){<br></p> <p>urlStr = [urlStr substringFromIndex:protocolPrefix.length];<br></p> <p>urlStr = [urlStr stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];<br></p> <p>NSError *jsonError;<br></p> <p>NSDictionary *callInfo = [NSJSONSerialization JSONObjectWithData:[urlStr dataUsingEncoding:NSUTF8StringEncoding] options:kNilOptions error:&jsonError];<br></p> <p>NSString *functionName = [callInfo objectForKey:@"functionname"];<br></p> <p>NSString * args = [callInfo objectForKey:@"args"];<br></p> <p>if ([functionName isEqualToString:@"callNative"]) {<br></p> <p><b>/**  在此处完成对预先定义好的native方法进行调用 */</b></p> <p><b>[self callNativeFun:args];</b><br></p> <p>}</p> <p>return NO;<br></p> <p>}</p> <p>return YES;<br></p> <p>}<br></p> </blockquote> <p><br></p> <p>如上代码所述,UIWebView是通过Html的iframe来制造页面刷新再解析自定义协议,这种做法其实是比较lower的,也是对于苹果对UIWebView内核封闭的无奈。而WKWebView则是可以直接使用已经事先注入的js代码,runtime的将js接口给 Native 层传值。</p> <h4>WKWebView -- APP 调 Web<br> </h4> <blockquote> <p>NSString *js = @"window.alert('欢迎体验WkWebView!!');";<br></p> <p>[webView evaluateJavaScript:js completionHandler:nil];<br></p> </blockquote> <h4><br></h4> <h4>WKWebView -- Web 调 APP<br> </h4> <p><b>1.在webview初始化之前先注册一个名为hybridDemo的handler对象。</b></p> <blockquote> <p>WKWebViewConfiguration *config =[[WKWebViewConfiguration alloc]init];<br></p> <p>[config.userContentController addScriptMessageHandler:self name:@"hybridDemo"];<br></p> <p>webView = [[WKWebView alloc]initWithFrame:self.view.bounds configuration:config];<br></p> </blockquote> <p><b>2.在html端调用JS来访问之前注册的handler对象,并通过调用postMessage方法把数据传到app。</b></p> <blockquote> <p>var message = {"method":"hello","args":"let go"};<br></p> <p>window.webkit.messageHandlers.webViewApp.postMessage(message);<br></p> </blockquote> <p><b>3.在webview容器中实现上文提过的WKScriptMessageHandler委托,从而响应来自于JS端下发的message。</b></p> <blockquote> <p>- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message{<br></p> <p>NSDictionary *dic = message.body;<br></p> <p>NSString *method = [dic objectForKey:@"method"];<br></p> <p>NSString *param = [dic objectForKey:@"args"];<br></p> <p><b>/**  doSomeThing..... */</b></p> <p>}</p> </blockquote> </article> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1184600256336207872"></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">你可能感兴趣的:(WKWebView(入门篇))</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1950131700457598976.htm" title="【移动端知识】移动端多 WebView 互访方案:Android、iOS 与鸿蒙实现" target="_blank">【移动端知识】移动端多 WebView 互访方案:Android、iOS 与鸿蒙实现</a> <span class="text-muted">问道飞鱼</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91%E6%8A%80%E6%9C%AF/1.htm">前端开发技术</a><a class="tag" taget="_blank" href="/search/harmonyos/1.htm">harmonyos</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/ios/1.htm">ios</a><a class="tag" taget="_blank" href="/search/%E5%A4%9Awebview%E4%BA%92%E8%AE%BF/1.htm">多webview互访</a> <div>移动端多WebView互访方案:Android、iOS与鸿蒙实现移动端多WebView互访方案:Android、iOS与鸿蒙实现一、核心架构设计二、Android平台实现1.基础通信架构2.控制器实现3.WebView安全配置三、iOS平台实现(Swift)1.WKWebView通信桥接2.AppDelegate路由控制四、鸿蒙平台实现(HarmonyOS)1.WebView通信桥接2.Abili</div> </li> <li><a href="/article/1948738468632915968.htm" title="Java 的备忘录 01 — 入门篇" target="_blank">Java 的备忘录 01 — 入门篇</a> <span class="text-muted"></span> <div>Java的备忘录01—入门篇大家好呀!今天开始,我打算写一系列关于Java的备忘录,主要是整理一些Java基础知识,方便自己回顾,也希望能帮到刚入门的小伙伴们。这第一篇,就从最基础的入门内容开始吧。我的博客名叫《坐山听雨忆轮回》,后续示例也会围绕这个名字展开。想要学习Java,首先得写出我们的第一个Java程序。下面就是这个经典程序的代码,输出我的博客名:publicclassFirstJava{</div> </li> <li><a href="/article/1946899897953349632.htm" title="大模型学习?别慌!我这有份独家私藏路线图,直接抄作业!" target="_blank">大模型学习?别慌!我这有份独家私藏路线图,直接抄作业!</a> <span class="text-muted">大模型玩家</span> <a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/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/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</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/%E7%AE%97%E6%B3%95/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><a class="tag" taget="_blank" href="/search/%E8%BD%AC%E8%A1%8C/1.htm">转行</a> <div>最近大模型是真火啊,搞得我这老码农都跃跃欲试,想搭上这班通往未来的列车。But…看着那些密密麻麻的技术名词,那叫一个头大!别怕,咱也是从小白过来的,走过弯路,踩过坑,才搞明白点门道!今天,我把这份独家私藏的大模型学习路线图分享给大家,绝对干货!保证你不再迷路,还能少走弯路!这份路线图,我给它分了三个阶段:入门、上手、深挖。你是想快速尝鲜应用,还是想深入了解原理?都给你安排的明明白白!第一站:入门篇</div> </li> <li><a href="/article/1946681508391612416.htm" title="iOS WKWebView与JS交互" target="_blank">iOS WKWebView与JS交互</a> <span class="text-muted">王小妞闯天涯</span> <div>iOS8之后苹果推出WKWebView代替UIWebView说是更轻量级加载更快,最近的项目中用到WKWebView与JS的交互,下面来总结一下使用1.WKWebView的初始化@property(nonatomic,strong)WKUserContentController*usercontentVC;_usercontentVC=[[WKUserContentControlleralloc]</div> </li> <li><a href="/article/1946598951192948736.htm" title="〖Python 数据库开发实战 - Redis篇②〗- Linux系统下安装 Redis 数据库" target="_blank">〖Python 数据库开发实战 - Redis篇②〗- Linux系统下安装 Redis 数据库</a> <span class="text-muted">哈哥撩编程</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/%E2%91%A4/1.htm">⑤</a><a class="tag" taget="_blank" href="/search/-/1.htm">-</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93%E5%BC%80%E5%8F%91%E5%AE%9E%E6%88%98%E7%AF%87/1.htm">数据库开发实战篇</a><a class="tag" taget="_blank" href="/search/Python%E5%85%A8%E6%A0%88%E7%99%BD%E5%AE%9D%E4%B9%A6/1.htm">Python全栈白宝书</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</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/%E6%95%B0%E6%8D%AE%E5%BA%93%E5%BC%80%E5%8F%91%E5%AE%9E%E6%88%98/1.htm">数据库开发实战</a><a class="tag" taget="_blank" href="/search/linux%E5%AE%89%E8%A3%85redis/1.htm">linux安装redis</a> <div>订阅Python全栈白宝书-零基础入门篇可报销!白嫖入口-请点击我。推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V!说明:该文属于Python全栈白宝书专栏,免费阶段订阅数量4300+,购买任意白宝书体系化专栏可加入TFS-CLUB私域社区。福利:加入社区的小伙伴们,除了可以获取博主所有付费专栏的阅读权限之外,还有机会加入星荐官共赢计划,详情请戳我。作者:不渴望力量的哈士奇(哈哥),</div> </li> <li><a href="/article/1943538169777549312.htm" title="Linux:入门篇——万字长篇解析" target="_blank">Linux:入门篇——万字长篇解析</a> <span class="text-muted">码力无边-OEC</span> <a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E7%83%AD%E9%97%A8/1.htm">热门</a> <div>Linux:入门篇目录Linux:入门篇第一部分:Linux简介与发行版引言前提条件1.**什么是Linux?**1.1Linux的特点2.**Linux的发展历程**3.**Linux发行版(Distributions)**3.1发行版的分类3.2常见的Linux发行版4.**如何选择Linux发行版?**5.**常见问题**6.总结第二部分:常见Linux命令基础教程引言前提条件1.**文件与</div> </li> <li><a href="/article/1942789886486573056.htm" title="Docker 学习入门篇:从基础概念到实战部署" target="_blank">Docker 学习入门篇:从基础概念到实战部署</a> <span class="text-muted"></span> <div>一、Docker核心概念与核心价值1.1Docker是什么?Docker是基于Go语言开发的开源容器化平台,旨在实现“一次镜像,处处运行”。它通过将应用程序及其依赖环境(代码、运行时、系统工具、系统库等)打包成一个轻量级、可移植的镜像(Image),使应用能够在不同环境中稳定运行,彻底解决了传统开发中环境不一致、部署复杂的难题。1.2Docker解决了什么问题?环境一致性难题:开发、测试、生产环境</div> </li> <li><a href="/article/1942171753220468736.htm" title="Flutter 入门" target="_blank">Flutter 入门</a> <span class="text-muted">TE-茶叶蛋</span> <a class="tag" taget="_blank" href="/search/Flutter/1.htm">Flutter</a><a class="tag" taget="_blank" href="/search/flutter/1.htm">flutter</a> <div>文章目录前言一、Flutter入门篇1.环境搭建2.Dart语言基础3.第一个Flutter应用4.核心组件与布局5.状态管理(基础)二、Flutter进阶篇1.深度状态管理2.路由与导航3.网络与数据持久化4.动画与自定义绘制5.插件与平台交互6.性能优化7.测试与调试三、高级实战技巧1.架构设计2.跨平台适配3.混合开发4.国际化与无障碍四、学习资源推荐五、学习建议前言以下是一份系统的Flut</div> </li> <li><a href="/article/1941637374966558720.htm" title="TensorFlow武林志 第一卷:入门篇 - 初入江湖 第一章:真气初现" target="_blank">TensorFlow武林志 第一卷:入门篇 - 初入江湖 第一章:真气初现</a> <span class="text-muted">空中湖</span> <a class="tag" taget="_blank" href="/search/tensorflow%E6%AD%A6%E6%9E%97%E5%BF%97/1.htm">tensorflow武林志</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>第一卷:入门篇-初入江湖第一章:真气初现林枫揉了揉酸痛的胳膊,将最后一捆柴火堆放在灶房角落。这是他来到青霄剑宗做杂役的第三个月,每日劈柴挑水的生活让他原本白皙的皮肤变得黝黑粗糙。"喂,新来的!掌门要的热水怎么还没送去?"门外传来管事的呵斥声。"马上就好!"林枫急忙提起铜壶,滚烫的热水溅在他手背上,他却浑然不觉疼痛。自从上月在后山偶然吞服了那枚奇异的朱果后,他对冷热疼痛的感知就变得异常迟钝。穿过曲折</div> </li> <li><a href="/article/1941549275557195776.htm" title="嵌入式学习之Linux入门篇笔记——8,Linux帮助手册讲解" target="_blank">嵌入式学习之Linux入门篇笔记——8,Linux帮助手册讲解</a> <span class="text-muted">玄奕子</span> <a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%AD%A6%E4%B9%A0%E4%B9%8BLinux%E5%85%A5%E9%97%A8%E7%AF%87/1.htm">嵌入式学习之Linux入门篇</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a> <div>配套视频学习链接:http://【【北京迅为】嵌入式学习之Linux入门篇】https://www.bilibili.com/video/BV1M7411m7wT/?p=4&share_source=copy_web&vd_source=a0ef2c4953d33a9260910aaea45eaec81.Linux帮助手册使用man命令打开,使用手册一共有九页。(按Q退出帮助手册)1.可执行的程序</div> </li> <li><a href="/article/1940546130899169280.htm" title="〖Python零基础入门篇⑮〗- Python中的字典" target="_blank">〖Python零基础入门篇⑮〗- Python中的字典</a> <span class="text-muted">哈哥撩编程</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/%E2%91%A0/1.htm">①</a><a class="tag" taget="_blank" href="/search/-/1.htm">-</a><a class="tag" taget="_blank" href="/search/%E9%9B%B6%E5%9F%BA%E7%A1%80%E5%85%A5%E9%97%A8%E7%AF%87/1.htm">零基础入门篇</a><a class="tag" taget="_blank" href="/search/Python%E5%85%A8%E6%A0%88%E7%99%BD%E5%AE%9D%E4%B9%A6/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><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/python%E4%B8%AD%E7%9A%84%E5%AD%97%E5%85%B8/1.htm">python中的字典</a> <div>>【易编橙·终身成长社群,相遇已是上上签!】-点击跳转~<作者:哈哥撩编程(视频号同名)图书作者:程序员职场效能宝典博客专家:全国博客之星第四名超级个体:COC上海社区主理人特约讲师:谷歌亚马逊分享嘉宾科技博主:极星会首批签约作者文章目录⭐️什么是字典?⭐️字典的结构与创建方法⭐️字典支持的数据类型⭐️在列表与元组中如何定义字典</div> </li> <li><a href="/article/1940420154546515968.htm" title="SHELL/SSH基础知识(入门篇)-包含 shell 脚本语言的基本用法、 shell 脚本语言的基本用法、流程控制、函数 function、其它脚本相关工具、数组 array(欢迎留言交流)" target="_blank">SHELL/SSH基础知识(入门篇)-包含 shell 脚本语言的基本用法、 shell 脚本语言的基本用法、流程控制、函数 function、其它脚本相关工具、数组 array(欢迎留言交流)</a> <span class="text-muted">云计算小曹同学</span> <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/centos/1.htm">centos</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/ssh/1.htm">ssh</a> <div>目录1shell脚本语言的基本用法1.1shell脚本注释规范1.1.1shell脚本注释规范1.1.2执行(5种)1.1.3在远程主机运行本地脚本1.1.4检查shell脚本1.2shell变量1.2.1Shell中变量命名法则1.2.2变量赋值与引用1.2.3环境变量的查看设置和删除1.2.4只读变量1.2.5位置变量1.2.6退出状态码变量1.2.7展开命令行1.3退出状态码变量1.4展开命</div> </li> <li><a href="/article/1938331283344125952.htm" title="Python web框架FastAPI——一个比Flask和Tornada更高性能的API 框架" target="_blank">Python web框架FastAPI——一个比Flask和Tornada更高性能的API 框架</a> <span class="text-muted">Python进阶者</span> <a class="tag" taget="_blank" href="/search/%E4%B8%AD%E9%97%B4%E4%BB%B6/1.htm">中间件</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/web/1.htm">web</a><a class="tag" taget="_blank" href="/search/http/1.htm">http</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a> <div>点击上方“Python爬虫与数据挖掘”,进行关注回复“书籍”即可获赠Python从入门到进阶共10本电子书今日鸡汤借问酒家何处有,牧童遥指杏花村。0前言前几天给大家分别分享了(入门篇)简析Pythonweb框架FastAPI——一个比Flask和Tornada更高性能的API框架和(进阶篇)Pythonweb框架FastAPI——一个比Flask和Tornada更高性能的API框架。今天欢迎大家来</div> </li> <li><a href="/article/1935273499392274432.htm" title="网络安全学习路线(入门篇)" target="_blank">网络安全学习路线(入门篇)</a> <span class="text-muted">浮江雾</span> <a class="tag" taget="_blank" href="/search/web%E5%AE%89%E5%85%A8%E6%B8%97%E9%80%8F%E5%9F%BA%E7%A1%80%E5%85%A5%E9%97%A8/1.htm">web安全渗透基础入门</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/web%E5%AE%89%E5%85%A8/1.htm">web安全</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/1.htm">网络安全</a> <div>一.网络安全入门前奏:为何踏上这趟旅程?在数字化浪潮席卷全球的当下,网络安全已然成为了时代的焦点。从个人隐私到企业机密,从国家关键基础设施到日常生活的方方面面,网络安全的重要性不言而喻。它不仅关乎着每一个人的信息安全,更影响着整个社会的稳定与发展。近年来,网络攻击事件频发,其影响力和破坏力令人触目惊心。就拿2017年肆虐全球的WannaCry勒索病毒来说,它犹如一场迅猛的数字风暴,在极短的时间内席</div> </li> <li><a href="/article/1934225540235980800.htm" title="JXTA——JAVA P2P网络编程技术(入门篇)" target="_blank">JXTA——JAVA P2P网络编程技术(入门篇)</a> <span class="text-muted">JoeBaby_</span> <a class="tag" taget="_blank" href="/search/Java%E8%AA%9E%E8%A8%80/1.htm">Java語言</a><a class="tag" taget="_blank" href="/search/p2p/1.htm">p2p</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a><a class="tag" taget="_blank" href="/search/%E5%B9%B3%E5%8F%B0/1.htm">平台</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E6%B8%B8%E6%88%8F/1.htm">网络游戏</a> <div>1.前言最近,P2P(Peer-to-Peer)又成为了因特网上的一个热点。P2P是因特网的一种应用模式,其意思是指网络上的任何设备(包括大型机、PC机、PDA、手机、机顶盒等等)都可以平等地直接进行连接并进行协作。想比当前因特网上主流的应用模式Client/Server或者Client/Service而言,P2P具有自己鲜明的特点和优势。(这也是我对它着迷的地方。呵呵……)有了P2P技术,因特网</div> </li> <li><a href="/article/1932374769018138624.htm" title="Flutter如何支持原生View" target="_blank">Flutter如何支持原生View</a> <span class="text-muted">SY.ZHOU</span> <a class="tag" taget="_blank" href="/search/Flutter%E7%AC%94%E8%AE%B0/1.htm">Flutter笔记</a><a class="tag" taget="_blank" href="/search/flutter/1.htm">flutter</a> <div>在Flutter中集成原生View(如Android的SurfaceView、iOS的WKWebView)是通过平台视图(PlatformView)实现的。这一机制允许在FlutterUI中嵌入原生组件,解决了某些场景下Flutter自身渲染能力的不足(如高性能视频播放、3D渲染、复杂地图等)。以下是详细介绍:一、平台视图的两种实现方式1.虚拟平台视图(VirtualPlatformViews)特</div> </li> <li><a href="/article/1930676749587247104.htm" title="CCF中学生计算机程序设计(入门篇)答案" target="_blank">CCF中学生计算机程序设计(入门篇)答案</a> <span class="text-muted">「已注销」</span> <div>CCF中学生计算机程序设计(入门篇)//p103(4)#include#includeusingnamespacestd;intmain(){doublel;doublej;inta;cout>l;if(l<0)cout<<"输入数据不能为负!"<<endl;else{a=l/10;switch(a){case0:j=l*0.1;cout<<"奖金为:"<<fixed<<setprecision(</div> </li> <li><a href="/article/1930674481362169856.htm" title="ccf中学生计算机程序设计入门篇课后题p164页test(1)-2 输入一个数,统计这个数二进制中1的个数" target="_blank">ccf中学生计算机程序设计入门篇课后题p164页test(1)-2 输入一个数,统计这个数二进制中1的个数</a> <span class="text-muted">babyai997</span> <a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a> <div>includeusingnamespacestd;intmain(){intx;intn=0;//输入数据cin>>x;//统计x二进制中1的个数for(n=0;x!=0;x&=x-1){n++;}//输出结果coutusingnamespacestd;intmain(){intx;intn=0;//输入数据cin>>x;//假设输入的是3//统计x二进制中1的个数for(n=0;x!=0;x&=</div> </li> <li><a href="/article/1930355634092437504.htm" title="RabbitMQ消息队列入门篇(环境配置+Java实例+基础概念)" target="_blank">RabbitMQ消息队列入门篇(环境配置+Java实例+基础概念)</a> <span class="text-muted">小宝鸽</span> <a class="tag" taget="_blank" href="/search/RabbitMQ/1.htm">RabbitMQ</a><a class="tag" taget="_blank" href="/search/Java%E5%9F%BA%E7%A1%80/1.htm">Java基础</a><a class="tag" taget="_blank" href="/search/Java%E5%90%8E%E5%8F%B0%E6%A1%86%E6%9E%B6%E7%B3%BB%E5%88%97/1.htm">Java后台框架系列</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/rabbitmq/1.htm">rabbitmq</a><a class="tag" taget="_blank" href="/search/%E6%B6%88%E6%81%AF%E9%98%9F%E5%88%97/1.htm">消息队列</a><a class="tag" taget="_blank" href="/search/AMQP/1.htm">AMQP</a><a class="tag" taget="_blank" href="/search/Erlang/1.htm">Erlang</a> <div>一、消息队列使用场景或者其好处消息队列一般是在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量。在项目启动之初来预测将来项目会碰到什么需求,是极其困难的。消息队列在处理过程中间插入了一个隐含的、基于数据的接口层,两边的处理过程都要实现这一接口。这允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接</div> </li> <li><a href="/article/1928640001264906240.htm" title="【AI从入门到入土系列教程】Ollama教程——入门篇:本地大型语言模型开发" target="_blank">【AI从入门到入土系列教程】Ollama教程——入门篇:本地大型语言模型开发</a> <span class="text-muted">TianYa707722173</span> <a class="tag" taget="_blank" href="/search/AI/1.htm">AI</a><a class="tag" taget="_blank" href="/search/%23AI%E6%95%99%E7%A8%8B/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/%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B/1.htm">语言模型</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86/1.htm">自然语言处理</a><a class="tag" taget="_blank" href="/search/ai/1.htm">ai</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>【AI从入门到入土系列教程】Ollama教程——入门篇:本地大型语言模型开发相关文章:【AI从入门到入土系列教程】Ollama教程——入门篇:本地大型语言模型开发【AI从入门到入土系列教程】Ollama教程——进阶篇:【兼容OpenAI的API】高效利用兼容OpenAI的API进行AI项目开发【AI从入门到入土系列教程】Ollama教程——进阶篇:【Ollama原生API】利用Ollama的原生A</div> </li> <li><a href="/article/1928132994447503360.htm" title="Linux系统入门篇二" target="_blank">Linux系统入门篇二</a> <span class="text-muted">fictionist</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a> <div>一、Linux终端常用命令1.1pwd命令用于显示当前工作目录的绝对路径。在终端输入该命令后,系统会输出当前所在目录的位置,帮助用户了解自己在文件系统中的位置,方便后续对文件和目录的操作。pwd示例及输出:[Unit@localhost~]$pwd/home/Unit1.2ls命令用于查询当前目录下的文件和文件夹。执行此命令可列出当前目录中的内容,包括文件和子目录的名称等信息。可以搭配一些选项使用</div> </li> <li><a href="/article/1927798377148379136.htm" title="PCB设计教程【入门篇】——电路分析基础-元件数据手册" target="_blank">PCB设计教程【入门篇】——电路分析基础-元件数据手册</a> <span class="text-muted">岂是尔等觊觎</span> <a class="tag" taget="_blank" href="/search/%23PCB%E8%AE%BE%E8%AE%A1%E6%95%99%E7%A8%8B/1.htm">#PCB设计教程</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%A1%AC%E4%BB%B6/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/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/1.htm">经验分享</a><a class="tag" taget="_blank" href="/search/pcb%E5%B7%A5%E8%89%BA/1.htm">pcb工艺</a> <div>前言本教程基于B站Expert电子实验室的PCB设计教学的整理,为个人学习记录,旨在帮助PCB设计新手入门。所有内容仅作学习交流使用,无任何商业目的。若涉及侵权,请随时联系,将会立即处理目录前言一、数据手册的重要性二、数据手册的获取途径三、数据手册阅读要点四、学习建议一、数据手册的重要性电子元件数据手册是芯片的“身份证”,涵盖功能、引脚定义、电气特性等核心信息,是电子设计中理解原理图和正确使用元件</div> </li> <li><a href="/article/1927714799353917440.htm" title="【深度学习入门篇 ②】Pytorch完成线性回归!" target="_blank">【深度学习入门篇 ②】Pytorch完成线性回归!</a> <span class="text-muted">小森( ﹡ˆoˆ﹡ )</span> <a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%85%A5%E9%97%A8%E7%AF%87/1.htm">深度学习入门篇</a><a class="tag" taget="_blank" href="/search/%E7%BA%BF%E6%80%A7%E5%9B%9E%E5%BD%92/1.htm">线性回归</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%9B%9E%E5%BD%92/1.htm">回归</a> <div>嗨,大家好,我是小森(﹡ˆoˆ﹡)!易编橙·终身成长社群创始团队嘉宾,橙似锦计划领衔成员、阿里云专家博主、腾讯云内容共创官、CSDN人工智能领域优质创作者。易编橙:一个帮助编程小伙伴少走弯路的终身成长社群!上一部分我们自己通过torch的方法完成反向传播和参数更新,在Pytorch中预设了一些更加灵活简单的对象,让我们来构造模型、定义损失,优化损失等;那么接下来,我们一起来了解一下其中常用的API</div> </li> <li><a href="/article/1926696659509637120.htm" title="PCB设计教程【入门篇】——电路分析基础-读懂原理图" target="_blank">PCB设计教程【入门篇】——电路分析基础-读懂原理图</a> <span class="text-muted">岂是尔等觊觎</span> <a class="tag" taget="_blank" href="/search/%23PCB%E8%AE%BE%E8%AE%A1%E6%95%99%E7%A8%8B/1.htm">#PCB设计教程</a><a class="tag" taget="_blank" href="/search/pcb%E5%B7%A5%E8%89%BA/1.htm">pcb工艺</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/1.htm">经验分享</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%A1%AC%E4%BB%B6/1.htm">嵌入式硬件</a> <div>前言本教程基于B站Expert电子实验室的PCB设计教学的整理,为个人学习记录,旨在帮助PCB设计新手入门。所有内容仅作学习交流使用,无任何商业目的。若涉及侵权,请随时联系,将会立即处理目录前言一、原理图核心要素:注释的重要性模块功能标注:元件功能说明:关键参数与信号:版本与标识信息:二、读懂原理图的流程查看基本信息:分模块分析:结合数据手册:三、绘制原理图的规范与技巧布局原则:标注要点:完整性与</div> </li> <li><a href="/article/1926696660323332096.htm" title="PCB设计教程【入门篇】——PCB设计基础-PCB叠层结构" target="_blank">PCB设计教程【入门篇】——PCB设计基础-PCB叠层结构</a> <span class="text-muted">岂是尔等觊觎</span> <a class="tag" taget="_blank" href="/search/%23PCB%E8%AE%BE%E8%AE%A1%E6%95%99%E7%A8%8B/1.htm">#PCB设计教程</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/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/pcb%E5%B7%A5%E8%89%BA/1.htm">pcb工艺</a><a class="tag" taget="_blank" href="/search/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/1.htm">经验分享</a> <div>前言本教程基于B站Expert电子实验室的PCB设计教学的整理,为个人学习记录,旨在帮助PCB设计新手入门。所有内容仅作学习交流使用,无任何商业目的。若涉及侵权,请随时联系,将会立即处理目录前言一、PCB层叠的本质与分类核心组成:板层类型:二、立创EDA图层功能与应用导电层掩膜与标识层辅助设计层三、设计要点与学习建议一、PCB层叠的本质与分类PCB(印刷电路板)的结构可类比“三明治”,由多层功能不</div> </li> <li><a href="/article/1926687952231002112.htm" title="PCB设计教程【入门篇】——PCB设计基础-PCB构成与组成" target="_blank">PCB设计教程【入门篇】——PCB设计基础-PCB构成与组成</a> <span class="text-muted">岂是尔等觊觎</span> <a class="tag" taget="_blank" href="/search/%23PCB%E8%AE%BE%E8%AE%A1%E6%95%99%E7%A8%8B/1.htm">#PCB设计教程</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/1.htm">经验分享</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/pcb%E5%B7%A5%E8%89%BA/1.htm">pcb工艺</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%A1%AC%E4%BB%B6/1.htm">嵌入式硬件</a> <div>前言本教程基于B站Expert电子实验室的PCB设计教学的整理,为个人学习记录,旨在帮助PCB设计新手入门。所有内容仅作学习交流使用,无任何商业目的。若涉及侵权,请随时联系,将会立即处理一、PCB基础概念PCB(印刷电路板)是电子元件的电气连接载体,根据基板材料可分为高频板、金属基板(铝/铁/铜)、双面板及多层板等。入门阶段以双面板为主要学习对象,其核心由导线、焊盘、过孔等元素构成。二、核心组成元</div> </li> <li><a href="/article/1925781293363163136.htm" title="RestClient操作Elasticsearch(Java)" target="_blank">RestClient操作Elasticsearch(Java)</a> <span class="text-muted">小元祖</span> <a class="tag" taget="_blank" href="/search/elasticsearch/1.htm">elasticsearch</a><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/%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E/1.htm">搜索引擎</a> <div>Es官方提供了各种不用语言的客户端,用来操作Es,这些客户端的本质就是组装DSL语句,通过http请求发送给Es,从而简化操作es基础篇不熟悉参考一下博客:ElasticSearch入门篇-CSDN博客文章浏览阅读445次,点赞7次,收藏3次。Elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据</div> </li> <li><a href="/article/1925381832975642624.htm" title="skywalking使用方法_【弄nèng - Skywalking】入门篇(一)—— Skywalking安装与使用" target="_blank">skywalking使用方法_【弄nèng - Skywalking】入门篇(一)—— Skywalking安装与使用</a> <span class="text-muted">weixin_39780255</span> <a class="tag" taget="_blank" href="/search/skywalking%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95/1.htm">skywalking使用方法</a> <div>文章目录一.简介二.Skywalking架构三.安装OAP3.1前置3.2下载3.3修改配置application.yml3.4webapp配置3.5启动四.使用Agent4.1修改配置4.2启动工程接入Agent项目推荐该篇博客是Skywalking的安装使用官方文档:https://github.com/apache/skywalking/tree/master/docs参考https://w</div> </li> <li><a href="/article/1924900148987621376.htm" title="【贴士】Git tips‍" target="_blank">【贴士】Git tips‍</a> <span class="text-muted">Daisytheboy</span> <a class="tag" taget="_blank" href="/search/git/1.htm">git</a> <div>Gittips入门篇——安装和配置下载@Git官方下载网站安装(略)初始化#设置用户名和邮箱gitconfig--globaluser.name"YourName"#设置邮箱gitconfig--globaluser.email"you@example.com"#查看已经设置的全局变量gitconfig--global--list#设置SSL认证(这会让Git忽略对HTTPS服务器SSL证书的有效</div> </li> <li><a href="/article/1924130695081422848.htm" title="postman调用rpc服务器接口_接口测试基础之入门篇" target="_blank">postman调用rpc服务器接口_接口测试基础之入门篇</a> <span class="text-muted">weixin_39557373</span> <a class="tag" taget="_blank" href="/search/rouyi/1.htm">rouyi</a><a class="tag" taget="_blank" href="/search/%E6%8E%A5%E5%8F%A3%E5%BC%82%E5%B8%B8/1.htm">接口异常</a><a class="tag" taget="_blank" href="/search/404/1.htm">404</a><a class="tag" taget="_blank" href="/search/%E6%9F%90%E4%B8%80%E4%B8%AA%E6%8E%A5%E5%8F%A3403/1.htm">某一个接口403</a><a class="tag" taget="_blank" href="/search/%E5%85%B6%E4%BB%96%E6%8E%A5%E5%8F%A3%E5%8F%AF%E4%BB%A5%E8%B0%83%E9%80%9A/1.htm">其他接口可以调通</a> <div>前言什么是接口呢?一、常见接口:接口一般来说有两种,一种是程序内部的接口,一种是系统对外的接口。程序内部的接口:方法与方法之间,模块与模块之间的交互,程序内部抛出的接口,比如bbs系统,有登录模块、发帖模块等等,那你要发帖就必须先登录,那么这两个模块就得有交互,它就会抛出一个接口,供内部系统进行调用。系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,他给你提供一个他们写好的方法来获取数据</div> </li> <li><a href="/article/103.htm" title="SAX解析xml文件" target="_blank">SAX解析xml文件</a> <span class="text-muted">小猪猪08</span> <a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a> <div>1.创建SAXParserFactory实例 2.通过SAXParserFactory对象获取SAXParser实例 3.创建一个类SAXParserHander继续DefaultHandler,并且实例化这个类 4.SAXParser实例的parse来获取文件     public static void main(String[] args) { //</div> </li> <li><a href="/article/230.htm" title="为什么mysql里的ibdata1文件不断的增长?" target="_blank">为什么mysql里的ibdata1文件不断的增长?</a> <span class="text-muted">brotherlamp</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/linux%E8%BF%90%E7%BB%B4/1.htm">linux运维</a><a class="tag" taget="_blank" href="/search/linux%E8%B5%84%E6%96%99/1.htm">linux资料</a><a class="tag" taget="_blank" href="/search/linux%E8%A7%86%E9%A2%91/1.htm">linux视频</a><a class="tag" taget="_blank" href="/search/linux%E8%BF%90%E7%BB%B4%E8%87%AA%E5%AD%A6/1.htm">linux运维自学</a> <div>我们在 Percona 支持栏目经常收到关于 MySQL 的 ibdata1 文件的这个问题。 当监控服务器发送一个关于 MySQL 服务器存储的报警时,恐慌就开始了 —— 就是说磁盘快要满了。 一番调查后你意识到大多数地盘空间被 InnoDB 的共享表空间 ibdata1 使用。而你已经启用了 innodbfileper_table,所以问题是: ibdata1存了什么? 当你启用了 i</div> </li> <li><a href="/article/357.htm" title="Quartz-quartz.properties配置" target="_blank">Quartz-quartz.properties配置</a> <span class="text-muted">eksliang</span> <a class="tag" taget="_blank" href="/search/quartz/1.htm">quartz</a> <div>其实Quartz JAR文件的org.quartz包下就包含了一个quartz.properties属性配置文件并提供了默认设置。如果需要调整默认配置,可以在类路径下建立一个新的quartz.properties,它将自动被Quartz加载并覆盖默认的设置。   下面是这些默认值的解释 #-----集群的配置 org.quartz.scheduler.instanceName =</div> </li> <li><a href="/article/484.htm" title="informatica session的使用" target="_blank">informatica session的使用</a> <span class="text-muted">18289753290</span> <a class="tag" taget="_blank" href="/search/workflow/1.htm">workflow</a><a class="tag" taget="_blank" href="/search/session/1.htm">session</a><a class="tag" taget="_blank" href="/search/log/1.htm">log</a><a class="tag" taget="_blank" href="/search/Informatica/1.htm">Informatica</a> <div>如果希望workflow存储最近20次的log,在session里的Config  Object设置,log  options做配置,save  session log :sessions  run  ;savesessio log for  these runs:20 session下面的source 里面有个tracing </div> </li> <li><a href="/article/611.htm" title="Scrapy抓取网页时出现CRC check failed 0x471e6e9a != 0x7c07b839L的错误" target="_blank">Scrapy抓取网页时出现CRC check failed 0x471e6e9a != 0x7c07b839L的错误</a> <span class="text-muted">酷的飞上天空</span> <a class="tag" taget="_blank" href="/search/scrapy/1.htm">scrapy</a> <div>Scrapy版本0.14.4 出现问题现象: ERROR: Error downloading <GET http://xxxxx  CRC check failed   解决方法   1.设置网络请求时的header中的属性'Accept-Encoding': '*;q=0'   明确表示不支持任何形式的压缩格式,避免程序的解压</div> </li> <li><a href="/article/738.htm" title="java Swing小集锦" target="_blank">java Swing小集锦</a> <span class="text-muted">永夜-极光</span> <a class="tag" taget="_blank" href="/search/java+swing/1.htm">java swing</a> <div>1.关闭窗体弹出确认对话框   1.1   this.setDefaultCloseOperation (JFrame.DO_NOTHING_ON_CLOSE);   1.2   this.addWindowListener ( new WindowAdapter () { public void windo</div> </li> <li><a href="/article/865.htm" title="强制删除.svn文件夹" target="_blank">强制删除.svn文件夹</a> <span class="text-muted">随便小屋</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>          在windows上,从别处复制的项目中可能带有.svn文件夹,手动删除太麻烦,并且每个文件夹下都有。所以写了个程序进行删除。因为.svn文件夹在windows上是只读的,所以用File中的delete()和deleteOnExist()方法都不能将其删除,所以只能采用windows命令方式进行删除</div> </li> <li><a href="/article/992.htm" title="GET和POST有什么区别?及为什么网上的多数答案都是错的。" target="_blank">GET和POST有什么区别?及为什么网上的多数答案都是错的。</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/get+post/1.htm">get post</a> <div>     如果有人问你,GET和POST,有什么区别?你会如何回答? 我的经历      前几天有人问我这个问题。我说GET是用于获取数据的,POST,一般用于将数据发给服务器之用。     这个答案好像并不是他想要的。于是他继续追问有没有别的区别?我说这就是个名字而已,如果服务器支持,他完全可以把G</div> </li> <li><a href="/article/1119.htm" title="谈谈新浪微博背后的那些算法" target="_blank">谈谈新浪微博背后的那些算法</a> <span class="text-muted">aoyouzi</span> <a class="tag" taget="_blank" href="/search/%E8%B0%88%E8%B0%88%E6%96%B0%E6%B5%AA%E5%BE%AE%E5%8D%9A%E8%83%8C%E5%90%8E%E7%9A%84%E9%82%A3%E4%BA%9B%E7%AE%97%E6%B3%95/1.htm">谈谈新浪微博背后的那些算法</a> <div>本文对微博中常见的问题的对应算法进行了简单的介绍,在实际应用中的算法比介绍的要复杂的多。当然,本文覆盖的主题并不全,比如好友推荐、热点跟踪等就没有涉及到。但古人云“窥一斑而见全豹”,希望本文的介绍能帮助大家更好的理解微博这样的社交网络应用。 微博是一个很多人都在用的社交应用。天天刷微博的人每天都会进行着这样几个操作:原创、转发、回复、阅读、关注、@等。其中,前四个是针对短博文,最后的关注和@则针</div> </li> <li><a href="/article/1246.htm" title="Connection reset 连接被重置的解决方法" target="_blank">Connection reset 连接被重置的解决方法</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%AD%97%E7%AC%A6%E6%B5%81/1.htm">字符流</a><a class="tag" taget="_blank" href="/search/%E8%BF%9E%E6%8E%A5%E8%A2%AB%E9%87%8D%E7%BD%AE/1.htm">连接被重置</a> <div>流是java的核心部分,,昨天在做android服务器连接服务器的时候出了问题,就将代码放到java中执行,结果还是一样连接被重置   被重置的代码如下;   客户端代码; package 通信软件服务器; import java.io.BufferedWriter; import java.io.OutputStream; import java.io.O</div> </li> <li><a href="/article/1373.htm" title="web.xml配置详解之filter" target="_blank">web.xml配置详解之filter</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/web.xml/1.htm">web.xml</a><a class="tag" taget="_blank" href="/search/filter/1.htm">filter</a> <div>一.定义 <filter> <filter-name>encodingfilter</filter-name> <filter-class>com.my.app.EncodingFilter</filter-class> <init-param> <param-name>encoding<</div> </li> <li><a href="/article/1500.htm" title="Heritrix" target="_blank">Heritrix</a> <span class="text-muted">Bill_chen</span> <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/xml/1.htm">xml</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%88%B6%E9%80%A0/1.htm">制造</a><a class="tag" taget="_blank" href="/search/%E9%85%8D%E7%BD%AE%E7%AE%A1%E7%90%86/1.htm">配置管理</a> <div>作为纯Java语言开发的、功能强大的网络爬虫Heritrix,其功能极其强大,且扩展性良好,深受热爱搜索技术的盆友们的喜爱,但它配置较为复杂,且源码不好理解,最近又使劲看了下,结合自己的学习和理解,跟大家分享Heritrix的点点滴滴。 Heritrix的下载(http://sourceforge.net/projects/archive-crawler/)安装、配置,就不罗嗦了,可以自己找找资</div> </li> <li><a href="/article/1627.htm" title="【Zookeeper】FAQ" target="_blank">【Zookeeper】FAQ</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/zookeeper/1.htm">zookeeper</a> <div>1.脱离IDE,运行简单的Java客户端程序 #ZkClient是简单的Zookeeper~$ java -cp "./:zookeeper-3.4.6.jar:./lib/*" ZKClient    1. Zookeeper是的Watcher回调是同步操作,需要添加异步处理的代码 2. 如果Zookeeper集群跨越多个机房,那么Leader/</div> </li> <li><a href="/article/1754.htm" title="The user specified as a definer ('aaa'@'localhost') does not exist" target="_blank">The user specified as a definer ('aaa'@'localhost') does not exist</a> <span class="text-muted">白糖_</span> <a class="tag" taget="_blank" href="/search/localhost/1.htm">localhost</a> <div>今天遇到一个客户BUG,当前的jdbc连接用户是root,然后部分删除操作都会报下面这个错误:The user specified as a definer ('aaa'@'localhost') does not exist 最后找原因发现删除操作做了触发器,而触发器里面有这样一句 /*!50017 DEFINER = ''aaa@'localhost' */  原来最初</div> </li> <li><a href="/article/1881.htm" title="javascript中showModelDialog刷新父页面" target="_blank">javascript中showModelDialog刷新父页面</a> <span class="text-muted">bozch</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/%E5%88%B7%E6%96%B0%E7%88%B6%E9%A1%B5%E9%9D%A2/1.htm">刷新父页面</a><a class="tag" taget="_blank" href="/search/showModalDialog/1.htm">showModalDialog</a> <div>在页面中使用showModalDialog打开模式子页面窗口的时候,如果想在子页面中操作父页面中的某个节点,可以通过如下的进行:       window.showModalDialog('url',self,‘status...’); // 首先中间参数使用self       在子页面使用w</div> </li> <li><a href="/article/2008.htm" title="编程之美-买书折扣" target="_blank">编程之美-买书折扣</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E4%B9%8B%E7%BE%8E/1.htm">编程之美</a> <div> import java.util.Arrays; public class BookDiscount { /**编程之美 买书折扣 书上的贪心算法的分析很有意思,我看了半天看不懂,结果作者说,贪心算法在这个问题上是不适用的。。 下面用动态规划实现。 哈利波特这本书一共有五卷,每卷都是8欧元,如果读者一次购买不同的两卷可扣除5%的折扣,三卷10%,四卷20%,五卷</div> </li> <li><a href="/article/2135.htm" title="关于struts2.3.4项目跨站执行脚本以及远程执行漏洞修复概要" target="_blank">关于struts2.3.4项目跨站执行脚本以及远程执行漏洞修复概要</a> <span class="text-muted">chenbowen00</span> <a class="tag" taget="_blank" href="/search/struts/1.htm">struts</a><a class="tag" taget="_blank" href="/search/WEB%E5%AE%89%E5%85%A8/1.htm">WEB安全</a> <div>因为近期负责的几个银行系统软件,需要交付客户,因此客户专门请了安全公司对系统进行了安全评测,结果发现了诸如跨站执行脚本,远程执行漏洞以及弱口令等问题。 下面记录下本次解决的过程以便后续 1、首先从最简单的开始处理,服务器的弱口令问题,首先根据安全工具提供的测试描述中发现应用服务器中存在一个匿名用户,默认是不需要密码的,经过分析发现服务器使用了FTP协议, 而使用ftp协议默认会产生一个匿名用</div> </li> <li><a href="/article/2262.htm" title="[电力与暖气]煤炭燃烧与电力加温" target="_blank">[电力与暖气]煤炭燃烧与电力加温</a> <span class="text-muted">comsci</span> <div>       在宇宙中,用贝塔射线观测地球某个部分,看上去,好像一个个马蜂窝,又像珊瑚礁一样,原来是某个国家的采煤区.....       不过,这个采煤区的煤炭看来是要用完了.....那么依赖将起燃烧并取暖的城市,在极度严寒的季节中...该怎么办呢?   &nbs</div> </li> <li><a href="/article/2389.htm" title="oracle O7_DICTIONARY_ACCESSIBILITY参数" target="_blank">oracle O7_DICTIONARY_ACCESSIBILITY参数</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a> <div>O7_DICTIONARY_ACCESSIBILITY参数控制对数据字典的访问.设置为true,如果用户被授予了如select any table等any table权限,用户即使不是dba或sysdba用户也可以访问数据字典.在9i及以上版本默认为false,8i及以前版本默认为true.如果设置为true就可能会带来安全上的一些问题.这也就为什么O7_DICTIONARY_ACCESSIBIL</div> </li> <li><a href="/article/2516.htm" title="比较全面的MySQL优化参考" target="_blank">比较全面的MySQL优化参考</a> <span class="text-muted">dengkane</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a> <div>本文整理了一些MySQL的通用优化方法,做个简单的总结分享,旨在帮助那些没有专职MySQL DBA的企业做好基本的优化工作,至于具体的SQL优化,大部分通过加适当的索引即可达到效果,更复杂的就需要具体分析了,可以参考本站的一些优化案例或者联系我,下方有我的联系方式。这是上篇。   1、硬件层相关优化   1.1、CPU相关   在服务器的BIOS设置中,可</div> </li> <li><a href="/article/2643.htm" title="C语言homework2,有一个逆序打印数字的小算法" target="_blank">C语言homework2,有一个逆序打印数字的小算法</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/c/1.htm">c</a> <div>#h1#   0、完成课堂例子 1、将一个四位数逆序打印 1234 ==> 4321 实现方法一: # include <stdio.h> int main(void) { int i = 1234; int one = i%10; int two = i / 10 % 10; int three = i / 100 % 10; </div> </li> <li><a href="/article/2770.htm" title="apacheBench对网站进行压力测试" target="_blank">apacheBench对网站进行压力测试</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/apachebench/1.htm">apachebench</a> <div>   ab 的全称是 ApacheBench , 是 Apache 附带的一个小工具 , 专门用于 HTTP Server 的 benchmark testing , 可以同时模拟多个并发请求。前段时间看到公司的开发人员也在用它作一些测试,看起来也不错,很简单,也很容易使用,所以今天花一点时间看了一下。 通过下面的一个简单的例子和注释,相信大家可以更容易理解这个工具的使用。 </div> </li> <li><a href="/article/2897.htm" title="2种办法让HashMap线程安全" target="_blank">2种办法让HashMap线程安全</a> <span class="text-muted">flyfoxs</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/jni/1.htm">jni</a> <div>多线程之--2种办法让HashMap线程安全 多线程之--synchronized 和reentrantlock的优缺点 多线程之--2种JAVA乐观锁的比较( NonfairSync VS. FairSync)     HashMap不是线程安全的,往往在写程序时需要通过一些方法来回避.其实JDK原生的提供了2种方法让HashMap支持线程安全.   </div> </li> <li><a href="/article/3024.htm" title="Spring Security(04)——认证简介" target="_blank">Spring Security(04)——认证简介</a> <span class="text-muted">234390216</span> <a class="tag" taget="_blank" href="/search/Spring+Security/1.htm">Spring Security</a><a class="tag" taget="_blank" href="/search/%E8%AE%A4%E8%AF%81/1.htm">认证</a><a class="tag" taget="_blank" href="/search/%E8%BF%87%E7%A8%8B/1.htm">过程</a> <div>认证简介 目录 1.1     认证过程 1.2     Web应用的认证过程 1.2.1    ExceptionTranslationFilter 1.2.2    在request之间共享SecurityContext   1</div> </li> <li><a href="/article/3151.htm" title="Java 位运算" target="_blank">Java 位运算</a> <span class="text-muted">Javahuhui</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E4%BD%8D%E8%BF%90%E7%AE%97/1.htm">位运算</a> <div>// 左移( << ) 低位补0 // 0000 0000 0000 0000 0000 0000 0000 0110 然后左移2位后,低位补0: // 0000 0000 0000 0000 0000 0000 0001 1000 System.out.println(6 << 2);// 运行结果是24 // 右移( >> ) 高位补"</div> </li> <li><a href="/article/3278.htm" title="mysql免安装版配置" target="_blank">mysql免安装版配置</a> <span class="text-muted">ldzyz007</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a> <div>1、my-small.ini是为了小型数据库而设计的。不应该把这个模型用于含有一些常用项目的数据库。 2、my-medium.ini是为中等规模的数据库而设计的。如果你正在企业中使用RHEL,可能会比这个操作系统的最小RAM需求(256MB)明显多得多的物理内存。由此可见,如果有那么多RAM内存可以使用,自然可以在同一台机器上运行其它服务。 3、my-large.ini是为专用于一个SQL数据</div> </li> <li><a href="/article/3405.htm" title="MFC和ado数据库使用时遇到的问题" target="_blank">MFC和ado数据库使用时遇到的问题</a> <span class="text-muted">你不认识的休道人</span> <a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a><a class="tag" taget="_blank" href="/search/mfc/1.htm">mfc</a> <div>=================================================================== 第一个 =================================================================== try{ CString sql; sql.Format("select * from p</div> </li> <li><a href="/article/3532.htm" title="表单重复提交Double Submits" target="_blank">表单重复提交Double Submits</a> <span class="text-muted">rensanning</span> <a class="tag" taget="_blank" href="/search/double/1.htm">double</a> <div>可能发生的场景: *多次点击提交按钮 *刷新页面 *点击浏览器回退按钮 *直接访问收藏夹中的地址 *重复发送HTTP请求(Ajax) (1)点击按钮后disable该按钮一会儿,这样能避免急躁的用户频繁点击按钮。 这种方法确实有些粗暴,友好一点的可以把按钮的文字变一下做个提示,比如Bootstrap的做法: http://getbootstrap.co</div> </li> <li><a href="/article/3659.htm" title="Java String 十大常见问题" target="_blank">Java String 十大常见问题</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/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a> <div> 1.字符串比较,使用“==”还是equals()?   "=="判断两个引用的是不是同一个内存地址(同一个物理对象)。   equals()判断两个字符串的值是否相等。   除非你想判断两个string引用是否同一个对象,否则应该总是使用equals()方法。   如果你了解字符串的驻留(String Interning)则会更好地理解这个问题。    </div> </li> <li><a href="/article/3786.htm" title="SpringMVC 登陆拦截器实现登陆控制" target="_blank">SpringMVC 登陆拦截器实现登陆控制</a> <span class="text-muted">xp9802</span> <a class="tag" taget="_blank" href="/search/springMVC/1.htm">springMVC</a> <div>思路,先登陆后,将登陆信息存储在session中,然后通过拦截器,对系统中的页面和资源进行访问拦截,同时对于登陆本身相关的页面和资源不拦截。   实现方法: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 </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>