精华内容
下载资源
问答
  • <div><p>该提问来源于开源项目:ksvc/KSYStreamer_Android</p></div>
  • 半小时学习最小二乘法

    万次阅读 多人点赞 2018-04-20 12:05:09
    这里是我的个人网站: ...有更多总结分享,最新更新也只会发布在我的个人网站上。排版也可能会更好看一点=v= 前言 最小二乘法在统计学的地位不必多言。...至于非线性最小二乘和广义线性模型,如果以后有时间...
    
    

    前言

    最小二乘法在统计学的地位不必多言。本文的目的是全面地讲解最小二乘法,打好机器学习的基础。本文主要内容是最小二乘法的思想及在线性回归问题中的应用。后面的系列文章会继续讲解最小二乘的正则化。
    至于非线性最小二乘和广义线性模型,如果以后有时间会进行整理。
    

    不熟悉极大似然法的读者可以阅读我的另一篇文章《十分钟学习极大似然估计

    updata 2019/6/13:添加了对线性回归问题的矩阵定义和简要介绍,修改了少量句子,修正了公式中的少量错误。

    这里是我的个人网站:
    https://endlesslethe.com/easy-to-learn-ols.html
    有更多总结分享,最新更新也只会发布在我的个人网站上。排版也可能会更好看一点=v=

    核心思想

    最小二乘法是勒让德( A. M. Legendre)于1805年在其著作《计算慧星轨道的新方法》中提出的。它的主要思想就是求解未知参数,使得理论值与观测值之差(即误差,或者说残差)的平方和达到最小:
    \[E = \mathop \sum \limits_{i = 1}^n e_i^2 = \mathop \sum \limits_{i = 1}^n {\left( {{y_i} - \hat y} \right)^2}\]
    观测值\(y_i\)就是我们的多组样本,理论值\(\hat y\)就是我们的假设拟合函数。目标函数也就是在机器学习中常说的损失函数\(E\),我们的目标是得到使目标函数最小化时候的参数。

    所谓最小二乘,其实也可以叫做最小平方和,其目的就是通过最小化误差的平方和,使得拟合对象无限接近目标对象。换句话说,最小二乘法定义了一种函数的拟合标准,其目标是最小化误差的平方和。
    

    直观理解

    均方误差有非常好的几何意义,它对应了常用的欧几里德距离。在线性回归中,最小二乘法就是试图找到一条直线,使所有样本到直线的欧氏距离之和最小。

    假设有一条直线\(y=ax+b\),要在这条直线上找到一点,距离\((x_0,y_0)\)这个点的距离最短。如果用绝对值的方法寻找,也就是取\(\min(|y-y_0|+|x-x_0|)\),由于绝对值最小为0,所以最小的情况就是\(x=x_0\)或者\(y=y_0\)处,如下图1所示。
    lsm 1

    如果用平方和的方法寻找,就是取\(\min {{(y - {y_0})^2} + {(x - {x_0})^2}}\),可以看出该式是两点间距离公式,也就是距离的概念。那么最短的距离,就是点到直线的垂线,如下图2所示。
    lsm 2

    事实上,线性回归中最小二乘法的解\(\theta= {\left( {{X^T}X} \right)^{ - 1}}{X^T}Y\)也就是投影矩阵的公式:将Y向量投影到X构成的平面上。

    对任意函数f的通用解法

    1. 列出损失函数\(E = \mathop \sum \limits_{i = 1}^n e_i^2 = \mathop \sum \limits_{i = 1}^n {\left( {{y_i} - \hat y} \right)^2}\)
    2. 根据损失函数对参数应用多元函数的求极值方法,直接求解函数最小值。而更常见的方法即是将损失函数\(y_i\)用\(x_i\)和参数表示,然后使用梯度下降算法。
    3. 求得函数最小值的参数或待到梯度算法收敛,此时的参数即为所求
      这些个步骤说起来抽象,实际上这是在机器学习中应用最广泛的方法。但是对于后面的线性回归问题,有着更简洁的推导方法。

    以算术平均值为例——为什么算术平均即是真值

    可以说整部数理统计学的历史,就是对算术平均不断深入研究的历史。而最小二乘法可以解释为什么多次测量取算术平均的结果就是真值,比如估计身高可以测三次后取平均。

    当我们对于某个未知量\(\theta\)观测\(m\)次,记每次的结果为\(x_i\)
    \[E = \mathop \sum \limits_{i = 1}^m e_i^2 = \mathop \sum \limits_{i = 1}^m {\left( {{x_i} - \theta} \right)^2}\]
    求导得
    \[\mathop \sum \limits_{i = 1}^n - \left( {{x_i} - \theta} \right) = 0\]
    所以\(\theta = \bar x = \frac{{\mathop \sum \nolimits^ {x_i}}}{m}\)

    线性回归问题的定义

    这部分我们简要回顾一下基本的线性代数知识。

    我们知道一条直线,在三维空间中,可以用形如\(ax+by+cz=d\)的方程表示,而用矩阵的形式表达的话,即为AX=B,其中B为常数,而A和X都为n维向量。那么多个这样的方程联立在一起就被称为线性方程组,其中有两个基本问题:1)方程组是否有解,即解的存在性问题? 2)如果有解,解的个数有多少个?

    为了回答这两个问题,我们令线性方程组中的方程都为线性无关方程(可以通过简单地初等行变换),方程个数为\(m\),特征数(参数数量)为\(n\)。在这样的假设下,如果\(m=n\),则一行方程对应一个参数的解,此时方程组有唯一解。如果\(m>n\),则方程无解,因为存在互相矛盾的两个方程。如果\(m<n\),则方程和参数不能一一对应,存在无穷多解。而最小二乘法是在\(m>n\)时可以使用的,其通过让残差平方和最小,找到互相矛盾解之间的近似解。

    使用最小二乘求解线性回归问题

    对于线性回归问题,当然可以使用求导的代数方法来找到损失函数的最小值。但矩阵法比代数法要简洁,所以现在很多书和机器学习库都是用的矩阵法来做最小二乘法,本文这里介绍一下如何使用矩阵法求解线性回归问题。

    对于函数\({h_{\theta}}({x_1},{x_2},…{x_n}) = {\theta_0} + {\theta_1}{x_1} + … + {\theta_n}{x_n}\),我们将其的矩阵形式记作:
    \[ X\theta = Y \]
    lsm 3

    故损失函数根据定义将Y用X和\(\theta\)代替:(系数1/2是为了简化计算添加的,求迹前和求迹后值不变)
    lsm 4

    应用矩阵迹的计算公式:
    lsm 5

    令上式为0,解得\(\theta= {\left( {{X^T}X} \right)^{ - 1}}{X^T}Y\)

    Note:矩阵求导坑多,使用迹来计算比较方便。

    线性回归的t检验

    记n为回归方程的特征个数,m为样本数
    \[S_回=\sum_{i=1}^m(\hat y - \overline y)\]
    \[S_剩=\sum_{i=1}^m(y_i - \hat y)\]

    总平方和(SST)可分解为回归平方和(SSR)与残差平方和(SSE)两部
    \[MSR = SSR / k\]
    \[MSE = SSE / (n - k - 1)\]
    \[F = \frac{{MSR}}{{MSE}} = \frac{{{S_回}/k}}{{{S_剩}/(n - k - 1)}}\]

    若用样本计算的\(F > F_{0.05} (k , n - k - 1)\),则拒绝\(H_0\),则回归方程在显著性水平\(\alpha=0.05\)下是显著的。

    最小二乘法的适用场景

    前面已经提到,根据方程数m和特征数n可以判定方程组解的存在性问题和个数问题。
    当样本量\(m\)很少,小于特征数\(n\)的时候,这时拟合方程是欠定的,需要使用LASSO。当\(m=n\)时,用方程组求解。当\(m>n\)时,拟合方程是超定的,我们可以使用最小二乘法。

    局限性

    • 首先,最小二乘法需要计算\({\left( {{X^T}X} \right)^{ - 1}}\)逆矩阵,有可能逆矩阵不存在,这样就没有办法直接用最小二乘法。
    • 第二,当样本特征n非常的大的时候,计算逆矩阵是一个非常耗时的工作,甚至不可行。建议不超过10000个特征。
    • 第三,如果拟合函数不是线性的,这时无法使用最小二乘法,需要通过一些技巧转化为线性才能使用。(非线性最小二乘)

    最小二乘法和M估计

    在统计数据时,难免会遇到异常值,即人为误差。而这种误差对结果的影响远比系统误差大,比如将1记录成10。所以我们使用稳健性来评价一个方法对异常值的敏感程度。

    最小二乘法是一种稳健性较差的方法,原因在于其目标函数是误差的平方,是一个增长很快的函数,其对离群的异常值非常敏感。所以不难想到,对于\(E = \mathop \sum \nolimits f({x_i})\),我们可以取\(f(x)=|x|\)来减小函数的增长速度。
    统计学家休伯将这一想法用于对单个未知量\(\theta\)参数估计的情况,误差满足正态分布\(x_i=\theta+e_i\),就给定\(\rho\)函数:
    ,取定函数\(\rho\),找出使函数\(M\left( {\theta} \right) = \mathop \sum \limits_{i = 1}^m \rho({x_i} - \theta)\)达到最小的\(\hat \theta\),将其作为\(\theta\)的估计值。\(\hat \theta\)称为\(\theta\)的M估计。

    M估计是一类估计,主要包括\(\rho(u)=u^2\)的最小二乘法和\(\rho(u)=|x|\)的最小一乘法。M估计也可以和最小二乘法一样,推广到多元线性回归,称为稳健回归,但是因为难于计算等局限,应用并不广泛。

    Note:最小一乘法对未知参数θ的估计值\(\hat \theta =x_i的中位数\)

    最小二乘法和正则化

    当\({\left( {{X^T}X} \right)^{ - 1}}\)不存在,即\(X_TX\)不满秩时,\(\theta\)无唯一解。

    故考虑在原先的A的最小二乘估计中加一个小扰动\(\lambda I\),使原先无法求广义逆的情况变成可以求出其广义逆,使得问题稳定并得以求解。有:
    \(\hat \theta= {\left( {{X^T}X} + \lambda I \right)^{ - 1}}{X^T}Y\)

    而此时对应的损失函数为
    \[ J(\theta ) = \mathop \sum \limits_{i = 1}^m {({y_i} - {\theta T}{x_i})2} + \lambda || \theta || _2^2 \]
    上式称为岭回归(ridge regression),通过引入L2范数正则化。


    当然也可以将L2范数替换为L1范数。对应有
    \[ J(\theta ) = \mathop \sum \limits_{i = 1}^m {({y_i} - {\theta T}{x_i})2} + \lambda || \theta || _1 \]
    上式称为LASSO。

    对于L2范数,本质上其实是对误差的高斯先验。
    而L1范数则对应于误差的Laplace先验。

    最小二乘法的理论证明

    拉普拉斯指出随机误差应满足正态分布,而高斯创造性地发明并使用极大似然法证明了最小二乘法。
    故测量误差服从高斯分布的情况下, 最小二乘法等价于极大似然估计。

    对于任何拟合方程都有:\(y = \hat y + e\)
    因为\(e \sim N(0,{\sigma^2})\),故\(y \sim N(\hat y,{\sigma^2})\)

    由极大似然估计,\(L(\theta ) = \mathop \prod \limits_i f({y_i})\)
    \[L = \frac{1}{{{{\left( {\sqrt {2\pi } \sigma } \right)}^n}}}exp\left\{ { - \frac{1}{{2{\sigma ^2}}}\sum\limits_{i = 1}^n {{{\left( {{y_i} - \hat y} \right)}^2}} } \right\} = \frac{1}{{{{\left( {\sqrt {2\pi } \sigma } \right)}^n}}}exp{ - \frac{1}{{2{\sigma ^2}}}\sum\limits_{i = 1}^n {e_i^2} }\]

    Note:数学的发展史很多时候是不符合逻辑顺序的。事实上,高斯当时是循环论证最小二乘法的,推理有缺陷。而后拉普拉斯才弥补了这一点。其中故事可以见《数理统计学简史》。

    参考文献

    I. 《数理统计学简史》 陈希孺著
    II. 《机器学习》 周志华著
    III. 正态分布的前世今生(二)
    IV. 最小二乘法的本质是什么?
    V. 最小二乘法小结
    VI. 到底什么是最小二乘法?
    VII. 最小二乘法和线性回归及很好的总结
    VIII. 最小二乘法与岭回归的介绍与对比
    IX. 最小二乘法
    X. 最优化理论·非线性最小二乘
    XI. Linear least squares, Lasso,ridge regression有何本质区别?
    XII. 为什么最小二乘法对误差的估计要用平方?

    展开全文
  • 本文是对于腾讯大佬写的半小时深刻理解react这篇文章的总结和笔记 文章目录1.认识JSX2.虚拟DOM3.认识react组件实现组件化组装4.react数据流props属性和propsTypes格式校验state事件DOM更新的原理5.组件的生命周期...
    
    

    1.认识JSX

    图示jsx到js的编译
    图示jsx到js的编译

    2.虚拟DOM

    在这里插入图片描述

    • React会在内存中维护一个虚拟DOM树,当我们对这个树进行读或写的时候,实际上是对虚拟DOM进行的。
    • 当数据变化时,然后React会自动更新虚拟DOM,然后拿新的虚拟DOM和旧的虚拟DOM进行对比,找到有变更的部分,得出一个Patch,然后将这个Patch放到一个队列里,最终批量更新这些Patch到DOM中。
    • 这样的机制可以保证即便是根节点数据的变化,最终表现在DOM上的修改也只是受这个数据影响的部分,这样可以保证非常高效的渲染。
    • 但也是有一定的缺陷的——首次渲染大量DOM时因为多了一层虚拟DOM的计算,会比innerHTML插入方式慢。

    3.认识react组件

    在这里插入图片描述

    • props主要作用是提供数据来源,可以简单地理解为props就是构造函数的参数
    • state唯一的作用是控制组件的表现,用来存放会随着交互变化的状态,比如开关状态等。
    • JSX做的事情就是根据state和props中的值,结合一些视图层面的逻辑,输出对应的DOM结构

    实现组件化组装

    在这里插入图片描述
    例如要实现上方红色的功能:

    • 先做article组件里面分为图片文字的初属性

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

    • 然后做热点组件,左右框的显示中要调用article组件

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

    • 然后后面的热问同样也调用了article组件

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

    4.react数据流

    在React中,数据流是自上而下单向地从父节点传递到子节点,所以组件是简单且容易把握的,他们只需要从父节点提供的props中获取数据并渲染即可。如果顶层组件的某个prop改变了,React会递归地向下遍历整棵组件数,重新渲染所有使用这个属性的组件。

    props属性和propsTypes格式校验

    • props永远是只读的

    在这里插入图片描述

    • props的属性校验
      在这里插入图片描述

    在这里插入图片描述

    state事件

    在这里插入图片描述

    这是一个简单的开关组件,开关状态会以文字的形式表现在按钮的文本上。

    首先看render方法,返回了一个button元素,给button注册了一个事件用来处理点击事件,在点击事件中对state的on字段取反,并执行this.setState()方法设置on字段的新值。一个开关组件就完成了。

    DOM更新的原理

    在这里插入图片描述
    这是一个React组件实现组件可交互所需的流程,

    1. render()输出虚拟DOM,
    2. 虚拟DOM转为DOM,
    3. 再在DOM上注册事件,
    4. 事件触发setState()修改数据,
    5. 在每次调用setState方法时,React会自动执行render方法来更新虚拟DOM,如果组件已经被渲染,那么还会更新到DOM中去。
      在这里插入图片描述

    5.组件的生命周期

    初始化、更新和销毁,在组件生命周期中,随着组件的props或者state发生改变,它的虚拟DOM和DOM表现也将有相应的变化。

    初始化

    在这里插入图片描述

    1. 获取props初始值

    组件类在声明时,会先调用getDefaultProps()方法来获取默认props值,这个方法会且只会在声明组件类时调用一次,这一点需要注意,它返回的默认props由所有实例共享。

    2. 获取state事件

    在组件被实例化之前,会先调用一次实例方法getInitialState()方法,用于获取这个组件的初始state

    3. 实例化之后渲染的准备工作

    componentWillMount方法会在生成虚拟DOM之前被调用,你可以在这里对组件的渲染做一些准备工作,比如计算目标容器尺寸然后修改组件自身的尺寸以适应目标容器等。

    4. render渲染

    创建一个虚拟DOM用来表示组件的结构。对于一个组件来说,render是唯一一个必须的方法。render方法需要满足这几点:
    只能通过this.props或this.state访问数据
    只能出现一个顶级组件
    可以返回null、false或任何React组件
    不能对props、state或DOM进行修改
    需要注意的是,render方法返回的是虚拟DOM

    5. 渲染完成以后对DOM的后续操作

    我们可能需要对DOM做一些操作,比如截屏、上报日志,或者初始化iScroll等第三方非React插件,可以在componentDidMount()方法中做这些事情。当然,你也可以在这个方法里通过this.getDOMNode()方法最终生成DOM节点,然后对DOM节点做爱做的事情,但需要注意做好安全措施,不要缓存已经生成的DOM节点,因为这些DOM节点随时可能被替换掉,所以应该在每次用的时候去读取

    组件被初始化完成后,它的状态会随着用户的操作、时间的推移、数据更新而产生变化,变化的过程是组件声明周期的另一部分——

    更新

    在这里插入图片描述

    1. 根据相关改变预处理数据

    当组件已经被初始化后组件调用者修改组件的属性时,组件的componentWillReceiveProps()方法会被调用,在这里,你可以对外部传入的数据进行一些预处理,比如从props中读取数据写入state

    2.判断是否必须更新,过滤无效渲染

    默认情况下,组件调用者修改组件属性时,React会遍历这个组件的所有子组件,进行“灌水”,将props从上到下一层一层传下去,并逐个执行更新操作,虽然React内部已经进行过很多的优化,这个过程是很快的,如果你追求极致性能或者你发现这个过程花费了太久时间,使用shouldComponentUpdate()——
    有时候,props发生了变化,但组件和子组件并不会因为这个props的变化而发生变化,打个比方,你有一个表单组件,你想要修改表单的name,同时你能够确信这个name不会对组件的渲染产生任何影响,那么你可以直接在这个方法里return false来终止后续行为。这样就能够避免无效的虚拟DOM对比了,对性能会有明显提升。

    如果这个时候有同学仍然饥渴难耐,那么你可以尝试 不可变数据结构(用过mongodb的同学应该懂)。

    3.更新的准备工作

    组件在更新前,React会执行componentWillUpdate()方法,这个方法类似于前面看到的componentWillMount()方法,唯一不同的地方只是这个方法在执行的时候组件是已经渲染过的。需要注意的是,不可以在这个方法中修改props或state,如果要修改,应当在componentWillReceiveProps()中修改

    4.对比虚拟DOM并替换

    然后是渲染,React会拿这次返回的虚拟DOM和缓存中的虚拟DOM进行对比,找出【最小修改点】,然后替换。

    5.更新完成后

    React会调用组件的componentDidUpdate方法,这个方法类似于前面的componentDidMount方法,你仍然可以在这里可以通过this.getDOMNode()方法取得最终的DOM节点。

    销毁

    在这里插入图片描述

    6.缺点

    展开全文
  • 每天提前半小时

    2009-09-25 08:27:00
    从上班第一天开始每天都提前半小时到公司,刚开始感觉精力还行,可是时间长了逐渐感觉累了,精力不支了。进入公司发现公司员工来的都不是很早,有来早的可是大部分都是提前10分钟左右。而且有一个规律周一到周四都能...

    从上班第一天开始每天都提前半小时到公司,刚开始感觉精力还行,可是时间长了逐渐感觉累了,精力不支了。进入公司发现公司员工来的都不是很早,有来早的可是大部分都是提前10分钟左右。而且有一个规律周一到周四都能正常上班,到了周五也许大家都累了来的都不早。但我还是有我的原则,宁愿早到半小时也不迟到一分钟。

        以后我还会坚持下去,除非个别情况做到永不迟到。

    展开全文
  • 一种香,分布不均匀,点燃以后会燃烧整1个小时,问如何... 用一根香从两头同时点燃,烧完后就是半小时 用2根香,将一根从两头点燃,另一根从一头点燃,当一根烧完后,再把剩下那根从另一头点燃,烧完后就是45分钟 
     
    
    一种香,分布不均匀,点燃以后会燃烧整1个小时,问如何确定半个小时和45分钟。
     
    用一根香从两头同时点燃,烧完后就是半小时
    2根香,将一根从两头点燃,另一根从一头点燃,当一根烧完后,再把剩下那根从另一头点燃,烧完后就是45分钟
     
    展开全文
  • 话不多说,先上图,看效果 ,符合自己的需求再往下看。 源码以放,求个积分,自己的积分不够用了。拜谢下载的,没看懂的可以评论或私聊 点我下载源码 说说上图实现的内容:...3、分钟改为半小时间隔(10分钟...
  • 例如,我们要在某单元格中键入0.06的话,可以在上面的设置中,让“位数”选项为2,然后直接在指定单元格中输入6,回车以后,该单元格的数字自动变为“0.06”,怎么样简单吧? 2、快速录入文本文件中的内容 现在您...
  • 故障现象行车小时以后加不上油门,凉车个小时再启动故障就没有了01读取故障码,有一个当前故障和两个历史故障。P0504:刹车信号不可信P0403:EGR阀驱动电路开路P0103:空气流量计硬件故障02P0504:刹车信号不...
  • 我们在做项目或者数据分析时,经常遇到这样的需求:统计不同时间粒度下的数据分布情况,例如,每一天中每个小时网站的访问量,某路口每小时通过的车辆数量等。对于此类的问题,一个sql简单的查询就能实现,故...
  • 历经2年,花了4000小时以后,对erlang的研究有了很大的进步,从原来的兴趣, 到现在的随意的crack, 调优,改进, 指导erlang程序架构的设计,中间经历了很多。 从一个有20年历史的网络程序身上我学到很多,...
  • 为了方便以后对比和分享,我开始尝试录制练习绘画过程的视频。这是上周在绘画过程中录制的视频。在这一周了我新入手了一个数位屏——绘王的 Kamvas Pro 16,价格和 I...
  • 身高175,减肥前160,减肥后125。在高考以后当时觉得自己太...减 肥 过 程 运动当时是办了健身卡,每天下午去健身房跑椭圆机一个小时,然后晚上再去爬楼梯小时到一个小时,然后走路,每天的步数起码要一万五千加...
  • 只为半小时团圆

    2008-05-26 12:40:31
    一切都那样不便,好在他们只需在这里待够一年,一年以后,便会由别人顶替他们。 几个月以后,工厂初具规模,他们的工作也有了些清闲,晚上甚至可以去山林里走一走。可是他并不轻松,甚至干得更加辛苦。他告诉别人,...
  • day1:学会搭建springboot(so easy) springboot搭建 编译器选择:sts ,eclipse,...暂时先选这些,简单了解下各个组件的功能,去百度一下吧(哈哈),以后会加上redis,mysql等等点击finish,一个project成了。 ...
  • 在速度方面,Spark扩展了广泛使用的MR(MapReduce以后就叫mr)计算模型,而且高效地支持更多计算模式,包括交互式查询和流处理。在处理大规模数据集时,速度是非常重要地。速度快就意味着我们可以进行交互式地数据...
  • 这篇文章不同于网络上的文章和其他现有的教程,本文章试图从原理的角度来讲解前端开发框架 Vue.js,目标是通过半小时让从来没有接触过前端开发的朋友能做到完全理解 Vue 中蕴含的组件化思想,从思想原理的角度出发,...
  • 思路大致是这样的: 1.用户手动输入(模拟服务器发来的消息),将用药提醒时间存入SQLITE数据库,同时,每隔2分钟的间隔录入一个时间点,持续录入15个(即30分钟)...3.如果到了SQLITE录入时间点3小时以后的时间,所有
  • 如果在上午买股票,很可能当天就被套牢,因为你在上午买了股票后,并不能非常准确地预测出这只股票在当天接下来的三个多小时的交易时间里的走势。尤其是在震荡市中,下午两点钟前后经常会“跳水”,上午买的股票一旦下午...
  • Excel表格的整理、拆分总是让人头痛,今天遇到的也是一个...在Excel中有分列功能,可以很方便的对数据进行拆分但拆分以后,怎么分行显示呢?一般的Excel功能还真搞不定。如果手工一行行的拆,还真费时间。没办法了...
  • 做好的欧包才会外脆内软,如果没有蒸烤箱的话人们又研究出了用铸铁锅来做,先把铸铁锅放在烤箱里烘烤半小时左右,然后把面包坯子放入铸铁锅盖好盖子迅速放回烤箱, 因为锅的热量足够,面团放进去以后就会迅速膨胀,...
  • 默认安装好系统以后是100%的缩放,而你只能调整200%或300% 你调整为125/150/175是不是没有效果?我可以哦~ 来吧,一起来解决问题 亮度无法调节/缩放无法调整/无法使用HDMI扩展显示屏,其实都是一个问题导致的——...
  • 我们常说“一天一个苹果,医生远离我”。...传统的苹果吃法,时间长了难免会觉得腻,有没有想过将苹果煮熟以后再吃呢?有独特的功效哦!其实煮水的苹果营养作用发挥更完善。苹果加热以后,其中膳食纤维和果胶得以...
  • 因此就专门开发了微信支付控件(delphi),使用该控件,以后需要微信支付功能就可以通过简单设置几个参数直接使用,无需再进行繁琐开发(从此不再受那奴役苦)。 微信支付控件图标: 微信控件开发语言:delphi 微信...
  • 使用python也有一段时间了,最近比较关注自住房信息,虽说它更新的比较缓慢,但是平时也不怎么会特意的去它的网站上去看,于是就想用python抓它的信息,如果有新的信息就给自己发个邮件,这样手机上得到通知以后就...
  • Python发展可以说是如日中天,更多的人选择学习Python,也更多的人开始关注它,从这些关注度来看,我发现关注度最高的还是Python的就业前景是怎么样的,毕竟大家学习Python都是为了以后能有好的工作,那么,Python...
  • 自从8月3日跑了以后,又一鼓作气报了11月份的西昌马拉松。与第一次马拉松的只求完赛目标不同,第二次当然想取得一个更好的成绩。所以8月份练的比较猛,基本上是练2、3天休息一天,周么还要拉个长于21公里的LSD。...
  • 一个成品小病毒专杀 最近一个文件夹伪装病毒在同学的电脑内肆虐啊,动手写了一个小时就写不下去了。不想写清除部分,只有检测部分的代码,其实检测出来的时候,顺手就可以杀掉了。最近考试耗费的时间多...
  • 2020年个人半年工作总结范文一 第一部分 工作回顾与总结 自5月4日开始上班以后,不知不觉中已经过去三个月,在这三个月中总体感觉有些没有方向、没有真正的开始做销售工作,所做一些不知所措的事情,下面就分月份...
  • 我de了半小时 以后要注意检查main函数。。。。 这个bfs计算最短路径步数 采用每一步停下来扩点 这个是用了手写队列,也不难 #include<iostream> using namespace std; const int N=105; typedef pair<int...

空空如也

空空如也

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

半小时以后