List 转换为 String数组
1 | List<String> list = new ArrayList<String>(); |
String数组转List
1 | String[] arr = new String[] {"1", "2"}; |
List 转换为 String数组
1 | List<String> list = new ArrayList<String>(); |
String数组转List
1 | String[] arr = new String[] {"1", "2"}; |
1 | public int[] operate(int[] a, int[] b, String operation){ |
当收到他人的Pull Request后,该如何手动合并。实际上在很多情况下,Pull Request所含提交有可能造成合并冲突,那样的话GitHub不再、也不能提供自动合并功能,就必须采用手工合并的方式。
将Pull Request发出者的派生版本库添加为一个新的源。(该操作是在本地的git目录下)
例如收到来自gotgithub用户的Pull Request,不妨以wangxinyu为名添加新的源。
1 | $ git remote add wangxinyu https://git.oschina.net/goldgov-wangxinyu/miniedu.git |
此时版本库中有两个源,一个克隆时自动建立的origin,另外一个就是新增加的gotgithub。
1 | $ git remote -v |
获取远程版本库gotgithub的分支和提交。
1 | $ git fetch wangxinyu |
现在除了本地分支master外,还有若干远程分支,如下:
1 | $ git branch -a |
将远程分支remotes/wangxinyu/master(可简写为wangxinyu/master)合并到当前分支中。
1 | $ git merge wangxinyu/master |
查看提交说明,看到此次合并没有产生不必要的合并提交。
1 | $ git log --graph -2 |
将合并推送到GitHub版本库中。
1 | $ git push |
精力有限,知识无限! 有时候你等不到,就自己去找,不求人!对版本号的意义加以说明。
Alpha: Alpha是内部测试版,一般不向外部发布,会有很多Bug.除非你也是测试人员,否则不建议使用.是希腊字母的第一位,表示最初级的版本,alpha 就是α,beta 就是β ,alpha 版就是比beta还早的测试版,一般都是内部测试的版本。
Beta: 该版本相对于α版已有了很大的改进,消除了严重的错误,但还是存在着一缺陷,需要经过多次测试来进一步消除。这个阶段的版本会一直加入新的功能。
RC:(Release Candidate) Candidate是候选人的意思,用在软件上就是候选版本。Release.Candidate.就是发行候选版本。和Beta版最大的差别在于Beta阶段会一直加入新的功能,但是到了RC版本,几乎就不会加入新的功能了,而主要着重于除错! RC版本是最终发放给用户的最接近正式版的版本,发行后改正bug就是正式版了,就是正式版之前的最后一个测试版。
GA:(general availability) 比如:Apache Struts 2 GA这是Apache Struts 2首次发行稳定的版本,GA意味着General Availability,也就是官方开始推荐广泛使用了。
Release: 该版本意味“最终版本”,在前面版本的一系列测试版之后,终归会有一个正式版本,是最终交付用户使用的一个版本。该版本有时也称为标准版。一般情况下,Release不会以单词形式出现在软件封面上,取而代之的是符号(R)。
在Mysql下使用Group by查询的时候会出现如下错误:
1 | Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'GT_SIGNATURE_STU.SINGN_STU_ID' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by |
在上述的错误中发现,其有一个sql_mode=only_full_group_by
的问题。通过查找发现该模式对应的列必须有个聚合函数。
具体参见: https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html
关于sql_mode的介绍,参见如下介绍:
1 | MySQL的sql_mode合理设置 |
在web请求中可能涉及到ajax的get请求,参数为中文的情况。在Chrome或者Firefox下,请求正常,但IE下返回结果不对。通过比对发现,在IE浏览器下的请求参数出现了乱码。
解决方案:
1 | var url = CONTROLLER_URL + "/findResourceListByPage.json"; |
将get请求的url+param使用encodeURI方法进行转化。之后就可以正常进行参数传递了。
我们在前端开发的时候有时候会用到在loop中发送请求的情况。例如:
1 | for(var i = 0; i < 100; i++){ |
在使用的时候 我们会发现获取的数据,不是我们想要的。
原因:i值在整体走完后才发送请求。
解决方案:
1 | for(var i = 0; i < 100; i++){ |
当然,类似于这类的循环发请求,尽量不要采用。
在文件下载时通过在报文头中设置文件名来设置下载的文件名。例
1 | response.setHeader("Content-Disposition", "attachment;fileName=" + fileName) |
但假如文件名为中文的时候,会发现文件名乱码。处理方法是讲文件名根据不同的浏览器转码。
1 | /** |
转载地址 https://my.oschina.net/binny/blog/17469
最近做一个项目用到FTP和其它系统进行文件传输,结果在FTP网络连接的问题上花了很多时间,由于太久没搞多FTP,忘记了FTP不单单开放21端口,客户端采用不同连接模式对网络有不同。在此重温一下FTP的主动模式和被动模式的相关知识。
在使用FTP时,如果客户端机器和FTP服务器双方之间的所有端口都是开放的,那连接不存在问题。如果客户端与服务器之间有防火墙,如果没配置好防火策略和采用合适的连接模式,会导致登录成功,但无法List列表的问题。要避免出现这样的问题,首先要了解FTP的工作模式。
PORT中文称为主动模式,工作的原理: FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,客户端随机开放一个端口(1024以上),发送 PORT命令到FTP服务器,告诉服务器客户端采用主动模式并开放端口;FTP服务器收到PORT主动模式命令和端口号后,通过服务器的20端口和客户端开放的端口连接,发送数据,原理如下图:
PASV是Passive的缩写,中文成为被动模式,工作原理:FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,发送PASV命令到FTP服务器, 服务器在本地随机开放一个端口(1024以上),然后把开放的端口告诉客户端, 客户端再连接到服务器开放的端口进行数据传输,原理如下图:
从上面的运行原来看到,主动模式和被动模式的不同简单概述为: 主动模式传送数据时是“服务器”连接到“客户端”的端口;被动模式传送数据是“客户端”连接到“服务器”的端口。
主动模式需要客户端必须开放端口给服务器,很多客户端都是在防火墙内,开放端口给FTP服务器访问比较困难。
被动模式只需要服务器端开放端口给客户端连接就行了。
我在实际项目中碰到的问题是,FTP的客户端和服务器分别在不同网络,两个网络之间有至少4层的防火墙,服务器端只开放了21端口, 客户端机器没开放任何端口。FTP客户端连接采用的被动模式,结果客户端能登录成功,但是无法LIST列表和读取数据。很明显,是因为服务器端没开放被动模式下的随机端口导致。
由于被动模式下,服务器端开放的端口随机,但是防火墙要不能全部开放,解决的方案是,在ftp服务器配置被动模式下开放随机端口在 50000-60000之间(范围在ftp服务器软件设置,可以设置任意1024上的端口段),然后在防火墙设置规则,开放服务器端50000-60000之间的端口端。
主动模式下,客户端的FTP软件设置主动模式开放的端口段,在客户端的防火墙开放对应的端口段。
哈哈,有人可能会问FTP服务器如何设置工作模式?实时上FTP服务器一般都支持主动和被动模式,连接采用何种模式是有FTP客户端软件决定。
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true