自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 比较详细的并发编程细节分析

最近在系统的学习并发编程,整理出来详细的条理笔记,希望能够分享收获。1. 最原始的加锁代码,加锁是指锁住了这个对象,一个线程在运行到这段代码的时候,在这个对象的堆内存区域写入了锁信息,其他线程运行到这段代码的时候,会访问这个对象,因为这块有synchronized关键字,就会访问锁信息,然后发现这个对象被锁住了,就会等。所以,锁住的永远都是对象,而不是代码块。2. 专门用一个对象...

2019-06-13 12:22:32 175

原创 解决org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)问题

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)问题,即在mybatis中dao接口与mapper配置文件在做映射绑定的时候出现问题,简单说,就是接口与xml要么是找不到,要么是找到了却匹配不到。截图为网络中搜索到的常见原因:照着修改之后,问题依旧存在。最终花费了好大的力气才找...

2018-08-13 15:19:13 536811 121

原创 Http协议与TCP协议简单理解后续

大约2年前写了一篇关于HTTP协议与TCP协议的文章,原文链接。最近再次简单读了一遍《TCP/IP协议卷》,有了一些新的理解。这篇文章没有一个很好的连贯性,都是我在读书过程中总结的知识点,整体比较松散,但是个人感觉知识点都是非常重要,有很多地方让我明白了迷惑很久的问题。写了这么长时间的代码,发现自己对TCP/IP了解的并不是很透彻。虽然会用C#的HttpClient类来进行网络编程,也可...

2016-09-05 08:58:52 11704 10

原创 Http协议与TCP协议简单理解

在C#编写代码,很多时候会遇到Http协议或者TCP协议,这里做一个简单的理解。TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性。Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求。Http会通过TCP建立起一个到服务器的连接通道,当本次请求需要的数据完毕后,Http会立即将TCP连接断开,这个过程是

2014-06-03 11:10:16 91379 18

原创 在64位Win7操作系统中安装Microsoft Access Engine的解决方案

现在的Win7系统中安装的一般都是32位的Office,因为微软推荐使用32位的Office,兼容性更强,稳定性更好。在使用Access作为数据库的时候,C#操作Access,如果Access是accdb,那么一切会很顺利,Win7系统中有访问accdb的相应的组件,使用C#调用就可以。如果是mdb,以往在XP上是使用Jet方式访问,而在Win7上已经不推荐使用Jet, 因为Win7系统本身就不带

2014-01-06 19:33:56 76514 36

原创 SpringBoot项目中对RestTemplate进行网络代理Proxy设置使得Fiddler能够进行抓包

Fiddler是非常好用的工具,能够非常方便的分析Http请求。最近SpringBoot项目需要使用RestTemplate调用远程的一个Rest API. 使用Postman测试调用那个API的时候一切正常,使用Java代码RestTemplate调用的时候就有问题。这时候就想到了使用Fiddler抓包,看一看这两次的http请求的具体内容有什么区别。这时候发现,Fiddler竟然不能抓到Java代码的Http请求。大致原因是JVM跳过了系统的代理设置,这就需要我们自己写代码来个RestTemplate

2020-06-29 16:13:16 375

原创 RSA加密在与银行端Http REST接口调用中的应用

简单介绍一下我们项目的背景,我们公司是金融公司A,开发的这个系统是一个跟第三方银行B进行接口调用的系统,每天公司A内部系统会生成一批数据,这些数据包括公司客户名,身份证号,银行卡号,扣款金额等信息,会通过HTTP Web API接口调用的方式,把这些数据推送给银行B端,因为这些客户都是签署了代扣协议的,银行B端就会从这些人的银行卡中扣款。最后,银行会把批量的扣款结果,通过回调我们公司A接口的方式,推回我们公司。如果使用HTTP协议,肯定会存在安全问题。举个例子,在A向银行B发送的数据中,包含用户张三的应

2020-06-29 15:46:52 151

原创 使用延迟队列处理失效订单问题

