网站建设网站优化seo仿站软件开发网页制作营销型网站建设

keytool-genkey-v-keystoreandroid.keystore-aliasandroid-keyalgRSA-validity20000-keystore/Users/当前用户的用户名/android_demo.keystore如果mac没有安装JavaJDK则会提示如下信息:

填写信息完成之后,证书创建就完成了.上面输入的命令里面的/Users/当前用户的用户名/android_demo.keystore就是证书的地址.

在终端输入命令:

keytool-list-v-keystore证书存放地址(例如:/Users/当前用户的用户名/android_demo.keystore)

回车.输入刚才的口令密码,即可查看证书的所有信息(例如申请一些三方需要的SHA1).

在终端输入命令:setPATH=%PATH%;"C:\ProgramFiles\Java\jre1.8.0_201\bin"生成签名证书使用keytool-genkey命令生成证书:

在终端输入命令:keytool-genkey-aliastestalias-keyalgRSA-keysize2048-validity36500-keystoretest.keystore回车后会提示:

在终端输入命令:Enterkeystorepassword://输入证书文件密码,输入完成回车Re-enternewpassword://再次输入证书文件密码,输入完成回车Whatisyourfirstandlastname[Unknown]://输入名字和姓氏,输入完成回车Whatisthenameofyourorganizationalunit[Unknown]://输入组织单位名称,输入完成回车Whatisthenameofyourorganization[Unknown]://输入组织名称,输入完成回车WhatisthenameofyourCityorLocality[Unknown]://输入城市或区域名称,输入完成回车WhatisthenameofyourStateorProvince[Unknown]://输入省/市/自治区名称,输入完成回车Whatisthetwo-lettercountrycodeforthisunit[Unknown]://输入国家/地区代号(两个字母),中国为CN,输入完成回车IsCN=XX,OU=XX,O=XX,L=XX,ST=XX,C=XXcorrect[no]://确认上面输入的内容是否正确,输入y,回车Enterkeypasswordfor(RETURNifsameaskeystorepassword)://确认证书密码与证书文件密码一样(HBuilder|HBuilderX要求这两个密码一致),直接回车就可以以上命令运行完成后就会生成证书,路径为“D:\test.keystore”。

可以使用以下命令查看:

在终端输入命令:keytool-list-v-keystoretest.keystoreEnterkeystorepassword://输入密码,回车会输出以下格式信息:

在终端输入命令:Keystoretype:PKCS12Keystoreprovider:SUNYourkeystorecontains1entryAliasname:testCreationdate:2019-10-28Entrytype:PrivateKeyEntryCertificatechainlength:1Certificate[1]:Owner:CN=Tester,OU=Test,O=Test,L=HD,ST=BJ,C=CNIssuer:CN=Tester,OU=Test,O=Test,L=HD,ST=BJ,C=CNSerialnumber:7dd12840Validfrom:FriJul2620:52:56CST2019until:SunJul0220:52:56CST2119Certificatefingerprints:MD5:F9:F6:C8:1F:DB:AB:50:14:7D:6F:2C:4F:CE:E6:0A:A5SHA1:BB:AC:E2:2F:97:3B:18:02:E7:D6:69:A3:7A:28:EF:D2:3F:A3:68:E7SHA256:24:11:7D:E7:36:12:BC:FE:AF:2A:6A:24:BD:04:4F:2E:33:E5:2D:41:96:5F:50:4D:74:17:7F:4F:E2:55:EB:26Signaturealgorithmname:SHA256withRSASubjectPublicKeyAlgorithm:2048-bitRSAkeyVersion:3其中证书指纹信息(Certificatefingerprints):

1、修改keystore密码的命令(keytool为JDK带的命令行工具):

keytool-storepasswd-keystoremy.keystore

2、修改keystore的alias(别名):

keytool-changealias-keystoremy.keystore-aliasmy_name_key-destaliasaliasdebugkey

3、修改alias(别名)的密码:

keytool-keypasswd-keystoremy.keystore-aliasaliasdebugkey

在使用时php报出如下错误:Calltoundefinedfunctiongemvary\exif_imagetype()

通过打印phpinfo()查看得知mbstring扩展是有的,exif扩展没有

如果mbstring也没有,也可以参考以下exif扩展的安装过程;

安装过程基本类似的;

进入主题:

1、查看当前环境PHP的版本号和安装目录

2、进入php的源码目录

#这是我电脑上的路径,得改成自己服务器上的路径cd/www/lnmp1.4/src/php-7.1.7/ext/exif进入扩展目录后进行初始化:

/usr/local/php/bin/phpize命令执行后当前目录会多几个文件,只要有configure这个文件就行

然后再检查配置,输入:

./configure--with-php-config=/usr/local/php/bin/php-config如果有报错说明路径不对,使用whereisphp-config查看服务器上此文件的路径

接下来再依次执行这两个命令:

makemakeinstall执行完会有类似如下信息:

[root@xiaojunexif]#makeinstallInstallingsharedextensions:/usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/这个目录就是扩展安装后的存放目录;

3、修改php.ini引入扩展

vi/usr/local/php/etc/php.ini在最后面加入:

extension=exif.so然后保存,重启PHP就完事了;

需要注意的是exif.so必须放在mbstring.so的后面,否则会出错;

可能出现的问题:

意思是mbstring这个扩展已经加载过了,还尝试引入;

解决办法:

PHP加载模块有两种方式,一种是通过php.ini加载模块,另一种是通过编译时的参数加载模块。

这里出这个提示,那么mbstring应该就是属于后者,只需要php.ini中将其注释掉就行了

;extension=mbstring.so输入/usr/local/bin/phpize后提示:Cannotfindconfig.m4.Makesurethatyourun/usr/local/bin/phpizeinthetoplevelsourc

我是将openssl扩展内的config0.m4文件改成config.m4就没提示了;

cd../opensslcp./config0.m4./config.m4至于为什么openssl扩展的config.m4为什么会影响到安装其它扩展,暂不得而知;

前言

