lotus

贵有恒何必三更眠五更起 最无益只怕一日曝十日寒

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  1846 随笔 :: 0 文章 :: 109 评论 :: 288万 阅读

05 2019 档案

摘要:我们经常会遇见“MySQL:ERROR1040:Toomanyconnections”的情况,一种是访问量确实很高,MySQL服务器抗不住,这个时候就要考虑增加从服务器分散读写压力,另外一种情况是MySQL配置文件中max_connections值过小。 数据库连接池最小连接数和最大连接数: 最小连 阅读全文
posted @ 2019-05-29 00:19 白露~ 阅读(20124) 评论(0) 推荐(0) 编辑

摘要:一、什么是数据库连接池? 官方:数据库连接池(Connection pooling)是程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对池中的连接进行申请,使用,释放。个人理解:创建数据库连接是一个很耗时的操作,也容易对数据库造成安全隐患。所以,在程序初始化的时候,集中创建多 阅读全文
posted @ 2019-05-29 00:14 白露~ 阅读(748) 评论(0) 推荐(0) 编辑

摘要:https://blog.51cto.com/zhangfengzhe/2069971 前言 数据库连接池的基本思想是:为数据库连接建立一个“缓冲池”,预先在池中放入一定数量的数据库连接管道,需要时,从池子中取出管道进行使用,操作完毕后,在将管道放入池子中,从而避免了频繁的向数据库申请资源,释放资源 阅读全文
posted @ 2019-05-29 00:10 白露~ 阅读(277) 评论(0) 推荐(0) 编辑

摘要:分析一般从几个角度考虑: 1.任务的性质:CPU密集型的任务、IO密集型任务、混合型任务。 2.任务的优先级:高、中、低 3.任务执行时间:长、中、短 4.任务的依赖性:是否依赖其它系统资源,如数据库的连接等。 根据不同的任务可以交给不同规模的线程池执行。 如果是cpu密集型的,尽量减少线程数,如果 阅读全文
posted @ 2019-05-29 00:08 白露~ 阅读(3386) 评论(1) 推荐(3) 编辑

摘要:阿里一面 自我介绍 链表,数组的优缺点,应用场景,查找元素的复杂度 二叉树怎么实现的 Java中都有哪些锁 可重入锁的设计思路是什么 乐观锁和悲观锁 synchronized机制 hashmap原理,处理哈希冲突用的哪种方法(拉链) 还知道什么处理哈希冲突的方法(开放地址检测) 开放地址检测怎么实现 阅读全文
posted @ 2019-05-28 19:43 白露~ 阅读(508) 评论(0) 推荐(0) 编辑

摘要:写在前面 今天分享的是一位5年工作经验的Java工程师在帝都的面试经验总结,看看这些互联网公司都爱问些什么题,希望对大家的面试有指导意义。 从事Java开发也有5年经验了,4月初自己的开启面试经历之旅,前后20天左右,主面互联网公司,一二线大公司或者是融资中的创业公司都面试过,拿了一些offer,其 阅读全文
posted @ 2019-05-28 19:40 白露~ 阅读(2824) 评论(0) 推荐(1) 编辑

摘要:分布式架构下,session共享有什么方案么? 会点代码的大叔 科技领域创作者 分布式架构下,session共享有什么方案么? 会点代码的大叔 科技领域创作者 分布式架构下的session共享,也可以称作分布式session一致性;关于这个问题,和大家说一说解决方案(如果有其他的方案,可以留言讨论) 阅读全文
posted @ 2019-05-28 19:38 白露~ 阅读(1524) 评论(0) 推荐(0) 编辑

摘要:NIO的由来 我们都知道,在jdk1.4的时候就开始引入NIO了,它是基于Selector机制的非阻塞I/O,可以将多个异步的I/O操作集中到一个或几个线程中进行处理,目的就是为了代替阻塞I/O,提到系统的并发吞吐量,以提升性能。 什么场景下使用NIO 当客户端的数据传递不是连续的,而是断断续续的, 阅读全文
posted @ 2019-05-28 19:36 白露~ 阅读(706) 评论(0) 推荐(0) 编辑

摘要:一、EXPLAIN 做MySQL优化,我们要善用 EXPLAIN 查看SQL执行计划。 下面来个简单的示例,标注(1,2,3,4,5)我们要重点关注的数据 type列,连接类型。一个好的sql语句至少要达到range级别。杜绝出现all级别 key列,使用到的索引名。如果没有选择索引,值是NULL。 阅读全文
posted @ 2019-05-28 19:34 白露~ 阅读(284) 评论(0) 推荐(0) 编辑

摘要:我在做面试官的时候,曾经问过很多朋友这个问题: Cookie 和 Session 有什么区别呢?大部分的面试者应该都可以说上一两句,比如:什么是 Cookie?什么是 Session?两者的区别等。 但如果再往深入探讨的话,就慢慢有一些朋友不太了解了,谈起原理时就很少有朋友全部回答准确。今天和大家一 阅读全文
posted @ 2019-05-28 19:32 白露~ 阅读(478) 评论(0) 推荐(0) 编辑

摘要:cookie session token 负载均衡 jwt cookie session token 负载均衡 jwt cookie session token 负载均衡 jwt cookie session token 负载均衡 jwt cookie session token 负载均衡 jwt 阅读全文
posted @ 2019-05-28 19:25 白露~ 阅读(767) 评论(0) 推荐(0) 编辑

摘要:这些都是基础知识,不过有必要做深入了解。先简单介绍一下。 二者的定义: 当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是一些选择,都纪录下来。当下次你再光临同一个网站,WEB 服务器会先看看有没有它上次留下的 Cookie 资料,有的话 阅读全文
posted @ 2019-05-28 18:50 白露~ 阅读(1659) 评论(0) 推荐(0) 编辑

摘要:URI,URL,URN 从上面的那幅图可以看出来,一共有三个不同的概念URI,URL,URN。这讨论这样的问题时,最好的方法就是回到原点啊,这里我们在RFC 3986: Uniform Resource Identifier (URI): Generic Syntax里面收集了点资料: “A Uni 阅读全文
posted @ 2019-05-28 17:54 白露~ 阅读(7348) 评论(0) 推荐(2) 编辑

摘要:TCP是面向连接的UDP是面向无连接的就是这种关系了 TCP(Transmission Control Protocol,传输控制协议)UDP(User Datagram Protocol,用户数据包协议)当IP包通过路由将数据传输到目的地时,会根据TCP或UDP包头中的源端口和目的端口信息,请求和 阅读全文
posted @ 2019-05-28 14:38 白露~ 阅读(2296) 评论(0) 推荐(0) 编辑

摘要:如题,在理解TCP和UDP中,一个是面向连接的传输协议,一个是不面向连接的协议。怎么能够更好的理解他们的不同。 亚当和夏娃分别生活在两个山头,山头之间是万丈深渊,亚当采集野果需要分享给夏娃,如果他们之间有一条索道(物理连接),野果可以顺着索道滑到夏娃那一边,那就没有车小胖什么事了。 事实上山头之间没 阅读全文
posted @ 2019-05-28 14:32 白露~ 阅读(1078) 评论(0) 推荐(0) 编辑

