摘要:在实际的项目开发中,为了更好的组织项目代码,会采用分层架构的方式,这就会使用到maven的多模块特性。假设项目分为A、B、C、D四层,在父模块的pom.xml中,一般这样来对子模块进行聚合 <modules> <module>A</module> <module>B</module> <module
阅读全文
lotus贵有恒何必三更眠五更起 最无益只怕一日曝十日寒 |
|
12 2020 档案
摘要:在实际的项目开发中,为了更好的组织项目代码,会采用分层架构的方式,这就会使用到maven的多模块特性。假设项目分为A、B、C、D四层,在父模块的pom.xml中,一般这样来对子模块进行聚合 <modules> <module>A</module> <module>B</module> <module
阅读全文
摘要:今天在新建一个项目引入spring-boot-starter-web包报红,org.openjfx:javafx.base jar下载失败 打开发现是这个org.openjfx:javafx.base子包没有引入,找到maven仓库删除该包,重下还是失败,网上页没找到解决方案,最后对比了下发现以前的
阅读全文
摘要:dependencies: 就算在子项目中不写该依赖项,那么子项目仍然会从父项目中继承该依赖项(全部继承)dependencyManagement: 只是声明依赖,并不实现引入,因此子项目需要显示声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且
阅读全文
摘要:首先,了解下maven项目的三种打包方式: 1.war 打包为war包项目时,可以放在tomcat下运行 2.jar 打包成jar包就是要使用java -jar xxx.jar方式来运行,最常见的就是SpringBoot项目 3.pom 它只是用来做依赖管理,打包成的项目并不能直接运行。比如Spri
阅读全文
摘要:pom:是maven依赖文件。 jar:是java普通项目打包。 war:是java web项目打包。 pom: 打出来的可以作为其他项目的maven依赖,在工程A中添加工程B的pom,A就可以使用B中的类。用在父级工程或聚合工程中。用来做jar包的版本控制。 jar: 通常是开发时要引用通用类,达
阅读全文
摘要:项目主要分成3个模块,wms-root为父模块,wms-core和wms-app(webapp类型的模块)为子模块。 一、Parent Project,创建wms-root父模块。 1、依次点击:File->New->Project 2、左侧面板选择maven(不要选择Create from arc
阅读全文
摘要:Thrift 简介 Thrift 是什么 Thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Go,Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Java
阅读全文
摘要:.gitignore文件来忽略提交这些文件,就可以很好的解决这一问题和麻烦! 点击File->Settings 在左侧菜单找到(1)点击Plugins,(2)点击Browse repositories,如下图 .ignore; 然而上述方法安装完IDEA再启动的时候可能会报错。那么给你们planB:
阅读全文
摘要:.gitignore文件的作用 .gitignore文件用来忽略被指定的文件或文件夹的改动,被记录在.gitignore文件里的文件或文件夹,是无法被git跟踪到的,换句话说,被忽略的文件是不会被放入到远程仓库里的。 也就是说,如果文件已经存在于远程仓库中,是无法通过.gitignore文件来忽略的
阅读全文
摘要:1 TortoiseGit简介 tortoiseGit是一个开放的git版本控制系统的源客户端,支持Winxp/vista/win7.该软件功能和git一样 不同的是:git是命令行操作模式,tortoiseGit界面化操作模式,不用记git相关命令就可以直接操作,读者可根据自己情况选择安装 2 T
阅读全文
摘要:用了IDEA有很长时间了,身边的同事朋友也都慢慢的开始都从Eclipse切换到IDEA了,其实无论是Eclipse还是IntelliJ IDEA都是开发工具而已,各自都有优点。但是刚从Eclipse切换到IDEA的时候还是很不适应的,有些人用了一段时间的IDEA适应不了就又切换回Eclipse了,也
阅读全文
摘要:首次使用idea需要配置哪些东西? 最近因为我的eclipse无法配置sts,于是将战场转移至idea,首次使用idea,所有的配置都得重新开始配,在这里记录一下配置,造福自己,造福别人(手动捂脸)。。。。 我目前所想到的需要配置的有jdk,Tomcat,maven,Git。下面会介绍怎么在idea
阅读全文
摘要:安装Git:详见http://www.cnblogs.com/xiuxingzhe/p/9300905.html 开通gitlab(开通需要咨询所在公司的gitlab管理员)账号后,本地Git仓库和gitlab仓库仍然不能传输项目,原因是要通过SSH加密才能传输,所以需要让gitlab认证本地的SS
阅读全文
摘要:1 Git简介 Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件 Git也是目前最流行的分布式版本控制系统,它和其他版本控制系统的主要差别在于Git
阅读全文
摘要:一、安装Redis 1. Redis官网下载地址:http://redis.io/download,下载相应版本的Redis,在运行中输入cmd,然后把目录指向解压的Redis目录。 2、启动服务命令 redis-server redis.windows.conf,出现下图显示表示启动成功了。 3.
阅读全文
摘要:Windows下安装MySQL详细教程 1、安装包下载 2、安装教程 (1)配置环境变量 (2)生成data文件 (3)安装MySQL (4)启动服务 (5)登录MySQL (6)查询用户密码 (7)设置修改用户密码 (8)退出 3、解决问题 1、安装包下载。 下载地址:https://dev.my
阅读全文
摘要:想要安装 Apache Maven 在Windows 系统上, 需要下载 Maven 的 zip 文件,并将其解压到你想安装的目录,并配置 Windows 环境变量。 所需工具 : JDK 1.8 Maven 3.3.9 Windows 10 注Maven 3.2 要求 JDK 1.6 或以上版本,
阅读全文
摘要:第一步:配置好Java环境 测试Java环境是否正常,在命令窗口输入命令:java –version.出现Java版本信息说明Java环境已经配置好了。 第二步:下载Tomcat 下载路径:http://tomcat.apache.org/download-80.cgi.根据自己的需要下载不同版本,
阅读全文
摘要:目录 JDK的下载与安装 配置java环境变量 JAVA_HOME变量 Path变量 ClassPath变量 classpath变量配置的解释 java运行环境的验证 JDK的下载与安装 首先,百度直接搜索JDK,然后打开Oracle的jdk下载网页。(如果你比较懒 ,下方为链接) https://
阅读全文
摘要:常用软件破解 Intellij idea系列最新激活码 JAVA最小开发环境安装 java环境变量 的配置与详解 Windows下配置Tomcat服务器 Maven安装配置(Windows10) Windows下安装MySQL详细教程 Redis在windows下安装与配置 Git简介及安装 Git
阅读全文
摘要:序章 1. Fiddler 抓包简介 1) 字段说明 2). Statistics 请求的性能数据分析 3). Inspectors 查看数据内容 4). AutoResponder 允许拦截指定规则的请求 4). Composer 自定义请求发送服务器 5). Filters 请求过滤规则 2.
阅读全文
摘要:手机上无法直接查看网络请求数据,需要使用抓包工具。Fiddler是一个免费的web调试代理,可以用它实现记录、查看和调试手机终端和远程服务器之间的http/https通信。 fiddler没有手机客户端,都是安装在PC上,要实现对手机上的程序抓包,则需要对PC上的fiddler和手机端做一些配置。步
阅读全文
摘要:WAN、LAN、WLAN三种网口的区别 DOS攻击 记录 dos攻击种类 常见Dos攻击原理及防护(死亡之Ping、Smurf、Teardown、LandAttack、SYN Flood) dos攻击原理及攻击实例(带脚本) Arp小记 Arp攻击实战 浅谈CSRF攻击方式 网络嗅探技术浅析
阅读全文
摘要:一.嗅探可以做什么?为什么需要嗅探? 嗅探(sniff),就是窃听网络上流经的数据包,而数据包里面一般会包含很多重要的私隐信息,如:你正在访问什么网站,你的邮箱密码是多少,你在和哪个MM聊QQ等等......而很多攻击方式(如著名的会话劫持)都是建立在嗅探的基础上的。 二.嗅探技术 在集线器盛行的年
阅读全文
摘要:一.CSRF是什么? CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。 二.CSRF可以做什么? 你这可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的
阅读全文
摘要:现在网上很多关于ARP攻击的文章,但多数是描述其原理,少数会以某个工具作为例子展开说明,但感觉说的还是不够详细,今天写个文章以实战介绍一个叫“WinArpAttacker”的工具。 WinArpAttacker是一个很出名的ARP攻击工具,功能也很强大,没有用过的朋友可以在上网搜一下,下载这里就不提
阅读全文
摘要:ARP:Address Resolution Protocol 地址解析协议。 RARP:Reverse Address Resolution Protocol 逆向地址解析协议。 不同的网络,如以太网,令牌网...,在数据链路层都有不同的寻址机制。 在以太网的局域网中,一台主机和另外一台主机通信发
阅读全文
摘要:首先声明,以下仅作为测试用,请勿作为非法用途。 dos攻击原理:DoS攻击就是利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务的响应。(百度百科说的,大概就是这么个意思)。 dos攻击与ddos攻击的区别就是,它是一对一的攻击,而ddos是分布式的攻击,作为入门,作为菜鸟,我们他妈
阅读全文
摘要:DoS是Denial of Service的简称,即拒绝服务,造成DoS的攻击行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务。最常见的DoS攻击有计算机网络带宽攻击和连通性攻击。 DoS攻击是指故意的攻击网络协议实现的缺陷或直接通过野蛮手段残忍地耗尽被攻击对象的资源,目的是让目标计算
阅读全文
摘要:dos攻击方法有很多,但是总体可以分为以下五大类。 耗尽计算机资源,如带宽、内存、磁盘空间、处理器时间。 破坏配置信息,如路由信息 破环状态信息,如TCP链接中断 破坏网络硬件 破坏通信介质,阻挡正常通信。 主要攻击方法如下: 1.icmpflood 包括smurf flood、ping flood
阅读全文
摘要:前言 线程安全问题一直是并发编程中比较让人头疼的问题. 通过前面的学习, 我们知道: 线程之所以不安全, 主要是多线程下对可变的共享资源的争用导致的. 衡量线程是否安全, 主要从三个特性入手 原子性 可见效 有序性 只要保证了这三个特性,我们就认为线程是安全的, 多线程下执行结果才会和单线程执行结果
阅读全文
摘要:并发情况下如何保证数据安全,一直都是开发人员每天都要面对的问题,稍不注意就会出现数据异常,造成不可挽回的结果。笔者根据自己的实际开发经验,总结了下面几种保证数据安全的技术手段: 无状态 不可变 安全的发布 volatile synchronized lock cas threadlocal 一.无状
阅读全文
摘要:原文地址:http://raychase.iteye.com/blog/1545906 Ehcache 是现在最流行的纯Java开源缓存框架,配置简单、结构清晰、功能强大,最初知道它,是从Hibernate的缓存开始的。网上中文的EhCache材料以简单介绍和配置方法居多,如果你有这方面的问题,请自
阅读全文
摘要:一:目录 EhCache 简介 Hello World 示例 Spring 整合 二: 简介 2.1、基本介绍 EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认CacheProvider。Ehcache是一种广泛使用的开源Java分布式缓存。主要面向
阅读全文
摘要:Java 中常用缓存Cache机制的实现 所谓缓存,就是将程序或系统经常要调用的对象存在内存中,一遍其使用时可以快速调用,不必再去创建新的重复的实例。这样做可以减少系统开销,提高系统效率。 所谓缓存,就是将程序或系统经常要调用的对象存在内存中,一遍其使用时可以快速调用,不必再去创建新的重复的实例。这
阅读全文
摘要:关于UML,我相信在做B端的产品经理一定知道它的重要性。那么UML常用的图都包含哪些呢?它们又都在什么场景什么阶段使用呢?又如何使用呢?这篇文章主要帮助小伙伴们解答这些问题。 一、UML的分类及用途 首先简单给大家介绍一下什么是UML,UML的全称是Unified Modeling Language
阅读全文
摘要:UML(UnifiedModeling Language,统一建模语言) 是一种在软件设计时提供给分析师、设计师和工程师之间的通用语言。UML在软件需求分析及整个产品生命周期中起着重要作用:一是有助于捕获系统结构或行为;二是有助于定义软件构架,保持设计和实现的一致性;三是有助于管理复业务,方便团队沟
阅读全文
摘要:关于UML,我相信在做B端的产品经理一定知道它的重要性。那么UML常用的图都包含哪些呢?它们又都在什么场景什么阶段使用呢?又如何使用呢?这篇文章主要帮助小伙伴们解答这些问题。 一、UML的分类及用途 首先简单给大家介绍一下什么是UML,UML的全称是Unified Modeling Language
阅读全文
摘要:一、前言 UML:Unified Modeling Language(统一建模语言),使用UML进行建模的作用有哪些: 可以更好的理解问题 可以及早的发现错误或者被遗漏的点 可以更加方便的进行组员之间的沟通 支持面向对象软件开发建模,可以更好的描述显示编程的情景。 对于复杂的系统来说,如果概要模型做
阅读全文
摘要:作者:周旭龙 出处:http://edisonchou.cnblogs.coma 本文是我学习Scott Millett & Nick Tune编著的《领域驱动设计模式、原理与实践》一书的学习笔记,一共会分为4个部分如下,此文为第1部分: ① 领域驱动设计的原则与实践 ② 战略模式:在有界上下文之间
阅读全文
摘要:作者:周旭龙 出处:http://edisonchou.cnblogs.com 一、Why DDD? 在加入X公司后,开始了ASP.NET Core+Docker+Linux的技术实践,也开始了微服务架构的实践。在微服务的学习中,有一本微软官方出品的《.NET微服务:容器化.NET应用架构指南》是我
阅读全文
摘要:智能安防系统中的网口分为WAN、LAN、WLAN三种。 说到网口,做智能化工程的安防人估计都知道,但是智能安防系统中的网口有几种呢?他们的全称叫什么呢?他们适用于哪些智能化工程中呢?今天,小编来为大家普及一下。 我们说的WAN是Wide Area Network的缩写,WAN的中文名叫广域网,我们在
阅读全文
摘要:聊聊JVM的年轻代 1.为什么会有年轻代 我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能。你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我们要找到哪些对象没用,这样就会对堆的所有区域进行扫描。而我们的很多对象都是朝生夕
阅读全文
摘要:1 为什么要有Survivor区 先不去想为什么有两个Survivor区,第一个问题是,设置Survivor区的意义在哪里? 如果没有Survivor,Eden区每进行一次Minor GC,存活的对象就会被送到老年代。老年代很快被填满,触发Major GC(因为Major GC一般伴随着Minor
阅读全文
摘要:MySQL InnoDB 引擎现在广为使用,它提供了事务,行锁,日志等一系列特性,本文分析下 InnoDB 的内部实现机制,MySQL 版本为 5.7.24,操作系统为 Debian 9。 1、InnoDB 架构 Innodb 架构图 InnoDB 的架构分为两块:内存中的结构和磁盘上的结构。Inn
阅读全文
摘要:继承关系 ReadLock和WriteLock是ReentrantReadWriteLock的两个内部类,Lock的上锁和释放锁都是通过AQS来实现的。 AQS定义了独占模式的acquire()和release()方法,共享模式的acquireShared()和releaseShared()方法.还
阅读全文
摘要:分库分表适用场景 分库分表用于应对当前互联网常见的两个场景——大数据量和高并发。通常分为垂直拆分和水平拆分两种。 垂直拆分是根据业务将一个库(表)拆分为多个库(表)。如:将经常和不常访问的字段拆分至不同的库或表中。由于与业务关系密切,目前的分库分表产品均使用水平拆分方式。 水平拆分则是根据分片算法将
阅读全文
摘要:导读 上一篇文章《ShardingJdbc分库分表实战案例解析(上)》中我们初步介绍了使用ShardingJdbc实现订单数据分散存储的分库分表方法,在本篇文章中将重点介绍在不停服的情况下实现数据分片存储的在线扩容。具体将以如下两个常见的场景进行演示: 1)、尚未进行分库分表的单库单表系统如何平稳的
阅读全文
摘要:热点技术讲解: 风平浪静如码 2020-09-20 16:36:59 155 收藏 分类专栏: Java 程序员 文章标签: java ShardingJdbc 后端 分库分表 程序员 版权 在对诸如订单、交易、支付等实时在线业务系统的研发、维护过程中,随着业务量的快速增长,我们经常会遇到由于关系型
阅读全文
摘要:作为Sharding-JDBC 分库分表实战系列的开篇文章,我们在前文中回顾了一下分库分表的基础知识,对分库分表的拆分方式有了一定的了解,下边我们介绍一下 Sharding-JDBC框架和快速的搭建一个分库分表案例,为讲解后续功能点准备好环境。 一、Sharding-JDBC 简介 Sharding
阅读全文
摘要:一、概述 Sharding-JDBC定位为轻量级Java框架,在Java的JDBC层提供的额外服务。 它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。 适用于任何基于JDBC的ORM框架,如:JPA, Hiberna
阅读全文
摘要:原文出处:https://github.com/doocs/advanced-java/blob/master/docs/high-concurrency/database-shard.md欢迎 star 关注 GitHub 项目最新动态! 面试题 为什么要分库分表(设计高并发系统的时候,数据库层面
阅读全文
摘要:前言 前面我们讲了MySQL数据库底层的数据结构与算法、MySQL性能优化篇一些内容。我们再来聊聊MySQL的锁与事务隔离级别,分上下两篇,本篇重点讲MySQL的行锁与事务隔离级别。 锁定义 锁是计算机协调多个进程或线程并发访问某一资源的机制。 在数据库中,除了传统的计算资源(如CPU、RAM、I/
阅读全文
摘要:https://blog.csdn.net/org_hjh/article/details/108654791 前言 MySQL索引底层数据结构与算法 MySQL性能优化原理-前篇 MySQL性能优化-实践篇1 上一篇 《MySQL性能优化-实践篇1》我们讲了数据库表设计的一些原则,Explain工
阅读全文
摘要:前言 MySQL索引底层数据结构与算法 MySQL性能优化原理-前篇 前两篇说完了索引底层数据结构、性能优化原理的基本概念。本篇将讲讲具体实践。对于一个以数据为中心的应用,数据库的好坏直接影响到程序的性能,因此数据库性能至关重要。一般来说,要保证数据库的效率,要做好以下四个方面的工作: 数据库表设计
阅读全文
摘要:前言 性能优化(Optimize)指的是在保证系统正确性的前提下,能够更快速响应请求的一种手段。而且有些性能问题,比如慢查询等,如果积累到一定的程度或者是遇到急速上升的并发请求之后,会导致严重的后果,轻则造成服务繁忙,重则导致应用不可用。它对我们来说就像一颗即将被引爆的定时炸弹一样,时刻威胁着我们。
阅读全文
摘要:阿里巴巴java开发手册(2020版) 2020版 链接: pan.baidu.com/s/1Zls_FUBK… 密码: titz 2019版 链接: pan.baidu.com/s/1cvCVQvjm… 密码: j74h 2018版 链接: pan.baidu.com/s/1FbabpNhL… 密
阅读全文
摘要:转自:一角钱技术 https://blog.csdn.net/org_hjh/article/details/108553522 前言 在 MySQL 官方提到,改善操作性能的最佳方法 [SELECT](https://dev.mysql.com/doc/refman/5.7/en/select.h
阅读全文
摘要:前言 前面我们讲了MySQL数据库底层的数据结构与算法、MySQL性能优化篇一些内容。以及上篇讲了MySQL的行锁与事务隔离级别。本篇再重点来讲讲锁类型和加锁原理。 首先对mysql锁进行划分: 按照锁的粒度划分:行锁、表锁、页锁 按照锁的使用方式划分:共享锁、排它锁(悲观锁的一种实现) 还有两种思
阅读全文
摘要:前言 Full GC相对于Minor GC来说,停止用户线程的STW(stop the world)时间过长,至少慢10倍以上,所以要尽量避免,首先说一下Full GC可能产生的原因,接着给出排查方法以及解决策略。 Full GC产生原因 下图为与产生Full GC相关的内存区域,初生代、老年代、以
阅读全文
摘要:大家都知道生产中可以使用volatile达到保证可见性和指令重排的目的。但是对其实现原理并不是很清楚,为了加深学习和理解感觉很有必要来写篇博客总结一下。 JMM—java内存模型 想知道volatile实现原理首先得去了下解JMM,我们都知道JVM会为每一个thread开辟一块自己的工作空间,在我们
阅读全文
摘要:操作系统用户态和内核态之间的切换过程 1. 用户态和内核态的概念区别 究竟什么是用户态,什么是内核态,这两个基本概念以前一直理解得不是很清楚,根本原因个人觉得是在于因为大部分时候我们在写程序时关注的重点和着眼的角度放在了实现的功能和代码的逻辑性上,先看一个例子: 1)例子 void testfork
阅读全文
摘要:转自 https://www.jianshu.com/p/8def04b34b3c 首先,了解状态机是什么,我们为什么需要状态机!举个最简单例子,请假,作为一个最底层程序员,每次请假都要领导层层审批,而假有分为很多种,事假,病假,婚假,年休假等等,当然选择请的假不同,审批标准也不同,不同的假单需要走
阅读全文
摘要:从第一次认识到状态机这个概念,程序设计似乎就从未离开过它,通过广大网友的技术分享,本文对状态机再做一次总结。了解什么是状态机图,它的使用场景是什么? 一、什么是状态机? 做产品的时候,我们总能遇到一些比较复杂的逻辑问题,而普通的流程图,或时序图对于对象和状态的解读缺乏直观的描述。 这里我们推荐使用简
阅读全文
摘要:状态机是什么?状态机应该如何去应用呢?状态机可以对业务状态进行梳理,一目了然,之后可以根据业务场景不断增加。 在工作过程中,意外接触了一个词——“状态机”,这是个什么意思,可以为我们做产品提供怎样的用处? 作为产品,为什么需要学习状态机呢? 在刚进入公司的时候,根据公司产品做流程图的时候,发现自己经
阅读全文
摘要:一、背景 二、幂等性概念 三、技术方案 总结 一、背景 我们实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果。 例如: 前端重复提交选中的数据,应该后台只产生对应这个数据的一个反应结果。 我们发起一笔付款请求,应该只扣用户账户一次钱,当遇到网络重发或系统bug重发,也应该只
阅读全文
摘要:虽然我们都知道有26个设计模式,但是大多停留在概念层面,真实开发中很少遇到,Mybatis源码中使用了大量的设计模式,阅读源码并观察设计模式在其中的应用,能够更深入的理解设计模式。 Mybatis至少遇到了以下的设计模式的使用: Builder模式,例如SqlSessionFactoryBuilde
阅读全文
摘要:本文的面试题如下:Redis 持久化机制缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题热点数据和冷数据是什么Memcache与Redis的区别都有哪些?单线程的redis为什么这么快redis的数据类型,以及每种数据类型的使用场景,Redis 内部结构redis的过期策略以及内存淘汰机制【~
阅读全文
摘要:接口的幂等性的多重考虑,你会了吗? 文章目录 目录 前言 正文 1 接口幂等性 1.1 案例 2 解决方案 2.1 token机制 2.2 去重表 2.3 redis 的 SETNX键值 2.4 状态机幂 2.5 乐观锁(更新操作) 2.6 悲观锁(更新操作) 结语 前言 今天的主题:接口幂等性的解
阅读全文
摘要:为什么需要一致性 数据不能存在单个节点(主机)上,否则可能出现单点故障。 多个节点(主机)需要保证具有相同的数据。 一致性算法就是为了解决上面两个问题。 一致性算法的定义 一致性就是数据保持一致,在分布式系统中,可以理解为多个节点中数据的值是一致的。 一致性的分类 强一致性 说明:保证系统改变提交以
阅读全文
摘要:zookeeper的定位:分布式协调服务 所谓分布式协调服务,可以在分布式系统中共享配置,协调锁资源,提供命名服务 。 Zookeeper的数据模型 Zookeeper的数据模型是什么样子呢?它很像数据结构当中的树,也很像文件系统的目录。 树是由节点所组成,Zookeeper的数据存储也同样是基于节
阅读全文
摘要:上一篇说负载均衡的时候,提到redis是用一致性hash算法,但是有网友指出redis是用hash slot算法的,学业未精的我,又去学习一番。 redis cluster 有固定的 16384 个 hash slot,对每个 key 计算 CRC16 值,然后对 16384 取模,可以获取 key
阅读全文
摘要:redis cluster集群通过分片的方式来保存数据库中键值对:集群的整个数据库被分为16384个槽(slot), 数据库中的每个键都属于这16384个槽的其中一个,集群中的每个节点可以处理0个或者最多16384个槽 当数据库中的16384个槽都有节点在处理时,集群处于上线状态(ok);相反地,如
阅读全文
摘要:概要 ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。 本文仅阐述ZooKeeper工作原理,对于如何使用ZooKeeper本文不做讨论。 ZooKeeper的特性 原子性:一个update操作不是成功
阅读全文
摘要:ZooKeeper为高可用的一致性协调框架,自然的ZooKeeper也有着一致性算法的实现,ZooKeeper使用的是ZAB协议作为数据一致性的算法,ZAB(ZooKeeper Atomic Broadcast )全称为:原子消息广播协议;ZAB可以说是在Paxos算法基础上进行了扩展改造而来的,Z
阅读全文
摘要:维基的简介:Paxos算法是莱斯利·兰伯特(Leslie Lamport,就是 LaTeX 中的"La",此人现在在微软研究院)于1990年提出的一种基于消息传递且具有高度容错特性的一致性算法。 Paxos算法目前在Google的Chubby、MegaStore、Spanner等系统中得到了应用,H
阅读全文
摘要:目录 1. ZooKeeper是什么? 2. ZooKeeper提供了什么? 3. Zookeeper文件系统 4. ZAB协议? 5. 四种类型的数据节点 Znode 6. Zookeeper Watcher 机制 -- 数据变更通知 7. 客户端注册Watcher实现 8. 服务端处理Watch
阅读全文
摘要:redis 内部使用文件事件处理器 file event handler,这个文件事件处理器是单线程的,所以 redis 才叫做单线程的模型。 它采用 IO 多路复用机制同时监听多个 socket,根据 socket 上的事件来选择对应的事件处理器进行处理。 Redis基于Reactor模式开发了自
阅读全文
摘要:写在前面 本学习教程所有示例代码见GitHub:https://github.com/selfconzrr/Redis_Learning Redis 的 pipeline(管道)功能在命令行中没有,但 redis 是支持 pipeline 的,而且在各个语言版的 client 中都有相应的实现。 由
阅读全文
摘要:一、pipeline出现的背景: redis客户端执行一条命令分4个过程: 发送命令-〉命令排队-〉命令执行-〉返回结果 这个过程称为Round trip time(简称RTT, 往返时间),mget mset有效节约了RTT,但大部分命令(如hgetall,并没有mhgetall)不支持批量操作,
阅读全文
摘要:分支限界法 一、基本描述 类似于回溯法,也是一种在问题的解空间树T上搜索问题解的算法。但在一般情况下,分支限界法与回溯法的求解目标不同。回溯法的求解目标是找出T中满足约束条件的所有解,而分支限界法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件的解中找出使某一目标函数值达到极大或极小的解,
阅读全文
摘要:1、概念 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。 回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术
阅读全文
摘要:贪心算法 一、基本概念: 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。 贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必
阅读全文
摘要:一、基本概念 动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。 二、基本思想与策略 基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为
阅读全文
摘要:分治算法 https://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741370.html 一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更
阅读全文
摘要:一、读写过程 1、读:(1)先读cache,如果数据命中则返回(2)如果数据未命中则读db(3)将db中读取出来的数据入缓存2、写:(1)先淘汰cache(2)再写db 二、数据不一致原因 先操作缓存,在写数据库成功之前,如果有读请求发生,可能导致旧数据入缓存,引发数据不一致。 在分布式环境下,数据
阅读全文
摘要:前言 正文 上几期吊打系列我们提到了Redis的很多知识,还没看的小伙伴可以回顾一下 《吊打面试官》系列-Redis基础 《吊打面试官》系列-缓存雪崩、击穿、穿透 《吊打面试官》系列-Redis哨兵、持久化、主从、手撕LRU 那提到Redis我相信各位在面试,或者实际开发过程中对基本类型的使用场景,
阅读全文
摘要:这一篇是我重写的,之前写过一篇发现面试的时候问的问题虽然大概能解决,但是有几个点没有整理到位,所以自己给自己列出了很多面试常见的问题,准备一篇一篇去解决。本文整体思路是延续之前的那篇文章,在此基础之上添加了几个点而已。 布隆过滤器主要是在redis中问的比较多,因此像这种数据结构类的,主要是考原理以
阅读全文
摘要:布隆过滤器 在讲述布隆过滤器的原理之前,我们先思考一个问题,如果想要判断一个元素是否存在,你通常会怎么做?一般的做法都是将其保存起来然后通过比较确认,一共会有如下几种情况: 如果使用线性表或者数组存储,则查找的时间复杂度为 O(n)。 如果使用树存储,则查找的时间复杂 度为 O(logn)。 如果使
阅读全文
摘要:一、应用场景 网页爬虫对 URL 去重,避免爬取相同的 URL 地址; 反垃圾邮件,从数十亿个垃圾邮件列表中判断某邮箱是否垃圾邮箱; Google Chrome 使用布隆过滤器识别恶意 URL; Medium 使用布隆过滤器避免推荐给用户已经读过的文章; Google BigTable,Apache
阅读全文
摘要:介绍 我们以演进的方式来逐渐认识布隆过滤器。先抛出一个问题爬虫系统中URL是怎么判重的?你可能最先想到的是将URL放到一个set中,但是当数据很多的时候,放在set中是不现实的。 这时你就可能想到用数组+hash函数来实现了。 index = hash(URL) % table.length 即求出
阅读全文
摘要:首先说明一点,这个过滤器拦截其实是不靠谱的,比如说我的一篇文章是介绍sql注入的,或者评论的内容是有关sql的,那会过滤掉;且如果每个页面都经过这个过滤器,那么效率也是非常低的。 如果是要SQL注入拦截,可以在数据访问上层的业务层用方法的形式进行手动过滤还靠谱些。 或者使用SQL的参数形式进行,这个
阅读全文
摘要:简介 SQL注入就是客户端在向服务器发送请求的时候,sql命令通过表单提交或者url字符串拼接传递到后台持久层,最终达到欺骗服务器执行恶意的SQL命令; 实践 项目中如何防止sql注入呢,有以下三点: 前端表单进行参数格式控制; 后台进行参数格式化,过滤所有涉及sql的非法字符; //参考:http
阅读全文
摘要:一、SQL注入简介 SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库。 二、SQL注入攻击的总体思路 1.寻找到SQL注入的位置 2.判断服务器类型和后台数据库类型 3.针对不通的服务器和数据库特
阅读全文
摘要:一、关于 redis key: 1、是二进制安全的,也就是说,你可以使用任何形式的二进制序列来作为key,比如一个string,或者一个jpg图片的数据,需要说明的是,空字符串也是一个有效的key。 2、不建议使用过长的key,影响内存占用及数据查性能,对于过长的key,可以通过hash(例如SHA
阅读全文
摘要:1、什么是SDS? Redis 自定的字符串存储结构,关于redis,你需要了解的几点!中我们对此有过简要说明。 Redis 底层是用C语言编写的,可是在字符存储上,并未使用C原生的String类型,而是定义了自己的字符串结构 Simple Dynamic Stirng,简称SDS。 SDS基本结构
阅读全文
摘要:前言: 阅读 redis设计与实现 一书的记录。未完待续。。。 redis我们都知道有5种数据类型,分别是string,list,hash,set,zset,那么你知道它们的底层数据结构实现吗? redis底层有6种数据结构,分别是简单动态字符串(SDS),链表,字典,跳跃表,整数集合,压缩列表。
阅读全文
摘要:目录 1、演示数据类型的实现 2、简单动态字符串 3、链表 4、字典 5、跳跃表 6、整数集合 7、压缩列表 8、总结 上一篇博客我们介绍了 redis的五大数据类型详细用法,但是在 Redis 中,这几种数据类型底层是由什么数据结构构造的呢?本篇博客我们就来详细介绍Redis中五大数据类型的底层实
阅读全文
摘要:1.双向链表 LinkedListpackage LRU; import java.util.Iterator;import java.util.LinkedList; /** * LRU: 最近最少使用算法 。 最近最少使用的元素,在接下来一段时间内,被访问的概率也很低。 * 即最近被使用的元素,
阅读全文
摘要:前言: 是时候了解一下SSO相关的知识了,本篇主要是概念篇,发现网上两篇不错的文章,简单整合了一下,原文链接:https://www.cnblogs.com/Java3y/p/10877465.htmlhttps://www.cnblogs.com/EzrealLiu/p/5559255.html
阅读全文
摘要:前言 我们都知道一个系统最重要的是数据,数据是保存在数据库里。但是很多时候不单止要保存在数据库中,还要同步保存到Elastic Search、HBase、Redis等等。 这时我注意到阿里开源的框架Canal,他可以很方便地同步数据库的增量数据到其他的存储应用。所以在这里总结一下,分享给各位读者参考
阅读全文
摘要:一、前言 Binlog是MySQL数据库的二进制日志,用于记录用户对数据库操作的SQL语句(除了数据查询语句)信息。而Binlog格式也有三种,分别为STATEMENT、ROW、MIXED。STATMENT模式基于SQL语句的复制,每一条会修改数据的SQL语句会记录。ROW模式除了记录SQL语句之外
阅读全文
摘要:在Java语言了中,所有类似“ABC”的字面值,都是String类的实例;String类位于java.lang包下,是Java语言的核心类,提供了字符串的比较、查找、截取、大小写转换等操作;Java语言为“+”连接符(字符串连接符)以及对象转换为字符串提供了特殊的支持,字符串对象可以使用“+”连接其
阅读全文
摘要:一、String类 想要了解一个类,最好的办法就是看这个类的实现源代码,来看一下String类的源码: public final class String implements java.io.Serializable, Comparable<String>, CharSequence { /**
阅读全文
摘要:从网络编程基本概念说起 我们常常使用HTTP协议来传输各种格式的数据,其实HTTP这个应用层协议的底层,是基于传输层TCP协议来实现的。TCP协议仅仅把这些数据当做一串无意义的数据流来看待。所以,我们可以说:客户端与服务器通过在建立的连接上发送字节流来进行通信。这种C/S架构的通信机制,需要标识通信
阅读全文
摘要:基础知识 操作系统 操作系统本身可以看做一个特殊的软件,只有操作系统能直接接触计算机硬件,其他软件要访问硬件都必须通过操作系统 操作系统对硬件做抽象,封装接口给软件调用 程序员 ↓ 软件 ↓ 操作系统(在内存中) ↓ IO设备(网卡、磁盘、键盘、鼠标等) 常见的操作系统有:Windows、Linux
阅读全文
摘要:知识总结 1. sychronize锁的五个特性:原子性,可见性,有序性,可重入性,非公平锁 2.sychronized的两种用法:方法,代码块 3. sychonized的实现:反编译后,可以看到 同步块是由monitorenter指令进入,然后monitorexit释放锁 4. sychroni
阅读全文
摘要:前言 面试题:synchronized是可重入锁吗? 答案:synchronized是可重入锁。ReentrantLock也是的。 1、什么是可重入锁呢? 关于什么是可重入锁,我们先来看一段维基百科的定义。 若一个程序或子程序可以“在任意时刻被中断然后操作系统调度执行另外一段代码,这段代码又调用了该
阅读全文
|