• 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html
  • 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html

2019年02月7日的内容

再谈notify和notifyAll的区别和相同

经常在网上逛,关于在java中notify和notifyAll,经常有人有以下的说法:notify只会通知一个在等待的对象,而notifyAll会通知所有在等待的对象,并且所有对象都会继续运行并且,好像都有例子可以证明。上面的说法,可以说对,也可以说不对。究其原因,在于其中有一点很关键,官方的说法如下所示:wait,notify,n……

如何从0写一个服务网关?

0 引言什么是网关?为什么需要使用网关?如图所示,在不使用网关的情况下,我们的服务是直接暴露给服务调用方。当调用方增多,势必需要添加定制化访问权限、校验等逻辑。当添加API网关后,再第三方调用端和服务提供方之间就创建了一面墙,这面墙直接与调用方通信进行权限控制。本文所实现的网关源码抄袭了—Oh,不对,是借鉴。借鉴了……

Java多态性理解

Java中多态性的实现什么是多态面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。这是我们最后一个概念,也是最重要的知识点。多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)实现多态的技术称为:动态绑定(dy……

单点登录终极方案之 CAS 应用及原理

Cookie的单点登录的实现方式很简单,但是也问题颇多。例如:用户名密码不停传送,增加了被盗号的可能。另外,不能跨域!1、基于Cookie的单点登录的回顾基于Cookie的单点登录核心原理:将用户名密码加密之后存于Cookie中,之后访问网站时在过滤器(filter)中校验用户权限,如果没有权限则从Cookie中取出用户名密码进行登录,让……

微服务架构:如何用十步解耦你的系统?

耦合性,是对模块间关联程度的度量。耦合的强弱取决于模块间接口的复杂性、调用模块的方式以及通过界面传送数据的多少。模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差。软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准。高内聚低耦合,是软件工程中的概念,是判断设计好坏的……

Java 8:不要再用循环了

正如我之前(http://www.deadcoderising.com/why-you-should-embrace-lambdas-in-java-8/)所写的,Java 8中的新功能特性改变了游戏规则。对Java开发者来说这是一个全新的世界,并且是时候去适应它了。在这篇文章里,我们将会去了解传统循环的一些替代方案。在Java 8的新功能特……

去 BAT 面试,总结了这 55 道 MySQL 面试题!

1、一张表,里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把Mysql重启,再insert一条记录,这条记录的ID是18还是15 ?2、Mysql的技术特点是什么?Mysql数据库软件是一个客户端或服务器系统,其中包括:支持各种客户端程序和库的多线程SQL服务器、不同的后端、广泛的应用程序……

图解Tomcat类加载机制

    说到本篇的tomcat类加载机制,不得不说翻译学习tomcat的初衷。    之前实习的时候学习javaMelody的源码,但是它是一个Maven的项目,与我们自己的web项目整合后无法直接断点调试。后来同事指导,说是直接把java类复制到src下就可以了。很纳闷….为什么会优先加载src下的java文件(编译出的class……

java synchronized详解(1)

Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。     一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。     二、然而,……

阿里淘宝双十一秒杀系统设计详解

一些数据大家还记得2013年的小米秒杀吗?三款小米手机各11万台开卖,走的都是大秒系统,3分钟后成为双十一第一家也是最快破亿的旗舰店。经过日志统计,前端系统双11峰值有效请求约60w以上的QPS ,而后端cache的集群峰值近2000w/s、单机也近30w/s,但到真正的写时流量要小很多了,当时最高下单减库存tps是红米创造,达到1500/s。……

java多线程中的死锁、活锁、饥饿、无锁都是什么鬼?

死锁、活锁、饥饿是关于多线程是否活跃出现的运行阻塞障碍问题,如果线程出现了这三种情况,即线程不再活跃,不能再正常地执行下去了。死锁死锁是多线程中最差的一种情况,多个线程相互占用对方的资源的锁,而又相互等对方释放锁,此时若无外力干预,这些线程则一直处理阻塞的假死状态,形成死锁。举个例子,A同学抢了B同学的钢笔,B同学抢了A同学的……

解读 Java 并发队列 BlockingQueue

最近得空,想写篇文章好好说说 java 线程池问题,我相信很多人都一知半解的,包括我自己在仔仔细细看源码之前,也有许多的不解,甚至有些地方我一直都没有理解到位。说到线程池实现,那么就不得不涉及到各种 BlockingQueue 的实现,那么我想就 BlockingQueue 的问题和大家分享分享我了解的一些知识。本文没有像之前分析 AQ……

分布式系统与消息的投递

网络请求成功与失败超时消息投递语义最多一次最少一次正好一次投递顺序序列号状态机协议AMQP 协议MQTT 协议总结消息是一个非常有趣的概念,它是由来源发出一个离散的通信单元,被发送给一个或者一群接受者,无论是单体服务还是分布式系统中都有消息的……

开发微信支付之前要做的那些事儿(附源码)

前言之前做过一次微信支付的配置工作,然而第二次配置,虽然有点印象,但最终还是翻查了半天资料和代码,才完成了配置。这里对微信支付所需做一个简单的整理说明,以便后期查阅至于如何申请账号,那是公司层面的操作,这里我不是很清楚,也不做相关的介绍了,我只清楚拿到账号之后的操作。相关网址服务公号:https://mp.weixin.qq.com……

微服务架构下的测试之道

1.系统架构的演变伴随着互联网的快速发展,Web应用系统从面向企业内部发展到面向市场用户,业务的日趋复杂以及用户量的上升,那些曾经工作良好的单体应用开始遇到开发、测试、部署、发布各个方面的瓶颈,诸如扩展新增功能艰难、系统庞大难以维护、编译太耗时,发布流程太慢等问题困扰着开发团队。SOA的问世促使系统架构发生了跨越式的演变,它提出了面向服务的架……

理解分布式系统中的缓存架构(下)

1. 分层缓存架构设计2. 缓存带来的复杂度问题数据一致性缓存穿透缓存雪崩缓存高可用缓存热点3. 业界案例技术挑战Feed缓存架构图架构特点参考承接上一篇《理解分布式系统中的缓存架构(上)》,介绍了大型分布式系统中缓存的相关理论,常见的缓存组件以及应用场景,本文主要介绍缓存架构设计常见问题以及解决方案,业界案例。1……

支付系统如何进行分布式改造?

→ 传统支付系统面临的挑战 ←随着近年来移动支付的兴起,如条码支付、声波支付、NFC 近场支付等……移动支付已经渗透到我们生活的每一个角落。这就给传统的支付系统提出了新的挑战,用户量激增,系统容量和性能跟不上了,传统的架构往往以 IOE 技术为主,采用 scale up 方式以更强的硬件提升系统性能和容量,扩容成本将是……

EventBus原理深度解析(Guava)

一、问题描述在工作中,经常会遇见使用异步的方式来发送事件,或者触发另外一个动作:经常用到的框架是MQ(分布式方式通知)。如果是同一个jvm里面通知的话,就可以使用EventBus。由于EventBus使用起来简单、便捷,因此,工作中会经常用到。深入理解该框架的原理就很有必要。二、框架解析2.1、组织结构eventbus的组织结构如……

性能优化指南

0 题记作为一个程序员,性能优化是常有的事情,不管是桌面应用还是web应用,不管是前端还是后端,不管是单点应用还是分布式系统。本文从以下几个方面来思考这个问题:性能优化的一般性原则,性能优化的层次,性能优化的通用方法。本文不限于任何语言、框架,不过可能会用Python语言来举例。不过囿于个人经验,可能更多的是从Linux服务端的……

Java Base64 编码解码方案总结

Base64是一种能将任意Binary资料用64种字元组合成字串的方法,而这个Binary资料和字串资料彼此之间是可以互相转换的,十分方便。在实际应用上,Base64除了能将Binary资料可视化之外,也常用来表示字串加密过后的内容。如果要使用Java 程式语言来实作Base64的编码与解码功能,可以参考本篇文章的作法。早期作法早期在Java……

为什么HashMap要自己实现writeObject和readObject方法?

前言如果你有仔细阅读过HashMap的源码,那么你一定注意过一个问题:HashMap中有两个私有方法。privatevoid writeObject(java.io.ObjectOutputStream s) throwsIOExceptionprivatevoid readObject(java.io.ObjectIn……

Tomcat 调优的技巧 | 必学必知

一、描述最近,在补充自己的短板,刚好整理到 Tomcat 调优这块,基本上面试必问,于是就花了点时间去搜集一下 Tomcat 调优都调了些什么,先记录一下调优手段,更多详细的原理和实现以后用到时候再来补充记录,下面就来介绍一下,Tomcat 调优大致分为两大类。1、Tomcat的自身调优采用动静分离节约 Tomcat 的性能调整 ……

java高级应用:线程池全面解析

什么是线程池?很简单,简单看名字就知道是装有线程的池子,我们可以把要执行的多线程交给线程池来处理,和连接池的概念一样,通过维护一定数量的线程池来达到多个线程的复用。线程池的好处我们知道不用线程池的话,每个线程都要通过new Thread(xxRunnable).start()的方式来创建并运行一个线程,线程少的话这不会是问……

  • 精品技术教程
  • 编程资源分享
  • 问答交流社区
  • 极客文库知识库

客服QQ


QQ:2248886839


工作时间:09:00-23:00