站内公告:

我们的虚拟社区正式开通了

Main Menu

最新帖子

#21
PHP 开发 / 关于升级 Composer
上次发布者 jvip_chen - 2022-12月-08 02:25 下午
Composer 升级时是无法利用我们的镜像加速下载的,而必须连接到 Composer 国外官网的服务器上下载升级文件,某些时候就会导致升级的速度非常慢甚至失败。

这里提供一个简单的办法:

如果你的系统中已经有可以正常使用的 Composer 了,说明系统环境是符合要求的,那么只需要下载新的 Composer 文件并覆盖原来的文件即可。

首先你要确定现有的 Composer 的安装目录,然后通过下面的链接下载 composer.phar 文件(复制以下地址到浏览器地址栏可直接下载),
https://install.phpcomposer.com/composer.phar
将前面下载的 composer.phar 文件覆盖系统中已经安装的 composer.phar 文件即可。注意,有可能在安装时将 composer.phar 改名为 composer 了,注意用同样的名字覆盖即可。
#22
PHP 开发 / 如何安装 Composer
上次发布者 jvip_chen - 2022-12月-08 02:23 下午
下载 Composer
安装前请务必确保已经正确安装了 PHP。打开命令行窗口并执行 php -v 查看是否正确输出版本号。

打开命令行并依次执行下列命令安装最新版本的 Composer:

php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"
执行第一条命令下载下来的 composer-setup.php 脚本将简单地检测 php.ini 中的参数设置,如果某些参数未正确设置则会给出警告;然后下载最新版本的 composer.phar 文件到当前目录。

上述 3 条命令的作用依次是:

  • 下载安装脚本 - composer-setup.php - 到当前目录。
  • 执行安装过程。
  • 删除安装脚本。
#23
MariaDB/MySql数据库 / mysql查看二进制日志的方法
上次发布者 jvip_chen - 2022-11月-28 12:54 下午
查看方法

1、对于二进制日志文件,不像错误日志文件,可以通过cat、head、tail等命令慢慢查询日志文件。

2、需要MySQL提供的工具mysqlbinlog。

实例

[root@iz2zeaf3cg1099kiidi06mz mysql]# mysqlbinlog mysqld-bin.000001
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#180821 16:42:53 server id 1  end_log_pos 120 CRC32 0x3e55be40 Start: binlog v 4, server v 5.6.39-log created 180821 16:42:53 at startup
# Warning: this binlog is either in use or was not closed properly.
ROLLBACK/*!*/;
BINLOG '
jdB7Ww8BAAAAdAAAAHgAAAABAAQANS42LjM5LWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAACN0HtbEzgNAAgAEgAEBAQEEgAAXAAEGggAAAAICAgCAAAACgoKGRkAAUC+
VT4=
'/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
以上就是mysql查看二进制日志的方法,希望对大家有所帮助。更多mysql学习指路:MySQL

推荐操作系统:windows7系统、mysql5.8、DELL G3电脑
#24
PHP 开发 / PHPstorm 优化、设置与提速篇
上次发布者 jvip_chen - 2022-11月-24 07:34 上午
一、phpstorm的提速设置
关于ps的performance,说多了都是泪,还是直奔主题吧~

(一)Java VM options
PHPStorm依赖java运行环境,说白了也就是java虚拟机,找到help > Edit Custom VM Options,然后在这个文件里可以根据需要增加或减少PHPstorm使用的内存

-Xms500m
-Xmx1500m

-Dawt.useSystemAAFontSettings=lcd
-Dawt.java2d.opengl=true

# 这一条只适合于Mac, 可以使java调用优化过的图形引擎
-Dapple.awt.graphics.UseQuartz=true
当然这里还有其他的一些设置,你可以网上搜搜别人都是怎么设置的,然后相应地自行探索

(二)自定义properties
进入help > Edit Custom Properties来设置PHPStorm的自定义属性.

editor.zero.latency.typing=true
上面这条,改变的是PHPstorm如何渲染字体:立即渲染文字,而不是先进行内容分析。可能会因此导致偶尔有那么一瞬间文字都是不带样式的,但是整体上会顺畅很多。

