主页

[断点分析之spring-ioc]-xml文件解析(三)

一、前言 ​ 前面资源文件加载搞定了,来看看 spring 是如何把 xml 文件变成 bean 的吧. 二、分析 ​ 还是从4句代码看起. @Test public void testSpringLoadXml(){ // 加载xml BeanFactory factory = new XmlBeanFactory(new ClassPathResource("com/sjr/test/bean/MyTestBean.xml")); // 获取bean final MyTestBean testBean = factory.getBean("myTestBean",MyTestBean.class); final String testStr =...

阅读更多

[断点分析之spring-ioc]-资源加载ResourceLoader(二)

一、前言 ​ 资源统一抽象为Resource对象.可曾记得在 spring 配置文件中的这种写法:classpath:com/sjr/test/bean/MyTestBean.xml,那么这种写法的意思是从classpath路径下加载xml,那么spring是如何定位到文件的? ​ 上面这种写法相当于是个协议,在spring中默认支持9种文件协议. URL_PROTOCOL_FILE 从文件系统中加载文件 URL_PROTOCOL_JAR 从jar包中加载文件 URL_PROTOCOL_WAR 从war包中加载文件 URL_PROTOCOL_ZIP 从zip中加载文...

阅读更多

[断点分析之spring-ioc]-资源对象Resource(一)

一、前言 ​ 在这个春回大地万物复苏的日子,在家里带着口罩,手持消毒液.分析spring是最好消磨时间的方式.不知道在这段时间里面,能否把IOC这个分析完. ​ Resource 这个接口抽象了资源的获取方式, spring 启动往往都是从这一步开始. 二、从那几句代码开始 简单的java bean package com.sjr.test.bean; public class MyTestBean { private String testStr = "test--one"; public String getTestStr() { return testStr; } public MyTestBean setTestStr(String tes...

阅读更多

java调用c# webservice

一、前言 ​ 最近落在手上一个对接任务,对方平台采用的是webservice,用.net写的.刚开始看文档的时候,感觉挺简单的,就几个xml发过去发过来的(之前没搞过webservice,全是个人愚见.). ​ 但后面出现一个问题,接口上注明的参数类型是binarybase64,按照文档示例,不管怎么序列化都不对,一直在提示参数不对,不能序列化.后面才发现,这个二进制序列化格式是用的c#独有的序列化方式,是不跨平台的.emmm 二、BinaryFormatter ​ 在c#里面常用的序列化方式是BinaryFormatter,这种序列化方式,是二进制形式,跟protocbuf差不多,但性能上要比protocbuf要好点.对比json就更不用说了.但为了提升性能,必将在其他地方作...

阅读更多

java调用c# webservice

一、前言 ​ 最近落在手上一个对接任务,对方平台采用的是webservice,用.net写的.刚开始看文档的时候,感觉挺简单的,就几个xml发过去发过来的(之前没搞过webservice,全是个人愚见.). ​ 但后面出现一个问题,接口上注明的参数类型是binarybase64,按照文档示例,不管怎么序列化都不对,一直在提示参数不对,不能序列化.后面才发现,这个二进制序列化格式是用的c#独有的序列化方式,是不跨平台的.emmm 二、BinaryFormatter ​ 在c#里面常用的序列化方式是BinaryFormatter,这种序列化方式,是二进制形式,跟protocbuf差不多,但性能上要比protocbuf要好点.对比json就更不用说了.但为了提升性能,必将在其他地方作...

阅读更多

Postgresql-CDC 方案踩坑

一、CDC概念 ​ CDC(Changing Data Capture)意思是捕捉变化的数据,用流的方式持续捕捉.这与ETC有着本质上的区别,ETL则是定时拉取数据. ​ ETL 概念上是:抽取(E)、转换(T)、导入(L),ETL现在是比较成熟的,方案也比较多.但定时抽取就会意味着有时效性的问题,如果有一种方案,数据库数据出现更改就自动同步到OLAP引擎里面,岂不是美滋滋?那么CDC就是为此而生的,持续不断的监听数据库的变化情况,一旦变化就立马发出消息进行同步消息,但这种方案也并非完美,如遇到大事务的SQL,批量更新的这种,也会有延迟的问题,权衡一下估计两者差不多. ​ 市面上常用的数据库有Mysql,PostgreSql等,Mysql的CDC方案比较多,通过监听binlog实...

阅读更多

centos7 修改limits限制

一、前言 ​ 最近在做压力测试,看看后面接口能跑到多少的qps,结果跑了一下下,接口就开始报错了,经过排查发现,后端是正常的,是nginx 打开文件数过多导致的nginx的错误,于是乎,就改呗.改着改着服务器就被改炸了. 二、修改limits 查看当前open files数量 ulimit -a 测试服务最高能到多少(当然这个数字并不是越大越好) 图中可以看到最大值在1000000左右.一定不要试图超过这个值,不然ssh会连接不上服务器的,哪怕物理终端都会登陆不上去,切记! 修改配置使之永久生效.打开vim /etc/security/limits.conf,在文件末尾添加以下两行参数. ...

阅读更多

BufferedInputStream与InputStream的区别

一、前言 最近在项目遇到一个BufferedInputStream和InputStream混用的问题,导致InputStream阻塞线程,于是为了解决问题,打算剥开BufferedInputStream的buffer观察内在的本质,凭啥都说BufferedInputStream比InputStream快? 二、事故线程 事故是发生在,抄袭的jsch下载文件的demo里,为了偷懒开发人员直接把demo里面的代码扒了下了,不过好在一点是开发人员觉得InputStream比较慢,换成了BufferedInputStream.这点还是比较好的,至少有点点常识.以下为部分代码. 读取文件代码 ChannelExec channel = null; O...

阅读更多