在处理订单过程中,如果一个订单生成之后,在特定时间内(比如15分钟)没有付款,那么我们就要删除这一笔订单,释放占据的货物资源。在这种场景下,最直观的做法就是写一个定时job, 每分钟扫描一下数据库的订单表,如果订单超过了15分钟,那么订单状态改为删除,并且商品表数量要加1,因为刚刚删除的订单释放了一个商品。这样会给数据库造成很大的压力,而且如果长时间都没有过期的订单,而job依然会每分钟跑一...

2020-03-30 17:27:13 821

原创 电商系统ID生成策略简单介绍

在系统中生成ID的方式有很多种,现在简单分析一下各种方式的适用场景以及优缺点。1. UUID. 唯一性,在单体环境下或者分布式环境下都不会出现重复。但是UUID的劣势也是一大堆a.没有可读性,导致程序在调试的时候数据不直观,不能像整型ID一样直观的看到大致运行到了哪条记录,如果比对两条数据,也不能很快看出谁先谁后。b. 32位字符串太长,占用数据库资源。c. 在对主键进行索引...

2020-01-06 15:15:41 520

原创 Redis连接池的简单设计与实现

连接池属于一种池化技术,在现在高并发场景下用的很多,其作用如下。1. 与Redis服务器是TCP管道连接。TCP的创建需要三次握手,如果使用连接池技术,不用每次都是创建TCP连接,避免了耗时的三次握手操作。而且在非池化的情况下,每次的TCP销毁要四次挥手,以及java对象的GC,都需要时间与性能消耗。2. 资源分配。如果不适用池化技术,在多台机器访问同一个Redis服务器的情况下,如果每台...

2019-12-31 16:38:29 253

原创 Java中List(LinkedHashMap) 转为 ArrayList(Object) 的方法