(三)Inspections and plugins(检查和插件)
PHPstorm的一大问题就是太强大了,默认加了很多功能,而我们可能平时根本用不到。

找到preferences -> plugins,把我们根本用不到的很多插件plugin,禁用掉!

不要担心禁的太多,如果你勾掉一个插件的时候,它又被另外一个插件依赖,它会提示你的;而且,在特定的情境下,当PHPstorm觉得你应该启用一个插件的时候,它也会提示你的。

禁用不必要的插件是第一步,但是禁用代码检查(inspections),往往可能影响更大。找到Settings > Editor > Inspections,根据自己的情况看看哪些时候其实不需要实时的代码检查

(四)Language injection(其它语言的插入)
有一个插件其实特别影响性能,就是IntelliLang. 这个插件支持一种语言在其他的文件格式中也照样能被识别,比如说当你在一个PHP文件中插入HTML,或者用到HTML的代码自动补齐或高亮显示功能时。

当然,并不建议完全禁用掉这个插件,但是呢,可能有些特定的语言插入支持,你并不会用到,这个时候你可以到Settings > Editor > Language Injections下,把当前项目里不可能用到的第三方语言插入,都勾掉。

(五)排除对特定项目目录的索引
在 Settings > Directories 下可以将特定的目录标记排除,然后PHPstorm就不会索引其中的文件了。建议排除的目录一般是类似cache、public、storage等包含资源编译文件的,当然还有两个大头,就是vendor 和node_modules目录。

vendor目录的问题
排除掉vendor目录,意味着就不能基于那里面的组件进行自动补全(auto-complete)了,所以这可能不是个好主意。但是呢,有个小技巧就是,你可以整体上排除掉vendor目录,然后在Settings > Languages & Frameworks > PHP下,将你真正用到的组件目录给额外添加上。

关于Node modules目录
Node modules目录实际上默认已经被排除掉了,但是呢,在 Settings > Languages & Frameworks > JavaScript > Libraries下,你会看到,它们又被额外引入进来了,假设说你写js不是那么多,你也可以在这里将其完全排除掉。当然这些呢,都是基于项目的,你可以在不同的项目作不同的选择。

二、删除之前版本的phpstorm缓存文件夹
经常,每次你更新了PHPstorm,它就会创建一个新的cache文件,而不会自动删除你上一个版本的cache文件夹,这往往会占用大量的系统盘空间,如果你用了某一个版本的PHPstorm很长时间,这个文件夹一般都是好几GB。

在Mac上,你可以查找类似'PhpStorm2016.x'或~/Library/Caches的文件夹,然后删除它;

在windows上,在你的当前用户目录查找类似.WebIde的文件夹,将多出来的删掉。
#25
Linux 系统 / linux中iptables如何删除一条规则
上次发布者 jvip_chen - 2022-11月-16 10:28 下午
linux中iptables删除一条规则的方法:
1、打开linux终端;
2、在终端命令行中输入"iptables -L -n"命令查看出当前的防火墙规则;
3、输入"iptables -L -n --line-number"命令查看到每个规则chain的序列号;
4、根据序列号删除指定一条防火墙则即可。


具体操作步骤:

1、在linux系统桌面中使用快捷键【Ctrl+Alt+T】打开linux终端命令行模式。

2、在linux终端命令行中输入以下命令查看出当前的防火墙规则。

iptables -L -n
3、输入以下命令查看到每个规则chain的序列号。

iptables -L -n --line-number
4、最后输入以下命令根据序列号删除指定一条防火墙规则即可。

iptables -D INPUT 3 #删除INPUT的第三条已添加规则,这里3代表第几行规则
相关操作命令:

#iptables防火墙
service iptables status  #查看iptables防火墙状态
service iptables start   #开启防火墙
service iptables stop    #停止防火墙
#firewall防火墙
systemctl status firewalld #查看firewall防火墙服务状态
service firewalld start #开启防火墙
service firewalld stop #关闭防火墙
#26
代码管理-Git / git merge后,想恢复之前版本步骤
上次发布者 jvip_chen - 2022-11月-03 02:26 下午
一共需要三个步骤:

