liziyu 发布的文章

一、自造“雪花”唯一值

md5(uniqid(session_create_id(), true).mt_rand(100000,999999));



二、其中说明备注一下:

1、获取一个带前缀、基于当前时间微秒数的唯一ID:

uniqid(); //如:hs5udg24mr15rbvq1j8egtn6hg62bc08419b8e33.48309809143152

2、获取六位的随机数:

mt_rand(); //随机数:130605

3、创建新的无冲突的会话ID:

session_create_id(); //如:fvhgsooqvun8ftpmtuov1rqo2u

4、使用md5加密,为了统一长度,在数据库字段设置时可以设置为定长 char类型:

md5(); //如:70627629d983455ad7a4c6869a632994

以上这么多操作,几乎不会再有重复的了,因为前缀不同,不服来验证吧!呵呵

左侧为 WEB 事件,右侧为 uni-app 对应事件

{
    click: 'tap',
    touchstart: 'touchstart',
    touchmove: 'touchmove',
    touchcancel: 'touchcancel',
    touchend: 'touchend',
    tap: 'tap',
    longtap: 'longtap', //推荐使用longpress代替
    input: 'input',
    change: 'change',
    submit: 'submit',
    blur: 'blur',
    focus: 'focus',
    reset: 'reset',
    confirm: 'confirm',
    columnchange: 'columnchange',
    linechange: 'linechange',
    error: 'error',
    scrolltoupper: 'scrolltoupper',
    scrolltolower: 'scrolltolower',
    scroll: 'scroll'
}

钱没了可以再挣,工作没了可以再找,朋友没了可以再交,爱情没了可以再去找,你生来就一无所有,何惧从头再来。
水到绝境是瀑布,人到绝境是重生。半山腰总是很挤的,你得努力去山顶看看。
人生这道题怎么选都有遗憾,真正的强者是夜深人静的时候,把心掏出来自己缝缝补补,睡一觉起来,又是信心百倍。
活着就该逢山开路,遇水架桥,睡前原谅一切,醒来便是重生。

JS代码

Page({
  data: {
    weekInfo: []
  },

     // 处理未来七天的函数
     dealTime (num) {     // num:未来天数
      var time = new Date()     // 获取当前时间日期
      var date = new Date(time.setDate(time.getDate() + num)).getDate()  //这里先获取日期,在按需求设置日期,最后获取需要的
      var year = time.getFullYear()  //获取年份
      var month = time.getMonth() + 1   // 获取月份
      var day = time.getDay()   //  获取星期
      switch (day) {             //  格式化
        case 0: day = "日"
          break
        case 1: day = "一"
          break
        case 2: day = "二"
          break
        case 3: day = "三"
          break
        case 4: day = "四"
          break
        case 5: day = "五"
          break
        case 6: day = "六"
          break
      }
      var obj = {
        // date: date,
        day: month + '.' + date,
        // month: month,
        week:day,
        date:year+'-'+month + '-' + date
      }
      return obj      // 返回对象
    },
 /**
   * 生命周期函数--监听页面加载
   */
  onLoad (options) {
    var arr = []
    for (let i = 0; i < 7; i++) {
      arr.push(this.dealTime(i))
    }
    // arr[0].day = '今天'
    this.setData({
      weekInfo: arr            // 赋值给data
    },()=>{
      console.log(this.data.aWeek)
    })
    //api_data(this);  请求接口
  },

  DatetabSelect(e) {
    console.log(e)
  }
});


页面wxml

<scroll-view scroll-x class=" nav bg-white" scroll-with-animation scroll-left="{{scrollLeft}}" style="padding-left:8rpx">
  <view class="cu-item date-item {{index==DateTabCur?' Datecur':''}}" wx:for="{{weekInfo}}" wx:key="*this" bindtap="DatetabSelect" data-id="{{index}}" style="padding: 0px 8rpx;">
    <view> {{item.day}}</view>
    <view class="weeks">{{item.week}}</view>
  </view>
</scroll-view>

局部WXSS

.nav .date-item {
  height: 166rpx;
  text-align: center;
  color: #9a9a9a;
  border: none;
  line-height: 78rpx;
}

