- 博客(46)
- 资源 (3)
- 收藏
- 关注
原创 DevOps简介
痛点(背景):开发和运维人员之间的摩擦导致了各种支离破碎的、重复的、不间断的集成和交付流水线。开发人员希望能访问所有东西,以便持续迭代,让用户使用起来和持续地快速发布。运维人员希望将所有东西锁起来,保护业务、用户和品质。这些矛盾在不经意间导致了很难做到一种自动化的流程,进而导致发布周期晚于预期。目的(好处):devops就是为了让开发、运维和QA可以高效协作的流程。(可以把DevOps看作开发、技术运营和质量保障(QA)三者的交集。)devops工具:代码管理(SCM):GitH..
2020-07-10 00:13:39 490
原创 Spring核心原理篇-源码分析
Spring框架来源及核心简介 Spring源码下载 Spring IOC Spring DI Spring AOP Spring MVC
2020-06-29 23:51:39 257
原创 Spring来源-核心简介
来源-核心简介:历史:在传统应用程序开发中,一个完整的应用是由一组相互协作的对象组成。所以开发一个应用除了要开发业务逻辑之外,最多的是关注如何使这些对象协作来完成所需功能,而且要低耦合、高聚合。如今:早在 2007年,一个基于 Java 语言的开源框架正式发布,取了一个非常有活力且美好的名字,叫做 Spring。它是一个开源的轻量级Java SE(Java标准版本)/Java EE(Java企业版本)开发应用框架,其目的是用于简化企业级应用程序开发。应用程序是由一组相互协作的对象组成。...
2020-06-29 23:49:34 2271
原创 SpringBoot 新瓶装旧酒它不香吗
一 SpringBoot爱之初体验1,what is?Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can "just run".We take an opinionated view of the Spring platform and third-party libraries so you can get started with ..
2020-05-28 01:49:40 415
原创 Spring整体架构
https://spring.io/一、Spring整体架构1.1 Why?Spring makes programming Java quicker, easier, and safer for everybody. Spring’s focus on speed, simplicity, and productivity has made it theworld's most p...
2020-03-13 15:57:22 195
转载 Java线程池原理及使用
目录一.Java中的ThreadPoolExecutor类二.深入剖析线程池实现原理三.使用示例四.如何合理配置线程池的大小 一.Java中的ThreadPoolExecutor类java.uitl.concurrent.ThreadPoolExecutor类是线程池中最核心的一个类,因此如果要透彻地了解Java中的线程池,必须先了解这个类。下面我们来看一下Threa...
2019-04-12 14:58:41 146
原创 Java8新特性
1 语言1.1Lambda表达式和函数式接口 Lambda表达式(也称为闭包)是Java 8中最大和最令人期待的语言改变。它允许我们将函数当成参数传递给某个方法,或者把代码本身当作数据处理:函数式开发者非常熟悉这些概念。很多JVM平台上的语言(Groovy、Scala等)从诞生之日就支持Lambda表达式,但是Java开发者没有选择,只能使用匿名内部类代替Lambda表达式。L...
2019-04-11 18:36:52 175
转载 《Java并发编程的艺术》笔记
目录第一章 并发编程的挑战第二章 Java并发机制的底层实现原理第三章 Java内存模型volatile的内存语义锁的内存语义final域的内存语义第四章 Java并发编程基础第五章 Java中的锁队列同步器(AbstractQueuedSynchronizer)LockSupport第六章 Java并发容器和框架阻塞队列Fork/Join框架...
2019-04-09 17:59:12 184
原创 MySQL 数据库主键的选择
可能的选择:主键自增长:设置数据库主键自动增长就行。 GUID:为UUID的标准实现,JAVA直接调用API以上两种优缺点:https://blog.csdn.net/Santiago_M/article/details/66477327自定义: GUID+TableCode:分表分库时,加TableCode标识属于哪个库中对应表的数据...
2019-04-09 16:20:03 3146
原创 dubbo 在zookeeper上的数据结构
结构图根节点:dubbo 一级子节点:提供服务的服务名 二级子节点:固定的四个子节点:分别为:consumers、configurators、routers、providerzookeeper 可视化工具 --- zktoolshttps://blog.csdn.net/rongbaojian/article/details/82078368节点名:anyhost=...
2019-04-09 15:53:37 3259
原创 消息中间件选型分析
为什么使用消息队列? 解耦、异步、削峰其实这个话题也是面试官经常问询的问题,问问你消息队列都有哪些使用场景,然后你项目里具体是什么场景,说说你在这个场景里用消息队列是什么期望的一个回答是说,你们公司有个什么业务场景,这个业务场景有个什么技术挑战,如果不用MQ可能会很麻烦,但是你现在用了MQ之后带给了你很多的好处现在你可以下想想你如何回答上述问题,想不起来?好吧我这里先介绍...
2019-03-13 16:31:33 190
原创 对数据库索引的理解
索引目的:加速查询数据的速度索引越多越好?:不是,简历一个索引就会将该字段与索引建立一个独立的树形结构数据,占据空间。索引会加大非查询时的时间,以及增加数据库存储压力。索引类型:聚集索引(主键)、非聚集索引、复合索引聚集索引想要理解索引原理必须清楚一种数据结构「平衡树」(非二叉),也就是b tree或者 b+ tree,重要的事情说三遍:“平衡树,平衡树,平衡树”。当然, 有的数据...
2019-03-11 18:20:32 512
转载 Java并发问题--乐观锁与悲观锁以及乐观锁的一种实现方式-CAS
首先介绍一些乐观锁与悲观锁: 悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。再比如Java里面的同步原语synchronized关键字的实现也是悲观锁。 乐观锁:顾名思义,就是很乐观,每次去拿数...
2019-03-08 16:52:28 134
原创 Mysql的四种隔离级别
本文实验的测试环境:Windows 10+cmd+MySQL5.6.36+InnoDB一、事务的基本要素(ACID) 1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位。 2、一...
2019-03-08 15:15:49 111
原创 HashMap、Hashtable、ConcurrentHashMap的原理与区别
https://www.cnblogs.com/heyonggang/p/9112731.html下面直接来干货,先说这三个Map的区别:HashTable底层数组+链表实现,无论key还是value都不能为null,线程安全,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低,ConcurrentHashMap做了相关优化-锁分段技术 初始size为11,扩容:ne...
2019-03-08 14:37:53 175
原创 分表分库后跨库查询方案
参考:https://www.cnblogs.com/cxxjohnson/p/9048518.html 全局表:有点类似数据字典,数据几乎不变化 字段冗余:设计冗余字段 数据同步:把不同库数据同步到一个库,ETL工具:https://blog.csdn.net/liaomin416100569/article/details/82798879 系统...
2019-03-08 11:19:11 2350
原创 JVM优化
开场白:java幕后的英雄-jvm(Java Virtual Machine)1,why 优化内存溢出:对象占用内存过多。最终会导致内存泄露。内存泄露:GC失效。什么对象会被GC?算法:可达性算法。引用计数法:jvm弃用,不能解决循环依赖的问题。在Java语言里,可作为GC Roots对象的包括如下几种:a.虚拟机栈(栈桢中的本地变量表)中的引用的对象b.方法...
2019-03-05 17:28:05 138
原创 JVM调优常用参数设置
上图:一、堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。典型设置:1、java ...
2019-03-05 09:55:02 1034 1
原创 git 上传本地代码到仓库
git-windows上传本地文件到git仓库:安装git1,进入需要上传git的文件夹,鼠标右键点击git bash成功之后,会多一个.git的文件(可能会隐藏)。2,git init将该文件夹纳入git版本管理3,git add . 将当前文件夹的所有文件纳入git管理注意:第一次需要配置git信息git config --global user.email "...
2019-03-04 11:04:14 561
转载 线程池中的阻塞队列选择
这是一个十分严重的问题自从最近的某年某月某天起,线上服务开始变得不那么稳定。在高峰期,时常有几台机器的内存持续飙升,并且无法回收,导致服务不可用。例如GC时间采样曲线:和内存使用曲线:图中所示,18:50-19:00的阶段,已经处于服务不可用的状态了。上游服务的超时异常会增加,该台机器会触发熔断。熔断触发后,改台机器的流量会打到其他机器,其他机器发生类似的情况的可能性会提高...
2019-02-11 16:04:41 23726 12
原创 mysql优化之58同城军规
军规适用场景:并发量大、数据量大的互联网业务军规:介绍内容解读:讲解原因,解读比军规更重要一、基础规范(1)必须使用InnoDB存储引擎解读:支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利用率更高(2)必须使用UTF8字符集 UTF-8MB4解读:万国码,无需转码,无乱码风险,节省空间(3)数据表、数据字段必须加入中文注释解读:N年后谁tm知道这个r1,r...
2019-01-21 17:54:11 226
原创 Mybatis防止sql注入
案例分析SQL注入,是一种常见的攻击方式。攻击者在界面的表单信息或URL上输入一些奇怪的SQL片段(例如“or ‘1’=’1’”这样的语句),有可能入侵参数检验不足的应用程序。所以,在我们的应用中需要做一些工作,来防备这样的攻击方式。在一些安全性要求很高的应用中(比如银行软件),经常使用将SQL语句全部替换为存储过程这样的方式,来防止SQL注入。这当然是一种很安全的方式,但我们平时开发中,可能...
2019-01-10 17:12:04 462
原创 mysql性能优化
Sql优化顺序 1,数据库是否设置合理 基本满足三范式第一范式(确保每列保持原子性) 第二范式(确保表中的每列都和主键相关) 第三范式(确保每列都和主键列直接相关,而不是间接相关) 性能比规范更重要 2,业务sql的优化 3,数据的配置参数优化 4,DB服务器硬件优化 5,操作系统的优化 业务的sq...
2019-01-01 22:20:26 190
原创 分布式基础之序列化与反序列化
目录序列化与反序列化,Why?序列化的意义一个简单实例JAVA序列化的高阶认识serialVersionUID 的作用静态变量序列化父类的序列化Transient 关键字序列化的存储规则序列化实现深克隆常见的序列化技术XML 序列化框架JSON 序列化框架Hessian 序列化框架Protobuf 序列化框架序列化技术的选型...
2018-12-05 17:40:34 386
原创 分布式通信协议-TCP/IP与常用IO方式
目录TCP传输过程 IP 协议和 TCP/UDP 协议TCP 是如何做到可靠传输的组播协议 MulticastIO:BIO与NIO、AIO 网络领域的知识协议:tcp、udp、multicast IO(BIO、NIO、AIO) Socket NIO(Netty/Mina) 序列化和反序列化 TCP传输过程http请求:一个 http 请求,在整...
2018-12-04 10:21:30 2209
原创 分布式系统的架构演进
目录分布式系统的意义分布式架构的常见概念架构的发展过程分布式系统的冯洛伊曼模型分布式系统的难点分布式系统的意义 升级单机处理能力的性价比越来越低:单机的处理能力主要依靠 CPU、内存、磁盘。通过更换硬件做垂直扩展的方式来提升性能,成本会越来越高。 单机处理能力存在瓶颈:单机处理能力存在瓶颈,CPU、内存都会有自己的性能瓶颈,也就是说就算你是土豪不惜成本去提升硬件,但是...
2018-11-29 21:43:55 1458
原创 分布式架构设计概述
目录主流架构模型-SOA 架构和微服务架构领域驱动设计及业务驱动划分分布式架构的基本理论 CAP、BASE 以及应用什么是分布式架构下的高可用设计加速静态内容访问速度的CDN灰度发布 主流架构模型-SOA 架构和微服务架构SOA 全称(Service Oriented Architecture),中文意思为“面向服务的架构”,他是一种设计方法,其中包含多个服...
2018-11-29 21:43:40 755
原创 ActiveMq-Spring整合
1,引入jar<dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-all</artifactId> <version>5.11.0</version></dependency&
2018-11-28 17:29:58 190
原创 SVN报错:Error Updating changes: svn: E155037
SVN不能更新了,也不能提交了。网上搜了一下,是因为SVN操作冲突了。按照提示的意思在项目Subversion下面Cleanup了一把,可是没用,这个错还在,依然无法更新提交。这种情况下,要么删除项目,重新checkout,代价太大。要么用这个方法解决:SVN的操作信息存放在一个叫做“work queue”的表里,而work queue表存放在本地SVN数据库文件wc.db里面。这属于...
2018-11-09 14:30:21 1718 1
原创 Java设计模式之模板模式
一 初探定义一个模板结构,将具体内容延迟到子类去实现。二 运用场景一般运用于需要多个步骤完成,且有一些公共(父类实现,子类继承复用)的步骤。对于非公共部分需要子类定制化实现。如jdbc将连接开闭,语句集关闭,结果集关闭作为公共部分,将语句集的实现及结果集获取作为定制化的实现。模板方法模式定义一个操作中的算法的骨架,将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构...
2018-11-08 16:14:30 129
原创 Java设计模式之策略模式
一 初探 策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。二 使用场景支付方式算法策略、交通方式算法策略、不同顾客支付算法策略等等。以下支付方式选择策略举例。策略接口/** * 策略接口(抽象类也可以) */public interface ...
2018-11-08 11:06:11 145
原创 Java设计模式之单例多例模式
一 初识java的单例模式主要有四种实现方式:饿汉式、懒汉式、双重检查锁式、静态内部类。废话不多说,直接上代码饿汉式缺点:浪费空间。不管用不用都在类装载时初始化对象。public class SingletonHungry { private static final SingletonHungry instance = new SingletonHungry();...
2018-11-07 17:50:24 424
转载 数据结构与算法
一 初探二 Java常用解析转自:http://blog.csdn.net/column/details/datastructureinjava.html 目录 (1)数据结构与算法概念解析 (2)数据结构之数组 (3)数据结构之栈 (4)数据结构之队列 (5)数据结构之链表 (6)数据结构之二叉树 (7)数据结构之霍夫曼树 (8)数据结构之红黑树(一)——基础分析 (9)数据结构之...
2018-11-07 14:56:10 290
原创 Java设计模式之工厂模式
一 初探 java工厂模式分为:简单工厂模式(静态工厂),工厂方法模式,抽象工厂模式。直接上图UML:二:解析,直接上代码:1,简单工厂模式(静态工厂)SimpleProdcutFactory为一般类,含有static方法creat(),所以也叫静态工厂。 creat()方法中用if或者switch做逻辑判断生产相应对象优点:最大的优点在于工厂类中包含了必要的逻辑,根...
2018-11-06 18:35:46 133
原创 JAVA多线程初识
一,初识1,什么是线程呢是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行线程是轻量级的进程 线程没有独立的地址空间(内存空间) 线程是由进程创建的(寄生在进程) 一个进程可以拥有多个...
2018-11-05 18:46:01 188
原创 JDK源码之IO
一 初识 1,IO原理IO流用来处理设备之间的数据传输。 Java程序中,对于数据的输入/输出操作以"流(stream)" 的方式进行。 java.io包下提供了各种"流"类和接口,用以获取不同种类的数据,并通过标准的方法输入或输出数据。2,IO流的分类按操作数据单位不同分为:字节流(8 bit),字符流(16 bit)按数据流的流向不同分为:输入流,输出流 按...
2018-10-31 17:25:52 309
原创 JDK源码之集合
一 初识1,在这里,集合类分为了Map和Collection两个大的类别。2,处于图片左上角的那一块灰色里面的四个类(Dictionary、HashTable、Vector、Stack)都是线程安全的,可是它们都是JDK的老的遗留类。如今基本都不怎么使用了,都有了相应的取代类。当中Map是用来取代图片中左上角的那个Dictionary抽象类(Map的官方文档里面有说明)。官方推荐使用M...
2018-10-30 16:48:51 255
原创 JDK源码之基础类
一 概述1、Java,是一套语言规范,例如规定了变量如何定义、控制语句如何写等,提供基本的语法规范。JDK是java自带的一套调用组件,是对基本java语法规范的进一步封装,jdk中都是使用java基本的语法来写的,使用JDK能够更好的使用java。2、在整个JDK API中,大约包含1200个包,包名主要有三种:java、javax和org。其中以java开头的包名是JDK的基础语言包,...
2018-10-29 14:02:49 474 1
原创 Spark(二) :基本架构解析
1,spark基础及体系架构1.1 spark why? Apache Spark是一个围绕速度、易用性和复杂分析构建的大数据处理框架,最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apache的开源项目之一,与Hadoop和Storm等其他大数据和MapReduce技术相比,Spark有如下优势:Spark提供了一个全面、统一的框架用于管理各种有着不同性...
2018-08-13 18:23:54 652
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人