<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
    <div id="app">
        <p>{{ message }}</p>
        <p><span v-html="message"></span></p>
    </div>

    <div id="app-2">
      <span v-bind:title="message">
        鼠标悬停几秒钟查看此处动态绑定的提示信息!
      </span>
    </div>

    <div id="app-3">
      <p v-if="seen">现在你看到我了</p>
    </div>

    <div id="app-4">
        <ol>
            <li v-for="todo in todos">
                {{ todo.text }}
            </li>
        </ol>
    </div>


<!--more-->


    <div id="app-5">
        <p>{{ message }}</p>
        <button v-on:click="reverseMessgae">逆转消息</button>
    </div>

    <div id="app-6">
      <p>{{ message }}</p>
      <input v-model="message">
    </div>

    <div id="app-7">
      <p>Original message: "{{ message }}"</p>
      <p>Computed reversed message: "{{ reversedMessage }}"</p>
      <p>Reversed message: "{{ reversedMessages() }}"</p>
    </div>

    <div id="app-8">
        
    </div>
</body>
<script type="text/javascript">
    var app = new Vue({
        el:"#app",
        data:{
            message:"<span style=\"color:red\">哈哈哈</span>"
        }
    })


    var app2 = new Vue({
      el: '#app-2',
      data: {
        message: '页面加载于 ' + new Date().toLocaleString()
      }
    })

    var app3 = new Vue({
        el: "#app-3",
        data:{
            seen:true
        }
    })

    var app4 = new Vue({
        el:"#app-4",
        data:{
            todos:[
                { text:"学习js" },
                { text:"学习vue" },
                { text:"学习java" }
            ]
        }
    })

    var app5 = new Vue({
        el:"#app-5",
        data: {
            message:"hello vue"
        },
        methods:{
            reverseMessgae:function(){
                this.message = this.message.split('').reverse().join('')
            }
        }
    })

    var app6 = new Vue({
      el: '#app-6',
      data: {
        message: 'Hello Vue!'
      }
    })

    var app7 = new Vue({
        el:'#app-7',
        data: {
            message:"hello"
        },
        //计算属性
        computed:{
            reversedMessage:function(){
                return this.message.split('').reverse().join('')
            }
        },
        //方法
        methods: {
          reversedMessages: function () {
            return this.message.split('').reverse().join('')
          }
        }
    })

    const NotFound = { template: '<p>Page not found</p>' }
    const Home = { template: '<p>home page</p>' }
    const About = { template: '<p>about page</p>' }

    const routes = {
      '/': Home,
      '/about': About
    }

    new Vue({
      el: '#app-8',
      data: {
        currentRoute: window.location.pathname
      },
      computed: {
        ViewComponent () {
          return routes[this.currentRoute] || NotFound
        }
      },
      render (h) { return h(this.ViewComponent) }
    })
</script>
</html>

- 阅读剩余部分 -

Gevent是python的第三方库,提供了比较完善的对协程的支持。Python中GIL的存在,导致多线程一直不是很好用,相形之下,协程的优势就更加突出了。
Gevent的基本思想是:当遇到IO操作时,会自动写换到其他gevent,再在适当的时间切回来继续执行。这样就减少了IO操作时的等待耗时,从而能够提高硬件资源的利用率。
注:本文使用 python3.6 Django2.0.7 gevent1.3.7

首先用 Django 创建一个用来测试的接口
在 views.py 文件中写入

def random1(request):
    # 模拟随机延迟
    t = random.randint(1, 2) / 10
    time.sleep(t)
    return HttpResponse(t)



- 阅读剩余部分 -

robots.txt是一种存放于网站根目录下的ASCII编码的文本文件,它通常告诉网络搜索引擎的网络蜘蛛,此网站中的哪些内容是不应被搜索引擎获取的,哪些是可以被获取的。

这个协议也不是一个规范,而只是约定俗成的,有些搜索引擎会遵守这一规范,有些则不然。

typecho 博客默认是没有 robots.txt 文件的,这会导致一个严重的问题,就是网页权重分散,搜索引擎收录了很多杂七杂八的页面,下面就以我自身的血泪史来说明。

- 阅读剩余部分 -