- 博客(566)
- 资源 (71)
- 问答 (1)
- 收藏
- 关注
原创 源码通透-springmvc源码分析
源码通透-springmvc源码分析spring版本: 5.0.0.RELEASEjdk: 1.8更多源码分析:https://github.com/arthur-dy-lee/arthur-dy-lee-note文章目录源码通透-springmvc源码分析一、servlet生命周期Servlet生命周期简述调用过程的详细步骤自定义servlet二、流程总述**Spring工作流程描述**...
2018-12-03 03:45:41 799
原创 源码通透-mybatis源码分析以及整合spring过程
mybatis源码分析以及整合spring过程mybatis源码分析版本:mybaits3 (3.5.0-SNAPSHOT)mybatis源码下载地址:https://github.com/mybatis/mybatis-3mybatis整合spring的jar版本:mybatis-spring-1.3.2-sources.jar,后使用2.0.0-SNAPSHOTspring源码版本:...
2018-11-27 16:40:42 1815
转载 微信红包算法以及带上下限的红包算法
微信红包算法以及带上下限的红包算法原文地址: 带上下限的红包算法实践总结微信红包的随机算法是怎样实现的? - 知乎一、微信红包算法代码大致意思是这样的:假设有100元钱,分给十个人。那么第一个人获得红包大小怎么计算呢?100/10 = 10元。这是期望值。从0.01到20的区间中(其中20=10乘以2)随机抽取一个数,就是第一个人获得红包的大小。假设第一个人获得了15元,那么...
2018-08-25 19:54:52 24928 14
原创 Aspect Joinpoint Advice Pointcut 区别
Aspect Joinpoint Advice Pointcut 区别When you go out to a restaurant, you look at a menu and see several options to choose from. You can order one or more of any of the items on the menu. But unti...
2018-08-11 10:12:10 2837 2
原创 Association-Aggregation-Composition区别
Association-Aggregation-Composition区别[关联聚合组合的区别]简介Association 关联就是两个对象有关系,这个比较泛化,可以是一对一,一对我,多对一,多对多的关系 。Aggregation聚合是一种特殊的关联,是一个’has-a’的关系,是’整体-部分’的关系。聚合的类包括另一个类的引用,可以说聚合类包含另一个类,被包含的类是聚合类的一部分。并...
2018-08-10 18:23:19 1778
转载 centos安装rocketMQ4.2
centos安装rocketMQ4.2一、下载最新的rocketmq源码文件 unzip rocketmq-all-4.2.0-source-release.zip cd rocketmq-all-4.2.0/ mvn -Prelease-all -DskipTests clean install -U cd distribution/target/apa...
2018-08-01 16:27:35 959
转载 字符串匹配算法综述
字符串匹配算法综述字符串匹配算法综述:BF、RK、KMP、BM、Sunday字符串匹配算法,是在实际工程中经常遇到的问题,也是各大公司笔试面试的常考题目。此算法通常输入为原字符串(string)和子串(pattern),要求返回子串在原字符串中首次出现的位置。比如原字符串为“ABCDEFG”,子串为“DEF”,则算法返回3。常见的算法包括:BF(Brute Force,暴力检索)、RK(R...
2018-07-22 21:39:23 43036 6
原创 java多线程系列_让主线程等待子任务执行的各种方式
业务场景在web应用开发中我们经常会遇到这样的场景:一个请求任务,我们需要去查多个库,并对查询到的数据做处理,此时如果采用同步的方式去查,往往会导致请求响应时间过慢。比如:两个查询任务task1,task2,task1查询数据要花2s,处理数据要花1s;task2查询数据花5s,处理数据花2s,那一次请求的时间是2+1+5+2=10s。而如果我们用异步的方式,则能减少请求响应的时间。 而利...
2018-07-21 23:12:04 2481 1
转载 排序算法复杂度
Big-O Complexity ChartHorribleBadFairGoodExcellentO(log n), O(1)O(n)O(n log n)O(n^2)O(2^n)O(n!)OperationsElementsCommon Data Structure OperationsData StructureTime ComplexitySpace Complexity AverageWo...
2018-07-13 17:17:36 564
转载 算法导论------渐近记号Θ、Ο、o、Ω、ω详解【转】
目录:1.渐近精确界记号:ΘΘ(big-theta)2.渐近上界记号 :OO(big-oh)3.渐近下界记号 :ΩΩ(big-omege)4.非渐近紧确上界:o(小-oh)5.非渐近紧确下界:ω(小-omege)6.渐近记号Θ、Ο、o、Ω、ω关系7.参考资料1.渐近精确界记号:ΘΘ(big-theta) 假设算法A的运行时间表达式T1(n)T1(n)为:T1(n)=30n4+20n3+40n2+...
2018-07-12 21:42:52 784
转载 Eureka与ZooKeeper 的比较[转]
1. 前言服务注册中心,给客户端提供可供调用的服务列表,客户端在进行远程服务调用时,根据服务列表然后选择服务提供方的服务地址进行服务调用。服务注册中心在分布式系统中大量应用,是分布式系统中不可或缺的组件,例如rocketmq的name server,hdfs中的namenode,dubbo中的zk注册中心,spring cloud中的服务注册中心eureka。在spring cloud中,...
2018-07-11 14:06:07 3429
转载 ZooKeeper是按照CP原则构建的,不适合做Service服务发现
一、cap分布式领域中存在CAP理论,且该理论已被证明:任何分布式系统只可同时满足两点,无法三者兼顾。 ①C:Consistency,一致性,数据一致更新,所有数据变动都是同步的。 ②A:Availability,可用性,系统具有好的响应性能。 ③P:Partition tolerance,分区容错性。因此,将精力浪费在思考如何设计能满足三者的完美系统上是愚钝的,应该根据...
2018-06-07 15:47:52 14766
转载 java运算符 与(&)、非(~)、或(|)、异或(^)
java运算符 与(&)、非(~)、或(|)、异或(^)最近看HashMap源码,遇到了这样一段代码:static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);}于是我整理学习了以下知识:1...
2018-05-01 23:05:21 3665
原创 抽奖开发思路
抽奖开发思路先中奖,然后再抽奖品。0、整个代码外包加分布式锁,开始抽奖1、参数检查是否满足活动时间和场次是否满足抽奖次数是否满足库存校验2、先拿到抽奖的配置参数,包括中奖率人工配置中奖率直接返回系统中奖率,则要计算总库存和总时间比BigDecimal initStockTimeRatio = properties.getInitStockTimeRat...
2018-04-05 20:55:08 1360
原创 WeakHashMap 以及ThreadLocal的几点思考
WeakHashMap 以及ThreadLocal的几点思考1. WeakHashMap的key是用的WeakReference,在没有其它强引用的情况下,下一次GC时才会被垃圾回收WeakReference 被垃圾回收是有前置条件的,很多书或博客上,经常把它落下。1.1 WeakReference 证明代码如果B的强引用设为null,那么B的弱引用将被垃圾回收...
2018-04-02 00:23:56 2013 1
转载 TCP报文格式详解
TCP报文是TCP层传输的数据单元,也叫报文段。1、端口号:用来标识同一台计算机的不同的应用进程。1)源端口:源端口和IP地址的作用是标识报文的返回地址。2)目的端口:端口指明接收方计算机上的应用程序接口。TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接。2、序号和确认号:是TCP可靠传输的关键部分。序号是本报文段
2018-03-28 14:07:27 55109 5
转载 简明理解三次握手和四次挥手
注:三次握手和四次挥手本身并不复杂,但却可以从很多角度理解这两个过程,本文仅取一个视点解读,如有其它看法欢迎留言交流。三次握手与四次挥手分别对应TCP连接建立过程与断开过程,先上TCP报文格式:三次握手过程:问题1: 为什么要三次握手?答:三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,
2018-03-28 11:02:00 295
转载 RocketMQ与kafka对比(18项差异)-转自阿里中间件
淘宝内部的交易系统使用了淘宝自主研发的Notify消息中间件,使用Mysql作为消息存储媒介,可完全水平扩容,为了进一步降低成本,我们认为存储部分可以进一步优化,2011年初,Linkin开源了Kafka这个优秀的消息中间件,淘宝中间件团队在对Kafka做过充分Review之后,Kafka无限消息堆积,高效的持久化速度吸引了我们,但是同时发现这个消息系统主要定位于日志传输,对于使用在淘宝交易、订单
2018-03-28 06:57:18 12127
原创 Snowflake id生成器
最下面代码是mybatisplus根据 李景枫 的开源稍改写的id生成器,核心算法就: Snowflake算法Snowflake算法核心把时间戳,工作机器id,序列号组合在一起。Snowflake算法核心除了最高位bit标记为不可用以外,其余三组bit占位均可浮动,看具体的业务需求而定。默认情况下41bit的时间戳可以支持该算法使用到2082年,10bit的工作机器id...
2018-03-21 15:08:30 3247
转载 数据库触发联合索引的几个条件
本文主要总结查询语句触发联合索引(索引定义中至少包含两个索引列)的几种条件。示例如下。首先创建表:CREATE TABLE E (e1 INT, e2 VARCHAR(9), e3 INT, PRIMARY KEY(e1, e3)); 这样就建立了一个联合索引:e1,e3触发联合索引是有条件的:1、使用联合索引的全部索引键,可触发索引的使用。例如:SELECT E.* F...
2018-03-19 12:35:29 1725
转载 导出csv文件中文乱码
导出csv文件中文乱码微软的excel文件需要通过文件头的bom来识别编码,所以写文件时,需要先写入bom头。在写文件前,加入BOMString bOM = new String(new byte[] { (byte) 0xEF, (byte) 0xBB, (byte) 0xBF });//orbyte[] uft8bom={(byte)0xef,(byte)0xbb,(b...
2018-03-09 10:43:40 8532 1
原创 Ubantu下安装zookeeper,zkui,kafka笔记
sudo gedit /etc/rc.local启动zookeepercd /usr/local/zk/bin sudo ./zkServer.sh start ../conf/zoo1.cfgsudo /usr/local/zk/bin/zkServer.sh start /usr/local/zk/conf/zoo1.cfg sudo /usr/local/zk/bin/zkServer.s
2018-01-03 21:06:11 588
转载 Web性能压力测试工具之ApacheBench(ab)
PS:网站性能压力测试是性能调优过程中必不可少的一环。只有让服务器处在高压情况下才能真正体现出各种设置所暴露的问题。Apache中有个自带的,名为ab的程序,可以对Apache或其它类型的服务器进行网站访问压力测试。ApacheBench命令原理:ab命令会创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访问。它的测试目标是基于URL的,因此,既可以用来测试Apach
2017-12-18 17:07:33 467
转载 一种分布式系统下的自增主键实现方法
在分布式系统中大多数存在着如下的架构形式:系统的被逻辑分为前台应用和数据库两个部分,前台应用通过统一的数据访问层对数据库进行读写操作,前台应用会部署在多台机器上,数据库系统则采用分库分表的形式进行部署。 由此引发的一个问题是,当需要对一个逻辑上的表TABLE1(物理上被分为多个表,形如:TABLE1_0000,TABLE1_0001)采用统一的自增主键时,则会遇到困难,因为采用了分表的策略将无法采用
2017-11-09 18:09:16 2882
原创 mybaits mapper.xml的写法
用习惯了mybaits generator,好久不写mybaits,发现都不会写了,这里先放下些例子,以供以后用的时候参考 项目示例下载地址: https://gitee.com/paincupid/simple-springmvcmybaits config examplepackage com.paincupid.springmvc.persistence;import
2017-11-06 01:19:02 2373
原创 SpringMVC+Mybatis+Maven+Bonecp+IDEA
springmvc整合mybaits源代码下载:http://download.csdn.net/detail/paincupid/9141975 git://code.csdn.net/paincupid/springmvc.git https://gitee.com/paincupid/simple-springmvc1/ 本文工具:EclipseSTS,Maven; spring4.2.0
2017-11-06 01:10:10 422
转载 StarUML中类图如何显示interface
StarUML中类图添加接口,默认是显示一个圆形(也就是我们常讲的棒棒糖),怎么让该接口显示<>呢?默认的接口图示如下UML类图接口棒棒糖表示法在UML类图中,接口有2种表示方法1、分为两层,第一层接口名,顶端有<>标识,第二层是接口方法,也就是俗称的两层矩形框表示;2、和类图表示一样,区别为第二层为空,在矩形框上有一个棒棒糖的标识,俗称棒棒糖表示法;下面我们就详细讲解下如何把接口变成两层矩形框表示
2017-10-12 20:18:17 6300
转载 google guava使用例子
guava是Java的一个扩展类库在google的许多项目中使用过了,现在最为一个 开源的Java类库广泛使用(http://code.google.com/p/guava-libraries/)。 guava类库扩展的主要是这些相关类:collections(集合类),concurrency(并发),primitives,reflection(反射),comparison,I/O,hash...
2017-09-26 12:21:12 526
转载 如何实现一个分布式 RPC 框架
远程过程调用(Remote Procedure Call,RPC)是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。RPC的主要目标是让构建分布式应用更加容易,在提供强大的远程调用能力的同时不损失本地调用的语义的简洁性。趁实习前的这段业余时间,我实现了一个轻量级的分布式RPC框架,名字叫做 buddha,代码量不大,但是麻雀虽
2017-09-18 14:34:27 520
转载 在Java中提升函数以更好地“函数式”编程
Java8中的Stream和Optional给我们带来了函数式编程的乐趣,但Java仍然缺少很多函数编程的关键特性。Lambda表达式、Optional和Stream只是函数式编程的冰山一角。这也导致了varvr和functionlajava这些类库的出现,他们都源于Haskell这个纯函数式编程语言。如果想要更加地“函数式”编程,那么首先要注意的是不要过早的中断monad(一种设计模式,表示将一个
2017-09-18 14:27:52 492
转载 大型网站架构技术一览
本文内容大部分来自《大型网站技术架构》,这本书很值得一看,强烈推荐。网站系统架构层次如下图所示:1.前端架构前端指用户请求到达网站应用服务器之前经历的环节,通常不包含网站业务逻辑,不处理动态内容。浏览器优化技术并不是优化浏览器,而是通过优化响应页面,加快浏览器页面的加载和显示,常用的有页面缓存、合并HTTP减少请求次数、使用页面压缩等。CDN
2017-09-17 15:29:50 312
转载 Spring框架中的各种*Aware接口
Spring框架提供了多个*Aware接口,用于辅助Spring Bean编程访问Spring容器。通过实现这些接口,可以增强Spring Bean的功能,但是也会造成对Spring框架的绑定。实现这些 Aware接口的Bean在被实例化之后,可以取得一些相对应的资源,例如实现BeanFactoryAware的Bean在实例化后,Spring容器将会注入BeanFactory的实例,而实现Appli
2017-09-06 14:27:43 1023
原创 redisson分布式锁redLock源码解析【未完】
一、准备阶段1、原理 一个客户端需要做如下操作来获取锁: 1.获取当前时间(单位是毫秒) 2.轮流用相同的key和随机值在N个节点上请求锁,在这一步里,客户端在每个master上请求锁时会有一个和总的锁释放时间相比小的多的超时时间。比如如果锁自动释放时间是10秒钟,那每个节点锁请求的超时时间可能是5-50毫秒的范围,这个可以防止一个客户端在某个宕掉的master节点上阻塞过长
2017-08-24 17:56:30 4646 2
转载 RedLock - 用Redis构建分布式锁
线程间的通信、同步方式与进程间通信方式1、线程间的通信方式使用全局变量 主要由于多个线程可能更改全局变量,因此全局变量最好声明为volatile使用消息实现通信 在Windows程序设计中,每一个线程都可以拥有自己的消息队列(UI线程默认自带消息队列和消息循环,工作线程需要手动实现消息循环),因此可以采用消息进行线程间通信sendMessage,postMessage。 1)定义消息#de
2017-08-14 16:54:35 2246
转载 线程间的通信、同步方式与进程间通信方式
线程间的通信、同步方式与进程间通信方式1、线程间的通信方式使用全局变量 主要由于多个线程可能更改全局变量,因此全局变量最好声明为volatile使用消息实现通信 在Windows程序设计中,每一个线程都可以拥有自己的消息队列(UI线程默认自带消息队列和消息循环,工作线程需要手动实现消息循环),因此可以采用消息进行线程间通信sendMessage,postMessage。 1)定义消息#de
2017-08-14 11:57:24 340
转载 win10禁用笔记本键盘
首先打开开始菜单,找到 windows 系统 – 右击命令提示符 – 更多 – 以管理员身份运行输入以下命令,回车:sc config i8042prt start= disabled然后重启电脑,就好啦~你想恢复的时候,只要重复上面的动作,输入的命令改为:sc config i8042prt start= auto
2017-08-13 15:57:36 2380
转载 七周七并发模型 | 读后感
七周七并发模型 | 读后感这本书,感觉有两种看法,第一种是粗略的看,有点像21天速成教程,讲了好几种通用模型,几乎是了解性质的介绍,明白其优缺点及适用的场景,等到需要用的时候,再去挑选合适的武器;第二种是按照每个小节提示,认真思考时间,这显然需要7周,而不是作者说的21天(7*3)的时间了。 我是按照第一种方式看的,现在随意总结下各种模型的特性作为回顾了解。线程与锁 原始,底层(既是优点也是缺
2017-08-12 23:36:54 3002
mybatis-generator中文注释并带分页-改进版3
2017-07-19
mybatis-generator中文注释并带分页-改进版2
2017-07-08
springFramwork-5.0.0.M5
2017-04-19
mybatis-generator中文注释并带分页
2016-09-24
mysql-connector-odbc-5.3.6-win32.msi
2016-07-22
SpringMVC+Mybatis
2015-09-26
visualvm-1.3.8
2015-08-12
Java并发编程实践
2015-02-11
mavenssm maven spring3 struts2 mybaits
2014-07-13
jxls-1.0.2
2013-11-27
TiDB in action.pdf 介绍Tidb原理和最佳实践
2022-10-16
JVM分享,包含JVM的优化目标、优化原则、JVM组成、内存区域划分、垃圾回收算法、垃圾回收器、FullGC触发时机等等.
2022-05-06
RocketMQ 分享。目录:RocketMQ作用和特性、架构、存储模型、高可靠、事务、延时消息、消息重试、消息堆积能力
2022-04-15
阿里idea代码格式化文件Aliyun Code Conventions.xml
2021-01-11
mariadb-10.4.6和编译它所需要的依赖
2019-07-19
sslscan-1.10.2-4.el7.psychotic.x86_64.rpm
2019-07-19
coreJava240问与答面试题
2018-04-20
spring源码如何引入分析
2015-07-09
TA创建的收藏夹 TA关注的收藏夹
TA关注的人