Arganzheng's Blog

stay hungry, stay foolish

maven学习笔记

maven的核心概念 maven的核心概念 坐标 依赖 仓库 生命周期 插件 继承和聚合 仓库 Maven中的仓库用来存放生成的构建和各种依赖。 本地仓库 远程仓库 中央仓库 私服(内部仓库) 其他重要的仓库 仓库和镜像 一般来说公司都会有一个私服,然后我们可以在本地的settings.xml中配置使用: <?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xs...

如何在系统启动时完成资源加载

背景 在我们的应用中,经常有这样的场景,就是需要在应用启动的时候就预先加载某些资源,如果加载失败,应用都不需要启动了。这些资源的加载,我们都会把他们封装在一个类的loadResource方法中。关键是这个方法如何在系统初始化的时候被调用。一般有两种方式。 法一:通过Spring触发loadResource方法 如果这个类是通过Spring加载的,那么可以让Spring初始化之后直接调用该类的loadResource方法。因为Spring框架基本都是系统启动的时候就加载的,而且对于ApplicationContext来说,其bean都是pre-loading的Lazy loading vs. pre-loading beans with Spring Frame...

XSS注入防御

成因 会提交有害参数,作用是把一些跳转,js等代码放进页面中执行,一般参数都会先闭合一些标签,然后加入有害的代码,比如下面的参数:back_text=%22%27%3E%3C/title%3E%3Cimg%09src=javascript:alert%28/XSS/%29%3E,这个其实是 "'></title><img src=javascript:alert(/XSS/)> 这个的编码形式,先闭合一个标签,目的是让恶意JS能够顺利执行。 危害 Xss主要就是用提交的参数可以操控到网页中的的返回,闭合一些标签或者添加一些标签,可以实现定时跳转,提交cookie,下载木马等一系列操作,可以说只要js可以做到,xss就可以做到,属于...

CSRF防御

什么是CSRF攻击 这个网上一大把解释,直接google就可以了。这里就不赘述了。 如何防御 目前对CSRF的基本都是一种处理方式——使用token校验。简单来说,就是对于每一个需要做CSRF检查的请求(一般是POST请求),服务端会根据一定的策略分配一个token(或者前端js生成。比较少见,因为这样token的算法暴露了。当然如果token需要的输入攻击者拿不到的话,问题不大。),这样当页面提交的时候,服务端判断该请求是不是需要做CSRF检查,如果是,则会拿用户提交的token跟后端保存的token(一般是在session中)或者用同样算法计算出来的token做比较,如果不同,则认为是CSRF攻击。 TIPS 下面的一些做法,可以在一定程度上提高CSR...

Spring使用@value annotation注入property变量和环境变量

@Value("#{welife.rpc.sendCoupon.api}") private String sendCouponApi; @Value("#{systemProperties['env']}") private String env; Spring 3.0之后支持$语法,即@Value("${welife.rpc.sendCoupon.api}") 注意:前提是要注入properties的bean是由Spring托管。

MySQL字符串比较大小写问题

刚刚才知道MySQL的varchar类型比较默认是忽略大小写的,还忽略最后的空格。C.5.5.1. Case Sensitivity in String Searches mysql> SELECT 'a' = 'A'; -> 1 解决方案是使用BINARY操作符10.1.7.7. The BINARY Operator mysql> SELECT BINARY 'a' = 'A'; -> 0 mysql> SELECT 'a' = 'a '; -> 1 mysql> SELECT BINARY 'a' = 'a '; -> 0

Java Heap OOM问题

今天线上API机器出问题了,很多机器告警,tomcat重启不久又挂掉。 看了一下日志,发现是OOM了: java.lang.OutOfMemoryError: Java heap space Dumping heap to java_pid21673.hprof ... Heap dump file created [1934558576 bytes in 8.670 secs] [Unloading class sun.reflect.GeneratedConstructorAccessor17] 2013-7-28 12:03:35 org.apache.tomcat.util.http.Parameters processParameters 320305...

配置文件串串SHOW

2009–18 星期四 热 一、有哪些配置文件 入口配置文件:web.xml;由web或应用服务器为每个web项目加载的配置文件。 应用上下文:包括web框架特有配置文件:如struts的struts-config.xml(或struts2的struts.xml)文件和SpringMVC的${dispatcherServletName}-servlet.xml配置文件。和Spring的配置文件,一般按层划分为业务层xxx-service.xml和持久层xxx-data.xml。 说明:事实上,web层配置文件也可以使用Spring配置,这就是所谓的框架整合。 二、配置文件的加载过程 web.xml是所有配置文件的入口配置文件,Tomcat在启动...

负载均衡

高性能高可用性的系统一般会有多层次的负载均衡(High-performance systems may use multiple layers of load balancing)。负责均衡的实现机制有硬件和软件两种。下面我们以top down的方式一层层介绍下去。 总体来说负责均衡分为无状态服务负载均衡,以及有状态的数据负载均衡两类。前者(比如web server,app Server)由于是无状态的,所以backen-server是对等的,可以路由到任何一台机器,路由的策略一般是业务无关的(灰度除外),比如backen-server的负载情况。而对于有状态的数据负载均衡(比如cache,MQ或者DB),对等是基本不可能的,因为数据存放多份带来的写压力以及一致性...

如何使用tomcat高效调试

1. 使用maven tomcat插件快速部署和启动web工程: mvn tomcat:run 如果要调试,可以先在命令行设置如下环境变量: Windows: set MAVEN_OPTS=-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 Linux: export MAVEN_OPTS=-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 然后在eclipse中就可以链接8000端口(可随意设定)进行调试了。 TIPS 如果是tomcat7的话,需要制定版本号:mvn tomcat7:run。 2. 使用E...

×