小花花 的回答 (42)
  • 小花花

    因为mysql的null值和任何其他值(包括null在内)的任何比较(包括=和<>)都会返回false,比如null=null的值是false,null!=null的值仍然是false,null=1的值是false,null!=1的值也是false。null的比较只能用is null之类的来判断

  • 小花花

    这只是刻意的设计。
    js是单线程的,但是否提供这样的功能取决于引擎实现,想实现一个很容易。比如用NodeJS加个拓展就行。
    然而如果提供了这样的功能,就会导致卡住主线程(像window.alert()那样),页面中的其他js都无法运行和正常交互,极大影响用户体验。

    也可以用最新的async语法,可以达到类似的效果,不会卡住页面,目前是最好的解决方案:

    async function sleepAsync (time) {
      return new Promise(resolve => setTimeout(resolve, time))
    }
    
    (async()=>{
      console.log(1)
      await sleepAsync(1000)
      console.log(2)
    })()
  • 小花花

    css可以吗
    先设置一个固定高度,100%或者100vh...
    不能滚动的时候设置overflow:hidden
    能滚动的时候设置overflow:auto

  • 小花花

    你应该再准备一个缓存池
    图片上传先上传至缓存池 当图片与其他相关联的时候(真正被应用到,从缓存池移出至应用池 当修改或覆盖的时候就把应用池中的数据替换
    再来个扫描任务 当数据待在缓存池超过一定时间就判定为垃圾数据 直接删除

  • 小花花

    建议不处理,因为一般占用空间大小或比例不多。

    如果要处理就使用定期扫描即可,不需要使用表,作为一个额外的清理功能,不增加本身的复杂度,定时任务加载全部markdown转html分析img src即可(富文本直接拿到html内容然后goquey提取),然后diff下删除未引用的资源。

    markdown转html可以使用go库转成html然后goquery分析img,或者cdp加载markdown渲染html然后分析出img。

  • 小花花

    微博应该是不处理的,所以以前才能有微博图床这种东西(现在是防盗链用不了了)
    而且存储成本相比cpu、内存、带宽、流量是便宜得多的多,一般应该都不处理吧
    建图片文件表倒也是个解决方案,就是怕服务崩溃后可能导致表里的图片计数和实际对应不上,回头把不该删的图给删了就不好了

  • 小花花

    建一个图片文件表:

    create table pic(
      id int,
      path varchar(256),
      md5 varchar(32),
      size int,
      refer_count int,
    )

    refer_count 为引用计数,多少文章里用到了,就是多少,文章修改时,先减少再增加,少到为零就可以删了。
    用md5做摘要,可以把重复上传的图版合二为一。size和可以与用户结合进行配额限制,防止被恶意使用。

  • 小花花

    php 在程序执行结束之后, 才会把缓存的内容刷到标准输出里, 你的程序一直没有结束, 所以程序一直没有返回, 浏览器只有在接收响应之后才会显示响应的内容

    1 每次输出先flush一下
    2 这种测试代码, 直接cli运行就行

  • 小花花

    我的理解是下面这样的:

    函数编程:相当于一种对数据的直接加工。假如数据是面粉,函数可以是做和面的机器。调用它就可以做完和面这个过程,输出--->和好的面。

    函数式编程:相当于把这个过程更抽象了一层。编写函数式编程的过程,相当于调用各种低级机器(函数),组装制造出一条更复杂的设备,相当于一个制造工厂。这个制造工厂,可以输入函数1(和面的机器)、函数2(发酵的机器)、函数3(产生蒸汽的机器),组装好后就输出-->函数4(制造馒头的机器)?

    使用的时候就可以输入 面粉+函数4,直接输出馒头?

  • 小花花

    利用数据库的事务去完成这两个操作。事务本身是符合原子性的。

最近访客
  • 董俊俊
    董俊俊 1个月前