李维山的博客

PHP是世界上最好的语言!

  • 博客(203)
  • 资源 (4)
  • 收藏
  • 关注

原创 使用Logstash同步Mysql到ElasticSearch

【相关文章:Linux下安装ElasticSearch7.4】操作系统:CentOS7.2ElasticSearch版本:7.4.2Logstash版本:7.4.2下载地址:https://www.elastic.co/cn/downloads/logstash或https://elasticsearch.cn/download/下载后放到服务器某个目录下,解压:ta...

2019-11-06 19:30:02 1049 2

原创 ThinkPHP5.0结合Swoole开发WebSocket在线聊天

ThinkPHP使用Swoole需要安装 think-swoole Composer包,前提系统已经安装好了Swoole PECL 拓展(相关文章:Linux下源码包安装使用Swoole扩展)在tp5的项目根目录下执行composer命令安装think-swoole:composer require topthink/think-swoole安装成功:话不多说,直接上代码...

2018-11-23 23:46:43 8595 21

原创 ThinkPHP5.0集成支付宝扫码支付(PC端)

相关文章:ThinkPHP5.0集成微信扫码支付(PC端) 搞完了微信搞支付宝~~~还是先下载支付宝电脑网站支付demo,目录结构如下:把demo文件夹放到tp5的 vendor 文件夹下面,重命名为alipay:配置 config.php 的支付参数,去蚂蚁金服商家中心找,或者使用沙箱测试环境。注意签名方式要和私钥、公钥的签名方式相同。<?php$conf...

2018-11-22 10:22:51 3483 1

原创 ThinkPHP5.0集成微信扫码支付(PC端)

前两天发现微信官方测试扫码支付的链接崩了,公益404了,http://paysdk.weixin.qq.com,微信也不说一声,这让使用这个链接生成二维码的用户情何以堪......只好下载官方的demo放到自己网站上生成二维码了。趁热打铁,把微信支付demo集成到tp5里面,实现微信扫码支付~~~下载demo,目录结构如下:把 lib 文件夹拿出来,放到tp5根目录vendor...

2018-11-21 18:43:09 5935 31

原创 【Java】SpringBoot接入阿里云日志服务Logback Appender

1、application.yml中日志文件配置如下:logging: config: classpath:logback-spring.xml2、logback-spring.xml中日志输出配置如下:<configuration scan="true" scanPeriod="60 seconds"> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"&

2021-02-26 11:06:08 2

原创 MySQL索引优化建议

对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 尽量使用唯一索引,对于有唯一值的列索引效果最好 索引长度尽量短,这样做有几个好处,首先短的索引可以节省索引空间,也会使查找的速度得到提升。 太长的列,可以选择只建立部分索引 更新非常频繁的数据不适宜建索引 利用最左前缀原则,比如建立了一个联合索引(a,b,c),那么其实我们可利用的索引就有(a), (a,b), (a,b,c) 不要过多创建..

2021-02-25 15:37:43 3

原创 图文详解MySQL的共享锁和排它锁

共享锁又称为读锁,简称S锁。顾名思义,共享锁就是多个事务对于同一数据可以共享一把锁,都能访问到数据,但是只能读不能修改加共享锁可以使用select ... lock in share mode语句我们有如下测试数据:现在我们对id=1的数据行共享锁查询,这里会使用begin开启事务,而不关闭事务,这样做是用来测试,因为提交事务或回滚事务就会释放锁。共享锁sql分析实例打开一个查询窗口BEGIN;SELECT * FROM area WHERE id=1 LOCK IN S

2021-02-25 15:29:04 9

原创 Mysql存储引擎MYISAM和INNODB选择

innodb与myisam的异同点myIsam和innodb底层都是采用B+Tree这种数据结构来实现 B-Tree索引 InnoDB支持事务,MyISAM不支持 InnoDB是聚集索引,数据文件是和索引绑在一起的,必须要有主键,通过主键索引效率很高 MyISAM是非聚集索引,数据文件和索引文件是分离的,索引保存的是数据文件的指针 InnoDB不保存表的具体行数,执行select count(*) from table时需要全表扫描。而MyISAM用一个变量保存了整个表的行数,执行上述语句时只需

2021-02-25 15:25:04 3

原创 【Java】logback中root配置为INFO,为何logger配置为DEBUG级别也能打印出日志

配置如下,root配置为INFO,logger中配置的DEBUG也能打印出来:<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> ...</appender><appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"> ...</appender&gt

2021-02-23 10:54:53 24

原创 IOS接入openSDK 服务器端Universal Links配置

