- 博客(65)
- 收藏
- 关注
原创 ClassLoader原理与实践(分享讲稿整理,不放图)
java.lang.ClassLoader(类加载器)是JRE中一个重要成员,因为大家一直都在主动或被动地在使用。首先来讲一讲classloader到底是什么。大家知道平时写的java文件编译完之后会得到class文件,然后要发挥作用需要被写入到jvm的内存里。而类文件的二进制字节码写入内存的关键过程就是由类加载器来做的。而且载入这个动作对用户类是动态的,即只有当要用到这个类的时候,只
2017-09-16 12:04:05
435
原创 动态加载进阶,从组件到容器
又来了一个需求,而且和上一个几乎一模一样,却还是需要走开发和上线的冗长流程,不能忍了,必须要优化。效率就是生命,复用就是延长生命的长度,如果通过配置文件就能拿下这类需求,就很赞了。当然,前提是,系统在架构上支持复用。暨能够在组件的层级上,抽象出一个个功能组件,能够在服务的层级上,抽象出一个个服务组件链。不同的服务,链路上根据不同需求,装配自己要的组件bean,全部通过配置文件搞定。
2017-04-25 13:42:27
442
原创 单测Spring的bean装配情况
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("xxx.xml");applicationContext.start();xxxService x = (xxxService) applicationContext.getBean("xxxService");
2017-04-18 15:05:56
438
原创 可序列化对象压缩和解压缩byte数组实例
public static byte[] serialize(List result) throws IOException { ByteArrayOutputStream bos = new ByteArrayOutputStream(); JavaBinCodec codec = new JavaBinCodec(null); codec.marshal(result,bos);
2017-03-26 14:15:28
740
原创 uber jar,shade jar和包冲突
我们日常遇到的包冲突主要是依赖jar的版本冲突。在包都向下兼容的前提下,这类问题比较容易解决,exclusion对低版本的依赖即可。但也有不兼容导致多个依赖无法兼顾的情况,如何解决,下文再说。考虑另一种情况,完全不同的jar实现了同名类,而且包名也一模一样。此时对java类加载器而言,和上一类问题是同质的。基于JVM的有则运行,无则加载的类处理原则,实际上生效的也将是加载顺序在前的类。这种
2017-02-22 20:28:24
1456
原创 记录方法运行时间——基于spring的面向切面编程简单实例
工程中有很多方法需要记录方法的运行时间,本质上这是独立于主业务逻辑且复用性很强的功能,类似的还有权限控制,用户验证,打log等。如果每个方法里都要反复去写是一件很low的事情,但是如果改用切面编程来实现就十分清爽了。spring中用@Aspect可以定义一个切面类,用@Pointcut定义一个切点表达式方法。Pointcut的execution即是用正则表达式定义的包+类+方法组成的切
2017-02-07 20:40:06
792
原创 拉取hadoop集群上的hdfs文件
从hadoop集群拉取hdfs文件是一个常见的需求,基于org.apache.hadoop即可做到。但是hadoop包有个明显的缺点是引用太多,经常需要排包,包括但不限于httpclient,servlet,slf4j,tomcat等等@Servicepublic class HdfsClientManager implements Manager{ private s
2017-02-07 20:20:59
3479
原创 个性化搜索架构设计探索
随着中心化流量的增长,早期简单通用的搜索排序越来越难以支撑提高搜索整体体验乃至转化率的重任。基于种种急需解决的痛点,需要平台级项目支持商品搜索实现个性化,需求期望细化为以下四点:1.根据积累的用户数据,在搜索排序中引入个性化因子,打破千人一面的排序格局。精排序时,除通用的商品精排分数,还引入了用户偏好特征和商品特征,用于u2i和i2i加权。2.对于能够做到个性化定制的垂直领
2017-02-03 18:01:58
1627
原创 Java参数引用传递之例外:null
众所周知的是,java中除基本类型外,参数都是引用传递。但是,有一个例外,就是当实参为null时,其实,它依然是一个值传递。也就是说,传参为null,不管函数体内用这个参数做了什么,跳出函数体后该参数依然是null或者说,引用传递退化成为了值传递。再进一步分析,其实是基本类型和指向null的非基本类型的指针,都在栈而非堆中,而引用传递的是堆内存地址。类似的还有String类型。
2016-07-16 01:20:35
3499
原创 Mac virtualBox 微软官方Win7镜像下载安装全过程
官方镜像下载地址 https://az412801.vo.msecnd.net/vhd/VMBuild_20141027/VirtualBox/IE8/Windows/IE8.Win7.For.Windows.VirtualBox.zip这个镜像据说主要的用途是给大家来测试IE的。。。。。。囧下载完解压缩会得到一个vmdk文件,这时候用命令处理下 VBoxManage clonehd
2016-07-03 16:38:41
18658
1
原创 自动装配引起的Spring注入错误
当XML文件中添加了default-autowire="byName"时,会自动为属性注入同名的bean实例,即使为该属性显式指定了一个ref也不生效。 以上配置文件中,其实两个数据库的操作类操作的数据源都是DB_100。因为其实updateBDbUse
2016-05-29 01:42:49
2581
翻译 solr使用cursorMark做深度分页
深度分页深度分页是指给搜索结果指定一个很大的起始位移。普通分页在给定一个大的起始位移时效率十分低下,例如start=1000000,rows=10的查询,搜索引擎需要找到前1000010条记录然后再返回最后10条。Solr为了最后10条记录只会检索排序字段,但是前1000010条记录的内部排序开销依然十分大。普通分页基础上的深度分页对分布式搜索引擎而言甚至是更低效的,因为为了找到正确的
2016-05-25 21:32:59
3221
2
原创 httpclient4.4的简单demo
public class HttpClientUtil { private static Logger logger = LoggerFactory.getLogger(HttpClientUtil.class); private static PoolingHttpClientConnectionManager connectionManager = null; pr
2016-05-24 16:43:01
3783
原创 hive建外表时默认分隔符错误导致行数增加和数据错误
hive根据hdfs建立外表时,一般使用这种格式规范: ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'这种方式识别的默认行分隔符其实并不只是行分隔符'\n',还包括'\r','\r\n','\u0001','\u0002','\u0003'因此有如果字段中存在'\r',可能会导致外表行数与预期不一致的增加这种处理应该是为了兼容windows
2016-05-12 13:07:23
2262
1
翻译 solr 原子更新
solr中如何对索引数据进行增量更新?原子更新是一种很好的方式。该目前原子更新支持以下五种修改器。set: 对指定的field,修改其为指定的值(也可以是Null)add: 对指定的多值field,添加指定的值remove: 对指定的多值field,移除指定的值removeregex: 对指定的多值field,移除符合指定正则表达式的值
2016-03-23 17:36:20
1116
原创 mysql 安装后报 ERROR 1045 (28000): Access denied for user 'root'@'localhost'
今天在一台新mac上装了mysql+官方的workbench,安装过程中系统随机给出了一个root初始密码。之前由于养成了习惯,经常用mysql -h x.x.x.x -P 3306 -u xxx -pxxx;这种命令去登远程数据库,所以这次命令行连本地数据库时也依样画葫芦。结果由于这个初始密码有转义字符,报语法错误,给密码加了转义斜杠再连,结果是报Access denied for us
2016-03-22 21:15:50
749
原创 hive字符串SUM
hive中使用sum能很方便地实现数值聚类求和,但如果对象是字符串,要求把字符串聚合成一个长串(用逗号分隔),最好还要去重,该如何实现?下面的sql语句实现了在一个id对应多个图片(pic_id)的情况下,获得每个id对应的所有pic_id这一需求select id,concat_ws(',',collect_set(pic_id)) as pic_ids from (sele
2016-03-09 17:46:19
6375
原创 Java中repalceAll和split的转义问题
Java中String的两个常用方法split和replaceAll实际上调用了正则表达式中的方法,因此其字符参数需要考虑到正则表达式中的转义问题正则表达式中的转义字符:. $ ^ { [ ( | ) * + ? \参见https://msdn.microsoft.com/zh-cn/library/4edbef7e(v=vs.110).aspx如果用以上字符分割或取代字符串,
2016-02-24 11:49:57
785
原创 编译不完全导致调试时无法查看局部变量的值
因为项目需要,需要用框架代码动去解析执行另一部分动态代码。然而用eclipse在调试动态代码时,发现只能看成员变量的值,局部变量的值不能查看(cannot be resolved to a var),方法参数只能以参数1、参数2的形式看到而没有名字估计到编译期可能有问题,在框架代码编译动态代码时加上参数-g即可javac的参数-g可以生成所有的调试信息,默认情况下不会生成保存局部变量的
2016-01-04 16:57:29
1653
原创 通过HttpClinet类用get方法获得远程接口返回的Json串
public class HttpClientUtil { public static String requestByGetMethod(String s) { CloseableHttpClient httpClient = HttpClients.createDefault(); StringBuilder entityStringBuilder = n
2015-12-30 13:53:09
6546
原创 pat 1083. List Grades WATER
实在没什么好说的,上码#include#includestruct node{ int grade; char name[12]; char id[12];};node arr[105];int com(const node &a,const node &b){ return a.grade>b.grade;}int main(){ int n,i,g1,
2014-11-23 00:12:46
535
原创 pat 1082. Read Number in Chinese 整数串和字符串转化
其实也比较水,但是要考虑的东西还是不少测试用例:101010101
2014-11-22 22:14:44
1350
原创 pat 1077. Kuchiguse (字符串水题)
送分题一道#include#includeusing namespace std;string arr[105];int main(){ int i,j,n,len,l; string s; scanf("%d",&n); getchar(); int min=256; for(i=0;i<n;i++) { getline(cin,arr[i]);
2014-11-05 19:47:42
582
原创 pat 1024. Palindromic Number (大水)
又是道水题。。。#include#include#includeusing namespace std;int ctoi(char ch){ return ch-'0';}char itoc(int i){ return i+'0';}string resum(string s){ string ss=s; reverse(ss.begin(),ss
2014-10-21 16:05:17
470
原创 pat 1022. Digital Library (字符串水题)
字符串处理题如果在vc中编程,可能因为getline()的问题遇到一些调试上的不爽
2014-10-15 20:27:04
422
原创 2014考研 浙大CS、MSE 小记
为什么要考研?除却少量大牛,研究生总体上找工作比本科生要好得多,自己又没下决心准备去美帝。选择浙大因为学校确实好,计算机领域也是全国前列的。招生人数多,因而分数线相对华东其他四校偏低。mse接收较多本校调剂,算是有一条后路。总之性价比高。于是准备了约半年,结果408统考317分,没上,去了软院= = 简单扒一扒初试的准备工作。政治很简单,可以10月开始准备。今年肖4押
2014-04-10 14:14:29
2038
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人