webapi中如何使用依赖注入

本篇将要和大家分享的是webapi中如何使用依赖注入,依赖注入这个东西在接口中常用,实际工作中也用的比较频繁,因此这里分享两种在api中依赖注入的方式Ninject和Unity;由于快过年这段时间打算了解下vue.js,所以后面对webapi的分享文章可能会慢点更新,希望支持的朋友们多多谅解,毕竟只有不断充电学习,才能更好的适应it行业吧;本章内容希望大家喜欢,也希望各位多多扫码支持和推荐谢谢:

» Task并行任务抓取博客园首页信息

» IOC框架Ninject的使用

» IOC框架Unity的使用

下面一步一个脚印的来分享:

» Task并行任务抓取博客园首页信息

首先,咋们需要创建一个博客信息实体类 MoBlog ,实体类代码如下:

public class MoBlog
 {
  public MoBlog() { }
  /// 
  /// 作者昵称
  /// 
  public string NickName { get; set; }
  /// 
  /// 标题
  /// 
  public string Title { get; set; }
  /// 
  ///该篇文字地址
  /// 
  public string Url { get; set; }
  /// 
  /// 描述
  /// 
  public string Des { get; set; }
  /// 
  /// 头像图片地址
  /// 
  public string HeadUrl { get; set; }
  /// 
  /// 博客地址
  /// 
  public string BlogUrl { get; set; }
  /// 
  /// 点赞次数
  /// 
  public int ZanNum { get; set; }
  /// 
  /// 阅读次数
  /// 
  public int ReadNum { get; set; }
  /// 
  /// 评论次数
  /// 
  public int CommiteNum { get; set; }
  /// 
  /// 创建时间
  /// 
  public DateTime CreateTime { get; set; }
 }

然后,需要创建一个接口 IBlogsReposity ,并且定义一个如下代码的方法:

public interface IBlogsReposity
 {
  /// 
  /// 获取博客信息
  /// 
  /// 
  /// 
  Task> GetBlogs(int nTask);
 }

注意这里定义的返回类型是Task,主要作用是async异步返回博客信息,并且方便使用并行方式抓取不同页数的数据,因此这里传递了一个int类型的参数nTask(表示任务数量);好了咋们来一起看下具体实现接口的 BoKeYuan 类里面的代码:

public class BoKeYuan : IBlogsReposity
 {
  public async Task> GetBlogs(int nTask)
  {
   var blogs = new List();
   try
   {
    //开启nTask个任务,读取前nTask页信息
    Task>[] tasks = new Task>[nTask];
    for (int i = 1; i <= tasks.Length; i++)
    {
     tasks[i - 1] = await Task.Factory.StartNew>>((page) =>
      {
       return GetBlogsByPage(Convert.ToInt32(page));
      }, i);
    }
    //30s等待
    Task.WaitAll(tasks, TimeSpan.FromSeconds(30));
    foreach (var item in tasks.Where(b => b.IsCompleted))
    {
     blogs.AddRange(item.Result);
    }
   }
   catch (Exception ex)
   {
   }
   return blogs.OrderByDescending(b => b.CreateTime);
  }
  /// 
  /// 
  /// 
  /// 页数
  /// 
  async Task> GetBlogsByPage(int nPage)
  {
   var blogs = new List();
   try
   {
    var strBlogs = string.Empty;
    using (HttpClient client = new HttpClient())
    {
     strBlogs = await client.GetStringAsync("http://www.cnblogs.com/sitehome/p/" + nPage);
    }
    if (string.IsNullOrWhiteSpace(strBlogs)) { return blogs; }
    var matches = Regex.Matches(strBlogs, "diggnum\"[^>]+>(?\\d+)[^:]+(?http[^\"]+)[^>]+>(?[^<]+)<\\/a>[^=]+=[^=]+=\"(?<hurl>http://(\\w|\\.|\\/)+)[^>]+>[^\\/]+\\/\\/(?<hphoto>[^\"]+)[^<]+<\\/a>(?<bdes>[^<]+)[^\"]+[^=]+=[^>]+>(?<hname>[^<]+)[^2]+(?<bcreatetime>[^<]+)[^\\(]+\\((?<bcomment>\\d+)[^\\(]+\\((?<bread>\\d+)");
    if (matches.Count <= 0) { return blogs; }
    foreach (Match item in matches)
    {
     blogs.Add(new MoBlog
     {
      Title = item.Groups["title"].Value.Trim(),
      NickName = item.Groups["hname"].Value.Trim(),
      Des = item.Groups["bdes"].Value.Trim(),
      ZanNum = Convert.ToInt32(item.Groups["hzan"].Value.Trim()),
      ReadNum = Convert.ToInt32(item.Groups["bread"].Value.Trim()),
      CommiteNum = Convert.ToInt32(item.Groups["bcomment"].Value.Trim()),
      CreateTime = Convert.ToDateTime(item.Groups["bcreatetime"].Value.Trim()),
      HeadUrl = "http://" + item.Groups["hphoto"].Value.Trim(),
      BlogUrl = item.Groups["hurl"].Value.Trim(),
      Url = item.Groups["burl"].Value.Trim(),
     });
    }
   }
   catch (Exception ex)
   {
   }
   return blogs;
  }
 }

</pre> 
 </div> 
 <p>代码分析:</p> 
 <p>1. Task<IEnumerable<MoBlog>>[] tasks = new Task<IEnumerable<MoBlog>>[nTask]作为并行任务的容器;</p> 
 <p>2. Task.Factory.StartNew创建对应的任务</p> 
 <p>3. Task.WaitAll(tasks, TimeSpan.FromSeconds(30));等待容器里面任务完成30秒后超时</p> 
 <p>4. 最后通过把item.Result任务结果添加到集合中,返回我们需要的数据</p> 
 <p>这里解析博客内容信息用的正则表达式,这种方式在抓取一定内容上很方便;群里面有些朋友对正则有点反感,刚接触的时候觉得挺不好写的,所以一般都采用更复杂或者其他的解析方式来获取想要的内容,这里提出来主要是和这些朋友分享下正则获取数据是多么方便,很有必要学习下并且掌握常规的用法,这也是一种苦尽甘来的体验吧哈哈;</p> 
 <p>好了咋们创建一个webapi项目取名为 Stage.Api ,使用她自动生成的 ValuesController 文件里面的Get方法接口来调用咋们上面实现的博客抓取方法,代码如下:</p> 
 <div class="jb51code"> 
  <pre class="brush:csharp;">
// GET api/values
  public async Task<IEnumerable<MoBlog>> Get(int task = 6)
  {
   task = task <= 0 ? 6 : task;
   task = task > 50 ? 50 : task;
   IBlogsReposity _reposity = new BoKeYuan();
   return await _reposity.GetBlogs(task);
  }</pre> 
 </div> 
 <p>这里使用 IBlogsReposity _reposity = new BoKeYuan(); 来创建和调用具体的实现类,这里贴出一个线上抓取博客首页信息的地址(不要告诉dudu):http://www.lovexins.com:1001/api/values?task=6;咋们来想象一下,如果这个Get方法中还需要调用其他实现了接口 IBlogsReposity 的博客抓取类,那咋们又需要手动new一次来创建对应的对象;倘若除了在 ValuesController.cs 文件中调用了博客数据抓取,其他文件还需要这抓取数据的业务,那么又会不停的new,可能有朋友就会说那弄一个工厂模式怎么样,不错这是可行的一种方式,不过这里还有其他方法能处理这种问题,比如:ioc依赖注入;因此就有了下面的分享内容。</p> 
 <p><strong>» IOC框架Ninject的使用</strong></p> 
 <p>首先,我们要使用ninject需要使用nuget下载安装包,这里要注意的是Ninject版本比较多,需要选择合适自己webapi的版本,我这里选择的是:</p> 
 <p style="text-align: center"><a href="http://img.e-com-net.com/image/info11/a77d354bc4a445d2ac2446697bc853e7.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info11/a77d354bc4a445d2ac2446697bc853e7.jpg" alt="webapi中如何使用依赖注入_第1张图片" width="650" height="153" style="border:1px solid black;"></a></p> 
 <p>看起来很老了哈哈,不过咋们能用就行,安装起来可能需要点时间,毕竟比较大么也有可能是网络的问题吧;安装完后咋们创建一个自定义类 NinjectResolverScope 并实现接口 IDependencyScope , IDependencyScope 对应的类库是 System.Web.Http.dll (注:由于webapi2项目自动生成时候可能勾选了mvc,mvc框架里面也包含了一个IDependencyScope,所以大家需要注意区分下),好了咋们来直接看下 NinjectResolverScope 实现代码:</p> 
 <div class="jb51code"> 
  <pre class="brush:csharp;">
