- 博客(22)
- 资源 (86)
- 收藏
- 关注
原创 基于 OpenRestry 部署 nginx+lua 实现流量定向分发
在上一篇中,我们在linux上部署了OpenRestry单个节点简单实现了hello word功能,使用OpenRestry的强大之处在于使用它和其他模块比如http等,使用它的lua脚本实现一些接口的转发,利用这个特性我们可以设想一下,假如我们使用OpenRestry来实现nginx集群的负载均衡该如何做呢?可以分两步,假如有多台机器,每台机器上都部署了nginx,那么只需要其中的一台作为转发...
2019-04-27 23:56:44 2510
原创 centos6.5 安装 OpenResty
OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关比如说,流量分发,什么意思呢?在一些大型的电商系统架构中,对于有些访问特别频繁的接口,我们常常会通过多级缓存区实现,从而提高系统抗住并发的能力,也就是系统的高可...
2019-04-27 20:15:48 1058
原创 mybatis框架执行原理简单实现
mybatis实现数据库交互的原理反射+jdk动态代理我们在使用传统的JDBC做数据库交互的时候,要想对返回的结果进行处理,需要通过反射和结果集的游标进行层层解析,是不是觉得很麻烦,确实尤其当我们需要查询的结果变成我们自定义的对象的时候发现比较难做,这是因为jdbc查出来的结果并没有做orm的映射转化,需要我们手动进行封装,所以mybatis的使用,可以让框架帮我们解决这个事情,但mybati...
2019-04-27 09:45:41 2976
原创 java简单模拟实现数据库连接池
为什么要使用数据库连接池这个问题在一开始学习线程池或者整合ssm框架的时候经常会问自己这个问题,只知道这样使用可以在一定程度上优化程序的性能,提升系统的资源利用率,至于为什么这样使用一直没有搞明白。从原理上讲,池化是一种思想,设想把所有的资源集中在一个池子里,那样对于使用资源的人来说就很容易也很方便的取用了,而且池化另外一个好处就是一开始就把资源价加载好,而不是需要的时候再去创建,对于调用者来...
2019-04-23 23:58:46 2831 2
原创 zookeeper使用及模拟注册中心原理
什么是ZookeeperZookeeper是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务——分布式同步(DistributedSynchronization)、命名服务(Naming Service)、集群维护(GroupMaintenance)等,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。ZooKeeper本身可以以单机模式安装运行,不...
2019-04-21 14:02:58 1559
原创 SpringIoc 实现原理
什么是SpringIOCspring ioc指的是控制反转,IOC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。交由Spring容器统一进行管理,从而实现松耦合“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。如何理解好Ioc呢?理解好Ioc的关键是要明确“谁控制谁,控制什么,...
2019-04-20 16:44:33 209297 63
原创 spring编程式事务
事务是spring框架中一个核心的模块,事务的ACID特性想必对于学习java的同学来说都不陌生,对于spring,实现事务的底层原理其实很简单,就是通过AOP代理进行实现,而实现spring的AOP更底层的,就是使用反射机制完成的;举例来说,当你的方法上标注了@Service之后,spring怎么知道你这个类会被纳入到整个bean的容器中进行管理呢?如果在这个类下面的某个方法上面加了@Tran...
2019-04-20 12:18:06 17976 2
原创 Hystrix 线程池隔离与接口限流
认识HystrixHystrix是Netflix开源的一款容错框架,包含常用的容错方法:线程隔离、信号量隔离、降级策略、熔断技术。在高并发访问下,系统所依赖的服务的稳定性对系统的影响非常大,依赖有很多不可控的因素,比如网络连接变慢,资源突然繁忙,暂时不可用,服务脱机等。我们要构建稳定、可靠的分布式系统,就必须要有这样一套容错方法。本文主要讨论线程隔离技术。为什么要做线程隔离比如我们现在有...
2019-04-14 21:26:57 45010
原创 springboot整合Apollo
传统配置文件的问题在分布式应用中,比如像springcloud的微服务应用,随着业务模块的拆分越来越细,必然会导致配置文件越来越多,而且越来越复杂,一方面是带来了对于配置文件的集中管理不方便,而且对于开发人员来说,某个服务需要新增、修改自己的配置文件需要绕很大的圈子,修改完毕后,还需要审核,校验,权限,发布等一些列环节才能完成配置文件的操作,总体来说是比较麻烦的,Apollo带来的方便个人总...
2019-04-14 11:11:22 6089
原创 携程Apollo分布式配置中心搭建指南
Apollo配置中心介绍Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。Apollo支持4个维度管理Key-Value格式的配置:1、application (应用)2、environment (环境)3、cluster (集群)4、namespace (命名空间...
2019-04-13 19:19:23 1516
原创 架构初识之 —— 使用kafka进行商品维度化缓存解决方案
随着分布式,微服务越来越普遍,对开发的要求也在不断的增加,对架构的要求也提出了越来越多的要求,在那些分布式项目中,经常面临的一个问题就是,高效,解耦,举例来说,当一个小型电商网站越来越大的时候,单体架构必然满足不了日益增长的业务需求,就说当众多的流量一起涌入,你的下单接口怎么能够抗住成千上万的QPS呢?很显然,需要从架构上不断优化我们的项目结构,使用消息中间件对业务进行合理的拆分,使之模块化,不...
2019-04-13 14:56:39 10051
原创 Jwt简单使用
在分布式项目中,经常需要处理session共享的问题,解决的方式有很多,比如采用session或者cookie,或者redis进行存储都是解决方案,今天给大家介绍另一种比较轻量级的解决方式,就是使用jwt生成token,服务端进行加解密来处理;首先要了解一下jwt的三个基本术语,HeaderHeader是由以下这个格式的Json通过Base64编码(编码不是加密,是可以通过反编码的方式获取到...
2019-04-11 23:00:35 9568 1
原创 nginx配置访问本地静态资源
nginx作为一款高性能的服务器,用途很多,除了可以做后端服务器的代理,负载均衡之外你,还有一个用途就是做静态资源的缓存服务器,比如在前后端分离的项目中,为了加速前端页面的响应速度,我们可以将前端的相关资源,例如html,js,css或者图片等放到nginx指定的目录下,访问的时候只需要通过IP加路径就可以实现高效快速的访问,下面说说如何在windows下使用nginx作为静态资源服务器,1、......
2019-04-11 18:07:39 128930 10
原创 windows安装mysql 5.7
下面记载一下自己在本地安装mysql5.7的过程以及其中遇到的一点二坑爹的问题,希望对看到的小伙伴有所帮助,1、官网下载mysql,选择对应的版本,我这里选择的是5.7版,2、下载到本地的某个目录后进行解压,解压完毕,进入到这个目录中,二进制安装需要创建一个配置文件,即my.ini,3、下面是my.ini的配置文件信息,[mysql]# 设置mysql客户端默认字符集default...
2019-04-11 12:31:34 7127
原创 spingboot整合netty实现单聊整合实现
在前几篇中,我们完成了netty和springboot的整合,大致领略了一下netty作为web通讯服务器的魅力,据我所知,netty在不少做聊天应用型的公司里面使用很广泛,主要还是得益于netty底层的实现原理对于高并发性能的良好支持和扩展,以及netty可定制化的API组件和其成熟的使用场景,当然,你也可以选择使用诸如socketJS或者原生的socket来实现聊天的功能,但总体来说都不如ne...
2019-04-08 22:44:03 3969 6
原创 mybais逆向工程快速生成实体和基本xml
在ssm或者使用mybatis的项目中,如果有大量的表需要建设实体到数据库的表映射关系,在程序中一个个手动创建对象是很费时间的事情,mybatis提供了一个很好用的插件可以帮助我们快速生成基本的实体对象到数据库的表映射以及xml文件,下面就看看具体的配置,1、pom依赖文件,<properties> <project.build.sourceEncoding>UTF...
2019-04-07 22:40:12 7003
原创 Keepalived + Nginx 实现高可用 Web 负载均衡
在实际项目中,为了保证服务的高可用性,nginx单点是不行的,因为一旦nginx挂了,没有后备节点顶上去,web服务将会处于不可用状态,因此为了确保服务的高可用性,我们需要把nginx也做成类似于集群的部署;而nginx做集群化部署的比较好也是比较成熟的方案就是使用keepalived,先简单说说keepalived,Keepalived是一个免费开源的,用C编写的类似于layer3, 4 ...
2019-04-07 21:53:47 8118
原创 linux下安装nginx
nginx作为一款高性能的服务器,可以用作反向代理、负载均衡的服务器,也可以单独作为服务器使用,在windows下安装nginx非常简单,只需要进入包双击一下exe文件即可,在linux下相对麻烦点,但实际生产中基本上都是在linux下使用的,下面来说说linux下如何安装nginx,我这里的环境是 centos6.5,其他的版本例如centos7也是可以的,1、首先上传nginx需要的组件包...
2019-04-07 16:01:43 6959
原创 java垃圾回收理解与算法
垃圾回收机制概述Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。垃圾回收可以有效的防止内存泄露,有效的使用空闲的内存。ps:内存泄露是指该内存空间使用完毕之后未回收,在不涉及复杂数据结构的一般情况...
2019-04-06 21:45:34 6886
原创 深入理解jvm和jvm基本调优参数
Java虚拟机原理所谓虚拟机,就是一台虚拟的机器。他是一款软件,用来执行一系列虚拟计算指令,大体上虚拟机可以分为:系统虚拟机和程序虚拟机, 大名鼎鼎的Visual Box、Vmare就属于系统虚拟机,他们完全是对物理计算的仿真,提供了一个可以运行完整操作系统的软件平台。程序虚拟机典型代码就是Java虚拟机,它专门为执行单个计算程序而计算,在Java虚拟机中执行的指令我们成为Java自己码指令。...
2019-04-06 21:33:13 26028
原创 高并发场景下的缓存 + 数据库双写不一致问题分析与解决方案设计
在实际业务中,经常碰见数据库和缓存中数据不一致的问题,缓存作为抵挡前端访问洪峰的工具,用的好的话可以大大减轻服务端压力,但是在一些场景下,如果没有控制好很容易造成数据库和缓存的数据不一致性,尤其是在并发环境下,这种情况出现的概率会大大的增加,为什么会出现这个问题呢?我们来简单分析一下。1、页面发起一个请求,请求更新某个商品的库存,正常的流程是,如果没有缓存,直接更新数据库即可,如果有缓存,先删除...
2019-04-06 20:41:04 4508 13
原创 解决 mysql 树形结构插入数据查询死循环问题
在项目中,大家可能会遇到这样一个问题,就是当你操作那些具有上下级的树的表的时候,如果是单纯的父子级关系,可能不会碰见这个问题,但是如果这个看起来具有树形结构的表形成闭环的时候,问题就来了,我遇到的结果就是,一旦碰到这样的情况,就是页面一直卡在那里,对应着后台就是,要么程序死循环,要么数据库死循环,直到系统卡死崩溃。这个问题很是头疼,在网上找了不少资料没有发现真正能够解决我的问题的,究其原因,还是...
2019-04-06 19:08:58 2916 1
spring aop实现接口参数变更前后对比和日志记录
2024-05-12
springcloud集成skywalking实现全链路追踪的完整代码
2024-01-07
springboot对接skywalking详解
2023-12-31
spring webflux使用的详细代码
2023-10-26
springboot适配多数据源,多类型数据库代码
2023-07-01
springboot通用限流代码
2023-07-01
springcloud同时整合dubbo与openfeign
2023-05-20
springboot整合sharding-jdbc完整代码
2023-05-14
springboot整合mongodb changestream代码
2022-02-23
SSO案例源码.zip
2021-06-16
fastjson与springboot整合.zip
2021-06-16
spring-IOC代码
2021-06-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人