zoukankan      html  css  js  c++  java
  • 每周感想和阅读内容

    这周学习了怎么画判断表和判断树,也明白了判断树(Decision Tree)是判断表的变形,一般比判断表更直观、易于理解。判断树代表的意义是:左边是树根,是决策序列的...判断树(Decision Tree)是判断表的变形,一般比判断表更直观、易于理解。判断树代表的意义是:左边是树根,是决策序列的。

    阅读内容:(代码优化)

    优化原则:

    1: 在能应付当前性能需求的情况下,不建议进行性能优化。

    2: 仅仅优化性能瓶颈

    3: 编码时必须进行压力测试

    4: 优化时,考虑现实生活中遇到的问题,现实如何处理,代码也如何处理。

    5: 优化的唯一方法:去掉没有必要的操作 和 采取高效的算法。可以看到所有的优化方法都离不开这条原则,而最常用、也最容易发现的方案就是去掉没必要的操作。

    代码优化

     代码优化的唯一目的: 减少执行时间。

     两种优化方法: 减少没必要的内存分配;减少没必要的计算。

           当然这两种方法一般都会同时出现,如分配没必要的内存,分配这个操作就是没必要的计算。

    内存分配:

        最好的效果:一次申请正好足够的内存。不过一般都做不到,只能尽可能。

        1:比如Java中的'+'进行字符串连接,不断产生新的char[]数组后又废弃不用。

        2:避免频繁的内存回收,对某些大数据任务可以多分配内存,减少GC的次数。

    计算:

        计算一般涉及算法(数据结构)和缓存。

        1: 算法(数据结构)当然越快越好,比如:hashSet的搜索效率就比ArrayList高

        2: 不需要重新获取的东西就可以缓存起来,比如:处理过程中的中间结果

        3: 如果某些操作需要创建某些资源,比如网络连接。那么最好不要每次操作都创建一个,而是一个连接进行多次操作。

    策略优化:

      以不同的交互策略来达到用户一致的体验。

      最常用的策略:当用户操作时才进行处理,将集中式处理改为分散式。

    例子1:懒加载

    比如一张单据有很多子页签,用户查看时单据仅仅加载单据的数据,而不需要加载子页签的数据。只有用户点击子页签时才加载对应的页签数据。

    这样就将集中式的查询分散到用户操作中去,提高用户的体验并减少系统瞬间压力。

    例子2:

    这里借用一下JavaEye中别人讨论过的例子:

       某个系统要求在某个时间将用户积分清零的需求。

       最直接的方案: 定时将系统中所有的用户积分清零。其弊端在于:如果系统用户量特别大,则在一小段时间内用户将不可进行积分操作。

       优化后的策略:用户进行积分操作是分散的,同一时间进行积分操作的压力是很小。因此可以考虑在用户进行积分操作时才考虑是否进行积分清零。

  • 相关阅读:
    NET打包時加入卸载功能
    c#水晶报表注册码
    sqlserver:某年份某月份 是否在某时间段内的函数
    修改KindEditor编辑器 版本3.5.1
    Flash大文件上传(带进度条)
    让.Net程序脱离.net framework框架运行的方法(转载)
    夏天到了,什么时候园子的T恤可以出来?
    VS2005项目的安装与布署
    解决Select覆盖Div的简单直接的方法
    .Net向Page和UpdatePanel输出JS
  • 原文地址:https://www.cnblogs.com/ll121214/p/5432959.html
Copyright © 2011-2022 走看看