/// <summary>
 /// 解析
 /// </summary>
 public class NinjectResolverScope : IDependencyScope
 {
  private IResolutionRoot root;
  public NinjectResolverScope() { }
  public NinjectResolverScope(IResolutionRoot root)
  {
   this.root = root;
  }
  public object GetService(Type serviceType)
  {
   try
   {
    return root.TryGet(serviceType);
   }
   catch (Exception ex)
   {
    return null;
   }
  }
  public IEnumerable<object> GetServices(Type serviceType)
  {
   try
   {
    return this.root.GetAll(serviceType);
   }
   catch (Exception ex)
   {
    return new List<object>();
   }
  }
  public void Dispose()
  {
   var disposable = this.root as IDisposable;
   if (disposable != null)
    disposable.Dispose();

   this.root = null;
  }
 }</pre> 
 </div> 
 <p>这里要注意的是GetService和GetServices方法必须使用  try...catch() 包住,经过多方调试和测试,这里面会执行除手动bind绑定外的依赖,还会执行几个其他非手动绑定的实例对象,这里使用try避免抛异常影响到程序(其实咋们可以在这里用代码过滤掉非手动绑定的几个实例);这里也简单说下这个 NinjectResolverScope 中方法执行的先后顺序:GetService=》GetServices=》Dispose,GetService主要用来获取依赖注入对象的实例;好了到这里咋们还需要一个自定义容器类 NinjectResolverContainer ,该类继承自上面的 NinjectResolverScope 和实现 IDependencyResolver 接口(其实细心的朋友能发现这个 IDependencyResolver 同样也继承了 IDependencyScope ),具体代码如下:</p> 
 <div class="jb51code"> 
  <pre class="brush:csharp;">
public class NinjectResolverContainer : NinjectResolverScope, IDependencyResolver
 {
  private IKernel kernel;
  public static NinjectResolverContainer Current
  {
   get
   {
    var container = new NinjectResolverContainer();
    //初始化
    container.Initing();
    //绑定
    container.Binding();
    return container;
   }
  }
  /// <summary>
  /// 初始化kernel
  /// </summary>
  void Initing()
  {
   kernel = new StandardKernel();
  }
  /// <summary>
  /// 绑定
  /// </summary>
  void Binding()
  {
   kernel.Bind<IBlogsReposity>().To<BoKeYuan>();
  }
  /// <summary>
  /// 开始执行
  /// </summary>
  /// <returns></returns>
  public IDependencyScope BeginScope()
  {
   return new NinjectResolverScope(this.kernel.BeginBlock());
  }
 }</pre> 
 </div> 
 <p>这里能够看到 IKernel kernel = new StandardKernel(); 这代码,她们引用都来源于我们安装的Ninject包,通过调用初始化Initing()后,我们需要在Binding()方法中手动绑定我们对应需要依赖注入的实例,Ninject绑定方式有很多种这里我用的格式是: kernel.Bind<接口>().To<实现类>(); 如此简单就实现了依赖注入,每次我们需要添加不同的依赖项的时候只需要在这个Binding()中使用Bind<接口>.To<接口实现类>()即可绑定成功;好了为了验证咋们测试成功性,我们需要在apiController中使用这个依赖关系,这里我使用构造函数依赖注入的方式:</p> 
 <div class="jb51code"> 
  <pre class="brush:csharp;">
private readonly IBlogsReposity _reposity
  public ValuesController(IBlogsReposity reposity)
  {
   _reposity = reposity;
  }
  // GET api/values 
  public async Task<IEnumerable<MoBlog>> Get(int task = 6)
  {
   task = task <= 0 ? 6 : task;
   task = task > 50 ? 50 : task;
   return await _reposity.GetBlogs(task);
  }
</pre> 
 </div> 
 <p>代码如上所示,我们运行下程序看下效果:</p> 
 <p style="text-align: center"><a href="http://img.e-com-net.com/image/info11/3200cf5de7c34706b286d7a1e7b925de.png" target="_blank"><img src="http://img.e-com-net.com/image/info11/3200cf5de7c34706b286d7a1e7b925de.png" alt="webapi中如何使用依赖注入_第2张图片" width="1201" height="341" style="border:1px solid black;"></a></p> 
 <p>这个时候提示了个错误“没有默认构造函数”;我们刚才使用的构造函数是带有参数的,而自定义继承的 ApiController 中有一个无参数的构造函数,根据错误提示内容完全无解;不用担心,解决这个问题只需要在 WebApiConfig.cs 中Register方法中增加如下代码:</p> 
 <div class="jb51code"> 
  <pre class="brush:csharp;">
 //Ninject ioc
 config.DependencyResolver = NinjectResolverContainer.Current;</pre> 
 </div> 
 <p>这句代码意思就是让程序执行上面咋们创建的容器 NinjectResolverContainer ,这样才能执行到我能刚才写的ioc程序,才能实现依赖注入;值得注意的是 config.DependencyResolver 是webapi自带的提供的,mvc项目也有同样提供了 DependencyResolver  给我们使用方便做依赖解析;好了这次我们在运行项目可以得到如图效果:</p> 
 <p style="text-align: center"><a href="http://img.e-com-net.com/image/info11/2307332af1d241dda704ec76bc4a41e6.png" target="_blank"><img src="http://img.e-com-net.com/image/info11/2307332af1d241dda704ec76bc4a41e6.png" alt="webapi中如何使用依赖注入_第3张图片" width="843" height="315" style="border:1px solid black;"></a></p> 
 <p><strong>» IOC框架Unity的使用</strong></p> 
 <p>首先,安装Unity和Unity.WebAPI的nuget包,我这里的版本是:</p> 
 <p style="text-align: center"><a href="http://img.e-com-net.com/image/info11/57781b86b75246358a9102746e91f910.png" target="_blank"><img src="http://img.e-com-net.com/image/info11/57781b86b75246358a9102746e91f910.png" alt="webapi中如何使用依赖注入_第4张图片" width="575" height="107" style="border:1px solid black;"></a></p> 
 <p>我们再同样创建个自定义容器类 UnityResolverContainer ,实现接口 IDependencyResolver (这里和上面Ninject一样);然后这里贴上具体使用Unity实现的方法:</p> 
 <div class="jb51code"> 
  <pre class="brush:csharp;">
public class UnityResolverContainer : IDependencyResolver
 {
  private IUnityContainer _container;
  public UnityResolverContainer(IUnityContainer container)
  {
   this._container = container;
  }
  public IDependencyScope BeginScope()
  {
   var scopeContainer = this._container.CreateChildContainer();
   return new UnityResolverContainer(scopeContainer);
  }
  /// <summary>
  /// 获取对应类型的实例,注意try...catch...不能够少
  /// </summary>
  /// <param name="serviceType"></param>
  /// <returns></returns>
  public object GetService(Type serviceType)
  {
   try
   {
    //if (!this._container.IsRegistered(serviceType)) { return null; }
    return this._container.Resolve(serviceType);
   }
   catch
   {
    return null;
   }
  }
  public IEnumerable<object> GetServices(Type serviceType)
  {
   try
   {
    return this._container.ResolveAll(serviceType);
   }
   catch
   {
    return new List<object>();
   }
  }
  public void Dispose()
  {
   if (_container != null)
   {
    this._container.Dispose();
    this._container = null;
   }
  }
 }
