学习笔记
2019-10-16 16:56
这是 Java 爬虫系列博文的第五篇,在上一篇 Java 爬虫服务器被屏蔽,不要慌,咱们换一台服务器 中,我们简单的聊反爬虫策略和反反爬虫方法,主要针对的是 IP 被封及其对应办法。前面几篇文章我们把爬虫相关的基本知识都讲的差不多啦。这一篇我们来聊一聊爬虫架构相关的内容。...
2019-10-16 16:52
kubernetes版本:1.13.2
背景
由于operator创建的redis集群,在kubernetes apiserver重启后,redis集群被异常删除(包括redis exporter statefulset、redis statefulset)。删除后operator将其重建,重新组建集群,实例IP发生变更(中间件容器化,我们开发了固定IP,当statefulset删除后,IP会被回收),导致创建集群失败,最终集群不可用。
经多次复现,apiserver重启后,通过查询redis operator日志,并没有发现主动去删除redis集群(redis statefulset)、监控实例(redis exporter)。进一步去查看kube-controller-manager的日志,将其日志级别设置--v=5,继续复现,最终在kube-controller-manager日志中发现如下日志:
...
2019-10-16 16:26
io.netty.buffer.PooledByteBuf<T>使用内存池中的一块内存作为自己的数据内存,这个块内存是PoolChunk<T>的一部分。PooledByteBuf<T>是一个抽象类型,它有4个派生类:...
2019-10-16 16:54
前言
今天我们来看策略模式【Stragety Pattern【行为型】】,这个模式还是比较好理解的。策略怎么理解呢?一般是指:1. 可以实现目标的方案集合;2. 根据形势发展而制定的行动方针和斗争方法;3. 有斗争艺术,能注意方式方法。总的来说呢就是针对一个目的的不同的方法集合。这里要讲的策略模式怎么理解呢?简单的说就是对于一个类的行为或者其算法可以在运行时更改替换。
回到顶部
策略模式介绍
一、来由
在软件系统中,一些对象使用的算法或者行为可能会经常变化,如果把这些变化的算法写到对象中的话,会使对象变得较为复杂、不易理解。那么我们如何在运行时动态的修改对象的不同的算法呢?这就使用到了策略模式。
...
2019-10-16 14:38
这次我们来说说我们的redis,在我们的redis的认知里,最熟悉的就是用redis作为缓存使用,还有我们的分布式session,其实还有很多redis的使用,还有redis的哨兵模式等等。 Redis(全称:Remote Dictionary Server 远程字典服务)是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。(百度百科)...
2019-10-16 14:02
导读:新版本主要有三大变化:同步了 OpenJDK 上游社区 jdk8u222-ga 的最新更新;带来了正式的 feature:G1ElasticHeap;发布了用户期待的 Windows 实验版本 Experimental Windows version。
距离 Dragonwell JDK 第一个正式版本 8.0.0-GA 发布已经过去 3 个月了,项目在 Github 上的 stars 继续攀升达到了 1900。今天我们带来了最新版本 8.1.1-GA 的发布,包含了全新的特性和更新。详情见下文。
...
2019-10-16 12:09
写在前面上一篇文章原子性问题的宏观理解 带领大家了解了锁和资源的模型,有了这篇文章的铺垫,相信理解这一篇文章就非常轻松了...
2019-10-16 12:18
今天来聊聊 Spring Boot 整合 Freemarker。
Freemarker 简介
这是一个相当老牌的开源的免费的模版引擎。通过 Freemarker 模版,我们可以将数据渲染成 HTML 网页、电子邮件、配置文件以及源代码等。Freemarker 不是面向最终用户的,而是一个 Java 类库,我们可以将之作为一个普通的组件嵌入到我们的产品中。
来看一张来自 Freemarker 官网的图片:
可以看到,Freemarker 可以将模版和数据渲染成 HTML 。
Freemarker 模版后缀为 .ftl(FreeMarker Template Language)。FTL 是一种简单的、专用的语言,它不是像 Java 那样成熟的编程语言。在模板中,你可以专注于如何展现数据, 而在模板之外可以专注于要展示什么数据。
...
2019-10-16 11:47
写在前面马上就2020年了,不知道小伙伴们今年学习了css3动画了吗?...
2019-10-16 11:18
目录
一、工厂模式
简单工厂模式
工厂方法模式
二、抽象工厂模式
三、单例模式
四、建造者模式
五、原型模式
创建型模式对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离
为了使软件的结构更加清晰,外界对于这些对象只需要知道它们共同的接口,而不清楚其具体的实现细节,使整个系统的设计更加符合单一职责原则
创建型模式隐藏了类的实例的创建细节,通过隐藏对象如何被创建、如何组合在一起来实现使整个系统独立的目的
一、工厂模式
简单工厂模式
1、楔子
某暴发户有若干辆车,每辆车品牌都不同(如奔驰、宝马、奥迪),这些车来自同一个父类,在继承父类后不同的子类修改了部分属性从而使得它们产自不同的品牌
...
2019-10-16 11:42
原子操作:不能被分割(中断)的一个或一系列操作叫原子操作。原子操作Atomic主要有12个类,4种类型的原子更新方式,原子更新基本类型,原子更新数组,原子更新字段,原子更新引用。Atomic包中的类基本都是使用Unsafe实现的包装类。基本类型:AtomicInteger,AtomicLong,AtomicBoolean;...
2019-10-16 11:05
前言
通过之前的两篇关于Swagger入门以及具体使用细节的介绍之后,我们已经能够轻松地为Spring MVC的Web项目自动构建出API文档了。如果您还不熟悉这块,可以先阅读:
Spring Boot 2.x基础教程:使用Swagger2构建强大的API文档
Spring Boot 2.x基础教程:Swagger接口分类与各元素排序问题详解
在这两篇文章中,我们构建的文档必须通过在项目中整合swagger-ui、或使用单独部署的swagger-ui和/v2/api-docs返回的配置信息才能展现出您所构建的API文档。而有些时候,我们可能只需要提供静态文档给其他对接方的时候,我们要如何快速轻便的产生静态API文档呢?
...
2019-10-16 11:33
前两天因准备美团的面试,导致公众号文章断更了一天,今天就以一篇纯干货来弥补大家。美团的整个面试收获颇丰,与大家分享。好多年没有面试了,为此专门准备了一天。在美团一个下午经历了四个多小时的三轮技术面试,才发现为面试所准备的面试题几乎无用,整个过程全靠临场发挥和经验积累。...
2019-10-16 11:57
一、创建增量备份
增量备份级别为0-4,但为方便备份管理,oracle建议只限于0级和1级。
1、差异增量备份(differential incremental backup)(默认):
每次备份至上一次备份级别小于等于当前级别的备份。
2、累计增量备份(cumulative incremental backup):
1)每次备份至上一次小于当前级别的备份;
2)增量备份需要先进行一次0级备份,作为备份的起点。
3、增量备份例子:
backup incremental level 0 database;----0级增量备份,作为增量备份策略的基础
...
2019-10-16 11:28
前面两篇文章我介绍了一下
看完你就应该能明白的悲观锁和乐观锁
看完你就明白的锁系列之自旋锁
看完你就会知道,线程如果锁住了某个资源,致使其他线程无法访问的这种锁被称为悲观锁,相反,线程不锁住资源的锁被称为乐观锁,而自旋锁是基于 CAS 机制实现的,CAS又是乐观锁的一种实现,那么对于锁来说,多个线程同步访问某个资源的流程细节是否一样呢?换句话说,在多线程同步访问某个资源时,锁的状态会如何变化呢?本篇文章来探讨一下。
锁状态的分类
Java 语言专门针对 synchronized 关键字设置了四种状态,它们分别是:无锁、偏向锁、轻量级锁和重量级锁,但是在了解这些锁之前还需要先了解一下 Java 对象头和 Monitor。
...