自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

sku

狂奔的蜗牛

  • 博客(40)
  • 资源 (5)
  • 收藏
  • 关注

原创 ThinkPHP 模型 Model 获取不到数据库数据

调试记得把 Debug 模式打开,这样你才能定位到大部分错误,过滤掉无关紧要的基础错误,比如语法错误,配置错误。定义一个数据模型很简单,只需要放到应用的 model 目录下,并且继承 think\Model。使用模型可以看出, 操作数据特别简便,前提是你需要在 config\database.php 配置好默认的数据库相关信息。假设需要动态切换数据库、表名、表前缀、主键ID名等等,可以在模型属性中配置。详细配置请查阅官方手册。

2023-01-06 11:31:54 533 1

原创 ThinkPHP6 redis 缓存有效期、过期时间设置

ThinkPHP,下文简称TP。TP缓存的配置文件为,默认使用文件缓存,如需使用Redis缓存,需要安装单独Redis,这里不做介绍。如已安装Redis,将Redis信息加入到TP缓存配置文件中,即可在TP框架中使用Redis业务。参考配置如下图配置文件中的default字段可设置TP默认使用的缓存类型,后期也可以任意切换缓存类型。例如。

2022-12-23 15:54:46 3332

原创 vant 引入 iconfont 图标,图标变形,图标斜斜歪了

仔细审查一便当前图标的样式,发现没有自己写的CSS样式导致图标变形,最后检查发现元素有个一个 font-style 为 italic的样式,才恍然大悟,这是斜体的样式,vant 插入图标使用的是标签 i,i 默认样式就是斜体,直接覆盖默认样式即可。

2022-10-20 09:20:25 741 1

原创 ThinkPHP6 访问频率限制,接口限速

TP在国内应该是使用比较广泛的PHP框架之一,尤其是在对外提供接口的业务上。为了节省服务器资源,防止非法采集,提供更好的用户体验,因此很多开发者都需要考虑接口访问频率的问题。下面介绍一下如何在TP6上实现这一功能。首先我们安装一下第三方的模块:composer require topthink/think-throttle提示:composer 类似 Node Vue React 使用的 npm,也就是包管理工具,采用 composer 进行安装可以方便管理各种依赖。进入到 TP 项

2022-03-18 17:01:42 3205

原创 Javascript 添加前导零,给数字补位0

比如我们常见的时间格式时分秒 00:00:00,如果用12小时制表示通常是 12:06:01,如果不补零看起来就比较难看,不规整。那用 Js 怎么处理,很多人常用的方法就是判断是否小于10,如果小于就补0,大于等于就不补。var hours = 8;var minutes = 10;var time;time = hours < 10 ? '0' + hours : hours;time += ':';time += minutes < 10 ? '0' + minutes

2022-03-10 22:48:23 4536 1

原创 Vue 监听对象属性值

在项目引用了 Vant UI 的 Popover组件,该组件规定弹出菜单的名称为 text,但我在后台得到的数据是 name,如果是一次性的话可以在获取数据后直接赋值,但是后期需要根据输入框的变化动态调整 Popover 组件菜单项的名字,所以才想到去绑定对象的属性值,一开始想到的是如何去监听 watch,其实计算属性完全可以实现。<van-form @submit="onSubmit"> <van-field v-model="menuName"

2021-12-29 16:45:25 519

原创 网页不能自动播放视频、音频的解决方案

至于原因,就是谷歌以及基于 Chromium 开发的浏览器自身限制,出发点是影响用户体验,想想也是,万一,一不小心点开哪个网页,突然播放一些乱七八糟的声音,而且特别大声,估计谁也受不了。考虑到目前地球上绝大多数浏览器都是基于开源的Chromium 开发,而且浏览器厂商也统一静止了自动播放,我们就不得不想办法着手解决这个问题。先看看大厂们是怎么解决的,比如优酷、B站是可以自动播放视频的,那它们是怎么做的?研究了一下,它们是以静音的方式开启自动播放,然后提示用户手动打开音量。<vid.

2021-10-13 14:29:37 3315

原创 HtmlTextView 处理图片点击事件

