自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 JVM-对象(实例)

    当虚拟机遇到new指令,会创建一个对象。1.    类加载检测:        检查该指令的参数是否在常量池中定位到一个类的引用,检查该引用代表的类是否已经被加载、解析、初始化过。如果没有,就先执行类加载过程。Student student=new Student(user);    先去看user代表的类加载没有,在去执行new指令。    2.    给新生成的对象(实例)分配内存: ...

2018-05-14 16:32:44 1009

原创 JVM-内存模型

JVM虚拟机上的内存模型    线程私有区域。依赖用户线程的启动与销毁。    线程共有区域。随着虚拟机的启动而存在。程序计数器:    理解:可以理解为字节码的指针。是线程私有的区域。    为什么存在:因为一个CPU只会执行一个线程中的指令。为了在线程来回切换中能够恢复到正确的执行位置,设置一个指针来记录执行到哪行字节码。虚拟机栈:    理解:相当于一个栈空间,每个方法在执行的时候会创建一个...

2018-05-14 15:58:47 230

原创 创建Spring MVC

1.    在Web-INF下,创建web.xml. 加入如下两段代码:        (1) load-on-startup 参数用来表示是否需要容器在应用初始化时候就启动这个servlet. 当值>=0的时候就会启动。当值<0的时候,该servlet被选中才会加载。当value值越小,加载顺序越靠前。<servlet> <servlet-name>...

2018-05-14 09:53:26 174

原创 分布式下session一致性问题

Nginx轮询后call tomcat,tomcat产生seesion. 当call不同的tomcat会产生seesion不一致的问题解决方案1: 在Nginx采用ip_hash算法。保证同一个ip匹配到同一个tomcat上。缺点:当一个公司是局域网,全部通过一个ip来访问,会匹配到同一个tomcat里。只记录公网IP。         当某个tomcat挂掉以后,其上session丢失,造成用户...

2018-05-14 09:53:06 478

原创 MyBatis源码解析-configuration

在spring-mybatis.xml配置文件中,<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name=&quot

2018-05-14 09:52:04 168

原创 JVM

线程私有的 程序计数器+虚拟机栈一个方法一个栈帧,JVM很早就知道哪些方法调用哪些方法,所以包含局部变量表操作数栈动态链接----支撑了允许时多态,接口.funtion, 底层实际是来解析该接口的实现类,出口虚拟机栈javap指令istore_ 从操作数栈压入局部变量表iload_从局部变量表压入操作数栈递归方法在栈中应该有几个栈帧。本地方法栈方法区 类信息、常量(1.7以后从方法区挪到堆里)、静...

2018-05-14 09:51:49 164

原创 Spring源码分析-事务管理

MyBatis是没有事务管理的,需要将事务交给Spring管理。在service层function上加 @Transactional,表明有关数据库的DML语句,操作所需要的事务都交由Spring管理。实际上是connect.commit;connect.rallback;transaction实际是一个对象,在该对象中维护了一个connection属性。我们把这个对象叫做spring的事务对象。...

2018-05-14 09:50:39 222

原创 MyBatis源码解析-configuration

在spring-mybatis.xml配置文件中,<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name=&quot

2018-05-14 09:49:48 335

原创 算法分析

算法是解决问题的步骤。五个特征:有穷性、确定性、可行性、有输入、有输出设计原则:正确性、可读性、健壮性、高效率和低存储时间复杂度O。O(n)。时间复杂度for(int )加减是不算的,n+n=>n空间复杂度,看list map占了多少空间,二叉树遍历有前中后遍历前序 先跟--再左边--再左边的孩子(找左边的孩子) 根左右中序  左根右后序 左右根二叉搜索树 就是一颗树的中序遍历...

2018-05-14 09:49:32 190

原创 MyBatis

1. #与$的区别:1. #{} 在动态解析的时候, 会解析成一个参数占位符。用?来代替。将传入的数据当成字符串,将入参自动增加双引号。如 where id=#{id},传入的值是11,那解析的时候变为 where id="11".#{}使用反射机制,相当于params.getIem().getName();$将传入的数据直接显示在sql中。仅仅是一个string类型的占位符。如order by ...

2018-05-14 09:48:51 206

