8.商城平台
文章平均质量分 62
我是周洲
你必须非常努力 才能看起来毫不费力
展开
-
Shiro 自定义realm授权与认证的实现
……List……1.项目需求2.shiro核心组件3.自定义realm认证4.自定义realm授权5.思考总结……1.项目需求…… 企业项目中少不了权限管理,总的来说,权限管理就是用户认证与用户授权。用户拥有了权限即可操作权限范围内的资源,系统不知道主体是否具有访问权限需要对用户的访问进行控制。shiro是一套优秀的权限管理框架。来了解原创 2017-02-28 15:29:47 · 6190 阅读 · 10 评论 -
【MySQL】(2)MySQL锁机制总结
一、定义总结1.乐观锁&悲观锁2.行锁&表锁&页锁3.共享读锁&独占写锁4.InnoDB锁&MyISAM锁5.事务(Transaction)及其ACID属性6.并发事务处理带来的问题7.事务隔离级别二、导图总结原创 2017-07-08 19:11:21 · 512 阅读 · 24 评论 -
【maven总结】(1) 坐标与依赖
maven可以管理项目的依赖,如何找到jar的具体位置,唯一的标识就是坐标。开发过程中需要导入项目所依赖的jar,多个项目之间依赖的管理也有原则。1.坐标的概念org.sonatype.nexusnexus-indexer2.0.0jar maven 的所有构件均通过坐标进行组织和管理。maven 的坐标通过 5 个元素进行定义原创 2017-07-23 20:37:39 · 538 阅读 · 27 评论 -
【Redis】redis实战:在业务中添加缓存机制
需求:商城首页广告位的广告,更新不算频繁,但是用户经常从首页访问进来,查询操作比较频繁。如果将广告位信息加入到缓存中使用redis进行存储,就可以提高性能,增加用户的体验度。原创 2017-08-06 20:19:25 · 1022 阅读 · 7 评论 -
【Solr】 Solr集群概念介绍
商品检索功能,很多用户都会访问,有一定的并发量。需要大规模分布式索引和检索能力。这个时候就需要solr集群。使用zookeeper作为solr集群的配置信息中心。原创 2017-08-13 19:29:41 · 1482 阅读 · 6 评论 -
Java并发包多线程总结
一、 多线程并发:(一) Volatile和synchronize:1. volatile如何保证原子性?AtomicLong,它既解决了volatile的原子性没有保证的问题,又具有可见性。2. volatile会不会影响指令重排(volatile禁止指令重排) volatile两大作用1、保证内存可见性2、防止指令重排 此外需注意volatile并不保证操作的原原创 2017-09-04 12:54:11 · 1057 阅读 · 2 评论 -
四个并发工具类CountDownLatch,CyclicBarrier,Semaphore,Exchanger
假如有这样一个需求,当我们需要解析一个Excel里多个sheet的数据时,可以考虑使用多线程,每个线程解析一个sheet里的数据,等到所有的sheet都解析完之后,程序需要提示解析完成。在这个需求中,要实现主线程等待所有线程完成sheet的解析操作,最简单的做法是使用join。原创 2017-08-20 20:00:06 · 467 阅读 · 1 评论 -
JVM调优总结
堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。典型设置:java -Xmx3550m -Xms355原创 2017-08-26 21:00:02 · 443 阅读 · 4 评论 -
Java线程面试题 Top 50
1) 什么是线程?线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。Java在语言层面对多线程提供了卓越的支持,它也是一个很好的卖点。欲了解更多详细信息请点击这里。2) 线程和进程有什么区别?原创 2017-08-26 21:02:46 · 635 阅读 · 4 评论 -
2017年上半年工作总结
立flag 1...2...3... 多读书,按时睡,保持善良,变得温柔,永远可爱。 完。原创 2017-08-26 21:37:35 · 937 阅读 · 14 评论 -
Activemq实现Mysql与SolrCloud同步策略
应用场景: 商品数量很多,搜索功能为了保证用户体验,就使用了solrcloud,可是后面添加的商品可以入库,如何导入到solr库当中呢。我们用到了mq实现。再插入商品之后,发送一个商品id到队列上面去,是生产者。solr服务负责消费,监听商品添加消息,接收消息后,将对应的商品信息同步到索引库。代码:1.生产者 编码@Autowiredpr原创 2017-09-05 20:24:00 · 2259 阅读 · 1 评论 -
Dubbo 服务调用原理浅析
dubbo概念dubbo原理dubbo应用场景 Dubbo概念: Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求。Dubbo缺省协议采用单一长连接和NIO异步通讯,适合于小数据量大并发的原创 2017-09-12 19:16:22 · 8522 阅读 · 3 评论 -
使用jstack命令分析线程状态
系统调优,看到CPU一直满的,一定是代码不符合规范了。怎样去定位代码问题,如何查看占用CPU较高的线程呢?1.top命令 在linux环境下,可以通过top命令查看各个进程的cpu使用情况,默认按cpu使用率排序。 这样可以查看到进程的PID,我们通过PID进一步查看每个进程 。2.通过top -Hp PID 可以查看该进程下各个线程的cpu使用情况。可以看出哪个PID的线程占原创 2017-09-21 20:46:38 · 1256 阅读 · 1 评论 -
maven 检查jar依赖冲突和版本冲突 以及解决
问题描述: 项目中用到dubbo实现分布式远程调用服务,整合dubbo的时候,遇到一个Spring的错误,NoSuchMethodError的问题。由于导入了不同版本的jar包造成的。就是说,当我发布了一版2.0jar的时候里面有个我新写的方法 adduser,但是1.0里面没有,pom没有及时更新jar,这样就会有NoSuchMethodError。我们怎么知道是否是jar包冲原创 2017-10-11 19:19:21 · 4326 阅读 · 0 评论 -
activemq 关于死信队列的配置应用
需求场景: 由于测试环境应用复杂的原因,造成了jms死信队列一直挤压很多数据,从而导致存储爆满,进而造成了各个客户端不能正常发送消息。针对这些死信队列,一般都没有利用价值的。 为了避免某队列的死信队列的挤压,而使整个jms不可用,我们选择了通过ActiveMQ的配置,直接丢弃掉死信队列的消息。缺省死信队列(Dead Letter Queue)叫做ActiveMQ.DLQ所原创 2017-10-23 19:13:33 · 5862 阅读 · 3 评论 -
Zookeeper之Zab协议
ZAB:ZooKeeper的Atomic Broadcast协议,能够保证发给各副本的消息顺序相同。Zookeeper使用了一种称为Zab(ZookeeperAtomic Broadcast)的协议作为其一致性复制的核心,其特点为高吞吐量、低延迟、健壮、简单,但不过分要求其扩展性。原创 2017-11-08 09:40:34 · 550 阅读 · 0 评论 -
Linux查看日志 tail cat sed 等命令
linux命令原创 2017-11-21 09:46:00 · 2163 阅读 · 1 评论 -
【git】常用命令汇总
下面是我整理的常用 Git 命令清单。几个专用名词的译名如下。Workspace:工作区Index / Stage:暂存区Repository:仓库区(或本地仓库)Remote:远程仓库一、新建代码库# 在当前目录新建一个Git代码库$ git init# 新建一个目录,将其初始化为Git代码库$ git init [proj原创 2017-07-30 10:34:25 · 564 阅读 · 26 评论 -
【Redis】 总结
redis作为nosql数据库应用很广泛,很多企业都在用。有很多优点:提供持久化服务,支持超过10w/s的读写。数据类型丰富,支持发布订阅(虽然企业都用mq实现,但是人家支持啊。。也挺厉害的。。),主从架构。 总结从几个方面:1.nosql简介2.数据类型3.配置文件解析4.持久化5.master/slave 3,4原创 2017-06-26 18:12:01 · 460 阅读 · 24 评论 -
【MySQL】(1)索引优化分析
大型网站,日常会有很多数据入库,订单啊,库存啊等等。在几十万甚至上百万的数据中如何快速检索,那就需要用索引了。索引分聚簇索引和非聚簇,聚簇索引是按照物理位置的存放顺序,而非聚簇不是;聚簇索引能提高多行检索的速度,而非聚簇索引对于单行的检索很快。 索引的使用不仅仅是create index这么简单,在查询分析中有很多学问,让我们来一步步优化索引,建立索引。也不是所有数据都适合建立索引原创 2017-07-04 09:49:40 · 2552 阅读 · 26 评论 -
dubbo+zookeeper 分布式项目搭建
dubbo简介: 系统间服务调用方式有三种,浏览器直接访问,通过ajax或者jsonp方式请求。第二种,httpclient方式发起http协议的请求,是后台调用。第三种基于RPC方式的远程过程调用协议的请求。DUBBO是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,0原创 2017-02-16 11:05:48 · 13360 阅读 · 19 评论 -
RabbitMQ(1) 三种exchange总结
在AMQP(高级消息队列协议)协议中,queue、exchange、binding构成了协议的核心。exchange是一个重要的组件,那么如何理解exchange呢?刚刚开始学习消息队列的时候,想起作品展时候做的一个基于SMTP协议的邮箱。不同的是MQ中没有发送者和接受者的概念,也不是客户端服务器的概念。MQ专注于应用程序之间的消息通信,是一种生产者和消费者之间的关系。exchange是producer和consumer之间消息交换机。原创 2017-02-24 08:08:16 · 1832 阅读 · 38 评论 -
对于 分布式下session同步问题 解决方案的思考
List:1.前言2.解决方案3.总结思考……1.前言…… 随着web访问量的日渐增加,高并发的问题出现。大型网站web架构都使用集群或分布式来提高网站的服务效率。之前一个用户访问商城网页,如果使用Nginx+tomcat们实现负载均衡,由于Nginx会把不同的请求分发到某一个tomcat中,tomcat在运行的时候分别在不同的容器中,这样当原创 2017-03-19 11:47:57 · 2770 阅读 · 13 评论 -
Radis集群 原理介绍及搭建过程
List:1.前言2.原理介绍3.搭建过程4.思考总结……1.前言…… 有了redis做缓存数据库,读写效率瞬间提高。但是需要考虑一个问题,redis之所以效率高,功能强大,是由于其将所有数据都存储在内存中,为了让redis重启之后仍能保证数据不丢失,需要将数据从内存中持久化到硬盘中。这样速度就会变慢了。这时可以使用redis集群缓解问题。当一原创 2017-03-10 21:02:24 · 4251 阅读 · 18 评论 -
SpringAOP 实现机制介绍——JDKProxy
List:1.前言2.AOP的实现方法3.使用动态代理实现AOP4.思考总结……1.前言…… AOP的应用场景有很多,权限、缓存、错误处理、日志记录、事务、性能优化等等。AOP的实现重点在于代理对象的生成,实现商业逻辑和通用服务的一种分离。这样做的好处是:核心关注点只关注业务流程,横切关注点只关注提供共性服务。实现了解耦,实现了共同逻辑的封装。原创 2017-03-22 11:47:16 · 709 阅读 · 13 评论 -
Spring事务隔离级别和传播特性
List:1.前言2.spring事务5边形3.思考总结……1.前言…… 开发中经常用到spring的Transactional这个注解,或者在中声明个事务性策略AOP通知。 会告诉spring在spring上下文中查找使用了@Transctional注解的Bean,不管这注解是在类级别上还是方法上。对于每个使用了@Tra原创 2017-04-01 11:51:49 · 2491 阅读 · 28 评论 -
【Spring 核心】(1):IOC容器的实现
通过源码分析,学习了spring容器的概念,容器的初始化过程和容器的特性。重点理解了BeanFactory和ApplicationContext,对一些基本方法的实现有了初步的了解。 导图:http://pan.baidu.com/s/1o7AhrPS原创 2017-06-04 17:50:01 · 591 阅读 · 9 评论 -
【精通hibernate】(2)hibernate检索策略和方式
在设计中会存在对象关联关系,session可以存放关联对象图。当我加载一个客户信息的时候,有没有必要立即加载出订单信息。如果立即加载,我此时需求不需要,那是不是就浪费了内存空间了呢。所以检索策略的设置很重要。 再来看一个问题,从数据库中取对象的时候。如果通过JDBC API来访问,需要自己定义connection,需要写冗长的SQL语句,同时手动建立关联关系,如果使用HQL,原创 2017-06-15 20:05:43 · 370 阅读 · 8 评论 -
【精通hibernate】(3)hibernate api 操作Java对象
从hibernate持久层角度考虑Java对象的生命周期,分为四种状态:临时,持久化,删除,游离状态。在学习hibernateAPI如何操作持久化对象之前,需要先搞清楚这几种状态。因为hibernateAPI对数据库数据的操作,就是这几种状态之间的转变。save是一个对象从临时状态到持久化状态的转变,update是一个对象从游离状态到持久化状态的转变。 session接口的定原创 2017-06-15 20:19:21 · 481 阅读 · 9 评论 -
【精通hibernate】(4)hibernate事务管理以及并发问题处理
hibernate作为一个持久层框架,少不了对数据库的操作。如何保证相互依赖的数据库操作都能够顺利的执行,是事务需要考虑的事情。org.hibernate.transaction 是hibernateAPI来提供声明事务的。封装了对JDBCAPI和JTAAPI的操作,将session和事务集成在一起。 再来看,当我们了解了hibernate的事务处理之后。当多个事务并发执行的时原创 2017-06-15 20:53:42 · 532 阅读 · 13 评论 -
【Spring 核心】(2):AOP的实现
AOP是Spring的核心模块,AOP的实现,使用AOP功能可以使我们的应用趋于模块化设计。AOP的实现使用了几种常用的设计模式,代码看着很舒服,用的很妙。例如对于每种advice,spring设计了对应的adviceAdapter,实现了多种切面增强方式。这里就使用了Adapter模式。说到AOP自然少不了Proxy模式,在advice织入到target方法中,使用了经典的代理模式。在invok原创 2017-06-05 20:29:58 · 543 阅读 · 10 评论 -
【精通hibernate】(5)管理hibernate的缓存
hibernate缓存包括session的缓存和sessionfactory的缓存(sessionfactory又分为内置和外置缓存)。内置缓存是不可卸载的一级缓存,是只读的,存放了映射元数据和预定义SQL,因为它的不可修改性,不需要让它与映射文件xml去做同步。外置缓存又称二级缓存,是可配置的插件,存放的是数据。 持久层的缓存范围分为事务级,进程级,集群级。一级缓存是sessi原创 2017-06-16 20:12:24 · 495 阅读 · 12 评论 -
【Spring 核心】(3):SpringMVC 的实现
springmvc的框架实现和运行过程,从IOC容器加载到web容器中,主要是对于web容器特殊性的处理,对Servlet和ServletContext的使用。整个mvc的控制中心是DispatcherServlet这个类。主要的处理步骤是:1.建立controller和URL的映射关系。2.将HandlerMap加入到HandlerExecuteChain中,加入拦截器。为接受http请原创 2017-06-07 18:15:31 · 524 阅读 · 10 评论 -
【Struts2】 总结
Struts2是基于mvc模式的轻量级web框架,是以webWork为核心的,使用拦截器机制来处理用户的请求,使业务逻辑控制器与ServletAPI完全脱离开。 Struts2执行流程图: 用户发出请求,程序调用核心控制类StrutsPrepareAndExecuteFilter,询问ActionMapper是否有符合的action类。决定调用某个actio原创 2017-06-19 15:21:37 · 535 阅读 · 50 评论 -
【Spring 核心】(4):Spring事务 的实现
spring事务的实现可以当做是springAOP和IOC的结合使用。设计原理就是使用AOP实现了声明式事务处理的interceptor,封装了对spring的处理过程。 声明式事务实现首先需要配置aop环境,生成代理对象TransactionProxy和TrasactionInterceptor。封装不同的事务处理,整合具体实现到AOP和IOC。提供了即开即用的事原创 2017-06-07 21:37:03 · 541 阅读 · 9 评论 -
【Mybatis】深入浅出Mybatis基础原理与实战 总结
Mybatis是Java的持久层框架,将SQL写在xml中,便于统一管理。hibernate也是一套优秀的ORM框架,但是存在一些不足,如,全表映射带来的性能降低,多表关联和复杂sql支持较差。这样就出现了Mybatis,它的前身是ibatis。 映射器是Mybatis最强大的设计,可以使用动态SQL来满足各种复杂的场景。在学习Mybatis的原理设计中,这个框架也使用原创 2017-06-10 17:25:12 · 1083 阅读 · 11 评论 -
【精通hibernate】(1) 对象-关系映射总结
hibernate是优秀的ORM框架,跟Mybatis相比,hibernate提供了很多封装好的底层方法,封装了数据库访问的细节。xml配置文件是提供了域模型到关系数据模型的一种映射关系。映射关系的建立体现了数据库常规设计,元素和属性都方便了我们对于数据库数据的操作。导图放大:http://pan.baidu.com/s/1nvfrYKp总结原创 2017-06-12 19:48:24 · 506 阅读 · 15 评论 -
生活从来不缺鸡汤——
生活从来不缺鸡汤人什么时候才会思考人生?恩,就是话里的这个人生。为什么活着?——就是闲着的时候感慨最多。每个人都是段子手,尤其程序媛。我是一个强迫自己去自律的人,所以 我准备二次学习,重新出发,为啥更博,因为我还好面儿。自律,是以积极的态度去解决一些人生中痛苦的抉择。 就像现在我这样的状态,活在舒适区。惊醒我的——是,那些上了年纪的老哥们,来我司面试,让我一个小屁孩...原创 2018-07-23 22:55:59 · 1049 阅读 · 8 评论