HtmlTextView 是一个开源的 Android HTML 展示库,支持常用的HTML的标签,以及图片展示,其中 <a>标签支持设置监听,而 <img /> 标签未实现,本文介绍如何快速设置图片点击监听。开源库地址:https://github.com/SufficientlySecure/html-textview一、在项目的模块中引入implementation 'org.sufficientlysecure:html-textview:4.0'二、在布.

2020-12-30 14:59:59 806 2

原创 js 将数字转成 k w 方式显示

有时候数字很长,为了美化显示效果,通常会将数字转换成多少k多少w显示,就像现在喜欢说你工作多少k。function formatNumber(num) { return num > 1e3 ? (num / 1e3).toFixed(1) + 'k' : num > 1e4 ? (num / 1e4).toFixed(1) + 'w' : num}...

2020-10-01 23:03:24 5018

原创 Vue 使用 moment.js 时间类库

第一种:原型链上挂载import Vue from 'vue';import Moment from 'moment'; // 引入, NPM使用 npm install moment --save 安装Vue.prototype.$moment = Moment; // 挂载new Vue({ ... ...})脚本中使用 this.$momentexport default { data: function() { return

2020-10-01 14:30:12 561

原创 js获取数组第一个和最后一个元素

Array.pop()该方法会返回数组的最后一个元素,但同时也会从数组中删除该元素,所以使用需谨慎。解决办法,拷贝数组再进行操作,代码如下var arr = [1, 2]var el = arr.pop()console.log(el)console.log(arr)// el 结果 2// arr 结果 [1]// 替换方法[...arr].pop()Array.length通过获取数组的长度再减去一就可以得到数组最后一个元素的下标,这个方法比较常用。

2020-09-28 21:24:44 35749 1

原创 ArrayList 复制

有时候需要取出 List 中的元素然后从 List 删除该元素就需要复制一份在操作,这里列举一种最简单的方法。ArrayList<String> sourceList = new ArrayList<>();sourceList.add("Robin");sourceList.add("Rose");sourceList.add("David");// 复制ArrayList<String> targetList = new ArrayList&lt

2020-08-02 13:14:58 1353

原创 Promise 封装实现递归二次调用

