02 2021 档案
摘要:https://blog.csdn.net/weixin_42089175/article/details/89113271
阅读全文
摘要:不用连接,需要指定对方地址! UDP是没有客户端和服务端的概念。 ★ UDP消息发送 1.创建一个发送端 UdpClientDemo01.java package com.ckfuture; import java.net.DatagramPacket; import java.net.Datagr
阅读全文
摘要:TCP网络编程分为客户端和服务端 客户端使用 Socket类 服务端使用 ServerSocket类 ★TCP实现聊天 1.客户端 TcpClientDemo01.java package com.ckfuture; import java.io.IOException; import java.i
阅读全文
摘要:1.网络编程的目的 传播交流信息,数据交互。通信 2.网络通信的两个要素 ①通信双方的地址: IP 端口号 ②规则:网通通信的协议 网络通信主要是传输层,针对TCP和UDP。 网络编程的步骤: 1.网络编程中有两个主要的问题: 如何准确的定位到网络上的一台或堕胎主机 找到主机之后如何进行通信 2.网
阅读全文
摘要:SpringAMQP是SpringBoot操作 RabbitMQ的包 1.创建一个空项目并创建一个生产者的Module 2.导入依赖 <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starte
阅读全文
摘要:RabbitMQ消息的事务机制 在使用RabbitMQ的时候,可以通过消息持久化操作类解决因为服务器的异常崩溃导致的消息丢失。默认情况下生产者是不知道消息有没有到达broker的。 RabbitMQ为我们提供了两种方式: 通过AMQP事务机制实现,这也是AMQP协议层面提供的解决方案 通过将chan
阅读全文
摘要:很少用!!! 官网:https://www.rabbitmq.com/tutorials/tutorial-six-java.html 1.创建一个RPC服务端 RPCServer.java package com.ckfuture.rpc.server; import com.rabbitmq.c
阅读全文
摘要:当路由关键字非常多的时候没法管理,所以使用通配符匹配关键字。 *:唯一匹配的一个单词 #:匹配0个活多个单词 1.创建一个生产者Send.java package com.ckfuture.topic.send; import com.rabbitmq.client.BuiltinExchangeT
阅读全文
摘要:应用场景:有些消费者能收,有些消费者不能收。 官网:https://www.rabbitmq.com/tutorials/tutorial-four-java.html 1.创建一个生产者 Send.java: package com.ckfuture.direct.send; import com
阅读全文
摘要:应用场景:让所有的消费者都能接受相同的消息。比如:微信公众号等。 1.创建Send.java: package com.ckfuture.exchanges.send; import com.rabbitmq.client.BuiltinExchangeType; import com.rabbit
阅读全文
摘要:简单队列的缺点:消费者(Consumer)的消费能力有高有低,当生产者(producer)生产能力远远大于消费者能力,那么消息队列消息就会堆积,最终使消息队列达到上限。 引入工作队列,工作队列包括:轮询和公平两种方式。 ★工作队列_轮询 轮询就是增加消费者,每个消费者依次读取消息。 1.创建一个Se
阅读全文
摘要:★简单队列 官网:https://www.rabbitmq.com/getstarted.html 消息生产者(producer):只是用来发送. 队列(Queue):用来存储消息的,队列不限制大小,取决于服务器内存和硬盘的大小。 消费者(Consumer):用来监听队列、接收消息的 1.IDEA创
阅读全文
摘要:1.设计模式概述 概念: 设计模式是前辈对代码开发经验的总结,是结局特定问题的一系列套路。 它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全的解决方案。 意义: 设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性以及类的关联关系和组合关系的充分理
阅读全文
摘要:三层架构 + MVC 架构的目的:解耦 开发框架 1.Spring IOC AOP IOC:控制反转 AOP:切面,动态代理 为了解决不影响业务本来的情况下,实现动态增加功能,大量应用在日志,事务等。 Spring是一个轻量级的Java开源框架,容器 目的:解决企业开发的复杂性问题 Spring是春
阅读全文
摘要:1.利用IDEA创建一个空项目 2.创建一个模块(提供者服务): 下一步: 下一步: 下一步: 创建模块成功,一般删除 .gitignore、HELP.md、mvnw、mvnw.cmd和.mvn文件夹。使项目看起来更清爽!! 3.编写提供者服务 ①创建java interface文件,名命为:Tic
阅读全文
摘要:★Zookeeper注册中心(Registry) Zookeeper是一个树形的目录服务,支持变更推送,适合作为Dubbo服务的注册中心,工业强度较高,可用于生产环境,并推荐使用 zookeeper默认断口:2181,在zoo.cfg配置文件中可查看 官网:https://zookeeper.apa
阅读全文
摘要:一、基础知识 1.分布式基础理论 1.1 什么式分布式系统? 分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统。分布式系统是建立在网络之上的软件系统。 1.3 RPC RPC概念:远程过程调用,是一种进程间通信方式,它是一种技术的思想,而不是规范,它允许程序调用另一个地址空间
阅读全文
摘要:什么是Jedis:是Redis官方推荐的Java连接开发工具!使用Java操作Redis的中间件(jar包)。如果你要使用Java操作Redis,那么一定要对Jedis十分熟悉! 1.用IDEA创建一个空项目 2.在空项目中创建一个空的Maven modeule。 3.创建空项目后要配置jdk 4.
阅读全文
摘要:Redis缓存的使用,极大的提升了应用程序的性能和效率,特别是数据查询方面。但同时,它也代来也一些问题,其中,最要害的问题就是数据一致性的问题,从严格意义上讲,这个问题无解。如果对数据的一致性要求很高,那么就不能使用缓存。 另外的一些典型问题就是,缓存穿透、缓存雪崩和缓存击穿。目前,业界也有比较流行
阅读全文
摘要:为了结绝主机宕机后要手动配置主机和从机太麻烦,Redis从2.8开始正式提供了Sentinel(哨兵)架构类结局这个问题。能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库。 哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行,其原
阅读全文
摘要:主从复制:是指将一台Redis服务器的数据,复制到其他的Redis服务器,前者称为主节点(Master/leader),后者称为从节点(Slave/follower);数据的复制是单向的,只能由主节点到从节点。Master以写为主,Slave以读为主。 默认情况下,每台Redis服务器都是主节点,且
阅读全文
摘要:Redis发布订阅(pub/sub)是一种消息通信模式:发布者(pub)发送消息,订阅者(sub)接收消息。 Redis客户端可以订阅任意数量的频道。 1.利用subscribe命令订阅给定的一个或多个频道信息(消息订阅者) 127.0.0.1:6379> subscribe ckfuture Re
阅读全文
摘要:AOF(Append Only File) 将我们的所有命令都记录下来,相当于history,恢复的时候就吧这个文件全部命令执行一遍! 以日志的形式记录每个写操作,将Redis执行过程的所有指令记录下来,只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启
阅读全文
摘要:Redis是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消逝,所以Redis提供了持久化功能! 在主从复制中,rdb就是备用的,存在从机上边,不占用主机资源。 RDB: 在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapsho
阅读全文
摘要:SpringBoot 操作数据:spring-data jpa、jdbc、mongodb、redis SpringData也是和SpringBoot齐名的项目。 在SpringBoot2.x之后,原来使用的jedis被替换为lettuce。 jedis:采用的直连,多个线程操作的话,是不安全,如果想
阅读全文
摘要:1.悲观锁 很悲观,什么时候都会出问题,无论做什么都加锁,影响效率。 2.乐观锁 很乐观,任务什么时候都不会出问题,所以不会上锁,跟新数据的时候去判断一些,在此期间是否有人修改过这个数据,在Mysql中是利用Version字段实现!在Redis中利用watch命令。 获取version 更新的时候比
阅读全文
摘要:事务有 A C I D 原则 Redis事务本质:一组命令的集合!一个事务中的所有命令都会被序列化,在事务执行过程中,会按照顺序执行! 一次性、顺序性、排他性,执行一系列的命令 Redis事务没有隔离级别的概念! 所有的命令在事务中,并没有直接被执行!只有发起执行命令的适合才会执行!Exec Red
阅读全文
摘要:位运算,只有两种状态,可以使用Bitmaps Bitmaps位图,数据结构!都是操作二进制位来进行记录,就只有0和1两个状态! 案例场景:365打卡。 1.利用setbit命令添加 127.0.0.1:6379> setbit sign 0 1 (integer) 0 127.0.0.1:6379>
阅读全文
摘要:基数:不重复的元素 Redis Hyperloglog:用于做基数统计的算法 优点:占用的内容是固定的,2^64不同的元素的技术,只需要占用12kb内存!如果要从内存角度来比较的话Hyperloglog首选。 hyper log log命令以"pf"开头。 1.利用pfadd命令添加 127.0.0
阅读全文
摘要:三种特殊数据类型 geospatial地理位置 规则:两极数据无法直接添加。 利用geo这个功能可以推算地理位置的信息,两地之间的距离,方圆几里的人! geospatial命令以“geo”开头 1.利用geoadd key longitude latitude member 命令添加位置 127.0
阅读全文
摘要:在set的基础上,增加了一个值,set k1 v1 zset k1 score v1 1.利用zadd 命令添加一个值 127.0.0.1:6379> zadd myset 1 one (integer) 1 2.利用zadd命令添加多个值 127.0.0.1:6379> zadd myset 2
阅读全文
摘要:Hash相当于map集合。本质和String类型没有太大区别,还是一个简单的key-value! 所有的Hash命令是以“h”开头的。 1.利用 hset命令 设置键值 127.0.0.1:6379> hset myhash field1 ckfuture (integer) 1 2.利用hget
阅读全文
摘要:set是无序不重复集合。 set的命令都是“s”开头的 1.利用sadd 命令添加元素 127.0.0.1:6379> sadd myset hello (integer) 1 127.0.0.1:6379> sadd myset ckfuture (integer) 1 127.0.0.1:637
阅读全文
摘要:List 是基本的数据类型,列表。redis命令不区分大小写。 在redis中,可以把List用作 栈、队列、阻塞队列。 所有的list命令都是以“l”开头的 1.向List插入数值 127.0.0.1:6379> lpush list one (integer) 1 127.0.0.1:6379>
阅读全文
摘要:String 字符串常用命令 ① 利用 append 向key中追加数据,如果key不存在则新建 ② 利用strlen获取key值的长度 ③ 利用incr 进行自加1操作 ④ 利用decr 进行自减1操作 ⑤ 利用 incrby 进行步长增长操作 ⑥ 利用decrby 进行步长减量操作 ⑦ 利用 g
阅读全文
摘要:Redis可以用作 数据库、缓存和消息中间件。 五大数据类型 Redis-Key ① 可以通过exists 判断key是否存在 ② 可以通过 move 移除key ③ 可以通过 expire 设置过期时间 ④ 可以通过 ttl查看剩余时间 超时后再次查看则key不存在 可以利用redis设置过期时间
阅读全文
摘要:redis默认有16个数据库: 默认是第0个数据库。 可以使用select进行切换数据库 可以使用dbsize查看数据库存储 127.0.0.1:6379[3]> dbsize (integer) 0 127.0.0.1:6379[3]> 可以使用keys * 查看所有的key 可以通过 flush
阅读全文
摘要:下载地址:https://github.com/dmajkic/redis/releases 下载后解压即可: Redis默认端口:6379 双击redis-server.exs开启redis服务 双击redis-cli.exe 开启客户端。 输入 ping 返回 pong 代表连接成功。 测试:
阅读全文
摘要:官网:https://redis.io/ 中文网:http://www.redis.cn/ Redis是什么? Remote Dictionary Server:远程字典服务 是一个开源使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、key-Value数据库,并提供多种语言的API
阅读全文
摘要:1.KV键值对 Redis 2.文档型数据库 MongoDB: MongoDB是一个介于分布式文件存储的数据库,主要处理大量的文档! MongoDB是一个介于关系型数据库和非关系型数据库中间的产品!MongoDB是非关系型数据库中功能最丰富,最像关系型数据库的。 ConthDB 3.列存储数据库 H
阅读全文
摘要:NoSQL = Not only SQL 泛指非关系型数据库。随着web2.0互联网的诞生,传统的关系型数据库很难对付web2.0时代,尤其是超大规模的高并发的社区。 NoSQL特点: 1. 方便扩展(数据之间没有关系) 2.大数据量高性能(Redis 1秒可以写8万次,读取11万次,NoSQL的缓
阅读全文
摘要:将一些使用频率较高的常量或方法,直接扩展到Vue.prototype上,每个Vue对象都会继承下来。 在main.js中挂载属性或方法: import Vue from 'vue' import App from './App' Vue.config.productionTip = false; /
阅读全文
摘要:在uni-app 项目跟目录下创建common目录,然后再common目录下创建common.js用于定义公用的方法。 common.js可以定义常量和方法: //接口地址 const apiUrl=''; //定义公用方法 const sayHi=function(){ console.log('
阅读全文
摘要:uni.share(OBJECT) uni-app的App引擎已经封装了微信、QQ、微博的分享SDK,开发者可以直接调用相关功能。 可以分享到微信、QQ、微博,每个社交平台被称为分享服务提供商,即provider。 可以分享文字、图片、图文横条、音乐、视频等多种形式。同时注意,分享为小程序也使用本A
阅读全文
摘要:1.显示消息提示框 uni.showToast(OBJECT) 显示消息提示框 OBJECT参数说明: 参数类型必填说明平台差异说明 title String 是 提示的内容,长度与 icon 取值有关。 icon String 否 图标,有效值详见下方说明。 image String 否 自定义图
阅读全文
摘要:跨端兼容 uni-app 已将常用的组件、JS API封装到框架中,开发者按照uni-app规范开发即可保证跨平台兼容,大部分业务均可直接满足。 但每个平台有自己的一些特性,因此会存在一些无法跨平台的情况。 大量写if-else,会造成代码执行性能低下和管理混乱。 而编译到不同的工程后二次修改,会让
阅读全文
摘要:当滚动条滚动到最底端实现加载。 利用onReachBottom监听方法 ①下拉监听方法 onReachBottom: function(){//上拉加载监听方法 this.getMoreNews(); if(timer!=null){clearTimeout(timer);} timer=setTi
阅读全文
摘要:onPullDownRefresh 在js中定义onPullDownRefresh处理函数(和onLoad等生命周期函数同级),监听该页面用户下拉刷新事件。 需要在pages.json里,找到的当前页面的pages节点,并在style选项中开启enablePullDownRefresh 当处理完数据
阅读全文
摘要:1. uni.setNavigationBarTitle(OBJECT) 动态设置当前页面的标题。 OBJRECT参数说明: 参数类型必填说明 title String 是 页面标题 success Function 否 接口调用成功的回调函数 fail Function 否 接口调用失败的回调函数
阅读全文
摘要:1. 系统信息 uni.getSystemInfo(OBJECT) 获取系统信息 OBJECT 参数说明: 参数名 类型 必填 说明 success Function 是 接口调用成功的回调 fail Function 否 接口调用失败的回调函数 complete Function 否 接口调用结束
阅读全文
摘要:uni.setStorage(OBJECT) 将数据存储在本地缓存中指定的key中,会覆盖掉原来该key对应的内容,这是一个异步接口。 OBJECT参数说明: 参数名 类型 必填 说明 key String 是 本地缓存中的指定的key data Object/String 是 需要存储的内容 su
阅读全文
摘要:uni.uploadFile(OBJECT) 将本地资源上传到开发者服务器,客户端发起一个POST请求,其中content-type为multipart/form-data. 如页面通过uni.chooseImage等接口获得一个本地资源的临时危机路径后,可通过此接口将本地资源上传到指定服务器。 O
阅读全文
摘要:uni.chooseInage(OBJECT) 从本地相册选择图片或使用相机拍照 count Numeber 否 对多可以选择的照片张数,默认9。 sizeType StringArray 否 original 原图,compressed 压缩图,默认二者都有。 sourceType StringA
阅读全文
摘要:uni.request(OBJECT) 发起网络请求。 在各个小程序平台运行时,网络相关的 API 在使用前需要配置域名白名单。 OBJECT 参数说明 参数名类型必填默认值说明平台差异说明 url String 是 开发者服务器接口地址 data Object/String/ArrayBuffer
阅读全文
摘要:1.audio:音频 属性说明 属性名类型默认值说明 id String audio 组件的唯一标识符 src String 要播放音频的资源地址 loop Boolean false 是否循环播放 controls Boolean false 是否显示默认控件 poster String 默认控件
阅读全文
摘要:navigator:页面跳转 属性说明 属性名类型默认值说明平台差异说明 url String 应用内的跳转链接,值为相对路径或绝对路径,如:"../first/first","/pages/first/first",注意不能加 .vue 后缀 open-type String navigate 跳
阅读全文
摘要:表单:用于数据的收集和数据的提交 官网地址:https://uniapp.dcloud.io/component/ 1.button组件 属性说明 属性名类型默认值说明生效时机平台差异说明 size String default 按钮的大小 type String default 按钮的样式类型 p
阅读全文
摘要:1.视图容器 view scroll-view:可滚动视图区域 <template> <view> <view> <scroll-view class="scv" scroll-x="true"> <view>1</view> <view>2</view> <view>3</view> <view>
阅读全文
摘要:事件修饰符 stop 的使用会阻止冒泡,但是同时绑定了一个非冒泡事件,会导致该元素上的catchEventName失效。 prevent 可以直接干掉,因为uni-app里没有什么默认事件,比如submit并不会跳转页面。 self 没有可以判断的标识 once 也不能做,因为uni-app没有re
阅读全文
摘要:为节约性能,我们将class与style的表达式通过compiler 硬编码到 uni-app中,支持语法和转换效果如下: class 支持的语法: <template> <view> <!--第一种写法--> <view :class="[isRed?'red':'green']"> test <
阅读全文
摘要:基础数据绑定 变量赋值: <template> <view> {{title}} </view> </template> <script> export default{ data(){ return{//生命变量 title: '关于', age:18 } } } </script> <style
阅读全文
摘要:页面生命周期 不论是app还是小程序,生命周期是非常重要的知识点。 uni-app支持以下页面常用生命周期函数: onLoad:监听页面加载,其参数为上个页面传递的数据,参数类型为object。 onShow:监听页面显示 onReady:监听页面初次渲染完成 onHide:监听页面隐藏 onUnl
阅读全文
摘要:pages.json 配置页面 { "pages": [ //pages数组中第一项表示应用启动页,可以随时换成自己想要的默认的启动页 { "path": "pages/index/index", "style": { "navigationBarTitleText": "uni-app" } },
阅读全文
摘要:uni-app 是一个使用Vue.js开发跨平台应用的前端框架。 1.vue教程:https://ke.qq.com/course/248507?tuin=4f8d6 2.小程序基础教程:https://ke.qq.com/course/183926?tuin=4f8da6 3.uni-app 官网
阅读全文
摘要:1.利用vue脚手架创建项目 vue init webpack 项目名称 2.下载element-ui的依赖 npm i element-ui -s 3.指定当前项目中使用element-ui 在main.js 中引入 import ElementUI from 'element-ui'; impo
阅读全文
摘要:1.新建一个空文件夹,右键 Git Bash Here 2.初始化git(就是让这个文件夹不寻常) git init 文件夹中会出现 3.添加到缓存区 git add . 注意:.代表全部文件 4.提交到本地仓库 git commit -m "初始化" // 引号里面是备注信息,随便写 5.关联远程
阅读全文