- 博客(51)
- 收藏
- 关注
原创 spring体系(一)
Spring体系的核心是IOC和Aop 除此之外还有很多服务 比如: 事物处理 WebMVC JDBC ORM RFC设计目标:绑定的是接口而不是服务。Spring Security 源于Acegi实现AOP 采用了多种方式 集成了AspectJ框架 也有ProxyFactory 代理工厂模式 JDK代理 cglib代理Spring是一个很清晰的分层架构
2018-01-31 17:49:57 580 1
原创 java概述及jdk历史演变
java开发主要在openjdk项目上JCP 指定技术规范 指定审查JSR目前的jsr有300个jdk发展历史 1996 java 1 1997 java 1.1 jdbc rmi 反射 1998 java1.2 collections jit 2000 java1.3 HotSpot虚拟机 jddi jpda 2002 java 1.4 正则 异常链 ni
2018-01-14 14:22:12 373
原创 堆的扩展
堆(heap)是实现有限队列的首选,在上一篇文章中有讲解。这篇文章将堆的变种 二项堆 斐波那契堆二叉堆的主要操作时 insert() O(logn) 在尾部插入元素并siftUp调整堆 extractMin() O(logn)删除堆顶元素并将最后一个放在堆顶 用siftDown调整 peek() O(1) delete() O(logn) heapify(
2018-01-30 16:50:46 337
原创 数据结构之二叉堆
二叉堆 是一棵完全二叉树,插入节点时按照顺序尽量插在左边,采用数组实现,二叉堆规定子节点的值一定小于或者大于父节点。PrioityQueue中二叉堆原理应用 JDK1.5中怎么使用的 PrioityQueue特殊的二叉堆 并且每一层的元素从左往右顺序插入 节点之间有一定的关系 设父节点小标为p 左孩子 下标l 右孩子下标r p=(c-1)/2; l=p*2+1; r=
2018-01-30 16:16:56 254
原创 Redis持久化策略
Redis数据库状态有两种持久化策略因为redis是内存数据库肯定存在持久化问题RDB既可以手动执行也可以根据服务器配置选项定期执行它是将某个点的数据库状态保存在一个rdb文件中,完成了将内存中的数据保留在磁盘中。rdb文件是一个经过压缩的二进制文件,通过它可以还原数据库状态。保存和载入rdb文件的方法save和bgsave命令实现后续再更新
2018-01-30 14:37:03 335
原创 Redis单机数据库
Redis服务器将所有数据库保存在redis.h/redisServer结构的db数组中,它的每一项都是redis.h/redisDb结构redisDb *db int dbnum 由服务器配置的database选项决定 默认16 切换过程每个客户端对应一个目标数据库,可切换 默认0号 可用select命令切换 客户端状态 redisClient 结构中的d
2018-01-30 13:36:42 228
原创 压缩列表
当列表键还有少量项 ,或者是小整数类型,或者短字符串 Redis采用压缩列表做底层实现还有哈希键的底层实现目的:节约内存定义:由一系列连续编码的内存块组成的顺序型数据结构。结构:zlbytes 4字节 记录整个压缩列表占用的内存字节数 用途内存重分配或者zlen位置时使用过zltail 4字节 记录尾节点位置 偏移量zllen 2字节 记录节点数
2018-01-30 12:47:03 429
原创 Netty补充
Netty和Mina是Java世界非常知名的通讯框架。它们都出自同一个作者,Mina诞生略早,属于Apache基金会,而Netty开始在Jboss名下,后来出来自立门户netty.io。关于Mina已有@FrankHui的Mina系列文章,我正好最近也要做一些网络方面的开发,就研究一下Netty的源码,顺便分享出来了。 Netty目前有两个分支:4.x和3.x。4.0分支重写了很多东西,并对项
2018-01-24 20:41:34 958 1
原创 关于日志系统
1、日志框架提供日志调用的接口,实际的日志输出委托给日志系统实现。SLF4j:提供新的API,初衷是配合Logback使用,但同时兼容Log4j。JCL(Jakarta Commons Logging):比较流行的日志框架,很多框架都依赖JCL,例如Spring等。常用的组合方式:slf4j+logbackJCL+log4j2、日志系统
2018-01-24 20:00:49 261
原创 JavaScript学习(五)之JQuery框架
JavaScript库和框架 分担了附加和增强功能的维护和开发。流行的js库JQuery 可以为网页增添效果,提高可用性,并且使用Ajax交互数据更加方便容易YUI 提高可用性和改善web应用的功能MooTools集中优化在JavaScript处理JQuery跨浏览器的痛点 语法容易 简单的命名空间和一致的功能性 拥有良好的用户接口插件托管 这里没
2018-01-24 15:03:25 392
原创 JavaScript学习(四)DOM对象
DOM提供了一种访问和修改HTML文档内容的方法3个规范级别0 遗留DOM 主要集中在对单元素的访问 链接头像将HTML生产树 DOM可视为树结构获取元素通过ID通过标签名处理兄弟节点操作属性 查看属性设置属性创建元素添加文本删除元素后续会更新事件 Cookie 图像操作 web表单结合 css结合
2018-01-24 14:44:48 172
原创 JavaScript学习(三)BOM
我们现在用一个实际应用的角度去研究JavaScript浏览器是JavaScript的核心 Rhino项目首先了解一下浏览器 浏览器层次浏览器对象模型子对象有document frames history location navigator screen self/windows/parentwindows对象 表示浏览器正在打开的窗口
2018-01-24 14:31:29 174
原创 JavaScript学习(二)基本语法
学习之前 需要先了解下基本语法规则首先区分大小写注释 多行/**/ 单行//最好添加; 防止解析器误解意图建议把js放在外部 优点 :代码从标记中分离 更容易维护 可作为缓存然后是javascript的保留字ECMA-262保留字break delete if this while case do in throw with catch els
2018-01-24 13:43:22 189
原创 JavaScript学习(一)初识
js虽说知道 但并没有仔细研究过 今天想深入学习下先来认识下基础的百度定义 :JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能起源:在1995年时,由
2018-01-24 00:08:14 225
原创 搭建轻量级web框架
我们所知道MVC这种设计模式可以更好的解耦,今天来自己尝试一下如果使用Servlet来用作Controller 引发Servlet会随业务扩展数量不断变多我们要减少Servlet数量解决方案 将负责调用Service的相关方法 并将返回值放入Request 或者Response中而且Service不是new创建 而是通过IOC控制具体业务逻辑首先是Cont
2018-01-23 23:14:55 304
原创 web架构初探(一)
web开发常用的工具IDEA MAVEN GIT打算自己实现一个java web框架 逐个实现类加载器Bean容器IOC框架MVC框架AOP特性(代理技术)事物控制(ThreadLocal)服务插件安全控制插件优化完善功能实现具备:作者接下来开发Smart系统
2018-01-23 21:30:53 181
原创 netty入门
闲的无聊想学习一下netty写个netty入门吧什么是netty有了Netty,你可以实现自己的HTTP服务器,FTP服务器,UDP服务器,RPC服务器,WebSocket服务器,Redis的Proxy服务器,MySQL的Proxy服务器等等。我们回顾一下传统的HTTP服务器的原理1、创建一个ServerSocket,监听并绑定一个端口2、一系列客户端来请求这个端口...
2018-01-22 21:27:58 228
原创 运行时数据区
和其他语言一样jvm需要管理一个供对象分配的内存空间。为支持程序执行,JVM还需要提供一份内存空间作为函数调用栈。jvm在启动时在内存中开辟空间,按照职能划分成不同的区域。这些区域主要包括堆 用来分配java对象和数组的空间。方法区:存储类元数据。栈:线程栈PC寄存器:存储执行指令的内存地址堆和方法区 共享区域 由JVM
2018-01-22 16:39:24 141
原创 创建对象
在java中 字节码new 表示创建对象当虚拟机遇见该指令时会从栈顶取得目标对象在常量池中的索引,接着定位到目标对象的类型。然后虚拟机根据该类的状态,采取相应的分配技术,在内存中分配实例空间,并完成示例数据和对象头的初始化这样一个对象在jvm中就创建好了。具体创建流程图首先获取对线类型信息并验证是否解析过,若通过采用快速分配否则慢速分配实例的创
2018-01-22 12:58:50 247
原创 类的状态转化
java文件经过编译后转化为跨平台的二进制字节流,为class文件。 class定义了类接口的形式在经过加载 连接和初始化过程后 可被运行时识别的类型和接口就在虚拟机中形成了。class文件格式magic魔数 固定OXcAFEBABE minor_version 此版本 major_version 主版本 constant_pool_count 常量池个数 ac
2018-01-22 12:04:54 289
原创 多边形三角解刨算法
D(n+1)/Dn=(4n-6)/n Dn表示凸n边型的三角解刨分数为减少散列冲突找一个不大于n的素数效果最好Trie树 单词查找树 哈希树的变种 典型的应用用于统计,排序和保存大量的字符串,所以经常被搜索引擎系统用于文本词频统计。 优点利用字符串的公共前缀来减少查询时间,最大程度减少不相关字符串比较。十字链表P能在多项式内解决的问题NP不能再多项式时间内解决或者
2018-01-19 19:13:23 356
原创 算法学习之动态规划(一)动态规划入门
动态规划一直不敢碰 这次决定死磕了 学不会就学不会 哈哈什么是动态规划动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。 20世纪50年代初美国数学家R.E.Bellman等人在研究多阶段决策过程(multistep decision process)的优化问题时,提出了著名的最优化原理(
2018-01-19 17:37:36 948
原创 HashSet和TreeSet
关于java中的set的实现有Treeset和HashSet还有LinkedHashSetset是基于map实现, 而map中的key为set所存的值 而value为空set中元素的去重原理其实就利用的事map中key关键字的唯一性。 此外上面的这些容器都是不安全的,哈哈
2018-01-19 16:22:21 133
原创 Shrio的学习
1.验证登录基本步骤: * 2.1、首先通过new IniSecurityManagerFactory并指定一个ini配置文件来创建一个SecurityManager工厂; 2.2、接着获取SecurityManager并绑定到SecurityUtils,这是一个全局设置,设置一次即可; 2.3、通过SecurityUtils得到Subject,其会自动绑定到当前线程;如果在web环境在
2018-01-19 15:40:04 223
原创 Shrio
Shiro 安全认证框架 作用: 认证 Authentication 授权 Authorization 加密 Cryptography 会话管理 web集成 缓存 Caching Concurrency Remeber me Run as Test Rleams 聚集一个或多个用户安全数据的数据源 启用单点登录。Shrio不会维护用户 也不会维护权限
2018-01-18 20:11:25 836
原创 关于J2EE体系和13个规约
先看一下j2ee体系 JDBC 衍生框架Hibernate Mybatis 需要掌握: 1jdbc原理 以jdbc为接口可以有不同的驱动类 2.处理基本流程 注册diver 创建connection 创建Statement 获取ResultSet 处理返回结果 关闭 3.Prestatement 和statement区别线程池的基本概念和用法JMS 可用产
2018-01-18 19:41:07 265
原创 闭包
闭包 Ruby之父在> 闭包就是把函数及变量包起来,是变量生命周期延长,并且使得变量可以被外部函数引用。支持lambda语言附带支持闭包Java闭包带来的问题 匿名函数的变量引用,也叫变量引用泄漏,会导致线程安全问题 所以在java8之前 必须将其声明为final类型
2018-01-18 17:02:49 148
原创 HashMap源码学习
面试中经常会被问 所以这里及向总结一下在jdk8中对HashMap做了较大的优化 在数组加链表的基础上加上了红黑树。 在后缀链表结构大于8时转为红黑树数据结构里存的是哈希桶数组Node[] 采用了拉链法解决冲突首先获取到其hashcode值 ,然后通过Hash算法的后两步运算(高位运算和取模运算)来定位该键值对的存储位置如何控制map使得hash碰撞次数概率减少,并且通数
2018-01-18 16:34:27 169
原创 MQ
消息队列背景: 高并发情况下,来不及同步,请求可能会发生阻塞 例如大量的请求同时到达mysql,导致无数的行锁,表锁,请求堆积过多, 从而触发toomany connections错误。因此可以通过消息队列,异步处理请求,缓解系统压力从rpc 到webservice 到SOA 到Restful 以及云计算的pass与SaaS推广 系统之间的交流更加方便消息的分布式架构
2018-01-18 15:29:09 264
原创 Cookie
Cookie 定义: Cookie是HTTP协议下,服务器端或者脚本可以维护客户工作站上信息的一种方式。 Cookie是web服务器保存在用户浏览器上的小文本文件,他可以包含用户的信息。 无论何时连接到站点,web站点都可以访问cookie的消息。 Cookie的原理如下图3.创建 ServletAPI就提供了Cookie4.查询 request.getcookies 5
2018-01-18 14:39:46 140
原创 java动态代理
动态代理在java中广泛的应用 比如 1.Spring aop 2. Hibernate数据查询 3. 测试后端框架mooc 4. Rpc 5. java注解对象的获取静态代理的代理关系在编译时确定的 静态代理适合代理类较少且确定的java的动态代理有两种 1.原生的jdk代理 2.cglib动态代理实例 静态代理的实现 抽取被代理方法的公共接口 p
2018-01-17 18:08:58 258
原创 Tomcat源码分析之Connector
Connector主要接收请求并将请求封装成Request和Response来具体处理 最底层是使用Socket来进行连接的 而Request和Response是HTTP协议来封装的,封装完之后交给Container来处理。 因此Container是Servlet的容器。 Container处理完之后返回给Connector,Connector通过使用Socket将结果返回给客户端整个请求
2018-01-16 17:57:46 194
原创 Tomcat源码剖析之Pipeline-Valve
先分析它的处理模式 Pipe-Value是责任链模式 责任链模式是指在一个请求处理的过程中有多个处理者依次对请求进行处理 Pipe-Value的管道模型和普通的责任链模型区别每个pipeline都有特定的value,而且在管道的最后执行,BaseValue不可删除 上层的管道的value会调用下层的4个容器有四个basevalve在Filter中用到的FilterChain其实
2018-01-16 17:38:11 734
原创 关于正则表达式
正则表达式 构成:常规字符 字符类(组) 通配符 量词 转移序列 字面值 字符类 方括号 [] ^排除性字符 连续指定字符范围的[1-9] 通配符 . 量词决定匹配次数 + * ?匹配最长子序列成为贪婪模式可以通过?量词来指定胁迫行为replaceAll 用于正则强大的搜索和替换操作 Split 将输入序列简化为标记注意对于重复的最好先编译 如果需要重复使用相
2018-01-14 14:47:42 160
原创 数据库知识
关于数据库的知识点 表的子查询,联合查询,连接查询子查询 查询中嵌套查询。把子查询的结果作为父查询的查询对象如 select * from ( select CName,CId from TblClass union select DName,DId from Department ) as t1 order by cname联合查询
2018-01-14 14:46:24 153
原创 Tomcat生命周期分析(二)
先分析一个简化了的配置这里写代码片<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional info
2018-01-14 14:42:50 237
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人