Author: admin

laravel-admin安装使用

laravel-admin是一个超级棒的PHP后台框架,只用写极其少量的代码,就可以开发后台功能,不用写方法,不用创建与修改模板,开发速度是其它框架的N倍。堪称用最少的时间构建出功能完善的管理后台!!!

安装方法:

一.可参考(https://github.com/w3yyb/laravel-admin-skeleton,使用laravel 6)…

        

谷歌宣布2021版网页排名算法 用户体验将成重要一环

谷歌今日宣布了新的排名算法,旨在根据用户与网页的交互体验感知来评判一个网页的质量。 这意味着,若谷歌认为您的网站给用户带来了糟糕的浏览体验,那网页排名将不再有当前同等的高度。 搜索巨头将本次更新称作“Google Page Experience Update”,不过在 2021 年的某个时候正式生效前,网站管理员仍有足够时间做好调整的准备。

(来自: Google )

谷歌为开发者提供了有关网页体验的详细文档,这些指标旨在了解用户如何看待特定的网页状况,比如能否快速加载、是否针对移动设备有所优化、是否启用了 HTTPS 安全连接、是否含有侵入性的广告、以及加载页面时是否存在跳跃等因素。

以用户为中心的核心要素(Web Vitals)指标,可对页面的各个方面展开评分,比如加载时间的快慢、交互性、以及内容加载时的稳定性。

为便于开发者理解和做好过渡准备,谷歌特地推出了一款自评工具,并且可在昨日发布的 Google Search Console 主控台上调用全新的 Core Web Vitals 核心要素报告。

Search Engine Land 与谷歌搜索生态系统团队产品负责人 Rudy Galfi 进行了交谈,其表示他们的团队没有在讨论每种因素的权重,因为优质内容仍是考评的最主要因素。

换言之,在新的“网页体验指标”评估标准下,优质内容的页面不会被降权、移动版也会使用 AMP 内容体验指标进行评分,只是在与其它竞争对手的 Top Stories 部分较量的时候会略处于下风。

谈谈PHP中的匿名函数与闭包

<?php
//匿名函数,说白了就是“没有名字的函数”,不多说。给一段代码可能更为明白:
//例一,定义匿名函数并调用
$str='world';
$func=function ($str) {
    echo 'hello '.$str;
};
$func($str);// 输出 hello world


//例二,定义匿名函数,用use 引入变量并调用
$str='world';
$func=function () use ($str) {
    echo 'hello '.$str;
};
$func();//输出 hello world


 //例三
//在函数中把匿名函数返回,并且调用它
function getPrintStrFunc()
{
    $func = function ($str) {
        
        

最新PHP中的const和define 定义常量的区别

最新PHP中的const和define 定义常量的区别
常量是一个简单的标识符。在脚本执行期间该值不能改变(除了所谓的魔术常量,他们其实不是常量)。常量大小写敏感(php 7.4*)。通常常量标识符总是大写的。
1. const 通常用于类成员变量的定义。define不可用于类成员变量的定义,可用于全局常量。
2. const是在编译时定义, 不能在函数,循环及if条件中使用; 函数define() 定义的常量是在执行define()函数时定义的,因此可以在函数内、循环内、if语句内等函数能够被调用的任何地方使用define()函数定义常量。
<?php
const FOO='BAR';//有效的valid
define('FOO', 'BAR');// 有效的valid
if (1) {
const FOO='BAR';//无效的invalid
}
if (1) {
define('FOO', 'BAR');// 有效的valid
}

 

 3 .const定义的常量时大小写敏感的,而define可通过第三个参数(为true表示大小写不敏感)来指定大小写是否敏感(php7.4被弃用)。
例如:
<?php
define('FOO', 'BAR', true); //不区分大小写的常量的声明已从php7.4被弃用。现在将其TRUE作为第三个参数传递 
    

PHP实现简单RPC

1.什么是rpc

RPC全称为Remote Procedure Call,翻译过来为“远程过程调用”。目前,主流的平台中都支持各种远程调用技术,以满足分布式系统架构中不同的系统之间的远程通信和相互调用。远程调用的应用场景极其广泛,实现的方式也各式各样。

2.从通信协议的层面

基于HTTP协议的(例如基于文本的SOAP(XML)、Rest(JSON),基于二进制Hessian(Binary))
基于TCP协议的(通常会借助Mina、Netty等高性能网络框架)

3.从不同的开发语言和平台层面

单种语言或平台特定支持的通信技术(例如Java平台的RMI、.NET平台Remoting)
支持跨平台通信的技术(例如HTTP Rest、Thrift等)

4.从调用过程来看

同步通信调用(同步RPC)
异步通信调用(MQ、异步RPC)

5.常见的几种通信方式

远程数据共享(例如:共享远程文件,共享数据库等实现不同系统通信)
消息队列
RPC(远程过程调用)

6.php实现简单的rpc

目录结构

image.png

rpc服务端

<?php
/**
 * User: yuzhao
 * CreateTime: 2018/11/15 下午11:46
 * Description: Rpc服务端
 */
class RpcServer {
    

PHP 生成器入门

https://juejin.im/entry/5b4c2d76f265da0f697029ad

PHP 在 5.5 版本中引入了「生成器(Generator)」特性,不过这个特性并没有引起人们的注意。在官方的 从 PHP 5.4.x 迁移到 PHP 5.5.x 中介绍说它能以一种简单的方式实现迭代器(Iterator)。

生成器实现通过 yield 关键字完成。生成器提供一种简单的方式实现迭代器,几乎无任何额外开销或需要通过实现迭代器接口的类这种复杂方式实现迭代。

文档提供了一个简单的实例演示这个简单的迭代器,请看下面的代码:

function xrange($start, $limit, $step = 1) {
    for ($i = $start; $i <= $limit; $i += $step) {
        yield $i;
    }
}

让我们将它与无迭代器支持的数组进行比较:

复制代码
foreach 
        

模仿laravel,使用反射来实现自动依赖注入

在看laravel源码的时候,在Container.php中有个build的方法,主要就是用了反射来进行实例化
参照它的写法,自己写了一个小例子
这里写的比较简单,就是一个依赖参数,正常应该普通参数也要放进去
类似在person类里的weight,address
public function __construct(Bag bag,weight, $address){}

 

<?php
/*
 * 目的:通过反射,自动找依赖注入的类。
 * 在实例的时候,里面的$bag, $book自动去查找,并且实例化
 * */

class Book{
    public function name(){
        return '语文书';
    }
}

class Bag{
    public $book;
        

jQuery性能优化指南

现在jquery应用的越来越多, 有些同学在享受爽快淋漓coding时就将性能问题忽略了,  比如我.  jquery虽在诸多的js类库中性能表现还算优秀, 但毕竟不是在用原生的javascript开发, 性能问题还是需要引起重视的. 在twitter上发现了<jQuery Performance Rules>这篇文章, 简单的摘译了一下:

  1. 总是从ID选择器开始继承
  2. 在class前使用tag
  3. 将jquery对象缓存起来
  4. 掌握强大的链式操作
  5. 使用子查询
  6. 对直接的DOM操作进行限制
  7. 冒泡
  8. 消除无效查询
  9. 推迟到 $(window).load
  10. 压缩js
  11. 全面掌握jquery库