第一步:git checkout到你想恢复的分支上

1.git checkout 分支名
第二步:git reflog查出要回退到merge之前的版本号

 git reflog
└──╼$git reflog
a88a5c89 (HEAD -> channel/pre) HEAD@{0}: pull: Merge made by the 'ort' strategy.
cf889952 (dev/swipe_auto) HEAD@{1}: reset: moving to cf889952
cf889952 (dev/swipe_auto) HEAD@{2}: reset: moving to cf889952
3e5a2166 HEAD@{3}: merge dev/swipe_auto: Merge made by the 'ort' strategy.
3a4a5248 HEAD@{4}: checkout: moving from dev/swipe_auto to channel/pre
cf889952 (dev/swipe_auto) HEAD@{5}: commit: 优化sql
8517922d HEAD@{6}: checkout: moving from channel/qa to dev/swipe_auto
81fcf05d (channel/qa) HEAD@{7}: merge dev/swipe_auto: Merge made by the 'ort' strategy.
7c8f5fda HEAD@{8}: pull: Fast-forward
a02ee7cd HEAD@{9}: checkout: moving from dev/swipe_auto to channel/qa
     

第三步:git reset --hard 版本号,就可以回到merge之前的代码状态了

git reset --hard a1d566d
└──╼$git reset --hard 524763dc0c96249cd207956d59ad6d1f07a6a1de
HEAD is now at 524763dc 增加二次打印
    成功了

   
#27
func ContainsString(src []string, dest string) bool {
    for _, item := range src {
        if item == dest {
            return true
        }
    }
    return false
}

// DifferenceStrings 取前者src与后者dest两个字符串列表的差集
func DifferenceStrings(src []string, dest []string) []string {
    res := make([]string, 0)
    for _, item := range src {
        if !ContainsString(dest, item) {
            res = append(res, item)
        }
    }
    return res
}

// IntersectionStrings 取两个字符串列表的交集
func IntersectionStrings(src []string, dest []string) []string {
    res := make([]string, 0)
    for _, item := range src {
        if ContainsString(dest, item) {
            res = append(res, item)
        }
    }
    return res
}

// UnionString 取两个字符串列表的并集
func UnionStrings(src []string, dest []string) []string {
    res := make([]string, 0)
    res = append(res, src...)
    for _, item := range dest {
        if !ContainsString(res, item) {
            res = append(res, item)
        }
    }
    return res
}
#28
Go 开发 / golang time.Now() 格式化的问题
上次发布者 jvip_chen - 2022-8月-23 04:26 下午
golang中使用time.Now().Format("2006/1/2 15:04:05") 格式化时间输出时,Format的参数必须是"2006/1/2 15:04:05",这个时间为例的时间格式吗?

func main() {
    now := time.Now()

    fmt.Println(now)

    // 必须使用这个时间才能返回正确的格式化后的时间,其他的都不行

    fmt.Println(now.Format("2006/1/2 15:04:05"))

    fmt.Println(now.Format("2006/01/02 15:04:05"))

    fmt.Println(now.Format("15:04:05 2006/1/2"))

    fmt.Println(now.Format("2006/1/2"))

}
#29
Go 开发 / Go Pkg不同系统交叉编译
上次发布者 jvip_chen - 2022-8月-23 02:06 下午
Golang 支持交叉编译,即在一个平台编译,在另一个平台运行,本文介绍Golang Pkg不同系统交叉编译。

参数说明
GOOS: 目标平台
  • mac : darwin
  • linux : linux
  • windows : windows
GOARCH :目标平台的体系架构
  • 386 也称 x86 : 32位操作系统
  • amd64 也称 x64 : 64位操作系统,比如电脑一般都是amd64架构的
  • arm 一般用于嵌入式开发,比如Android,IOS,Win mobile等
