自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 资源 (4)
  • 收藏
  • 关注

原创 布隆过滤器

它是一种基于概率的数据结构,主要用来判断某个元素是否在集合内,它具有运行速度快(时间效率),占用内存小的优点(空间效率),但是有一定的误识别率和删除困难的问题。2、定义一个拦截器实现HandlerInterceptor接口,并重写preHandle,拦截制定路由路径及参数,到存储在redis的布隆过滤器中查询是否存在,不存在则直接返回,存在则放行。* 4. 判断某个key是否在集合时,用k个hash函数计算出k个散列值,并查询数组中对应的比特位,如果所有的比特位都是1,认为在集合中。

2024-05-21 22:43:38 317

原创 IpUtils

@param filter 过滤IP列表,支持后缀'*'通配,支持网段如:`10.10.10.1-10.10.10.99`* @param checkString 被检测的字符串。* @return 第一个非unknown IP地址。* @param addr byte地址。* 是否为IP,或 *为间隔的通配符地址。* @param ip 获得的IP地址。* @param ip 校验IP地址。* @param ip IP地址。* @return 本地IP地址。* @return 本地主机名。

2023-07-28 11:39:59 185

原创 redisUtils

@param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期。throw new RuntimeException("递增因子必须大于0");throw new RuntimeException("递减因子必须大于0");* 设置键值同时指定过期时间,键值不存在的时候可以设置进去。* @return 时间(秒) 返回0代表为永久有效。* @param delta 要增加几(大于0)* @param delta 要减少几(小于0)* @param time 时间(秒)

2023-07-27 22:49:12 63

原创 Java-Api控制层切面日志

/ 有些网络通过多层代理,那么获取到的ip就会有多个,一般都是通过逗号(,)分割开来,并且第一个ip为客户端的真实IP。* 特点:在目标方法之后执行的,能够获取到目标方法的返回值,可以根据这个返回值做不同的处理。//如果获取到的是127.0.0.1或0:0:0:0:0:0:0:1,就获取本地ip。// WL-Proxy-Client-IP:weblogic 服务代理。// Proxy-Client-IP:apache 服务代理。// X-Real-IP:nginx服务代理。

2023-07-12 23:47:18 135

原创 Java-Api异常拦截器

log.error("{} 接口调用异常,请求参数: {},异常信息:{}", request.getRequestURI(), request.getParameterMap(), e.getMessage(), e);log.error("{} 接口调用异常,请求参数: {},异常信息:{}", request.getRequestURI(), consumeContent(request), e.getMessage(), e);//方法参数不合法异常。

2023-07-12 23:41:11 123

原创 Java全局异常处理器

log.error("请求地址'{}',不支持'{}'请求", requestURI, ((HttpRequestMethodNotSupportedException)e).getMethod());log.error("请求地址'{}',权限校验失败'{}'", requestURI, e.getMessage());log.error("请求地址'{}',发生未知异常.", requestURI, e);log.error("请求地址'{}',发生系统异常.", requestURI, e);

2023-07-12 23:35:51 97

原创 Java加密短码

log.error("获取加密key字节异常!throw new RuntimeException("获取加密key字节异常!System.out.println("10进制:"+dataEncode);System.out.println("加密:"+dataEncrypt);System.out.println("解密:"+dataDecrypt);System.out.println("62进制:"+dataHash);

2023-07-12 23:18:35 74

原创 使用子查询可提升 COUNT DISTINCT 速度 50 倍

英文原文:Use Subqueries to Count Distinct 50X Faster [url]https://periscope.io/blog/use-subqueries-to-count-distinct-50x-faster.html[/url]出处:http://www.oschina.net/translate/use-subqueries-to-count-di...

2016-06-16 16:17:22 234 1

原创 事务及SSH框架相关配置

PROPAGATION_REQUIRED事务 采用编程式事务1、 getCurrentSession()与openSession()的区别?* 采用getCurrentSession()创建的session会绑定到当前线程中,而采用openSession()创建的session则不会* 采用getCurrentSession()创建的session在commit或rol...

2016-06-15 22:59:28 108

原创 java启动相应的windows程序来打开文件,"rundll32 url.dll,FileProtocolHandler " + sbUrl.toString...

[size=x-small][b]本文来自:[/b][/size][url]http://wujianjun0410.iteye.com/blog/944912[/url]这里有两种方法: (本人用到第一种方法)try{ Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + sbUrl.toSt...

2016-01-29 15:02:44 2925

原创 删除与查询某一文件下的所有文件

package com.smc.farm.test;import java.io.FileNotFoundException; import java.io.IOException; import java.io.File; public class FileOper { /** * 删除某个文件夹下的所有文件夹和文件 */ pub...

2016-01-21 09:19:31 139

原创 比较两集合(list/set..)元素是否相等(只要 List 含有相同元素(String Type)就可以,允许重复)...

如果是list则 转 list --> setHashSet, TreeSet 均可以实现元素唯一,以便比较。但前者元素无序,故速度快。 后者元素有序,如需二分查找之类算法有优势。具体代码:package com.nicekevin.test;import java.util.HashSet;import java.util.Iterator;import ...

2016-01-20 09:14:24 656

原创 ==和===的区别

[color=red]1、[/color]对于string,number等基础类型,==和===是有区别的 1)不同类型间比较,==之比较“转化成同一类型后的值”看“值”是否相等,===如果类型不同,其结果就是不等2)同类型比较,直接进行“值”比较,两者结果一样[color=red]2、[/color]对于Array,Object等高级类型,==和===是没有区别的进行“指针地...