摘要:一、概念及作用 TCP会话的每一端都包含一个32位(bit)的序列号,该序列号被用来跟踪该端发送的数据量。每一个包中都包含序列号,在接收端则通过确认号用来通知发送端数据成功接收。 二、TCP三次握手 TCP标志位 TCP在其协议头中使用大量的标志位或者说1位(bit)布尔域来控制连接状态,一个包中有 阅读全文
posted @ 2019-05-28 13:42 白露~ 阅读(13316) 评论(0) 推荐(2) 编辑

摘要:一、单工 1、数据只在一个方向上传输,不能实现双方通信。 2、栗子:电视、广播。 二、半双工 1、允许数据在两个方向上传输,但是同一时间数据只能在一个方向上传输,其实际上是切换的单工。 2、栗子:对讲机。 三、全双工 1、允许数据在两个方向上同时传输。 2、栗子:手机通话。 四、示例图 欢迎关注微信 阅读全文
posted @ 2019-05-28 13:28 白露~ 阅读(4529) 评论(0) 推荐(0) 编辑

摘要:关于TCP/IP,必知必会的十个问题 本文整理了一些TCP/IP协议簇中需要必知必会的十大问题,既是面试高频问题,又是程序员必备基础素养。 TCP/IP十个问题 一、TCP/IP模型 TCP/IP协议模型(Transmission Control Protocol/Internet Protocol 阅读全文
posted @ 2019-05-28 13:26 白露~ 阅读(1662) 评论(0) 推荐(0) 编辑

摘要:转载。 https://blog.csdn.net/qzcsu/article/details/72861891 转载。 https://blog.csdn.net/qzcsu/article/details/72861891 转载。 https://blog.csdn.net/qzcsu/arti 阅读全文
posted @ 2019-05-28 12:52 白露~ 阅读(546) 评论(0) 推荐(0) 编辑

摘要:来源。 https://blog.csdn.net/jijianshuai/article/details/80582187 来源。 https://blog.csdn.net/jijianshuai/article/details/80582187 来源。 https://blog.csdn.ne 阅读全文
posted @ 2019-05-28 00:43 白露~ 阅读(15322) 评论(0) 推荐(1) 编辑

摘要:转载。 https://blog.csdn.net/SSY_1992/article/details/79094556 转载。 https://blog.csdn.net/SSY_1992/article/details/79094556 转载。 https://blog.csdn.net/SSY_ 阅读全文
posted @ 2019-05-28 00:15 白露~ 阅读(64223) 评论(3) 推荐(16) 编辑

摘要:通讯条件 我有两把锁和两把对应的钥匙: 私钥A、私锁B 公锁A、公钥B 私钥A可以开公锁A,公钥B可以开公锁B 公锁A和公钥B放到了门外,所有人都可以拿 私钥A和私锁B,我自己藏着不让人知道 你也有两把锁和两把对应的钥匙: 私钥C、私锁D 公锁C、公钥D 公锁C和公钥D放到了门外,所有人都可以拿 私 阅读全文
posted @ 2019-05-28 00:14 白露~ 阅读(764) 评论(1) 推荐(0) 编辑

摘要:非对称密钥加解密 对于一份数据,通过一种算法,基于传入的密钥(一串由数字或字符组成的字符串,也称key),将明文数据转换成了不可阅读的密文,这就是“加密”,同样的,密文到达目的地后,需要再以相应的算法,配合一个密钥,将密文再解密成明文,这就是“解密”。 如果加密和解密使用的是同一个密钥,那么这就 是 阅读全文
posted @ 2019-05-27 23:32 白露~ 阅读(1077) 评论(0) 推荐(0) 编辑

摘要:摘要:本文尝试一步步还原HTTPS的设计过程,以理解为什么HTTPS最终会是这副模样。但是这并不代表HTTPS的真实设计过程。在阅读本文时,你可以尝试放下已有的对HTTPS的理解,这样更利于“还原”过程。 我们先不了聊HTTP,HTTPS,我们先从一个聊天软件说起,我们要实现A能发一个hello消息 阅读全文
posted @ 2019-05-27 23:07 白露~ 阅读(521) 评论(0) 推荐(0) 编辑

摘要:现实生活中,我要给依依转1个比特币,我需要在比特币交易平台、比特币钱包或者比特币客户端里面,输入我的比特币钱包地址、依依的钱包地址、转出比特币的数量、手续费。然后,我们等十分钟左右,矿工处理完交易信息之后,这1个比特币就成功地转给依依了。 这个过程看似很简单也很便捷,跟我们现在的银行卡转账没什么区别 阅读全文
posted @ 2019-05-27 22:39 白露~ 阅读(576) 评论(0) 推荐(0) 编辑

摘要:美团,我是在拉勾网上投的简历,之前也投过一次,简历都没通过删选,后来让学姐帮我改了一下简历,重新投另一个部门,获得了面试机会。10月23日,中午HR打电话过来预约了下午4点半面试,说会在线写代码,让我准备好网络环境。结果5点半还没打电话过来,被放鸽子。与hr重新沟通过后,确定下周一下午再面,可是跟h 阅读全文
posted @ 2019-05-27 19:54 白露~ 阅读(628) 评论(0) 推荐(0) 编辑

摘要:http协议本身是无状态的,但是在实际的web开发中常有一些操作需要有状态.比如想要访问一些私人访问权限的文章,或者这种操作需要明确当前用户身份. 显然,最简单的方案就是每次都发送账户和密码,但是这样重复操作用用户并不友好,对服务器页增添了额外的压力.为了解决无状态带来的鉴权问题,一般有以下几种解决 阅读全文
posted @ 2019-05-27 19:51 白露~ 阅读(2954) 评论(0) 推荐(0) 编辑

摘要:1.网络编程时的同步、异步、阻塞、非阻塞? 同步:函数调用在没得到结果之前,没有调用结果,不返回任何结果。异步:函数调用在没得到结果之前,没有调用结果,返回状态信息。阻塞:函数调用在没得到结果之前,当前线程挂起。得到结果后才返回。非阻塞:函数调用在没得到结果之前,当前线程不会挂起,立即返回结果。 2 阅读全文
posted @ 2019-05-27 18:26 白露~ 阅读(411) 评论(0) 推荐(0) 编辑

摘要:转载。 https://blog.csdn.net/qq_39470733/article/details/84635274 转载。 https://blog.csdn.net/qq_39470733/article/details/84635274 转载。 https://blog.csdn.ne 阅读全文
posted @ 2019-05-27 18:24 白露~ 阅读(401) 评论(0) 推荐(0) 编辑

摘要:1、tcp和udp的区别 1 2、tcp连接建立的时候3次握手,断开连接的4次握手的具体过程 1 3、什么是同步?什么是异步? 2 4、.什么是阻塞?什么是非阻塞? 5 5、什么是阻塞IO?什么是非阻塞IO? 6 6、什么是同步IO?什么是异步IO? 7 7、 IO模型有几种?分别是什么? 8 8、 阅读全文
posted @ 2019-05-27 18:09 白露~ 阅读(1779) 评论(0) 推荐(0) 编辑

摘要:--喜欢记得关注我哟【shoshana】-- 中国有很多古代警世名言,朗朗上口,凝聚了很多故事与哲理。硅谷的互联网公司里头也有一些这样的名言,凝聚了很多公司价值观和做事的方法,对于很多程序员来说,其影响潜移默化。这里收集了一些,如下。 Stay hungry Stay foolish 乔帮主在200 阅读全文
posted @ 2019-05-24 18:59 白露~ 阅读(402) 评论(0) 推荐(0) 编辑

摘要:112 阅读全文
posted @ 2019-05-24 16:22 白露~ 阅读(318) 评论(0) 推荐(0) 编辑

摘要:--喜欢记得关注我哟【shoshana】-- 前记: 5月12号参加了JAVA开发者大会,就<拍拍贷消息系统原理及应用> 作者:李乘胜老师 关于PMQ的分享整理一下笔记以及笔记的思考 和复制PPT。如有需要也可以私我PPT。 拍拍贷消息系统:以下简称PMQ, PS,据说下半年PMQ会提交APACHE 阅读全文
posted @ 2019-05-24 00:04 白露~ 阅读(881) 评论(1) 推荐(0) 编辑

摘要:58沈剑 https://mp.weixin.qq.com/s?__biz=MjM5ODYxMDA5OQ==&mid=2651960002&idx=1&sn=c0775231bccf002c3178eabe43f1cdcb&chksm=bd2d071e8a5a8e08c3a5287247ea41de 阅读全文
posted @ 2019-05-23 23:00 白露~ 阅读(321) 评论(0) 推荐(0) 编辑

摘要:一、MQ消息发送 1、发送端MQ-client(消息生产者:Producer)将消息发送给MQ-server; 2、MQ-server将消息落地; 3、MQ-server回ACK给MQ-client(Producer); 4、MQ-server将消息发送给消息接受端MQ-client(消息消费者:C 阅读全文
posted @ 2019-05-23 22:27 白露~ 阅读(1421) 评论(0) 推荐(0) 编辑

摘要:RabbitMQ 幂等性概念及业界主流解决方案 2019年01月24日 15:57:03 JAVA@架构 阅读数:506 RabbitMQ 幂等性概念及业界主流解决方案 2019年01月24日 15:57:03 JAVA@架构 阅读数:506 RabbitMQ 幂等性概念及业界主流解决方案 Rabb 阅读全文
posted @ 2019-05-23 22:26 白露~ 阅读(1228) 评论(0) 推荐(0) 编辑

摘要:对服务器程序来说,究竟是有状态服务,还是无状态服务,其判断依旧——两个来自相同发起者的请求在服务器端是否具备上下文关系。 状态化请求,服务器端一般都要保存请求的相关信息,每个请求可以默认地使用以前的请求信息。 无状态请求,服务器端所能够处理的过程必须全部来自于请求所携带的信息,以及其他服务器端自身所 阅读全文
posted @ 2019-05-23 21:01 白露~ 阅读(969) 评论(1) 推荐(0) 编辑

摘要:目前主流的跨语言异构模块通信方案有很多种,比如: 1、跨语言的RPC调用(Apache Thrift):它是Facebook贡献给Apache基金会的开源项目,旨在构建跨语言平台的通信方案。目前它支持非常多种语言,其中当然包括C/C++和Java。Thrift内置一个语言编译器,可以根据Thrift 阅读全文
posted @ 2019-05-23 20:58 白露~ 阅读(778) 评论(0) 推荐(0) 编辑

摘要:常用的跨语言通信方案: 基于SOAP消息格式的WebService 基于JSON消息格式的RESTful 服务 以上两种方案的弊端: XML体积太大,解析性能极差 JSON体积相对较小,解析相对较快,但表达能力较弱 现在比较流行的跨语言通信方案: Google protobuf (http://co 阅读全文
posted @ 2019-05-23 20:56 白露~ 阅读(1287) 评论(0) 推荐(0) 编辑

摘要:1. JNA简单介绍 先说JNI(Java Native Interface)吧,有过不同语言间通信经历的一般都知道,它允许Java代码和其他语言(尤其C/C++)写的代码进行交互,只要遵守调用约定即可。首先看下JNI调用C/C++的过程,注意写程序时自下而上,调用时自上而下。 可 见步骤非常的多, 阅读全文
posted @ 2019-05-23 20:55 白露~ 阅读(1739) 评论(0) 推荐(0) 编辑

摘要:转载。 https://blog.csdn.net/mr253727942/article/details/55805876 1.序言 今天来和大家探讨一下RocketMQ在消息存储方面所作出的努力,在介绍RocketMQ的存储模型之前,可以先探讨一下MQ的存储模型选择。 2.MQ的存储模型选择 个 阅读全文
posted @ 2019-05-23 20:35 白露~ 阅读(425) 评论(0) 推荐(0) 编辑

摘要:转载。 https://blog.csdn.net/zhoumingp/article/details/52267575 作为Java 搬砖人员,免不了要接触线程与线程池,今天就来聊聊线程与JDK里的线程池 进入今天内容前,我们先思考下这么个问题:线程池里的线程是如何维持生命,不被GC掉? what 阅读全文
posted @ 2019-05-23 20:16 白露~ 阅读(216) 评论(0) 推荐(0) 编辑

摘要:转载。 https://blog.csdn.net/zhoumingp/article/details/50457203 转载。 https://blog.csdn.net/zhoumingp/article/details/50457203 转载。 https://blog.csdn.net/zh 阅读全文
posted @ 2019-05-23 20:14 白露~ 阅读(655) 评论(0) 推荐(0) 编辑

摘要:--喜欢记得关注我哟【shoshana】-- 目录 1.朴素的模式匹配算法2.KMP模式匹配算法 2.1 KMP模式匹配算法的主体思路 2.2 next[]的定义与求解 2.3 KMP完整代码 2.4 一道题目3.KMP模式匹配算法改进 4.朴素算法和KMP算法的时间复杂度分析 5.KMP算法nex 阅读全文
posted @ 2019-05-23 16:38 白露~ 阅读(1032) 评论(0) 推荐(0) 编辑

摘要:https://blog.csdn.net/starstar1992/article/details/54913261 https://blog.csdn.net/starstar1992/article/details/54913261 https://blog.csdn.net/starstar 阅读全文
posted @ 2019-05-23 15:13 白露~ 阅读(573) 评论(0) 推荐(0) 编辑

摘要:IO多路复用:I/O是指网络I/O,多路指多个TCP连接(即socket或者channel),复用指复用一个或几个线程。意思说一个或一组线程处理多个TCP连接。最大优势是减少系统开销小,不必创建过多的进程/线程,也不必维护这些进程/线程。 IO多路复用使用两个系统调用(select/poll/epo 阅读全文
posted @ 2019-05-20 01:30 白露~ 阅读(647) 评论(0) 推荐(0) 编辑

摘要:1、Eureka 简介: Eureka 是 Netflix 出品的用于实现服务注册和发现的工具。 Spring Cloud 集成了 Eureka,并提供了开箱即用的支持。其中, Eureka 又可细分为 Eureka Server 和 Eureka Client。 1.基本原理 上图是来自eurek 阅读全文
posted @ 2019-05-19 20:58 白露~ 阅读(340) 评论(0) 推荐(0) 编辑

摘要:前言 前言 前言 前言 前言 前言 前言 分布式系统中经常会出现某个基础服务不可用造成整个系统不可用的情况, 这种现象被称为服务雪崩效应. 为了应对服务雪崩, 一种常见的做法是手动服务降级. 而Hystrix的出现,给我们提供了另一种选择. 服务雪崩效应的定义 服务雪崩效应是一种因 服务提供者 的不 阅读全文
posted @ 2019-05-19 20:50 白露~ 阅读(419) 评论(0) 推荐(0) 编辑

摘要:Netflix的 Hystrix 是一个帮助解决分布式系统交互时超时处理和容错的类库, 它同样拥有保护系统的能力. Hystrix的设计原则包括:资源隔离、熔断器、命令模式。 资源隔离 货船为了进行防止漏水和火灾的扩散,会将货仓分隔为多个,这种资源隔离减少风险的方式被称为:Bulkheads(舱壁隔 阅读全文
posted @ 2019-05-19 20:46 白露~ 阅读(467) 评论(0) 推荐(0) 编辑

摘要:APM,应用性能监控,有new relic等产品,对APM感兴趣的应该不会不知道它了。主要功能就是统计分析应用的CPU、内存、网络、数据库、UI等性能,并提供错误日志捕获。编码人员需要做的仅仅是使用它提供的插件和jar包,增加一两行代码即可。接下来,本文会以android端的APM为例,分析它到底是 阅读全文
posted @ 2019-05-19 20:19 白露~ 阅读(933) 评论(0) 推荐(0) 编辑

摘要:候选APM naver/pinpoint(github上2148个star) 韩国的一个公司开源的,有待评估使用情况,就是整体还不是JDK8,有些还是有点费劲,技术上采用agent的方式,对java友好 大众点评cat(github上1725个star) 看接入的公司还是挺多的,个人感觉是点评名气还 阅读全文
posted @ 2019-05-19 19:12 白露~ 阅读(2505) 评论(0) 推荐(0) 编辑

摘要:什么是真正的APM? 近年来APM行业被越来越多的企业所关注,尤其是在2014年末,NewRelic的成功上市,更加激发了人们对这个行业前景的无限遐想。那么究竟什么是APM?APM的目的是什么?要求我们做什么?有不少企业对APM的理解其实是有偏差的,本文将向您阐述一个真正完整的APM概念。 APM 阅读全文
posted @ 2019-05-19 19:08 白露~ 阅读(2564) 评论(0) 推荐(0) 编辑

摘要:本篇文章解决以下问题: [1] . Spring循环依赖指的是什么? [2] . Spring能解决哪种情况的循环依赖?不能解决哪种情况? [3] . Spring能解决的循环依赖原理(三级缓存) 一、Spring 循环依赖可能出现的三种方式 第一种:构造器参数循环依赖 第二种:setter方式单例 阅读全文
posted @ 2019-05-19 18:15 白露~ 阅读(12184) 评论(0) 推荐(0) 编辑

摘要:所以这篇文章,就用大白话+手工绘图,并结合一个电商系统的案例实践,来给大家讲清楚到底什么是 TCC 分布式事务。 首先说一下,这里可能会牵扯到一些 Spring Cloud 的原理,如果有不太清楚的同学,可以参考之前的文章:《拜托,面试请不要再问我Spring Cloud底层原理!》。 业务场景介绍 阅读全文
posted @ 2019-05-19 17:38 白露~ 阅读(1492) 评论(0) 推荐(0) 编辑

摘要:数据同步需要依赖锁,那锁的同步又依赖谁?synchronized给出的答案是在软件层面依赖JVM,而Lock给出的方案是在硬件层面依赖特殊的CPU指令,大家可能会进一步追问:JVM底层又是如何实现synchronized的? 本文所指说的JVM是指Hotspot的6u23版本,下面首先介绍synch 阅读全文
posted @ 2019-05-16 19:35 白露~ 阅读(793) 评论(0) 推荐(0) 编辑

摘要:一、Java中synchronized关键字的作用 总所周知,在并发环境中多个线程对同一个资源进行访问很可能出现脏读等一系列线程安全问题。这时我们可以用加锁的方式对访问共享资源的代码块进行加锁,以确保同一时间段内只能有一个线对资源进行访问,在它释放锁之前其他竞争锁的线程只能等待。而synchroni 阅读全文
posted @ 2019-05-16 19:33 白露~ 阅读(3941) 评论(0) 推荐(0) 编辑

摘要:距离上一次写Spring源码解析,已经过去了快要好几个月了,主要原因还是Spring的源码解析类文章太难写了,不像我先前写的什么CAS源码,AQS源码,LinkedBlockingQueue等等,这些无非就是分析几个核心方法,代码也不算太长,就像比较复杂的AQS源码也是两篇搞定的,虽然AQS源码也很 阅读全文
posted @ 2019-05-16 18:24 白露~ 阅读(458) 评论(0) 推荐(0) 编辑

摘要:转载。 https://blog.csdn.net/fly910905/article/details/79765381 同步代码块,同步方法,或者是用java提供的锁机制,我们可以实现对共享资源变量的同步控制。 技术点: 1、线程与进程: 在开始之前先把进程与线程进行区分一下,一个程序最少需要一个 阅读全文
posted @ 2019-05-16 18:11 白露~ 阅读(2364) 评论(1) 推荐(0) 编辑

摘要:多次思考过这个问题,都没有形成理论,今天有时间了,我把他总结出来,希望对大家有所帮助 1、ReentrantLock 拥有Synchronized相同的并发性和内存语义,此外还多了 锁投票,定时锁等候和中断锁等候 线程A和B都要获取对象O的锁定,假设A获取了对象O锁,B将等待A释放对O的锁定, 如果 阅读全文
posted @ 2019-05-16 18:07 白露~ 阅读(697) 评论(0) 推荐(0) 编辑

摘要:转载。 https://blog.csdn.net/wu1226419614/article/details/73740899 转载。 https://blog.csdn.net/wu1226419614/article/details/73740899 转载。 https://blog.csdn. 阅读全文
posted @ 2019-05-16 18:00 白露~ 阅读(1219) 评论(0) 推荐(0) 编辑

摘要:区别如下: 1. lock是一个接口,而synchronized是java的一个关键字,synchronized是内置的语言实现;(具体实现上的区别在《Java虚拟机》中有讲解底层的CAS不同,以前有读过现在又遗忘了。) 2. synchronized在发生异常时候会自动释放占有的锁,因此不会出现死 阅读全文
posted @ 2019-05-16 17:58 白露~ 阅读(302) 评论(0) 推荐(0) 编辑

摘要:转载。 https://blog.csdn.net/asdf717/article/details/47252763 转载。 https://blog.csdn.net/asdf717/article/details/47252763 转载。 https://blog.csdn.net/asdf71 阅读全文
posted @ 2019-05-16 17:55 白露~ 阅读(786) 评论(0) 推荐(0) 编辑

摘要:在不了解埋点系统的情况下,花了五六个小时 帮一位PM朋友做的方案。记录下来。以备后续参考 Mf178-用户注册功能-埋点敏捷方案 版本号 时间 撰写人 描述 V1.0 20190515-10:50:00 冰灵 初稿 V2.0 20190515-14:10:00 冰灵 与架构师WB进行沟通讨论了1.5 阅读全文
posted @ 2019-05-16 17:39 白露~ 阅读(785) 评论(0) 推荐(0) 编辑

摘要:转自:https://blog.csdn.net/m0_37700275/article/details/83151850 目录介绍1.Synchronize和ReentrantLock区别 1.1 相似点 1.2 区别 1.3 什么是线程安全问题?如何理解 1.4 线程安全需要保证几个基本特性 2 阅读全文
posted @ 2019-05-16 17:35 白露~ 阅读(982) 评论(0) 推荐(0) 编辑

摘要:转载:http://houlinyan.iteye.com/blog/1112535 基本概念 1、ReentrantLock 拥有Synchronized相同的并发性和内存语义,此外还多了 锁投票,定时锁等候和中断锁等候 线程A和B都要获取对象O的锁定,假设A获取了对象O锁,B将等待A释放对O的锁 阅读全文
posted @ 2019-05-16 17:35 白露~ 阅读(3678) 评论(0) 推荐(0) 编辑

摘要:一、为什么需要前端监控 前端监控的目的是: 获取用户行为以及跟踪产品在用户端的使用情况,并以监控数据为基础,指明产品优化的方向 前端监控可以分为三类:数据监控、性能监控和异常监控。下面我们来一一的了解。 (1)数据监控 数据监控,顾名思义就是监听用户的行为。常见的数据监控包括: PV/UV:PV(p 阅读全文
posted @ 2019-05-15 09:39 白露~ 阅读(1067) 评论(0) 推荐(0) 编辑

摘要:数据结构分类: 列表 型 1.数组 2.链表 3.队列 4.栈 数组【详解】 开辟一片连续的空间,将元素依次放入其中; 数组的好处:可以进行随机访问,只需要一个下标就可以访问到该元素;但插入和删除会比较耗费时间,插入和删除操作都需要将之后的元素进行整体的移动,腾出空间来进行对应的操作。 链表【详解】 阅读全文
posted @ 2019-05-10 00:12 白露~ 阅读(316) 评论(0) 推荐(0) 编辑

摘要:public final int getAndIncrement() { for (;;) { int current = get(); // 取得AtomicInteger里存储的数值 int next = current + 1; // 加1 if (compareAndSet(current, 阅读全文
posted @ 2019-05-08 22:56 白露~ 阅读(2098) 评论(0) 推荐(0) 编辑

摘要:前记 在看JUC中并发相关的源码时经常看到AQS的身影,这到底是个什么鬼?必须要一探究竟。 一. AQS背景了解 JUC包中的锁,包括: Lock接口,ReadWriteLock接口,LockSupport阻塞原语,Condition条件, AbstractOwnableSynchronizer/A 阅读全文
posted @ 2019-05-08 22:22 白露~ 阅读(2255) 评论(0) 推荐(0) 编辑

摘要:PS: 在Java新版本开发的过程中,曾经传出Oracle要移除掉Unsafe类,引起了很大的恐慌,但在Java9发布时,发现jdk.internal.misc包路径出现了Unsafe类,不仅开放使用而且还增加了大量的注释方便理解,说明Java在开源的道路上依然在前进。 对于getXXVolatil 阅读全文
posted @ 2019-05-08 20:33 白露~ 阅读(437) 评论(0) 推荐(0) 编辑

摘要:废话 个人理解:java 出现的原因之一,就是对内存的管理;在c/c++,内存可以随心使用,超高的性能也伴有极高的风险;java极大的规避了这种风险,却也降低了程序运行的性能;那么java是否提供直接操作内存的方法呢?当然:Unsafe 类就是java提供的,对系统硬件级别的底层操作; 1,Unsa 阅读全文
posted @ 2019-05-08 20:32 白露~ 阅读(557) 评论(0) 推荐(0) 编辑

摘要:前提 参考资料: Java魔法类:sun.misc.Unsafe 在openjdk8下看Unsafe源码 Unsafe介绍 在Oracle的Jdk8无法获取到sun.misc包的源码,想看此包的源码可以直接下载openjdk,包的路径是: openjdk-8u40-src-b25-10_feb_20 阅读全文
posted @ 2019-05-08 20:28 白露~ 阅读(380) 评论(0) 推荐(0) 编辑

摘要:https://www.jianshu.com/p/2e5b92d0962e 1. Unsafe 类 Java 不能直接访问操作系统底层,而是通过本地方法来访问。Unsafe 类提供了硬件级别的原子操作。 Unsafe 类在 sun.misc 包下,不属于 Java 标准。很多 Java 的基础类库 阅读全文
posted @ 2019-05-08 20:25 白露~ 阅读(448) 评论(0) 推荐(0) 编辑

摘要:版权声明:本文为博主原创文章,转载请注明出处 https://blog.csdn.net/u010862794/article/details/72892300 说起JAVA并发编程,就不得不聊聊CAS(Compare And Swap)和AQS了(AbstractQueuedSynchronize 阅读全文
posted @ 2019-05-08 20:14 白露~ 阅读(473) 评论(0) 推荐(0) 编辑

摘要:关于AQS的一点总结 2017年03月13日 09:48:13 那只是一股逆流 阅读数:772 关于AQS的一点总结 2017年03月13日 09:48:13 那只是一股逆流 阅读数:772 关于AQS的一点总结 关于AQS的一点总结 2017年03月13日 09:48:13 那只是一股逆流 阅读数 阅读全文
posted @ 2019-05-08 20:08 白露~ 阅读(466) 评论(0) 推荐(0) 编辑

摘要:转载。 https://blog.csdn.net/zhangdong2012/article/details/79983404 转载。 https://blog.csdn.net/zhangdong2012/article/details/79983404 转载。 https://blog.csd 阅读全文
posted @ 2019-05-08 20:02 白露~ 阅读(635) 评论(0) 推荐(0) 编辑

摘要:AQS工作原理分析 一、大致介绍1、前面章节讲解了一下CAS,简单讲就是cmpxchg+lock的原子操作;2、而在谈到并发操作里面,我们不得不谈到AQS,JDK的源码里面好多并发的类都是通过Sync的内部类继承AQS而实现出五花八门的功能;3、本章节就和大家分享分析一下AQS的工作原理; 二、简单 阅读全文
posted @ 2019-05-08 19:58 白露~ 阅读(4414) 评论(1) 推荐(0) 编辑

摘要:一、概述 谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)! 类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLo 阅读全文
posted @ 2019-05-08 19:12 白露~ 阅读(426) 评论(0) 推荐(2) 编辑

摘要:--喜欢记得关注我哟【shoshana】--​ 前记 JUC中的Lock中最核心的类AQS,其中AQS使用到了CLH队列的变种,故来研究一下CLH队列的原理及JAVA实现 一. CLH背景知识 SMP(Symmetric Multi-Processor)。即对称多处理器结构,指server中多个CP 阅读全文
posted @ 2019-05-08 14:07 白露~ 阅读(4414) 评论(0) 推荐(2) 编辑

摘要:Java凝视Annotation 从JDK 5開始,Java添加了对元数据(MetaData)的支持,也就是Annotation(凝视)。Annotation提供了一种为程序元素设置元数据的方法。程序元素包含修饰包、类、构造器、方法、成员变量、參数、局部变量。从某些方面来看,Annotation就想 阅读全文
posted @ 2019-05-08 13:14 白露~ 阅读(358) 评论(0) 推荐(0) 编辑

摘要:这篇文章,是对我自己常用阅读源码的习惯的总结。 (零):先做备份 当拿到一份源代码,不管是工作上临时接手的项目还是平时在网站上down下来的demo,如果想要完全看懂,往往需要做一些改动,有时候改动的比较多就会忘了原来的代码是什么样的,因此我建议,得到一份新的源代码后首先应该进行备份。 (一):编译 阅读全文
posted @ 2019-05-08 12:19 白露~ 阅读(3234) 评论(0) 推荐(0) 编辑

摘要:1、腾讯IMWEB负责人说: 首先,搞清楚自己要读懂他们的原因和动机。其次,可以先看下这些优秀框架或者库的设计文档和架构图,这样会让你宏观上对一些概念有些认识。 然后,从你最感兴趣的一个点,开始设置断点,跟进去看发生了哪些事情。 和架构设计哪一块是match的。 有人补充:最快,最易懂方法。断点单步 阅读全文
posted @ 2019-05-08 12:17 白露~ 阅读(4147) 评论(0) 推荐(0) 编辑

摘要:就我自己阅读安卓源代码的经验,本人研究过 settings,launcher,Sysupdate ,framework /services ,recovery的部分源代码。而且成功改动google留下来的bug. 假设就是熟悉代码,不带问题的去看。看的会比較累。可是仍然是有方法能够借鉴的,事实上这种 阅读全文
posted @ 2019-05-08 12:17 白露~ 阅读(733) 评论(0) 推荐(0) 编辑

摘要:一个软件开发人员,工作到了一定的年限(一般是3、4年左右),如果他还没学会阅读源码,那么他就会遇到瓶颈。因为到了这个时候的开发,他应该不仅仅只会做那些 CURD 的业务逻辑,而应该会根据公司的实际情况去写框架。 而基本上没有谁能像天才一样从零写出一个框架,很多人写框架其实都是从模仿开始的。而你要模仿 阅读全文
posted @ 2019-05-08 12:09 白露~ 阅读(369) 评论(0) 推荐(0) 编辑

摘要:说在前面 本人水平有限,下面的一些都是本人的思考与理解,如果有那里不对,希望各位大佬积极指出,欢迎在留言区进行评论交流、探讨。 主题 为什么要读源码 读什么样的源码 有什么技巧 思考、交流 坚持 为什么要源码 说到读源码,让我想起来了读书,古语有云:“读破万卷书,下笔如有神”。 多读读大师的想法技巧 阅读全文
posted @ 2019-05-08 12:09 白露~ 阅读(530) 评论(0) 推荐(0) 编辑

摘要:一、前言 日常交流过程中,经常会被问到为何要阅读源码和如何阅读源码的问题,本文从作者的角度来写下对这两个问题的理解,希望大家共同探讨,共同进步。 本文内容: 为何要阅读源码,阅读源码能给我们带来什么? 如何阅读源码,阅读源码有什么技巧? 为何要阅读源码,阅读源码能给我们带来什么? 如何阅读源码,阅读 阅读全文
posted @ 2019-05-08 12:07 白露~ 阅读(642) 评论(0) 推荐(0) 编辑

摘要:“作为一名程序员,BAT肯定是大多数人都想进的,仿佛是一种情愫,就像学生时代的我们对清华北大的向往感觉一样。Dubbo团队中,其中主要负责人就是梁飞了,梁飞的经历还是蛮励志的。梁飞,花名虚极, 2006年,梁飞毕业于湖南科技职院软件学院,来到广州大展集团。大展集团是一家全球领先的软件和IT外包供应商 阅读全文
posted @ 2019-05-07 11:14 白露~ 阅读(2486) 评论(0) 推荐(1) 编辑

摘要:本文翻译自:http://www.programcreek.com/2013/04/why-string-is-immutable-in-java/ 这是一个很老但很流行的问题,这里有几个原因String在java中被设计成immutable的。对内存、同步、数据结构等有好的理解,能更好的回答这个问 阅读全文
posted @ 2019-05-06 23:07 白露~ 阅读(498) 评论(0) 推荐(0) 编辑

摘要:一、简单定义不可变对象(Immutable Objects)即对象一旦被创建,它的状态(对象的数据,也即对象属性值)就不能改变,反之即为可变对象(Mutable Objects)。当满足以下条件时,对象才是不可变的:1. 对象创建以后其状态就不能修改。2. 对象的所有域都是final类型。3. 对象 阅读全文
posted @ 2019-05-06 22:53 白露~ 阅读(1197) 评论(0) 推荐(0) 编辑

摘要:1.mutable(可变)和immutable(不可变)类型的区别 可变类型的对象:提供了可以改变其内部数据值的操作,其内部的值可以被重新更改。 不可变数据类型:其内部的操作不会改变内部的值,一旦试图更改其内部值,将会构造一个新的对象而非对原来的值进行更改。 2.mutable和immutable类 阅读全文
posted @ 2019-05-06 22:50 白露~ 阅读(1545) 评论(0) 推荐(0) 编辑

摘要:关于Java传参时是引用传递还是值传递,是一个讨论比较多的话题,有说Java中只有值传递,也有些地方说引用传递和值传递都存在,本篇记录思考过程,不保证正确性, 感兴趣的同学一起讨论。 1.基本类型和引用类型在内存中的保存 Java中数据类型分为两大类,基本类型和对象类型。相应的,变量也有两种类型:基 阅读全文
posted @ 2019-05-06 22:15 白露~ 阅读(3874) 评论(0) 推荐(1) 编辑

摘要:1.Java对象的创建 clone顾名思义就是复制, 在Java语言中, clone方法被对象调用,所以会复制对象。所谓的复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新的对象。 那么在java语言中,有几种方式可以创建对象呢? 使用new操作符创建一个对象。 使用clone方 阅读全文
posted @ 2019-05-06 21:52 白露~ 阅读(1146) 评论(0) 推荐(0) 编辑

摘要:java“指针” Java语言的一个优点就是取消了指针的概念,但也导致了许多程序员在编程中常常忽略了对象与引用的区别,本文会试图澄清这一概念。并且由于Java不能 通过简单的赋值来解决对象复制的问题,在开发过程中,也常常要要应用clone()方法来复制对象。本文会让你了解什么是影子clone与深度  阅读全文
posted @ 2019-05-06 16:29 白露~ 阅读(5393) 评论(0) 推荐(0) 编辑

摘要:Part I 没啥好说的,直接开始Part II吧。 Part II 谈到了对象的克隆,就不得不说为什么要对对象进行克隆。Java中所有的对象都是保存在堆中,而堆是供全局共享的。也就是说,如果同一个Java程序的不同方法,只要能拿到某个对象的引用,引用者就可以随意的修改对象的内部数据(前提是这个对象 阅读全文
posted @ 2019-05-06 16:17 白露~ 阅读(695) 评论(0) 推荐(0) 编辑

摘要:赏美-第[001]期来了 阅读全文
posted @ 2019-05-04 17:35 白露~ 阅读(124) 评论(0) 推荐(0) 编辑

摘要:写在赏美【001】-【xxx】期前面的的话儿 经常会去浏览一些喜欢的摄影作品 常常惊叹于世界的美好与大自然的色彩丰富 由其是我们熟悉的环境之外存在的一切美好的事物 今天在浏览的时候突然萌生了一个想法 可以对于自己所浏览的照片进行挑选 选出一些有感觉的照片分享出来 一方面自己可以做一些记录 另一方面, 阅读全文
posted @ 2019-05-04 17:32 白露~ 阅读(110) 评论(0) 推荐(0) 编辑

摘要:生老病死乃常态,是我们每个人都逃脱不了的,所以进医院就是一件再平常不过的事情了。在医院看病,你首先的挂号,然后找到主治医生,医生呢?先给你稍微检查下,然后就是各种处方单(什么验血、CD、B超等等,太坑了。。。。),再然后就给你一个处方单要你去拿药。拿药我们可以分为两步走,第一步,我们要去交钱,划价人 阅读全文
posted @ 2019-05-03 17:48 白露~ 阅读(373) 评论(0) 推荐(0) 编辑

摘要:首先我们先来看两个例子:冲咖啡和泡茶。冲咖啡和泡茶的基本流程如下: 所以用代码来创建如下: 咖啡:Caffee.java public class Coffee { void prepareRecipe(){ boilWater(); brewCoffeeGrinds(); pourInCup(); 阅读全文
posted @ 2019-05-03 17:47 白露~ 阅读(377) 评论(0) 推荐(0) 编辑

摘要:首先我们需要知道策略模式与状态模式是如此的相似,就犹如一对双胞胎一样。只不过状态模式是通过改变对象内部的状态来帮助对象控制自己的行为,而策略模式则是围绕可以互换的算法来创建成功业务的。两者都可用于解决同一个问题:带有大量的if..else…等条件判断语句来进行选择的(小弟初学,不知这样理解是否有误? 阅读全文
posted @ 2019-05-03 17:46 白露~ 阅读(1484) 评论(0) 推荐(0) 编辑

摘要:在介绍状态模式之前,我们先来看这样一个实例:你公司力排万难终于获得某个酒店的系统开发项目,并且最终落到了你的头上。下图是他们系统的主要工作(够简单)。 当你第一眼看到这个系统的时候你就看出来了这是一个状态图,每个框框都代表了房间的状态,箭头表示房间状态的转换。分析如下:房间有三个状态:空闲、已预订、 阅读全文
posted @ 2019-05-03 17:44 白露~ 阅读(2040) 评论(0) 推荐(0) 编辑

摘要:一、基本定义 何谓观察者模式?观察者模式定义了对象之间的一对多依赖关系,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并且自动更新。 在这里,发生改变的对象称之为观察目标,而被通知的对象称之为观察者。一个观察目标可以对应多个观察者,而且这些观察者之间没有相互联系,所以么可以根据需要增加和 阅读全文
posted @ 2019-05-03 16:52 白露~ 阅读(465) 评论(0) 推荐(0) 编辑

摘要:个人比较喜欢玩单机游戏,什么仙剑、古剑、鬼泣、使命召唤、三国无双等等一系列的游戏我都玩过(现在期待凡人修仙传),对于这些游戏除了剧情好、场面大、爽快之外,还可以随时存档,等到下次想玩了又可以从刚开始的位置玩起(貌似现在的游戏都有)。这里的所谓存档就是将当前的状态记录下来,打开存档的时候只需要将这些状 阅读全文
posted @ 2019-05-03 16:17 白露~ 阅读(360) 评论(0) 推荐(0) 编辑

摘要:在我们的生活中处处充斥着“中介者”,比如你租房、买房、出国留学、找工作、旅游等等可能都需要那些中介者的帮助,同时我们也深受其害,高昂的中介费,虚假信息。在地球上最大的中介者就是联合国了,它主要用来维护国际和平与安全、解决国际间经济、社会、文化和人道主义性质的问题。国与国之间的关系异常复杂,会因为各种 阅读全文
posted @ 2019-05-03 15:39 白露~ 阅读(345) 评论(0) 推荐(0) 编辑

摘要:你项目组接到一个项目:对电视机的电视频道、电影和收音机菜单进行统一管理,建立一个统一的菜单管理界面,能够看到所有的电视界面、电影界面和收音机频道。你有三个手下:小李子、小杏子、小安子,他们分别就每个模块做开发工作,看他们都做了哪些工作。 这是主菜单JavaBean,用于显示每个模块的菜单。 publ 阅读全文
posted @ 2019-05-02 23:41 白露~ 阅读(293) 评论(0) 推荐(0) 编辑

摘要:为人处事是一门大学问,察言观色、听懂弦外之音都是非常重要的,老板跟你说“XX你最*表现**啊,还得要多努力”,如果你不当回事,*常对待,可能下次就是“XX,恩,你人还是不错,*常工作也很努力,但是我想这份工作可能不是很适合你…..”。又比如你老大说“XX,你最*表现不错,工作积极性很高啊!继续保持啊 阅读全文
posted @ 2019-05-02 22:47 白露~ 阅读(791) 评论(0) 推荐(0) 编辑

摘要:在开发过程中,我可能会需要向某些对象发送一些请求,但是我们不知请求的具体接收者是谁,也不知道被请求的操作是那个,我们只知道在程序运行中指定具体的请求接收者即可。打个比方,电视遥控器,我们只需要知道按那个按钮能够打开电视、关闭电视和换台即可,并不需要知道是怎么开电视、关电视和换台的。对于这种情况,我们 阅读全文
posted @ 2019-05-02 21:59 白露~ 阅读(841) 评论(0) 推荐(0) 编辑

摘要:去年参加校招要到长沙来,这个对于我来说不是特别喜欢(但又必须的来,谁叫咱不是985、211的娃呢),但是对于某些人来说就是福音了。大四还有课,而且学校抓的比较严,所以对于那些想翘课的人来说这个是最好不过的理由了—去参加校招了。所以咱学校规定所以去参加校招的必须要请假,且必须要有相关人员的签字,三天一 阅读全文
posted @ 2019-05-02 21:37 白露~ 阅读(254) 评论(0) 推荐(0) 编辑

摘要:有时候某些对象我们只需要一个,如:线程池、缓存、对话框等等,对于这类对象我们只能有一个实例,如果我 们制造出多个实例,就会导致很多问题产生。 但是我们怎样才能保证一个类只有一个实例并且能够便于访问?这里我们想到了全局变量,全局变量确实是可以 保证该类可以随时访问,但是它很难解决只有一个实例问题。最好 阅读全文
posted @ 2019-05-02 21:15 白露~ 阅读(244) 评论(0) 推荐(0) 编辑

摘要:以前听过这样一句话:“程序员的最高境界就是Ctrl+C、Ctrl+V”,我们先不论这句话的对错,就论这个过程,这个过程我们都知道无非就是复制一个对象,然后将其不断地粘贴。这样的过程我们可以将其称之为“克隆”。再如我们应聘的时候打印了那么多的简历。 克隆我们都清楚,就是用一个物体复制若干个一模一样物体 阅读全文
posted @ 2019-05-02 20:34 白露~ 阅读(677) 评论(0) 推荐(0) 编辑

摘要:首先来看看浅拷贝和深拷贝的定义: 浅拷贝:使用一个已知实例对新创建实例的成员变量逐个赋值,这个方式被称为浅拷贝。 深拷贝:当一个类的拷贝构造方法,不仅要复制对象的所有非引用成员变量值,还要为引用类型的成员变量创建新的实例,并且初始化为形式参数实例值。这个方式称为深拷贝 也就是说浅拷贝只复制一个对象, 阅读全文
posted @ 2019-05-02 20:28 白露~ 阅读(435) 评论(0) 推荐(0) 编辑

摘要:一、问题 在前一章中通过披萨的实例介绍了简单工厂模式。在披萨实例中,如果我想根据地域的不同生产出不同口味的披萨,如纽约口味披萨,芝加哥口味披萨。如果利用简单工厂模式,我们需要两个不同的工厂,NYPizzaFactory、ChicagoPizzaFactory。在该地域中有很多的披萨店,他们并不想依照 阅读全文
posted @ 2019-05-02 19:56 白露~ 阅读(374) 评论(0) 推荐(0) 编辑

摘要:流水作业大家应该都清楚吧!在流水作业中,我们可以将一些复杂的东西给构建出来,例如汽车。我们都知道汽车内部构件比较复杂,由很多部件组成,例如车轮、车门、发动机、方向盘等等,对于我们用户来说我们并不需要知道这个汽车是如何构建出来的,它的各个部件是如何组装,我们只需要知道一点:这是一辆完整的汽车。同样KF 阅读全文
posted @ 2019-05-02 19:35 白露~ 阅读(446) 评论(0) 推荐(0) 编辑

摘要:在设计原则中有这样一句话“我们应该针对接口编程,而不是正对实现编程”。但是我们还是在一直使用new关键字来创建一个对象,这不就是在针对实现编程么? 针对接口编程,可以隔离掉以后系统可能发生的一大堆改变。入股代码是针对接口而写,那么可以通过多态,它可以与任何新类实现该接口。但是,当代码使用一大堆的具体 阅读全文
posted @ 2019-05-02 19:16 白露~ 阅读(258) 评论(0) 推荐(0) 编辑

摘要:在我们实际生活中代理情况无处不在!你在淘宝上面买东西,你使用支付宝平台支付,卖家请物流公司发货、你请朋友帮你拿包裹,在这个过程汇总支付宝、物流公司、你朋友都扮演者“第三者”的角色在帮你完成物品的购买,这里的第三者我们可以将其称之为代理者。 所谓代理就通过引用一个新的对象来实现对真实对象的操作或者将新 阅读全文
posted @ 2019-05-02 18:40 白露~ 阅读(463) 评论(0) 推荐(0) 编辑

摘要:面向对象可以非常方便的解决一些扩展性的问题,但是在这个过程中系统务必会产生一些类或者对象,如果系统中存在对象的个数过多时,将会导致系统的性能下降。对于这样的问题解决最简单直接的办法就是减少系统中对象的个数。 享元模式提供了一种解决方案,使用共享技术实现相同或者相似对象的重用。也就是说实现相同或者相似 阅读全文
posted @ 2019-05-02 18:34 白露~ 阅读(310) 评论(0) 推荐(0) 编辑

摘要:java中很多地方会涉及到锁,比如java代码并发场景,DB中的并发场景,分布式中的锁....你知道几种呢?下面来看看常见的11种锁 1. 乐观锁/悲观锁 这两个概念是人们对java中各种锁总结提出的模型,不是特指某种类型的锁。 乐观锁预期数据的并发操作不会发生修改而不需要进行加锁的操作,悲观锁则相 阅读全文
posted @ 2019-05-01 23:31 白露~ 阅读(1156) 评论(0) 推荐(0) 编辑

摘要:............................................................................总结........................................................................ 阅读全文
posted @ 2019-05-01 22:48 白露~ 阅读(648) 评论(0) 推荐(0) 编辑

摘要:前面介绍的适配器模式讲的是如何将一个接口转换成客户所需要的另一个接口,它的目的在于 解决接口的不兼容性问题。现在这里有这样一个模式,它的目的在于如何简化接口,它可以将多个类的复杂的一切隐藏在背后,只显露 出一个干净美观的外观。 晚上睡觉之前,你总是喜欢看电视,在你进入卧室的时候你需要完成以下几个步骤 阅读全文
posted @ 2019-05-01 22:07 白露~ 阅读(244) 评论(0) 推荐(0) 编辑

摘要:我们都知道,可以使用两种方式给一个类或者对象添加行为。 一是使用继承。继承是给一个类添加行为的比较有效的途径。通过使用继承,可以使得子类在拥有自身方法的同时,还可以拥有父类的方法。但是使用继承是静态的,在编译的时候就已经决定了子类的行为,我们不便于控制增加行为的方式和时机。 二是使用关联。组合即将一 阅读全文
posted @ 2019-05-01 22:03 白露~ 阅读(233) 评论(0) 推荐(0) 编辑

摘要:我们对于这个图片肯定会非常熟悉,这两幅图片我们都可以看做是一个文件结构,对于这样的结构我们称之为树形结构。在数据结构中我们了解到可以通过调用某个方法来遍历整个树,当我们找到某个叶子节点后,就可以对叶子节点进行相关的操作。我们可以将这颗树理解成一个大的容器,容器里面包含很多的成员对象,这些成员对象即可 阅读全文
posted @ 2019-05-01 21:06 白露~ 阅读(306) 评论(0) 推荐(0) 编辑

摘要:在开始学java的时候老师讲到继承的时候,总是喜欢用一个例子来讲解,那就是画图,这里有一个画笔,可以画正方形、长方形、圆形(这个大家都知道怎么做吧,我就不解释了)。但是现在我们需要给这些形状进行上色,这里有三种颜色:白色、灰色、黑色。这里我们可以画出3*3=9中图形:白色正方形、白色长方形、白色圆形 阅读全文
posted @ 2019-05-01 20:59 白露~ 阅读(249) 评论(0) 推荐(0) 编辑

摘要:假如我们又这样软件系统,我们希望它能够和一个新的库搭配使用,但是这个库所提供的接口与我们的软件系统不兼容,我们不想改变现有代码就能解决这个问题,怎么办?这个时候我们就需要将这个新的库接口转换成我们所需要的接口,这就是适配器模式设计动机。 一、模式定义 何谓适配器模式?适配器模式就是将一个类的接口,转 阅读全文
posted @ 2019-05-01 20:17 白露~ 阅读(727) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示