retrofit 源码三

前言

上一节讲完后还有一个callAdapterFactory没有细讲.我们先看下这个代码

    val retrofit = Retrofit.Builder()
            .baseUrl("http://localhost/")
            .client(okHttpClient)
            .addConverterFactory(GsonConverterFactory.create())
            .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
            .build()

interface MainNetwork {
    @GET("next_title.json")
    fun fetchNextTitle(): Observable
}
</code></pre> 
 <p>这里我们就用RxJava2CallAdapterFactory来作讲解。</p> 
 <h4>RxJava2CallAdapterFactory</h4> 
 <p>还记得之前的代码么</p> 
 <pre><code>loadServiceMethod(method).invoke(args);
</code></pre> 
 <p>这个invoke最终走的是</p> 
 <pre><code>callAdapter.adapt(call);
</code></pre> 
 <p>这里我们用RxJava2CallAdapter来做分析。</p> 
 <pre><code>final class RxJava2CallAdapter<R> implements CallAdapter<R, Object>{
  @Override
  public Object adapt(Call<R> call) {
    Observable<Response<R>> responseObservable =
        isAsync ? new CallEnqueueObservable<>(call) : new CallExecuteObservable<>(call);

    Observable<?> observable;
    if (isResult) {
      observable = new ResultObservable<>(responseObservable);
    } else if (isBody) {
      observable = new BodyObservable<>(responseObservable);
    } else {
      observable = responseObservable;
    }

    if (scheduler != null) {
      observable = observable.subscribeOn(scheduler);
    }

    if (isFlowable) {
      return observable.toFlowable(BackpressureStrategy.LATEST);
    }
    if (isSingle) {
      return observable.singleOrError();
    }
    if (isMaybe) {
      return observable.singleElement();
    }
    if (isCompletable) {
      return observable.ignoreElements();
    }
    return RxJavaPlugins.onAssembly(observable);//其实就是返回observable
  }
}
</code></pre> 
 <p>从这里可以看出,adapt()方法主要是将返回结果转变为observable,callAdapterFactory就是通过calladapter将原始Call进行封装,找到对应的执行器。如这里就是将Call转为Observable。</p> 
</article>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1711065667626676224"></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">你可能感兴趣的:(retrofit 源码三)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1939632831084949504.htm"
                           title="【Go语言成长之路】 模糊测试" target="_blank">【Go语言成长之路】 模糊测试</a>
                        <span class="text-muted">风华同学</span>
<a class="tag" taget="_blank" href="/search/Go%E8%AF%AD%E8%A8%80%E6%88%90%E9%95%BF%E4%B9%8B%E8%B7%AF/1.htm">Go语言成长之路</a><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><a class="tag" taget="_blank" href="/search/%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/1.htm">单元测试</a>
                        <div>文章目录模糊测试一、前提二、创建项目三、添加待测试代码四、添加单元测试五、添加模糊测试模糊测试本教程介绍了Go中模糊测试的基础知识。通过模糊测试,随机数据会针对您的测试运行,以尝试找到漏洞或导致崩溃的输入。可以通过模糊测试发现的漏洞示例包括SQL注入、缓冲区溢出、拒绝服务和跨站点脚本攻击。注:Go语言中模糊测试已经内置,具体可以参考:GoFuzzingdocs,将来还会添加更多功能。一、前提Go1</div>
                    </li>
                    <li><a href="/article/1939631566665871360.htm"
                           title="Nginx安装指南" target="_blank">Nginx安装指南</a>
                        <span class="text-muted">houzhihui</span>
<a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/Service/1.htm">Service</a><a class="tag" taget="_blank" href="/search/Linux%E5%AD%A6%E4%B9%A0/1.htm">Linux学习</a><a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a>
                        <div>Nginx安装指南1.版本选择2.RHEL/CentOS基于官方yum源安装3.Ubuntu基于官方apt安装4.编译安装4.1集成三方模块编译安装nginx4.2nginxopenssl模块升级4.3隐藏Nginx版本号5.官方参考文献1.版本选择Nginx的安装版本分为Mainlineversion(主要开发版本,其实就是还处于开发版)、Stableversion(当前最新稳定版)和Legac</div>
                    </li>
                    <li><a href="/article/1939628667873325056.htm"
                           title="《凤凰架构》C7-分布式服务" target="_blank">《凤凰架构》C7-分布式服务</a>
                        <span class="text-muted">Epi_HHH</span>
<a class="tag" taget="_blank" href="/search/%E9%98%85%E8%AF%BB%E7%AC%94%E8%AE%B0/1.htm">阅读笔记</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>目录一、服务发现二、网关路由三、负载均衡一、服务发现服务发现就是动态定位服务实例地址,解决分布式环境下服务实例IP和端口可能变化的问题1)基础概念远程服务调用精确坐标:全限定名+端口号+服务标识,如:order-service.default.svc.cluster.local:50051/com.example.order.OrderService/getOrderById服务标识:与具体的应用</div>
                    </li>
                    <li><a href="/article/1939624004788744192.htm"
                           title="Node.js 中的 JWT 认证:从生成到验证的完整指南" target="_blank">Node.js 中的 JWT 认证:从生成到验证的完整指南</a>
                        <span class="text-muted">盛夏绽放</span>
<a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a><a class="tag" taget="_blank" href="/search/%E6%9C%89%E9%97%AE%E5%BF%85%E7%AD%94/1.htm">有问必答</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a>
                        <div>文章目录Node.js中的JWT认证:从生成到验证的完整指南一、JWT是什么?为什么需要它?传统session与JWT对比二、JWT的结构解析三、Node.js中实现JWT1.安装jsonwebtoken包2.生成JWT3.验证JWT4.错误处理大全四、高级应用场景1.刷新令牌机制2.在不同路由中的验证中间件五、安全最佳实践六、常见问题解答七、完整示例代码结语主要内容包括:使用jsonwebtok</div>
                    </li>
                    <li><a href="/article/1939622995815362560.htm"
                           title="TensorFlow运行时核心:DirectSession::Run全解析" target="_blank">TensorFlow运行时核心:DirectSession::Run全解析</a>
                        <span class="text-muted">Jay Kay</span>