2016-01-18 12:25:29 100

原创 a标签中的点击事件

删除后退[color=red]1.[/color]a href="javascript:js_method();"这种方法在传递this等参数的时候很容易出问题,而且javascript:协议作为a的href属性的时候不仅会导致不必要的触发window.onbeforeunload事件,在IE里面更会使gif动画图片停止播放。W3C标准不推荐在href里面执行javascript语句...

2016-01-07 20:24:47 246

原创 JS正则匹配充值时的 0.01的整数倍

var reg = /^0\.([1-9]|\d[1-9])$|^[1-9]\d{0,8}\.\d{0,2}$|^[1-9]\d{0,8}$/; var amount = 0.02;/^0\.([1-9]|\d[1-9])$|^[1-9]\d{0,8}\.\d{1,2}$|^[1-9]\d{0,8}$/;reg.test(amount);

2016-01-07 20:14:03 764

redisStudy.zip

1.redis支持的数据结构 string list hash set zset(基本回答) 加分项:另外redis还对这几种数据结构做了扩展,如GEO对位置计算,hyperLogLog做统计,bitmaps:redis底层存储value值都是存储的二进制数据,redis提供bitmaps(位图)可以直接访问或修改底层存储的二进制数据 2.redis线程模型 redis是单线程实现。 3.redis 提供的持久机制 redis 支持rdb和aof两种持久机制,redis4.0后支持混合持久化。rdb是定时的持久机制,宕机有可能会丢失最后一次持久化之后存在数据丢失。aof是基于操作日志追加的持久机制。(基本回答) 加分项: 1.rdb持久化原理 原理是redis会单独创建(fork)一个与当前进程一模一样的子进程来进行持久化, 这个子线程的所有数据(变量。环境变量,程序程序计数器等)都和原进程一模一样,会先将数据写入到一个临时文件中, 待持久化结束了,再用这个临时文件替换上次持久化好的文件 2.他什么时候fork子进程,或者什么时候触发rdb持久化机制 shutdown时,如果没有开启aof,会触发 配置文件中默认的快照配置 执行命令save或者bgsave save是只管保存,其他不管,全部阻塞 bgsave: redis会在后台异步进行快照操作,同时可以响应客户端的请求,但是在调用fork函数时是阻塞的,很快,可以忽略不计 执行flushall命令 但是里面是空的,无意义 3.aof原理? 原理是将Reids的操作日志以追加的方式写入文件,读操作是不记录的 2.触发机制(根据配置文件配置项) no:表示等操作系统进行数据缓存同步到磁盘(快,持久化没保证) always:同步持久化,每次发生数据变更时,立即记录到磁盘(慢,安全) everysec:表示每秒同步一次(默认值,很快,但可能会丢失一秒以内的数据) 以下问题都是基本回答: 4.redis支持事务吗 redis可以说是半支持事务(假事务),提供了一些在一定程度上支持线程安全和事务的命令。例如:multi/exec watch inc等。但是redis的事务并不支持回滚,即可以两个命令可以同时提交执行,但是如果有失败,成功的也不会回滚 5.你们公司使用的是什么集群模式 看你写的项目经验,如果你们公司数据量特别大,公司用缓存牛逼,就说Rediscluster,小公司可以说哨兵集群 1.哨兵模式 基本回答:哨兵主要就是启动哨兵(redis特殊)节点,对主节点进行监控,如果半数以上发现ping主节点不通了,认为主节点挂了,则进行故障转移,就是选出一个从节点代替主节点 2.Rediscluster集群模式 基本回答:Rediscluster是一个高可用集群,它基于分片(对key进行crc16,然后对16384取余)的原理,可以把他理解为是由多组哨兵集群组成,但是它不依赖哨兵 6.缓存穿透 缓存穿透指的是使用不存在的key进行大量的高并发查询,这导致缓存无法命中,每次请求都要穿透到后端数据库系统进行查询,数据库压力过大。 常用解决方案:将空值缓存起来。 其他解决方案:使用布隆过滤器(guava 19开始已支持布隆过滤器) 备注:如果你可以理解太白老师讲的基于redis位图自己实现的布隆过滤器,可以说说,更加分 7.缓存击穿 缓存击穿是指缓存中没有但数据库中有的数据(一般是缓存时间到期),这时由于并发用户特别多,同时读缓存没读到数据,又同时去数据库去取数据,引起数据库压力瞬间增大,造成过大压力 解决方案:1.互斥锁 如果项目不会多部署则可以使用jvm锁,如果会多部署则使用分布式锁 8.缓存雪崩 缓存雪崩指缓存服务器重启或者大量缓存集中在某一个时间段内失效 常用解决办法: 1.主要就是要搭建高可用集群,保证机器的高可用。 2.对不同的数据使用不同的失效时间,甚至对相同的数据、不同的请求使用不同的失效时间。