mysql-binlog是MySQL数据库的二进制日志,用于记录用户对数据库操作的SQL语句((除了数据查询语句)信息。可以使用mysqlbin命令查看二进制日志的内容。

MySQLbinlog格式

binlog的格式也有三种:STATEMENT、ROW、MIXED。

1、STATMENT模式:基于SQL语句的复制(statement-basedreplication,SBR),每一条会修改数据的sql语句会记录到binlog中。

优点:不需要记录每一条SQL语句与每行的数据变化,这样子binlog的日志也会比较少,减少了磁盘IO,提高性能。

缺点:在某些情况下会导致master-slave中的数据不一致(如sleep()函数,last_insert_id(),以及user-definedfunctions(udf)等会出现问题)

2、基于行的复制(row-basedreplication,RBR):不记录每一条SQL语句的上下文信息,仅需记录哪条数据被修改了,修改成了什么样子了。

优点:不会出现某些特定情况下的存储过程、或function、或trigger的调用和触发无法被正确复制的问题。

缺点:会产生大量的日志,尤其是altertable的时候会让日志暴涨。

3、混合模式复制(mixed-basedreplication,MBR):以上两种模式的混合使用,一般的复制使用STATEMENT模式保存binlog,对于STATEMENT模式无法复制的操作使用ROW模式保存binlog,MySQL会根据执行的SQL语句选择日志保存方式。

binlog配置

在MySQL配置文件my.cnf文件中的mysqld节中添加下面的配置文件:

[mysqld]

#设置日志格式

binlog_format=mixed

#设置日志路径,注意路经需要mysql用户有权限写

log-bin=/data/mysql/logs/mysql-bin.log

expire_logs_days=7

#binlog每个日志文件大小

max_binlog_size=100m

#binlog缓存大小

binlog_cache_size=4m

#最大binlog缓存大小

max_binlog_cache_size=512m

重启MySQL生效,如果不方便重启服务,也可以直接修改对应的变量即可。

总结

无论是增量备份还是主从复制,都是需要开启mysql-binlog日志,最好跟数据目录设置到不同的磁盘分区,可以降低io等待,提升性能;并且在磁盘故障的时候可以利用mysql-binlog恢复数据。

Mac版本的Python默认是2.7,安装高版本后需要修改为你安装的版本。

1,首先打开终端

open~/.bash_profile

打开配置文件

2.写入python的外部环境变量

exportPATH=${PATH}:/Library/Frameworks/Python.framework/Versions/3.7/bin

3.重命名python

(这步很重要,直接关系到默认启动的python版本是否修改)

4.关闭文件后,在终端调用source~/.bash_profile

5.在终端调用python,查看是否修改成功

一、功能比较强

相对而言,这是除Excel自身之外功能最强的工具了。比如我就用到了它提供的:字体设置、前景色背景色、border设置、视图缩放(zoom)、单元格合并、autofilter、freezepanes、公式、datavalidation、单元格注释、行高和列宽设置等等。

二、支持大文件写入

如果数据量非常大,可以启用constantmemory模式,这是一种顺序写入模式,得到一行数据就立刻写入一行,而不会把所有的数据都保持在内存中。

一、不支持读取和修改

作者并没有打算做一个XlsxReader来提供读取操作。不能读取,也就无从修改了。它只能用来创建新的文件。我是利用xlrd把需要的信息读入后,用XlsxWriter创建全新的文件。

二、不支持XLS文件

XLS是Office2013或更早版本所使用的格式,是一种二进制格式的文件。XLSX则是用一系列XML文件组成的(最后的X代表了XML)一个压缩包。如果非要创建低版本的XLS文件,就请移步xlwt吧。

三、暂时不支持透视表(PivotTable

importxlsxwriterf=xlsxwriter.Workbook()#创建excel文件worksheet1=f.add_worksheet('操作日志')#括号内为工作表表名样式有很多属性,更多具体样式请参考官方文档。

workbook.close()这个命令是使用xlsxwriter操作Excel的最后一条命令,一定要记得关闭文件。

Mac下是自己安装了Apache+PHP的,但是MacOS版本每次变更后都需要重新配置下环境,参考:Mac升级系统macOSSierra后PHP不编译

Mac没有预装Homebrew,安装Homebrew在终端执行:

xcode-select--install成功后继续安装Homebrew

成功安装brew后,在终端执行:

brewinstallnginx安装成功后,查看nginx信息,在终端执行:

brewinfonginx以下为提示信息:nginx:stable1.12.2(bottled),devel1.13.6,HEAD......Docrootis:/usr/local/var/wwwThedefaultporthasbeensetin/usr/local/etc/nginx/nginx.confto8080sothatnginxcanrunwithoutsudo.nginxwillloadallfilesin/usr/local/etc/nginx/servers/.Tohavelaunchdstartnginxnowandrestartatlogin:brewservicesstartnginxOr,ifyoudon'twant/needabackgroundserviceyoucanjustrun:nginxMac是自带Apache的,和Nginx会冲突吗?答案是不会,因为默认端口不同,Apache默认80端口,Nginx默认8080端口ok,终端执行:

sudonginx浏览器访问:localhost:8080

//启动nginx服务sudonginx//重新加载配置|重启|停止|退出nginxnginx-sreload|reopen|stop|quit//测试配置是否有语法错误nginx-t3.安装PHP56macOSX自带PHP,会跟随系统升级,目前macOSv10.13.x跟随PHP已经是PHP7.0,所以我们还是需要安装PHP56,执行:

brewinstallphp56--build-from-source安装成功,提示:

sudovim/usr/local/etc/php/5.6/php.ini设置开机启动php-fpm:

/usr/local/opt/php56/sbin/php56-fpm{start|stop|force-quit|restart|reload|status}现在我们先执行php56-v来查看版本要怎么办呢?执行:

sudoln-s/usr/local/Cellar/php56/5.6.32_8/bin/php/usr/local/bin/php56设置一下符号链接(相当于windows快捷方式),现在php56直接指向了/usr/local/Cellar/php56/5.6.32_8/bin/php【参考链接】Linux环境变量和符号链接设置完成,查看PHP版本:

php56-v4.安装Redis终端执行:

brewsearchredis查询结果:hiredishomebrew/php/php56-redisredisredis@3.2homebrew/php/php53-redishomebrew/php/php70-redisredis-leveldbhomebrew/php/php54-redishomebrew/php/php71-redisredis@2.6homebrew/php/php55-redishomebrew/php/php72-redisredis@2.8然后(注意区分下php的redis扩展)

brewinstallredisTohavelaunchdstartredisnowandrestartatlogin:brewservicesstartredisOr,ifyoudon'twant/needabackgroundserviceyoucanjustrun:redis-server/usr/local/etc/redis.conf开启redis:

1.通过调用指定的URL访问就相当于在浏览器中访问

2.通过console调用

下面我们就来说说Console是如何实现定时任务的

PHP

linux下,运行crontab-e

上面的例子表示每晚的21:30执行上面的定时程序

下面是定时任务设置的一些基本介绍

基本格式:*****command分时日月周命令

第1列表示分钟1~59每分钟用*或者*/1表示第2列表示小时1~23(0表示0点)第3列表示日期1~31第4列表示月份1~12第5列标识号星期0~6(0表示星期天)第6列要运行的命令

crontab文件的一些例子:

Shell

通过apt安装,gitosis使用SSHkey来认证用户,但用户不需要在主机上添加账号,而是使用服务器上的一个受限账号。安装的过程需要在客户端和服务器之间切换,留意操作步骤之前的说明。这里服务器和客户端都是使用ubuntulinux。

服务器端(ip:192.168.1.254)1.安装gitsudoapt-getinstallgit-core

2.安装python和python-setuptoolssudoapt-getinstallpythonpython-setuptools

3.安装gitosis

PS:git://eagain.net/gitosis已经失效了,找了好久才有一个新的。

4.创建git用户

客户端(也需要先安装git)5.在gitosis管理员的机器上生成密钥,把公钥重命名为comet@3GCOMET.pub,这里用scp传到服务器上ssh-keygen-trsamvid_rsa.pubcomet@3GCOMET.pubscpcomet@3GCOMET.pubcomet@192.168.1.254:comet@3GCOMET.pub

6.在~/.ssh/config添加以下内容,以便连接到服务器Host192.168.1.254CompressionyesIdentityFile~/.ssh/id_rsa

服务器端7.使用上面的comet@3GCOMET.pub初始化gitosissudo-H-ugitgitosis-init

客户端8.获取服务器上的gitosis-admin项目,会有keydir文件夹和gitosis.confgitclonegit@192.168.1.254:gitosis-admin.git

9.添加新组jichuteam、用户comet@HP、项目jichu,并推送到远程服务器

注:如果客户端是windows,使用Puttygen生成公钥和私钥:参数为SSH-2RSA,1024位,按需加上密码。

如果之前是使用ssh-keygen生成的,在这里直接Loadprivatekey,然后saveprivatekey,保存为ppk格式才能用。

在新的客户端生成密钥,并把公钥放到gitosis-adminkeydir,这里是comet@HP.pubcdgitosis-adminvigitosis.conf修改为下面内容,其中[gitosis]可以看gitosis/example.conf的说明,members的comet@HP就是comet@HP.pub的文件名,多个用户用空格隔开[gitosis]gitweb=nodaemon=nologlevel=DEBUG

[groupgitosis-admin]writable=gitosis-adminmembers=comet@3GCOMET

[groupjichuteam]members=comet@HPwritable=jichu

gitpush

服务器端12.在服务器的/home/git/repositories/可以看到有jichu.git的版本库。

重要的连接前设置为编码形式,以上为utf8编码,gbk的变换一下即可,不要死掰。

yuminstallsubversion安装完成之后,你可以通过以下命令查看是svnversion版本信息:

1、将文件checkout到本地目录svncheckoutpath(path是服务器上的目录)例如:svncheckoutsvn://192.168.1.1/pro/domain简写:svnco2、往版本库中添加新的文件svnaddfile例如:svnaddtest.php(添加test.php)svnadd*.php(添加当前目录下所有的php文件)

首先是要用mt_rand()函数生成指定个数的随机数字;

然后使用array_unique()函数去重;

因为去重了;所以得到的数字就不够指定个数了;

所以;核心是要用while循环;直到得到指定个数的数字;

到这里基本可以是结束了;

对于追求完美的人来说;还可以再用个sort();

目的不是要用来排序;主要是将得到的数组key格式化;

用代码来说话;就如下;

当然;重点不是这个函数;重点是这个函数的思路;可以解决很多类似的问题;

Composer是一个非常流行的PHP包依赖管理工具,已经取代PEAR包管理器,对于PHP开发者来说掌握Composer是必须的.

对于使用者来说Composer非常的简单,通过简单的一条命令将需要的代码包下载到vendor目录下,然后开发者就可以引入包并使用了.

其中的关键在于你项目定义的composer.json,可以定义项目需要依赖的包(可能有多个),而依赖的包可能又依赖其他的包(这就是组件的好处),这些都不用你烦心,Composer会自动下载你需要的一切,一切在于composer.json的定义.

Composer对于使用者来说是很透明,但是其背后的理念还是需要了解一下的,其的诞生也不是偶然的,得益于Github的快速发展,PHP语言也越来越现代化,显得更高大上了.

为了理解Composer,先大概了解下其结构:

Composer的结构

Composer命令行工具

composerinit

使用者可以在自己的项目下创建composer.json以便定义你项目的依赖包,也可以通过composerinit交互式的创建composer.json.

composerinstall

应该是最常用的命令,composer会根据本地的composer.json安装包,将下载的包放入项目下的vendor目录下,同时将安装时候的包版本信息放入到composer.lock,以便锁定版本.

其实在install的时候,假如发现composer.lock版本和目前vendor目录下的代码版本是一致的,则Composer会什么也不做,composer.lock的目的就是让你安心在目前这个版本下工作,而不获取最新版本的包.

composerupdate

那么如何更新composer.lock以便获取到最新版本的包呢通过这个命令即可更新最新版本的包

composerconfig

这个命令还是建议了解下,全局的配置保存在COMPOSER_HOME/config.json,非全局的配置信息则存储在本项目目录下.

composercreate-project

这个命令不常用,但是个人觉得还是很重要的,使用普通的install命令是将项目所有的依赖包下载到本项目vendor目录下.而通过这个命令则是将所有的代码及其依赖的包放到一个目录下,相当于执行了一个gitclone命令,一般是包的开发者可能为了修复bug会使用该命令.

composerglobal

这是一个全局的安装命令,它允许你在COMPOSER_HOME目录下执行Composer的命令,比如install,update.当然你的COMPOSER_HOME要在$PATH环境下.

比如执行composerglobalrequirefabpot/php-cs-fixer,现在php-cs-fixer命令行可以全局运行了,如果稍后想更新它,只需要运行composerglobalupdate

composerdump-autoload

当你修改项目下的composer.json的文件,并不一定要运行composerupdate命令进行更新,有的时候可以使用该命令来更新加载器,比如你要引用本地自定义的包(不是来自于packagist),后面会通过实践来说明该命令.

composerrequire

假如手动或者交互式创建composer.json文件,可以直接使用该命令来安装包

–prefer-source和–prefer-dist参数

–prefer-dist:对于稳定的包来说,一般Composer安装默认使用该参数,这也能加快安装,比如有可能直接从packagist安装了相应的包,而不用实际去Github上下载包.

–prefer-source:假如使用该参数,则会直接从Github上安装,安装包后vendor目录下还含有.git信息

#在vendor/ywdblog/phpcomposer目录下含有.git信息

如何给Composer添加代理

在国内使用Composer下载特别慢,可以通过二个方法进行加速

}

Autoloading代码加载器

composer本身集成一个autoloader,支持PSR-4,PSR-0,classmap,filesautoloading.

这里通过一个例子来说明通过Composer如何引用classmap,files,本地符合PSR-4标准的代码

编辑composer.json

通过上述的操作,对于PSR-4来说等同注册了一个PSR-4autoloader(从FooBar命名空间)

假如不想使用Composer的autoloader,可以直接包含vendor/composer/autoload_*.php文件,配置自己的加载器.

具体的例子托管在github上,可参考.

Repositories

关于Repositories,了解其不是必须的,但是假如掌握则更能理解Composer,对于Repositories,其中文文档和英文文档解释的很好,这里也进行了一些摘抄.

基本概念

包:

Composer是一个依赖管理工具,它在本地安装一些资源包和包的描述(比如包名称和对应的版本),比较重要的元数据描述是dist和source,dist指向一个存档,该存档是对一个资源包的某个版本的数据进行的打包.source指向一个开发中的源,这通常是一个源代码仓库(比如git)

资源库:

Composer将查看所有你定义的repositories以找到项目需要的资源包(这句话很重要).

默认情况下已经将Packagist.org注册到Composer(或者理解为Packagist.org是Composer资源库默认的仓库类型)

Composer资源库类型

Composer资源库包括四种类型,默认的是composer类型,也就是packagist.org所使用的资源类型.

它使用一个单一的packages.json文件,包含了所有的资源包元数据.当你将包发布到pckagist.org上,则默认系统会创建一个packages.json,不过我没有找到我的包对应的文件.

VCS资源库类型

假如你想构建一个私有的Composer私有资源库类型,可以使用该类型,这里举一个例子,比如你在自己项目的composer.json定义如下,则就可以使用对应的Github上的代码了.

{

],

当运行composerupdate的时候,Comoser实际上是从Github上下载包而不是从pckagist.org上下载.

另外假如需要使用Package资源库类型或者PEAR资源库类型,参考官方文档即可,一般在composer.json中定义name、version属性即可.

Composer.json

在本文上面也多次提到了composer.json,比如你希望使用第三方包则需要在本地定义composer.json,Composer安装第三方包后,也会在第三方包目录下发现composer.json,那么这二者都叫composer.json,有什么区别呢理解这非常的重要.

假如你在自己的项目下面定义一个composer.json,则这个包称之为ROOT包,这个composer.json定义你项目需要的条件(比如你的项目可能依赖一个第三方包).

composer.json中有些属性只能被ROOT包使用,比如config属性只在ROOT包中生效.

一个资源包是不是ROOT包,取决于它的上下文,比如你gitcloneywdblog/phpcomposer,则这时候本地phpcomposer目录就是ROOT包,假如你在本地phpcomposer目录下composerrequireywdblog/phpcomposer,则这时候你的项目phpcomposer就是ROOT包.

了解composer-schema.json可参考该网址,Laravel作为一个成熟的框架,其定义的composer.json非常经典

关于包的版本

当使用者在本地配置composer.json的时候,可以指定需要包的特定版本,Composer支持从Github仓库中下载Tag或者分支下的包.

对于Github上的Tag来说,Packagist会创建对应包的版本,它符合X.Y.Z,vX.Y.Z,X.Y.Z-包类型,就是说Github上虽然只有一个特定版本的包,但Composer支持多种形式的引用方式,比如:

composerrequiremonolog/monolog1.0.*

composerrequiremonolog/monolog~1.10

对于Github上的分支来说,Packagist会创建对应包的版本,假如分支名看起来像一个版本,将创建{分支名}-dev的包版本号,如果分支名看起来不像一个版本号,它将会创建dev-{分支名}形式的版本号

总结:

理解Composer,最重要的是实践,最后也能明白PSR-4和命名空间,也可以尝试将你的项目发布到pckagist.org上.

GitHub就是一个免费托管开源代码的远程仓库。但是对于某些视源代码如生命的商业公司来说,既不想公开源代码,又舍不得给GitHub交保护费,那就只能自己搭建一台Git服务器作为私有仓库使用。

搭建Git服务器需要准备一台运行Linux的机器,强烈推荐用Ubuntu或Debian,这样,通过几条简单的apt命令就可以完成安装。

假设你已经有sudo权限的用户账号,下面,正式开始安装。

第一步,安装git:

$sudoapt-getinstallgit第二步,创建一个git用户,用来运行git服务:

第四步,初始化Git仓库:

先选定一个目录作为Git仓库,假定是/srv/sample.git,在/srv目录下输入命令:

git:x:1001:1001:,,,:/home/git:/bin/bash改为:

第六步,克隆远程仓库:

现在,可以通过gitclone命令克隆远程仓库了,在各自的电脑上运行:

$gitclonegit@server:/srv/sample.gitCloninginto'sample'...warning:Youappeartohaveclonedanemptyrepository.剩下的推送就简单了。

如果团队很小,把每个人的公钥收集起来放到服务器的/home/git/.ssh/authorized_keys文件里就是可行的。如果团队有几百号人,就没法这么玩了,这时,可以用Gitosis来管理公钥。

这里我们不介绍怎么玩Gitosis了,几百号人的团队基本都在500强了,相信找个高水平的Linux管理员问题不大。

有很多不但视源代码如生命,而且视员工为窃贼的公司,会在版本控制系统里设置一套完善的权限控制,每个人是否有读写权限会精确到每个分支甚至每个目录下。因为Git是为Linux源代码托管而开发的,所以Git也继承了开源社区的精神,不支持权限控制。不过,因为Git支持钩子(hook),所以,可以在服务器端编写一系列脚本来控制提交等操作,达到权限控制的目的。Gitolite就是这个工具。

这里我们也不介绍Gitolite了,不要把有限的生命浪费到权限斗争中。

设置方法:

aliyunLinux(Redhat)安装vsftp软件

1.更新yum源

首先需要更新系统的yum源,便捷工具下载地址:update_source.zip。这里需要注意的是,目前文件无法传输,所以想要运行update_source.sh只能用文本打开,复制粘贴到阿里云服务器系统运行。

使用yum命令安装vsftp

#yuminstallvsftpd-y

3.添加ftp帐号和目录

先检查一下nologin的位置,通常在/usr/sbin/nologin或者/sbin/nologin下。

使用下面的命令创建帐户,该命令指定了/ftp为用户test的家目录,您可以自己定义帐户名和目录:

#useradd-d/ftp-s/sbin/nologintest

修改该帐户密码:

#passwdtest

修改指定目录的权限

#chown-Rtest:test/ftp

编辑vsftp配置文件,命令如下:

#vi/etc/vsftpd/vsftpd.conf

将配置文件中”anonymous_enable=YES“改为“anonymous_enable=NO”

取消如下配置前的注释符号:

#local_enable=YES

#write_enable=YES

#chroot_local_user=YES

#ascii_upload_enable允许使用ascii码上传

#ascii_download_enable允许使用ascii码下载

保存修改,按ESC键,输入:wq

5.修改shell配置

vi编辑/etc/shells,如果该文件里没有/usr/sbin/nologin或者/sbin/nologin(具体看当前系统配置)则追加进去

使用命令启动vsftp服务:

#servicevsftpdstart

后来我给检查了一番,因为对dedecms这种cms,一些问题基本都是站长摸透了的,这类问题应该可以说是家常便饭吧。于是baidu,google了一下,寥寥无几的答案,大都是无关紧要的答案,亦或是答非所问,也许都是抱着灌水的态度把,却而止步。

决定对程序进行排查了,得得看看删除程序是怎么进行的吧,查了几个php页面:archives_do.php

发现这里用了的函数DelArc

然后继续往下找到这个函数,函数来自inc_batchup.php文件

看到这里就基本一目了然了,将sql进行执行查询出来,发现这里表里面的数据让人大吃一惊。

将表中的数据进行校对处理,最终得以解决了。

“lsblk-l”命令以列表格式显示块设备(而不是树状格式)。

“md5sum”就是计算和检验MD5信息签名。md5checksum(通常叫做哈希)使用匹配或者验证文件的文件的完整性,因为文件可能因为传输错误,磁盘错误或者无恶意的干扰等原因而发生改变。

root@raspberrypi:/#uname-aLinuxraspberrypi3.6.11+#528PREEMPTTueAug2000:25:53BST2013armv6lGNU/Linux“history”命令就是历史记录。它显示了在终端中所执行过的所有命令的历史。

注意:按住“CTRL+R”就可以搜索已经执行过的命令,它可以在你写命令时自动补全。

root@raspberrypi:/opt/labpark#mkdirraspbox注意:目录只能在用户拥有写权限的目录下才能创建。mkdir:不能创建目录`tecmint`,因为文件已经存在了。(上面的输出中不要被文件迷惑了,你应该记住我开头所说的-在linux中,文件,文件夹,驱动,命令,脚本都视为文件)

root@raspberrypi:/opt/labpark#touchrasp.txt注意:touch可以用来在用户拥有写权限的目录下创建不存在的文件。

Debian系列以“apt”命令为基础,“apt”代表了AdvancedPackageTool。APT是一个为Debian系列系统(Ubuntu,Kubuntu等等)开发的高级包管理器,在Gnu/Linux系统上,它会为包自动地,智能地搜索,安装,升级以及解决依赖。

“pwd”(printworkingdirectory),在终端中显示当前工作目录的全路径。

root@raspberrypi:/opt/labpark#pwd/opt/labpark搜索指定目录下的文件,从开始于父目录,然后搜索子目录。

root@raspberrypi:/opt/labpark#findbook*book_backup.txtbook.txt

root@raspberrypi:/opt/labpark#find-name*.c./hello.c

root@raspberrypi:/opt/labpark#find-inameFACE*./facebook.txt

注意:`-name‘选项是搜索大小写敏感。可以使用`-iname‘选项,这样在搜索中可以忽略大小写。(*是通配符,可以搜索所有的文件;‘.sh‘你可以使用文件名或者文件名的一部分来制定输出结果)

root@raspberrypi:/opt/labpark#grep-r"localhost"/etc/php5//etc/php5/cgi/php.ini:SMTP=localhost/etc/php5/cli/php.ini:SMTP=localhost/etc/php5/fpm/php.ini:SMTP=localhost注意:您还可以使用以下选项:

‘man‘是系统帮助页。Man提供命令所有选项及用法的在线文档。几乎所有的命令都有它们的帮助页

ps命令给出正在运行的某个进程的状态,每个进程有特定的id成为PID。

whereis的作用是用来定位命令的二进制文件\资源\或者帮助页.举例来说,获得ls和kill命令的二进制文件/资源以及帮助页

‘service‘命令控制服务的启动、停止和重启,它让你能够不重启整个系统就可以让配置生效以开启、停止或者重启某个服务。

alias是一个系统自建的shell命令,允许你为名字比较长的或者经常使用的命令指定别名。

报告系统的磁盘使用情况。在跟踪磁盘使用情况方面对于普通用户和系统管理员都很有用。‘df‘通过检查目录大小工作,但这一数值仅当文件关闭时才得到更新。

估计文件的空间占用。逐层统计文件(例如以递归方式)并输出摘要。

注意:‘df‘只显示文件系统的使用统计,但‘du‘统计目录内容。

这是一个很重要的命令,在终端中用来改变自己密码很有用。显然的,因为安全的原因,你需要知道当前的密码。

root@raspberrypi:/opt/wwwroot#passwdEnternewUNIXpassword:RetypenewUNIXpassword:passwd:passwordupdatedsuccessfully

这个命令用来在命令行上将指定的文件在指定的打印机上打印。

root@raspberry:~#lpr-Pdeskjet-4620-series1-final.pdf

比较两个任意类型的文件并将结果输出至标准输出。如果两个文件相同,‘cmp‘默认返回0;如果不同,将显示不同的字节数和第一处不同的位置。

Wget是用于非交互式(例如后台)下载文件的免费工具.支持HTTP,HTTPS,FTP协议和HTTP代理。

mount是一个很重要的命令,用来挂载不能自动挂载的文件系统。你需要root权限挂载设备。

ifconfig用来配置常驻内核的网络接口信息。在系统启动必要时用来设置网络适配器的信息。之后,它通常是只需要在调试时或当系统需要调整时使用。

root@raspberrypi:~#uptime04:09:59up7min,1user,loadaverage:0.01,0.31,0.24

显示CPU进程信息。这个命令自动刷新,默认是持续显示CPU进程信息,除非使用了中断指令(Ctrl+c)。

这个命令在指定的设备上创建一个新的ext4文件系统,如果这个命令后面跟的是个错误的设备,那么整个设备就会被擦除和格式化,所以建议不要运行这个命令,除非你清楚自己正在干什么。

Mkfs.ext4/dev/sda1(sda1blockwillbeformatted)mkfs.ext4/dev/sdb1(sdb1blockwillbeformatted)linux下vi的复制,黏贴,删除,撤销,跳转等命令一,模式vi编辑器有3种模式:命令模式、输入模式、末行模式。掌握这三种模式十分重要:

命令模式:vi启动后默认进入的是命令模式,从这个模式使用命令可以切换到另外两种模式,同时无论在任何模式下只要按一下[Esc]键都可以返回命令模式。

末行模式:在命令模式输入“:”即可进入该模式,在末行模式中有好多好用的命令。

二,复制a,复制整行命令模式下,光标位于要复制的当前行,输入yyb,复制一个单词命令模式下,光标位于要复制的当前单词的第一个字母,输入yw

三,黏贴命令模式下,输入p

四,删除a,删除整行命令模式下,光标位于要删除的所在行,输入dd

b,删除一个单词命令模式下,光标位于要删除的单词的第一个字母,输入dw

五,撤销命令模式下,输入u

六,跳转命令模式下,输入要跳转的行数,然后再输入gg如:要跳转到当前文件的第150行,输入150gg

mysqljoinon可以带and,例如:SELECTpa.nameasname,pa.snassn,re.created,sl.sn,re.phase,rd.times,ABS(sl.quantity)asquantity,dr.nameasdname,dr.specificationsasspecificationsFROMrrASreJOINredASrdONre.id=rd.ridJOINdrugASdrONdr.id=rd.didJOIN{{bbbb}}ASslONre.id=sl.r_idANDsl.d_id=rd.d_idJOINppASpaONpa.id=re.p_idWHERE$whereANDsl.receive_id>0用于将被join表没有对应数据的时候也可以将主join表的数据显示出来

phpcms更换编辑器由CKEditor为UEditor,简单两步,没有网上说的那么复杂,下面直接上操作图:

就以上两步骤,去UEditor官网下载源码,这个谁都会。下载完直接丢进根目录下/statics/js/目录即可。如果还有不会的,那我就没办法。

让我们来看一个简单的分支新建与分支合并的例子,实际工作中你可能会用到类似的工作流。你将经历如下步骤:

首先,我们假设你正在你的项目上工作,并且已经有一些提交。

现在,你已经决定要解决你的公司使用的问题追踪系统中的#53问题。想要新建一个分支并同时切换到那个分支上,你可以运行一个带有-b参数的gitcheckout命令:

$gitcheckout-biss53Switchedtoanewbranch"iss53"它是下面两条命令的简写:

你继续在#53问题上工作,并且做了一些提交。在此过程中,iss53分支在不断的向前推进,因为你已经检出到该分支(也就是说,你的HEAD指针指向了iss53分支)

但是,在你这么做之前,要留意你的工作目录和暂存区里那些还没有被提交的修改,它可能会和你即将检出的分支产生冲突从而阻止Git切换到该分支。最好的方法是,在你切换分支之前,保持好一个干净的状态。有一些方法可以绕过这个问题(即,保存进度(stashing)和修补提交(commitamending)),我们会在储藏与清理中看到关于这两个命令的介绍。现在,我们假设你已经把你的修改全部提交了,这时你可以切换回master分支了:

$gitcheckoutmasterSwitchedtobranch'master'这个时候,你的工作目录和你在开始#53问题之前一模一样,现在你可以专心修复紧急问题了。请牢记:当你切换分支的时候,Git会重置你的工作目录,使其看起来像回到了你在那个分支上最后一次提交的样子。Git会自动添加、删除、修改文件以确保此时你的工作目录和这个分支最后一次提交时的样子一模一样。

接下来,你要修复这个紧急问题。让我们建立一个针对该紧急问题的分支(hotfixbranch),在该分支上工作直到问题解决:

你可以运行你的测试,确保你的修改是正确的,然后将其合并回你的master分支来部署到线上。你可以使用gitmerge命令来达到上述目的:

现在,最新的修改已经在master分支所指向的提交快照中,你可以着手发布该修复了。

关于这个紧急问题的解决方案发布之后,你准备回到被打断之前时的工作中。然而,你应该先删除hotfix分支,因为你已经不再需要它了——master分支已经指向了同一个位置。你可以使用带-d选项的gitbranch命令来删除分支:

$gitbranch-dhotfixDeletedbranchhotfix(3a0874c).现在你可以切换回你正在工作的分支继续你的工作,也就是针对#53问题的那个分支(iss53分支)。

你在hotfix分支上所做的工作并没有包含到iss53分支中。如果你需要拉取hotfix所做的修改,你可以使用gitmergemaster命令将master分支合并入iss53分支,或者你也可以等到iss53分支完成其使命,再将其合并回master分支。

假设你已经修正了#53问题,并且打算将你的工作合并入master分支。为此,你需要合并iss53分支到master分支,这和之前你合并hotfix分支所做的工作差不多。你只需要检出到你想合并入的分支,然后运行gitmerge命令:

$gitcheckoutmasterSwitchedtobranch'master'$gitmergeiss53Mergemadebythe'recursive'strategy.index.html|1+1filechanged,1insertion(+)这和你之前合并hotfix分支的时候看起来有一点不一样。在这种情况下,你的开发历史从一个更早的地方开始分叉开来(diverged)。因为,master分支所在提交并不是iss53分支所在提交的直接祖先,Git不得不做一些额外的工作。出现这种情况的时候,Git会使用两个分支的末端所指的快照(C4和C5)以及这两个分支的工作祖先(C2),做一个简单的三方合并。

和之间将分支指针向前推进所不同的是,Git将此次三方合并的结果做了一个新的快照并且自动创建一个新的提交指向它。这个被称作一次合并提交,它的特别之处在于他有不止一个父提交。

需要指出的是,Git会自行决定选取哪一个提交作为最优的共同祖先,并以此作为合并的基础;这和更加古老的CVS系统或者Subversion(1.5版本之前)不同,在这些古老的版本管理系统中,用户需要自己选择最佳的合并基础。Git的这个优势使其在合并操作上比其他系统要简单很多。

既然你的修改已经合并进来了,你已经不再需要iss53分支了。现在你可以在任务追踪系统中关闭此项任务,并删除这个分支。

$gitbranch-diss53遇到冲突时的分支合并有时候合并操作不会如此顺利。如果你在两个不同的分支中,对同一个文件的同一个部分进行了不同的修改,Git就没法干净的合并它们。如果你对#53问题的修改和有关hotfix的修改都涉及到同一个文件的同一处,在合并它们的时候就会产生合并冲突:

$gitmergeiss53Auto-mergingindex.htmlCONFLICT(content):Mergeconflictinindex.htmlAutomaticmergefailed;fixconflictsandthencommittheresult.此时Git做了合并,但是没有自动地创建一个新的合并提交。Git会暂停下来,等待你去解决合并产生的冲突。你可以在合并冲突后的任意时刻使用gitstatus命令来查看那些因包含合并冲突而处于未合并(unmerged)状态的文件:

$gitstatusOnbranchmasterYouhaveunmergedpaths.(fixconflictsandrun"gitcommit")Unmergedpaths:(use"gitadd..."tomarkresolution)bothmodified:index.htmlnochangesaddedtocommit(use"gitadd"and/or"gitcommit-a")任何因包含合并冲突而有待解决的文件,都会以未合并状态标识出来。Git会在有冲突的文件中加入标准的冲突解决标记,这样你可以打开这些包含冲突的文件然后手动解决冲突。出现冲突的文件会包含一些特殊区段,看起来像下面这个样子:

<<<<<<contact:email.support@github.com

=======pleasecontactusatsupport@github.com
>>>>>>>iss53:index.html这表示HEAD所指示的版本(也就是你的master分支所在的位置,因为你在运行merge命令的时候已经检出到了这个分支)在这个区段的上半部分(=======的上半部分),而iss53分支所指示的版本在=======的下半部分。为了解决冲突,你必须选择使用由=======分割的两部分中的一个,或者你也可以自行合并这些内容。例如,你可以通过把这段内容换成下面的样子来解决冲突:

pleasecontactusatemail.support@github.com

上述的冲突解决方案仅保留了其中一个分支的修改,并且<<<<<<<,=======,和>>>>>>>这些行被完全删除了。在你解决了所有文件里的冲突之后,对每个文件使用gitadd命令来将其标记为冲突已解决。一旦暂存这些原本有冲突的文件,Git就会将它们标记为冲突已解决。

如果你想使用图形化工具来解决冲突,你可以运行gitmergetool,该命令会为你启动一个合适的可视化合并工具,并带领你一步一步解决这些冲突:

$gitmergetoolThismessageisdisplayedbecause'merge.tool'isnotconfigured.See'gitmergetool--tool-help'or'githelpconfig'formoredetails.'gitmergetool'willnowattempttouseoneofthefollowingtools:opendiffkdiff3tkdiffxxdiffmeldtortoisemergegvimdiffdiffusediffmergeecmergep4mergearaxisbc3codecomparevimdiffemergeMerging:index.htmlNormalmergeconflictfor'index.html':{local}:modifiedfile{remote}:modifiedfileHitreturntostartmergeresolutiontool(opendiff):如果你想使用除默认工具(在这里Git使用opendiff做为默认的合并工具,因为作者在Mac上运行该程序)外的其他合并工具,你可以在“下列工具中(oneofthefollowingtools)”这句后面看到所有支持的合并工具。然后输入你喜欢的工具名字就可以了。

如果你需要更加高级的工具来解决复杂的合并冲突,我们会在高级合并介绍更多关于分支合并的内容。

等你退出合并工具之后,Git会询问刚才的合并是否成功。如果你回答是,Git会暂存那些文件以表明冲突已解决:你可以再次运行gitstatus来确认所有的合并冲突都已被解决:

$gitstatusOnbranchmasterAllconflictsfixedbutyouarestillmerging.(use"gitcommit"toconcludemerge)Changestobecommitted:modified:index.html如果你对结果感到满意,并且确定之前有冲突的的文件都已经暂存了,这时你可以输入gitcommit来完成合并提交。默认情况下提交信息看起来像下面这个样子:

Mergebranch'iss53'Conflicts:index.html##Itlookslikeyoumaybecommittingamerge.#Ifthisisnotcorrect,pleaseremovethefile#.git/MERGE_HEAD#andtryagain.#Pleaseenterthecommitmessageforyourchanges.Linesstarting#with'#'willbeignored,andanemptymessageabortsthecommit.#Onbranchmaster#Allconflictsfixedbutyouarestillmerging.##Changestobecommitted:#modified:index.html#如果你觉得上述的信息不够充分,不能完全体现分支合并的过程,你可以修改上述信息,添加一些细节给未来检视这个合并的读者一些帮助,告诉他们你是如何解决合并冲突的,以及理由是什么。

不管如何修改后台进行生成,都无济于事,都还是生成1970的文件夹

很是纳闷。。。

翻了下代码:

一步步的查询,一步步的打断点,整整找了几个小时。。。

就在焦头烂额的时候,心想这下无解了吗,不可能

继续扫描代码,终于发现了,原来是在数据缓存上出了问题啊,缓存表上保存的栏目路径和实际栏目路径完全不是一回事,dedecms在配置文件缓存上需要有足够的权限才能访问,调整了权限后,对缓存表和实际栏目表对应起来,最终解决问题。

windows和linux版本的svn地址重新定位的方法(svnswitch):

直接上代码:

更新为192.168.1.13的方法:

windows下的TortoiseSVN更新地址:

第一步、备份程序文件和数据库。不备份升级后出现问题的可能性也不大,但是为了以防万一还是备份一下吧,养成个好习惯。

第三步、下载最新wordpress安装包。这个就简单了,wordpress.org去下也可直接博客后台下载。

第四步、解压安装包更新数据。将网站根目录下wp-admin和wp-includes两个目录中的文件换成最新下载的程序文件。

至此,WordPress手动升级工作全部完毕。灰常简单吧。

它包括三部分:

第一,对域名、目录、文件的命名;

第二,分隔符的使用;

第三URL长度及关键字词频的控制。这三部分相互制约、相互影响。在优化的过程中,我们必须掌握这三部分的内在联系,对各个部分进行充分的协调,这样才能达到最佳优化效果,否则将功败垂成。

搜索引擎在抓取页面的时候,对于页面的URL长度会存在一定的限制,对于超过限定长度的URL所指向的页面,搜索引擎就可以放弃收录,决定URL长度的主要因素包括域名的长度、路径长度、文件名长度。简单描述几点:

windows的未来渐渐的走向linux模式,也再朝向开发者靠近了,这是好事吗?

今天凌晨的Build2016大会上,微软为开发者尤其是Linux/Unix的开发者带来了好消息,Windows10将原生整合Linux命令行工具Bash,也就意味着不再需要借助虚拟机进行编译工作。

我们知道,绝大多数Linux发行版都使用BASH作为其默认的标准Shell,地位极其重要。

而且横向对比Windows平台的cmd来看,Linux的终端字体好看、功能强大,微软称,Bash命令行工具将在Windows应用商店中提供下载。

此次,Bash能进驻Windows,得益于和著名Linux发行商Canonical的合作。

最近在公司的服务器上安装了GitSever,开始从SVN转向到Git了,整理了一些在Git常用的命令。

初始化一个版本仓库

Clone远程版本库

添加远程版本库origin,语法为gitremoteadd[shortname][url]

查看远程仓库

添加当前修改的文件到暂存区

如果你自动追踪文件,包括你已经手动删除的,状态为Deleted的文件

提交你的修改

推送你的更新到远程服务器,语法为gitpush[远程名][本地分支]:[远程分支]

查看文件状态

跟踪新文件

从当前跟踪列表移除文件,并完全删除

仅在暂存区删除,保留文件在当前目录,不再跟踪

重命名文件

查看提交的历史记录

修改最后一次提交注释的,利用–amend参数

忘记提交某些修改,下面的三条命令只会得到一个提交。

假设你已经使用gitadd.,将修改过的文件a、b加到暂存区

现在你只想提交a文件,不想提交b文件,应该这样

取消对文件的修改

创建一个分支

切换工作目录到iss53

将上面的命令合在一起,创建iss53分支并切换到iss53

合并iss53分支,当前工作目录为master

合并完成后,没有出现冲突,删除iss53分支

拉去远程仓库的数据,语法为gitfetch[remote-name]

fetch会拉去最新的远程仓库数据,但不会自动到当前目录下,要自动合并

查看远程仓库的信息

建立本地的dev分支追踪远程仓库的develop分支

Nginx实战基础篇五如何让用户通过用户名密码认证访问我们的web站点

有时我们会有这么一种需求,就是你的网站并不想提供一个公共的访问或者某些页面不希望公开,我们希望的是某些特定的客户端可以访问。那么我们可以在访问时要求进行身份认证,就如给你自己的家门加一把锁,以拒绝那些不速之客。

实验环境:

DNS1192.168.100.102

一、查看当前系统参数

二、编辑虚拟主机配置文件

三、通过htpasswd命令生成用户名及对应密码数据库文件。

四、平滑重启nginx服务

五、DNS服务器上添加www1A记录

win10系统渐渐替换了win8.1,一些改进确实耳目一新,不过最大特点还是回归了,下面是一些个人认为比较重要的快捷键:

Win+C:强制调出Charm栏。

Win+左/右/上/左上/左下/右上/右下:将窗口快速缩放至1/2分屏、1/4分屏,其中1/4分屏为Win10新增功能,对应快捷键为Win+左上/左下/右上/右下。

Win+E:调出“主页”窗口。“主页”是Win10新增功能,包含最近访问文件夹、最近访问文件、收藏夹等,以资源管理器作为载体。

Win+Home:仅保留当前窗口,其余窗口最小化。

Win+Enter:直接启动“讲述人”。

Win+数字键:快速打开任务栏上已固定应用,比如Win+1打开第一个应用、Win+2打开第二个应用……以此类推,同时支持Metro应用。

Win+T:在任务栏图标间切换,但不打开,相当于鼠标悬停。

Alt+Tab:窗口切换器,当然Win10已经将它改进了,新版缩略图更大,并且是全屏显示。

Win+Tab:Win7时代的Flip3D(3D窗口切换器),到了Win10中变成了虚拟桌面切换器。嗯!和点击任务栏上那个按钮一个效果!

Ctrl+Shift+ESC:直接打开任务管理器。

Alt+左/右/上:快速跳转至上一个文件夹/下一个文件夹/父文件夹(仅限资源管理器)。

F11:沉浸式传统窗口布局(仅限传统程序)。

Win+Ctrl+左/右:切换当前虚拟桌面。

Win+Ctrl+D:建立新虚拟桌面。

Win+Ctrl+F4:关闭当前虚拟桌面(已打开窗口会自动移动到下一个桌面,不会丢失!)。

Win+D:显示传统桌面(即窗口最小化,沉浸式Metro需按动两下)。

Win+I:打开Charm栏→设置菜单(非新版Charm菜单)。

Win+X:打开简易版开始菜单,这个用来启动一些系统级程序还是很方便的。

Win+PrtSc:屏幕截图。按下该快捷键后,屏幕会瞬间暗一下,并伴有“咔嚓”一声,视觉感和手机上的截屏软件很像,截图自动存放至“图片”文件夹。

Ctrl+V:这是Win10命令提示符里新增的,功能就是将剪切板内容直接粘贴到提示符内。而在此之前,这组快捷键所能得到的结果,仅仅是一个^v。

win10|系统快捷键

大家都知道随机标签rand,调用标签也知道怎么写:

[field:textlink/]

{/dede:arclist}

但是仅仅有这个,在静态页面上是不能达到真正意义上的随机的,下面就是如何设置了:

为了能兼容多个版本,建议nocache=1还是加上为好,这样直接在前台需要的地方复制上面的这个js代码即可调用随机代码了。

今天在做phpcms的二次开发的时候,突然遇到一个不解的问题,一客户要求将phpcms的网页模块进行二次开发,在phpcms\modules\yp\index.php文件里面就有如下的一段代码:

困惑点就是setting_models里面为什么是73、76、72???

武汉建站luz工作室是一个集网站建设,网站优化,seo,仿站,软件开发,网页制作,源码修改等网络技术开发的帮助一切所需要的企业及个人排忧解难的一个团体。

关于这个工作室的更多详尽的介绍,也将在后面慢慢的”浮出水面“。

密码:

该前端项目采用的是基于gitrebase的形式去合并代码,而我之前使用git一直都是采用merge的形式合并分支代码,对于rebase一概不知

可以看出此时该项目仅有一次提交记录

这个时候打开github,刷新该项目的commit记录

发现远程仓库还是只有一次提交记录的,说明A同学还没有将自己最新的修改push到远程仓库,其他同学这个时候是看不到A的最新提交的

假设A同学基于dev分支开发功能,在本地新做了三次代码提交,gitlog如下

如果此时在A同学准备进行第四次本地提交之前,另一个同学B向远程仓库推送了一个master分支的提交,即此时master实际的提交已经向前走了

我们这个时候在github上操作一次commit,模拟另一个同学此时push了master分支

发现master分支已经向前走了一次提交

此时我们知道A同学开发的dev分支是基于C2提交点切出来的,而这个时候master分支已经被更新了

如果A同学开发完毕,需要将其所作的功能合并到master分支,他可以有两种选择

如果A同学选择用gitmerge的方式进行合并dev到master分支,那么git会这么做

可以发现其一并没有多出一次commit,其二dev后面几次提交的commithash值已经变了,包括C3,C4,C5

发现采用rebase的方式进行分支合并,整个master分支并没有多出一个新的commit,原来dev分支上的那几次(C3,C4,C5)commit在rebase之后其hash值发生了变化,不在是当初在dev分支上提交的时候的hash值了,但是提交的内容被全部复制保留了,并且整个master分支的commit记录呈线性记录

另外值得一提的是,当我们开发一个功能时,可能会在本地有无数次commit,而你实际上在你的master分支上只想显示每一个功能测试完成后的一次完整提交记录就好了,其他的提交记录并不想将来全部保留在你的master分支上,那么rebase将会是一个好的选择,他可以在rebase时将本地多次的commit合并成一个commit,还可以修改commit的描述等

如果你想要你的分支树呈现简洁,不罗嗦,线性的commit记录,那就采用rebase

THE END
1.创建Web站点视频教程i春秋韩教授为河北师大软件学院网络教室主任,河北地质大学客座教授,擅长计算机网络原理、网络安全等领域,从事IT技术培训工作十余年,并多年从事微软的产品技术支持服务,在排除操作系统和网络故障方面积累了大量的经验。 经过多年的积累沉淀,韩教授逐渐形成自己的授课风格,在本课程中通俗简单对高校计算机网络原理和计算机通信过程进https://www.ichunqiu.com/course/64846
2.web程序部署(1)云服务器中的mysql没有密码,应设置为空 //((MysqlDataSource)dataSource).setPassword("DKY020717."); ((MysqlDataSource)dataSource).setPassword(""); 1 (2)使用netstat查看mysql的端口号,是否需要修改代码 netstat -anp |grep mysql 1 3.打包(使用maven打成war包) (1)在xml文件中添加代码 <packahttps://blog.csdn.net/weixin_62689246/article/details/145404758
3.网站登录页面怎么制作,如何制作自己的网站框架?制作一个的网站登录页面,关注设计、用户体验和安全防护多个。合理布局、优化细节,打造一个专业、美观、易于操作的登录页面,可以方便提高企业品牌形象,吸引多潜客户。制作中,要注意细节,持续优化,以满足用户需求,为企业创造多价值。 怎么制作属于自己网站的链接 http://www.76ku.cn/I/6234136.html
4.ksweb搭建网站教程(ksweb使用教程)可以看到默认启动在8080端口启动lightttpd,网站目录为/mnt/sdcard/htdocs, 这里可以放我们的网站,如果想要对该服务器做一些设置则可以点击如下设置。 我们访问该地址可以看到如下的界面: 我下载的这个默认的PHP版本是7.2.3,我们也可以编辑配置文件,基本和常用的无异。 https://www.c4dmodels.cn/article/223312.html
5.快速网站建设步骤包括哪些,企业网站制作包括哪些?设计稿,进行前端开发工作,HTML、CSS、JavaScript技术的应用,以实现网站浏览器中的呈现。 6.后端开发 设计并开发网站的后端功能,数据库设计、服务器端逻辑编写,网站可以实现预期的功能。 7.数据库设计 网站存储和管理数据,设计数据库结构,数据的安全性和高效访问。 http://zhizuo.91go.cn/Rep/354693.html
6.网页制作在d盘新建网站怎么弄?永州职业技术学院毕业设计2, 上传网站文件 再再将制作好的网站文件上传到虚拟主机上的指定目录。用FTP客户端(如FileZilla)进行上传。 3, 配置网站 配置网站,如设置网站标题、关键词、描述。 4, 测试网站 公网环境中测试网站,网站正常访问。 D盘新建网站经过准备工作、网站制作、上传部署环节。的,相信读者已经掌握了D盘新建网站的全。制作网站http://zhizuo.zjzhj.cn/u/6575295.html
7.如何使用成品网站1.1.7快速搭建网站:优化功能与安全性分析成品网站1.1.7是一个不断完善和更新的互联网产品,旨在为用户提供一站式的网站建设和管理解决方案。随着互联网技术的飞速发展,越来越多的企业和个人希望能够快速搭建自己的网站,提升品牌形象,扩大市场份额。成品网站1.1.7正是针对这一需求推出的版本,集合了多种实用的功能和优化设计,致力于提升用户体验,帮助用户更高效http://m.hbwanbiao.com/wanbiao/182445.html
8.福州第四中学桔园洲中学福州第四中学桔园洲中学校园网络广播监控目录;支持深度优先扫描、广度优先扫描;支持三种以上扫描周期设定,自定义每日、每周、每月等时间进行Web扫描;支持在扫描过程对扫描时间、扫描URL地址、扫描进度进行实时监控;能对Web扫描的漏洞提供快速的补丁链接和修补方法;支持Web扫描白名单设置,排除已知的链接;支持对Web漏洞扫描进行日志记录,需有域名地址、漏洞描述、https://aiqicha.baidu.com/xbb/biddingDetail/bid_334050cdc68e483f544da776a5b9175526c5e705
9.莆田市教育局督导与安全一体化平台服务类采购项目附件莆田市教育局已根据政府采购相关法律法规,经相应程序确定采用 竞争性磋商 方式组织莆田市教育局督导与安全一体化平台服务类采购项目项目(以下简称:“本项目”)的政府采购活动,现欢迎国内合格的供应商前来参加。本项目由采购人委托莆田龙兴招标代理有限公司开展竞争性磋商活动。 1.项目名称:莆田市教育局督导与安全一体化平http://www.ptzfcg.gov.cn/upload/document/20221117/66524fea9146431bb6f4eab0fd7ed8f8.html
10.前端面试总结HTML&CSS: 对Web标准的理解、浏览器内核差异、兼容性、hack、CSS基本功:布局、盒子模型、选择器优先级及使用、HTML5、CSS3、移动端适应。JavaScript: 数据类型、面向对象、继承、闭包、插件、作用域、跨域、原型链、模块化、自定义事件、内存泄漏、事件机制、异步装载回调、模板引擎、Nodejs、JSON、ajax等。其他: HThttps://www.jianshu.com/p/30d486be695a
11.自学Java拿到15K的offer,掌握以下内容即可,阿里大佬的建议5. 学生管理系统的业务介绍 6. 学生管理系统的创建 第五步:掌握Git的使用 1. Git概述和特点 2. Git的下载安装 3. Git基本概念 4. Git操作入门 5. Git历史版本控制 6. Git分支版本控制 7. Git远程仓库的操作 8. Git远程托管平台应用(GitHub,码云) https://maimai.cn/article/detail?fid=1742470146&efid=hHm9FsGrBuA3IAry2l0b_A
12.ASP.NETCore适用于.NET的开源Web框架使用C#、HTML、CSS 和 JavaScript 构建在 Windows、Linux 和 macOS 上运行的 Web 应用和服务。https://asp.net/
13.WindowsServer2019Web服务器配置IIS站点配置win服务器虚拟目录可以和原有网站不在同一个文件夹,不在同一个磁盘,甚至可以不在同一台计算机上,但是客户端访问Web服务器网站时,感觉不到差异。虚拟目录也可以设置默认文档等属性,但是客户端访问时要和主网站使用相同的IP地址和端口。 6.5.1 创建虚拟目录 (1)打开IIS管理器,在左侧菜单中右键点击需要管理的Web站点【Defaulthttps://www.jb51.net/article/284259.htm
14.Alibaba.com:来自全球最大在线B2B市场的制造商供应商出口商当您在 Alibaba.com 下单和付款时,您将获得多种安全支付选项、产品与货运保障以及任何与采购相关问题的调解支持,您完全可以放心采购。 观看视频 了解更多 从搜索到履约,一站式完成,全面简化您的订购流程 搜索匹配项 搜索并筛选海量资源,找到匹配您企业的产品与供应商。 https://alibaba.com/
15.PageAdminCMSPageAdmin CMS系统是基于.Net MVC框架的网站管理系统,安全、稳定、灵活,全国用户超过百万,致力于为企业、学校、政府网站建设和网站制作提供企业级内容管理系统解决方案。https://www.pageadmin.net/
16.《网络安全管理员》技师理论知识模拟题(附答案).pdf57、某网站在设计对经过了威胁建模和攻击面分析,在开发时要求程序员编写安全的代码,但是在部署时由于管理员将备份存放在WEB目录下导致了攻击者可直接下载备份,为了发现系统中是否存在其他类拟问题,一下那种测试方式是最佳的测试方法()。A、模糊测试B、源代码测试https://www.renrendoc.com/paper/323618046.html
17.科学网—最佳46款免费软件(同步精译版)33最佳免费下载管理器 34最佳免费离线浏览软件 35最佳免费上传/下载监视工具 36最佳免费TCP设置优化工具 37最佳免费文件清理工具 38最佳免费资源监视工具 39最佳免费桌面便笺工具 40最佳免费安全删除工具 41最佳免费注册表编辑器 42最佳免费进程查看工具 43最佳免费系统信息查看工具 https://blog.sciencenet.cn/blog-66445-40404.html
18.Goby—资产绘测及实战化漏洞扫描工具Goby是一款基于网络空间测绘技术的新一代网络安全工具,它通过给目标网络建立完整的资产知识库,进行网络安全事件应急与漏洞应急。 Goby可提供最全面的资产识别,目前预置了超过10万种规则识别引擎,能够针对硬件设备和软件业务系统进行自动化识别和分类,全面的分析出网络中存在的业务系统。Goby可提供最快速对目标影响最小的扫https://gobysec.net/faq
19.计算机专业开题报告(精选12篇)输入数据和创建其他数据库的对象 工作进度的安排: 1)应用程序背景和需求分析:熟悉论文课题,查找资料,研究资料,熟悉编程语言,完成毕业设计开题报告及外文文献翻译。 完成时间:20xx年xx月 2)数据库设计:继续熟悉编程语言,查找资料,研究资料,确定数据库结构和数据结构,建立数据库,做好编程准备。 https://www.ruiwen.com/kaitibaogao/6120357.html
20.全新云界面!铁威马F2NAS2增强版评测铁威马F2NAS2增强版系统管理界面下可对用户权限控制、存储空间管理、云端远程访问、文件备份和共享、手机平板访问、迅雷PT下载管理、网站架设和数据库建设等更高级别应用操作。 产品:F2NAS-2增强版 铁威马 NAS网络存储 6云端访问及WEB文件管理 云端访问及WEB文件管理 第一次使用时,想要能进行远程访问,需要创建一个可供云端访问的新账户。https://stor.zol.com.cn/455/4551711_all.html
21.XiaomiSU7Xiaomi15系列,搭载小米澎湃OS,共筑「人车家全生态」让全球每个人都能享受科技带来的美好生活https://www.mi.com/
22.WEB开发技术软件项目管理软件测试技术软件体系结构网站aMaximum safety for oMaximum安全为[translate] a随餐服用。每日1-2粒 Along with meal takes.Daily 1-2 grain[translate] acontourdesyeux contourdesyeux[translate] aWEB开发技术、软件项目管理、软件测试技术、软件体系结构、网站设计与网页制作、网络安全技术、NET开发技术、JAVA程序设计、嵌入系统、软件测试等 http://eyu.zaixian-fanyi.com/fan_yi_1550950