java
Homefei
这个作者很懒,什么都没留下…
展开
-
Zookeeper基础介绍
一 概述 1 zookeeper是yahool 开发后贡献给apache的一套分布式的管理和协调框架 2 提供了中心服务(注册中心):统一配置信息,统一命名,分布式锁,提供组服务! 二 安装 1 单机 : 2 伪分布 : 3 完全分布 : 细节 一特点 1 、Zookeeper 是树状结构,根节点是/ - Znode树 在Zookeeper中,每一个节点称之为Znode节点 每一个Znode节点必须携带数据,实际开发中,这个数据往往是对这个节点的描述或者是配置信息 Zookeeper中不存在相对路径,所有的原创 2020-06-22 14:09:38 · 442 阅读 · 0 评论 -
关于Lock锁
Synchronized锁的缺陷 Synchronized不会手动释放锁资源,当线程发生阻塞后,其他线程只能眼睁睁的等着,不会分别是读线程和写线程,读问题并不会引发高并发,但是synchronized锁不能识别是读线程还是锁线程 ,遇到了都会锁上。另外没有中断锁的功能,一个线路等待时间过长不会自我中断线程。 Lock锁 一、概述 1.Lock是JDK1.5中提供的一套用于取代synchronized的机制 2.相对synchronized而言,Lock更加灵活和精细 - synchronized在使用的时候原创 2020-06-20 09:37:29 · 462 阅读 · 0 评论 -
(转)Lock和synchronized比较详解
今天看了并发实践这本书的ReentantLock这章,感觉对ReentantLock还是不够熟悉,有许多疑问,所有在网上找了很多文章看了一下,总体说的不够详细,重点和焦点问题没有谈到,但这篇文章相当不错,说的很全面,主要的重点都说到了,所有在这里转载了这篇文章,注意红色字体。 在上一篇文章中我们讲到了如何使用关键字synchronized来实现同步访问。本文我们继续来探讨这个问题,从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问,那就是Lock。转载 2020-06-20 08:37:11 · 246 阅读 · 0 评论 -
关于JAVA内存结构那些事
Java内存结构 Stack : 计算 执行代码块 独享 Heap : 存储对象 线程共享 Method Area: 储存类信息。线程共享共享 Native Stack(本地方法栈): 执行本地方法,用neitice修饰但是没有方法体的方法,如Object,极大部分的本地方法是C语言实现的。 Program Counter(PC计数器): 对进程来技术,当pc计数器对哪一行计数的时候,任务就执行到哪一行,每个线程独享,记录的是哪一行。 考虑一台服务器所能承载的线程数量,考虑独享的内存 - 栈内存、本地方原创 2020-06-19 12:14:52 · 135 阅读 · 0 评论 -
Redis缓存和数据库保持一致解决方案
什么时候缓存不一致? 当mysql数据库中执行了更改操作 但是redis里面是更新之前的价格,这个时候可能会出现缓存不一致。 可以在每次更新数据库的时候删除redis缓存,然后查询的时候判断redis里面是否有缓存 ,没有再新增。 但是在高并发的情况下,小几率情况会出现,先执行1 删除缓存,在2还没得及执行的时候,判断缓存为空,然后再次读取,还是读取的旧的数据。 解决方法:保证1和2同步执行—添加内存锁,被动缓存中,只要发现这个内存锁,说明有人在更新数据,不会使用缓存! 业务层实现代码如下: public原创 2020-06-15 09:14:09 · 1060 阅读 · 1 评论 -
关于Redis使用连接池介绍
Jedis连接池 jedis为了防止使用连接对象jedis时频繁的创建和销毁,造成资源的浪费,提供了一个Jedis连接池,这个连接池是jedis最底层的连接池,其他的redis结构对应jedis对象,底层都会封装这个jedis连接池.可以从连接池中获取jedis对象,使用完毕后归还这个链接对象 1.1连接池的内存结构 一次性创建多个jedis对象,在一个连接池对象中管理. 1.2连接池的一些属性 初始化连接数量:创建连接池时,默认一开始连接对象个数 最小空闲数量:连接池中的连接对象空闲的最小个数,小于最小原创 2020-06-13 11:00:41 · 2146 阅读 · 1 评论 -
IDea和nginx解决高并发
1 order-user系统高并发结构 1.1高并发? 互联网项目,一般必须支持高并发,我们开发的order-user系统支持多少并发(单位时间并发) 取决于系统运行使用的web容器(tomcat)取决于系统服务器的硬件。Tomcat并发 一秒钟200-500左右,所以不支持高并发! 所以单机运行order-user系统 不能支持高并发, 1.2高并发结构(集群) 1.3 单机并发200-500 ,可以实现集群搭建,就能线性并发增长。我们可以利用idea多实例运行,让order-user系统多启动几个。多原创 2020-05-23 17:40:18 · 1044 阅读 · 0 评论 -
SPRINGBOOT原理
1.核心注解 springboot工程中总是在添加一个核心注解@SpringBootApplication 它是一个springboot框架提供的组合注解,一共组合了3个注解.RestController也是一个组合注解,组合了ResponseBody 和Controller 1.1SpringBootConfiguration 本质上,这个注解就是一个spring的配置注解@Configuration(一个配置注解所在的类,相当于与一个xml配置文件的功能) 1.2ComponentScan 相当于一个x原创 2020-05-23 13:35:30 · 293 阅读 · 0 评论 -
Springboot介绍 和简单搭建
Springboot Springboot: 基于spring的所有功能的工具框架。让一个spring框架开发过程简化 再简化,能够应对非常多的开发场景实现自动配置。 例如帮忙配置spring springmvc等配置 1 为什么使用springboot。 简化配置 2 特点 2.1 独立运行spring容器 Spring容器的运行一班都需要别的容器的支持 比如开发一个web应用。要是由第三方web容器 springboot中可以独立运行,一个main方法加载springboot运行代码 2.2 内嵌ser原创 2020-05-22 22:01:08 · 359 阅读 · 0 评论 -
使用maven开发一个web项目
1.1 创建项目选择骨架,选择next Idea根据选择的骨架给pom.Xml配置了内容 ,我们需要更改jdk版本为系统一一致(我当前用的jdk1.8 所以修改为1.8)。 注意:在创建项目时 由于ide版本不同 ,有的版本默认使用了maven配置 本地库虽然解压了 但是idea没有使用 需要动手调整mavean配置 1.2 添加pom.xml中的依赖资源 使用该项目开发ssm框架系统 需要引入开发所需要的依赖 Spring的相关依赖 :” Springmvc的相关依赖 :spring-webmvc原创 2020-05-20 17:43:59 · 613 阅读 · 0 评论 -
maven安装步骤
1 创建项目空间 选择骨架创建maven项目 2 选择骨架这里默认 3填写项目基本信息 Groupid: 项目或者公司名字倒写 Artifatid: 项目 或者模块名字 Verssion: 对当前版本号 Package: 默认创建包的路径 最后按Y 确定 成功 1.2 maven项目结构 选择的骨架只会决定配置中有哪些文件 配置报告 Maven项目跟目录 Src 文件夹,表示项目代码配置源数据 –Main -java:java包 和.java原件 -resources:配置文件 ,applica原创 2020-05-19 18:17:13 · 157 阅读 · 0 评论