- 博客(529)
- 资源 (16)
- 收藏
- 关注
转载 join执行过程的几种常见选择
平时经常会遇到预估sql语句效率的问题,尤其是联表join还是单表n+1然后应用层merge的选择情况,如果对于join在存储引擎层面的执行过程完全没有了解,应该是很难评估的,这方面每个人或多或少有些经验或认识,看博客正好遇到,觉得不错。见贤思齐,看到好的文章在此搬运过来沉淀传播,HASH JOIN ,MERGE JOIN ,NESTED LOOP 比较,在此表示感谢!NESTED LOOP: 对于被连接的数据子集较小的情况,嵌套循环连接是个较好的选择。在嵌套循环中,内表被外表驱动,外表返回的每一行都要在内
2016-12-17 21:13:03
2186
3
转载 Java动态代理原理及实现
最近项目和看技术文章的时候接触了点Java动态代理和cglib、asm等知识,发现对于动态代理整套机制理解不够,总以为是采取切片等方式,运行时利用反射,通过标记等在需代理方法或者接口等上下文中执行某种增强方法,未想到会有中间字节码的动态生成,看到博主的这篇文章,觉得写得比较仔细,描述清楚了组建代理对象、字节码生成、执行代理功能等各个流程。见贤思齐,看到好的文章在此搬运过来沉淀传播,自己写一个java.lang.reflect.Proxy代理的实现 ,在此表示感谢!前言 Java设计模式9:代
2016-12-04 16:54:43
1294
转载 Buffers与cached啥区别
我们使用top命令查看内存使用情况的时候,会出现total、used、free、shared、buffer、cached等关键字,其中经常写应用代码,会对buffer和cached的概念比较模糊,很多情况下二者是相同的,但是在linux的内存模型中,二者是不尽相同的。本文摘自博客园大牛博客,原文 在此表示感谢。A buffer is something that has yet to be “
2016-11-21 22:59:22
4219
原创 mybatis+postgresql insert, update or delete returning *问题
要删除db机器上的insertreturning *,下面任选都可以一种 :1、在StatementHandler为SimpleStatementHandler的前提下,任何一种都行。 1.1、将<insert>标签改成<update>或者其他的 1.2、useGeneratedKeys="false",强制不返回2、在StatementHandler为CallableStatementHandler、PreparedStatementHandler不会走到重写sql这一步,所以不会
2016-10-09 19:51:38
6846
原创 数据库读写分离方法浅析
笔者实际的问题是尝试读写分离,下面记录一下读写分离方法,欢迎斧正。DB读写分离理论上方案比较多,如中间件转发、应用层分离,数据库驱动等等,各种方法的优缺点如下:1、中间件转发通过mysql中间件做主从集群,Mysql Proxy、Amoeba、Atlas等中间件貌似都能符合需求。优点:对应用透明缺点:需要代理,增加网络等性能开销2、应用层分离应用层路由数据源实现读写分离,通过AOP或者注解来动态选择数据源优点:无需中间件,策略可选,可用来负载均衡缺点:耦合度高3、数据库驱动Replica
2016-10-07 21:05:19
5053
原创 常用git命令指南总结
1、git推送本地分支到远程新分支git push origin 本地分支名:远程分支名git checkout local_branchgit push origin local_branch:remote_branch
2016-10-06 23:00:33
558
原创 mysql、zookeeper、redis和elasticsearch主从同步机制
mysql、zookeeper、redis和elasticsearch主从机制。 当系统规模达到一定程度时,传统的单机模式往往无法满足,于是就有了分布式系统。分布式系统面临的问题是CAP问题 。CAP具体含义如下:1、consistency:一致性,数据一致更新,保持数据同步更新2、availability:可用性,好的响应性能3、partition tolerance:分区容错性,可靠性定理:任何分布式系统只可同时满足二点,没法三者兼顾忠告:架构师不要将精力浪费在如何设计能满足三者的完美分布式系
2016-10-03 23:06:58
9882
1
原创 马尔科夫原理及应用场景
一、马尔科夫模型 马尔可夫模型,是指数学中具有马尔可夫性质的离散事件随机过程。该过程中,在给定当前知识或信息的情况下,过去(即当前以前的历史状态)对于预测将来(即当前以后的未来状态)是无关的。 《百度百科》 马尔可夫模型是随机变量X1,…Xn-1,Xn的序列,这些变量的范围所有可能取值集合,被称为状态空间,而Xn的值x则是在时间n的状态。用数学表达式的近似形式就是:P(Xn=x|Xn
2016-09-27 22:48:53
6213
原创 Spring常用注解、配置整理
1、context:property-placeholder加载配置信息的键值对,可以在专用的配置文件写好,然后通过该申明引入。2、import resource加载某个目录下的资源文件3、context:component-scan扫描Javabean,体现spring的IOC特点4、aop:aspectj-autoproxy加载代码中有@Aspect标签的切片,proxy-target-class属性值决定是接口的还是类的代理被创建。如果proxy-target-class 属性值被设置为
2016-09-24 21:23:22
625
原创 Spring常用工具类(ApplicationContextAware、DisposableBean、InitializingBean)
org.springframework.context.ApplicationContextAware实现该接口的类,可以在spring容器初始化的时候调用setApplicationContext方法,从而获得ApplicationContext中的所有bean。DisposableBean、InitializingBean import org.springframework.beans.factory.DisposableBean;import org.springframework.beans.fa
2016-09-24 21:17:47
2742
原创 aspectj-autoproxy Controller未生效解决方案
本周做业务需求,需要对api的响应时间做监控。第一想法是在需要监控的api里面答应日志,记录care的信息,这样的最大问题就是不容易扩展,需要在每个api里面添加几乎相同的代码。当时,Java的通用做法是切片,利用Java语言提供的反射能力,结合spring 的三大特性之一的aop(面向切面编程)思想,可以完全解耦的添加切片就行,这样在低耦合、高内聚的编程原则下是显得比较优雅,但是难免要牺牲一下效.Controller是定义在xxx-servlet.xml配置文件中,所以定义在applicationCont
2016-09-22 21:28:23
3187
转载 文本局部敏感哈希-MinHash算法原理
一、MinHash举例下面原文转自大牛博客:聚类之MinHash MinHash是基于Jaccard相似度的算法,一种降维的方法X,Y两个集合:X= {s1, s3, s6, s8, s9} ,Y= {s3, s4, s7, s8, s10}MinHash的基本原理:在X∪Y这个大的随机域里,选中的元素落在A∩B这个区域的概率,这个概率就等于Jaccard的相似
2016-09-18 23:03:06
6222
转载 文本局部敏感哈希-SimHash算法原理
最近在思考大量文本判重的问题,由于文本数据量大,加之文本判重算法,如BF、KMP、最长公共子串、后缀数组、字典树、DFA等计算时空复杂度并不适合数据量较大的工业应用场景。查找了相关资料,发现LSH(local sencetive ),即局部敏感哈希算法,可以应用本场景。LSH是指面对海量高维数据时,一般的算法无法快速降维查询相似度高的数据子集,利用特定的hash算法,将高维数据映射到低维空间,以较高概率快速寻找相似度高的数据子集。由于这方面积累极少,自己写出的文章比较肤浅,所以直接整理粘贴大牛文章,在此表示
2016-09-18 22:10:03
4507
1
原创 中文文本分类-朴素贝叶斯
贝叶斯分类器是基于先验概率与条件概率进行概率计算的分类器。X是特征属性,Y是分类属性,P(Y|{x0,x1....xn})是X在取值{x0,x1,...xn}的条件下Y发生的概率,成为P(Y)的后验概率,P(Y)的先验概率。实际在计算P(Y|{x0,x1....xn})的时候由于维度太高,至少需要考虑特征属性与分类属性的所有搭配情况,计算量大而且无法对待分类数据集进行全面覆盖。
2016-09-16 11:07:03
8009
3
原创 异常检测原理与实验
最近需要对欺诈报价进行识别处理,简单的模型就是给定很多不同数据集,需要找出每个spu下可能存在的欺诈数据,比如{20,22,30},其中的欺诈数据可能就是30。其实加以抽象,属于异常检测范围。异常检测是发现与大部分对象不同的对象,其中这些不同的对象称为离群点。一般异常检测的方法主要有数理统计法、数据挖掘方法。一般在预处理阶段发生的异常检测,更多的是依托数理统计的思想完成的。首先判断出数据的分布模型,比如某种分布(高斯分布、泊松分布等等)。然后根据原始数据(包括正常点与离群点),算出分布的参数,从而可以代入分
2016-09-14 22:04:43
6704
转载 ThreadPoolExecutor解析
一、概述 1、ThreadPoolExecutor作为java.util.concurrent包对外提供基础实现,以内部线程池的形式对外提供管理任务执行,线程调度,线程池管理等等服务; 2、Executors方法提供的线程服务,都是通过参数设置来实现不同的线程池机制; 3、先来了解其线程池管理的机制,有助于正确使用,避免错误使用导致严重故障;同时可以根据自己的需求实现自己的线程池。
2016-04-17 15:37:43
828
转载 Web开发进阶之Servlet理解
接触Java web开发半年多了,一直想找个时间思考整理一下Apache、Tomcat、Servlet、Spring原理与作用范畴,也有意识的阅读相关开源代码,但是由于基本认识不够,不能全局的描述各个框架的设计,所以下面这篇文章主要是在转载博客园上一位大牛的认识原文,可能转载有点low但是能学到知识和分享自己的认识也是挺好的一件事 。基本上依靠Apache、Tomcat、Servlet、Spring,Web应用就初步搭建起来了,剩下的可能是持久化和业务逻辑的编写与设计。 首先谈谈Servlet。Se
2016-02-03 23:34:48
1002
原创 Java装箱==的池化坑
“基本类型优于装箱基本类型” ,其中那个Integer例子觉得不合适,于是看了Integer源码,发现还真是有点问题,至少我的jdk1.7是有问题的。 Java是高度封装基于JVM API的语言,和C++一个重要的区别就是不支持运算符重载。就我肤浅地理解,基本的运算操作+、-、*、/、==等对于开发者老说通常是不透明的,所以对于模糊的地方不好把握,对于装饰器类型也就是通常意思的装箱类型。jdk还不能说是JVM将小范围的数值做了缓存,如int的[-128,127](其中128并不是一个比较准确的答案
2016-01-30 12:46:59
1026
原创 HDU5595(水题+数学)
求给定区间[l,r]的整数范围内方程 f(x)=a*x*x+b*x+c的最大值和最小值,本题要求1s内解决,直接暴力枚举时间复杂度为O(l*(r-l),而整数i的范围为|i|<=100,一般不会TE,提交一下成功了,才发现是不折不扣的水题。当然,本题也有时间复杂度为O(1)的算法,根据数学公式规律计算,判断二次方程(当然,a=0是不是二次方程)最值点是否在[l,r]内,然后比较最多3个点最少2个点的最大值和最小值。注意取整的处理,这是本题的一个坑:无论正负数都取最接近的整数,C/C++的浮点转整型正好是这
2016-01-18 00:00:51
873
原创 WebService浅析
目前工作主要是对接系统商,都是基于OSI五层模型中的最顶层-应用层web服务,屏蔽了下面传输层、网络层、数据链路层、物理层等操作。系统与系统之间通过网络交换数据,无论什么语言,应用层已经被封装成学习成本不高的API,尤其是Java这样一种开源框架较多的高级语言。前后大约对接了10+多家景区或者系统商,接口调用方式大致分为两种:HTTP和Webservice。对于HTTP,原理课本或者网上比较常见,相信都能了解一下,调用具体做法github上引入某种httpclient封装成符合自己业务或技术特点的类库。而对
2016-01-16 18:33:34
1524
原创 HDU5592(线段树+二分)
本题要求根据每个位置逆序数的累计个数,还原数列。可以从后往前推,求出当前位置元素ans[i]的前面有多少元素比他大或比他小,ans[i]=log[i]-log[i-1,注意边界的处理,但时,只知道前面比他大或比他小的元素是不能准确定位元素大小的,还得知道后面比他大或比他小的元素。1)、前面比他大或小的元素个数可以通过反向遍历O(n)求出。2)、后面比他大或小的元素个数可以通过在某个数组中标价,然后通过二分结合某个快速求区间和的算法-线段树得出,时间复杂度O(log(N))^2 这样一来,总的时
2016-01-09 00:25:27
918
原创 HDU5591(博弈)
给定一个圆,然后两人轮流扔硬币,最后无法完全贴在圆上的输。请问第二个人是否有必胜的把握。其实可以这么想,由于圆的对称性,后者只要找前者关于圆心对称的地方扔就行,最后无法完全覆盖的必然是第一个人。 回到本题,只要N是奇数,X=[n/2]取上整,第二个人找第一个人关于X对称的点就行,这样就能保证X留给第一个人。如果是偶数,没有必胜的策略。进一步,可以证明,当N为奇数,X取其他数是不能保证必胜的,因为第一个人可以留下一个关于X对称的奇数列,保证用上面的策略必胜。
2015-12-30 23:50:33
644
原创 python抓取豆瓣电影
工作将近半年,有一个很明显的感觉:工作很多时候不像单纯学习那样要求你掌握得多深而是要求知识面比较宽广,很多东西都会有些,至少业务是这样。当规模比较小的时候,谈性能就是耍流氓。目前工作一方面是抓取:抓取竞对数据、自动搬单、覆盖。抓取竞对相对简单,就是抓取数据帮助分析、决策;自动搬单是指将用户在本网站下的单转化成其他系统的订单 ,主要是将用户在本网站提交的参数传递到其他网站下单;覆盖是指当本网站产品数量不全时,通过点击跳转到其他网站的方式简单的扩大覆盖,提高用户体验。爬虫有着自己的技术难点,比如调度策略、url
2015-12-26 11:58:58
3947
原创 面向地学数据的数据挖掘研究与实现
数据挖掘又称知识发现,是指从海量数据中发掘知识,有着广阔的应用前景。然而,当面对地学数据时,即使是现有的相对成熟的模型,也存在着性能与效果方面的缺陷。究其原因,主要是因为地学数据的固有特点:高维、非结构化、多关联性等,在数据模型、索引结构、存储方式、挖掘知识表达等方面,远比传统数据复杂。通常意义的地学数据有栅格、矢量等,本文注重处理栅格数据。Tobler地理学第一定理告诉我们:一切事物都与其他事物相关,但是距离近的比远的相关性更强。本文针对地学数据的空间相关性特点,通过R树建立空间索引,以空间同位模式挖掘
2015-12-19 01:23:28
4735
原创 网站开发相关基础知识点重拾(持续更新中)
1、代理 代理服务器的工作机制很象我们生活中常常提及的代理商,假设你的机器为A机,你想获得的数据由B机提供,代理服务器为C机,那么具体的连接过程是这样的。 首先,A机需要B机的数据,它与C机建立连接,C机接收到A机的数据请求后,与B机建立连接,下载A机所请求的B机上的数据到本地,再将此数据发送至A机,完成代理任务。2、VPN 虚拟专用网络,主要功能在公用网络上建立专用网络,进行加密通讯。在企业网络中有广泛应用。VPN网关通过对数据包的加密和数据包目标地址的转换实现远程访问
2015-10-23 21:15:12
697
原创 Maven学习札记
1、dependencies 和 dependencyManagement 的区别在于:1.1)、dependencies:即使在子项目中不写该依赖项,那么子项目仍然会从父项目中继承该依赖项。1.2)、dependencyManagement:如果在子项目中不写该依赖项,那么子项目中是不会从父项目继承该依赖项的;只有在子项目中写了该依赖项,才会从父项目中继承该项,并且version 和 scope 都读取自 父pom。2、exclusions标签的作用exclusions:在相应的dependenc
2015-10-23 21:13:05
1464
转载 XML CDATA的作用
在此声明:本文转自原文,最近网站开发,涉及系统对接以及mybatis,需要用到xml,为了保证xml格式不被破坏,对于特殊字符的处理,使得CDATA广泛使用在项目工程中,当然,也可以自己编写一套方案,不过,有现成的东西,工作中还是直接套用比较好 ,照在巨人的肩上。下面文章不错,在此转发以扩大影响,同时希望能帮助广大的开发者,在此对原文作者表示感谢! XML CDATA的作用
2015-10-15 22:02:41
850
原创 Linux文本匹配命令grep&find&cat(zcat)(持续更新中)
Linux有着强大的文本处理命令,最近线上日志比较大,一天好几个G,所以没有存入数据库,而是直接切到文件中,这样查看日志就得学会Linux下文本处理了,这里简单介绍一下最近用到的几个文本匹配的命令,欢迎大家支出问题。rep:关键字:-截取, 文本搜集工具, 结合正则表达式非常强大,find:关键字-查找,查找匹配文件
2015-10-11 15:03:47
9387
1
转载 quartz调度框架
最近在公司做抓取竞对web数据的爬虫,由于数据量比较大,不可能全量实时更新,所以采用轮询的定时任务来定期抓取数据。Quartz由java编写的开源作业调度框架,可以用来快速地创建一个实现org.quartz.Job接口的java类。Job接口包含唯一的方法:
2015-09-12 00:39:48
612
转载 Cookie/Session机制详解
在此声明:本文转自原文,最近学些Web后台,cookie和session是非常重要的概念,如判断登录信息、缓存等,觉得下面文章不错,在此转发以扩大影响,不过觉得原文有些不可取的地方,望大家甄别,同时希望能帮助广大的开发者,在此对原文作者表示感谢! 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Sessi
2015-06-03 11:25:22
777
原创 Java强引用、软引用、弱引用、虚引用详解
强引用:如果一个对象具有强引用,GC绝不会回收它;当内存空间不足,JVM宁愿抛出OutOfMemoryError错误;软引用:如果一个对象具有软引用,当内存空间不足,GC会回收这些对象的内存,使用软引用构建敏感数据的缓存;弱引用:如果一个对象具有弱引用,在GC线程扫描内存区域的过程中,不管当前内存空间足够与否,都会回收内存,使用弱引用 构建非敏感数据的缓存;虚引用:如果一个对象仅持有虚引用,在任何时候都可能被垃圾回收,虚引用与软引用和弱引用的一个区别在于:虚引用必须和引用队列联合使用,虚引用主要用来跟
2015-04-25 16:20:40
9351
转载 Java对于Cookie的操作详解
在此声明:本文转自原文,最近学些Web后台,用到Java相关知识点,觉得下面文章不错,在此转发以扩大影响,同时希望能帮助广大的开发者,在此对原文作者表示感谢! 1.设置CookieCookie cookie = new Cookie("key", "value");cookie.setMaxAge(60); 设置60秒生存期,如果设置为负值的话,则为浏览器进程Cookie(内存中保
2015-04-19 19:57:07
2950
转载 servlet/filter/listener/interceptor区别与联系
在此声明:本文转自原文,最近初学Web后台,用到web开发相关知识点,觉得下面文章不错,在此转发以扩大影响,同时希望能帮助广大的开发者,在此对原文作者表示感谢! 由于最近两个月工作比较清闲,个人也比较“上进”,利用工作空余时间,也继续学习了一下,某天突然想起struts2和struts1的区别的时候,发现为什么struts1要用servlet,而struts2要用f
2015-04-12 18:15:35
578
转载 HttpServlet详解
Servlet的框架是由两个Java包组成:javax.servlet和javax.servlet.http. 在javax.servlet包中定义了所有的Servlet类都必须实现或扩展的的通用接口和类.在javax.servlet.http包中定义了采用HTTP通信协议的HttpServlet类.Servlet的框架的核心是javax.servlet.Servlet接口,所有的Servle
2015-04-02 15:52:51
952
原创 Guava中RangeMap自定义range区间
RangeMap是一种集合类型,它将不相交、且不为空的Range(key)映射给一个值(Value),RangeMap不可以将相邻的区间合并,即使这个区间映射的值是一样的,实现RangeMap也是一个接口,实现它的也只有两个类,分别为mmutableRangeMap和TreeRangeMap。其中TreeRangeMap是key有序的。具体区间排序规则就不再说了。
2015-03-20 22:41:56
4934
转载 VC6.0不兼容win8/8.1等新系统的结局方案
在此声明:本文转自原文,由于系统升级,有时得装个VC++6.0好像落伍的软件,但发现会提示无法打开,于是网上到处查找资料,觉得下面文章不错,在此转发以扩大影响,同时希望能帮助广大的开发者,在此对原文作者表示感谢! 关于VC++6.0这个软件不兼容win8/8.1等新系统的问题,网上需要解决的的朋友是越来越多了,因为VC++6.0是一个比较老的程序编译软件,win8/8.
2015-02-09 19:44:05
1872
转载 微博图床架构揭秘
在此声明:本文转自微博图床架构揭秘,觉得写得不错,在此转发以扩大影响,在此对原文作者表示感谢! 图片作为微博的核心内容元素,一直在微博内容战略中占有非常重要的地位,特别是近几年高质量移动拍摄终端的普及,越来越多用户倾向于用图在微博上表达自己的心情,态度和观点。微博的日发博量中,带图微博已接近60%。去年5月,随着微博多图功能上线,进一步强化了多媒体内容分享的用户体验。
2015-01-26 17:49:14
1224
原创 Python特性
最近打算自学一种脚本语言,应用于处理系统管理任务和Web编程,于是选择了Python。Python的设计哲学是“优雅”、“明确“、”简单”,解决同一问题不存在很多冗余的方法。下面就具体谈谈Python语言的几个特性。
2015-01-24 20:11:32
1021
转载 关于大型网站技术演进的思考(一)--存储的瓶颈(上)
在此声明:本文转自博客园的夏天的森林,关于大型网站技术演进的思考(一)--存储的瓶颈(上),在此表示感谢! 前不久公司请来了位互联网界的技术大牛跟我们做了一次大型网站架构的培训,两天12个小时信息量非常大,知识的广度和难度也非常大,培训完后我很难完整理出全部听到的知识,今天我换了个思路是回味这次培训,这个思路就是通过本人目前的经验和技术水平来思考下大型网站技术演
2015-01-23 21:16:55
773
转载 大型网站架构改进历程:存储的瓶颈(中)
在上篇,我讲到某些网站在高并发下会报出503错误,503错误的含义是指网站服务端暂时无法提供服务,503还表达了网站服务端现在有问题,但是以后可能会提供正常的服务,对http协议熟悉的人都知道,5开头的响应码表达了服务端出现了问题,在我们开发测试时候最为常见的是500错误,500代表的含义是服务端程序出现了错误导致网站无法正常提供服务,500通常是服务端异常和错误所致,如果生产系统里发现了500错误,那么只能说明网站存在逻辑性的错误,这往往是系统上线前的测试做的不到位所致。回到503错误,我上文解释为拒绝访
2015-01-23 20:45:23
784
C#遗传算法程序(可视化版)
2014-05-25
Android初识之Activity组件
2014-05-13
微机接口小车控制系统
2014-01-14
数据结构课程设计报告及源代码
2014-01-10
数据库课程设计报告
2013-12-27
编译原理 LL文法
2013-11-30
正则文法识别单词
2013-11-30
三维变换与深度缓冲器算法
2013-11-23
多边形的扫描转换与区域填充
2013-11-22
二维变换与剪裁
2013-11-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人