关于系统集成的一些想法,及再次讨论B/S、C/S

阅读更多
最近在罗马尼亚做需求调研,发现用户在工作中,需要频繁从10个系统查看数据,辅助决策。于是就想是否有可能做一个信息聚合的系统,让用户不需要频繁地“切换”和“根据关键字检索”

今天晚饭时和同事讨论了一下,有一些零碎的想法,在此记录

我认为这里有2个层面的问题,第一个层面是集成,第二个层面是信息搜索。分别对应用户的2个动作:“切换”、“检索”

首先谈集成层面:

问题的本质在于,这个新系统(下文简称A),需要和现有的10个系统集成起来(老系统是处于“被集成”的位置)。归纳起来,我认为一个系统是否容易“被集成”,可以分为3个层次:

1、展现层接口

第一种情况是,系统对外提供的是完整的界面,即“展现层的接口”

比如输入一个www.somesystem.com/sla/aug,某系统返回一个完整的页面。那么如果A要集成这个系统,就直接将这个页面嵌入到自己的界面中;

或者发送一个指令如“kpi=sla/aug”,某系统返回一个完整的flash。那么A也可以直接把这个flash嵌入自己的界面

这种情况在老的B/S架构应用中是比较常见的,比如我要把“博德之门2”的信息集成进来,可以直接在A的界面中嵌入 http://baike.baidu.com/view/6246506.htm?fromId=2761385,集成难度非常低(当然这是盗链,只是打个比方)。另外大部分的企业B/S应用都有鉴权机制,所以也还是需要解决SSO的问题

在C/S架构中这种情况非常少见,因为client层的处理能力很强,不太需要在网络中传输这么大的流量

这次目标的10个系统中,大概有3个是这样的类型

2、业务层接口

第二种情况是,系统对外提供只是数据片段,即“业务层的查询接口”

基本上所有的C/S架构应用都是这样的,比如我在DOTA中潇洒地补刀,补刀了一个投石车,得到了70金币。server传给war3 client的只是类似“hit=yes;gold=+70;unit=destroy”的数据片段,而不是把整个补刀的动画传过来,动画是根据这些数据,在客户端上计算得到的

问题在于,这里的“接口”可以说是一厢情愿的说法,事实上大部分的C/S应用是private的,并没有打算将来给别的应用去集成,所以这个接口虽然存在,但是并不是开放的。也就是说我想要得到上面的“hit=yes;gold=+70;unit=destroy”数据,唯一的办法就是打开客户端,然后认认真真地补中一辆投石车(好吧,这也不是很难),很难通过写代码的方式来模拟这个事情。各种游戏的外挂,实际上干的就是这样的事

老的B/S应用,主要还是第一种情况,很少用第二种。主要是因为浏览器的渲染能力比较弱,计算也比较慢,所以还是把大部分的工作在server端完成,client只原样展示。但是这种情况在最近5,6年有了明显的改变。主要是由于PC的性能越来越强,js、css也赋予了浏览器足够的逻辑运算能力和界面展现能力,AJAX技术在其中也起了至关重要的作用。总的来说,现在的B/S架构应用,也越来越倾向于“薄server,厚client”,甚至很多C/S架构的老系统,也开始推行“WEB化”。这样的例子很多,比如博客园、当当网现在的首页就完全是通过ajax加载的,还有大量的网页游戏等等。其中的驱动力主要是减轻server端的压力,将计算压力分摊到client上;而client的能力和技术进步,使得这个愿望成为可能

我们以前做过的一个系统,就是这种形式,通过http://www.company.com/workorder/username这个链接,返回某用户的工单数据。浏览器拿到数据以后,刷新DOM元素;而android终端拿到数据以后,刷新手机界面。这个接口,就是典型的业务层接口,无分B/S还是C/S。Remedy也是这种做法,AR Server暴露的就是各种业务接口,并提供了SDK让客户自己去定制client;同时官方也配套提供了一个mid tier,包装出了简单的URL,初级用户可以直接用浏览器来访问mid tier

要集成这种类型的系统,就根据协议向server端发起请求,拿到数据后自行组装。然而问题在于,老系统这一层的接口,也不一定是开放的

10个目标系统中,大概有4个是这种类型

3、数据层接口

第三种情况是,系统将数据直接通过接口暴露出来,要什么就自己取。这个比较难举出例子,毕竟很少见。欧洲有些厂商的IT整体架构就是这样,底层是一个数据仓库,然后暴露了一堆查询接口。上层的应用系统是按需定制开发的,可能一个系统取了123数据来展示;另一个系统取了456数据来展示

这里的数据仓库,可以有多种形式,可能就是一个标准的RDBMS,开放了一个SQL接口(危险);也有可能是加了一层很薄的帽子,看起来类似第二种情况,但是可以更有效地做日志、权限控制、防SQL注入等

集成这种类型的系统,其实意义不大,因为对方的数据也不外乎是从数据仓库取的,既然老系统能取到,那么A当然也能取到。那么去集成老系统反而是多此一举,不如直接也从底层的数据仓库去取,关键还是搞清楚业务规则,别人为什么要这么取

10个目标系统中,最后大概有3个是这种类型

总的来说,我觉得没有明显的优劣之分

第一种方式最为省事,因为封装得最彻底最粗粒度。A要集成这种系统很简单,但是要做定制则非常难。比如对方系统提供了一个页面,如果我们只想直接复用,那就最好。但是如果我们只想要页面里3个字段的2个,那么就需要处理这个页面,从中间剥离出来,难度就很大

第二种方式只提供数据,封装程度比较弱,细粒度,就给A的定制提供了更多的可能。但是相对的,A在界面开发上就需要更多的工作量

第三种方式则更彻底,没有任何封装,相对的就连业务规则也没有了。A想要什么就取什么,相对地工作量也就最大,某种程度上算是新开发一个系统,也谈不上什么集成了

从我来看,第一种方式封装过度,客户端的自由度太小;而第三种方式的粒度又太细,定制工作量太大,也缺乏约束。这两种方式都太极端,所以折中的第二种相对是比较好的,对一个开放系统来说,现在主要也是采取这种方式,比如各种开放平台的SDK,其实就是这种方式

下面谈一下搜索层面:

相对于前面讨论的集成层面来说,搜索层面没有太多可说的,本质上取决于对方系统接口的粒度和开放程度

比如说,假设我现在想做一个书籍信息的垂直聚合应用,那么我当然要去当当、亚马逊、京东、china-pub上拿信息

某网站开放了接口(无论是上述哪一层的接口都无所谓),就比如说是web api吧,有queryByIsbn()、queryByAuthor()、queryByPrice()这3个方法,那么我就可以根据条件,去调用这些接口,来精确搜索到我想要的信息