交叉编译不支持CGO_ENABLED,使用CGO_ENABLED=0设置。
编译命令
编译在Linux运行的包
CGO_ENABLED=0  GOOS=linux  GOARCH=amd64  go  build
编译在Windows运行的包
CGO_ENABLED=0  GOOS=windows  GOARCH=amd64  go  build
编译在Mac运行的包
CGO_ENABLED=0  GOOS=darwin  GOARCH=amd64  go  build
其他说明
若是在windows编译,需要采用如下命令设置变量:
SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64
go build
#30
Go 开发 / Go语言中字符串简介
上次发布者 jvip_chen - 2022-8月-23 01:56 下午
关键词
通过下面几个问题,去理解,记忆:

字符串的特性

Go语言中字符串占几个字符

如何定义一个字符串,每种方式 有什么缺点

是否可以获取字符串中某个元素的地址呢?

字符串拼接时,+ 号必须在每一行的末尾

1、什么是字符串
一个字符串是一个不可改变的字节序列,字符串可以包含任意的数据,但是通常是用来包含可读的文本,

2、字符串有什么特性?
字符串是一种值类型,且值不可变,

即创建某个文本后将无法再次修改这个文本的内容,更深入地讲,字符串是字节的定长数组。

3、Go语言中字符串占多少个字节
在Go语言中,字符串可能根据需要占用1到4个字节

字符串是 UTF-8 字符的一个序列(当字符为 ASCII 码表上的字符时则占用 1 个字节,其它字符根据需要占用 2-4 个字节)。

4、如何定义一个字符串呢?
双引号""
缺点:这种定义方式不能跨行定义字符串,得使用反引号方式
反引号``
多使用于 定义 多行字符串的场景
缺点:反引号内的转义字符 全部无效,换行可以做为字符串的换行输出
4.1、使用双引号定义字符串
可以使用双引号""来定义字符串,字符串中可以使用转义字符来实现换行、缩进等效果,常用的转义字符包括:

\n:换行符
\r:回车符
\t:tab 键
\u 或 \U:Unicode 字符
\:反斜杠自身
package main

import (
    "fmt"
)

func main() {
    var str = "C语言中文网\nGo语言教程"
    fmt.Println(str)
}
运行结果为:

C语言中文网
Go语言教程
4.2、使用反引号定义字符串
如果想要在源码中嵌入一个多行字符串时,就必须使用`反引号,代码如下:

const str = `第一行
第二行
第三行
\r\n
`
fmt.Println(str)
代码运行结果:

第一行
第二行
第三行
\r\n
反引号`,是键盘上 1 键左边的键,两个反引号间的字符串将被原样赋值到 str 变量中。

注意:
在这种方式下,反引号间换行将被作为字符串中的换行,但是所有的转义字符均无效,文本将会原样输出。

5、字符串的比较运算符
一般的比较运算符(==、!=、<、<=、>=、>)是通过在内存中按字节比较来实现字符串比较的,因此比较的结果是字符串自然编码的顺序。

字符串所占的字节长度可以通过函数 len() 来获取,例如 len(str)。

字符串的内容(纯字节)可以通过标准索引法来获取,在方括号[ ]内写入索引,索引从 0 开始计数:
字符串 str 的第 1 个字节:str[0]
第 i 个字节:str[i - 1]
最后 1 个字节:str[len(str)-1]

需要注意的是,这种转换方案只对纯 ASCII 码的字符串有效。

注意:
获取字符串中某个字节的地址属于非法行为,例如 &str

6、字符串拼接
直接使用+号,拼接在一起
使用+=符合,进行拼接
两个字符串 s1 和 s2 可以通过 s := s1 + s2 拼接在一起。

将 s2 追加到 s1 尾部并生成一个新的字符串 s。

可以通过下面的方式来对代码中多行的字符串进行拼接:

Go语言中字符串拼接方式.png
提示:
因为编译器会在行尾自动补全分号,所以拼接字符串用的加号"+"必须放在第一行末尾。

也可以使用"+="来对字符串进行拼接:


s := "hel" + "lo,"
s += "world!"
fmt.Println(s) //输出 "hello, world!"