- 博客(103)
- 收藏
- 关注
转载 一文让你明白CPU上下文切换
我们都知道,Linux 是一个多任务操作系统,它支持远大于 CPU 数量的任务同时运行。当然,这些任务实际上并不是真的在同时运行,而是因为系统在很短的时间内,将 CPU 轮流分配给它们,造成多任务同时运行的错觉。而在每个任务运行前,CPU 都需要知道任务从哪里加载、又从哪里开始运行,也就是说,需要系统事先帮它设置好CPU 寄存器和程序计数器什么是 CPU 上下文CPU 寄存器和程序计数器就是 CPU 上下文,因为它们都是 CPU 在运行任何任务前,必须的依赖环境。CPU 寄存器是 CPU 内置的容量小、但速
2021-04-19 11:55:47
209
原创 第一章 计算机网络概述
第一节 计算机网络基本概念1. 计算机网络的概念计算机网络是互联的、自治的计算机集合。2. 网络协议的概念⭐️计算机在利用网络进行数据交换的时候,必须遵循一些规则和约定,这些规则和约定就是网络协议。协议的三要素语法、语义、时序。语法定义实体交换信息的格式和结构。语义定义交换信息中的控制信息。时序定义实体之间交换信息的顺序。3. 计算机网络的功能⭐️计算机网络的功能就是在不同的主机之间实现信息交换。交换信息包括硬件资源共享、软件资源共享以及信息资源共享。4. 计算机网络的分类4
2021-03-21 20:43:17
589
1
原创 如何学习新技术
你好,这里是卖桃者说。很多人问我如何高效地学习开源项目,今天就给大家推荐华仔这篇文章,内容来自《从 0 开始学架构》,以下是全文。你好,我是华仔。今天这期“特别放送”,我想和你聊聊如何高效地学习开源项目,一方面澄清开源项目学习过程中的几个误区,另一方面谈谈我自己具体实践时的一套方法论。得益于开源运动的蓬勃发展,众多技术顶尖的公司、团队或者个人通过开源的方式向技术社区贡献了许多优秀的开源项目,一方面大大促进了整体技术的发展,另一方面大大减轻了中小公司和团队在技术方面的投入压力,让团队能够更加聚焦于业务。开源项
2021-03-02 16:31:44
250
原创 Fiddler抓包工具的使用
一、初识Fiddler1. 什么是Fiddler?Fiddler是一个蛮好用的抓包工具,可以将网络传输发送与接受的数据包进行截获、重发、编辑、转存等操作。也可以用来检测网络安全。2. 下载地址Fiddler 离线下载地址:https://pan.baidu.com/s/1bpnp3Ef 密码:5skw二、Fiddler的安装和使用1. 安装正常安装便可。安装完成界面如下:2. 使用当打开Fiddler后,使用电脑进行的任意请求都会被Fiddler拦截;我们便可以查看这些拦截到的请求。
2020-10-28 23:43:47
298
原创 Lombok的使用
Lombok的使用1. Lombok是什么?Lombok项目是一个Java库,它会自动插入编辑器和构建工具中,Lombok提供了一组有用的注释,用来消除Java类中的大量样板代码。2. Lombok的使用2.1 IDEA中Lombok插件安装在使用Lombok前,需要在编辑工具中安装Lombok的插件。2.2 在项目中导入Lombok的依赖<!-- lombok表达式 --><dependency> <groupId>org.projectlom
2020-10-28 23:12:46
155
原创 Sentinel的使用
Sentinel的使用1. 使用前简单说明Sentinel 的使用可以分为两个部分:核心库(Java 客户端):不依赖任何框架/库,能够运行于 Java 7 及以上的版本的运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持。控制台(Dashboard):控制台主要负责管理推送规则、监控、集群限流分配管理、机器发现等。2. Sentinel + Spring cloud的整合使用⭐️2.1 配置微服务接入Sentinel2.1.1 导入依赖<depen
2020-09-21 21:27:08
1752
原创 Alibaba Sentinel是什么?
Sentinel1. 定义Sentinel是以面向微服务的轻量级流量控制框架,从流量控制、熔断降级、热点防护、系统负载保护等多个维度保护服务的稳定性。2. 作用保障分布式系统的高可用。3. 特性3.1 丰富的应用场景Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断等业务场景。3.2 完备的时时监控Sentinel提供实时监控服务,可以在控制台监看接入应用的机器运行情况,甚至 50
2020-09-21 21:25:56
515
转载 docker开启mysql启binlog日志
前言 在开发中,需要通过监听mysql的binlog日志文件做到对数据表的监控,由于mysql是部署在docker容器中,还需要解决数据卷的问题 1、通过数据卷的方式开启一个mysql镜像 docker run -p 3307:3306 --name myMysql -v /usr/docker/mysql/data:/var/...
2020-09-20 19:54:31
751
转载 HashMap使用HashMap(int initialCapacity)初始化
说明:1.如果不超过12个键值对,可以不设置 2.如果超出,按initialCapacity = (需要存储的元素个数 / 负载因子) + 1公式计算后设置 3.官方的建议是initailCapacity设置成2的n次幂正例:initialCapacity...
2020-09-12 15:37:11
531
原创 Spring Boot整合其他框架
整合Junit导包<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope></dependency>无配置编写测试类//指定使用spring提供的运行类@RunWith
2020-09-10 13:09:05
161
原创 Spring Boot进阶
Condition接口自定义条件定义条件类:自定义类实现Condition接口,重写 matches 方法,在 matches 方法中进行逻辑判断,返回boolean值 。 matches 方法两个参数:context:上下文对象,可以获取属性值,获取类加载器,获取BeanFactory等metadata:元数据对象,用于获取注解属性。判断条件: 在初始化Bean时,使用 @Conditional(条件类.class)注解使用示例自定义类,实现Condition接口,重
2020-09-10 13:08:30
331
原创 Spring Boot使用
定义Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。 通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域成为领导者。Spring的缺点配置繁琐使用spring,不可避免的需要编写很多配置。依赖繁琐项目的依赖管理也是一件耗时耗力的事情。在环境搭建时,需要分析要导入哪些库的坐标,而且还需要分析导入与之有依赖关系的其他库的坐标,
2020-09-10 13:07:21
152
原创 spring security安全框架实现自动登录(记住我)
登录表单需要添加"记住我"复选框,指定name属性值为"remember-me"<input type="checkbox" name="remember-me" value="true" checked="checked"/>两周之内不必登陆在spring-security安全框架的配置文件中添加以下代码<!--记住我--><security:remember-me remember-me-parameter="remember-me"/>...
2020-08-31 22:40:25
206
原创 Docker的使用
Docker的使用定义Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。诞生于 2013 年初,基于 Go 语言实现, dotCloud 公司出品(后改名为Docker Inc).Docker架构镜像(Image):Docker 镜像(),就相当于是一个 root 文件系统。类似于一个软件安装包。容器:镜像的实例,通
2020-08-23 11:14:15
201
原创 Docker 应用部署实例
一、部署MySQL搜索mysql镜像docker search mysql拉取mysql镜像docker pull mysql:5.6创建容器,设置端口映射、目录映射# 在/root目录下创建mysql目录用于存储mysql数据信息mkdir ~/mysqlcd ~/mysqldocker run -id \-p 3307:3306 \--name=c_mysql \-v $PWD/conf:/etc/mysql/conf.d \-v $PWD/logs:/log
2020-08-23 11:05:04
275
原创 Docker Compose的使用
一、安装Docker Compose# Compose目前已经完全支持Linux、Mac OS和Windows,在我们安装Compose之前,需要先安装Docker。下面我 们以编译好的二进制包方式安装在Linux系统中。 curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose# 设置文
2020-08-23 11:04:06
105
转载 Docker 搭建私有仓库
一、私有仓库搭建# 1、拉取私有仓库镜像 docker pull registry# 2、启动私有仓库容器 docker run -id --name=registry -p 5000:5000 registry# 3、打开浏览器 输入地址http://私有仓库服务器ip:5000/v2/_catalog,看到{"repositories":[]} 表示私有仓库 搭建成功# 4、修改daemon.json vim /etc/docker/daemon.json # 在上述文件中添加
2020-08-23 11:02:19
163
原创 spring-security安全框架的使用
定义Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,充分利用了spirngIOC与AOP功能,为应用系统提供声明式(可以使用注解)的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。Spring Security 的前身是 Acegi Security ,是 Spring 项目组中用来提供安全认证服务的框架。作用Spring Security是一个安全框架,只要用来做权限的校验,提到权限校验,就要引出两个关键词——认
2020-08-17 21:24:06
354
原创 下载文件时HttpServletResponse设置响应头的Content-Disposition属性
Content-Disposition属性有两种类型inline :将文件内容直接显示在页面attachment:弹出对话框让用户下载弹出对话框下载文件response.setHeader(“Content-Disposition”, “attachment; filename=”+fileName);
2020-08-17 20:25:37
1507
原创 Freemarker网页静态化技术
定义Freemarker是一个模板搜索引擎,一个基于模板生成文本输出的工具,采用纯java编写;虽然Freemarker具有一定的编程能力,但是通常还是需要由java程序提供需要显示的数据。核心:模板+数据模型=输出使用场景及作用动态页面模板引擎可以让程序实现界面与数据分离,业务代码与逻辑代码的分离,这就提升了开发效率,良好的设计也使得代码复用变得更加容易。在模板中可以专注如果展示数据,而在模板之外,可以更专注要展示哪些数据。页面静态化使用模板+数据模型,就能能够实现数据的展示,快速
2020-08-16 14:59:54
198
原创 Quartz定时器的使用
什么是Quartz?Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs(定时任务)这样复杂的程序。Jobs实际就是自定义的普通java类。作用能够为每个定时任务设置一个启动运行的时间,以便达到我们的一些需求,如定时清理程序垃圾等。特点完全由Java写成,方便集成(Spring)伸缩性负载均衡高可用性使用场景典型
2020-08-08 20:19:28
218
原创 DataFactory快速生成测试记录
DataFactory定义DataFactory是一款大数据生成工具,支持常用数据库,可以按照数据的一些规律进行大批量的数据生成。所需软件资源链接:https://pan.baidu.com/s/1Z_keX4ikueCIh4MsJDzIqQ提取码:bnw6前置工作安装vcredist_x86安装mysql驱动所需简单,一直下一步就行安装mysql驱动简单,一直下一步就行DataFactory安装解压安装安装也非常简单,一直往下安装就行。启动注
2020-08-08 09:01:50
244
1
原创 使用maven插件自动生成数据层代码
使用的插件maven-generatormavne插件<!--自动生成数据层代码--><plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.7</version> <config
2020-08-08 08:55:57
206
原创 Maven实现模块分离
为什么要做模块分离?以前,我们编写项目的时候,都是在一个maven项目中完成,并且在其中体现MVC分层思想;但是在实际开发中,一个项目都是以团队的形式进行开发,并且业务功能增多,如果还在一个maven模块中进行开发,就不能实现良好的管理,所以我们要进行模块的划分,将每个业务模块单独抽取出来,形成一个新的maven模块,便于团队开发和管理。模块划分如上图所示,将一个maven项目分化为多个maven模块,起到分离的效果,方便管理,实现低耦合的思想。模块与模块之间怎么体现依赖关系?在以前,我们数据层
2020-07-31 08:09:17
666
2
原创 Dubbo的高级特性
序列化序列化是什么?Dubbo是 Alibaba 开源的分布式服务框架远程调用框架,在网络间传输数据,就需要通信协议和序列化。默认使用的传输协议是dubbo:// ,该传输协议需要服务(方法)的参数及返回值需实现 Serializable 接口。目的在网络传输间传输数据。使用配置协议:<dubbo:protocol name="dubbo" port="20880" />多端口:<dubbo:protocol id="dubbo1" name="dub
2020-07-30 19:52:52
334
1
原创 Dubbo概述与入门
Dubbo是什么?Dubbo是阿里巴巴公司的一款开源分布式服务框架,性能优秀,使用应用可以通过高性能的 RPC (远程调用)实现服务的输出和输入功能,可以和 Spring框架无缝集成。Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。Dubbo能做什么?透明化的远程方法调用使用dubbo的远程调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。软负载均衡及容错机制
2020-07-30 19:52:01
122
原创 互联网项目的特点
用户的使用需求用户对于一个互联网项目的使用需求主要分为美观、功能、速度、稳定性。互联网项目的特点用户多流量大,并发高海量数据易受攻击功能繁琐变更快衡量网站的性能指标响应时间:指执行一个请求从开始到最后收到响应数据所花费的总体时间。指系统同时能处理的请求数量。并发连接数:指的是客户端向服务器发起请求,并建立了TCP连接。每秒钟服务器连接的总TCP数量。请求数:也称为QPS(Query Per Second) 指每秒多少请求并发用户数:单位时间内有多少用户吞吐量
2020-07-30 19:50:39
737
原创 Zookeeper实现分布式锁
分布式锁在我们进行单机应用开发,涉及并发同步的时候,我们往往采用synchronized或者Lock的方式来解决多线程间的代码同步问题,这时多线程的运行都是在同一个JVM之下,没有任何问题。但当我们的应用是分布式集群工作的情况下,属于多JVM下的工作环境,跨JVM之间已经无法通过多线程的锁解决同步问题。那么就需要一种更加高级的锁机制,来处理种跨机器的进程之间的数据同步问题——这就是分布式锁。ZooKeeper分布式锁的原理至于为什么是临时顺序节点是因为,临时节点在客户端与服务端断开连接后,自
2020-07-30 19:46:05
101
原创 Curator实现Watch事件监听
Watch事件监听ZooKeeper 允许用户在指定节点上注册一些Watcher,并且在一些特定事件触发的时候,ZooKeeper 服务端会将事件通知到感兴趣的客户端上去,该机制是 ZooKeeper 实现分布式协调服务的重要特性。ZooKeeper 中引入了Watcher机制来实现了发布/订阅功能能,能够让多个订阅者同时监听某一个对象,当一个对象自身状态变化时,会通知所有订阅者。Curator API中引入了 Cache 来实现对 ZooKeeper 服务端事件的监听。Zookeeper提供了三
2020-07-30 19:45:13
1226
原创 通过Curator操作ZooKeeper
CuratorCurator是Netflix公司开源的一套zookeeper客户端框架,解决了很多Zookeeper客户端非常底层的细节开发工作,包括连接重连、反复注册Watcher和NodeExistsException异常等等。Curator 最初是 Netfix 研发的,后来捐献了 Apache 基金会,目前是 Apache 的顶级项目。Curator建立与客户端的连接与关闭连接方式一/** * 创建连接 */@Beforepublic void connectionTest()
2020-07-30 19:44:20
162
原创 ZooKeeper的下载安装
1、环境准备ZooKeeper服务器是用Java创建的,它运行在JVM之上。需要安装JDK 7或更高版本。2、上传将下载的ZooKeeper放到/opt/ZooKeeper目录下#上传zookeeper alt+pput f:/setup/apache-zookeeper-3.5.6-bin.tar.gz#打开 opt目录cd /opt#创建zooKeeper目录mkdir zooKeeper#将zookeeper安装包移动到 /opt/zooKeepermv apache-zook
2020-07-30 19:43:08
123
原创 Zoonkeeper入门使用
Zoookeeper的定义ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,简称zk,是一个中间件。分布式?分布式系统一定是由多个节点组成的系统。其中,节点指的是计算机服务器,而且这些节点一般不是孤立的,而是互通的。这些连通的节点上部署了我们的节点,并且相互的操作会有协同分布式系统对于用户而言,他们面对的就是一个服务器,提供用户需要的服务而已,而实际上这些服务是通过背后的众多服务器组成的一个分布式系统,因此分布式系统看起来像是一个超级计算机一样。zookeeper
2020-07-30 19:39:37
949
原创 分布式和集群的概念和区别
分布式和集群的概念和区别 分布式系统是当前比较热门的话题,说到分布式就不得不提集群和单机,如果要学习分布式就要先对他的概念和功能有所了解一、单机 单机就是把做的系统部署到一台服务器上,,所有的请求业务都由这台服务器处理。显然,当业务增长到一定程度的时候,服务器的硬件会无法满足业务需求。很多人就会想到多部署几台服务器,这就是集群。二、 集群 集群就是单机的多...
2020-07-30 09:07:22
239
原创 CGLib动态代理的原理和实现
jdk动态代理的局限性首先我们知道,使用jdk创建动态代理有个局限,就是他只能为接口创建代理实例,对于那些没有实现接口的业务类,就不能使用jdk动态代理了;所以我们就需要使用CGLib动态代理。CGLib动态代理CGLib是一个强大高性能的代码生成库,被广泛应用于AOP框架,用其提供的方法进行拦截操作。CGLib底层采用的是字节码技术,可以为被代理生成一个子类,而这个子类也就是代理对象,使用此代理对象调用父类中的方法时,都会被回调函数拦截,从而可以进行切面编程,增强方法。CGLib动态代理的实现
2020-07-25 23:35:31
381
转载 web.xml中context-param,listener等作用及加载过程
<context-param>的作用:web.xml的配置中<context-param>配置作用(可在listener和servlet中使用,而ContextLoaderListener及contextConfigLocation则由spring mvc来实现,可读取application.xml等springbean配置)1. 启动一个WEB项目的时...
2020-07-25 16:24:38
318
原创 JAVA中通过Hibernate-Validation进行参数验证
Hibernate-Validation?Hibernate-Validation是Hibernate框架中一套独立的后端校验框架,用于做参数的验证的;它是JSR303-Bean Validation规范的实现方案。JSR?JSR是Java Specification Requests的缩写,意思是Java 规范提案,用于指定java的标准。Bean Validation?Bean Validation是JSR中的303规范,用于提供Bean属性的相关校验规则。Hibernate Validat
2020-07-25 15:53:50
491
1
原创 Git之远程仓库的使用
使用远程仓库的意义我们不仅要将代码保存到本地仓库,还要保存到远程仓库,以防代码的意外丢失。配置SSH公钥和私钥公钥与私钥公钥是与私钥算法一起使用的密钥对的非秘密一半。公钥通常用于加密会话密钥、验证数字签名,或加密可以用相应的私钥解密的数据。公钥和私钥是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),其中的一个向外界公开,称为公钥;另个自己保留,称为私钥。使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密。如用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公
2020-07-25 11:37:29
176
原创 Git之分支操作
分支简介几乎所有的版本控制系统都支持某种形式的分支。使用分支意味着可以把你的工作从开发主线上分离开来,以免影响开发主线。分支的创建和切换使用命令创建分支:git branch 分支名切换分支:git checkout 分支名示例注意:不同分支之间的关系是平行的关系,不会互相影响;没有合并分支的前提下,在不同分支中提交到仓库的东西,独属于某分支。master代表主分支分支的合并合命令git merge 分支名表示将执行的分支与正在使用的分支合并,以当前使用的
2020-07-25 11:30:57
77
原创 Git的入门使用
什么是Git?Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。Git是 [Linus Torvalds](https://baike.baidu.com/item/Linus Torvalds/9336769) (linux创始人)为了帮助管理Linux内核而开发的一个开放源码的版本控制软件。Git的功能代码备份把编写的代码备份到云端,防止出现不可挽回的意外,从而丢失代码。版本控制在开发中,如果代码修改错误,但是解决错误又很麻烦,回退到上一个版本
2020-07-25 11:28:39
104
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人