- 博客(19)
- 收藏
- 关注
原创 spring解析-循环依赖
1. 前序循环依赖就是N个类循环嵌套引用,Spring处理循环依赖问题有三种情况:构造器循环依赖:这种情况Spring无法处理,直接抛出BeanCurrentlyInCreationException异常 单例模式下的setter循环依赖:通过“三级缓存”处理循环依赖。 非单例循环依赖:无法处理2. 构造器循环依赖bean的创建,首先执行类的构造器,将当前正在创建的bean记录在...
2020-01-14 13:47:57
272
原创 LevelDB解析
1. 整体架构LevelDB是一个写性能十分优秀的存储引擎,是典型的LSM数(Log Structured-Merge Tree)实现。LSM树的核心思想就是放弃部分读的性能,换取最大的写入能力。LSM树写性能极高的原理,简单地来说就是尽量减少随机写的次数。对于每次写入操作,并不是直接将最新的数据驻留在磁盘中,而是将其拆分成:(1)一次日志文件的顺序写;(2)一次内存中的数据插入。Leve...
2019-12-10 22:17:34
582
原创 Netty源码解析 - 零拷贝
1. 概念所谓零拷贝,就是在操作数据是,不需要将数据buffer从一个内存区域拷贝到另一个内存区域。因此减少内存的拷贝,CPU的效率得到提升。在OS层面上的零拷贝通常指避免在用户态(User-space)与内核态(Kernel-space)之间来回拷贝数据。例如Linux提供的mmap系统调用,它可以将一段用户内存映射到内核空间,当映射成功后,用户对这段内存区域的修改可以直接放映到内核空间...
2019-11-27 16:17:18
283
原创 Linux命令 - cut/sed/awk
cut切割字符串-d: 切割字符,只支持单字符 -f: 选取分割字段[root@8994ac83081b tmp]# echo '11:22:33' | cut -d ':' -f 222sed替换字符-s: 替换字符 -g: 替换每行第一个匹配[root@8994ac83081b tmp]# echo '11||22||33' | sed 's/||/ /'...
2019-11-27 16:14:13
178
原创 Druid数据库连接池解析
1. 概述Druid是阿里提供的一个高效的数据库连接池,它可以方便的管理数据库连接,实现连接复用。Druid具有良好的可扩展性,支持SQL检查、慢查询统计等功能。主流连接池各项功能对比如下:2. 连接池获取Druid连接池的模式是采用生产者-消费者模式,使用ReentrantLock进行同步。连接产生获取使用异步方式,提交CreateConnectionTask任务创建连...
2019-11-26 16:46:59
734
原创 Netty源码解析 - 服务端启动流程
1. 概述Netty是一个稳定、高性能NIO通信框架,它对JDK NIO的使用做了很好的封装,对使用者屏蔽了NIO通信的底层细节,对使用NIO降低业务开发工作量,降低开发难度2. Netty IO Reactor模型3. Netty服务端启动流程4. Netty组件分析4.1 EventLoopGroupNetty处理IO请求线程池,管理一组线程处理IO请求。...
2019-11-01 20:16:07
290
转载 HTTP协议 状态码详解
HTTP协议 状态码详解HTTP状态码,我都是现查现用。 我以前记得几个常用的状态码,比如200,302,304,404, 503。 一般来说我也只需要了解这些常用的状态码就可以了。 如果是做AJAX,REST,网络爬虫,机器人等程序。还是需要了解其他状态码。 本文我花了一个多月的时间把所有的状态码都总结了下,内容太多,看的时候麻烦耐心点了。HTTP状态码的学习资料到处都
2014-07-24 08:10:46
478
转载 C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区
C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。在一个进程中,位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用。和堆一样,用户栈在程序执行期间可以动态地扩展和收缩。 堆,就是那些由 new 分配的内存块,他们的释放编译器不去
2014-07-20 14:29:53
334
转载 const char*, char const*, char*const的区别
const char*, char const*, char*const的区别const char*, char const*, char*const的区别问题几乎是C++面试中每次都会有的题目。 事实上这个概念谁都有,只是三种声明方式非常相似很容易记混。 Bjarne在他的The C++ Programming Language里面给出过一个助记的方法:
2014-07-14 19:53:55
439
转载 linux c语言 select函数用法
linux c语言 select函数用法 Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程
2014-07-06 21:08:47
565
转载 Linux中fork()函数详解
一、fork入门知识 一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。 一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新
2014-07-02 20:00:08
474
转载 进程间通信
序linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的。而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间通信方面的侧重点有所不同。前者对Unix早期的进程间通信手段进行了系统的改进和扩充,形成了“system V IPC”,通信进程局限在单个计算机内;后者则跳过了该限制,形成了基于套接口(socket
2014-07-02 10:34:08
475
转载 《TCP/IP详解 卷1:协议》读书笔记
一 前言每当这个时候,最好的方法就是找一本书,然后用这本书来麻痹自己.其它乱七八糟的,都滚远点吧.哈哈,屡试不爽!开始抄书了.....二 链路层链路层作用(1)为IP模块发送和接收IP数据报.(2)为arp模块发送arp请求和接收arp应答.(3)为rarp模块发送rarp请求和接收rarp应答.以太网与IEEE 802封装以太网IP
2014-07-02 10:31:15
678
转载 2013年校园招聘之IT/计算机相关专业找工作总结--准备篇
笔者2013年找工作结束了,在整理电脑文件时突然看到之前一篇一年之前一位南大师兄找工作的总结,于是又看了一遍,写的很不错,笔者当时看了很有感触,虽然没能做到师兄写的东西,但是确实学习和准备了一些师兄写的东西。笔者的找工作意向,是去互联网公司,最后也如愿去了BD,回头再看看这篇总结,感触颇多,特拿来分享给大家,后续我会写上自己找工作的笔试面试经验1. 早做准备笔试必看书籍:程序员面试
2014-05-03 19:52:44
513
转载 Dynamic Time Warping 动态时间规整算法
Dynamic Time Warping 动态时间规整算法Dynamic Time Warping(DTW)是一种衡量两个时间序列之间的相似度的方法,主要应用在语音识别领域来识别两段语音是否表示同一个单词。1. DTW方法原理在时间序列中,需要比较相似性的两段时间序列的长度可能并不相等,在语音识别领域表现为不同人的语速不同。而且同一个单词内的不同音素的发音速度也
2013-11-25 10:44:10
2393
1
转载 Cross Correlation
http://paulbourke.net/miscellaneous/correlate/Cross CorrelationAutoCorrelation -- 2D Pattern IdentificationWritten by Paul BourkeAugust 1996Cross correlation is a standard meth
2013-10-14 22:01:40
2001
转载 Handwriting Database
http://www.gavo.t.u-tokyo.ac.jp/~qiao/database.htmlHandwriting DatabaseThis page lists some on/off-line handwriting database for academic use. Some of them can be downloaded free while others
2013-10-14 22:00:06
3464
转载 SVM算法入门
转自:http://blog.youkuaiyun.com/yangliuy/article/details/7316496SVM入门(一)至(三)Refresh按:之前的文章重新汇编一下,修改了一些错误和不当的说法,一起复习,然后继续SVM之旅.(一)SVM的简介支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决
2013-10-14 21:57:20
909
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人