<a class="tag" taget="_blank" href="/search/tfserving/1.htm">tfserving</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/tensorflow/1.htm">tensorflow</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a>
                        <div>TensorFlow运行时核心:DirectSession::Run全解析TensorFlow的本地执行模式通过DirectSession::Run实现高效计算图处理,其核心流程分为三个阶段:图剪枝生成ClientGraph、设备间图分裂、跨设备并发执行。下面结合源码层设计深入剖析各环节实现原理。一、图剪枝:从FullGraph到ClientGraph目标:根据Session::Run指定的输入(</div>
                    </li>
                    <li><a href="/article/1939622490997321728.htm"
                           title="ROS的可视化工具rviz介绍" target="_blank">ROS的可视化工具rviz介绍</a>
                        <span class="text-muted">Xian-HHappy</span>
<a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E4%BA%BA-Robot/1.htm">机器人-Robot</a><a class="tag" taget="_blank" href="/search/%E4%BF%A1%E6%81%AF%E5%8F%AF%E8%A7%86%E5%8C%96/1.htm">信息可视化</a>
                        <div>RViz简介RViz(RobotVisualization)是ROS(RobotOperatingSystem)中的一个可视化工具。它主要用于在三维空间中可视化机器人传感器数据、机器人的状态、规划路径等信息。RViz就像是一个“机器人世界”的三维展示窗口,能够让用户直观地看到机器人在虚拟环境中的各种情况。RViz的功能特点多传感器数据可视化RViz可以接收多种传感器数据。例如,它可以显示激光雷达(</div>
                    </li>
                    <li><a href="/article/1939621483261259776.htm"
                           title="Java打造同城道路救援利器:车辆救援,全程无忧保障" target="_blank">Java打造同城道路救援利器:车辆救援,全程无忧保障</a>
                        <span class="text-muted">省钱兄科技</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>Java打造同城道路救援利器:车辆救援,全程无忧保障在城市化进程加速、车辆保有量激增的背景下,传统道路救援模式因响应慢、资源分散、信息孤岛等问题,已难以满足用户对“秒级响应”的期待。基于Java技术栈构建的同城道路救援系统,通过精准定位、智能调度、全流程数字化管理三大核心能力,重新定义了救援行业的技术标准,成为车辆救援领域的标杆解决方案。一、精准定位:误差<3米,救援“零偏差”1.多源数据融合定位</div>
                    </li>
                    <li><a href="/article/1939620347376627712.htm"
                           title="MySQL 锁机制全解析:从表锁到间隙锁,谁都能看懂的知识!" target="_blank">MySQL 锁机制全解析:从表锁到间隙锁,谁都能看懂的知识!</a>
                        <span class="text-muted">dr李四维</span>
<a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/%E9%94%81/1.htm">锁</a><a class="tag" taget="_blank" href="/search/%E6%AD%BB%E9%94%81/1.htm">死锁</a><a class="tag" taget="_blank" href="/search/%E4%B9%90%E8%A7%82%E9%94%81/1.htm">乐观锁</a><a class="tag" taget="_blank" href="/search/%E6%82%B2%E8%A7%82%E9%94%81/1.htm">悲观锁</a><a class="tag" taget="_blank" href="/search/%E6%84%8F%E5%90%91%E9%94%81/1.htm">意向锁</a>
                        <div>目录一、锁的基本概念二、MySQL中的锁类型1.表级锁(TableLock)2.行级锁(RowLock)3.间隙锁(GapLock)4.意向锁(IntentLock)5.乐观锁(OptimisticLock)6.悲观锁(PessimisticLock)7.死锁(Deadlock)8.自增锁(Auto-IncrementLock)9.元数据锁(MetadataLock,MDL)三、锁的对比与选择四、</div>
                    </li>
                    <li><a href="/article/1939615301528252416.htm"
                           title="Elasticsearch(ES)聚合" target="_blank">Elasticsearch(ES)聚合</a>
                        <span class="text-muted">思静鱼</span>
<a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/elasticsearch/1.htm">elasticsearch</a><a class="tag" taget="_blank" href="/search/elasticsearch/1.htm">elasticsearch</a><a class="tag" taget="_blank" href="/search/jenkins/1.htm">jenkins</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a>
                        <div>Elasticsearch(ES)的聚合(Aggregation)功能类似于SQL中的GROUPBY+聚合函数(如COUNT、AVG、SUM),是进行统计分析的核心机制。聚合(Aggregation)概述Elasticsearch的聚合分为三大类:类别说明Metric聚合计算数值(如:count、avg、sum、max、min)Bucket聚合类似于SQL的GROUPBY,把文档分类Pipelin</div>
                    </li>
                    <li><a href="/article/1939611016308518912.htm"
                           title="VMware的Centos8配置静态地址且可以ping通百度" target="_blank">VMware的Centos8配置静态地址且可以ping通百度</a>
                        <span class="text-muted">牛奶咖啡13</span>
<a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4%2F%E6%B5%8B%E8%AF%95/1.htm">运维/测试</a><a class="tag" taget="_blank" href="/search/Centos8/1.htm">Centos8</a><a class="tag" taget="_blank" href="/search/%E6%89%8B%E5%8A%A8%E9%85%8D%E7%BD%AE%E9%9D%99%E6%80%81IP/1.htm">手动配置静态IP</a><a class="tag" taget="_blank" href="/search/%E9%85%8D%E7%BD%AECentos8%E5%8F%AF%E4%BB%A5%E4%B8%8A%E5%A4%96%E7%BD%91/1.htm">配置Centos8可以上外网</a>
                        <div>一、需求说明在日常的开发和维护工作中,需要对安装好的Centos8系统配置静态IP地址和网络,方便后续的业务开展。二、思路分析①查看VMware中Centos8的网络设置;②查看Centos8的网卡信息③配置指定网卡的静态地址信息④重启网络⑤测试三、配置步骤3.1、查看VMware中Centos8的网络设置①选中Centos8,点击鼠标右键选择【设置】--->【网络适配器】选择【VMnet8(NA</div>
                    </li>
                    <li><a href="/article/1939610512585191424.htm"
                           title="Tomcat性能调优指南" target="_blank">Tomcat性能调优指南</a>
                        <span class="text-muted"></span>

                        <div>文章目录一、Tomcat性能调优概述为什么需要调优Tomcat?二、Tomcat架构与性能关键点三、JVM调优1.内存配置优化2.垃圾回收优化3.其他JVM优化参数四、连接器(Connector)调优1.NIOvsAPR/Native2.高级NIO配置五、线程池优化六、会话管理优化1.会话超时配置2.会话持久化选择七、静态资源处理优化1.启用Sendfile2.配置静态资源缓存八、其他优化措施1.</div>
                    </li>
                    <li><a href="/article/1939608496244846592.htm"
                           title="Spring注解驱动开发之BeanPostProcessor后置处理器" target="_blank">Spring注解驱动开发之BeanPostProcessor后置处理器</a>
                        <span class="text-muted">桐花思雨</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/%E5%BA%94%E7%94%A8/1.htm">应用</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a>
                        <div>目录1.前言2.`BeanPostProcessor`接口2.1.`BeanPostProcessor`的源码2.2.自定义`BeanPostProcessor`后置处理器2.2.1.实现`BeanPostProcessor`接口2.2.2.创建实体类2.2.3.创建配置类2.2.4.测试结果1.前言BeanPostProcessor后置处理器可用于bean初始化前后进行逻辑增强。Spring提供</div>
                    </li>
                    <li><a href="/article/1939607235332206592.htm"
                           title="equine在神经网络中建立量化不确定性" target="_blank">equine在神经网络中建立量化不确定性</a>
                        <span class="text-muted">struggle2025</span>
<a class="tag" taget="_blank" href="/search/%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C/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/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a>
                        <div>一、软件介绍文末提供程序和源码下载众所周知,用于监督标记问题的深度神经网络(DNN)可以在各种学习任务中产生准确的结果。但是,当准确性是唯一目标时,DNN经常会做出过于自信的预测,并且无论测试数据是否属于任何已知标签,它们也总是进行标签预测。EQUINEwascreatedtosimplifytwokindsofuncertaintyquantificationforsupervisedlabel</div>
                    </li>
                    <li><a href="/article/1939607109113016320.htm"
                           title="CARLsim开源程序 是一个高效、易用、GPU 加速的软件框架,用于模拟具有高度生物细节的大规模脉冲神经网络 (SNN) 模型。" target="_blank">CARLsim开源程序 是一个高效、易用、GPU 加速的软件框架,用于模拟具有高度生物细节的大规模脉冲神经网络 (SNN) 模型。</a>
                        <span class="text-muted">struggle2025</span>
<a class="tag" taget="_blank" href="/search/%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C/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/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a>
                        <div>一、软件介绍文末提供程序和源码下载CARLsim是一个高效、易用的GPU加速库,用于模拟具有高度生物学细节的大规模脉冲神经网络(SNN)模型。CARLsim允许在通用x86CPU和标准现成GPU上以逼真的突触动力学执行Izhikevich脉冲神经元网络。该模拟器在C/C++中提供了一个类似PyNN的编程接口,允许在突触、神经元和网络级别指定详细信息和参数。二、CARLsim6的新功能包括:CUDA</div>
                    </li>
                    <li><a href="/article/1939604841387061248.htm"
                           title="质量管理重要理论知识和质量管理工具" target="_blank">质量管理重要理论知识和质量管理工具</a>
                        <span class="text-muted"></span>

                        <div>一、质量管理核心理论1.戴明循环(PDCA)理论:通过“计划(Plan)→执行(Do)→检查(Check)→改进(Act)”实现持续改进。例子:问题:某电子厂PCBA焊接不良率高达5%。Plan:分析发现回流焊温度曲线不稳定;Do:调整炉温参数,设定梯度升温;Check:一周后不良率降至1.2%;Act:将新参数写入标准作业指导书(SOP)。2.朱兰三部曲理论:质量策划→质量控制→质量改进。例子:</div>
                    </li>
                    <li><a href="/article/1939602446569500672.htm"
                           title="透视广告流量交易“黑箱”:MergeX是如何实现广告交易链路透明化的?" target="_blank">透视广告流量交易“黑箱”:MergeX是如何实现广告交易链路透明化的?</a>
                        <span class="text-muted"></span>

                        <div>在数字营销领域,广告流量交易的不透明性一直是行业内外普遍关注的问题。这种不透明性不仅影响了广告主的投放效果,也阻碍了开发者流量变现的潜力。广告流量交易中的“三不”陷阱?一、链路不透明在传统的广告交易链路中,多层中间商如同一道道关卡,截留了本应属于开发者的收益。这种复杂的层级结构使得真实流量价值的溯源变得困难重重,广告主难以准确判断自己的投入是否真正转化为了有效的曝光和点击。二、规则不清晰竞价机制作</div>
                    </li>
                    <li><a href="/article/1939601690621702144.htm"
                           title="UBOOT学习笔记(六):UBOOT启动--CPU架构及板级初始化阶段" target="_blank">UBOOT学习笔记(六):UBOOT启动--CPU架构及板级初始化阶段</a>
                        <span class="text-muted">ZH_2025</span>
<a class="tag" taget="_blank" href="/search/uboot/1.htm">uboot</a><a class="tag" taget="_blank" href="/search/%26amp%3B/1.htm">&</a><a class="tag" taget="_blank" href="/search/linux%E5%90%AF%E5%8A%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/arm/1.htm">arm</a>
                        <div>3.1、_mainENTRY(_main)#ifdefined(CONFIG_TPL_BUILD)&&defined(CONFIG_TPL_NEEDS_SEPARATE_STACK)ldrr0,=(CONFIG_TPL_STACK)/*TPL(三级引导)使用独立栈*/#elifdefined(CONFIG_SPL_BUILD)&&defined(CONFIG_SPL_STACK)ldrr0,=(C</div>
                    </li>
                    <li><a href="/article/1939599801364574208.htm"
                           title="nnv开源神经网络验证软件工具" target="_blank">nnv开源神经网络验证软件工具</a>
                        <span class="text-muted"></span>

                        <div>一、软件介绍文末提供程序和源码下载用于神经网络验证的Matlab工具箱,该工具箱实现了可访问性方法,用于分析自主信息物理系统(CPS)领域中带有神经网络控制器的神经网络和控制系统。二、相关工具和软件该工具箱利用神经网络模型转换工具(nnmt)和闭环系统分析、混合系统模型转换和转换工具(HyST)以及CONTINUOUSReachabilityAnalyzer(CORA)三、无需安装即可执行NNV可</div>
                    </li>
                    <li><a href="/article/1939599423461978112.htm"
                           title="嵌入式通信协议框架的四层架构设计与实现" target="_blank">嵌入式通信协议框架的四层架构设计与实现</a>
                        <span class="text-muted">比特冬哥</span>
<a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F%E9%A2%86%E5%9F%9F%E5%BC%80%E5%8F%91/1.htm">嵌入式领域开发</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F/1.htm">嵌入式</a><a class="tag" taget="_blank" href="/search/%E9%80%9A%E4%BF%A1%E5%8D%8F%E8%AE%AE/1.htm">通信协议</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B1%82%E6%A1%86%E6%9E%B6/1.htm">分层框架</a>
                        <div>文章目录一、硬件抽象层:数据收发的基石1.1设计要点1.2代码示例二、协议管理层:智能路由中枢2.1设计要点2.2代码示例三、协议处理层:协议具体实现3.1设计要求3.2代码示例3.2.1协议公共定义3.2.2协议一设计3.2.3协议二设计四、应用层:业务逻辑实现4.1设计要点4.2代码示例4.2.1协议一处理4.2.2协议二处理五、四层协作流程5.1收发流程5.2代码示例总结在嵌入式系统开发中,</div>
                    </li>
                    <li><a href="/article/1939598418678706176.htm"
                           title="演练纪实丨 同创永益同天支持三家银行灾备切换演练圆满完成" target="_blank">演练纪实丨 同创永益同天支持三家银行灾备切换演练圆满完成</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E5%AD%97%E9%9F%A7%E6%80%A7%E5%89%8D%E7%AB%AF/1.htm">数字韧性前端</a>
                        <div>2025年6月22日,同创永益单日同时支持河南农商联合银行、苏州农商银行、昆山农商银行组织开展2025年灾备切换演练圆满完成。其中共涉及44套关键业务系统,700余个节点,成功率100%,且全部满足恢复指标要求。同创永益于同日成功支持三家银行完成灾备切换演练,充分彰显了企业卓越的交付能力与技术底蕴。此次演练中,最显著的突破在于支持某行银行灾备切换演练时,将灾备技术切换的时间从原本的5分钟压缩至1分</div>
                    </li>
                    <li><a href="/article/1939597533739282432.htm"
                           title="数据库设计三范式详解与注意事项" target="_blank">数据库设计三范式详解与注意事项</a>
                        <span class="text-muted">步行cgn</span>
<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/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a>
                        <div>数据库设计三范式详解与注意事项数据库设计三范式(NormalForms)是关系型数据库设计的核心理论,用于减少数据冗余、提高数据一致性和完整性。下面我将详细解释三范式的概念、应用场景和实际注意事项。一、三范式核心概念1.第一范式(1NF):原子性定义:每个列都是不可再分的原子值每行有唯一标识(主键)示例:--不符合1NFCREATETABLEorders(order_idINTPRIMARYKEY</div>
                    </li>
                    <li><a href="/article/1939587069315706880.htm"
                           title="【Univer Docs】VUE3中使用Univer Docs(原Luckysheet )创建在线编辑Excel" target="_blank">【Univer Docs】VUE3中使用Univer Docs(原Luckysheet )创建在线编辑Excel</a>
                        <span class="text-muted">VT.馒头</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E5%AD%A6%E4%B9%A0%E4%B9%8B%E6%97%85/1.htm">前端学习之旅</a><a class="tag" taget="_blank" href="/search/excel/1.htm">excel</a><a class="tag" taget="_blank" href="/search/vue/1.htm">vue</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a>
                        <div>VUE3中使用UniverDocs(原Luckysheet)创建在线编辑Excel文章目录VUE3中使用UniverDocs(原Luckysheet)创建在线编辑Excel一、UniverDocs简介二、安装Univer三、在页面中使用1、在页面中引入对应的文件2、创建一个Univer实例,并注册这些插件3、创建一个空白的UniverSheet4、加载数据与存储加载存储5、完整代码(可以直接复制为</div>
                    </li>
                    <li><a href="/article/1939586690804936704.htm"
                           title="linux学习第五周" target="_blank">linux学习第五周</a>
                        <span class="text-muted">运维小杨</span>
<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/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>目录1、总结rocky系统的启动流程,grub工作流程1.1系统启动整体流程(基于BIOS/UEFI)1.2硬件初始化阶段1.2.1BIOS(传统模式)1.2.2UEFI(新模式)1.3引导加载程序(GRUB2)阶段1.4内核加载与初始化阶段1.5用户空间初始化(systemd阶段)2、总结内核设计流派及特点。3、总结systemd服务配置文件4、总结DNS域名三级结构,DNS服务工作原理,涉及递</div>
                    </li>
                    <li><a href="/article/1939586311694381056.htm"
                           title="Python 数据分析:numpy.transpose() ,转换维度。听故事学知识点怎么这么容易?" target="_blank">Python 数据分析:numpy.transpose() ,转换维度。听故事学知识点怎么这么容易?</a>
                        <span class="text-muted">好开心啊没烦恼</span>
<a class="tag" taget="_blank" href="/search/numpy/1.htm">numpy</a><a class="tag" taget="_blank" href="/search/numpy/1.htm">numpy</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/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/1.htm">数据分析</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98/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/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a>
                        <div>目录1一维数组2二维数组3三维数组4欢迎纠错5免费爬虫------以下关于Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowch</div>
                    </li>
                    <li><a href="/article/1939583787885195264.htm"
                           title="深入理解AI技术与实践:如何贡献代码" target="_blank">深入理解AI技术与实践:如何贡献代码</a>
                        <span class="text-muted">Wurenyu957</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>在现代AI技术的开发过程中,贡献代码是推动项目发展、提升技术能力的重要方式。在这篇文章中,我们将结合AI技术实践,深入探讨如何有效地为开源项目贡献代码,尤其是那些使用AI模型的项目。技术背景介绍AI技术的迅猛发展得益于开源社区的共享和协作。诸如TensorFlow、PyTorch等开源框架,极大地降低了AI模型开发的门槛。与此同时,越来越多的项目通过GitHub等平台开放源码,接受来自全球开发者的</div>
                    </li>
                    <li><a href="/article/1939583279762042880.htm"
                           title="【C++指南】C++ list容器完全解读(三):list迭代器的实现与优化" target="_blank">【C++指南】C++ list容器完全解读(三):list迭代器的实现与优化</a>
                        <span class="text-muted">倔强的石头_</span>
<a class="tag" taget="_blank" href="/search/C%2B%2B%E6%8C%87%E5%8D%97/1.htm">C++指南</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/list/1.htm">list</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>.博客主页:倔强的石头的CSDN主页Gitee主页:倔强的石头的gitee主页⏩文章专栏:《C++指南》期待您的关注文章目录引言一、普通迭代器:链表的“导航指针”1.1迭代器的本质1.2迭代器与链表的关系二、const迭代器:数据保护的实现2.1为什么需要const迭代器?2.2独立const迭代器的实现三、模板复用:合并普通与const迭代器3.1STL的迭代器优化思想3.2统一迭代器模板实现3</div>
                    </li>
                    <li><a href="/article/1939582901205135360.htm"
                           title="C# VB.NET取字符串中全角字符数量和半角字符数量" target="_blank">C# VB.NET取字符串中全角字符数量和半角字符数量</a>
                        <span class="text-muted">专注VB编程开发20年</span>
<a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a><a class="tag" taget="_blank" href="/search/.net/1.htm">.net</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/VB.NET/1.htm">VB.NET</a><a class="tag" taget="_blank" href="/search/%E5%AD%97%E7%AC%A6%E4%B8%B2/1.htm">字符串</a>
                        <div>C#VB.NET中Tuple轻量级数据结构和固定长度数组-CSDN博客https://blog.csdn.net/xiaoyao961/article/details/148872196下面提供了三种统计字符串中全角和半角字符数量的方法,并进行了性能对比。性能对比(处理100万次"Hello,世界!123456")方法执行时间(毫秒)相对性能方法三:位运算~150100%方法二:字符遍历~2506</div>
                    </li>
                    <li><a href="/article/1939579877489438720.htm"
                           title="数据结构学习——树的储存结构" target="_blank">数据结构学习——树的储存结构</a>
                        <span class="text-muted">uwvwko</span>
<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/%E5%AD%A6%E4%B9%A0/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/%E6%A0%91/1.htm">树</a>
                        <div>三种表示法:双亲表示法,孩子表示法,孩子兄弟表示法双亲表示法//树结构——双亲表示法#includeusingnamespacestd;structTree{stringdata;Tree*parent;//双亲指针Tree*firstchild;//第一个孩子指针Tree*nextsibling;//下一个兄弟指针};voidCreateTree(Tree*&root,stringdata,Tr</div>
                    </li>
                    <li><a href="/article/1939578237524963328.htm"
                           title="基于django+Spark+大数据+爬虫技术的国漫推荐与可视化平台设计和实现(源码+论文+部署讲解等)" target="_blank">基于django+Spark+大数据+爬虫技术的国漫推荐与可视化平台设计和实现(源码+论文+部署讲解等)</a>
                        <span class="text-muted">阿勇学长</span>
<a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98%E6%A1%88%E4%BE%8B/1.htm">大数据项目实战案例</a><a class="tag" taget="_blank" href="/search/Java%E7%B2%BE%E5%93%81%E6%AF%95%E4%B8%9A%E8%AE%BE%E8%AE%A1%E5%AE%9E%E4%BE%8B/1.htm">Java精品毕业设计实例</a><a class="tag" taget="_blank" href="/search/Python%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96%E9%A1%B9%E7%9B%AE%E6%A1%88%E4%BE%8B/1.htm">Python数据可视化项目案例</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/django/1.htm">django</a><a class="tag" taget="_blank" href="/search/spark/1.htm">spark</a><a class="tag" taget="_blank" href="/search/%E5%9B%BD%E6%BC%AB%E6%8E%A8%E8%8D%90%E4%B8%8E%E5%8F%AF%E8%A7%86%E5%8C%96%E5%B9%B3%E5%8F%B0/1.htm">国漫推荐与可视化平台</a><a class="tag" taget="_blank" href="/search/%E6%AF%95%E4%B8%9A%E8%AE%BE%E8%AE%A1/1.htm">毕业设计</a><a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a>
                        <div>博主介绍:✌全网粉丝50W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等</div>
                    </li>
                    <li><a href="/article/1939575591393095680.htm"
                           title="领域驱动设计核心解析" target="_blank">领域驱动设计核心解析</a>
                        <span class="text-muted"></span>

                        <div>我是廖志伟,一名Java开发工程师、《Java项目实战——深入理解大型互联网企业通用技术》(基础篇)、(进阶篇)、(架构篇)清华大学出版社签约作家、Java领域优质创作者、CSDN博客专家、阿里云专家博主、51CTO专家博主、产品软文专业写手、技术文章评审老师、技术类问卷调查设计师、幕后大佬社区创始人、开源项目贡献者。拥有多年一线研发和团队管理经验,研究过主流框架的底层源码(Spring、Spri</div>
                    </li>
                                <li><a href="/article/26.htm"
                                       title="设计模式介绍" target="_blank">设计模式介绍</a>
                                    <span class="text-muted">tntxia</span>
<a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a>
                                    <div>设计模式来源于土木工程师 克里斯托弗 亚历山大(http://en.wikipedia.org/wiki/Christopher_Alexander)的早期作品。他经常发表一些作品,内容是总结他在解决设计问题方面的经验,以及这些知识与城市和建筑模式之间有何关联。有一天,亚历山大突然发现,重复使用这些模式可以让某些设计构造取得我们期望的最佳效果。 
 
亚历山大与萨拉-石川佳纯和穆雷 西乐弗斯坦合作</div>
                                </li>
                                <li><a href="/article/153.htm"
                                       title="android高级组件使用(一)" target="_blank">android高级组件使用(一)</a>
                                    <span class="text-muted">百合不是茶</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/RatingBar/1.htm">RatingBar</a><a class="tag" taget="_blank" href="/search/Spinner/1.htm">Spinner</a>
                                    <div>1、自动完成文本框(AutoCompleteTextView) 
 
 AutoCompleteTextView从EditText派生出来,实际上也是一个文本编辑框,但它比普通编辑框多一个功能:当用户输入一个字符后,自动完成文本框会显示一个下拉菜单,供用户从中选择,当用户选择某个菜单项之后,AutoCompleteTextView按用户选择自动填写该文本框。 
 使用AutoCompleteTex</div>
                                </li>
                                <li><a href="/article/280.htm"
                                       title="[网络与通讯]路由器市场大有潜力可挖掘" target="_blank">[网络与通讯]路由器市场大有潜力可挖掘</a>
                                    <span class="text-muted">comsci</span>
<a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a>
                                    <div>   
       如果国内的电子厂商和计算机设备厂商觉得手机市场已经有点饱和了,那么可以考虑一下交换机和路由器市场的进入问题..... 
 
       这方面的技术和知识,目前处在一个开放型的状态,有利于各类小型电子企业进入 
 
 &nbs</div>
                                </li>
                                <li><a href="/article/407.htm"
                                       title="自写简单Redis内存统计shell" target="_blank">自写简单Redis内存统计shell</a>
                                    <span class="text-muted">商人shang</span>
<a class="tag" taget="_blank" href="/search/Linux+shell/1.htm">Linux shell</a><a class="tag" taget="_blank" href="/search/%E7%BB%9F%E8%AE%A1Redis%E5%86%85%E5%AD%98/1.htm">统计Redis内存</a>
                                    <div>#!/bin/bash
address="192.168.150.128:6666,192.168.150.128:6666"  
hosts=(${address//,/ })  

sfile="staticts.log"

for hostitem in ${hosts[@]}  
do  
    ipport=(${hostitem</div>
                                </li>
                                <li><a href="/article/534.htm"
                                       title="单例模式(饿汉 vs懒汉)" target="_blank">单例模式(饿汉 vs懒汉)</a>
                                    <span class="text-muted">oloz</span>
<a class="tag" taget="_blank" href="/search/%E5%8D%95%E4%BE%8B%E6%A8%A1%E5%BC%8F/1.htm">单例模式</a>
                                    <div>package 单例模式;
/*
 * 应用场景:保证在整个应用之中某个对象的实例只有一个
 * 单例模式种的《 懒汉模式》  
 * */
public class Singleton {
	
	//01 将构造方法私有化,外界就无法用new Singleton()的方式获得实例
	private Singleton(){};
	
	//02 申明类得唯一实例
	priva</div>
                                </li>
                                <li><a href="/article/661.htm"
                                       title="springMvc json支持" target="_blank">springMvc json支持</a>
                                    <span class="text-muted">杨白白</span>
<a class="tag" taget="_blank" href="/search/json+springmvc/1.htm">json springmvc</a>
                                    <div>1.Spring mvc处理json需要使用jackson的类库,因此需要先引入jackson包 
 
 
2在spring mvc中解析输入为json格式的数据:使用@RequestBody来设置输入 
 

@RequestMapping("helloJson")
public @ResponseBody
    JsonTest helloJson() {
   </div>
                                </li>
                                <li><a href="/article/788.htm"
                                       title="android播放,掃描添加本地音頻文件" target="_blank">android播放,掃描添加本地音頻文件</a>
                                    <span class="text-muted">小桔子</span>

                                    <div>        最近幾乎沒有什麽事情,繼續鼓搗我的小東西。想在項目中加入一個簡易的音樂播放器功能,就像華為p6桌面上那麼大小的音樂播放器。用過天天動聽或者QQ音樂播放器的人都知道,可已通過本地掃描添加歌曲。不知道他們是怎麼實現的,我覺得應該掃描設備上的所有文件,過濾出音頻文件,每個文件實例化為一個實體,記錄文件名、路徑、歌手、類型、大小等信息。具體算法思想,</div>
                                </li>
                                <li><a href="/article/915.htm"
                                       title="oracle常用命令" target="_blank">oracle常用命令</a>
                                    <span class="text-muted">aichenglong</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/dba/1.htm">dba</a><a class="tag" taget="_blank" href="/search/%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4/1.htm">常用命令</a>
                                    <div>1 创建临时表空间 
create temporary tablespace user_temp  
tempfile 'D:\oracle\oradata\Oracle9i\user_temp.dbf' 
size 50m  
autoextend on  
next 50m maxsize 20480m  
extent management local</div>
                                </li>
                                <li><a href="/article/1042.htm"
                                       title="25个Eclipse插件" target="_blank">25个Eclipse插件</a>
                                    <span class="text-muted">AILIKES</span>
<a class="tag" taget="_blank" href="/search/eclipse%E6%8F%92%E4%BB%B6/1.htm">eclipse插件</a>
                                    <div>提高代码质量的插件1. FindBugsFindBugs可以帮你找到Java代码中的bug,它使用Lesser GNU Public License的自由软件许可。2. CheckstyleCheckstyle插件可以集成到Eclipse IDE中去,能确保Java代码遵循标准代码样式。3. ECLemmaECLemma是一款拥有Eclipse Public License许可的免费工具,它提供了</div>
                                </li>
                                <li><a href="/article/1169.htm"
                                       title="Spring MVC拦截器+注解方式实现防止表单重复提交" target="_blank">Spring MVC拦截器+注解方式实现防止表单重复提交</a>
                                    <span class="text-muted">baalwolf</span>
<a class="tag" taget="_blank" href="/search/spring+mvc/1.htm">spring mvc</a>
                                    <div>原理:在新建页面中Session保存token随机码,当保存时验证,通过后删除,当再次点击保存时由于服务器端的Session中已经不存在了,所有无法验证通过。      
1.新建注解: 
     
?       1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   17   18   </div>
                                </li>
                                <li><a href="/article/1296.htm"
                                       title="《Javascript高级程序设计(第3版)》闭包理解" target="_blank">《Javascript高级程序设计(第3版)》闭包理解</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a>
                                    <div>“闭包是指有权访问另一个函数作用域中的变量的函数。”--《Javascript高级程序设计(第3版)》 
  
      看以下代码: 
<script type="text/javascript">
    function outer() {
        var i = 10;
        return f</div>
                                </li>
                                <li><a href="/article/1423.htm"
                                       title="AngularJS Module类的方法" target="_blank">AngularJS Module类的方法</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/AngularJS/1.htm">AngularJS</a><a class="tag" taget="_blank" href="/search/Module/1.htm">Module</a>
                                    <div>        AngularJS中的Module类负责定义应用如何启动,它还可以通过声明的方式定义应用中的各个片段。我们来看看它是如何实现这些功能的。 
一.Main方法在哪里 
        如果你是从Java或者Python编程语言转过来的,那么你可能很想知道AngularJS里面的main方法在哪里?这个把所</div>
                                </li>
                                <li><a href="/article/1550.htm"
                                       title="[Maven学习笔记七]Maven插件和目标" target="_blank">[Maven学习笔记七]Maven插件和目标</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/maven%E6%8F%92%E4%BB%B6/1.htm">maven插件</a>
                                    <div>插件(plugin)和目标(goal) 
Maven,就其本质而言,是一个插件执行框架,Maven的每个目标的执行逻辑都是由插件来完成的,一个插件可以有1个或者几个目标,比如maven-compiler-plugin插件包含compile和testCompile,即maven-compiler-plugin提供了源代码编译和测试源代码编译的两个目标 
  
使用插件和目标使得我们可以干预</div>
                                </li>
                                <li><a href="/article/1677.htm"
                                       title="【Hadoop八】Yarn的资源调度策略" target="_blank">【Hadoop八】Yarn的资源调度策略</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/hadoop/1.htm">hadoop</a>
                                    <div>1. Hadoop的三种调度策略 
Hadoop提供了3中作业调用的策略, 
 
 FIFO Scheduler 
 Fair Scheduler 
 Capacity Scheduler 
 
以上三种调度算法,在Hadoop MR1中就引入了,在Yarn中对它们进行了改进和完善.Fair和Capacity Scheduler用于多用户共享的资源调度 
  2. 多用户资源共享的调度 </div>
                                </li>
                                <li><a href="/article/1804.htm"
                                       title="Nginx使用Linux内存加速静态文件访问" target="_blank">Nginx使用Linux内存加速静态文件访问</a>
                                    <span class="text-muted">ronin47</span>

                                    <div>Nginx是一个非常出色的静态资源web服务器。如果你嫌它还不够快,可以把放在磁盘中的文件,映射到内存中,减少高并发下的磁盘IO。 
先做几个假设。nginx.conf中所配置站点的路径是/home/wwwroot/res,站点所对应文件原始存储路径:/opt/web/res 
shell脚本非常简单,思路就是拷贝资源文件到内存中,然后在把网站的静态文件链接指向到内存中即可。具体如下:      </div>
                                </li>
                                <li><a href="/article/1931.htm"
                                       title="关于Unity3D中的Shader的知识" target="_blank">关于Unity3D中的Shader的知识</a>
                                    <span class="text-muted">brotherlamp</span>
<a class="tag" taget="_blank" href="/search/unity/1.htm">unity</a><a class="tag" taget="_blank" href="/search/unity%E8%B5%84%E6%96%99/1.htm">unity资料</a><a class="tag" taget="_blank" href="/search/unity%E6%95%99%E7%A8%8B/1.htm">unity教程</a><a class="tag" taget="_blank" href="/search/unity%E8%A7%86%E9%A2%91/1.htm">unity视频</a><a class="tag" taget="_blank" href="/search/unity%E8%87%AA%E5%AD%A6/1.htm">unity自学</a>
                                    <div>首先先解释下Unity3D的Shader,Unity里面的Shaders是使用一种叫ShaderLab的语言编写的,它同微软的FX文件或者NVIDIA的CgFX有些类似。传统意义上的vertex shader和pixel shader还是使用标准的Cg/HLSL 编程语言编写的。因此Unity文档里面的Shader,都是指用ShaderLab编写的代码,然后我们来看下Unity3D自带的60多个S</div>
                                </li>
                                <li><a href="/article/2058.htm"
                                       title="CopyOnWriteArrayList vs ArrayList" target="_blank">CopyOnWriteArrayList vs ArrayList</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>package com.ljn.base;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;

/**
 * 总述:
 * 1.ArrayListi不是线程安全的,CopyO</div>
                                </li>
                                <li><a href="/article/2185.htm"
                                       title="内存中栈和堆的区别" target="_blank">内存中栈和堆的区别</a>
                                    <span class="text-muted">chicony</span>
<a class="tag" taget="_blank" href="/search/%E5%86%85%E5%AD%98/1.htm">内存</a>
                                    <div>  
1、内存分配方面: 
 
    堆:一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式是类似于链表。可能用到的关键字如下:new、malloc、delete、free等等。 
 
    栈:由编译器(Compiler)自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中</div>
                                </li>
                                <li><a href="/article/2312.htm"
                                       title="回答一位网友对Scala的提问" target="_blank">回答一位网友对Scala的提问</a>
                                    <span class="text-muted">chenchao051</span>
<a class="tag" taget="_blank" href="/search/scala/1.htm">scala</a><a class="tag" taget="_blank" href="/search/map/1.htm">map</a>
                                    <div>本来准备在私信里直接回复了,但是发现不太方便,就简要回答在这里。  问题 写道   对于scala的简洁十分佩服,但又觉得比较晦涩,例如一例,Map("a" -> List(11,111)).flatMap(_._2),可否说下最后那个函数做了什么,真正在开发的时候也会如此简洁?谢谢  
   先回答一点,在实际使用中,Scala毫无疑问就是这么简单。</div>
                                </li>
                                <li><a href="/article/2439.htm"
                                       title="mysql 取每组前几条记录" target="_blank">mysql 取每组前几条记录</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E7%BB%84/1.htm">分组</a><a class="tag" taget="_blank" href="/search/%E6%9C%80%E5%A4%A7%E5%80%BC/1.htm">最大值</a><a class="tag" taget="_blank" href="/search/%E6%9C%80%E5%B0%8F%E5%80%BC/1.htm">最小值</a><a class="tag" taget="_blank" href="/search/%E6%AF%8F%E7%BB%84%E4%B8%89%E6%9D%A1%E8%AE%B0%E5%BD%95/1.htm">每组三条记录</a>
                                    <div>一、对分组的记录取前N条记录:例如:取每组的前3条最大的记录    1.用子查询:   SELECT * FROM tableName a  WHERE 3>   (SELECT COUNT(*) FROM  tableName b WHERE b.id=a.id AND b.cnt>a. cnt)   ORDER BY a.id,a.account DE</div>
                                </li>
                                <li><a href="/article/2566.htm"
                                       title="HTTP深入浅出 http请求" target="_blank">HTTP深入浅出 http请求</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/http/1.htm">http</a>
                                    <div>    HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则。计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器(Web服务器)请求信息和服务,HTTP目前协议的版本是1.1.HTTP是一种无状态的协议,无状态是指Web浏览器和Web服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后We</div>
                                </li>
                                <li><a href="/article/2693.htm"
                                       title="判断MySQL记录是否存在方法比较" target="_blank">判断MySQL记录是否存在方法比较</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                                    <div>把数据写入到数据库的时,常常会碰到先要检测要插入的记录是否存在,然后决定是否要写入。 
  我这里总结了判断记录是否存在的常用方法: 
  sql语句:  select   count ( * )  from  tablename;  
  然后读取count(*)的值判断记录是否存在。对于这种方法性能上有些浪费,我们只是想判断记录记录是否存在,没有必要全部都查出来。</div>
                                </li>
                                <li><a href="/article/2820.htm"
                                       title="对HTML XML的一点认识" target="_blank">对HTML XML的一点认识</a>
                                    <span class="text-muted">e200702084</span>
<a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a>
                                    <div>感谢http://www.w3school.com.cn提供的资料 
HTML 文档中的每个成分都是一个节点。 
节点 
根据 DOM,HTML 文档中的每个成分都是一个节点。 
 
DOM 是这样规定的: 
 
整个文档是一个文档节点 
每个 HTML 标签是一个元素节点 
包含在 HTML 元素中的文本是文本节点 
每一个 HTML 属性是一个属性节点 
注释属于注释节点 
Node 层次 
</div>
                                </li>
                                <li><a href="/article/2947.htm"
                                       title="jquery分页插件" target="_blank">jquery分页插件</a>
                                    <span class="text-muted">genaiwei</span>
<a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E9%A1%B5/1.htm">分页</a><a class="tag" taget="_blank" href="/search/%E6%8F%92%E4%BB%B6/1.htm">插件</a>
                                    <div>//jquery页码控件// 创建一个闭包    (function($) {      // 插件的定义      $.fn.pageTool = function(options) {          var totalPa</div>
                                </li>
                                <li><a href="/article/3201.htm"
                                       title="Mybatis与Ibatis对照入门于学习" target="_blank">Mybatis与Ibatis对照入门于学习</a>
                                    <span class="text-muted">Josh_Persistence</span>
<a class="tag" taget="_blank" href="/search/mybatis/1.htm">mybatis</a><a class="tag" taget="_blank" href="/search/ibatis/1.htm">ibatis</a><a class="tag" taget="_blank" href="/search/%E5%8C%BA%E5%88%AB/1.htm">区别</a><a class="tag" taget="_blank" href="/search/%E8%81%94%E7%B3%BB/1.htm">联系</a>
                                    <div>一、为什么使用IBatis/Mybatis 
        对于从事 Java EE 的开发人员来说,iBatis 是一个再熟悉不过的持久层框架了,在 Hibernate、JPA 这样的一站式对象 / 关系映射(O/R Mapping)解决方案盛行之前,iBaits 基本是持久层框架的不二选择。即使在持久层框架层出不穷的今天,iBatis 凭借着易学易用、</div>
                                </li>
                                <li><a href="/article/3328.htm"
                                       title="C中怎样合理决定使用那种整数类型?" target="_blank">C中怎样合理决定使用那种整数类型?</a>
                                    <span class="text-muted">秋风扫落叶</span>
<a class="tag" taget="_blank" href="/search/c/1.htm">c</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B/1.htm">数据类型</a>
                                    <div>如果需要大数值(大于32767或小于32767), 使用long 型。 否则, 如果空间很重要 (如有大数组或很多结构), 使用 short 型。 除此之外, 就使用 int 型。 如果严格定义的溢出特征很重要而负值无关紧要, 或者你希望在操作二进制位和字节时避免符号扩展的问题, 请使用对应的无符号类型。 但是, 要注意在表达式中混用有符号和无符号值的情况。 
  
 &nbs</div>
                                </li>
                                <li><a href="/article/3455.htm"
                                       title="maven问题" target="_blank">maven问题</a>
                                    <span class="text-muted">zhb8015</span>
<a class="tag" taget="_blank" href="/search/maven%E9%97%AE%E9%A2%98/1.htm">maven问题</a>
                                    <div>  
问题1: 
Eclipse 中 新建maven项目 无法添加src/main/java 问题 
   eclipse创建maevn web项目,在选择maven_archetype_web原型后,默认只有src/main/resources这个Source Floder。 
    按照maven目录结构,添加src/main/ja</div>
                                </li>
                                <li><a href="/article/3582.htm"
                                       title="(二)androidpn-server tomcat版源码解析之--push消息处理" target="_blank">(二)androidpn-server tomcat版源码解析之--push消息处理</a>
                                    <span class="text-muted">spjich</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/androdipn/1.htm">androdipn</a><a class="tag" taget="_blank" href="/search/%E6%8E%A8%E9%80%81/1.htm">推送</a>
                                    <div>在 (一)androidpn-server tomcat版源码解析之--项目启动这篇中,已经描述了整个推送服务器的启动过程,并且把握到了消息的入口即XmppIoHandler这个类,今天我将继续往下分析下面的核心代码,主要分为3大块,链接创建,消息的发送,链接关闭。 
先贴一段XmppIoHandler的部分代码 
/**
     * Invoked from an I/O proc</div>
                                </li>
                                <li><a href="/article/3709.htm"
                                       title="用js中的formData类型解决ajax提交表单时文件不能被serialize方法序列化的问题" target="_blank">用js中的formData类型解决ajax提交表单时文件不能被serialize方法序列化的问题</a>
                                    <span class="text-muted">中华好儿孙</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/Ajax/1.htm">Ajax</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/%E4%B8%8A%E4%BC%A0%E6%96%87%E4%BB%B6/1.htm">上传文件</a><a class="tag" taget="_blank" href="/search/FormData/1.htm">FormData</a>
                                    <div>
var formData = new FormData($("#inputFileForm")[0]);
$.ajax({
		type:'post',
		url:webRoot+"/electronicContractUrl/webapp/uploadfile",
		data:formData,
		async: false,
		ca</div>
                                </li>
                                <li><a href="/article/3836.htm"
                                       title="mybatis常用jdbcType数据类型" target="_blank">mybatis常用jdbcType数据类型</a>
                                    <span class="text-muted">ysj5125094</span>
<a class="tag" taget="_blank" href="/search/mybatis/1.htm">mybatis</a><a class="tag" taget="_blank" href="/search/mapper/1.htm">mapper</a><a class="tag" taget="_blank" href="/search/jdbcType/1.htm">jdbcType</a>
                                    <div>  
MyBatis 通过包含的jdbcType
类型 
BIT         FLOAT      CHAR          </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>