</pre> 
 </div> 
 <p> 这里和使用Ninject的方式很类似,需要注意的是我们在安装Unity包的时候会自动在 WebApiConfig.cs 增加如下代码:</p> 
 <div class="jb51code"> 
  <pre class="brush:csharp;">
 //Unity ioc
UnityConfig.RegisterComponents();</pre> 
 </div> 
 <p>然后同时在 App_Start 文件夹中增加 UnityConfig.cs 文件,我们打开此文件能看到一些自动生成的代码,这里我们就可以注册绑定我们的依赖,代码如:</p> 
 <div class="jb51code"> 
  <pre class="brush:csharp;">
public static class UnityConfig
 {
  public static void RegisterComponents()
  {
   var container = new UnityContainer();
   container.RegisterType<IBlogsReposity, BoKeYuan>();
   // var lifeTimeOption = new ContainerControlledLifetimeManager();
   //container.RegisterInstance<IBlogsReposity>(new BoKeYuan(), lifeTimeOption);
   GlobalConfiguration.Configuration.DependencyResolver = new UnityResolverContainer(container);
  }
 }</pre> 
 </div> 
 <p>这里展示了两种注册依赖的方式: container.RegisterType<IBlogsReposity, BoKeYuan>(); 和 container.RegisterInstance<IBlogsReposity>(new BoKeYuan(), lifeTimeOption); ,当然还有其他的扩展方法这里就不举例了;最后一句代码: GlobalConfiguration.Configuration.DependencyResolver = new UnityResolverContainer(container); 和我们之前Ninject代码一样,只是换了一个地方和实例化写法方式而已,各位可以仔细对比下;其实 UnityConfig.cs 里面的内容都可以移到 WebApiConfig.cs 中去,unity自动分开应该是考虑到代码内容分块来管理吧,好了同样我们使用自定义的 ValuesController 的构造函数来添加依赖:</p> 
 <div class="jb51code"> 
  <pre class="brush:csharp;">
public class ValuesController : ApiController
 {
  private readonly IBlogsReposity _reposity;
  public ValuesController(IBlogsReposity reposity)
  {
   _reposity = reposity;
  }
  // GET api/values 
  public async Task<IEnumerable<MoBlog>> Get(int task = 6)
  {
   task = task <= 0 ? 6 : task;
   task = task > 50 ? 50 : task;
   return await _reposity.GetBlogs(task);
  }
}
</pre> 
 </div> 
 <p>从代码上来看,这里面Ninject和Unity的注入方式没有差异,这样能就让我们开发程序的时候两种注入方式可以随便切换了,最后来我这里提供一个使用这个webapi获取数据绑定到页面上的效果:</p> 
 <p style="text-align: center"><a href="http://img.e-com-net.com/image/info11/57abbaf058db441983642bcdebf9b4d5.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info11/57abbaf058db441983642bcdebf9b4d5.jpg" alt="webapi中如何使用依赖注入_第5张图片" width="650" height="249" style="border:1px solid black;"></a></p> 
 <p>以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!<br> </p> 
 <div class="clearfix"> 
  <span id="art_bot" class="jbTestPos"></span> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1175683159329681408"></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">你可能感兴趣的:(webapi中如何使用依赖注入)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1882744596212019200.htm"
                           title="【云原生应用与Docker】如何在Centos7安装docker及其compose?" target="_blank">【云原生应用与Docker】如何在Centos7安装docker及其compose?</a>
                        <span class="text-muted">奇墨 ITQM</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%91%E5%8E%9F%E7%94%9F/1.htm">云原生</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a>
                        <div>随着云计算的深入发展,越来越多的企业开始采用云原生应用来优化他们的IT架构,提升业务敏捷性和效率。云原生应用是一种针对云环境进行优化,以容器化、微服务化、动态编排等为特点的应用形态。它能帮助企业快速响应市场变化,提高应用性能,并降低运维成本。在这个过程中,Docker作为一种开源的应用容器引擎,以其快速部署、可重复性和易于管理的特点,成为部署云原生应用的重要工具。Docker是一种轻量级的虚拟化技</div>
                    </li>
                    <li><a href="/article/1882744469967663104.htm"
                           title="如何解决【docker端口映射不能访问】的问题?" target="_blank">如何解决【docker端口映射不能访问】的问题?</a>
                        <span class="text-muted">奇墨 ITQM</span>
