<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/rss.xsl" type="text/xsl"?>
<rss version="2.0">
  <channel>
    <title>IT瘾网站推荐</title>
    <link>https://itindex.net/categories/网站</link>
    <description>IT社区推荐资讯 - ITIndex.net</description>
    <language>zh</language>
    <copyright>https://itindex.net/</copyright>
    <generator>https://itindex.net/</generator>
    <docs>http://backend.userland.com/rss</docs>
    <image>
      <url>https://itindex.net/images/logo.gif</url>
      <title>IT社区推荐资讯 - ITIndex.net</title>
      <link>https://itindex.net/categories/网站</link>
    </image>
    <item>
      <title>第一手财经新闻信息网站</title>
      <link>https://itindex.net/detail/63091-%E8%B4%A2%E7%BB%8F%E6%96%B0%E9%97%BB-%E4%BF%A1%E6%81%AF-%E7%BD%91%E7%AB%99</link>
      <description>&lt;div&gt;  &lt;p&gt;加强热点关注是咱们获取流量的主要方式，希望大家能充分重视。以下是初步总结的几个跟踪方式：&lt;/p&gt;
  &lt;p&gt;1、重点   &lt;strong&gt;人物&lt;/strong&gt;、知名人士及热点事件当事人的发言、   &lt;strong&gt;讲话&lt;/strong&gt;、社交媒体动态；&lt;/p&gt;
  &lt;p&gt;2、相关机构，如   &lt;strong&gt;监管部门&lt;/strong&gt;（证监会、发改委、工信部、环保局、市场监管局等）、研究机构（如行业协会、数据统计机构、研究院等）涉及的公司情况通报、   &lt;strong&gt;报告&lt;/strong&gt;；&lt;/p&gt;
  &lt;p&gt;3、工商信息变更情况，如法定代表人、注册资本、经营范围、商标等&lt;/p&gt;
  &lt;p&gt;4、重点公司的   &lt;strong&gt;公告、声明、回应&lt;/strong&gt;；&lt;/p&gt;
  &lt;p&gt;5、法律文书网相关案件涉及的公司信息披露；&lt;/p&gt;
  &lt;p&gt;6、社交群组   &lt;strong&gt;热门讨论&lt;/strong&gt;的话题、报料；&lt;/p&gt;
  &lt;p&gt;7、媒体报道信息的提炼、   &lt;strong&gt;整合&lt;/strong&gt;。&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;/p&gt;  &lt;h1&gt;官方媒体&lt;/h1&gt;  &lt;p&gt;   &lt;a href="http://amr.gd.gov.cn/"&gt;广东省市场监督管理局&lt;/a&gt;
（新闻信息-新闻发布厅）&lt;/p&gt;  &lt;p&gt;   &lt;a href="http://mpa.gd.gov.cn/"&gt;广东省药品监督管理局&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;人   &lt;a href="https://www.sxhzjcyjs.com/wwwajxxgksxhzjcyjscom/html/gj/bj/bjsdsfy/index.htm"&gt;民检察院案件信息公开网&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://splcgk.court.gov.cn/gzfwww/"&gt;审判信息公开网&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://wenshu.court.gov.cn/"&gt;裁判文书网&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;






&lt;/p&gt;  &lt;p&gt;   &lt;a href="http://zxgk.court.gov.cn/"&gt;被执行信息公开网&lt;/a&gt;
   &lt;a href="https://weibo.com/a/hot/7570902249707521_1.html"&gt;事件相关方回复与声明&lt;/a&gt;   &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;/p&gt;  &lt;h1&gt;平台型消息源&lt;/h1&gt;  &lt;p&gt;   &lt;a href="https://news.sina.com.cn/roll/#pageid=153&amp;lid=2509&amp;k=&amp;num=50&amp;page=1"&gt;新浪滚动&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://www.cls.cn/telegraph"&gt;财联社&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://www.ithome.com/"&gt;it之家&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="http://www.bjnews.com.cn/"&gt;新京报&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://www.thepaper.cn/"&gt;澎湃新闻&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://www.jiemian.com/"&gt;界面新闻&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="http://finance.ifeng.com/"&gt;凤凰网财经&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://www.jin10.com/"&gt;金十数据&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://wallstreetcn.com/"&gt;华尔街见闻&lt;/a&gt;&lt;/p&gt;  &lt;h1&gt;海外媒体&lt;/h1&gt;  &lt;p&gt;   &lt;a href="https://cn.yna.co.kr/index"&gt;韩联社&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://cn.nikkei.com/"&gt;日经中文网&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://www.scmp.com/"&gt;南华早报&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://assetdash.com/"&gt;比特币数据&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://www.forbeschina.com/"&gt;福布斯中国&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;
















&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://www.forbes.com/?sh=656082fe2254"&gt;福布斯&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;/p&gt;  &lt;h1&gt;机构信源&lt;/h1&gt;  &lt;p&gt;   &lt;a href="http://www.csrc.gov.cn/pub/newsite/"&gt;中国证监会&lt;/a&gt;（多关注行政处罚和要闻及其派出机构）&lt;/p&gt;  &lt;p&gt;   &lt;a href="http://www.csrc.gov.cn/pub/liaoning/xxfw/tzzsyd/200703/t20070319_70175.htm"&gt;怎样看招股说明书&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://www.cbirc.gov.cn/cn/view/pages/index/index.html"&gt;银保监会&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://www.sec.gov/edgar/searchedgar/companysearch.html"&gt;美国证监会&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://www.commerce.gov/"&gt;美国商务部&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="http://www.gov.cn/fuwu/bm/index.htm"&gt;政府部门公开&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="http://www.mof.gov.cn/gkml/"&gt;财政部&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://ythzxfw.miit.gov.cn/index"&gt;工信部&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://www.nmpa.gov.cn/"&gt;国家药品监督管理局&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://pccz.court.gov.cn/pcajxxw/index/xxwsy"&gt;全国企业破产重整案件信息网&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://www.ndrc.gov.cn/xxgk/"&gt;发改委&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="http://www.sse.com.cn/disclosure/listedinfo/announcement/"&gt;上交所&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="http://www.szse.cn/disclosure/listed/notice/index.html"&gt;深交所&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://www.hkexnews.hk/index_c.htm"&gt;港交所&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://liuyan.people.com.cn/threads/list?fid=5055&amp;position=1"&gt;人民网留言板&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="http://www.bj315.org/"&gt;北京市消协&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://www.chinamoney.com.cn/chinese/zqfx/"&gt;中国外汇交易中心&lt;/a&gt;&lt;/p&gt;  &lt;h1&gt;热榜排行榜&lt;/h1&gt;  &lt;p&gt;   &lt;a href="https://tophub.today/"&gt;今日热榜&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://www.bilibili.com/v/popular/rank/all"&gt;b站热榜&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://s.weibo.com/top/summary"&gt;微博热搜&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://www.zhihu.com/hot"&gt;知乎热榜&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://www.forbes.com/real-time-billionaires/#40aa23f33d78"&gt;福布斯实时富豪榜&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://www.bloomberg.com/billionaires/"&gt;彭博亿万指数&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://www.morningstar.cn/main/default.aspx"&gt;晨星网（基金评级）&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;


























&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://www.hurun.net/zh-CN/Home/Index"&gt;胡润百富&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;/p&gt;  &lt;h1&gt;牛散变动&lt;/h1&gt;  &lt;p&gt;   &lt;a href="http://www.tetegu.com/"&gt;最新最全牛散持股查询&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;


&lt;/p&gt;  &lt;p&gt;   &lt;a href="http://tetegu.com"&gt;特特股&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;/p&gt;  &lt;h1&gt;具体公司第一消息源&lt;/h1&gt;  &lt;p&gt;   &lt;a href="http://xinsheng.huawei.com/cn/index/guest.html"&gt;华为心声社区&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://www.apple.com.cn/newsroom/"&gt;苹果官网社区&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://www.faradayfuturecn.com/cn/press-room/"&gt;法拉第未来&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;拍卖平台&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://paimai.caa123.org.cn/index.html"&gt;中拍平台&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;京东拍卖&lt;/p&gt;  &lt;p&gt;阿里拍卖&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://www.sohochinaoffice.com/"&gt;https://www.sohochinaoffice.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;









&lt;/p&gt;  &lt;p&gt;SOHO中国租售平台&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="http://www.cac.gov.cn/2021-10/18/c_1636153133379560.htm" rel="noopener noreferrer"&gt;最新版《互联网新闻信息稿源单位名单》&lt;/a&gt;   &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;/p&gt;
&lt;/div&gt;
    &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/63091-%E8%B4%A2%E7%BB%8F%E6%96%B0%E9%97%BB-%E4%BF%A1%E6%81%AF-%E7%BD%91%E7%AB%99</guid>
      <pubDate>Fri, 21 Nov 2025 10:23:18 CST</pubDate>
    </item>
    <item>
      <title>毕业季：推荐 9 个 适合应届大学生的求职网站！以及其他 24 个招聘平台！</title>
      <link>https://itindex.net/detail/63023-%E6%AF%95%E4%B8%9A-%E5%A4%A7%E5%AD%A6%E7%94%9F-%E6%B1%82%E8%81%8C</link>
      <description>&lt;table cellpadding="0" cellspacing="0"&gt;    &lt;tr&gt;      &lt;td&gt;1、国聘        &lt;br /&gt;相比传统招聘平台，这里主要集中了国企、央企等单位的工作招聘，其中“校园招聘”提供了专属于应届毕业生的各种岗位；        &lt;br /&gt;地址：        &lt;a href="http://www.iguopin.com" target="_blank"&gt;www.iguopin.com&lt;/a&gt;        &lt;br /&gt;        &lt;br /&gt;2、中国公共招聘网        &lt;br /&gt;又一家国字头的招聘网站，有社会岗位，更多则是事业单位的招聘信息，如果毕业后想考编，也是一个值得参考的网站；        &lt;br /&gt;地址：        &lt;a href="http://www.job.mohrss.gov.cn" target="_blank"&gt;www.job.mohrss.gov.cn&lt;/a&gt;        &lt;br /&gt;        &lt;br /&gt;3、高校人才网        &lt;br /&gt;是一家专注于收集发布各类公职人员招聘信息的专业网站，主要包括：高校、事业单位、医疗卫生单位、研究机构等招聘信息；        &lt;br /&gt;地址：        &lt;a href="http://www.gaoxiaojob.com" target="_blank"&gt;www.gaoxiaojob.com&lt;/a&gt;        &lt;br /&gt;        &lt;br /&gt;4、实习僧        &lt;br /&gt;专注实习、校招的校园招聘平台。为大学生提供国内外行业巨头在内的40万+企业实习、校园招聘岗位信息；        &lt;br /&gt;地址：        &lt;a href="http://www.shixiseng.com" target="_blank"&gt;www.shixiseng.com&lt;/a&gt;        &lt;br /&gt;        &lt;br /&gt;5、国家大学生就业服务平台        &lt;br /&gt;一家由教育部主管，服务于高校毕业生及用人单位的公共就业服务平台，职位信息还聚合了：BOSS直聘、智联招聘等18家知名招聘平台！        &lt;br /&gt;地址：        &lt;a href="http://www.ncss.cn" target="_blank"&gt;www.ncss.cn&lt;/a&gt;        &lt;br /&gt;        &lt;br /&gt;6、刺猬实习        &lt;br /&gt;刺猬实习是大学生实习校招找工作网申平台，提供海量实习岗位及校园招聘信息！        &lt;br /&gt;地址：        &lt;a href="http://www.ciwei.net" target="_blank"&gt;www.ciwei.net&lt;/a&gt;        &lt;br /&gt;        &lt;br /&gt;7、大学生招聘会        &lt;br /&gt;为应届大学生求职提供权威准确的人才招聘会信息！        &lt;br /&gt;地址：        &lt;a href="http://www.zhaopinhui.net" target="_blank"&gt;www.zhaopinhui.net&lt;/a&gt;        &lt;br /&gt;        &lt;br /&gt;8、应届生求职网        &lt;br /&gt;为应届毕业生提供大量校园招聘信息、兼职实习招聘信息以及校园宣讲会和校园招聘会信息；        &lt;br /&gt;地址：        &lt;a href="http://www.yingjiesheng.com" target="_blank"&gt;www.yingjiesheng.com&lt;/a&gt;        &lt;br /&gt;        &lt;br /&gt;9、就业桥        &lt;br /&gt;为大学生搭建智慧就业资讯服务平台，包括企事业单位招聘、文职、公务员、专升本等，同时为大学生提供就业服务以及测评工具。        &lt;br /&gt;地址：        &lt;a href="http://www.jiuyeqiao.cn" target="_blank"&gt;www.jiuyeqiao.cn&lt;/a&gt;        &lt;br /&gt;        &lt;br /&gt;剩下是一些垂直类招聘平台，比如船员招聘网、制造业招聘、医疗英才网等24个招聘网站，我放在A链接的求职专题里面了，这个专题今后也会不断的补充，欢迎大家前往查看：        &lt;br /&gt;        &lt;br /&gt;        &lt;a href="https://www.alianjie.cn/zt/6" target="_blank"&gt;https://www.alianjie.cn/zt/6&lt;/a&gt;        &lt;br /&gt;    &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/63023-%E6%AF%95%E4%B8%9A-%E5%A4%A7%E5%AD%A6%E7%94%9F-%E6%B1%82%E8%81%8C</guid>
      <pubDate>Fri, 04 Jul 2025 08:46:09 CST</pubDate>
    </item>
    <item>
      <title>使用 Nginx + acme.sh 配置 HTTPS 网站</title>
      <link>https://itindex.net/detail/62982-nginx-acme-sh</link>
      <description>&lt;h1&gt;使用 Nginx + acme.sh 配置 HTTPS 网站&lt;/h1&gt;  &lt;div&gt;2025-03-02    &lt;a href="https://lehu.zz.ac/kg/?d=taoshu.in#/nginx/acme.html" target="_blank" title=""&gt;🕸️&lt;/a&gt;⏳3.9分钟(1.6千字)    &lt;a href="https://taoshu.in/about.html#&amp;#20851;&amp;#20110;&amp;#24191;&amp;#21578;"&gt;&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;之前我发起了免费域名项目    &lt;a href="https://taoshu.in/dns/zz.html"&gt;zz.nic&lt;/a&gt;。所有 zz.ac 域名要求必须使用 HTTPS 建站，这就涉及到 SSL 证书。虽然市面上有很多商业 HTTPS 证书可选，但基于 ACME 标准申领的免费 SSL DV 证书完全够用了。可我发现好多朋友还是不会申请和配置。本文分享基于 Nginx 和 acme.sh 工具来自动化免费申请和更新 ACME SSL DV 证书的方案。&lt;/p&gt;  &lt;p&gt;ACME 标准是一项自动验证域名所有权并对域名签发 SSL DV 证书的技术。SSL 证书分 DV/OV/EV 三种，DV 只验证域名所有权。其他两种请参考我的专门    &lt;a href="https://taoshu.in/ssl-ev-is-dead.html"&gt;文章&lt;/a&gt;。&lt;/p&gt;  &lt;p&gt;验证域名有多种方法，称其为 challenge。最简单的办法就是 HTTP-01 验证。你先把域名解析到服务器，然后在 80 端口跑 HTTP 服务。在发起 ACME 证书请求之前，你需要先生根据一定的规则生成 token，而且这个 token 需要通过    &lt;code&gt;http://&amp;lt;你的域名&amp;gt;/.well-known/acme-challenge/&amp;lt;TOKEN&amp;gt;&lt;/code&gt;来访问。接着就向支持 ACME 的 CA 请求签发 DV 证书。CA 收到请求后会访问你的验证 Token。如果匹配成本，就会返回签发的证书。&lt;/p&gt;  &lt;p&gt;这种方法只能验证你可以控制域名，但无法知晓域名的过期时间。所以 CA 签发的证书不能太长，一般是三个月有效。最近 Let’s Encrypt 正在推动将 ACME 证书的有效时间进一步缩短为六天。&lt;/p&gt;  &lt;p&gt;很多朋友总觉得九十天太多，不如商业证书一年有效方便。其实不然。现在整个证书行业都在向自动化方向演进。哪怕是一年有效的证书，最好也能实现自动化签发和更新，不然每年手动更换也很麻烦，而且容易出问题。&lt;/p&gt;  &lt;p&gt;如果实现了自动化更新，到底是几天过期就不重要了，一年、半年、六天，都没区别。但总得来说，证书的有效时间越短，潜在的安全隐患就越小。&lt;/p&gt;  &lt;p&gt;有人会说自动化哪有那么容易？其实现在已经很容易了。本文跟大家分享的 acme.sh 就是其中的后起之秀，全部使用 shell 脚本实现，非常轻量，支持多家 CA 和多种验证方式。因为是脚本，所以几乎支持各种类 UNIX 平台，应用十分广泛。&lt;/p&gt;  &lt;p&gt;另外，本文假设使用 Nginx 作为 HTTP 服务器。&lt;/p&gt;  &lt;p&gt;首先，将域名，比如 example.zz.ac，解析到你的服务器。服务器需要有公网 IP 地址。&lt;/p&gt;  &lt;blockquote&gt;⚠️Important    &lt;p&gt;接下来所有步骤请使用 root 账号执行！&lt;/p&gt;&lt;/blockquote&gt;  &lt;p&gt;然后配置 Nginx 在 80 端口对外提供 HTTP 服务。这一步是为了让 CA 能正常下载 HTTP-01 Token。&lt;/p&gt;  &lt;pre&gt;    &lt;code&gt;server {
    listen 80;
    server_name _;
    root /var/www/html;
}&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;接着我们安装 acme.sh 工具：&lt;/p&gt;  &lt;div&gt;    &lt;pre&gt;      &lt;code&gt;        &lt;a href="https://taoshu.in/nginx/acme.html#cb2-1"&gt;&lt;/a&gt;curlhttps://get.acme.sh|sh-semail=my@example.zz.ac&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;  &lt;p&gt;这里需要指定自己的电子邮箱。之前 Let’s Encrypt 会给该邮箱发送证书过期提醒，现在这个服务取消了。但无论如何，需要提供邮箱。有些 CA 还要求注册用户，我建议就别考虑了。&lt;/p&gt;  &lt;p&gt;脚本执行完毕会把 acme.sh 安装到    &lt;code&gt;/root/.acme.sh&lt;/code&gt;目录。&lt;/p&gt;  &lt;p&gt;接下来我们申请 ACME 免费 DV 证书。&lt;/p&gt;  &lt;div&gt;    &lt;pre&gt;      &lt;code&gt;        &lt;a href="https://taoshu.in/nginx/acme.html#cb3-1"&gt;&lt;/a&gt;.acme.sh/acme.sh--issue-dexample.zz.ac-w/var/www/html/&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;  &lt;p&gt;这里的    &lt;code&gt;--issue&lt;/code&gt;表示签改新证书，    &lt;code&gt;-d example.zz.ac&lt;/code&gt;指定证书域名，可以多次使用    &lt;code&gt;-d&lt;/code&gt;参数指定多个域名。    &lt;code&gt;-w&lt;/code&gt;表示 HTTP 服务的根目录，acme.sh 会在该目录下生成    &lt;code&gt;.well-known/acme-challenge/&amp;lt;TOKEN&amp;gt;&lt;/code&gt;。&lt;/p&gt;  &lt;p&gt;acme.sh 默认使用 ZeroSSL 来签发证书。你也可以通过    &lt;code&gt;--server letsencrypt&lt;/code&gt;参数来要求使用 Let’s Encrypt 签发证书。早期 Let’s Encrypt 不支持签发 ECC 椭圆曲线证书， ZeroSSL 支持。便现在 Let’s Encrypt 也支持了。不过 ZeroSSL 了限频策略要比 Let’s Encrypt 要宽松许多。我通常使用 ZeroSSL，如果遇到问题会切换到 Let’s Encrypt。两者没有本质区别。&lt;/p&gt;  &lt;p&gt;命令执行后会稍等片刻就会完成验证并从 CA 处下载证书文件到    &lt;code&gt;/root/.acme/example.zz.ac_ecc&lt;/code&gt;目前。注意，现在默认都使用 ECC 证书，原来的 RSA 证书因为同等加密强度下需要更长的密钥，为了加快 TLS 握手，已经不推荐使用 RSA 证书了。&lt;/p&gt;  &lt;p&gt;在证书文件目录中有两个文件最重要，分别是：&lt;/p&gt;  &lt;ul&gt;    &lt;li&gt;      &lt;code&gt;example.zz.ac.key&lt;/code&gt;证书私钥&lt;/li&gt;    &lt;li&gt;      &lt;code&gt;fullchain.cer&lt;/code&gt;证书文件并附件中间 CA 证书链&lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;现在我们可以把证书配置到 Nginx 服务器了：&lt;/p&gt;  &lt;pre&gt;    &lt;code&gt;server {
    listen 443 ssl;
    server_name example.zz.ac;
    ssl_certificate /root/.acme.sh/example.zz.ac_ecc/fullchain.cer;
    ssl_certificate_key /root/.acme.sh/example.zz.ac_ecc/example.zz.ac.key;
    # ...
}&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;这就配置好了 HTTPS 站点。为了让大家默认使用 HTTPS 站，我们还需要将 HTTP 请求重定向到 HTTPS 站。但这里有一个问题，不能影响 HTTP-01 验证！&lt;/p&gt;  &lt;pre&gt;    &lt;code&gt;server {
    listen 80;
    server_name _;

    location / {
        return 301 https://$host$request_uri;
    }

    location /.well-known/acme-challenge/ {
        root /var/www/html;
    }
}&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;在上面的配置中，我们单独处理    &lt;code&gt;/.well-known/acme-challenge/&lt;/code&gt;路径，指定它的根目录为    &lt;code&gt;/var/www/html&lt;/code&gt;。其他所有请求都会命中    &lt;code&gt;location /&lt;/code&gt;从而被 301 跳转到对应的 HTTPS 路径上。Nginx 在匹配规则的时候路径越长优先其越高。虽然    &lt;code&gt;.well-known&lt;/code&gt;的规则在下面，但它不会受    &lt;code&gt;location /&lt;/code&gt;影响。&lt;/p&gt;  &lt;p&gt;最后我们配置定时任务在每天的凌晨一点自动更新 SSL 证书，并且还会让 Nginx 重新加载配置。这样就再也不用担心 SSL 证书过期了✌️&lt;/p&gt;  &lt;pre&gt;    &lt;code&gt;0 1 * * * &amp;quot;/root/.acme.sh&amp;quot;/acme.sh --cron --home &amp;quot;/root/.acme.sh&amp;quot; &amp;gt; /dev/null &amp;amp;&amp;amp; /usr/sbin/nginx -s reload&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;我现在维护的网站和 Web 服务越来越多。除了少数使用 Go 语言开发直接对外不使用 Nginx 代理之外，其他站点都基于 Nginx + acme.sh 实现自动申请和更新 SSL 证书，基本不会有什么问题。&lt;/p&gt;  &lt;p&gt;心动不如行动。赶紧申请你的    &lt;a href="https://taoshu.in/dns/zz.html"&gt;zz.ac&lt;/a&gt;域名并建立自己的 HTTPS 站点吧～&lt;/p&gt;
    &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/62982-nginx-acme-sh</guid>
      <pubDate>Tue, 04 Mar 2025 09:14:29 CST</pubDate>
    </item>
    <item>
      <title>使用 GoatCounter 与 Zeabur 搭建网站数据统计系统</title>
      <link>https://itindex.net/detail/62924-goatcounter-zeabur-%E7%BD%91%E7%AB%99</link>
      <description>&lt;h2&gt;前言&lt;/h2&gt;
 &lt;p&gt;在「  &lt;a href="https://www.pseudoyu.com/zh/2024/06/29/what_changed_in_my_blog_2024/"&gt;2024 年了，我的博客有了什么变化&lt;/a&gt;」一文中，我介绍了自己使用 Serverless 平台和一些开源项目搭建的博客系统，也开启了这个系列教程来记录搭建和部署全过程。&lt;/p&gt;
 &lt;p&gt;本篇是关于统计系统的解决方案。&lt;/p&gt;
 &lt;h2&gt;统计系统方案&lt;/h2&gt;
 &lt;p&gt;相比起博客本体和评论系统，我在很长的一段时间其实都没有在意过统计系统（主要当时也没人看），更加没考虑太多 SEO 或是什么其他推广方向上的事，但后来逐渐发现，其实统计下来的数据并不只是一张好看的可以用来发推的图表，其对于博客的选题、内容都有着很大的参考价值。&lt;/p&gt;
 &lt;p&gt;其实主流成熟的方案都能够满足基本的需求，即使是免费的 Google Analytics 也完全够用，但在博客发展过程中，我依然因各种原因有过几次迭代，最终使用了 GoatCounter 这一方案。&lt;/p&gt;
 &lt;h3&gt;splitbee&lt;/h3&gt;
 &lt;p&gt;我最初使用的是一个免费的工具 splitbee，它提供了免费的基础统计额度，有着还不错的界面，并且还支持一些复杂的用户追踪，A/B test 等，但印象里好像只能保留半年的数据，并且每月超过 5000 pv 后就需要升级了，所以后来放弃了。&lt;/p&gt;
 &lt;h3&gt;Cloudflare + Google Search Console&lt;/h3&gt;
 &lt;p&gt;  &lt;img alt="cloudflare_web_stats" src="https://image.pseudoyu.com/images/cloudflare_web_stats.png"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;放弃 splitbee 之后，很长一段时间我没有集成额外的统计应用，而是用的 Cloudflare 自带的站点统计，但是发现它其实统计的只是网络总流量，有包括爬虫在内的非常多的无效数据，并且没有精确到路径等细节。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="google_search_console" src="https://image.pseudoyu.com/images/google_search_console.png"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;后来了解到了 SEO 这一概念后，又添加了   &lt;a href="https://search.google.com/search-console/about"&gt;Google Search Console&lt;/a&gt; 这一统计维度，这也是目前觉得对我写博文最有意义的数据，主要呈现的是用户在搜索引擎中触达我博客站点的关键词以及通过搜索点击进入我博客的页面路径。&lt;/p&gt;
 &lt;p&gt;可以看到，一篇「  &lt;a href="https://www.pseudoyu.com/zh/category/tools/"&gt;Warp，iTerm2 还是 Alacritty？我的终端折腾小记&lt;/a&gt;」为我带来了许多访客，而关于博客搭建、智能合约开发也是大部分从搜索引擎来的自然用户对我博客的第一印象。&lt;/p&gt;
 &lt;h3&gt;Umami + Supabase + Netlify&lt;/h3&gt;
 &lt;p&gt;  &lt;img alt="yu_umami_record" src="https://image.pseudoyu.com/images/yu_umami_record.png"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;但是上述两者依然只能看到网站整体的数据，想精确到某篇文章在一段时间的表现或者文章发布后的实时访问数据，依然需要一个统计系统，我在看了 Reorx 的一篇「  &lt;a href="https://reorx.com/blog/deploy-umami-for-personal-website/"&gt;搭建 umami 收集个人网站统计数据 | Reorx’s Forge&lt;/a&gt;」选择使用了 umami 这一开源、易自部署的统计系统，界面简洁，功能易用，很方便集成到自己的博客系统中。&lt;/p&gt;
 &lt;p&gt;使用了一年半，一直倒没出现什么问题，，只不过可能因为自己用得比较早，在一次大版本更新的时候数据库 Migration 脚本出现了不兼容的字段更新，其实有点不理解这样量级的开源项目为什么会出现这样的问题，也看到 issue 中有很多其他用户有同样的诉求，但最终并没有给出一个比较好的解决方案。&lt;/p&gt;
 &lt;p&gt;但其实最大的问题是一个统计系统依赖了两个平台，部署和维护上都还是有些太重了。当数据库或是 Netlify 任一出现问题或需要迁移时，会带来许多额外的成本。于是前段时间在更新博客评论系统的时候，想着干脆就一起更换为更轻量的 GoatCounter。&lt;/p&gt;
 &lt;h3&gt;GoatCounter + Zeabur&lt;/h3&gt;
 &lt;p&gt;  &lt;img alt="goatcounter_stats" src="https://image.pseudoyu.com/images/goatcounter_stats.png"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;这个小众的统计系统是我在看 Reorx 的博客代码更新的时候偶然发现的，一下子被这种 Retro Internet 的风格所吸引，几乎没有任何多余的按钮，功能却很完备，而且使用的是 go 单二进制文件 + sqlite 数据库单文件的架构，轻量而易于部署，于是打算迁移。&lt;/p&gt;
 &lt;p&gt;其实我自己的 GoatCounter 是部署在   &lt;a href="https://fly.io/"&gt;fly.io&lt;/a&gt; 上的，但我在上一篇 Remark42 的文章中已经非常详细地介绍了 fly 的操作说明，不想有太多重复，刚好最近又在重度使用   &lt;a href="https://zeabur.com?referralCode=pseudoyu"&gt;Zeabur&lt;/a&gt; 这一 Serverless 平台，于是本文将以   &lt;a href="https://zeabur.com?referralCode=pseudoyu"&gt;Zeabur&lt;/a&gt; 为例，方式同样适用于其他类似平台。&lt;/p&gt;
 &lt;p&gt;我也在下文的 Zeabur 部署方案之后提供了 fly.io 和在 VPS 上使用 docker-compose 部署的配置文件，供大家参考。&lt;/p&gt;
 &lt;h2&gt;GoatCounter 部署说明&lt;/h2&gt;
 &lt;p&gt;GoatCounter 本身代码开源 —— 「  &lt;a href="https://github.com/arp242/goatcounter"&gt;GitHub - arp242/goatcounter&lt;/a&gt;」，文档清晰易读，可以根据自己的实际需求进行配置。GoatCounter + Zeabur 的方案仅牵扯到单个服务，数据库使用的是 sqlite 挂载于 volume 中，所以部署起来非常简单。&lt;/p&gt;
 &lt;h3&gt;使用 Zeabur 部署&lt;/h3&gt;
 &lt;p&gt;  &lt;a href="https://zeabur.com?referralCode=pseudoyu"&gt;Zeabur&lt;/a&gt; 对于容器应用的部署是需要 Developer Plan 的，5 美元/月，但是像这样的镜像服务整体用量和费用都较低，每月的额度足够部署非常多服务，可以酌情选择。整体部署流程比起 fly.io 简单很多，所有操作都可以使用 Web 界面完成，不需要额外安装命令行工具等。&lt;/p&gt;
 &lt;h4&gt;注册 zeabur&lt;/h4&gt;
 &lt;p&gt;  &lt;img alt="zeabur_login" src="https://image.pseudoyu.com/images/zeabur_login.png"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;访问   &lt;a href="https://zeabur.com?referralCode=pseudoyu"&gt;Zeabur&lt;/a&gt; 官网，并点击右上角，使用 GitHub 账号授权登录。&lt;/p&gt;
 &lt;h4&gt;创建新项目&lt;/h4&gt;
 &lt;p&gt;  &lt;img alt="zeabur_new_project" src="https://image.pseudoyu.com/images/zeabur_new_project.png"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;进入主界面后，点击右上角   &lt;code&gt;创建项目&lt;/code&gt; 按钮。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="zeabur_hk_region" src="https://image.pseudoyu.com/images/zeabur_hk_region.png"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;我选择了香港的 AWS 机房，不同机房的访问速度、性能和价格会有一些差异，可以根据自己的需求进行选择。&lt;/p&gt;
 &lt;h4&gt;配置镜像部署&lt;/h4&gt;
 &lt;p&gt;  &lt;img alt="zeabur_build" src="https://image.pseudoyu.com/images/zeabur_build.png"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;在下一步中选择 Docker 容器镜像进行部署。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="zeabur_docker_custom_config" src="https://image.pseudoyu.com/images/zeabur_docker_custom_config.png"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;由于我们使用的是自己构建的镜像，官方也没有上线 GoatCounter 模板，因此我们点击选择自定义。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="zeabur_prebuilt_edit_toml" src="https://image.pseudoyu.com/images/zeabur_prebuilt_edit_toml.png"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;这一步可以自己在界面上填写各种配置项，但可能由于我习惯了 fly.io 的文件配置模式，我选择左下角的   &lt;code&gt;编辑 TOML 文件&lt;/code&gt;，大家也可以直接复制我的配置文件并直接修改。&lt;/p&gt;
 &lt;div&gt;  &lt;pre&gt;   &lt;code&gt;name = &amp;quot;yu-goatcounter&amp;quot;

[source]
image = &amp;quot;pseudoyu/goatcounter&amp;quot;

[[ports]]
id = &amp;quot;web&amp;quot;
port = 8080
type = &amp;quot;HTTP&amp;quot;

[[volumes]]
id = &amp;quot;goatcounter-data&amp;quot;
dir = &amp;quot;/data&amp;quot;

[env]
PORT = { default = &amp;quot;8080&amp;quot; , expose = true }
GOATCOUNTER_DB = { default = &amp;quot;sqlite3://data/goatcounter.sqlite3&amp;quot; , expose = true }
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt; &lt;p&gt;  &lt;img alt="zeabur_prebuilt_goatcounter_toml" src="https://image.pseudoyu.com/images/zeabur_prebuilt_goatcounter_toml.png"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;配置好后点击右下角部署按钮即可。&lt;/p&gt;
 &lt;h4&gt;部署完成&lt;/h4&gt;
 &lt;p&gt;  &lt;img alt="yu-goatcounter_project" src="https://image.pseudoyu.com/images/yu-goatcounter_project.png"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;点击部署后，等待片刻，会有一个生成的项目默认名称，可以在左上角的设置中去修改为可读性较强的名称，如   &lt;code&gt;yu-goatcounter&lt;/code&gt;。&lt;/p&gt;
 &lt;h4&gt;配置自定义域名&lt;/h4&gt;
 &lt;p&gt;  &lt;img alt="zeabur_create_domain" src="https://image.pseudoyu.com/images/zeabur_create_domain.png"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;服务部署完成后，我们需要进行域名绑定才能通过公网访问网站，Zeabur 提供了免费的二级域名   &lt;code&gt;xx.zeabur.app&lt;/code&gt;，也可以绑定自己的域名。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="zeabur_custom_domain" src="https://image.pseudoyu.com/images/zeabur_custom_domain.png"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;其中生成域名可直接使用，无须进行其他配置，如   &lt;code&gt;goatcounter.zeabur.app&lt;/code&gt;；而如果使用的是自定义域名，则需要在自己域名管理后台添加 CNAME 记录，指向格式为   &lt;code&gt;xxx.cname.zeabur-dns.com&lt;/code&gt; 的机房地址。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="cloudflare_goatcounter_config" src="https://image.pseudoyu.com/images/cloudflare_goatcounter_config.png"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;例如我的域名托管在 Cloudflare 上，添加的 CNAME 记录如上图所示，有去问过官方，说如果选 AWS HK 机房的话可以不使用 Cloudflare 的代理，速度理论上会更快，可以根据自己的需要酌情配置。&lt;/p&gt;
 &lt;p&gt;此外，如果你选择的是华为云机房，则需要域名备案并且额外新增一条 TXT 记录，可以根据提示进行操作。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="zeabur_custom_domain_success" src="https://image.pseudoyu.com/images/zeabur_custom_domain_success.png"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;显示绿色则为配置成功，至此我们的 GoatCounter 服务就部署完成了。&lt;/p&gt;
 &lt;h4&gt;数据备份&lt;/h4&gt;
 &lt;p&gt;我们在配置时候有这么一段&lt;/p&gt;
 &lt;div&gt;  &lt;pre&gt;   &lt;code&gt;[[volumes]]
id = &amp;quot;goatcounter-data&amp;quot;
dir = &amp;quot;/data&amp;quot;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt; &lt;p&gt;功能是将容器内的   &lt;code&gt;/data&lt;/code&gt; 目录（即我们的 sqlite 数据库存在的位置）挂载到一个 id 为   &lt;code&gt;goatcounter-data&lt;/code&gt; 的存储卷，如果不挂载存储卷的话，容器重启或重新部署数据将会丢失。&lt;/p&gt;
 &lt;p&gt;关于存储卷这一点 Zeabur 的界面上没有很直观的显示和管理操作，以至于我总是怀疑自己的配置是否生效。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="zeabur_add_goatcounter_backup" src="https://image.pseudoyu.com/images/zeabur_add_goatcounter_backup.png"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;研究了半天发现可以先在设置中暂停服务，然后在上面的备份模块新增一个备份，点击下载后可以在本地看到我们备份文件，目录层级如下：&lt;/p&gt;
 &lt;div&gt;  &lt;pre&gt;   &lt;code&gt;data/
└── goatcounter-data
    └── goatcounter.sqlite3
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt; &lt;p&gt;这样则能表示我们的数据成功持久化了，希望 Zeabur 能在界面上有更直观的显示。&lt;/p&gt;
 &lt;h3&gt;使用 fly.io 部署&lt;/h3&gt;
 &lt;p&gt;纯免费的方案依然可以参照我提到的这篇「  &lt;a href="https://www.pseudoyu.com/zh/2024/07/22/free_commenting_system_using_remark42_and_flyio/"&gt;从零开始搭建你的免费博客评论系统（Remark42 + fly.io）&lt;/a&gt;」，仅在   &lt;code&gt;fly.toml&lt;/code&gt; 配置部分不同，我也提供的我所使用的配置文件 —— 「  &lt;a href="https://github.com/pseudoyu/goatcounter-on-fly/blob/master/fly.toml"&gt;fly.toml&lt;/a&gt;」供大家参考。&lt;/p&gt;
 &lt;h3&gt;使用 Docker 与 docker-compose 部署&lt;/h3&gt;
 &lt;p&gt;有意思的是，因为 goatcounter 的作者很有坚持，觉得这样单文件的应用容器化反而会增加更多维护成本，所以不提供官方镜像，不过自己在 vps 或者 serverless 平台部署有个镜像还是方便一些，所以我使用 Github Actions 做了一个构建镜像和上传 Docker Hub 的 CI，有需要的可以使用，对应的 Dockerfile 和 Docker Compose 文件也可以参照这个   &lt;a href="https://github.com/pseudoyu/goatcounter/commit/b98de9873ee331133a39b409fd4bb00cf55c8a05"&gt;Commit&lt;/a&gt;，或者直接使用   &lt;code&gt;pseudoyu/goatcounter&lt;/code&gt; 和   &lt;code&gt;docker-compose.yml&lt;/code&gt; 文件即可。&lt;/p&gt;
 &lt;div&gt;  &lt;pre&gt;   &lt;code&gt;version: &amp;apos;3&amp;apos;

services:
  goatcounter:
    image: pseudoyu/goatcounter
    ports:
      - 8080:8080
    environment:
      - PORT=8080
      - GOATCOUNTER_DB=sqlite3://data/goatcounter.sqlite3
    volumes:
      - ./data:/data
    restart: unless-stopped
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt; &lt;h2&gt;GoatCounter 配置说明&lt;/h2&gt;
 &lt;p&gt;上文我们完成了 GoatCounter 服务的部署，现在就可以通过我们生成/自定义的域名访问到我们的统计系统服务了，如我是通过   &lt;code&gt;https://goatcounter.pseudoyu.com&lt;/code&gt; 进行访问的。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="goatcounter_create_user" src="https://image.pseudoyu.com/images/goatcounter_create_user.png"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;第一次登录需要创建一个用户，填写邮箱、密码点击   &lt;code&gt;Create&lt;/code&gt; 即可。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="goatcounter_dashboard_success" src="https://image.pseudoyu.com/images/goatcounter_dashboard_success.png"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;登录成功后，当前还没有数据，会提示一个脚本，后续在我们博客使用的配置中会用到。&lt;/p&gt;
 &lt;h2&gt;博客配置 GoatCounter&lt;/h2&gt;
 &lt;p&gt;跟着上文我们完成了 GoatCounter 服务的部署和基础配置，现在则需要在我们的博文中加入统计组件，以我使用的 Hugo 博客为例。&lt;/p&gt;
 &lt;div&gt;  &lt;pre&gt;   &lt;code&gt;&amp;lt;script data-goatcounter=&amp;quot;https://goatcounter.pseudoyu.com/count&amp;quot;
        async src=&amp;quot;//goatcounter.pseudoyu.com/count.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt; &lt;p&gt;  &lt;img alt="add_goatcounter_script_in_hugo" src="https://image.pseudoyu.com/images/add_goatcounter_script_in_hugo.png"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;将上述代码加到我 hugo 主题的   &lt;code&gt;head&lt;/code&gt; 中即可，如我的 Hugo 主题在   &lt;code&gt;layouts/partials/head.html&lt;/code&gt; 这一文件，不同主题或是不同 SSG 框架位置有所不同但大同小异。&lt;/p&gt;
 &lt;p&gt;有一点要注意的是， goatcounter 会忽略来自   &lt;code&gt;localhost&lt;/code&gt; 的请求以避免在本地预览时造成太多脏数据，因此在本地调试时是看不到数据的，需要部署网页才能看到访问数据。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="final_display_of_goatcounter" src="https://image.pseudoyu.com/images/final_display_of_goatcounter.png"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;收集了数据后的效果大致如上图所示，还可以在 GoatCounter 界面中设置一些配置项、新增网页、查看详细数据等，包括还可以显示每个页面的访问计数等，可以自己根据文档进行探索。&lt;/p&gt;
 &lt;h2&gt;总结&lt;/h2&gt;
 &lt;p&gt;至此我们的博客统计系统就搭建完成了！本文是我的博客搭建部署系列教程之一，博客主题体部分都已经完成了，剩下只是一些例如博客内搜索等细节体验优化，希望能对大家有所参考。&lt;/p&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/62924-goatcounter-zeabur-%E7%BD%91%E7%AB%99</guid>
      <pubDate>Tue, 06 Aug 2024 19:00:42 CST</pubDate>
    </item>
    <item>
      <title>适合个人网站的云服务组合</title>
      <link>https://itindex.net/detail/62906-%E4%B8%AA%E4%BA%BA%E7%BD%91%E7%AB%99-%E6%9C%8D%E5%8A%A1-%E7%BB%84%E5%90%88</link>
      <description>&lt;div&gt;&lt;/div&gt; &lt;div&gt;回想起来我折腾博客和各类网站已将近 10 年光阴，在维护   &lt;a href="https://0xffff.one/" rel="noopener noreferrer" target="_blank"&gt;0xFFFF&lt;/a&gt; 的几年来，也尝试过各类不同的建站方案。当前用到的各类服务，综合速度和成本而言，感觉可能的选择方向差不多已经成型，可以做一个总结。&lt;/div&gt; &lt;div&gt;若你也想低成本搭建属于自己的网站，且想拥有不俗的访问速度，这里的方案也许可以是你的一个参考。&lt;/div&gt; &lt;h4&gt;  &lt;div&gt;&lt;/div&gt;基本结构&lt;/h4&gt; &lt;div&gt;抽象地说，运行一个网站需要的能力主要分两大块，一是域名与 DNS 解析，二是负责处理浏览器请求的服务器端。从需求来看，域名和 DNS 的能力相对比较固定，而服务器端需要的能力就比较多样，按角色和常用的业务来区分，可以分为这几类：&lt;/div&gt; &lt;ol start="1"&gt;  &lt;li&gt;接入层网关、反向代理：接收用户流量，转发到对应的服务&lt;/li&gt;&lt;/ol&gt; &lt;ol start="2"&gt;  &lt;li&gt;静态页面：HTML 网页 / Jamstack 应用的 Service-side Rendering&lt;/li&gt;&lt;/ol&gt; &lt;ol start="3"&gt;  &lt;li&gt;JS / CSS 等：通常会通过第三方域名 CDN 分发，提高网页的打开速度，减小对主站的依赖&lt;/li&gt;&lt;/ol&gt; &lt;ol start="4"&gt;  &lt;li&gt;媒体类附件：网站流量消耗的大头，通常托管在对象存储，也可通过 CDN 分发&lt;/li&gt;&lt;/ol&gt; &lt;ol start="5"&gt;  &lt;li&gt;动态服务：当一个网站需要交互的能力，需要有服务承载相关的 API 接口&lt;/li&gt;&lt;/ol&gt; &lt;div&gt;动态服务而言，大致可以按“无状态服务”和“有状态服务”去区分，无状态服务可以随时创建和销毁，有状态服务则需要持久化服务产生的数据。部分服务可能还需要数据库和缓存服务等的支持，类似 MySQL、PostgresSQL、Redis 等等。&lt;/div&gt; &lt;div&gt;当前云计算已经足够发达，基本你能想到的点，都有对应的云服务提供，因此也可以根据实际需要和网站的功能，来选择合适的服务去支撑。写这篇文章的主要目的，也是分享我当前在用的服务，以及选择 / 不选择它们背后的一些考虑点。&lt;/div&gt; &lt;h4&gt;  &lt;div&gt;&lt;/div&gt;DNS 与接入层网关&lt;/h4&gt; &lt;div&gt;DNS 方面我选择   &lt;a href="https://www.dnspod.cn/" rel="noopener noreferrer" target="_blank"&gt;DNSPod&lt;/a&gt;，考虑点在于它有中国大陆内的解析节点，并且在专业版可以支持全球服务器的解析，价格还可接受。最关键是它提供了精细化地在不同的地域去做分流解析的能力，这对于部署在海外的站点是非常有利的，可以针对大陆用户去专门部署优化的线路，相比于 Cloudflare、  &lt;a href="https://www.cloudns.net/" rel="noopener noreferrer" target="_blank"&gt;ClouDNS&lt;/a&gt; 等会更加灵活。&lt;/div&gt; &lt;div&gt;接入层网关方面，关注目标在于，地域上离用户越近越好，可以针对不同地域用户使用针对其最优的线路，以减少网络层面的不确定性，尽可能和用户维持稳定的连接。对应的服务选择，一是支持动态请求链路优化的 CDN 服务，二是网络条件较好的云服务器，三是现今一些支持边缘计算的网站服务商（如   &lt;a href="https://vercel.com/guides/vercel-reverse-proxy-rewrites-external" rel="noopener noreferrer" target="_blank"&gt;Vercel&lt;/a&gt;、  &lt;a href="https://fly.io/" rel="noopener noreferrer" target="_blank"&gt;Fly.io&lt;/a&gt; 等），通常它们的边缘节点之间的链路会做一些特殊优化，可以合理使用利用起来。&lt;/div&gt; &lt;div&gt;这里我选择二、三两种方案结合，以一个阿里云香港的轻量服务器来承接来自大陆的流量，其他地域的流量通过   &lt;a href="http://fly.io/" rel="noopener noreferrer" target="_blank"&gt;fly.io&lt;/a&gt; 承接，用 DNSPod 实现按地域的分流。目前（2023年底）的阿里云 hk 轻量服务器的网络质量非常优秀，全大陆访问的延迟可以   &lt;a href="https://ping.chinaz.com/0xffff.one" rel="noopener noreferrer" target="_blank"&gt;控制在 50ms 内&lt;/a&gt;；Fly.io 的好处则在于，他们有一个连通全球的边缘计算网络，理论上我只需要在我想要的地域部署服务，其他地域可以直接通过边缘节点接收用户请求，然后再在内部转发到服务所在地域的计算实例，网络请求相对也会更加可控一些。两者结合下来，实现各自中国大陆内外优势的互补。&lt;/div&gt; &lt;div&gt;对于反向代理的程序，这里直接用 Caddy Server，无论在轻量服务器还是   &lt;a href="http://fly.io" rel="noopener noreferrer" target="_blank"&gt;fly.io&lt;/a&gt;，只需做一些简单配置，就能实现流量转发，并自动申请签发配置好 https 证书，非常简单方便。&lt;/div&gt; &lt;h4&gt;  &lt;div&gt;&lt;/div&gt;静态页面&lt;/h4&gt; &lt;div&gt;众所周知，大部分网站、Web App 等实质上由静态的 HTML 网页以及各种脚本、样式图片音频资源等组合，因此托管静态页面和资源，应该是建站最基本的需求。&lt;/div&gt; &lt;div&gt;这方面的托管，基本没什么障碍的点，无非就是维护成本方面的差异，无论   &lt;a href="https://vercel.com/" rel="noopener noreferrer" target="_blank"&gt;Vercel&lt;/a&gt;、  &lt;a href="https://fly.io/" rel="noopener noreferrer" target="_blank"&gt;Fly.io&lt;/a&gt;、  &lt;a href="https://pages.github.com/" rel="noopener noreferrer" target="_blank"&gt;GitHub Pages&lt;/a&gt;、  &lt;a href="https://pages.cloudflare.com/" rel="noopener noreferrer" target="_blank"&gt;Cloudflare Pages&lt;/a&gt;，还是自己架 HTTP 服务器部署，都没有什么毛病。部分服务还提供了适应静态页面渲染的边缘节点。&lt;/div&gt; &lt;div&gt;当前我是用 Vercel 多一些，本博客和   &lt;a href="https://wiki.0xffff.one/" rel="noopener noreferrer" target="_blank"&gt;0xFFFF Wiki&lt;/a&gt; 都放在这上面，主打一个简单直接方便，push 代码直接就能自动触发构建和部署，非常省心。&lt;/div&gt; &lt;h4&gt;  &lt;div&gt;&lt;/div&gt;静态资源、CDN&lt;/h4&gt; &lt;div&gt;浏览器下载 HTML 后，通常需要加载脚本、样式、图片等资源，这会带来一个额外的流量消耗。接入层网关本身的带宽成本相对要贵一些，且访问速度方面不太可控，通常会单独对 HTML 外的资源，去根据访问情况做分布式的缓存。这也是 CDN 的一大作用，CDN 以大带宽低成本的优势，分摊源站点的流量，提升用户的访问体验。&lt;/div&gt; &lt;div&gt;这里我主要选择了 Bunny CDN，以及腾讯云 CDN 做大陆的静态资源加速。前者在价格和速度方面非常有优势；后者结合已备案域名，在大陆的访问体验更佳。主要考虑的点还是在速度方面的提升。&lt;/div&gt; &lt;h4&gt;  &lt;div&gt;&lt;/div&gt;媒体类附件&lt;/h4&gt; &lt;div&gt;一个网站的静态资源通常分为两部分，一部分是网站本身业务逻辑的一部分，这部分可以提前处理好交给服务托管；还有一部分是用户操作过程中新增的上传、后台处理需要的图片等，这种类型的数据就很适合放在对象存储上。&lt;/div&gt; &lt;div&gt;适合个人站长的选择不是太多，这方面鼻祖自然是 Amazon S3，不过传闻贼贵，不是一般学生可以承担的那种；另外还有国内大厂的 COS / OSS，Cloudflare R2，Backblaze B2 等。&lt;/div&gt; &lt;div&gt;Cloudflare R2 是很好的选择，它流量费全免的机制非常适合新手上路研究，但 Cloudflare 要求绑定的域名的 NS 记录都指向他们的 DNS 服务器。也就是说会和 DNSpod 的分流策略所冲突，无奈忍痛放弃。&lt;/div&gt; &lt;div&gt;经过一番尝试，发现 Blackblaze B2，这一服务在成本方面极具优势，虽然没有 Cloudflare 的 CDN 免流量费香，配合 Bunny CDN 去处理，效果还挺不错，0xFFFF 主站重度使用半个月下来，流量也才 2G 左右，费用 0.04 美分。&lt;/div&gt; &lt;div&gt;  &lt;img alt="&amp;#27880;&amp;#20876;&amp;#26102;&amp;#35760;&amp;#24471;&amp;#36873;&amp;#25321; US West&amp;#65292;&amp;#36317;&amp;#31163;&amp;#22823;&amp;#38470;&amp;#36817;&amp;#19968;&amp;#20123;&amp;#65292;&amp;#27880;&amp;#20876;&amp;#25104;&amp;#21151;&amp;#21518;&amp;#25913;&amp;#19981;&amp;#20102;&amp;#12290;" src="https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F5ef6a41f-4ad3-43d9-a314-d863352a143b%2Fceb0a778-3b2c-4f00-97ab-efde07302858%2FUntitled.png?table=block&amp;id=15a39f85-f78a-459e-b8a9-0ce5ef01a274&amp;cache=v2"&gt;&lt;/img&gt;注册时记得选择 US West，距离大陆近一些，注册成功后改不了。&lt;/div&gt; &lt;div&gt;Bunny CDN 和 Backblaze B2 有   &lt;a href="https://bunny.net/blog/bunny-net-partners-with-backblaze-for-free/" rel="noopener noreferrer" target="_blank"&gt;合作&lt;/a&gt;，可以优化接入相关体验。B2 官方还会有一些教程和文章，做的还挺贴心细致的：  &lt;a href="https://www.backblaze.com/blog/aws-cloudfront-vs-bunny-net-how-do-the-cdns-compare/" rel="noopener noreferrer" target="_blank"&gt;AWS CloudFront vs. bunny.net: How Do the CDNs Compare&lt;/a&gt;&lt;/div&gt; &lt;h4&gt;  &lt;div&gt;&lt;/div&gt;动态服务&lt;/h4&gt; &lt;div&gt;对于功能更强大的网站，静态的网页文件不太能满足需求，这时候就需要有后端服务支持，通常这类后端服务可能会提供以下的能力：&lt;/div&gt; &lt;ol start="1"&gt;  &lt;li&gt;动态生成 HTML&lt;/li&gt;&lt;/ol&gt; &lt;ol start="2"&gt;  &lt;li&gt;根据请求 API，动态生成响应，驱动业务逻辑&lt;/li&gt;&lt;/ol&gt; &lt;ol start="3"&gt;  &lt;li&gt;可能根据需要，生成其他资源（图片 / 待下载的文件等）&lt;/li&gt;&lt;/ol&gt; &lt;div&gt;如开头所说，动态服务有无状态服务和有状态服务两种：&lt;/div&gt; &lt;ul&gt;  &lt;li&gt;无状态服务：fly.io 会更适合，它可以以 Firecracker 虚拟机的形势一键部署运行 Docker 镜像，并快速部署到合适的地域，减少网络延迟的影响&lt;/li&gt;&lt;/ul&gt; &lt;ul&gt;  &lt;li&gt;有状态服务：用一个单独的 VPS 来处理比较合适，这里我继续用了阿里云香港的轻量服务器，业务规模不大的情况下，一台机器足矣。这里可选项有很多，腾讯云、AWS 的    &lt;a href="https://aws.amazon.com/cn/lightsail/" rel="noopener noreferrer" target="_blank"&gt;LightSail&lt;/a&gt;、Vultr、Linode 等也是不错的选择，最重要是稳定和可靠&lt;/li&gt;&lt;/ul&gt; &lt;div&gt;一个可行的方向是尽可能把服务做得无状态，可以部署到边缘节点的话速度会更具优势（但同时也需要考虑不同地域之间状态共享的问题）。&lt;/div&gt; &lt;h4&gt;  &lt;div&gt;&lt;/div&gt;数据库&lt;/h4&gt; &lt;div&gt;我原本比较倾向在本机去部署网站的数据库，但经历过一次误操作导致   &lt;a href="https://0xffff.one/d/1670" rel="noopener noreferrer" target="_blank"&gt;论坛数据丢失&lt;/a&gt; 的事件，也让我心有余悸，一方面日常备份得加强，另一方面也在考虑把数据库维护的工作交给专业的 DBA 服务。&lt;/div&gt; &lt;div&gt;这类服务通常很贵很贵，但感谢互联网，低成本的 Serverless 托管 DB 方案还是有的，目前看   &lt;a href="https://www.pingcap.com/pricing/" rel="noopener noreferrer" target="_blank"&gt;TiDB Cloud&lt;/a&gt; 和   &lt;a href="https://planetscale.com/pricing" rel="noopener noreferrer" target="_blank"&gt;PlanetScale&lt;/a&gt; 的免费额度能覆盖到，大概一点缺点是公网访问数据库，延迟会对应提高，需要做好 cache 的方案。目前亚太地区只有新加坡和东京机房，可能需要考虑把计算实例挪到新加坡区域（接入层可以不动）。&lt;/div&gt; &lt;div&gt;有的站点会依赖 Redis 做 cache 或者 DB，这时候也需要考虑备份和托管的方案，目前   &lt;a href="https://upstash.com/" rel="noopener noreferrer" target="_blank"&gt;Upstash Redis&lt;/a&gt; 应该还不错，看   &lt;a href="http://fly.io" rel="noopener noreferrer" target="_blank"&gt;fly.io&lt;/a&gt; 和他们合作搞了  &lt;a href="https://fly.io/docs/reference/redis/" rel="noopener noreferrer" target="_blank"&gt;内部方案&lt;/a&gt;。&lt;/div&gt; &lt;div&gt;如果业务涉及到大量 SQL 查询（博客 / 论坛等），还是需要单机部署数据库，那就需要从备份入手。这里的一点经验也是，在跑数据库的容器加入定时任务，然后定期 mysql dump 出最新的 sql，gzip 压缩作备份，再保存到备份专用的对象存储桶中，备份软件推荐   &lt;a href="https://www.duplicati.com/" rel="noopener noreferrer" target="_blank"&gt;Deplicati&lt;/a&gt;，存储桶我用的腾讯云的 COS。&lt;/div&gt; &lt;h4&gt;  &lt;div&gt;&lt;/div&gt;引荐链接&lt;/h4&gt; &lt;div&gt;若本文对你有所帮助，有需要的话，可以通过下方的引荐链接注册对应服务，可以为我多增加一些账户余额：&lt;/div&gt; &lt;ul&gt;  &lt;li&gt;Bunny CDN：   &lt;a href="https://bunny.net/?ref=f71884jr1m" rel="noopener noreferrer" target="_blank"&gt;https://bunny.net?ref=f71884jr1m&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;h4&gt;  &lt;div&gt;&lt;/div&gt;参考&lt;/h4&gt; &lt;ul&gt;  &lt;li&gt;   &lt;a href="https://0xffff.one/d/1530/4" rel="noopener noreferrer" target="_blank"&gt;Flarum 0x 及其迭代记录 - 0xFFFF&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;ul&gt;  &lt;li&gt;   &lt;a href="https://twitter.com/zgq354/status/1735342522577371436" rel="noopener noreferrer" target="_blank"&gt;独立开发者之穷鬼套餐 - X&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;ul&gt;  &lt;li&gt;   &lt;a href="https://limboy.me/posts/vercel-cf-fly/" rel="noopener noreferrer" target="_blank"&gt;Vercel, Cloudflare, fly.io 我的云服务三剑客&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;ul&gt;  &lt;li&gt;   &lt;a href="https://wzfou.com/bunny-cdn/" rel="noopener noreferrer" target="_blank"&gt;Bunny CDN网站CDN加速 - 挖站否&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;ul&gt;  &lt;li&gt;   &lt;a href="https://www.backblaze.com/blog/aws-cloudfront-vs-bunny-net-how-do-the-cdns-compare/" rel="noopener noreferrer" target="_blank"&gt;AWS CloudFront vs. bunny.net: How Do the CDNs Compare?&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;ul&gt;  &lt;li&gt;   &lt;a href="https://bunny.net/blog/bunny-net-partners-with-backblaze-for-free/" rel="noopener noreferrer" target="_blank"&gt;bunny.net partners with Backblaze to help reduce egress fees and supercharge content!&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/62906-%E4%B8%AA%E4%BA%BA%E7%BD%91%E7%AB%99-%E6%9C%8D%E5%8A%A1-%E7%BB%84%E5%90%88</guid>
      <pubDate>Thu, 21 Dec 2023 08:00:00 CST</pubDate>
    </item>
    <item>
      <title>法庭命令成人视频网站删除所有未经被拍摄者同意发布的视频</title>
      <link>https://itindex.net/detail/62732-%E6%B3%95%E5%BA%AD-%E5%91%BD%E4%BB%A4-%E6%88%90%E4%BA%BA%E8%A7%86%E9%A2%91</link>
      <description>荷兰阿姆斯特丹法庭命令成人视频网站 xHamster 删除所有未经被拍摄者同意发布的业余视频。该裁决是 Expertise Bureau for Online Child Abuse（EOKM）投诉之后做出的。阿姆斯特丹法庭给 xHamster 三周时间执行命令，删除所有未经同意发布的视频，否则它将面临每段视频每天最高 3.2 万美元的罚款。代表 EOKM 的律师表示，这一判决将对整个成人行业产生重大影响，最大的成人网站 Pornhub 已被要求移除多达 1000 万视频。xHamster 表示它只允许专业的成人视频制作者和经过验证的会员才能上传视频，它已经删除了 EOKM 标记的违规视频。但法官表示 xHamster 网站仍然存在大量未经被拍摄者同意的视频。
 &lt;p&gt;&lt;/p&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/62732-%E6%B3%95%E5%BA%AD-%E5%91%BD%E4%BB%A4-%E6%88%90%E4%BA%BA%E8%A7%86%E9%A2%91</guid>
      <pubDate>Thu, 13 Apr 2023 13:30:50 CST</pubDate>
    </item>
    <item>
      <title>一个几十万数据的小网站便宜的方案 🧵 by @dotey(宝玉)</title>
      <link>https://itindex.net/detail/62640-%E5%8D%81%E4%B8%87-%E6%95%B0%E6%8D%AE-%E7%BD%91%E7%AB%99</link>
      <description>&lt;div&gt;  &lt;h1&gt;   &lt;div&gt;我以前帮人整过一个几十万数据的小网站，这么多数据存关系型数据库放到云上每月要几十刀不合算，所以后来采用了个便宜的方案     &lt;img alt="&amp;#55358;&amp;#56821;" src="https://abs.twimg.com/emoji/v2/svg/1f9f5.svg"&gt;&lt;/img&gt;&lt;/div&gt;&lt;/h1&gt;  &lt;div&gt;   &lt;div&gt;&lt;/div&gt;&lt;/div&gt;  &lt;div&gt;第一个版本方案

完整的数据存在本地的Sqlite，备份到网盘

用脚本将单条数据和列表数据导出到Json文件，存到AWS的S3，当做后端数据库

网站用Nextjs，基于它的ISR静态化的方案，第一次请求页面的时候静态化，后面就不需要访问数据库了

   &lt;a href="https://t.co/S9uhDQaKxW" target="_blank"&gt;nextjs.org/docs/basic-fea…&lt;/a&gt;&lt;/div&gt;  &lt;div&gt;   &lt;a href="https://t.co/S9uhDQaKxW" target="_blank"&gt;    &lt;div&gt;     &lt;div&gt;      &lt;img alt="Learn how to create or update static pages at runtime with Incremental Static Regeneration." height="882" src="https://pbs.twimg.com/card_img/1628435063934181378/tUSTAdut?format=png&amp;name=orig" width="1686"&gt;&lt;/img&gt;&lt;/div&gt;     &lt;div&gt;      &lt;div&gt;nextjs.org/docs/basic-fea…&lt;/div&gt;      &lt;div&gt;Data Fetching: Incremental Static Regeneration | Next.js&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/a&gt;&lt;/div&gt;  &lt;div&gt;   &lt;div&gt;&lt;/div&gt;&lt;/div&gt;  &lt;div&gt;搜索用的是Meilisearch，它支持中文全文检索，性能很好，对前端也友好，可以方便的集成到Nextjs中。

部署到从oracle cloud白嫖的免费主机上，然后从网站上包了个API访问Meilisearch。

   &lt;a href="https://t.co/bcnTPv8lJ6" target="_blank"&gt;meilisearch.com&lt;/a&gt;&lt;/div&gt;  &lt;div&gt;   &lt;a href="https://t.co/bcnTPv8lJ6" target="_blank"&gt;    &lt;div&gt;     &lt;div&gt;      &lt;img alt="An open-source, blazingly fast, and hyper-relevant search engine that will improve your search experience" height="630" src="https://pbs.twimg.com/card_img/1628346977602740227/jw0gSOix?format=jpg&amp;name=orig" width="1200"&gt;&lt;/img&gt;&lt;/div&gt;     &lt;div&gt;      &lt;div&gt;meilisearch.com&lt;/div&gt;      &lt;div&gt;Meilisearch&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/a&gt;&lt;/div&gt;  &lt;div&gt;   &lt;div&gt;&lt;/div&gt;&lt;/div&gt;  &lt;div&gt;网站直接部署到Vercel上，免费档足够用了，每月100G数据流量，还可以直接买域名或者绑定自己域名，并且有SSL证书，直接就让你的域名支持https了，不用任何额外配置。

将代码放在GitHub，并且和Vercel集成，代码一提交就自动部署了。

   &lt;a href="https://t.co/Lm23i1q5XT" target="_blank"&gt;vercel.com&lt;/a&gt;&lt;/div&gt;  &lt;div&gt;   &lt;a href="https://t.co/Lm23i1q5XT" target="_blank"&gt;    &lt;div&gt;     &lt;div&gt;      &lt;img alt="Vercel is the platform for frontend developers, providing the speed and reliability innovators need to create at the moment of inspiration." height="882" src="https://pbs.twimg.com/card_img/1628953311796764672/p_wvjCX8?format=png&amp;name=orig" width="1686"&gt;&lt;/img&gt;&lt;/div&gt;     &lt;div&gt;      &lt;div&gt;vercel.com&lt;/div&gt;      &lt;div&gt;Vercel: Develop. Preview. Ship. For the best frontend teams&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/a&gt;&lt;/div&gt;  &lt;div&gt;   &lt;div&gt;&lt;/div&gt;&lt;/div&gt;  &lt;div&gt;后来发现Json静态文件更新维护起来还是有点麻烦，然后了解到还有Amazon DynamoDB这样经济实惠的数据库，它有25G的免费存储，每月有2亿的免费读写请求，足够用了。

唯一麻烦的是后端访问的代码要重写，不过一次升级完后面几乎不用怎么维护。

   &lt;a href="https://t.co/ZwztyNcfuL" target="_blank"&gt;aws.amazon.com/dynamodb/&lt;/a&gt;&lt;/div&gt;  &lt;div&gt;   &lt;a href="https://t.co/ZwztyNcfuL" target="_blank"&gt;    &lt;div&gt;     &lt;div&gt;      &lt;img alt="Amazon DynamoDB is a fully managed, serverless, key-value NoSQL database that runs high-performance applications at any scale, with built-in security, continuous backups, and automated multi-region..." height="109" src="https://pbs.twimg.com/card_img/1627661780985028611/5rRlrby2?format=png&amp;name=120x120" width="109"&gt;&lt;/img&gt;&lt;/div&gt;     &lt;div&gt;      &lt;div&gt;aws.amazon.com/dynamodb/&lt;/div&gt;      &lt;div&gt;Fast NoSQL Key-Value Database – Amazon DynamoDB – Amazon Web Services&lt;/div&gt;      &lt;div&gt;Amazon DynamoDB is a fully managed, serverless, key-value NoSQL database that runs high-performance applications at any scale, with built-in security, continuous backups, and automated multi-region...&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/a&gt;&lt;/div&gt;  &lt;div&gt;   &lt;div&gt;&lt;/div&gt;&lt;/div&gt;  &lt;div&gt;完整版   &lt;img alt="&amp;#55358;&amp;#56821;" src="https://abs.twimg.com/emoji/v2/svg/1f9f5.svg"&gt;&lt;/img&gt;    &lt;a href="https://t.co/egx902OAsG" target="_blank"&gt;twitter-thread.com/t/163042603566…&lt;/a&gt;&lt;/div&gt;  &lt;div&gt;   &lt;div&gt;&lt;/div&gt;&lt;/div&gt;  &lt;div&gt;补充下，上面的整套方案下来，运维成本除了域名费用外为$0。&lt;/div&gt;&lt;/div&gt;
    &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/62640-%E5%8D%81%E4%B8%87-%E6%95%B0%E6%8D%AE-%E7%BD%91%E7%AB%99</guid>
      <pubDate>Tue, 28 Feb 2023 18:15:35 CST</pubDate>
    </item>
    <item>
      <title>网站速度终极优化</title>
      <link>https://itindex.net/detail/62494-%E7%BD%91%E7%AB%99-%E9%80%9F%E5%BA%A6-%E7%BB%88%E6%9E%81</link>
      <description>&lt;p&gt;  &lt;img alt="" src="https://cdn.pixabay.com/photo/2018/05/20/10/13/racing-3415413_960_720.jpg"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;好久没有折腾网站速度了。最近尝试再次优化提升网站的访问速度。&lt;/p&gt;
 &lt;p&gt;利用了CDN厂商Cloudflare的Page rules，创建了三条页面规则，将后台登录页面免除缓存外，其它页面全部都缓存在Cloudflare的全球CDN数据中心。&lt;/p&gt;
 &lt;p&gt;这样全球访客访问本网站的时候，除了第一次要从源主机上索取生成页面，其它都不再需要，直接从最近的CDN数据中心获取，这样既减轻了网站主机的资源消耗压力，又直接提升了访客的访问速度。&lt;/p&gt;
 &lt;p&gt;鉴于Google Anlytics统计数据越来越不好用（Cloudflare本身自带Web Analytics），再加上我也没有动机去使用它，索性把统计代码取消了，这样一来既减少了网页页面请求数量，也没有了cookies记录，因此访问过的网页会直接缓存在访客的浏览器中一段时间（设置为1天）。&lt;/p&gt;
 &lt;p&gt;去除了Google Anlytics统计功能后，访客在本网站上来回浏览的时候，短时间内去CDN上下载网页都不必了——CDN那边会返回304告诉浏览器页面没有改动，所以直接调用原缓存页面，进一步提升网站访问速度。&lt;/p&gt;
 &lt;p&gt;这样的网站速度终极优化方案，把本网站的加载速度基本控制在500毫秒以内，比秒开还要快。&lt;/p&gt;
 &lt;p&gt;这么多年后，再一次化繁为简、返朴归真，回归到博客网站写作的初心，其它的东西都不必要。&lt;/p&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>信息技术 博客 网站优化</category>
      <guid isPermaLink="true">https://itindex.net/detail/62494-%E7%BD%91%E7%AB%99-%E9%80%9F%E5%BA%A6-%E7%BB%88%E6%9E%81</guid>
      <pubDate>Fri, 18 Nov 2022 16:05:30 CST</pubDate>
    </item>
    <item>
      <title>盗版电子书网站变成庞大的知识库</title>
      <link>https://itindex.net/detail/62436-%E7%9B%97%E7%89%88-%E7%94%B5%E5%AD%90%E4%B9%A6-%E7%BD%91%E7%AB%99</link>
      <description>镜像盗版电子书网站 Z-Library 的  &lt;a href="http://pilimi.org/" target="_blank"&gt;Pirate Library Mirror&lt;/a&gt;  &lt;a href="http://annas-blog.org/blog-3x-new-books.html"&gt;注意到&lt;/a&gt;，在一年多时间里 Z-Library 的电子书容量增加了逾三倍之多。Z-Library 鼓励用户上传新书，通过限制免费账号每天下载的数量而收费。Z-Library 在过去一年多时间内增加了 380 万册的新书，其中可能有重复的，但绝大部分都是新书或旧书的高质量扫描本。去年镜像时候的电子书容量为 7 TB，新增书的总容量 24 TB，总容量达到了 31 TB。下载镜像需要通过 Tor 浏览器。&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/62436-%E7%9B%97%E7%89%88-%E7%94%B5%E5%AD%90%E4%B9%A6-%E7%BD%91%E7%AB%99</guid>
      <pubDate>Mon, 26 Sep 2022 15:59:28 CST</pubDate>
    </item>
    <item>
      <title>vercel是什么神仙网站？ | I’M COOPER | NICE TO MEET YOU</title>
      <link>https://itindex.net/detail/62195-vercel-%E7%A5%9E%E4%BB%99-%E7%BD%91%E7%AB%99</link>
      <description>&lt;div&gt;    &lt;h3&gt;      &lt;a href="https://i-tech.tech/iloveu/44d57db9.html#Vercel" title=""&gt;&lt;/a&gt;      &lt;a href="https://vercel.com/" rel="noopener" target="_blank"&gt;Vercel&lt;/a&gt;?&lt;/h3&gt;    &lt;blockquote&gt;      &lt;p&gt;        &lt;a href="https://vercel.com/" rel="noopener" target="_blank"&gt;vercel&lt;/a&gt;是我用过的最好用的网站托管服务。        &lt;a href="https://i-tech.tech/"&gt;本网站&lt;/a&gt;就是基于        &lt;a href="https://hexo.io/" rel="noopener" target="_blank"&gt;hexo&lt;/a&gt;引擎模板开发，托管在        &lt;a href="https://vercel.com/" rel="noopener" target="_blank"&gt;vercel&lt;/a&gt;上的。&lt;/p&gt;      &lt;p&gt;        &lt;a href="https://vercel.com/" rel="noopener" target="_blank"&gt;vercel&lt;/a&gt;类似于github page，但远比github page强大，速度也快得多得多，而且将Github授权给vercel后，可以达到最优雅的发布体验，只需将代码轻轻一推，项目就自动更新部署了。&lt;/p&gt;      &lt;p&gt;        &lt;a href="https://vercel.com/" rel="noopener" target="_blank"&gt;vercel&lt;/a&gt;还支持部署serverless接口。那代表着，其不仅仅可以部署静态网站，甚至可以部署动态网站，而这些功能，统统都是免费的，简直是白嫖党的福利啊！！！！！&lt;/p&gt;      &lt;p&gt;        &lt;a href="https://vercel.com/" rel="noopener" target="_blank"&gt;vercel&lt;/a&gt;还支持自动配置https，不用自己去FreeSSL申请证书，更是省去了一大堆证书的配置，简直是懒人的福利啊啊啊有木有！&lt;/p&gt;      &lt;p&gt;        &lt;a href="https://vercel.com/" rel="noopener" target="_blank"&gt;vercel&lt;/a&gt;目前的部署模板有31种之多，我没有全部用过。接下来，我将介绍其中的两种。&lt;/p&gt;&lt;/blockquote&gt;    &lt;div&gt;      &lt;div&gt;&lt;/div&gt;      &lt;img alt="vercel&amp;#25903;&amp;#25345;&amp;#30340;&amp;#27169;&amp;#26495;" src="https://i-tech.tech/images/posts/gifs/vercel&amp;#25903;&amp;#25345;&amp;#30340;&amp;#27169;&amp;#26495;.gif" title=""&gt;&lt;/img&gt;&lt;/div&gt;    &lt;div&gt;vercel支持的模板&lt;/div&gt;    &lt;h3&gt;      &lt;a href="https://i-tech.tech/iloveu/44d57db9.html#&amp;#29992;Vercel&amp;#37096;&amp;#32626;Hexo" title=""&gt;&lt;/a&gt;用Vercel部署Hexo&lt;/h3&gt;    &lt;h4&gt;      &lt;a href="https://i-tech.tech/iloveu/44d57db9.html#&amp;#26032;&amp;#24314;&amp;#19968;&amp;#20010;vercel&amp;#39033;&amp;#30446;" title=""&gt;&lt;/a&gt;新建一个vercel项目&lt;/h4&gt;    &lt;blockquote&gt;      &lt;p&gt;关于hexo的怎么用可以前往        &lt;a href="https://hexo.io/" rel="noopener" target="_blank"&gt;hexo官网&lt;/a&gt;了解&lt;/p&gt;&lt;/blockquote&gt;    &lt;ul&gt;      &lt;li&gt;将hexo上传至github上，如果是个人博客啥的，最好使用私有方式存储，不出意外的话。整个hexo项目的结构类似于下图&lt;/li&gt;&lt;/ul&gt;    &lt;div&gt;      &lt;div&gt;&lt;/div&gt;      &lt;img alt="image-20210128194843676" src="https://i-tech.tech/images/posts/image-20210128194843676.png" title=""&gt;&lt;/img&gt;&lt;/div&gt;    &lt;div&gt;image-20210128194843676&lt;/div&gt;    &lt;ul&gt;      &lt;li&gt;访问并登陆        &lt;a href="https://vercel.com/" rel="noopener" target="_blank"&gt;vercel&lt;/a&gt;网站，推荐使用github登陆&lt;/li&gt;&lt;/ul&gt;    &lt;div&gt;      &lt;div&gt;&lt;/div&gt;      &lt;img alt="image-20210129093313304" src="https://i-tech.tech/images/posts/image-20210129093313304.png" title=""&gt;&lt;/img&gt;&lt;/div&gt;    &lt;div&gt;image-20210129093313304&lt;/div&gt;    &lt;ul&gt;      &lt;li&gt;在vercel的Overview菜单下，点击按钮 New Project&lt;/li&gt;      &lt;li&gt;在Import Git Repository选项下，选择需要导入的项目，Import&lt;/li&gt;&lt;/ul&gt;    &lt;div&gt;      &lt;div&gt;&lt;/div&gt;      &lt;img alt="image-20210129093413893" src="https://i-tech.tech/images/posts/image-20210129093413893.png" title=""&gt;&lt;/img&gt;&lt;/div&gt;    &lt;div&gt;image-20210129093413893&lt;/div&gt;    &lt;ul&gt;      &lt;li&gt;继续，点击Deploy按钮，vercel就开始构建了&lt;/li&gt;&lt;/ul&gt;    &lt;div&gt;      &lt;div&gt;&lt;/div&gt;      &lt;img alt="image-20210129093555701" src="https://i-tech.tech/images/posts/image-20210129093555701.png" title=""&gt;&lt;/img&gt;&lt;/div&gt;    &lt;div&gt;image-20210129093555701&lt;/div&gt;    &lt;ul&gt;      &lt;li&gt;构建完之后，可以在Overview菜单下，看到新建的项目,至此项目已经创建完成，可以通过vercel自动配置的子域名访问了&lt;/li&gt;&lt;/ul&gt;    &lt;div&gt;      &lt;div&gt;&lt;/div&gt;      &lt;img alt="image-20210129094120077" src="https://i-tech.tech/images/posts/image-20210129094120077.png" title=""&gt;&lt;/img&gt;&lt;/div&gt;    &lt;div&gt;image-20210129094120077&lt;/div&gt;    &lt;h3&gt;      &lt;a href="https://i-tech.tech/iloveu/44d57db9.html#&amp;#35774;&amp;#32622;&amp;#33258;&amp;#23450;&amp;#20041;&amp;#22495;&amp;#21517;" title=""&gt;&lt;/a&gt;设置自定义域名&lt;/h3&gt;    &lt;ul&gt;      &lt;li&gt;首先，我们需要申请一个自己的域名，本网站的域名i-tech.tech是在万网上购买的，其他人可以自行选择域名提供商&lt;/li&gt;&lt;/ul&gt;    &lt;ul&gt;      &lt;li&gt;        &lt;p&gt;点击卡片上的粗黑色的标题（上图中的”my-story”）进入配置界面，该界面，有4个菜单，我们点击Settings-&amp;gt;Domains，并在输入框中填入想设置的域名，点击Add按钮&lt;/p&gt;        &lt;div&gt;          &lt;div&gt;&lt;/div&gt;          &lt;img alt="image-20210129095458198" src="https://i-tech.tech/images/posts/image-20210129095458198.png" title=""&gt;&lt;/img&gt;&lt;/div&gt;        &lt;div&gt;image-20210129095458198&lt;/div&gt;        &lt;p&gt;&lt;/p&gt;&lt;/li&gt;      &lt;li&gt;        &lt;p&gt;Add之后，可能会看到下图中的样子，别着急，还需要配置一下我们的域名，设置一下解析&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;    &lt;div&gt;      &lt;div&gt;&lt;/div&gt;      &lt;img alt="image-20210129095610042" src="https://i-tech.tech/images/posts/image-20210129095610042.png" title=""&gt;&lt;/img&gt;&lt;/div&gt;    &lt;div&gt;image-20210129095610042&lt;/div&gt;    &lt;ul&gt;      &lt;li&gt;打开域名控制台，添加一条如下图的解析记录&lt;/li&gt;&lt;/ul&gt;    &lt;div&gt;      &lt;div&gt;&lt;/div&gt;      &lt;img alt="image-20210129100136724" src="https://i-tech.tech/images/posts/image-20210129100136724.png" title=""&gt;&lt;/img&gt;&lt;/div&gt;    &lt;div&gt;image-20210129100136724&lt;/div&gt;    &lt;ul&gt;      &lt;li&gt;添加完之后，卡片会变成如图的样子&lt;/li&gt;&lt;/ul&gt;    &lt;div&gt;      &lt;div&gt;&lt;/div&gt;      &lt;img alt="image-20210129100321509" src="https://i-tech.tech/images/posts/image-20210129100321509.png" title=""&gt;&lt;/img&gt;&lt;/div&gt;    &lt;div&gt;image-20210129100321509&lt;/div&gt;    &lt;blockquote&gt;      &lt;p&gt;接下来就可以通过我们设置的域名（如        &lt;a href="https://case.i-tech.tech)&amp;#35775;&amp;#38382;&amp;#25105;&amp;#20204;&amp;#30340;&amp;#32593;&amp;#31449;&amp;#20102;,&amp;#19968;&amp;#20010;&amp;#31616;&amp;#21333;&amp;#30340;hexo&amp;#39033;&amp;#30446;&amp;#23601;&amp;#37096;&amp;#32626;&amp;#23436;&amp;#25104;&amp;#20102;!/" rel="noopener" target="_blank"&gt;https://case.i-tech.tech）访问我们的网站了，一个简单的Hexo项目就部署完成了！&lt;/a&gt;&lt;/p&gt;      &lt;p&gt;需要更新网站，只需要往github上提交新的commit，vercel就会自动重新构建了！完美！！！！&lt;/p&gt;&lt;/blockquote&gt;    &lt;h3&gt;      &lt;a href="https://i-tech.tech/iloveu/44d57db9.html#&amp;#29992;vercel&amp;#37096;&amp;#32626;Serverless-Api&amp;#65292;&amp;#19981;&amp;#36141;&amp;#20080;&amp;#20113;&amp;#26381;&amp;#21153;&amp;#22120;&amp;#20063;&amp;#33021;&amp;#25317;&amp;#26377;&amp;#33258;&amp;#24049;&amp;#30340;&amp;#21160;&amp;#24577;&amp;#32593;&amp;#31449;&amp;#65292;&amp;#37239;&amp;#65281;&amp;#65281;&amp;#65281;&amp;#65281;" title=""&gt;&lt;/a&gt;用vercel部署Serverless Api，不购买云服务器也能拥有自己的动态网站，酷！！！！&lt;/h3&gt;    &lt;blockquote&gt;      &lt;p&gt;有人可能会问了。能部署api还不行啊，没有数据库啊。身为一个混迹江湖多年的白嫖党，请跟我继续往下走~&lt;/p&gt;&lt;/blockquote&gt;    &lt;h4&gt;      &lt;a href="https://i-tech.tech/iloveu/44d57db9.html#&amp;#21435;https-cloud-mongodb-com&amp;#19978;&amp;#30333;&amp;#23254;&amp;#19968;&amp;#20010;&amp;#25968;&amp;#25454;&amp;#24211;&amp;#22914;&amp;#20309;&amp;#65311;" title=""&gt;&lt;/a&gt;去      &lt;a href="https://cloud.mongodb.com/" rel="noopener" target="_blank"&gt;https://cloud.mongodb.com&lt;/a&gt;上白嫖一个数据库如何？&lt;/h4&gt;    &lt;ul&gt;      &lt;li&gt;首先我们打开        &lt;a href="https://cloud.mongodb.com/" rel="noopener" target="_blank"&gt;https://cloud.mongodb.com&lt;/a&gt;并注册登录&lt;/li&gt;&lt;/ul&gt;    &lt;blockquote&gt;      &lt;p&gt;        &lt;a href="https://cloud.mongodb.com/" rel="noopener" target="_blank"&gt;https://cloud.mongodb.com&lt;/a&gt;提供512M免费的MongoDB存储额度，作为个人网站使用足够了，当然还有其他的免费数据库，如        &lt;a href="https://www.db4free.net/" rel="noopener" target="_blank"&gt;db4free.net&lt;/a&gt;、        &lt;a href="https://mlab.com/" rel="noopener" target="_blank"&gt;mlab.com&lt;/a&gt;等各位各取所需。了解更多可以访问        &lt;a href="https://wivwiv.com/post/free-online-resource" rel="noopener" target="_blank"&gt;免费在线 MySQL/PostgreSQL/MongoDB/Redis 数据库云服务合集&lt;/a&gt;了解&lt;/p&gt;      &lt;p&gt;我是觉得        &lt;a href="https://cloud.mongodb.com/" rel="noopener" target="_blank"&gt;https://cloud.mongodb.com&lt;/a&gt;最好用，所以，本文中我只介绍它的使用方式。&lt;/p&gt;&lt;/blockquote&gt;    &lt;ul&gt;      &lt;li&gt;依次点击Atlas-&amp;gt;Clusters&lt;/li&gt;&lt;/ul&gt;    &lt;div&gt;      &lt;div&gt;&lt;/div&gt;      &lt;img alt="image-20210129102544049" src="https://i-tech.tech/images/posts/image-20210129102544049.png" title=""&gt;&lt;/img&gt;&lt;/div&gt;    &lt;div&gt;image-20210129102544049&lt;/div&gt;    &lt;ul&gt;      &lt;li&gt;大家可以看到有个Create a New Cluster的按钮，点击它&lt;/li&gt;&lt;/ul&gt;    &lt;div&gt;      &lt;div&gt;&lt;/div&gt;      &lt;img alt="image-20210129102640412" src="https://i-tech.tech/images/posts/image-20210129102640412.png" title=""&gt;&lt;/img&gt;&lt;/div&gt;    &lt;div&gt;image-20210129102640412&lt;/div&gt;    &lt;ul&gt;      &lt;li&gt;选择如下图的配置，如果需要设置密码的话，设置并记住密码，点击Create Cluster即可&lt;/li&gt;&lt;/ul&gt;    &lt;div&gt;      &lt;div&gt;&lt;/div&gt;      &lt;img alt="image-20210129102949701" src="https://i-tech.tech/images/posts/image-20210129102949701.png" title=""&gt;&lt;/img&gt;&lt;/div&gt;    &lt;div&gt;image-20210129102949701&lt;/div&gt;    &lt;ul&gt;      &lt;li&gt;至此我们已经有了一个属于我们自己的数据库的，可以在Atlas-&amp;gt;Clusters页面看到刚创建好的MongoDB数据库，接下来，我们要通过Navicat数据库可视化管理工具连接一下吧&lt;/li&gt;&lt;/ul&gt;    &lt;h4&gt;      &lt;a href="https://i-tech.tech/iloveu/44d57db9.html#&amp;#36890;&amp;#36807;Navicat&amp;#36830;&amp;#25509;MondDb&amp;#25968;&amp;#25454;&amp;#24211;" title=""&gt;&lt;/a&gt;通过Navicat连接MondDb数据库&lt;/h4&gt;    &lt;ul&gt;      &lt;li&gt;按照上文的操作，我们可以看到如下图的界面，点击CONNECT&lt;/li&gt;&lt;/ul&gt;    &lt;div&gt;      &lt;div&gt;&lt;/div&gt;      &lt;img alt="image-20210129103712446" src="https://i-tech.tech/images/posts/image-20210129103712446.png" title=""&gt;&lt;/img&gt;&lt;/div&gt;    &lt;div&gt;image-20210129103712446&lt;/div&gt;    &lt;ul&gt;      &lt;li&gt;接下来，选择Connect Using  MongoDB Compass&lt;/li&gt;&lt;/ul&gt;    &lt;div&gt;      &lt;div&gt;&lt;/div&gt;      &lt;img alt="image-20210129104311381" src="https://i-tech.tech/images/posts/image-20210129104311381.png" title=""&gt;&lt;/img&gt;&lt;/div&gt;    &lt;div&gt;image-20210129104311381&lt;/div&gt;    &lt;ul&gt;      &lt;li&gt;接下来，点击I have  MongDB Compass，可以看到一串连接字符串，如下图红线框起来的地方&lt;/li&gt;&lt;/ul&gt;    &lt;div&gt;      &lt;div&gt;&lt;/div&gt;      &lt;img alt="image-20210129104512665" src="https://i-tech.tech/images/posts/image-20210129104512665.png" title=""&gt;&lt;/img&gt;&lt;/div&gt;    &lt;div&gt;image-20210129104512665&lt;/div&gt;    &lt;ul&gt;      &lt;li&gt;参照上图中红线框起来的连接字符串，我们按照下图填下我们的Navicat连接配置信息，密码处填写创建数据库时设置的密码&lt;/li&gt;&lt;/ul&gt;    &lt;div&gt;      &lt;div&gt;&lt;/div&gt;      &lt;img alt="image-20210129104740510" src="https://i-tech.tech/images/posts/image-20210129104740510.png" title=""&gt;&lt;/img&gt;&lt;/div&gt;    &lt;div&gt;image-20210129104740510&lt;/div&gt;    &lt;ul&gt;      &lt;li&gt;点击测试连接，我会发现，连接成功，随后点击确定即可&lt;/li&gt;&lt;/ul&gt;    &lt;div&gt;      &lt;div&gt;&lt;/div&gt;      &lt;img alt="image-20210129104824746" src="https://i-tech.tech/images/posts/image-20210129104824746.png" title=""&gt;&lt;/img&gt;&lt;/div&gt;    &lt;div&gt;image-20210129104824746&lt;/div&gt;    &lt;blockquote&gt;      &lt;p&gt;万事具备，只差Api，开启Serverless  Api开发之旅&lt;/p&gt;&lt;/blockquote&gt;    &lt;h4&gt;      &lt;a href="https://i-tech.tech/iloveu/44d57db9.html#&amp;#22522;&amp;#20110;noodejs&amp;#30340;Serverless-Api" title=""&gt;&lt;/a&gt;基于noodejs的Serverless Api&lt;/h4&gt;    &lt;ul&gt;      &lt;li&gt;第一次使用首先需要安装vercel&lt;/li&gt;&lt;/ul&gt;    &lt;div&gt;      &lt;div&gt;&lt;/div&gt;      &lt;img alt="image-20210129132921187" src="https://i-tech.tech/images/posts/image-20210129132921187.png" title=""&gt;&lt;/img&gt;&lt;/div&gt;    &lt;div&gt;image-20210129132921187&lt;/div&gt;    &lt;ul&gt;      &lt;li&gt;        &lt;p&gt;使用npm init给当前目录添加一个package.json文件&lt;/p&gt;&lt;/li&gt;      &lt;li&gt;        &lt;p&gt;登录vercel，在终端输入以下命令，回车之后会让你输入邮箱，填完邮箱后，vercel会向该邮箱发送一个链接，点击该链接确认登录&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;    &lt;table&gt;      &lt;tr&gt;        &lt;td&gt;          &lt;pre&gt;1            &lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;        &lt;td&gt;          &lt;pre&gt;vercel login            &lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;    &lt;ul&gt;      &lt;li&gt;登录完毕之后，输入以下命令，将当前目录初始化为vercel项目目录。回车之后，vercel会询问你一些信息，一路回车就好&lt;/li&gt;&lt;/ul&gt;    &lt;table&gt;      &lt;tr&gt;        &lt;td&gt;          &lt;pre&gt;1            &lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;        &lt;td&gt;          &lt;pre&gt;vercel            &lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;    &lt;ul&gt;      &lt;li&gt;给vercel配置路由信息，在根目录新建vercel的配置文件vercel.json，并填入下面的配置，下面的意思是，当访问的路径返回状态是404时，就访问welcome.html页面&lt;/li&gt;&lt;/ul&gt;    &lt;table&gt;      &lt;tr&gt;        &lt;td&gt;          &lt;pre&gt;1            &lt;br /&gt;2            &lt;br /&gt;3            &lt;br /&gt;4            &lt;br /&gt;5            &lt;br /&gt;6            &lt;br /&gt;7            &lt;br /&gt;8            &lt;br /&gt;9            &lt;br /&gt;10            &lt;br /&gt;11            &lt;br /&gt;12            &lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;        &lt;td&gt;          &lt;pre&gt;{            &lt;br /&gt;&amp;quot;routes&amp;quot;: [            &lt;br /&gt;{            &lt;br /&gt;&amp;quot;handle&amp;quot;:&amp;quot;filesystem&amp;quot;            &lt;br /&gt;},            &lt;br /&gt;{            &lt;br /&gt;&amp;quot;src&amp;quot;:&amp;quot;/(.*)&amp;quot;,            &lt;br /&gt;&amp;quot;status&amp;quot;:404,            &lt;br /&gt;&amp;quot;dest&amp;quot;:&amp;quot;/welcome.html&amp;quot;            &lt;br /&gt;}            &lt;br /&gt;]            &lt;br /&gt;}            &lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;    &lt;ul&gt;      &lt;li&gt;当前我们还没有welcome.html页面，我们在根目录新建welcome.html，并填入下面的内容&lt;/li&gt;&lt;/ul&gt;    &lt;table&gt;      &lt;tr&gt;        &lt;td&gt;          &lt;pre&gt;1            &lt;br /&gt;2            &lt;br /&gt;3            &lt;br /&gt;4            &lt;br /&gt;5            &lt;br /&gt;6            &lt;br /&gt;7            &lt;br /&gt;8            &lt;br /&gt;9            &lt;br /&gt;10            &lt;br /&gt;11            &lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;        &lt;td&gt;          &lt;pre&gt;&amp;lt;!DOCTYPEhtml&amp;gt;            &lt;br /&gt;&amp;lt;htmllang=&amp;quot;en&amp;quot;&amp;gt;            &lt;br /&gt;&amp;lt;head&amp;gt;            &lt;br /&gt;&amp;lt;metacharset=&amp;quot;UTF-8&amp;quot;&amp;gt;            &lt;br /&gt;&amp;lt;metaname=&amp;quot;viewport&amp;quot;content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;            &lt;br /&gt;&amp;lt;title&amp;gt;热烈欢迎！&amp;lt;/title&amp;gt;            &lt;br /&gt;&amp;lt;/head&amp;gt;            &lt;br /&gt;&amp;lt;body&amp;gt;            &lt;br /&gt;&amp;lt;h1&amp;gt;大写的欢迎！&amp;lt;/h1&amp;gt;            &lt;br /&gt;&amp;lt;/body&amp;gt;            &lt;br /&gt;&amp;lt;/html&amp;gt;            &lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;    &lt;ul&gt;      &lt;li&gt;现在，启动一下我们的vercel项目，查看一下效果，直接在控制台输入下面的命令即可，点击控制台输出的Preview后面的链接即可预览&lt;/li&gt;&lt;/ul&gt;    &lt;table&gt;      &lt;tr&gt;        &lt;td&gt;          &lt;pre&gt;1            &lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;        &lt;td&gt;          &lt;pre&gt;vercel            &lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;    &lt;div&gt;      &lt;div&gt;&lt;/div&gt;      &lt;img alt="image-20210129142716094" src="https://i-tech.tech/images/posts/image-20210129142716094.png" title=""&gt;&lt;/img&gt;&lt;/div&gt;    &lt;div&gt;image-20210129142716094&lt;/div&gt;    &lt;ul&gt;      &lt;li&gt;访问链接后我们可以看到&lt;/li&gt;&lt;/ul&gt;    &lt;div&gt;      &lt;div&gt;&lt;/div&gt;      &lt;img alt="image-20210129142745377" src="https://i-tech.tech/images/posts/image-20210129142745377.png" title=""&gt;&lt;/img&gt;&lt;/div&gt;    &lt;div&gt;image-20210129142745377&lt;/div&gt;    &lt;ul&gt;      &lt;li&gt;这还只是最简单的页面，到这里，我们的项目目录结构应该长这样子的&lt;/li&gt;&lt;/ul&gt;    &lt;div&gt;      &lt;div&gt;&lt;/div&gt;      &lt;img alt="image-20210129142924324" src="https://i-tech.tech/images/posts/image-20210129142924324.png" title=""&gt;&lt;/img&gt;&lt;/div&gt;    &lt;div&gt;image-20210129142924324&lt;/div&gt;    &lt;ul&gt;      &lt;li&gt;为了让我们的项目更强大，引入node相关的依赖。为了开发更便捷，我们使用typescript。执行以下命令&lt;/li&gt;&lt;/ul&gt;    &lt;table&gt;      &lt;tr&gt;        &lt;td&gt;          &lt;pre&gt;1            &lt;br /&gt;2            &lt;br /&gt;3            &lt;br /&gt;4            &lt;br /&gt;5            &lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;        &lt;td&gt;          &lt;pre&gt;npm i typescript            &lt;br /&gt;npm i express            &lt;br /&gt;npm i @vercel/node-D            &lt;br /&gt;npm i babel-register-D            &lt;br /&gt;npm i babel-plugin-transform-es2015-modules-commonjs-D            &lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;    &lt;ul&gt;      &lt;li&gt;在根目录新建typescript的配置文件tsconfig.json，输入以下内容&lt;/li&gt;&lt;/ul&gt;    &lt;table&gt;      &lt;tr&gt;        &lt;td&gt;          &lt;pre&gt;1            &lt;br /&gt;2            &lt;br /&gt;3            &lt;br /&gt;4            &lt;br /&gt;5            &lt;br /&gt;6            &lt;br /&gt;7            &lt;br /&gt;8            &lt;br /&gt;9            &lt;br /&gt;10            &lt;br /&gt;11            &lt;br /&gt;12            &lt;br /&gt;13            &lt;br /&gt;14            &lt;br /&gt;15            &lt;br /&gt;16            &lt;br /&gt;17            &lt;br /&gt;18            &lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;        &lt;td&gt;          &lt;pre&gt;{            &lt;br /&gt;&amp;quot;compilerOptions&amp;quot;: {            &lt;br /&gt;&amp;quot;target&amp;quot;:&amp;quot;es6&amp;quot;,            &lt;br /&gt;&amp;quot;module&amp;quot;:&amp;quot;commonjs&amp;quot;,            &lt;br /&gt;&amp;quot;emitDecoratorMetadata&amp;quot;:true,            &lt;br /&gt;&amp;quot;experimentalDecorators&amp;quot;:true,            &lt;br /&gt;&amp;quot;sourceMap&amp;quot;:true,            &lt;br /&gt;&amp;quot;noEmitHelpers&amp;quot;:false            &lt;br /&gt;},            &lt;br /&gt;&amp;quot;exclude&amp;quot;: [            &lt;br /&gt;&amp;quot;node_modules&amp;quot;,            &lt;br /&gt;&amp;quot;typings/main&amp;quot;,            &lt;br /&gt;&amp;quot;typings/main.d.ts&amp;quot;,            &lt;br /&gt;&amp;quot;typings/browser&amp;quot;,            &lt;br /&gt;&amp;quot;typings/browser.d.ts&amp;quot;            &lt;br /&gt;],            &lt;br /&gt;&amp;quot;compileOnSave&amp;quot;:true            &lt;br /&gt;}            &lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;    &lt;ul&gt;      &lt;li&gt;为了使我们的时区设置正确，我们新建一个文件.env。写入以下内容&lt;/li&gt;&lt;/ul&gt;    &lt;table&gt;      &lt;tr&gt;        &lt;td&gt;          &lt;pre&gt;1            &lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;        &lt;td&gt;          &lt;pre&gt;TZ=&amp;apos;asia/shanghai&amp;apos;            &lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;    &lt;ul&gt;      &lt;li&gt;接下来开始准备api。在根目录下添加一个新目录，命名为api，我们后面新建的api将会放在里面&lt;/li&gt;      &lt;li&gt;在api目录下，新建文件helloworld.ts，并写入下面的内容，作为测试简单地输出hello world！&lt;/li&gt;&lt;/ul&gt;    &lt;table&gt;      &lt;tr&gt;        &lt;td&gt;          &lt;pre&gt;1            &lt;br /&gt;2            &lt;br /&gt;3            &lt;br /&gt;4            &lt;br /&gt;5            &lt;br /&gt;6            &lt;br /&gt;7            &lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;        &lt;td&gt;          &lt;pre&gt;import{ NowRequest, NowResponse }from&amp;apos;@vercel/node&amp;apos;;            &lt;br /&gt;module.exports =async(req: NowRequest, res: NowResponse) =&amp;gt; {            &lt;br /&gt;vardata = {            &lt;br /&gt;msg:&amp;quot;hello world!&amp;quot;            &lt;br /&gt;}            &lt;br /&gt;res.status(200).json(data);            &lt;br /&gt;}            &lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;    &lt;ul&gt;      &lt;li&gt;至此，我们一个简单的返回helloworld的serverless接口已经开发完毕了，我们预览一下效果，输入命令vercel，并访问Preview链接查看效果&lt;/li&gt;&lt;/ul&gt;    &lt;div&gt;      &lt;div&gt;&lt;/div&gt;      &lt;img alt="image-20210129151736608" src="https://i-tech.tech/images/posts/image-20210129151736608.png" title=""&gt;&lt;/img&gt;&lt;/div&gt;    &lt;div&gt;image-20210129151736608&lt;/div&gt;    &lt;h4&gt;      &lt;a href="https://i-tech.tech/iloveu/44d57db9.html#Serverless&amp;#36830;&amp;#25509;MongoDB&amp;#25968;&amp;#25454;&amp;#24211;" title=""&gt;&lt;/a&gt;Serverless连接MongoDB数据库&lt;/h4&gt;    &lt;ul&gt;      &lt;li&gt;通过以下命令安装依赖，我们就可以在nodejs中操作MongoDB数据库了&lt;/li&gt;&lt;/ul&gt;    &lt;table&gt;      &lt;tr&gt;        &lt;td&gt;          &lt;pre&gt;1            &lt;br /&gt;2            &lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;        &lt;td&gt;          &lt;pre&gt;npm i mongodb            &lt;br /&gt;npm i @types/mongodb-D            &lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;    &lt;ul&gt;      &lt;li&gt;为了方便我们测试，我们先用Navicat往MongoDB添加一条数据，添加后的数据长这样，集合的名字叫做northwind，document为{name:”huangkemeng”}&lt;/li&gt;&lt;/ul&gt;    &lt;div&gt;      &lt;div&gt;&lt;/div&gt;      &lt;img alt="image-20210129153828521" src="https://i-tech.tech/images/posts/image-20210129153828521.png" title=""&gt;&lt;/img&gt;&lt;/div&gt;    &lt;div&gt;image-20210129153828521&lt;/div&gt;    &lt;ul&gt;      &lt;li&gt;接下来，我们用接口返回这条数据。我们在api目录下创建名为getUsername.ts的文件，文件内容如下，        &lt;em&gt;注意：将方括号内的信息更换成你自己的!!!&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;    &lt;table&gt;      &lt;tr&gt;        &lt;td&gt;          &lt;pre&gt;1            &lt;br /&gt;2            &lt;br /&gt;3            &lt;br /&gt;4            &lt;br /&gt;5            &lt;br /&gt;6            &lt;br /&gt;7            &lt;br /&gt;8            &lt;br /&gt;9            &lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;        &lt;td&gt;          &lt;pre&gt;import{ NowRequest, NowResponse }from&amp;apos;@vercel/node&amp;apos;;            &lt;br /&gt;import{ MongoClient }from&amp;apos;mongodb&amp;apos;            &lt;br /&gt;constCONNECTION_STRING =&amp;quot;mongodb+srv://huangkemeng:[yourpassword]@clusterblog.engmb.azure.mongodb.net/admin&amp;quot;;            &lt;br /&gt;module.exports =async(req: NowRequest, res: NowResponse) =&amp;gt; {            &lt;br /&gt;constclient =awaitMongoClient.connect(CONNECTION_STRING, { useNewUrlParser:true, useUnifiedTopology:true});            &lt;br /&gt;constdb =awaitclient.db(&amp;apos;[hkm-story]&amp;apos;);            &lt;br /&gt;varresult =awaitdb.collection(&amp;quot;[northwind]&amp;quot;).find().toArray();            &lt;br /&gt;res.status(200).json(result);            &lt;br /&gt;}            &lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;    &lt;ul&gt;      &lt;li&gt;关于上图中提到的CONNECTION_STRING变量的值，我们很轻而易举得地找到，请看下图&lt;/li&gt;&lt;/ul&gt;    &lt;div&gt;      &lt;div&gt;&lt;/div&gt;      &lt;img alt="image-20210129161709172" src="https://i-tech.tech/images/posts/image-20210129161709172.png" title=""&gt;&lt;/img&gt;&lt;/div&gt;    &lt;div&gt;image-20210129161709172&lt;/div&gt;    &lt;div&gt;      &lt;div&gt;&lt;/div&gt;      &lt;img alt="image-20210129161810441" src="https://i-tech.tech/images/posts/image-20210129161810441.png" title=""&gt;&lt;/img&gt;&lt;/div&gt;    &lt;div&gt;image-20210129161810441&lt;/div&gt;    &lt;ul&gt;      &lt;li&gt;至此，一个通过MongoDB返回数据的serverless接口开发完毕，请看效果&lt;/li&gt;&lt;/ul&gt;    &lt;div&gt;      &lt;div&gt;&lt;/div&gt;      &lt;img alt="image-20210129162053681" src="https://i-tech.tech/images/posts/image-20210129162053681.png" title=""&gt;&lt;/img&gt;&lt;/div&gt;    &lt;div&gt;image-20210129162053681&lt;/div&gt;    &lt;ul&gt;      &lt;li&gt;通过运行vercel –prod命令即可将其发布。&lt;/li&gt;&lt;/ul&gt;    &lt;blockquote&gt;      &lt;p&gt;关于更多关于vercel的介绍了，可以邮件联系我，比如该serverless的调试等，篇幅太长，这里就不再赘述！。End！&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;
    &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/62195-vercel-%E7%A5%9E%E4%BB%99-%E7%BD%91%E7%AB%99</guid>
      <pubDate>Fri, 08 Apr 2022 11:54:09 CST</pubDate>
    </item>
    <item>
      <title>国家队出品的学习网站，还免费！_软件应用_什么值得买</title>
      <link>https://itindex.net/detail/61692-%E5%9B%BD%E5%AE%B6%E9%98%9F-%E5%AD%A6%E4%B9%A0-%E7%BD%91%E7%AB%99</link>
      <description>&lt;p&gt;  &lt;img alt="&amp;#26657;&amp;#22806;&amp;#36741;&amp;#23548;&amp;#27809;&amp;#20102;&amp;#19981;&amp;#21487;&amp;#24796;&amp;#65292;&amp;#22269;&amp;#23478;&amp;#38431;&amp;#20986;&amp;#21697;&amp;#30340;&amp;#23398;&amp;#20064;&amp;#32593;&amp;#31449;&amp;#26356;&amp;#21487;&amp;#36149;&amp;#65292;&amp;#36824;&amp;#20813;&amp;#36153;&amp;#65281;" src="https://res.smzdm.com/app/v2.0/dist/assets/haowen_loading.png" title=""&gt;&lt;/img&gt;&lt;/p&gt;  &lt;h2&gt;1、国家中小学网络云平台&lt;/h2&gt;  &lt;p&gt;    &lt;a href="https://ykt.eduyun.cn/ykt/sjykt/index.html" rel="nofollow"&gt;点此进入传送门&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;国家中小学网络云平台是当时为了疫情期间停课不停学设计的，界面清晰无广告，课程涵盖了从小学一直到到高三。授课教师都是来自全国各地的优秀教师，比起辅导机构的老师更正规，更有经验。果然国家出品才是真正的良心出品，就这样精华级别的课程，竟然完全不收任何费用！&lt;/p&gt;  &lt;p&gt;    &lt;img alt="&amp;#26657;&amp;#22806;&amp;#36741;&amp;#23548;&amp;#27809;&amp;#20102;&amp;#19981;&amp;#21487;&amp;#24796;&amp;#65292;&amp;#22269;&amp;#23478;&amp;#38431;&amp;#20986;&amp;#21697;&amp;#30340;&amp;#23398;&amp;#20064;&amp;#32593;&amp;#31449;&amp;#26356;&amp;#21487;&amp;#36149;&amp;#65292;&amp;#36824;&amp;#20813;&amp;#36153;&amp;#65281;" src="https://res.smzdm.com/app/v2.0/dist/assets/haowen_loading.png" title=""&gt;&lt;/img&gt;&lt;/p&gt;  &lt;h2&gt;2、国家基础教育资源网&lt;/h2&gt;  &lt;p&gt;    &lt;a href="https://so.eduyun.cn/national/index" rel="nofollow"&gt;点此进入传送门&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;国家基础教育资源网的界面也是非常简洁明了。这里有从小学到高中的各种资源，包括公开课、课件、教案等，而且都根据教材分门别类了，不管你们学校用的是人教版还是北师大版，都能找到相应的学习资源。阵主看了一下，这个网站甚至连育儿和学前班的教程资源都有，真的是从孩子出生管到上大学啊！&lt;/p&gt;  &lt;p&gt;    &lt;img alt="&amp;#26657;&amp;#22806;&amp;#36741;&amp;#23548;&amp;#27809;&amp;#20102;&amp;#19981;&amp;#21487;&amp;#24796;&amp;#65292;&amp;#22269;&amp;#23478;&amp;#38431;&amp;#20986;&amp;#21697;&amp;#30340;&amp;#23398;&amp;#20064;&amp;#32593;&amp;#31449;&amp;#26356;&amp;#21487;&amp;#36149;&amp;#65292;&amp;#36824;&amp;#20813;&amp;#36153;&amp;#65281;" src="https://res.smzdm.com/app/v2.0/dist/assets/haowen_loading.png" title=""&gt;&lt;/img&gt;&lt;/p&gt;  &lt;h2&gt;3、一师一优课一课一名师&lt;/h2&gt;  &lt;p&gt;    &lt;a href="https://1s1k.eduyun.cn/portal/html/1s1k/course/1.html" rel="nofollow"&gt;点此进入传送门&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;现在“一师一优课 一课一名师”这个网站已经收录了将近一千七百万节公开课了，国家队出手，果然恐怖如斯！不管是小学初中还是高中，不管是语数外主课还是体育书法等副课，这里都是应有尽有。如果孩子不满足于课堂上学的东西，回家完全可以来这里继续学习，还不用给辅导机构充钱，多棒啊。&lt;/p&gt;  &lt;p&gt;    &lt;img alt="&amp;#26657;&amp;#22806;&amp;#36741;&amp;#23548;&amp;#27809;&amp;#20102;&amp;#19981;&amp;#21487;&amp;#24796;&amp;#65292;&amp;#22269;&amp;#23478;&amp;#38431;&amp;#20986;&amp;#21697;&amp;#30340;&amp;#23398;&amp;#20064;&amp;#32593;&amp;#31449;&amp;#26356;&amp;#21487;&amp;#36149;&amp;#65292;&amp;#36824;&amp;#20813;&amp;#36153;&amp;#65281;" src="https://res.smzdm.com/app/v2.0/dist/assets/haowen_loading.png" title=""&gt;&lt;/img&gt;&lt;/p&gt;  &lt;h2&gt;4、人民教育出版社官方网站&lt;/h2&gt;  &lt;p&gt;    &lt;a href="https://www.pep.com.cn/" rel="nofollow"&gt;点此进入传送门&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;人民教育出版社的官网上也有不少学习资源，配上人教版自己的教材，学习起来自然也是事半功倍。不仅如此，人教版官网上面还有不少关于教材课程设计的探讨，我觉得家长和孩子如果能一起了解一下的话，也会对如何学习该门课有更深的认识。&lt;/p&gt;  &lt;p&gt;    &lt;img alt="&amp;#26657;&amp;#22806;&amp;#36741;&amp;#23548;&amp;#27809;&amp;#20102;&amp;#19981;&amp;#21487;&amp;#24796;&amp;#65292;&amp;#22269;&amp;#23478;&amp;#38431;&amp;#20986;&amp;#21697;&amp;#30340;&amp;#23398;&amp;#20064;&amp;#32593;&amp;#31449;&amp;#26356;&amp;#21487;&amp;#36149;&amp;#65292;&amp;#36824;&amp;#20813;&amp;#36153;&amp;#65281;" src="https://res.smzdm.com/app/v2.0/dist/assets/haowen_loading.png" title=""&gt;&lt;/img&gt;&lt;/p&gt;  &lt;p&gt;对于语文课程，人民教育出版社也会有自己为课本中课文出的示范诵读，像很多偏远地区的老师自己普通话其实都会多少带一点口音，但是这个诵读真的是十分标准，也是非常珍贵的资源。&lt;/p&gt;  &lt;p&gt;    &lt;img alt="&amp;#26657;&amp;#22806;&amp;#36741;&amp;#23548;&amp;#27809;&amp;#20102;&amp;#19981;&amp;#21487;&amp;#24796;&amp;#65292;&amp;#22269;&amp;#23478;&amp;#38431;&amp;#20986;&amp;#21697;&amp;#30340;&amp;#23398;&amp;#20064;&amp;#32593;&amp;#31449;&amp;#26356;&amp;#21487;&amp;#36149;&amp;#65292;&amp;#36824;&amp;#20813;&amp;#36153;&amp;#65281;" src="https://res.smzdm.com/app/v2.0/dist/assets/haowen_loading.png" title=""&gt;&lt;/img&gt;&lt;/p&gt;  &lt;h2&gt;5、安徽基础教育资源应用平台&lt;/h2&gt;  &lt;p&gt;    &lt;a href="http://www.ahedu.cn/EduResource/index.php?app=resource&amp;mod=Homepage&amp;act=index" rel="nofollow"&gt;点此进入传送门&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;除了国家队出手的资源，我们的省队也出手了。安徽基础教育资源应用平台属实不错，界面非常简洁，从学前到高中的各类学习资源也都分门别类归纳好了，任君获取。里面的课程资源也是蛮丰富的，大家完全可以拿来找找对自己有用的学习资料。&lt;/p&gt;  &lt;p&gt;    &lt;img alt="&amp;#26657;&amp;#22806;&amp;#36741;&amp;#23548;&amp;#27809;&amp;#20102;&amp;#19981;&amp;#21487;&amp;#24796;&amp;#65292;&amp;#22269;&amp;#23478;&amp;#38431;&amp;#20986;&amp;#21697;&amp;#30340;&amp;#23398;&amp;#20064;&amp;#32593;&amp;#31449;&amp;#26356;&amp;#21487;&amp;#36149;&amp;#65292;&amp;#36824;&amp;#20813;&amp;#36153;&amp;#65281;" src="https://res.smzdm.com/app/v2.0/dist/assets/haowen_loading.png" title=""&gt;&lt;/img&gt;&lt;/p&gt;  &lt;h2&gt;结尾&lt;/h2&gt;  &lt;p&gt;好了，本文就分享到这里。大家有其他有用的学习网站的话，也欢迎在评论区补充呀！另外，活到老，学到老，之前分享的学习资源帖子也一并附在下方~    &lt;a href="https://post.smzdm.com/p/akx3o40k/"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;img alt="&amp;#26657;&amp;#22806;&amp;#36741;&amp;#23548;&amp;#27809;&amp;#20102;&amp;#19981;&amp;#21487;&amp;#24796;&amp;#65292;&amp;#22269;&amp;#23478;&amp;#38431;&amp;#20986;&amp;#21697;&amp;#30340;&amp;#23398;&amp;#20064;&amp;#32593;&amp;#31449;&amp;#26356;&amp;#21487;&amp;#36149;&amp;#65292;&amp;#36824;&amp;#20813;&amp;#36153;&amp;#65281;" src="https://res.smzdm.com/app/v2.0/dist/assets/haowen_loading.png"&gt;&lt;/img&gt;新年学习的FLAG已经立下，就让这8个公开课网站助你完成目标吧！创作立场声明：如果对大家有帮助的话，欢迎大家点赞分享，转发收藏呀！大家好，我是聚灵阵主。又好久没有发文啦，这次带来的是阵主整理的公开课网站合集。说实话，公开课网站这种东西很有用，但是没有必要把阵主推荐的网站全部收藏，收藏一部分，然后需要学什么就在里面搜就行了。就目前的互联网来看，资源并不短缺，短缺的聚灵阵主|  &lt;em&gt;赞&lt;/em&gt;52  &lt;em&gt;评论&lt;/em&gt;89  &lt;em&gt;收藏&lt;/em&gt;220查看详情  &lt;img alt="&amp;#26657;&amp;#22806;&amp;#36741;&amp;#23548;&amp;#27809;&amp;#20102;&amp;#19981;&amp;#21487;&amp;#24796;&amp;#65292;&amp;#22269;&amp;#23478;&amp;#38431;&amp;#20986;&amp;#21697;&amp;#30340;&amp;#23398;&amp;#20064;&amp;#32593;&amp;#31449;&amp;#26356;&amp;#21487;&amp;#36149;&amp;#65292;&amp;#36824;&amp;#20813;&amp;#36153;&amp;#65281;" src="https://res.smzdm.com/app/v2.0/dist/assets/haowen_loading.png"&gt;&lt;/img&gt;不管你是谁，总要聊点AI吧！人工智能入门书籍、视频、课程以及其他资源推荐创作立场声明：无任何利益相关，若是文章有什么纰漏疏忽错误之类的，欢迎大家指正！大家好，我是聚灵阵主。其实开着一篇我自己也很忐忑，毕竟阵主不算是深度的从业人员，但是我自己目前的专业也是跨在和人工智能的交叉学科上面。这篇文章准备搜集一些学习人工智能所需要的资源网站等，即使为身为小白的我自己准备的，也给大聚灵阵主|  &lt;em&gt;赞&lt;/em&gt;67  &lt;em&gt;评论&lt;/em&gt;132  &lt;em&gt;收藏&lt;/em&gt;42查看详情  &lt;img alt="&amp;#26657;&amp;#22806;&amp;#36741;&amp;#23548;&amp;#27809;&amp;#20102;&amp;#19981;&amp;#21487;&amp;#24796;&amp;#65292;&amp;#22269;&amp;#23478;&amp;#38431;&amp;#20986;&amp;#21697;&amp;#30340;&amp;#23398;&amp;#20064;&amp;#32593;&amp;#31449;&amp;#26356;&amp;#21487;&amp;#36149;&amp;#65292;&amp;#36824;&amp;#20813;&amp;#36153;&amp;#65281;" src="https://res.smzdm.com/app/v2.0/dist/assets/haowen_loading.png"&gt;&lt;/img&gt;APP/网站/UP主，免费英语学习资源集锦，还愁学不好英语吗？创作立场声明：一些英语学习的经验和资源汇总。有帮助的话，还请给个点赞收藏打赏关注啊！大家好，我是聚灵阵主。我又双叒叕来啦。年底了，这次跟大家分享的是英语学习的网络资源。首先要说明的是，阵主分享的这些都只是工具，要真正地学好英语，最终还是靠自己！真正地学好英语，最终还是靠自己！真正地学好英语，最终还是聚灵阵主|  &lt;em&gt;赞&lt;/em&gt;576  &lt;em&gt;评论&lt;/em&gt;266  &lt;em&gt;收藏&lt;/em&gt;5k查看详情  &lt;img alt="&amp;#26657;&amp;#22806;&amp;#36741;&amp;#23548;&amp;#27809;&amp;#20102;&amp;#19981;&amp;#21487;&amp;#24796;&amp;#65292;&amp;#22269;&amp;#23478;&amp;#38431;&amp;#20986;&amp;#21697;&amp;#30340;&amp;#23398;&amp;#20064;&amp;#32593;&amp;#31449;&amp;#26356;&amp;#21487;&amp;#36149;&amp;#65292;&amp;#36824;&amp;#20813;&amp;#36153;&amp;#65281;" src="https://res.smzdm.com/app/v2.0/dist/assets/haowen_loading.png"&gt;&lt;/img&gt;众所周知，B站是一个学习网站，19位UP主带你好好学习！创作立场声明：快来B站搞学习！欢迎大家点赞打赏收藏评论啊！大家好，我是聚灵阵主，没错，我有又双叒叒来啦。说起今年，对阵主生活影响最大的，除了疫情，就是B站了，自从成为了B站用户之后，我这个沙雕视频爱好者竟然在里面找到了一堆正经或者不正经搞科普的UP主，今天阵主就来分享以下我觉得值得关注的这些只是区U聚灵阵主|  &lt;em&gt;赞&lt;/em&gt;738  &lt;em&gt;评论&lt;/em&gt;298  &lt;em&gt;收藏&lt;/em&gt;6k查看详情  &lt;p&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;div&gt;  &lt;br /&gt;&lt;/div&gt;
    &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/61692-%E5%9B%BD%E5%AE%B6%E9%98%9F-%E5%AD%A6%E4%B9%A0-%E7%BD%91%E7%AB%99</guid>
      <pubDate>Tue, 17 Aug 2021 12:51:44 CST</pubDate>
    </item>
    <item>
      <title>28个免费数据源网站，不要白不要_手机搜狐网</title>
      <link>https://itindex.net/detail/61668-%E5%85%8D%E8%B4%B9-%E6%95%B0%E6%8D%AE-%E7%BD%91%E7%AB%99</link>
      <description>&lt;div&gt;    &lt;p&gt;   &lt;strong&gt;1.中国国家数据中心&lt;/strong&gt;   &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;http://data.stats.gov.cn/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;在中国国家数据中心，用户可以查找到所需要的最全面最权威的数据信息，了解最新的数据法规及制度。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;2.中国统计信息网&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;http://www.tjcn.org/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;国家统计局的官方网站，上面汇集了海量的全国各级政府各年度的国民经济和社会发展统计信息，用户还可以在上面找到统计年鉴、阶段发展数据、统计分析、经济新闻、主要统计指标排行等。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;3.香港政府数据中心&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;https://data.gov.hk/en/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;这是香港特别行政区政府公共部门信息门户，该门户网站由政府首席信息官办公室负责维护，其中的数据集由不同的政府部门和公共/私人组织提供。你可以免费用于下载，分发，复制，重复使用或链接等商业或非商业活动。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;4.纽约市开放数据中心&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;https://opendata.cityofnewyork.us/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;纽约市开放式数据中心致力于搭建一个数据交流、交换、分享的平台，既包括纽约市政府开放的各门类公共数据，也包括私人机构和企业公布的非公共数据。任何人都可以搜索、检察、下载、使用这些数据。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;5.纽约政府数据中心&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;https://data.ny.gov/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;该网站是纽约市政府名下的一个关于政策、程序和工具的数据信息门户，在数据时代为公众和政府提供了可公共访问的合作和分析数据&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;6.&lt;/strong&gt;      &lt;strong&gt;澳大利亚国家开放数据中心&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;http://data.gov.au/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;这是澳大利亚开放式数据信息门户，用户可以在这个网站查找，访问和反复使用公共数据，其网站团队是基于政府及用户的反馈来发布新的数据。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;7.英国国家数据中心&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;https://data.gov.uk/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;在这个网站用户可以查找政府部门和机构、公共机构和地方当局公布的数据，并使用这些数据来了解更多关于政府如何工作，或用于进行研究，构建应用程序和服务等。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;8.日本统计局&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;http://www.stat.go.jp/&lt;/p&gt;    &lt;p&gt;      &lt;img height="424" width="557"&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;该网站上各方面统计数据由日本统计局与统计中心提供，网站会定期发布统计报告。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;9.美国劳工统计局&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;https://www.bls.gov/data/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;美国劳工统计局是美国联邦政府劳动经济和劳工统计的主要机构，负责收集、加工、分析、以及向公众发布重要的统计数据。用户可以在网站上搜索到包括通货膨胀与价格、消费支出、失业数据、就业数据、福利待遇、产出率、工伤统计等信息。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;10.经合组织（OECD）&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;https://data.oecd.org/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;用户可在此网站查找、比较和分享最新的经合组织数据，如图表、地图、表格和相关出版物等。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;11.欧盟数据门户&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;https://www.europeandataportal.eu/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;欧盟数据开放平台中的数据库包括地理、统计、气象数据，以及来自公共资金研究项目的数据和数字化图书等，平台中的数据集均由欧盟收集、购买，再免费提供给所有的用户，来自欧盟以及其他地区的用户都可以到平台上直接下载数据用于分析、开发创新服务或应用等用途。&lt;/p&gt;    &lt;p&gt;金融开放数据&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;12.中国保险数据&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;http://www.circ.gov.cn/web/site0/tab5179/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;用户可以在这个网站上查到国家宏观上最新的保险统计数据报告，保险业经营情况，保险公司保费收入情况等保险相关的数据信息。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;13.中国保险网——数据中心&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;http://www.china-insurance.com/info/list.aspx?cid=21&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;在中国保险网内的数据中心里，用户可以查到具体一家保险公司的各项数据情况，相较于中国保险数据网的信息更为精细。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;14.和讯保险数据中心&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;http://datainfo.stock.hexun.com/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;和讯保险数据中心里，用户可以查到全国和地方的保险相关的数据及其可视化图表，可清晰地看到保险行业的各项指标的变化趋势。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;15.世界银行数据库&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;https://data.worldbank.org.cn/?year_high_desc=false&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;世界银行数据库列出了世界银行数据库的七千多个指标，所有用户都可以免费使用和分享数据。用户也可以按照国家、指标、专题和数据目录浏览数据。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;16.CEIC&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;http://www.ceicdata.com/zh-hans&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;网站拥有一套最完整的超过128个国家的经济数据，能够精确查找GDP, CPI, 进口，出口，外资直接投资，零售，销售，以及国际利率等深度数据。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;17.Wind（万得）&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;http://www.wind.com.cn/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;万得被誉为中国的Bloomberg，在金融业有着全面的数据覆盖，金融数据的类目更新极快，很受国内的商业分析者和投资人的亲睐。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;18.搜数网&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;http://www.soshoo.com/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;已加载到搜数网站的统计资料达到8788本,涵盖2006664张统计表格和407992416个统计数据，汇集了中国资讯行自92年以来收集的所有统计和调查数据，并用户提供多样化的搜索功能。&lt;/p&gt;    &lt;p&gt;其他机构开放数据&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;19.Open Data Inception&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;https://opendatainception.io/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;网站记录了2600+个开放式数据信息门户网站，可直接通过地图精准找到你需要的不同地区的数据门户网站。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;20.Open Data 500&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;http://www.opendata500.com/us/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;Open Data 500是首个以开放政府数据来产生新的业务和开发新的产品和服务的综合研究性美国公司。研究机构可以发布网站上收集的数据，企业、组织和公民也可以分析网站上的数据，并使用这些信息。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;21.英国开放式数据研究所&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;https://theodi.org/about&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;网站汇集了各类商业和非商业组织以及围绕特定部门的政府机构来帮助人们识别和处理数据网络，旨在共同建立一个强大的数据基础设施，提供Web规模的开放式创新。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;22.数据美国&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;https://datausa.io/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;美国大数据(Data Usa)主要研究宏观的社会联系，在海量数据中找出人们的某个被忽略的特征。网站根据地区、行业、职业、教育背景做了初步的分类，用户可以进入任何你想了解的部分，探索美国社会局部的详细情况。它们也提供了地图式的阅读视图。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;23.亚马逊公共数据集&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;https://amazonaws-china.com/cn/public-datasets/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;网站来自亚马逊的跨科学云数据平台，其中包含化学、生物、经济等多个领域的数据集，当数据在 AWS 上公开提供后，任何人都可以分析任意数量的数据，而无需自行下载或存储这些数据。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;24.伯克利亚数据实验室&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;http://www.lib.berkeley.edu/libraries/data-lab&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;数据实验室是由当前加州大学伯克利分校的学生和教员提供有关数字数据的研究，他们会查找并推荐好的数据源到网站，并会对像文件格式转换、网页抓取和基本统计软件等技术数据问题提供咨询。实验室还提供工作站分析软件如ArcGIS、SAS、SPSS、STATA，Stata，R和Python等。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;25.IPUMS&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;https://www.ipums.org/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;IPUMS是普查数据的集成网站，用户可以查询包括人口、地理、居民生活、收入和消费信息等普查数据。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;26.数据世界&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;https://ourworldindata.org/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;数据世界这个网站像是一本在线出版物，它展示了生活条件是如何变化的。其目的是提供一个全球的概览，并显示各类信息在很长一段时间的变化。它涵盖了健康趋势，粮食供应，收入的增长和分配，暴力，权利，战争，文化，能源使用等主题的分析和可视化数据，所有用户可以在上面免费下载数据和代码。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;27.figshare&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;https://figshare.com/&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;这是一个研究成果共享平台，在这里用户可以看到来自世界各地的专业人士的研究成果分享，同时也获取其中的研究数据。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;28.github&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;https://github.com/caesar0301/awesome-public-datasets&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;github为用户整理了非常全面的数据获取渠道，包含各个细分领域的数据库资源，自然科学和社会科学的覆盖都很全面，用户可以自己获取数据去做研究和数据分析。&lt;/p&gt;    &lt;p&gt;在互联网高度发达的今天，数据资源异常的丰富和庞大，      &lt;strong&gt;如何高效地获取数据成为一种重要的能力&lt;/strong&gt;，利用好互联网带给我们的便利，将这些可以利用的资源整合起来，肯定会对自己的学习研究工作有很大的帮助。&lt;/p&gt;    &lt;p&gt;在后台回复      &lt;strong&gt;“资源”&lt;/strong&gt;可获得更多开放数据资源链接~&lt;/p&gt;    &lt;p&gt;▼&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;如何成为一名数据科学家 | 面试篇(附视频中字)&lt;/p&gt;    &lt;div&gt;&lt;/div&gt;声明：该文观点仅代表作者本人，搜狐号系信息发布平台，搜狐仅提供信息存储空间服务。&lt;/div&gt;
    &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/61668-%E5%85%8D%E8%B4%B9-%E6%95%B0%E6%8D%AE-%E7%BD%91%E7%AB%99</guid>
      <pubDate>Sun, 08 Aug 2021 15:18:13 CST</pubDate>
    </item>
    <item>
      <title>文件全文《关于进一步减轻义务教育阶段学生作业负担和校外培训负担的意见》 - 中华人民共和国教育部政府门户网站</title>
      <link>https://itindex.net/detail/61644-%E6%96%87%E4%BB%B6-%E4%B9%89%E5%8A%A1-%E6%95%99%E8%82%B2%E9%98%B6%E6%AE%B5</link>
      <description>&lt;div&gt;    &lt;p&gt;　　近日，中共中央办公厅、国务院办公厅印发《关于进一步减轻义务教育阶段学生作业负担和校外培训负担的意见》（以下简称《意见》）。&lt;/p&gt;    &lt;p&gt;　　《意见》指出，要坚持以习近平新时代中国特色社会主义思想为指导，全面贯彻党的教育方针，落实立德树人根本任务，坚持学生为本、回应关切，依法治理、标本兼治，政府主导、多方联动，统筹推进、稳步实施，强化学校教育主阵地作用，深化校外培训机构治理，有效缓解家长焦虑情绪，坚决防止侵害群众利益行为，构建教育良好生态，促进学生全面发展、健康成长。&lt;/p&gt;    &lt;p&gt;　　《意见》明确，进一步减轻义务教育阶段学生作业负担和校外培训负担（以下简称“双减”）的主要任务和重大措施有：一是全面压减作业总量和时长，减轻学生过重作业负担。健全作业管理机制，合理调控作业结构，分类明确作业总量，提高作业设计质量，加强作业完成指导。不得要求学生自批自改作业，严禁给家长布置或变相布置作业，严禁要求家长检查、批改作业。二是提升学校课后服务水平，满足学生多样化需求。课后服务结束时间原则上不早于当地正常下班时间，学校可统筹安排教师实行“弹性上下班制”。提高课后服务质量，增强课后服务的吸引力。拓展课后服务渠道，做强做优免费线上学习服务，积极创造条件组织优秀教师开展免费在线互动交流答疑。三是坚持从严治理，全面规范校外培训行为。各地不再审批新的面向义务教育阶段学生的学科类校外培训机构，现有学科类培训机构统一登记为非营利性机构，线上学科类机构改为审批制，学科类培训机构一律不得上市融资，严禁资本化运作，对非学科类培训机构分类制定标准、严格审批。规范培训服务行为，建立培训内容备案与监督制度，校外培训机构不得占用国家法定节假日、休息日及寒暑假期组织学科类培训。强化常态运营监管，培训机构融资及收费应主要用于培训业务，坚决禁止不正当竞争，严禁聘请在境外的外籍人员开展培训活动。四是大力提升教育教学质量，确保学生在校内学足学好。促进义务教育优质均衡发展，充分激发办学活力，整体提升学校办学水平。提升课堂教学质量，严格按课程标准零起点教学，考试成绩呈现实行等级制。深化高中招生改革，逐步提高优质普通高中招生指标分配到区域内初中的比例，规范普通高中招生秩序。五是强化配套治理，提升支撑保障能力。保障学校课后服务条件，统筹核定编制，配足配齐教师，制定学校课后服务经费保障办法，确保经费筹措到位，课后服务经费主要用于参与课后服务教师和相关人员的补助。做好培训广告管控，主流媒体、新媒体、公共场所、居民区各类广告牌和网络平台等不刊登、不播发校外培训广告。&lt;/p&gt;    &lt;p&gt;　　《意见》强调，在全面开展治理工作的同时，确定北京市等9个地区为全国试点地区，在坚决压减学科类校外培训、合理利用校内外资源、强化培训收费监管等方面进行试点探索。&lt;/p&gt;    &lt;p&gt;　　《意见》要求，各地党委和政府要精心组织实施，务求取得实效。加强党对“双减”工作的领导，把“双减”工作作为重大民生工程，列入重要议事日程。明确部门工作责任，联合开展专项治理行动，建立“双减”工作专门协调机制，在教育部设立协调机制专门工作机构，各地建立专门工作机构。强化督促检查和宣传引导，对责任不落实、措施不到位的地方、部门、学校及相关责任人要依法依规严肃追究责任。&lt;/p&gt;&lt;/div&gt;
    &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/61644-%E6%96%87%E4%BB%B6-%E4%B9%89%E5%8A%A1-%E6%95%99%E8%82%B2%E9%98%B6%E6%AE%B5</guid>
      <pubDate>Mon, 26 Jul 2021 19:43:21 CST</pubDate>
    </item>
    <item>
      <title>有没有什么推荐的电子相册制作软件或网站？ - 知乎</title>
      <link>https://itindex.net/detail/61451-%E6%9C%89%E6%B2%A1%E6%9C%89-%E7%94%B5%E5%AD%90-%E7%9B%B8%E5%86%8C</link>
      <description>&lt;div&gt;    &lt;div&gt;      &lt;div&gt;        &lt;div&gt;在线电子相册制作网站（1-2）&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;    &lt;div&gt;      &lt;div&gt;        &lt;div&gt;1、bilibili云剪辑&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;    &lt;div&gt;      &lt;div&gt;        &lt;div&gt;2、右糖在线视频制作&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;    &lt;div&gt;      &lt;div&gt;        &lt;div&gt;Windows客户端软件（3-4）&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;    &lt;div&gt;      &lt;div&gt;        &lt;div&gt;3、蜜蜂剪辑&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;    &lt;div&gt;      &lt;div&gt;        &lt;div&gt;4、Adobe Premiere&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;    &lt;div&gt;      &lt;div&gt;        &lt;div&gt;Mac OS客户端软件（5-6）&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;    &lt;div&gt;      &lt;div&gt;        &lt;div&gt;5、iMovie&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;    &lt;div&gt;      &lt;div&gt;        &lt;div&gt;6、Final Cut Pro X（FCPX）&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;    &lt;div&gt;      &lt;div&gt;        &lt;div&gt;制作电子相册教程：&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;div&gt;  &lt;br /&gt;&lt;/div&gt; &lt;div&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;div&gt;   &lt;p&gt;    &lt;br /&gt;&lt;/p&gt;   &lt;h2&gt;在线电子相册制作网站（1-2）&lt;/h2&gt;   &lt;h3&gt;    &lt;a href="https://link.zhihu.com/?target=https%3A//member.bilibili.com/studio/bs-editor" rel="nofollow noreferrer" target="_blank"&gt;1、bilibili云剪辑&lt;/a&gt;&lt;/h3&gt;   &lt;p&gt;b站2020年初推出的在线云端剪辑服务，无需导出、一键投稿到b站    &lt;strong&gt;，不支持导出下载呢&lt;/strong&gt;&lt;/p&gt;   &lt;p&gt;需要用74以上版本Chrome内核浏览器如：Chrome，Opera等才可以使用，无法在手机等移动设备上运行哦，滤镜、转场、变速、变声、字幕、贴纸、粒子、特效等功能：&lt;/p&gt;   &lt;img src="https://pic1.zhimg.com/80/v2-d94d0948b75d32adad4529684cb02e97_1440w.jpg?source=1940ef5c" width="1886"&gt;&lt;/img&gt;   &lt;p&gt;首先点击【资源库】-【上传】，上传你想要做成相册的文件（图片、视频、音乐），将素材拖曳到下方的时间轴，就可以按需调整持续时长、添加转场滤镜等。&lt;/p&gt;   &lt;p&gt;以上的操作完成后，可以点击右上角【立即投稿】，选即可一键投稿到b站喽~&lt;/p&gt;   &lt;h3&gt;    &lt;a href="https://link.zhihu.com/?target=https%3A//lightmv.cn/%3Fapptype%3Dzhihu1" rel="nofollow noreferrer" target="_blank"&gt;2、右糖在线视频制作&lt;/a&gt; &lt;/h3&gt;   &lt;p&gt;右糖制作电子相册教程：&lt;/p&gt;   &lt;a href="https://link.zhihu.com/?target=https%3A//www.bilibili.com/video/BV18E411q73q" target="_blank"&gt;【右糖教程】3分钟带你快速上手右糖视频制作_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com    &lt;img alt="&amp;#22270;&amp;#26631;" src="https://pic2.zhimg.com/v2-c7e1fe46a2bd1cb80fa9e2d45632de35_180x120.jpg"&gt;&lt;/img&gt;&lt;/a&gt;   &lt;p&gt;右糖是一款拥有丰富模板的在线视频制作工具，模板场景涵盖：【婚礼爱情】、【生日祝福】、【成长记录】、【团建活动】、【商业宣传】、【教育党政】，外加如：哈利波特预言家日报动态报纸等【创意模板】效果；&lt;/p&gt;   &lt;img src="https://pic4.zhimg.com/80/v2-55ca3f30e35d49aa7d78275a313ce3d7_1440w.jpg?source=1940ef5c" width="1225"&gt;&lt;/img&gt;   &lt;p&gt;使用右糖，你可以轻松把照片制作为充满设计感的影集视频，支持调整视频比例（1:1、16:9、9:16）、添加字幕（更换字体、颜色等）、替换背景音乐、添加视频LOGO等功能。&lt;/p&gt;   &lt;img src="https://pic1.zhimg.com/80/v2-dcfc198f4dfb4bf8ec05f2d64958c894_1440w.jpg?source=1940ef5c" width="1408"&gt;&lt;/img&gt;   &lt;h2&gt;Windows客户端软件（3-4）&lt;/h2&gt;   &lt;h3&gt;    &lt;a href="https://link.zhihu.com/?target=https%3A//beecut.cn/" rel="nofollow noreferrer" target="_blank"&gt;3、蜜蜂剪辑&lt;/a&gt; &lt;/h3&gt;   &lt;p&gt;蜜蜂剪辑制作电子相册教程：&lt;/p&gt;   &lt;a href="https://link.zhihu.com/?target=https%3A//www.bilibili.com/video/BV1i441157Sx" target="_blank"&gt;【蜜蜂剪辑教程】如何制作相册MV_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com    &lt;img alt="&amp;#22270;&amp;#26631;" src="https://pic2.zhimg.com/v2-04b762ab7457d5131ffc71217efcd265_180x120.jpg"&gt;&lt;/img&gt;&lt;/a&gt;   &lt;p&gt;蜜蜂剪辑是一款由傲软软件公司开发的专业视频剪辑软件，Windows、Mac都可使用。软件体积小，性能稳定，对电脑配置没有要求，素材多、易操作等主要特性深受视频up主们的喜爱，只需简单的几步操作就可以剪出创意满分的短片。&lt;/p&gt;   &lt;img src="https://pic4.zhimg.com/80/v2-bab8cce144c2fba7650f4343a17d7633_1440w.jpg?source=1940ef5c" width="1904"&gt;&lt;/img&gt;   &lt;h3&gt;    &lt;a href="https://link.zhihu.com/?target=https%3A//www.adobe.com/cn/products/premiere.html" rel="nofollow noreferrer" target="_blank"&gt;4、Adobe Premiere&lt;/a&gt; &lt;/h3&gt;   &lt;p&gt;Pr 是一款常用的视频编辑软件，兼容性与功能丰富度兼顾，对电脑配置有一定要求，下载使用前需要了解自己的电脑配置是否达标。&lt;/p&gt;   &lt;img src="https://pic1.zhimg.com/80/v2-1ebad61154fa138836b07f118104dd72_1440w.jpg?source=1940ef5c" width="1381"&gt;&lt;/img&gt;   &lt;p&gt;    &lt;br /&gt;    &lt;strong&gt;配置要求：&lt;/strong&gt;    &lt;br /&gt;    &lt;strong&gt;Windows&lt;/strong&gt;&lt;/p&gt;   &lt;ul&gt;    &lt;li&gt;Intel® Core™2 双核以上或      &lt;a href="https://link.zhihu.com/?target=https%3A//baike.baidu.com/item/AMD/5905" rel="nofollow noreferrer" target="_blank"&gt;AMD&lt;/a&gt;     &lt;a href="https://link.zhihu.com/?target=https%3A//baike.baidu.com/item/%25E7%25BE%25BF%25E9%25BE%2599/9494188" rel="nofollow noreferrer" target="_blank"&gt;羿龙&lt;/a&gt;®II以上处理器&lt;/li&gt;    &lt;li&gt;Microsoft ® Windows®7 ServicePack 1或     &lt;a href="https://link.zhihu.com/?target=https%3A//baike.baidu.com/item/Windows%252010/6877791" rel="nofollow noreferrer" target="_blank"&gt;Windows 10&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;4GB的 RAM（建议使用8GB）&lt;/li&gt;    &lt;li&gt;4GB的可用硬盘空间用于安装;（无法安装在可移动闪存存储设备在安装过程中需要额外的可用空间）&lt;/li&gt;    &lt;li&gt;需要额外的磁盘空间预览文件、其他工作档案（建议使用10GB）&lt;/li&gt;    &lt;li&gt;1280x800+像素屏幕&lt;/li&gt;    &lt;li&gt;7200 RPM或更快的硬盘驱动器（多个快速的磁盘驱动器，最好配置RAID 0或SSD固态硬盘，推荐）&lt;/li&gt;    &lt;li&gt;声卡兼容ASIO协议或Microsoft Windows驱动程序模型&lt;/li&gt;    &lt;li&gt;QuickTime的功能所需的QuickTime 7.6.6软件&lt;/li&gt;    &lt;li&gt;可选：Adobe认证的GPU卡的GPU加速性能&lt;/li&gt;    &lt;li&gt;互联网连接，并登记所必需的激活所需的软件，会员验证和访问在线服务。&lt;/li&gt;&lt;/ul&gt;   &lt;a href="https://link.zhihu.com/?target=https%3A//www.bilibili.com/video/BV1rW411M7ib" target="_blank"&gt;【教程】制作简单的电子相册-第②弹-_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com    &lt;img alt="&amp;#22270;&amp;#26631;" src="https://pic3.zhimg.com/v2-b3ac51edb98066876b7ff3c5c83a86fa_180x120.jpg"&gt;&lt;/img&gt;&lt;/a&gt;   &lt;p&gt;    &lt;br /&gt;    &lt;strong&gt;MacOS&lt;/strong&gt;&lt;/p&gt;   &lt;ul&gt;    &lt;li&gt;多核Intel处理器&lt;/li&gt;    &lt;li&gt;macOS10.10及更高版本&lt;/li&gt;    &lt;li&gt;4GB RAM内存（建议使用8GB）&lt;/li&gt;    &lt;li&gt;4GB的可用硬盘空间用于安装;（无法安装在使用区分大小写的文件系统上，或可移动闪存存储设备在安装过程中需要额外的可用空间）&lt;/li&gt;    &lt;li&gt;需要额外的磁盘空间预览文件和其他工作档案（建议使用10GB）&lt;/li&gt;    &lt;li&gt;1280x800+像素屏幕&lt;/li&gt;    &lt;li&gt;7200转硬盘驱动器（多个快速的磁盘驱动器，优选RAID 0配置，推荐）&lt;/li&gt;    &lt;li&gt;     &lt;a href="https://link.zhihu.com/?target=https%3A//baike.baidu.com/item/QuickTime/3561948" rel="nofollow noreferrer" target="_blank"&gt;QuickTime&lt;/a&gt;的功能所需的QuickTime 7.6.6支持组件&lt;/li&gt;    &lt;li&gt;可选：     &lt;a href="https://link.zhihu.com/?target=https%3A//baike.baidu.com/item/Adobe/211696" rel="nofollow noreferrer" target="_blank"&gt;Adobe&lt;/a&gt;认证的GPU卡的GPU加速性能&lt;/li&gt;    &lt;li&gt;互联网连接，并登记所必需的激活所需的软件，会员验证，访问在线服务。&lt;/li&gt;&lt;/ul&gt;   &lt;h2&gt;Mac OS客户端软件（5-6）&lt;/h2&gt;   &lt;h3&gt;    &lt;a href="https://link.zhihu.com/?target=https%3A//www.apple.com/imovie/" rel="nofollow noreferrer" target="_blank"&gt;5、iMovie&lt;/a&gt; &lt;/h3&gt;   &lt;p&gt;iMovie是一款由Mac编写的视频编辑软件，iMovie因为其界面功能的简洁而受到欢迎，大多数的视频编辑工作，只需要简单的点击和拖拽就能完成，同样物色了一个b站视频教程~&lt;/p&gt;   &lt;a href="https://link.zhihu.com/?target=https%3A//www.bilibili.com/video/BV1zx41197jj" target="_blank"&gt;超轻松学剪辑！苹果认证专家带你探索 iMovie 视频剪辑的奥秘！_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com    &lt;img alt="&amp;#22270;&amp;#26631;" src="https://pic3.zhimg.com/v2-1cc177cd490cfb2aba49b705776121e6_180x120.jpg"&gt;&lt;/img&gt;&lt;/a&gt;   &lt;img src="https://pic2.zhimg.com/80/v2-8a2a6b8c822fa3860e98b01260419ac5_1440w.jpg?source=1940ef5c" width="693"&gt;&lt;/img&gt;   &lt;h3&gt;    &lt;a href="https://link.zhihu.com/?target=https%3A//www.apple.com/final-cut-pro/" rel="nofollow noreferrer" target="_blank"&gt;6、Final Cut Pro X（FCPX）&lt;/a&gt; &lt;/h3&gt;   &lt;p&gt;FCPX是一款Mac专用的图像处理软件，利用它，你也可以很轻松地制作出一部精美电子相册。功能强大，最高支持8K清晰度的视频导出。&lt;/p&gt;   &lt;img src="https://pic1.zhimg.com/80/v2-ea99c260245cc19a48b7f0ec13da71b8_1440w.jpg?source=1940ef5c" width="718"&gt;&lt;/img&gt;   &lt;h3&gt;制作电子相册教程：&lt;/h3&gt;   &lt;a href="https://link.zhihu.com/?target=https%3A//www.bilibili.com/video/BV1nE411n7zU" target="_blank"&gt;让你的照片动起来！教你如何用FCPX制作简单的视频相册_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com    &lt;img alt="&amp;#22270;&amp;#26631;" src="https://pic4.zhimg.com/v2-6e100e079319aa7c9729c98ee71a44cf_180x120.jpg"&gt;&lt;/img&gt;&lt;/a&gt;   &lt;p&gt;和2个基本操作上手教程：&lt;/p&gt;   &lt;a href="https://link.zhihu.com/?target=https%3A//www.bilibili.com/video/BV1dt411s7iU" target="_blank"&gt;10分钟上手Final Cut Pro X，零基础新手快速入门，视频剪辑基本操作教学_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com    &lt;img alt="&amp;#22270;&amp;#26631;" src="https://pic2.zhimg.com/v2-6b212a4936212daa364ccadda3a357f5_180x120.jpg"&gt;&lt;/img&gt;&lt;/a&gt;   &lt;a href="https://link.zhihu.com/?target=https%3A//www.bilibili.com/video/BV14x411U7eL" target="_blank"&gt;【Final Cut Pro 教程】全系列视频拍摄、剪辑与后期制作教程丨放牛班乌托邦 出品【Final Cut Pro X 教程】【fcpx教程】​www.bilibili.com    &lt;div&gt;&lt;/div&gt;&lt;/a&gt;   &lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
    &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/61451-%E6%9C%89%E6%B2%A1%E6%9C%89-%E7%94%B5%E5%AD%90-%E7%9B%B8%E5%86%8C</guid>
      <pubDate>Sun, 23 May 2021 08:20:45 CST</pubDate>
    </item>
    <item>
      <title>知名网站热门排序算法分析</title>
      <link>https://itindex.net/detail/61345-%E7%BD%91%E7%AB%99-%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95-%E5%88%86%E6%9E%90</link>
      <description>&lt;p&gt;很多内容网站都会根据用户的交互信息等对内容进行排序。这里整理了一些比较知名的内容网站的排序规则，每个网站都有不同，在此过程中，我们不仅仅要了解其排序规则（公式），更多的期望了解公式背后的逻辑。&lt;/p&gt;
 &lt;h2&gt;Hacker News&lt;/h2&gt;
 &lt;p&gt;  &lt;a href="http://news.ycombinator.com/"&gt;Hacker News&lt;/a&gt; 是一家关于计算机黑客和创业公司的社会化新闻网站，由 Paul Graham 的创业孵化器 Y Combinator 创建。与其它社会化新闻网站不同的是 Hacker News 没有踩或反对一条提交新闻的选项（不过评论还是可以被有足够 Karma 的用户投反对票，或是投支持票）；只可以赞或是完全不投票。简而言之，Hacker News 允许提交任何可以被理解为“任何满足人们求知欲”的新闻。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="315" src="https://www.biaodianfu.com/wp-content/uploads/2021/04/hackernews.png" width="520"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;以上为Hacker News的界面截图，如果你是该产品的负责人，你会如何进行排序？哪些维度可以进行排序？&lt;/p&gt;
 &lt;p&gt;从上面截图中我们考虑的因素主要有：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;点赞数（每个新闻标题前面有一个向上的三角形，如果你觉得这个内容很好，就点击一下，投上一票）&lt;/li&gt;
  &lt;li&gt;距离发布的时间&lt;/li&gt;
  &lt;li&gt;评论量&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;最简单的方式是只考虑点赞数，这样点赞数越多的文章的会排在最前面。但是会导致整个站点信息的新颖度不高。即历史的文章由于展示的时间较长点赞数相对会更高。所以需要将时间因素也考虑在内。由于点赞量与评论量存在一定的相关性，且评论量大也有可能是由于内容有较大争议而非热门导致的，所以我们先将影响因素限制在：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;点赞数：相同发帖时间，投票数越高，分值越高&lt;/li&gt;
  &lt;li&gt;距离发布时间：相同投票数，距离发帖时间越近，分值越高&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;我们将点赞数设为，发帖时间设为t，则排序分值可以是：&lt;/p&gt;
 &lt;p&gt;$$score = \frac{P}{t}$$&lt;/p&gt;
 &lt;p&gt;即分值与点赞数存在正相关，与距离发布时间存在负相关。画出的分值图形如下：&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="256" src="https://www.biaodianfu.com/wp-content/uploads/2021/04/pt.png" width="421"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;而Hacker News真实采用的公式如下：&lt;/p&gt;
 &lt;p&gt;$$score = \frac{P-1}{(t+2)^{1.5}}$$&lt;/p&gt;
 &lt;p&gt;画出的图形如下：&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="236" src="https://www.biaodianfu.com/wp-content/uploads/2021/04/pt-1.png" width="420"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;备注：Hacker News 采用公式$score = \frac{P-1}{(t+2)^{1.5}}$做为排行依据（Hacker News使用Paul Graham开发的Arc语言编写，源码可以从  &lt;a href="http://arclanguage.org/"&gt;arclanguage.org&lt;/a&gt;下载），其中P是投票数量，t是发表以来的时间，小时计。后来AMIX.DK给出公式$score = \frac{P-1}{(t+2)^{G}}$推广了上面的公式，Hacker News的公式变成了一个特例，其在G=1.5时的应用。历史上Hacker News有用G=1.8。&lt;/p&gt;
 &lt;p&gt;接下来我们对公式进行分析：&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;得票数P&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;在其他条件不变的情况下，得票越多，排名越高。从下图可以看到，有三个同时发表的帖子，得票分别为200票、60票和30票（减1后为199、59和29），分别以黄色、紫色和蓝色表示。在任一个时间点上，都是黄色曲线在最上方，蓝色曲线在最下方。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="233" src="https://www.biaodianfu.com/wp-content/uploads/2021/04/pt-2.gif" width="420"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;为什么是P-1?网络上的一种解释是，很多文章作者在提交的时候会给自己投上一票。其实更重要的原因是文章发布初期的投票数对排名影响非常的，仅仅是自己给自己投的一票，也占非常大的作用。&lt;/p&gt;
 &lt;p&gt;假设P不去减去1，一个作者发布完就给自己投票，那么文章的得分为1/(0+2)^1.5=0.3535 。假设另外一篇文章发布了8小时，那么需要多少的投票呢？x/(8+2)^1.5&amp;gt;0.3535，即X&amp;gt;11.17即一天前的帖子要有12票才能超过新提交的文章，这显然不合理。&lt;/p&gt;
 &lt;p&gt;投票数具体应该减去多少，可能需要考虑刷数据的问题，根据网络环境去设置很可能更合理，比如去除同一IP用户的操作等。&lt;/p&gt;
 &lt;p&gt;另外想要调整得票数的影响权重，可以采用的方式是在得票数上买一个指数。例如你不期望“高投票文章”与“低投票文章差距过大，可以在得票数上加一个小于1的指数，比如(P-1)^0.8。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;距离发帖时间t&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;在其他条件不变的情况下，越是新发表的帖子，排名越高。或者说，一个帖子的排名，会随着时间不断下降。从上图可知，经过24小时之后，所有帖子的得分基本上都小于1，这意味着它们都将跌到排行榜的末尾，保证了排名前列的都将是较新的内容。&lt;/p&gt;
 &lt;p&gt;公式中为什么要使用t+2？我们先来看下图：&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="377" src="https://www.biaodianfu.com/wp-content/uploads/2021/04/pt-3.png" width="720"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;在时间上+2，核心是为了分值曲线向左移，让最开始几个小时过大的下降趋势被舍弃。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;重力因子G&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;它的数值大小决定了排名随时间下降的速度。从下图可以看到，三根曲线的其他参数都一样，G的值分别为1.5、1.8和2.0。G值越大，曲线越陡峭，排名下降得越快。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="233" src="https://www.biaodianfu.com/wp-content/uploads/2021/04/pt-4.gif" width="420"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;毫无疑问，G这个数字既非时间，也非评价，其实它的主要目的是控制更新频率。G的值越大，score的衰减速度越快，排行的更新越频繁。所以，确定G值需要观察系统内部投票数在时间上的分布，然后根据需要的更新频次确定G的合理取值。越火爆、用户互动越频繁的社区，为了保证排行的稳定性（不要频繁大量的刷新），G值趋向于比较低。这就是为什么Hacker News从一开始的1.8修改成1.5，过段时间可能就变成1.2了。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;应用思考&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;电商网站的热门排序能否使用Hack News的排序规则？答案是不太适合，主要原因的Hacker News是类似新闻类的网站，用户对于信息的更新频率要求比较高。而电商率的网站更多的看中近期或一段时间的热度。两者还是有些差别。&lt;/p&gt;
 &lt;p&gt;在电商网站上我先前尝试过的公式为：&lt;/p&gt;
 &lt;p&gt;$$score = \sum (orderCount * \alpha ^t)$$&lt;/p&gt;
 &lt;p&gt;这里主要实现逻辑是取一定范围内的订单，比如30天。计算商品每天的销售量。再在销售量根据距离的天数t进行衰减。其中$\alpha $为0-1之间的衰减系数。&lt;/p&gt;
 &lt;p&gt;当α=1时，即为最为简单的仅统计浏览量或者订单量的数据，整个公式中最不好确定的是α的取值。我通常使用假设的方式，最后通过不同假设计算出来的结果进行人工的选择。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;1周后的权重降为5，则$\alpha$ ^7=0.5，$\alpha$≈0.905724&lt;/li&gt;
  &lt;li&gt;2周后的权重降为5，则$\alpha$ ^14=0.5，$\alpha$≈0.951695&lt;/li&gt;
  &lt;li&gt;3周后的权重降为5，则$\alpha$ ^21=0.5，$\alpha$≈0.967532&lt;/li&gt;
  &lt;li&gt;4周后的权重降为5，则$\alpha$ ^28=0.5，$\alpha$≈0.975549&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;相关代码：&lt;/p&gt;
 &lt;pre&gt;import datetime
import pandas as pd
ALPHA = 0.97
 
def get_score(order_count, days):
    return order_count * pow(ALPHA, days)
 
df = pd.read_csv(&amp;quot;test.xlsx&amp;quot;)
df.columns = [&amp;apos;id&amp;apos;, &amp;apos;item_id&amp;apos;, &amp;apos;create_date&amp;apos;]
df[&amp;apos;days&amp;apos;] = (datetime.datetime.now() - df.create_date).astype(&amp;apos;timedelta64[D]&amp;apos;)
df_s = df.groupby([&amp;apos;item_id&amp;apos;, &amp;apos;days&amp;apos;]).size().reset_index(name=&amp;apos;order_count&amp;apos;)
df_s[&amp;quot;score&amp;quot;] = get_score(df_s.order_count, df_s.days)
df_m = df_s.groupby(&amp;quot;item_id&amp;quot;).score.sum().reset_index(name=&amp;apos;score&amp;apos;)
df_m.to_cvs(&amp;quot;result.csv&amp;quot;)
&lt;/pre&gt;
 &lt;p&gt;一些说明：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;通常在计算时可以取30天的数据，原因是某个&amp;lt;1数字的30次方已经非常小了，计算的意义不大&lt;/li&gt;
  &lt;li&gt;以上的计算针对的是有热度的内容或产品，如果部分内容不随时间衰减，使用上诉公式不影响&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;另外以上逻辑也可在SQL中直接完成：&lt;/p&gt;
 &lt;pre&gt;SELECT itemid
 , SUM(order_count * pow(0.9, recency)) AS score
FROM (
 SELECT mo.itemid, datediff(current_date(), mo.createdate) AS recency
 , COUNT(DISTINCT mo.memberid) AS order_count
 FROM db.memberorder mo
 GROUP BY mo.itemid, datediff(current_date(), mo.createdate)
) t
GROUP BY itemid
ORDER BY score DESC
LIMIT 100
&lt;/pre&gt;
 &lt;h2&gt;Reddit文章&lt;/h2&gt;
 &lt;p&gt;  &lt;a href="http://www.reddit.com/"&gt;Reddit&lt;/a&gt;与Hacker News类似，也是一个社会化新闻网站，Reddit对文章和评论使用了不同的排名算法，这里介绍的排序规则主要针对的是文章排序。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="651" src="https://www.biaodianfu.com/wp-content/uploads/2021/04/reddit.png" width="640"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;Reddit与Hacker News有很大的不同点就是，Hacker News文章标题前面只有一个向上的小箭头，即只能投赞成票，而Reddit的每个文章标题前会有两个箭头，即一个向上，一个像下。分别代表“赞成”与“反对”。 Reddit已经把他们的所有  &lt;a href="https://github.com/reddit/reddit"&gt;源代码&lt;/a&gt;进行了公开，具体涉及到排序部分的代码如下：  &lt;a href="https://github.com/reddit/reddit/blob/master/r2/r2/lib/db/_sorts.pyx"&gt;https://github.com/reddit/reddit/blob/master/r2/r2/lib/db/_sorts.pyx&lt;/a&gt;。由于此部分代码是使用Python的C语言扩展来写，下面是用Python重写的代码：&lt;/p&gt;
 &lt;pre&gt;from datetime import datetime
from math import log

epoch = datetime(1970, 1, 1)


def epoch_seconds(date):
    &amp;quot;&amp;quot;&amp;quot; Returns the number of seconds from the epoch to date. &amp;quot;&amp;quot;&amp;quot;
    td = date - epoch
    return td.days * 86400 + td.seconds + (float(td.microseconds) / 1000000)


def up_down(ups, downs):
    return ups - downs


def hot(ups, downs, date):
    &amp;quot;&amp;quot;&amp;quot; The hot formula. Should match the equivalent function in postgres. &amp;quot;&amp;quot;&amp;quot;
    z = up_down(ups, downs)
    order = log(max(abs(z), 1), 10)
    sign = 1 if z &amp;gt; 0 else -1 if z &amp;lt; 0 else 0
    seconds = epoch_seconds(date) - 1134028003
    return round(order + sign * seconds / 45000, 7)
&lt;/pre&gt;
 &lt;p&gt;从上面的代码中可以看到整个逻辑并不复杂。&lt;/p&gt;
 &lt;p&gt;分值计算公式：&lt;/p&gt;
 &lt;p&gt;$$score = \log_{10}z+\frac{yt_s}{45000}$$&lt;/p&gt;
 &lt;p&gt;其中：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;z：获得的投票数的绝对值（赞成-反对），当=0时，z=1&lt;/li&gt;
  &lt;li&gt;y：投票方向，投票数＞0时，y=1；y＝0时，y=0；＜0时，y=-1&lt;/li&gt;
  &lt;li&gt;$t_s$：发布时间距离2005年12 月 8 日07:46:43的秒数&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;从上面的代码级公式中我们可以了解到Reddit的排名算法主要与以下内容有关：&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;文章的发表时间t&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;t = 发表时间 – 2005 年 12 月 8 日7:46:43&lt;/p&gt;
 &lt;p&gt;在Hacker News的算法中，用来标注文章新旧程度的单位为小时，而Reddit的单位为秒，其使用Unix时间戳（从1970年1月1日到当前时间的秒数）进行的计算，代码中的1134028003代表的日期为2005 年 12 月 8 日7:46:43。这个应该是Reddit这个网站的上线时间。通过上面的公式可以看到一旦帖子发表，t就是固定值，不会随时间改变，而且帖子越新，t值越大。&lt;/p&gt;
 &lt;p&gt;发表时间和话题排名的影响可以被概括如下:&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;发表时间对排名有很大影响，该算法使得新的话题比旧的话题排名靠前&lt;/li&gt;
  &lt;li&gt;话题的得分不会因为时间的流失而减少，但是新的话题会比旧的话题得分高。这与 Hacker New 的算法不同 （随着时间的发展降低话题的得分）&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;下图展示了话题得分在好评和差评的数量不变时，随着时间而变化的情况：&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="150" src="https://www.biaodianfu.com/wp-content/uploads/2021/04/rt-1.png" width="500"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;赞成票与反对票的差x&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;x = 赞成票-反对票&lt;/p&gt;
 &lt;p&gt;真是由于Reddit提供了投反对票的功能，所以可以使一些具有争议的话题会排的较后，下图展示了在好评和差评不变时，随着时间而变化的情况：&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="150" src="https://www.biaodianfu.com/wp-content/uploads/2021/04/rt-2.png" width="500"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;公式分解分析&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;上述公式可以分成两个部分来讨论：&lt;/p&gt;
 &lt;p&gt;$$\log_{10}z$$&lt;/p&gt;
 &lt;p&gt;这个部分表示，赞成票超过反对票的数量越多，得分越高。 需要注意的是，这里用的是以 10 为底的对数，意味着z=10可以得到 1 分，z=100可以得到 2 分。也就是说，前 10 个投票人与后 90 个投票人（乃至再后面 900 个投票人）的权重是一样的，即如果一个帖子特别受到欢迎，那么越到后面投赞成票，对得分越不会产生影响。而当反对票超过或等于赞成票，z=1，因此这个部分等于0，也就是不产生得分。&lt;/p&gt;
 &lt;p&gt;Reddit 的热排序算法使用了对数函数来衡量前面的投票与其他投票的差距使其前十个好评和之后的100个，1000个投票有相同的权重。 参见下面的图：&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="150" src="https://www.biaodianfu.com/wp-content/uploads/2021/04/rt-3.png" width="500"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;如果不采用对数，而使用线性函数的效果如下：&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="150" src="https://www.biaodianfu.com/wp-content/uploads/2021/04/rt-4.png" width="500"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;Reddit敢于如此消弱投票的作用，其实与其庞大的流量和用户参与度相关。如果没有以上因素算法很难实现很好的推荐。&lt;/p&gt;
 &lt;p&gt;另外对数取不同的额底对于消弱的效果也是不同的。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="209" src="https://www.biaodianfu.com/wp-content/uploads/2021/04/rt-5.png" width="420"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;$$\frac{yt_s}{45000}$$&lt;/p&gt;
 &lt;p&gt;这个部分表示，t越大，得分越高，即新帖子的得分会高于老帖子。它起到自动将老帖子的排名往下拉的作用。 分母的 45000 秒，等于 12.5 个小时，也就是说，后一天的帖子会比前一天的帖子多得 2 分。结合前一部分，可以得到结论，如果前一天的帖子在第二天还想保持原先的排名，在这一天里面，它得到的净赞成票必须增加100 倍。&lt;/p&gt;
 &lt;p&gt;y 的作用是用来产生正分和负分。当赞成票超过反对票时，得分为正；当赞成票少于反对票时，得分为负；当两者相等，得分为0。这就保证了得到大量净赞成票的文章，会排在前列；得到大量净反对票的文章，会排在最后。投票对于总分的贡献不大，但是当投票的意见倾向发生变化时（由正面评价转向负面评价），投票对于总分的作用却是决定性（Y的取值）。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;总结&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;关于Reddit的排名，基本上是由发表时间决定的，只有相同时段的文章才有可比性。晚半天，投票就要翻10倍，只能同时段的文章相比。只有超级受欢迎的文章才会排在最前面，有争议或者一般性的文章很难靠前。基于上述也就决定了 Reddit是一个符合大众胃口的网站，并不是一个很激进可以展示少数派想法的地方。&lt;/p&gt;
 &lt;p&gt;再来看下Reddit与Hacker News的区别，到底哪一个的算法更好一些呢？其实算法并没有优劣之分，两种方法更有千秋，重要的是你打算用在什么地方。Reddit流量大，所以可以减少投票的权重，而也因为流量大，使得每篇文章在没有收到新的投票的时候无需重新计算得分，也可大大的减少服务器的运算成本。&lt;/p&gt;
 &lt;h2&gt;Reddit评论&lt;/h2&gt;
 &lt;p&gt;目前很多网站采用的评论排名主要有两种，即绝对好评数（好评减去差评）和好评率（好评/总评）。这两种评价方式 都存在很明显的缺陷，以下为事例：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;A:好评550;　差评450&lt;/li&gt;
  &lt;li&gt;B:好评60；差评40&lt;/li&gt;
  &lt;li&gt;C:好评1；差评0&lt;/li&gt;
  &lt;li&gt;D:好评9，差评1&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;首先是A与B比较，A的绝对好评数是550-450=100，B的绝对好评数是60-40=20，从绝对好评数比较，A的排名应该在B的前面；A的好评率为550/（450+550）=55%，B的好评率为60/（40+60）=60%，从好评率来说B的排名要比A的排名好。&lt;/p&gt;
 &lt;p&gt;再来比较下C与D，从好评率出发，C的好评率为100%，而D的好评率为9/（1+9）=90%，单纯从数据上看D的排名要比C的排名落后。对于评论排名上述的方法是否是我们所需要的呢？这样的计算才能更好的体现评论价值？正确的排名算法应该是怎样的？&lt;/p&gt;
 &lt;p&gt;我们先做如下设定：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;每个用户的投票都是独立事件。&lt;/li&gt;
  &lt;li&gt;用户只有两个选择，要么投好评，要么投差评。&lt;/li&gt;
  &lt;li&gt;如果投票总人数为n，其中好评为k，那么好评率p就等于k/n。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;如果你熟悉统计学，可能已经看出来了，p服从一种统计分布，叫做  &lt;a href="http://zh.wikipedia.org/wiki/%E4%BA%8C%E9%A0%85%E5%88%86%E4%BD%88"&gt;“两项分布”&lt;/a&gt;（binomial distribution）。&lt;/p&gt;
 &lt;p&gt;p越大，就代表这个项目的好评比例越高，越应该排在前面。但是，p的可信性，取决于有多少人投票，如果样本太小，p就不可信。由于p服从”两项分布”，因此我们可以计算出p的置信区间。所谓  &lt;a href="http://zh.wikipedia.org/wiki/%E7%BD%AE%E4%BF%A1%E5%8C%BA%E9%97%B4"&gt;“置信区间”&lt;/a&gt;，就是说，以某个概率而言，p会落在的那个区间。比如，某个产品的好评率是 80%，但是这个值不一定可信。根据统计学，我们只能说，有 95% 的把握可以断定，好评率在 75% 到 85% 之间，即置信区间是[75%， 85%]。&lt;/p&gt;
 &lt;p&gt;通过上面的分析，我们就可以推断出，如果要给一个评论进行排名，就需要考虑一下内容：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;计算每个评论的“好评率”&lt;/li&gt;
  &lt;li&gt;计算每个“好评率”的置信区间（以 95% 的概率）。&lt;/li&gt;
  &lt;li&gt;根据置信区间的下限值，进行排名。这个值越大，排名就越高。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;这样做的原理是，置信区间的宽窄与样本的数量有关。比如，&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;A有 8 张赞成票，2张反对票&lt;/li&gt;
  &lt;li&gt;B有 80 张赞成票，20张反对&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;这两个项目的赞成票比例都是 80%&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;A的置信区间（假定[70%， 90%]）&lt;/li&gt;
  &lt;li&gt;B的置信区间（假定[75%， 85%]）&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;B的置信区间的下限值（75%）会比A（70%）大，所以B应该排在A前面。置信区间的实质，就是进行可信度的修正，弥补样本量过小的影响。如果样本多，就说明比较可信，不需要很大的修正，所以置信区间会比较窄，下限值会比较大；如果样本少，就说明不一定可信，必须进行较大的修正，所以置信区间会比较宽，下限值会比较小。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;正态区间&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;二项分布的置信区间有多种计算公式，最常见的是“正态区间”（Normal approximation interval），教科书里几乎都是这种方法。但是，它只适用于样本较多的情况（np &amp;gt; 5 且 n (1 – p) &amp;gt; 5），对于小样本，它的准确性很差。&lt;/p&gt;
 &lt;p&gt;要了解正态区间前需要先掌握一些正态分布的知识。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="504" src="https://www.biaodianfu.com/wp-content/uploads/2021/04/normal-1.png" width="720"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;上图最右侧的0%、90%、95%为置信水平。即数据录入[a,b]区间内的概率。与此对应的1.28$\sigma$、1.64$\sigma$、1.96$\sigma$，其中\sigma为标准差，1.28、1.64、1.96为z-score（标准分位）。在正态分布中，不同的置信水平对应的z值是固定的，如下为常见的90%、95%和99%对应的z值。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="414" src="https://www.biaodianfu.com/wp-content/uploads/2021/04/normal-2.jpg" width="500"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;你可以通过搜索z-score table搜索到详细的Z值对应置信水平的表格，如下图：&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="704" src="https://www.biaodianfu.com/wp-content/uploads/2021/04/z-score-table.png" width="720"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;正态区间[a,b]的计算方法：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;a = 总体平均值$\mu$ – 标准分位z * 标准误差SE&lt;/li&gt;
  &lt;li&gt;b = 总体平均值$\mu$ + 标准分位z * 标准误差SE&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;其中：&lt;/p&gt;
 &lt;p&gt;$$SE=\frac{S}{\sqrt{n}}$$&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;SE：标准误差&lt;/li&gt;
  &lt;li&gt;s：样本标准差&lt;/li&gt;
  &lt;li&gt;n：样本大小&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;  &lt;strong&gt;威尔逊区间&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;1927年，美国数学家 Edwin Bidwell Wilson 提出了一个修正公式，被称为  &lt;a href="http://en.wikipedia.org/wiki/Binomial_proportion_confidence_interval#Wilson_score_interval"&gt;威尔逊区间&lt;/a&gt;，很好地解决了小样本的准确性问题。Reddit 目前使用的是评论算法就是基于威尔逊得分区间 (Wilson score interval)。具体代码片段可从开放的  &lt;a href="https://github.com/reddit/reddit/blob/master/r2/r2/lib/db/_sorts.pyx"&gt;源代码&lt;/a&gt;中找到，将其转化成Python代码后：&lt;/p&gt;
 &lt;pre&gt;from math import sqrt
 
def _confidence(ups, downs):
    n = ups + downs
 
    if n == 0:
        return 0
 
    z = 1.0 #1.0 = 85%, 1.6 = 95%
    phat = float(ups) / n
    return (phat+z*z/(2*n)-z*sqrt((phat*(1-phat)+z*z/(4*n))/n))/(1+z*z/n)

def confidence(ups, downs):
    if ups + downs == 0:
        return 0
    else:
        return _confidence(ups, downs)
&lt;/pre&gt;
 &lt;p&gt;威尔逊得分区间具体公式如下：&lt;/p&gt;
 &lt;p&gt;$$\frac{\hat{p}+\frac{1}{2n}z_{1-\frac{\alpha }{2}}^2 \pm z_{1-\frac{\alpha }{2}}\sqrt{\frac{\hat{p}(1-\hat{p})}{n}+\frac{z_{1-\frac{\alpha }{2}}^2}{4n^2}}}{1+\frac{1}{n}z_{1-\frac{\alpha }{2}}^2}$$&lt;/p&gt;
 &lt;p&gt;其中：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;p 是好评率&lt;/li&gt;
  &lt;li&gt;n 是总投票数&lt;/li&gt;
  &lt;li&gt;$ z_{1-\frac{\alpha }{2}}$表示对应某个置信水平的z统计量，这是一个常数，可以通过查表得到。一般情况下，在 95% 的置信水平下，z统计量的值为96。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;可以公式看到，当n的值足够大时，这个下限值会趋向$\hat{p}$。如果n非常小（投票人很少），这个下限值会大大小于$\hat{p}$。实际上，起到了降低“好评率”的作用，使得该评论的得分变小、排名下降。&lt;/p&gt;
 &lt;p&gt;威尔逊得分区并不关心一个评论的投票数，而关心好评数和投票总数或采样大小的相对关系！&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="150" src="https://www.biaodianfu.com/wp-content/uploads/2021/04/rt-6.png" width="500"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;上图是根据威尔逊得分区计算出来的值：一个评论有1个好评，没有差评，它的支持率是100%，但是由于数据量过小，系统还是会把它放到底部。 但如果，它有10个好评，1个差评，系统可能会有足够的信息把他放到一个有着40个好评，20个差评的评论之前。因为我们基本确认当它有了40个好评的时候，它收到的差评会少于20个。最好的一点是，一旦这个算法出错了（算法有15%的失效概率），它会很快拿到更多的数据，因为它被排到了前面。&lt;/p&gt;
 &lt;p&gt;威尔逊得分区间不仅仅用于评论排名，它还适用于以下情景：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;垃圾邮件检测：看到这个内容并将它标记成垃圾邮件的百分比有多少？&lt;/li&gt;
  &lt;li&gt;创建精华列表：看到这个内容并将它加星标件的百分比有多少？&lt;/li&gt;
  &lt;li&gt;创建最受欢应列表：看到这个内容并将它转发给朋友的百分比有多少？&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;说了那么多，再来看看威尔逊得分区间的缺点，从上面的分析中也很容易发现问题，即排行榜前列总是那些票数最多的项目，新项目或者冷门的项目，很难有出头机会。&lt;/p&gt;
 &lt;p&gt;另外被成为当代故事会的知乎回答的答复貌似也是采用的威尔逊得分。&lt;/p&gt;
 &lt;h2&gt;IMDB&lt;/h2&gt;
 &lt;p&gt;  &lt;a href="http://www.imdb.com/"&gt;IMDB.COM&lt;/a&gt;是目前互联网上最为权威、系统、全面的电影资料网站，里面包括了几乎所有的电影，以及1982 年以后的电视剧集。 它所特有的电影评分系统深受影迷的欢迎，注册的用户可以给任何一部影片打分并加以评述，而网站又会根据影片所得平均分、选票的数目等计算得出影片的加权平均分并以此进行TOP250（最佳250部影片）和Bottom100（最差100部影片）的排行。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="509" src="https://www.biaodianfu.com/wp-content/uploads/2021/04/imdb.png" width="720"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;如果是你，你会如何进行排序？哪些维度会被你考虑在内？&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;点评数&lt;/li&gt;
  &lt;li&gt;点评分&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;以上两个因素都是正相关，如何确定哪个权重更高？比如：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;电影A，十个人看过，全部评分均为10分&lt;/li&gt;
  &lt;li&gt;电影B，十万个人看过，评分平均值为8分&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;如何计算才能确定哪部电影更好看？有的人可能认为是A，有的人可能认为B，作为平台如何确定哪个更好？&lt;/p&gt;
 &lt;p&gt;IMDB排名算法采用的是贝叶斯定理确定的其分值。在了解贝叶斯定理前，我们想要来理清一些概念。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;什么是概率？&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;抛一枚硬币正面向上的概率是多少？&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;频率学派&lt;/strong&gt;：事件A在独立重复试验中发生的频率趋于极限p，那么这个极限就是该事件的概率。理论基础：事件本身具有某种客观的随机性。&lt;/p&gt;
 &lt;p&gt;不能重复试验的场景下的概率又是什么？&lt;/p&gt;
 &lt;p&gt;比如：苏州明天下午的概率是？&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;贝叶斯学派&lt;/strong&gt;：把概率解释为对不确定的主管置信度，描述观察者知识状态在新的观测发生后如何更新。理论基础：同一件事情对于知情者而言就是「确定事件」，对于不知情者而言就是「随机事件」，随机性并不源于事件本身是否发生，而只是描述观察者对该事件的知识状态。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;平均数定律&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;在赌场里或看到有趣的人类行为。当投骰子的人连续赢了几把的时候，有些赌徒就会认为他“手很顺”，打赌他还会继续赢。其他人说，根据“平均数定律”他接下来要输了，这样输赢才能平衡。从你的角度你认为他会赢还是会输。&lt;/p&gt;
 &lt;p&gt;在解答上述问题前，我们先来看一个数学题，抛硬币，连续三次向上，下一次抛硬币还是正面概率是多少？&lt;/p&gt;
 &lt;p&gt;概率学派：只要我们认可硬币是均匀的（正负概率各半），且为独立同分布，则结论仍然是50%。&lt;/p&gt;
 &lt;p&gt;贝叶斯学派：问题转换，你拿一个硬币，扔一百次，每当连扔出三个正面时你就把下一次投掷的结果记下来，最后你的结果里正反面各占多少？下一次投掷是正面的概率对不同的投掷次数 n、连续出现正面的次数 k 和单次投掷出现正面的概率 p 作图。“扔一百次，观察连扔出三个正面后下一次的结果” 对应着 n=100，k=3，p=0.5，所以下一次是正面的概率约为 0.46。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="559" src="https://www.biaodianfu.com/wp-content/uploads/2021/04/ep.png" width="720"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;贝叶斯定理&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;贝叶斯定理是关于随机事件A和B的条件概率的一则定理。&lt;/p&gt;
 &lt;p&gt;$$P(A|B) = \frac{P(A)P(B|A)}{P(B)}$$&lt;/p&gt;
 &lt;p&gt;其中A以及B为随机事件，且P(B)不为零。P(A|B)是指在事件B发生的情况下事件A发生的概率。基于上式可推倒出：&lt;/p&gt;
 &lt;p&gt;$$P(B)=P(A,B)+P(A^C,B)=P(B|A)P(A)+P(B|A^C)P(A^C)$$&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;IMDB排名公式&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;$$WR=\frac{v}{v+m}R+\frac{m}{v+m}C$$&lt;/p&gt;
 &lt;p&gt;其中：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;WR， 加权得分&lt;/li&gt;
  &lt;li&gt;v，该电影的投票人数&lt;/li&gt;
  &lt;li&gt;m，排名前 250 名的电影的最低投票数（人为设定的，目前好像是25000）&lt;/li&gt;
  &lt;li&gt;R，该电影的用户投票的平均得分&lt;/li&gt;
  &lt;li&gt;C，所有电影的平均得分（现在为9）&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;针对该公式的解读：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;IMDB为每部电影增加了25000张选票，并且这些选票的评分都为9。&lt;/li&gt;
  &lt;li&gt;假设所有电影都至少有25000张选票，那么就都具备了进入前250名的评选条件&lt;/li&gt;
  &lt;li&gt;假设这25000张选票的评分是所有电影的平均得分（即假设这部电影具有平均水准）&lt;/li&gt;
  &lt;li&gt;用现有的观众投票进行修正&lt;/li&gt;
  &lt;li&gt;长期来看，v/(v+m)这部分的权重将越来越大，得分将慢慢接近真实情况。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;这样做拉近了不同电影之间投票人数的差异，使得投票人数较少的电影也有可能排名前列。值得注意的是，虽然很多影片在资料系统中得分很高，但由于未能达到TOP所要求的最低投票数而无法参加排行。&lt;/p&gt;
 &lt;p&gt;IMDB电影排名算法的缺陷：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;新上映的电影短时间内评分上不去（点评量达不到要求）&lt;/li&gt;
  &lt;li&gt;能进入TOP 250的肯定是好电影，不是所有的好电影都能进入TOP 250&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;  &lt;strong&gt;贝叶斯平均&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;把这个公式写成更一般的形式：&lt;/p&gt;
 &lt;p&gt;$$\bar{x}=\frac{C\times m+\sum_{i=1}^{n}x_i}{n+C}$$&lt;/p&gt;
 &lt;p&gt;其中：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;C，投票人数扩展的规模，是一个自行设定的常数，与整个网站的总体用户人数有关，可以等于每个项目的平均投票数。&lt;/li&gt;
  &lt;li&gt;n，该项目的现有投票人数。&lt;/li&gt;
  &lt;li&gt;x，该项目的每张选票的值。&lt;/li&gt;
  &lt;li&gt;m，总体平均分，即整个网站所有选票的算术平均值。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;这种算法被称为“贝叶斯平均”（Bayesian average）。因为某种程度上，它借鉴了“贝叶斯推断”（Bayesian inference）的思想：既然不知道投票结果，那就先估计一个值，然后不断用新的信息修正，使得它越来越接近正确的值。&lt;/p&gt;
 &lt;p&gt;在这个公式中，m（总体平均分）是“先验概率”，每一次新的投票都是一个调整因子，使总体平均分不断向该项目的真实投票结果靠近。投票人数越多，该项目的”贝叶斯平均”就越接近算术平均，对排名的影响就越小。因此，这种方法可以给一些投票人数较少的项目，以相对公平的排名。&lt;/p&gt;
 &lt;p&gt;“贝叶斯平均”也有缺点，主要问题是它假设用户的投票是正态分布。比如，电影A有 10 个观众评分，5个为五星，5个为一星；电影B也有 10 个观众评分，都给了三星。这两部电影的平均得分（无论是算术平均，还是贝叶斯平均）都是三星，但是电影A可能比电影B更值得看。&lt;/p&gt;
 &lt;p&gt;解决这个问题的思路是，假定每个用户的投票都是独立事件，每次投票只有n个选项可以选择，那么这就服从“多项分布”（Multinomial distribution），就可以结合贝叶斯定理，计算该分布的期望值。由于这涉及复杂的统计学知识，这里就不深入了。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;问题：豆瓣的TOP 250排序？&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="275" src="https://www.biaodianfu.com/wp-content/uploads/2021/04/douban.jpg" width="720"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h2&gt;StackOverflow&lt;/h2&gt;
 &lt;p&gt;Stack Overflow是一个专门针对程序员的问答网站，它能解决代码开发中遇到的很多问题。StackOverflow的排序共分为两类，1个是问题排序，1个是答案排序。这里主要介绍的是关于热门问题的排序。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="574" src="https://www.biaodianfu.com/wp-content/uploads/2021/04/StackOverflow.png" width="720"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;在分析问题前可以先考虑下，如果是你来做这个排名算法需要考虑哪些因素？&lt;/p&gt;
 &lt;p&gt;StackOverflow在开始设计热门排序规则时考虑的因素：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;问题的投票数，StackOverflow允许用户投反对票，所以这里可以使用绝对投票数，即正面票-负面票数量。绝对数越高问题越热门。&lt;/li&gt;
  &lt;li&gt;答案的投票数，即是否存在一个被大量认可的答案。这里存在两种情况，被提问者认可或被其他访问者投票。多少的投票量可以认为是问题答案被认可也是需要考虑的问题。&lt;/li&gt;
  &lt;li&gt;问题的浏览量，或是有效浏览量，有效浏览量可以建立一个停留时间的阀值去衡量。浏览的越多则越热门。&lt;/li&gt;
  &lt;li&gt;问题的答案数，理论上说答案越多则问题的越热门，但这也并不绝对，有些好的问答可能只有一个好的答案。&lt;/li&gt;
  &lt;li&gt;问题的提问时间和问题的最近回答时间，问题的受欢迎程度应该是随时间变长而变得不热门。&lt;/li&gt;
  &lt;li&gt;提问者的声望和回答者的声望，声望越高的问题肯定质量越到，越值得去推荐。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;在2008年8月23日的时候，StackOverflow的创始人Jeff Atwood曾经公布了一个热门问题的排名算法（  &lt;a href="http://meta.stackoverflow.com/questions/11602/what-formula-should-be-used-to-determine-hot-questions"&gt;链接&lt;/a&gt;）：具体为：&lt;/p&gt;
 &lt;p&gt;$$\frac{(\log_{10}Qviews)\times 4+\frac{Qanswers\times Qscore}{5}+sum(Ascores)}{((Qage+1)-(\frac{Qage-Qupdated}{2}))^{1.5}} = \frac{(\log_{10}Qviews)\times 4+\frac{Qanswers\times Qscore}{5}+sum(Ascores)}{(1+\frac{Qage}{2}+\frac{Qupdated}{2})^{1.5}}$$&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;Qviews（问题的浏览次数） &lt;/strong&gt;log(Qviews)*4&lt;/p&gt;
 &lt;p&gt;某个问题的浏览次数越多，就代表越受关注，得分也就越高。这里使用了以 10为底的对数，用意是当访问量越来越大，它对得分的影响将不断变小。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;Qscore（问题得分）和 Qanswers（回答的数量） &lt;/strong&gt;(Qanswers * Qscore)/5&lt;/p&gt;
 &lt;p&gt;Qscore（问题得分）= 赞成票-反对票。如果某个问题越受到好评，排名自然应该越靠前。Qanswers 表示回答的数量，代表有多少人参与这个问题。这个值越大，得分将成倍放大。这里需要注意的是，如果无人回答，Qanswers 就等于0，这时 Qscore 再高也没用，意味着再好的问题，也必须有人回答，否则进不了热点问题排行榜。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;Ascores（回答得分） &lt;/strong&gt;sum(Ascores)&lt;/p&gt;
 &lt;p&gt;一般来说，”回答”比”问题”更有意义。这一项的得分越高，就代表回答的质量越高。但是简单加总的设计还不够全面。这里有两个问题。首先，一个正确的回答胜过一百个无用的回答，但是，简单加总会导致，1个得分为 100 的回答与 100 个得分为 1 的回答，总得分相同。其次，由于得分会出现负值，因此那些特别差的回答，会拉低正确回答的得分。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;Qage（距离问题发表的时间）和 Qupdated（距离最后一个回答的时间）&lt;/strong&gt; ((Qage+1) – ((Qage – Qupdated)/2)) ^ 1.5&lt;/p&gt;
 &lt;p&gt;Qage 和 Qupdated 的单位都是小时。如果一个问题的存在时间越久，或者距离上一次回答的时间越久，Qage 和 Qupdated 的值就相应增大。也就是说，随着时间流逝，这两个值都会越变越大，导致分母增大，因此总得分会越来越小。&lt;/p&gt;
 &lt;p&gt;此算法目前是否还继续使用或者是否改变不得而知。将其转化成Python代码为：&lt;/p&gt;
 &lt;pre&gt;import time, math


def hot(Qviews, Qanswers, Qscore, Ascore, date_ask, date_active):
    Qage = round((time.time() - date_ask) / 3600)
    Qupdated = round((time.time() - date_active) / 3600)
    return (math.log10(Qviews) * 4 + Qanswers * Qscore / 5 + Ascore) / (pow((Qage + 1) - (Qage - Qupdated) / 2, 1.5))
&lt;/pre&gt;
 &lt;p&gt;Stack Overflow 热点问题的排名，与参与度（Qviews 和 Qanswers）和质量（Qscore 和 Ascores）成正比，与时间（Qage 和 Qupdated）成反比。以下为个人思考点：&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;为什么不使用“声望值”？&lt;/strong&gt;&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;问题的质量与提问者的声望无正相关系&lt;/li&gt;
  &lt;li&gt;问题的答案与回答者的声望无正相关系&lt;/li&gt;
  &lt;li&gt;无名小辈也可以有精彩的问题与答案&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;提问的目的是获得正确的答案，而不是谁参与了此问题。声望值纳入容易造成，在没有声望认识加入的情况下，问题无法进入热门榜。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;浏览量与分值的关系 &lt;/strong&gt;log(Qviews)*4&lt;/p&gt;
 &lt;p&gt;这类对浏览量做了一次对数处理，主要目标应该是防止浏览量较大的问答占着榜单不动，抑制马太效应。这里再对结果*4，应该是由于10为第的对数抑制效果太大了，乘4稍微加大权重的影响。&lt;/p&gt;
 &lt;p&gt;针对此部分内容，我认为可以简化为：&lt;/p&gt;
 &lt;p&gt;$$ \log_{10}{x}=\log_{b}{x}\Rightarrow b=\sqrt[4]{10}=1.78$$&lt;/p&gt;
 &lt;p&gt;即将底数从10改为1.78，或者以2为底。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;答案数和投票数与分值关系&lt;/strong&gt; $\frac{Qanswers\times Qscore}{5}$&lt;/p&gt;
 &lt;p&gt;这里的将答案的分值与答案数相乘，我个人认为是不适合。问题是否热门与回答数量正相关？与答案的分值正相关？这里将分数除以5，我的猜测是答案数、投票分的权重，考虑到问题答案数量普遍较少，猜想是想投票分的影响。&lt;/p&gt;
 &lt;p&gt;是否合理？&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;技术类问答，非开放性问题，往往答案只有一个，提问者的需求也仅仅需要一个答案&lt;/li&gt;
  &lt;li&gt;Qscore = 赞成票-反对票，如果这个问题存在较大的争议，赞成票与反对票接近，是否是一个热门的问题？&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;我建议的修改方案是：Qstatus * Qupvote：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;Qstatus：是否有答案，没有为0，有为1&lt;/li&gt;
  &lt;li&gt;Qupvote：赞成票数量（考虑到Stackoverflow可能没有存赞成票数，用Qscore也可以）&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;  &lt;strong&gt;答案投票数与分值关系 &lt;/strong&gt;sum(Ascore)&lt;/p&gt;
 &lt;p&gt;是否合理？&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;问题A：有1个答案，投票数为10&lt;/li&gt;
  &lt;li&gt;问题B：有4个答案，投票数为4，3，2，1&lt;/li&gt;
  &lt;li&gt;问题C：有2个答案，投票数为10，-5&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;以上问题哪个更好？从现有的公式中最好的可能是A和B，实际上更高的或许应该是AC？&lt;/p&gt;
 &lt;p&gt;建议优化方案：Ascore只取投票数为正（Ascore&amp;gt;0）的答案，取每个分值平方和的开方（Square root of sum of squares）：$\sqrt{x_1^2+x_2^2+…+x_n^2}$&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;提问时间与最后解答时间与分值关系&lt;/strong&gt; $(1+\frac{Qage}{2}+\frac{Qupdated}{2})^{1.5}$&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;为什么要+1？防止问题刚提交时，公式中分母为0&lt;/li&gt;
  &lt;li&gt;为什么要÷2？把2小时作为最小的时间粒度单位&lt;/li&gt;
  &lt;li&gt;为什么要去5次方？添加“重力加速度”，提升曲线的陡度&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;如何理解影响关系？&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;发布时间越久，分值越低&lt;/li&gt;
  &lt;li&gt;回答时间越久，分值越低&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;总体评价：Stack Overflow的排序算法非常的简陋，还有很多优化空间。&lt;/p&gt;
 &lt;h2&gt;SegmentFault&lt;/h2&gt;
 &lt;p&gt;SegmentFault 参考了Stack Overflow的热门算法设置了自己的排序算法，具体排序算法如下：&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;热门文章&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;对于热门文章，使用了如下公式：&lt;/p&gt;
 &lt;p&gt;$$\frac{\lg(views)*4+recommendScore+collectScore+\ln(articleComments)}{(1+\frac{age}{2}+\frac{update}{2})^i}$$&lt;/p&gt;
 &lt;p&gt;其中&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;views：浏览量，对浏览量做了一次去对数处理，主要是为了防止某些浏览量较大的文章异军突起，待在榜单迟迟不动。&lt;/li&gt;
  &lt;li&gt;recommendScore：文章的推荐数，直接加和到分子中，作为文章热门程度的考虑因素。&lt;/li&gt;
  &lt;li&gt;collectScore：文章的收藏数，直接加和到分子中，作为文章热门程度的考虑因素。&lt;/li&gt;
  &lt;li&gt;articleComments：文章评论数，这个也作为一个影响文章热度的因素，不过为了降低其影响，对其作了一次取对数操作，主要是考虑到评论数量的影响力并没有上面两个的高。&lt;/li&gt;
  &lt;li&gt;(1 + age/2 + update/2)^i：分母是对时间因子的考虑，宏观上来看，就是文章热度和创建时间成反比。细节上，做成了个指数函数，可以通过对 i 变量的调控来改变时间因子在对热度的影响。&lt;/li&gt;
  &lt;li&gt;age：内容发布时间&lt;/li&gt;
  &lt;li&gt;update：内容最后更新时间（所有时间值单位均为 h/3600）&lt;/li&gt;
  &lt;li&gt;i：重力因子，取值的大小会直接决定热门排序（后面将介绍这点）&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;  &lt;strong&gt;热门问答&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;对于热门问答，使用了如下公式：&lt;/p&gt;
 &lt;p&gt;$$\frac{\lg(views)*4+\frac{sum(Qanswers * answerScores + Qscore)}{5}+ln(commentScore)}{(1+\frac{age}{2}+\frac{update}{2})^i}$$&lt;/p&gt;
 &lt;p&gt;热门问答的计算参考了 Stack Overflow 对于回答数量和问题得票数的处理。同时，结合我们的实际，将评论的得票数也做为一个因素加入计算。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;Qanswers / Qscore：分别是问题的答案数量和问题的得票数&lt;/li&gt;
  &lt;li&gt;anwserScores / commentSocres：分别是该问题下所有答案的总得票数和所有评论的总得票数&lt;/li&gt;
  &lt;li&gt;update：该问题下答案的最新更新时间&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;其余的变量含义和文章算法相同。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;日/周/月热门&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;首先要明确各类不同热门内容的目的。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;日热门的主要目的就是突出最近一天内的热门内容，更方便于内容被大家看到，文章快速地形成讨论、受关注的问题尽快得到解决；&lt;/li&gt;
  &lt;li&gt;周热门的主要目的很明确，就是突出过去一周内的热门内容，同时，给新产生的优秀内容机会，让其有机会进入热门列表；&lt;/li&gt;
  &lt;li&gt;月热门同周热门目的一样，但更需要给新内容进入列表的机会，以让内容经常更新。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;所以，该怎么做呢？对于同一内容，上面的计算公式均可简化为：$\frac{s}{t^i}$&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;S是总得分指标&lt;/li&gt;
  &lt;li&gt;t为时间量&lt;/li&gt;
  &lt;li&gt;i是变量重力因子&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;可以看出，其热度和创建时间成反比，那么这个反比的值最终就由重力因子 i 来影响。&lt;/p&gt;
 &lt;p&gt;日热门为了突出新热内容、过滤时间过久的热门内容，需要增大重力因子，尽可能排除 24 小时之外的热门内容；周热门和月热门则需要按时间要求依次逐渐降小 i 值。&lt;/p&gt;
 &lt;p&gt;关于指数 i 值的选定，采取了估算：绘制出一定范围内时间和文章热度的指数函数的图，然后根据需求挑选满足自己条件的指数值。如下图：&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="443" src="https://www.biaodianfu.com/wp-content/uploads/2021/04/SegmentFault.png" width="600"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;多次估值测试，最终分别将日、周、月的 i 值选取为 1.0、0.5、0.3。&lt;/p&gt;
 &lt;p&gt;参考链接：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="https://medium.com/hacking-and-gonzo/how-hacker-news-ranking-algorithm-works-1d9b0cf2c08d"&gt;How Hacker News ranking algorithm works&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://medium.com/hacking-and-gonzo/how-reddit-ranking-algorithms-work-ef111e33d0d9"&gt;How Reddit ranking algorithms work&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://meta.stackexchange.com/questions/11602/what-formula-should-be-used-to-determine-hot-questions"&gt;What formula should be used to determine “hot” questions?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://zhuanlan.zhihu.com/p/19902495"&gt;知乎如何对回答进行排序？你的一票很重要&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://segmentfault.com/a/1190000004253816"&gt;SegmentFault 热门内容优化&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
 &lt;div&gt;
  &lt;h3&gt;相关文章:&lt;/h3&gt;  &lt;ol&gt;
   &lt;li&gt;    &lt;a href="https://www.biaodianfu.com/decision-tree.html" rel="bookmark" title="&amp;#26426;&amp;#22120;&amp;#23398;&amp;#20064;&amp;#31639;&amp;#27861;&amp;#20043;&amp;#20915;&amp;#31574;&amp;#26641;&amp;#20998;&amp;#31867;"&gt;机器学习算法之决策树分类 &lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;    &lt;a href="https://www.biaodianfu.com/distance.html" rel="bookmark" title="&amp;#26426;&amp;#22120;&amp;#23398;&amp;#20064;&amp;#20043;&amp;#36317;&amp;#31163;&amp;#19982;&amp;#30456;&amp;#20284;&amp;#24230;&amp;#35745;&amp;#31639;"&gt;机器学习之距离与相似度计算 &lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;    &lt;a href="https://www.biaodianfu.com/back-propagation.html" rel="bookmark" title="&amp;#28145;&amp;#24230;&amp;#23398;&amp;#20064;&amp;#20043;BP&amp;#31070;&amp;#32463;&amp;#32593;&amp;#32476;"&gt;深度学习之BP神经网络 &lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>产品 术→技巧 研发 排序算法</category>
      <guid isPermaLink="true">https://itindex.net/detail/61345-%E7%BD%91%E7%AB%99-%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95-%E5%88%86%E6%9E%90</guid>
      <pubDate>Thu, 15 Apr 2021 19:19:02 CST</pubDate>
    </item>
    <item>
      <title>996.ICU这个网站，你还记得吗？</title>
      <link>https://itindex.net/detail/61146-icu-%E7%BD%91%E7%AB%99</link>
      <description>&lt;p&gt;  &lt;img alt="&amp;#22270;&amp;#29255;&amp;#26469;&amp;#28304;@&amp;#35270;&amp;#35273;&amp;#20013;&amp;#22269;" src="https://images.tmtpost.com/uploads/images/2021/01/76fc967e56b051a02495a581122b30f7_1609899914.jpeg"&gt;&lt;/img&gt;&lt;/p&gt; &lt;p&gt;图片来源@视觉中国&lt;/p&gt; &lt;blockquote&gt;  &lt;p&gt;文 ｜ 波波夫&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;那个倒在乌鲁木齐冬夜街头的加班女子，用残酷的死亡代价敲响了过劳的警钟，996不是福报。随着相关利益人的沉默，和其他所有热点一样，这则新闻很快在这个冬季的寒潮中冷却，人们继续在方寸屏幕中纵横捭阖，购物、聊天、刷剧......消费主义的潮音再次响起，仿佛一切都不曾发生，就像谁还会想起一年多前的那场程序员的反抗。&lt;/p&gt; &lt;h2&gt;程序员的反抗&lt;/h2&gt; &lt;p&gt;2019年3月20日，技术创意万盏V2EX网友@nulun注册了域名为996.icu的网站，内容口号为“工作996，生病ICU”。6天后，在微软旗下的著名代码社区GitHub上，一位996icu的新注册用户创建了名为996.ICU的代码库。&lt;/p&gt; &lt;p&gt;在996.ICU的代码库血红的项目页面上，呈现的是一段惨白的文字，喻意着中国的程序员在被迫用生命加班。&lt;/p&gt; &lt;blockquote&gt;  &lt;p&gt;“996”工作制，即每天早 9 点到岗，一直工作到晚上 9 点，每周工作 6 天。&lt;/p&gt;  &lt;p&gt;“996”工作制的周工作时间为最低 12x6=72 小时。&lt;/p&gt;  &lt;p&gt;中国大陆工时规管现况（标准工时）： 一天工作时间为 8 小时，平均每周工时不超过 40 小时；加班上限为一天 3 小时及一个月 36 小时，逾时工作薪金不低于平日工资的 150%。而一周最高工时则为 48 小时。平均每月计薪天数为 21.75 天。&lt;/p&gt;  &lt;p&gt;……&lt;/p&gt;  &lt;p&gt;按照劳动法规定，996 工作制下只有拿到当前工资的 2.275 倍，才在经济账上不吃亏。&lt;/p&gt;  &lt;p&gt;什么是 996.ICU？工作 996，生病 ICU。&lt;/p&gt;  &lt;p&gt;Developers&amp;apos; lives matter.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;  &lt;img height="750" src="https://images.tmtpost.com/uploads/images/2021/01/d8ee6727b0cfec934d7419c33f81d351_1609899917.png" width="954"&gt;&lt;/img&gt;&lt;/p&gt; &lt;p&gt;不久，这一项目被用户自发翻译成多国语言版本，号召全球程序员加入。该仓库在创建后两天（3月28日）即获得5万个标星，3月30日凌晨前突破10万个标星，并因快速获得大量标星而跃居GitHub的周度和月度趋势榜第一。&lt;/p&gt; &lt;p&gt;这一项目的最初目的是标记已开始实行996工作制的公司，中国多家科技巨头都在该项目的“黑名单”之列。随后美国伊利诺伊大学法学博士顾紫翚在其程序员丈夫的影响下起草了“反996许可证”，研究如何将许可证和劳动法相结合，并以该项目为核心产生了多个派生项目，如相关的法律知识汇总，另一个有关实行正常工作时长的互联网公司列表的仓库955.WLB，周边文化产品等。&lt;/p&gt; &lt;p&gt;996.ICU事件很快在知乎、微博上引发大范围讨论，同时，从《纽约时报》、金融时报、BBC、彭博新闻社、福布斯杂志到连线杂志、The Verge等一大批西方权威媒体都跟进报道。&lt;/p&gt; &lt;p&gt;编程语言Python之父Guido van Rossum则对此表达了自己的同情，他在推特上称：996工作时间表是不人道的。2019年图灵奖得主Yoshua Bengio在推特上批评996是“现代奴隶制”。&lt;/p&gt; &lt;p&gt;BBC报道称，“996.ICU”走红后，很多用户发现，一些国内公司的浏览器对该项目的网址进行了屏蔽，期间甚至连Twitter也一度短暂屏蔽短暂屏996.icu。&lt;/p&gt; &lt;p&gt;《纽约时报》称，“多年来，中国科技行业员工的工作时间让硅谷的工作狂们看起来像是受了娇惯。现在，他们正在点名批评那些要求他们加班到深夜的雇主们……就在不久前，996曾是中国科技企业家们无所不能的象征。他们的国家有巨大的市场。而且，国内的工程学人才越来越多。据说让中国企业比硅谷企业更突出的秘诀是忙碌……但是，在一个下行市场里要求工人忙碌就有些难度了。”&lt;/p&gt; &lt;p&gt;对于996，中国媒体也多持批评态度，毕竟这与中国一系列对劳动者的相关法规相抵触。我国《劳动法》规定，“国家实行劳动者每日工作时间不超过八小时、平均每周工作时间不超过四十四小时的工时制度”。如果按“996”来计算工作时间，除却午休每天工作11小时，那么一周就是66小时，比法律规定多了22小时。《劳动法》还规定，延长劳动者工作时间企业应当支付报酬，工作日延长的是150%，休息日工作又不能补休的是200%。这样算来，在“996”制度下，员工拿到的加班工资应该比基本工资还多。&lt;/p&gt; &lt;p&gt;《人民日报》刊发评论称，“崇尚奋斗、崇尚劳动不等于强制加班。苦干是奋斗，巧干也是奋斗；延长工时是奋斗，提高效率也是奋斗。因此，不能给反对996的员工贴上’混日子’ ’不奋斗’的道德标签，而应该正视他们的真实诉求……随着中国逐步从高速增长转向高质量发展，随着互联网行业逐步进入更加注重产品质量的下半场，企业治理也更需要树立结果导向、效率导向，进行更加文明、高效和人性化的时间安排。事实上，更加弹性的工作机制，比强制的996更能激发员工自发的工作热情，从而也能让企业更好挖掘人力资源潜能。”&lt;/p&gt; &lt;h2&gt;“社畜”的矛盾心态&lt;/h2&gt; &lt;p&gt;尽管996在中国科技公司早已司空见惯，但司空见惯并不代表着合理，同样也不代表人们心理也是愿意这样做的。&lt;/p&gt; &lt;p&gt;中国知名科技媒体、同时也是纳斯达克上市公司的36氪的记者采访了近 60 位新经济公司的从业者，包含了创业公司的创始人、大公司的新员工、中高层管理者，询问他们对于996的看法：一位来自小米的运营员工说，“我很理解某些公司 996 的决定，有时候产品在关键时刻，就要比别人快，才有可能活下来。”一位前 ofo 实习生说，“员工能接受 996的前提是信任公司、认同企业文化，愿意付出代价和公司一起成长。”反对者也大有人在。一位腾讯的产品经理说，“996是低成本的违法行为，和杀人无异。”另一位匿名的电商企业员工说，“996企业可以是员工的一种选择，但不能是’不能不选择’”。而一位游戏开发工程师说，“不支持 996。请按法律法规给加班费，给钱就加爆。”&lt;/p&gt; &lt;p&gt;  &lt;img alt="" src="http://images.tmtpost.com/uploads/images/2016/12/23r4grhtngh3.jpg"&gt;&lt;/img&gt;&lt;/p&gt; &lt;p&gt;滴滴发布《2016年度加班最“狠”公司排行榜》显示，在工作日平均下班时间最晚IT公司中，京东下班最晚，平均下班时间为23：16。排名2—12的腾讯（银科）、58赶集、腾讯（西格玛）、奇虎360、滴滴出行、优酷土豆、搜狐、爱奇艺、新美大、新浪和百度，都在20点之后。 在每月加班天数最多的公司中，京东以20天居榜首。滴滴出行、58赶集、新美大员工同样苦逼，每月加班7天以上。&lt;/p&gt; &lt;p&gt;高德大数据得出了2016年加班最多的城市及加班最晚的科技公司。其中，从城市维度看，北上广深位居前四，其余6座城市分别是：成都市、杭州市、重庆市、苏州市、武汉市和东莞市。其中，北京、深圳、上海在加班城市第一梯队，占比超过60%；从公司维度看，以18：00开始计算加班时长，华为是平均下班时间最晚的公司，直到21:57分，而新浪2016年加班时间同比去年下降24.1%。而且，市值最高的三家互联网公司BAT均在加班最多公司中。&lt;/p&gt; &lt;p&gt;不仅是科技公司，几乎近一半的中国公司都有加班文化。中国青年报社社会调查中心联合问卷网在2018半年对1980名上班族进行的一项调查显示，50.7%的受访者称所在企业有“加班文化”。53.0%的受访者认为过度加班损害员工身心健康，不利于企业长远发展，44.1%的受访者认为过度加班会降低工作效率，让员工患上“拖延症”。58.8%的受访者建议企业进行科学工作统筹、人员分工和流程规划，44.6%的受访者建议企业建立健全工时协商机制。&lt;/p&gt; &lt;p&gt;国家统计局北京调查总队发布的《2018年北京市居民时间利用调查报告》，通过连续记录北京人一天24小时的活动发现，北京市居民中参与就业的人群来说，工作时间为8小时34分钟，比十年前多了近一个小时。其中，15岁到39岁的青年人平均工作时间为10小时，折合一周50个小时。作为对比，经济合作与发展组织(OECD)中工作时长最高的墨西哥，周均工作时长也只是略多于43个小时，而我国劳动法的法定周平均时长，则是44小时。&lt;/p&gt; &lt;p&gt;也有观点认为996并非一种强制，而是市场供需博弈后达成的平衡。&lt;/p&gt; &lt;p&gt;谷雨实验室和镝数联合进行的一项关于“为钱加班意愿”调查显示，八成职场人每周都有加班，且一半都属于无偿加班。调查中，普通员工普遍表示“只要有钱一切好说”（占比51.11%）。职位越高，愿意为钱加班的比例则越低。全国总工会开展的第八次全国职工队伍状况调查显示，仅有44%的职工表示自己拿到了符合劳动法规定的加班费，或者被安排了倒休。剩下的56%当然就属于“无偿为公司奉献”了。没有加班费，只有“心灵鸡汤”的加班，年轻人当然无法接受。&lt;/p&gt; &lt;p&gt;科技评论人士曹政曾梳理了科技公司加班所经历的四个历史阶段：宅男蹭网阶段、为梦想奋斗阶段、不拼就会死的阶段、最不缺的就是肯加班的程序员。他在一篇文章中写道，“我希望程序员都懂一点逻辑，你恨996，这是政治正确，但你要能理解，那些知名企业敢强推996，底气在于，你不爱来没关系，后面有的是排队来的……996是个市场选择，不是某个企业家、某个企业可以只手遮天的，没有谁有这个本事，给他们底气的，是那些排队等offer的应聘者。”&lt;/p&gt; &lt;h2&gt;工作至死：鸡汤与大棒&lt;/h2&gt; &lt;p&gt;拼命工作的文化，正在从流水线工厂扩散到科技公司的写字楼，这也是从美国到中国，科技公司兴起的一个重要背景。&lt;/p&gt; &lt;p&gt;格子衬衫、黑色双肩电脑包和不断后退的发际线，一直是外界对于程序员的刻板印象。知名的Stack Overflow通过对覆盖了全球 179 个国家和地区、接近 9 万名软件开发者的统计，为我们提供了一个更为精准的程序员画像：20-35 岁的开发者仍然是全球软件行业的中坚力量，占比接近 70%；有超过 50% 的开发者每周的工作时间为 40-44 小时，而每周工作超过 70 小时的人数仅为 2%，996比并非这一群体的工作常态。&lt;/p&gt; &lt;p&gt;此前，BOSS直聘联合微博职场共同发起“2019职场人加班现状调查”，一周内收到2268位职场人反馈，经过调研分析发现，只有10.6%的职场人基本不加班，近九成的人都难逃加班命运。其中45.5%的职场人每周加班2到3天，更有24.7%的人几乎每天都在加班。在接受调研的人群中，90后和95后面临的加班情况最为严重。其中在“每天都加班”的职场人中，年龄越小的群体比例越高，95后所占比例高居榜首，有31.28%的95后在此之列；有44%的职场人有过加班超过零点的经历，其中有9.3%的人回家时间在午夜2点到4点之间，此外，还有4.5%的职场人曾经通宵在公司加班，留宿公司后第二天继续上班；休息权是劳动者的法定权利，但受访者中仅有36.2%的职场人拥有双休日；“碍于面子“或成加班现状罪魁祸首。在选择加班的人群中，有41.6%是因为工作没完成，还有10.5%的人是因为喜欢工作，主动自愿加班。其余近半数的职场人选择加班并非因为工作，其中42.7%的人或因老板未走，或因同事未走而选择留下。很多人对如此加班的性价比打上了一个问号。&lt;/p&gt; &lt;p&gt;在硅谷，工作至死的文化有着巨大市场，工作狂也被标榜为一种理想的生活方式。Facebook会举办通宵达旦的编程马拉松活动，谷歌也有周末激光枪对战赛。而创业公司对于加班更是有着格外的偏执。&lt;/p&gt; &lt;p&gt;许多硅谷高管本人就是工作狂。Space X和特斯拉创始人埃隆•马斯克2018年接受《纽约时报》采访谈到自己47岁生日只能在工厂里熬通宵时，也颇为感慨：“没朋友，什么都没有。”与平时每周工作120小时的日子没什么区别。他说：“我彻底牺牲了和孩子们、朋友们见面的时间。”他已经有将近20年没有休过时长为一周的假了。&lt;/p&gt; &lt;p&gt;亚马逊创始人杰夫·贝佐斯就不喜欢工作和生活平衡的提法，他建议新员工不把生活和工作看作取舍关系，而应视为一种“和谐”，不需要被平衡的；贝佐斯对工作的狂热、对数据的迷恋，也缔造了今日亚马逊的巨大成功——一切信息尽在数据掌控之中：对外，顾客的一切喜好都能得以发现和挖掘；对内，员工的表现也逃不过亚马逊的眼睛在亚马逊的仓库中，工人们受到复杂的电子系统监控，手腕上戴着计步器，亚马逊因此能准确跟踪到员工分拣商品和包装商品的速度。这套系统对员工的休息时间和工作量做出严格限制，如果没有达成工作量和休息时间过长，员工就会收到警告。亚马逊贝佐斯所倡导的“工作即生活”也得到了不少员工的支持，一位亚马逊前高级产品经理在问答社区Quora上“贝佐斯是个工作狂”问题下回答说，“对于巨星贝佐斯来说，他的工作的意思和我们这些社畜来说，完全是两码事。他没有老板需要去汇报。他回复一封邮件只需要一个问号就够了。工作对他来说就跟玩儿似的。贝佐斯比办公室里的所有员工都要聪明，除了Werner Vogels等少数专家，但这些专家也只是在自己狭小的专业领域里比贝佐斯懂得略多点而已……如果你也和贝佐斯一样找到自己的梦想，工作就是一种莫大的乐趣。”&lt;/p&gt; &lt;p&gt;雅虎首席执行官玛丽莎·梅耶尔大谈自己生下孩子两周后就回到了工作岗位上，此前她在谷歌时每周的工作时长竟然达到了130个小时。后来，雅虎公司告诉员工，他们以后不能在家工作了；著名投资人马克·库班在其博客中写道，他在创办第一家公司时，一心一意想要取得生意上的成功，以至于连续7年没有休息；苹果CEO库克每天凌晨3点45起床锻炼和查看邮件；推特CEO多尔西以工作日每天只吃一顿饭而闻名，这使他受到不少争议。2019年，多尔西向美国CNBC新闻网道出了他这么吃的原因：“这可以帮助我更有效地工作，让我能够把注意力集中到工作上。”&lt;/p&gt; &lt;p&gt;从中国的996到硅谷的工作即生活，这背后隐藏着一套老板对员工灌输的奋斗乌托邦逻辑：如果你在几年里不舍昼夜地高强度工作，您将获得高薪水、员工福利（比如免费三餐、班车等）和巨大的股票期权收益，强者都在996，只有弱者才会朝九晚五，这种承诺和对赌背后，正是推动包括程序员在内的互联网民工奋斗的原动力。这套乌托邦背后最核心的部分在于期权文化。对员工而言，期权比现金更好，因为它提供的致富机会不仅远远大于工资，还可能使自己成为百万富翁，因此期权激发了员工创造力、工作热情，以及提高了员工对公司效力的忠诚度。从某种意义上说，股票期权已成为高技术行业的一个通用的激励模式。&lt;/p&gt; &lt;p&gt;纳斯达克就是创业公司们的圣殿，在那里，他们曾经听到的承诺会得以兑现。1971年，全美证券商协会创建了纳斯达克，它利用了当时最先进的电子计算机技术，把500多个做市商的买卖终端和位于康涅狄格州的数据中心衔接起来，构成一个数据交流网络，确立了为“尚不具备条件在纽约证券买卖所上市的中小企业股票提供场外买卖效劳的市场”的定位，并打上了深深的科技烙印。纳斯达克见证了从乔布斯到扎克伯格等一批互联网巨富的诞生。&lt;/p&gt; &lt;h2&gt;倦怠侵入&lt;/h2&gt; &lt;p&gt;当疲惫变成一种荣誉勋章时，这对员工和企业来说都是拉响了警报。&lt;/p&gt; &lt;p&gt;2015年医学期刊《柳叶刀》(The Lancet)发布的一项基于60万份个人数据的研究显示，与每周工作35至40小时的人士相比，每周工作超过55个小时的人士患中风和冠心病的风险更高；2010年，芬兰、英国的研究人员在《欧洲心脏》杂志上，发表了一项长达11年的研究成果：每天加班超过3小时，将导致忧郁、焦虑或失眠，罹患心脏病的几率更高出60%；澳大利亚墨尔本大学的一项研究表明，当我们超过40岁，大脑在生理上和心理上就不再适合每周5天朝九晚五的压力与重复，一周超过25小时的工作就可能对智力造成损伤。&lt;/p&gt; &lt;p&gt;长时间加班的效率也令人怀疑。&lt;/p&gt; &lt;p&gt;八小时工作制是一项对劳动时间的倡导，主张劳动者每日工作时间应不超过八个小时。这一制度最早由英国空想社会主义者罗伯特·欧文于1817年8月提出。其后由于欧美资本家对劳工的剥削不断加剧，最终北美的工人率先实行并走上街头抗议，倡导实行八小时工作制。1886年5月1日美国芝加哥爆发了历史最大的罢工，也正是以倡导八小时工作制为目标进行的。&lt;/p&gt; &lt;p&gt;事实上，这也符合人们一天劳动时间的合理上限。早在上世纪初期，福特汽车用大量的实验揭示了获得工人的最大工作效率的最佳工作时长。他们发现这“最佳击球点”是每周工作40小时——而且，虽然每周多增加20小时的工作能少量的提高工作效率，但这种提高只会持续3到4周，接着就会转为负增长。在由于世界经济论坛评选的全球前十名最有竞争力的国家中，有六个(瑞典、芬兰、德国、荷兰、丹麦，和英国)是立法禁止每周工作超过48小时。&lt;/p&gt; &lt;p&gt;微软在2019年夏天在日本引进了一个名为“工作生活选择挑战”的项目，八月的每个周五都会关闭办公室，让所有员工每周都能多放一天假。除了缩短工作时间外，经理还敦促员工减少开会和回复电邮的时间。经理建议，会议时间不要超过30分钟，并鼓励员工使用（微软的）在线消息应用，减少开会次数。微软日本总裁兼首席执行官Takuya Hirano在公司的官网声明中表示，“我希望员工思考并体验如何在减少20%工作时间的情况下实现同样的结果。”每周工作四天在试行一个月后，微软发布声明称，在上述试验期间，92%的微软日本公司员工表示，他们更喜欢这种一周只工作四天的工作制，这些员工在工作期间的休息时间减少了25%、每周少工作一天让办公室的用电量减少了23%、员工使用的打印纸纸张减少了59%，但公司销售额却大幅增加，比上一年同期增加了39.9%，将近四成。&lt;/p&gt; &lt;p&gt;新冠疫情冲击之下，苹果、谷歌、Facebook、LinkedIn和优步推出了新的在家工作政策，也促成了对于工作和生活再平衡的反思。谷歌在危机期间延长了一项特殊的带薪休假计划，给予长达14周的带薪休假（或28周的半休假），以帮助其十万多名员工照顾亲人。&lt;/p&gt; &lt;p&gt;硅谷的工作至死的文化正在悄然转变。（本文首发钛媒体APP）&lt;/p&gt; &lt;p&gt;（本文节选自波波夫新近出版的新书《倦怠：为何我们不想工作》，东方出版社2020年10月）&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;  &lt;strong&gt;更多精彩内容，关注钛媒体微信号（ID：taimeiti），或者下载钛媒体App&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>投稿 职场</category>
      <guid isPermaLink="true">https://itindex.net/detail/61146-icu-%E7%BD%91%E7%AB%99</guid>
      <pubDate>Wed, 06 Jan 2021 10:25:13 CST</pubDate>
    </item>
    <item>
      <title>如何让网站和API都支持HTTPS？在Nginx上做文章是个好选择！</title>
      <link>https://itindex.net/detail/61022-%E7%BD%91%E7%AB%99-api-https</link>
      <description>&lt;div&gt;  &lt;blockquote&gt;
   &lt;p&gt;SpringBoot实战电商项目mall（40k+star）地址：    &lt;a href="https://github.com/macrozheng/mall" rel="nofollow noopener noreferrer" target="_blank"&gt;github.com/macrozheng/…&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
  &lt;h2&gt;摘要&lt;/h2&gt;
  &lt;p&gt;随着我们网站用户的增多，我们会逐渐意识到HTTPS加密的重要性。在不修改现有代码的情况下，要从HTTP升级到HTTPS，让Nginx支持HTTPS是个很好的选择。今天我们来讲下如何从Nginx入手，从HTTP升级到HTTPS，同时支持静态网站和SpringBoot应用，希望对大家有所帮助！&lt;/p&gt;
  &lt;h2&gt;生成SSL自签名证书&lt;/h2&gt;
  &lt;blockquote&gt;
   &lt;p&gt;虽然自签名证书浏览器认为并不是安全的，但是学习下SSL证书的生成还是很有必要的！&lt;/p&gt;
&lt;/blockquote&gt;
  &lt;ul&gt;
   &lt;li&gt;首先创建SSL证书私钥，期间需要输入两次用户名和密码，生成文件为    &lt;code&gt;blog.key&lt;/code&gt;；&lt;/li&gt;
&lt;/ul&gt;
  &lt;pre&gt;   &lt;code&gt;openssl genrsa -des3 -out blog.key 2048
复制代码&lt;/code&gt;&lt;/pre&gt;
  &lt;ul&gt;
   &lt;li&gt;利用私钥生成一个不需要输入密码的密钥文件，生成文件为    &lt;code&gt;blog_nopass.key&lt;/code&gt;；&lt;/li&gt;
&lt;/ul&gt;
  &lt;pre&gt;   &lt;code&gt;openssl rsa -in blog.key -out blog_nopass.key
复制代码&lt;/code&gt;&lt;/pre&gt;
  &lt;ul&gt;
   &lt;li&gt;创建SSL证书签名请求文件，生成SSL证书时需要使用到，生成文件为    &lt;code&gt;blog.csr&lt;/code&gt;；&lt;/li&gt;
&lt;/ul&gt;
  &lt;pre&gt;   &lt;code&gt;openssl req -new -key blog.key -out blog.csr
复制代码&lt;/code&gt;&lt;/pre&gt;
  &lt;ul&gt;
   &lt;li&gt;在生成过程中，我们需要输入一些信息，需要注意的是    &lt;code&gt;Common Name&lt;/code&gt;需要和网站域名一致；&lt;/li&gt;
&lt;/ul&gt;
  &lt;pre&gt;   &lt;code&gt;Enter pass phrase for blog.key:
-----
Country Name (2 letter code) [XX]:CN                                         # 国家代码
State or Province Name (full name) []:jiangsu                                # 省份
Locality Name (eg, city) [Default City]:jiangsu                              # 城市
Organization Name (eg, company) [Default Company Ltd]:macrozheng             # 机构名称
Organizational Unit Name (eg, section) []:dev                                # 单位名称
Common Name (eg, your name or your server&amp;apos;s hostname) []:blog.macrozheng.com # 网站域名
Email Address []:macrozheng@qq.com                                           # 邮箱

Please enter the following &amp;apos;extra&amp;apos; attributes
to be sent with your certificate request
A challenge password []:                                                     # 私钥保护密码,可以不输入直接回车
An optional company name []:                                                 # 可选公司名称，可以不输入直接回车
复制代码&lt;/code&gt;&lt;/pre&gt;
  &lt;ul&gt;
   &lt;li&gt;生成SSL证书，有效期为365天，生成文件为    &lt;code&gt;blog.crt&lt;/code&gt;；&lt;/li&gt;
&lt;/ul&gt;
  &lt;pre&gt;   &lt;code&gt;openssl x509 -req -days 365 -in blog.csr -signkey blog.key -out blog.crt
复制代码&lt;/code&gt;&lt;/pre&gt;
  &lt;ul&gt;
   &lt;li&gt;其实最终有用的文件是两个，一个是证书文件    &lt;code&gt;blog.crt&lt;/code&gt;，另一个是不需要输入密码的证书私钥文件    &lt;code&gt;blog_nopass.key&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
  &lt;h2&gt;Nginx支持HTTPS&lt;/h2&gt;
  &lt;blockquote&gt;
   &lt;p&gt;SSL证书生成好了，接下来我们就可以配置Nginx来支持HTTPS了！&lt;/p&gt;
&lt;/blockquote&gt;
  &lt;h3&gt;安装Nginx&lt;/h3&gt;
  &lt;ul&gt;
   &lt;li&gt;我们还是使用在Docker容器中安装Nginx的方式，先下载Nginx的Docker镜像；&lt;/li&gt;
&lt;/ul&gt;
  &lt;pre&gt;   &lt;code&gt;docker pull nginx:1.10
复制代码&lt;/code&gt;&lt;/pre&gt;
  &lt;ul&gt;
   &lt;li&gt;下载完成后先运行一次Nginx，由于之后我们要把宿主机的Nginx配置文件映射到Docker容器中去，运行一次方便我们拷贝默认配置；&lt;/li&gt;
&lt;/ul&gt;
  &lt;pre&gt;   &lt;code&gt;docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx  \
-d nginx:1.10
复制代码&lt;/code&gt;&lt;/pre&gt;
  &lt;ul&gt;
   &lt;li&gt;运行成功后将容器中的Nginx配置目录拷贝到宿主机上去；&lt;/li&gt;
&lt;/ul&gt;
  &lt;pre&gt;   &lt;code&gt;docker container cp nginx:/etc/nginx /mydata/nginx/
复制代码&lt;/code&gt;&lt;/pre&gt;
  &lt;ul&gt;
   &lt;li&gt;将宿主机上的    &lt;code&gt;nginx&lt;/code&gt;目录改名为    &lt;code&gt;conf&lt;/code&gt;，要不然    &lt;code&gt;/mydata/nginx/nginx&lt;/code&gt;这个配置文件目录看着有点别扭；&lt;/li&gt;
&lt;/ul&gt;
  &lt;pre&gt;   &lt;code&gt;mv /mydata/nginx/nginx /mydata/nginx/conf
复制代码&lt;/code&gt;&lt;/pre&gt;
  &lt;ul&gt;
   &lt;li&gt;创建的Nginx容器复制完配置后就没用了，停止并删除容器；&lt;/li&gt;
&lt;/ul&gt;
  &lt;pre&gt;   &lt;code&gt;docker stop nginx
docker rm nginx
复制代码&lt;/code&gt;&lt;/pre&gt;
  &lt;ul&gt;
   &lt;li&gt;使用Docker命令重新启动Nginx服务，需要映射好配置文件，由于我们要支持HTTPS，还需要开放    &lt;code&gt;443&lt;/code&gt;端口。&lt;/li&gt;
&lt;/ul&gt;
  &lt;pre&gt;   &lt;code&gt;docker run -p 80:80 -p 443:443 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx  \
-v /mydata/nginx/conf:/etc/nginx \
-d nginx:1.10
复制代码&lt;/code&gt;&lt;/pre&gt;
  &lt;h3&gt;配置支持HTTPS&lt;/h3&gt;
  &lt;ul&gt;
   &lt;li&gt;将我们生成好的SSL证书和私钥拷贝到Nginx的    &lt;code&gt;html/ssl&lt;/code&gt;目录下；&lt;/li&gt;
&lt;/ul&gt;
  &lt;pre&gt;   &lt;code&gt;cp blog_nopass.key /mydata/nginx/html/ssl/
cp blog.crt /mydata/nginx/html/ssl/
复制代码&lt;/code&gt;&lt;/pre&gt;
  &lt;ul&gt;
   &lt;li&gt;接下来我们需要给    &lt;code&gt;blog.macrozheng.com&lt;/code&gt;这个域名添加HTTPS支持，在    &lt;code&gt;/mydata/nginx/conf/conf.d/&lt;/code&gt;目录下添加Nginx配置文件    &lt;code&gt;blog.conf&lt;/code&gt;，配置文件内容如下；&lt;/li&gt;
&lt;/ul&gt;
  &lt;pre&gt;   &lt;code&gt;server {
    listen       80; # 同时支持HTTP
    listen       443 ssl; # 添加HTTPS支持
    server_name  blog.macrozheng.com;
  
    #SSL配置
    ssl_certificate      /usr/share/nginx/html/ssl/blog/blog.crt; # 配置证书
    ssl_certificate_key  /usr/share/nginx/html/ssl/blog/blog_nopass.key; # 配置证书私钥
    ssl_protocols        TLSv1 TLSv1.1 TLSv1.2; # 配置SSL协议版本
    ssl_ciphers          ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; # 配置SSL加密算法
    ssl_prefer_server_ciphers  on; # 优先采取服务器算法
    ssl_session_cache    shared:SSL:10m; # 配置共享会话缓存大小
    ssl_session_timeout  10m; # 配置会话超时时间

    location / {
        root   /usr/share/nginx/html/www;
        index  index.html index.htm;
    }

    location /admin {
        alias   /usr/share/nginx/html/admin;
        index  index.html index.htm;
    }

    location /app {
        alias   /usr/share/nginx/html/app;
        index  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
复制代码&lt;/code&gt;&lt;/pre&gt;
  &lt;ul&gt;
   &lt;li&gt;通过    &lt;code&gt;HTTPS&lt;/code&gt;访问    &lt;code&gt;blog.macrozheng.com&lt;/code&gt;这个域名，由于我们使用的是自己签名的SSL证书，浏览器会提示    &lt;code&gt;您的连接不是私密连接&lt;/code&gt;，点击继续前往可以通过HTTPS正常访问；&lt;/li&gt;
&lt;/ul&gt;
  &lt;p&gt;   &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3a28bee467914241b99c061287862a01~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
  &lt;ul&gt;
   &lt;li&gt;我们可以查看下证书的    &lt;code&gt;颁发者&lt;/code&gt;信息，可以发现正好是之前我们创建SSL证书签名请求文件时录入的信息；&lt;/li&gt;
&lt;/ul&gt;
  &lt;p&gt;   &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/1a35b090d7a74442bfdb1ee4575fd904~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
  &lt;ul&gt;
   &lt;li&gt;接下来我们需要给    &lt;code&gt;api.macrozheng.com&lt;/code&gt;这个域名添加HTTPS支持，通过这个域名可以使用HTTPS访问我们的SpringBoot应用，    &lt;code&gt;api.crt&lt;/code&gt;和    &lt;code&gt;api_nopass.key&lt;/code&gt;文件需要自行生成，在    &lt;code&gt;/mydata/nginx/conf/conf.d/&lt;/code&gt;目录下添加Nginx配置文件    &lt;code&gt;api.conf&lt;/code&gt;，配置文件内容如下；&lt;/li&gt;
&lt;/ul&gt;
  &lt;pre&gt;   &lt;code&gt;server {
    listen       80; # 同时支持HTTP
    listen       443 ssl; # 添加HTTPS支持
    server_name  api.macrozheng.com; #修改域名

    #ssl配置
    ssl_certificate      /usr/share/nginx/html/ssl/api/api.crt; # 配置证书
    ssl_certificate_key  /usr/share/nginx/html/ssl/api/api_nopass.key; # 配置证书私钥
    ssl_protocols        TLSv1 TLSv1.1 TLSv1.2; # 配置SSL协议版本 # 配置SSL加密算法
    ssl_ciphers          ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers  on; # 优先采取服务器算法
    ssl_session_cache    shared:SSL:10m; # 配置共享会话缓存大小
    ssl_session_timeout  10m; # 配置会话超时时间

    location / {
        proxy_pass   http://192.168.3.101:8080; # 设置代理服务访问地址
        proxy_set_header  Host $http_host; # 设置客户端真实的域名（包括端口号）
        proxy_set_header  X-Real-IP  $remote_addr; # 设置客户端真实IP
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for; # 设置在多层代理时会包含真实客户端及中间每个代理服务器的IP
        proxy_set_header X-Forwarded-Proto $scheme; # 设置客户端真实的协议（http还是https）
        index  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
复制代码&lt;/code&gt;&lt;/pre&gt;
  &lt;ul&gt;
   &lt;li&gt;通过    &lt;code&gt;HTTPS&lt;/code&gt;访问    &lt;code&gt;api.macrozheng.com&lt;/code&gt;这个域名，访问地址为：https://api.macrozheng.com/swagger-ui.html&lt;/li&gt;
&lt;/ul&gt;
  &lt;p&gt;   &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/8f1b153247694e2fb4f93c1afe797053~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
  &lt;ul&gt;
   &lt;li&gt;任意调用一个接口测试下，比如说登录接口，可以发现已经可以通过HTTPS正常访问SpringBoot应用提供的接口。&lt;/li&gt;
&lt;/ul&gt;
  &lt;p&gt;   &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/7f3846cb9690493a8c46b9e53629d9a2~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
  &lt;h2&gt;使用受信任的证书&lt;/h2&gt;
  &lt;blockquote&gt;
   &lt;p&gt;之前我们使用的是自签名的SSL证书，对于浏览器来说是无效的。使用权威机构颁发的SSL证书浏览器才会认为是有效的，这里给大家推荐两种申请免费SSL证书的方法，一种是从阿里云申请，另一种是从FreeSSL申请。&lt;/p&gt;
&lt;/blockquote&gt;
  &lt;h3&gt;阿里云证书&lt;/h3&gt;
  &lt;ul&gt;
   &lt;li&gt;阿里云上可以申请的免费证书目前只有支持单个域名的DV级SSL证书。比如说你有    &lt;code&gt;blog.macrozheng.com&lt;/code&gt;和    &lt;code&gt;api.macrozheng.com&lt;/code&gt;两个二级域名需要使用HTTPS，就需要申请两个SSL证书。&lt;/li&gt;
&lt;/ul&gt;
  &lt;p&gt;   &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b9a64826602d4687a22f37073372c38e~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
  &lt;ul&gt;
   &lt;li&gt;申请成功后点击下载Nginx证书即可；&lt;/li&gt;
&lt;/ul&gt;
  &lt;p&gt;   &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/84d0aa19b77143629ffe7ea026f28f24~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
  &lt;ul&gt;
   &lt;li&gt;下载完成后解压会有下面两个文件；&lt;/li&gt;
&lt;/ul&gt;
  &lt;pre&gt;   &lt;code&gt;blog.macrozheng.com.key # 证书私钥文件
blog.macrozheng.com.pem # 证书文件
复制代码&lt;/code&gt;&lt;/pre&gt;
  &lt;ul&gt;
   &lt;li&gt;拷贝证书文件到Nginx的指定目录下，然后修改配置文件    &lt;code&gt;blog.conf&lt;/code&gt;，只要修改证书配置路径即可，修改完成后重启Nginx；&lt;/li&gt;
&lt;/ul&gt;
  &lt;pre&gt;   &lt;code&gt;#SSL配置
ssl_certificate      /usr/share/nginx/html/ssl/blog/blog.macrozheng.com.pem; # 配置证书
ssl_certificate_key  /usr/share/nginx/html/ssl/blog/blog.macrozheng.com.key; # 配置证书私钥
复制代码&lt;/code&gt;&lt;/pre&gt;
  &lt;ul&gt;
   &lt;li&gt;再次通过HTTPS访问    &lt;code&gt;blog.macrozheng.com&lt;/code&gt;这个域名，发现证书已经有效了，连接也是安全的了。&lt;/li&gt;
&lt;/ul&gt;
  &lt;p&gt;   &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/7081aed4b85a4957b64f5e326228e0b0~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
  &lt;h3&gt;FreeSSL证书&lt;/h3&gt;
  &lt;ul&gt;
   &lt;li&gt;如果你有使用通配符域名的需求，可以上    &lt;code&gt;FreeSSL&lt;/code&gt;申请SSL证书，不过免费的有效期只有3个月，这就意味着你过3个月就要重新申请一次了。&lt;/li&gt;
&lt;/ul&gt;
  &lt;p&gt;   &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ac1c6fe6181d417aa9ed96d32eb7b932~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
  &lt;ul&gt;
   &lt;li&gt;附上官网地址：https://freessl.cn/&lt;/li&gt;
&lt;/ul&gt;
  &lt;h3&gt;使用   &lt;code&gt;acme.sh&lt;/code&gt;自动申请证书&lt;/h3&gt;
  &lt;ul&gt;
   &lt;li&gt;    &lt;code&gt;acme.sh&lt;/code&gt;脚本实现了    &lt;code&gt;acme&lt;/code&gt;协议, 可以从    &lt;code&gt;letsencrypt&lt;/code&gt;生成免费的证书。一般我们申请的证书有效期都是1年，过期就要重新申请了，使用    &lt;code&gt;acme.sh&lt;/code&gt;脚本可以实现到期自动申请，再也不用担心证书过期了！&lt;/li&gt;
&lt;/ul&gt;
  &lt;p&gt;   &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/4d55276c789c4252898db6ee5b777dfd~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
  &lt;ul&gt;
   &lt;li&gt;附上官网地址：https://github.com/acmesh-official/acme.sh&lt;/li&gt;
&lt;/ul&gt;
  &lt;blockquote&gt;
   &lt;p&gt;本文 GitHub     &lt;a href="https://github.com/macrozheng/mall-learning" rel="nofollow noopener noreferrer" target="_blank"&gt;github.com/macrozheng/…&lt;/a&gt; 已经收录，欢迎大家Star！&lt;/p&gt;
&lt;/blockquote&gt;&lt;/div&gt;  &lt;div&gt;&lt;/div&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/61022-%E7%BD%91%E7%AB%99-api-https</guid>
      <pubDate>Wed, 28 Oct 2020 00:54:33 CST</pubDate>
    </item>
    <item>
      <title>打造自适应网站只用一个CSS属性就够了</title>
      <link>https://itindex.net/detail/60994-%E9%80%82%E5%BA%94-%E7%BD%91%E7%AB%99-css</link>
      <description>&lt;div&gt;  &lt;p&gt;用一个CSS属性创建一个响应式网站，让我们来看看它是如何做到的。&lt;/p&gt;
  &lt;p&gt;以这个模板为例，没有应用css属性。&lt;/p&gt;
  &lt;p&gt;   &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d0cfcecb05454ee8a74e208d5ac961ad~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
  &lt;p&gt;使用    &lt;code&gt;clamp()&lt;/code&gt; CSS函数，我们可以创建仅具有一个属性的响应式网站。&lt;/p&gt;
  &lt;p&gt;现在添加魔术CSS&lt;/p&gt;
  &lt;pre&gt;   &lt;code&gt;clamp(minimum, preferred, maximum);
复制代码&lt;/code&gt;&lt;/pre&gt;
  &lt;p&gt;在这里！你已经完成了✌&lt;/p&gt;
  &lt;p&gt;   &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/51c0b5e302114b2988657b89f41148e1~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
  &lt;h2&gt;说明&lt;/h2&gt;
  &lt;p&gt;   &lt;code&gt;clamp() &lt;/code&gt;的工作原理是“夹紧”或限制一个灵活的值，使其处于最小和最大范围之间。&lt;/p&gt;
  &lt;p&gt;使用方法如下：&lt;/p&gt;
  &lt;ol&gt;
   &lt;li&gt;minimum 最小值：例如     &lt;code&gt;16px&lt;/code&gt;&lt;/li&gt;
   &lt;li&gt;flexible 弹性值：例如     &lt;code&gt;5vw&lt;/code&gt;&lt;/li&gt;
   &lt;li&gt;maximum 最大值：例如     &lt;code&gt;34px&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
  &lt;pre&gt;   &lt;code&gt;h1 {
  font-size: clamp(16px, 5vw, 34px);
}
复制代码&lt;/code&gt;&lt;/pre&gt;
  &lt;p&gt;在此示例中，仅当该值大于    &lt;code&gt;16px&lt;/code&gt; 且小于    &lt;code&gt;34px&lt;/code&gt; 时,   &lt;code&gt;h1&lt;/code&gt; 字体大小值将为视口宽度的    &lt;code&gt;5％&lt;/code&gt;。&lt;/p&gt;
  &lt;p&gt;例如，如果你的视口宽度是    &lt;code&gt;300px&lt;/code&gt;，你的    &lt;code&gt;5vw&lt;/code&gt; 值将等于    &lt;code&gt;15px&lt;/code&gt;，但是，你将该字体大小值限制为最小    &lt;code&gt;16px&lt;/code&gt;，因此这就是将要发生的情况。&lt;/p&gt;
  &lt;p&gt;另一方面，如果你的视口宽度为    &lt;code&gt;1400px&lt;/code&gt;，则    &lt;code&gt;5vw&lt;/code&gt; 将高达    &lt;code&gt;70px&lt;/code&gt;！但幸运的是，你将该最大值限制为    &lt;code&gt;34px&lt;/code&gt;，因此它不会超过该值。&lt;/p&gt;
  &lt;p&gt;   &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2d21729f447b4ca8be6cb27616e6b808~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
  &lt;p&gt;在线Demo：https://dip15739.github.io/ResponsiveWebsite-CSSproperty/&lt;/p&gt;
  &lt;p&gt;我可以为此模板添加此代码...&lt;/p&gt;
  &lt;pre&gt;   &lt;code&gt;img {
  width: clamp(15vw, 800%, 100%);
}
h1 {
  font-size: clamp(20px, 5vw, 35px);
}
p {
  font-size: clamp(10px, 4vw, 20px);
}
复制代码&lt;/code&gt;&lt;/pre&gt;
  &lt;p&gt;而从字面上看，接受任何其他长度、频率、角度、时间、百分比、数字或整数的属性。&lt;/p&gt;
  &lt;p&gt;   &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/9a7f772cc00b488599ef55034281873d~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
  &lt;hr&gt;&lt;/hr&gt;
  &lt;p&gt;原文：   &lt;a href="https://dev.to/dip15739/responsive-website-with-only-1-css-property-3ea9" rel="nofollow noopener noreferrer" target="_blank"&gt;dev.to/dip15739&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;作者：Dip Vachhani&lt;/p&gt;&lt;/div&gt;  &lt;div&gt;&lt;/div&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/60994-%E9%80%82%E5%BA%94-%E7%BD%91%E7%AB%99-css</guid>
      <pubDate>Sun, 08 Nov 2020 14:58:25 CST</pubDate>
    </item>
    <item>
      <title>网盘资源搜索网站合集</title>
      <link>https://itindex.net/detail/60962-%E7%BD%91%E7%9B%98-%E8%B5%84%E6%BA%90-%E6%90%9C%E7%B4%A2</link>
      <description>&lt;h2&gt;百度网盘资源搜索&lt;/h2&gt; &lt;ul&gt;  &lt;li&gt;小马盘搜索：   &lt;a href="https://www.xiaomapan.com/"&gt;https://www.xiaomapan.com/&lt;/a&gt;   &lt;ul&gt;    &lt;li&gt;使用要求：免费&lt;/li&gt;    &lt;li&gt;     &lt;a href="https://greasyfork.org/zh-CN/scripts/408449-%E7%BD%91%E7%9B%98%E6%90%9C%E7%B4%A2-%E8%87%AA%E5%8A%A8%E8%B7%B3%E8%BD%AC"&gt;网盘搜索 自动跳转脚本&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;  &lt;li&gt;酷搜：   &lt;a href="https://www.kolsou.com/" rel="noreferrer noopener" target="_blank"&gt;https://www.kolsou.com/&lt;/a&gt;   &lt;ul&gt;    &lt;li&gt;使用要求：免费&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;  &lt;li&gt;轻舟网：   &lt;a href="https://www.qzhou.com.cn/"&gt;https://www.qzhou.com.cn/&lt;/a&gt;   &lt;ul&gt;    &lt;li&gt;使用要求：免费&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;  &lt;li&gt;大圣盘：   &lt;a href="https://www.dashengpan.com/" rel="noreferrer noopener" target="_blank"&gt;https://www.dashengpan.com/&lt;/a&gt;   &lt;ul&gt;    &lt;li&gt;使用要求：扫码关注公众号&lt;/li&gt;    &lt;li&gt;     &lt;a href="https://greasyfork.org/zh-CN/scripts/398352"&gt;https://greasyfork.org/zh-CN/scripts/398352&lt;/a&gt; 之前这个脚本是大力盘的，可以免关注公众号获得百度网盘地址，但是失效了，根据脚本代码，可以在chrome类的浏览器使用 F12 - Console - 输入 __NUXT__.data[0].url&lt;/li&gt;    &lt;li&gt;     &lt;a href="https://www.buyfree.cc/index.php/archives/50/"&gt;罗马盘/大力盘/大圣盘等网站，暴力破解，绕过付费&lt;/a&gt;|     &lt;a href="https://www.yuque.com/feierbuni/yvyxxd/36484e85-6350-4e1e-905a-96f2e0f17bc5"&gt;备份&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;a href="https://greasyfork.org/zh-CN/scripts/412173-%E5%A4%A7%E5%9C%A3%E7%9B%98-%E5%A4%A7%E5%8A%9B%E7%9B%98-%E7%BD%97%E9%A9%AC%E7%9B%98%E7%BB%95%E8%BF%87%E9%99%90%E5%88%B6%E6%90%9C%E7%B4%A2%E6%9F%A5%E7%9C%8B%E7%99%BE%E5%BA%A6%E7%BD%91%E7%9B%98%E8%B5%84%E6%BA%90"&gt;大圣盘-大力盘-罗马盘绕过限制搜索查看百度网盘资源脚本&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;  &lt;li&gt;大力盘：   &lt;a href="https://www.dalipan.com/" rel="noreferrer noopener" target="_blank"&gt;https://www.dalipan.com/&lt;/a&gt;   &lt;ul&gt;    &lt;li&gt;使用要求：扫码关注公众号&lt;/li&gt;&lt;/ul&gt;   &lt;ul&gt;    &lt;li&gt;     &lt;a href="https://greasyfork.org/zh-CN/scripts/398352"&gt;https://greasyfork.org/zh-CN/scripts/398352&lt;/a&gt; 之前这个脚本可以免关注公众号获得百度网盘地址，但是失效了，根据脚本代码，可以在chrome类的浏览器使用 F12 - Console - 输入 __NUXT__.data[0].url&lt;/li&gt;&lt;/ul&gt;   &lt;ul&gt;    &lt;li&gt;     &lt;a href="https://www.buyfree.cc/index.php/archives/50/"&gt;罗马盘/大力盘/大圣盘等网站，暴力破解，绕过付费&lt;/a&gt;|     &lt;a href="https://www.yuque.com/feierbuni/yvyxxd/36484e85-6350-4e1e-905a-96f2e0f17bc5"&gt;备份&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;a href="https://greasyfork.org/zh-CN/scripts/412173-%E5%A4%A7%E5%9C%A3%E7%9B%98-%E5%A4%A7%E5%8A%9B%E7%9B%98-%E7%BD%97%E9%A9%AC%E7%9B%98%E7%BB%95%E8%BF%87%E9%99%90%E5%88%B6%E6%90%9C%E7%B4%A2%E6%9F%A5%E7%9C%8B%E7%99%BE%E5%BA%A6%E7%BD%91%E7%9B%98%E8%B5%84%E6%BA%90"&gt;大圣盘-大力盘-罗马盘绕过限制搜索查看百度网盘资源脚本&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;a href="https://greasyfork.org/zh-CN/scripts/405934-%E5%A4%A7%E5%8A%9B%E7%9B%98-%E5%B0%8F%E7%99%BD%E7%9B%98-%E8%87%AA%E5%8A%A8%E8%B7%B3%E8%BD%AC"&gt;大力盘\小白盘 自动跳转脚本&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;  &lt;li&gt;罗马盘：   &lt;a href="https://www.luomapan.com/" rel="noreferrer noopener" target="_blank"&gt;https://www.luomapan.com/&lt;/a&gt;   &lt;ul&gt;    &lt;li&gt;使用要求：扫码关注公众号&lt;/li&gt;&lt;/ul&gt;   &lt;ul&gt;    &lt;li&gt;     &lt;a href="https://greasyfork.org/zh-CN/scripts/398352"&gt;https://greasyfork.org/zh-CN/scripts/398352&lt;/a&gt; 之前这个脚本是大力盘的，可以免关注公众号获得百度网盘地址，但是失效了，根据脚本代码，可以在chrome类的浏览器使用 F12 - Console - 输入 __NUXT__.data[0].url&lt;/li&gt;    &lt;li&gt;     &lt;a href="https://www.buyfree.cc/index.php/archives/50/"&gt;罗马盘/大力盘/大圣盘等网站，暴力破解，绕过付费&lt;/a&gt;|     &lt;a href="https://www.yuque.com/feierbuni/yvyxxd/36484e85-6350-4e1e-905a-96f2e0f17bc5"&gt;备份&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;a href="https://greasyfork.org/zh-CN/scripts/412173-%E5%A4%A7%E5%9C%A3%E7%9B%98-%E5%A4%A7%E5%8A%9B%E7%9B%98-%E7%BD%97%E9%A9%AC%E7%9B%98%E7%BB%95%E8%BF%87%E9%99%90%E5%88%B6%E6%90%9C%E7%B4%A2%E6%9F%A5%E7%9C%8B%E7%99%BE%E5%BA%A6%E7%BD%91%E7%9B%98%E8%B5%84%E6%BA%90"&gt;大圣盘-大力盘-罗马盘绕过限制搜索查看百度网盘资源脚本&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;  &lt;li&gt;小鸟盘：   &lt;a href="https://www.birdiesearch.com/" rel="noreferrer noopener" target="_blank"&gt;https://www.birdiesearch.com/&lt;/a&gt;   &lt;ul&gt;    &lt;li&gt;使用要求：购买邀请码5元&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;  &lt;li&gt;猪猪盘：   &lt;a href="http://www.zhuzhupan.com/" rel="noreferrer noopener" target="_blank"&gt;http://www.zhuzhupan.com/&lt;/a&gt;   &lt;ul&gt;    &lt;li&gt;使用要求：购买5元一天不限次数&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;  &lt;li&gt;凌风云：   &lt;a href="https://www.lingfengyun.com/" rel="noreferrer noopener" target="_blank"&gt;https://www.lingfengyun.com/&lt;/a&gt;   &lt;ul&gt;    &lt;li&gt;使用要求：购买VIP&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;  &lt;li&gt;去转盘：   &lt;a href="https://www.quzhuanpan.com/" rel="noreferrer noopener" target="_blank"&gt;https://www.quzhuanpan.com/&lt;/a&gt;   &lt;ul&gt;    &lt;li&gt;使用要求：扫码关注公众号（每天免费下载3个资源）或者购买VIP（17元=45天）&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;  &lt;li&gt;小白盘：   &lt;a href="https://www.xiaobaipan.com/" rel="noreferrer noopener" target="_blank"&gt;https://www.xiaobaipan.com/&lt;/a&gt;   &lt;ul&gt;    &lt;li&gt;使用要求：扫码关注公众号&lt;/li&gt;    &lt;li&gt;     &lt;a href="https://www.buyfree.cc/index.php/archives/96/"&gt;绕过“付费”，破解小白盘&lt;/a&gt;|     &lt;a href="https://www.yuque.com/feierbuni/yvyxxd/43ca7288-0892-4108-a590-4041b0327532"&gt;备份&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;a href="https://greasyfork.org/zh-CN/scripts/405934-%E5%A4%A7%E5%8A%9B%E7%9B%98-%E5%B0%8F%E7%99%BD%E7%9B%98-%E8%87%AA%E5%8A%A8%E8%B7%B3%E8%BD%AC"&gt;大力盘\小白盘 自动跳转脚本&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;  &lt;li&gt;56网盘：   &lt;a href="https://56wangpan.com/" rel="noreferrer noopener" target="_blank"&gt;https://56wangpan.com/&lt;/a&gt;   &lt;ul&gt;    &lt;li&gt;使用要求：在 “查看分享文件/目录” 弹出的对话框，选右下角的 “直接跳转” 可以无需扫码关注公众号免费使用&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;  &lt;li&gt;盘搜搜：   &lt;a href="https://pansoso.com/" rel="noreferrer noopener" target="_blank"&gt;https://pansoso.com/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;小可搜搜：   &lt;a href="https://www.xiaokesoso.com/" rel="noreferrer noopener" target="_blank"&gt;https://www.xiaokesoso.com/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;小昭来啦：   &lt;a href="https://www.xiaozhaolaila.com/" rel="noreferrer noopener" target="_blank"&gt;https://www.xiaozhaolaila.com/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;天天云搜：   &lt;a href="https://www.ttyunsou.com/" rel="noreferrer noopener" target="_blank"&gt;https://www.ttyunsou.com/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;微友搜索：   &lt;a href="http://www.weiyoou.com/" rel="noreferrer noopener" target="_blank"&gt;http://www.weiyoou.com/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;云盘精灵：   &lt;a href="https://www.yunpanjingling.com/" rel="noreferrer noopener" target="_blank"&gt;https://www.yunpanjingling.com/&lt;/a&gt;   &lt;ul&gt;    &lt;li&gt;使用要求：购买云豆（5元=100颗）&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;  &lt;li&gt;盘么么：   &lt;a href="http://www.panmeme.com/" rel="noreferrer noopener" target="_blank"&gt;http://www.panmeme.com/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;天天云搜：   &lt;a href="https://www.ttyunsou.cn/mm/" rel="noreferrer noopener" target="_blank"&gt;https://www.ttyunsou.cn/mm/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;坑搜盘：   &lt;a href="http://www.kengso.com/" rel="noreferrer noopener" target="_blank"&gt;http://www.kengso.com/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;优质吧：   &lt;a href="https://uzi8.cn/" rel="noreferrer noopener" target="_blank"&gt;https://uzi8.cn/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;fastsoso：   &lt;a href="https://www.fastsoso.cn/" rel="noreferrer noopener" target="_blank"&gt;https://www.fastsoso.cn/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;59盘：   &lt;a href="http://www.59pan.com/" rel="noreferrer noopener" target="_blank"&gt;http://www.59pan.com/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;99搜索：   &lt;a href="https://www.99baiduyun.com/" rel="noreferrer noopener" target="_blank"&gt;https://www.99baiduyun.com/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;盘搜：   &lt;a href="http://pansou.com/" rel="noreferrer noopener" target="_blank"&gt;http://pansou.com/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;云铺子：   &lt;a href="http://www.yunpz.net/" rel="noreferrer noopener" target="_blank"&gt;http://www.yunpz.net/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;文件搜：   &lt;a href="http://wjsou.com/" rel="noreferrer noopener" target="_blank"&gt;http://wjsou.com/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;百度云搜索搜：   &lt;a href="http://www.baiduyunsousou.com/" rel="noreferrer noopener" target="_blank"&gt;http://www.baiduyunsousou.com/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;云搜：   &lt;a href="http://daysou.com/" rel="noreferrer noopener" target="_blank"&gt;http://daysou.com/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;网盘传奇：   &lt;a href="https://jidanso.com/" rel="noreferrer noopener" target="_blank"&gt;https://jidanso.com/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;哎呦喂呀：   &lt;a href="http://aiyoweia.com/" rel="noreferrer noopener" target="_blank"&gt;http://aiyoweia.com/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;及搜盘：   &lt;a href="http://www.jisoupan.com/" rel="noreferrer noopener" target="_blank"&gt;http://www.jisoupan.com/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;特白度：   &lt;a href="http://www.tebaidu.com/" rel="noreferrer noopener" target="_blank"&gt;http://www.tebaidu.com/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;SOV5搜索：   &lt;a href="http://sov5.cn/" rel="noreferrer noopener" target="_blank"&gt;http://sov5.cn/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;云盘搜索大师：   &lt;a href="https://www.xxhh360.com/" rel="noreferrer noopener" target="_blank"&gt;https://www.xxhh360.com/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;搜盘：   &lt;a href="http://www.soupan.info/" rel="noreferrer noopener" target="_blank"&gt;http://www.soupan.info/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;毒盘搜索：   &lt;a href="https://aizhaomu.com/" rel="noreferrer noopener" target="_blank"&gt;https://aizhaomu.com/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;VeryPan：   &lt;a href="http://www.verypan.com/" rel="noreferrer noopener" target="_blank"&gt;http://www.verypan.com/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;毒盘资源：   &lt;a href="http://www.friok.com/" rel="noreferrer noopener" target="_blank"&gt;http://www.friok.com/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;6miu：   &lt;a href="http://baiduyun.6miu.com/" rel="noreferrer noopener" target="_blank"&gt;http://baiduyun.6miu.com/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;51搜盘：   &lt;a href="http://www.51sopan.cn/" rel="noreferrer noopener" target="_blank"&gt;http://www.51sopan.cn/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;热盘搜：   &lt;a href="http://www.repanso.com/" rel="noreferrer noopener" target="_blank"&gt;http://www.repanso.com/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;SOSO云盘：   &lt;a href="https://www.sosoyunpan.com/" rel="noreferrer noopener" target="_blank"&gt;https://www.sosoyunpan.com/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;在线工具搜索：   &lt;a href="https://tool.lu/pansou/" rel="noreferrer noopener" target="_blank"&gt;https://tool.lu/pansou/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;搜云盘：   &lt;a href="https://soyunpan.com/" rel="noreferrer noopener" target="_blank"&gt;https://soyunpan.com/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;Pan58：   &lt;a href="http://www.pan58.com/" rel="noreferrer noopener" target="_blank"&gt;http://www.pan58.com/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;其他网盘资源搜索&lt;/h2&gt; &lt;h3&gt;蓝奏云&lt;/h3&gt; &lt;ul&gt;  &lt;li&gt;小鸟搜索：   &lt;a href="https://www.birdiesearch.com/" rel="noreferrer noopener" target="_blank"&gt;https://www.birdiesearch.com/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;小七线报：   &lt;a href="https://www.xqxianbao.com/lzys/" rel="noreferrer noopener" target="_blank"&gt;https://www.xqxianbao.com/lzys/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;/li&gt;  &lt;li&gt;各大搜索引擎搜索：&lt;/li&gt;  &lt;li&gt;site:   &lt;a href="http://lanzous.com/" rel="noreferrer noopener" target="_blank"&gt;lanzous.com&lt;/a&gt; +关键字&lt;/li&gt;  &lt;li&gt;&lt;/li&gt;  &lt;li&gt;两个支持蓝奏云搜索的APP：&lt;/li&gt;  &lt;li&gt;蓝瘦和聚应用.&lt;/li&gt;&lt;/ul&gt; &lt;h3&gt;Google Drive&lt;/h3&gt; &lt;ul&gt;  &lt;li&gt;找PP-Google Drive搜索引擎：   &lt;a href="https://zhao.pp.ua/"&gt;https://zhao.pp.ua&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;h3&gt;城通网盘&lt;/h3&gt; &lt;ul&gt;  &lt;li&gt;蓝菊花搜索&lt;/li&gt;  &lt;li&gt;   &lt;a href="http://www.lanjuhua.com/" rel="noreferrer noopener" target="_blank"&gt;http://www.lanjuhua.com/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;城通资源分享站&lt;/li&gt;  &lt;li&gt;   &lt;a href="http://ct.vpan123.com/" rel="noreferrer noopener" target="_blank"&gt;http://ct.vpan123.com/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;h3&gt;新浪微盘&lt;/h3&gt; &lt;ul&gt;  &lt;li&gt;微盘官方搜索&lt;/li&gt;  &lt;li&gt;   &lt;a href="https://vdisk.weibo.com/wap/" rel="noreferrer noopener" target="_blank"&gt;https://vdisk.weibo.com/wap/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;h3&gt;微云&lt;/h3&gt; &lt;ul&gt;  &lt;li&gt;小不点&lt;/li&gt;  &lt;li&gt;   &lt;a href="https://www.xiaoso.net/" rel="noreferrer noopener" target="_blank"&gt;https://www.xiaoso.net/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;网盘提取码获取&lt;/h2&gt; &lt;ul&gt;  &lt;li&gt;自动填写网盘密码的浏览器扩展有：   &lt;ul&gt;    &lt;li&gt;     &lt;a href="https://a.newday.me/"&gt;集装箱&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;a href="http://www.aisouziyuan.com/"&gt;爱搜资源助手&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;百度云分享链接一键登录&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;  &lt;li&gt;它们的数据来源不同，都装上有更大几率获取密码。&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;网盘下载工具&lt;/h2&gt; &lt;ul&gt;  &lt;li&gt;百度云不限速:&lt;/li&gt;  &lt;li&gt;KinhDown：   &lt;a href="https://www.lanzoux.com/s/KinhDown"&gt;https://www.lanzoux.com/s/KinhDown&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;亿寻   &lt;ul&gt;    &lt;li&gt;本程序仅为寻人而写，想通过其请大家帮助寻人。如果你对此不认同，请不要使用本程序。 &lt;/li&gt;    &lt;li&gt;可免登录下载百度云文件，速度可达满速，目前使用正常，推荐。&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;  &lt;li&gt;解析网站 （暂无可用）   &lt;ul&gt;    &lt;li&gt;直接在该网址后加上分享链接通过IDM下载，速度可观。&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;  &lt;li&gt;雷鸟下载   &lt;ul&gt;    &lt;li&gt;一款基于多资源超线程技术的下载软件，针对各类网盘做了下载优化。&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;  &lt;li&gt;6盘小白羊   &lt;ul&gt;    &lt;li&gt;无需登录，使用我内置6盘账号，直接下载百度分享链接.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;  &lt;li&gt;共享账号   &lt;ul&gt;    &lt;li&gt;本论坛，某宝，某鱼，某多搜索关键词即可。&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;  &lt;li&gt;直链下载助手   &lt;ul&gt;    &lt;li&gt;免费开源的油猴百度云直链脚本，通过该脚本配合IDM、XDown等下载百度云文件。&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;  &lt;li&gt;速盘   &lt;ul&gt;    &lt;li&gt;免登录，自动查询提取码，极速的度盘下载工具，通过流量收费。&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;  &lt;li&gt;爱奇艺万能播放器   &lt;ul&gt;    &lt;li&gt;点击右上角云盘按钮登录，可享受不限速，使用过多也会凉凉. &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;  &lt;li&gt;官方下载   &lt;ul&gt;    &lt;li&gt;通过观看广告可获取一定的加速、目前客户端提供了闲置宽带加速，请自行选择使用。&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;致敬之前的项目： &lt;/p&gt; &lt;ul&gt;  &lt;li&gt;   &lt;s&gt;pandownload：2020年4月15日，作者因“侵犯百度网盘用户数据隐私”被抓，停止维护。&lt;/s&gt;&lt;/li&gt;  &lt;li&gt;   &lt;s&gt;PDown：6月13日起停止开发维护、后续项目由他人接手，迫于百度法务压力于6月27日彻底停服。&lt;/s&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;目前百度是针对账号进行限速，当一个非会员账号下载量达到一定阈值就会触发限速。账号被限速之后容易出现下载错误、掉连接数等问题，需要过几天或者开通会员才会恢复。&lt;/p&gt; &lt;h2&gt;PanDownload网页复刻版&lt;/h2&gt; &lt;h3&gt;源码&lt;/h3&gt; &lt;ul&gt;  &lt;li&gt;CloudFlare Workers版：   &lt;a href="https://github.com/TkzcM/baiduwp"&gt;https://github.com/TkzcM/baiduwp&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;PHP版：   &lt;a href="https://github.com/yuantuo666/baiduwp-php"&gt;https://github.com/yuantuo666/baiduwp-php&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;h3&gt;网友搭建网站&lt;/h3&gt; &lt;p&gt;网友使用上方源码搭建的，如果使用的是百度网盘VIP账号的cookie，可以获取到高速下载地址，因为这类网站容易失效，就不另开帖了，放这里等失效就删掉了&lt;/p&gt; &lt;ul&gt;  &lt;li&gt;http://8945gs.ga/&lt;/li&gt;  &lt;li&gt;https://bdwp.vip/&lt;/li&gt;  &lt;li&gt;https://baidupan.storming.ltd/&lt;/li&gt;  &lt;li&gt;http://blog.xxatf.top/&lt;/li&gt;  &lt;li&gt;https://pan.kdbaidu.com/&lt;/li&gt;  &lt;li&gt;http://fxrcxjq.com/bd/&lt;/li&gt;  &lt;li&gt;   &lt;a href="http://pan.0ddt.com/"&gt;http://pan.0ddt.com&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;a href="https://pan.biomed.icu/"&gt;https://pan.biomed.icu/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;a href="https://baidu.lenchan.workers.dev/"&gt;https://baidu.lenchan.workers.dev/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;a href="https://bdpan.effervescence.workers.dev/"&gt;https://bdpan.effervescence.workers.dev/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;a href="https://frosty-mountain-d7c1.of7013nqoa472.workers.dev/"&gt;https://frosty-mountain-d7c1.of7013nqoa472.workers.dev/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;a href="http://bdpan.404lab.top/"&gt;http://bdpan.404lab.top/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;a href="http://pandl.club/"&gt;http://pandl.club/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;a href="http://pandown.club/"&gt;http://pandown.club/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;a href="https://pan.leasr.tk/"&gt;https://pan.leasr.tk/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;a href="http://www.wouuz.com/onlinedownload/baiduwp.html"&gt;http://www.wouuz.com/onlinedownload/baiduwp.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;百度网盘秒传链接转存&lt;/h2&gt; &lt;ul&gt;  &lt;li&gt;   &lt;a href="https://rapid.acg.uy/"&gt;https://rapid.acg.uy/&lt;/a&gt;    &lt;a href="https://rapid.acg.uy/manual.html"&gt;使用教程&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;天翼云盘直链解析&lt;/h2&gt; &lt;ul&gt;  &lt;li&gt;   &lt;a href="https://api.zzux.net/189/"&gt;https://api.zzux.net/189/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;参考资料&lt;/h2&gt; &lt;ul&gt;  &lt;li&gt;百度网盘搜索资源索引：   &lt;a href="https://adzhp.cn/wang-pan-sou-suo.html"&gt;https://adzhp.cn/wang-pan-sou-suo.html&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;百度网盘搜索资源索引：   &lt;a href="https://share.mubu.com/doc/aU2dU_Fkew"&gt;https://share.mubu.com/doc/aU2dU_Fkew&lt;/a&gt; 密码：es7e&lt;/li&gt;&lt;/ul&gt;
     
    &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/60962-%E7%BD%91%E7%9B%98-%E8%B5%84%E6%BA%90-%E6%90%9C%E7%B4%A2</guid>
      <pubDate>Mon, 26 Oct 2020 11:41:48 CST</pubDate>
    </item>
    <item>
      <title>磁力链接BT种子电驴搜索下载网站合集 | 合集网</title>
      <link>https://itindex.net/detail/60961-%E7%A3%81%E5%8A%9B%E9%93%BE%E6%8E%A5-bt-%E7%A7%8D%E5%AD%90</link>
      <description>&lt;div&gt;    &lt;div&gt;&lt;/div&gt;    &lt;div&gt;      &lt;a href="https://www.heji.ltd/" title=""&gt;&lt;/a&gt;&lt;/div&gt;    &lt;div&gt;   &lt;h2&gt;国内磁力搜索&lt;/h2&gt;   &lt;ul&gt;    &lt;li&gt;磁力爬永久地址：     &lt;a href="https://www.cilipa.com/"&gt;https://www.cilipa.com&lt;/a&gt;（被墙）     &lt;ul&gt;      &lt;li&gt;备用域名：       &lt;a href="https://www.cilipapa.com/"&gt;https://www.cilipapa.com&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;地址发布页：       &lt;a href="https://www.cilipa.net/"&gt;https://www.cilipa.net&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;    &lt;li&gt;熊猫磁力：     &lt;a href="https://xiongmao23.icu/"&gt;https://xiongmao23.icu/&lt;/a&gt;     &lt;ul&gt;      &lt;li&gt;地址发布页：       &lt;a href="https://xiongmaocl.fun/"&gt;https://xiongmaocl.fun&lt;/a&gt;（被墙）&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;    &lt;li&gt;磁力巴士永久地址：     &lt;a href="http://www.bvbus.com/"&gt;http://www.bvbus.com&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;磁力狗：     &lt;a href="http://ciligou.app/"&gt;http://ciligou.app/&lt;/a&gt;     &lt;ul&gt;      &lt;li&gt;备用地址：       &lt;a href="http://0200.org/"&gt;http://0200.org&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;    &lt;li&gt;BT-btt永久地址：      &lt;a href="https://u3c3.com/"&gt;https://u3c3.com/&lt;/a&gt; （被墙）     &lt;ul&gt;      &lt;li&gt;备用地址：       &lt;a href="https://u9c9.com/"&gt;https://u9c9.com/&lt;/a&gt;        &lt;a href="https://u7c7.com/"&gt;https://u7c7.com/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;     &lt;ul&gt;      &lt;li&gt;地址发布页：       &lt;a href="https://github.com/u3c3/bt-btt"&gt;https://github.com/u3c3/bt-btt&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;    &lt;li&gt;Push BT平台：     &lt;a href="http://m.pushbt.top/"&gt;http://m.pushbt.top/&lt;/a&gt; 只有用手机浏览器才显示网站内容     &lt;ul&gt;      &lt;li&gt;网址防丢失邮箱pushbtwebsite@gmail.com&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;    &lt;li&gt;BT1207：     &lt;a href="https://bt1207.fun/"&gt;https://bt1207.fun/&lt;/a&gt;     &lt;ul&gt;      &lt;li&gt;备用地址：       &lt;a href="https://bt1207cl.icu/"&gt;https://bt1207cl.icu/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;    &lt;li&gt;SkrBT：      &lt;a href="https://sktbtcil.buzz/"&gt;https://sktbtcil.buzz/&lt;/a&gt;     &lt;ul&gt;      &lt;li&gt;备用地址：       &lt;a href="https://skrbt.fun/"&gt;https://skrbt.fun/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;    &lt;li&gt;MAG磁力站永久地址：      &lt;a href="http://cili001.com/"&gt;http: //cili001.com&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Sobt永久地址：     &lt;a href="http://sobt.me/"&gt;http://sobt.me/&lt;/a&gt;     &lt;ul&gt;      &lt;li&gt;备用地址：       &lt;a href="http://www.sobt5.pw/"&gt;http://www.sobt5.pw/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;    &lt;li&gt;Btdad：      &lt;a href="http://www.btdad.xyz/"&gt;http://www.btdad.xyz/&lt;/a&gt;     &lt;ul&gt;      &lt;li&gt;备用地址：       &lt;a href="http://www.btdad.life/"&gt;http://www.btdad.life&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;    &lt;li&gt;雨花阁地址发布页1 ：     &lt;a href="https://www.yuhuage.club/"&gt;https://www.yuhuage.club/&lt;/a&gt;     &lt;ul&gt;      &lt;li&gt;地址发布页2：       &lt;a href="https://www.btcherries.xyz/"&gt;https://www.btcherries.xyz/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;     &lt;ul&gt;      &lt;li&gt;备用地址发布页：       &lt;a href="https://github.com/yuhuage/dizhi/blob/master/README.md"&gt;https://github.com/yuhuage/dizhi/blob/master/README.md&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;发邮件到dxj880@gmail.com获取最新地址&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;    &lt;li&gt;磁力宝：      &lt;a href="http://www.clb.biz/"&gt;http://www.clb.biz/&lt;/a&gt;     &lt;ul&gt;      &lt;li&gt;备用地址：       &lt;a href="http://9321.org/"&gt;http://9321.org&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;    &lt;li&gt;巴士资源搜索：     &lt;a href="http://5338.org/"&gt;http://5338.org&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;磁力天堂永久地址：     &lt;a href="https://www.cltt.me/"&gt;https://www.cltt.me&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Bthub：      &lt;a href="https://bthub.site/"&gt;https://bthub.site/&lt;/a&gt; （被墙）     &lt;ul&gt;      &lt;li&gt;备用地址：       &lt;a href="https://bth01278213.monster/"&gt;https://bth01278213.monster/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;     &lt;ul&gt;      &lt;li&gt;地址发布页1 ：       &lt;a href="https://github.com/fwonggh/Bthub"&gt;https://github.com/fwonggh/Bthub&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;地址发布页2：       &lt;a href="https://gitlab.com/fwonggh/Bthub/-/blob/master/README.md"&gt;https://gitlab.com/fwonggh/Bthub/-/blob/master/README.md&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;    &lt;li&gt;btfox：     &lt;a href="http://btfox0.net/"&gt;http://btfox0.net&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;BT精灵：      &lt;a href="https://btring.com/"&gt;https://btring.com&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;magnetW：      &lt;a href="https://github.com/xiandanin/magnetW"&gt;https://github.com/xiandanin/magnetW&lt;/a&gt;     &lt;ul&gt;      &lt;li&gt;聚合搜索，目前只更新软件版，       &lt;a href="https://github.com/xiandanin/magnetW/wiki"&gt;win和mac&lt;/a&gt;下载&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;    &lt;li&gt;老王磁力：      &lt;a href="https://laowang.fun/"&gt;https://laowang.fun/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;   &lt;h2&gt;国外磁力搜索&lt;/h2&gt;   &lt;ul&gt;    &lt;li&gt;RARBG：      &lt;a href="https://rarbgaccess.org/"&gt;https://rarbgaccess.org/&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;BTSOW：      &lt;a href="https://btos.pw/"&gt;https://btos.pw/&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Data-Iceberg：      &lt;a href="https://data-iceberg.com/"&gt;https://data-iceberg.com/&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;AIO Search：      &lt;a href="https://www.aiosearch.com/"&gt;https://www.aiosearch.com/&lt;/a&gt; 磁力聚合搜索网站&lt;/li&gt;    &lt;li&gt;东京图书馆：      &lt;a href="https://www.tokyotosho.info/"&gt;https://www.tokyotosho.info/&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;海盗湾：      &lt;a href="https://thepiratebays.info/"&gt;https://thepiratebays.info/&lt;/a&gt;      &lt;a href="https://piratebayproxy.info/"&gt;永久发布页&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;ØMagnet：     &lt;a href="https://0mag.net/"&gt;https://0mag.net&lt;/a&gt; 正经资源搜不到&lt;/li&gt;&lt;/ul&gt;   &lt;h2&gt;磁力下载站&lt;/h2&gt;   &lt;ul&gt;    &lt;li&gt;MP4吧：      &lt;a href="http://mp4ba.cc/"&gt;http://mp4ba.cc/&lt;/a&gt;     &lt;ul&gt;      &lt;li&gt;提供下载方式：磁力链接、BT种子、百度网盘&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;    &lt;li&gt;人人影视：     &lt;a href="http://www.zmz2019.com/" rel="noreferrer noopener" target="_blank"&gt;http://www.zmz2019.com/&lt;/a&gt;     &lt;ul&gt;      &lt;li&gt;磁力、电驴&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;    &lt;li&gt;美剧天堂：     &lt;a href="https://www.meijutt.com/" rel="noreferrer noopener" target="_blank"&gt;https://www.meijutt.com/&lt;/a&gt;     &lt;ul&gt;      &lt;li&gt;磁力、电驴&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;    &lt;li&gt;一站搜：      &lt;a href="http://videos.yizhansou.com/"&gt;http://videos.yizhansou.com/&lt;/a&gt;     &lt;ul&gt;      &lt;li&gt;磁力、电驴&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;    &lt;li&gt;片源网：     &lt;a href="http://www.pianyuan.la/"&gt;http://www.pianyuan.la/&lt;/a&gt;     &lt;ul&gt;      &lt;li&gt;BT、磁力&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;    &lt;li&gt;中国高清网：     &lt;a href="http://gaoqing.la/"&gt;http://gaoqing.la/&lt;/a&gt;     &lt;ul&gt;      &lt;li&gt;磁力&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;   &lt;h2&gt;种子下载站&lt;/h2&gt;   &lt;ul&gt;    &lt;li&gt;耐卡影音论坛：      &lt;a href="http://mcar.co/"&gt;http://mcar.co/&lt;/a&gt;     &lt;ul&gt;      &lt;li&gt;BT种子、网盘&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;    &lt;li&gt;BT之家：      &lt;a href="https://www.88btbtt.com/"&gt;https://www.88btbtt.com/&lt;/a&gt;     &lt;ul&gt;      &lt;li&gt;BT种子&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;   &lt;h2&gt;电驴下载站&lt;/h2&gt;   &lt;ul&gt;    &lt;li&gt;电波字幕组：      &lt;a href="http://dbfansub.com/"&gt;http://dbfansub.com/&lt;/a&gt;     &lt;ul&gt;      &lt;li&gt;电驴、网盘。提供单独字幕下载&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;   &lt;h2&gt;公共 BitTorrent Tracker&lt;/h2&gt;   &lt;p&gt;下载前记得更新下公共 BitTorrent Tracker 列表&lt;/p&gt;   &lt;ul&gt;    &lt;li&gt;使用说明     &lt;ul&gt;      &lt;li&gt;       &lt;a href="https://github.com/XIU2/TrackersListCollection/blob/master/README-ZH.md"&gt;https://github.com/XIU2/TrackersListCollection/blob/master/README-ZH.md&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;    &lt;li&gt;Aria2 Tracker     &lt;ul&gt;      &lt;li&gt;       &lt;a href="https://trackerslist.com/all_aria2.txt"&gt;https://trackerslist.com/all_aria2.txt&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;    &lt;li&gt;BitTorrent Tracker     &lt;ul&gt;      &lt;li&gt;       &lt;a href="https://trackerslist.com/all.txt"&gt;https://trackerslist.com/all.txt&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;
    &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/60961-%E7%A3%81%E5%8A%9B%E9%93%BE%E6%8E%A5-bt-%E7%A7%8D%E5%AD%90</guid>
      <pubDate>Mon, 26 Oct 2020 11:39:57 CST</pubDate>
    </item>
    <item>
      <title>证券交易系统设计与开发 - 廖雪峰的官方网站</title>
      <link>https://itindex.net/detail/60816-%E8%AF%81%E5%88%B8-%E4%BA%A4%E6%98%93-%E7%B3%BB%E7%BB%9F</link>
      <description>&lt;div&gt;    &lt;p&gt;证券交易系统是金融市场上能够提供的最有流动性，效率最高的交易场所。&lt;/p&gt;    &lt;p&gt;和传统的商品交易不同的是，证券交易系统提供的买卖标的物是标准的数字化资产，如USD、股票、BTC等，它们的特点是数字计价，可分割买卖。&lt;/p&gt;    &lt;p&gt;证券交易系统通过买卖双方各自的报价，按照价格优先、时间优先的顺序，对买卖双方进行撮合，实现每秒成千上万的交易量，可以为市场提供高度的流动性和价格发现机制。&lt;/p&gt;    &lt;p&gt;本文讨论如何设计并实现一个证券交易系统。&lt;/p&gt;    &lt;p&gt;我们以一个美元计价的数字货币交易所为例，实现一个比特币的BTC/USD交易系统。&lt;/p&gt;    &lt;p&gt;一个完整的证券交易系统是由用户系统、账户系统、订单系统、撮合系统以及清算系统等子系统构成的。各个子系统相互配合，完成证券报价交易。&lt;/p&gt;    &lt;pre&gt;      &lt;code&gt;1  ┌───────────┐  2  ┌───────────┐  7  ┌───────────┐
Request  ────&amp;gt;│   User    │────&amp;gt;│  Account  │&amp;lt;────│ Clearing  │
              └───────────┘     └───────────┘     └───────────┘
                                     3│                 ▲
                                      ▼                 │
                                ┌───────────┐           │
                                │   Order   │          6│
                                └───────────┘           │
                                     4│                 │
                                      ▼                 │
                                ┌───────────┐  5  ┌───────────┐
                                │ Sequence  │────&amp;gt;│   Match   │
                                └───────────┘     └───────────┘
                                                        │
                                                        ▼
                                                  ┌───────────┐
Market   &amp;lt;────────────────────────────────────────│ Quotation │
                                                  └───────────┘&lt;/code&gt;&lt;/pre&gt;    &lt;p&gt;当一个请求进入交易系统后，首先由用户系统（User）识别用户身份，然后由账户系统（Account）对用户资产进行冻结，买入冻结USD，卖出冻结BTC，冻结如果成功，订单就进入定序系统（Sequence）。&lt;/p&gt;    &lt;p&gt;为什么需要设计一个定序系统？因为交易系统的所有订单是一个有序队列。不同的用户在同一时刻下单，也必须由定序系统确定先后顺序。&lt;/p&gt;    &lt;p&gt;经过定序的订单被送入撮合引擎（Match）。&lt;/p&gt;    &lt;p&gt;撮合引擎是交易系统的核心。撮合引擎本质上就是维护一个买卖盘列表，然后按价格优先原则对订单进行撮合，能够成交的就输出成交结果，不能成交的放入买卖盘。这里注意没有时间优先原则，因为经过定序的订单队列已经是一个时间优先的队列了。&lt;/p&gt;    &lt;p&gt;当撮合引擎输出了成交结果后，该成交记录由清算系统（Clearing）进行清算。清算的工作就是把买单冻结的USD扣掉，并加上买入所得的BTC，同时，把卖单冻结的BTC扣掉，并加上卖出所得的USD。根据taker／maker的费率，向买卖双方收取手续费。&lt;/p&gt;    &lt;p&gt;清算系统完成清算后，更新订单状态，再通知用户，用户就可以查询到买卖的成交情况。&lt;/p&gt;    &lt;p&gt;在撮合引擎输出成交记录给清算系统的同时，它还把去除用户和订单相关信息的成交记录输出给行情系统（Quotation），由行情系统保存市场的成交价、成交量等信息，并输出实时价格、K线图等技术数据，以便公开市场查询。&lt;/p&gt;    &lt;p&gt;经过这样的模块化设计，一个证券交易系统就具备了雏型。&lt;/p&gt;    &lt;p&gt;   &lt;br /&gt;&lt;/p&gt;&lt;/div&gt;
    &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/60816-%E8%AF%81%E5%88%B8-%E4%BA%A4%E6%98%93-%E7%B3%BB%E7%BB%9F</guid>
      <pubDate>Thu, 13 Aug 2020 20:32:32 CST</pubDate>
    </item>
    <item>
      <title>[分享创造] 开源一个类微博 twitter 的网站</title>
      <link>https://itindex.net/detail/60311-%E5%88%86%E4%BA%AB-%E5%88%9B%E9%80%A0-%E5%BC%80%E6%BA%90</link>
      <description>&lt;p&gt;网址：   &lt;a href="https://sserr.net" rel="nofollow"&gt;https://sserr.net&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;代码：   &lt;a href="https://github.com/coyove/iis" rel="nofollow"&gt;https://github.com/coyove/iis&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;之前的发布：   &lt;a href="https://v2ex.com/t/628871" rel="nofollow"&gt;https://v2ex.com/t/628871&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;时隔一个多月，当初的 todo 基本上都清掉了，代码也重构到了开源出去也不会太丢人的程度 XD。&lt;/p&gt;
 &lt;p&gt;总的来说这是一个类微博的系统，提供了大部分你所熟知的微博功能。时间线合并（ timeline merging ）采用读扩散，所以可以轻松的支持热点用户推文分发至海量 follower 的情况。回复 /@/收藏等则是写扩散。&lt;/p&gt;
 &lt;p&gt;后端采用纯 KV 形式存储，目前有两种实现（ dynamodb 和基于本地文件系统）。KV 不要求事务支持，所以理论上任何支持 set(k, v)和 get(k)的 IO 都可以用作存储驱动。（ dynamodb 会有 stale read，要解决这个问题需要本地缓存，如 redis ）&lt;/p&gt;
 &lt;p&gt;由于该架构设计特点，（以 dynamodb 为例）当一个账户 follow 的其他账户数目超过 10000 时合并延迟和性能会受比较大影响。但在另一方面，时间线合并的负担绝大部分在客户端，所以对于后端来说没有任何压力。&lt;/p&gt;

	&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/60311-%E5%88%86%E4%BA%AB-%E5%88%9B%E9%80%A0-%E5%BC%80%E6%BA%90</guid>
      <pubDate>Thu, 23 Jan 2020 21:13:30 CST</pubDate>
    </item>
    <item>
      <title>[分享创造] GNE v0.1 正式发布： 4 行代码开发新闻网站通用爬虫</title>
      <link>https://itindex.net/detail/60261-%E5%88%86%E4%BA%AB-%E5%88%9B%E9%80%A0-gne</link>
      <description>&lt;p&gt;GNE （ GeneralNewsExtractor ）是一个通用新闻网站正文抽取模块，输入一篇新闻网页的 HTML， 输出正文内容、标题、作者、发布时间、正文中的图片地址和正文所在的标签源代码。GNE 在提取今日头条、网易新闻、游民星空、 观察者网、凤凰网、腾讯新闻、ReadHub、新浪新闻等数百个中文新闻网站上效果非常出色，几乎能够达到 100%的准确率。&lt;/p&gt;
 &lt;p&gt;使用方式非常简单：&lt;/p&gt;
 &lt;pre&gt;  &lt;code&gt;from gne import GeneralNewsExtractor

extractor = GeneralNewsExtractor()
html = &amp;apos;网站源代码&amp;apos;
result = extractor.extract(html)
print(result)
&lt;/code&gt;&lt;/pre&gt;
 &lt;p&gt;GNE 的输入是  &lt;code&gt;经过 js 渲染以后的&lt;/code&gt; HTML 代码，所以 GNE 可以配合 Selenium 或者 Pyppeteer 使用。&lt;/p&gt;
 &lt;p&gt;下图是 GNE 配合 Selenium 实现的一个 Demo：&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="https://kingname-1257411235.cos.ap-chengdu.myqcloud.com/2020-01-01-17-51-47.png"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;对应的代码为：&lt;/p&gt;
 &lt;pre&gt;  &lt;code&gt;import time
from gne import GeneralNewsExtractor
from selenium.webdriver import Chrome


driver = Chrome(&amp;apos;./chromedriver&amp;apos;)
driver.get(&amp;apos;https://www.toutiao.com/a6766986211736158727/&amp;apos;)
time.sleep(3)
extractor = GeneralNewsExtractor()
result = extractor.extract(driver.page_source)
print(result)
&lt;/code&gt;&lt;/pre&gt;
 &lt;p&gt;下图是 GNE 配合 Pyppeteer 实现的 Demo：&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="https://kingname-1257411235.cos.ap-chengdu.myqcloud.com/2020-01-01-18-07-14.png"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;对应代码如下：&lt;/p&gt;
 &lt;pre&gt;  &lt;code&gt;import asyncio
from gne import GeneralNewsExtractor
from pyppeteer import launch

async def main():
    browser = await launch(executablePath=&amp;apos;/Applications/Google Chrome.app/Contents/MacOS/Google Chrome&amp;apos;)
    page = await browser.newPage()
    await page.goto(&amp;apos;https://news.163.com/20/0101/17/F1QS286R000187R2.html&amp;apos;)
    extractor = GeneralNewsExtractor()
    result = extractor.extract(await page.content())
    print(result)
    input(&amp;apos;检查完成以后回到这里按下任意键&amp;apos;)

asyncio.run(main())
&lt;/code&gt;&lt;/pre&gt;
 &lt;h2&gt;如何安装 GNE&lt;/h2&gt;
 &lt;p&gt;现在你可以直接使用 pip 安装 GNE 了：&lt;/p&gt;
 &lt;pre&gt;  &lt;code&gt;pip install gne
&lt;/code&gt;&lt;/pre&gt;
 &lt;p&gt;如果访问 pypi 官方源太慢，你也可以使用网易源：&lt;/p&gt;
 &lt;pre&gt;  &lt;code&gt;pip install gne -i https://mirrors.163.com/pypi/simple/
&lt;/code&gt;&lt;/pre&gt;
 &lt;p&gt;安装过程如下图所示：&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="https://kingname-1257411235.cos.ap-chengdu.myqcloud.com/2020-01-01-17-34-36.png"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h2&gt;功能特性&lt;/h2&gt;
 &lt;h3&gt;获取正文源代码&lt;/h3&gt;
 &lt;p&gt;在  &lt;code&gt;extract()&lt;/code&gt;方法只传入网页源代码，不添加任何额外参数时，GNE 返回如下字段：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;title：新闻标题&lt;/li&gt;
  &lt;li&gt;publish_time：新闻发布时间&lt;/li&gt;
  &lt;li&gt;author：新闻作者&lt;/li&gt;
  &lt;li&gt;content：新闻正文&lt;/li&gt;
  &lt;li&gt;images: 正文中的图片（相对路径或者绝对路径）&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;可能有些朋友希望获取新闻正文所在标签的源代码，此时可以给  &lt;code&gt;extract()&lt;/code&gt;方法传入  &lt;code&gt;with_body_html&lt;/code&gt;参数，设置为 True：&lt;/p&gt;
 &lt;pre&gt;  &lt;code&gt;extractor = GeneralNewsExtractor()
extractor.extract(html, with_body_html=True)
&lt;/code&gt;&lt;/pre&gt;
 &lt;p&gt;返回数据中将会增加一个字段  &lt;code&gt;body_html&lt;/code&gt;，它的值就是正文对应的 HTML 源代码。&lt;/p&gt;
 &lt;p&gt;运行效果如下图所示：&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="https://kingname-1257411235.cos.ap-chengdu.myqcloud.com/2020-01-01-18-16-25.png"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h3&gt;总是返回图片的绝对路径&lt;/h3&gt;
 &lt;p&gt;默认情况下，如果新闻中的图片使用的是相对路径，那么 GNE 返回的  &lt;code&gt;images&lt;/code&gt;字段对应的值也是图片相对路径的列表。&lt;/p&gt;
 &lt;p&gt;如果你想始终让 GNE 返回绝对路径，那么你可以给  &lt;code&gt;extract()&lt;/code&gt;方法增加  &lt;code&gt;host&lt;/code&gt;参数，这个参数的值是图片的域名，例如：&lt;/p&gt;
 &lt;pre&gt;  &lt;code&gt;extractor = GeneralNewsExtractor()
extractor.extract(html, host=&amp;apos;https://www.kingname.info&amp;apos;)
&lt;/code&gt;&lt;/pre&gt;
 &lt;p&gt;这样，如果新闻中的图片是  &lt;code&gt;/images/pic.png&lt;/code&gt;，那么 GNE 返回时会自动把它变为  &lt;code&gt;   &lt;a href="https://www.kingname.info/images/pic.png" rel="nofollow"&gt;https://www.kingname.info/images/pic.png&lt;/a&gt;&lt;/code&gt;。&lt;/p&gt;
 &lt;h3&gt;指定新闻标题所在的 XPath&lt;/h3&gt;
 &lt;p&gt;GNE 预定义了一组 XPath 和正则表达式用于提取新闻的标题。但某些特殊的新闻网站可能无法提取标题，此时，你可以给  &lt;code&gt;extract()&lt;/code&gt;方法指定  &lt;code&gt;title_xpath&lt;/code&gt;参数，用于提取新闻标题：&lt;/p&gt;
 &lt;pre&gt;  &lt;code&gt;extractor = GeneralNewsExtractor()
extractor.extract(html, title_xpath=&amp;apos;//title/text()&amp;apos;)
&lt;/code&gt;&lt;/pre&gt;
 &lt;h3&gt;提前移除噪声标签&lt;/h3&gt;
 &lt;p&gt;某些新闻下面可能会存在长篇大论的评论，这些评论看起来比新闻正文“更像”正文，为了防止他们干扰新闻的提取，可以通过给  &lt;code&gt;extract()&lt;/code&gt;方法传入  &lt;code&gt;noise_node_list&lt;/code&gt;参数，提前把这些噪声节点移除。  &lt;code&gt;noise_node_list&lt;/code&gt;的值是一个列表，里面是一个或多个 XPath：&lt;/p&gt;
 &lt;pre&gt;  &lt;code&gt;extractor = GeneralNewsExtractor()
extractor.extract(html, noise_node_list=[&amp;apos;//div[@class=&amp;quot;comment-list&amp;quot;]&amp;apos;, &amp;apos;//*[@style=&amp;quot;display:none&amp;quot;]&amp;apos;])
&lt;/code&gt;&lt;/pre&gt;
 &lt;h3&gt;使用配置文件&lt;/h3&gt;
 &lt;p&gt;API 中的参数   &lt;code&gt;title_xpath&lt;/code&gt;、   &lt;code&gt;host&lt;/code&gt;、   &lt;code&gt;noise_node_list&lt;/code&gt;、   &lt;code&gt;with_body_html&lt;/code&gt;除了直接写到   &lt;code&gt;extract()&lt;/code&gt; 方法中外，还可以通过一个配置文件来设置。&lt;/p&gt;
 &lt;p&gt;请在项目的根目录创建一个文件   &lt;code&gt;.gne&lt;/code&gt;，配置文件可以用 YAML 格式，也可以使用 JSON 格式。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;YAML 格式配置文件&lt;/li&gt;
&lt;/ul&gt;
 &lt;pre&gt;  &lt;code&gt;title:
   xpath: //title/text()
host: https://www.xxx.com
noise_node_list:
   - //div[@class=\&amp;quot;comment-list\&amp;quot;]
   - //*[@style=\&amp;quot;display:none\&amp;quot;]
with_body_html: true
&lt;/code&gt;&lt;/pre&gt;
 &lt;ul&gt;
  &lt;li&gt;JSON 格式配置文件&lt;/li&gt;
&lt;/ul&gt;
 &lt;pre&gt;  &lt;code&gt;{
   &amp;quot;title&amp;quot;: {
       &amp;quot;xpath&amp;quot;: &amp;quot;//title/text()&amp;quot;
   },
   &amp;quot;host&amp;quot;: &amp;quot;https://www.xxx.com&amp;quot;,
   &amp;quot;noise_node_list&amp;quot;: [&amp;quot;//div[@class=\&amp;quot;comment-list\&amp;quot;]&amp;quot;,
                       &amp;quot;//*[@style=\&amp;quot;display:none\&amp;quot;]&amp;quot;],
   &amp;quot;with_body_html&amp;quot;: true
}
&lt;/code&gt;&lt;/pre&gt;
 &lt;p&gt;这两种写法是完全等价的。&lt;/p&gt;
 &lt;p&gt;配置文件与   &lt;code&gt;extract()&lt;/code&gt; 方法的参数一样，并不是所有字段都需要提供。你可以组合填写你需要的字段。&lt;/p&gt;
 &lt;p&gt;如果一个参数，既在   &lt;code&gt;extract()&lt;/code&gt; 方法中，又在   &lt;code&gt;.gne&lt;/code&gt; 配置文件中，但值不一样，那么   &lt;code&gt;extract()&lt;/code&gt; 方法中的这个参数的优先级更高。&lt;/p&gt;
 &lt;h2&gt;FAQ&lt;/h2&gt;
 &lt;h3&gt;GeneralNewsExtractor(以下简称 GNE)是爬虫吗？&lt;/h3&gt;
 &lt;p&gt;GNE 不是爬虫，它的项目名称 General News Extractor 表示通用新闻抽取器。它的输入是 HTML，输出是一个包含新闻标题，新闻正文，作者，发布时间的字典。你需要自行设法获取目标网页的 HTML。&lt;/p&gt;
 &lt;p&gt;GNE 现在不会，将来也不会提供请求网页的功能。&lt;/p&gt;
 &lt;h3&gt;GNE 支持翻页吗？&lt;/h3&gt;
 &lt;p&gt;GNE 不支持翻页。因为 GNE 不会提供网页请求的功能，所以你需要自行获取每一页的 HTML，并分别传递给 GNE。&lt;/p&gt;
 &lt;h3&gt;GNE 支持哪些版本的 Python ？&lt;/h3&gt;
 &lt;p&gt;不小于 Python 3.6.0&lt;/p&gt;
 &lt;h3&gt;我用 requests/Scrapy 获取的 HTML 传入 GNE，为什么不能提取正文？&lt;/h3&gt;
 &lt;p&gt;GNE 是基于 HTML 来提取正文的，所以传入的 HTML 一定要是经过 JavaScript 渲染以后的 HTML。而 requests 和 Scrapy 获取的只是 JavaScript 渲染之前的源代码，所以无法正确提取。&lt;/p&gt;
 &lt;p&gt;另外，有一些网页，例如今日头条，它的新闻正文实际上是以 JSON 格式直接写在网页源代码的，当页面在浏览器上面打开的时候，JavaScript 把源代码里面的正文解析为 HTML。这种情况下，你在 Chrome 上面就看不到 Ajax 请求。&lt;/p&gt;
 &lt;p&gt;所以建议你使用 Puppeteer/Pyppeteer/Selenium 之类的工具获取经过渲染的 HTML 再传入 GNE。&lt;/p&gt;
 &lt;h3&gt;GNE 支持非新闻类网站吗（例如博客、论坛……）&lt;/h3&gt;
 &lt;p&gt;不支持。&lt;/p&gt;
 &lt;h2&gt;关于 GNE&lt;/h2&gt;
 &lt;p&gt;GNE 官方文档：  &lt;a href="https://generalnewsextractor.readthedocs.io/" rel="nofollow"&gt;https://generalnewsextractor.readthedocs.io/&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;GNE 的项目源代码在：  &lt;a href="https://github.com/kingname/GeneralNewsExtractor" rel="nofollow"&gt;https://github.com/kingname/GeneralNewsExtractor&lt;/a&gt;。&lt;/p&gt;
 &lt;h2&gt;关于作者&lt;/h2&gt;
 &lt;p&gt;  &lt;img alt="" src="https://kingname-1257411235.cos.ap-chengdu.myqcloud.com/640.gif"&gt;&lt;/img&gt;&lt;/p&gt;

	&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/60261-%E5%88%86%E4%BA%AB-%E5%88%9B%E9%80%A0-gne</guid>
      <pubDate>Wed, 01 Jan 2020 18:58:58 CST</pubDate>
    </item>
    <item>
      <title>GitHub - cnlh/nps: 一款轻量级、功能强大的内网穿透代理服务器。支持tcp、udp流量转发，支持内网http代理、内网socks5代理，同时支持snappy压缩、站点保护、加密传输、多路复用、header修改等。支持web图形化管理，集成多用户模式。</title>
      <link>https://itindex.net/detail/59950-github-cnlh-nps</link>
      <description>&lt;h1&gt;    &lt;a href="https://github.com/cnlh/nps#nps"&gt;&lt;/a&gt;nps&lt;/h1&gt;  &lt;p&gt;    &lt;a href="https://camo.githubusercontent.com/493ef1d2ffb5e476f78a4ecd9509a69f25d560fa/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f636e6c682f6e70732e737667" rel="noopener noreferrer" target="_blank"&gt;      &lt;img alt="" src="https://camo.githubusercontent.com/493ef1d2ffb5e476f78a4ecd9509a69f25d560fa/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f636e6c682f6e70732e737667"&gt;&lt;/img&gt;&lt;/a&gt;    &lt;a href="https://camo.githubusercontent.com/fc252107a3a77f7ae0f2b0aad97974a82c105482/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f666f726b732f636e6c682f6e70732e737667" rel="noopener noreferrer" target="_blank"&gt;      &lt;img alt="" src="https://camo.githubusercontent.com/fc252107a3a77f7ae0f2b0aad97974a82c105482/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f666f726b732f636e6c682f6e70732e737667"&gt;&lt;/img&gt;&lt;/a&gt;    &lt;a href="https://gitter.im/cnlh-nps/community?utm_source=badge&amp;utm_medium=badge&amp;utm_campaign=pr-badge" rel="nofollow"&gt;      &lt;img alt="Gitter" src="https://camo.githubusercontent.com/73f94cc306a9065da926ed35a059f0a11b5ad870/68747470733a2f2f6261646765732e6769747465722e696d2f636e6c682d6e70732f636f6d6d756e6974792e737667"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;nps是一款轻量级、高性能、功能强大的    &lt;strong&gt;内网穿透&lt;/strong&gt;代理服务器。目前支持    &lt;strong&gt;tcp、udp流量转发&lt;/strong&gt;，可支持任何    &lt;strong&gt;tcp、udp&lt;/strong&gt;上层协议（访问内网网站、本地支付接口调试、ssh访问、远程桌面，内网dns解析等等……），此外还    &lt;strong&gt;支持内网http代理、内网socks5代理&lt;/strong&gt;、    &lt;strong&gt;p2p等&lt;/strong&gt;，并带有功能强大的web管理端。&lt;/p&gt;  &lt;h2&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#32972;&amp;#26223;"&gt;&lt;/a&gt;背景&lt;/h2&gt;  &lt;p&gt;    &lt;a href="https://github.com/cnlh/nps/blob/master/image/web.png?raw=true" rel="noopener noreferrer" target="_blank"&gt;      &lt;img alt="image" src="https://github.com/cnlh/nps/raw/master/image/web.png?raw=true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ol&gt;    &lt;li&gt;      &lt;p&gt;做微信公众号开发、小程序开发等----&amp;gt; 域名代理模式&lt;/p&gt;&lt;/li&gt;    &lt;li&gt;      &lt;p&gt;想在外网通过ssh连接内网的机器，做云服务器到内网服务器端口的映射，----&amp;gt; tcp代理模式&lt;/p&gt;&lt;/li&gt;    &lt;li&gt;      &lt;p&gt;在非内网环境下使用内网dns，或者需要通过udp访问内网机器等----&amp;gt; udp代理模式&lt;/p&gt;&lt;/li&gt;    &lt;li&gt;      &lt;p&gt;在外网使用HTTP代理访问内网站点----&amp;gt; http代理模式&lt;/p&gt;&lt;/li&gt;    &lt;li&gt;      &lt;p&gt;搭建一个内网穿透ss，在外网如同使用内网vpn一样访问内网资源或者设备----&amp;gt; socks5代理模式&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;  &lt;h2&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#30446;&amp;#24405;"&gt;&lt;/a&gt;目录&lt;/h2&gt;  &lt;ul&gt;    &lt;li&gt;      &lt;p&gt;        &lt;a href="https://github.com/cnlh/nps#%E5%AE%89%E8%A3%85"&gt;安装&lt;/a&gt;&lt;/p&gt;      &lt;ul&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E6%BA%90%E7%A0%81%E5%AE%89%E8%A3%85"&gt;编译安装&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#release%E5%AE%89%E8%A3%85"&gt;release安装&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;    &lt;li&gt;      &lt;p&gt;        &lt;a href="https://github.com/cnlh/nps#%E4%BD%BF%E7%94%A8%E7%A4%BA%E4%BE%8B"&gt;使用示例（以web主控模式为主）&lt;/a&gt;&lt;/p&gt;      &lt;ul&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E7%BB%9F%E4%B8%80%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C(%E5%BF%85%E5%81%9A)"&gt;统一准备工作&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E5%9F%9F%E5%90%8D%E8%A7%A3%E6%9E%90"&gt;http|https域名解析&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#tcp%E9%9A%A7%E9%81%93"&gt;内网ssh连接即tcp隧道&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#udp%E9%9A%A7%E9%81%93"&gt;内网dns解析即udp隧道&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#socks5%E4%BB%A3%E7%90%86"&gt;内网socks5代理&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#http%E6%AD%A3%E5%90%91%E4%BB%A3%E7%90%86"&gt;内网http正向代理&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E7%A7%81%E5%AF%86%E4%BB%A3%E7%90%86"&gt;内网安全私密代理&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#p2p%E6%9C%8D%E5%8A%A1"&gt;p2p穿透&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E6%96%87%E4%BB%B6%E8%AE%BF%E9%97%AE%E6%A8%A1%E5%BC%8F"&gt;简单的内网文件访问服务&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;    &lt;li&gt;      &lt;p&gt;        &lt;a href="https://github.com/cnlh/nps#web%E7%AE%A1%E7%90%86"&gt;服务端&lt;/a&gt;&lt;/p&gt;      &lt;ul&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E6%9C%8D%E5%8A%A1%E7%AB%AF%E5%90%AF%E5%8A%A8"&gt;服务端启动&lt;/a&gt;          &lt;ul&gt;            &lt;li&gt;              &lt;a href="https://github.com/cnlh/nps#%E6%9C%8D%E5%8A%A1%E7%AB%AF%E6%B5%8B%E8%AF%95"&gt;服务端测试&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;              &lt;a href="https://github.com/cnlh/nps#%E6%9C%8D%E5%8A%A1%E7%AB%AF%E5%90%AF%E5%8A%A8"&gt;服务端启动&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;              &lt;a href="https://github.com/cnlh/nps#web%E7%AE%A1%E7%90%86"&gt;web管理&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;              &lt;a href="https://github.com/cnlh/nps#%E6%9C%8D%E5%8A%A1%E7%AB%AF%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E9%87%8D%E8%BD%BD"&gt;服务端配置文件重载&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;              &lt;a href="https://github.com/cnlh/nps#%E6%9C%8D%E5%8A%A1%E7%AB%AF%E5%81%9C%E6%AD%A2%E6%88%96%E9%87%8D%E5%90%AF"&gt;服务端停止或重启&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E6%9C%8D%E5%8A%A1%E7%AB%AF%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6"&gt;配置文件说明&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E4%BD%BF%E7%94%A8https"&gt;使用https&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E4%B8%8Enginx%E9%85%8D%E5%90%88"&gt;与nginx配合&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E5%85%B3%E9%97%AD%E4%BB%A3%E7%90%86"&gt;关闭http|https代理&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E5%B0%86nps%E5%AE%89%E8%A3%85%E5%88%B0%E7%B3%BB%E7%BB%9F"&gt;将nps安装到系统&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E6%B5%81%E9%87%8F%E6%95%B0%E6%8D%AE%E6%8C%81%E4%B9%85%E5%8C%96"&gt;流量数据持久化&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E7%B3%BB%E7%BB%9F%E4%BF%A1%E6%81%AF%E6%98%BE%E7%A4%BA"&gt;系统信息显示&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E8%87%AA%E5%AE%9A%E4%B9%89%E5%AE%A2%E6%88%B7%E7%AB%AF%E8%BF%9E%E6%8E%A5%E5%AF%86%E9%92%A5"&gt;自定义客户端连接密钥&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E5%85%B3%E9%97%AD%E5%85%AC%E9%92%A5%E8%AE%BF%E9%97%AE"&gt;关闭公钥访问&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E5%85%B3%E9%97%ADweb%E7%AE%A1%E7%90%86"&gt;关闭web管理&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E6%9C%8D%E5%8A%A1%E7%AB%AF%E5%A4%9A%E7%94%A8%E6%88%B7%E7%99%BB%E9%99%86"&gt;服务端多用户登陆&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E7%94%A8%E6%88%B7%E6%B3%A8%E5%86%8C%E5%8A%9F%E8%83%BD"&gt;用户注册功能&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E7%9B%91%E5%90%AC%E6%8C%87%E5%AE%9Aip"&gt;监听指定ip&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E4%BB%A3%E7%90%86%E5%88%B0%E6%9C%8D%E5%8A%A1%E7%AB%AF%E6%9C%AC%E5%9C%B0"&gt;代理到服务端本地&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;    &lt;li&gt;      &lt;p&gt;        &lt;a href="https://github.com/cnlh/nps#%E5%AE%A2%E6%88%B7%E7%AB%AF"&gt;客户端&lt;/a&gt;&lt;/p&gt;      &lt;ul&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%90%AF%E5%8A%A8"&gt;客户端启动&lt;/a&gt;          &lt;ul&gt;            &lt;li&gt;              &lt;a href="https://github.com/cnlh/nps#%E6%97%A0%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E6%A8%A1%E5%BC%8F"&gt;无配置文件模式&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;              &lt;a href="https://github.com/cnlh/nps#%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E6%A8%A1%E5%BC%8F"&gt;配置文件模式&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E8%AF%B4%E6%98%8E"&gt;配置文件说明&lt;/a&gt;          &lt;ul&gt;            &lt;li&gt;              &lt;a href="https://github.com/cnlh/nps#%E5%85%A8%E5%B1%80%E9%85%8D%E7%BD%AE"&gt;全局配置&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;              &lt;a href="https://github.com/cnlh/nps#%E5%9F%9F%E5%90%8D%E4%BB%A3%E7%90%86"&gt;域名代理&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;              &lt;a href="https://github.com/cnlh/nps#tcp%E9%9A%A7%E9%81%93%E6%A8%A1%E5%BC%8F"&gt;tcp隧道&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;              &lt;a href="https://github.com/cnlh/nps#udp%E9%9A%A7%E9%81%93%E6%A8%A1%E5%BC%8F"&gt;udp隧道&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;              &lt;a href="https://github.com/cnlh/nps#http%E4%BB%A3%E7%90%86%E6%A8%A1%E5%BC%8F"&gt;http正向代理&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;              &lt;a href="https://github.com/cnlh/nps#socks5%E4%BB%A3%E7%90%86%E6%A8%A1%E5%BC%8F"&gt;socks5代理&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;              &lt;a href="https://github.com/cnlh/nps#%E7%A7%81%E5%AF%86%E4%BB%A3%E7%90%86%E6%A8%A1%E5%BC%8F"&gt;私密代理&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;              &lt;a href="https://github.com/cnlh/nps#p2p%E4%BB%A3%E7%90%86"&gt;p2p服务&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;              &lt;a href="https://github.com/cnlh/nps#%E6%96%87%E4%BB%B6%E8%AE%BF%E9%97%AE%E6%A8%A1%E5%BC%8F"&gt;文件访问代理&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E6%96%AD%E7%BA%BF%E9%87%8D%E8%BF%9E"&gt;断线重连&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#nat%E7%B1%BB%E5%9E%8B%E6%A3%80%E6%B5%8B"&gt;nat类型检测&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E7%8A%B6%E6%80%81%E6%A3%80%E6%9F%A5"&gt;状态检查&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E9%87%8D%E8%BD%BD%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6"&gt;重载配置文件&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E9%80%9A%E8%BF%87%E4%BB%A3%E7%90%86%E8%BF%9E%E6%8E%A5nps"&gt;通过代理连接nps&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E7%BE%A4%E6%99%96%E6%94%AF%E6%8C%81"&gt;群晖支持&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;    &lt;li&gt;      &lt;p&gt;        &lt;a href="https://github.com/cnlh/nps#%E7%9B%B8%E5%85%B3%E5%8A%9F%E8%83%BD"&gt;相关功能&lt;/a&gt;&lt;/p&gt;      &lt;ul&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E7%BC%93%E5%AD%98%E6%94%AF%E6%8C%81"&gt;缓存支持&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E6%95%B0%E6%8D%AE%E5%8E%8B%E7%BC%A9%E6%94%AF%E6%8C%81"&gt;数据压缩支持&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E7%AB%99%E7%82%B9%E4%BF%9D%E6%8A%A4"&gt;站点密码保护&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E5%8A%A0%E5%AF%86%E4%BC%A0%E8%BE%93"&gt;加密传输&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#host%E4%BF%AE%E6%94%B9"&gt;host修改&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E8%87%AA%E5%AE%9A%E4%B9%89header"&gt;自定义header&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#404%E9%A1%B5%E9%9D%A2%E9%85%8D%E7%BD%AE"&gt;自定义404页面&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E6%B5%81%E9%87%8F%E9%99%90%E5%88%B6"&gt;流量限制&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E5%B8%A6%E5%AE%BD%E9%99%90%E5%88%B6"&gt;带宽限制&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1"&gt;负载均衡&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E7%AB%AF%E5%8F%A3%E7%99%BD%E5%90%8D%E5%8D%95"&gt;端口白名单&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E7%AB%AF%E5%8F%A3%E8%8C%83%E5%9B%B4%E6%98%A0%E5%B0%84"&gt;端口范围映射&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E7%AB%AF%E5%8F%A3%E8%8C%83%E5%9B%B4%E6%98%A0%E5%B0%84%E5%88%B0%E5%85%B6%E4%BB%96%E6%9C%BA%E5%99%A8"&gt;端口范围映射到其他机器&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E5%AE%88%E6%8A%A4%E8%BF%9B%E7%A8%8B"&gt;守护进程&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#KCP%E5%8D%8F%E8%AE%AE%E6%94%AF%E6%8C%81"&gt;KCP协议支持&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E5%9F%9F%E5%90%8D%E6%B3%9B%E8%A7%A3%E6%9E%90"&gt;域名泛解析&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#URL%E8%B7%AF%E7%94%B1"&gt;URL路由&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E9%99%90%E5%88%B6ip%E8%AE%BF%E9%97%AE"&gt;限制ip访问&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E5%AE%A2%E6%88%B7%E7%AB%AF%E6%9C%80%E5%A4%A7%E8%BF%9E%E6%8E%A5%E6%95%B0"&gt;客户端最大连接数限制&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E5%AE%A2%E6%88%B7%E7%AB%AF%E6%9C%80%E5%A4%A7%E9%9A%A7%E9%81%93%E6%95%B0%E9%99%90%E5%88%B6"&gt;客户端最大隧道数限制&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E7%AB%AF%E5%8F%A3%E5%A4%8D%E7%94%A8"&gt;端口复用&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E5%A4%9A%E8%B7%AF%E5%A4%8D%E7%94%A8"&gt;多路复用&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E6%B8%B2%E6%9F%93"&gt;环境变量渲染&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E5%81%A5%E5%BA%B7%E6%A3%80%E6%9F%A5"&gt;健康检查&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E6%97%A5%E5%BF%97%E8%BE%93%E5%87%BA"&gt;日志输出&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;    &lt;li&gt;      &lt;p&gt;        &lt;a href="https://github.com/cnlh/nps#%E7%9B%B8%E5%85%B3%E8%AF%B4%E6%98%8E"&gt;相关说明&lt;/a&gt;&lt;/p&gt;      &lt;ul&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E6%B5%81%E9%87%8F%E7%BB%9F%E8%AE%A1"&gt;流量统计&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E5%BD%93%E5%89%8D%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%B8%A6%E5%AE%BD"&gt;当前客户端带宽&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E7%83%AD%E6%9B%B4%E6%96%B0%E6%94%AF%E6%8C%81"&gt;热更新支持&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E8%8E%B7%E5%8F%96%E7%94%A8%E6%88%B7%E7%9C%9F%E5%AE%9Eip"&gt;获取用户真实ip&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%9C%B0%E5%9D%80%E6%98%BE%E7%A4%BA"&gt;客户端地址显示&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;          &lt;a href="https://github.com/cnlh/nps#%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%B8%8E%E6%9C%8D%E5%8A%A1%E7%AB%AF%E7%89%88%E6%9C%AC%E5%AF%B9%E6%AF%94"&gt;客户端与服务端版本对比&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;    &lt;li&gt;      &lt;p&gt;        &lt;a href="https://github.com/cnlh/nps#webAPI"&gt;webAPI&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;    &lt;li&gt;      &lt;p&gt;        &lt;a href="https://github.com/cnlh/nps#%E8%B4%A1%E7%8C%AE"&gt;贡献&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;    &lt;li&gt;      &lt;p&gt;        &lt;a href="https://github.com/cnlh/nps#%E6%8D%90%E8%B5%A0"&gt;支持nps发展&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;    &lt;li&gt;      &lt;p&gt;        &lt;a href="https://github.com/cnlh/nps#%E4%BA%A4%E6%B5%81%E7%BE%A4"&gt;交流群&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;h2&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#23433;&amp;#35013;"&gt;&lt;/a&gt;安装&lt;/h2&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#releases&amp;#23433;&amp;#35013;"&gt;&lt;/a&gt;releases安装&lt;/h3&gt;  &lt;blockquote&gt;    &lt;p&gt;      &lt;a href="https://github.com/cnlh/nps/releases"&gt;releases&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;  &lt;p&gt;下载对应的系统版本即可，服务端和客户端是单独的&lt;/p&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#28304;&amp;#30721;&amp;#23433;&amp;#35013;"&gt;&lt;/a&gt;源码安装&lt;/h3&gt;  &lt;ul&gt;    &lt;li&gt;安装源码&lt;/li&gt;&lt;/ul&gt;  &lt;blockquote&gt;    &lt;p&gt;go get -u github.com/cnlh/nps...&lt;/p&gt;&lt;/blockquote&gt;  &lt;ul&gt;    &lt;li&gt;编译&lt;/li&gt;&lt;/ul&gt;  &lt;blockquote&gt;    &lt;p&gt;go build cmd/nps/nps.go&lt;/p&gt;&lt;/blockquote&gt;  &lt;blockquote&gt;    &lt;p&gt;go build cmd/npc/npc.go&lt;/p&gt;&lt;/blockquote&gt;  &lt;h2&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#20351;&amp;#29992;&amp;#31034;&amp;#20363;"&gt;&lt;/a&gt;使用示例&lt;/h2&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#32479;&amp;#19968;&amp;#20934;&amp;#22791;&amp;#24037;&amp;#20316;&amp;#24517;&amp;#20570;"&gt;&lt;/a&gt;统一准备工作（必做）&lt;/h3&gt;  &lt;ul&gt;    &lt;li&gt;开启服务端，假设公网服务器ip为1.1.1.1，配置文件中      &lt;code&gt;bridge_port&lt;/code&gt;为8284，配置文件中      &lt;code&gt;web_port&lt;/code&gt;为8080&lt;/li&gt;    &lt;li&gt;访问1.1.1.1:8080&lt;/li&gt;    &lt;li&gt;在客户端管理中创建一个客户端，记录下验证密钥&lt;/li&gt;    &lt;li&gt;内网客户端运行（windows使用cmd运行加.exe）&lt;/li&gt;&lt;/ul&gt;  &lt;div&gt;    &lt;pre&gt;./npc -server=1.1.1.1:8284 -vkey=客户端的密钥&lt;/pre&gt;&lt;/div&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#22495;&amp;#21517;&amp;#35299;&amp;#26512;"&gt;&lt;/a&gt;域名解析&lt;/h3&gt;  &lt;p&gt;    &lt;strong&gt;适用范围：&lt;/strong&gt;小程序开发、微信公众号开发、产品演示&lt;/p&gt;  &lt;p&gt;    &lt;strong&gt;假设场景：&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;    &lt;li&gt;有一个域名proxy.com，有一台公网机器ip为1.1.1.1&lt;/li&gt;    &lt;li&gt;两个内网开发站点127.0.0.1:81，127.0.0.1:82&lt;/li&gt;    &lt;li&gt;想通过（http|https://）a.proxy.com访问127.0.0.1:81，通过（http|https://）b.proxy.com访问127.0.0.1:82&lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;    &lt;strong&gt;使用步骤&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;    &lt;li&gt;将*.proxy.com解析到公网服务器1.1.1.1&lt;/li&gt;    &lt;li&gt;点击刚才创建的客户端的域名管理，添加两条规则规则：1、域名：      &lt;code&gt;a.proxy.com&lt;/code&gt;，内网目标：      &lt;code&gt;127.0.0.1:81&lt;/code&gt;，2、域名：      &lt;code&gt;b.proxy.com&lt;/code&gt;，内网目标：      &lt;code&gt;127.0.0.1:82&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;现在访问（http|https://）    &lt;code&gt;a.proxy.com&lt;/code&gt;，    &lt;code&gt;b.proxy.com&lt;/code&gt;即可成功&lt;/p&gt;  &lt;p&gt;    &lt;strong&gt;https:&lt;/strong&gt;如需使用https请进行相关配置，详见    &lt;a href="https://github.com/cnlh/nps#%E4%BD%BF%E7%94%A8https"&gt;使用https&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#tcp&amp;#38567;&amp;#36947;"&gt;&lt;/a&gt;tcp隧道&lt;/h3&gt;  &lt;p&gt;    &lt;strong&gt;适用范围：&lt;/strong&gt;ssh、远程桌面等tcp连接场景&lt;/p&gt;  &lt;p&gt;    &lt;strong&gt;假设场景：&lt;/strong&gt;想通过访问公网服务器1.1.1.1的8001端口，连接内网机器10.1.50.101的22端口，实现ssh连接&lt;/p&gt;  &lt;p&gt;    &lt;strong&gt;使用步骤&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;    &lt;li&gt;在刚才创建的客户端隧道管理中添加一条tcp隧道，填写监听的端口（8001）、内网目标ip和目标端口（10.1.50.101:22），保存。&lt;/li&gt;    &lt;li&gt;访问公网服务器ip（1.1.1.1）,填写的监听端口(8001)，相当于访问内网ip(10.1.50.101):目标端口(22)，例如：      &lt;code&gt;ssh -p 8001 root@1.1.1.1&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#udp&amp;#38567;&amp;#36947;"&gt;&lt;/a&gt;udp隧道&lt;/h3&gt;  &lt;p&gt;    &lt;strong&gt;适用范围：&lt;/strong&gt;内网dns解析等udp连接场景&lt;/p&gt;  &lt;p&gt;    &lt;strong&gt;假设场景：&lt;/strong&gt;内网有一台dns（10.1.50.102:53），在非内网环境下想使用该dns，公网服务器为1.1.1.1&lt;/p&gt;  &lt;p&gt;    &lt;strong&gt;使用步骤&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;    &lt;li&gt;在刚才创建的客户端的隧道管理中添加一条udp隧道，填写监听的端口（53）、内网目标ip和目标端口（10.1.50.102:53），保存。&lt;/li&gt;    &lt;li&gt;修改需要使用的内网dns为127.0.0.1，则相当于使用10.1.50.202作为dns服务器&lt;/li&gt;&lt;/ul&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#socks5&amp;#20195;&amp;#29702;"&gt;&lt;/a&gt;socks5代理&lt;/h3&gt;  &lt;p&gt;    &lt;strong&gt;适用范围：&lt;/strong&gt;在外网环境下如同使用vpn一样访问内网设备或者资源&lt;/p&gt;  &lt;p&gt;    &lt;strong&gt;假设场景：&lt;/strong&gt;想将公网服务器1.1.1.1的8003端口作为socks5代理，达到访问内网任意设备或者资源的效果&lt;/p&gt;  &lt;p&gt;    &lt;strong&gt;使用步骤&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;    &lt;li&gt;在刚才创建的客户端隧道管理中添加一条socks5代理，填写监听的端口（8003），保存。&lt;/li&gt;    &lt;li&gt;在外网环境的本机配置socks5代理(例如使用proxifier进行全局代理)，ip为公网服务器ip（1.1.1.1），端口为填写的监听端口(8003)，即可畅享内网了&lt;/li&gt;&lt;/ul&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#http&amp;#27491;&amp;#21521;&amp;#20195;&amp;#29702;"&gt;&lt;/a&gt;http正向代理&lt;/h3&gt;  &lt;p&gt;    &lt;strong&gt;适用范围：&lt;/strong&gt;在外网环境下使用http正向代理访问内网站点&lt;/p&gt;  &lt;p&gt;    &lt;strong&gt;假设场景：&lt;/strong&gt;想将公网服务器1.1.1.1的8004端口作为http代理，访问内网网站&lt;/p&gt;  &lt;p&gt;    &lt;strong&gt;使用步骤&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;    &lt;li&gt;在刚才创建的客户端隧道管理中添加一条http代理，填写监听的端口（8004），保存。&lt;/li&gt;    &lt;li&gt;在外网环境的本机配置http代理，ip为公网服务器ip（1.1.1.1），端口为填写的监听端口(8004)，即可访问了&lt;/li&gt;&lt;/ul&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#31169;&amp;#23494;&amp;#20195;&amp;#29702;"&gt;&lt;/a&gt;私密代理&lt;/h3&gt;  &lt;p&gt;    &lt;strong&gt;适用范围：&lt;/strong&gt;无需占用多余的端口、安全性要求较高可以防止其他人连接的tcp服务，例如ssh。&lt;/p&gt;  &lt;p&gt;    &lt;strong&gt;假设场景：&lt;/strong&gt;无需新增多的端口实现访问内网服务器10.1.50.2的22端口&lt;/p&gt;  &lt;p&gt;    &lt;strong&gt;使用步骤&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;    &lt;li&gt;在刚才创建的客户端中添加一条私密代理，并设置唯一密钥secrettest和内网目标10.1.50.2:22&lt;/li&gt;    &lt;li&gt;在需要连接ssh的机器上以执行命令&lt;/li&gt;&lt;/ul&gt;  &lt;pre&gt;    &lt;code&gt;./npc -server=1.1.1.1:8284 -vkey=vkey -type=tcp -password=secrettest -local_type=secret&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;如需指定本地端口可加参数    &lt;code&gt;-local_port=xx&lt;/code&gt;，默认为2000&lt;/p&gt;  &lt;p&gt;    &lt;strong&gt;注意：&lt;/strong&gt;password为web管理上添加的唯一密钥，具体命令可查看web管理上的命令提示&lt;/p&gt;  &lt;p&gt;假设10.1.50.2用户名为root，现在执行    &lt;code&gt;ssh -p 2000 root@1.1.1.1&lt;/code&gt;即可访问ssh&lt;/p&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#p2p&amp;#26381;&amp;#21153;"&gt;&lt;/a&gt;p2p服务&lt;/h3&gt;  &lt;p&gt;    &lt;strong&gt;适用范围：&lt;/strong&gt;大流量传输场景，流量不经过公网服务器，但是由于p2p穿透和nat类型关系较大，不保证100%成功，支持大部分nat类型。    &lt;a href="https://github.com/cnlh/nps#nat%E7%B1%BB%E5%9E%8B%E6%A3%80%E6%B5%8B"&gt;nat类型检测&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;    &lt;strong&gt;假设场景：&lt;/strong&gt;内网1机器ip为10.1.50.2    内网2机器2 ip为10.2.50.2&lt;/p&gt;  &lt;p&gt;想通过访问内网1机器1的2000端口----&amp;gt;访问到内网2机器3 10.2.50.3的22端口&lt;/p&gt;  &lt;p&gt;    &lt;strong&gt;使用步骤&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;    &lt;li&gt;在      &lt;code&gt;nps.conf&lt;/code&gt;中设置      &lt;code&gt;p2p_ip&lt;/code&gt;（nps服务器ip）和      &lt;code&gt;p2p_port&lt;/code&gt;（nps服务器udp端口）&lt;/li&gt;    &lt;li&gt;在刚才刚才创建的客户端中添加一条p2p代理，并设置唯一密钥p2pssh&lt;/li&gt;    &lt;li&gt;在机器1执行命令&lt;/li&gt;&lt;/ul&gt;  &lt;pre&gt;    &lt;code&gt;./npc -server=1.1.1.1:8284 -vkey=123 -password=p2pssh -target=10.2.50.3:22&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;如需指定本地端口可加参数    &lt;code&gt;-local_port=xx&lt;/code&gt;，默认为2000&lt;/p&gt;  &lt;p&gt;    &lt;strong&gt;注意：&lt;/strong&gt;password为web管理上添加的唯一密钥，具体命令可查看web管理上的命令提示&lt;/p&gt;  &lt;p&gt;假设机器3用户名为root，现在在机器1上执行    &lt;code&gt;ssh -p 2000 root@127.0.0.1&lt;/code&gt;即可访问机器2的ssh&lt;/p&gt;  &lt;h2&gt;    &lt;a href="https://github.com/cnlh/nps#web&amp;#31649;&amp;#29702;"&gt;&lt;/a&gt;web管理&lt;/h2&gt;  &lt;p&gt;    &lt;a href="https://github.com/cnlh/nps/blob/master/image/web2.png?raw=true" rel="noopener noreferrer" target="_blank"&gt;      &lt;img alt="image" src="https://github.com/cnlh/nps/raw/master/image/web2.png?raw=true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#20171;&amp;#32461;"&gt;&lt;/a&gt;介绍&lt;/h3&gt;  &lt;p&gt;可在网页上配置和管理各个tcp、udp隧道、内网站点代理，http、https解析等，功能强大，操作方便。&lt;/p&gt;  &lt;p&gt;    &lt;strong&gt;提示：使用web模式时，服务端执行文件必须在项目根目录，否则无法正确加载配置文件&lt;/strong&gt;&lt;/p&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#21551;&amp;#21160;"&gt;&lt;/a&gt;启动&lt;/h3&gt;  &lt;h4&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#26381;&amp;#21153;&amp;#31471;&amp;#27979;&amp;#35797;"&gt;&lt;/a&gt;服务端测试&lt;/h4&gt;  &lt;div&gt;    &lt;pre&gt;./npstest&lt;/pre&gt;&lt;/div&gt;  &lt;p&gt;如有错误请及时修改配置文件，无错误可继续进行下去&lt;/p&gt;  &lt;h4&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#26381;&amp;#21153;&amp;#31471;&amp;#21551;&amp;#21160;"&gt;&lt;/a&gt;服务端启动&lt;/h4&gt;  &lt;div&gt;    &lt;pre&gt;./nps start&lt;/pre&gt;&lt;/div&gt;  &lt;p&gt;    &lt;strong&gt;如果无需daemon运行或者打开后无法正常访问web管理，去掉start查看日志运行即可&lt;/strong&gt;&lt;/p&gt;  &lt;h4&gt;    &lt;a href="https://github.com/cnlh/nps#web&amp;#31649;&amp;#29702;-1"&gt;&lt;/a&gt;web管理&lt;/h4&gt;  &lt;p&gt;进入web界面，公网ip:web界面端口（默认8080），密码默认为123&lt;/p&gt;  &lt;p&gt;进入web管理界面，有详细的说明&lt;/p&gt;  &lt;h4&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#26381;&amp;#21153;&amp;#31471;&amp;#37197;&amp;#32622;&amp;#25991;&amp;#20214;&amp;#37325;&amp;#36733;"&gt;&lt;/a&gt;服务端配置文件重载&lt;/h4&gt;  &lt;p&gt;如果是daemon启动&lt;/p&gt;  &lt;div&gt;    &lt;pre&gt;./nps reload&lt;/pre&gt;&lt;/div&gt;  &lt;p&gt;    &lt;strong&gt;说明：&lt;/strong&gt;仅支持部分配置重载，例如    &lt;code&gt;allow_user_login&lt;/code&gt;    &lt;code&gt;auth_crypt_key&lt;/code&gt;    &lt;code&gt;auth_key&lt;/code&gt;    &lt;code&gt;web_username&lt;/code&gt;    &lt;code&gt;web_password&lt;/code&gt;等，未来将支持更多&lt;/p&gt;  &lt;h4&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#26381;&amp;#21153;&amp;#31471;&amp;#20572;&amp;#27490;&amp;#25110;&amp;#37325;&amp;#21551;"&gt;&lt;/a&gt;服务端停止或重启&lt;/h4&gt;  &lt;p&gt;如果是daemon启动&lt;/p&gt;  &lt;div&gt;    &lt;pre&gt;./nps stop|restart&lt;/pre&gt;&lt;/div&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#26381;&amp;#21153;&amp;#31471;&amp;#37197;&amp;#32622;&amp;#25991;&amp;#20214;"&gt;&lt;/a&gt;服务端配置文件&lt;/h3&gt;  &lt;ul&gt;    &lt;li&gt;/conf/nps.conf&lt;/li&gt;&lt;/ul&gt;  &lt;table&gt;    &lt;tr&gt;      &lt;th&gt;名称&lt;/th&gt;      &lt;th&gt;含义&lt;/th&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;web_port&lt;/td&gt;      &lt;td&gt;web管理端口&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;web_password&lt;/td&gt;      &lt;td&gt;web界面管理密码&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;web_username&lt;/td&gt;      &lt;td&gt;web界面管理账号&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;bridge_port&lt;/td&gt;      &lt;td&gt;服务端客户端通信端口&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;https_proxy_port&lt;/td&gt;      &lt;td&gt;域名代理https代理监听端口&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;http_proxy_port&lt;/td&gt;      &lt;td&gt;域名代理http代理监听端口&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;auth_key&lt;/td&gt;      &lt;td&gt;web api密钥&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;bridge_type&lt;/td&gt;      &lt;td&gt;客户端与服务端连接方式kcp或tcp&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;public_vkey&lt;/td&gt;      &lt;td&gt;客户端以配置文件模式启动时的密钥，设置为空表示关闭客户端配置文件连接模式&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;ip_limit&lt;/td&gt;      &lt;td&gt;是否限制ip访问，true或false或忽略&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;flow_store_interval&lt;/td&gt;      &lt;td&gt;服务端流量数据持久化间隔，单位分钟，忽略表示不持久化&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;log_level&lt;/td&gt;      &lt;td&gt;日志输出级别&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;auth_crypt_key&lt;/td&gt;      &lt;td&gt;获取服务端authKey时的aes加密密钥，16位&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;p2p_ip&lt;/td&gt;      &lt;td&gt;服务端Ip，使用p2p模式必填&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;p2p_port&lt;/td&gt;      &lt;td&gt;p2p模式开启的udp端口&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#20351;&amp;#29992;https"&gt;&lt;/a&gt;使用https&lt;/h3&gt;  &lt;p&gt;    &lt;strong&gt;方式一：&lt;/strong&gt;类似于nginx实现https的处理&lt;/p&gt;  &lt;p&gt;在配置文件中将https_proxy_port设置为443或者其他你想配置的端口，和在web中对应域名编辑中设置对应的证书路径，将    &lt;code&gt;https_just_proxy&lt;/code&gt;设置为false，然后就和http代理一样了&lt;/p&gt;  &lt;p&gt;    &lt;strong&gt;此外：&lt;/strong&gt;可以在    &lt;code&gt;nps.conf&lt;/code&gt;中设置一个默认的https配置，当遇到未在web中设置https证书的域名解析时，将自动使用默认证书，另还有一种情况就是对于某些请求的clienthello不携带sni扩展信息，nps也将自动使用默认证书&lt;/p&gt;  &lt;p&gt;    &lt;strong&gt;方式二：&lt;/strong&gt;在内网对应服务器上设置https&lt;/p&gt;  &lt;p&gt;在    &lt;code&gt;nps.conf&lt;/code&gt;中将    &lt;code&gt;https_just_proxy&lt;/code&gt;设置为true，并且打开    &lt;code&gt;https_proxy_port&lt;/code&gt;端口，然后nps将直接转发https请求到内网服务器上，由内网服务器进行https处理&lt;/p&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#19982;nginx&amp;#37197;&amp;#21512;"&gt;&lt;/a&gt;与nginx配合&lt;/h3&gt;  &lt;p&gt;有时候我们还需要在云服务器上运行nginx来保证静态文件缓存等，本代理可和nginx配合使用，在配置文件中将httpProxyPort设置为非80端口，并在nginx中配置代理，例如httpProxyPort为8024时&lt;/p&gt;  &lt;pre&gt;    &lt;code&gt;server {
    listen 80;
    server_name *.proxy.com;
    location / {
        proxy_set_header Host  $http_host;
        proxy_pass http://127.0.0.1:8024;
    }
}&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;如需使用https也可在nginx监听443端口并配置ssl，并将本代理的httpsProxyPort设置为空关闭https即可，例如httpProxyPort为8024时&lt;/p&gt;  &lt;pre&gt;    &lt;code&gt;server {
    listen 443;
    server_name *.proxy.com;
    ssl on;
    ssl_certificate  certificate.crt;
    ssl_certificate_key private.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    location / {
        proxy_set_header Host  $http_host;
        proxy_pass http://127.0.0.1:8024;
    }
}&lt;/code&gt;&lt;/pre&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#20851;&amp;#38381;&amp;#20195;&amp;#29702;"&gt;&lt;/a&gt;关闭代理&lt;/h3&gt;  &lt;p&gt;如需关闭http代理可在配置文件中将http_proxy_port设置为空，如需关闭https代理可在配置文件中将https_proxy_port设置为空。&lt;/p&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#23558;nps&amp;#23433;&amp;#35013;&amp;#21040;&amp;#31995;&amp;#32479;"&gt;&lt;/a&gt;将nps安装到系统&lt;/h3&gt;  &lt;p&gt;如果需要长期并且方便的运行nps服务端，可将nps安装到操作系统中，可执行命令&lt;/p&gt;  &lt;pre&gt;    &lt;code&gt;(./nps|nps.exe) install&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;安装成功后，对于linux，darwin，将会把配置文件和静态文件放置于/etc/nps/，并将可执行文件nps复制到/usr/bin/nps或者/usr/local/bin/nps，安装成功后可在任何位置执行&lt;/p&gt;  &lt;pre&gt;    &lt;code&gt;nps test|start|stop|restart|status&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;对于windows系统，将会把配置文件和静态文件放置于C:\Program Files\nps，安装成功后可将可执行文件nps.exe复制到任何位置执行&lt;/p&gt;  &lt;pre&gt;    &lt;code&gt;nps.exe test|start|stop|restart|status&lt;/code&gt;&lt;/pre&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#27969;&amp;#37327;&amp;#25968;&amp;#25454;&amp;#25345;&amp;#20037;&amp;#21270;"&gt;&lt;/a&gt;流量数据持久化&lt;/h3&gt;  &lt;p&gt;服务端支持将流量数据持久化，默认情况下是关闭的，如果有需求可以设置    &lt;code&gt;nps.conf&lt;/code&gt;中的    &lt;code&gt;flow_store_interval&lt;/code&gt;参数，单位为分钟&lt;/p&gt;  &lt;p&gt;    &lt;strong&gt;注意：&lt;/strong&gt;nps不会持久化通过公钥连接的客户端&lt;/p&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#31995;&amp;#32479;&amp;#20449;&amp;#24687;&amp;#26174;&amp;#31034;"&gt;&lt;/a&gt;系统信息显示&lt;/h3&gt;  &lt;p&gt;nps服务端支持在web上显示和统计服务器的相关信息，但默认一些统计图表是关闭的，如需开启请在    &lt;code&gt;nps.conf&lt;/code&gt;中设置    &lt;code&gt;system_info_display=true&lt;/code&gt;&lt;/p&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#33258;&amp;#23450;&amp;#20041;&amp;#23458;&amp;#25143;&amp;#31471;&amp;#36830;&amp;#25509;&amp;#23494;&amp;#38053;"&gt;&lt;/a&gt;自定义客户端连接密钥&lt;/h3&gt;  &lt;p&gt;web上可以自定义客户端连接的密钥，但是必须具有唯一性&lt;/p&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#20851;&amp;#38381;&amp;#20844;&amp;#38053;&amp;#35775;&amp;#38382;"&gt;&lt;/a&gt;关闭公钥访问&lt;/h3&gt;  &lt;p&gt;可以将    &lt;code&gt;nps.conf&lt;/code&gt;中的    &lt;code&gt;public_vkey&lt;/code&gt;设置为空或者删除&lt;/p&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#20851;&amp;#38381;web&amp;#31649;&amp;#29702;"&gt;&lt;/a&gt;关闭web管理&lt;/h3&gt;  &lt;p&gt;可以将    &lt;code&gt;nps.conf&lt;/code&gt;中的    &lt;code&gt;web_port&lt;/code&gt;设置为空或者删除&lt;/p&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#26381;&amp;#21153;&amp;#31471;&amp;#22810;&amp;#29992;&amp;#25143;&amp;#30331;&amp;#38470;"&gt;&lt;/a&gt;服务端多用户登陆&lt;/h3&gt;  &lt;p&gt;如果将    &lt;code&gt;nps.conf&lt;/code&gt;中的    &lt;code&gt;allow_user_login&lt;/code&gt;设置为true,服务端web将支持多用户登陆，登陆用户名为user，默认密码为每个客户端的验证密钥，登陆后可以进入客户端编辑修改web登陆的用户名和密码，默认该功能是关闭的。&lt;/p&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#29992;&amp;#25143;&amp;#27880;&amp;#20876;&amp;#21151;&amp;#33021;"&gt;&lt;/a&gt;用户注册功能&lt;/h3&gt;  &lt;p&gt;nps服务端支持用户注册功能，可将    &lt;code&gt;nps.conf&lt;/code&gt;中的    &lt;code&gt;allow_user_register&lt;/code&gt;设置为true，开启后登陆页将会有有注册功能，&lt;/p&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#30417;&amp;#21548;&amp;#25351;&amp;#23450;ip"&gt;&lt;/a&gt;监听指定ip&lt;/h3&gt;  &lt;p&gt;nps支持每个隧道监听不同的服务端端口,在    &lt;code&gt;nps.conf&lt;/code&gt;中设置    &lt;code&gt;allow_multi_ip=true&lt;/code&gt;后，可在web中控制，或者npc配置文件中(可忽略，默认为0.0.0.0)&lt;/p&gt;  &lt;div&gt;    &lt;pre&gt;server_ip=xxx&lt;/pre&gt;&lt;/div&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#20195;&amp;#29702;&amp;#21040;&amp;#26381;&amp;#21153;&amp;#31471;&amp;#26412;&amp;#22320;"&gt;&lt;/a&gt;代理到服务端本地&lt;/h3&gt;  &lt;p&gt;在使用nps监听80或者443端口时，默认是将所有的请求都会转发到内网上，但有时候我们的nps服务器的上一些服务也需要使用这两个端口，nps提供类似于    &lt;code&gt;nginx&lt;/code&gt;    &lt;code&gt;proxy_pass&lt;/code&gt;的功能，支持将代理到服务器本地，该功能支持域名解析，tcp、udp隧道，默认关闭。&lt;/p&gt;  &lt;p&gt;    &lt;strong&gt;即：&lt;/strong&gt;假设在nps的vps服务器上有一个服务使用5000端口，这时候nps占用了80端口和443，我们想能使用一个域名通过http(s)访问到5000的服务。&lt;/p&gt;  &lt;p&gt;    &lt;strong&gt;使用方式：&lt;/strong&gt;在    &lt;code&gt;nps.conf&lt;/code&gt;中设置    &lt;code&gt;allow_local_proxy=true&lt;/code&gt;，然后在web上设置想转发的隧道或者域名然后选择转发到本地选项即可成功。&lt;/p&gt;  &lt;h2&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#23458;&amp;#25143;&amp;#31471;"&gt;&lt;/a&gt;客户端&lt;/h2&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#23458;&amp;#25143;&amp;#31471;&amp;#21551;&amp;#21160;"&gt;&lt;/a&gt;客户端启动&lt;/h3&gt;  &lt;h4&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#26080;&amp;#37197;&amp;#32622;&amp;#25991;&amp;#20214;&amp;#27169;&amp;#24335;"&gt;&lt;/a&gt;无配置文件模式&lt;/h4&gt;  &lt;p&gt;此模式的各种配置在服务端web管理中完成,客户端除运行一条命令外无需任何其他设置&lt;/p&gt;  &lt;pre&gt;    &lt;code&gt;./npc -server=ip:port -vkey=web界面中显示的密钥&lt;/code&gt;&lt;/pre&gt;  &lt;h4&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#37197;&amp;#32622;&amp;#25991;&amp;#20214;&amp;#27169;&amp;#24335;"&gt;&lt;/a&gt;配置文件模式&lt;/h4&gt;  &lt;p&gt;此模式使用nps的公钥或者客户端私钥验证，各种配置在客户端完成，同时服务端web也可以进行管理&lt;/p&gt;  &lt;pre&gt;    &lt;code&gt;./npc -config=npc配置文件路径&lt;/code&gt;&lt;/pre&gt;  &lt;h4&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#37197;&amp;#32622;&amp;#25991;&amp;#20214;&amp;#35828;&amp;#26126;"&gt;&lt;/a&gt;配置文件说明&lt;/h4&gt;  &lt;p&gt;    &lt;a href="https://github.com/cnlh/nps/tree/master/conf/npc.conf"&gt;示例配置文件&lt;/a&gt;&lt;/p&gt;  &lt;h5&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#20840;&amp;#23616;&amp;#37197;&amp;#32622;"&gt;&lt;/a&gt;全局配置&lt;/h5&gt;  &lt;div&gt;    &lt;pre&gt;[common]server_addr=1.1.1.1:8284conn_type=tcpvkey=123username=111password=222compress=truecrypt=truerate_limit=10000flow_limit=100remark=testmax_conn=10&lt;/pre&gt;&lt;/div&gt;  &lt;table&gt;    &lt;tr&gt;      &lt;th&gt;项&lt;/th&gt;      &lt;th&gt;含义&lt;/th&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;server_addr&lt;/td&gt;      &lt;td&gt;服务端ip:port&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;conn_type&lt;/td&gt;      &lt;td&gt;与服务端通信模式(tcp或kcp)&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;vkey&lt;/td&gt;      &lt;td&gt;服务端配置文件中的密钥(非web)&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;username&lt;/td&gt;      &lt;td&gt;socks5或http(s)密码保护用户名(可忽略)&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;password&lt;/td&gt;      &lt;td&gt;socks5或http(s)密码保护密码(可忽略)&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;compress&lt;/td&gt;      &lt;td&gt;是否压缩传输(true或false或忽略)&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;crypt&lt;/td&gt;      &lt;td&gt;是否加密传输(true或false或忽略)&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;rate_limit&lt;/td&gt;      &lt;td&gt;速度限制，可忽略&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;flow_limit&lt;/td&gt;      &lt;td&gt;流量限制，可忽略&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;remark&lt;/td&gt;      &lt;td&gt;客户端备注，可忽略&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;max_conn&lt;/td&gt;      &lt;td&gt;最大连接数，可忽略&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;  &lt;h5&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#22495;&amp;#21517;&amp;#20195;&amp;#29702;"&gt;&lt;/a&gt;域名代理&lt;/h5&gt;  &lt;div&gt;    &lt;pre&gt;[common]server_addr=1.1.1.1:8284vkey=123[web1]host=a.proxy.comtarget_addr=127.0.0.1:8080,127.0.0.1:8082host_change=www.proxy.comheader_set_proxy=nps&lt;/pre&gt;&lt;/div&gt;  &lt;table&gt;    &lt;tr&gt;      &lt;th&gt;项&lt;/th&gt;      &lt;th&gt;含义&lt;/th&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;web1&lt;/td&gt;      &lt;td&gt;备注&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;host&lt;/td&gt;      &lt;td&gt;域名(http&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;target_addr&lt;/td&gt;      &lt;td&gt;内网目标，负载均衡时多个目标，逗号隔开&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;host_change&lt;/td&gt;      &lt;td&gt;请求host修改&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;header_xxx&lt;/td&gt;      &lt;td&gt;请求header修改或添加，header_proxy表示添加header proxy:nps&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;  &lt;h5&gt;    &lt;a href="https://github.com/cnlh/nps#tcp&amp;#38567;&amp;#36947;&amp;#27169;&amp;#24335;"&gt;&lt;/a&gt;tcp隧道模式&lt;/h5&gt;  &lt;div&gt;    &lt;pre&gt;[common]server_addr=1.1.1.1:8284vkey=123[tcp]mode=tcptarget_addr=127.0.0.1:8080server_port=9001&lt;/pre&gt;&lt;/div&gt;  &lt;table&gt;    &lt;tr&gt;      &lt;th&gt;项&lt;/th&gt;      &lt;th&gt;含义&lt;/th&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;mode&lt;/td&gt;      &lt;td&gt;tcp&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;server_port&lt;/td&gt;      &lt;td&gt;在服务端的代理端口&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;tartget_addr&lt;/td&gt;      &lt;td&gt;内网目标&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;  &lt;h5&gt;    &lt;a href="https://github.com/cnlh/nps#udp&amp;#38567;&amp;#36947;&amp;#27169;&amp;#24335;"&gt;&lt;/a&gt;udp隧道模式&lt;/h5&gt;  &lt;div&gt;    &lt;pre&gt;[common]server_addr=1.1.1.1:8284vkey=123[udp]mode=udptarget_addr=127.0.0.1:8080server_port=9002&lt;/pre&gt;&lt;/div&gt;  &lt;table&gt;    &lt;tr&gt;      &lt;th&gt;项&lt;/th&gt;      &lt;th&gt;含义&lt;/th&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;mode&lt;/td&gt;      &lt;td&gt;udp&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;server_port&lt;/td&gt;      &lt;td&gt;在服务端的代理端口&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;target_addr&lt;/td&gt;      &lt;td&gt;内网目标&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;  &lt;h5&gt;    &lt;a href="https://github.com/cnlh/nps#http&amp;#20195;&amp;#29702;&amp;#27169;&amp;#24335;"&gt;&lt;/a&gt;http代理模式&lt;/h5&gt;  &lt;div&gt;    &lt;pre&gt;[common]server_addr=1.1.1.1:8284vkey=123[http]mode=httpProxyserver_port=9003&lt;/pre&gt;&lt;/div&gt;  &lt;table&gt;    &lt;tr&gt;      &lt;th&gt;项&lt;/th&gt;      &lt;th&gt;含义&lt;/th&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;mode&lt;/td&gt;      &lt;td&gt;httpProxy&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;server_port&lt;/td&gt;      &lt;td&gt;在服务端的代理端口&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;  &lt;h5&gt;    &lt;a href="https://github.com/cnlh/nps#socks5&amp;#20195;&amp;#29702;&amp;#27169;&amp;#24335;"&gt;&lt;/a&gt;socks5代理模式&lt;/h5&gt;  &lt;div&gt;    &lt;pre&gt;[common]server_addr=1.1.1.1:8284vkey=123[socks5]mode=socks5server_port=9004&lt;/pre&gt;&lt;/div&gt;  &lt;table&gt;    &lt;tr&gt;      &lt;th&gt;项&lt;/th&gt;      &lt;th&gt;含义&lt;/th&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;mode&lt;/td&gt;      &lt;td&gt;socks5&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;server_port&lt;/td&gt;      &lt;td&gt;在服务端的代理端口&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;  &lt;h5&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#31169;&amp;#23494;&amp;#20195;&amp;#29702;&amp;#27169;&amp;#24335;"&gt;&lt;/a&gt;私密代理模式&lt;/h5&gt;  &lt;div&gt;    &lt;pre&gt;[common]server_addr=1.1.1.1:8284vkey=123[secret_ssh]mode=secretpassword=ssh2target_addr=10.1.50.2:22&lt;/pre&gt;&lt;/div&gt;  &lt;table&gt;    &lt;tr&gt;      &lt;th&gt;项&lt;/th&gt;      &lt;th&gt;含义&lt;/th&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;mode&lt;/td&gt;      &lt;td&gt;secret&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;password&lt;/td&gt;      &lt;td&gt;唯一密钥&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;target_addr&lt;/td&gt;      &lt;td&gt;内网目标&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;  &lt;h5&gt;    &lt;a href="https://github.com/cnlh/nps#p2p&amp;#20195;&amp;#29702;&amp;#27169;&amp;#24335;"&gt;&lt;/a&gt;p2p代理模式&lt;/h5&gt;  &lt;div&gt;    &lt;pre&gt;[common]server_addr=1.1.1.1:8284vkey=123[p2p_ssh]mode=p2ppassword=ssh2target_addr=10.1.50.2:22&lt;/pre&gt;&lt;/div&gt;  &lt;table&gt;    &lt;tr&gt;      &lt;th&gt;项&lt;/th&gt;      &lt;th&gt;含义&lt;/th&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;mode&lt;/td&gt;      &lt;td&gt;p2p&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;password&lt;/td&gt;      &lt;td&gt;唯一密钥&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;target_addr&lt;/td&gt;      &lt;td&gt;内网目标&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;  &lt;h5&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#25991;&amp;#20214;&amp;#35775;&amp;#38382;&amp;#27169;&amp;#24335;"&gt;&lt;/a&gt;文件访问模式&lt;/h5&gt;  &lt;p&gt;利用nps提供一个公网可访问的本地文件服务，此模式仅客户端使用配置文件模式方可启动&lt;/p&gt;  &lt;div&gt;    &lt;pre&gt;[common]server_addr=1.1.1.1:8284vkey=123[file]mode=fileserver_port=9100local_path=/tmp/strip_pre=/web/&lt;/pre&gt;&lt;/div&gt;  &lt;table&gt;    &lt;tr&gt;      &lt;th&gt;项&lt;/th&gt;      &lt;th&gt;含义&lt;/th&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;mode&lt;/td&gt;      &lt;td&gt;file&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;server_port&lt;/td&gt;      &lt;td&gt;服务端开启的端口&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;local_path&lt;/td&gt;      &lt;td&gt;本地文件目录&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;strip_pre&lt;/td&gt;      &lt;td&gt;前缀&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;  &lt;p&gt;对于    &lt;code&gt;strip_pre&lt;/code&gt;，访问公网    &lt;code&gt;ip:9100/web/&lt;/code&gt;相当于访问    &lt;code&gt;/tmp/&lt;/code&gt;目录&lt;/p&gt;  &lt;h4&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#26029;&amp;#32447;&amp;#37325;&amp;#36830;"&gt;&lt;/a&gt;断线重连&lt;/h4&gt;  &lt;div&gt;    &lt;pre&gt;[common]auto_reconnection=true&lt;/pre&gt;&lt;/div&gt;  &lt;h4&gt;    &lt;a href="https://github.com/cnlh/nps#nat&amp;#31867;&amp;#22411;&amp;#26816;&amp;#27979;"&gt;&lt;/a&gt;nat类型检测&lt;/h4&gt;  &lt;pre&gt;    &lt;code&gt;./npc nat&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;如果p2p双方都是Symmetric Nat，肯定不能成功，其他组合都有较大成功率。&lt;/p&gt;  &lt;h4&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#29366;&amp;#24577;&amp;#26816;&amp;#26597;"&gt;&lt;/a&gt;状态检查&lt;/h4&gt;  &lt;pre&gt;    &lt;code&gt;./npc status -config=npc配置文件路径&lt;/code&gt;&lt;/pre&gt;  &lt;h4&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#37325;&amp;#36733;&amp;#37197;&amp;#32622;&amp;#25991;&amp;#20214;"&gt;&lt;/a&gt;重载配置文件&lt;/h4&gt;  &lt;pre&gt;    &lt;code&gt;./npc restart -config=npc配置文件路径&lt;/code&gt;&lt;/pre&gt;  &lt;h4&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#36890;&amp;#36807;&amp;#20195;&amp;#29702;&amp;#36830;&amp;#25509;nps"&gt;&lt;/a&gt;通过代理连接nps&lt;/h4&gt;  &lt;p&gt;有时候运行npc的内网机器无法直接访问外网，此时可以可以通过socks5代理连接nps&lt;/p&gt;  &lt;p&gt;对于配置文件方式启动,设置&lt;/p&gt;  &lt;div&gt;    &lt;pre&gt;[common]proxy_url=socks5://111:222@127.0.0.1:8024&lt;/pre&gt;&lt;/div&gt;  &lt;p&gt;对于无配置文件模式,加上参数&lt;/p&gt;  &lt;pre&gt;    &lt;code&gt;-proxy=socks5://111:222@127.0.0.1:8024&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;支持socks5和http两种模式&lt;/p&gt;  &lt;p&gt;即socks5://username:password@ip:port&lt;/p&gt;  &lt;p&gt;或    &lt;a href="http://username:password@ip:port" rel="nofollow"&gt;http://username:password@ip:port&lt;/a&gt;&lt;/p&gt;  &lt;h4&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#32676;&amp;#26198;&amp;#25903;&amp;#25345;"&gt;&lt;/a&gt;群晖支持&lt;/h4&gt;  &lt;p&gt;可在releases中下载spk群晖套件，例如    &lt;code&gt;npc_x64-6.1_0.19.0-1.spk&lt;/code&gt;&lt;/p&gt;  &lt;h2&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#30456;&amp;#20851;&amp;#21151;&amp;#33021;"&gt;&lt;/a&gt;相关功能&lt;/h2&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#32531;&amp;#23384;&amp;#25903;&amp;#25345;"&gt;&lt;/a&gt;缓存支持&lt;/h3&gt;  &lt;p&gt;对于web站点来说，一些静态文件往往消耗更大的流量，且在内网穿透中，静态文件还需到客户端获取一次，这将导致更大的流量消耗。nps在域名解析代理中支持对静态文件进行缓存。&lt;/p&gt;  &lt;p&gt;即假设一个站点有a.css，nps将只需从npc客户端读取一次该文件，然后把该文件的内容放在内存中，下一次将不再对npc客户端进行请求而直接返回内存中的对应内容。该功能默认是关闭的，如需开启请在    &lt;code&gt;nps.conf&lt;/code&gt;中设置    &lt;code&gt;http_cache=true&lt;/code&gt;，并设置    &lt;code&gt;http_cache_length&lt;/code&gt;（缓存文件的个数，消耗内存，不宜过大，0表示不限制个数）&lt;/p&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#25968;&amp;#25454;&amp;#21387;&amp;#32553;&amp;#25903;&amp;#25345;"&gt;&lt;/a&gt;数据压缩支持&lt;/h3&gt;  &lt;p&gt;由于是内网穿透，内网客户端与服务端之间的隧道存在大量的数据交换，为节省流量，加快传输速度，由此本程序支持SNNAPY形式的压缩。&lt;/p&gt;  &lt;ul&gt;    &lt;li&gt;所有模式均支持数据压缩&lt;/li&gt;    &lt;li&gt;在web管理或客户端配置文件中设置&lt;/li&gt;&lt;/ul&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#21152;&amp;#23494;&amp;#20256;&amp;#36755;"&gt;&lt;/a&gt;加密传输&lt;/h3&gt;  &lt;p&gt;如果公司内网防火墙对外网访问进行了流量识别与屏蔽，例如禁止了ssh协议等，通过设置 配置文件，将服务端与客户端之间的通信内容加密传输，将会有效防止流量被拦截。&lt;/p&gt;  &lt;ul&gt;    &lt;li&gt;nps使用tls加密，所以一定要保留conf目录下的密钥文件，同时也可以自行生成&lt;/li&gt;    &lt;li&gt;在web管理或客户端配置文件中设置&lt;/li&gt;&lt;/ul&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#31449;&amp;#28857;&amp;#20445;&amp;#25252;"&gt;&lt;/a&gt;站点保护&lt;/h3&gt;  &lt;p&gt;域名代理模式所有客户端共用一个http服务端口，在知道域名后任何人都可访问，一些开发或者测试环境需要保密，所以可以设置用户名和密码，nps将通过 Http Basic Auth 来保护，访问时需要输入正确的用户名和密码。&lt;/p&gt;  &lt;ul&gt;    &lt;li&gt;在web管理或客户端配置文件中设置&lt;/li&gt;&lt;/ul&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#host&amp;#20462;&amp;#25913;"&gt;&lt;/a&gt;host修改&lt;/h3&gt;  &lt;p&gt;由于内网站点需要的host可能与公网域名不一致，域名代理支持host修改功能，即修改request的header中的host字段。&lt;/p&gt;  &lt;p&gt;    &lt;strong&gt;使用方法：在web管理中设置&lt;/strong&gt;&lt;/p&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#33258;&amp;#23450;&amp;#20041;header"&gt;&lt;/a&gt;自定义header&lt;/h3&gt;  &lt;p&gt;支持对header进行新增或者修改，以配合服务的需要&lt;/p&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#404&amp;#39029;&amp;#38754;&amp;#37197;&amp;#32622;"&gt;&lt;/a&gt;404页面配置&lt;/h3&gt;  &lt;p&gt;支持域名解析模式的自定义404页面，修改/web/static/page/error.html中内容即可，暂不支持静态文件等内容&lt;/p&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#27969;&amp;#37327;&amp;#38480;&amp;#21046;"&gt;&lt;/a&gt;流量限制&lt;/h3&gt;  &lt;p&gt;支持客户端级流量限制，当该客户端入口流量与出口流量达到设定的总量后会拒绝服务
，域名代理会返回404页面，其他代理会拒绝连接,使用该功能需要在    &lt;code&gt;nps.conf&lt;/code&gt;中设置    &lt;code&gt;allow_flow_limit&lt;/code&gt;，默认是关闭的。&lt;/p&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#24102;&amp;#23485;&amp;#38480;&amp;#21046;"&gt;&lt;/a&gt;带宽限制&lt;/h3&gt;  &lt;p&gt;支持客户端级带宽限制，带宽计算方式为入口和出口总和，权重均衡,使用该功能需要在    &lt;code&gt;nps.conf&lt;/code&gt;中设置    &lt;code&gt;allow_rate_limit&lt;/code&gt;，默认是关闭的。&lt;/p&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#36127;&amp;#36733;&amp;#22343;&amp;#34913;"&gt;&lt;/a&gt;负载均衡&lt;/h3&gt;  &lt;p&gt;本代理支持域名解析模式和tcp代理的负载均衡，在web域名添加或者编辑中内网目标分行填写多个目标即可实现轮训级别的负载均衡&lt;/p&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#31471;&amp;#21475;&amp;#30333;&amp;#21517;&amp;#21333;"&gt;&lt;/a&gt;端口白名单&lt;/h3&gt;  &lt;p&gt;为了防止服务端上的端口被滥用，可在nps.conf中配置allow_ports限制可开启的端口，忽略或者不填表示端口不受限制，格式：&lt;/p&gt;  &lt;div&gt;    &lt;pre&gt;allow_ports=9001-9009,10001,11000-12000&lt;/pre&gt;&lt;/div&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#31471;&amp;#21475;&amp;#33539;&amp;#22260;&amp;#26144;&amp;#23556;"&gt;&lt;/a&gt;端口范围映射&lt;/h3&gt;  &lt;p&gt;当客户端以配置文件的方式启动时，可以将本地的端口进行范围映射，仅支持tcp和udp模式，例如：&lt;/p&gt;  &lt;div&gt;    &lt;pre&gt;[tcp]mode=tcpserver_port=9001-9009,10001,11000-12000target_port=8001-8009,10002,13000-14000&lt;/pre&gt;&lt;/div&gt;  &lt;p&gt;逗号分隔，可单个或者范围，注意上下端口的对应关系，无法一一对应将不能成功&lt;/p&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#31471;&amp;#21475;&amp;#33539;&amp;#22260;&amp;#26144;&amp;#23556;&amp;#21040;&amp;#20854;&amp;#20182;&amp;#26426;&amp;#22120;"&gt;&lt;/a&gt;端口范围映射到其他机器&lt;/h3&gt;  &lt;div&gt;    &lt;pre&gt;[tcp]mode=tcpserver_port=9001-9009,10001,11000-12000target_port=8001-8009,10002,13000-14000target_ip=10.1.50.2&lt;/pre&gt;&lt;/div&gt;  &lt;p&gt;填写target_ip后则表示映射的该地址机器的端口，忽略则便是映射本地127.0.0.1,仅范围映射时有效&lt;/p&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#23432;&amp;#25252;&amp;#36827;&amp;#31243;"&gt;&lt;/a&gt;守护进程&lt;/h3&gt;  &lt;p&gt;本代理支持守护进程，使用示例如下，服务端客户端所有模式通用,支持linux，darwin，windows。&lt;/p&gt;  &lt;pre&gt;    &lt;code&gt;./(nps|npc) start|stop|restart|status 若有其他参数可加其他参数&lt;/code&gt;&lt;/pre&gt;  &lt;pre&gt;    &lt;code&gt;(nps|npc).exe start|stop|restart|status 若有其他参数可加其他参数&lt;/code&gt;&lt;/pre&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#kcp&amp;#21327;&amp;#35758;&amp;#25903;&amp;#25345;"&gt;&lt;/a&gt;KCP协议支持&lt;/h3&gt;  &lt;p&gt;KCP 是一个快速可靠协议，能以比 TCP浪费10%-20%的带宽的代价，换取平均延迟降低 30%-40%，在弱网环境下对性能能有一定的提升。可在nps.conf中修改    &lt;code&gt;bridge_type&lt;/code&gt;为kcp
，设置后本代理将开启udp端口（    &lt;code&gt;bridge_port&lt;/code&gt;）&lt;/p&gt;  &lt;p&gt;注意：当服务端为kcp时，客户端连接时也需要使用相同配置，无配置文件模式加上参数type=kcp,配置文件模式在配置文件中设置tp=kcp&lt;/p&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#22495;&amp;#21517;&amp;#27867;&amp;#35299;&amp;#26512;"&gt;&lt;/a&gt;域名泛解析&lt;/h3&gt;  &lt;p&gt;支持域名泛解析，例如将host设置为*.proxy.com，a.proxy.com、b.proxy.com等都将解析到同一目标，在web管理中或客户端配置文件中将host设置为此格式即可。&lt;/p&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#url&amp;#36335;&amp;#30001;"&gt;&lt;/a&gt;URL路由&lt;/h3&gt;  &lt;p&gt;本代理支持根据URL将同一域名转发到不同的内网服务器，可在web中或客户端配置文件中设置，此参数也可忽略，例如在客户端配置文件中&lt;/p&gt;  &lt;div&gt;    &lt;pre&gt;[web1]host=a.proxy.comtarget_addr=127.0.0.1:7001location=/test[web2]host=a.proxy.comtarget_addr=127.0.0.1:7002location=/static&lt;/pre&gt;&lt;/div&gt;  &lt;p&gt;对于    &lt;code&gt;a.proxy.com/test&lt;/code&gt;将转发到    &lt;code&gt;web1&lt;/code&gt;，对于    &lt;code&gt;a.proxy.com/static&lt;/code&gt;将转发到    &lt;code&gt;web2&lt;/code&gt;&lt;/p&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#38480;&amp;#21046;ip&amp;#35775;&amp;#38382;"&gt;&lt;/a&gt;限制ip访问&lt;/h3&gt;  &lt;p&gt;如果将一些危险性高的端口例如ssh端口暴露在公网上，可能会带来一些风险，本代理支持限制ip访问。&lt;/p&gt;  &lt;p&gt;    &lt;strong&gt;使用方法:&lt;/strong&gt;在配置文件nps.conf中设置    &lt;code&gt;ip_limit&lt;/code&gt;=true，设置后仅通过注册的ip方可访问。&lt;/p&gt;  &lt;p&gt;    &lt;strong&gt;ip注册&lt;/strong&gt;：&lt;/p&gt;  &lt;p&gt;    &lt;strong&gt;方式一：&lt;/strong&gt;在需要访问的机器上，运行客户端&lt;/p&gt;  &lt;pre&gt;    &lt;code&gt;./npc register -server=ip:port -vkey=公钥或客户端密钥 time=2&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;time为有效小时数，例如time=2，在当前时间后的两小时内，本机公网ip都可以访问nps代理.&lt;/p&gt;  &lt;p&gt;    &lt;strong&gt;方式二：&lt;/strong&gt;此外nps的web登陆也可提供验证的功能，成功登陆nps web admin后将自动为登陆的ip注册两小时的允许访问权限。&lt;/p&gt;  &lt;p&gt;    &lt;strong&gt;注意：&lt;/strong&gt;本机公网ip并不是一成不变的，请自行注意有效期的设置，同时同一网络下，多人也可能是在公用同一个公网ip。&lt;/p&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#23458;&amp;#25143;&amp;#31471;&amp;#26368;&amp;#22823;&amp;#36830;&amp;#25509;&amp;#25968;"&gt;&lt;/a&gt;客户端最大连接数&lt;/h3&gt;  &lt;p&gt;为防止恶意大量长连接，影响服务端程序的稳定性，可以在web或客户端配置文件中为每个客户端设置最大连接数。该功能针对    &lt;code&gt;socks5&lt;/code&gt;、    &lt;code&gt;http正向代理&lt;/code&gt;、    &lt;code&gt;域名代理&lt;/code&gt;、    &lt;code&gt;tcp代理&lt;/code&gt;、    &lt;code&gt;udp代理&lt;/code&gt;、    &lt;code&gt;私密代理&lt;/code&gt;生效,使用该功能需要在    &lt;code&gt;nps.conf&lt;/code&gt;中设置    &lt;code&gt;allow_connection_num_limit=true&lt;/code&gt;，默认是关闭的。&lt;/p&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#23458;&amp;#25143;&amp;#31471;&amp;#26368;&amp;#22823;&amp;#38567;&amp;#36947;&amp;#25968;&amp;#38480;&amp;#21046;"&gt;&lt;/a&gt;客户端最大隧道数限制&lt;/h3&gt;  &lt;p&gt;nps支持对客户端的隧道数量进行限制，该功能默认是关闭的，如需开启，请在    &lt;code&gt;nps.conf&lt;/code&gt;中设置    &lt;code&gt;allow_tunnel_num_limit=true&lt;/code&gt;。&lt;/p&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#31471;&amp;#21475;&amp;#22797;&amp;#29992;"&gt;&lt;/a&gt;端口复用&lt;/h3&gt;  &lt;p&gt;在一些严格的网络环境中，对端口的个数等限制较大，nps支持强大端口复用功能。将    &lt;code&gt;bridge_port&lt;/code&gt;、    &lt;code&gt;http_proxy_port&lt;/code&gt;、    &lt;code&gt;https_proxy_port&lt;/code&gt;、    &lt;code&gt;web_port&lt;/code&gt;都设置为同一端口，也能正常使用。&lt;/p&gt;  &lt;ul&gt;    &lt;li&gt;使用时将需要复用的端口设置为与      &lt;code&gt;bridge_port&lt;/code&gt;一致即可，将自动识别。&lt;/li&gt;    &lt;li&gt;如需将web管理的端口也复用，需要配置      &lt;code&gt;web_host&lt;/code&gt;也就是一个二级域名以便区分&lt;/li&gt;&lt;/ul&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#22810;&amp;#36335;&amp;#22797;&amp;#29992;"&gt;&lt;/a&gt;多路复用&lt;/h3&gt;  &lt;p&gt;nps主要通信默认基于多路复用，无需开启。&lt;/p&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#29615;&amp;#22659;&amp;#21464;&amp;#37327;&amp;#28210;&amp;#26579;"&gt;&lt;/a&gt;环境变量渲染&lt;/h3&gt;  &lt;p&gt;npc支持环境变量渲染以适应在某些特殊场景下的要求。&lt;/p&gt;  &lt;p&gt;    &lt;strong&gt;在无配置文件启动模式下：&lt;/strong&gt;设置环境变量&lt;/p&gt;  &lt;pre&gt;    &lt;code&gt;export NPC_SERVER_ADDR=1.1.1.1:8284
export NPC_SERVER_VKEY=xxxxx&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;直接执行./npc即可运行&lt;/p&gt;  &lt;p&gt;    &lt;strong&gt;在配置文件启动模式下：&lt;/strong&gt;&lt;/p&gt;  &lt;div&gt;    &lt;pre&gt;[common]server_addr={{.NPC_SERVER_ADDR}}conn_type=tcpvkey={{.NPC_SERVER_VKEY}}auto_reconnection=true[web]host={{.NPC_WEB_HOST}}target_addr={{.NPC_WEB_TARGET}}&lt;/pre&gt;&lt;/div&gt;  &lt;p&gt;在配置文件中填入相应的环境变量名称，npc将自动进行渲染配置文件替换环境变量&lt;/p&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#20581;&amp;#24247;&amp;#26816;&amp;#26597;"&gt;&lt;/a&gt;健康检查&lt;/h3&gt;  &lt;p&gt;当客户端以配置文件模式启动时，支持多节点的健康检查。配置示例如下&lt;/p&gt;  &lt;div&gt;    &lt;pre&gt;[health_check_test1]health_check_timeout=1health_check_max_failed=3health_check_interval=1health_http_url=/health_check_type=httphealth_check_target=127.0.0.1:8083,127.0.0.1:8082[health_check_test2]health_check_timeout=1health_check_max_failed=3health_check_interval=1health_check_type=tcphealth_check_target=127.0.0.1:8083,127.0.0.1:8082&lt;/pre&gt;&lt;/div&gt;  &lt;p&gt;    &lt;strong&gt;health关键词必须在开头存在&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;第一种是http模式，也就是以get的方式请求目标+url，返回状态码为200表示成功&lt;/p&gt;  &lt;p&gt;第一种是tcp模式，也就是以tcp的方式与目标建立连接，能成功建立连接表示成功&lt;/p&gt;  &lt;p&gt;如果失败次数超过    &lt;code&gt;health_check_max_failed&lt;/code&gt;，nps则会移除该npc下的所有该目标，如果失败后目标重新上线，nps将自动将目标重新加入。&lt;/p&gt;  &lt;table&gt;    &lt;tr&gt;      &lt;th&gt;项&lt;/th&gt;      &lt;th&gt;含义&lt;/th&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;health_check_timeout&lt;/td&gt;      &lt;td&gt;健康检查超时时间&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;health_check_max_failed&lt;/td&gt;      &lt;td&gt;健康检查允许失败次数&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;health_check_interval&lt;/td&gt;      &lt;td&gt;健康检查间隔&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;health_check_type&lt;/td&gt;      &lt;td&gt;健康检查类型&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;health_check_target&lt;/td&gt;      &lt;td&gt;健康检查目标，多个以逗号（,）分隔&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;health_check_type&lt;/td&gt;      &lt;td&gt;健康检查类型&lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;      &lt;td&gt;health_http_url&lt;/td&gt;      &lt;td&gt;健康检查url，仅http模式适用&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#26085;&amp;#24535;&amp;#36755;&amp;#20986;"&gt;&lt;/a&gt;日志输出&lt;/h3&gt;  &lt;h4&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#26085;&amp;#24535;&amp;#36755;&amp;#20986;&amp;#32423;&amp;#21035;"&gt;&lt;/a&gt;日志输出级别&lt;/h4&gt;  &lt;p&gt;    &lt;strong&gt;对于npc：&lt;/strong&gt;&lt;/p&gt;  &lt;pre&gt;    &lt;code&gt;-log_level=0~7 -log_path=npc.log&lt;/code&gt;&lt;/pre&gt;  &lt;pre&gt;    &lt;code&gt;LevelEmergency-&amp;gt;0  LevelAlert-&amp;gt;1

LevelCritical-&amp;gt;2 LevelError-&amp;gt;3

LevelWarning-&amp;gt;4 LevelNotice-&amp;gt;5

LevelInformational-&amp;gt;6 LevelDebug-&amp;gt;7&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;默认为全输出,级别为0到7&lt;/p&gt;  &lt;p&gt;    &lt;strong&gt;对于nps：&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;在    &lt;code&gt;nps.conf&lt;/code&gt;中设置相关配置即可&lt;/p&gt;  &lt;h2&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#30456;&amp;#20851;&amp;#35828;&amp;#26126;"&gt;&lt;/a&gt;相关说明&lt;/h2&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#33719;&amp;#21462;&amp;#29992;&amp;#25143;&amp;#30495;&amp;#23454;ip"&gt;&lt;/a&gt;获取用户真实ip&lt;/h3&gt;  &lt;p&gt;在域名代理模式中，可以通过request请求 header 中的 X-Forwarded-For 和 X-Real-IP 来获取用户真实 IP。&lt;/p&gt;  &lt;p&gt;    &lt;strong&gt;本代理前会在每一个http(s)请求中添加了这两个 header。&lt;/strong&gt;&lt;/p&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#28909;&amp;#26356;&amp;#26032;&amp;#25903;&amp;#25345;"&gt;&lt;/a&gt;热更新支持&lt;/h3&gt;  &lt;p&gt;对于绝大多数配置，在web管理中的修改将实时使用，无需重启客户端或者服务端&lt;/p&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#23458;&amp;#25143;&amp;#31471;&amp;#22320;&amp;#22336;&amp;#26174;&amp;#31034;"&gt;&lt;/a&gt;客户端地址显示&lt;/h3&gt;  &lt;p&gt;在web管理中将显示客户端的连接地址&lt;/p&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#27969;&amp;#37327;&amp;#32479;&amp;#35745;"&gt;&lt;/a&gt;流量统计&lt;/h3&gt;  &lt;p&gt;可统计显示每个代理使用的流量，由于压缩和加密等原因，会和实际环境中的略有差异&lt;/p&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#24403;&amp;#21069;&amp;#23458;&amp;#25143;&amp;#31471;&amp;#24102;&amp;#23485;"&gt;&lt;/a&gt;当前客户端带宽&lt;/h3&gt;  &lt;p&gt;可统计每个客户端当前的带宽，可能和实际有一定差异，仅供参考。&lt;/p&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#23458;&amp;#25143;&amp;#31471;&amp;#19982;&amp;#26381;&amp;#21153;&amp;#31471;&amp;#29256;&amp;#26412;&amp;#23545;&amp;#27604;"&gt;&lt;/a&gt;客户端与服务端版本对比&lt;/h3&gt;  &lt;p&gt;为了程序正常运行，客户端与服务端的核心版本必须一致，否则将导致客户端无法成功连接致服务端。&lt;/p&gt;  &lt;h2&gt;    &lt;a href="https://github.com/cnlh/nps#webapi"&gt;&lt;/a&gt;webAPI&lt;/h2&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#webapi&amp;#39564;&amp;#35777;&amp;#35828;&amp;#26126;"&gt;&lt;/a&gt;webAPI验证说明&lt;/h3&gt;  &lt;ul&gt;    &lt;li&gt;采用auth_key的验证方式&lt;/li&gt;    &lt;li&gt;在提交的每个请求后面附带两个参数，      &lt;code&gt;auth_key&lt;/code&gt;和      &lt;code&gt;timestamp&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;pre&gt;    &lt;code&gt;auth_key的生成方式为：md5(配置文件中的auth_key+当前时间戳)&lt;/code&gt;&lt;/pre&gt;  &lt;pre&gt;    &lt;code&gt;timestamp为当前时间戳&lt;/code&gt;&lt;/pre&gt;  &lt;pre&gt;    &lt;code&gt;curl --request POST \
  --url http://127.0.0.1:8080/client/list \
  --data &amp;apos;auth_key=2a0000d9229e7dbcf79dd0f5e04bb084&amp;amp;timestamp=1553045344&amp;amp;start=0&amp;amp;limit=10&amp;apos;&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;    &lt;strong&gt;注意：&lt;/strong&gt;为保证安全，时间戳的有效范围为20秒内，所以每次提交请求必须重新生成。&lt;/p&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#33719;&amp;#21462;&amp;#26381;&amp;#21153;&amp;#31471;&amp;#26102;&amp;#38388;"&gt;&lt;/a&gt;获取服务端时间&lt;/h3&gt;  &lt;p&gt;由于服务端与api请求的客户端时间差异不能太大，所以提供了一个可以获取服务端时间的接口&lt;/p&gt;  &lt;pre&gt;    &lt;code&gt;POST /auth/gettime&lt;/code&gt;&lt;/pre&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#33719;&amp;#21462;&amp;#26381;&amp;#21153;&amp;#31471;authkey"&gt;&lt;/a&gt;获取服务端authKey&lt;/h3&gt;  &lt;p&gt;如果想获取authKey，服务端提供获取authKey的接口&lt;/p&gt;  &lt;pre&gt;    &lt;code&gt;POST /auth/getauthkey&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;将返回加密后的authKey，采用aes cbc加密，请使用与服务端配置文件中cryptKey相同的密钥进行解密&lt;/p&gt;  &lt;p&gt;    &lt;strong&gt;注意：&lt;/strong&gt;nps配置文件中    &lt;code&gt;auth_crypt_key&lt;/code&gt;需为16位&lt;/p&gt;  &lt;ul&gt;    &lt;li&gt;解密密钥长度128&lt;/li&gt;    &lt;li&gt;偏移量与密钥相同&lt;/li&gt;    &lt;li&gt;补码方式pkcs5padding&lt;/li&gt;    &lt;li&gt;解密串编码方式 十六进制&lt;/li&gt;&lt;/ul&gt;  &lt;h3&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#35814;&amp;#32454;&amp;#25991;&amp;#26723;"&gt;&lt;/a&gt;详细文档&lt;/h3&gt;  &lt;ul&gt;    &lt;li&gt;      &lt;strong&gt;此文档近期可能更新较慢，建议自行抓包&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;为方便第三方扩展，在web模式下可利用webAPI进行相关操作，详情见    &lt;a href="https://github.com/cnlh/nps/wiki/webAPI%E6%96%87%E6%A1%A3"&gt;webAPI文档&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#36129;&amp;#29486;"&gt;&lt;/a&gt;贡献&lt;/h2&gt;  &lt;h4&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#27426;&amp;#36814;&amp;#21442;&amp;#19982;&amp;#21040;&amp;#21046;&amp;#20316;docker&amp;#22270;&amp;#26631;&amp;#25991;&amp;#26723;&amp;#32763;&amp;#35793;&amp;#31561;&amp;#24037;&amp;#20316;"&gt;&lt;/a&gt;    &lt;strong&gt;欢迎参与到制作docker、图标、文档翻译等工作&lt;/strong&gt;&lt;/h4&gt;  &lt;ul&gt;    &lt;li&gt;如果遇到bug可以直接提交至dev分支&lt;/li&gt;    &lt;li&gt;使用遇到问题可以通过issues反馈&lt;/li&gt;    &lt;li&gt;项目处于开发阶段，还有很多待完善的地方，如果可以贡献代码，请提交 PR 至 dev 分支&lt;/li&gt;    &lt;li&gt;如果有新的功能特性反馈，可以通过issues或者qq群反馈&lt;/li&gt;&lt;/ul&gt;  &lt;h2&gt;    &lt;a href="https://github.com/cnlh/nps#&amp;#25424;&amp;#21161;"&gt;&lt;/a&gt;捐助&lt;/h2&gt;  &lt;p&gt;如果您觉得nps对你有帮助，欢迎给予我们一定捐助，也是帮助nps更好的发展。&lt;/p&gt;  &lt;h3&gt;  &lt;br /&gt;&lt;/h3&gt;  &lt;h2&gt;  &lt;br /&gt;&lt;/h2&gt;  &lt;p&gt;  &lt;br /&gt;&lt;/p&gt;
    &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/59950-github-cnlh-nps</guid>
      <pubDate>Mon, 12 Aug 2019 09:52:34 CST</pubDate>
    </item>
    <item>
      <title>使用NiFi简单的从网站获取数据写入到mysql数据库</title>
      <link>https://itindex.net/detail/59886-nifi-%E7%BD%91%E7%AB%99-%E6%95%B0%E6%8D%AE</link>
      <description>&lt;div&gt;
  &lt;p&gt;        最近稍微研究了下etl工具nifi，它是Apache下面的一个项目，是用作数据流处理的，具体的就不多做介绍了，网上也有很多介绍，官网是   &lt;a href="https://nifi.apache.org/docs.html" target="_blank"&gt;https://nifi.apache.org/docs.html&lt;/a&gt;，我在这里做了一个从中移物联网onenet平台抽取数据到mysql的功能，没有做数据过滤以及中文转码乱码的情况处理，这2个地方还不清楚怎么做，如果会的同学也帮忙指导我一下，我们接下来看看整个的设计过程。&lt;/p&gt;
  &lt;p&gt;      首先我们在官网上面下载nifi，我这里使用的版本是1.9.2，解压nifi后，我们就可以进入该文件夹下面的bin目录，点击run-nifi.bat启动nifi，可能nifi启动毕竟慢的原因，我关闭后重新启动一两次才能打开nifi的网页，默认端口是8080，可以在conf文件夹下面的nifi.properties修改端口号nifi.web.http.port。&lt;/p&gt;
  &lt;p&gt;      进入到nifi主页后，我们可以看到如下图片&lt;/p&gt;
  &lt;p&gt;   &lt;br /&gt;   &lt;img alt="" src="http://dl2.iteye.com/upload/attachment/0132/1079/42a55d4e-b719-362b-b652-f7238d884ff0.png"&gt;&lt;/img&gt;   &lt;br /&gt; 我们选择第一个图标，按住鼠标拖动该图标到空白页即可，显示出如下图片   &lt;br /&gt;   &lt;img alt="" height="354" src="http://dl2.iteye.com/upload/attachment/0132/1081/7d352bf4-8f32-3adc-9be5-2a7981d767a5.png" width="642"&gt;&lt;/img&gt;   &lt;br /&gt; 在搜索框里面输入GetHttp,然后双击它就可以了，然后在空白页就会出现   &lt;br /&gt;   &lt;img alt="" src="http://dl2.iteye.com/upload/attachment/0132/1083/d944888e-8e60-3223-a73f-bfcec3bf7ee7.png"&gt;&lt;/img&gt;   &lt;br /&gt; 双击或者右键点击configure选项，我们可以在settings-&amp;gt;name下自定义名称，我们这里主要介绍下properties页签下的配置，其他的页签配置可以参考官网介绍，在properties页签下我们首先得定义从哪里取数据即url属性，在配置url属性之前我们可以可以在nifi配置一个公共的url地址属性，在空白处右键点击鼠标可以出现如下所示的内容&lt;/p&gt;
  &lt;p&gt;   &lt;br /&gt;   &lt;img alt="" src="http://dl2.iteye.com/upload/attachment/0132/1085/c058f96e-65a0-3c40-adb5-7bd43900cc00.png"&gt;&lt;/img&gt;   &lt;br /&gt; 选择variables属性，进入后如下所示&lt;/p&gt;
  &lt;p&gt;   &lt;br /&gt;   &lt;img alt="" src="http://dl2.iteye.com/upload/attachment/0132/1087/9d0c758f-6610-35f7-9604-fa359b6df004.png"&gt;&lt;/img&gt;   &lt;br /&gt; 添加如上所示的属性，现在回到GetHttp的properties页签上，在url属性上输入以下值&lt;/p&gt;
  &lt;p&gt;   &lt;br /&gt;   &lt;img alt="" src="http://dl2.iteye.com/upload/attachment/0132/1089/929a7896-dce6-3e80-b41a-1ef2231dccd7.png"&gt;&lt;/img&gt;   &lt;br /&gt; filename属性就是以后的flowfile名称，同时定义一个自定义属性api-key，用于参数的传递，接下来需要注意的是必须定义一个SSL Context Service，点击该属性的value值，如果没有定义过该属性值，需要我们自己新创建一个SSL Context Service,如下所示   &lt;br /&gt;   &lt;img alt="" src="http://dl2.iteye.com/upload/attachment/0132/1091/32f21f83-e72c-3d1b-99a0-57d8f9eb96fe.png"&gt;&lt;/img&gt;   &lt;br /&gt; 点击create new service后进入如下界面&lt;/p&gt;
  &lt;p&gt;   &lt;br /&gt;   &lt;img alt="" src="http://dl2.iteye.com/upload/attachment/0132/1093/24334738-bdfc-3dc2-a030-d0e71295bd7a.png"&gt;&lt;/img&gt;   &lt;br /&gt;    &lt;br /&gt; 根据情况选择其中一个即可，通过SSL Context Service最右边的箭头符号进入到创建好的value值后，我们可以在properties页签中定义keystore和truststore2种方式的加密方式，我这里选择了keystore的方式，可以参考   &lt;a href="https://www.cnblogs.com/aiaitie/p/9525564.html" target="_blank"&gt;https://www.cnblogs.com/aiaitie/p/9525564.html&lt;/a&gt;这个文章或者百度下keystore查询，生成后的引用方式   &lt;br /&gt;   &lt;img alt="" src="http://dl2.iteye.com/upload/attachment/0132/1095/52e133bd-6ed8-347c-99f4-ea4fa39de09f.png"&gt;&lt;/img&gt;   &lt;br /&gt; 设置正确后，可以看到有个“雷电”符号，点击它表示启用就可以完成该SSL Context Service的应用了，因为从onenet接收过来的数据是&lt;/p&gt;
  &lt;pre&gt;{
  &amp;quot;errno&amp;quot; : 0,
  &amp;quot;data&amp;quot; : {
    &amp;quot;private&amp;quot; : true,
    &amp;quot;protocol&amp;quot; : &amp;quot;DTU&amp;quot;,
    &amp;quot;create_time&amp;quot; : &amp;quot;2019-07-16 10:25:48&amp;quot;,
    &amp;quot;act_time&amp;quot; : &amp;quot;2019-07-16 17:02:09&amp;quot;,
    &amp;quot;online&amp;quot; : true,
    &amp;quot;id&amp;quot; : &amp;quot;设备id&amp;quot;,
    &amp;quot;auth_info&amp;quot; : &amp;quot;设备编号&amp;quot;,
    &amp;quot;last_ct&amp;quot; : &amp;quot;2019-07-30 08:27:27&amp;quot;,
    &amp;quot;datastreams&amp;quot; : [ {
      &amp;quot;create_time&amp;quot; : &amp;quot;2019-07-16 17:02:11&amp;quot;,
      &amp;quot;uuid&amp;quot; : &amp;quot;ae14d1f5-b789-4ea7-a894-a13b447283bd&amp;quot;,
      &amp;quot;id&amp;quot; : &amp;quot;xxx&amp;quot;
    }, ],
    &amp;quot;title&amp;quot; : &amp;quot;设备名称&amp;quot;,
    &amp;quot;desc&amp;quot; : &amp;quot;power monitor device&amp;quot;
  },
  &amp;quot;error&amp;quot; : &amp;quot;succ&amp;quot;
}&lt;/pre&gt;
  &lt;p&gt; 我们需要将数据进行json平展，所以引入了FlattenJson Processor进行json数据平展，如下所示&lt;/p&gt;
  &lt;p&gt;   &lt;br /&gt;   &lt;img alt="" src="http://dl2.iteye.com/upload/attachment/0132/1101/c5119003-c9f9-31b9-b051-5b68d8a93633.png"&gt;&lt;/img&gt;   &lt;br /&gt; 默认情况下分隔符是“.”，平展后的数据是&lt;/p&gt;
  &lt;pre&gt;{
  &amp;quot;errno&amp;quot; : 0,
  &amp;quot;data.private&amp;quot; : true,
  &amp;quot;data.protocol&amp;quot; : &amp;quot;DTU&amp;quot;,
  &amp;quot;data.create_time&amp;quot; : &amp;quot;2019-07-16 10:25:48&amp;quot;,
  &amp;quot;data.act_time&amp;quot; : &amp;quot;2019-07-16 17:02:09&amp;quot;,
  &amp;quot;data.online&amp;quot; : true,
  &amp;quot;data.id&amp;quot; : &amp;quot;设备id&amp;quot;,
  &amp;quot;data.auth_info&amp;quot; : &amp;quot;设备编号&amp;quot;,
  &amp;quot;data.last_ct&amp;quot; : &amp;quot;2019-07-30 08:27:27&amp;quot;,
  &amp;quot;data.datastreams&amp;quot; : [ {
    &amp;quot;create_time&amp;quot; : &amp;quot;2019-07-16 17:02:11&amp;quot;,
    &amp;quot;uuid&amp;quot; : &amp;quot;ae14d1f5-b789-4ea7-a894-a13b447283bd&amp;quot;,
    &amp;quot;id&amp;quot; : &amp;quot;xxx&amp;quot;
  }],
  &amp;quot;data.title&amp;quot; : &amp;quot;鍙板彉2&amp;quot;,
  &amp;quot;data.desc&amp;quot; : &amp;quot;power monitor device&amp;quot;,
  &amp;quot;error&amp;quot; : &amp;quot;succ&amp;quot;
}&lt;/pre&gt;
  &lt;p&gt; 因为在mysql是不能使用“.”来数据插入操作的，而nifi是根据这些字段值进行数据对比和传值的，因此还需要把“.”替换为“_”来进行操作，因此我们还需要引入replaceText processor来进行替换操作，如下所示&lt;/p&gt;
  &lt;p&gt;   &lt;br /&gt;   &lt;img alt="" src="http://dl2.iteye.com/upload/attachment/0132/1103/45bad992-9707-3486-99b9-8a56961d1f23.png"&gt;&lt;/img&gt;   &lt;br /&gt; 替换完成后接下来我们就可以将json转换为sql进行插入操作了，这个时候我们使用ConvertJSONToSQL processor进行数据的转换，在properties页签中我们需要定义JDBC Connection pool，点击value值，如果没有则新增一个，进入到JDBC Connection pool中，在DBCPConnectionPool的properties页签中我们定义需要的的相关属性，如下所示&lt;/p&gt;
  &lt;p&gt;   &lt;br /&gt;   &lt;img alt="" src="http://dl2.iteye.com/upload/attachment/0132/1097/8a37b804-7b8f-3723-91db-b3bdf2f476a1.png"&gt;&lt;/img&gt;   &lt;br /&gt; 这里需要注意了，因为nifi没有导入mysql的相关jar包，需要我们自己去引入，把我们需要的mysql jar包放入到lib文件夹下面即可，就可以正常的进行使用了，配置好以后同样通过“雷电”符号进行启用配置，当然如果只有ConvertJSONToSQL processor还是不能把数据写入到mysql数据库中的，我们还要引用putsql processor才行，配置如下&lt;/p&gt;
  &lt;p&gt;   &lt;br /&gt;   &lt;img alt="" src="http://dl2.iteye.com/upload/attachment/0132/1099/4c82bd9f-c7be-3b7b-8e6d-360a9752b904.png"&gt;&lt;/img&gt;   &lt;br /&gt; 整体上我们的nifi配置如下所示&lt;/p&gt;
  &lt;p&gt;   &lt;br /&gt;   &lt;img alt="" src="http://dl2.iteye.com/upload/attachment/0132/1105/b9dc11af-df84-3013-b08a-44c4eedf6a29.png"&gt;&lt;/img&gt;   &lt;br /&gt; 数据库结果如下：&lt;/p&gt;
  &lt;p&gt;   &lt;br /&gt;   &lt;img alt="" src="http://dl2.iteye.com/upload/attachment/0132/1107/121d40d8-1c27-3ec8-a69c-ef43ffe9fcd4.png"&gt;&lt;/img&gt;   &lt;br /&gt; 这里还有个奇怪的是做update操作的时候，它会将data_id字段修改为DATAID的sql语句，如下所示&lt;/p&gt;
  &lt;pre&gt;UPDATE device SET data_title = ?, data_desc = ? WHERE DATAID = ?&lt;/pre&gt;
  &lt;p&gt; 也不是很清楚这个出现的原因，会的同学麻烦指导下。&lt;/p&gt;
&lt;/div&gt;
          
           &lt;br /&gt; &lt;br /&gt;
          
             &lt;a href="http://357029540.iteye.com/blog/2443075#comments"&gt;已有   &lt;strong&gt;0&lt;/strong&gt; 人发表留言，猛击-&amp;gt;&amp;gt;  &lt;strong&gt;这里&lt;/strong&gt;&amp;lt;&amp;lt;-参与讨论&lt;/a&gt;
          
           &lt;br /&gt; &lt;br /&gt; &lt;br /&gt;
ITeye推荐
 &lt;br /&gt;
 &lt;ul&gt;  &lt;li&gt;   &lt;a href="https://www.iteye.com/clicks/433" target="_blank"&gt;—软件人才免语言低担保 赴美带薪读研！— &lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
 &lt;br /&gt; &lt;br /&gt; &lt;br /&gt;
          
        &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/59886-nifi-%E7%BD%91%E7%AB%99-%E6%95%B0%E6%8D%AE</guid>
      <pubDate>Tue, 30 Jul 2019 17:57:33 CST</pubDate>
    </item>
    <item>
      <title>大型网站后台稳定性技术策略</title>
      <link>https://itindex.net/detail/59851-%E7%BD%91%E7%AB%99-%E5%90%8E%E5%8F%B0-%E7%A8%B3%E5%AE%9A%E6%80%A7</link>
      <description>&lt;div&gt;
  &lt;p&gt;背景简介&lt;/p&gt;
  &lt;p&gt;对于大型应用后台系统来说，稳定性至关重要。目前越来越多的大型应用系统采用微服务架构，更加需要关注稳定性的技术能力建设。稳定性是服务系统基础能力的体现。&lt;/p&gt;
  &lt;p&gt;基础知识&lt;/p&gt;
  &lt;p&gt;在介绍稳定性技术策略主题之前，我们首先梳理一些基础概念和知识。&lt;/p&gt;
  &lt;p&gt;针对我们业务后台系统建设，任何大型业务后台系统绝对不是一蹴而就。它是伴随着业务不同阶段，不断进行演进的过程。如果经历过从 0 到 1 建设一个业务后台系统的同学，都会有类似的体会。&lt;/p&gt;
  &lt;p&gt;启动阶段&lt;/p&gt;
  &lt;p&gt;启动阶段，业务模型相对简单，用户量少，这时候我们可以将所有的系统模块耦合在一个工程里面，进行单机部署。这时候可能仅仅需要将业务系统与数据库进行隔离。&lt;/p&gt;
  &lt;p&gt;探索阶段&lt;/p&gt;
  &lt;p&gt;探索阶段，业务模型不断演进，用户量增加，单机服务能力瓶颈凸显。这时候就需要由单机服务部署向集群服务部署来优化，利用负载均衡将请求合理分配，减少单机服务压力。另外一个方面，数据量不断的增加，也需要考虑针对数据来进行水平的扩展(主从部署，读写分离)。&lt;/p&gt;
  &lt;p&gt;在这一阶段，我们仅仅是做了集群扩展，但所有的业务代码都在同一个工程维护，所有的数据信息都在同一个数据库中存储。随着团队的扩充与业务交互不断复杂化，在工程维护上存在很大的风险，工程研发效率受到制约，业务代码之间的耦合也难以清晰，系统可靠性存在很大风险，一个 bug 可能会造成整个应用的崩溃不可用。&lt;/p&gt;
  &lt;p&gt;发展阶段&lt;/p&gt;
  &lt;p&gt;如果我们比较幸运，业务持续快速发展，对于业务角色模型理解越来越清晰，业务角色模型之间的交互越来越确定。这时候就需要我们基于对业务充分的理解前提下进行垂直拆分。不同的业务模型会部署到不同的系统工程中，工程之间通过接口来进行交互。这样工程内业务高度集中，工程间通过接口服务来进行解耦。这时候不管是系统维护，还是业务模块维护，都将大大的提高效率。数据部分同样垂直拆分，不同业务数据拆分到不同的数据库，从而提高单机数据库的能力。&lt;/p&gt;
  &lt;p&gt;拿电商系统的结构来说，如下图所示：&lt;/p&gt;
  &lt;div&gt;   &lt;img alt="" src="http://dingyue.ws.126.net/omYy0tBAypgrrEv7dzyOuwCD0HXTakrPqwmok=n5XWRmd1560234895751compressflag.png"&gt;&lt;/img&gt;&lt;/div&gt;
  &lt;p&gt;基于业务模型分为几个大的系统服务，系统服务之间通过内部 RPC 接口来进行交互。&lt;/p&gt;
  &lt;p&gt;成熟阶段&lt;/p&gt;
  &lt;p&gt;上面是基于大的业务模型进行划分，随着业务复杂度越来越高，我们必将对大业务模型，基于功能或者业务边界进行更细粒度的拆分。比如说，我们可以将产品中心划分为：基础信息中心，库存管理中心，SKU 中心等。&lt;/p&gt;
  &lt;p&gt;这时候就涉及到微服务的拆分与治理工作。&lt;/p&gt;
  &lt;p&gt;微服务的拆分原则我们应该注意：业务功能单一； 服务间业务边界清晰；拆分粒度合理； 分层划分合理。&lt;/p&gt;
  &lt;p&gt;从研发的角度来说，微服务带来的好处：研发效率提升；代码质量更优；能够独立部署；单模块复杂度降低。上面提到的产品中心我们可以拆分很多小的服务来提供，如下图所示：&lt;/p&gt;
  &lt;div&gt;   &lt;img alt="" src="http://dingyue.ws.126.net/R7Ds6ing2x9ZYBSCFiPndZ3eOnBU8hmYBEqo=M2IGtDLL1560234895751.png"&gt;&lt;/img&gt;&lt;/div&gt;
  &lt;p&gt;细粒度的拆分，也会带来一定的挑战：&lt;/p&gt;
  &lt;ul&gt;
   &lt;li&gt;微服务划分单元越细，整体服务维护非常复杂；&lt;/li&gt;
   &lt;li&gt;微服务通过 RPC 接口交互，整个链路可能会不清晰；&lt;/li&gt;
   &lt;li&gt;单服务的修改或者优化会受到其他模块的牵制。&lt;/li&gt;
&lt;/ul&gt;
  &lt;p&gt;当然这些挑战都是我们需要思考与解决的问题，并不能抹杀微服务的优点。&lt;/p&gt;
  &lt;p&gt;大型业务后台系统，不断的微服务化，带来系统之间的接口交互与依赖管理也越来越重要。我们需要从整体上考虑我们如何保证这样一个流量并发高，业务模型复杂，服务依赖交互多的大型微服务后台应用系统的稳定性。不能由于某个不利因素来影响整个业务微服务系统的不可用。接下来我们将重点介绍稳定性相关的内容。&lt;/p&gt;
  &lt;p&gt;稳定性技术策略&lt;/p&gt;
  &lt;p&gt;什么是稳定性&lt;/p&gt;
  &lt;p&gt;对于大型微服务系统，在错综复杂的服务逻辑各种交互情景下，面对各种未知的条件变化，整体系统依旧能够正常平稳的提供服务，这便是稳定性。&lt;/p&gt;
  &lt;p&gt;影响稳定性的因素&lt;/p&gt;
  &lt;p&gt;系统稳定性影响因素非常多，举例来说：&lt;/p&gt;
  &lt;ol&gt;
   &lt;li&gt;1. 服务间的依赖：某个服务 BUG 造成其他依赖服务的不可用；&lt;/li&gt;
   &lt;li&gt;2. 业务逻辑变更：业务逻辑不断迭代演变，新老服务的不兼容；&lt;/li&gt;
   &lt;li&gt;3. 访问流量激增：流量突然增加，比如我们进行促销活动期间，导致服务压力过大 ，达到服务能力上限，从而导致服务崩溃；&lt;/li&gt;
   &lt;li&gt;4. 机器老化异常：任何机器和人一样，都有生老病死，随着长时间的运行，也会有磨损，因此某个机器故障，也是可能的异常。&lt;/li&gt;
&lt;/ol&gt;
  &lt;p&gt;还有其他各方面的因素，在这里就不进行穷尽了，大家可以思考一下，还有那些经典的影响因素。&lt;/p&gt;
  &lt;p&gt;稳定性的衡量标准&lt;/p&gt;
  &lt;p&gt;稳定性衡量标准一般用 N 个 9 来衡量。如表格所示：&lt;/p&gt;
  &lt;p&gt;名称级别年度停机时间描述2 个 999%87.6 小时基本可用3 个 999.9%8.8 小时较高可用性4 个 999.99%53 分钟技术容灾能力可用性5 个 999.999%5 分钟极高可用性&lt;/p&gt;
  &lt;p&gt;比如说某个系统网站全年稳定性达到 4 个 9 ，意味着全年服务不可用的时间小于等于 53 分钟。&lt;/p&gt;
  &lt;p&gt;稳定性技术策略&lt;/p&gt;
  &lt;p&gt;稳定性的技术策略，是我们本文介绍的重点，从大的方面来说，稳定性技术策略包含：监控，冗余，限流，降级，回滚，重试。&lt;/p&gt;
  &lt;p&gt;监控&lt;/p&gt;
  &lt;p&gt;监控是指对整个系统服务进行实时的监控操作，准确反馈系统运行状态，能够做到及时发现异常故障，记录详细日志与数据，提高故障发现，定位，解决的效率。从而提高系统服务整体稳定性。&lt;/p&gt;
  &lt;p&gt;监控是保证稳定性最基础工作。我们将重点介绍监控需要从几个方面考虑？ 有哪些监控方向？&lt;/p&gt;
  &lt;p&gt;监控可以分为以下几类来进行：&lt;/p&gt;
  &lt;p&gt;流量监控&lt;/p&gt;
  &lt;p&gt;流量监控包括：PV、 UV、 IP，热门页面，用户响应时间。&lt;/p&gt;
  &lt;p&gt;这些基本的流量指标就不在这里向大家详细说明了，如果有不太清楚的同学可以自己搜索一下。&lt;/p&gt;
  &lt;p&gt;在流量监控这块，我们需要注意的是：流量毛刺。流量毛刺往往代表了系统某个风险点或者异常情况的发生。&lt;/p&gt;
  &lt;p&gt;一个正常业务的流量趋势具备周期一致性特征。比如说，一个业务每天的流量峰值一般在中午 12:00 和下午 18:00，那么这种峰值在没有特殊情况出现的前提下，应该会遵循该峰值时间规律。 那么流量毛刺是啥呢？ 如下图所示：&lt;/p&gt;
  &lt;div&gt;   &lt;img alt="" src="http://dingyue.ws.126.net/ZqTzhz4oIXLG4kGgl4WZHWUjT46NzZLj0AxCdY0wk0Grh1560234895751compressflag.png"&gt;&lt;/img&gt;&lt;/div&gt;
  &lt;p&gt;从图中左侧部分可以看到，8 点钟有流量的突增，这时候我们需要确认为什么会有流量的突增。是业务的正常表现，还是有其他的异常流量进入。&lt;/p&gt;
  &lt;p&gt;从图中右侧部分可以看到，每条曲线代表了每一天的流量统计，红色曲线相对于其他几天的流量曲线在凌晨 3:00 和早上 8:00 的时候有明显的流量毛刺，这时候我们就需要确认是什么因素造成流量数据的突变。&lt;/p&gt;
  &lt;p&gt;通过对于流量毛刺的观察，能够让我们及时了解业务中的风险，及时做好预警与准备。&lt;/p&gt;
  &lt;p&gt;业务监控&lt;/p&gt;
  &lt;p&gt;业务监控是根据业务属性来定义监控指标，可以用于判定整体业务的运转是否正常。不同业务类型监控的指标肯定有所不同，比如电商场景、物流场景、游戏场景是完全不同的监控方向。&lt;/p&gt;
  &lt;p&gt;我们拿一个电商交易业务系统来举例，看看有哪些监控指标？大家可以参考着思考自己目前负责的业务指标。举例来说针对一个电商交易系统我们可以监控的业务指标有：&lt;/p&gt;
  &lt;ul&gt;
   &lt;li&gt;用户下单监控：秒/分/时 用户下单统计 ；&lt;/li&gt;
   &lt;li&gt;用户支付监控：秒/分/时 用户支付统计；&lt;/li&gt;
   &lt;li&gt;用户退款情况：秒/分/时 用户退款统计；&lt;/li&gt;
   &lt;li&gt;商品库存状态：库存消耗/剩余统计；&lt;/li&gt;
   &lt;li&gt;业务 GMV 监控：业务整体销售额统计；&lt;/li&gt;
   &lt;li&gt;商家在线状态：监控商家在线状态；&lt;/li&gt;
   &lt;li&gt;促销运营监控：监控促销金额与数量。&lt;/li&gt;
&lt;/ul&gt;
  &lt;p&gt;在业务监控中，还需要重点关注业务转化漏斗概念。流量漏斗可以看出业务转化率以及用户的访问深度。它是业务健康程度的监控，也是部分需求效果的衡量标准。&lt;/p&gt;
  &lt;div&gt;   &lt;img alt="" src="http://dingyue.ws.126.net/NeO5gllUmpUesbJyEW8v1cDa=aBbbBoica4HOBEHw4z6X1560234895751compressflag.png"&gt;&lt;/img&gt;&lt;/div&gt;
  &lt;p&gt;机器监控&lt;/p&gt;
  &lt;p&gt;机器监控需要关注的内容，应该是后台研发比较熟悉的部分。 主要监控方向包含下面几个部分：&lt;/p&gt;
  &lt;div&gt;   &lt;img alt="" src="http://dingyue.ws.126.net/0huxU4kXoRQLYhHLcukXOP=yWpPq5Dmr2biU2wlAVWssQ1560234895751compressflag.png"&gt;&lt;/img&gt;&lt;/div&gt;
  &lt;p&gt;当然在 linux 系统中，也有各种常用指令，来进行该类数据的收集：top、free、ping、iostat、netstat。&lt;/p&gt;
  &lt;p&gt;对于 Java 系统来说，需要进行 JVM 层面的监控内容，比如说：gc 的情况，线程创建销毁情况，full gc 情况，内存不同模块使用情况等。 JVM 同样也提供了指令集，方便我们进行信息的查找：jstat、jps、stack、jmap、jhat 等。&lt;/p&gt;
  &lt;p&gt;日志记录&lt;/p&gt;
  &lt;p&gt;在日志的打印过程中，我们需要注意日志的打印规范，日志打印内容应该包含对于问题排查有益的信息，并且日志格式清晰，可解析性高。日志一般是打印到服务器磁盘上面，但是由于单机磁盘能力有限，并且对于大型分布式系统来说需要整体收集不同服务器模块的日志，进行统一分析，提高问题排查效率。这时候就需要一个集中式的日志中心。&lt;/p&gt;
  &lt;p&gt;日志中心的核心能力一般包含：获取日志、存储日志、展示日志、分析日志、报警服务。&lt;/p&gt;
  &lt;p&gt;相对比较简单的实现方式可以采用ELK快速搭建自己的日志中心。&lt;/p&gt;
  &lt;p&gt;   &lt;img alt="" src="http://dingyue.ws.126.net/BuTPw335cSf9hGh6s3=UXhou0nCuYd0620n7Lb2xvi46C1560234895751compressflag.png"&gt;&lt;/img&gt;&lt;/p&gt;
  &lt;p&gt;我们利用 kafka 将日志信息，进行异步广播，然后进行日志的解析，存储到 ES 检索系统中，利用 kibana 来进行日志的检索、查看等。进一步提升日志的有效管理。&lt;/p&gt;
  &lt;p&gt;冗余&lt;/p&gt;
  &lt;p&gt;冗余的对立面是单点。冗余可以有效的减少单点问题造成的影响。大家可以思考一下，如果一个系统服务只部署到一台机器，机器服务挂掉之后，意味着服务不可用，依赖于它的服务也会出现异常，最坏的情况可能会造成雪崩。&lt;/p&gt;
  &lt;p&gt;为了简化冗余的思考，我们将整个应用后台架构简化为四层架构，如下图所示：&lt;/p&gt;
  &lt;div&gt;   &lt;img alt="" src="http://dingyue.ws.126.net/6mKJ1kGBQqsBMvX6QEM4W6DmkjOoqfMS5hv4T2d4RGWjC1560234895751.png"&gt;&lt;/img&gt;&lt;/div&gt;
  &lt;p&gt;最上层是用户访问，然后到反向代理，Nginx 为流量入口； 然后到站点应用，比如说咱们的 Tomcat 或者 Jetty 应用服务器； 最后是数据层 db；为了性能优化增加了 Cache 服务。&lt;/p&gt;
  &lt;p&gt;大家思考一下，如果这几层服务，全部的都是单点，单点就是我们只有一个机器去部署这些服务。Nginx 只有一台机器，Server 应用也只有一台机器。如果机器宕机会造成什么样的后果？会直接导致整个系统服务不可用，这个就是单点的风险。&lt;/p&gt;
  &lt;p&gt;完全依赖一个单点 没有任何冗余备份，导致服务的稳定性非常脆弱。&lt;/p&gt;
  &lt;p&gt;怎么去做冗余呢？&lt;/p&gt;
  &lt;p&gt;对于 Nginx 层与 Server 层，我们可以从下面几个方向考虑冗余：&lt;/p&gt;
  &lt;ul&gt;
   &lt;li&gt;多机部署：同一个机房内，部署多个服务节点，其中一台挂掉，还有同机房的冗余备份；&lt;/li&gt;
   &lt;li&gt;跨机房部署：不同机房内，部署多个服务几点，其中一个机房断电或者其他异常情况，还有其他机房来备份提供支持；&lt;/li&gt;
   &lt;li&gt;异地多活：如果所有机房都在同一个城市，就会造成地域单点，比如说城市光纤异常。这时候异地多活部署就会减少这部分影响。&lt;/li&gt;
&lt;/ul&gt;
  &lt;div&gt;   &lt;img alt="" src="http://dingyue.ws.126.net/Ca80Yqhma34RGipWW9vBUzC48m69h52dHE3y05BHJ94vD1560234895751.png"&gt;&lt;/img&gt;&lt;/div&gt;
  &lt;p&gt;对于数据层面 比如 MySQL、Redis 都有自身提供的冗余方案。 MySQL 自身提供了主从部署，主从同步的机制，系统服务可以进行读主写从操作。&lt;/p&gt;
  &lt;div&gt;   &lt;img alt="" src="http://dingyue.ws.126.net/VrThA0q0rRnETCcUsEZFzm96f4jBQUTAjIvEQQWhVz3l=1560234895751compressflag.png"&gt;&lt;/img&gt;&lt;/div&gt;
  &lt;p&gt;Redis 也类似，提供了集群冗余方案：主从配置，哨兵机制，集群模式。&lt;/p&gt;
  &lt;div&gt;   &lt;img alt="" src="http://dingyue.ws.126.net/inmfqHTKjgA0O7Ayhu4KZB4bjIAUM4zoykcDTjiRxkcGg1560234895751.png"&gt;&lt;/img&gt;&lt;/div&gt;
  &lt;p&gt;Redis 集群模式能够实现数据分区冗余备份，主从同步，多主容灾，故障自动转移能力。&lt;/p&gt;
  &lt;p&gt;冗余的思路，在业务实现方向也可以落地考虑，比如说重要数据的多介质存储；重要组件的多版本选择等等。&lt;/p&gt;
  &lt;p&gt;限流&lt;/p&gt;
  &lt;p&gt;大型微服务架构中的任何服务节点，不管咱们怎么优化，怎么拓展，都会有能力上限。如果达到能力上线，系统服务奔溃的可能性增加，这种情况也很容易造成整个微服务应用的雪崩效应。&lt;/p&gt;
  &lt;p&gt;作为一个面向用户的网站，有时候我们会面对流量激增的情形，如果这时候达到了我们某个或者多个服务的能力上限，我们应该怎么保证系统的稳定性?&lt;/p&gt;
  &lt;p&gt;限流在这种情形下就起到了作用。&lt;/p&gt;
  &lt;p&gt;限流的目的&lt;/p&gt;
  &lt;p&gt;就是当服务器的压力剧增的情况下，为了保证服务不被拖垮，对一些流量采取拒绝或者降级的策略，以此来保证核心服务的正常运转。这是一种有损的技术手段。&lt;/p&gt;
  &lt;p&gt;将部分流量进行限制速率，控制输入和输出，将超过限制速率部分的流量，进行拒绝服务、或者排队等措施。以此来达到系统的自我保护目的。&lt;/p&gt;
  &lt;p&gt;限流策略：&lt;/p&gt;
  &lt;p&gt;限流策略有三种常用方式：&lt;/p&gt;
  &lt;ol&gt;
   &lt;li&gt;1. 总量计数限流：并发量或者访问量超过设定的阈值，将拒绝提供服务；&lt;/li&gt;
   &lt;li&gt;2. 漏桶限流算法：一个固定容量漏斗，任意速率流入或者生成并发或者访问，但会以一个固定的速率执行这些并发或者访问。如果超过固定容量的部分将被拒绝；&lt;/li&gt;
   &lt;li&gt;3. 令牌桶限流算法：一个固定容量的令牌通，令牌按照固定速率放到桶中，请求到来时候先去令牌通获取令牌，如果获取到则可以进入业务逻辑部分，获取不到则不会执行。&lt;/li&gt;
&lt;/ol&gt;
  &lt;p&gt;三者的区别：&lt;/p&gt;
  &lt;div&gt;   &lt;img alt="" src="http://dingyue.ws.126.net/=Pvb0AWoNdwiT1hjSLxiwHbKamZSzHkARZJIUuX6JsMEo1560234895751compressflag.png"&gt;&lt;/img&gt;&lt;/div&gt;
  &lt;p&gt;限流的维度&lt;/p&gt;
  &lt;p&gt;如下图所示，限流思考从三个维度去思考：&lt;/p&gt;
  &lt;div&gt;   &lt;img alt="" src="http://dingyue.ws.126.net/SfB2OzICNgnAkbCMw4doysQ9mHcop9zfxglLS8mZHv4u61560234895755compressflag.png"&gt;&lt;/img&gt;&lt;/div&gt;
  &lt;p&gt;限流的实现&lt;/p&gt;
  &lt;ol&gt;
   &lt;li&gt;1. 基于 AtomicLong 来实现单机(接口)总量计数法限流；&lt;/li&gt;
   &lt;li&gt;2. 基于 Semaphore 信号量来实现单机(接口)总量计数法限流；&lt;/li&gt;
   &lt;li&gt;3. 利用 Guava limiter 来实现令牌通的算法；&lt;/li&gt;
   &lt;li&gt;4. 对于分布式限流，我们可以考虑，利用 Redis 的 Incr 来进行实现。&lt;/li&gt;
&lt;/ol&gt;
  &lt;p&gt;降级&lt;/p&gt;
  &lt;p&gt;降级的目的&lt;/p&gt;
  &lt;ol&gt;
   &lt;li&gt;
    &lt;p&gt;1. 削弱非核心服务资源占用；&lt;/p&gt;
&lt;/li&gt;
   &lt;li&gt;
    &lt;p&gt;2. 保证业务核心服务稳定性。&lt;/p&gt;
    &lt;p&gt;举例来说：&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
  &lt;p&gt;一个交易平台，有用户下单，支付等功能，同时也有用户评论，商品推荐，广告推荐等模块。在促销活动期间，用户大批量的进入，那么这时候由于功能模块非常多，流量或者机器资源消耗非常大。造成系统整体负载过高。那么很可能出现一个可怕的情况，用户没办法进行正常交易。&lt;/p&gt;
  &lt;p&gt;面对这种情况，我们应该怎么做？这时候降级就体现了它的实用价值。&lt;/p&gt;
  &lt;p&gt;降级策略&lt;/p&gt;
  &lt;p&gt;降级策略有很多方面需要思考与落地，在这里总结一下经常用到降级策略。&lt;/p&gt;
  &lt;ul&gt;
   &lt;li&gt;页面降级：非核心页面模块，占用紧张资源，关停该页面，减少访问；&lt;/li&gt;
   &lt;li&gt;服务降级：将功能分类，分为核心服务与非核心服务，将非核心服务进行关停；&lt;/li&gt;
   &lt;li&gt;依赖降级：将依赖服务梳理分类，保证核心依赖的稳定，将非核心进行降级关停；&lt;/li&gt;
   &lt;li&gt;读写降级：将直接读写数据库切换为读写缓存； 对于缓存依旧可以进行备份冗余；&lt;/li&gt;
   &lt;li&gt;延迟降级：页面的异步加载策略； 数据写入异步消息队列等。&lt;/li&gt;
&lt;/ul&gt;
  &lt;p&gt;降级实现&lt;/p&gt;
  &lt;p&gt;降级就需要一个分布式开关，通过开关来确定降级策略的启动与否。 分布式开关的实现方式，我们也简述一下：&lt;/p&gt;
  &lt;ul&gt;
   &lt;li&gt;基于 Redis 实现；&lt;/li&gt;
   &lt;li&gt;基于 ZK 来实现；&lt;/li&gt;
   &lt;li&gt;基于内部数据库来实现。&lt;/li&gt;
&lt;/ul&gt;
  &lt;p&gt;每个具体的实现方式大家如果感兴趣可以查阅一下资料，基本上都是功能实现相对简单。&lt;/p&gt;
  &lt;p&gt;合理降级 了解了降级方法之后， 我们还需要清楚不是所有服务都能降级，也不是等到故障发生了以后，才去选择或者确定哪些服务可以降级。故障的降级策略一定是要提前去规划与思考。&lt;/p&gt;
  &lt;p&gt;系统或者服务需要分为核心系统和非核心系统(核心服务和非核心服务)来区分。核心服务是我们力保不能有任何问题的主流程服务 P0； 非核心服务，又可以根据重要性进行再次分层。可以划分为 P1、P2、P3 服务。&lt;/p&gt;
  &lt;ul&gt;
   &lt;li&gt;P0 服务网为主服务，是力保稳定性的对象，他们挂了整个业务也就崩溃；&lt;/li&gt;
   &lt;li&gt;P1 服务为与紧密主服务相关，但可以后续异步补偿来操作的服务，比如说，结算流水，订单统计；&lt;/li&gt;
   &lt;li&gt;P2 服务与主服务有点相关，但关闭了对主服务任何业务逻辑没有影响，比如说，订单评价，商品推荐等；&lt;/li&gt;
   &lt;li&gt;P3 服务于主服务没有相关，关闭之后对主服务没有任何影响 比如说，广告推荐，用户喜好，评论浏览等。&lt;/li&gt;
&lt;/ul&gt;
  &lt;p&gt;在梳理服务等级的时候，需要注意 2-8 原则 也就是 20% 的系统为核心系统，80% 的系统为非核心服务。&lt;/p&gt;
  &lt;p&gt;回滚&lt;/p&gt;
  &lt;p&gt;根据经验，线上的大部分 BUG 都是由于新需求或者新的工程改动造成的。&lt;/p&gt;
  &lt;p&gt;那么当系统出现 BUG 或者不稳定的时候，考虑到寻找或者排查问题耗时会比较久，我们一般都会选择先回滚然后再去寻找问题具体原因。这种方式在一定程度上保证了系统的稳定性状态。&lt;/p&gt;
  &lt;p&gt;回滚定义：快速恢复到变化之前的状态，让程序或者服务恢复到改动之前的稳定状态。 回滚目的：及时止损，减少线上问题排查付出的代价 回滚影响：新改动的需求会延迟生效&lt;/p&gt;
  &lt;p&gt;那么我们回滚的方向又有哪些呢？&lt;/p&gt;
  &lt;p&gt;回滚方向：&lt;/p&gt;
  &lt;ol&gt;
   &lt;li&gt;1. 代码版本，也就是新旧代码的转换；&lt;/li&gt;
   &lt;li&gt;2. 系统服务，就是讲新上线部署的功能给予回滚操作，让服务恢复到新上线前的状态；&lt;/li&gt;
   &lt;li&gt;3. 数据内容，将修改的数据内容重新修改为历史数据版本。&lt;/li&gt;
&lt;/ol&gt;
  &lt;p&gt;怎么才能科学的回滚？&lt;/p&gt;
  &lt;p&gt;如果想把回滚的工作做好，需要处理好下面的主要内容：&lt;/p&gt;
  &lt;p&gt;发布信息规范：每次发布包，都有唯一的版本号；命名一定要规范。包含主要内容。 举例：工程名称 - 模块名称 - 代码版本 - 环境类型 - 日期版本 .jar(war)&lt;/p&gt;
  &lt;p&gt;代码管理科学：代码分支管理科学、 代码 review 机制、工程结构统一化。&lt;/p&gt;
  &lt;p&gt;代码 review 时机：&lt;/p&gt;
  &lt;ul&gt;
   &lt;li&gt;大版本(需求)代码必须 review；&lt;/li&gt;
   &lt;li&gt;线上 case 修复，代码必须 review；&lt;/li&gt;
   &lt;li&gt;测试前代码 review (保证测试质量)；&lt;/li&gt;
   &lt;li&gt;周期固定时间，形成团队习惯。&lt;/li&gt;
&lt;/ul&gt;
  &lt;p&gt;数据管理规范：避免线上库直接操作、任何变更必须有回滚脚本、线下验证 。&lt;/p&gt;
  &lt;p&gt;注意事项:&lt;/p&gt;
  &lt;ul&gt;
   &lt;li&gt;尽量避免线上数据库手动操作；&lt;/li&gt;
   &lt;li&gt;若手动，需要执行详细规范；&lt;/li&gt;
   &lt;li&gt;不断设计减少手动操作频次。&lt;/li&gt;
&lt;/ul&gt;
  &lt;div&gt;   &lt;img alt="" src="http://dingyue.ws.126.net/sHJaJWSsGRXOq3z48dkF48tYfB29eCp0irmdq7gy=q2SC1560234895756compressflag.png"&gt;&lt;/img&gt;&lt;/div&gt;
  &lt;p&gt;工程上线规范：上线窗口避免流量高峰，灰度验证避免全量上线，及时验证回归测试，上线通告。&lt;/p&gt;
  &lt;p&gt;重试&lt;/p&gt;
  &lt;p&gt;重试目的&lt;/p&gt;
  &lt;ul&gt;
   &lt;li&gt;配合超时机制，正确的获取结果，同时保护系统资源服务；&lt;/li&gt;
   &lt;li&gt;利用多次访问策略，减少外部抖动对系统结果造成的影响；&lt;/li&gt;
   &lt;li&gt;借助幂等概念，保证信息提交成功，达到分布式一致性。&lt;/li&gt;
&lt;/ul&gt;
  &lt;p&gt;重试的场景可以有 异常重试，超时重试。&lt;/p&gt;
  &lt;p&gt;异常重试：我们访问某个依赖接口的时候，如果出现接口返回异常的情况，我们可以进行访问重试，从而获取正确结果。&lt;/p&gt;
  &lt;p&gt;超时重试：接口在规定的超时时间内没有得到相应的结果数据，进行重试操作。&lt;/p&gt;
  &lt;p&gt;全局思考重试策略&lt;/p&gt;
  &lt;p&gt;如何进行合理的超时重试策略设定，需要结合业务特点来进行详细的规划与测试。如果设定不好，很可能造成线上问题。&lt;/p&gt;
  &lt;p&gt;超时时间过长，可能导致服务阻塞； 超时时间太短，可能导致服务调用成功率降低。如果成功率降低，可能就会导致重试的概率加大。 重试必然会导致新的请求发生，增加一次访问时间，可能在用户体验上存在影响。&lt;/p&gt;
  &lt;p&gt;如果不断的重试，很可能导致不断的新建访问线程，重复请求，导致三方接口的压力。&lt;/p&gt;
  &lt;p&gt;所以超时时间 重试策略 都需要根绝我们业务特点进行验证与设计，避免上面介绍问题的出现。&lt;/p&gt;
  &lt;p&gt;峰值应对策略&lt;/p&gt;
  &lt;p&gt;当我们业务系统需要进行运营促销活动的时候，或者面临特殊日期将要给网站带来高于平时流量的时候，我们需要做好应对流量峰值的准备。我们需要系统的思考如何在系统峰值时刻保证我们大型微服务系统的稳定性。&lt;/p&gt;
  &lt;p&gt;我们将峰值应对按照时间维度进行划分：事前，事中，事后。&lt;/p&gt;
  &lt;p&gt;事前&lt;/p&gt;
  &lt;p&gt;前期准备&lt;/p&gt;
  &lt;ul&gt;
   &lt;li&gt;确定模块：确定本次峰值影响的工程或者服务，梳理一定要完整；&lt;/li&gt;
   &lt;li&gt;团队组建：根据影响模块，确定本次维稳参与同学(注意跨团队)，确认分工；&lt;/li&gt;
   &lt;li&gt;合作约定：周期性的沟通，比如周会、约会、事前会议、事后总结会议。&lt;/li&gt;
&lt;/ul&gt;
  &lt;p&gt;数据预估&lt;/p&gt;
  &lt;p&gt;容量预估方向：&lt;/p&gt;
  &lt;div&gt;   &lt;img alt="" src="http://dingyue.ws.126.net/turwZpc16ldSgt5oChoZBqkMz29ohf52RdoCJucymdof01560234895918compressflag.png"&gt;&lt;/img&gt;&lt;/div&gt;
  &lt;p&gt;数据预估的时候不仅仅要考虑峰值的应对时候的容量冗余，同时也要考虑数据长期增量的准备。&lt;/p&gt;
  &lt;p&gt;系统压测&lt;/p&gt;
  &lt;p&gt;系统压测的维度由小到达来说：&lt;/p&gt;
  &lt;div&gt;   &lt;img alt="" src="http://dingyue.ws.126.net/E14xwndFPtiAo4wpEuU=ItobEM74aqWs5ilqYlqO6J8h61560234895927.png"&gt;&lt;/img&gt;&lt;/div&gt;
  &lt;p&gt;单接口压测：接口维度的压测，人工根据接口模型进行压测数据；我们可以使用 Apach ab、Http load 来进行。&lt;/p&gt;
  &lt;p&gt;单机初级压测：针对机器维度来进行整体压测，可以人工构造数据也可以线上访问流量的复制来构造压测数据。我们可以使用 Jemeter、LoadRunner、tcp dump 等相关工具来进行。&lt;/p&gt;
  &lt;p&gt;单机负载均衡压测：也是针对单机维度来进行压测，与初级压测不同的是，根据负责均衡，将线上流量进行实时转发，将流量比例向压测机器倾斜，从而达到压测的目的。&lt;/p&gt;
  &lt;p&gt;全链路压测：全业务后台服务整体压测，复制线上真实流量，进行压测数据的改造，然后高并发的访问业务系统，提前相对真实的模拟峰值到来的情形。&lt;/p&gt;
  &lt;p&gt;全链路压测是最困难，涉及面最广的一种压测方式。同时也是最能发现系统瓶颈的一种方式，全链路压测的挑战有：&lt;/p&gt;
  &lt;ul&gt;
   &lt;li&gt;困难1：链路梳理复杂度；&lt;/li&gt;
   &lt;li&gt;困难2：多模块，多服务，多团队协同；&lt;/li&gt;
   &lt;li&gt;困难3：寻找短板，避免系统雪崩风险；&lt;/li&gt;
   &lt;li&gt;困难4：压测数据准备，脏数据处理；&lt;/li&gt;
   &lt;li&gt;困难5：压测统筹安排，数据采样对比。&lt;/li&gt;
&lt;/ul&gt;
  &lt;p&gt;全链路压测的流程如图所示：&lt;/p&gt;
  &lt;div&gt;   &lt;img alt="" src="http://dingyue.ws.126.net/BiZ0fjI5hEoOepT3JjvSPOTtmbSm43subDt5EpdZL=Btc1560234895981compressflag.png"&gt;&lt;/img&gt;&lt;/div&gt;
  &lt;p&gt;容灾演练&lt;/p&gt;
  &lt;p&gt;目的&lt;/p&gt;
  &lt;ul&gt;
   &lt;li&gt;主动触发异常，熟悉异常处理流程；&lt;/li&gt;
   &lt;li&gt;验证故障处理规范，不断完善规范；&lt;/li&gt;
   &lt;li&gt;验证服务异常状态，验证报警机制。&lt;/li&gt;
&lt;/ul&gt;
  &lt;p&gt;步骤：&lt;/p&gt;
  &lt;ul&gt;
   &lt;li&gt;目前内容，评估影响，方案确认；&lt;/li&gt;
   &lt;li&gt;制定故障 SOP 手册，详细到每一步执行；&lt;/li&gt;
   &lt;li&gt;根据 SOP 进行问题解决执行操作；&lt;/li&gt;
   &lt;li&gt;记录故障数据与现象，监控报警确认；&lt;/li&gt;
   &lt;li&gt;故障分类：可以快速解决，需要外部支持。&lt;/li&gt;
&lt;/ul&gt;
  &lt;div&gt;   &lt;img alt="" src="http://dingyue.ws.126.net/GxdkyRKPdw9wuA4YOUHf1w6ctYDvKgadC7nPPx=0h5wZh1560234895992compressflag.png"&gt;&lt;/img&gt;&lt;/div&gt;
  &lt;p&gt;容灾演练的 SOP 建设：&lt;/p&gt;
  &lt;div&gt;   &lt;img alt="" src="http://dingyue.ws.126.net/cl3d05LvPhlqyE37rWUvoNZfgxWny2aOnUGMc1MqiM=vU1560234896025compressflag.png"&gt;&lt;/img&gt;&lt;/div&gt;
  &lt;p&gt;服务巡检&lt;/p&gt;
  &lt;p&gt;在峰值到达之前的一段时间里，我们需要对系统服务整体巡检，确保的我们的各项指标都能正常工作，及时发现可能存在的风向。&lt;/p&gt;
  &lt;p&gt;定事：&lt;/p&gt;
  &lt;ol&gt;
   &lt;li&gt;1. 对业务、流量、系统、机器、日志 进行数据指标的 check ；&lt;/li&gt;
   &lt;li&gt;2. 确保主要数据无遗漏，不重复，没错误。&lt;/li&gt;
&lt;/ol&gt;
  &lt;p&gt;定人： 专人专事，责任明确，分工合理，推进日常巡检工作 。&lt;/p&gt;
  &lt;p&gt;定时：&lt;/p&gt;
  &lt;ol&gt;
   &lt;li&gt;1. 根据业务特点周期性的进行服务巡检，比如每天一次，每周一次；&lt;/li&gt;
   &lt;li&gt;2. 根据业务特点，合理的安排巡检的时间，比如说中午、下午。&lt;/li&gt;
&lt;/ol&gt;
  &lt;p&gt;定方案： 根据巡检出现的异常数据或者不合理数据，进行解决方案的制定 方案必须可执行同时有完成时间点。&lt;/p&gt;
  &lt;p&gt;事中&lt;/p&gt;
  &lt;p&gt;峰值应对值班&lt;/p&gt;
  &lt;p&gt;在面对峰值期间，我们需要保证团队资源的稳定，需要安排核心人员进行值班操作。值班过程中需要做一下工作：&lt;/p&gt;
  &lt;p&gt;服务观察：业务数据，服务监控，日志报警，趋势检测； **熟悉 SOP **：容灾操作 SOP ，值班 SOP ，同步 SOP； 组织形式：站会，日报，总结。&lt;/p&gt;
  &lt;p&gt;数据观察同步&lt;/p&gt;
  &lt;p&gt;为了让团队其他人或者合作团队了解当前的系统运行情况，我们需要在固定的时间里同步相关数据，及时检查数据走向与趋势。&lt;/p&gt;
  &lt;ul&gt;
   &lt;li&gt;每天固定时间进行数据同步（尽量选择峰值时间段）；&lt;/li&gt;
   &lt;li&gt;数据同步对象包含：业务、PM、QA、RD 多个团队；&lt;/li&gt;
   &lt;li&gt;统计指标注意跨团队的理解程度（可理解的形式来描述）；&lt;/li&gt;
   &lt;li&gt;对比属性，比如说目前峰值是上次活动峰值的多少倍。&lt;/li&gt;
&lt;/ul&gt;
  &lt;p&gt;线上紧急情况处理&lt;/p&gt;
  &lt;p&gt;处理准则：&lt;/p&gt;
  &lt;div&gt;   &lt;img alt="" src="http://dingyue.ws.126.net/ac5sgi6OVT6pcB3V=HejzEvnsc5J=rCTkeZ30inHKhGJ51560234896064.png"&gt;&lt;/img&gt;&lt;/div&gt;
  &lt;p&gt;这里特别重要的一点准则就是，快速止损是第一要务，问题排查以及解决是止损之后的动作。&lt;/p&gt;
  &lt;p&gt;这时候在快速恢复线上服务的时候，就能考察我们前期的容灾演练的效果了。&lt;/p&gt;
  &lt;div&gt;   &lt;img alt="" src="http://dingyue.ws.126.net/eXZzJVm191kep6vg0eNuQJgSWvNCHh2=6MrlDfNu3VRVo1560234896147compressflag.png"&gt;&lt;/img&gt;&lt;/div&gt;
  &lt;p&gt;上面图形展示的操作规范都应该在容灾 SOP 建设中覆盖到。&lt;/p&gt;
  &lt;p&gt;事后&lt;/p&gt;
  &lt;ol&gt;
   &lt;li&gt;1. 所有报警异常的梳理与解决，所有不规范性的讨论与优化；&lt;/li&gt;
   &lt;li&gt;2. 根据真实的场景进行 SOP 的优化，这个 SOP 可能包含咱们的值班 SOP 以及容灾演练 SOP 的建设；&lt;/li&gt;
   &lt;li&gt;3. 复盘讨论，需要根据业务数据、流量数据、系统服务情况统一来进行复盘整理。复盘的边界，不仅仅是应用后台，还应该也包含前端研发、SRE、运营产品、中间件平台等。&lt;/li&gt;
&lt;/ol&gt;
  &lt;p&gt;复盘讨论的内容一般包含：&lt;/p&gt;
  &lt;ul&gt;
   &lt;li&gt;应用后台: 峰值期间业务数据、服务性能数据、整体稳定性数据；&lt;/li&gt;
   &lt;li&gt;前端研发：APP crash 率、性能表现情况、DAU、各页面转化率；&lt;/li&gt;
   &lt;li&gt;SRE 运维：机房整体情况、机器负载情况、网络宽带情况、资源利用率等；&lt;/li&gt;
   &lt;li&gt;运营产品：业务指标完成度、同比(环比)情况、未来规划；&lt;/li&gt;
   &lt;li&gt;中间件平台：中间件峰值稳定性情况、容量情况、服务能力情况。&lt;/li&gt;
&lt;/ul&gt;
  &lt;p&gt;性能优化策略&lt;/p&gt;
  &lt;p&gt;性能优化重要性：&lt;/p&gt;
  &lt;ul&gt;
   &lt;li&gt;用户角度：网站体验重要衡量标准；&lt;/li&gt;
   &lt;li&gt;系统角度：稳定性的基本要求保障；&lt;/li&gt;
   &lt;li&gt;研发角度：自身技术能力的竞争力。&lt;/li&gt;
&lt;/ul&gt;
  &lt;p&gt;在这里由于篇幅有限，我们不针对每一块优化的技术策略进行详细的讲解，我们重点介绍一下技术优化的整体方向与策略，以及如何选择方案。&lt;/p&gt;
  &lt;p&gt;   &lt;img alt="" src="http://dingyue.ws.126.net/qBA7MWezRh1C3WyQXIRziHFMY=BCQ2dfAN754BwBxxVZy1560234896217compressflag.png"&gt;&lt;/img&gt;&lt;/p&gt;
  &lt;p&gt;我们在考虑网站性能优化方案选择的时候，从收益与投入两个方向综合考虑。&lt;/p&gt;
  &lt;p&gt;应用技术栈对于后台研发同学来说是相对比较熟悉的技术内容，所以投入会相对较少，收益却会很大。因为大部分性能优化的问题，还都在于代码与技术方案层面。&lt;/p&gt;
  &lt;p&gt;数据库方面也是需要重点投入的方向，能够避免业务数据获取以及存储方面的瓶颈。&lt;/p&gt;
  &lt;p&gt;其他的三个方向网络优化，容器组件，底层环境都不是业务后台研发同学经常学习的方向。所以这几块优化方向可以考虑和公司的运维同学进行共同思考与建设。&lt;/p&gt;
  &lt;p&gt;当然性能优化是一个长期重复执行的动作，需要进行不断的总结，梳理出来符合自己业务的性能优化策略。&lt;/p&gt;
  &lt;p&gt;总结&lt;/p&gt;
  &lt;p&gt;本文介绍了大型微服务架构后台应用系统稳定性技术策略的介绍。每个技术点都需要我们持续的思考与落地，全面整体的思考稳定性相关的建设动作。与此同时，还进行峰值应对过程中稳定性的保障工作如何开展，希望对大家有所帮助。&lt;/p&gt;
  &lt;p&gt; &lt;/p&gt;
&lt;/div&gt;
          
           &lt;br /&gt; &lt;br /&gt;
          
             &lt;a href="http://songfeng-123.iteye.com/blog/2442880#comments"&gt;已有   &lt;strong&gt;0&lt;/strong&gt; 人发表留言，猛击-&amp;gt;&amp;gt;  &lt;strong&gt;这里&lt;/strong&gt;&amp;lt;&amp;lt;-参与讨论&lt;/a&gt;
          
           &lt;br /&gt; &lt;br /&gt; &lt;br /&gt;
ITeye推荐
 &lt;br /&gt;
 &lt;ul&gt;  &lt;li&gt;   &lt;a href="https://www.iteye.com/clicks/433" target="_blank"&gt;—软件人才免语言低担保 赴美带薪读研！— &lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
 &lt;br /&gt; &lt;br /&gt; &lt;br /&gt;
          
        &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/59851-%E7%BD%91%E7%AB%99-%E5%90%8E%E5%8F%B0-%E7%A8%B3%E5%AE%9A%E6%80%A7</guid>
      <pubDate>Mon, 22 Jul 2019 19:42:13 CST</pubDate>
    </item>
    <item>
      <title>理解数据库中的undo日志、redo日志、检查点 | 乐天的个人网站</title>
      <link>https://itindex.net/detail/59841-%E7%90%86%E8%A7%A3-%E6%95%B0%E6%8D%AE%E5%BA%93-undo</link>
      <description>&lt;div&gt;    &lt;p&gt;2014-6-18&lt;/p&gt;    &lt;p&gt;数据库存放数据的文件，本文称其为data file。      &lt;br /&gt;数据库的内容在内存里是有缓存的，这里命名为db buffer。某次操作，我们取了数据库某表格中的数据，这个数据会在内存中缓存一些时间。对这个数据的修改在开始时候也只是修改在内存中的内容。当db buffer已满或者遇到其他的情况，这些数据会写入data file。&lt;/p&gt;    &lt;a&gt;&lt;/a&gt;    &lt;h3&gt;      &lt;a href="https://www.letiantian.me/2014-06-18-db-undo-redo-checkpoint/#undo&amp;#65292;redo" title=""&gt;&lt;/a&gt;undo，redo&lt;/h3&gt;    &lt;p&gt;日志在内存里也是有缓存的，这里将其叫做log buffer。磁盘上的日志文件称为log file。log file一般是追加内容，可以认为是顺序写，顺序写的磁盘IO开销要小于随机写。&lt;/p&gt;    &lt;p&gt;Undo日志记录某数据被修改前的值，可以用来在事务失败时进行rollback；Redo日志记录某数据块被修改后的值，可以用来恢复未写入data file的已成功事务更新的数据。下面的示例来自于杨传辉《大数据分布式存储系统 原理解析与架构实践》，略作改动。&lt;/p&gt;    &lt;blockquote&gt;      &lt;p&gt;例如某一事务的事务序号为T1，其对数据X进行修改，设X的原值是5，修改后的值为15，那么Undo日志为        &lt;code&gt;&amp;lt;T1, X, 5&amp;gt;&lt;/code&gt;，Redo日志为        &lt;code&gt;&amp;lt;T1, X, 15&amp;gt;&lt;/code&gt;。&lt;/p&gt;&lt;/blockquote&gt;    &lt;p&gt;也有把undo和redo结合起来的做法，叫做Undo/Redo日志，在这个例子中Undo/Redo日志为      &lt;code&gt;&amp;lt;T1, X, 5, 15&amp;gt;&lt;/code&gt;。&lt;/p&gt;    &lt;p&gt;当用户生成一个数据库事务时，undo log buffer会记录被修改的数据的原始值，redo会记录被修改的数据的更新后的值。&lt;/p&gt;    &lt;p&gt;redo日志应首先持久化在磁盘上，然后事务的操作结果才写入db buffer，（此时，内存中的数据和data file对应的数据不同，我们认为内存中的数据是脏数据），db buffer再选择合适的时机将数据持久化到data file中。这种顺序可以保证在需要故障恢复时恢复最后的修改操作。先持久化日志的策略叫做      &lt;code&gt;Write Ahead Log&lt;/code&gt;，即预写日志。&lt;/p&gt;    &lt;p&gt;在很多系统中，undo日志并非存到日志文件中，而是存放在数据库内部的一个特殊段中。本文中就把这些存储行为都泛化为undo日志存储到undo log file中。&lt;/p&gt;    &lt;p&gt;对于某事务T，在log file的记录中必须开始于事务开始标记（比如“start T”），结束于事务结束标记（比如“end T”、”commit T”）。在系统恢复时，如果在log file中某个事务没有事务结束标记，那么需要对这个事务进行undo操作，如果有事务结束标记，则redo。&lt;/p&gt;    &lt;p&gt;在db buffer中的内容写入磁盘数据库文件之前，应当把log buffer的内容写入磁盘日志文件。&lt;/p&gt;    &lt;p&gt;有一个问题，redo log buffer和undo log buffer存储的事务数量是多少，是按照什么规则将日志写入log file？如果存储的事务数量都是1个，也就意味着是将日志立即刷入磁盘，那么数据的一致性很好保证。在执行事T时，突然断电，如果未对磁盘上的redo log file发生追加操作，可以把这个事务T看做未成功。如果redo log file被修改，则认为事务是成功了，重启数据库使用redo log恢复数据到db buffer和 data file即可。&lt;/p&gt;    &lt;p&gt;如果存储多个的话，其实也挺好解释的。就是db buffer写入data file之前，先把日志写入log file。这种方式可以减少磁盘IO，增加吞吐量。不过，这种方式适用于一致性要求不高的场合。因为如果出现断电等系统故障，log buffer、db buffer中的完成的事务会丢失。以转账为例，如果用户的转账事务在这种情况下丢失了，这意味着在系统恢复后用户需要重新转账。&lt;/p&gt;    &lt;h3&gt;      &lt;a href="https://www.letiantian.me/2014-06-18-db-undo-redo-checkpoint/#&amp;#26816;&amp;#26597;&amp;#28857;checkpoint" title=""&gt;&lt;/a&gt;检查点checkpoint&lt;/h3&gt;    &lt;p&gt;checkpoint是为了定期将db buffer的内容刷新到data file。当遇到内存不足、db buffer已满等情况时，需要将db buffer中的内容/部分内容（特别是脏数据）转储到data file中。在转储时，会记录checkpoint发生的”时刻“。在故障回复时候，只需要redo/undo最近的一次checkpoint之后的操作。&lt;/p&gt;    &lt;h3&gt;      &lt;a href="https://www.letiantian.me/2014-06-18-db-undo-redo-checkpoint/#&amp;#24130;&amp;#31561;&amp;#24615;&amp;#38382;&amp;#39064;" title=""&gt;&lt;/a&gt;幂等性问题&lt;/h3&gt;    &lt;p&gt;在日志文件中的操作记录应该具有幂等性。幂等性，就是说同一个操作执行多次和执行一次，结果是一样的。例如，      &lt;code&gt;5*1 = 5*1*1*1&lt;/code&gt;，所以对5的乘1操作具有幂等性。日志文件在故障恢复中，可能会回放多次（比如第一次回放到一半时系统断电了，不得不再重新回放），如果操作记录不满足幂等性，会造成数据错误。&lt;/p&gt;    &lt;h3&gt;      &lt;a href="https://www.letiantian.me/2014-06-18-db-undo-redo-checkpoint/#&amp;#36164;&amp;#26009;" title=""&gt;&lt;/a&gt;资料&lt;/h3&gt;    &lt;p&gt;      &lt;a href="http://docs.oracle.com/cd/B28359_01/server.111/b28310/undo001.htm#ADMIN11460" rel="noopener" target="_blank"&gt;What Is Undo?&lt;/a&gt;      &lt;br /&gt;      &lt;a href="http://en.wikipedia.org/wiki/Redo_log" rel="noopener" target="_blank"&gt;Redo log&lt;/a&gt;      &lt;br /&gt;      &lt;a href="http://blog.csdn.net/java2000_net/article/details/3727804" rel="noopener" target="_blank"&gt;Oracle学习笔记：Redo日志(重做日志)的作用&lt;/a&gt;      &lt;br /&gt;      &lt;a href="http://blog.csdn.net/ggxxkkll/article/details/7616739" rel="noopener" target="_blank"&gt;数据库日志文件– undo log 、redo log、 undo/redo log&lt;/a&gt;      &lt;br /&gt;      &lt;a href="http://blog.yunnotes.net/index.php/undo-logredo-log/" rel="noopener" target="_blank"&gt;undo log与redo log原理分析&lt;/a&gt;      &lt;br /&gt;      &lt;a href="http://liwenshui322.iteye.com/blog/1488949" rel="noopener" target="_blank"&gt;Oracle redo与undo浅析&lt;/a&gt;      &lt;br /&gt;      &lt;a href="http://blog.csdn.net/tianlesoftware/article/details/5251916" rel="noopener" target="_blank"&gt;RedoLog Checkpoint 和 SCN关系&lt;/a&gt;      &lt;br /&gt;      &lt;a href="http://wolfword.blog.51cto.com/4892126/1288383" rel="noopener" target="_blank"&gt;mysql dba系统学习（10）innodb引擎的redo log日志的原理&lt;/a&gt;      &lt;br /&gt;      &lt;a href="http://book.2cto.com/201305/23339.html" rel="noopener" target="_blank"&gt;2.4　Checkpoint技术&lt;/a&gt;      &lt;br /&gt;      &lt;a href="http://tech.uc.cn/?p=716" rel="noopener" target="_blank"&gt;MySQL Innodb日志机制深入分析&lt;/a&gt;      &lt;br /&gt;《MySQL技术内幕：InnoDB存储引擎（第2版）》&lt;/p&gt;  &lt;p&gt;mysql事务提交过程：&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://www.cnblogs.com/exceptioneye/p/5451960.html"&gt;https://www.cnblogs.com/exceptioneye/p/5451960.html&lt;/a&gt;   &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://www.cnblogs.com/exceptioneye/p/5451976.html"&gt;https://www.cnblogs.com/exceptioneye/p/5451976.html&lt;/a&gt;   &lt;br /&gt;&lt;/p&gt;&lt;/div&gt;
    &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/59841-%E7%90%86%E8%A7%A3-%E6%95%B0%E6%8D%AE%E5%BA%93-undo</guid>
      <pubDate>Wed, 17 Jul 2019 11:32:21 CST</pubDate>
    </item>
    <item>
      <title>免费SSL证书(https网站)申请 - osfipin - 博客园</title>
      <link>https://itindex.net/detail/59653-%E5%85%8D%E8%B4%B9-ssl-%E8%AF%81%E4%B9%A6</link>
      <description>&lt;div&gt;    &lt;p&gt;如何拥有一个自己的免费的SSL证书，并且能够长期拥有。这篇文章让你找到可用的免费证书o(*￣︶￣*)o&lt;/p&gt;    &lt;blockquote&gt;      &lt;p&gt;各厂商提供的免费SSL基本是Symantec(赛门铁克),申请一年，不支持通配符，有数量限制。&lt;/p&gt;&lt;/blockquote&gt;    &lt;p&gt;      &lt;strong&gt;1、阿里云&lt;/strong&gt;      &lt;br /&gt;https://common-buy.aliyun.com/?commodityCode=cas#/buy      &lt;br /&gt;免费数字证书,最多保护一个明细子域名,不支持通配符，一个阿云帐户最多签发20张免费证书。兼容性如下操作系统版本IOS 5.0+、Android 2.3.3+、JRE 1.6.5+、WIN 7+。      &lt;br /&gt;【动态】Digicert 于 2017年12月1日 ，完成对 Symantec 证书服务的并购。此后，所有新申请的 Symantec/GeoTrust 品牌证书，切换到 Digicert+Symantec 交叉认证 PKI 体系下签发。阿里云平台的Symantec/GeoTrust已签发的旧根，也会按计划更新到新交叉根下。      &lt;br /&gt;赛门铁克是 SSL/TLS 证书的领先提供商，为全球一百多万台网络服务器提供安全防护。选择赛门铁克后，证书颁发机构 (CA) 将妥善保护您的网站和信誉，让您安枕无忧。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;2、腾讯云DV SSL 证书&lt;/strong&gt;      &lt;br /&gt;https://cloud.tencent.com/product/ssl      &lt;br /&gt;同一主域最多只能申请20张亚洲诚信品牌免费型DV版SSL证书（一级域名及其子域名均属于同一主域，例如 domain.com、ssl.domain.com、ssl.ssl.domain.com 都属于同一主域）。赛门铁克亚太白金战略合作伙伴亚洲诚信（TrustAsia）自研证书品牌，由赛门铁克根证书签发。仅支持绑定一个一级域名或者子域名，例如 domain.com、ssl.domain.com、ssl.ssl.domain.com 分别为一个域名。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;3、Let’s Encrypt 支持通配符&lt;/strong&gt;      &lt;br /&gt;https://letsencrypt.org/      &lt;br /&gt;Let&amp;apos;s Encrypt是一个免费并且开源的CA，且已经获得Mozilla、微软等主要浏览器厂商的根授信。它极大低降低DV证书的入门门槛，进而推进全网的HTTPS化。可以使用相关的软件（需要部署到自己的服务器）直接生成设置。      &lt;br /&gt;      &lt;strong&gt;备注：&lt;/strong&gt;      &lt;a href="https://letsencrypt.osfipin.com/" target="_blank"&gt;https://letsencrypt.osfipin.com/&lt;/a&gt; 不需要在自己服务器上部署软件，直接申请，目前需要三个月续期一次。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;4、百度云&lt;/strong&gt;      &lt;br /&gt;https://cloud.baidu.com/product/ssl.html      &lt;br /&gt;Symantec是全球最大的信息安全服务商。该证书为国内证书服务商TrustAsia（亚洲诚信）联合Symantec为百度云用户专供的证书产品。市场价值1900元。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;4、CloudFlare SSL&lt;/strong&gt;      &lt;br /&gt;https://www.cloudflare.com/      &lt;br /&gt;在Cloudflare的“加密”中可以一键开启SSL，这个SSL总共四种模式：关闭、Flexible SSL、Full SSL、Full SSL (strict)、Strict (SSL-Only Origin Pull)。      &lt;br /&gt;Flexible SSL：您的网站访问者和Cloudflare之间有加密连接，但是从Cloudflare到您的服务器没有加密。即半程加密。优点在于：你的网站不需要SSL证书，用户也能实现SSL加密访问。      &lt;br /&gt;Full SSL：全程加密，即从你的网站到CDN服务器再到用户，全程都是SSL加密的。优点在于：只要你的服务器有SSL证书（不管是自签名证书还是购买的SSL），就可以实现SSL加密访问。      &lt;br /&gt;Full SSL (strict)：全程加密，它与Full SSL的区别在于你的服务器必须是安装了那些已经受信任的SSL证书（即购买的SSL证书），否则无法开启SSL加密访问。      &lt;br /&gt;Strict (SSL-Only Origin Pull)：企业模式。自动将所有的Http转化为Https加密访问，要求你的服务器安装了受信任的有效的SSL证书。&lt;/p&gt;    &lt;p&gt;一些截图：&lt;/p&gt;    &lt;p&gt;      &lt;img alt="" src="https://images2018.cnblogs.com/blog/592447/201808/592447-20180816125531327-148644995.png"&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;      &lt;img alt="" src="https://images2018.cnblogs.com/blog/592447/201808/592447-20180816125538160-2038850753.png"&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;      &lt;img alt="" src="https://images2018.cnblogs.com/blog/592447/201808/592447-20180816125546125-810765963.png"&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;      &lt;img alt="" src="https://images2018.cnblogs.com/blog/592447/201808/592447-20180816125552839-861544381.png"&gt;&lt;/img&gt;&lt;/p&gt;&lt;/div&gt;
    &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/59653-%E5%85%8D%E8%B4%B9-ssl-%E8%AF%81%E4%B9%A6</guid>
      <pubDate>Sat, 01 Jun 2019 17:31:56 CST</pubDate>
    </item>
    <item>
      <title>为了避免惹上官司，你可以在这些免版权图片网站里寻找素材</title>
      <link>https://itindex.net/detail/59448-%E4%B8%8A%E5%AE%98-%E4%BD%A0%E5%8F%AF%E4%BB%A5-%E7%89%88%E6%9D%83</link>
      <description>&lt;div&gt;  &lt;p&gt;因为一张黑洞照片，视觉中国被顶上了风口浪尖，讨论的焦点主要集中在「图片版权」上。网上的图片一搜一大堆，但版权归属错综复杂，一不小心就会惹上官司。哪里才能找到高质量、同时又可以随意使用的图片呢？&lt;/p&gt;  &lt;p&gt;Creative Commons（非营利组织）在 2009 年推出了 CC0 协议。在作品中使用该协议，代表创作者已经放弃了著作权，将其贡献给公众免费使用。任何人都可以复制、修改、发行和表演作品，甚至用于商业用途，无需经过同意。&lt;/p&gt;  &lt;p&gt;有不少网站就专门提供符合 CC0 协议的图片，你可以随意进行下载，并使用它们。下面我们就向大家推荐一些高质量，并且免版权的图片网站。&lt;/p&gt;  &lt;h4&gt;Unsplash&lt;/h4&gt;  &lt;p&gt;   &lt;a href="https://unsplash.com/" rel="nofollow,noindex" target="_blank"&gt;https://unsplash.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;img src="https://img1.tuicool.com/EVBNJn6.png!web"&gt;&lt;/img&gt;&lt;/p&gt;  &lt;p&gt;Unsplash 是最早使用 CC0 协议的图片网站。这里的作品数量多、质量高，不少内容创作者都会来这里寻找图片资源。不过从 2017 年 6 月开始，Unsplash 用一个自家的标准替代了 CC0 协议，禁止将原版图片直接打印售卖，也不允许图片被用于创建类似 Unsplash 的竞品网站。除了上述两条，Unsplash 上的图片依然允许随意使用。&lt;/p&gt;  &lt;p&gt;这里的图片以摄影作品居多，风景、人物、物品，可以满足大部分创作需求，拿来当桌面壁纸也很合适。网站不需要注册就能下载原图。&lt;/p&gt;  &lt;h4&gt;Pexels&lt;/h4&gt;  &lt;p&gt;   &lt;a href="https://www.pexels.com/" rel="nofollow,noindex" target="_blank"&gt;https://www.pexels.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;img src="https://img0.tuicool.com/qQbIrmy.png!web"&gt;&lt;/img&gt;&lt;/p&gt;  &lt;p&gt;Pexels 上面的图很丰富，除了摄影作品以外，还有一些专门表达情绪、场景的图片。&lt;/p&gt;  &lt;h4&gt;Pixabay&lt;/h4&gt;  &lt;p&gt;   &lt;a href="https://pixabay.com/zh/" rel="nofollow,noindex" target="_blank"&gt;https://pixabay.com/zh/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;img src="https://img2.tuicool.com/viuUbqZ.png!web"&gt;&lt;/img&gt;&lt;/p&gt;  &lt;p&gt;Pixabay 上面包含照片、插画、矢量图、视频，种类多，质量也高。用户可以直接下载 2K 以下的图片，超过 2K 的原图需要注册才能下载，注册是免费的。&lt;/p&gt;  &lt;h4&gt;StockSnap&lt;/h4&gt;  &lt;p&gt;   &lt;a href="https://stocksnap.io/" rel="nofollow,noindex" target="_blank"&gt;https://stocksnap.io/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;img src="https://img0.tuicool.com/Q3yieuV.png!web"&gt;&lt;/img&gt;&lt;/p&gt;  &lt;p&gt;StockSnap 上面的图片也很丰富，以摄影作品为主，用户可以直接下载原图。不过在搜索一些关键词时，网站会推荐 Shutterstock 的付费图片，标注「赞助商提供」。如果只想下载免费图片，避开它们就好。&lt;/p&gt;  &lt;h4&gt;Visual Hunt&lt;/h4&gt;  &lt;p&gt;   &lt;a href="https://visualhunt.com/" rel="nofollow,noindex" target="_blank"&gt;https://visualhunt.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;img src="https://img1.tuicool.com/FZ7fuuQ.png!web"&gt;&lt;/img&gt;&lt;/p&gt;  &lt;p&gt;Visual Hunt 上的图片质量很高，首页还提供色彩选项，让你按颜色寻找图片。在图片页面会显示详细的调色板数据，包括色彩编码、比例等，方便寻找合适的配图，摄影爱好者也能学习后期。&lt;/p&gt;  &lt;p&gt;从一个个网站中寻找想要的图片，很耗时。有的网站把免版权图片做了聚合，让你可以更快速地进行检索。&lt;/p&gt;  &lt;h4&gt;Librestock&lt;/h4&gt;  &lt;p&gt;   &lt;a href="https://librestock.com/" rel="nofollow,noindex" target="_blank"&gt;https://librestock.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;img src="https://img0.tuicool.com/mYr2qeA.png!web"&gt;&lt;/img&gt;&lt;/p&gt;  &lt;p&gt;Librestock 是一个免版权图片的聚合网站，内容源包括很多顶级的图库，搜索时比较省力。不过图片主要都是摄影作品，一些特殊场景、情绪表达的内容较少。Librestock 还有一个搜索免版权视频的兄弟网站，就在首页顶端。&lt;/p&gt;  &lt;h4&gt;Everypixel&lt;/h4&gt;  &lt;p&gt;   &lt;a href="https://www.everypixel.com/" rel="nofollow,noindex" target="_blank"&gt;https://www.everypixel.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;img src="https://img0.tuicool.com/qmANBvq.png!web"&gt;&lt;/img&gt;&lt;/p&gt;  &lt;p&gt;Everypixel 是一个图库聚合网站，搜索之前需要选择「免费图片」，出来的结果就是免版权图片。&lt;/p&gt;  &lt;p&gt;这些聚合类的网站只是方便搜索，下载时还要跳转到对应的网站，可能会遇到需要注册账号的情况。&lt;/p&gt;  &lt;p&gt;为了规避版权纠纷，我们可以优先使用符合 CC0 协议的图片，但是这并不能解决所有问题。CC0 协议图片主要都是由摄影师贡献，内容以风景、人物居多。一些新闻图片、公共事件的照片，这些网站并不能提供。&lt;/p&gt;  &lt;p&gt;尽量寻找官方提供的照片、图片要注明来源，这是作为内容创作者应该做的。而不是忽视版权问题，随意用搜索引擎找图，随意使用。&lt;/p&gt;  &lt;p&gt;关注极客之选公众号（GeekChoice），回复关键词「免版权」，获取所有免版权图片网站链接。   &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;图片来源：Unsplash&lt;/p&gt;  &lt;p&gt;编辑：Rubberso&lt;/p&gt;&lt;/div&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>tuicool</category>
      <guid isPermaLink="true">https://itindex.net/detail/59448-%E4%B8%8A%E5%AE%98-%E4%BD%A0%E5%8F%AF%E4%BB%A5-%E7%89%88%E6%9D%83</guid>
      <pubDate>Sat, 13 Apr 2019 00:00:00 CST</pubDate>
    </item>
    <item>
      <title>如何使用Jenkins持续集成C#网站项目 - 暗夜孤灯的个人页面 - 开源中国</title>
      <link>https://itindex.net/detail/59394-jenkins-%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90-%E7%BD%91%E7%AB%99</link>
      <description>&lt;div&gt;    &lt;div&gt;      &lt;p&gt;    &lt;br /&gt;&lt;/p&gt;&lt;/div&gt;    &lt;p&gt;上两节分别讲了如何从vss迁移C#网站项目到gitlab和如何使用nuget管理C#网站项目，其实都是为了最后一节的内容做铺垫：持续集成C#网站项目,这里我们使用的持续集成工具是Jenkins&lt;/p&gt;    &lt;p&gt;软件环境：&lt;/p&gt;    &lt;p&gt;      &lt;a href="https://jenkins.io/" rel="nofollow"&gt;Jenkins ver. 2.73&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;freesshd 1.3.1&lt;/p&gt;    &lt;p&gt;nuget 4.1.0.2450&lt;/p&gt;    &lt;p&gt;msbuild 15.0&lt;/p&gt;    &lt;p&gt; &lt;/p&gt;    &lt;p&gt;1.持续集成思路&lt;/p&gt;    &lt;p&gt;      &lt;img height="309" src="https://static.oschina.net/uploads/space/2017/0928/200610_8XN8_815996.png" width="589"&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;项目按这个思路初始化配置到Jenkins后，每次提交代码到gitlab，Jenkins自动触发完成部署。我用一台Windows服务器192.168.0.136用来部署Jenkins，另外一台Windows服务器234部署项目&lt;/p&gt;    &lt;p&gt;2.Jenkins的安装比较简单，这里不细讲，网上有很多教程，用到的插件包括      &lt;a href="https://wiki.jenkins-ci.org/display/JENKINS/GitLab+Plugin" rel="nofollow"&gt;GitLab Plugin&lt;/a&gt;，      &lt;a href="http://wiki.jenkins-ci.org/display/JENKINS/MSBuild+Plugin" rel="nofollow"&gt;MSBuild Plugin&lt;/a&gt;，      &lt;a href="http://wiki.jenkins-ci.org/display/JENKINS/Publish+Over+SSH+Plugin" rel="nofollow"&gt;Publish Over SSH&lt;/a&gt;等&lt;/p&gt;    &lt;p&gt;3.初始配置过程&lt;/p&gt;    &lt;p&gt;新建Jenkins项目，选择“构建一个自由风格的软件项目”，保存&lt;/p&gt;    &lt;p&gt;      &lt;img height="638" src="https://static.oschina.net/uploads/space/2017/0928/200624_U9eK_815996.png" width="1181"&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;1）gitlab获取最新代码&lt;/p&gt;    &lt;p&gt;在“源码管理”区，选择git配置好项目地址，认证用户，分支等信息（需事先在Jenkins配置好gitlab，如gitlab地址，sshkey等认证信息）&lt;/p&gt;    &lt;p&gt;      &lt;img height="685" src="https://static.oschina.net/uploads/space/2017/0928/200643_nuFV_815996.png" width="1184"&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;2）Nuget获取依赖包配置&lt;/p&gt;    &lt;p&gt;在“构建”区，选择“Execute Windows batch command”,&lt;/p&gt;    &lt;p&gt;      &lt;img height="197" src="https://static.oschina.net/uploads/space/2017/0928/200654_udOs_815996.png" width="1130"&gt;&lt;/img&gt;&lt;/p&gt;    &lt;pre&gt;      &lt;code&gt;&amp;quot;D:\Program Files&amp;quot;\nuget\nuget.exe restore &amp;quot;Suntime.DigitalMarketing.Web.sln&amp;quot; -ConfigFile &amp;quot;C:\Users\Administrator\AppData\Roaming\NuGet\NuGet.config&amp;quot; -NoCache&lt;/code&gt;&lt;/pre&gt;    &lt;p&gt;去官网（      &lt;a href="https://www.nuget.org/downloads" rel="nofollow"&gt;https://www.nuget.org/downloads&lt;/a&gt;）下载nuget.exe并安装，把自定义的nuget server配置到NuGet.config中，以便能从自定义Nuget仓库中下载依赖包&lt;/p&gt;    &lt;p&gt;      &lt;img height="644" src="https://static.oschina.net/uploads/space/2017/0928/200709_EKGG_815996.png" width="1156"&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt; &lt;/p&gt;    &lt;p&gt;3）msbuild构建解决方案并发布&lt;/p&gt;    &lt;p&gt;继续在“构建”区，选择“Build a Visual Studio project or solution using MSBuild”&lt;/p&gt;    &lt;p&gt;      &lt;img height="422" src="https://static.oschina.net/uploads/space/2017/0928/200718_Deuh_815996.png" width="1139"&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;其中的MSBuild Version需要先配好，在Jenkins&amp;gt;Global Tool Configuration设置MSBuild，如下图我配置了两个MSBuild4.0和MSBuild15.0（指向的是vs2017的MSBuild.exe）&lt;/p&gt;    &lt;p&gt;      &lt;img height="905" src="https://static.oschina.net/uploads/space/2017/0928/200723_IckQ_815996.png" width="1908"&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;参数列表：&lt;/p&gt;    &lt;pre&gt;      &lt;code&gt;/t:Rebuild

/toolsversion:15.0

/property:Configuration=Release;PublishProfile=jenkins-deploy;DeployOnBuild=true;TargetFrameworkVersion=v4.5&lt;/code&gt;&lt;/pre&gt;    &lt;p&gt;其中的PublishProfile=jenkins-deploy指的是发布用的pubxml文件，我的发布路径是D:\jenkins-deploy\digitalmarket_web，这个路径在后面的打包压缩时会用到&lt;/p&gt;    &lt;p&gt;      &lt;img height="1041" src="https://static.oschina.net/uploads/space/2017/0928/200731_LgDC_815996.png" width="1920"&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt; &lt;/p&gt;    &lt;p&gt;4）压缩发布文件&lt;/p&gt;    &lt;p&gt;继续在“构建”区，选择“Execute Windows batch command”&lt;/p&gt;    &lt;p&gt;      &lt;img height="296" src="https://static.oschina.net/uploads/space/2017/0928/200737_noRe_815996.png" width="1126"&gt;&lt;/img&gt;&lt;/p&gt;    &lt;pre&gt;      &lt;code&gt;set projectName=digitalmarket_web

set targetFilePath=&amp;quot;D:\jenkins-deploy\&amp;quot;

set jenkins=&amp;quot;D:\Program Files\Jenkins\workspace\&amp;quot;%projectName%

set rarexe=&amp;quot;C:\Program Files\WinRAR\&amp;quot;

cd %targetFilePath%

%rarexe%Rar.exe a -r -x%projectName%\Web.config -ep1 %jenkins%\%projectName%.rar %projectName%&lt;/code&gt;&lt;/pre&gt;    &lt;p&gt;因本地环境和服务器Web.config配置可能不同，所以在压缩文件时需排除项目中的Web.config文件&lt;/p&gt;    &lt;p&gt;5）上传到部署服务器并解压文件，使用ssh上传文件后执行远程脚本解压文件，在234服务器上使用freesshd搭建ssh服务&lt;/p&gt;    &lt;p&gt;在两台服务器能正常通信的前提下，开通234服务器上的22和23端口&lt;/p&gt;    &lt;p&gt;      &lt;img height="931" src="https://static.oschina.net/uploads/space/2017/0928/200745_B9gf_815996.png" width="1729"&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;在freesshd中创建用户jenkins，把136服务器.ssh下的公钥复制到设置的Public key folder路径下，并重命名为jenkins，公钥名必须和用户名一致&lt;/p&gt;    &lt;p&gt;设置SFTP路径为：D:\jenkins，用于存放上传文件&lt;/p&gt;    &lt;p&gt;      &lt;img height="471" src="https://static.oschina.net/uploads/space/2017/0928/200817_nIgo_815996.png" width="505"&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;在“构建后操作”区，选择“Send build artifacts over SSH”&lt;/p&gt;    &lt;p&gt;      &lt;img height="704" src="https://static.oschina.net/uploads/space/2017/0928/200826_O1Zo_815996.png" width="1106"&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;命令行：&lt;/p&gt;    &lt;pre&gt;      &lt;code&gt;cmd.exe /c &amp;quot;d: &amp;amp;&amp;amp; cd jenkins &amp;amp;&amp;amp; unrar.bat digitalmarket_web&amp;quot;&lt;/code&gt;&lt;/pre&gt;    &lt;p&gt;其中unrar.bat为放在D:\jenkins中的解压脚本，脚本命令如下&lt;/p&gt;    &lt;pre&gt;      &lt;code&gt;set targetFilePath=D:\jenkins\

set rarexe=&amp;quot;C:\Program Files\WinRAR\&amp;quot;

cd &amp;quot;%targetFilePath%&amp;quot;

%rarexe%UnRAR x -o+ -y %1.rar&lt;/code&gt;&lt;/pre&gt;    &lt;p&gt;4.最后添加自动构建设置：gitlab上项目代码一旦更新就会触发构建&lt;/p&gt;    &lt;p&gt;      &lt;img height="822" src="https://static.oschina.net/uploads/space/2017/0928/200842_Ntf5_815996.png" width="1153"&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;5.试验一下，成功后在部署服务器的iis中配好网站就行&lt;/p&gt;    &lt;p&gt; &lt;/p&gt;    &lt;p&gt;git获取最新代码&lt;/p&gt;    &lt;p&gt;      &lt;img height="169" src="https://static.oschina.net/uploads/space/2017/0928/200848_6P53_815996.png" width="868"&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt; &lt;/p&gt;    &lt;p&gt;Nuget获取依赖包配置&lt;/p&gt;    &lt;p&gt;      &lt;img height="626" src="https://static.oschina.net/uploads/space/2017/0928/200857_YZJY_815996.png" width="1222"&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt; &lt;/p&gt;    &lt;p&gt;msbuild生成解决方案&lt;/p&gt;    &lt;p&gt;      &lt;img height="573" src="https://static.oschina.net/uploads/space/2017/0928/200902_G7s0_815996.png" width="1425"&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;发布打包&lt;/p&gt;    &lt;p&gt;      &lt;img height="586" src="https://static.oschina.net/uploads/space/2017/0928/200907_CqfT_815996.png" width="1293"&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;压缩发布文件并上传&lt;/p&gt;    &lt;p&gt;      &lt;img height="332" src="https://static.oschina.net/uploads/space/2017/0928/200922_KC5A_815996.png" width="820"&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;远程解压成功&lt;/p&gt;    &lt;p&gt;      &lt;img height="254" src="https://static.oschina.net/uploads/space/2017/0928/200928_Kwp8_815996.png" width="821"&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt; &lt;/p&gt;    &lt;p&gt; &lt;/p&gt;    &lt;div&gt;      &lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
    &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/59394-jenkins-%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90-%E7%BD%91%E7%AB%99</guid>
      <pubDate>Sat, 23 Mar 2019 23:03:15 CST</pubDate>
    </item>
  </channel>
</rss>

