- 博客(237)
- 资源 (2)
- 收藏
- 关注
原创 比较详细的并发编程细节分析
最近在系统的学习并发编程,整理出来详细的条理笔记,希望能够分享收获。1. 最原始的加锁代码,加锁是指锁住了这个对象,一个线程在运行到这段代码的时候,在这个对象的堆内存区域写入了锁信息,其他线程运行到这段代码的时候,会访问这个对象,因为这块有synchronized关键字,就会访问锁信息,然后发现这个对象被锁住了,就会等。所以,锁住的永远都是对象,而不是代码块。2. 专门用一个对象...
2019-06-13 12:22:32 435
原创 解决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 1303456 316
原创 Http协议与TCP协议简单理解后续
大约2年前写了一篇关于HTTP协议与TCP协议的文章,原文链接。最近再次简单读了一遍《TCP/IP协议卷》,有了一些新的理解。这篇文章没有一个很好的连贯性,都是我在读书过程中总结的知识点,整体比较松散,但是个人感觉知识点都是非常重要,有很多地方让我明白了迷惑很久的问题。写了这么长时间的代码,发现自己对TCP/IP了解的并不是很透彻。虽然会用C#的HttpClient类来进行网络编程,也可...
2016-09-05 08:58:52 14093 11
原创 Http协议与TCP协议简单理解
在C#编写代码,很多时候会遇到Http协议或者TCP协议,这里做一个简单的理解。TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性。Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求。Http会通过TCP建立起一个到服务器的连接通道,当本次请求需要的数据完毕后,Http会立即将TCP连接断开,这个过程是
2014-06-03 11:10:16 97934 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 89734 38
原创 Fiddler无法捕获C#中HttpClient与HttpWebRequest发出的localhost请求
在使用C#进行网络请求的编写,HttpClient与HttpWebRequest发出的请求,也不会被Fiddler捕获。解决办法就是在domain上加上fiddler后缀。, 这样就可以被fiddler捕获了。
2023-01-22 20:26:52 859 1
原创 127.0.0.1 / localhost This site can‘t provide a secure connection 该网站无法提供安全的连接
在本地使用Chrome调试网站的时候,有时候会出现"This site can't provide a secure connection 该网站无法提供安全的连接"的异常。原因就是此前在访问127.0.0.1的时候,因为某些配置出现了自动跳转,从http://127.0.0.1跳转到了https://127.0.0.1, 而现在调试网站,虽然没有了让其自动跳转的配置,但是Chrome浏览器记住了这个地址缓存了下来,依然还是自动跳转到了https.但是现在调试的网站又不支持https,所以Chrome就会提
2022-07-04 09:40:02 6540 1
原创 IIS Express调试ASP.NET网站出现Oracle.DataAccess incorrect format问题
使用IIS Express在调试ASP.NET网站的时候抛出异常 Could not load file or assembly 'Oracle.DataAccess' or one of its dependencies. An attempt was made to load a program with an incorrect format.看到incorrect format异常,大概是x64与x86的不兼容问题。然后去Bin目录检测一下每个dll的格式。发现无论是网站代码的dll是Any CPU
2022-06-10 17:24:42 798 1
原创 如何让屏幕保持活跃以及办公通信软件避免显示离线
当暂时离开电脑去处理其他事情的时候,离开一段时间之后,如果安装有办公通信软件,比如说Office teams, 它会自动显示为离线状态。如何让它一直显示在线状态?作为程序员我们应该有对我们自己的电脑有足够的控制权。一般常规无法解决的问题,我们就用代码解决。其实思路很简单,只要我们写一个C#的控制台小程序,让它一直在一小块区域来回挪动鼠标就行了。每隔2秒钟,向上挪动鼠标一点点,再隔2秒中,再向下挪回来一点点,回到了原地。如此循环。Office teams就一直处于在线状态。...
2022-06-10 10:32:44 6175
原创 跨域的简单理解
跨域限制是浏览器端的限制,也是浏览器出于安全考虑,需要服务端共同参与,来保障网页信息的安全。跨域限制的原因:AJAX同源策略主要用来防止CSRF攻击。如果没有AJAX同源策略,相当危险,我们发起的每一次HTTP请求都会带上请求地址对应的cookie,那么可以做如下攻击:用户登录了自己的银行页面 mybank.com,mybank.com向用户的cookie中添加用户标识。用户浏览了恶意页面 evil.com。执行了页面中的恶意AJAX请求代码。evil.com向mybank.com发起AJAX HT
2022-01-22 09:19:26 691
原创 如何优雅的停止睡眠状态的Windows service
一般在Windows service中,都是在OnStart方法中,启用一个新的线程去完成一些定时的任务。有时候定时任务是通过一个死循环以及线程睡眠来达到隔一段时间执行一次的效果。如下,任务1秒钟执行一次。private bool _signal = true;public void OnStart(){ Task.Factory.StartNew(() => { while (_signal)
2021-09-21 11:47:11 623
原创 Chrome Devtools中保持住CSS状态
如图,在单击这个Cancel按钮的时候,这个Button的CSS class会发生变化,按钮的颜色会变深。这时候我想拷贝出来这些新增加的class,我打开Chrome Devtools,然后在Devtools中选中这个元素,点击鼠标右键想打开Copy的弹出框的时候,这个Cancel按钮的CSS class又变回到了最开始的状态,无法拷贝。也就是说,单击了这个Cancel按钮后,一旦失去焦点,它的class又会变道原始的样子,但是如果想拷贝它的类,是无法不让它失去焦点的。那么,如果让Button在失去焦点的情
2021-09-21 11:45:23 638
原创 List<KeyValuePair<string, int>> 返回空值不为null
在List中使用Find进行查找的时候,如果没有找到,正常情况下会返回一个null. 比如一个List<string>中,如果根据某个字符串过滤,没有找到的话,会返回一个null.如果List<KeyValuePair<string, int>>中使用Linq进行查找,没有找到的情况下,返回的并非是null,而是[null, 0], 分别为string与int的默认值。这是为什么?查看List的源码,在没有找到符合条件的元素的时候,会返回def
2021-08-30 16:12:06 1434 1
原创 数据库读写分离的设置
在一个网站访问量大的时候,数据库资源是最宝贵的资源。一般网站来讲,数据库能够承受的并发请求,要远远小于网站页面能够承受的并发请求,因为数据库有大量的IO操作,一台数据库能够应对的连接数,要远远小于IIS或者Tomcat能够应对的连接数。这就是为什么要使用数据库连接池,如果有1000个请求到达了IIS,而数据库连接池的大小只有10个连接,那么这1000个请求就要排队,从连接池中拿到连接,然后从数据库中取得数据。在高并发情况下,为什么要做读写分离?首先,读写分离可以增加数据库的个数,相当于对数据库的水平
2021-05-13 20:20:31 583
原创 网站页面第一次速度很慢然后速度快的原因分析
最近使用ASP.NET写的一个页面,用户反映页面加载很慢,需要几十秒钟,需要分析优化一下。这是一个ASP.NET网站,从数据库里读取的商品数据,然后显示在前端页面中。简单描述一下查找问题的过程,以及其中学到的经验。首先,要分析一下到底是哪里慢。一般第一反应都是SQL语句是不是慢,需不需要加索引优化一下。使用SQL Profiler监听的方式,找到了运行的SQL语句,拷贝出来,然后在SQL Server Management Studio中运行,发现2秒就执行完毕。所以排除了SQL慢的问题。其次,既然
2021-05-05 17:25:01 2539
原创 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 6776
原创 RSA加密在与银行端Http REST接口调用中的应用
简单介绍一下我们项目的背景,我们公司是金融公司A,开发的这个系统是一个跟第三方银行B进行接口调用的系统,每天公司A内部系统会生成一批数据,这些数据包括公司客户名,身份证号,银行卡号,扣款金额等信息,会通过HTTP Web API接口调用的方式,把这些数据推送给银行B端,因为这些客户都是签署了代扣协议的,银行B端就会从这些人的银行卡中扣款。最后,银行会把批量的扣款结果,通过回调我们公司A接口的方式,推回我们公司。如果使用HTTP协议,肯定会存在安全问题。举个例子,在A向银行B发送的数据中,包含用户张三的应
2020-06-29 15:46:52 1208
原创 使用延迟队列处理失效订单问题
在处理订单过程中,如果一个订单生成之后,在特定时间内(比如15分钟)没有付款,那么我们就要删除这一笔订单,释放占据的货物资源。在这种场景下,最直观的做法就是写一个定时job, 每分钟扫描一下数据库的订单表,如果订单超过了15分钟,那么订单状态改为删除,并且商品表数量要加1,因为刚刚删除的订单释放了一个商品。这样会给数据库造成很大的压力,而且如果长时间都没有过期的订单,而job依然会每分钟跑一...
2020-03-30 17:27:13 2348 1
原创 电商系统ID生成策略简单介绍
在系统中生成ID的方式有很多种,现在简单分析一下各种方式的适用场景以及优缺点。1. UUID. 唯一性,在单体环境下或者分布式环境下都不会出现重复。但是UUID的劣势也是一大堆a.没有可读性,导致程序在调试的时候数据不直观,不能像整型ID一样直观的看到大致运行到了哪条记录,如果比对两条数据,也不能很快看出谁先谁后。b. 32位字符串太长,占用数据库资源。c. 在对主键进行索引...
2020-01-06 15:15:41 2527
原创 Redis连接池的简单设计与实现
连接池属于一种池化技术,在现在高并发场景下用的很多,其作用如下。1. 与Redis服务器是TCP管道连接。TCP的创建需要三次握手,如果使用连接池技术,不用每次都是创建TCP连接,避免了耗时的三次握手操作。而且在非池化的情况下,每次的TCP销毁要四次挥手,以及java对象的GC,都需要时间与性能消耗。2. 资源分配。如果不适用池化技术,在多台机器访问同一个Redis服务器的情况下,如果每台...
2019-12-31 16:38:29 1505
原创 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 9647 3
原创 电商秒杀系统应对高并发相关的技术
在电商秒杀系统中,短时间内应对大量请求,造成高并发。这样,程序应该尽可能的过滤掉无效的请求,然后对于有效请求,使用各种技术进行处理。1. 对网页中的图片或者不经常改动的其他静态资源进行浏览器端的缓存。 Cache-Control no-cache — 强制每次请求直接发送给源服务器,而不经过本地缓存版本的校验。这对于需要确认认证应用很有用(可以...
2019-12-10 18:00:05 393
原创 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 7096 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 1799
原创 按照指定字段删除DataTable中的重复行
在DataTable中,如果要删除重复行,可以使用如下代码。DataView dv = new DataView(finalResultSet.ResultDataTable);DataTable dt2 = dv.ToTable(true);根据现有DataView中的行,创建并返回一个新的DataTable。参数Boolean如果为true,则返回所有列都具有不同值的行,为fals...
2019-07-02 14:22:09 1244
原创 脚本语言的特征以及Python语言的特点
脚本语言的脚本这一说法缘于Unix操作系统,目的是让其批量的,按照既定的方式去做一些事情,就想照着剧本做事一样。英文中的script就是剧本的意思,中文对应的词就是剧本,脚本。脚本就是剧本意思。人们叫着叫着就这样了,大家都叫脚本语言,没有人叫剧本语言。所以有人说,我写了一个脚本,意思是,写了一个批量的能做某些事的命令,不一定非得是用某种语言写脚本,也可以只用CMD命令写一个bat文件,这个也叫做脚...
2019-07-02 14:03:37 2089
原创 Winsw将java应用转变为windows服务时抛出异常"错误 1067:进程意外终止"
使用winsw(Github https://github.com/kohsuke/winsw)可以非常方便的将java应用转换成windows service服务部署在windows服务器上。详细操作步骤可以搜索一下,文档比较丰富。这里说一个我遇到的问题。当我按照文档说明每步骤都配置好之后,服务安装没有问题,然后在启动的时候,服务抛出异常"错误 1067:进程意外终止".publi...
2019-06-28 12:57:45 4673
原创 MQ分布式环境下保持数据一致性
业务场景:支付宝的余额系统与蚂蚁金服的余额宝是两个对立的平台,相互之间通过ActiveMQ进行通信。当用户把1000块钱从余额存进余额宝的时候,余额系统数据库减1000,然后发送一个消息到MQ,余额宝端接收到这个消息后,在其数据库中加1000.可能存在的问题:1. 消息丢失问题。用户发起1000块钱的转账,支付宝余额平台减了1000,触发消息放到了队列,余额宝端成功消费了消息,但是...
2019-06-25 13:07:39 5184 2
原创 对于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 2580
原创 @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 38522 14
原创 ORA-01008: 并非所有变量都已绑定
OPEN PO_EXPCUR FOR V_QUERY_SQL USING …这句代码在参数设置错误的时候会抛出ORA-01008: 并非所有变量都已绑定原因:在执行动态SQL语句的时候,SQL字符串中填充的变量与USING关键字中绑定的变量个数不一致。...
2019-06-14 12:19:51 33479
原创 可能会引起(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 7803
原创 事务控制中悲观锁与乐观锁
事务并发可能存在的问题1.在撤销事务之后,不管有没有其他人或者其他事务进行了操作,直接回到最原始的状态2. 读到了另外的一个事务没有提交的数据3. 因为其他事务的介入,使得本事务前后读取的数据不一致4. 不可重复读的特殊情况(先后两次读取不一样,并做了操作)第一种,只要支持事务就不会有这个问题。第二种,脏读,读了其他人没有提交的事务。第三...
2019-04-29 14:11:56 2707 1
原创 Linux中的内存占用并不是真的被应用程序占用了
今天在查看Linux服务的运行状态的时候发现,内存占用是非常高的。这里可以看到有一行是buffers/cache. 这里是用来做disk cache的,并不是真的被应用程序使用了。disk cache, 就是硬盘镜像,能够大幅度提升服务器的运行速度。比如说,硬盘上有一个TXT文件经常被读取,那么Linux就会把这个文件内容放到硬盘镜像中,这样每次读取就不从硬盘读取了,而是从内存中读取,...
2018-11-27 13:05:21 3019
原创 服务器已拒绝客户端凭据 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 2706
原创 The RenderBody method has already been called
项目中用的是ASP.NET MVC,部署在服务器的IIS中。在部署新版本的时候,抛出了如下异常。解决办法:1.如果能登录服务器,那么重启IIS中相应的网站就解决。2.如果不能登录服务器,通过FTP的方式部署,那么要先删除以前的那个文件,再上传新文件,而不是直接上传新文件去覆盖原来的文件。问题分析如下:这个网站是部署在服务器上的IIS站点中,开发人员没有权限登录这个服务器,只能通过F...
2018-10-26 12:26:05 1631
原创 解决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 2249
原创 解决C# WinForm程序与Oracle连接界面长时间没有响应的问题
程序情况:C#编写的WinForm程序(用户管理系统),后端WCF服务为其提供数据,与Oracle相关的操作在WCF服务器完成。遇到问题:最近有用户报告异常,描述WinForm的某个搜索界面(去调用WCF服务在Oracle中查找数据)一直处于等待状态。DBA那边也有人报告,一些调用该用户管理系统相关的存储过程的oracle session,一直处于运行状态3个小时,对oracle数据库造成了影响,...
2018-05-23 13:31:15 2609
原创 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 2181
原创 深入分析tomcat作为web容器的组织结构以及启动过程
最近从C#转到Java开发,5年了,再次重拾Eclipse,Tomcat等工具,发现Eclipse早已不在是单一的主流IDE,出现了更好用的Intellij Idea. 在做C#开发使用Viusal Studio的时候,其中最爱的插件叫做Resharper,这款插件是异常的强大,涵盖了方方面面的代码辅助编写等。InetllijIdea这个IDE,恰巧跟Resharper是一家公司的产品,这样快捷键
2018-01-15 14:59:13 2844
常用英文口语日常生活口语表达
2010-06-28
ASP-NET中Oauth2 为什么进行自动跳转了(语言-javascript)
2024-05-25
多个并排div高度不一致的问题
2022-12-02
TA创建的收藏夹 TA关注的收藏夹
TA关注的人