2019-10-28

spring.doc

1 Spring基本特征 6 2 Spring的组成 6 2.1 Spring的jar包 6 2.2 Spring配置文件 7 2.3 Spring API 8 3 Spring基本功能详解 8 3.1 SpringIOC 8 3.2别名Alias 11 别名拓展: 11 3.3 Spring容器内部对象的创建 12 Spring容器内部对象创建拓展: 12 3.3.1使用类构造器实例化(默认无参数) 14 3.3.2使用静态工厂方法实例化(简单工厂模式) 14 3.3.3初始化(创建)bean时机 15 Lazy-init初始化bean的时机拓展: 15 3.4 Bean的作用域 16 Scope单例多例作用域拓展: 16 3.4.1 singleton(默认值) 16 3.4.2 prototype 17 3.4.3 Request 17 3.4.4 Session 18 3.4.5 Global session 18 3.4.6 指定Bean的初始化方法和销毁方法 18 Bean的初始化和销毁拓展: 18 Spring的IOC总结: 20 3.5 依赖注入(DI) 20 3.5.1 使用构造器注入 20 3.5.2 使用属性setting方法进行注入 21 3.5.3 装配list集合 22 3.5.4 装配set集合 22 3.5.5 装配map 22 3.5.6 装配Properties 23 3.6 注解注入 23 注解注入拓展: 23 3.6.1 @Autowired 26 3.6.2 @Qualifier 27 3.6.3 @Resource 27 3.6.4 @PostConstruct 28 3.6.5 @PreDestroy 28 注解注入拓展: 28 3.7扫描注入 30 注解扫描拓展: 32 Mvc用注解写: 34 Spring容器IOC和di的整个启动过程: 38 3.8 spring中的继承 38 拓展spring为类中的属性赋值: 40 小结: 47 面向接口编程: 47 4 面向切面编程 52 4.1 代理模式 52 代理模式拓展: 52 4.1.1 JDK动态代理 58 JDK动态代理拓展: 59 4.1.2 CGLIB做代理 66 CGLIB动态代理拓展: 68 4.1.3 Spring的动态代理 71 4.2 AOP编程 71 4.2.1概念: 71 SpringAOP概念拓展: 73 之前实现了目标方法的动态调用,现在来实现切面的动态调用。 74 4.2.2 AOP实现的两种模式 78 4.2.2.1 xml形式 78 XML形式拓展: 81 异常通知处理例子: 91 不用spring异常通知,另一种处理异常 96 4.2.2.2Aop注解形式(了解) 99 注解注入拓展: 103 5 Spring数据库 106 5.1 Spring+JDBC 106 5.1.1 Jdbc编程特点 106 5.1.2引入DataSource 106 5.1.3 核心类JdbcTemplate 106 5.1.4 使用JdbcTemplate 106 5.1.5 继承JdbcDaoSupport 107 5.1.6 使用properties文件 107 5.1.7 RowMapper的使用 107 拓展: 108 DataSource注入的三种方式: 108 5.1.8声明式事务管理 116 5.1.8.1Spring的事务管理器 117 5.1.8.2Spring事务的传播属性 117 5.1.8.3Spring事务的隔离级别 117 拓展: 118 5.1.8.4以XML配置的 形式 119 拓展: 120 5.1.8.5以注解方式配置 125 拓展: 127 5.1.9使用CGLIB以XML形式配置事务 130 5.2 Spring+Hibernate 131 5.2.1 HibernateTemplate模板 131 5.2.2 声明式事务 131 配置XML文件 131 拓展: 132 注解形式: 137 拓展: 138 6 Struts2+spring+hibernate 141 6.1 需要添加的jar包 141 6.2 Spring融合web服务器 141 6.3 struts.xml文件 143 6.4 OpenInSessionView 143 拓展: 144 实例: 146

2019-10-25

Hibernate学习总结

学习成长路,Hibernate总结: 1.Hibernate入门优缺点、 2.Hibernate的操作CRUD、 3.主键生成机制、 4.持久化对象的状态、 5.映射一对多关联关系、 6.深入session、 7.懒加载、 8.Hibernate检索策略(fetch抓取策略)、 9.二级缓存、 10.Hbernate的检索方式(HQL语句)

2018-06-17

ie chrome firefox 兼容

Javascript中如何处理浏览器兼容问题

2014-03-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除