- 博客(89)
- 资源 (4)
- 收藏
- 关注
原创 php对mysql pdo多数据库连接类简易封装
<?php/** * pdo处理mysql数据 * Class Mysql */class MysqlConnection{ const PARAM_PREFIX = ':qp'; private $pdo; private $dsn; private function __construct($dbConfig) { try{ $host = $dbConfig['host']; .
2021-11-02 22:49:54
297
原创 redis脚本命令执行(redis.call)
1、redis-cli命令行中执行:# 调用redis命令设置缓存# 不传参数eval "return redis.call('set', 'name1', 'Tom')" 0# 传入1个值参数eval "return redis.call('set', 'name2', ARGV[1])" 0 "Tom"# 传入1个键名参数和1个值参数eval "return redis.call('set', KEYS[1], ARGV[1])" 1 "name3" "Tom"2、linux命
2021-07-26 21:03:16
11008
原创 redis缓存穿透、击穿和雪崩三大问题
1、缓存穿透:一般指缓存和数据库都查找不到指定数据,这种查询操作无意义,同时增加了响应耗时和数据库的查询压力常见解决方案: a、缓存中设置key值为null,缺点是随着量级增长占用的内存空间越来越大 b、接口层添加参数校验,规避一些无效参数查询,缺点是不够灵活、不满足复杂场景 c、使用布隆过滤器,维护一个有效key的map,如果检测出map中存在,则继续查询2、缓存击穿:一般指缓存中查不到而数据库表存在该数据,某些热点数据过期失效等会造成数据...
2021-07-23 20:43:42
212
原创 MySQL慢查询
一、查看慢查询信息1. 慢查询时长和日志的设置,mysql慢查询的sql语句执行时长默认值是10s 查看当前慢查询设定的时长: show variables like 'long_query_time'; 设置会话或全局级别的慢查询时间为2s,默认为会话级别的设置: set[session | global] long_query_time=2;...
2021-07-23 12:34:37
1200
1
原创 MySQL主主复制
一、编辑mysql配置文件设置相关参数和配置授权用户主库1:(192.168.16.3:3306) 编辑配置文件,然后重启服务[mysqld]log_error=/var/log/mysql/error.loglog-bin=mysql-bin # 开机bin-logserver-id=1 auto_increment_increment=2 # 自增键步长(根据主主数量配置,防止复制时出现主键冲突)auto_...
2021-07-13 12:00:17
301
1
原创 redis主从复制
提到主从,当然就要求2台或2台以上redis实例了,这里按1主1从来配置,使用docker启动2个redis实例:redis-master和redis-slave先修改redis从实例配置文件,添加一行代码masterauth password,这里的password需要配置成主实例的授权密码;然后进入从实例命令行(redis-cli)配置主从授权,如果设置了密码请先输入授权访问密码,然后执行命令:replicaof host port,完成主从配置;...
2021-07-12 15:54:30
132
原创 php对mysql pdo操作的封装(单例模式)
需要先安装pdo_mysql扩展<?php/** * pdo处理mysql数据 * Class Mysql */class MysqlBuilder{ const PARAM_PREFIX = ':qp'; private static $instance; private $pdo; private $dsn; private function __construct($dbConfig) { try{
2021-07-08 13:41:45
525
原创 php实现IoC容器
控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。...
2021-07-08 12:38:27
562
原创 shell文件的引入问题探讨
source命令是从 C shell 而来,是bash shell的内置命令,点命令是从Bourne shell而来,是source的别名。在使用效果上,点命令等同于source命令。source和点命令在引入其它shell文件时,会将该shell脚本文件中定义的变量和函数也一并引入到当前入口脚本环境中,相当于合并shell文件执行,外部shell脚本执行的结果也会反应到当前入口脚本中;而路径引入方式不同,会开启子shell来运行外部脚本,执行的结果也不会反映到当前入口脚本中。 ...
2021-07-07 18:55:53
186
原创 shell自定义快捷命令简化操作
例如操作supervisor时,经常需要启动停止和查看任务状态,对于其命令supervisorctl可能有的人会觉得过长,这时我们通过自定义快捷命令映射来解决这个问题方式一:使用别名,编辑shell配置文件, vim ~/.bashrcalias rm='rm -i'alias cp='cp -i'alias mv='mv -i'#添加自定义命令alias supv='/usr/bin/supervisorctl'# Source global definitionsif [ -f
2021-07-07 18:30:47
693
原创 python 3.8版本源码编译安装
安装脚本(centos环境):!#!/usr/bin/env bashyum install -y wgetmkdir -p /ws/src && cd $_# 安装相关依赖yum install -y zlib-devel bzip2-devel ncurses-devel readline-devel openssl-devel openssl-static xz lzma xz-devel sqlite-devel gdbm-devel libffi-devel t
2021-07-05 18:27:35
2259
原创 docker安装与卸载(centos7环境)
1.卸载docker# 查找已安装的docker包,然后逐个卸载# yum list installed | grep docker# 卸载dockersudo yum remove -y containerd.io.x86_64 sudo yum remove -y docker-ce.x86_64sudo yum remove -y docker-ce-cli.x86_64 sudo yum remove docker \ docker-client \ docke
2021-07-05 14:17:23
180
原创 vscode配置代码片段,快捷引用
1、打开vscode找到 首选项 -> 用户片段 -> 检索并打开你需要定义的编程语言json配置文件,本示例配置python代码片段(pycharm配置File and Code Templates即可,更便捷)2. 编辑python.json,添加一段代码片段,如下例,其中HEADER是片段名称(自定义即可),片段结构中的prefix、body和description是固定的三个参数: prefix 定义代码前缀提示(当在python文件中输入!h时即可提示此段代码可选择),bo
2021-07-05 13:29:56
971
原创 python web服务器部署
python自带的http服务器通常仅做本地测试部署使用,生产环境下更多的还是使用gunicornu或uWSGI等 WSGI(Web Server Gateway Interface:Web 服务网关接口,WSGI 是主要的用于应用程序和Web服务器通信的Python标准,但是它只支持同步代码,异步可查阅ASGI相关资料)http服务器,然后可使用nginx做反向代理。1.安装gunicorn,Gunicorn(Green Unicorn)是一个 类UNIX 下的 WSGI HTTP 服务器p..
2021-07-05 11:59:47
1148
原创 pymysql的应用
1.安装pymysql扩展pip install pymysql2.pymysql的基本应用#!/usr/bin/env python3# -*- coding: UTF-8 -*-import pymysqlclass MysqlHelper(object): db_conn: pymysql.connections.Connection = None db_cursor: pymysql.connections.Cursor = None de
2021-07-05 11:33:20
93
原创 git使用同一个rsa密钥支持github和gitee授权访问
先在本地生成用于git远程仓库授权的rsa密钥,然后分别在不同的远程仓库端(如github、gitee等)添加此rsa公钥,完成上述两步之后,最后在本地编辑git配置文件来实现git操作# 使用ssh-keygen在本地生成rsa密钥ssh-keygen -m PEM -t rsa -f id_rsa_tom -b 4096 -C "tom@test.com"# # 将rsa公钥文本依次复制到不同的远程仓库的SSH公钥配置项中。注意,同一个代码托管平台只能添加一次SSH公钥,如果你在github
2021-06-24 14:43:48
927
原创 linux服务器设置密钥登录
先在本地电脑上生成rsa密钥(可通过安装git来支持),然后将公钥复制到远程服务器指定用户家目录下的.ssh/authorized_keys文件中,完成以上两部操作后,即可在本地通过密钥验证的模式访问远程服务器了# 本地生成rsa密钥(自定义命名id_rsa_tom,本地测试服务器ip:92.168.1.201)ssh-keygen -m PEM -t rsa -f id_rsa_tom -b 4096 -C "tom@test.com"# 复制公钥到服务器指定用户下的.ssh/authorize
2021-06-24 14:05:34
417
原创 IP地址尾部/8(16|24|32)的解读
ip地址后面跟着的/8(/16、/24、/32)表示掩码的位数A类IP地址的默认子网掩码为255.0.0.0(由于255是二进制数 11111111(8位1),所以缩写成/8,表示网络号占8位);B类IP地址的默认子网掩码为255.255.0.0(11111111 11111111 => /16);C类IP地址的默认子网掩码为255.255.255.0(11111111 11111111 11111111 => /24)。同理: /30就表示子网掩码是255.255.255.25
2021-06-24 12:02:48
20694
原创 对原码、反码和补码的理解
1、原码:(此处数值示例使用1个字节表示) 数值3的原码为:0000 0011 数值-3的原码为:1000 0011注解:原码使用字节的最高位表示符号值:0代表正数,1代表负数,剩下的表示该数的绝对值二进制数。如果在此基本上进行加法运算,则3 + (-3) =>0000 0011 + 1000 0011 = 1000 0110=> -6,实际结果并不符合逻辑,所以在计算机上使用原码表示法有局限性2、反码: 数值3的反码为:0000 0011 数值-3的反...
2021-06-24 11:38:09
3035
原创 git本地项目配置多远程仓库
1.进入项目根目录cd /www/repo2.如果没有初始化则请输入命令完成初始化git init3.如果已配置过git远程仓库,请移除git remote rm origin4.依次添加多个远程仓库地址git remote add github git@github.com:org/repo.git git remote add gitee git@gitee.com:org/repo.git5.配置当前项目的用户名和邮箱git config user.name Tom
2021-06-18 10:09:45
274
原创 python使用国内镜像安装模块
国内优秀的镜像源:1.阿里云http://mirrors.aliyun.com/pypi/simple/ 2.中国科技大学https://pypi.mirrors.ustc.edu.cn/simple/ 3.豆瓣 (douban)http://pypi.douban.com/simple/ 4.清华大学https://pypi.tuna.tsinghua.edu.cn/simple/ 5.中国科学技术大学http://pypi.mirrors.ustc.edu.cn/simple/...
2021-06-17 18:36:18
644
原创 centos更新内网ip到hosts主机名映射
本地web开发过程中,经常需要配置虚拟主机名(域名)进行测试,如hosts配置自定义域名test.dev映射到本机127.0.0.1:::1 localhost localhost.localdomain localhost6 localhost6.localdomain6127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain41
2021-06-16 18:46:56
568
原创 centos修改ssh远程端口和主机名
1.修改ssh远程端口# 编辑ssh配置文件 /etc/ssh/sshd_configvim /etc/ssh/sshd_config# 修改 端口Port值,如2022Port 2022#重启ssh服务生效systemctl restart sshd尝试ssh远程连接时,修改端口为你定义的值录入账密即可访问2.修改主机名# 编辑配置文件vim /etc/hostname# 修改当前默认主机名,如tom-01tom-01# 执行命令使其生效hostname $(.
2021-06-16 17:37:39
394
原创 php swoole构建webSocket连接的简单实例
1.客户端:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>webSocket</title></head><body>&
2018-09-20 14:51:45
3052
原创 php swoole创建tcp、udp和http连接的简单实例
1、swoole的特性:swoole具有异步、并行和高性能等特点,是由纯c语言编写,php以扩展的形式安装使用2、swoole的使用:(1).异步多线程服务器及客户端;(2).异步mysql、redis、数据库连接池和任务队列等;(3).http、websocket-服务器、客户端;(4).异步文件读写;(5).swoole2.0支持协程3、swoole的环境要求:linux、php...
2018-09-20 12:05:30
1688
原创 php curl发送post请求爬取webService接口数据简单实例
header('Content-Type: text/html;charset=utf-8');/** * 使用curl发送post请求 * @param $url * @param string $data * @return bool|mixed */function sendCurlPost($url, $data = ''){ //初始化,创建一个cURL资源 ...
2018-09-19 15:09:56
2391
原创 php 使用fsockopen函数发送URL请求
/** * 使用fsockopen发送URL请求 * @param $url * @param $method: GET、POST等 * @param array $params * @param array $header * @param int $timeout * @return array|bool */function sendHttpRequest($url, $...
2018-09-19 14:30:59
3200
原创 php 对is_writable函数的补充
if (!function_exists('is_really_writable')){ /** * PHP的is_writable()函数存在Bug,(1、Windows下,当文件为只读时,函数才返回 * false,返回true时,文件不一定可写;2、在unix中,php.ini开启safe_mode时, * is_writable不可用)无法准确判断一...
2018-09-19 14:19:09
692
原创 php 斐波那契数列
//斐波那契数列/** * n=1,f(1)=1; * n=2,f(2)=1; * n=3,f(3)=2; * n=4,f(4)=3; * n=5,f(5)=5; * ... * n=n,f(n)=f(n-2)+f(n-1) * *//** * 递归实现 * @param $n * @return bool|int */function fibonacciSeq...
2018-09-15 21:39:05
301
原创 linux vi命令
终端编辑工具:vi/vim、emacs等,vim是vi的扩展 安装vim:yum install -y vim*使用格式:vim filename工作模式:1.正常模式(1)、若文件存在则打开;否则创建,若不做修改则不会创建空文件(2)、主要用来浏览或修改文本内容(3)、使用vim打开文件的默认模式,任意模式下按esc即可进入该模式2.编辑模式,也叫插入模式...
2018-08-12 21:08:03
3876
原创 MySQL 创建用户与授权
1.创建mysql用户CREATE USER 'username'@'host' IDENTIFIED BY 'password'; //'username':登录用户名 'host':主机名 password:登录密码eg:CREATE USER 'root'@'127.0.0.1' IDENTIFIED BY '123456'; // host='%'任意主机,通配符
2016-12-08 10:47:10
512
原创 php 安全处理多线程同时写操作同一文件
<?php$file_name = 'hello.txt';if(!is_writable($file_name)){ die("此文件无写权限或不存在!");}$date = "写点什么东西zzzzzz";// 1、 file_get_contents()方法写入文本信息// file_put_contents($file_name,$date); //清空文件内容重新写入信息/
2016-07-23 20:35:04
2396
原创 php 去除字符串末尾字符
// preg_match() 执行一个正则表达式匹配//手机号验证$mobile = 15712312312;$preg_mobile = "/^(86)?0?1\d{10}$/";echo preg_match($preg_mobile,$mobile,$matches),''; //座机号码$preg_tel = "/^\d{3}-\d{8}$|^\d{4}-\d{7}$/"
2016-07-23 20:16:30
8631
原创 php 多维数组的常用逻辑处理函数
<?php$arr = array(['a','b','c'],['d','e','f'],['x','z','y']);print_r(recursive_array($arr));//Array ( [0] => Array ( [0] => a [1] => b [2] => c ) [1] => Array ( [0] => d [1] => e [2] => f ) [2] =
2016-07-23 15:25:35
1588
转载 网络协议
php.ini设置file_uploads = On 文件上传功能开启upload_tmp_dir = "d:/wamp/tmp" 上传文件临时存放目录post_max_size = 3M post方式提交数据的最大字节长度upload_max_filesize = 64M 上传文件的最大字节长度 为什么不一样,因为使用网络协议传送数据的方式不一样,post限于h
2016-07-23 09:37:49
1334
原创 php 字符串长度的解释
在php中,函数strlen()返回字符串的长度,实际上是计算得到字符串所占的字节长度,在不同的编码下,字符串所占的字节长度是不同的。列举几个常用的字符编码占用字节情况:ASCII码:一个ASCII码就是一个字节UTF8编码:一个英文字符占用一个字节,一个中文(含繁体)占用三个字节Unicode编码:一个英文字符占用两个字节,一个中文(含繁体)占用两个字节GBK和GBK2312
2016-07-22 00:27:11
2551
原创 jQuery 事件 - ready() 方法
允许使用以下三种语法:语法 1$(document).ready(function(){ //DO})语法 2$().ready(function(){ //DO})语法 3$(function(){ //DO}提示:ready() 函数不应与 一起使用。
2016-07-21 10:13:10
351
原创 关于CSS的优先级,CSS优先级计算
原则一: 继承不如指定原则二: #id > .class > 标签选择符原则三:越具体越强大原则四:标签#id >#id ; 标签.class > .classCSS优先级权重计算法CSS优先级包含四个级别(标签内选择符,ID选择符,Class选择符,元素选择符)以及各级别出现的次数!根据这四个级别出现的次数计算得到CSS的优先级。CSS
2016-07-21 10:09:45
858
数据恢复高级技术(汪中夏).pdf
2018-09-23
HTTP权威指南.pdf
2018-09-23
《J2EE开发全程实录》.(杨中科).[PDF].&ckook;.pdf
2018-09-20
安卓开发技术.pdf
2018-09-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人