<a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>在企业数字化转型中,Docker作为一种常用的容器技术,一个非常强大的功能就是通过端口映射将容器内的服务发布到外部。然而,有时候我们会遇到无法从外部访问容器内部文件的问题,导致服务无法正常运行。下面将对这个问题进行深入剖析并给出解决方法。一、问题描述:我在服务器上启动了个nginx:latest的容器,使用命令如下:[root@Hangz-Ecs1~]#dockerrun-id-p8080:80-</div>
                    </li>
                    <li><a href="/article/1882742705738543104.htm"
                           title="shell经典面试题2" target="_blank">shell经典面试题2</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/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a>
                        <div>1、需求:判断192.168.8.0/24网络中,当前在线的ip有哪些,并编写脚本打印出来。#实际应该是{1..255},下列为实例:foriin{128..135};doping-c1192.168.8.$i&>/dev/nullif[$?-eq0];thenecho"$iisonline..."elseecho"$iisnotexit..."fidone2、设计一个Shell程序,在/user</div>
                    </li>
                    <li><a href="/article/1882740941052243968.htm"
                           title="Android之权限架构" target="_blank">Android之权限架构</a>
                        <span class="text-muted">向上_50358291</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a>
                        <div>1.权限简介:所有的权限定义在Android系统的源代码中,路径通常位于frameworks/base/core/res/AndroidManifest.xml。本篇文章以Android15原生源码来做的讲解。LI、LIF、LPr、LPw是什么?首先L代表Lock,I代表mInstall,P代表mPackages,F代表frozen,r代表读,w代表写。2.安装时权限:2.1普通权限(Normal</div>
                    </li>
                    <li><a href="/article/1882740939462602752.htm"
                           title="第 3 章 核心处理层(中)" target="_blank">第 3 章 核心处理层(中)</a>
                        <span class="text-muted">沉登c</span>
<a class="tag" taget="_blank" href="/search/MyBatis%E6%8A%80%E6%9C%AF%E5%86%85%E5%B9%95/1.htm">MyBatis技术内幕</a><a class="tag" taget="_blank" href="/search/mybatis/1.htm">mybatis</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>3.3ResultSetHandlerMyBatis将结果集按照映射配置文件中定义的映射规则,例如节点、resultType属性等,映射成相应的结果对象。这一过程是由ResultSetHandler完成的。publicinterfaceResultSetHandler{//处理结果集,生成相应的结果对象集合ListhandleResultSets(Statementstmt)throwsSQLEx</div>
                    </li>
                    <li><a href="/article/1882740940213383168.htm"
                           title="深入探讨:如何在 Debian 系统中实施有效的安全配置" target="_blank">深入探讨:如何在 Debian 系统中实施有效的安全配置</a>
                        <span class="text-muted">Echo_Wish</span>
<a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4%E6%8E%A2%E7%A7%98/1.htm">运维探秘</a><a class="tag" taget="_blank" href="/search/%E8%AE%A9%E4%BD%A0%E5%BF%AB%E9%80%9F%E5%85%A5%E5%9D%91%E8%BF%90%E7%BB%B4/1.htm">让你快速入坑运维</a><a class="tag" taget="_blank" href="/search/debian/1.htm">debian</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>深入探讨:如何在Debian系统中实施有效的安全配置在如今的网络环境中,服务器的安全配置已经成为每个运维工程师的必备技能。无论是个人网站还是企业应用,确保服务器的安全性都是至关重要的。作为一名运维领域的自媒体创作者,我将分享一些在Debian系统中实施安全配置的技巧。这些技巧不仅能够提升服务器的安全性,还能帮助你防范常见的安全威胁。一、系统更新与包管理1.1定期更新系统保持系统和软件的最新状态是确</div>
                    </li>
                    <li><a href="/article/1882740435084963840.htm"
                           title="Linux 系统服务开机自启动指导手册" target="_blank">Linux 系统服务开机自启动指导手册</a>
                        <span class="text-muted">我科绝伦(Huanhuan Zhou)</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/java/1.htm">java</a>
                        <div>一、引言在Linux系统中,设置服务开机自启动是常见的系统配置任务。本文档详细介绍了多种实现服务开机自启动的方法,包括systemctl方式、通用脚本方式、crontab方案等,并提供了生产环境下的方案建议和开机启动脚本示例。二、systemctl方式2.1适用范围适用于已安装为系统服务且服务文件(.service)存储在/usr/lib/systemd/system的组件。2.2设置开机启动使用</div>
                    </li>
                    <li><a href="/article/1882739677945982976.htm"
                           title="生数科技携手央视新闻《文博日历》,推动AI视频技术的创新应用" target="_blank">生数科技携手央视新闻《文博日历》,推动AI视频技术的创新应用</a>
                        <span class="text-muted">TMT星球</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E7%A7%91%E6%8A%80/1.htm">科技</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a>
                        <div>近日,生数科技携手央视新闻《文博日历》栏目,借助其旗下AI视频大模型及应用产品Vidu,共同打造AI版2025年文博日历联欢晚会,全面推动AI视频生成技术在媒体中的创新实践。《文博日历》是央视新闻客户端联合各大博物馆推出的文博科普产品,以新媒体形式为观众呈现丰富多彩的文博知识和历史文化。据「TMT星球」了解,此次合作中,生数科技为《文博日历》量身定制了AI视频生成方案,让文物们“动”起来,共同出演</div>
                    </li>
                    <li><a href="/article/1882739299271634944.htm"
                           title="Scala语言的循环实现" target="_blank">Scala语言的循环实现</a>
                        <span class="text-muted">Code侠客行</span>
<a class="tag" taget="_blank" href="/search/%E5%8C%85%E7%BD%97%E4%B8%87%E8%B1%A1/1.htm">包罗万象</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>
                        <div>Scala语言的循环实现在编程中,循环是一个非常重要的概念,它允许我们重复执行某些代码块。Scala作为一种现代化的编程语言,融合了函数式编程和面向对象编程的特点,提供了多种方式来实现循环。在本文中,我们将深入探讨Scala中的循环实现,包括基本的循环结构、使用集合与高阶函数、以及如何利用递归来实现循环。一、基础循环结构Scala提供了几种基础的循环结构,包括for循环、while循环和dowhi</div>
                    </li>
                    <li><a href="/article/1882736272464736256.htm"
                           title="学习AI职场应用技能的意义" target="_blank">学习AI职场应用技能的意义</a>
                        <span class="text-muted">Mieux718</span>
<a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>在智能化浪潮下,“人工智能+”通识必修课的普及,其核心并非在于培养人工智能领域的专家,而是旨在构建全民AI素养的基石。学习AI是可以让学生借助其技术力量,为各自的专业领域插上创新的翅膀。除了高校外,越来越多的企业也开始关注AI对企业业务的帮助,职场中掌握AI也变得越来越重要。随着人工智能技术的发展,许多行业都在引入相关技术和应用,人工智能应用场景已深度融入办公流程、项目管理、项目运营、客户服务等工</div>
                    </li>
                    <li><a href="/article/1882735766090608640.htm"
                           title="使用Python将PDF文件转换为MOBI格式" target="_blank">使用Python将PDF文件转换为MOBI格式</a>
                        <span class="text-muted">choiiie</span>
<a class="tag" taget="_blank" href="/search/%E8%8F%9C%E7%8B%97%E7%9A%84%E6%80%AA%E9%97%AE%E9%A2%98%E5%90%88%E9%9B%86/1.htm">菜狗的怪问题合集</a><a class="tag" taget="_blank" href="/search/pdf/1.htm">pdf</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/1.htm">经验分享</a>
                        <div>使用Python将PDF文件转换为MOBI格式引言在这篇文章中,我们将学习如何使用Python创建一个图形用户界面(GUI)应用程序,将PDF文件转换为MOBI格式。我们将使用tkinter作为GUI库,PyMuPDF或PyPDF2来处理PDF文件,以及Calibre的ebook-convert命令行工具来完成文件格式的转换。GitHub项目地址这个项目已经托管在GitHub上准备工作在开始之前,</div>
                    </li>
                    <li><a href="/article/1882734884674400256.htm"
                           title="JsonPath用法详解" target="_blank">JsonPath用法详解</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><a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E5%8C%96/1.htm">自动化</a><a class="tag" taget="_blank" href="/search/pycharm/1.htm">pycharm</a>
                        <div>JSONPath是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本,包括Javascript、Python、PHP和Java。1、JSONPath安装:pipinstalljsonpath#如果安装太慢可以使用清华源来加速安装pipinstalljsonpath-ihttps://pypi.tuna.tsinghua.edu.cn/simple2、JSONPath语法J</div>
                    </li>
                    <li><a href="/article/1882733875197702144.htm"
                           title="tensorlow中tensorboard可视化展示训练过程" target="_blank">tensorlow中tensorboard可视化展示训练过程</a>
                        <span class="text-muted">张登杰踩</span>
<a class="tag" taget="_blank" href="/search/tensorflow/1.htm">tensorflow</a><a class="tag" taget="_blank" href="/search/tensorboard/1.htm">tensorboard</a><a class="tag" taget="_blank" href="/search/tensorflow/1.htm">tensorflow</a><a class="tag" taget="_blank" href="/search/mnist/1.htm">mnist</a><a class="tag" taget="_blank" href="/search/%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C/1.htm">神经网络</a>
                        <div>importtensorflowastffromtensorflow.examples.tutorials.mnistimportinput_datamax_steps=1000#训练步数learning_rate=0.001#设置学习率dropout=0.9#神经元保留比例data_dir='./MNIST_data'#数据存放路径#minist数据集下载链接:https://pan.baidu</div>
                    </li>
                    <li><a href="/article/1882733495789350912.htm"
                           title="java 获取pdf某页_java从一个pdf中取出指定页生成一个新的pdf" target="_blank">java 获取pdf某页_java从一个pdf中取出指定页生成一个新的pdf</a>
                        <span class="text-muted">weixin_39788131</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E8%8E%B7%E5%8F%96pdf%E6%9F%90%E9%A1%B5/1.htm">获取pdf某页</a>
                        <div>publicstaticvoidpartitionPdfFile(StringpdfFile,StringnewFile,intfrom,intend){Documentdocument=null;PdfCopycopy=null;try{PdfReaderreader=newPdfReader(pdfFile);intn=reader.getNumberOfPages();if(end==0){</div>
                    </li>
                    <li><a href="/article/1882732613840465920.htm"
                           title="Git上传了秘钥如何彻底修改包括历史记录【从安装到实战详细版】" target="_blank">Git上传了秘钥如何彻底修改包括历史记录【从安装到实战详细版】</a>
                        <span class="text-muted">web2u</span>
<a class="tag" taget="_blank" href="/search/git/1.htm">git</a><a class="tag" taget="_blank" href="/search/elasticsearch/1.htm">elasticsearch</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/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</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>使用BFGRepo-Cleaner清除Git仓库中的敏感信息1.背景介绍在使用Git进行版本控制时,有时会不小心将敏感信息(如API密钥、密码等)提交到仓库中。即使后续删除,这些信息仍然存在于Git的历史记录中。本文将介绍如何使用BFGRepo-Cleaner工具彻底清除这些敏感信息。2.准备工作2.1环境要求Java运行环境(JRE8或更高版本)Git客户端需要清理的Git仓库2.2下载BFG访</div>
                    </li>
                    <li><a href="/article/1882732234914459648.htm"
                           title="python程序中调用openai接口" target="_blank">python程序中调用openai接口</a>
                        <span class="text-muted">MEMORYLORRY</span>
<a class="tag" taget="_blank" href="/search/gpt/1.htm">gpt</a><a class="tag" taget="_blank" href="/search/openai/1.htm">openai</a><a class="tag" taget="_blank" href="/search/gpt/1.htm">gpt</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><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/transformer/1.htm">transformer</a>
                        <div>调用openai接口1.openai例子(国内访问)2.解决思路3.搭建nginx3.1创建OpenSSL创建证书3.2nginx配置3.3验证效果4.python调用5.SSL:certificate_verify_failed错误1.openai例子(国内访问)fromopenaiimportOpenAIAPI_KEY='sk-api-key'client=OpenAI(api_key=API</div>
                    </li>
                    <li><a href="/article/1882731224049446912.htm"
                           title="基于Uniapp+SpringBoot实现微信小程序授权登录" target="_blank">基于Uniapp+SpringBoot实现微信小程序授权登录</a>
                        <span class="text-muted">请你喝杯Java⁡</span>
<a class="tag" taget="_blank" href="/search/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97/1.htm">微信小程序开发指南</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E4%B9%8B%E6%97%85/1.htm">前端之旅</a><a class="tag" taget="_blank" href="/search/1024%E7%A8%8B%E5%BA%8F%E5%91%98%E8%8A%82/1.htm">1024程序员节</a><a class="tag" taget="_blank" href="/search/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/1.htm">微信小程序</a><a class="tag" taget="_blank" href="/search/%E4%BA%A4%E4%BA%92/1.htm">交互</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/%E5%B0%8F%E7%A8%8B%E5%BA%8F/1.htm">小程序</a>
                        <div>手把手教你做微信小程序授权登录交互一、uni.login请求临时code二、uni.request向后台交换数据三、源代码前台:在GetUserInfo中添加接口后台:SpringBoot后台数据处理四、实现效果开发需求:我们团队在开发微信小程序过程中,需要绑定微信用户的信息到数据库里,那么就需要获得用户的唯一标识openid,而微信为了安全,是禁止小程序直接访问该接口,因此我们不能直接拿到用户的</div>
                    </li>
                    <li><a href="/article/1882730718061195264.htm"
                           title="WPF拖拽交互全攻略及实现自定义拖拽控件及数据交换技巧解析" target="_blank">WPF拖拽交互全攻略及实现自定义拖拽控件及数据交换技巧解析</a>
                        <span class="text-muted">Nita.</span>
<a class="tag" taget="_blank" href="/search/WPF/1.htm">WPF</a><a class="tag" taget="_blank" href="/search/WPF%E8%87%AA%E5%AE%9A%E4%B9%89%E6%8E%A7%E4%BB%B6/1.htm">WPF自定义控件</a><a class="tag" taget="_blank" href="/search/.NET/1.htm">.NET</a><a class="tag" taget="_blank" href="/search/wpf/1.htm">wpf</a><a class="tag" taget="_blank" href="/search/.NET/1.htm">.NET</a><a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a><a class="tag" taget="_blank" href="/search/1024%E7%A8%8B%E5%BA%8F%E5%91%98%E8%8A%82/1.htm">1024程序员节</a>
                        <div>目录1.基本概念2.实现拖拽功能概述需要要实现基本的拖放,完成以下任务:其他操作示例3.1设置拖拽源,拖拽开始3.2设置拖拽效果DragDropEffects3.3设置放置目标,处理拖拽数据拖拽输入DragEnter事件DragOver事件拖拽离开DragLeave事件拖拽结束Drop事件3.其他实际使用中遇到的问题实现拖拽交换数据的自定义控件效果思路解析具体实现参考1.基本概念拖拽(Dragan</div>
                    </li>
                    <li><a href="/article/1882729835424444416.htm"
                           title="C# 中 default 使用详解" target="_blank">C# 中 default 使用详解</a>
                        <span class="text-muted">鲤籽鲲</span>
<a class="tag" taget="_blank" href="/search/C%23/1.htm">C#</a><a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/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>总目录前言在C#中,default关键字用于表示类型默认值。它可以根据上下文推断出适用的类型,并返回该类型的默认值。随着C#版本的发展,default的用法也变得更加丰富和灵活。本文将详细介绍default在不同场景下的使用方法及其最佳实践。一、default获取类型的默认值1.语法与作用可以使用default关键字来获取任意类型的默认值。值类型(如int,double,struct等):返回类型</div>
                    </li>
                    <li><a href="/article/1882726434804396032.htm"
                           title="MySQL优化之SQL调优策略" target="_blank">MySQL优化之SQL调优策略</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/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                        <div>首先以一张思维导图从全局上给大家分享以下几种SQL优化策略,再详细讲解1、避免使用SELECT*在阿里的编码规范中也强制了数据库查询不能使用SELECT*,因为SELECT*方式走的都是全表扫描,导致的结果就是查询效率非常低下,其原因为当我们使用SELECT*方式时,SQL会有一个格式化的阶段,这个阶段会将所有表字段都取出(将*号解析成表的各个字段),增加了查询解析器的成本2、小表驱动大表小表驱动</div>
                    </li>
                    <li><a href="/article/1882726435672616960.htm"
                           title="算法随笔_20:区间子数组个数" target="_blank">算法随笔_20:区间子数组个数</a>
                        <span class="text-muted">程序趣谈</span>
<a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a>
                        <div>上一篇:算法随笔_19:数组中的最长山脉-CSDN博客=====================题目描述如下:给你一个整数数组nums和两个整数:left及right。找出nums中连续、非空且其中最大元素在范围[left,right]内的子数组,并返回满足条件的子数组的个数。生成的测试用例保证结果符合32-bit整数范围。示例1:输入:nums=[2,1,4,3],left=2,right=3输</div>
                    </li>
                    <li><a href="/article/1882725425864568832.htm"
                           title="什么是报文的大端和小端,有没有什么记忆口诀?" target="_blank">什么是报文的大端和小端,有没有什么记忆口诀?</a>
                        <span class="text-muted">Ly.Leo</span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a>
                        <div>在计算机科学中,**大端(Big-Endian)和小端(Little-Endian)**是两种不同的字节序(即多字节数据在内存中的存储顺序)。理解这两种字节序对于网络通信、文件格式解析以及跨平台编程等非常重要。1.大端(Big-Endian)定义:高位字节(最重要的字节)存储在内存的低地址处,低位字节(最不重要的字节)存储在高地址处。示例:假设有一个32位的整数0x12345678,在大端模式下的</div>
                    </li>
                    <li><a href="/article/1882724164616384512.htm"
                           title="SpringBoot中使用TraceId进行日志追踪" target="_blank">SpringBoot中使用TraceId进行日志追踪</a>
                        <span class="text-muted">java15655057970</span>
<a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/1.htm">学习路线</a><a class="tag" taget="_blank" href="/search/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4/1.htm">阿里巴巴</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/%E7%8A%B6%E6%80%81%E6%A8%A1%E5%BC%8F/1.htm">状态模式</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a>
                        <div>**查询日志的痛点:**项目中每当我们查询日志的时候都是看前端请求什么接口,根据一些关键字进入服务器查询日志中是否有这个关键字,然而这个关键字在日志里面并不是唯一的,所以要生成一个唯一的标识,每一次请求都是唯一的一串字符,查询会过滤掉很多无用的信息,快捷查找到这次请求。为了解决这个痛点,就使用了TraceId。一、TraceId定义用于标识某一次具体的请求ID。当用户的请求进入系统后,会在RPC调</div>
                    </li>
                    <li><a href="/article/1882723660704313344.htm"
                           title="ubuntu如何测试网络性能" target="_blank">ubuntu如何测试网络性能</a>
                        <span class="text-muted">hunter206206</span>
<a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                        <div>在Ubuntu中,有多种工具可以测试网络性能,包括带宽、延迟、丢包率等。以下是常用的工具和方法:1.使用ping测试网络延迟和连通性ping是最基本的网络测试工具,用于测试目标主机的连通性和延迟。命令:ping例如:pinggoogle.com参数:-c:指定发送的ICMP包数量。例如ping-c5google.com。-i:设置发送包的时间间隔(单位:秒)。例如ping-i0.5google.c</div>
                    </li>
                    <li><a href="/article/1882723407217356800.htm"
                           title="SpringBoot + Vue 前后端分离开发项目源码" target="_blank">SpringBoot + Vue 前后端分离开发项目源码</a>
                        <span class="text-muted">左李滢Just</span>

                        <div>SpringBoot+Vue前后端分离开发项目源码SpringBootVue前后端分离开发项目源码本仓库提供了一个完整的SpringBoot+Vue前后端分离开发项目的源码。该项目展示了如何使用SpringBoot作为后端框架,Vue作为前端框架,实现前后端分离的开发模式。通过本项目,您可以学习到如何搭建一个高效、可扩展的Web应用架构项目地址:https://gitcode.com/open-s</div>
                    </li>
                    <li><a href="/article/1882722274226794496.htm"
                           title="HTML字符实体(Character Entities),转义字符串(Escape Sequence)" target="_blank">HTML字符实体(Character Entities),转义字符串(Escape Sequence)</a>
                        <span class="text-muted">锐湃</span>
<a class="tag" taget="_blank" href="/search/http/1.htm">http</a><a class="tag" taget="_blank" href="/search/web/1.htm">web</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>为什么要用转义字符串?HTML中,&等有特殊含义(,用于链接签,&用于转义),不能直接使用。这些符号是不显示在我们最终看到的网页里的,那如果我们希望在网页中显示这些符号,该怎么办呢?这就要说到HTML转义字符串(EscapeSequence)了。转义字符串(EscapeSequence)也称字符实体(CharacterEntity)。在HTML中,定义转义字符串的原因有两个:第一个原因是像“”这类</div>
                    </li>
                    <li><a href="/article/1882718617796145152.htm"
                           title="(C++)P1216数字三角形(动态规划)⭐⭐⭐⭐" target="_blank">(C++)P1216数字三角形(动态规划)⭐⭐⭐⭐</a>
                        <span class="text-muted">*TQK*</span>
<a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95%E7%BB%83%E4%B9%A0/1.htm">算法练习</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92/1.htm">动态规划</a>
                        <div>[USACO1.5][IOI1994]数字三角形NumberTriangles-洛谷题目描述观察下面的数字金字塔。写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以走到左下方的点也可以到达右下方的点。在上面的样例中,从7→3→8→7→5的路径产生了最大权值。输入格式第一个行一个正整数r,表示行的数目。后面每行为这个数字金字塔特定行包含的整数。输出格式单独的一行,包含</div>
                    </li>
                    <li><a href="/article/1882716978339180544.htm"
                           title="Vue - toRefs() 和 toRef() 的使用" target="_blank">Vue - toRefs() 和 toRef() 的使用</a>
                        <span class="text-muted">来一碗刘肉面</span>
<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><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>一、toRefs()在Vue3中,toRefs()可以将响应式对象的属性转换为可响应的refs。主要用于在解构响应式对象时,保持属性的响应性。1.导入toRefs函数import{toRefs}from'vue';2.将响应式对象的属性转换为refconststate=reactive({count:0,message:'Hello,Vue3!'});//toRefs()接受一个响应式对象,并返回</div>
                    </li>
                    <li><a href="/article/1882713952559886336.htm"
                           title="2025春招 SpringCloud 面试题汇总" target="_blank">2025春招 SpringCloud 面试题汇总</a>
                        <span class="text-muted">威哥爱编程(马剑威)</span>
<a class="tag" taget="_blank" href="/search/V%E5%93%A5%E5%8E%9F%E5%88%9B%E6%8A%80%E6%9C%AF%E6%A0%88/1.htm">V哥原创技术栈</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/cloud/1.htm">cloud</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a>
                        <div>大家好,我是V哥。SpringCloud在面试中属于重灾区,不仅是基础概念、组件细节,还有高级特性、性能优化,关键是项目实践经验的解决方案,都是需要掌握的内容,正所谓打有准备的仗,秒杀面试官,如果你正在准备这一块内容,V哥整理的以下面试题及答案,可能在2025年SpringCloud面试中出现,有备无患。先赞再看后评论,腰缠万贯财进门。一、基础概念部分什么是SpringCloud?SpringCl</div>
                    </li>
                    <li><a href="/article/1882713699878236160.htm"
                           title="【前端】--- ES6下篇(带你深入了解ES6语法)" target="_blank">【前端】--- ES6下篇(带你深入了解ES6语法)</a>
                        <span class="text-muted">心.c</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/es6/1.htm">es6</a><a class="tag" taget="_blank" href="/search/ecmascript/1.htm">ecmascript</a>
                        <div>前言:ECMAScript是JavaScript的标准化版本,由ECMA国际组织制定。ECMAScript定义了JavaScript的语法、类型、语句、关键字、保留字等。ES6是ECMAScript的第六个版本,于2015年发布,引入了许多重要的新特性,使JavaScript更加现代化。进制ES6中增加了二进制和八进制的写法:二进制使用前缀'0b'或'0B',八进制使用前缀'0o'或'0O'二进制</div>
                    </li>
                                <li><a href="/article/117.htm"
                                       title="Algorithm" target="_blank">Algorithm</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/Algorithm/1.htm">Algorithm</a>
                                    <div>冒泡排序 
 

	public static void sort(Integer[] param) {
		for (int i = param.length - 1; i > 0; i--) {
			for (int j = 0; j < i; j++) {
				int current = param[j];
				int next = param[j + 1];</div>
                                </li>
                                <li><a href="/article/244.htm"
                                       title="mongoDB 复杂查询表达式" target="_blank">mongoDB 复杂查询表达式</a>
                                    <span class="text-muted">开窍的石头</span>
<a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a>
                                    <div>1:count 
   Pg: db.user.find().count(); 
   统计多少条数据 
2:不等于$ne 
   Pg: db.user.find({_id:{$ne:3}},{name:1,sex:1,_id:0}); 
   查询id不等于3的数据。 
3:大于$gt $gte(大于等于) 
&n</div>
                                </li>
                                <li><a href="/article/371.htm"
                                       title="Jboss Java heap space异常解决方法, jboss OutOfMemoryError : PermGen space" target="_blank">Jboss Java heap space异常解决方法, jboss OutOfMemoryError : PermGen space</a>
                                    <span class="text-muted">0624chenhong</span>
<a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a><a class="tag" taget="_blank" href="/search/jboss/1.htm">jboss</a>
                                    <div>转自 
http://blog.csdn.net/zou274/article/details/5552630 
 
解决办法: 
 
window->preferences->java->installed jres->edit jre 
把default vm arguments 的参数设为-Xms64m -Xmx512m 
 
 
 
----------------</div>
                                </li>
                                <li><a href="/article/498.htm"
                                       title="文件上传 下载 解析 相对路径" target="_blank">文件上传 下载 解析 相对路径</a>
                                    <span class="text-muted">不懂事的小屁孩</span>
<a class="tag" taget="_blank" href="/search/%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0/1.htm">文件上传</a>
                                    <div>有点坑吧,弄这么一个简单的东西弄了一天多,身边还有大神指导着,网上各种百度着。 
下面总结一下遇到的问题: 
 
文件上传,在页面上传的时候,不要想着去操作绝对路径,浏览器会对客户端的信息进行保护,避免用户信息收到攻击。 
在上传图片,或者文件时,使用form表单来操作。 
前台通过form表单传输一个流到后台,而不是ajax传递参数到后台,代码如下: 
 

<form action=&</div>
                                </li>
                                <li><a href="/article/625.htm"
                                       title="怎么实现qq空间批量点赞" target="_blank">怎么实现qq空间批量点赞</a>
                                    <span class="text-muted">换个号韩国红果果</span>
<a class="tag" taget="_blank" href="/search/qq/1.htm">qq</a>
                                    <div>纯粹为了好玩!! 
逻辑很简单 
1 打开浏览器console;输入以下代码。 
先上添加赞的代码 
 

var tools={};
		//添加所有赞
		function  init(){
			document.body.scrollTop=10000;
				setTimeout(function(){document.body.scrollTop=0;},2000);//加</div>
                                </li>
                                <li><a href="/article/752.htm"
                                       title="判断是否为中文" target="_blank">判断是否为中文</a>
                                    <span class="text-muted">灵静志远</span>
<a class="tag" taget="_blank" href="/search/%E4%B8%AD%E6%96%87/1.htm">中文</a>
                                    <div>方法一: 
public class Zhidao { 
 public static void main(String args[]) { 
 String s = "sdf灭礌 kjl d{';\fdsjlk是"; 
 int n=0; 
 for(int i=0; i<s.length(); i++) { 
 n = (int)s.charAt(i); 
 if((</div>
                                </li>
                                <li><a href="/article/879.htm"
                                       title="一个电话面试后总结" target="_blank">一个电话面试后总结</a>
                                    <span class="text-muted">a-john</span>
<a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a>
                                    <div>今天,接了一个电话面试,对于还是初学者的我来说,紧张了半天。 
面试的问题分了层次,对于一类问题,由简到难。自己觉得回答不好的地方作了一下总结: 
  
在谈到集合类的时候,举几个常用的集合类,想都没想,直接说了list,map。 
  
然后对list和map分别举几个类型: 
  
list方面:ArrayList,LinkedList。在谈到他们的区别时,愣住了</div>
                                </li>
                                <li><a href="/article/1006.htm"
                                       title="MSSQL中Escape转义的使用" target="_blank">MSSQL中Escape转义的使用</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/MSSQL/1.htm">MSSQL</a>
                                    <div>IF OBJECT_ID('tempdb..#ABC') is not null
drop table tempdb..#ABC


create table #ABC
(
PATHNAME NVARCHAR(50)
)


insert into #ABC
SELECT N'/ABCDEFGHI' 
UNION ALL SELECT N'/ABCDGAFGASASSDFA' 
UNION ALL</div>
                                </li>
                                <li><a href="/article/1133.htm"
                                       title="一个简单的存储过程" target="_blank">一个简单的存储过程</a>
                                    <span class="text-muted">asialee</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E5%AD%98%E5%82%A8%E8%BF%87%E7%A8%8B/1.htm">存储过程</a><a class="tag" taget="_blank" href="/search/%E6%9E%84%E9%80%A0%E6%95%B0%E6%8D%AE/1.htm">构造数据</a><a class="tag" taget="_blank" href="/search/%E6%89%B9%E9%87%8F%E6%8F%92%E5%85%A5/1.htm">批量插入</a>
                                    <div>           今天要批量的生成一批测试数据,其中中间有部分数据是变化的,本来想写个程序来生成的,后来想到存储过程就可以搞定,所以随手写了一个,记录在此: 
  
         
DELIMITER $$  
DROP PROCEDURE IF EXISTS inse</div>
                                </li>
                                <li><a href="/article/1260.htm"
                                       title="annot convert from HomeFragment_1 to Fragment" target="_blank">annot convert from HomeFragment_1 to Fragment</a>
                                    <span class="text-muted">百合不是茶</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/%E5%AF%BC%E5%8C%85%E9%94%99%E8%AF%AF/1.htm">导包错误</a>
                                    <div>创建了几个类继承Fragment, 需要将创建的类存储在ArrayList<Fragment>中; 出现不能将new 出来的对象放到队列中,原因很简单; 
    创建类时引入包是:import android.app.Fragment; 
  
   创建队列和对象时使用的包是:import android.support.v4.ap</div>
                                </li>
                                <li><a href="/article/1387.htm"
                                       title="Weblogic10两种修改端口的方法" target="_blank">Weblogic10两种修改端口的方法</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/weblogic/1.htm">weblogic</a><a class="tag" taget="_blank" href="/search/%E7%AB%AF%E5%8F%A3%E5%8F%B7/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><a class="tag" taget="_blank" href="/search/config.xml/1.htm">config.xml</a>
                                    <div>一.进入控制台进行修改    1.进入控制台:  http://127.0.0.1:7001/console     2.展开左边树菜单         域结构->环境->服务器-->点击AdminServer(管理) &</div>
                                </li>
                                <li><a href="/article/1514.htm"
                                       title="mysql 操作指令" target="_blank">mysql 操作指令</a>
                                    <span class="text-muted">征客丶</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                                    <div>一、连接mysql 
进入 mysql 的安装目录; 
$ bin/mysql -p [host IP 如果是登录本地的mysql 可以不写 -p 直接 -u] -u [userName] -p 
输入密码,回车,接连; 
 
二、权限操作[如果你很了解mysql数据库后,你可以直接去修改系统表,然后用 mysql> flush privileges; 指令让权限生效] 
1、赋权 
mys</div>
                                </li>
                                <li><a href="/article/1641.htm"
                                       title="【Hive一】Hive入门" target="_blank">【Hive一】Hive入门</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/hive/1.htm">hive</a>
                                    <div>Hive安装与配置 
Hive的运行需要依赖于Hadoop,因此需要首先安装Hadoop2.5.2,并且Hive的启动前需要首先启动Hadoop。 
  Hive安装和配置的步骤 
  
1. 从如下地址下载Hive0.14.0 
  
http://mirror.bit.edu.cn/apache/hive/ 
  
 2.解压hive,在系统变</div>
                                </li>
                                <li><a href="/article/1768.htm"
                                       title="ajax 三种提交请求的方法" target="_blank">ajax 三种提交请求的方法</a>
                                    <span class="text-muted">BlueSkator</span>
<a class="tag" taget="_blank" href="/search/Ajax/1.htm">Ajax</a><a class="tag" taget="_blank" href="/search/jqery/1.htm">jqery</a>
                                    <div>1、ajax 提交请求 
$.ajax({
			type:"post",
			url : "${ctx}/front/Hotel/getAllHotelByAjax.do",
			dataType : "json",
			success : function(result) {
				try {
					for(v</div>
                                </li>
                                <li><a href="/article/1895.htm"
                                       title="mongodb开发环境下的搭建入门" target="_blank">mongodb开发环境下的搭建入门</a>
                                    <span class="text-muted">braveCS</span>
<a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                                    <div>  
linux下安装mongodb 
1)官网下载mongodb-linux-x86_64-rhel62-3.0.4.gz 
2)linux 解压   
gzip -d mongodb-linux-x86_64-rhel62-3.0.4.gz; 
mv mongodb-linux-x86_64-rhel62-3.0.4 mongodb-linux-x86_64-rhel62-</div>
                                </li>
                                <li><a href="/article/2022.htm"
                                       title="编程之美-最短摘要的生成" target="_blank">编程之美-最短摘要的生成</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/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/%E7%BC%96%E7%A8%8B%E4%B9%8B%E7%BE%8E/1.htm">编程之美</a>
                                    <div>

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

public class ShortestAbstract {

	/**
	 * 编程之美 最短摘要的生成
	 * 扫描过程始终保持一个[pBegin,pEnd]的range,初始化确保[pBegin,pEnd]的ran</div>
                                </li>
                                <li><a href="/article/2149.htm"
                                       title="json数据解析及typeof" target="_blank">json数据解析及typeof</a>
                                    <span class="text-muted">chengxuyuancsdn</span>
<a class="tag" taget="_blank" href="/search/js/1.htm">js</a><a class="tag" taget="_blank" href="/search/typeof/1.htm">typeof</a><a class="tag" taget="_blank" href="/search/json%E8%A7%A3%E6%9E%90/1.htm">json解析</a>
                                    <div>   
       // json格式
	var people='{"authors": [{"firstName": "AAA","lastName": "BBB"},'
		                    +' {"firstName": "CCC&</div>
                                </li>
                                <li><a href="/article/2276.htm"
                                       title="流程系统设计的层次和目标" target="_blank">流程系统设计的层次和目标</a>
                                    <span class="text-muted">comsci</span>
<a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/%E6%A1%86%E6%9E%B6/1.htm">框架</a><a class="tag" taget="_blank" href="/search/%E8%84%9A%E6%9C%AC/1.htm">脚本</a>
                                    <div> 
                              流程系统设计的层次和目标 
 
 
 </div>
                                </li>
                                <li><a href="/article/2403.htm"
                                       title="RMAN List和report 命令" target="_blank">RMAN List和report 命令</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/list/1.htm">list</a><a class="tag" taget="_blank" href="/search/report/1.htm">report</a><a class="tag" taget="_blank" href="/search/rman/1.htm">rman</a>
                                    <div>LIST 命令 
使用RMAN LIST 命令显示有关资料档案库中记录的备份集、代理副本和映像副本的 
信息。使用此命令可列出: 
• RMAN 资料档案库中状态不是AVAILABLE 的备份和副本 
• 可用的且可以用于还原操作的数据文件备份和副本 
• 备份集和副本,其中包含指定数据文件列表或指定表空间的备份 
• 包含指定名称或范围的所有归档日志备份的备份集和副本 
• 由标记、完成时间、可</div>
                                </li>
                                <li><a href="/article/2530.htm"
                                       title="二叉树:红黑树" target="_blank">二叉树:红黑树</a>
                                    <span class="text-muted">dieslrae</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%8C%E5%8F%89%E6%A0%91/1.htm">二叉树</a>
                                    <div>    红黑树是一种自平衡的二叉树,它的查找,插入,删除操作时间复杂度皆为O(logN),不会出现普通二叉搜索树在最差情况时时间复杂度会变为O(N)的问题. 
    红黑树必须遵循红黑规则,规则如下 
    
1、每个节点不是红就是黑。     2、根总是黑的  &</div>
                                </li>
                                <li><a href="/article/2657.htm"
                                       title="C语言homework3,7个小题目的代码" target="_blank">C语言homework3,7个小题目的代码</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/c/1.htm">c</a>
                                    <div>1、打印100以内的所有奇数。 
# include <stdio.h>

int main(void)
{
	int i;

	for (i=1; i<=100; i++)
	{
		if (i%2 != 0)
			printf("%d ", i);
	}

	return 0;
}
 
 2、从键盘上输入10个整数,</div>
                                </li>
                                <li><a href="/article/2784.htm"
                                       title="自定义按钮, 图片在上, 文字在下, 居中显示" target="_blank">自定义按钮, 图片在上, 文字在下, 居中显示</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%AE%9A%E4%B9%89/1.htm">自定义</a>
                                    <div>#import <UIKit/UIKit.h>

@interface MyButton : UIButton

-(void)setFrame:(CGRect)frame ImageName:(NSString*)imageName Target:(id)target Action:(SEL)action Title:(NSString*)title Font:(CGFloa</div>
                                </li>
                                <li><a href="/article/2911.htm"
                                       title="MySQL查询语句练习题,测试足够用了" target="_blank">MySQL查询语句练习题,测试足够用了</a>
                                    <span class="text-muted">flyvszhb</span>
<a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                                    <div>http://blog.sina.com.cn/s/blog_767d65530101861c.html 
1.创建student和score表 
CREATE  TABLE  student ( 
id  INT(10)  NOT NULL  UNIQUE  PRIMARY KEY  , 
name  VARCHAR</div>
                                </li>
                                <li><a href="/article/3038.htm"
                                       title="转:MyBatis Generator 详解" target="_blank">转:MyBatis Generator 详解</a>
                                    <span class="text-muted">happyqing</span>
<a class="tag" taget="_blank" href="/search/mybatis/1.htm">mybatis</a>
                                    <div>  
MyBatis Generator 详解 
http://blog.csdn.net/isea533/article/details/42102297 
  
MyBatis Generator详解 
http://git.oschina.net/free/Mybatis_Utils/blob/master/MybatisGeneator/MybatisGeneator.</div>
                                </li>
                                <li><a href="/article/3165.htm"
                                       title="让程序员少走弯路的14个忠告" target="_blank">让程序员少走弯路的14个忠告</a>
                                    <span class="text-muted">jingjing0907</span>
<a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E5%88%92/1.htm">计划</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a>
                                    <div>  
无论是谁,在刚进入某个领域之时,有再大的雄心壮志也敌不过眼前的迷茫:不知道应该怎么做,不知道应该做什么。下面是一名软件开发人员所学到的经验,希望能对大家有所帮助 
  
1.不要害怕在工作中学习。  
只要有电脑,就可以通过电子阅读器阅读报纸和大多数书籍。如果你只是做好自己的本职工作以及分配的任务,那是学不到很多东西的。如果你盲目地要求更多的工作,也是不可能提升自己的。放</div>
                                </li>
                                <li><a href="/article/3292.htm"
                                       title="nginx和NetScaler区别" target="_blank">nginx和NetScaler区别</a>
                                    <span class="text-muted">流浪鱼</span>
<a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a>
                                    <div>NetScaler是一个完整的包含操作系统和应用交付功能的产品,Nginx并不包含操作系统,在处理连接方面,需要依赖于操作系统,所以在并发连接数方面和防DoS攻击方面,Nginx不具备优势。 
2.易用性方面差别也比较大。Nginx对管理员的水平要求比较高,参数比较多,不确定性给运营带来隐患。在NetScaler常见的配置如健康检查,HA等,在Nginx上的配置的实现相对复杂。 
3.策略灵活度方</div>
                                </li>
                                <li><a href="/article/3419.htm"
                                       title="第11章 动画效果(下)" target="_blank">第11章 动画效果(下)</a>
                                    <span class="text-muted">onestopweb</span>
<a class="tag" taget="_blank" href="/search/%E5%8A%A8%E7%94%BB/1.htm">动画</a>
                                    <div>index.html 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/</div>
                                </li>
                                <li><a href="/article/3546.htm"
                                       title="FAQ - SAP BW BO roadmap" target="_blank">FAQ - SAP BW BO roadmap</a>
                                    <span class="text-muted">blueoxygen</span>
<a class="tag" taget="_blank" href="/search/BO/1.htm">BO</a><a class="tag" taget="_blank" href="/search/BW/1.htm">BW</a>
                                    <div>http://www.sdn.sap.com/irj/boc/business-objects-for-sap-faq 
  
Besides, I care that how to integrate tightly. 
  
By the way, for BW consultants, please just focus on Query Designer which i</div>
                                </li>
                                <li><a href="/article/3673.htm"
                                       title="关于java堆内存溢出的几种情况" target="_blank">关于java堆内存溢出的几种情况</a>
                                    <span class="text-muted">tomcat_oracle</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a><a class="tag" taget="_blank" href="/search/jdk/1.htm">jdk</a><a class="tag" taget="_blank" href="/search/thread/1.htm">thread</a>
                                    <div>【情况一】:      
java.lang.OutOfMemoryError: Java heap space:这种是java堆内存不够,一个原因是真不够,另一个原因是程序中有死循环;     如果是java堆内存不够的话,可以通过调整JVM下面的配置来解决:     <jvm-arg>-Xms3062m</jvm-arg>     <jvm-arg>-Xmx</div>
                                </li>
                                <li><a href="/article/3800.htm"
                                       title="Manifest.permission_group权限组" target="_blank">Manifest.permission_group权限组</a>
                                    <span class="text-muted">阿尔萨斯</span>
<a class="tag" taget="_blank" href="/search/Permission/1.htm">Permission</a>
                                    <div>结构 
继承关系 
public static final class Manifest.permission_group extends Object 
java.lang.Object 
android. Manifest.permission_group 常量 
ACCOUNTS 直接通过统计管理器访问管理的统计 
COST_MONEY可以用来让用户花钱但不需要通过与他们直接牵涉的权限 
D</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>