精华内容
下载资源
问答
  • 我们通过Bethe ansatz和共形理论方法研究了一维(1D)有吸引力的Hubbard模型在部分极化阶段各种相关函数的远距离渐近行为。 我们特别发现这些相关函数随空间幂律衰减振荡行为,其中一对(自旋)相关函数以频率...
  • 文章目录函数的节流(截流)与防抖一、节流时间戳实现定时器版(推荐)对比时间戳版和定时器应用场景二、防抖时间戳版(不推荐实用,仅参考)定时器版(推荐)应用场景小结 函数的节流(截流)与防抖 节流和防抖是...


    函数的节流(截流)与防抖

    节流和防抖是前端工作中使用频率很高的技巧,合理使用可以提高前端性能,减轻服务器压力。

    我们通过输入框来观察时间触发频率以及触发时获取到的值。

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
    </head>
    
    <body>
      <input type="text">
      <script>
    	// 目标输入框
        const ip = document.getElementsByTagName('input')[0]
        // 用户输入后触发的事件
        function input(value) {
      		console.log(value.target.value, '----->input')
    	}
      </script>
    </body>
    </html>
    

    一、节流

    在一定时间内,用户重复操作不执行对应的方法,用来稀释函数触发的频率。可以理解为用户持续操作期间,无论用户的操作频率多么密集,都会按照设置的时间频率来触发对应的方法。

    时间戳实现

    // 节流 —— 时间戳版
    function delayTimestamp(func, time) {
      let last, now
      const context = this
      return function (...arg) {
        now = new Date().getTime()
        if (last && now > last + time) {
          func.call(context, ...arg) // 绑定this,传递参数
        } else if (!last) { // 立即执行,如不需要,删除掉该 else if 包含内容
          func.call(context, ...arg)
        }
        last = now
      }
    }
    ip.oninput = delayTimestamp(input, 1000)
    

    上面代码展示的时间戳实现的节流,立即执行,总是执行满足时间条件后的第一次触发,在不满足时间条件的条件下触发不会执行

    注:会丢失用户在不满足时间条件下操作的内容,谨慎选择使用场景

    定时器版(推荐)

    // 节流 —— 定时器版
    function delayTimeout(func, time) {
      let timer
      return function () {
        if (!timer) {
          timer = setTimeout(() => {
            timer = null
            func.apply(this, arguments)
          }, time);
        }
      }
    }
    ip.oninput = delayTimeout(input, 1000)
    

    用户首次触发后,每隔固定时间会进行一次函数执行,在最后一次触发后的固定时间也会执行,所以不会丢失数据

    对比时间戳版和定时器

    时间戳是满足条件后的第一次触发会执行函数,存在丢失数据的风险;时间戳是以时间内的最后一次触发为准执行函数,不会丢失数据,最后一次执行有一定等待期(设置的时间间隔)

    应用场景

    • 防止用户短时间内重复点击按钮提交
    • 监听浏览器的滚动事件
    • 用户搜索时提供搜索联想功能

    二、防抖

    用户如果持续操作,则不计时,当用户在设定的时间内都无操作时,会执行对应的方法。可以理解为如果用户在计时结束前一直操作,则不会执行对应方法,直到用户停止操作且计时完成,会执行操作

    时间戳版(不推荐实用,仅参考)

    // 防抖 —— 时间戳版(再到时间后再次触发才会执行,每次时间间隔的开始后的第一次会触发,立即执行)
    function noShakeTimestamp(func, time) {
      let now, last
      return function () {
        now = new Date().getTime()
        if (last && (now - last > time)) {
          func.apply(this, arguments)
        }
        if (!last) { // 立即执行
          func.apply(this, arguments)
        }
        last = now
      }
    }
    ip.oninput = noShakeTimestamp(input, 1000)
    

    在一定时间内连续触发,不会执行函数,在设置的时间间隔后第一次触发,会执行函数。

    定时器版(推荐)

    // 防抖 —— 定时器版(每次计时结束后才会执行,不立即执行)
    function noShakeTimeout(func, time) {
      let timer
      return function () {
        if (timer) {
          clearTimeout(timer)
        }
        timer = setTimeout(() => {
          func.apply(this, arguments)
        }, time);
      }
    }
    // ip.oninput = noShakeTimeout(input, 1000)
    

    用户连续触发后一定时间未触发会执行函数。

    应用场景

    • 输入搜索
    • 频繁切换
    • 用户搜索时提供搜索联想功能

    小结

    如果你的功能里有极其频繁的操作,记得考虑选择使用节流或者防抖。

    参考文章:
    函数防抖和节流
    JS节流和防抖的区分和实现详解

    展开全文
  • 利用隧道-自由场动态相互作用系统在隧道轴线方向上的一致性或周期性,采用Fourier变换和Floquet变换等方法,在频率-波数域内推导了在移动荷载作用下隧道及自由场的动力响应解,此解把地下列车运行引起的动力响应问题...
  • 这个 zip 文件包含两个 m 文件,它们绘制了磁偶极子场的力线。 这些文件可用于教育目的和地球的地心轴向偶极子场的插图。 功能的使用很简单。 h = lforce2d(NumberOfLines, LineColr); h = lforce3d(NumberOfLines, ...
  • 今天排除了一个有意思bug,其中场景大致是这样:现在你要统计一个文件夹下非隐藏文件数目(包含它子文件夹),很快你写出这样代码://dirName ——文件夹路径 //nImgNum ——文件数量 bool StatFiles...

    作者:朱金灿

    来源:http://blog.csdn.net/clever101

     

            这里说的除虫是指排除bug的意思。今天排除了一个有意思的bug,其中的场景大致是这样的:现在你要统计一个文件夹下非隐藏文件的数目(包含它的子文件夹),很快你写出这样的代码:

    //dirName ——文件夹路径
    //nImgNum ——文件数量
    bool StatFiles(std::string& dirName,int& nImgNum)
    {
    	std::string tempFileFind = dirName + _T("\\*") ;
    
    	HANDLE hFind = INVALID_HANDLE_VALUE;
    	WIN32_FIND_DATA ffd;
    	hFind = FindFirstFile(tempFileFind.c_str(), &ffd);
    	if (hFind != INVALID_HANDLE_VALUE)
    	{
    		do
    		{
    			tString strSub = dirName + _T("\\") + ffd.cFileName;
    			if (((ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)==0)
    				&&((ffd.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN)==0))
    			{
                    nImgNum++; 
    			}
    		}while (FindNextFile(hFind, &ffd) != 0);
    	}
    	else
    	{
    		return false;
    	}
    
    	tempFileFind = dirName + _T("\\*");
    	hFind = INVALID_HANDLE_VALUE;
    
    	hFind = FindFirstFile(tempFileFind.c_str(), &ffd);
    	if (hFind != INVALID_HANDLE_VALUE)
    	{
    		do
    		{
    			if (ffd.cFileName[0] == '.')
    			{
    				if (ffd.cFileName[1] == '\0' ||
    					(ffd.cFileName[1] == '.' &&
    					ffd.cFileName[2] == '\0'))
    				{
    					continue;
    				}
    			}
    
    			std::string strSub = dirName + _T("\\") + ffd.cFileName;
    			if (!((ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)==0))
    			{
    				StatFiles(strSub,nImgNum);
    			}
    
    		}while (FindNextFile(hFind, &ffd) != 0);
    	}
    
    	return true;
    }
    


             然后拿一个文件夹来测试,嗯,测试没有问题,返回的数目也是对的。然后我们拿一个包含很多子文件夹和文件来测试,发现运行到文件数是七千多的时候函数就返回false了。开始我们比较迷惑,后来发现问题了,原来是忘记关闭文件查找句柄了,当统计达到七千多的时候已经把windows的查找句柄资源消耗尽了。我感觉这真是对WindowsAPI文件查找函数的一次压力测试。正确的代码应该是这样的:

    //dirName ——文件夹路径
    //nImgNum ——文件数量
    bool StatFiles(std::string& dirName,int& nImgNum)
    {
    	std::string tempFileFind = dirName + _T("\\*") ;
    
    	HANDLE hFind = INVALID_HANDLE_VALUE;
    	WIN32_FIND_DATA ffd;
    	hFind = FindFirstFile(tempFileFind.c_str(), &ffd);
    	if (hFind != INVALID_HANDLE_VALUE)
    	{
    		do
    		{
    			tString strSub = dirName + _T("\\") + ffd.cFileName;
    			if (((ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)==0)
    				&&((ffd.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN)==0))
    			{
                    nImgNum++; 
    			}
    		}while (FindNextFile(hFind, &ffd) != 0);
    	}
    	else
    	{
    		return false;
    	}
        FindClose(hFind); //记得关闭文件查找句柄
    
    	tempFileFind = dirName + _T("\\*");
    	hFind = INVALID_HANDLE_VALUE;
    
    	hFind = FindFirstFile(tempFileFind.c_str(), &ffd);
    	if (hFind != INVALID_HANDLE_VALUE)
    	{
    		do
    		{
    			if (ffd.cFileName[0] == '.')
    			{
    				if (ffd.cFileName[1] == '\0' ||
    					(ffd.cFileName[1] == '.' &&
    					ffd.cFileName[2] == '\0'))
    				{
    					continue;
    				}
    			}
    
    			std::string strSub = dirName + _T("\\") + ffd.cFileName;
    			if (!((ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)==0))
    			{
    				StatFiles(strSub,nImgNum);
    			}
    
    		}while (FindNextFile(hFind, &ffd) != 0);
    	}
        FindClose(hFind); //记得关闭文件查找句柄
    
    	return true;
    }

     

           如何避免这种资源泄漏的问题的发生?首先需要明确你要申请的是一种资源,在使用资源之前需要明确在哪儿释放掉资源从而避免资源泄漏。

    展开全文
  • 根据广义力的定义\[Q_\alpha=\sum^n_{i=1}\boldsymbol{F}_i\cdot\frac{\partial \boldsymbol{r}_i}{\partial q_\alpha}\]在保守中可以由\(\boldsymbol{F}_i=-\nabla_iV\)得出\(Q_\alpha=-\frac{\partial V}{\...

    根据广义力的定义\[Q_\alpha=\sum^n_{i=1}\boldsymbol{F}_i\cdot\frac{\partial \boldsymbol{r}_i}{\partial q_\alpha}\]在保守场中可以由\(\boldsymbol{F}_i=-\nabla_iV\)得出\(Q_\alpha=-\frac{\partial V}{\partial q_\alpha}\),从而将从达朗贝尔原理导出的\[\frac{d}{dt}\left(\frac{\partial T}{\partial \dot{q}_\alpha}\right)-\frac{\partial T}{\partial q_\alpha}=Q_\alpha\tag{$1$}\]化为拉格朗日方程(因为保守场的势能函数\(V\)仅仅是广义坐标的函数)\[\frac{d}{dt}\left(\frac{\partial L}{\partial \dot{q}_\alpha}\right)-\frac{\partial L}{\partial q_\alpha}=0\tag{$2$}\]

    上面拉格朗日方程是势能函数仅仅为广义坐标的函数的情况。需要注意的是,由达朗贝尔原理得来的\((1)\)式其实不局限于保守场。现在考虑对于非保守场的情况,这时势能函数不仅是广义坐标的函数,还可能是广义速度的函数。这就需要引入广义势能函数\(U\)作为广义坐标和广义速度的函数,来代替原来的只是广义坐标的势能函数\(V\)。这时,注意到,根据广义力的定义式,经过一系列的变形,如果最终能写成如下形式\[Q_\alpha=\frac{d}{dt}\left(\frac{\partial U}{\partial \dot{q}_\alpha}\right)-\frac{\partial U}{\partial q_\alpha}\tag{$3$}\]则拉格朗日方程\[\frac{d}{dt}\left(\frac{\partial L}{\partial \dot{q}_\alpha}\right)-\frac{\partial L}{\partial q_\alpha}=0\]仍然成立,等式两边是恒等的,其中\(L=T-U\)。也就是说,如果引入的广义势能函数\(U\)的结构是恰当的,以至于根据广义力定义式计算、变形能得到\((3)\)式的形式,则拉格朗日方程\((2)\)式成立,只需把新函数\(U\)当做势能(\(L=T-U\))。

    大多数情况下,为了\((3)\)式中广义力\(Q_\alpha\)中不显含广义加速度(为什么?可能因为力学系统完全由某时刻全部的位置、速度决定,而与更高阶导数无关),广义势能函数中只能包含广义速度的一次项和零次项,不包含广义速度更高次项,即\[U=\sum^s_{\alpha=1}U_\alpha(q,t)\dot{q}_\alpha+U_0(q,t)\]

    单带电粒子在电磁场中的情形下(仅仅把带电粒子视为试探电荷,不考虑辐射反作用力之类的),洛伦兹力公式给出受力情况\[\boldsymbol{F}=e(\boldsymbol{E}+\boldsymbol{v}\times\boldsymbol{B})\]其中\[\boldsymbol{B}=\nabla\times\boldsymbol{A} \\ \boldsymbol{E}=-\nabla\varphi-\frac{\partial \boldsymbol{A}}{\partial t}\]\(\varphi(\boldsymbol{r},t)\)\(\boldsymbol{A}(\boldsymbol{r},t)\)为场的标势和矢势。用标势和矢势表示两个场,得到\[\boldsymbol{F}=-\nabla(e\varphi-e\boldsymbol{A}\cdot\boldsymbol{v})+\frac{d}{dt}\nabla_{\boldsymbol{v}}(e\varphi-e\boldsymbol{A}\cdot\boldsymbol{v})\]先试探地定义广义势能函数\[U(q,\dot{q},t)=e\varphi-e\boldsymbol{A}\cdot\boldsymbol{v}\]这时,根据广义力的定义,广义力为\[Q_\alpha=\sum^n_{i=1}\boldsymbol{F}_i\cdot\frac{\partial \boldsymbol{r}_i}{\partial q_\alpha}=-\nabla U\cdot\frac{\partial\boldsymbol{r}}{\partial q_\alpha}+(\frac{d}{dt}\nabla_{\boldsymbol{v}}U)\cdot\frac{\partial\boldsymbol{r}}{\partial q_\alpha}\\=-\nabla U\cdot\frac{\partial\boldsymbol{r}}{\partial q_\alpha}+(\frac{d}{dt}\nabla_{\boldsymbol{v}}U)\cdot\frac{\partial\dot{\boldsymbol{r}}}{\partial \dot{q}_\alpha}=\frac{d}{dt}\left(\frac{\partial U}{\partial \dot{q}_\alpha}\right)-\frac{\partial U}{\partial q_\alpha}\]正好符合\((3)\)式,因此这个广义势能函数的结构是恰当的,所以拉格朗日方程\[\frac{d}{dt}\left(\frac{\partial L}{\partial \dot{q}_\alpha}\right)-\frac{\partial L}{\partial q_\alpha}=0\]成立,其中\(L=T-U=\frac{1}{2}mv^2-(e\varphi-e\boldsymbol{A}\cdot\boldsymbol{v})\).

    转载于:https://www.cnblogs.com/immcrr/p/10348423.html

    展开全文
  • 它不仅可以用做单元内插函数,把单元内任一点位移用节点位移表示,而且可作为加权余量法中加权函数,可以处理外载荷,将分布等效为节点上集中力和力矩,此外,它还可用于后续等参数单元坐标变换等。...

    在有限元法中,形函数是一个十分重要的概念。它不仅可以用做单元的内插函数,把单元内任一点的位移用节点位移表示,而且可作为加权余量法中的加权函数,可以处理外载荷,将分布力等效为节点上的集中力和力矩,此外,它还可用于后续的等参数单元的坐标变换等。
    1形函数的构造原理
    单元形函数主要取决于单元的形状、节点类型和单元的节点数目。节点的类型可以是只包含场函数的节点值,也可能还包含场函数导数的节点值。是否需要场函数导数的节点值作为节点变量,一般取决于单元边界上的连续性要求:如果边界上只要求函数值保持连续,称为co型单元;若要求函数值及其一阶导数值都保持连续,则是cl型单元。
    在有限元中,单元插值形函数均采用不同阶次的幕函数多项式形式。对于co型单元,单元内的未知场函数的线性变化仅用角(端)节点的参数来表示。节点参数只包含场函数的节点值。而对于C1型单元,节点参数中包含场函数及其一阶导数的节点值。与此相对应,形函数可分为拉格朗日(Lagrange)型(不需要函数在节点上的斜率或曲率)和厄米特( Hermite)型(需要形函数在节点上的斜率或曲率)两大类。而形函数的幕次则是指所采用的多项式的幂次,可能具有一次、二次、三次或更高次等。
    另外,有限元形函数N是坐标x、y、z的函数,而节点位移不是x、y、z的函数,因此静力学中的位移对坐标徽分时,只对形函数N作用,而在动力学中位移对时间t微分时,只对节点位移列阵起作用。

    1.1 常用单元的形函数

    (1)一维一次两节点单元(杆单元)在这里插入图片描述

    (2)二维一次三节点单元(平面三角形单元)

    在这里插入图片描述

    (3)三维一次四节点单元(三维四面体单元)

    在这里插入图片描述

    (4)一维二次三节点单元(高次单元)

    在这里插入图片描述

    (5)一维三次四节点单元(Lagrange型)

    在这里插入图片描述

    (6)一维三次二节点单元(Hermite型)(平面梁单元)

    在这里插入图片描述
    在这里插入图片描述

    (7)二维一次四节点单元(平面四边形单元或矩形单元)

    在这里插入图片描述

    (8)三维一次八节点单元(Brick单元)

    在这里插入图片描述
    在这里插入图片描述

    1.2 形函数的构造规律—帕斯卡三角形

    上述各种位移函数的构造有一定的规律,可以根据所谓的帕斯卡三角形加以确定,同时,这样制订的位移模式,还能够满足有限元的收敛性要求。以下是几种典型情况。
    1)一维两节点单元的情况,见图39.4-1,
    2)一维三节点单元的情况,见图39.4-2.
    3)二维高阶单元的情况,见图39.4-3~图39.4-6.
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    由以上可以看出,形函数可以按照帕斯卡三角形构造,具体方法是
    1)按照所研究间题的维数绘制坐标轴,一维对应一个坐标轴,二维对应两个坐标轴,三维对应三个坐标轴。
    2)按照所选单元的节点数,用三角形、矩形或长方体在帕斯卡三角形上圈定相应区域。
    3)对应写出位移函数的插值公式,即形函数。

    展开全文
  • 利用非均匀B样条最小二乘方法建立了密封舱压力场的分布模型,在此基础上,分析了竖直与水平方向压力梯度的变化,基于密封舱压力场梯度范数给出了开挖面的稳定域及判定方法。对于压力场梯度范数的极值,采用多级动态惩罚...
  • 事件频繁触发可能造成问题 一些浏览器事件:window.onresize、window.mousemove等,触发频率非常高,会...在函数需要频繁触发时:函数执行一次后,只有大于设定执行周期后才会执行第二次。 场景 适合多次事件...
  • 推导了在圆柱直管中作均匀运动的螺旋单涡管诱导核外压力场的解析表达式,若令柱管直径趋于无穷大,该表达式也能够描述在无限域中螺旋单涡管诱导核外压力场。假设相对速度场定常且具有螺旋对称性,并利用已获得的涡管...
  • 把多保角变换复变函数理论和边界配点最小二乘法相结合,提出了弹性力学中计算复变函数概念,并以此来计算含有任意多个椭圆孔(包括裂纹)有限大小复合材料层合板应力.每个孔大小、位置为任意.板边界由...
  • 背景 在社交应用,视频应用等领域,后端系统会收到用户...对于这种情况,我们可以使用云函数对这些视频文件处理,对应产生不同清晰度视频,比如1080p,720p等,以满足不同场景下用户需求,适应用户宽带小,流量少,
  • 利用泛克里金技术对叶片表面压力进行插值,采用球形模型,用循环交叉验证法确定变异函数。结果表明:应用泛克里金技术进行压力插值得出气动压力过渡较平滑,精度达到工程应用要求,并且克服一般距离加权插值方法...
  • 文章目录前言I、把函数名隐藏在结构体里,以函数指针成员形式存储1.1 >* KNUtil.h1.2 >* KNUtil.m1.3 >* 外围调用II、 案例:js根据key从本地方法获取设备及签名信息 (完整demo)2.1 demo下载see also ...
  • inline函数

    千次阅读 2019-05-18 14:47:39
    一个函数的程序进行代码拓展而不被调用,用相应的函数代码替换函数调用。 引入inline函数的原因 系统中会有这样场景:for循环调用一个处理函数或则是递归调用一些算法。因为调用一个任意函数都会为这个函数创建...
  • 函数防抖是指对于当事件在某个时间段被触发后再执行回调,如果这个时候又重新被触发,则重新开始计时,短时间内多次触发同一事件,只执行最后一次,或者只执行最开始一次,中间不执行。 1). 封装一个函数
  • 函数防抖和函数节流

    2020-07-28 12:38:14
    我么在平时发时候,有很多场景会频繁触发事件,比如说搜索框实时发请求,这样对服务器压力会大大增加,这时候就需要用到函数防抖和函数节流了!!! 准备材料 我们先写一个input事件监听用户输入值 这个...
  • 函数节流从现象来看首次执行事件函数后间隔一段时间后再次执行该事件函数,从而将频繁触发导致事件函数频繁执行这一频率给降低。 如下图频率比较 从图上看出,未进行节流处理事件回调函数,会因为频繁...
  • 根据电磁场的唯一性定理,采用虚位移法举例计算了电流恒定时,导体和电介质受到的电场*磁链恒定时,载流回路和磁介质受到的磁场*。计算结果表明:用虚位移法求解和用库仑定律、洛仑兹公式求解相同的问题,后者...
  • 在最近文章[1]中,第二部分作者提出... 同样,针对哈勃获得了与拉格朗日函数和汉密尔顿函数相关方程。 还提出了哈勃能量和张量两个概念。 最后,第一部分参考文献先前印刷错误。 [1],在附录中进行了更正。
  • 首先我们说一下应用场景,试想你在做一个根据input值...那么我们说一下函数防抖定义:函数防抖就是让某个操作对应回掉函数在持续一段时间没有进行操作才执行。比如生活中那种感应门一样,如果一直有人进来,...
  • ceil和floor函数的编程实践

    千次阅读 2016-09-19 11:04:42
    ceil()向上取整floor向下取整题目在最近几魔兽争霸赛中,赫柏对自己表现都不满意。 为了尽快提升战,赫柏来到了雷鸣交易行并找到了幻兽师格丽,打算让格丽为自己七阶幻兽升星。 经过漫长等待以后,...
  • 函数的防抖 函数的防抖:就是对于一些 频繁 操作,在 一定时间 内只 执行一次 。 场景描述:比如页面中按钮点击事件,一般情况下会给按钮绑定一个点击事件,然后当我们点击按钮时就会触发事件并执行某些功能...
  • 为了研究压力敏感性材料的准静态扩展裂纹尖端场,建立了压力敏感性材料准静态扩展裂纹的力学模型。...通过对裂纹尖端场的渐近分析,从应变角度出发,提出了 压力敏感性材料准静态扩展裂纹的断裂判据。
  • C++ inline函数

    千次阅读 多人点赞 2018-12-10 15:53:45
    我们知道调用一个任意函数都会为这个函数创建栈空间,如果频繁调用小函数会消耗大量栈空间,对内存造成很大压力,甚至会导致内存枯竭。C++为了解决这个问题也就创造了内联函数,也就是inline。 下面我们看一个...
  • 超越ℏ中的领先顺序,我们得到了广义的玻尔兹曼方程,其中不均匀电磁施加在粒子偶极矩上的力自然产生。 此外,导出了该偶极矩的动力学方程。 仔细考虑无质量限制,我们发现与先前的结果一致。 还研究了带有旋转的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 507
精华内容 202
关键字:

场的力函数