李永乐老师谈股票,为毛你总被割
先从一个故事说起,话说酒吧里有一男一女,女人提议玩一个游戏,规则如下:2人各出一枚硬币,如果2个硬币都是正面则男人赢3块钱,如果都是反面则男人赢1块钱,如果是一正一反则女人赢2块钱。男人心想,假如一个硬币的正面或反面的概率是1/2,那么就有1/4的概率赢3块钱、1/4的概率赢1块钱,还有1/2的概率会输2块钱,赢钱和输钱的概率差不多,运气好点说不定还能赚,于是欣然答应了。结果玩了一段时间,男人发现自己一直在输钱,这里面是有什么猫腻吗?
用数学来推导首先,明确一点,硬币不是往天上抛的,每个人可以决定出自己硬币的正面或反面,所以硬币的正反概率由男人和女人自己来决定。假设男人出正面的概率是x,则出反面的概率就是(1-x),同理,假设女人出正面的概率是y,反面则是(1-y),x和y的取值范围在0到1之间。男人赢钱的期望值E就是:
E(x,y) = 3xy + (1-x)(1-y) - 2x(1-y) - 2(1-x)y这个式子表示了2枚硬币共4种状态(正正,反反,正反,反正)的收益情况。期望值受x和y值的影响,让男人输钱就是让这个式子的值小于0,但是女人只能决定自己出什么,所以也就只能决定y ...
图解矩阵区域和
问题给你一个 m * n 的矩阵 mat 和一个整数 K ,请你返回一个矩阵 answer ,其中每个 answer[i][j] 是所有满足下述条件的元素 mat[r][c] 的和:
i - K <= r <= i + K, j - K <= c <= j + K
(r, c) 在矩阵内。
示例1:
输入:mat = [[1,2,3],[4,5,6],[7,8,9]], K = 1输出:[[12,21,16],[27,45,33],[24,39,28]]
示例2:
输入:mat = [[1,2,3],[4,5,6],[7,8,9]], K = 2输出:[[45,45,45],[45,45,45],[45,45,45]]
题解如果采用暴力法,每个格子直接计算,会发现存在大量的重复计算,可先构造一个矩阵dp,原矩阵是mat,dp[i,j]表示从矩阵左上角mat[0,0]到右下角mat[i,j]这个范围构成的矩阵所有元素之和。该矩阵可看作是一个左上角是(0,0),右下角是(i,j)围成的矩形的面积,得到该矩阵后,就可以采用面积差来计算任意矩形的面积。比如 ...
将训练好的Tensorflow模型部署到Web站点
通过Google发布的tensorflowjs,我们可以将训练好的模型部署到任何一个支持静态页的web服务器上,不需要任何后台服务即可运行tensorflow,部署过程非常简单。
安装tensorflowjspython万金油安装法 pip install tensorflowjs
转换模型1tensorflowjs_converter --input_format=keras ./models/yourmodel.h5 ./models/modelforjs
后面2个参数第1个是保存好的tf模型路径,第2个参数是输出路径,会生成一个modelforjs目录,里面包含一个model.json文件和二进制数据文件
部署到Web服务把生成好的modelforjs拷贝到web服务上,同时引用这个js<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs/dist/tf.min.js"> </script>
调用模型123var model = await tf.loadLayersMo ...
经典博弈问题的动态规划解法
问题亚历克斯和李用几堆石子在做游戏。偶数堆石子排成一行,每堆都有正整数颗石子 piles[i] 。游戏以谁手中的石子最多来决出胜负。石子的总数是奇数,所以没有平局。亚历克斯和李轮流进行,亚历克斯先开始。 每回合,玩家从行的开始或结束处取走整堆石头。 这种情况一直持续到没有更多的石子堆为止,此时手中石子最多的玩家获胜。假设亚历克斯和李都发挥出最佳水平,当亚历克斯赢得比赛时返回 true ,当李赢得比赛时返回 false 。
示例:
输入:[5,3,4,5]输出:true解释:亚历克斯先开始,只能拿前 5 颗或后 5 颗石子 。假设他取了前 5 颗,这一行就变成了 [3,4,5] 。如果李拿走前 3 颗,那么剩下的是 [4,5],亚历克斯拿走后 5 颗赢得 10 分。如果李拿走后 5 颗,那么剩下的是 [3,4],亚历克斯拿走后 4 颗赢得 9 分。这表明,取前 5 颗石子对亚历克斯来说是一个胜利的举动,所以我们返回 true 。
思路如果一个问题可以分解成一个子问题,而子问题又可以分解成一个更小的子问题,那么我们就可以考虑用递归的方式来实现,比如斐波拉契数列。不过递归的方式有个严重 ...
单例模式(Singleton)
意图单例模式是一种创建型模式,它能确保一个类只有一个实例,并提供一个访问该实例的全局节点。
问题
单例模式同时解决了两个问题, 所以违反了单一职责原则:保证一个类只有一个实例。 为什么会有人想要控制一个类所拥有的实例数量? 最常见的原因是控制某些共享资源(例如数据库或文件)的访问权限。它的运作方式是这样的: 如果你创建了一个对象, 同时过一会儿后你决定再创建一个新对象, 此时你会获得之前已创建的对象, 而不是一个新对象。注意, 普通构造函数无法实现上述行为, 因为构造函数的设计决定了它必须总是返回一个新对象。
为该实例提供一个全局访问节点。想想你曾用过的那些存储重要对象的全局变量,它们在使用上十分方便, 但同时也非常不安全,因为任何代码都有可能覆盖掉那些变量的内容,从而引发程序崩溃。和全局变量一样, 单例模式也允许在程序的任何地方访问特定对象。 但是它可以保护该实例不被其他代码覆盖。还有一点: 你不会希望解决同一个问题的代码分散在程序各处的。 因此更好的方式是将其放在同一个类中, 特别是当其他代码已经依赖这个类时更应该如此。
解决方案一个类的对象永远只会在当前进程中被创建一次, ...
状态模式(State)
意图状态模式是一种行为型模式,让你能在一个对象的内部状态变化时改变其行为,使其看上去就像改变了自身所属的类一样。它允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。
问题状态模式与有限状态机的概念紧密相关。
其主要思想是程序在任意时刻仅可处于几种有限的状态中。在任何一个特定状态中,程序的行为都不相同,且可瞬间从一个状态切换到另一个状态。不过,根据当前状态,程序可能会切换到另外一种状态,也可能会保持当前状态不变。这些数量有限且预先定义的状态切换规则被称为转移。
你还可将该方法应用在对象上。假如你有一个文档Document类。文档可能会处于草稿Draft、审阅中Moderation和已发布Published三种状态中的一种。文档的publish发布方法在不同状态下的行为略有不同:
处于草稿状态时,它会将文档转移到审阅中状态。
处于审阅中状态时,如果当前用户是管理员,它会公开发布文档。
处于已发布状态时,它不会进行任何操作。
状态机通常由众多条件运算符(if或switch)实现,可根据对象的当前状态选择相应的行为。 “状态” 通常只是对象中的一组成员变量值。即使你之 ...
搭建一个Git服务有多简单,只需四个步骤
Git作为分布式的源码管理工具,已经受到了越来越多人的青睐。和SVN的中心化服务不同,Git服务主要是将各个客户端的源码版本进行同步,类似于共享目录的作用,只是为了方便不同开发人员将各自的版本进行交换,不像SVN那么依赖于服务器。现存的Git服务器有Github,码云之类的,不过如果涉及到代码保密,不想上传到其他第三方公司托管,那么就可以自己搭建一个Git服务。搭建一个Git服务有多简单呢?本文以一个树莓派为例,描述如何在Linux操作系统上创建Git服务。
安装git输入命令:
1$ sudo apt-get install git
创建账号
添加一个用户,名字叫git, $ sudo adduser git,仅作为git服务使用,这里账号名其实是没有要求的,这个名字只会影响你的项目地址
修改该账号的默认bash,将该账号的默认bash设置为git-shell,这样该账号只能作为git使用,不可登录输入命令sudo vim /etc/passwd,找到这一行(你刚建完账号,应该在最后一行)git:x:1001:1001:,,,:/home/git:/bin/bash,将其修改为gi ...
推荐一款内网穿透的利器-NSmartProxy
什么是NSmartProxy?NSmartProxy是一款免费的内网穿透工具。使用中如果有任何问题和建议,可以点击这里加入Gitter群组或者点击这里加入QQ群(群号:813170640)我们一起讨论。
特点
跨平台,客户端和服务端均可运行在MacOS,Linux,Windows系统上;
使用方便,配置简单;
多端映射,一个NSmartProxy客户端可以同时映射多种服务。
支持TCP协议栈下的所有协议(已经经过测试的有FTP、Telnet、SMTP、HTTP/HTTPS、POP3、SMB、VNC、RDP。),以及相当一部分基于UDP的协议(已经经过测试的有DNS查询、mosh服务)。
运行原理NSmartProxy包含两个服务程序:
服务端(NSmartProxy.ServerHost):部署在外网,用来接收来自最终使用者和客户端的反向连接,并将它们进行相互转发。
客户端(NSmartProxyClient):部署在内网,用来转发访问内网各种服务的请求以及响应。
客户端安装NSmartProxy支持各种基于TCP和UDP服务的端口映射,下面以mstsc,iis,ftp以及m ...
观察者模式(Observer)
意图观察者模式是一种行为型模式,允许你定义一种订阅机制,可在对象事件发生时通知多个 “观察” 该对象的其他对象。它定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。
问题假如你有两种类型的对象:顾客和商店。顾客对某个特定品牌的产品非常感兴趣(例如最新型号的iPhone手机),而该产品很快将会在商店里出售。
顾客可以每天来商店看看产品是否到货。但如果商品尚未到货时,绝大多数来到商店的顾客都会空手而归。
另一方面,每次新产品到货时,商店可以向所有顾客发送邮件(可能会被视为垃圾邮件)。这样,部分顾客就无需反复前往商店了,但也可能会惹恼对新产品没有兴趣的其他顾客。
我们似乎遇到了一个矛盾:要么让顾客浪费时间检查产品是否到货,要么让商店浪费资源去通知没有需求的顾客。
解决方案由主题订阅并维护多个观察者,当主题发生变更,则所有观察者收到通知,并各自维持自己的状态。
拥有一些值得关注的状态的对象通常被称为目标,由于它要将自身的状态改变通知给其他对象,我们也将其称为发布者(publisher)。所有希望关注发布者状态变化的其他对象被称为订阅者(sub ...
看了这篇文章,你应该可以应付工作中90%的git命令
本文主要描述了常用的git命令和原理,也可用作日常工作的参考手册...