首页
关于
Search
1
给你10个市场数据调研报告的免费下载网站!以后竞品数据就从这里找!
182 阅读
2
php接口优化 使用curl_multi_init批量请求
144 阅读
3
《从菜鸟到大师之路 ElasticSearch 篇》
107 阅读
4
2024年备考系统架构设计师
104 阅读
5
PHP 文件I/O
92 阅读
php
thinkphp
laravel
工具
开源
mysql
数据结构
总结
思维逻辑
令人感动的创富故事
读书笔记
前端
vue
js
css
书籍
开源之旅
架构
消息队列
docker
教程
代码片段
redis
服务器
nginx
linux
科普
java
c
ElasticSearch
测试
php进阶
php基础
登录
Search
标签搜索
php函数
php语法
性能优化
安全
错误和异常处理
问题
vue
Composer
Session
缓存
框架
Swoole
api
并发
异步
正则表达式
php-fpm
mysql 索引
开发规范
协程
dafenqi
累计撰写
786
篇文章
累计收到
28
条评论
首页
栏目
php
thinkphp
laravel
工具
开源
mysql
数据结构
总结
思维逻辑
令人感动的创富故事
读书笔记
前端
vue
js
css
书籍
开源之旅
架构
消息队列
docker
教程
代码片段
副业
redis
服务器
nginx
linux
科普
java
c
ElasticSearch
测试
php进阶
php基础
页面
关于
搜索到
100
篇与
的结果
2023-11-20
用yum方式安装php最新版
用yum方式安装php最新版采用在线安装的方式,安装php8.0版本,可自由查看版本并安装相关版本。用第三方软件源remi安装,因为对此源对php有非常好的支持。1 安装 epel-release源和 源管理工具yum-utils安装 epel-release源和 源管理工具yum-utilsyum -y install epel-release yum-utils2 安装Remi软件源Remi软件源官方地址: https://rpms.remirepo.net/找到自己的linux版本,我的是Centos8,为linux8,所有安装CentOS8安装:yum -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpmCentOS7安装:yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm3 启用remi源php8.0模块,安装php及扩展注:这里貌似CentOS8要用另一个安装命令dnf启用,我用yum是不行的。CentOS8启动php模块并安装:dnf module list php #查看php可用模块和版本然后我们直接启用remi源里的remi-8.0模块,根据需要选择自己格式的版本,如remi-7.4模块。dnf module enable php:remi-8.0 -y然后直接命令安装默认为php8版本,及其他扩展dnf -y install php php-cli php php-fpm php-mysqlnd php-zip php-devel php-gd php-mbstring php-curl php-xml php-pear php-bcmath php-json php-redisCentOS7启动php模块并安装:yum启动php模块,根据需要选择自己格式的版本,如remi-php74模块,就是php7.4版本。:yum-config-manager --enable remi-php80 #启用remi源的php8.0模块注:如果显示没有这个命令,则需要先安装yum -y install yum-utils 插件。安装php及相关扩展:yum install php php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mbstring php-curl php-xml php-pear php-bcmath php-json php-redis安装成功:php -v 查看版本为php8.0版本
2023年11月20日
60 阅读
0 评论
0 点赞
2023-11-20
Nginx的安装和部署
Nginx的安装和部署Nginx简介Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。优势Nginx 可以在大多数 Unix Linux OS 上编译运行,并有 Windows 移植版。 Nginx 的1.20.0稳定版已经于2021年4月20日发布,一般情况下,对于新建站点,建议使用最新稳定版作为生产版本,已有站点的升级急迫性不高。Nginx 的源代码使用 2-clause BSD-like license。 Nginx 是一个很强大的高性能Web和反向代理服务,它具有很多非常优越的特性:在连接高并发的情况下,Nginx是Apache服务不错的替代品:Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并发连接数的响应。Nginx作为负载均衡服务:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务对外进行服务。Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多。处理静态文件,索引文件以及自动索引,打开文件描述符缓冲。无缓存的反向代理加速,简单的负载均衡和容错。FastCGI,简单的负载均衡和容错。模块化的结构。包括 gzipping, byte ranges, chunked responses,以及 SSI-filter 等 filter。如果由 FastCG或其它代理服务器处理单页中存在的多个 SSI,则这项处理可以并行运行,而不需要相互等待。支持 SSL 和 TLSSNI。Nginx代码完全用C语言从头写成,已经移植到许多体系结构和操作系统,包括:Linux、FreeBSD、Solaris、Mac OS X、AIX以及Microsoft Windows。Nginx有自己的函数库,并且除了zlib、PCRE和OpenSSL之外,标准模块只使用系统C库函数。而且,如果不需要或者考虑到潜在的授权冲突,可以不使用这些第三方库。代理服务器。作为邮件代理服务:Nginx 同时也是一个非常优秀的邮件代理服务(最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm 描述了成功并且美妙的使用经验。Nginx 是一个安装非常的简单、配置文件非常简洁(还能够支持perl语法)、Bug非常少的服务。Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够不间断服务的情况下进行软件版本的升级。使用下载在官网下载最新稳定版从源代码构建如果需要某些特殊功能,但软件包和端口不提供这些功能,则也可以从源文件编译nginx。虽然更灵活,但是这种方法对于初学者来说可能很复杂。有关更多信息,请参见从源代码构建nginx。安装下载完成后解压到不含中文(切记!)的目录启动两种方法:直接双击该目录下的"nginx.exe",即可启动nginx服务器;命令行进入该文件夹,执行start nginx命令,也会启动nginx服务器。 使用 Win+R打开运行,输入cmd,然后按Enter 首先进入nigix所在的目录,如下图所示:D:cd Environment/nginx-1.20.0 #这是我解压的目录,替换成自己的即可启动:start nginx.exe停止:nginx.exe -s stop重新加载:nginx.exe -s reload使用http://localhost:端口查看那么怎么知道自己的nginx是否启动成功:打开你的管理器,如在进程中看到两个nginx说明启动成功。打开浏览器输入http://localhost,显示以下界面即表示启动成功反代理Tomcat反向代理动态页面首先用Tomcat启动一个JavaWeb项目,Tomcat端口号为8080,响应内容如下 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); resp.setCharacterEncoding("utf-8"); PrintWriter out = resp.getWriter(); Cookie[] cookies = req.getCookies(); if (cookies == null) { out.write("First"); } else { out.write("上次时间是:"); for (int i = 0; i < cookies.length; i++) { if (cookies[i].getName().equals("lastTime")) { long l = Long.parseLong(cookies[i].getValue()); String s = new Date(l).toString(); out.write(s); } } } resp.addCookie(new Cookie("lastTime", System.currentTimeMillis()+"")); } 每次刷新都会动态从Cooki中获取上次时间,启动后浏览器访问http://localhost:8080/c1即可查看效果然后编辑Nginx配置文件,新增一个包upstream tomcatserver {server localhost:8080;}然后编辑server闭包,修改如下内容Listen 80;server_name localhost;location / {proxy_pass http://tomcatserver;}之后启动Nginx,访问localhost/c1即可预览效果则表示正确代理了动态页面Nginx的配置配置文件位于安装目录下的/conf/nginx.conf文件server {listen 80; #监听的端口server_name localhost; #监听的域名 #charset koi8-r; #access_log logs/host.access.log main;location / { #root html; #index index.html index.html;proxy_pass http://127.0.0.1:8081; #转发请求的地址 proxy_connect_timeout 600; proxy_read_timeout 600;}Windows下的常用命令启动服务:start nginx 退出服务:nginx -s quit 强制关闭服务:nginx -s stop 重载服务:nginx -s reload (重载服务配置文件,类似于重启,服务不会中止) 验证配置文件:nginx -t 使用配置文件:nginx -c "配置文件路径" 使用帮助:nginx -hLinux下的安装一、安装编译工具及库文件yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel二、首先要安装 PCREPCRE 作用是让 Nginx 支持 Rewrite 功能。1、下载 PCRE 安装包,下载地址: http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gzcd /usr/local/src/ wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz2、解压安装包:tar zxvf pcre-8.35.tar.gz3、进入安装包目录cd pcre-8.354、编译安装./configure make && make install5、查看pcre版本pcre-config --version安装 Nginx1、下载 Nginx,下载地址:https://nginx.org/en/download.htmlcd /usr/local/src/ wget http://nginx.org/download/nginx-1.20.0.tar.gz2、解压安装包tar zxvf nginx-1.20.0.tar.gz3、进入安装包目录cd nginx-1.20.04、编译安装./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35makemake install到此,nginx安装完成。Nginx 配置nginx.conf说明 #user nobody; worker_processes 1; #工作进程:数目。根据硬件调整,通常等于cpu数量或者2倍cpu数量。 #错误日志存放路径 #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; # nginx进程pid存放路径 events { worker_connections 1024; # 工作进程的最大连接数量 } http { include mime.types; #指定mime类型,由mime.type来定义 default_type application/octet-stream; # 日志格式设置 #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; #用log_format指令设置日志格式后,需要用access_log来指定日志文件存放路径 sendfile on; #指定nginx是否调用sendfile函数来输出文件,对于普通应用,必须设置on。如果用来进行下载等应用磁盘io重负载应用,可设着off,以平衡磁盘与网络io处理速度,降低系统uptime。 #tcp_nopush on; #此选项允许或禁止使用socket的TCP_CORK的选项,此选项仅在sendfile的时候使用 #keepalive_timeout 0; #keepalive超时时间 keepalive_timeout 65; #gzip on; #开启gzip压缩服务 #虚拟主机 server { listen 80; #配置监听端口号 server_name localhost; #配置访问域名,域名可以有多个,用空格隔开 #charset koi8-r; #字符集设置 #access_log logs/host.access.log main; location / { root html; index index.html index.htm; } #错误跳转页 #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。 # root html; #根目录 # fastcgi_pass 127.0.0.1:9000; #请求转向定义的服务器列表 # fastcgi_index index.php; # 如果请求的Fastcgi_index URI是以 / 结束的, 该指令设置的文件会被附加到URI的后面并保存在变量$fastcig_script_name中 # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} # HTTPS server # #server { # listen 443 ssl; #监听端口 # server_name localhost; #域名 # ssl_certificate cert.pem; #证书位置 # ssl_certificate_key cert.key; #私钥位置 # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; #密码加密方式 # ssl_prefer_server_ciphers on; # ssl_prefer_server_ciphers on; # # location / { # root html; # index index.html index.htm; # } #} } 启动nginx服务切换目录到/usr/local/nginx/sbin下面启动nginx命令:./nginx查看nginx服务是否启动成功ps -ef | grep nginx访问站点从浏览器访问我们配置的站点ip:Nginx 其他命令以下包含了 Nginx 常用的几个命令:启动服务:./nginx 退出服务:nginx -s quit 强制关闭服务:nginx -s stop 重载服务:nginx -s reload (重载服务配置文件,类似于重启,但服务不会中止) 验证配置文件:nginx -t 使用配置文件:nginx -c "配置文件路径" 使用帮助:nginx -h
2023年11月20日
37 阅读
0 评论
0 点赞
2023-11-18
虚拟机安装Linux系统
需要下载Linux镜像 Linux镜像下载地址(国内) 网易开源镜像站:http://mirrors.163.com/阿里云官方镜像站:http://mirrors.aliyun.comLinux网站 https://www.linux.org/1.CentOSCentOS官网: https://www.centos.org/.CentOS各个版本下载:https://www.centos.org/.CentOS 版本选择:DVD版:这个是常用版本,就是普通安装版了,推荐大家安装。里面包含大量的常用软件,大部分情况下安装时无需再在线下载,体积为4G左右。Everything版:顾名思义,包含了所有软件组件,当然体积也庞大,高达DVD版的2倍。LiveCD版:就是一个光盘CentOS系统,可通过光盘启动电脑,启动出CentOS系统,也有图形界面,也有终端。也可以安装到计算机,但是有些内容可能还需要再次到网站下载(自动)。Minimal版:精简版本,包含核心组件,体积才600多MB。NetInstall版:顾名思义,网络安装版本,一般不用这个版本。2.UbuntuUbuntu官网:https://ubuntu.com/downloadUbuntu桌面版:https://ubuntu.com/download/desktopUbuntu服务器版:https://ubuntu.com/download/server3.FedoraFedora官网:https://getfedora.org/Fedora Workstation:https://getfedora.org/en/workstation/download/Fedora Server:https://getfedora.org/en/server/download/4.KaliKali Linux官网:https://www.kali.org/Kali Linux Downloads:https://www.kali.org/downloads/5.GentooGentoo Linux下载1:https://www.gentoo.org/Gentoo Linux下载2:https://www.gentoo.org/downloads/6.DebianDebian官网:https://www.debian.org/Debian下载:https://www.debian.org/distrib/7.ArchArch Linux官网:https://www.archlinux.org/Arch Linux下载:https://www.archlinux.org/download/8.OpenSuseOpenSuse官网:https://www.opensuse.org/OpenSuse下载:https://software.opensuse.org/distributions/leap
2023年11月18日
13 阅读
0 评论
0 点赞
2023-11-11
win下安卓打包指南
0、缘起换了台电脑竟然忘了怎么打包,还好有笔记,用软件打包也挺好,但是我感觉用 命令行 更有操作感,分享下。1、下载并配置apktool(放在C://Windows无需配置环境变量,需要java环境)https://apktool.org/docs/install/ 需要安装java环境的--> https://www.cnblogs.com/qc-id-01/p/10396089.html2、反编译:apktool d xx.apkapktool d xx.apk反编译后会多出一个xx文件夹3、回编译:apktool b xxapktool b xx回编译后的xx(文件夹)多出一个dist文件夹,文件夹下有不可安装的未签名的xx.apk4、签名第一步生成签名文件:keytool -genkey -keystore F:\code\apktool\dev.keystore -alias test -keyalg RSA -validity 10000命令解释:Keytool 选项 描述-genkey 产生一个键值对(公钥和私钥)-v 允许动作输出-alias 键的别名。只有前八位字符有效。-keyalg 产生键的加密算法。支持DSA和RSA。-keysize 产生键的长度。如果不支持,keytool用默认值1024 bits.通常我们用2048 bits 或更长的key。-dname 专有名称,描述谁创建的密钥。该值被用作自签名证书的颁发者和主题字段。注意你可以不在命令行指定。如果没有指定keytool会提示你(CN,OU, and so on)。-keypass 键的密码。 主要为了安全起见,如果没提供,keytool会提示你输入。-validity 键的有效期,单位:天-keystore.keystore 用于存储私钥的文件。第二步为你的apk签名:jarsigner -verbose -keystore F:\code\apktool\dev.keystore -signedjar F:\code\apktool\mytest\MD\dist\signatureMD.apk F:\code\apktool\mytest\MD\dist\MD.apk test命令分为 3部分 :第一部分:C:\Users\Administrator\Desktop\apktool\bm.keystore 你的签名文件地址。第二部分:C:\Users\Administrator\Desktop\apktool\haha.apk 目标apk输出地址第三部分:C:\Users\Administrator\Desktop\apktool\haha.apk bm 源apk地址例子: jarsigner -verbose -keystore F:\code\apktool\dev.keystore -signedjar F:\code\apktool\mytest\game2_shennzhilu\signaturegame2_shennzhilu.apk F:\code\apktool\mytest\game2_shennzhilu\dist\game2_shennzhilu.apk testPS:回编译时有两点需要注意,即回编译的文件夹名不能为中文和该文件夹下盘符内存是否足够,否则会报错。
2023年11月11日
45 阅读
0 评论
0 点赞
2023-09-23
PHP编程实用技巧和示例
PHP编程实用技巧和示例可靠、可维护的代码是任何成功的 PHP 项目的支柱。为了实现这一点,我们可以遵循 SOLID 原则来编写代码。这些原则包括单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)和依赖倒置原则(DIP)。单一职责原则(SRP)单一职责原则规定,一个类应该只有一个改变的理由。在 PHP 中,这意味着类应该具有单一职责。这样的设计可以提高代码的可维护性和可读性。不好的例子 - 混合职责class User { public function verify ( $username , $password ) { /* ... */ } public function sendEmail ( $message ) { /* ... */ } } 好的例子- 单一的职责class UserAuthenticator { public function verify ( $username , $password ) { /* ... */ } } class EmailSender { public function sendEmail ( $message ) { /* ... */ } } 开闭原则(OCP)开闭原则规定类应该对扩展开放,但对修改关闭。在 PHP 中,我们可以使用接口和抽象类来实现这个原则。通过定义接口和抽象类,我们可以在不修改现有代码的情况下扩展功能。不好的例子 - 直接修改class Square { public $side; public function __construct($side) { $this->side = $side; } } class AreaCalculator { public function calculate($shapes) { $area = 0; foreach ($shapes as $shape) { if ($shape instanceof Square) { $area += $shape->side * $shape->side; } elseif ($shape instanceof Circle) { $area += pi() * $shape->radius * $shape->radius; } } return $area; } } 好的例子 - 开放扩展interface Shape { public function area(); } class Square implements Shape { private $side; public function __construct($side) { $this->side = $side; } public function area() { return $this->side * $this->side; } } class Circle implements Shape { private $radius; public function __construct($radius) { $this->radius = $radius; } public function area() { return pi() * $this->radius * $this->radius; } } 里氏替换原则(LSP)里氏替换原则规定超类的对象应该可以用子类的对象替换,而不影响程序的正确性。在 PHP 中,遵守这一原则可以确保派生类维护其基类的契约。这样可以确保代码的一致性和可靠性。不好的例子 - 违反 LSPclass Bird { public function fly() { /* ... */ } } class Ostrich extends Bird { public function fly() { throw new Exception("鸵鸟不能飞"); } } 好的例子 - 遵循 LSPinterface Bird { public function fly(); } class Sparrow implements Bird { public function fly() { /* ... */ } } class Ostrich implements Bird { public function fly() { /* ... */ } } 接口隔离原则(ISP)接口隔离原则规定客户端不应被迫依赖于他们不使用的接口。在 PHP 中,这意味着创建更小、更集中的界面,而不是大型、单一的界面。这种设计可以提高代码的灵活性和可维护性。不好的例子 - 接口脓肿interface Worker { public function work(); public function eat(); public function sleep(); } 好的例子 - 接口隔离interface Workable { public function work(); } interface Eatable { public function eat(); } interface Sleepable { public function sleep(); } 依赖倒置原则(DIP)依赖倒置原则规定高级模块不应依赖于低级模块,但两者都应依赖于抽象。在 PHP 中,我们可以使用依赖注入和抽象来解耦类。这样可以提高代码的可测试性和可维护性。不好的例子 - 高级模块依赖于低级模块class LightBulb { public function turnOn() { /* ... */ } public function turnOff() { /* ... */ } } class Switch { private $bulb; public function __construct() { $this->bulb = new LightBulb(); } public function operate() { // Operate the bulb } } 好的例子 - 抽象和依赖注入interface Switchable { public function turnOn(); public function turnOff(); } class LightBulb implements Switchable { public function turnOn() { /* ... */ } public function turnOff() { /* ... */ } } class Switch { private $device; public function __construct(Switchable $device) { $this->device = $device; } public function operate() { // Operate the device } } 总之,编写符合 SOLID 原则的 PHP 代码对于创建可维护和可扩展的应用程序至关重要。通过遵守这些原则并实现所提供的示例,您可以确保您的 PHP 代码随着时间的推移更加健壮、灵活且更易于维护。请记住,应用这些原则可能需要改变思维方式和设计,但代码质量和可维护性方面的好处是值得付出努力的。祝您编写出优秀的 PHP 代码!
2023年09月23日
15 阅读
0 评论
0 点赞
1
...
3
4
5
...
20