06 2020 档案

摘要:我们需要做的第一步是通过使用“OpenDatabase”函数开放数据库,如下图所示。第一个参数是数据库的名称,接下来是版本,然后一个简单的文本标题,最后的是数据库的大小。 var db=openDatabase('dbCustomer','1.0','Customer app’, 2 * 阅读全文
posted @ 2020-06-30 09:43 咔啡 阅读(215) 评论(0) 推荐(0)
摘要:很多时候,我们想在本地计算机存储有关用户的信息。例如,假设用户已经填满了一半的长表单,互联网却突然连接中断。此时,用户希望能在本地存储这些信息,然后当重新连接到互联网的时候,获取这些信息,并将其发送到服务器进行存储。 现代的浏览器存储称为“本地存储”,可以让你存储这些信息。 阅读全文
posted @ 2020-06-30 09:41 咔啡 阅读(107) 评论(0) 推荐(0)
摘要:WebSQL是客户浏览器端的结构化的关系数据库。这是浏览器内部的本地RDBMS,你可以在这个本地RDBMS上执行SQL查询。 阅读全文
posted @ 2020-06-30 09:29 咔啡 阅读(730) 评论(0) 推荐(0)
摘要:添加到本地存储的数据使用“键”和“值”。下面的示例代码显示了国家数据“India”添加的键值为“Key001”。 localStorage.setItem(“Key001”,”India”); 要检索本地存储的数据,我们需要使用“getItem”来提供 阅读全文
posted @ 2020-06-30 09:28 咔啡 阅读(572) 评论(0) 推荐(0)
摘要:cookies本地存储客户端/服务器端既可以从客户端也可以从服务器端访问数据。每个请求都会发送cookie数据到服务器。只能在本地浏览器端访问数据。服务器无法访问本地存储,除非特意通过POST或GET发送到服务器。大小每个Cookie 4095个字节。每个域5 MB。有效期cookie有附加的有效期 阅读全文
posted @ 2020-06-30 09:25 咔啡 阅读(727) 评论(0) 推荐(0)
摘要:我们需要做的第一步是通过使用“OpenDatabase”函数开放数据库,如下图所示。第一个参数是数据库的名称,接下来是版本,然后一个简单的文本标题,最后的是数据库的大小。 var db=openDatabase('dbCustomer','1.0','Customer app’, 2 * 阅读全文
posted @ 2020-06-30 08:57 咔啡 阅读(365) 评论(0) 推荐(0)
摘要:不是,虽然很多人将其标记为HTML 5,但它不是HTML 5规范的一部分。HTML 5规范基于SQLite。 阅读全文
posted @ 2020-06-30 08:34 咔啡 阅读(214) 评论(0) 推荐(0)
摘要:WebSQL是客户浏览器端的结构化的关系数据库。这是浏览器内部的本地RDBMS,你可以在这个本地RDBMS上执行SQL查询。 阅读全文
posted @ 2020-06-30 08:31 咔啡 阅读(990) 评论(0) 推荐(0)
摘要:本地存储没有生命周期,它会一直存在直到用户将其从浏览器清楚或使用JavaScript代码删除它。 阅读全文
posted @ 2020-06-30 07:36 咔啡 阅读(130) 评论(0) 推荐(0)
摘要:cookies本地存储客户端/服务器端既可以从客户端也可以从服务器端访问数据。每个请求都会发送cookie数据到服务器。只能在本地浏览器端访问数据。服务器无法访问本地存储,除非特意通过POST或GET发送到服务器。大小每个Cookie 4095个字节。每个域5 MB。有效期cookie有附加的有效期 阅读全文
posted @ 2020-06-29 21:22 咔啡 阅读(704) 评论(0) 推荐(0)
摘要:多线程会共同使用一组计算机上的 CPU,而线程数大于给程序分配的 CPU 数量时, 为了让各个线程都有执行的机会,就需要轮转使用 CPU。不同的线程切换使用 CPU 发生的切换数据等就是上下文切换。 阅读全文
posted @ 2020-06-29 21:13 咔啡 阅读(214) 评论(0) 推荐(0)
摘要:请看下面的for循环代码,它将运行超过百万次。 function SomeHeavyFunction() { for (i = 0; i < 10000000000000; i++) { x = i + x; } } 假设上述for循环代码在一个HTML按钮点击上执行。现在,这种方法执行是同步的。换 阅读全文
posted @ 2020-06-29 21:11 咔啡 阅读(249) 评论(0) 推荐(0)
摘要:连接点代表一个应用程序的某个位置,在这个位置我们可以插入一个 AOP 切面, 它实际上是个应用程序执行 Spring AOP 的位置。 阅读全文
posted @ 2020-06-29 21:08 咔啡 阅读(212) 评论(0) 推荐(0)
摘要:HTML 5是HTML的新标准,其主要目标是无需任何额外的插件如Flash、Silverlight等,就可以传输所有内容。它囊括了动画、视频、丰富的图形用户界面等。 HTML5是由万维网联盟(W3C)和Web Hypertext Application Technology Working Grou 阅读全文
posted @ 2020-06-29 21:02 咔啡 阅读(299) 评论(0) 推荐(0)
摘要:用 Spring 的 SessionFactory 调用 LocalSessionFactory。集成过程分三步: 配置 the Hibernate SessionFactory。 继承 HibernateDaoSupport 实现一个 DAO。 在 AOP 支持的事务中装配。 阅读全文
posted @ 2020-06-29 21:00 咔啡 阅读(151) 评论(0) 推荐(0)
摘要:伪共享是多线程系统(每个处理器有自己的局部缓存)中一个众所周知的性能问 题。伪共享发生在不同处理器的上的线程对变量的修改依赖于相同的缓存行,如 下图所示: 伪共享问题很难被发现,因为线程可能访问完全不同的全局变量,内存中却碰巧 在很相近的位置上。如其他诸多的并发问题,避免伪共享的最基本方式是仔细审 阅读全文
posted @ 2020-06-29 20:56 咔啡 阅读(727) 评论(0) 推荐(0)
摘要:Before - 这些类型的 Advice 在 joinpoint 方法之前执行,并使用 @Before 注解标记进行配置。 After Returning - 这些类型的 Advice 在连接点方法正常执行后执 行,并使用@AfterReturning 注解标记进行配置。 After Throwi 阅读全文
posted @ 2020-06-29 20:55 咔啡 阅读(142) 评论(0) 推荐(0)
摘要:aspect 由 pointcount 和 advice 组成, 它既包含了横切逻辑的定义, 也包 括了连接点的定义. Spring AOP 就是负责实施切面的框架, 它将切面所定义的横 切逻辑编织到切面所指定的连接点中. AOP 的工作重心在于如何将增强编织目标 对象的连接点上, 这里包含两个工作 阅读全文
posted @ 2020-06-29 20:47 咔啡 阅读(782) 评论(0) 推荐(0)
摘要:DispatcherServlet 的工作流程可以用一幅图来说明: 1、向服务器发送 HTTP 请求,请求被前端控制器 DispatcherServlet 捕获。 2、 DispatcherServlet 根据 -servlet.xml 中的配置对请求的 URL 进行解 析,得到请求资源标识符(UR 阅读全文
posted @ 2020-06-29 20:45 咔啡 阅读(429) 评论(0) 推荐(0)
摘要:实现 AOP 的技术,主要分为两大类: 静态代理 指使用 AOP 框架提供的命令进行编译,从而在编译阶段就可生成 AOP 代理类, 因此也称为编译时增强; 编译时编织(特殊编译器实现) 类加载时编织(特殊的类加载器实现)。 动态代理 在运行时在内存中“临时”生成 AOP 动态代理类,因此也被称为运行 阅读全文
posted @ 2020-06-29 20:32 咔啡 阅读(690) 评论(0) 推荐(0)
摘要:JdbcTemplate SimpleJdbcTemplate NamedParameterJdbcTemplate SimpleJdbcInsert SimpleJdbcCall 阅读全文
posted @ 2020-06-29 19:30 咔啡 阅读(175) 评论(0) 推荐(0)
摘要:Zookeeper 提供一个多层级的节点命名空间(节点称为 znode)。与文件系统不 同的是,这些节点都可以设置关联的数据,而文件系统中只有文件节点可以存放 数据而目录节点不行。 Zookeeper 为了保证高吞吐和低延迟,在内存中维护了这个树状的目录结构,这 种特性使得 Zookeeper 不能 阅读全文
posted @ 2020-06-29 18:41 咔啡 阅读(135) 评论(0) 推荐(0)
摘要:只有将 bean 用作另一个 bean 的属性时,才能将 bean 声明为内部 bean。 为了定义 bean,Spring 的基于 XML 的配置元数据在 <property> 或 <constructor-arg> 中提供了 <bean> 元素的使用。内部 bean 总是匿名 的,它们总是作为原 阅读全文
posted @ 2020-06-29 18:36 咔啡 阅读(400) 评论(0) 推荐(0)
摘要:@Autowired 可以更准确地控制应该在何处以及如何进行自动装配。此注解用于 在 setter 方法,构造函数,具有任意名称或多个参数的属性或方法上自动装配 bean。默认情况下,它是类型驱动的注入。 public class Employee { private String name; @A 阅读全文
posted @ 2020-06-29 17:11 咔啡 阅读(1043) 评论(0) 推荐(0)
摘要:Spring 容器能够自动装配 bean。也就是说,可以通过检查 BeanFactory 的内 容让 Spring 自动解析 bean 的协作者。 自动装配的不同模式: no - 这是默认设置,表示没有自动装配。应使用显式 bean 引用进行装配。 byName - 它根据 bean 的名称注入对象 阅读全文
posted @ 2020-06-29 17:09 咔啡 阅读(175) 评论(0) 推荐(0)
摘要:1、顺序一致性 2、原子性 3、单一视图 4、可靠性 5、实时性(最终一致性) 客户端的读请求可以被集群中的任意一台机器处理,如果读请求在节点上注册了 监听器,这个监听器也是由所连接的 zookeeper 机器来处理。对于写请求,这些 请求会同时发给其他 zookeeper 机器并且达成一致后,请求 阅读全文
posted @ 2020-06-29 15:14 咔啡 阅读(642) 评论(0) 推荐(0)
摘要:客户端 SendThread 线程接收事件通知,交由 EventThread 线程回调 Watcher。 客户端的 Watcher 机制同样是一次性的,一旦被触发后,该 Watcher 就失效了。 阅读全文
posted @ 2020-06-29 11:29 咔啡 阅读(134) 评论(0) 推荐(0)
摘要:Zookeeper 是一个典型的发布/订阅模式的分布式数据管理与协调框架,开发人员 可以使用它来进行分布式数据的发布和订阅。 通过对 Zookeeper 中丰富的数据节点进行交叉使用,配合 Watcher 事件通知机 制,可以非常方便的构建一系列分布式应用中年都会涉及的核心功能,如: 1、数据发布/ 阅读全文
posted @ 2020-06-29 11:17 咔啡 阅读(211) 评论(0) 推荐(0)
摘要:BeanFactory ApplicationContext 它使用懒加载 它使用即时加载 它使用语法显式提供资源对象 它自己创建和管理资源对象 不支持国际化 支持国际化 不支持基于依赖的注解 支持基于依赖的注解 阅读全文
posted @ 2020-06-29 09:00 咔啡 阅读(143) 评论(0) 推荐(0)
摘要:ZAB 协议是为分布式协调服务 Zookeeper 专门设计的一种支持崩溃恢复的原子广 播协议。 ZAB 协议包括两种基本的模式:崩溃恢复和消息广播。 当整个 zookeeper 集群刚刚启动或者 Leader 服务器宕机、重启或者网络故障导 致不存在过半的服务器与 Leader 服务器保持正常通信 阅读全文
posted @ 2020-06-29 08:53 咔啡 阅读(128) 评论(0) 推荐(0)
摘要:chubby 是 google 的,完全实现 paxos 算法,不开源。zookeeper 是 chubby的开源实现,使用 zab 协议,paxos 算法的变种。 阅读全文
posted @ 2020-06-29 08:45 咔啡 阅读(497) 评论(0) 推荐(0)
摘要:其实就是水平扩容了,Zookeeper 在这方面不太好。两种方式: 全部重启:关闭所有 Zookeeper 服务,修改配置之后启动。不影响之前客户端的 会话。 逐个重启:在过半存活即可用的原则下,一台机器重启不影响整个集群对外提供 服务。这是比较常用的方式。 3.5 版本开始支持动态扩容。 阅读全文
posted @ 2020-06-29 08:40 咔啡 阅读(285) 评论(0) 推荐(0)
摘要:当定义一个 在 Spring 里,我们还能给这个 bean 声明一个作用域。它可以通过 bean 定义中的 scope 属性来定义。如,当 Spring 要在需要的时候每次生产一个 新的 bean 实例,bean 的 scope 属性被指定为 prototype。另一方面,一个 bean 每次使用的 阅读全文
posted @ 2020-06-29 08:39 咔啡 阅读(611) 评论(0) 推荐(0)
摘要:自动装配的局限性是: 重写:你仍需用 和 配置来定义依赖,意味着总要重写自动装配。 基本数据类型:你不能自动装配简单的属性,如基本数据类型,String 字符串,和类。 模糊特性:自动装配不如显式装配精确,如果有可能,建议使用显式装配。 阅读全文
posted @ 2020-06-29 08:33 咔啡 阅读(558) 评论(0) 推荐(0)
摘要:Zookeeper 本身也是集群,推荐配置不少于 3 个服务器。Zookeeper 自身也要保 证当一个节点宕机时,其他节点会继续提供服务。 如果是一个 Follower 宕机,还有 2 台服务器提供访问,因为 Zookeeper 上的数 据是有多个副本的,数据并不会丢失; 如果是一个 Leader 阅读全文
posted @ 2020-06-29 08:16 咔啡 阅读(330) 评论(0) 推荐(0)
摘要:java 客户端:zk 自带的 zkclient 及 Apache 开源的 Curator。 阅读全文
posted @ 2020-06-29 07:59 咔啡 阅读(620) 评论(0) 推荐(0)
摘要:Bean 工厂是工厂模式的一个实现,提供了控制反转功能,用来把应用的配置和依 赖从正真的应用代码中分离。 最常用的 BeanFactory 实现是 XmlBeanFactory 类。 XMLBeanFactory 最常用的就是 org.springframework.beans.factory.xm 阅读全文
posted @ 2020-06-29 07:56 咔啡 阅读(252) 评论(0) 推荐(0)
摘要:Spring 配置文件是个 XML 文件,这个文件包含了类信息,描述了如何配置它们,以及如何相互调用。 阅读全文
posted @ 2020-06-28 19:53 咔啡 阅读(103) 评论(0) 推荐(0)
摘要:Spring IOC 负责创建对象,管理对象(通过依赖注入(DI),装配对象,配置对象,并且管理这些对象的整个生命周期。 阅读全文
posted @ 2020-06-28 19:52 咔啡 阅读(134) 评论(0) 推荐(0)
摘要:不,Spring 框架中的单例 bean 不是线程安全的。 阅读全文
posted @ 2020-06-28 19:49 咔啡 阅读(379) 评论(0) 推荐(0)
摘要:FileSystemXmlApplicationContext :此容器从一个 XML 文件中加 载 beans 的定义,XML Bean 配置文件的全路径名必须提供给它的构造函数。 ClassPathXmlApplicationContext:此容器也从一个 XML 文件中加 载 beans 的定 阅读全文
posted @ 2020-06-28 19:48 咔啡 阅读(268) 评论(0) 推荐(0)
摘要:特定 JoinPoint 处的 Aspect 所采取的动作称为 Advice。Spring AOP 使用一个 Advice 作为拦截器,在 JoinPoint “周围”维护一系列的拦截器。 阅读全文
posted @ 2020-06-28 19:47 咔啡 阅读(157) 评论(0) 推荐(0)
摘要:Hibernate iBatis JPA JDO· OJB 阅读全文
posted @ 2020-06-28 19:46 咔啡 阅读(555) 评论(0) 推荐(0)
摘要:WebApplicationContext 是 ApplicationContext 的扩展。它具有 Web 应用 程序所需的一些额外功能。它与普通的 ApplicationContext 在解析主题和决定 与哪个 servlet 关联的能力方面有所不同。 阅读全文
posted @ 2020-06-28 18:36 咔啡 阅读(878) 评论(0) 推荐(0)
摘要:以下是 Spring 框架的基本模块:第 393 页 共 485 页 Core module Bean module Context module Expression Language module JDBC module ORM module OXM module Java Messaging 阅读全文
posted @ 2020-06-28 16:34 咔啡 阅读(464) 评论(0) 推荐(0)
摘要:注解装配在默认情况下是不开启的,为了使用注解装配,我们必须在 Spring 配置文件中配置 context:annotation-config/元素。 阅读全文
posted @ 2020-06-28 12:35 咔啡 阅读(185) 评论(0) 推荐(0)
摘要:有五种自动装配的方式,可以用来指导 Spring 容器用自动装配方式来进行依赖注 入。 no:默认的方式是不进行自动装配,通过显式设置 ref 属性来进行装配。第 402 页 共 485 页 byName:通过参数名 自动装配,Spring 容器在配置文件中发现 bean 的 autowire 属性 阅读全文
posted @ 2020-06-28 07:45 咔啡 阅读(166) 评论(0) 推荐(0)
摘要:当您创建多个相同类型的 bean 并希望仅使用属性装配其中一个 bean 时,您可 以使用@Qualifier 注解和 @Autowired 通过指定应该装配哪个确切的 bean 来消除歧义。 例如,这里我们分别有两个类,Employee 和 EmpAccount。在 EmpAccount 中,使用 阅读全文
posted @ 2020-06-28 07:35 咔啡 阅读(174) 评论(0) 推荐(0)
摘要:Spring 容器 从 XML 文件中读取 bean 的定义,并实例化 bean。 Spring 根据 bean 的定义填充所有的属性。 如果 bean 实现了 BeanNameAware 接口,Spring 传递 bean 的 ID 到 setBeanName 方法。 如果 Bean 实现了 Be 阅读全文
posted @ 2020-06-28 06:55 咔啡 阅读(91) 评论(0) 推荐(0)
摘要:默认情况下,Spring 容器中未打开注解装配。因此,要使用基于注解装配,我们必须通过配置 <context:annotation-config/> 元素在 Spring 配置文件中启用它。 阅读全文
posted @ 2020-06-27 19:37 咔啡 阅读(620) 评论(0) 推荐(0)
摘要:@Component :这将 java 类标记为 bean。它是任何 Spring 管理组件的通 用构造型。spring 的组件扫描机制现在可以将其拾取并将其拉入应用程序环境 中。@Controller :这将一个类标记为 Spring Web MVC 控制器。标有它的 Bean 会自动导入到 Io 阅读全文
posted @ 2020-06-27 19:30 咔啡 阅读(403) 评论(0) 推荐(0)
摘要:基于 Java 的配置,允许你在少量的 Java 注解的帮助下,进行你的大部分 Spring 配置而非通过 XML 文件。 以@Configuration 注解为例,它用来标记类可以当做一个 bean 的定义,被 Spring IOC 容器使用。另一个例子是@Bean 注解,它表示此方法将要返回一个 阅读全文
posted @ 2020-06-27 19:26 咔啡 阅读(360) 评论(0) 推荐(0)
摘要:当有多个相同类型的 bean 却只有一个需要自动装配时,将@Qualifier 注解和 @Autowire 注解结合使用以消除这种混淆,指定需要装配的确切的 bean。 阅读全文
posted @ 2020-06-27 19:24 咔啡 阅读(232) 评论(0) 推荐(0)
摘要:@Autowired 注解提供了更细粒度的控制,包括在何处以及如何完成自动装配。 它的用法和@Required 一样,修饰 setter 方法、构造器、属性或者具有任意名称 和/或多个参数的 PN 方法。 阅读全文
posted @ 2020-06-27 19:20 咔啡 阅读(141) 评论(0) 推荐(0)
摘要:这个注解表明 bean 的属性必须在配置的时候设置,通过一个 bean 定义的显式的 属性值或通过自动装配,若@Required 注解的 bean 属性未被设置,容器将抛出 BeanInitializationException。 阅读全文
posted @ 2020-06-27 19:09 咔啡 阅读(389) 评论(0) 推荐(0)
摘要:spring bean 容器的生命周期流程如下: 1、Spring 容器根据配置中的 bean 定义中实例化 bean。2、Spring 使用依赖 注入填充所有属性,如 bean 中所定义的配置。3、如果 bean 实现 BeanNameAware 接口,则工厂通过传递 bean 的 ID 来调用 阅读全文
posted @ 2020-06-27 19:05 咔啡 阅读(384) 评论(0) 推荐(0)
摘要:基于 xml 配置 bean 所需的依赖项和服务在 XML 格式的配置文件中指定。这些配置文件通常 包含许多 bean 定义和特定于应用程序的配置选项。它们通常以 bean 标签开 头。 例如: <bean id="studentbean" class="org.edureka.firstSprin 阅读全文
posted @ 2020-06-27 18:32 咔啡 阅读(569) 评论(0) 推荐(0)
摘要:不使用 XML 来描述 bean 装配,开发人员通过在相关的类,方法或字段声明上 使用注解将配置移动到组件类本身。它可以作为 XML 设置的替代方案。例如: Spring 的 Java 配置是通过使用 @Bean 和 @Configuration 来实现。 @Bean 注解扮演与 元素相同的角色。 阅读全文
posted @ 2020-06-27 18:28 咔啡 阅读(129) 评论(0) 推荐(0)
摘要:Spring 中的 IoC 的实现原理就是工厂模式加反射机制。 示例: interface Fruit { public abstract void eat(); } class Apple implements Fruit { public void eat(){ System.out.print 阅读全文
posted @ 2020-06-27 16:56 咔啡 阅读(270) 评论(0) 推荐(0)
摘要:通常,依赖注入可以通过三种方式完成,即: 构造函数注入 setter 注入 接口注入 在 Spring Framework 中,仅使用构造函数和 setter 注入。 阅读全文
posted @ 2020-06-27 14:51 咔啡 阅读(296) 评论(0) 推荐(0)
摘要:多线程,并发及线程基础 数据类型转换的基本原则 垃圾回收(GC) Java 集合框架 数组 字符串 GOF 设计模式 SOLID 抽象类与接口 Java 基础,如 equals 和 hashcode 泛型与枚举 Java IO 与 NIO 常用网络协议 Java 中的数据结构和算法 正则表达式 JV 阅读全文
posted @ 2020-06-27 14:45 咔啡 阅读(118) 评论(0) 推荐(0)
摘要:在 Linux 下,你可以通过命令 kill -3 PID (Java 进程的进程 ID)来获取 Java 应用的 dump 文件。在 Windows 下,你可以按下 Ctrl + Break 来获取。这 样 JVM 就会将线程的 dump 文件打印到标准输出或错误文件中,它可能打印在 控制台或者日 阅读全文
posted @ 2020-06-27 14:33 咔啡 阅读(360) 评论(0) 推荐(0)
摘要:WeakHashMap 的工作与正常的 HashMap 类似,但是使用弱引用作为 key, 意思就是当 key 对象没有任何引用时,key/value 将会被回收。 阅读全文
posted @ 2020-06-27 14:26 咔啡 阅读(171) 评论(0) 推荐(0)
摘要:只要记住在同步块中调用 wait() 和 notify()方法,如 果阻塞,通过循环来测试等待条件。 阅读全文
posted @ 2020-06-27 13:40 咔啡 阅读(164) 评论(0) 推荐(0)
摘要:折半查找,也称二分查找、二分搜索,是一种在有序数组中查找某一特定元素的 搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素, 则搜素过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小 于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一 步骤数组已 阅读全文
posted @ 2020-06-27 13:36 咔啡 阅读(210) 评论(0) 推荐(0)
摘要:wait() 方法应该在循环调用,因为当线程获取到 CPU 开始执行的时候,其他条 件可能还没有满足,所以在处理前,循环检测条件是否满足会更好。下面是一段 标准的使用 wait 和 notify 方法的代码: // The standard idiom for using the wait meth 阅读全文
posted @ 2020-06-27 12:27 咔啡 阅读(703) 评论(0) 推荐(0)
摘要:UGO(User/Group/Others) 目前在 Linux/Unix 文件系统中使用,也是使用最广泛的权限控制方式。是一种粗 粒度的文件系统权限控制模式。 ACL(Access Control List)访问控制列表 包括三个方面: 权限模式(Scheme) 1、IP:从 IP 地址粒度进行权 阅读全文
posted @ 2020-06-27 12:22 咔啡 阅读(301) 评论(0) 推荐(0)
摘要:单一职责原则:一个类只做它该做的事情。(单一职责原则想表达的就是” 高内聚”,写代码最终极的原则只有六个字”高内聚、低耦合”,就如同葵花宝 典或辟邪剑谱的中心思想就八个字”欲练此功必先自宫”,所谓的高内聚就是一 个代码模块只完成一项功能,在面向对象中,如果只让一个类完成它该做的事, 而不涉及与它无关 阅读全文
posted @ 2020-06-27 12:08 咔啡 阅读(162) 评论(0) 推荐(0)
摘要:请看下面的代码: import java.lang.reflect.Method; class MethodInvokeTest { public static void main(String[] args) throws Exception { String str = "hello"; Met 阅读全文
posted @ 2020-06-27 12:00 咔啡 阅读(139) 评论(0) 推荐(0)
摘要:采用多版本开发,不影响旧版本。 阅读全文
posted @ 2020-06-27 10:39 咔啡 阅读(124) 评论(0) 推荐(0)
摘要:推荐使用 Hessian 序列化,还有 Duddo、FastJson、Java 自带序列化。 阅读全文
posted @ 2020-06-27 10:08 咔啡 阅读(197) 评论(0) 推荐(0)
摘要:推荐使用 Zookeeper 作为注册中心,还有 Redis、Multicast、Simple 注册中心,但不推荐。 阅读全文
posted @ 2020-06-27 09:54 咔啡 阅读(287) 评论(0) 推荐(0)
摘要:接口服务层(Service):该层与业务逻辑相关,根据 provider 和 consumer 的 业务设计对应的接口和实现 配置层(Config):对外配置接口,以 ServiceConfig 和 ReferenceConfig 为 中心 服务代理层(Proxy):服务接口透明代理,生成服务的客户 阅读全文
posted @ 2020-06-27 09:44 咔啡 阅读(952) 评论(0) 推荐(0)
摘要:Java 中的 String 类提供了支持正则表达式操作的方法,包括:matches()、 replaceAll()、replaceFirst()、split()。此外,Java 中可以用 Pattern 类表示正则 表达式对象,它提供了丰富的 API 进行各种正则表达式操作,请参考下面面试题 的代 阅读全文
posted @ 2020-06-27 09:23 咔啡 阅读(221) 评论(0) 推荐(0)
摘要:集群容错方案 说明 Failover Cluster 失败自动切换,自动重试其它服务器(默认) Failfast Cluster 快速失败,立即报错,只发起一次调用 Failsafe Cluster 失败安全,出现异常时,直接忽略 Failback Cluster 失败自动恢复,记录失败请求,定时重 阅读全文
posted @ 2020-06-27 09:06 咔啡 阅读(217) 评论(0) 推荐(0)
摘要:dubbo://(推荐) rmi:// hessian:// http:// webservice:// thrift:// memcached:// redis:// rest:// 阅读全文
posted @ 2020-06-27 09:02 咔啡 阅读(175) 评论(0) 推荐(0)
摘要:配置 配置说明 dubbo:service 服务配置 dubbo:reference 引用配置 dubbo:protocol 协议配置 dubbo:applicatio n 应用配置 dubbo:module 模块配置 dubbo:registry 注册中心配置 dubbo:monitor 监控中心 阅读全文
posted @ 2020-06-26 16:05 咔啡 阅读(145) 评论(0) 推荐(0)
摘要:Dubbo 是通过 JDK 的 ShutdownHook 来完成优雅停机的,所以如果使用kill -9 PID 等强制关闭指令,是不会执行优雅停机的,只有通过 kill PID 时,才会执行。 阅读全文
posted @ 2020-06-26 15:31 咔啡 阅读(182) 评论(0) 推荐(0)
摘要:Dubbo 必须依赖 JDK,其他为可选。 阅读全文
posted @ 2020-06-26 15:22 咔啡 阅读(430) 评论(0) 推荐(0)
摘要:可以用版本号(version)过渡,多个不同版本的服务注册到注册中心,版本号不同的服务相互间不引用。这个和服务分组的概念有一点类似。 阅读全文
posted @ 2020-06-26 14:57 咔啡 阅读(284) 评论(0) 推荐(0)
摘要:为了提高数据访问的速度。Dubbo 提供了声明式缓存,以减少用户加缓存的工作 量 <dubbo:reference cache="true" /> 其实比普通的配置文件就多了一个标签 cache="true" 阅读全文
posted @ 2020-06-26 14:56 咔啡 阅读(740) 评论(0) 推荐(0)
摘要:面试官:想了解对 ES 集群的运维能力。 解答: 1、关闭缓存 swap; 2、堆内存设置为:Min(节点内存/2, 32GB); 3、设置最大文件句柄数; 4、线程池+队列大小根据业务需要做调整; 5、磁盘存储 raid 方式——存储有条件使用 RAID10,增加单节点性能以及避免单 节点存储故障 阅读全文
posted @ 2020-06-26 14:55 咔啡 阅读(289) 评论(0) 推荐(0)
摘要:Dubbo 框架在初始化和通信过程中使用了多种设计模式,可灵活控制类加载、权 限控制等功能。 工厂模式 Provider 在 export 服务时,会调用 ServiceConfig 的 export 方法。ServiceConfig 中有个字段: private static final Prot 阅读全文
posted @ 2020-06-26 14:24 咔啡 阅读(155) 评论(0) 推荐(0)
摘要:dubbo 服务发布之后,我们可以利用 telnet 命令进行调试、管理。 Dubbo2.0.5 以上版本服务提供端口支持 telnet 命令 连接服务 telnet localhost 20880 //键入回车进入 Dubbo 命令模式。 查看服务列表 dubbo>ls com.test.Test 阅读全文
posted @ 2020-06-26 14:06 咔啡 阅读(164) 评论(0) 推荐(0)
摘要:Dubbox 是继 Dubbo 停止维护后,当当网基于 Dubbo 做的一个扩展项目,如 加了服务可 Restful 调用,更新了开源组件等。 阅读全文
posted @ 2020-06-26 14:01 咔啡 阅读(194) 评论(0) 推荐(0)
摘要:别的还有 spring 的 spring cloud,facebook 的 thrift,twitter 的 finagle 等 阅读全文
posted @ 2020-06-26 13:52 咔啡 阅读(159) 评论(0) 推荐(0)
摘要:JDK SPI JDK 标准的 SPI 会一次性加载所有的扩展实现,如果有的扩展吃实话很耗时,但 也没用上,很浪费资源。 所以只希望加载某个的实现,就不现实了 DUBBO SPI 1,对 Dubbo 进行扩展,不需要改动 Dubbo 的源码 2,延迟加载,可以一次只加载自己想要加载的扩展实现。 3, 阅读全文
posted @ 2020-06-26 13:06 咔啡 阅读(333) 评论(0) 推荐(0)
摘要:想了解大数据量的运维能力。 解答:索引数据的规划,应在前期做好规划,正所谓“设计先行,编码在后”, 这样才能有效的避免突如其来的数据激增导致集群处理能力不足引发的线上客户 检索或者其他业务受到影响。 如何调优,正如问题 1 所说,这里细化一下: 3.1 动态索引层面 基于模板+时间+rollover 阅读全文
posted @ 2020-06-26 13:02 咔啡 阅读(263) 评论(0) 推荐(0)
摘要:1、Elasticsearch 的选主是 ZenDiscovery 模块负责的,主要包含 Ping(节点之 间通过这个 RPC 来发现彼此)和 Unicast(单播模块包含一个主机列表以控制哪 些节点需要 ping 通)这两部分; 2、对所有可以成为 master 的节点(node.master: 阅读全文
posted @ 2020-06-26 12:54 咔啡 阅读(610) 评论(0) 推荐(0)
摘要:1、64 GB 内存的机器是非常理想的, 但是 32 GB 和 16 GB 机器也是很常见的。 少于 8 GB 会适得其反。 2、如果你要在更快的 CPUs 和更多的核心之间选择,选择更多的核心更好。多 个内核提供的额外并发远胜过稍微快一点点的时钟频率。 3、如果你负担得起 SSD,它将远远超出任何 阅读全文
posted @ 2020-06-26 12:10 咔啡 阅读(195) 评论(0) 推荐(0)
摘要:1、搜索被执行成一个两阶段过程,我们称之为 Query Then Fetch; 2、在初始查询阶段时,查询会广播到索引中每一个分片拷贝(主分片或者副本分 片)。 每个分片在本地执行搜索并构建一个匹配文档的大小为 from + size 的 优先队列。 PS:在搜索的时候是会查询 Filesystem 阅读全文
posted @ 2020-06-26 12:04 咔啡 阅读(412) 评论(0) 推荐(0)
摘要:a、完全基于内存缓存的 b、节点之间相互独立 c、C/S 模式架构,C 语言编写,总共 2000 行代码。 d、异步I/O 模型,使用 libevent 作为事件通知机制。 e、被缓存的数据以 key/value 键值对形式存在的。 f、全部数据存放于内存中,无持久性存储的设计,重启服务器,内存里的 阅读全文
posted @ 2020-06-26 12:03 咔啡 阅读(144) 评论(0) 推荐(0)
摘要:特殊说明:Memcached 集群和 web 服务集群是不一样的,所有 Memcached 的 数据总和才是数据库的数据。每台 Memcached 都是部分数据。 (一台 memcached 的数据,就是一部分 mysql 数据库的数据) a、程序端实现 程序加载所有 mc 的 ip 列表,通过对 阅读全文
posted @ 2020-06-26 11:25 咔啡 阅读(214) 评论(0) 推荐(0)
摘要:Marvel 让你可以很简单的通过 Kibana 监控 Elasticsearch。你可以实时查看你 的集群健康状态和性能,也可以分析过去的集群、索引和节点指标。 阅读全文
posted @ 2020-06-26 11:15 咔啡 阅读(414) 评论(0) 推荐(0)
摘要:1、SEE:https://elasticsearch.cn/article/32 2、倒排词典的索引需要常驻内存,无法 GC,需要监控 data node 上 segment memory 增长趋势。 3、各类缓存,field cache, filter cache, indexing cache 阅读全文
posted @ 2020-06-26 09:27 咔啡 阅读(182) 评论(0) 推荐(0)
摘要:cache 相比,有什么优缺点? 把 memcached 引入应用中,还是需要不少工作量的。MySQL 有个使用方便的 query cache,可以自动地缓存 SQL 查询的结果,被缓存的 SQL 查询可以被反复 地快速执行。Memcached 与之相比,怎么样呢?MySQL 的 query cac 阅读全文
posted @ 2020-06-26 09:22 咔啡 阅读(147) 评论(0) 推荐(0)
摘要:我们对这个问题感到很惊讶。Memcached 应该是应用的缓存层。它的设 计本身就不带有任何冗余机制。如果一个 memcached 节点失去了所有数据,您 应该可以从数据源(比如数据库)再次获取到数据。您应该特别注意,您的应用 应该可以容忍节点的失效。不要写一些糟糕的查询代码,寄希望于 memcac 阅读全文
posted @ 2020-06-26 08:38 咔啡 阅读(165) 评论(0) 推荐(0)
摘要:key 的最大长度是 250 个字符。需要注意的是,250 是 memcached 服务器端内 部的限制,如果您使用的客户端支持”key 的前缀”或类似特性,那么 key(前缀 +原始 key)的最大长度是可以超过 250 个字符的。我们推荐使用使用较短的 key, 因为可以节省内存和带宽。 mem 阅读全文
posted @ 2020-06-26 08:24 咔啡 阅读(375) 评论(0) 推荐(0)
摘要:线程就是定律(threads rule)!在 Steven Grimm 和 Facebook 的努力下, memcached 1.2 及更高版本拥有了多线程模式。多线程模式允许 memcached 能 够充分利用多个 CPU,并在 CPU 之间共享所有的缓存数据。memcached 使用一 种简单的 阅读全文
posted @ 2020-06-25 20:16 咔啡 阅读(517) 评论(0) 推荐(0)
摘要:没有身份认证机制!memcached 是运行在应用下层的软件(身份验证应该是应用 上层的职责)。memcached 的客户端和服务器端之所以是轻量级的,部分原因就 是完全没有实现身份验证机制。这样,memcached 可以很快地创建新连接,服务 器端也无需任何配置。 如果您希望限制访问,您可以使用防 阅读全文
posted @ 2020-06-25 20:11 咔啡 阅读(553) 评论(0) 推荐(0)
摘要:Session 是运行在一台服务器上的,所有的访问都会到达我们的唯一服务器上,这 样我们可以根据客户端传来的 sessionID,来获取 session,或在对应 Session 不 存在的情况下(session 生命周期到了/用户第一次登录),创建一个新的 Session; 但是,如果我们在集群环 阅读全文
posted @ 2020-06-25 20:05 咔啡 阅读(182) 评论(0) 推荐(0)
摘要:实际上,这是一个编译时选项。默认会使用内部的 slab 分配器。您确实确实应该 使用内建的 slab 分配器。最早的时候,memcached 只使用 malloc/free 来管理 内存。然而,这种方式不能与 OS 的内存管理以前很好地工作。反复地 malloc/free 造成了内存碎片,OS 最终 阅读全文
posted @ 2020-06-25 18:22 咔啡 阅读(156) 评论(0) 推荐(0)
摘要:关于二进制最好的信息当然是二进制协议规范: 二进制协议尝试为端提供一个更有效的、可靠的协议,减少客户端/服务器端因处 理协议而产生的 CPU 时间。 根据 Facebook 的测试,解析 ASCII 协议是 memcached 中消耗 CPU 时间最多的 环节。所以,我们为什么不改进 ASCII 协 阅读全文
posted @ 2020-06-25 17:52 咔啡 阅读(218) 评论(0) 推荐(0)
摘要:1MB。如果你的数据大于 1MB,可以考虑在客户端压缩或拆分到多个 key 中。 为什么单个 item 的大小被限制在 1M byte 之内? 啊…这是一个大家经常问的问题! 简单的回答:因为内存分配器的算法就是这样的。 详细的回答:Memcached 的内存存储引擎(引擎将来可插拔…),使用 sl 阅读全文
posted @ 2020-06-25 16:26 咔啡 阅读(129) 评论(0) 推荐(0)
摘要:Redis 支持五种数据类型:string(字符串),hash(哈希),list(列表), set(集合)及 zsetsorted set:有序集合)。 我们实际项目中比较常用的是 string,hash 如果你是 Redis 中高级用户,还需要 加上下面几种数据结构 HyperLogLog、Geo 阅读全文
posted @ 2020-06-25 16:23 咔啡 阅读(104) 评论(0) 推荐(0)
摘要:1、Redis 不仅仅支持简单的 k/v 类型的数据,同时还提供 list,set,zset,hash 等数据结构的存储。而 memcache 只支持简单数据类型,需要客户端自己处理复 杂对象 2、Redis 支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可 以再次加载进行使用(PS: 阅读全文
posted @ 2020-06-25 16:19 咔啡 阅读(201) 评论(0) 推荐(0)
摘要:512M 阅读全文
posted @ 2020-06-25 15:35 咔啡 阅读(900) 评论(0) 推荐(0)
摘要:Redis 是完全开源免费的,遵守 BSD 协议,是一个高性能的 key-value 数据库。 Redis 与其他 key - value 缓存产品有以下三个特点: Redis 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再 次加载进行使用。 Redis 不仅仅支持简单的 key 阅读全文
posted @ 2020-06-25 15:31 咔啡 阅读(170) 评论(0) 推荐(0)
摘要:1、存储方式 Memecache 把数据全部存在内存之中,断电后会挂掉,数据不能 超过内存大小。 Redis 有部份存在硬盘上,这样能保证数据的持久性。 2、数据支持类型 Memcache 对数据类型支持相对简单。 Redis 有复杂的数据类 型。 3、使用底层模型不同 它们之间底层实现方式 以及与 阅读全文
posted @ 2020-06-25 15:29 咔啡 阅读(154) 评论(0) 推荐(0)
摘要:1、Memcached 所有的值均是简单的字符串,redis 作为其替代者,支持更为丰 富的数据类 2、Redis 的速度比 Memcached 快很 3、Redis 可以持久化其数据 阅读全文
posted @ 2020-06-25 14:48 咔啡 阅读(211) 评论(0) 推荐(0)
摘要:1、速度快,因为数据存在内存中,类似于 HashMap,HashMap 的优势就是查 找和操作的时间复杂度都是 O1) 2、支持丰富数据类型,支持 string,list,set,Zset,hash 等 3、支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行, 要么全部不执行 4、丰 阅读全文
posted @ 2020-06-25 14:43 咔啡 阅读(1105) 评论(0) 推荐(0)
摘要:不处理! 在 memcached 节点失效的情况下,集群没有必要做任何容错处理。如 果发生了节点失效,应对的措施完全取决于用户。节点失效时,下面列出几种方 案供您选择: 忽略它! 在失效节点被恢复或替换之前,还有很多其他节点可以应对节 点失效带来的影响。 把失效的节点从节点列表中移除。做这个操作千万 阅读全文
posted @ 2020-06-25 14:34 咔啡 阅读(105) 评论(0) 推荐(0)
摘要:Redis 提供两种持久化机制 RDB 和 AOF 机制: 1、RDBRedis DataBase)持久化方式: 是指用数据集快照的方式半持久化模式) 记录 redis 数据库的所有键值对,在某个时间点将数据写入一个临时文件,持久化 结束后,用这个临时文件替换上次持久化的文件,达到数据恢复。 优点: 阅读全文
posted @ 2020-06-24 20:30 咔啡 阅读(245) 评论(0) 推荐(0)
摘要:Redis 集群没有使用一致性 hash,而是引入了哈希槽的概念,Redis 集群有 16384 个哈希槽,每个 key 通过 CRC16 校验后对 16384 取模来决定放置哪个槽, 集群的每个节点负责一部分 hash 槽。 阅读全文
posted @ 2020-06-24 20:26 咔啡 阅读(687) 评论(0) 推荐(0)
摘要:设置密码:config set requirepass 123456 授权密码:auth 123456 阅读全文
posted @ 2020-06-24 18:38 咔啡 阅读(764) 评论(0) 推荐(0)
摘要:1)、Redis Sentinal 着眼于高可用,在 master 宕机时会自动将 slave 提升为 master,继续提供服务。 2)、Redis Cluster 着眼于扩展性,在单个 redis 内存不足时,使用 Cluster 进行 分片存储。 阅读全文
posted @ 2020-06-24 18:36 咔啡 阅读(650) 评论(0) 推荐(0)
摘要:Redis 并不能保证数据的强一致性,这意味这在实际中集群在特定的条件下可 能会丢失写操作。 阅读全文
posted @ 2020-06-24 16:50 咔啡 阅读(674) 评论(0) 推荐(0)
摘要:1)事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。 事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。 2)事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。 阅读全文
posted @ 2020-06-24 16:30 咔啡 阅读(124) 评论(0) 推荐(0)
摘要:16384 个。 阅读全文
posted @ 2020-06-24 16:02 咔啡 阅读(1124) 评论(0) 推荐(0)
摘要:使用 ping 命令。 阅读全文
posted @ 2020-06-24 12:28 咔啡 阅读(1036) 评论(0) 推荐(0)
摘要:Redis 集群目前无法做数据库选择,默认在 0 数据库。 阅读全文
posted @ 2020-06-24 12:25 咔啡 阅读(1099) 评论(0) 推荐(0)
摘要:异步复制 阅读全文
posted @ 2020-06-24 12:15 咔啡 阅读(642) 评论(0) 推荐(0)
摘要:理论上 Redis 可以处理多达 232 的 keys,并且在实际中进行了测试,每个实 例至少存放了 2 亿 5 千万的 keys。我们正在测试一些较大的值。任何 list、set、 和 sorted set 都可以放 232 个元素。换句话说,Redis 的存储极限是系统中的可 用内存值。 阅读全文
posted @ 2020-06-24 11:36 咔啡 阅读(2660) 评论(0) 推荐(0)
摘要:如果达到设置的上限,Redis 的写命令会返回错误信息(但是读命令还可以正 常返回。)或者你可以将 Redis 当缓存来使用配置淘汰机制,当 Redis 达到内存 上限时会冲刷掉旧的内容。 阅读全文
posted @ 2020-06-24 11:33 咔啡 阅读(583) 评论(0) 推荐(0)
摘要:尽可能使用散列表(hashes),散列表(是说散列表里面存储的数少)使用 的内存非常小,所以你应该尽可能的将你的数据模型抽象到一个散列表里面。比 如你的 web 系统中有一个用户对象,不要为这个用户的名称,姓氏,邮箱,密码 设置单独的 key,而是应该把这个用户的所有信息存储到一张散列表里面. 阅读全文
posted @ 2020-06-24 10:33 咔啡 阅读(199) 评论(0) 推荐(0)
摘要:EXPIRE 和 PERSIST 命令。 阅读全文
posted @ 2020-06-24 10:15 咔啡 阅读(2655) 评论(0) 推荐(0)
摘要:MULTI、EXEC、DISCARD、WATCH 阅读全文
posted @ 2020-06-24 09:40 咔啡 阅读(224) 评论(0) 推荐(0)
摘要:Redis 在内存中对数字进行递增或递减的操作实现的非常好。集合(Set)和有序 集合(Sorted Set)也使得我们在执行这些操作的时候变的非常简单,Redis 只是 正好提供了这两种数据结构。所以,我们要从排序集合中获取到排名最靠前的 10 个用户–我们称之为“user_scores”,我们只 阅读全文
posted @ 2020-06-23 19:15 咔啡 阅读(161) 评论(0) 推荐(0)
摘要:Reids 在内存存储引擎领域的一大优点是提供 list 和 set 操作,这使得 Redis 能作为一个很好的消息队列平台来使用。Redis 作为队列使用的操作,就类似于本 地程序语言(如 Python)对 list 的 push/pop 操作。 如果你快速的在 Google 中搜索“Redis 阅读全文
posted @ 2020-06-23 18:09 咔啡 阅读(105) 评论(0) 推荐(0)
摘要:除基本的会话 token 之外,Redis 还提供很简便的 FPC 平台。回到一致性问题, 即使重启了 Redis 实例,因为有磁盘的持久化,用户也不会看到页面加载速度的 下降,这是一个极大改进,类似 PHP 本地 FPC。 再次以 Magento 为例,Magento 提供一个插件来使用 Redi 阅读全文
posted @ 2020-06-23 18:08 咔啡 阅读(1108) 评论(0) 推荐(0)
摘要:Redis 内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略。 相关知识:Redis 提供 6 种数据淘汰策略: volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最 少使用的数据淘汰 volatile-ttl:从已设置过期时间的数据集( 阅读全文
posted @ 2020-06-23 18:07 咔啡 阅读(331) 评论(0) 推荐(0)
摘要:最常用的一种使用 Redis 的情景是会话缓存(session cache)。用 Redis 缓存会 话比其他存储(如 Memcached)的优势在于:Redis 提供持久化。当维护一个不 是严格要求一致性的缓存时,如果用户的购物车信息全部丢失,大部分人都会不 高兴的,现在,他们还会这样吗? 幸运的 阅读全文
posted @ 2020-06-23 18:06 咔啡 阅读(1551) 评论(0) 推荐(0)
摘要:1、表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最 高,并发度最低。 2、行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最 低,并发度也最高。 3、页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表 锁和行锁之间,并发度一般。 阅读全文
posted @ 2020-06-23 15:52 咔啡 阅读(561) 评论(0) 推荐(0)
摘要:在 SELECT 语句的列比较中使用=,<>,<=,<,> =,>,<<,>>,<=>,AND, OR 或 LIKE 运算符。 阅读全文
posted @ 2020-06-23 14:28 咔啡 阅读(502) 评论(0) 推荐(0)
摘要:索引是通过以下方式为表格定义的: SHOW INDEX FROM <tablename>; 阅读全文
posted @ 2020-06-23 11:32 咔啡 阅读(290) 评论(0) 推荐(0)
摘要:它用来压缩 MyISAM 表,这减少了磁盘或内存使用。 MyISAM Static 和 MyISAM Dynamic 有什么区别? 在 MyISAM Static 上的所有字段有固定宽度。动态 MyISAM 表将具有像 TEXT, BLOB 等字段,以适应不同长度的数据类型。 MyISAM Stat 阅读全文
posted @ 2020-06-23 11:01 咔啡 阅读(317) 评论(0) 推荐(0)
摘要:1、CHAR 和 VARCHAR 类型在存储和检索方面有所不同 2、CHAR 列长度固定为创建表时声明的长度,长度值范围是 1 到 255 当 CHAR 值被存储时,它们被用空格填充到特定长度,检索 CHAR 值时需删除尾随空格。 阅读全文
posted @ 2020-06-23 10:24 咔啡 阅读(208) 评论(0) 推荐(0)
摘要:SQL 标准定义的四个隔离级别为: 1、read uncommited :读到未提交数据 2、read committed:脏读,不可重复读 3、repeatable read:可重读 4、serializable :串行事物 阅读全文
posted @ 2020-06-23 10:22 咔啡 阅读(278) 评论(0) 推荐(0)
摘要:NOW()命令用于显示当前年份,月份,日期,小时,分钟和秒。 CURRENT_DATE()仅显示当前年份,月份和日期。 阅读全文
posted @ 2020-06-23 10:17 咔啡 阅读(466) 评论(0) 推荐(0)
摘要:MyISAM: 不支持事务,但是每次查询都是原子的; 支持表级锁,即每次操作是对整个表加锁; 存储表的总行数; 一个 MYISAM 表有三个文件:索引文件、表结构文件、数据文件; 采用菲聚集索引,索引文件的数据域存储指向数据文件的指针。辅索引与主索引 基本一致,但是辅索引不用保证唯一性。 InnoD 阅读全文
posted @ 2020-06-23 10:06 咔啡 阅读(161) 评论(0) 推荐(0)
摘要:以下是 MySQL_fetch_array 和 MySQL_fetch_object 的区别: MySQL_fetch_array() – 将结果行作为关联数组或来自数据库的常规数组返回。 MySQL_fetch_object – 从数据库返回结果行作为对象。 阅读全文
posted @ 2020-06-23 09:59 咔啡 阅读(205) 评论(0) 推荐(0)
摘要:任何标准表最多可以创建 16 个索引列。 阅读全文
posted @ 2020-06-23 09:57 咔啡 阅读(519) 评论(0) 推荐(0)
摘要:在 MySQL 中,使用以下代码查询显示前 50 行: SELECT*FROM LIMIT 0,50; 阅读全文
posted @ 2020-06-22 20:09 咔啡 阅读(312) 评论(0) 推荐(0)
摘要:索引是一种特殊的文件(InnoDB 数据表上的索引是表空间的一个组成部分),它们 包含着对数据表里所有记录的引用指针。 普通索引(由关键字 KEY 或 INDEX 定义的索引)的唯一任务是加快对数据的访问速 度。 普通索引允许被索引的数据列包含重复的值。如果能确定某个数据列将只包含彼 此各不相同的值 阅读全文
posted @ 2020-06-22 19:12 咔啡 阅读(632) 评论(0) 推荐(0)
摘要:最好是按照以下顺序优化: 1、SQL 语句及索引的优化 2、数据库表结构的优化 3、系统配置的优化 4、硬件的优化 详细可以查看 阿里 P8 架构师谈:MySQL 慢查询优化、索引优化、以及表等优化 阅读全文
posted @ 2020-06-22 19:06 咔啡 阅读(192) 评论(0) 推荐(0)
摘要:字符串类型是: 1、SET 2、BLOB 3、ENUM 4、CHAR 5、TEXT 阅读全文
posted @ 2020-06-22 19:04 咔啡 阅读(216) 评论(0) 推荐(0)
摘要:NUMERIC 和 DECIMAL 类型被 MySQL 实现为同样的类型,这在 SQL92 标准允 许。他们被用于保存值,该值的准确精度是极其重要的值,例如与金钱有关的数 据。当声明一个类是这些类型之一时,精度和规模的能被(并且通常是)指定。 例如: salary DECIMAL(9,2) 在这个例 阅读全文
posted @ 2020-06-22 18:58 咔啡 阅读(557) 评论(0) 推荐(0)
摘要:1、CONCAT(A, B) – 连接两个字符串值以创建单个字符串输出。通常用于将两个 或多个字段合并为一个字段。 2、FORMAT(X, D)- 格式化数字 X 到 D 有效数字。 3、CURRDATE(), CURRTIME()- 返回当前日期或时间。 4、NOW() – 将当前日期和时间作为一 阅读全文
posted @ 2020-06-22 18:54 咔啡 阅读(475) 评论(0) 推荐(0)
摘要:1、索引的目的是什么? 快速访问数据表中的特定信息,提高检索速度 创建唯一性索引,保证数据库表中每一行数据的唯一性。 加速表和表之间的连接 使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间 2、索引对数据库系统的负面影响是什么? 负面影响: 创建索引和维护索引需要耗费时间,这个时 阅读全文
posted @ 2020-06-22 16:51 咔啡 阅读(273) 评论(0) 推荐(0)
摘要:字段类型优先级: 整形>date,time>enum,char>varchar>blob,text 优先考虑数字类型,其次是日期或者二进制类型,最后是字符串类型,同级别得 数据类型,应该优先选择占用空间小的数据类型 阅读全文
posted @ 2020-06-22 16:04 咔啡 阅读(256) 评论(0) 推荐(0)
摘要:SQL 注入产生的原因:程序开发过程中不注意规范书写 sql 语句和对特殊字符进 行过滤,导致客户端可以通过全局变量 POST 和 GET 提交一些 sql 语句正常执行。 防止 SQL 注入的方式: 开启配置文件中的 magic_quotes_gpc 和 magic_quotes_runtime 阅读全文
posted @ 2020-06-22 14:27 咔啡 阅读(1258) 评论(0) 推荐(0)
摘要:事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位,事务回滚是指将该事务已经完成的对数据库的更新操作撤销。 要同时修改数据库中两个不同表时,如果它们不是一个事务的话,当第一个表修改完,可能第二个表修改过程中出现了异常而没能修改,此时就只有第二个表依旧是未修改之前 阅读全文
posted @ 2020-06-22 12:21 咔啡 阅读(190) 评论(0) 推荐(0)
摘要:事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有 操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所 有操作完成,事务则提交,其修改将作用于所有其他数据库进程。如果一个操作 失败,则事务将回滚,该事务所有操作的影响都将取消。 事务特性: 1、原子 阅读全文
posted @ 2020-06-22 10:21 咔啡 阅读(410) 评论(0) 推荐(0)
摘要:视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改, 查,操作,视图通常是有一个表或者多个表的行或列的子集。对视图的修改不影 响基本表。它使得我们获取数据更容易,相比多表查询。 游标:是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元 中的特定行,从结果集的当前行检索一行 阅读全文
posted @ 2020-06-22 09:32 咔啡 阅读(438) 评论(0) 推荐(0)
摘要:数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数 据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可 能会读取和存储不正确的数据,破坏数据库的一致性。 加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进 行操作前,先向系统发出请求,对其加锁。 阅读全文
posted @ 2020-06-22 09:10 咔啡 阅读(357) 评论(0) 推荐(0)
摘要:Datatime:以 YYYY-MM-DD HH:MM:SS 格式存储时期时间,精确到秒, 占用 8 个字节得存储空间,datatime 类型与时区无关 Timestamp:以时间戳格式存储,占用 4 个字节,范围小 1970-1-1 到 2038-1-19, 显示依赖于所指定得时区,默认在第一个列 阅读全文
posted @ 2020-06-22 09:00 咔啡 阅读(447) 评论(0) 推荐(0)
摘要:数据完整性(Data Integrity)是指数据的精确(Accuracy)和可靠性(Reliability)。 分为以下四类: 1、实体完整性:规定表的每一行在表中是惟一的实体。 2、域完整性:是指表中的列必须满足某种特定的数据类型约束,其中约束又包括 取值范围、精度等规定。 3、参照完整性:是指 阅读全文
posted @ 2020-06-21 15:28 咔啡 阅读(1183) 评论(0) 推荐(0)
摘要:先说什么是交叉连接: 交叉连接又叫笛卡尔积,它是指不使用任何条件,直接将一 个表的所有记录和另一个表中的所有记录一一匹配。 内连接 则是只有条件的交叉连接,根据某个条件筛选出符合条件的记录,不符合 条件的记录不会出现在结果集中,即内连接只连接匹配的行。 外连接 其结果集中不仅包含符合连接条件的行,而 阅读全文
posted @ 2020-06-21 15:20 咔啡 阅读(2176) 评论(0) 推荐(0)
摘要:SQL 语言包括数据定义(DDL)、数据操纵(DML),数据控制(DCL)和数据查询(DQL)四个部分。 数据定义:Create Table,Alter Table,Drop Table, Craete/Drop Index 等 数据操纵:Select ,insert,update,delete, 阅读全文
posted @ 2020-06-21 14:45 咔啡 阅读(455) 评论(0) 推荐(0)
摘要:主键、外键和索引的区别 定义: 主键–唯一标识一条记录,不能有重复的,不允许为空 外键–表的外键是另一表的主键, 外键可以有重复的, 可以是空值 索引–该字段没有重复值,但可以有一个空值 作用: 主键–用来保证数据完整性 外键–用来和其他表建立联系用的 索引–是提高查询排序的速度 个数: 主键–主键 阅读全文
posted @ 2020-06-21 14:43 咔啡 阅读(271) 评论(0) 推荐(0)
摘要:NULL 这个值表示 UNKNOWN(未知):它不表示“”(空字符串)。对 NULL 这 个值的任何比较都会生产一个 NULL 值。您不能把任何值与一个 NULL 值进行比 较,并在逻辑上希望获得一个答案。 使用 IS NULL 来进行 NULL 判断 阅读全文
posted @ 2020-06-21 14:42 咔啡 阅读(5752) 评论(0) 推荐(0)
摘要:(1) 视图能够简化用户的操作 (2) 视图使用户能以多种角度看待同一数据; (3) 视图为数据库提供了一定程度的逻辑独立性; (4) 视图能够对机密数据提供 安全保护。 阅读全文
posted @ 2020-06-21 14:40 咔啡 阅读(762) 评论(0) 推荐(0)
摘要:基本表是本身独立存在的表,在 SQL 中一个关系就对应一个表。 视图是从一个或几个基本表导出的表。 视图本身不独立存储在数据库中,是一个虚表 阅读全文
posted @ 2020-06-21 14:34 咔啡 阅读(838) 评论(0) 推荐(0)
摘要:第一范式:1NF 是对属性的原子性约束,要求属性具有原子性,不可再分解; 第二范式:2NF 是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性; 第三范式:3NF 是对字段冗余性的约束,即任何字段不能由其他字段派生出来, 它要求字段没有冗余。。 范式化设计优缺点: 优点: 可以尽量得减少数据冗 阅读全文
posted @ 2020-06-21 14:32 咔啡 阅读(742) 评论(0) 推荐(0)
摘要:存储过程是一个预编译的 SQL 语句,优点是允许模块化的设计,就是说只需 创建一次,以后在该程序中就可以调用多次。如果某次操作需要执行多次 SQL, 使用存储过程比单纯 SQL 语句执行要快。可以用一个命令对象来调用存储过程。 阅读全文
posted @ 2020-06-21 14:29 咔啡 阅读(869) 评论(0) 推荐(0)
摘要:死锁:是指两个或两个以上的进程(或线程)在执行过程中,因争夺资源而造成 的一种互相等待的现象,若无外力作用,它们都将无法推进下去。 产生死锁的必要条件: 1、互斥条件:所谓互斥就是进程在某一时间内独占资源。 2、请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。 3、不剥夺条件:进 阅读全文
posted @ 2020-06-21 14:27 咔啡 阅读(728) 评论(0) 推荐(0)
摘要:多线程会共同使用一组计算机上的 CPU,而线程数大于给程序分配的 CPU 数量时, 为了让各个线程都有执行的机会,就需要轮转使用 CPU。不同的线程切换使用 CPU 发生的切换数据等就是上下文切换。 阅读全文
posted @ 2020-06-21 14:26 咔啡 阅读(157) 评论(0) 推荐(0)
摘要:java 中的线程分为两种:守护线程(Daemon)和用户线程(User)。 任何线程都可以设置为守护线程和用户线程,通过方法 Thread.setDaemon(bool on);true 则把该线程设置为守护线程,反之则为用户线程。Thread.setDaemon() 必须在 Thread.sta 阅读全文
posted @ 2020-06-21 14:24 咔啡 阅读(213) 评论(0) 推荐(0)
摘要:Executors 工具类的不同方法按照我们的需求创建了不同的线程池,来满足业务的需求。 Executor 接口对象能执行我们的线程任务。 ExecutorService 接口继承了 Executor 接口并进行了扩展,提供了更多的方法我 们能获得任务执行的状态并且可以获取任务的返回值。 使用 Th 阅读全文
posted @ 2020-06-21 14:22 咔啡 阅读(367) 评论(0) 推荐(0)
摘要:进程是操作系统分配资源的最小单元,线程是操作系统调度的最小单元。一个程序至少有一个进程,一个进程至少有一个线程。 阅读全文
posted @ 2020-06-21 14:20 咔啡 阅读(125) 评论(0) 推荐(0)
摘要:Check 限制,它在数据库表格里被定义,用来限制输入该列的值。 触发器也可以被用来限制数据库表格里的字段能够接受的值,但是这种办法要求触发器在表格里被定义,这可能会在某些情况下影响到性能。 阅读全文
posted @ 2020-06-21 14:19 咔啡 阅读(181) 评论(0) 推荐(0)
摘要:每次执行任务创建线程 new Thread()比较消耗性能,创建一个线程是比较耗时、耗资源的。 调用 new Thread()创建的线程缺乏管理,被称为野线程,而且可以无限制的创建,线程之间的相互竞争会导致过多占用系统资源而导致系统瘫痪,还有线程之间的频繁交替也会消耗很多系统资源。 接使用 new 阅读全文
posted @ 2020-06-21 14:18 咔啡 阅读(191) 评论(0) 推荐(0)
摘要:ThreadGroup 类,可以把线程归属到某一个线程组中,线程组中可以有线程对象,也可以有线程组,组中还可以有线程,这样的组织结构有点类似于树的形式。 为什么不推荐使用?因为使用有很多的安全隐患吧,没有具体追究,如果需要使用,推荐使用线程池。 阅读全文
posted @ 2020-06-21 14:16 咔啡 阅读(267) 评论(0) 推荐(0)
摘要:在 Java 并发程序中 FutureTask 表示一个可以取消的异步运算。它有启动和取消 运算、查询运算是否完成和取回运算结果等方法。只有当运算完成的时候结果才 能取回,如果运算尚未完成 get 方法将会阻塞。一个 FutureTask 对象可以对调用 了 Callable 和 Runnable 阅读全文
posted @ 2020-06-21 14:14 咔啡 阅读(230) 评论(0) 推荐(0)
摘要:采用时间片轮转的方式。可以设置线程的优先级,会映射到下层的系统上面的优先级上,如非特别需要,尽量不要用,防止线程饥饿。 阅读全文
posted @ 2020-06-21 14:13 咔啡 阅读(161) 评论(0) 推荐(0)
摘要:阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。 这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当 队列满时,存储元素的线程会等待队列可用。 阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消 费者是从队列里拿元素的线程。阻塞队列就是生产 阅读全文
posted @ 2020-06-21 14:12 咔啡 阅读(173) 评论(0) 推荐(0)
摘要:1、Where 子句中:where 表之间的连接必须写在其他 Where 条件之前,那些可 以过滤掉最大数量记录的条件必须写在 Where 子句的末尾.HAVING 最后。 2、用 EXISTS 替代 IN、用 NOT EXISTS 替代 NOT IN。 3、 避免在索引列上使用计算 4、避免在索引 阅读全文
posted @ 2020-06-21 14:11 咔啡 阅读(152) 评论(0) 推荐(0)
摘要:Executor 框架是一个根据一组执行策略调用,调度,执行和控制的异步任务的框 架。 无限制的创建线程会引起应用程序内存溢出。所以创建一个线程池是个更好的的 解决方案,因为可以限制线程的数量并且可以回收再利用这些线程。利用 Executors 框架可以非常方便的创建一个线程池。 阅读全文
posted @ 2020-06-21 14:00 咔啡 阅读(170) 评论(0) 推荐(0)
摘要:Lock 接口比同步方法和同步块提供了更具扩展性的锁操作。 他们允许更灵活的结构,可以具有完全不同的性质,并且可以支持多个相关类的 条件对象。 它的优势有: 可以使锁更公平 可以使线程在等待锁的时候响应中断 可以让线程尝试获取锁,并在无法获取锁的时候立即返回或者等待一段时间 可以在不同的范围,以不同 阅读全文
posted @ 2020-06-21 13:57 咔啡 阅读(196) 评论(0) 推荐(0)
摘要:原子操作(atomic operation)意为”不可被中断的一个或一系列操作” 。 处理器使用基于对缓存加锁或总线加锁的方式来实现多处理器之间的原子操作。 在 Java 中可以通过锁和循环 CAS 的方式来实现原子操作。 CAS 操作—— Compare & Set,或是 Compare & Sw 阅读全文
posted @ 2020-06-21 13:50 咔啡 阅读(283) 评论(0) 推荐(0)
摘要:在 Java 发展史上曾经使用 suspend()、resume()方法对于线程进行阻塞唤醒,但 随之出现很多问题,比较典型的还是死锁问题。 解决方案可以使用以对象为目标的阻塞,即利用 Object 类的 wait()和 notify()方 法实现线程阻塞。 首先,wait、notify 方法是针对 阅读全文
posted @ 2020-06-21 13:48 咔啡 阅读(792) 评论(0) 推荐(0)
摘要:新建状态(New) 用 new 语句创建的线程处于新建状态,此时它和其他 Java 对象一样,仅仅在堆区 中被分配了内存。 就绪状态(Runnable) 当一个线程对象创建后,其他线程调用它的 start()方法,该线程就进入就绪状态, Java 虚拟机会为它创建方法调用栈和程序计数器。处于这个状态 阅读全文
posted @ 2020-06-21 13:43 咔啡 阅读(488) 评论(0) 推荐(0)
摘要:当多个进程都企图对共享数据进行某种处理,而最后的结果又取决于进程运行的 顺序时,则我们认为这发生了竞争条件(race condition)。 阅读全文
posted @ 2020-06-21 13:41 咔啡 阅读(1435) 评论(0) 推荐(0)
摘要:使用 jstack 找出消耗 CPU 最多的线程代码 阅读全文
posted @ 2020-06-21 13:40 咔啡 阅读(1069) 评论(0) 推荐(0)
摘要:为什么要使用 Executor 线程池框架 1、每次执行任务创建线程 new Thread()比较消耗性能,创建一个线程是比较耗 时、耗资源的。 2、调用 new Thread()创建的线程缺乏管理,被称为野线程,而且可以无限制的 创建,线程之间的相互竞争会导致过多占用系统资源而导致系统瘫痪,还有线 阅读全文
posted @ 2020-06-21 13:38 咔啡 阅读(162) 评论(0) 推荐(0)
摘要:线程组和线程池是两个不同的概念,他们的作用完全不同,前者是为了方便线程的管理,后者是为了管理线程的生命周期,复用线程,减少创建销毁线程的开销。 阅读全文
posted @ 2020-06-21 13:37 咔啡 阅读(165) 评论(0) 推荐(0)
摘要:计算机通常只有一个 CPU,在任意时刻只能执行一条机器指令,每个线程只有获得 CPU 的使用权才能执行指令.所谓多线程的并发运行,其实是指从宏观上看,各个线 程轮流获得 CPU 的使用权,分别执行各自的任务.在运行池中,会有多个处于就绪状 态的线程在等待 CPU,JAVA 虚拟机的一项任务就是负责线 阅读全文
posted @ 2020-06-21 13:33 咔啡 阅读(368) 评论(0) 推荐(0)
摘要:CyclicBarrier 可以重复使用,而 CountdownLatch 不能重复使用。 Java 的 concurrent 包里面的 CountDownLatch 其实可以把它看作一个计数器, 只不过这个计数器的操作是原子操作,同时只能有一个线程去操作这个计数器, 也就是同时只能有一个线程去减这 阅读全文
posted @ 2020-06-21 13:32 咔啡 阅读(126) 评论(0) 推荐(0)
摘要:在上下文切换过程中,CPU 会停止处理当前运行的程序,并保存当前程序运行的 具体位置以便之后继续运行。从这个角度来看,上下文切换有点像我们同时阅读 几本书,在来回切换书本的同时我们需要记住每本书当前读到的页码。在程序中, 上下文切换过程中的“页码”信息是保存在进程控制块(PCB)中的。PCB 还经 阅读全文
posted @ 2020-06-21 13:28 咔啡 阅读(498) 评论(0) 推荐(0)
摘要:不可变对象(Immutable Objects)即对象一旦被创建它的状态(对象的数据,也即 对象属性值)就不能改变,反之即为可变对象(Mutable Objects)。 不可变对象的类即为不可变类(Immutable Class)。Java 平台类库中包含许多不可 变类,如 String、基本类型的 阅读全文
posted @ 2020-06-21 13:27 咔啡 阅读(185) 评论(0) 推荐(0)
摘要:举例来说明锁的可重入性 public class UnReentrant{ Lock lock = new Lock(); public void outer(){ lock.lock(); inner(); lock.unlock(); } public void inner(){ lock.lo 阅读全文
posted @ 2020-06-21 13:25 咔啡 阅读(2946) 评论(0) 推荐(0)
摘要:中断和共享变量 阅读全文
posted @ 2020-06-21 13:23 咔啡 阅读(161) 评论(0) 推荐(0)
摘要:所谓后台(daemon)线程,是指在程序运行的时候在后台提供一种通用服务的线 程,并且这个线程并不属于程序中不可或缺的部分。因此,当所有的非后台线程 结束时,程序也就终止了,同时会杀死进程中的所有后台线程。反过来说, 只要有任何非后台线程还在运行,程序就不会终止。必须在线程启动之前调用 setDae 阅读全文
posted @ 2020-06-21 13:22 咔啡 阅读(784) 评论(0) 推荐(0)
摘要:当一个线程进入 wait 之后,就必须等其他线程 notify/notifyall,使用 notifyall,可 以唤醒所有处于 wait 状态的线程,使其重新进入锁的争夺队列中,而 notify 只能 唤醒一个。 如果没把握,建议 notifyAll,防止 notigy 因为信号丢失而造成程序异常 阅读全文
posted @ 2020-06-21 12:58 咔啡 阅读(211) 评论(0) 推荐(0)
摘要:使用共享变量的方式 在这种方式中,之所以引入共享变量,是因为该变量可以被多个执行相同任务的 线程用来作为是否中断的信号,通知中断线程的执行。 使用 interrupt 方法终止线程 如果一个线程由于等待某些事件的发生而被阻塞,又该怎样停止该线程呢?这种 情况经常会发生,比如当一个线程由于需要等候键盘 阅读全文
posted @ 2020-06-21 12:56 咔啡 阅读(451) 评论(0) 推荐(0)
摘要:继承 Thread 类 实现 Runnable 接口 实现 Callable 接口,需要实现的是 call() 方法 阅读全文
posted @ 2020-06-21 12:53 咔啡 阅读(442) 评论(0) 推荐(0)
摘要:线程安全是编程中的术语,指某个函数、函数库在多线程环境中被调用时,能够 正确地处理多个线程之间的共享变量,使程序功能正确完成。 Servlet 不是线程安全的,servlet 是单实例多线程的,当多个线程同时访问同一个 方法,是不能保证共享变量的线程安全性的。 Struts2 的 action 是多 阅读全文
posted @ 2020-06-21 12:52 咔啡 阅读(563) 评论(0) 推荐(0)
摘要:SynchronizedMap 一次锁住整张表来保证线程安全,所以每次只能有一个线程来 访为 map。 ConcurrentHashMap 使用分段锁来保证在多线程下的性能。 ConcurrentHashMap 中则是一次锁住一个桶。ConcurrentHashMap 默认将 hash 表分为 16 阅读全文
posted @ 2020-06-21 12:50 咔啡 阅读(218) 评论(0) 推荐(0)
摘要:CopyOnWriteArrayList(免锁容器)的好处之一是当多个迭代器同时遍历和修改这 个列表时,不会抛出 ConcurrentModificationException。在 CopyOnWriteArrayList 中,写入将导致创建整个底层数组的副本,而源数组将保 留在原地,使得复制的数组 阅读全文
posted @ 2020-06-21 12:49 咔啡 阅读(688) 评论(0) 推荐(0)
摘要:悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每 次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。传 统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写 锁等,都是在做操作之前先上锁。再比如 Java 里面的同步原语 synchroniz 阅读全文
posted @ 2020-06-21 12:47 咔啡 阅读(235) 评论(0) 推荐(0)