- 博客(22)
- 资源 (1)
- 收藏
- 关注

原创 Java代理-动态字节码生成代理的5种方式
上篇讲到了代理模式出现的原因,实现方式以及跟其他相似设计模式的区别。传送门@_@ http://blog.youkuaiyun.com/wonking666/article/details/794975471.静态代理的不足设计模式里面的代理模式,代理类是需要手动去写的。但是手写代理的问题颇多1.如果不同类型的目标对象需要执行同样一套代理的逻辑,比如说在方法调用前后打印参数和结果,那么仍然需要为每一个类型写一...
2018-03-13 21:21:43
4391
1
原创 MySQL死活不走索引终极大解密(看完想杀人)
今天运维小窗我,说我们的SQL查询太慢,几乎所有查询都是全表扫描,占用了机器大部分资源,严重影响了其他应用的性能。听到这种话,有技术洁癖的我哪能忍受如此奇耻大辱。我拍桌怒吼,十分钟给你解决(╯—﹏—)╯(┷━━━┷ 第一步,先看表建索引了没。关键字段都有,而且是组合索引,没问题( •̀_•́ ) 第二步,再看SQL用的对不对。都是用的索引字段,条件中没有什么or啊,IS NUL...
2018-09-14 17:20:12
22836
13
原创 计算两个有序数组的中位数
题目:给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 。请找出这两个有序数组的中位数。要求算法的时间复杂度为 O(log (m+n)) 类比一个数组的中位数,求两个数组的中位数就相当于把两个数组合并后的一个数组的中位数,例输入: num1=[1,3,5] num2=[2,4,6]输出:(3+4)/2=3.5 方法:二分+递归思路:--...
2018-09-04 11:56:01
2450
原创 找出有序数组中最接近给定目标数的下标(递归实现)
输入:[1,2,3,3,4,5,6,7,8] 3输出:2输入:[1,3,5,7,9] 4输出:1 实现方式:二分+递归主要思想:设置两个游标,start,end,取start和end的中位数,及其左边一位,和右边一位,将三者与目标值的绝对差值进行比较。设中位数与目标的绝对差值为sm,左边一位的绝对差值为sl,右边一位的绝对差值为sr,对比较的结果我们花开两枝...
2018-08-31 18:20:23
4768
3
原创 CORS跨域问题服务端的一个解决方法
上次写了一篇吐槽CORS的博客之后,今天再次出现此类问题。虽然对CORS已经了解的比较透彻,但这次的问题是一系列连锁问题引起的,最终对外表现为与一个不相关的错误,比较有迷惑性,所以有必要记录下来。 1.错误表现先贴前端的报错异常:OPTIONS http://foo.com/test 405 (Method Not Allowed)Failed to load http://f...
2018-08-29 16:51:09
10315
原创 Java代理系列-代理的起源
前言:这是一篇有关代理的系列文章,记录了我对代理由浅入深的认识和理解。代理是一种编程思想,它试图做到如何在不修改或尽量少修改现有代码的情况下,改变对象的行为。而且代理绝非Java专属,它是一种使用非常广泛的编程思想,你会在很多语言和框架上看到代理的影子。既然代理无处不在,那么掌握它是非常有必要的。 初识代理我对代理的认识是从AOP(Aspect Oriented Programming...
2018-08-06 20:11:23
349
原创 聊聊CORS的过度设计缺陷
注:本文不讲CORS原理,且默认你已了解CORS,但对其中一些细节抱有同样的怀疑同源策略浏览器的同源策略自其诞生以来就一直存在,如何进行跨域Hack,一代又一代的前后端都为此费尽了心机。首先可以肯定的是,同源策略的限制是合理的。因为,服务端后台接口就部署在那,任何人只要构造了一个正确的HTTP请求,都能得到服务器的应答。但很显然,我们不希望我们的接口任何人都能访问(事实上,因为大家采...
2018-08-03 19:50:20
2852
1
原创 深度解读Java8-归约器Collector
Java8提供的Stream API,将对数据流的所有操作,仅用三个步骤概括全了-过滤、转化、归约。其中,过滤、转化还比较容易理解,但是归约就是一个非常高级的抽象接口了,这篇博客从一个简单的累加例子出发,管中窥豹,带你彻底理解归约器。何谓归约归约,就是对中间操作(过滤,转换等)的结果进行收集归一化的步骤,当然也可以对归约结果进行再归约,这就是归约的嵌套了。中间操作不消耗流,归约会消
2018-02-02 14:31:28
2013
原创 深度解读Java8-lambda表达式之方法引用
先看个例子import java.util.ArrayList;import java.util.Arrays;import static java.util.Comparator.comparing;import java.util.Comparator;import java.util.List;import java.util.function.Function;impor
2018-01-30 20:20:49
3449
1
原创 浏览器跨域详解-很多人没有提到的坑
背景最近公司组织了一场网络攻防演练,CSRF(跨站请求伪造攻击),XSS(跨站脚本攻击),SQL注入,cookie拦截修改,各种高大上的名词。最近专注于后台业务,前端知识都变得很模糊,在页面的提示下算是踉踉跄跄做完了。但做完还是一脸懵逼,为什么会存在这些漏洞?这些漏洞的根源在哪里?应对策略是什么?我想把他们全整个明白,特别是CSRF这东西,真的是神奇,就搜了几篇博客,看完又做亲自实验了一下,发
2018-01-25 17:34:18
26373
10
原创 Java过滤器链原理解析
在很多Java Web项目中我们会在web.xml中配置一些过滤器来拦截请求,比如下面解决乱码的编码过滤器: encodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 forceEncoding true encodingFilter /
2018-01-05 15:09:53
9397
3
原创 https与SSL协议详解及Java实现免证书访问https服务代码
https与SSL协议详解及Java实现免证书访问https服务代码 tomcat提供https服务接口方法
2017-11-28 21:06:47
9275
1
原创 Spring报Context namespace element 'component-scan'... are only available on JDK 1.5 and higher解决问题
最近项目中用到了alibaba开源的分布式服务框架dubbo,与Spring整合的时候,启动报如下错误: org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [annotation.xml];
2017-08-26 19:06:48
7336
2
原创 Java多线程任务超时结束的5种实现方法
在用Java编写并发程序时,往往会碰到某个线程因计算量大或因阻塞而一直处于无响应的情况,我们可能会等的不耐烦(也可能是不想让它占用太多资源)想及时终止掉它,那就需要用到任务超时结束的技巧了。在刚接触到多线程时,我本以为API会提供这样一个多线程类:Thread(Runnable r, long timeout) ,第二个参数用来设置超时时间,可事实并非如此。因为这样的类不具有通用性,面向对象设计语言
2017-08-01 19:31:06
34363
16
原创 Spring AOP详解& AspectJ表达式
近期项目中用到了Spring AOP,开一篇文章记录我爬过的坑。不知道其他初次接触Spring AOP框架的同学有没有感同身受,Spring AOP中最大的障碍莫过于写AspectJ表达式,稍有不慎便可能出现如下错误。 1.Pointcut is not well-formed: expecting ‘)’ at character position 71 execution(* com.won
2017-07-22 18:37:14
640
原创 Java枚举中嵌套枚举用例
最近项目中需要在枚举类中定义枚举常量的子枚举,翻了一下编程思想,顺手写了一个枚举中嵌套枚举的小demo,供各位码友参考。public enum TestEnum { LOW(Type.Common.class), HIGH(Type.Customized.class); //枚举常量必须写在最前面,否则会报错 interface Type{ //使用interface
2017-07-20 19:26:31
22267
5
原创 XML基础知识及四种解析方法
1. XML是什么XML 指可扩展标记语言(EXtensible Markup Language)XML 被设计用来结构化、存储以及传输信息。XML 的设计宗旨是传输数据,而非显示数据,HTML被设计来显示数据,二者不可相互替代XML 标签没有被预定义。您需要自行定义标签。XML 没什么特别的。它仅仅是
2017-07-17 20:04:57
791
原创 scala系列知识点总结(函数高级篇)
这一篇是单独讲函数的高级特性,因为scala的精髓就是函数式编程,而函数式编程的精髓就在于他的高级特性。话不多说,直奔主题。1. 匿名函数匿名函数可以说是高级特性的基础,很多奇技淫巧都构建在他的基础之上。匿名函数即lambda表达式,基于数学中的λ演算得名(这里面有更深奥的数学理论,有兴趣可以去研究一下)。匿名函数的书写形式如下:(x:Int) => {x+1}也可以用一个
2017-07-11 19:45:55
770
原创 scala系列知识点总结(变量与普通函数)
写在前面:scala是一种函数式编程&完全的面向对象语言(百度“函数式编程”更精彩),它是与指令式编程语言相对应的,前者强调函数的计算比指令的执行重要(事实上指令不能达到完全的面向对象,也会产生很多冗余的代码)。它最大的特点在于函数式编程思想。在scala里面,一切都是对象,函数被当做一等公民对待,可以像基本数据类型一样自由的使用。当然scala还有其他很多有趣的特性,包括使用换行作为结束符(当然
2017-07-10 23:08:00
570
原创 Java集合中使用泛型参数及泛型上下限的问题
集合中使用泛型限定:? extends Super(或? super Child),这种集合是只读的,因为“表达式右边永远是一个确定的值”
2017-05-14 17:50:14
966
原创 Linux下Java开发环境搭建
最近刚开始玩Linux,搞开发搭建环境是第一步,于是总结了这篇Linux下Java开发环境搭建的博客,记录一下我爬过的坑。一.JDK的下载jdk8官方下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html其他各种低版本:http://www.oracle.com/t
2017-04-04 14:23:55
5881
原创 Java多线程任务超时结束的5种实现方法
在用Java编写并发程序时,往往会碰到某个线程因计算量大或因阻塞而一直处于无响应的情况,我们可能会等的不耐烦(也可能是不想让它占用太多资源)想及时终止掉它,那就需要用到任务超时结束的技巧了。在刚接触到多线程时,我本以为API会提供这样一个多线程类:Thread(Runnable r, long timeout) ,第二个参数用来设置超时时间,可事实并非如此。因为这样的类不具有通用性,面向对象设计语
2017-03-22 12:50:23
35057
3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人