在SpringBoot中使用RestTemplate来调用远端的服务,本质上返回来的都是Json字符串。在下边的例子中,我们使用List<Template>来接收远端返回来的值。Template是一个Java Model.List<Template> list = restTemplate.getForEntity(urlFullTemplates, ArrayLis...

2019-12-20 14:37:13 1831

原创 电商秒杀系统应对高并发相关的技术

在电商秒杀系统中,短时间内应对大量请求,造成高并发。这样,程序应该尽可能的过滤掉无效的请求,然后对于有效请求,使用各种技术进行处理。1. 对网页中的图片或者不经常改动的其他静态资源进行浏览器端的缓存。 Cache-Control no-cache — 强制每次请求直接发送给源服务器,而不经过本地缓存版本的校验。这对于需要确认认证应用很有用(可以...

2019-12-10 18:00:05 133

原创 SpringBoot+Mybatis+Logback不在控制台打印SQL问题

本项目用到的是SpringBoot+Mybatis+Logback. 为了能够在控制台打印SQL,在配置文件中进行了各种配置,网上能查到的方法都试了,但是还是不打印SQL语句。在配置文件中标明了logging.level.cn.homecredit.sams.ddme.reconciliation.model.mapper=debug.依然不打印SQL语句。另外的一个SpringBoot...

2019-08-29 15:42:32 3017 1

原创 WCF中The socket connection was aborted可能导致该异常的原因

The socket connection was aborted. This could be caused by an error processing your message or a receive timeout being exceeded by the remote host.可能是WCF的数据传输中含有一个DataTable. 如果是没有名字的DataTable,就会抛出...

2019-07-02 16:23:20 591

原创 按照指定字段删除DataTable中的重复行

在DataTable中,如果要删除重复行,可以使用如下代码。DataView dv = new DataView(finalResultSet.ResultDataTable);DataTable dt2 = dv.ToTable(true);根据现有DataView中的行,创建并返回一个新的DataTable。参数Boolean如果为true,则返回所有列都具有不同值的行,为fals...

2019-07-02 14:22:09 551

原创 脚本语言的特征以及Python语言的特点

脚本语言的脚本这一说法缘于Unix操作系统,目的是让其批量的,按照既定的方式去做一些事情,就想照着剧本做事一样。英文中的script就是剧本的意思,中文对应的词就是剧本,脚本。脚本就是剧本意思。人们叫着叫着就这样了,大家都叫脚本语言,没有人叫剧本语言。所以有人说,我写了一个脚本,意思是,写了一个批量的能做某些事的命令,不一定非得是用某种语言写脚本,也可以只用CMD命令写一个bat文件,这个也叫做脚...

2019-07-02 14:03:37 686

原创 Winsw将java应用转变为windows服务时抛出异常"错误 1067:进程意外终止"

使用winsw(Github https://github.com/kohsuke/winsw)可以非常方便的将java应用转换成windows service服务部署在windows服务器上。详细操作步骤可以搜索一下,文档比较丰富。这里说一个我遇到的问题。当我按照文档说明每步骤都配置好之后,服务安装没有问题,然后在启动的时候,服务抛出异常"错误 1067:进程意外终止".publi...

2019-06-28 12:57:45 2339

原创 MQ分布式环境下保持数据一致性

业务场景:支付宝的余额系统与蚂蚁金服的余额宝是两个对立的平台,相互之间通过ActiveMQ进行通信。当用户把1000块钱从余额存进余额宝的时候,余额系统数据库减1000,然后发送一个消息到MQ,余额宝端接收到这个消息后,在其数据库中加1000.可能存在的问题:1. 消息丢失问题。用户发起1000块钱的转账,支付宝余额平台减了1000,触发消息放到了队列,余额宝端成功消费了消息,但是...

2019-06-25 13:07:39 1644

原创 对于SpringBoot是否支持JSP简单理解的知识总结

1. SpirngBoot并不是不支持JSP,而是在某些情况下不支持JSP,对于JSP有一些限制。在其官网上写明了使用JSP的限制有4点如果在SpringBoot中使用JSP作为渲染引擎,方法有2种。第一种,引入Jasper包,并且需要构建一种传统的web结构,最终以war包的形式发布。运行的时候,以 java -jar xxx.war的方式运行。第二种,引入Jasper包,并且把web文...

2019-06-25 13:00:54 307

原创 @Configuration与@Bean注解的原理

@Configuration与@Bean结合使用。@Configuration可理解为用spring的时候xml里面的<beans>标签,@Bean可理解为用spring的时候xml里面的<bean>标签。Spring Boot不是spring的加强版,所以@Configuration和@Bean同样可以用在普通的spring项目中,而不是Spring Boot特有的,只是...

2019-06-18 13:59:37 14053 5

原创 ORA-01008: 并非所有变量都已绑定

OPEN PO_EXPCUR FOR V_QUERY_SQL USING …这句代码在参数设置错误的时候会抛出ORA-01008: 并非所有变量都已绑定原因:在执行动态SQL语句的时候,SQL字符串中填充的变量与USING关键字中绑定的变量个数不一致。...

2019-06-14 12:19:51 8597

原创 可能会引起(ORA-01006: 绑定变量不存在)的问题

有很多的时候各种原因都会引起这个问题,现在说一个比较小众的原因。V_QUERY_SQL = ‘SELECT COUNT(DISTINCT (B.BATCH_ID)) FROM T_DD_RES T JOIN T_DD_REQ Q ON T.ID_DD_REQ = Q.ID JOIN T_DD_BATCH B ON T.B...

2019-06-14 12:15:33 2712

原创 事务控制中悲观锁与乐观锁

事务并发可能存在的问题1.在撤销事务之后,不管有没有其他人或者其他事务进行了操作,直接回到最原始的状态2. 读到了另外的一个事务没有提交的数据3. 因为其他事务的介入,使得本事务前后读取的数据不一致4. 不可重复读的特殊情况(先后两次读取不一样,并做了操作)第一种,只要支持事务就不会有这个问题。第二种,脏读,读了其他人没有提交的事务。第三...

2019-04-29 14:11:56 1176 1

原创 Linux中的内存占用并不是真的被应用程序占用了

今天在查看Linux服务的运行状态的时候发现,内存占用是非常高的。这里可以看到有一行是buffers/cache. 这里是用来做disk cache的,并不是真的被应用程序使用了。disk cache, 就是硬盘镜像,能够大幅度提升服务器的运行速度。比如说,硬盘上有一个TXT文件经常被读取,那么Linux就会把这个文件内容放到硬盘镜像中,这样每次读取就不从硬盘读取了,而是从内存中读取,...

2018-11-27 13:05:21 1905

原创 服务器已拒绝客户端凭据 the server has rejected the client credentials

我们的WinForm程序同构WCF与部署在服务器上的服务端相连。今天很多WinForm用户反映,在使用的时候遇到问题,抛出异常服务器已拒绝客户端凭据,the server has rejected the client credentials.现在说一说WCF的安全认证问题。一般我们做的局域网应用,都没有加入任何的安全配置,那么WCF默认的安全配置是什么呢?如果不做任何安全配置,那么WCF采用...

2018-11-06 16:03:36 1126

原创 The RenderBody method has already been called

项目中用的是ASP.NET MVC,部署在服务器的IIS中。在部署新版本的时候,抛出了如下异常。解决办法:1.如果能登录服务器,那么重启IIS中相应的网站就解决。2.如果不能登录服务器,通过FTP的方式部署,那么要先删除以前的那个文件,再上传新文件,而不是直接上传新文件去覆盖原来的文件。问题分析如下:这个网站是部署在服务器上的IIS站点中,开发人员没有权限登录这个服务器,只能通过F...

2018-10-26 12:26:05 784

原创 解决Intellij idea中Maven项目子模块的target code version一直回滚的问题

最近在项目中遇到了这个Intellij idea中Maven项目子模块的target code version一直回滚的问题。第一天在IDEA的设置中,把所有的子模块的target code version都设置为1.8,第二天打开之后,又都回滚到了1.5,1.6等各式各样的版本。在网上查找方法,就是在Maven的pom文件中增加如下插件信息:<plugin> <g...

2018-09-05 10:33:35 1488

原创 解决C# WinForm程序与Oracle连接界面长时间没有响应的问题

程序情况:C#编写的WinForm程序(用户管理系统),后端WCF服务为其提供数据,与Oracle相关的操作在WCF服务器完成。遇到问题:最近有用户报告异常,描述WinForm的某个搜索界面(去调用WCF服务在Oracle中查找数据)一直处于等待状态。DBA那边也有人报告,一些调用该用户管理系统相关的存储过程的oracle session,一直处于运行状态3个小时,对oracle数据库造成了影响,...

2018-05-23 13:31:15 1482

原创 ORA-21525: attribute number or (collection element at index) string violated its constraints 解决办法

Exception: ORA-21525: attribute number or (collection element at index) string violated its constraintsCause: Attribute value or collection element value violated its constraint.Action: Change the val...

2018-05-23 12:58:16 1042

原创 深入分析tomcat作为web容器的组织结构以及启动过程

最近从C#转到Java开发,5年了,再次重拾Eclipse,Tomcat等工具,发现Eclipse早已不在是单一的主流IDE,出现了更好用的Intellij Idea. 在做C#开发使用Viusal Studio的时候,其中最爱的插件叫做Resharper,这款插件是异常的强大,涵盖了方方面面的代码辅助编写等。InetllijIdea这个IDE,恰巧跟Resharper是一家公司的产品,这样快捷键

2018-01-15 14:59:13 2465

原创 在金融业务中跨行清算系统的实现过程

最近看了很多银联方面的清算系统的设计原理,对于跨行清算系统有了很大的了解,写这篇文章的目的是在于从一个程序员的角度去思考一个跨行清算系统的架构是如何实现的以及整个过程中我们有哪些思想是可以借鉴的。由于金融里面涉及到太多的专业名词,包括借贷,备付金,头寸,调拨等等,这里不会涉及到这些,取而代之的是以大家可以理解的概念去解释。下面简单的介绍一下两种跨行清算系统的实现原理以及特点。一种跨清算系统

2017-04-11 12:48:53 948 2

原创 中国金融市场目前存在的金融牌照总结

金融牌照的正式名称是金融机构经营许可证,是批准金融机构开展业务的正式文件。凡从事金融业务的机构必须先取得与之对应的金融机构许可证。金融作为国内管制严格的行业之一,首当其冲的当然是执业资格问题,也就是牌照问题。金融监管根据时段划分为事前监管、事中监管、事后监管,市场准入制度是事前监管的核心,金融许可证则是市场准入制度的常态表现。  金融牌照,即金融机构经营许可证,是批准金融机构开展业

2017-02-17 15:24:04 2062

原创 在Visual Studio中,配置与平台中的x86设置与目标平台中的x64设置的作用

在Visual Studio中查看某个Project的属性,你就会发现在顶端有两个下拉框,这里可以指定平台相关信息,但是在这个下边,又有一个目标平台,这里也可以指定平台相关信息,这往往很迷惑,一个Project怎么会有两种设置呢,那么当前项目会编译成那种格式呢?这里来简单的解释一下。那个活动的,“活动”的意思是,指的是整个的solution的一个配置。包括VS工具栏中的那个配置管理

2017-01-25 12:03:20 19321

原创 Visual Studio添加对Class内部的if, for循环等块区域的outline功能以及对html,css添加#region模块

在Viusl Stuido提供了对内部方法的Outline功能,也就是说折叠起来,这样方便与看代码与找代码。但是有时候一个方法内部的一个块状区域太长,我们在一个方法中写代码,也想把这个区域折叠起来,当然我们可以用#region,但是我们也可以用这里的这个插件,非常好用。https://marketplace.visualstudio.com/items?itemName=Skybladev2.

2017-01-24 16:18:48 906

原创 异常[System.InvalidOperationException: 未指定'xxx'的定制类型映射或该映射]解决方案

在使用C#代码向Oracle数据库取数据,但是因为是面向对象的方式,所以在C#中的Model对象,在Oracle中也建立了相应的对象,而且在C#的Oracle连接代码中,要做好相应的映射。在运行的时候,发现抛出了这个异常:ex=System.InvalidOperationException: 未指定'dataSource='xxxxxx' schemaName='xxx' typeNam

2017-01-24 16:08:57 6132

原创 数据库索引的通俗理解

最近使用到Oracle数据库的索引比较多,所以就想好好研究一下索引到底是什么。毕竟作为一个Application Developer,而不是DBA,所以这篇文字也是很通俗,特别浅显的描述了一下索引相关的概念。为什么需要索引?数据在磁盘上是以块的形式存储的。为确保对磁盘操作的原子性,访问数据的时候会一并访问所有数据块。磁盘上的这些数据块与链表类似,即它们都包含一个数据段和一个指针,指针指向下一个...

2016-11-10 16:40:14 13583 14

原创 The provider is not compatible with the version of Oracle client sometimes (提供程序与此版本的 Oracle 客户机不兼容)

其实这个问题很直观,就是你在C#项目中使用的Oracal.DataAcess.dll文件的版本与你电脑上安装的ODAC.EXE(ODP.NET)版本不一致,不论是32位或者是64位平台不一致,还是版本的高低不一致,反正就是不匹配造成了问题。具体的解决办法网上有很多,这里就不再细讲。但是这次我遇到的问题很奇怪。我的机器上都装了多个ODAC.EXE的版本,包括两个64位的,一个32位的,而且...

2016-11-10 16:37:12 9498

原创 PL/SQL的可用注册码

注册码:Product Code:4t46t6vydkvsxekkvf3fjnpzy5wbuhphqzserial Number:601769password:xs374ca在本机上测试可以使用,本机版本:

2016-10-20 17:26:16 6099 1

原创 对于安装在本机上的根证书的进一步了解

以前写过一篇文件,描述的是为什么会出现HTTPS与根证书这种东西,那篇文章的描述还是很详细的,地址是http://blog.csdn.net/sundacheng1989/article/details/25540601最近在做一个WCF项目的时候,又遇到了根证书问题,而且在测试阶段还需要使用自认证的证书,这次就又继续研究了一下装在本机电脑上的根证书。首先要纠正一下我以前的错误概念,以前

2016-10-14 13:18:53 1188

原创 在多人同时登陆服务器的情况下单个用户被踢掉其桌面程序是否会关闭的问题

最近在做的一个项目中,使用的是WCF,最终要在Windowsservice中进行部署。为了测试方便,我暂时是把Windows service写成了控制台程序,拷贝到了服务器的桌面上,然后双击这控制台程序运行。这样也能host这个WCF服务,而且一切正常。 我所担心的是,这个控制台程序会不会被强迫关闭掉?因为这几天用户都在进行测试,如果控制台被关掉了那么测试就出问题了。 我之所以

2016-10-14 13:12:14 3867 1

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