原创 学习之--搜索引擎

搜索引擎应用方向:自动补全,联想词个性化推荐点评与简介用户行为分析商品推荐、商品属性代替like、group 等关键字搜索引擎特性:高效,针对百万级、亿级数据可以有毫秒级响应。快速部署,接入使用容易。属于一个单独平台。提供接口即可使用。可扩展性,将建立索引和查询处理的运算分不到一个集群内的多台服务器。搜索引擎的缺陷:    底层是NoSql。不是关系型数据库。在关联查询不好。Solr是基于Luce...

2018-05-14 09:46:23 484

原创 学习之响应式应用架构重构ReactiveX

现代应用架构瓶颈网络RPC(远程过程调用)dubbo netty NIO+AsyncMOM(消息中间件) RabbitMQDB jdbc连接网络带宽 1GB---100MB网络运用 设计架构应用性能阻塞式+不合理同步阻塞式   同步    等待结果返回用户下单 包含 用户服务100ms+下单服务100ms >200ms1.通过认证token查询user2. 用user.id执行下单服务依赖模...

2018-05-13 21:09:17 595

原创 Spring-事务有时候不能回滚分析

开头总述Spring在同一个类中调用function,事务会失效。Spring事务是基于AOP代理来实现的。而AOP是使用JDK动态代理来实现的。    例如:    /** * 父类调用子类 * 子类失败,不能影响父类 * * 预期效果:child回滚,parent插入成功 * 第一次试验 真实效果:都插入成功,child方法因为try catch导致事务未起作用。 *...

2018-05-13 20:13:08 740

原创 Spring框架--事务

事务维度之四大原则一致性、原子性(事务包含的操作要么完全失败回滚,要么完全成功)、隔离性(操作同一张表,数据库应该为每个用户开启一个事务,多个并发事务之间要相互隔离,在B事务看来,A事务是在它开启之前就已经关闭或者在它关闭以后才开启,数据库有多种隔离级别)、持久性(事务成功就是改完数据库,永远生效)。操作数据会遇到的问题当多个线程都开启事务操作的时候,数据库系统要进行事务隔离。如果不考虑事务隔离,...

2018-05-13 12:03:49 297

原创 MyBatis源码分析-MapperProxy

在MyBatis中,Mapper是一个接口,不是实体类。而在Java中,接口是无法运行的,所以MyBatis运用了动态代理模式来运行Mapper接口。关于动态代理,可以看这篇 深度解析JDK动态代理。MyBatis首先创建了一个MapperProxy类,实现了InvocationHandler接口。就相当于上篇文章的MyHandler类。由于动态代理只能代理有接口实现的类。需要传入要代理的接口,所...

2018-05-07 17:12:43 228

原创 深度解析JDK动态代理

动态代理模式,就是在内存中动态生成$Proxy0对象,该对象实现了要被代理对象的接口。如下图,$Proxy0就是在内存中生成的。1. 首先需要写一个class,实现InvocationHandler接口。重写invoke方法。invoke方法有3个参数:    1.第一个参数是Proxy的一个动态实例。只有Proxy实例在InvocationHandler实现类里加载才可以产生第二个参数metho...

2018-05-06 00:11:47 277

原创 MySql优化之路--执行器

    在日常应用中,基本都是读多写少。针对已经写好的sql语句。可以启动慢查询来看查询时间。    在查询sql的优化中,可以使用explain extended来看sql的运行效果。explian 是将    执行计划加载到表plan_table中,查询出来的是一条data.    也可以使用show waring来看执行器翻译后的sql.在explain中,    id表示查询顺序,如果有子...

2018-05-03 10:00:26 2003

原创 MySql优化之路

执行计划是数据库根据sql语句和相关表的统计信息得出的一个查询方案。这个计划是数据库查询优化器自动生成的。要生成一个正确的执行计划,需要注意两点:SQL语句是否正确的告诉了查询优化器它想干嘛。查询优化器得到的数据库信息是否是最新的。查询优化器创建内部数据结构(解析树),并对其优化,例如决定表的读取顺序。选择合适的索引(当数据表数据不大自动选择全表扫描,当数据表数据很大选择索引)。我们可以使用特殊关...

2018-05-02 17:26:59 305

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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