
javaEE
文章平均质量分 53
leokk111
这个作者很懒,什么都没留下…
展开
-
83-java-countDownLatch
本文架构countDownLatch1.作用这是用来做多线程操作的类,和join方法类似2.构造方法CountDownLatch countDownLatch = new CountDownLatch(1);#这个表示构造一个值为1的对象,当对象的值为0时,阻塞的方法则可继续执行3.阻塞当前线程:countDownLatch.await();#这个方法表示阻塞当前线程,当本对象的值为0时,接着继续执行后面的代码4.将对象的值减1:countDownLatch.countDo原创 2020-06-16 18:20:15 · 95 阅读 · 0 评论 -
82-java-zookeeper(2) -集群/curator/监控
一.zookeeper集群1.集群搭建1.创建一个文件夹,和复制配置zoo.cfg文件2.修改cfg配置文件3.在每一个文件夹中的dataDir下创建myid文件,并且根据配置文件中的信息,设置myid内容为服务器编号4.参照1.2.3步骤,再配置一个服务器5.启动三台服务器 sh zkSevver.sh start xxx.cfg #指定以哪个配置文件启动服务器6.检查服务器状态 sh zkServer.sh status xxx.cfg #检查之地服务器的状态2.zab协议原创 2020-06-16 18:08:43 · 380 阅读 · 0 评论 -
81-java-zookeeper(1) -zookeeper单机/原生api/应用场景
本文架构如图一.简介1.功能及用途1.维护配置信息2.分布式锁3.集群管理4.生成分布式唯一id2.设计目标及优点优点1.高性能内存,存储数据2.高可用集群部署3.严格顺序访问生成的全局唯一的id,分布式锁对比redisrediszookeeper存储类型内存内存数据类型k-v树形结构性能高中高可用好好目标数据缓存分布式辅助功能应用场景缓存数据库分布式锁/配置中心设计目标由于zooke原创 2020-06-16 11:55:25 · 205 阅读 · 0 评论 -
77-java-springboot(3)-日志
日志基础使用参考文章:https://editor.youkuaiyun.com/md/?articleId=105598438一.springboot默认日志及配置1.默认日志框架springboot默认使用slf4j+logback框架二.切换springboot的日志框架原创 2020-06-12 11:32:38 · 128 阅读 · 0 评论 -
75-java-springboot(1)-概述/配置文件详解
spring boot原创 2020-06-03 09:37:33 · 188 阅读 · 0 评论 -
74-java-网络概述
本文结构原创 2020-06-02 11:22:03 · 125 阅读 · 0 评论 -
73.java项目-IO
IO一.IO是什么?java io是inputstream和outputStream的总称,其实就是java输入和输出的总称.如果换我们来设计的话,有两个问题需要考虑:第一从哪里读写.第二读写出来的结果是什么类型.所以解决第一个问题,我们定义了统一的接口,从不同地方读取,我们就是这个接口的不同实现;解决第二个问题,我们设置了不同的接口,如流式读取,我们的顶层接口为inputStream/outputStream,而字符型顶层接口为reader和writer.二.IO的分类IO的分类方式原创 2020-06-01 17:00:27 · 193 阅读 · 0 评论 -
72.java项目--maven
maven的架构如图maven原创 2020-05-25 01:26:09 · 148 阅读 · 0 评论 -
71.java项目--nginx
nginx原创 2020-05-21 20:58:30 · 314 阅读 · 0 评论 -
70.java项目--linux
本文的架构如图一.linux概述1.linux的历史概述Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。特点:all is file(一切皆为文件)Linux的基本思想有两点:第一,一切都是文件;第二,每个文件都有确定的用途。其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。至于说Linux是基于Unix的,很大程度上也原创 2020-05-19 00:33:23 · 234 阅读 · 0 评论 -
69.java项目--git/github
本文架构一.git的概述git是一各分布式的版本管理工具,用于代码的管理.1.git和SVN的原理区别svn代码统一交由代码库管理,我们开发人员编写代码的时候需要从远程库下载,再编写.如果代码库宕机或者出现故障,则我们将丢失代码的版本,修改等等,因为我们本地只有代码,没有这个项目的所有变更的细节----这就是单点故障git为了解决svn的单点故障,git在本地同样也有一个本地库,并且代码只有commit到了本地库,在由本地库推送到远程的github仓库,所以如果远程的git如果丢失了,我们原创 2020-05-18 16:45:45 · 526 阅读 · 0 评论 -
68.java项目--redis(3)-redis应用场景及监控及常问面试题
redis应用场景由于redis的高可用和高性能,所以redis在实际生产中有很多的用途:1、缓存在目前的互联网网站中,缓存几乎是网站都在用的,合理的使用缓存不但可以提升网站访问速度,还可以大大降低数据库的压力。Redis不仅提供了键过期功能,也提供了灵活的键淘汰策略,而且拥有相比memcached更丰富的数据类型。所以,现在Redis用在缓存的场合非常多。2、排行榜很多网站都有排行榜的展示,如天猫的月度销量榜单、商品按时间的上新排行榜等。使用Redis提供的有序集合数据结构能方便的实现各种复杂的原创 2020-05-10 22:22:58 · 223 阅读 · 0 评论 -
67.java项目--redis(2)-redis四种模式
redis的模式redis总共有四种模式:单体,分片,哨兵,以及集群,我们采用java代码连接redis.java连接redis的jar包,用很多种,主要有Redisson,Jedis,lettuce.redisson默认实现redis分布式锁;lettuce是springboot-redis-starter默认支持的redis客户端.这里我们一jedis客户端来做步骤演示,步骤:1.单体模式搭建redis服务器步骤:(1)创建一个文件夹single,并且复制redis.conf文件到原创 2020-05-09 17:55:19 · 642 阅读 · 0 评论 -
66.java项目--redis(1)-redis基本介绍
本文的架构如图一.缓存与redis首先本文的讨论局限在服务端分布式缓存的基础之上,前端缓存等暂不在考虑之列.1.什么是缓存?首先由于我们服务端的数据大部分情况是保存在数据库中的,而数据库其实是持久化到磁盘中的,这样才能保证数据不会丢失.但是同时安全和高效通常是互斥的,因为安全存储在磁盘中,必然导致cpu读取数据速度慢.安全是保证了,但是不能保证高效特别是一些热点数据的查询使用,比如我们的...原创 2020-05-08 19:32:57 · 266 阅读 · 0 评论 -
65.java项目--springbatch(批处理)
springbatch一.springbatch概述Spring Batch 是一个轻量级的、完善的批处理框架,旨在帮助企业建立健壮、高效的批处理应用。Spring Batch是Spring的一个子项目,使用Java语言并基于Spring框架为基础开发,使得已经使用 Spring 框架的开发者或者企业更容易访问和利用企业服务。Spring Batch 提供了大量可重用的组件,包括了日志、追...原创 2020-05-06 16:48:02 · 2233 阅读 · 0 评论 -
64.java项目--定时任务及quartz
定时任务本文的架构如图springboot内置定时任务使用springboot内置的定时任务,具体的代码步骤:1.导入依赖,任何的springboot依赖都可以 <dependency> <groupId>org.springframework.boot</groupId> <artifactI...原创 2020-05-06 15:23:08 · 236 阅读 · 0 评论 -
63.java项目-activiti实战项目(9)--shiro+ redis实现分布式系统的认证
shiro一.原创 2020-05-06 10:48:55 · 412 阅读 · 0 评论 -
62.java项目-activiti实战项目(8)--Token(JWT)
本文逻辑一.什么是Token?什么是JWT?token的特点:1.token和cookie一样,把用户认证的和授权的数据保存在客户端2.token和cookie不一样的是,token避免了cookie的跨域问题.所以可以实现跨域.3.token是实现的无状态服务器,也就是服务端不保存用户数据4.Token 可以避免 CSRF 攻击(http://dwz.cn/7joLzx)二....原创 2020-05-05 00:36:55 · 593 阅读 · 0 评论 -
61.java项目-activiti实战项目(7)--权限控制RBAC模型
本文的架构如图权限控制-RBAC模型一.什么是RBAC模型RBAC(全称:Role-Based Access Control)基于角色的权限访问控制,作为传统访问控制(自主访问,强制访问)的有前景的代替受到广泛的关注。在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。在一个组织中,角色是为了完成各种工作而创造,用户则依据它的责...原创 2020-05-04 23:43:12 · 1129 阅读 · 0 评论 -
60.java项目-activiti实战项目(6)--浏览器跨域
浏览器跨域及其解决策略本文的逻辑如图一.什么是跨域?1.什么是浏览器同域跨域的产生来源于现代浏览器所通用的‘同源策略’,所谓同源策略,是指只有在地址的:协议名域名端口名均一样的情况下,才允许访问相同的cookie、localStorage或是发送Ajax请求等等。若在不同源的情况下访问,就称为跨域。2.跨域是什么?跨域指的是浏览器访问页面时,在标签中利用ajax访问其他网...原创 2020-04-24 19:38:50 · 428 阅读 · 0 评论 -
59.java项目-activiti实战项目(5)--springdataJPA
springdataJPA一.什么是springdataJPASpringData JPA是spring基于ORM框架、JPA规范的基础上封装的一套JPA应用框架,可以使开发者使用极简的代码实现对数据库的访问和操作。它提供了包括增删改查等在内的基本功能,且易于扩展。springdata jpa、jpa和hibernate三者关系通俗来讲springdata jpa是对jpa规范的一层封装,...原创 2020-04-24 16:08:21 · 269 阅读 · 0 评论 -
58.java项目-activiti实战项目(4)--PowerDesigner(数据库建模工具)
PowerDesigner1.数据库设计步骤数据库设计一般分为4个步骤:1)需求分析在设计数据库之前,设计人员必须要先了解系统的功能需求。这里可以通过阅读产品需求规格说明书,与项目相关人员(比如项目经理、客户等)进行充分沟通。(2)定义实体了解系统功能需求之后,设计人员通过分析系统功能定义出系统有哪些实体。比如:到酒店开房。这里应该至少包含两个实体:客人和房间。在定义出实体以后,我们...原创 2020-04-24 11:28:26 · 346 阅读 · 0 评论 -
57.java项目-activiti实战项目(3)--swagger
swagger1.概况Swagger 是最流行的 API 开发工具,它遵循 OpenAPI Specification(OpenAPI 规范,也简称 OAS)。Swagger 可以贯穿于整个 API 生态,如 API 的设计、编写 API 文档、测试和部署。Swagger 是一种通用的,和编程语言无关的 API 描述规范。2.应用场景如果你的 RESTful API 接口都开发完成了,...原创 2020-04-24 11:26:58 · 583 阅读 · 0 评论 -
56.java项目-activiti实战项目(2)-前端Vue-npm/vsCode的使用
npm一.Vue框架引入的两种方式1.网上下载vue.js文件,在将vue.js文件拷贝到项目中,这是传统的方式2.Npm的方式.二.Npm1.Npm是什么?npm是前端js框架中的maven,他用来远程下载js类库,和maven’的作用很像.maven的依赖文件是pom文件,npm的文件是package.json,用来描述当前项目的.2.npm的安装(1)下载node.js,n...原创 2020-04-24 11:24:46 · 706 阅读 · 0 评论 -
55.java项目-activiti实战项目(1)-activiti基本介绍
1.流程1.1什么是流程?流程就是按照一定设计规则执行的程序,例如公司的请假流程,报销流程等等.1.2 我们怎么进行流程开发?如果我们不借用框架的情况下进行流程开发,通常是在数据库表用一个状态的字段来对流程进行控制,比如请假流程,状态1是开始流程,填写了请假单,状态2是部门经理审批,状态3是总经理审批,状态4是人事存档.我们每个用户根据自己的角色筛选对应状态下的表中数据,对表中数据进行修改...原创 2020-04-24 11:22:09 · 1688 阅读 · 2 评论 -
47.javaEE-对接第三方支付(1)
第三方支付本系列文章的架构如图原创 2020-04-24 11:17:02 · 274 阅读 · 0 评论 -
54.javaEE-设计模式
本文的设计模式具体文章.请看https://www.cnblogs.com/onetwo/p/9933417.html原创 2020-04-23 22:55:07 · 170 阅读 · 0 评论 -
53.javaEE-组件-javaLog
本文的架构如下一.log是什么?学习java-log之前,我们先回忆下,我们最开始是怎么调试java的代码,是通过System.out.println()输出,定点输出查看代码的输出是否正确.所以我们先从System.out引入log.1.java-log的介绍(1)System.out主要作用:1.主要是帮我们查看程序的输出2.帮助我们调试程序.(2)System.out和lo...原创 2020-04-19 16:15:26 · 335 阅读 · 0 评论 -
50.javaEE-对接第三方支付(4)-分布式锁
本文的架构如图一.什么是分布式锁?什么是单体架构锁?1.什么是单体?集群?分布式?详情请参照这篇文章:https://blog.youkuaiyun.com/qq_26230421/article/details/1034095562.为什么synchronize和乐观锁等不能在分布式中起作用?首先我们要明白synchronize和lock等加锁的对象是什么?是对这段代码加锁,那执行这段代码的程序...原创 2020-04-19 14:21:51 · 473 阅读 · 0 评论 -
49.javaEE-对接第三方支付(3)-幂等性
幂等性本文的架构图一.什么是幂等性?http/1.1中对幂等性的定义是:一次或者多次请求对于资源本身应该具有相同的结果.也就是说,其任意多次执行对资源本身所产生的影响均于一次执行的影响相同.解释重点:1.这里所说的资源主要是我们数据库的数据,多次请求对我们的资源没有副作用.2.幂等性关注的是以后多次的请求是否对资源产生副作用,不太关注结果.二.什么情况下要保证幂等性?由上我们知道...原创 2020-04-16 00:11:17 · 310 阅读 · 0 评论 -
48.javaEE-对接第三方支付(2)-分布式id的生成
本文架构图如下一.为什么我们需要分布式id?传统的单体架构的时候,我们基本是单库然后业务单表的结构。每个业务表的ID一般我们都是从1增,通过AUTO_INCREMENT=1设置自增起始值,但是在分布式服务架构模式下分库分表的设计,使得多个库或多个表存储相同的业务数据。这种情况根据数据库的自增ID就会产生相同ID的情况,不能保证主键的唯一性。二.分布式数据库表id生成的策略我们思考生成i...转载 2020-04-16 00:03:39 · 234 阅读 · 0 评论 -
46.javaEE-框架(三)-springMVC
1.springMVC概述MVC设计模式是一种通用的软件编程思想在MVC设计模式中认为, 任何软件都可以分为三部分组成:(1)控制程序流转的控制器(Controller)(2)封装数据处理数据的模型(Model)(3)负责展示数据的视图(view)并且在MVC设计思想中要求一个符合MVC设计思想的软件应该保证上面这三部分相互独立,互不干扰,每一个部分只负责自己擅长的部分。如果某一...原创 2020-04-06 21:40:54 · 250 阅读 · 0 评论 -
45.javaEE-框架(二)-spring
1.spring的介绍Spring 框架是一个开源的 Java 平台,Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情.简单的说spring就好比一个你随时可以使用的工具箱(容器),里面装满了你想要的任何工具(bean),你只需要在最开始的时候定义你工具箱里的东西(bean注入),然后在使用的时候直接喊口号呼叫他即可(依赖注入).2.spring的产生及作用sp...原创 2020-04-06 17:41:23 · 396 阅读 · 0 评论 -
44.javaEE-框架(一)-mybatis
mybatis一.mybatis的介绍1.什么是mybatis?mybatis的前身是ibatis,是一个基于Java的持久层框架。由于java本身JDBC操作数据库存在诸多弊端所以为了解决这些问题产生了mybatis框架。例如jdbc的参数转换,sql执行,以及结果集的处理等等。mybatis在这基础之上都做了很好的处理。2.市场上java持久层框架对比mybatis和hibernat...原创 2020-03-31 23:47:06 · 365 阅读 · 0 评论 -
43.javaEE-Oracle数据库
一.oracle的概述1.oracle的安装oracle官网下载,安装即可.注意一步一步,中间有一些坑,注意设置你的数据库实例名称等.安装成功之后,看是否有sql plus,并且看能否连上数据库.2.卸载oracle自带了卸载的bat文件,我们只需要运行该bat文件即可.卸载命令地址.*D:\app\13570\product\11.2.0\dbhome_1\deinstall\de...原创 2020-03-08 17:36:07 · 196 阅读 · 0 评论 -
42.javaEE-mysql数据库(五)-数据库用户权限问题
1.新建用户1.1 登录MYSQL:C:\mysql\mysql-5.6.41-winx64\bin>mysql -u root -pEnter password: **********1.2 创建用户:mysql> insert into mysql.user(Host,User,Password) values("localhost","demo",password...转载 2020-04-08 17:09:47 · 273 阅读 · 0 评论 -
41.javaEE-mysql数据库(四)-数据库分库分表
一.什么时候分库分表?能不分库分表是尽量不要分,如果单表数据超过500万条可以开始考虑分库分表.因为分库分表比较营销sql执行效率,本来一张表可以查询完的,查多张表,一个数据库能查完的,查多个数据库.二.主从数据库1.什么是主从数据库?由于我们业务的不断扩张,导致单库访问压力非常大,所以我们使用了读写分离的技术,设置主库新增/修改,从库查询等操作.从而提高数据库访问性能.2.主从数据...原创 2020-03-07 14:23:56 · 192 阅读 · 0 评论 -
40.javaEE-mysql数据库(三)-引擎/索引/sql优化
mysql数据库引擎什么是存储引擎?数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎还可以获得特定的功能。查看数据库引擎的语句SHOW ENGINESInnoDB1.事务型数据库的首选引擎,InnoDB 作为默认存储引擎。2.支持事务安全表(ACID...原创 2020-03-06 21:57:41 · 1222 阅读 · 0 评论 -
39.javaEE-mysql数据库(二)-函数/事件/备份/计划
索引原创 2020-03-05 22:55:24 · 215 阅读 · 0 评论 -
38.javaEE-mysql数据库(一)-基础语法
1.数据库概述1.1.什么是数据库?数据库:英文为Database,简称DB数据库就是存储数据的仓库,其实数据也是存储在电脑上的.只是我们用了一个数据库管理软件来管理电脑内存.数据库包括了数据库硬件也就是计算机,也包括数据库软件.通常我们说的mysql数据库,oracle数据库指的是mysql数据库管理软件管理的数据库.1.2.数据库分类:目前占市场主流的是关系型数据库。当然还有非关系...原创 2020-03-05 22:53:22 · 918 阅读 · 0 评论