-
Linux修改SSH端口
昨天我把`SSH`的端口修改了,发现今天一个攻击的也没有了。Linux的`SSH`登陆端口是`22`,如果你不修改,每天都会收到非常多的攻击,其实很多攻击估计都是用的脚本,所以修改一下端口基本上就没有受到攻击了,当然除了有人故意攻击你。修改教程:1.修改`/etc/ssh/sshd_config`的`Port`为其他端口2.重启`ssh`:`servicesshdrestart`**当然比较重要的就是要记住防火墙设置,还有一个非常重要的就是一定要先测试一下能连接在关闭当前的`shell`窗口,否者哭都来不及**。
Linux SSH -
Linux安全增强
记一下这两天搞的一些琐事。*防火墙屏蔽了`3306`端口*修改ssh的端口号,修改文件`/etc/ssh/sshd_config`的`Port`字段*修改了`Tomcat`的`JSESSIONID`的名称,其实我之前也好奇为什么我没有使用`JSP`后缀,百度云观测知道我使用的开发语言是`Java`,最后我才发现`cookie`里面的`name`为`JSESSIONID`,于是乎改了一下,第二天发现开发语言变成了未知:![百度云测](//static.acgist.com/resources/images/article/201704/14915343305851001.png)修改`JSESSIONID`的地址就是`tomcat/conf/service.xml`中`Context`节点`sessionCookieName`属性*使用`trimDirectiveWhitespaces`对`JS`中标签解析后的空行处理
Linux 安全 -
Nginx错误
首先我们来解决`last`和`break`的区别:```roothtml;indexindex.html;location/c/{rewrite.*/;}location/a/{rewrite.*/c/last;}location/b/{rewrite.*/c/break;}```访问`localhost/a/`时访问的是`html/index.html`访问`localhost/b/`时访问的是`html/c/index.html`好了,然后我们修改配置:```location/a/{rewrite.*/a/last;}```这种情况访问时,系统提示`500`错误,错误日志:```rewriteorinternalredirectioncyclewhileprocessing"/a/",client:127.0.0.1,server:localhost,request:"GET/a/HTTP/1.1",host:"localhost"```那么下面这个情况呢:```location/b/{rewrite.*/b/break;}```这个情况就比较复杂了第一种情况:路径`html/b/`不存在时,提示`404...
Nginx last break -
错误日志
错误日志输出时,尽量输出能够准确标记定位错误的信息,比如ID,错误内容,引发错误的类的属性值。因为本地测试时,只有你一个人产生的日志,日志量少容易排查。但是生产环境你可能就很难追踪到错误信息,因为错误看起来都是一样。
错误日志 -
JSONObjectProxy
`JSONObject`这个类使用`getString`方法时,如果没有`key`时,会提示`net.sf.json.JSONException:JSONObject["key"]notfound.`错误。所以这里写了一个代理程序,判断是否为空,代码如下:```javapackagecom.demo.json;importjava.math.BigDecimal;importnet.sf.json.JSONNull;importnet.sf.json.JSONObject;/***代理JSONObject对象*不能继承JSONObject,此对象为final*/publicclassJSONObjectProxy{privateJSONObjectjson;publicJSONObjectProxy(JSONObjectjson){if(json==null)thrownewIllegalArgumentException("参数错误");this.json=json;}publicStringgetString(Stringkey){if(json.containsKey(key)){Objectvalue...
JSONObjectProxy -
测试
最近感觉活的有点迷迷糊糊,也许是刚刚放完年假的关系。说到测试,我其实是一个非常不喜欢测试的人。也是最近经常出问题,所以这里也记录一下给自己一点警戒。修改代码前一定要先想清楚导致问题的原因,然后再修改。修改时要考虑到所有的因数,因为很多方法不止一个地方用到,其他的地方也会用到。修改后一定要测试,因为很多因素会导致出现问题。测试,不仅仅要测试成功,失败也很重要。反反复复,各种情况下考虑。还有就是以前出现过的问题,修复了,修改了相关代码最好也进行测试,防止旧病复发,所以最好是将测试框架进行自动化测试。
测试 -
java.lang.NoSuchMethodError
这个错误其实很明显,就是没有这个方法,一般情况可能是更新代码少了文件。但是今天遇到一个奇怪的事情,修改的文件都已经更新过了,但是依旧出现了这个问题,究竟为何?```java.lang.NoSuchMethodError:xxxx.xxxx.ClassName.select(ILjava/lang/String;)Lxxxx/xxxx/xxxxE```想了很久,我把全部代码放了一遍后发现没有问题了,想起了看过的一本书说过更新代码的一个陷阱就是有些方法修改后,引用方法的地方也会在编译的时候发生变化。如下代码:`A.java````javapublicclassA{publicstaticvoidmain(String[]args){inta=0;Bb=newB();b.say(a);}}````B.java````javapublicclassB{publicvoidsay(intinput){System.out.println("输入值:"+input);}}```编译运行:```bashE:\cert>javacA.javaE:\cert>javaA输入值:0```然后修改`B.java````...
Java NoSuchMethodError -
Maven项目JUnit报错
今天一个项目出现一下debug信息:```2017-02-2315:22:36,175DEBUG[org.springframework.core.type.classreading.AnnotationAttributesReadingVisitor]-Failedtoclassloadtypewhilereadingannotationmetadata.Thisisanon-fatalerror,butcertainannotationmetadatamaybeunavailable.java.lang.ClassNotFoundException:org.junit.Testatorg.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1308)atorg.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1142)atorg.springframework.core.type....
JUnit Maven Spring -
Apache配置证书问题
今天使用Apache配置SSL出现了一个问题,使用电脑浏览器访问显示了绿锁,但是在手机端访问时,微信访问不了,UC和QQ提示错误,最后发现原来是没有配置中继证书:`SSLCertificateChainFile`。
Apache -
EasyMock模拟HttpServletRequest进行JUnit测试
使用JUnit测试的时候,HttpServletRequest需要进行模拟才可以,所以就用到了EasyMock,使用方法如下:```javapublicstaticvoidmain(String[]args)throwsUnsupportedEncodingException{StringqueryString="name=acgist&age=24";String[]queryStrings=queryString.split("&");intindex;Stringkey,value;Mapmap=newHashMap();HttpServletRequestrequest=EasyMock.createMock(HttpServletRequest.class);for(Stringparas:queryStrings){index=paras.indexOf("=");key=paras.substring(0,index);value=URLDecoder.decode(paras.substring(index+1),"utf-8");map.put(key,value);Easy...
JUnit EasyMock HttpServletRequest -
作图工具-SmartArt
之前看过一些漂亮的知识图谱,我一直在找是什么工具做的,今天才发现原来是Word里面的SmartArt。当然还有很多图形工具或者建模工具:Visio、PowerDesigner、RationalRose等在线的工具:百度脑图、ProcessOn等
SmartArt 作图工具 -
使用IP调用HTTPS的WebService问题
错误信息:```Causedby:javax.net.ssl.SSLHandshakeException:java.security.cert.CertificateException:Nosubjectalternativenamespresentatsun.security.ssl.Alerts.getSSLException(Alerts.java:192)atsun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1949)atsun.security.ssl.Handshaker.fatalSE(Handshaker.java:302)atsun.security.ssl.Handshaker.fatalSE(Handshaker.java:296)atsun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1509)atsun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.j...
Java HTTPS WebService -
SimpleDateFormat的线程安全问题
今天数据库保存的时间有错乱了,以前我以为是服务器的时间有问题,今天才发现原来是`SimpleDateFormat`这个类的`format`方法不是线程安全的,里面使用的`calendar`是个类变量,所以导致多线程静态对象出现了数据错乱或以下的一些异常:```Exceptioninthread"pool-1-thread-123"java.lang.NumberFormatException:Forinputstring:""atjava.lang.NumberFormatException.forInputString(NumberFormatException.java:65)atjava.lang.Long.parseLong(Long.java:601)atjava.lang.Long.parseLong(Long.java:631)atjava.text.DigitList.getLong(DigitList.java:195)atjava.text.DecimalFormat.parse(DecimalFormat.java:2051)atjava.text.SimpleDateFormat.su...
Java SimpleDateFormat -
微信链接跳转
今天发现一个奇怪的事情,微信里面比较长的URL复制到对话框和使用JS跳转都不能访问。但是使用重定向却可以,感觉是被微信给屏蔽了。短一点的链接没问题,长的链接基本上GG。解决办法正在寻觅中。其实问题很简单,URL里面带有**localhost**关键字。
微信 -
思考问题
1.确认问题2.引发问题的所有因素数值的正负、字符串长度、空值、异常、网络等等3.需要达到的目标4.修改和修改后有可能引发的连锁反应>参考:[https://www.douban.com/group/topic/40236353/](https://www.douban.com/group/topic/40236353/)[https://www.zhihu.com/question/20962587](https://www.zhihu.com/question/20962587)
思考问题 -
@media中max-width和max-device-width
`max-device-width`和`max-width`的区别:1.`max-device-width`是设备整个显示区域的宽度,例如,真实的设备屏幕宽度。2.`max-width`是目标显示区域的宽度,例如,浏览器宽度。3.如果使用`max-device-width`,那么在PC浏览器上浏览网页时,缩小或放大浏览器时是不执行CSS的,因为“PC设备”没有变化。但如果使用`max-width`,缩小或放大浏览器时是执行CSS的,因为“显示区域”即浏览器大小发生了变化。4.如果使用`max-device-width`,那么当手机由竖变横时,CSS是不执行的,因为“手机宽度”并没有变化。如果使用`max-width`,那么当手机由竖变横时,CSS是执行的,因为“显示区域”发生了变化。5.通常,面向“移动设备”用户使用`max-device-width`;面向“PC设备”用户使用`max-width`。另外使用`@mediascreenand(max-width:1200px){html{font-size:18px;}}`这样设置的时候,最好使用的`max-xxxx`进行判断。`@mediaonlyscree...
@media max-width max-device-width -
Calendar
之前定时任务一直没有问题,今天把时间改为上午所有任务都要执行完成,然后发现了居然一直再重试相同的几个任务。问题就是时间的问题:```javaCalendarnow=Calendar.getInstance();now.setTime(newDate());now.set(Calendar.HOUR,0);now.set(Calendar.MINUTE,0);now.set(Calendar.SECOND,0);now.set(Calendar.MILLISECOND,0);```上面的代码,如果是上午执行,结果`yyyy-MM-dd-00:00:00`,下午的时候就会变成`yyyy-MM-dd-12:00:00`,就是这个问题导致了时间比较的时候出了问题。所以应该使用**HOUR_OF_DAY**。```javaCalendarnow=Calendar.getInstance();now.setTime(newDate());now.set(Calendar.HOUR_OF_DAY,0);now.set(Calendar.MINUTE,0);now.set(Calendar.SECOND,0);now.set...
Calendar -
统计Spring定时任务当天执行次数
以下代码为统计Spring定时任务当天执行的次数:```java/***定时任务统计*/publicclassCronCountUtils{/***计算一天内定时任务执行次数*@paramexpression表达式*@return执行次数*/publicstaticfinalintcount(Stringexpression){returncount(null,expression);}/***计算一天内定时任务执行次数*@paramdate时间*@paramexpression表达式*@return执行次数*/publicstaticfinalintcount(Datedate,Stringexpression){CronSequenceGeneratorgenerator=newCronSequenceGenerator(expression,TimeZone.getDefault());Calendarcalendar=Calendar.getInstance();calendar.set(Calendar.HOUR_OF_DAY,0);calendar.set(Calendar.MINUTE,0);c...
Spring 定时任务 -
HTML5不刷新页面修改地址栏
现在很多页面都是用`ajax`来进行数据交互,但是有些场景就会比较尴尬,比如个人中心,进去点修改密码,但是地址栏没有变,下次复制地址后进来还是个人中心,并不是修改密码,所以就有了这个`history.pushState`这个东西,直接修改地址栏的地址。废话就这么多,看代码:```javascripthistory.pushState(state,title,url);````state`:状态参数,通过`history.state`可以获取,其他页面跳转的值为`null``title`:页面标题(不过好像并没有什么用)`url`:修改后的地址这个修改地址栏后放入到`history`里面,使用`history.back`,`history.go`或者浏览器的前进后退都有效果。还有一个`history.replaceState`这个不会放入到`history`中,只能修改当前地址。DEMO地址:[http://www.acgist.com/demo/history/index.html](http://www.acgist.com/demo/history/index.html)>参考文章:[http://...
history HTML5 修改地址栏 -
WordPress固定连接
使用固定连接更加有利于SEO,URL也更加优美。开启方法如下:*修改`httpd.conf`,开启网站目录的重写功能:```OptionsFollowSymLinksAllowOverrideNone```改为:```OptionsFollowSymLinksAllowOverrideAll```*在你的网站根目录,添加`.htaccess`文件:```bashtouch.htaccess```*然后修改用户为Apache,这样就不用手动修改,直接在后台固定连接配置就可以了:```bashchown-Rapache:apache.htaccess```
WordPress 静态化 固定连接