.date-item .weeks {
  width: 70rpx;
  height: 70rpx;
  border-radius: 50%;
  background: #333333;
  text-align: center;
  line-height: 70rpx;
  color: white;
  /* margin-bottom: 5rpx; */
}

.nav .date-item.Datecur .weeks {
  border: 4rpx solid red;
  color: #333333;
  background:white;
}


演示效果

pictrue-demo.png

转载自:https://blog.csdn.net/weixin_40762926/article/details/121469758

fiber-ext.jpg

根据上图,可以看出来Fiber的大体执行流程,如下:

1、fiber 大概就是实现了一种主执行流程和fiber执行流程的手动切换。
2、fiber->start() 从main流程切换到fiber流程执行。
3、Fiber::suspend() 从fiber切换到main流程。
4、接下来main流程可以执行一些操作,或者顶一个事件循环监听socket的数据情况
5、当有数据写入事件后,调用Fiber->resume 切换到fiber中去执行比如从socket读取数据这样的操作。
6、fiber的流程代码执行完毕以后,也就自动切换到主流程,如果事件循环也结束了,那么就主流程继续向下执行。

转自:https://www.simapple.com/459.html

前言

还在为没有设置好Charles 抓不了手机上的https请求而苦恼吗!今天手把手教你用proxyman抓取iPhone上的网络请求

操作设备环境

  • 电脑系统:macOs Big Sur 11.1
  • 手机系统:ios 12以及最新
  • proxyman系统版本: 2.21.1以及最新

安装

1.软件安装步骤我就省略了,软件下载地址: https://proxyman.io/
11.png

查看大图

2.安装证书;Certificate->Install Certificate on this Mac
22.png

查看大图

3.安装扩展以及证书,Automatic->Install&Trust Certificate
33.png

查看大图

傻瓜式点击就好

抓取数据

1.上面的步骤就安装好了证书;但是这个时候只能请求http,如果我们请求是https的话,执行下面步骤:
44.png

查看大图

成功抓去到了浏览器到所有请求

55.png
查看大图

观察数据返回

抓取手机app数据

移动端安装流程 (⚠️图片上红色文字是关键步骤)

1.查看移动端设置流程,必须跟电脑连同一个Wi-Fi
66.png

查看大图

77.png

查看大图

手机上的设置我就写在图片上下面

2.根据上面5个步骤手机设置,注意⚠️第五步千万别遗漏了,这是你能否抓到数据等关键。

允许https 返回

  1. 找到自己手机链接IP,然后选择自己所要看到数据请求的域名,选择Enable Https Response 就可以看见body 里面的数据返回了。
    88.png
    查看大图

常用设置

99.png

查看大图

本文转自:https://www.jianshu.com/p/2e728bce7eba
感谢作者:剁椒先生

方案一

Casbin的核心-表.png

Casbin的核心.png

方案二

111.JPG
原理

222.JPG
规则

333.JPG
数据ER

444.PNG
管理UI

555.JPG
数据表实例

特别声明:其中方案二为某大佬线上生产环境系统设计,如果侵犯到此权限请通知我删除,同时采纳者一同承担相应责任。

Tab 切换对应的生命周期(以 A、B 页面为 Tabbar 页面,C 是从 A 页面打开的页面,D 页面是从 C 页面打开的页面为例):

当前页面 路由后页面 触发的生命周期(按顺序)
A A Nothing happend
A B A.onHide(), B.onLoad(), B.onShow()
A B(再次打开) A.onHide(), B.onShow()
C A C.onUnload(), A.onShow()
C B C.onUnload(), B.onLoad(), B.onShow()
D B D.onUnload(), C.onUnload(), B.onLoad(), B.onShow()
D(从转发进入) A D.onUnload(), A.onLoad(), A.onShow()
D(从转发进入) B D.onUnload(), B.onLoad(), B.onShow()

注意事项

  • navigateTo, redirectTo 只能打开非 tabBar 页面。
  • switchTab 只能打开 tabBar 页面。
  • reLaunch 可以打开任意页面。
  • 页面底部的 tabBar 由页面决定,即只要是定义为 tabBar 的页面,底部都有 tabBar。
  • 调用页面路由带的参数可以在目标页面的onLoad中获取。