1、创建apple-app-site-association 文件,内容如下:{ "applinks": { "apps": [], "details": [ { "appID": "Y3JAJ4DU63.com.lws.test", "paths": [ "/*" ] } ] }} 【参数说明】 ...

2021-02-22 11:32:36 11

原创 PHP获取远程图片宽、高

使用函数 getimagesize:<?php $remote_png_url = 'http://xxx.png'; $img_data = getimagesize($remote_png_url); print_r($img_data);打印结果如下:Array( [0] => 290 [1] => 69 [2] => 3 [3] => width="290" height="69" [b

2021-02-20 17:59:02 11

原创 Hyperf-高性能PHP协程框架实战(五) 请求与响应

1、获取请求参数 通过use Hyperf\HttpServer\Contract\RequestInterface;获得对应的请求对象RequestInterface $request 如下为获取一些请求参数的示例:<?phpdeclare(strict_types=1);namespace App\Controller;use Hyperf\HttpServer\Contract\RequestInterface;use Hyperf\H...

2021-01-23 16:20:27 64 1

原创 Hyperf-高性能PHP协程框架实战(四) 中间件的使用

场景:开发中可能会遇到跨域问题,我们希望每一个请求过来,服务端程序都可以设置允许跨域,这时就可以用到中间件,来拦截请求并做出一些配置。1、生成一个中间件 示例:使用命令生成一个设置跨域的中间件 CorsMiddlewarephp ./bin/hyperf.php gen:middleware Http/CorsMiddleware 此时会自动生成中间件文件: 修改代码,实现设置跨域功能:<?phpdeclare(...

2021-01-23 11:49:52 46

原创 Hyperf-高性能PHP协程框架实战(三) 依赖自动注入

目录1、构造函数注入2、@Inject 注解注入 场景:如下有一个用户服务类UserService,类中存在getInfoById()方法,传递用户id获取用户信息。现在要再IndexController中调用该方法。可以使用以下自动注入依赖的方式,避免用new手动实例化。<?phpdeclare(strict_types=1);namespace App\Service;class UserService{ public function getIn...

2021-01-23 04:45:06 35

原创 Hyperf-高性能PHP协程框架实战(二) 定义访问路由

1、配置文件定义路由可以在 /config/routes.php 路由配置文件中定义路由,配置如下:<?phpdeclare(strict_types=1);use Hyperf\HttpServer\Router\Router;Router::addRoute(['GET', 'POST', 'HEAD'], '/', 'App\Controller\IndexController@index');Router::get('/favicon.ico', function ()

2021-01-23 00:00:18 39

原创 Hyperf-高性能PHP协程框架实战(一) 安装和启动

【本文基于Hyperf2.1官方文档:https://hyperf.wiki/2.1/#/,在此鸣谢Hyperf作者及开源项目贡献者。】系统环境:Linux CentOS7.6PHP版本:7.3.20Swoole版本:4.5.91、Composer安装Hyperf#移到项目目录cd /www/wwwroot#composer安装composer create-project hyperf/hyperf-skeleton根据提示选择自己需要的依赖:(Com..

2021-01-22 23:01:42 151

原创 Web网站性能优化的一些建议

1、浏览器访问优化1.1 减少http请求 主要手段是合并CSS、合并JS、合并图片,可以将浏览器一次访问的所需的JS、CSS合并成一个文件,多图可以合并为一张,可通过CSS偏移响应设置不同图片对应的超链接。1.2 浏览器缓存静态资源 可以将CSS、JS、图标等静态资源缓存到浏览器,通过设置http头中 Cache-Control 和 Expires 属性,需要更新时可以把原文件重命名引用。1.3 开启压缩 HTML、CSS、JS文件启用gzip压缩,通...

2021-01-17 13:36:28 40

原创 【Java】获取星座匹配度

星座匹配度规则表如下:获取匹配度代码如下: /** 星座匹配分值 */ private static Map<String, String> constellationScoreMap = new HashMap<>(); /** * 初始化星座匹配分数 * 1水瓶座 2双鱼座 3白羊座 4金牛座 5双子座 6巨蟹座 7狮子座 8处女座 9天秤座 10天蝎座 11射手座 12摩羯座 * 每个key以两星座编号用-分隔

2020-12-29 18:15:06 523 10

转载 为啥这么多公司用 ZooKeeper?它到底解决了什么问题?

ZooKeeper 很流行,有个基本的疑问: ZooKeeper 是用来做什么的? 之前没有ZK,为什么会诞生 ZK? OK,解答一下上面的疑问:(下面是凭直觉说的) ZooKeeper 是用于简化分布式应用开发的,对开发者屏蔽一些分布式应用开发过程中的底层细节 ZooKeeper 对外暴露简单的 API,用于支持分布式应用开发 ZooKeeper 在提供上述功能的同时,其还是一个 高性能、高可用、高可靠的分布式集群 上面说这么多,总结一下,ZK 能解决分布

2020-12-29 16:12:45 95

转载 1.3 万亿条数据查询,如何做到毫秒级响应?

知乎,在古典中文中意为“你知道吗?”,它是中国的 Quora,一个问答网站,其中各种问题由用户社区创建,回答,编辑和组织。作为中国最大的知识共享平台,我们目前拥有 2.2 亿注册用户,3000 万个问题,网站答案超过 1.3 亿。随着用户群的增长,我们的应用程序的数据大小无法实现。我们的 Moneta 应用程序中存储了大约 1.3 万亿行数据(存储用户已经阅读过的帖子)。由于每月累计产生大约 1000亿行数据且不断增长,这一数字将在两年内达到 3 万亿。在保持良好用户体验的同...

2020-12-29 16:11:14 66

转载 腾讯,干掉 Redis 项目,正式开源、太牛x啦!

项目简介Tendis是腾讯互娱CROS DBA团队 & 腾讯云数据库团队自主设计和研发的分布式高性能KV存储数据库,兼容Redis核心数据结构与接口,可提供大容量、低成本、强持久化的数据库能力,适用于兼容Redis协议、需要大容量且较高访问性能的温冷数据存储场景。Tendis目前已经被应用到腾讯内、外部大型项目中。集群架构Tendis使用去中心化集群架构,每个数据节点都拥有全部的路由信息,用户可以访问集群中的任意节点,并且通过redis的move协议,最终路由到正确的节点。每

2020-12-29 16:09:54 49

原创 【Java】微信企业付款到零钱 工具类封装

WxService.java:package com.lws.test.core.wechat;import com.ygxk.social.core.utils.MD5Util;import com.ygxk.social.core.utils.StringUtil;import com.ygxk.social.core.wechat.WxKeyConstant;import lombok.extern.slf4j.Slf4j;import org.apache.http.client.

2020-12-28 18:18:22 596 4

原创 【Java】获取当天凌晨10位时间戳

如下://当天凌晨时间戳long nowTime = System.currentTimeMillis();long dailyStartTime = nowTime - (nowTime + TimeZone.getDefault().getRawOffset()) % (1000 * 3600 * 24);Integer dayStartTime = Integer.parseInt(String.valueOf(dailyStartTime).substring(0, 10));..

2020-12-28 18:09:58 64

原创 【Java】Mybatis中使用sum对字段求和

如下sql,为计算用户收益总和: <select id="getTotalIncome" resultType="com.xxx.social.modules.user.entity.UserIncomeEntity"> select sum(income) as totalIncome from income_log where uid = #{uid,jdbcType=BIGINT} </select>其中返回的求和字段类型需要设置为 BigDecimal:.

2020-12-28 18:05:40 198

原创 【Java】FastJson如何返回不带转义字符的json字符串

一开始使用 JSONObject.toJSONString() 把json对象转为json字符串,但是在进行kafka进行消费的时候,发现接收到的json总是带转义字符,处理起来比较麻烦于是使用如下方法,先转为Object对象,再转为字符串:JSONObject.toJSON(jsonObject).toString();...

2020-12-28 17:57:39 222

原创 Kafka消费者启动报错: Not authorized to access group

原因可能为使用了阿里云的Kafka服务,消费组不存在,需要创建,参考文档:是否支持Consumer Group自动创建?

2020-12-28 16:31:04 212

原创 【浏览器报错解决】The ‘Access-Control-Allow-Origin‘ header contains multiple values ‘null, *‘, but only one i

原因为nginx配置及接口程序中,均设置了【Access-Control-Allow-Origin:*】引起的,注释二者其一即可。

2020-12-28 13:35:09 61

原创 Redis报错:(error) NOAUTH Authentication required

需要验证密码,解决如下:redis-cli -h 127.0.0.1 -p 6379auth xxxxxxxx为你的redis密码。

2020-12-14 15:55:30 40

原创 【Java】Mybatis实现模糊查询

例:如下为模糊查询user表昵称字段: <select id="selectUserByKeyword" resultType="com.ygxk.lws.modules.user.entity.UserEntity"> select * from user where nickName LIKE CONCAT('%',#{keyword},'%') </select>

2020-12-10 19:53:29 59

原创 【Java】Mybatis实现in查询

例:如下为in查询user表,uidList如 [1,2,3] <select id="selectUserInUid" resultType="com.ygxk.lws.modules.user.entity.UserEntity"> select * from user where uid in <foreach collection="uidList" item="uidList" index="index" open="(" close=")" se

2020-12-10 19:50:24 80

原创 【Java】Mybatis插入数据获取主键id返回值

例:如下为插入用户关注记录,获取主键 fid:<insert id="insertUserFollow" parameterType="com.ygxk.social.modules.user.entity.UserFollowEntity" useGeneratedKeys="true" keyProperty="fid" keyColumn="fid"> insert into user_follow <trim prefix="(" suffix=")" suf

2020-12-10 19:33:44 73

原创 【Java】shuffle随机打乱数组List

引入:import java.util.Collections;实现:Collections.shuffle(list);

2020-12-10 19:26:06 661 4

原创 【Java】SpringBoot接入阿里云短信服务

1、引入maven依赖:<dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>4.0.6</version> <!-- 注:如提示报错,先升级基础包版,无法解决可联系技术支持 --></dependency><dependency&

2020-12-10 19:11:29 75

原创 【Java】SpringBoot配置多环境、运行时选择指定配置文件

如下图,可以创建多个环境的配置文件:application.yml 中定义当前使用环境如下:spring: application: name: xxx-server profiles: active: dev #当前环境 async: executor: pool: core-size: 10 max-size: 60 keep-alive-seconds: 60 queue-ca

2020-12-10 18:47:15 1774 11

原创 【Java】微信企业付款报错:java.io.IOException: toDerInputStream rejects tag type 45

原因是证书格式问题,之前用PHP做一直用.pem格式的证书,看了官方文档才知道,其他语言大多用.p12格式的证书: 更换为.p12格式证书,不报错了。

2020-12-10 10:51:28 337

原创 如何解决IOS系统https访问H5页面速度非常慢

测试发现用苹果手机访问h5,打开速度非常慢,于是让前后端各种优化,缓存该加的都加上了,结果还是慢,安卓秒开,肯定不是程序的原因了,经过调试验证,解决方案如下:1、开启OCSPstapling,参考文章:【Nginx实战】Nginx开启OCSP stapling2、如果使用的SSL证书为Let’s Encrypt颁发的,更换为其他机构颁发的证书。...

2020-09-28 14:54:23 1237

原创 ThinkPHP5.0实现程序报错发送邮件预警

1、监听日志写入行为 在 \thinkphp\library\think\Log.php 的 save 方法结束前监听钩子行为 log_write_done:Hook::listen('log_write_done', $log);2、定义行为扩展 在\application\tags.php 中定义行为扩展 log_write_done:<?php// 应用行为扩展定义文件return [ // 应用初始化 'app_init'...

2020-09-01 13:40:33 156

原创 【Nginx实战】Nginx反向代理配置

1、什么是反向代理 反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。 反向代理与正向代理(如VPN)的区别是,正向代理代理的是客户端,我们需要在客户端进行一些代理的设置。而反向代理代理的是服务器,作为客户端的我们是无法感知到服务器的真实存在的。 ...

2020-08-28 17:34:08 168

原创 【Nginx实战】Nginx工作原理及优化配置

1、Nginx进程模型 Nginx进程分为 master 进程 和 worker 进程,执行ps -ef |grep nginx 命令,可以看到如下: 一个mster进程下有多个 worker进程,当nginx收到一个请求,master会向worker发出信号,然后通过worker进程去处理。 每个worker进程都是被master进程管控,一个用户请求只能由一个woker进程去处理,而且多个worker进程之间会有竞争,每个woker进程下是多路复用。...

2020-08-28 16:20:05 100 1

原创 【Nginx实战】rewrite规则详解

Nginx的rewrite功能和apache一样,主要是实现URL地址的重定向。Nginx的rewrite功能是由PCRE软件支持,rewrite模块即ngx_http_rewrite_module模块。rewrite机制从某种意义上可以说为了美观或者搜索引起的友好搜索,提高排名等1、rewrite语法规则rewrite regex replacement [flag]rewrite:rewrite重写的关键字不可省略regex:这里写的是正则表达式replacement...

2020-08-28 15:15:21 149

area_list.sql

全国行政区域划分数据表,sql文件,高德地图2020年12月最新版(包含省、市、区县,及上下级所属关系)

2020-12-10

简单实用的js倒计时 时分秒倒计时

js时分秒倒计时,某教育网站线上使用的同款js倒计时。

2018-07-05

最简单、用的网站最多的js时钟

js时钟,一行js代码显示当前时钟,格式如:2018/7/5 下午7:40:35 星期四,很多网站都在用,放在头部导航。

2018-07-05

php必备函数 常用函数及其测试结果

php必备函数,按照数组函数、字符串函数、数字函数分类,每一个函数都有测试结果

2018-07-05

空空如也

空空如也

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

TA关注的人 TA的粉丝

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