- 博客(42)
- 资源 (3)
- 收藏
- 关注
原创 web安全总结
最近被公司强迫本鸟研究安全,没办法,看了一个月的资料,mark总结下。安全问题 解决方案 推荐工具 xss跨站脚本攻击 1.给关键cookie加上httponly属性,js将无法访问 2.对html标签、css标签、url地址等处用户输入定的关键字符 &,<,> ,",'等进行encode 1.httponly 2.owasp esapi csrf跨站请求伪...
2018-05-04 17:44:49
814
原创 ibatis批量插入对象list
INSERT INTO t_hotel_bedtype uid,bedtypeid,defaultoccupancy,bedtypename,bedtypenamecn,interfaceid, VALUES #{record.uid,javaType=java.lang.String},#{record.bedtypeid,javaType=java.lang.Strin
2017-01-12 11:19:42
1464
原创 乐观锁和悲观锁 对多并发处理
乐观锁(Optimistic Lock), 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制。乐观锁适用于多读的应用类型,这样可以提高吞吐量,像数据库如果提供类似于write_condition机制的其实都是提供的乐观锁。悲观锁(Pessimistic Lock), 顾名思
2017-01-08 11:27:09
588
转载 分布式高并发系统如何保证对外接口的幂等性?
要做到幂等性,从接口设计上来说不设计任何非幂等的操作即可。譬如说需求是:当用户点击赞同时,将答案的赞同数量+1。改为:当用户点击赞同时,确保答案赞同表中存在一条记录,用户、答案。赞同数量由答案赞同表统计出来。zookeeper之类的分布式锁重复消息是SOA服务实现中非常常见的问题,你永远不要指望调用方每次请求消息不一样,对于读操作,重复消息可能无害,可对于写操作很可能就
2017-01-08 11:08:48
1980
原创 负载均衡 集群
负载均衡的源地址哈希(Hash)法:(各种具体实现参考:http://www.cnblogs.com/szlbm/p/5588555.html)接受外来请求,怎么分配到集群中的某个服务器负载均衡根据客户端ip的hashcode对服务器列表大小取余数服务器权重:权重是会根据负载大小变化的,如果负载一直增加,那么权重就会一直减少到不是最大,也就不会再分配任务给它了,反而分配给
2017-01-08 10:58:46
423
转载 多线程对各种变量共享
静态变量:线程非安全。静态变量即类变量,位于方法区,为所有对象共享,共享一份内存,一旦静态变量被修改,其他对象均对修改可见,故线程非安全。实例变量:单例模式(只有一个对象实例存在)线程非安全,非单例线程安全。实例变量为对象实例私有,在虚拟机的堆中分配,若在系统中只存在一个此对象的实例,在多线程环境下,“犹如”静态变量那样,被某个线程修改后,其他线程对修改均可见,故线
2017-01-08 10:30:35
978
转载 spring aop 原理
spring AOP两种实现机制是什么?动态代理技术1.如果是有接口声明的类进行AOP 时,spring调用的是Java.lang.reflection.Proxy 类来做处理2.如果是没有接口声明的类时, spring通过cglib包和内部类来实现在AOP,权限控制,事务管理等方面都有动态代理的实现。JDK本身有实现动态代理技术,但是略有限制,即被代理的类必须实现
2017-01-04 17:09:13
301
转载 hibernate
Hibernate 的延迟加载lazy: true false proxy 这种延迟加载保证了应用只有在需要时才去数据库中抓取相应的记录。通过延迟加载技术可以避免过多、过早地加载数据表里的数据,从而降低应用的内存开销。Hibernate 的延迟加载本质上就是代理模式的应用,当程序通过 Hibernate 装载一个实体时,默认情况下,Hibernate 并不会立即抓取它的集合属性
2017-01-04 16:05:27
264
原创 hashmap原理
数组是栈,占用内存大,链表是堆,数组读取快,链表增删快HashMap底层就是一个数组结构,数组中的每一项又是一个链表。当新建一个HashMap的时候,就会初始化一个数组。当我们往HashMap中put元素的时候,先根据key的hashCode重新计算hash值,根据hash值得到这个元素在数组中的位置(即下标),如果数组该位置上已经存放有其他元素了,那么在这个位置上的元素将
2017-01-04 10:14:34
275
原创 activeMQ 的2种消息机制
mq:点对点, 发布/订阅JMS规范目前支持两种消息模型:点对点(point to point, queue)和发布/订阅(publish/subscribe,topic)。 点对点: 消息生产者生产消息发送到queue中,然后消息消费者从queue中取出并且消费消息。这里要注意: 消息被消费以后,queue中不再有存储,所以消息消费者不可能消费到已经被消费的消息。 Q
2017-01-04 09:55:12
968
转载 svn compare git
管理项目用svn,管理代码用git(分布式版本控制系统)。GIT跟SVN一样有自己的集中式版本库或服务器。但,GIT更倾向于被使用于分布式模式,也就是每个开发人员从中心版本库/服务器上chect out代码后会在自己的机器上克隆一个自己的版本库。可以这样说,如果你被困在一个不能连接网络的地方时,就像在飞机上,地下室,电梯里等,你仍然能够提交文件,查看历史版本记录,创建项目分支,等。对一些人来说
2017-01-03 16:53:46
337
转载 @Transactional
事务(Transaction)是并发控制的单位,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。SpringMVC中的事务注解@ Transaction就是为了方法执行中的对数据库操作事务的完整性做的,要么方法全部执行成功,所有sql语句全部正确执行,要么全部不做,就是这样。Spring的事物管理,一般加在service类上。也可以加在se
2016-12-21 09:30:03
5753
转载 HibernateSynchronizer的安装与使用
HibernateSynchronizer的作用是自动生成hibernate配置文件,即hibernate.cfg.xml文件,映射文件,Plain Object类文件和一些基础数据库操作文件。安装HibernateSynchronize从http://www.binamics.com/hibernatesynch/plugins/com.hudson.hibernatesynchroni
2014-05-09 11:49:15
654
原创 memcached的安装及使用
Cmd 到memcached根目录 1、安装 memcached.exe –d install 2、启动 memcached.exe -d start 此时memcached已经注册为开机启动服务 完成安装。
2014-05-09 11:40:01
620
原创 activeMQ win7 下启动不了
activeMQ启动不起来解决方法: 如果你是windons 7系统,停止Internet Connection Sharing (ICS)服务 开始菜单-->运行-->services.msc找到Internet Connection Sharing (ICS)服务,改成手动启动或禁用
2014-05-09 11:13:40
861
原创 memcache特殊字符处理
互联网项目开发目前比较流行的缓存服务分别是memcache和redis两种都是非关系型缓存,即按照方式存取Java缓存框架 EhCache EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvidermemcached服务默认占用的端口是11211,占用的最大内存默认是64M。set valu
2014-05-09 11:08:25
1197
原创 servlert中处理spring Bean
public class InitServlet extends HttpServlet { private static final long serialVersionUID = -5826096764263027718L; public void destroy() { super.destroy(); } public void init() throws Servl
2014-05-09 11:04:57
1113
原创 对眼睛最舒适的颜色
elipse 背景色1、打开window->Preference,弹出Preference面板 2、展开General标签,选中Editors选项,展开。 3、选中 Test Editors,右边出现Test Editors面板。 面板中有这样一个选项:Appearance color options; 其中是各种板块颜色的设置,其中有一项是backgrou
2014-05-09 11:02:51
3555
原创 InvalidDataAccessResourceUsageException
异常:org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute query; nested exception is org.hibernate.exception.SQLGrammarException: could not execute query解决:hbm等和db映射不一致
2014-05-09 11:01:28
10150
2
原创 win7 下ping,telnet,端口等处理
ping 192.168.1.150开启telnet服务:net start telnet//start telenttelnet 192.168.1.150 1433解决类似80端口被占用问题:netstat -ano 显示端口和pid禁用http.sys:(可以看到pid 4 80端口的被NT kernel & System 占用)1. net st
2014-05-09 11:00:16
3861
原创 远程桌面连接数
开始-》运行-》gpedit.msc,打开策略组编辑器,在树状菜单中选择计算机配置-》管理模板-》终端服务,在右侧窗口中打开“限制连接数量”,选择“已启用”,修改“TS允许的最大连接数”,确定。完成以上两步可以解决远程连接最大值你能为3个(包括本地控制台)的问题。如果需要使多用户可以同时使用同一个用户名登录远程连接,那么还需要
2014-05-09 10:57:40
1045
原创 查看电脑开机记录和时间
查看电脑开机记录和时间1.开始----〉运行2.输入:eventvwr,其实就是事件查看器3.windows日志->系统->右键筛选4.在筛选器下选择“事件ID”,并输入 60055.然后在时间范围上面选择好自己想要查看的时间范围(关机:6006)
2014-03-27 11:04:04
1333
转载 spring jdbctemplate的增删改查sample
1.首先先添加两个包:c3p0-0.9.1.2.jar 和 mysql-connector-java-5.1.7-bin.jar 创建一个file jdbc.propertiesJava代码 DriverClass=com.mysql.jdbc.Driver jdbcUrl=jdbc\:mysql\://localhost\:
2014-03-26 10:28:15
899
原创 java常用加密方法
不可逆加密:MD5,SHAMD5加密方法如下:public static String MD5(String plainText, String encode) { StringBuffer buf = new StringBuffer(); plainText = defaultString(plainText); try { // 根据MD
2014-03-26 10:15:36
623
原创 HttpURLConnection
import java.io.BufferedReader;import java.io.DataOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java
2014-03-25 17:33:23
722
原创 shell脚本中的bash错误:$'\r': command not found [caca]
一打开窗口,bashell一调出,就会弹出一个错误:bush:$'\r': command not found如果在windows环境下集成unix的操作平台,一些dos格式的文件,尤其是末尾的回车换行("\n\r"),而应该是unix的,只要个回车("\n")。因此只要一旦用记事本或者写字板打开编辑的话,就会报错解决方案:下载一个dos2unix命令包
2014-03-21 14:16:40
4323
原创 java 中各种对象(po,vo,dto,bo)分类
PO:persistant object持久对象BO:business object业务对象VO :ViewObject表现层对象DTO :Data Transfer Object数据传输对象一句话总结:po 对应数据库一条记录,dto就是po的一部分属性,用来传输到客户端,然后到了表示层,对应画面的就是vo。
2014-03-21 14:08:24
1231
转载 集群 分布式计算
服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就象是只有一个服务器 集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份,从而使得任何一个机器坏了整个系统还是能正常运行
2014-01-14 15:02:37
1565
原创 谈谈Apache,tomcat,jboss,weblogic,websphere等各主流服务器
接触了那么多服务器,抽时间稍微总结下了先,不足的地方以后再补充改进,欢迎大家指教。 首先money的问题:Weblogic 和 Websphere 是收费的(部分小公司什么的就不用说了). http 容器: apache、IIS等这些不涉及java组件的容器,说白了就是静态页每一个网页服务器程序从网络接受HTTP请求,然后提供HTTP回复给请求者。HTTP回复一般包含一个HTM
2013-06-18 11:29:44
4307
转载 flex tree 自动显示横向滚动条
package com.anydata.consumer.components{ import flash.events.Event; import mx.controls.Tree; import mx.core.ScrollPolicy; import mx.core.mx_internal; /** * 自动显示横向滚动条 */ public clas
2013-05-31 11:47:56
908
转载 Spring如何处理线程并发
我们知道Spring通过各种DAO模板类降低了开发者使用各种数据持久技术的难度。这些模板类都是线程安全的,也就是说,多个DAO可以复用同一个模板实例而不会发生冲突。我们使用模板类访问底层数据,根据持久化技术的不同,模板类需要绑定数据连接或会话的资源。但这些资源本身是非线程安全的,也就是说它们不能在同一时刻被多个线程共享。虽然模板类通过资源池获取数据连接或会话,但资源池本身解决的是数据连接或
2013-02-28 16:39:27
616
原创 rowid 和 rownum的使用
两者都是伪列,rowid 多用于 查找和删除重复记录(1).适用于有大量重复记录的情况(列上建有索引的时候,用以下语句效率会很高): Delete empa Where ROWID Not In(Select Min(ROWID) From empa Group By empno);(2).适用于有少量重复记录的情况(注意,对于有大量重复记录的情况,用以下语句效率会很
2013-02-27 10:44:00
622
原创 synchronized同步的级别
对于非static的情况,synchronized是对象级别的,不同的对象之间互不影响对于static的情况,synchronized是类级别的,它对类的所有对象都起作用
2013-02-26 20:51:33
617
原创 Spring 远程调用 HTTP invoker
Spring HTTP invoker是spring框架中的一个远程调用模型,执行基于HTTP的远程调用(意味着可以通过防火墙),并使用java的序列化机制在网络间传递对象。所以所有的pojo类必须实现序列化接口webserviceHTTP invoker跨平台,跨语言只支持java语言支持SOAP,提供wsd
2013-01-14 17:07:02
978
原创 索引对NULL不起作用的解决方案
CREATE INDEX OPR_DATA.KRI_DSMT_MAP_LV_INDEX ON OPR_DATA.KRI_DSMT_MAP(LV_NODE_ID,0);--复合索引 , 处理索引对NULL不起作用orNVl(LV_NODE_ID,-1);
2012-11-29 11:10:18
768
原创 union
Union,对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;Union All,对两个结果集进行并集操作,包括重复行,不进行排序;Intersect,对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;Minus,对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序。 可以在最后一个结果集中指定Order by子句改变排序方式。
2012-11-29 11:08:46
367
原创 oracle escape
'%','_'转义为它们原来的字符的意义,被定义的转义字符通常使用'\',但是也可以使用其他的符号。SQL> select * from t11 where name like '%_%'; NAME ---------- aa_a aaa SQL> select * from t11 where name like '%\_%' escape '\'; N
2012-11-29 11:05:18
525
转载 优化sql语句提高oracle执行效率 .
(1)选择最有效率的表名顺序(只在基于规则的优化器中有效): Oracle的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在 FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择交叉表 (intersection table)作为
2012-11-29 10:20:25
849
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人