最近一个小问题困扰我,就是在小程序中请求某个 API 会低概率出现 502 的现象,但重新访问又可以。由于请求是异步的,所以封装成了 Promise 方便调用,在此基础上想实现 502 重连,就是访问出错重新连接。function request(url) { return new Promise((resolve, reject) => { wx.request({ url, success: res => {

2020-06-20 18:41:53 739

原创 一个微信小程序下载保存视频的模块,支持进度显示

网上有很多类似的封装模块,大部分都很拖沓的,自己也尝试写了一个支持进度显示。封装好的代码,代码量很少但调用很方便,有完整的事件监听,将它保存为 saveFileUtil.jsfunction downloadFile(url, listener) { listener.onStart && listener.onStart() const task = wx.downloadFile({ url, success: res => { ..

2020-06-03 18:45:47 1355

原创 JS数组中两个元素交换位置

假设将一个数组的首尾互换一下,利用数组的 splice 替换元素方法很轻松就办到。var arr = [ { id: 0, name: 'Rose' }, { id: 1, name: 'Robin' }, { id: 2, name: 'Tom' }]var sourceIndex = 0var targetIndex = arr.length - 1ar..

2020-05-24 00:19:52 13503 1

原创 【js技巧】Javascript中 ! 与 !! 的用法

! 运算符都用过,取反的意思,比如在做逻辑判断的时候,它作用就是转换数据为布尔值然后取反。var today = new Date().getDay()if (!today) { console.log('礼拜天')}而 !! 则是双重取反,负负得正嘛,可以得到该数据的布尔类型,相当于简变了布尔值的转换,经常用于强转布尔值的简写。var a = "hello"var b = 2020var c = nullconsole.log(Boolean(a), ...

2020-05-23 11:34:11 389

原创 【JS技巧】巧用 apply 给函数传递参数数组

先看例子prompt("请输入联系方式", "手机/邮箱/QQ");prompt 接受两个参数,一个是显示的提示文本,还有一个输入框的默认值。但有的时候我们的参数是一个数组形式,为了简便高效,通常会用apply 方法巧妙的给函数传递数组参数。var content = "请输入联系方式,手机/QQ/邮箱";prompt.apply(this, content.s...

2020-03-29 14:43:49 1764

原创 【JS技巧】三元条件运算组合嵌套使用

三元运算是一个固定的表达式:条件 ? 结果: 结果new Date().getDay() == 0 ? '礼拜天' : '上班吧'

2020-03-25 17:51:54 3007

原创 JS 模板语法 ES6

ES6中引入一种新的模板语法,使用 `` 包裹的字符可以直接输出,然后使用 ${} 去处理表达式。let title = 'ES6模板语法';let template = ` <span class="media-title">${title}</span>`;console.log(template);// 结果<span class=...

2020-03-09 11:48:22 1488

原创 JS 中的 && 与 || 运算

&&、|| 是逻辑运算符,一般用作条件判断,但很多情况还可以用在赋值运算,使用起来很方便。举个例子var a = a || {};var b = 0 || 2;// 结果// a => {}// b => 2再看个例子var a = 0 && 1;var b = 1 && 2 && 3...

2020-03-09 10:22:25 334

原创 Windows10 子系统 Ubuntu 设置开机启动【ssh】

由于 Ubuntu 18.4 已经废弃了 initd 管理模块,改用systemd,而作为 Windows的子系统是不支持systemd,显然得另辟蹊径。为了实现 ssh 服务能开机启动,现在只能通过自定义 shell 脚本达到目的。#! /bin/sh# startup ssh service.service ssh start将文件保存在/etc/sshd...

2020-01-08 11:48:15 3418

原创 创建 git 私有仓库

准备工作确保客户端和服务器都安装了 gitCentos 执行yum install gitUbuntu 执行apt install gitWindowshttps://git-scm.com/download/win查看版本git --version服务器启用证书登录为服务器远程登录创建密匙ssh-keygen -t rs...

2020-01-06 12:01:48 714 1

原创 家里的电脑如何搭建网站【电信宽带】

如果要实现家庭宽带的外部访问,首先要申请公网IP,然后做端口映射即可,就是这么简单。如果无法获得公网IP,那只能做内网渗透,自己花钱买服务器搞,或者用一些第三方的服务,比如花生壳【不推荐】第三方的服务到处是收费陷阱,包括带宽限制(1M),不推荐,当然你不差钱无所谓。一、申请公网IP一般直接打电话或者联系宽带运营商在线客服,爽快的都会给,或者犹犹豫豫的也可以磨磨嘴皮子。(仅限电...

2020-01-03 12:34:55 5765

原创 一个简单的网页 Websocket 连接并实现心跳 Heartbeat

创建 Socket 连接很简单,一行代码即可。let ws = new WebSocket('wss://example.com/');如果服务器采用 SSL,只需要将 ws:// 替换成 wss://let ws = new WebSocket('wss://echo.websocket.org/');然后是通过回调函数获取服务器消息以及对连接状态进行捕捉。// 成...

2019-12-30 20:30:27 4645

转载 Nginx 配置网站支持 HTTPS 访问【免费】

Linux 下使用 acme.sh 配置 Let's Encrypt 免费 SSL 证书 + 通配符证书1 、什么是 SSL 证书?SSL 是保护用户数据和防止身份被盗用的最佳方式。拥有 SSL 证书的网站可以告诉用户,他们可以放心的浏览,SSL 可以保护他们的数据安全。不同的 SSL 证书提供不同级别的验证。目前比较火的适合个人用户的证书就是Let’s Encrypt,这货是免...

2019-11-15 15:51:51 876

原创 Framework7解决浏览器返回问题

现在使用Vue、React框架开发前端应用的人越来越多,配套的周边插件、UI库也应育而生,使用它们很容易就开发出非常漂亮且实用的前端应用和网站。单页面应用的好处很多,一次加载,全程流畅,还有切换动画,体验良好,但在浏览器或者手机端的Webview上,用户想要返回就会直觉的按下返回键,这对单页面应用简直是灾难,本身就一个浏览器页面壳,物理返回的结果是直接退出我们的网站。但你不能教育你的用户...

2019-09-19 16:34:50 2144

原创 微信公众号、小程序消息解密失败【PHP7+】

微信的消息推送SDK有点老旧,有些代码并不适合运行在 PHP7 以上版本。官方的SDK下载链接:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419318479&token=&lang=zh_CN...

2019-09-14 21:19:58 1722

原创 在windows系统上安装使用Linux

很早就听说 Windows 10 系统可以使用 Linux,兴奋之余由于种种原因没有去体验过,现在想起来就把它装上了,记录下。一、添加Linux 系统Ⅰ 进入控制面板,找到程序和功能并打开。或者直接在文件夹地址栏输入【控制面板\程序\程序和功能】,不含中括号,就可以快速打开。Ⅱ点击左侧的【启用或关闭 Windows 功能】,在功能列表中找到【适用于 Linux 的 Windo...

2019-09-06 21:57:54 710

原创 typecho在nginx登录后台出现404

这是 typecho 的路由问题,仔细观察出现404的页面地址有类似 index.php/...,直接访问php文件是没什么问题的。以 lnmp 一键搭建的环境为例,配置这种路由。找到 nginx 的配置文件,在 server 块,将载入的enable-php.conf 配置替换成enable-php-pathinfo.conf其次,需要引入 typecho.conf 配置,...

2019-08-12 12:36:06 6212 2

原创 C语言实现JS无符号运算 >>>

有一段JS需要转到C语言,由于真的菜,只能另辟蹊径解决。这是 JS 的一行算法var gg = bi << ki | g >>> 32 - k;其中js中 >>> 代表无符号右移运算,在C中没有这种运算符号。土办法// 翻译成Cint gg = bi << ki | g >>> 32 ...

2019-06-12 22:56:42 275

原创 C语言中递增递减 ++i 和 i++

++i 先运算再取值,i++ 先取值再运算#include <stdio.h>int main(){ int a = 0; int b = 0; int c = 1; int d = 1; printf("++a值为%d", ++a); printf("a++值为%d", a++); printf("--c值为%...

2019-06-10 23:45:13 2083

原创 粗浅理解C语言递归函数的计算过程

刚接触C语言发现递归函数一开始没能理解过来,看了分析结果才知道怎么运算的。一个简单的例子推理首先是调用函数 factorial(5),然后开始分解 factorial 函数体内根据参数 n 去判断递归逻辑 factorial(5) = 5*factorial(4) factorial(4) = 4*factorial(3) factorial(3) = 3*facto...

2019-06-09 23:08:55 1236

原创 Centos7.6上手动编译安装 Nginx1.16 和 php7.2

尽管市面上有很多Linux + Nginx + Mysql + PHP 的一健安装包,但在生产环境下,还是最好自己动手去编译。安装依赖yum install gcc gcc-c++ automake pcre pcre-devel zlip zlib-devel openssl openssl-devel下载 Nginxcd /usr/local/src/wget -cO...

2019-05-29 20:52:22 933

原创 windows 创建 生成0字节空文件

写批处理脚本BAT或创建配置文件的时候需要生成空文件,汇总几种方法。方法一直接右键新建文本文件, 改下文件名和扩展名即可。方法二打开命令提示符 CMD,执行以下命令都可以创建新的空文件。cd.>filenamerem cd. 表示切换到当前位置,并且不产生输出。rem 该命令既不改变位置,也不会写入内容。copy nul filenamerem ...

2019-05-27 10:55:03 4303

原创 PHP 截取字符串

根据给出的前后内容截取字符,个人封装了一个方法,还挺好用的。<?phpfunction cutstr($haystack, $before_needle, $after_needle) { $start = is_int($before_needle) ? $before_needle: (strpos($haystack, $before_needle) + strl...

2019-05-15 17:25:41 3493

原创 利用v8js在php调用js代码

v8js 是 php 中的一个扩展,使用 pecl install v8js 完成安装,这里不作介绍。看官方的几个示例<?phpclass Foo { var $bar = null;}$v8 = new V8Js();$v8->foo = new Foo;// This prints "no"$v8->executeString('print( "...

2019-05-14 17:13:01 3119 1

转载 奇怪的 Cannot resolve symbol "R" 问题

在 GitHub 克隆了一个开源的 Android 项目,将其引入 Android Studio 3.2 后一直报错,无法找到 R 这个类,也就无法引入它,更别谈使用资源ID了,凡是使用的地方都是爆红,提示 Cannot resolve symbol R。仔细检查后并没有发现任何低级错误,比如 AndroidManifest.xml 错误、资源ID冲突、ID不存在之类的,因为全新的项目我都没有...

2019-04-25 00:08:14 779

原创 Windows 完美安装和配置 Android Studio 3.2【防踩坑】

准备工作提醒:Windows 7 以及 Android Studio 2.x 版也可参照本文操作。Android Studio 安装倒是挺简单,主要是后期配置需要注意一下,最难搞的是网络问题,天朝你懂的。下面开始测试下网络环境,打开命令提示符,ping 一下这两个服务器地址。dl.google.comservices.gradle.org如果都能 ping 通,那么你可...

2019-04-20 19:29:30 1592

原创 文件、目录无法删除的解决办法

无法删除?文件被其它程序占用会出现无法删除的情况,在 Windows10 以前有一款很流行的工具 Unlocker 用于文件和目录的解锁操作,解除占用,用于删除顽固文件。不过在 Windows10 上,可以利用系统自带的任务管理器轻松查看、终止占用文件的程序。具体操作打开任务管理器,切换到性能选项卡,在底部找到性能监视器。在性能监视器中切换到CPU选项卡,底部关联句柄中...

2019-04-19 13:00:08 4781

原创 Android 获取远程服务器时间

获取本地时间会因用户设定而造成错乱,因此需要应用去获取远程服务器时间。如果你没有自己的服务器开展业务,也可以使用互联网公司提供的时间API接口。直接访问http://quan.suning.com/getSysTime.do可以看到接口提供的时间格式{ "sysTime2": "2019-04-19 10:23:04", "sysTime1": "20190419102304...

2019-04-19 12:19:46 2422

SampleCode.zip

微信官方消息推送SDK,在 PHP7.2 测试通过,可直接使用。

2019-09-14

Unlocker-1.9.2-x64最新版文件被占用解锁删除

Unlocker是一个免费的右键扩充工具,使用者在安装后,它便能整合于鼠标右键的操作当中,当使用者发现有某个文件或目录无法删除时,只要按下鼠标右键中的“Unlocker”,那么程序马上就会显示出是哪一些程序占用了该目录或文件,接着只要按下弹出的窗口中的“Unlock”就能够为你的文件解套。 Unlocker 不同于其它解锁软件的部分在于它并非强制关闭那些占用文件的程序,而是以解除文件与程序关连性的方式来解锁,因此不会像其它解锁程序一样因为强制关闭程序而造成使用者可能的数据遗失。

2019-04-19

SkinSe Foe VB6

skin++官方皮肤演示,很漂亮。http://huanxue.sinaapp.com

2011-07-27

主页修复工具--修复恶意篡改的首页-修复主页

主页修复工具能帮您修复被恶意修改的首页。 小巧实用、绿色工具。

2010-02-28

unlock解锁工具

Unlocker是一个免费的右键扩充工具,使用者在安装后,它便能整合于鼠标右键的操作当中,当使用者发现有某个文件或目录无法删除时,只要按下鼠标右键中的“Unlocker”,那么程序马上就会显示出是哪一些程序占用了该目录或文件,接着只要按下弹出的窗口中的“Unlock”就能够为你的文件解套。 Unlocker 不同于其它解锁软件的部分在于它并非强制关闭那些占用文件的程序,而是以解除文件与程序关连性的方式来解锁,因此不会像其它解锁程序一样因为强制关闭程序而造成使用者可能的数据遗失。

2009-03-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除