精华内容
下载资源
问答
  • 排他思想几种思路

    2020-05-30 22:37:10
    排他思想的优化版` Document 哼哼 哼哼 哼哼 哼哼 哼哼 <script> //第一思路 : 好理解,代码效率不高 (存在重复设置) 先无条件的把所有按钮的样式全部取消 for (var j = 0; j < ...

    排他思想的优化版`

    Document 哼哼 哼哼 哼哼 哼哼 哼哼
    <script>
      //第一种思路 : 好理解,代码效率不高 (存在重复设置)
                先无条件的把所有按钮的样式全部取消
                for (var j = 0; j < buttonList.length; j++) {
                buttonList[j].style.backgroundColor = '';
                 buttonList[j].innerText = '哼哼';
               };
                 设置this的样式
               this.style.backgroundColor = 'pink';
               this.innerText = '哈哈';
    </script>
    
    ``` 排他思想的核心思路是: 1.获取按钮元素,然后遍历此元素得到一个伪数组; 2.我们先把所有的按钮背景颜色去掉 (干掉所有人); 3.再重新给我们点击的按钮添加背景颜色(留下我自己);

    这种写法有个致命的缺点,就是每次运行此代码都会遍历一次数组去掉每个元素的样式(包括自己),然后在给我么需要的元素添加样式,浏览器的重复执行了很多任务,代码运行效率不高。那么我们能不能只给我们需要按钮修改样式。

    第二种思路

    //第二种思路 : 不好理解,代码效率高
    //排他思想 : 遍历每一个按钮,判断这个按钮与this是不是同一个

                for (var j = 0; j < buttonList.length; j++) {
                    if (buttonList[j] == this) {//是自己
                        buttonList[j].style.backgroundColor = 'pink';
                        buttonList[j].innerText = '哈哈';
        
                    } else {//不是自己
                        buttonList[j].style.backgroundColor = '';
                        buttonList[j].innerText = '哼哼';
                    };
                };
    

    第二种排他思想跟第一种没上面太大的区别,只是增加了if判断;即,判断是自己就修改样式,不是自己就设置默认样式,大大提高了代码效率

    展开全文
  • 几种数据库设计思想

    千次阅读 2017-05-18 18:37:29
    高效数据库设计思想——提高查询效率:设计数据库表结构时,我们首先要按照数据库的三大范式进行建立数据。 1. 1NF每列不可拆分 2. 2NF确保每个表只做一件事情 3. 3NF满足2NF,消除表中的依赖传递。 三大...
    四种高效数据库设计思想——提高查询效率:设计数据库表结构时,我们首先要按照数据库的三大范式进行建立数据。
    1. 1NF每列不可拆分
    2. 2NF确保每个表只做一件事情
    3. 3NF满足2NF,消除表中的依赖传递。
    三大范式的出现是在上世纪70年代,由于内存资源比较昂贵,所以严格按照三大范式进行数据库设计。而如今内存变得越来越廉价,在考虑效率和内存的基础上我们可以做出最优选择以达到最高效率。建立数据库先按照三大范式进行建立,如果出现由于业务逻辑查询而造成效率低的现象,可以违反三大范式进行修改数据库。总之,效率第一。

    分散计算:
    分散计算的优缺点:

    缺点:代码量太大、维护困难。
    优点:提高运行效率、查询速度快、提高了数据的检索效率。

    什么情况下使用分散计算

    合同和货物是一对多的关系,货物和附件是一对多的关系。如果按照传统的方式获得某个合同的总金额:那么我们需要从查询合同———合同下的货物——货物下的附件。从页面进行计算:合同金额=货物单价数量+附件单价数量 (每个货物的总金额计算出来+每个货物下所有附件的总金额计算出来 然后加到一起构成合同的总金额)这样页面上上的数据计算量是非常庞大的,所以就会造成用户少的时候页面加载速度还可以,用户量一旦多起来就会造成页面加载很慢,用户不愿等待的现象出现。

    措施:

    合同、货物、附件中分别加入总金额的冗余字段:可以在平时添加货物时,添加附件时,分别计算出货物总金额,附件总金额,加到数据库中,在更新购销合同金额。这样就相当于将一次更新的工作量分散到平时的多次计算过程中,所以查询购销合同总金额的速度就会很快。从数据库查询,远比从页面计算效率要高N多倍。

    打断设计思想:
    当关联查询的层级大于4层时,就要考虑打断设计,这样可以借助跳跃查询实现查询速度翻倍。
    就是在传统的一对多关系中,都会在多方加入一个一方的主键作为外键,但在是在打断设计思想的指导下,不会这样实现,它会在一的一方加入一个冗余字段,用于保存多的一方的主键,并且指定分隔符进行分隔。虽然多的一方没有加入一的一方的主键做外键,但仍保持了原有的一对多关系。
    真正的实现原理:就是通过打段字段,实现数据的冗余,从而一样的可以解决一个报运单下多个购销合同的问题。1.传统做法:

    出口报运单对象——加载出购销合同的集合——遍历出每个购销合同——通过购销合同得到货物——再通过货物得到附件。

    2.打段设计基础上的做法:

    出口报运单——得到它的一个字段(购销合同id形成的集合)——直接到货物表中进行查询(from ContractProduct cp where cp.contract.id in(购销合同id形式的集合))

    打断设计+跳跃查询做法:
    按照传统设计方法:

    财务如果想知道这笔款项从哪个货物附件是从哪个生产厂家生产的:一个环节套一个环节,不可跳跃。一对一对应关系,通过对象导航得用很多HQL语句才能够导到厂家信息。关联7级才能找到目标对象。加载速度一定很慢!

    打断设计+跳跃查询做法应用

    跳跃查询

    跳跃查询的前提:提前采用打断设计表的优化,而打断设计思想的关键是字段的冗余,就是在报运单中加入一个冗余字段吗,放入购销合同的id集合。

    财务人员得到财务报运单ID——装箱单(Export_IDS)——报运单(Export_ID in(Export_IDS))——跳跃查询直接查询货物(from CONTRACT_PRODUCT WHERE CONTRACT_PRODUCT_ID IN (购销合同里面合同编号的集合(正好是用逗号隔开的一堆值即CONTRACT_IDS的值)))——货物里本身就有厂家的厂家名信息等。操作完成!
    三次查询就可以拿到最终结果。

    数据搬家:
    数据搬家也是数据库优化的一种:表级别的数据冗余,再添加一个出口报运单时,就能得到这个报运单所报运的货物和附件,如何实现报运单下货物和附件的数据,实现原理就是首先找到购销合同对象,再得到购销合同下的货物和附件,针对货物和附件分别进行数据拷贝。
    应用:
    传统:通过商品明细——货号——查询货物对象——对象导航得到附件
    数据搬家:商品明细对象导航——附件信息
    之前查三次,现在查两次就可以得到报运商品的信息。
    冗余没问题,效率第一位。

    小结:
    以上四种方式均违反了数据库的三大范式,采用了数据冗余方式,小编不是主张大家采用数据冗余,而是在三大范式和查询效率发生冲突的情况下,我们采用违法三大范式,选择效率优先原则!这四种方式,是我工作中用到的,效率较高的四中方式,与大家分享!
    展开全文
  • 几种算法思想

    千次阅读 2011-06-20 13:46:00
    一般来说,递归需要边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。 采用递归描述的算法通常这样的特征: 1)为求解规模为N的问题,设法将它分解成规模较小的...

    1、递归法

    所谓递归,就是指如果需要求解当前状态就需要求解其依赖的迁移状态。

    一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。

    采用递归描述的算法通常有这样的特征:

    1)为求解规模为N的问题,设法将它分解成规模较小的问题;

    2)然后从这些小问题的解方便地构造出大问题的解,并且这些规模较小的问题也能采用同样的分解和综合方法,分解成规模更小的问题,并从这些更小问题的解构造出规模较大问题的解。

    3)这样的分解方法具有收敛性。即存在一个递归返回状态。

    例1.1  求最大公约数--欧几里德算法

     

     

    2、穷举法

    所谓穷举法就是遍历所有可能的状态。

    例如:密码的暴力破解法就是采用这种方法。

    3、化归法

    所谓化归法是指,不直接解决原问题,而是把所要解决的问题,经过某种变化,使之归结为另一个(问题*),再通过(问题*)的求解,把解得结果作用于原有问题,从而使原有问题得解。

    化归的原则是以已知的、简单的、具体的、特殊的、基本的知识为基础,将未知的化为已知的,复杂的化为简单的,抽象的化为具体的,一般的化为特殊的,非基本的化为基本的,从而得出正确的解答.

    此在数学上的应用非常常见。同时,一个逻辑问题的解决的一些列子步骤不正是化归法的体现吗?

     

    4、迭代法

    迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程。

    最常见的迭代法是牛顿法。其他还包括最速下降法共轭迭代法变尺度迭代法最小二乘法线性规划非线性规划单纯型法惩罚函数法斜率投影法遗传算法模拟退火等等。

     

    利用迭代算法解决问题,需要做好以下三个方面的工作:

    1)迭代变量:在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。

    2)迭代关系:指如何从变量的前一个值推出其下一个值的公式(或关系)。迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成。

    3)迭代过程:迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定。对于前一种情况,可以构建一个固定次数的循环来实现对迭代过程的控制;对于后一种情况,需要进一步分析出用来结束迭代过程的条件。

     

    迭代法都可以转为递归法。迭代法可以理解为具有递归性质的非递归解法。当然,非递归解法还可利用栈的思想。

     

    例4.1 兔子数量问题

    描述:一个饲养场引进一只刚出生的新品种兔子,这种兔子从出生的下一个月开始,每月新生一只兔子,新生的兔子也如此繁殖。如果所有的兔子都不死去,问到第 12 个月时,该饲养场共有兔子多少只?

    分析: 这是一个典型的递推问题。我们不妨假设第 1 个月时兔子的只数为 u 1 ,第 2 个月时兔子的只数为 u 2 ,第 3 个月时兔子的只数为 u 3 ,……根据题意,“这种兔子从出生的下一个月开始,每月新生一只兔子”,则有

       u 1 = 1 , u 2 = u 1 + u 1 × 1 = 2 , u 3 = u 2 + u 2 × 1 = 4 ,……

       根据这个规律,可以归纳出下面的递推公式:

       u n = u( n - 1 )× 2 (n ≥ 2)

     

     

    5、分治法

    所谓分治法,就是分而治之。将一个问题分解为多个规模较小的子问题,这些子问题互相独立并与原问题解决方法相同。递归解这些子问题,然后将这各子问题的解合并得到原问题的解。

     

    适用问题的特征:

    • 该问题的规模缩小到一定的程度就可以容易地解决
    • 该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质。所谓最优子结构是指:问题的最优解所包含的子问题的解也是最优的。
    • 该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题

    一般实现步骤:分解--->递归求解--->合并

    例5.1  河内塔问题

    例5.2 归并排序

    6、动态规划

    将待求解问题分解成若干个子问题,但是经分解得到的子问题往往不是互相独立的,如果能够保存已解决的子问题的答案,而在需要时再找出已求得的答案,就可以避免大量重复计算。

     

    适合问题的特征:

    • 在递归计算中,许多子问题将被重复计算多次
    • 具有最优子结构性质。所谓最优子结构是指:问题的最优解所包含的子问题的解也是最优的。即满足最优化原理。

    解决步骤:

    1)找出最优解性质,划分子问题

    2)递归的定义每阶段最优值

    3)递归计算最优值

    4)根据计算最优值时得到的信息,构造最优解

     

    例6.1 求最长公共子串

    详见http://blog.csdn.net/wcyoot/archive/2011/05/22/6438290.aspx

     

    例6.2 0-1背包问题

    7、贪心算法

    动态规划是贪心算法的基础。贪心算法是通过做一系列的选择来给出某一问题的最优解。对算法中的每一个决策点,做一个当时(看起来是)最佳的选择。这种启发式策略并不总是能产生出最优解。

     

    一般步骤:

    1)决定问题的最优子结构

    2)设计出一个递归解

    3)证明在递归的任一阶段,最优选择之一总是贪心选择。那么,做贪心选择总是安全的。

    4)证明通过做贪心选择,所有子问题(除一个以外)都为空。

    5)设计出一个实现贪心策略的递归算法。

    6)将递归算法转换成迭代算法。

    通常直接做出贪心选择来构造子结构,以产生一个待优化解决的子问题。更一般地,可以根据以下步骤设计贪心算法:

    1)将优化问题转化成一个这样的问题,即先做出选择,再解决剩下的一个子问题。

    2)证明原问题总是有一个最优解是做贪心选择得到的,从而说明贪心选择是安全的。

    3)说明在做出贪心选择后,剩余的子问题具有这样的一个性质。即如果将子问题的最优解和我们所作的贪心选择联合起来,可以得出原问题的一个最优解。

     

    贪心选择性质:一个全局最优解可以通过局部最优(贪心)选择来达到。换句话说,当考虑做如何选择时,我们只考虑对当前问题的选择而不考虑子问题的结果。

    在动态规划中,每一步都要做出选择,但是这些选择依赖于子问题的解。因此,解动态规划问题一般是自底向上,从小子问题处理至大子问题。在贪心算法中,我们所做的总是当前看似最佳的选择,然后再解决选择之后的所出现的子问题。贪心算法所作的当前选择可能要依赖与已经作出的选择,但不依赖于有待于做出的选择或子问题的解,因此贪心策略通常是自顶向下地做的,一个一个地做出贪心选择,不断地将给定的问题实例归约为更小的问题。

    最优子结构:对一个问题来说,如果它的一个最优解包含了其子问题的最优解,则称该问题具有最优子结构。

    例7.1 部分背包问题

    描述:把一系列的物品放入总量限制的包里,要求价值最大。但是物品可以分割为一部分。

    8、回溯法

    回溯法也称试探法,它的基本思想是:从问题的某一种状态(初始状态)出发,搜索从这种状态出发所能达到的所有“状态”,当一条路走到“尽头”的时候(不能再前进),再后退一步或若干步,从另一种可能“状态”出发,继续搜索,直到所有的“路径”(状态)都试探过。这种不断“前进”、不断“回溯”寻找解的方法,就称作“回溯法”。

    用回溯算法解决问题的一般步骤为:    一、定义一个解空间,它包含问题的解。    二、利用适于搜索的方法组织解空间。

       三、利用深度优先法搜索解空间。

    四、利用限界函数避免移动到不可能产生解的子空间。问题的解空间通常是在搜索问题的解的过程中动态产生的,这是回溯算法的一个重要特性

    回溯法是一个既带有系统性又带有跳跃性的的搜索算法。它在包含问题的所有解的解空间树中,按照深度优先的策略,从根结点出发搜索解空间树。算法搜索至解空间树的任一结点时,总是先判断该结点是否肯定不包含问题的解。如果肯定不包含,则跳过对以该结点为根的子树的系统搜索,逐层向其祖先结点回溯。否则,进入该子树,继续按深度优先的策略进行搜索。回溯法在用来求问题的所有解时,要回溯到根,且根结点的所有子树都已被搜索遍才结束。而回溯法在用来求问题的任一解时,只要搜索到问题的一个解就可以结束。这种以深度优先的方式系统地搜索问题的解的算法称为回溯法,它适用于解一些组合数较大的问题。

    9、分支限界法

    分支限界 (branch and bound) 算法是一种在问题的解空间树上搜索问题的解的方法。但与回溯算法不同,分支定界算法采用广度优先或最小耗费优先的方法搜索解空间树,并且,在分支定界算法中,每一个活结点只有一次机会成为扩展结点。利用分支定界算法对问题的解空间树进行搜索,它的搜索策略是:

    1 .产生当前扩展结点的所有孩子结点;

    2 .在产生的孩子结点中,抛弃那些不可能产生可行解(或最优解)的结点;

    3 .将其余的孩子结点加入活结点表;

    4 .从活结点表中选择下一个活结点作为新的扩展结点。如此循环,直到找到问题的可行解(最优解)或活结点表为空。

    分支限界法的思想是:首先确定目标值的上下界,边搜索边减掉搜索树的某些支,提高搜索效率

    例9.1 旅行商问题

    问题描述:给定n个城市,有一个旅行商从某一城市出发,访问每个城市各一次后再回到原出发城市,要求找出的巡回路径最短。

    展开全文
  • 快速排序算法的思想几种实现方式

    万次阅读 多人点赞 2017-04-12 08:43:39
    快速排序算法是基于分治策略的另一个排序算法。 该方法的基本思想是: 1.先从数列中取出一个数作为基准数,记为x。 2.分区过程,将不小于x的数全放到它的...快排目前两类实现算法,第一是标准算法,第二是两头

    快速排序算法是基于分治策略的另一个排序算法。

    该方法的基本思想是:

    1.先从数列中取出一个数作为基准数,记为x。

    2.分区过程,将不小于x的数全放到它的右边,不大于x的数全放到它的左边。(这样key的位置左边的没有大于key的,右边的没有小于key的,只需对左右区间排序即可)

    3.再对左右区间重复第二步,直到各区间只有一个数


    快排目前有两类实现算法,第一种是标准算法,第二种是两头交换法。总的思想与上面三步一样,在细节处理上有一些差异。

    标准算法思想及实现

    标准算算法采用的思想是挖坑填坑的思想:

    以一个数组作为示例,取区间第一个数为基准数。

    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    72

    6

    57

    88

    60

    42

    83

    73

    48

    85

    初始时,i = 0;  j = 9;   X = a[i] = 72

    由于已经将a[0]中的数保存到X中,可以理解成在数组a[0]上挖了个坑,可以将其它数据填充到这来。

    j开始向前找一个比X小或等于X的数。当j=8,符合条件,将a[8]挖出再填到上一个坑a[0]中。a[0]=a[8]; i++;  这样一个坑a[0]就被搞定了,但又形成了一个新坑a[8],这怎么办了?简单,再找数字来填a[8]这个坑。这次从i开始向后找一个大于X的数,当i=3,符合条件,将a[3]挖出再填到上一个坑中a[8]=a[3]; j--;

     

    数组变为:

    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    48

    6

    57

    88

    60

    42

    83

    73

    88

    85

     i = 3;   j = 7;   X=72

    再重复上面的步骤,先从后向前找,再从前向后找

    j开始向前找,当j=5,符合条件,将a[5]挖出填到上一个坑中,a[3] = a[5]; i++;

    i开始向后找,当i=5时,由于i==j退出。

    此时,i = j = 5,而a[5]刚好又是上次挖的坑,因此将X填入a[5]

     

    数组变为:

    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    48

    6

    57

    42

    60

    72

    83

    73

    88

    85

    可以看出a[5]前面的数字都小于它,a[5]后面的数字都大于它。因此再对a[0…4]a[6…9]这二个子区间重复上述步骤就可以了。

    对挖坑填数进行总结

    1.i =L; j = R; 将基准数挖出形成第一个坑a[i]

    2.j--由后向前找比它小的数,找到后挖出此数填前一个坑a[i]中。

    3.i++由前向后找比它大的数,找到后也挖出此数填到前一个坑a[j]中。

    4.再重复执行23二步,直到i==j,将基准数填入a[i]中。

    代码实现如下:

    #include <iostream>
    using namespace std;
    void quick_sort(int s[],int l, int r){
        int i = l,j = r, x = s[l];
        while(i < j){
            while(i < j && s[j] > x) j--;
            if(i < j)
                s[i++] = s[j];
            while(i < j && s[i] < x) i++;
            if(i < j)
                s[j--] = s[i]; 
        }
        //此时i==j,下面s[i]或者s[j]都可以,j-1,j+1也ok
        s[j] = x;
        if (l<i) quick_sort(s,l, i - 1);
        if (r>i) quick_sort(s,i + 1, r);
    };
    int main()
    {
     int test[] = {34,5,4,5,3,2,6,90,5};
        quick_sort(test,0,8);
        for(auto c : test){
            cout<<c<<"  ";
        }
        cout<<endl;
     return 0;
    }
    

    两头交换法思想及实现

    两头交换法与标准算法思想的差异是,先从左边开始找到大于基准值的那个数,再从右边找到小于基准值的那个数,将两个数交换(这样比基准值小的都在左边,比基准值大的都在右边)。直到数列分成大于基准值和小于基准值的两个区间,以这两个区间进行同样的排序操作。

    代码实现如下:

    #include <iostream>
    using namespace std;
    void quickSort(int a[],int beg,int end){
       //partition非递归实现,官方版
       if(beg >= end) return;
        int i = beg, j = end, x = a[(i + j)>>1],tmp =0;//这里基准值选了中间的值
        while(i <= j){//取等号,确保分成两个不相交区间
            while( a[i] < x) i++;
            while(a[j] > x) j--;
            if(i <= j ){
                tmp = a[i];
                a[i] = a[j];
                a[j] = tmp;
                i++;
                j--;
            }     
        }
        quickSort(a,beg,j);
        quickSort(a,i,end);
    };
    int main()
    {
        int test[] = {34,6,4,5,1,2,6,90,7};
        quickSort(test,0,8);
        for(auto c : test){
            cout<<c<<"  ";
        }
        cout<<endl;
        return 0;}
    

    上面的算法是两头交换法官方的版本,边界情况较少,比较健壮。

    两头交换法还有另一个实现方式,这种实现方式,基准值只能选区间第一个值或最后一个值。基准值不参与交换,将除基准值之外的所有值按照与基准值的大小关系分成两部分,然后将区间分界点的值填到基准值的坑里,将基准值放在区间分界点。对于基准值左右的区间进行再次排序。

    代码实现:


    #include <iostream>
    using namespace std;
    //两点交换法,固定轴点的实现,基准点不参与排序
    //基准点选第一个值,中间交换点选j,
    //基准点选第一个值,中间交换点选i
    //不然,会出现死循环
    //将除第一个值之外的其他值交换使得小于基准值的在前,大于的在后,然后最中间点较小的j位置的值的与第一个值交换,交换后前面的小于基准值,后面的大于基准值
    int partition(int b[],int first,int last){
        int x = b[first],temp = 0;
        int i = first,j = last + 1;//因为后面判断是--j
        while(true){
            while(b[++i] < x && i <= last);
            while(b[--j] > x);
            if(i >= j){
                break;    
            }
            temp = b[i];
            b[i] = b[j];
            b[j] = temp;
        }
        b[first] = b[j];
        b[j] = x;
        return j;
    };
    
    void quickSort(int a[],int beg,int end){
        if(beg < end){
            int q = partition(a,beg,end);
            quickSort(a,beg,q-1);
            quickSort(a,q+1,end);
        }
    };
    int main()
    {
    	int test[] = {34,5,4,5,3,2,6,90,5};
        quickSort(test,0,8);
        for(auto c : test){
            cout<<c<<"  ";
        }
        cout<<endl;
    	return 0;
    }

    注意:两头交换法,最后填坑点的选择与基准值的选择有关系,当基准值在区间前半部分则填坑点选值较小的j,反之则选i.

    效率分析

    快排的时间复杂度理论上是Nlog(N). i,j点的值与基准值比较时取“严格大于/小于”还是”大于等于/小于等于”会影响复法最坏复杂度。一般的想法是用大于等于/小于等于,忽略与枢纽元相同的元素,这样可以减少不必要的交换,因为这些元素无论放在哪一边都是一样的。但是如果遇到所有元素都一样的情况,这种方法每次都会产生最坏的划分,也就是一边1个元素,令一边n-1个元素,使得时间复杂度变成O(n2)。而如果用严格大于/小于,虽然两边指针每此只挪动1位,但是它们会在正中间相遇,产生一个最好的划分,时间复杂度为log2nlog2n。但是当取严格大于/小于的时候,交换的次数也会相应的增加。实际的交换次数应该是相同的。

    心得

    一般建议使用标准算法或者两头交换算法的标准版,这两个版本边界情况较少,适用面广。
    
    
    展开全文
  • 你知道几种编程思想

    千次阅读 2017-03-10 11:49:41
    四大编程思想简述 1)POP--面向过程编程(Process-oriented programming ): 面向过程编程是以功能为中心来进行思考和组织的一编程方法,它强调的是系统的数据被加工和处理的过程...这种过程化的思想是一很朴素和
  • 几种降维思想方法总结

    万次阅读 2015-09-29 15:15:52
    前文提到进行属性选择,当然这是一很好的方法,这里另外提供一从高维特征空间向低纬特征空间映射的思路。 数据降维的目的  数据降维,直观地好处是维度降低了,便于计算和可视化,其更深层次的意义在于有效...
  • 几种排序算法的思想

    万次阅读 2009-01-04 00:24:00
    经过一段时间的学习和编程,我已对上述几种排序方法熟练掌握或有所了解。在此基础上,经过我的思考和实践,我研究出了一种新的排序算法:分段插入排序。 分段插入排序 已知一组升序排列数据a[1]、a[2]、……a...
  • 不幸的是,软件的本质是逻辑,解决方案的设计是要借助某种解决问题或编程的思想的。本文试图从抽象层面概括一点编程思想方面的东西。  一 c语言  1、相关概念:实模式、保护模式、调度、中断、调用栈、回调...
  • Java 中几种锁?

    千次阅读 2020-07-13 08:47:21
    Java 中几种锁? 文章目录Java 中几种锁?前言1.锁的 7 大分类2.偏向锁/轻量级锁/重量级锁3.可重入锁/非可重入锁4.共享锁/独占锁5.公平锁/非公平锁6.悲观锁/乐观锁7.自旋锁/非自旋锁8.可中断锁/不可中断锁9....
  • 语音识别是完成语音到文字的转换。自然语言理解是完成文字到语义的转换。语音合成是用语音方式输出用户想要的信息...而语音识别系统的输入是语音,其复杂度要大得多,特别是口语 很多的不确定性。人与人交流时,往...
  • 商业合作模式有几种

    万次阅读 2019-06-18 23:36:00
    一般公司之间合作以下: 一、六合作模式 1、资源互换:资源互换是一双方商定在一段时间内彼此相互交换现金的金融交易。 2、利益均分:利益均分是在一定的利益格局和体系下出现的利益体系相对和平共处、相.....
  • POSITION定位几种?各什么特点?
  • 企业管理系统有几种类型,分别是什么?
  • 常见的图像分割方法以下几种

    万次阅读 多人点赞 2018-04-19 18:33:08
    常见的图像分割方法以下几种:1.基于阈值的分割方法 灰度阈值分割法是一种最常用的并行区域技术,它是图像分割中应用数量最多的一类。阈值分割方法实际上是输入图像f到输出图像g的如下变换: 其中,T为阈值;...
  • JS的几种设计模式

    千次阅读 多人点赞 2020-03-06 21:36:24
    JS的几种简单设计模式
  • 简述几种人脸识别的主要方法

    万次阅读 2019-05-29 08:33:58
    弹性图匹配法在二维的空间中定义了一对于通常的人脸变形具有一定的不变性的距离,并采用属性拓扑图来代表人脸,拓扑图的任一顶点均包含一特征向量,用来记录人脸在该顶点位置附近的信息。该方法结合了灰度特性和...
  • 实现AOP的几种方式

    万次阅读 2018-05-15 15:00:17
    AOP是一种编程思想,是OOP编程思想的...AOP的实现很多种,下面简单介绍几种。 测试AOP需要的一些基础类 Font.java package com.java.proxy; import lombok.Data; @Data public class Font { private St...
  • 异步编程几种方法来实现

    千次阅读 2018-06-22 10:52:19
    异步编程几种方法来实现?1.背景介绍 JavaScript的执行环境是单线程的,单线程的好处是执行环境简单,不用去考虑诸如资源同步,死锁等多线程阻塞式编程等所需要面对的恼人的问题。但带来的坏处是当一个任务执行...
  • 几种关键词算法

    万次阅读 2017-09-18 17:42:38
    几种关键词提取介绍:TextRank、LDA、TPR
  • 线程间通信的几种实现方式

    万次阅读 多人点赞 2019-01-13 07:43:41
    线程间通信的几种实现方式 首先,要短信线程间通信的模型两种:共享内存和消息传递,以下方式都是基本这两种模型来实现的。我们来基本一道面试常见的题目来分析: 题目:两个线程A、B,A线程向一个集合...
  • java中的锁几种

    万次阅读 2018-01-02 15:50:57
    非公平锁是指多个线程获取锁的顺序并不是按照申请锁的顺序,可能后申请的线程比先申请的线程优先获取锁。可能,会造成优先级反转或者饥饿现象。对于Java ReentrantLock而言,通过构造函数指
  • PLC有几种编程语言?各有什么特点?

    千次阅读 2019-01-29 13:20:32
    梯形图编程语言是从继电器控制系统原理图的基础上演变而来的,与继电器控制系统梯形图的基本思想是一致的,只是在使用符号和表达方式上一定区别。 PLC的设计初衷是为工厂车间电气技术人员而使用的,为了符合继电...
  • 算法思想有很多,业界公认的常用算法思想有8,分别是枚举、递推、递归、分治、贪心、试探法、动态迭代和模拟。当然8只是一个大概的划分,是一个“仁者见仁、智者见智”的问题。 1.1 枚举算法思想 知识点讲解...
  • 常见的几种Sort排序算法

    千次阅读 2017-07-02 14:07:42
    几种常见的Sort排序算法 1. 排序的基本概念 n个记录的序列,其相应关键字的序列是,相应的下表...常见的Sort排序可分为如下几种: 3. 几种排序算法的具体介绍与实现 (1)直接插入排序 插入排序的基本思想是:在一
  • 几种常见的预测模型

    万次阅读 多人点赞 2018-03-26 16:14:42
    几种常见的预测模型1.趋势外推预测方法趋势外推预测方法是根据事物的历史和现实数据,寻求事物随时间推移而发展变化的规律,从而推测其未来状况的一种常用的预测方法。 趋势外推法的假设条件是: (1)假设事物发展...
  • 目前应用最为广泛的集群计算技术可以分为三大类:高可用性集群技术、高性能计算集群技术和高可扩展性集群技术。下面我们将对这三集 群技术进行一下简单的介绍。  1、高可用性集群技术 高可用性集群,英文...
  • 求圆周率的几种算法

    千次阅读 2019-03-20 12:05:34
    今天做PAT练习题一道题让求圆周率的近似值,看起来很容易实现是吧,但问题是我不知道算法,好吧承认自己数学基础不好╮(╯﹏╰)╭,下面是我在网上搜集到的几种算法: (随机投点法)蒙特卡洛算法 此方法的核心...
  • Redis几种集群模式

    万次阅读 2018-11-28 14:22:16
    现在越来越多的项目都会利用到redis,多实例redis服务比单实例要复杂的多...我们常用sharding技术来对此进行管理,其集群模式主要以下几种方式: 主从复制 哨兵模式 Redis官方 Cluster集群模式(服务端sharding)...
  • 几种排序算法

    千次阅读 2018-09-12 13:06:33
    本文转载自码农网:...查找和排序算法是算法的入门知识,其经典思想可以用于很多算法当中。因为其实现代码较短,应用较常见。所以在面试中经常会问到排序算法及其相关的问题。但万...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 583,477
精华内容 233,390
关键字:

思想分为几种