而另一个网站则非常封闭,就希望读者到我网站来贡献流量,不要第三方应用乱戴帽子,那么就只有一个URL,www.bookshop.com/book?id=123456,那么我要在这个网站上做精确搜索“10块钱的JAVA书”就非常难,只能先向“www.bookshop/book?name=java”发请求,从拿到的结果中再解析(需要用到文本解析、正则表达式、去重等),得到我想要的数据之后,再嵌入我的系统里

从上面的例子可以看到,能不能很容易地得到搜索结果,并不是我一厢情愿的事,跟技术能力关系也不大,最关键的因素是,目标系统是否是开放的,在设计的时候是否把“被集成”纳入考虑。遗憾的是,出于商业角度和历史原因,大部分都没有

再举一个搜索引擎的例子,搜索引擎搜网页,一个重要的依据是网页的元素。而网页本身都是很希望能被搜索引擎收录的,所以一般都尽量贴切地填写这些“搜索引擎友好”标签。尽管如此,搜索引擎要做到精确搜索仍然很困难,通过AJAX得到的动态数据基本是很难检索到的。比如试试在google里搜索“十块钱的JAVA书”,排名第一的是“买了一本二手JAVA书,三十块钱”,已经比较接近了,但是和我的原意还是差比较远,因为没有这么细粒度的接口,即使有,在没有形成标准之前,google也不可能去调用这么多不同的接口 <br> <br>总的来说,“能不能搜索”要看“有没有接口”,“能不能精确搜索”则要看“有没有细粒度接口”。即使非常理想,对方系统提供了细粒度接口,定制工作是必不可少的,如果自身系统设计得足够精巧的话,至少也需要写配置文件和脚本。而且这类“搜索接口”目前是没有规范的,所以每个系统都不一样 <br> <br>回到这次的需求,情况比google搜网页更加麻烦。因为网页好歹还填了<title>和<keywords>,可以认为是“统一的粗粒度查询接口”(当然google自己有更巧妙的算法)。而这10个老系统,则连这种粗粒度的查询接口都没有提供,所以只有两个办法:第一是逐个系统取数据,做解析,非常难实现;第二是先将数据都同步过来保存,再自己做查询,也很难实现 <br> <br>上面总结了关于“集成”和“搜索”的初步想法。完全割裂开来说可能不太对,比如某系统提供了细粒度的数据层接口,那么既是可以集成的,也是便于搜索的。把这2个概念分开来讲,主要是因为,集成用工作量至少是能搞定的,而搜索的目标则更加难以达成 <br> <br>最后,再简单总结一下B/S和C/S,其实我觉得界限是非常模糊的。B/S中的B,其实也就可以认为是client <br> <br>B/S的优势主要是统一,应用层协议都走http,展现全都是html+css+javascript,就非常通用。关键是所有PC上都有浏览器,解决了分发的问题。但是B/S曾经也有很多缺陷,比如页面渲染能力太弱,javascript执行太慢,网络流量大,跨浏览器兼容很难,难以做到server push……所以才会有C/S的一席之地 <br> <br>而最近技能,这些问题都在逐一解决,HTML5、CSS3、V8 Engine、ajax、W3标准、web socket等,都在解决这些曾经的问题,所以B/S也就越来越流行了。或许不能说C/S正在消亡,而是B/S越来越像C/S了 </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1177553262241443840"></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">你可能感兴趣的:(集成,搜索,B/S,C/S)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1884005228529905664.htm" title="一文大白话讲清楚webpack进阶——1——SourceMap" target="_blank">一文大白话讲清楚webpack进阶——1——SourceMap</a> <span class="text-muted">16年上任的CTO</span> <a class="tag" taget="_blank" href="/search/webpack/1.htm">webpack</a><a class="tag" taget="_blank" href="/search/webpack/1.htm">webpack</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a><a class="tag" taget="_blank" href="/search/sourcemap/1.htm">sourcemap</a> <div>文章目录一文大白话讲清楚webpack进阶——1——SourceMap1.啥是SourceMap2.SourceMap的结构3.SourceMap触发时机4.SourceMap怎么配置4.1devtool配置4.1.1devtool属性4.1.1.1eval4.1.1.2source-map4.1.1.3cheap4.1.1.4module4.1.1.5nosources4.1.1.6hidden</div> </li> <li><a href="/article/1884005102285549568.htm" title="一文大白话讲清楚webpack进阶——3——Loader的执行顺序(pre,normal,inline,post)" target="_blank">一文大白话讲清楚webpack进阶——3——Loader的执行顺序(pre,normal,inline,post)</a> <span class="text-muted">16年上任的CTO</span> <a class="tag" taget="_blank" href="/search/webpack/1.htm">webpack</a><a class="tag" taget="_blank" href="/search/webpack/1.htm">webpack</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a><a class="tag" taget="_blank" href="/search/loader%E6%89%A7%E8%A1%8C%E9%A1%BA%E5%BA%8F/1.htm">loader执行顺序</a> <div>文章目录一文大白话讲清楚webpack进阶——3——Loader的执行顺序(pre,normal,inline,post)1.loader的分类和执行顺序1.1pre1.2normal1.3inline1.4post1.5相同优先级2.如何制定分类2.1非inline2.2inline2.2.1禁用普通loader2.2.2禁用所有loader2.2.3禁用非post类型loader一文大白话讲清</div> </li> <li><a href="/article/1884004220835786752.htm" title="Optional char parameter ‘questionNum‘ is present but cannot be translated into a null value" target="_blank">Optional char parameter ‘questionNum‘ is present but cannot be translated into a null value</a> <span class="text-muted">fengfeng N</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>Optionalcharparameter'questionNum'ispresentbutcannotbetranslatedintoanullvalueduetobeingdeclaredasaprimitivetype.Considerdeclaringitasobjectwrapperforthecorrespondingprimitivetype.报错信息如上,错误信息指出,当尝试将一个</div> </li> <li><a href="/article/1884002962058047488.htm" title="Thymeleaf基础知识语法" target="_blank">Thymeleaf基础知识语法</a> <span class="text-muted">沐暖沐</span> <a class="tag" taget="_blank" href="/search/thymeleaf/1.htm">thymeleaf</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、简介Thymeleaf是⾯向Web和独⽴环境的现代服务器端Java模板引擎,能够处理HTML、XML、JavaScript、CSS、TEXT、RAW这六种模板。这六种模版模式包含两种标记模板模式(HTML和XML),三种⽂本模板模式(TEXT,JAVASCRIPT和CSS)和⼀个⽆操作模板模式(RAW)。①简单表达式变量表达式:${…}选择变量表达式:*{…}消息表达:#{…}链接URL表达式</div> </li> <li><a href="/article/1884001827884691456.htm" title="机器学习入门——机器学习基本概念" target="_blank">机器学习入门——机器学习基本概念</a> <span class="text-muted">四月是你的</span> <a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a> <div>@机器学习什么是机器学习机器学习(MachineLearning,ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合而不是演绎简单来说机器学习就是机</div> </li> <li><a href="/article/1884001071039311872.htm" title="异常处理/加密/日志" target="_blank">异常处理/加密/日志</a> <span class="text-muted">weixin_30527551</span> <div>try...except...else...finally...try:"""操作"""exceptExceptionase:"""异常的父类,可以捕获所有的异常"""else:"""保护不抛出异常的代码,当try中无异常的时候执行"""finally:"""最后总要执行的"""raise当程序运行到raise.程序会被中断.并实例化后面的异常对象.抛给调用方.如果调用方不处理.则会把错误继续向上</div> </li> <li><a href="/article/1884000693145104384.htm" title="代码随想录day2" target="_blank">代码随想录day2</a> <span class="text-muted">独正己身</span> <a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/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/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a> <div>209.长度最小的子数组第一种写法,最简单理解时间复杂度O(n^2),无法通过intminSubArrayLen(inttarget,vector&nums){intresult=0;for(inti=0;i=target){result=1;break;}for(intj=i+1;j=target){if(result==0){result=j-i+1;}else{result=min(resu</div> </li> <li><a href="/article/1884000440094355456.htm" title="在Linux上安装Chrome浏览器时遇到的问题" target="_blank">在Linux上安装Chrome浏览器时遇到的问题</a> <span class="text-muted">花牧w</span> <a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a><a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a><a class="tag" taget="_blank" href="/search/chrome/1.htm">chrome</a> <div>在Linux上安装Chrome浏览器时遇到的问题一、权限报错二、找不到文件报错三、架构不符报错四、依赖关系报错一、权限报错运行:dpkg-igoogle-chrome-stable_current_amd64-1.deb报错:dpkg:错误:所请求的操作需要超级用户权限处理方式:sudodpkg-igoogle-chrome-stable_current_amd64-1.deb[sudo]user</div> </li> <li><a href="/article/1884000440878690304.htm" title="工程化概述" target="_blank">工程化概述</a> <span class="text-muted">WJP丶</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E5%B7%A5%E7%A8%8B%E5%8C%96%E5%AE%9E%E6%88%98/1.htm">前端工程化实战</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E5%B7%A5%E7%A8%8B%E5%8C%96%E6%A6%82%E8%BF%B0/1.htm">前端工程化概述</a> <div>工程化的定义和主要解决的问题前端工程化指遵循一定的规范,通过工具提升效率,降低成本的一种手段。前端日常开发遇到的问题想要使用ES6+新特性,但是兼容性有问题想要使用Less/Sass/PostCss增强css编程性,但是运行环境不能直接支持想要使用模块化的方式提高项目的可维护性,但是运行环境不能直接支持部署上线前需要手动压缩代码及资源文件、部署过程需要手动上传代码到服务器多人协作开发,无法硬性同一</div> </li> <li><a href="/article/1883999810390913024.htm" title="JVM --- 类的生命周期" target="_blank">JVM --- 类的生命周期</a> <span class="text-muted">Wangwq.</span> <a class="tag" taget="_blank" href="/search/%E5%85%AB%E8%82%A1%E6%96%87/1.htm">八股文</a><a class="tag" taget="_blank" href="/search/JVM/1.htm">JVM</a> <div>一、类的生命周期加载-----》校验-----》准备-----》解析-----》初始化-----》使用-----》卸载二、类加载过程1、加载(1)主要工作:通过类的全限定名来获取定义此类的二进制字节流。将这个类字节流代表的静态存储结构转换为方法区的运行时数据结构。在堆中生成了一个代表此类的java.lang.Class对象,作为访问这些方法区的数据入口。(2)支持的两种类加载器:引导类加载器用户(</div> </li> <li><a href="/article/1883999558334214144.htm" title="Python 一个脚本批量安装第三方库" target="_blank">Python 一个脚本批量安装第三方库</a> <span class="text-muted">漫漫进阶路</span> <a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/Pycharm/1.htm">Pycharm</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>importos#引入os库,os是python自带的库definstall_packages():#将要批量安装的第三方库写进一个列表libs=["numpy","matplotlib","pillow","sklearn","scipy","requests","uvicorn","pyspider","beautifulsoup4","wheel","networkx","sympy","p</div> </li> <li><a href="/article/1883998549801234432.htm" title="CVPR 2024 无人机/遥感/卫星图像方向总汇(航空图像和交叉视角定位)" target="_blank">CVPR 2024 无人机/遥感/卫星图像方向总汇(航空图像和交叉视角定位)</a> <span class="text-muted">点云SLAM</span> <a class="tag" taget="_blank" href="/search/%E5%9B%BE%E5%BD%A2%E5%9B%BE%E5%83%8F%E5%A4%84%E7%90%86/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/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89/1.htm">计算机视觉</a><a class="tag" taget="_blank" href="/search/%E9%81%A5%E6%84%9F/1.htm">遥感</a><a class="tag" taget="_blank" href="/search/%E5%8D%AB%E6%98%9F%E5%9B%BE%E5%83%8F/1.htm">卫星图像</a><a class="tag" taget="_blank" href="/search/%E4%BA%A4%E5%8F%89%E8%A7%86%E8%A7%89%E5%AE%9A%E4%BD%8D/1.htm">交叉视觉定位</a><a class="tag" taget="_blank" href="/search/CVPR/1.htm">CVPR</a> <div>1、UAV、RemoteSensing、SatelliteImage(无人机/遥感/卫星图像)UnleashingUnlabeledData:AParadigmforCross-ViewGeo-Localization⭐codeRethinkingTransformersPre-trainingforMulti-SpectralSatelliteImagery⭐codeAerialLifting:</div> </li> <li><a href="/article/1883998547938963456.htm" title="银河麒麟V10离线安装MongoDB4.0" target="_blank">银河麒麟V10离线安装MongoDB4.0</a> <span class="text-muted">孙霸天</span> <a class="tag" taget="_blank" href="/search/%E4%BF%A1%E5%88%9B%E8%AE%B0%E5%BD%95/1.htm">信创记录</a><a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a><a class="tag" taget="_blank" href="/search/%E9%93%B6%E6%B2%B3%E9%BA%92%E9%BA%9F/1.htm">银河麒麟</a><a class="tag" taget="_blank" href="/search/MongoDB/1.htm">MongoDB</a><a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</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%E4%BB%93%E5%BA%93/1.htm">数据仓库</a> <div>目录银河麒麟V10离线安装MongoDB4.0环境介绍安装准备安装MongoDB编辑mongod.conf配置系统防火墙启动服务停止服务重启服务创建管理员用户开启用户认证配置自启动服务编辑自启动服务文件mongodb服务命令银河麒麟V10离线安装MongoDB4.0环境介绍银河麒麟V10是一款高性能的国产服务器操作系统,适用于各种应用场景。在离线环境下安装MongoDB是一项重要任务,以支持数据存</div> </li> <li><a href="/article/1883998295014043648.htm" title="python 中的 logging 详解" target="_blank">python 中的 logging 详解</a> <span class="text-muted">SATAN 先生</span> <a class="tag" taget="_blank" href="/search/python/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.Abstract2.logging模块结构3.Logger的层次结构和命名规则3.1RootLogger3.2层次结构和命名规则3.2.1层次结构和命名规则3.2.2Logger的工厂机制4.Logger和Handler的过滤机制:Level和Filter5.emit:格式化与输出流6.配置basicConfig,logging.config.fileConfig…;6.1`basic</div> </li> <li><a href="/article/1883998295773212672.htm" title="Vue进阶之Vue无代码可视化项目(六)" target="_blank">Vue进阶之Vue无代码可视化项目(六)</a> <span class="text-muted">VillanelleS</span> <a class="tag" taget="_blank" href="/search/TypeScript/1.htm">TypeScript</a><a class="tag" taget="_blank" href="/search/Vue3%E5%9F%BA%E7%A1%80/1.htm">Vue3基础</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a> <div>Vue无代码可视化项目渲染引擎(渲染器)初版TextBlock.vueChartBlock.vueImageBlock.vueLayoutView.vue渲染器BlockRenderer.vueLayoutView.vue进一步typestypes/block.tsmock/blocks.tsstores/editor.tsblocks/BlockRenderer.vueviews/LayoutV</div> </li> <li><a href="/article/1883998168572555264.htm" title="@Contended" target="_blank">@Contended</a> <span class="text-muted">qq_31273845</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>`@Contended`是Java8引入的一个注解,主要用于减少多线程环境下的伪共享(FalseSharing)问题。伪共享是由于缓存行的争用导致的性能问题,特别是在多核处理器上。###`@Contended`注解的作用-**减少伪共享**:当多个线程访问不同的变量,但这些变量位于同一个缓存行时,可能会引发伪共享问题。`@Contended`注解通过在变量之间插入填充字段,确保它们位于不同的缓存行</div> </li> <li><a href="/article/1883997915890905088.htm" title="前端工程化都有哪些及优化方案" target="_blank">前端工程化都有哪些及优化方案</a> <span class="text-muted">光影少年</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E6%A1%86%E6%9E%B6/1.htm">前端框架</a><a class="tag" taget="_blank" href="/search/%E5%9F%BA%E5%B8%A6%E5%B7%A5%E7%A8%8B/1.htm">基带工程</a> <div>一、前端工程化的主要组成部分1.模块化模块化是将复杂的程序分解为若干小的独立模块,每个模块负责一个功能。常用的模块化方案包括:ES6模块(import/export)CommonJS(require/module.exports,Node.js中常用)AMD(define/require,如RequireJS)优化方案:尽量使用ES6模块,因为它是JavaScript的标准,支持更好的静态分析和T</div> </li> <li><a href="/article/1883997916352278528.htm" title="qt 设置鼠标样式的几种方法" target="_blank">qt 设置鼠标样式的几种方法</a> <span class="text-muted">源之缘-OFD解决方案之道</span> <a class="tag" taget="_blank" href="/search/qt/1.htm">qt</a><a class="tag" taget="_blank" href="/search/qt/1.htm">qt</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%A4%96%E8%AE%BE/1.htm">计算机外设</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>在Qt中,设置鼠标样式可以通过以下几种方式实现:1.使用内置鼠标样式Qt提供了一系列内置的鼠标样式,可以通过setCursor()函数设置。例如:cpp复制button->setCursor(Qt::PointingHandCursor);//设置为手型光标[^1^][^2^]。其他常用的内置样式包括:Qt::ArrowCursor:普通箭头光标。Qt::WaitCursor:等待光标。Qt::C</div> </li> <li><a href="/article/1883997789558468608.htm" title="nodejs应用ogg转换mp3格式" target="_blank">nodejs应用ogg转换mp3格式</a> <span class="text-muted">热情仔</span> <a class="tag" taget="_blank" href="/search/js/1.htm">js</a><a class="tag" taget="_blank" href="/search/ffmpeg/1.htm">ffmpeg</a><a class="tag" taget="_blank" href="/search/ogg/1.htm">ogg</a> <div>首先你要安装ffmpeg三选一npminstallffmpegcnpminstallffmpegyarninstallffmpeg看下目录constffmpeg=require('ffmpeg')constfs=require("fs");constpath=require('path');//先读取所有的ogg文件constfiles=fs.readdirSync("./ogg");letcou</div> </li> <li><a href="/article/1883997285201801216.htm" title="Go语言中的Select" target="_blank">Go语言中的Select</a> <span class="text-muted">Cxzzzzzzzzzz</span> <a class="tag" taget="_blank" href="/search/golang/1.htm">golang</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> <div>Select在Go语言中,select是一种用于处理多个通道操作的控制结构。它允许你同时监听多个通道上的通信操作(发送或接收),并根据哪个操作先完成来执行相应的代码块。select是Go并发编程中的一个重要工具,常用于实现超时、非阻塞通信和多通道选择等场景。select的基本语法select的语法类似于switch,但它用于通道操作。基本形式如下:go复制select{case<-ch1://当c</div> </li> <li><a href="/article/1883996277977444352.htm" title="基于R-CNN深度学习的无人机目标检测系统:数据集、模型和UI界面的完整实现" target="_blank">基于R-CNN深度学习的无人机目标检测系统:数据集、模型和UI界面的完整实现</a> <span class="text-muted">2025年数学建模美赛</span> <a class="tag" taget="_blank" href="/search/R-CNN%E6%A3%80%E6%B5%8B%E7%B3%BB%E7%BB%9F/1.htm">R-CNN检测系统</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/cnn/1.htm">cnn</a><a class="tag" taget="_blank" href="/search/%E6%97%A0%E4%BA%BA%E6%9C%BA/1.htm">无人机</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89/1.htm">计算机视觉</a><a class="tag" taget="_blank" href="/search/%E7%9B%AE%E6%A0%87%E6%A3%80%E6%B5%8B/1.htm">目标检测</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a> <div>摘要随着无人机技术的迅猛发展,无人机在军事、农业、环境监测等多个领域的应用日益广泛。无人机目标检测系统的建设成为提升无人机自主飞行和环境感知能力的重要环节。本文将详细介绍如何构建一个基于深度学习的无人机目标检测系统,采用R-CNN(区域卷积神经网络)算法,通过用户界面设计和数据集处理,实现高效的目标检测功能。通过本项目,旨在为无人机目标检测提供一种可行的解决方案,并提高其在复杂环境下的工作效率。目</div> </li> <li><a href="/article/1883995143162359808.htm" title="Python编程的最好搭档—VSCode 详细指南" target="_blank">Python编程的最好搭档—VSCode 详细指南</a> <span class="text-muted">程序员朱鹏</span> <a class="tag" taget="_blank" href="/search/vscode/1.htm">vscode</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E8%BE%91%E5%99%A8/1.htm">编辑器</a> <div>刚学Python的同学可能会觉得每次写Python的时候都得打开Cmd有点烦躁,直接上手Pycharm的同学可能会觉得这软件太笨重了,晦涩难用。那么有没有省去打开CMD的步骤,又能弥补Pycharm笨重的特点的软件呢?——答案是VSCode.诞生于2015年的VSCode编辑器,现在可以说是目前最强的编辑器之一,在微软的背书下,比各位历史悠久的老大哥成长快得多,不到5年的时间里便坐到了市场占有率第</div> </li> <li><a href="/article/1883995143971860480.htm" title="vue3+elementplus实现下拉全选+多选功能" target="_blank">vue3+elementplus实现下拉全选+多选功能</a> <span class="text-muted">前端小云儿</span> <a class="tag" taget="_blank" href="/search/vue3%E7%9F%A5%E8%AF%86%E7%82%B9/1.htm">vue3知识点</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div> 下拉多选,展示全部选择      全选       点此会渗透到点击select <</div> </li> <li><a href="/article/1883994639422255104.htm" title="初识C语言(三)" target="_blank">初识C语言(三)</a> <span class="text-muted">九离十</span> <a class="tag" taget="_blank" href="/search/C%E8%AF%AD%E8%A8%80/1.htm">C语言</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</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)数组的下标和使用十、操作符(1)算数操作符(2)移位操作符(3)位操作符(4)赋值操作符(5)单目操作符(6)关系操作符(7)逻辑操作符(8)条件操作符(9)逗号表达式(10)下标引用、函数调用和结构成员十一、常见关键字总结前言我们在上个文章学习了,常量变量的作用域,生命周期以及等等,我们了解</div> </li> <li><a href="/article/1883994135342411776.htm" title="C#操作GIF图片(下)将一帧一帧的图片合并成gif" target="_blank">C#操作GIF图片(下)将一帧一帧的图片合并成gif</a> <span class="text-muted">我曾经是个程序员</span> <a class="tag" taget="_blank" href="/search/%E5%B8%B8%E7%94%A8%E4%BB%A3%E7%A0%81%E7%89%87%E6%AE%B5/1.htm">常用代码片段</a><a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>见过不少人、经过不少事、也吃过不少苦,感悟世事无常、人心多变,靠着回忆将往事串珠成链,聊聊感情、谈谈发展,我慢慢写、你一点一点看......stringnewPath=Application.StartupPath+"\\new.gif";Listimgs=Directory.GetFiles(Application.StartupPath+"\\images\\","*.jpg").ToList</div> </li> <li><a href="/article/1883994008443744256.htm" title="基于YOLOv8+PyQt5的密集人群计数检测系统" target="_blank">基于YOLOv8+PyQt5的密集人群计数检测系统</a> <span class="text-muted">人工智能教学实践</span> <a class="tag" taget="_blank" href="/search/YOLO/1.htm">YOLO</a><a class="tag" taget="_blank" href="/search/qt/1.htm">qt</a><a class="tag" taget="_blank" href="/search/%E7%9B%AE%E6%A0%87%E6%A3%80%E6%B5%8B/1.htm">目标检测</a> <div>基于YOLOv8+PyQt5的密集人群计数检测系统是一个结合了目标检测算法与图形用户界面的项目,以下是相关介绍:【毕业设计参考】基于yolov8+pyqt5的密集人群计数检测系统.zip资源-CSDN文库系统概述该系统旨在实时分析某一区域内的人群数量与分布情况,将YOLOv8算法的高效目标检测能力与PyQt5框架的简洁直观界面相结合,能够实时捕获视频流,通过YOLOv8进行人群检测,并在用户界面中</div> </li> <li><a href="/article/1883994009014169600.htm" title="dp题目总结(1)——基础" target="_blank">dp题目总结(1)——基础</a> <span class="text-muted">_So_Far_Away</span> <a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92/1.htm">动态规划</a> <div>例题1数字三角形题目描述观察下面的数字金字塔。写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以走到左下方的点也可以到达右下方的点。738810274445265在上面的样例中,从7到3到8到7到5的路径产生了最大输入格式第一个行包含R(1usingnamespacestd;inta[1010][1010],ans=0;intn;//输入数塔层数nvoiddfs(i</div> </li> <li><a href="/article/1883991867322855424.htm" title="【mysql基础语法】" target="_blank">【mysql基础语法】</a> <span class="text-muted">baboozx</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a> <div>sql基础语法一基本语法查询:select字段from表名where条件插入:insertinto表名(column_name)values(values)删除:deletefrom表名where条件更新:update表名set(column_name=value),where条件应用于某列的聚合函数。聚合函数对数据进行数学运算,如计算平均值(AVG)、总和(SUM)、最大值(MAX)、最小值(M</div> </li> <li><a href="/article/1883991489340567552.htm" title="python 基本知识" target="_blank">python 基本知识</a> <span class="text-muted">达达玲玲</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>Python:背景知识及环境安装什么是Python?Python是一种解释型、面向对象的高级编程语言。它的设计哲学强调代码的可读性和简洁性,因此被广泛应用于各种领域,包括:数据科学与机器学习:NumPy,Pandas,Matplotlib,Scikit-learn等库让Python成为了数据分析和机器学习的首选语言。Web开发:Django,Flask等框架提供了高效的Web开发解决方案。自动化:</div> </li> <li><a href="/article/1883991488212299776.htm" title="搭建Hadoop与Hive环境" target="_blank">搭建Hadoop与Hive环境</a> <span class="text-muted">达达玲玲</span> <a class="tag" taget="_blank" href="/search/hadoop/1.htm">hadoop</a><a class="tag" taget="_blank" href="/search/hive/1.htm">hive</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a> <div>当搭建Hadoop与Hive环境时,以下是每个步骤的详细操作说明:1.安装并配置CentOS7操作系统:-下载CentOS7ISO镜像文件,并通过虚拟机或物理机安装CentOS7操作系统。-在安装过程中,为系统分配必要的网络、用户和权限。2.安装Java开发环境:-下载适合您的系统的JavaJDK版本。-使用命令或GUI工具安装JavaJDK。-配置JAVA_HOME环境变量:-打开终端,输入以下</div> </li> <li><a href="/article/110.htm" title="强大的销售团队背后 竟然是大数据分析的身影" target="_blank">强大的销售团队背后 竟然是大数据分析的身影</a> <span class="text-muted">蓝儿唯美</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/1.htm">数据分析</a> <div>Mark Roberge是HubSpot的首席财务官,在招聘销售职位时使用了大量数据分析。但是科技并没有挤走直觉。 大家都知道数理学家实际上已经渗透到了各行各业。这些热衷数据的人们通过处理数据理解商业流程的各个方面,以重组弱点,增强优势。 Mark Roberge是美国HubSpot公司的首席财务官,HubSpot公司在构架集客营销现象方面出过一份力——因此他也是一位数理学家。他使用数据分析 </div> </li> <li><a href="/article/237.htm" title="Haproxy+Keepalived高可用双机单活" target="_blank">Haproxy+Keepalived高可用双机单活</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1/1.htm">负载均衡</a><a class="tag" taget="_blank" href="/search/keepalived/1.htm">keepalived</a><a class="tag" taget="_blank" href="/search/haproxy/1.htm">haproxy</a><a class="tag" taget="_blank" href="/search/%E9%AB%98%E5%8F%AF%E7%94%A8/1.htm">高可用</a> <div>我们的应用MyApp不支持集群,但要求双机单活(两台机器:master和slave): 1.正常情况下,只有master启动MyApp并提供服务 2.当master发生故障时,slave自动启动本机的MyApp,同时虚拟IP漂移至slave,保持对外提供服务的IP和端口不变 F5据说也能满足上面的需求,但F5的通常用法都是双机双活,单活的话还没研究过 服务器资源 10.7</div> </li> <li><a href="/article/364.htm" title="eclipse编辑器中文乱码问题解决" target="_blank">eclipse编辑器中文乱码问题解决</a> <span class="text-muted">0624chenhong</span> <a class="tag" taget="_blank" href="/search/eclipse%E4%B9%B1%E7%A0%81/1.htm">eclipse乱码</a> <div>使用Eclipse编辑文件经常出现中文乱码或者文件中有中文不能保存的问题,Eclipse提供了灵活的设置文件编码格式的选项,我们可以通过设置编码 格式解决乱码问题。在Eclipse可以从几个层面设置编码格式:Workspace、Project、Content Type、File 本文以Eclipse 3.3(英文)为例加以说明: 1. 设置Workspace的编码格式: Windows-&g</div> </li> <li><a href="/article/491.htm" title="基础篇--resources资源" target="_blank">基础篇--resources资源</a> <span class="text-muted">不懂事的小屁孩</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>最近一直在做java开发,偶尔敲点android代码,突然发现有些基础给忘记了,今天用半天时间温顾一下resources的资源。 String.xml    字符串资源   涉及国际化问题  http://www.2cto.com/kf/201302/190394.html   string-array</div> </li> <li><a href="/article/618.htm" title="接上篇补上window平台自动上传证书文件的批处理问卷" target="_blank">接上篇补上window平台自动上传证书文件的批处理问卷</a> <span class="text-muted">酷的飞上天空</span> <a class="tag" taget="_blank" href="/search/window/1.htm">window</a> <div> @echo off : host=服务器证书域名或ip,需要和部署时服务器的域名或ip一致 ou=公司名称, o=公司名称 set host=localhost set ou=localhost set o=localhost set password=123456 set validity=3650 set salias=s</div> </li> <li><a href="/article/745.htm" title="企业物联网大潮涌动:如何做好准备?" target="_blank">企业物联网大潮涌动:如何做好准备?</a> <span class="text-muted">蓝儿唯美</span> <a class="tag" taget="_blank" href="/search/%E4%BC%81%E4%B8%9A/1.htm">企业</a> <div>物联网的可能性也许是无限的。要找出架构师可以做好准备的领域然后利用日益连接的世界。 尽管物联网(IoT)还很新,企业架构师现在也应该为一个连接更加紧密的未来做好计划,而不是跟上闸门被打开后的集成挑战。“问题不在于物联网正在进入哪些领域,而是哪些地方物联网没有在企业推进,” Gartner研究总监Mike Walker说。 Gartner预测到2020年物联网设备安装量将达260亿,这些设备在全</div> </li> <li><a href="/article/872.htm" title="spring学习——数据库(mybatis持久化框架配置)" target="_blank">spring学习——数据库(mybatis持久化框架配置)</a> <span class="text-muted">a-john</span> <a class="tag" taget="_blank" href="/search/mybatis/1.htm">mybatis</a> <div>Spring提供了一组数据访问框架,集成了多种数据访问技术。无论是JDBC,iBATIS(mybatis)还是Hibernate,Spring都能够帮助消除持久化代码中单调枯燥的数据访问逻辑。可以依赖Spring来处理底层的数据访问。 mybatis是一种Spring持久化框架,要使用mybatis,就要做好相应的配置: 1,配置数据源。有很多数据源可以选择,如:DBCP,JDBC,aliba</div> </li> <li><a href="/article/999.htm" title="Java静态代理、动态代理实例" target="_blank">Java静态代理、动态代理实例</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/Java%E9%9D%99%E6%80%81%E4%BB%A3%E7%90%86/1.htm">Java静态代理</a> <div> 采用Java代理模式,代理类通过调用委托类对象的方法,来提供特定的服务。委托类需要实现一个业务接口,代理类返回委托类的实例接口对象。 按照代理类的创建时期,可以分为:静态代理和动态代理。 所谓静态代理: 指程序员创建好代理类,编译时直接生成代理类的字节码文件。 所谓动态代理: 在程序运行时,通过反射机制动态生成代理类。   一、静态代理类实例: 1、Serivce.ja</div> </li> <li><a href="/article/1126.htm" title="Struts1与Struts2的12点区别" target="_blank">Struts1与Struts2的12点区别</a> <span class="text-muted">asia007</span> <a class="tag" taget="_blank" href="/search/Struts1%E4%B8%8EStruts2/1.htm">Struts1与Struts2</a> <div>1) 在Action实现类方面的对比:Struts 1要求Action类继承一个抽象基类;Struts 1的一个具体问题是使用抽象类编程而不是接口。Struts 2 Action类可以实现一个Action接口,也可以实现其他接口,使可选和定制的服务成为可能。Struts 2提供一个ActionSupport基类去实现常用的接口。即使Action接口不是必须实现的,只有一个包含execute方法的P</div> </li> <li><a href="/article/1253.htm" title="初学者要多看看帮助文档 不要用js来写Jquery的代码" target="_blank">初学者要多看看帮助文档 不要用js来写Jquery的代码</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/js/1.htm">js</a> <div>解析json数据的时候需要将解析的数据写到文本框中,  出现了用js来写Jquery代码的问题;   1, JQuery的赋值  有问题    代码如下: data.username 表示的是:  网易            $("#use</div> </li> <li><a href="/article/1380.htm" title="经理怎么和员工搞好关系和信任" target="_blank">经理怎么和员工搞好关系和信任</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/%E5%9B%A2%E9%98%9F/1.htm">团队</a><a class="tag" taget="_blank" href="/search/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/1.htm">项目管理</a><a class="tag" taget="_blank" href="/search/%E7%AE%A1%E7%90%86/1.htm">管理</a> <div>        产品经理应该有坚实的专业基础,这里的基础包括产品方向和产品策略的把握,包括设计,也包括对技术的理解和见识,对运营和市场的敏感,以及良好的沟通和协作能力。换言之,既然是产品经理,整个产品的方方面面都应该能摸得出门道。这也不懂那也不懂,如何让人信服?如何让自己懂?就是不断学习,不仅仅从书本中,更从平时和各种角色的沟通</div> </li> <li><a href="/article/1507.htm" title="如何为rich:tree不同类型节点设置右键菜单" target="_blank">如何为rich:tree不同类型节点设置右键菜单</a> <span class="text-muted">sunjing</span> <a class="tag" taget="_blank" href="/search/contextMenu/1.htm">contextMenu</a><a class="tag" taget="_blank" href="/search/tree/1.htm">tree</a><a class="tag" taget="_blank" href="/search/Richfaces/1.htm">Richfaces</a> <div>组合使用target和targetSelector就可以啦,如下: <rich:tree id="ruleTree" value="#{treeAction.ruleTree}" var="node" nodeType="#{node.type}" selectionChangeListener=&qu</div> </li> <li><a href="/article/1634.htm" title="【Redis二】Redis2.8.17搭建主从复制环境" target="_blank">【Redis二】Redis2.8.17搭建主从复制环境</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a> <div>开始使用Redis2.8.17 Redis第一篇在Redis2.4.5上搭建主从复制环境,对它的主从复制的工作机制,真正的惊呆了。不知道Redis2.8.17的主从复制机制是怎样的,Redis到了2.4.5这个版本,主从复制还做成那样,Impossible is nothing! 本篇把主从复制环境再搭一遍看看效果,这次在Unbuntu上用官方支持的版本。   Ubuntu上安装Red</div> </li> <li><a href="/article/1761.htm" title="JSONObject转换JSON--将Date转换为指定格式" target="_blank">JSONObject转换JSON--将Date转换为指定格式</a> <span class="text-muted">白糖_</span> <a class="tag" taget="_blank" href="/search/JSONObject/1.htm">JSONObject</a> <div>项目中,经常会用JSONObject插件将JavaBean或List<JavaBean>转换为JSON格式的字符串,而JavaBean的属性有时候会有java.util.Date这个类型的时间对象,这时JSONObject默认会将Date属性转换成这样的格式:   {"nanos":0,"time":-27076233600000,</div> </li> <li><a href="/article/1888.htm" title="JavaScript语言精粹读书笔记" target="_blank">JavaScript语言精粹读书笔记</a> <span class="text-muted">braveCS</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a> <div>【经典用法】:   //①定义新方法 Function .prototype.method=function(name, func){ this.prototype[name]=func; return this; } //②给Object增加一个create方法,这个方法创建一个使用原对</div> </li> <li><a href="/article/2015.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.LinkedList; public class FindInteger { /** * 编程之美 找符合条件的整数 用字符串来表示大整数避免溢出 * 题目:任意给定一个正整数N,求一个最小的正整数M(M>1),使得N*M的十进制表示形式里只含有1和0 * * 假设当前正在搜索由0,1组成的K位十进制数</div> </li> <li><a href="/article/2142.htm" title="读书笔记" target="_blank">读书笔记</a> <span class="text-muted">chengxuyuancsdn</span> <a class="tag" taget="_blank" href="/search/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/1.htm">读书笔记</a> <div>1、Struts访问资源 2、把静态参数传递给一个动作 3、<result>type属性 4、s:iterator、s:if c:forEach 5、StringBuilder和StringBuffer 6、spring配置拦截器 1、访问资源 (1)通过ServletActionContext对象和实现ServletContextAware,ServletReque</div> </li> <li><a href="/article/2269.htm" title="[通讯与电力]光网城市建设的一些问题" target="_blank">[通讯与电力]光网城市建设的一些问题</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E9%97%AE%E9%A2%98/1.htm">问题</a> <div>       信号防护的问题,前面已经说过了,这里要说光网交换机与市电保障的关系       我们过去用的ADSL线路,因为是电话线,在小区和街道电力中断的情况下,只要在家里用笔记本电脑+蓄电池,连接ADSL,同样可以上网........     </div> </li> <li><a href="/article/2396.htm" title="oracle 空间RESUMABLE" target="_blank">oracle 空间RESUMABLE</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E7%A9%BA%E9%97%B4%E4%B8%8D%E8%B6%B3/1.htm">空间不足</a><a class="tag" taget="_blank" href="/search/RESUMABLE/1.htm">RESUMABLE</a><a class="tag" taget="_blank" href="/search/%E9%94%99%E8%AF%AF%E6%8C%82%E8%B5%B7/1.htm">错误挂起</a> <div>空间RESUMABLE操作  转 Oracle从9i开始引入这个功能,当出现空间不足等相关的错误时,Oracle可以不是马上返回错误信息,并回滚当前的操作,而是将操作挂起,直到挂起时间超过RESUMABLE TIMEOUT,或者空间不足的错误被解决。 这一篇简单介绍空间RESUMABLE的例子。 第一次碰到这个特性是在一次安装9i数据库的过程中,在利用D</div> </li> <li><a href="/article/2523.htm" title="重构第一次写的线程池" target="_blank">重构第一次写的线程池</a> <span class="text-muted">dieslrae</span> <a class="tag" taget="_blank" href="/search/%E7%BA%BF%E7%A8%8B%E6%B1%A0+python/1.htm">线程池 python</a> <div>最近没有什么学习欲望,修改之前的线程池的计划一直搁置,这几天比较闲,还是做了一次重构,由之前的2个类拆分为现在的4个类. 1、首先是工作线程类:TaskThread,此类为一个工作线程,用于完成一个工作任务,提供等待(wait),继续(proceed),绑定任务(bindTask)等方法 #!/usr/bin/env python # -*- coding:utf8 -*- </div> </li> <li><a href="/article/2650.htm" title="C语言学习六指针" target="_blank">C语言学习六指针</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/c/1.htm">c</a> <div>初识指针,简单示例程序: /* 指针就是地址,地址就是指针 地址就是内存单元的编号 指针变量是存放地址的变量 指针和指针变量是两个不同的概念 但是要注意: 通常我们叙述时会把指针变量简称为指针,实际它们含义并不一样 */ # include <stdio.h> int main(void) { int * p; // p是变量的名字, int * </div> </li> <li><a href="/article/2777.htm" title="yii2 beforeSave afterSave beforeDelete" target="_blank">yii2 beforeSave afterSave beforeDelete</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/delete/1.htm">delete</a> <div>public function afterSave($insert, $changedAttributes) { parent::afterSave($insert, $changedAttributes); if($insert) { //这里是新增数据 } else { //这里是更新数据 } }  </div> </li> <li><a href="/article/2904.htm" title="timertask" target="_blank">timertask</a> <span class="text-muted">shuizhaosi888</span> <a class="tag" taget="_blank" href="/search/timertask/1.htm">timertask</a> <div>java.util.Timer timer = new java.util.Timer(true); // true 说明这个timer以daemon方式运行(优先级低, // 程序结束timer也自动结束),注意,javax.swing // 包中也有一个Timer类,如果import中用到swing包, // 要注意名字的冲突。 TimerTask task = new</div> </li> <li><a href="/article/3031.htm" title="Spring Security(13)——session管理" target="_blank">Spring Security(13)——session管理</a> <span class="text-muted">234390216</span> <a class="tag" taget="_blank" href="/search/session/1.htm">session</a><a class="tag" taget="_blank" href="/search/Spring+Security/1.htm">Spring Security</a><a class="tag" taget="_blank" href="/search/%E6%94%BB%E5%87%BB%E4%BF%9D%E6%8A%A4/1.htm">攻击保护</a><a class="tag" taget="_blank" href="/search/%E8%B6%85%E6%97%B6/1.htm">超时</a> <div>session管理 目录   1.1     检测session超时 1.2     concurrency-control 1.3     session 固定攻击保护         </div> </li> <li><a href="/article/3158.htm" title="公司项目NODEJS实践0.3[ mongo / session ...]" target="_blank">公司项目NODEJS实践0.3[ mongo / session ...]</a> <span class="text-muted">逐行分析JS源代码</span> <a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a><a class="tag" taget="_blank" href="/search/session/1.htm">session</a><a class="tag" taget="_blank" href="/search/nodejs/1.htm">nodejs</a> <div>    http://www.upopen.cn   一、前言         书接上回,我们搭建了WEB服务端路由、模板等功能,完成了register 通过ajax与后端的通信,今天主要完成数据与mongodb的存取,实现注册 / 登录 /</div> </li> <li><a href="/article/3285.htm" title="pojo.vo.po.domain区别" target="_blank">pojo.vo.po.domain区别</a> <span class="text-muted">LiaoJuncai</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/VO/1.htm">VO</a><a class="tag" taget="_blank" href="/search/POJO/1.htm">POJO</a><a class="tag" taget="_blank" href="/search/javabean/1.htm">javabean</a><a class="tag" taget="_blank" href="/search/domain/1.htm">domain</a> <div>  POJO = "Plain Old Java Object",是MartinFowler等发明的一个术语,用来表示普通的Java对象,不是JavaBean, EntityBean 或者 SessionBean。POJO不但当任何特殊的角色,也不实现任何特殊的Java框架的接口如,EJB, JDBC等等。      即POJO是一个简单的普通的Java对象,它包含业务逻辑</div> </li> <li><a href="/article/3412.htm" title="Windows Error Code" target="_blank">Windows Error Code</a> <span class="text-muted">OhMyCC</span> <a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a> <div>0 操作成功完成. 1 功能错误. 2 系统找不到指定的文件. 3 系统找不到指定的路径. 4 系统无法打开文件. 5 拒绝访问. 6 句柄无效. 7 存储控制块被损坏. 8 存储空间不足, 无法处理此命令. 9 存储控制块地址无效. 10 环境错误. 11 试图加载格式错误的程序. 12 访问码无效. 13 数据无效. 14 存储器不足, 无法完成此操作. 15 系</div> </li> <li><a href="/article/3539.htm" title="在storm集群环境下发布Topology" target="_blank">在storm集群环境下发布Topology</a> <span class="text-muted">roadrunners</span> <a class="tag" taget="_blank" href="/search/%E9%9B%86%E7%BE%A4/1.htm">集群</a><a class="tag" taget="_blank" href="/search/storm/1.htm">storm</a><a class="tag" taget="_blank" href="/search/topology/1.htm">topology</a><a class="tag" taget="_blank" href="/search/spout/1.htm">spout</a><a class="tag" taget="_blank" href="/search/bolt/1.htm">bolt</a> <div>storm的topology设计和开发就略过了。本章主要来说说如何在storm的集群环境中,通过storm的管理命令来发布和管理集群中的topology。   1、打包 打包插件是使用maven提供的maven-shade-plugin,详细见maven-shade-plugin。 <plugin> <groupId>org.apache.maven.</div> </li> <li><a href="/article/3666.htm" title="为什么不允许代码里出现“魔数”" target="_blank">为什么不允许代码里出现“魔数”</a> <span class="text-muted">tomcat_oracle</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>  在一个新项目中,我最先做的事情之一,就是建立使用诸如Checkstyle和Findbugs之类工具的准则。目的是制定一些代码规范,以及避免通过静态代码分析就能够检测到的bug。   迟早会有人给出案例说这样太离谱了。其中的一个案例是Checkstyle的魔数检查。它会对任何没有定义常量就使用的数字字面量给出警告,除了-1、0、1和2。   很多开发者在这个检查方面都有问题,这可以从结果</div> </li> <li><a href="/article/3793.htm" title="zoj 3511 Cake Robbery(线段树)" target="_blank">zoj 3511 Cake Robbery(线段树)</a> <span class="text-muted">阿尔萨斯</span> <a class="tag" taget="_blank" href="/search/%E7%BA%BF%E6%AE%B5%E6%A0%91/1.htm">线段树</a> <div> 题目链接:zoj 3511 Cake Robbery 题目大意:就是有一个N边形的蛋糕,切M刀,从中挑选一块边数最多的,保证没有两条边重叠。 解题思路:有多少个顶点即为有多少条边,所以直接按照切刀切掉点的个数排序,然后用线段树维护剩下的还有哪些点。 #include <cstdio> #include <cstring> #include <vector&</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>