tantan的博客

Notes, ideas, and observations

秘书问题

  • 又称相亲问题、止步问题、见好就收问题、苏丹的嫁妆问题、挑剔的求婚者问题等

  • 要聘请一名秘书,有 n 个应聘者。每次面试一人,面试后就要及时决定是否聘他,如果当时决定不聘他,他便不会回来。面试后总能清楚了解应聘者的合适程度,并能和之前的每个人做比较。问什么样的策略,才使最佳人选被选中的概率最大。

  • 答案:

    展开
    • 这个问题的最优解是一个停止规则。在这个规则里,面试官会拒绝头 r - 1 个应聘者 (令他们中的最佳人选为 应聘者 M),然后选出第一个比 M 好的应聘者。可见最优策略包含于这个系列的策略中。 (如果M在所有n个应聘者中也是最好的一个,那么这个策略将选不出任何人选)对于任意的截断值 r,最佳人选被选中的概率是:

      P(r)=i=1nP(applicant i is selectedapplicant i is the best)=i=1nP(applicant i is selectedapplicant i is the best)P(applicant i is the best)=[i=1r10+i=rnP(the best of the first i1 applicantsis in the first r1 applicantsapplicant i is the best)]1n=[i=rnr1i1]1n=r1ni=rn1i1.{\displaystyle {\begin{aligned}P(r)&=\sum _{i=1}^{n}P\left({\text{applicant }}i{\text{ is selected}}\cap {\text{applicant }}i{\text{ is the best}}\right)\\&=\sum _{i=1}^{n}P\left({\text{applicant }}i{\text{ is selected}}|{\text{applicant }}i{\text{ is the best}}\right)\cdot P\left({\text{applicant }}i{\text{ is the best}}\right)\\&=\left[\sum _{i=1}^{r-1}0+\sum _{i=r}^{n}P\left(\left.{\begin{array}{l}{\text{the best of the first }}i-1{\text{ applicants}}\\{\text{is in the first }}r-1{\text{ applicants}}\end{array}}\right|{\text{applicant }}i{\text{ is the best}}\right)\right]\cdot {\frac {1}{n}}\\&=\left[\sum _{i=r}^{n}{\frac {r-1}{i-1}}\right]\cdot {\frac {1}{n}}\quad =\quad {\frac {r-1}{n}}\sum _{i=r}^{n}{\frac {1}{i-1}}.\end{aligned}}}

    • 当n趋近于无穷大时

      P(x)=xx11tdt=xln(x).{\displaystyle P(x)=x\int _{x}^{1}{\frac {1}{t}}\,dt=-x\ln(x).}

    • 求出最优的x值为

      1e\frac {1}{e}

  • React

    • children属性: 子元素构成的数组
  • React-redux

    • 引入: import {...} from 'react-redux'

    • Store

      • Redux maintains a store, which hold state and reducer

      • createStore(reducer, initState)

        • reducer and initState should have the same keys
    • Reducer: (state, action) => (newstate)

    • <Provider>: Inject global state to its children component

    • connect(mapStateToProps)(Component)

      • map current states to Component’s props

      • mapStateToProps: is a function: (state) => { …someProp }

      • 一般和结合起来用

  • React-Router

    • 引入: import {} from 'react-router-dom'

    • <Route path>: 当url与path匹配时, 渲染内容

      • <BrowserRouter>, <HashRouter>:的容器

      • <Switch>: 保证其下的所有Route只会选中一个

      • 参数化匹配

        • 参数定义: path="/hsl/:h/:s/:l"

        • 参数获取: 在children组件中 let { h, s, l } = useParams();

    • <Link to>: 跳转到to的a标签

      • <Redirect>: 渲染时自动跳转
    • 嵌套使用:

      1
      2
      3
      4
      let { path, url } = useRouteMatch(); // 获取上一级的path和url
      return (
      <Route path={`${path}/next`}>
      )
  • Vue-Router

    • <router-link :to>: 跳转的a标签

    • <router-view>: 匹配的路由内容会渲染到这里

    • Router: 在这里定义全局路由表

  • Ubuntu 安装 rpm 包

    • sudo apt install alien

    • sudo alien packagename.rpm

    • sudo apt install ./packagename.deb

    • 一步到位: sudo alien -i packagename.rpm

  • Oracle 的连接方式

    • SID/System IDentifier: 数据库实例的全局唯一ID, 每个实例都不一样

    • SERVICE_NAME: 用于对外提供服务的名字, 被客户端使用

      • 也可以被数据库端用来区分对不同客户端提供的服务
    • TNS/Transparent Network Substrate: 由Oracle创造的, 专门用于Oracle数据库连接的, 基于TCP/IP, SDP和命名管道的, 同构p2p连接技术

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      // STATE.WORLD是一个TNS Name
      STAGE.WORLD =
      (DESCRIPTION =
      (ADDRESS =
      (PROTOCOL = TCP)
      (PORT = 1521)
      (HOST = LITTLECOMPUTER.ACME.ORG) // 服务器地址
      )
      (CONNECT_DATA = (SID = MYSID)) // 数据库标识, 可以使用SID或者SERVICE_NAME
      )

      // PROD.WORLD也是一个TNS Name
      PROD.WORLD =
      (DESCRIPTION =
      (ADDRESS =
      (PROTOCOL = TCP)
      (PORT = 1521)
      (HOST = BIGCOMPUTER.ACME.ORG)
      )
      (CONNECT_DATA = (SERVICE_NAME = MYNAME))
      )

转换dos格式行尾为unix行尾

  • 工具: dos2unix

  • 单文件: dos2unix input output

  • 递归转换: find . -type f -print0 | xargs -0 dos2unix

Github Developer Settings

  • GitHub Apps

  • OAuth Apps

    • 需要用到Github API的App
  • Personal access tokens

    • Tokens you have generated that can be used to access the GitHub API.

    • 权限类似于账号+密码登录

用 Hexo 搭建了个人 blog

#Hexo 基本操作

0%