自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 【GRPC】grpc

gRPC是什么 gRPC是谷歌的开源RPC框架,诞生的目的是为了帮助不同编程语言的软件系统之间能够使用相同的服务。客户端和服务端只需要拥有相同的proto文件(也叫做存根),就能使用protobuf工具生成对应语言的grpc方法文件。 gRPC使用的哪种通信协议,与其他相比优点在哪? gRPC使用HTTP2协议,拥有HTTP2的特性 使用二进制帧 高性能和健壮性 更轻量级的传输、解码更安全等特性 因为它是二进制的,它也能很好地契合protocol buffer格式,使得传输更加方便。 HTTP

2022-03-27 11:16:24 1262 2

原创 【java并发编程】会合模式

会合模式 会合模式其实就是信号模式的推广。第一个任务将等待第二个任务的某一事件,而第二个任务又在等待第一个任务的某一事件。解决方案与信号模式非常相似,只不过使用的对象不再是一个,而是两个。 我想了一下,转账操作不就可以使用会合模式吗!说干就干,上代码 /** * @author xuxi * @date 2021/8/5 * @desciption **/ public class RendezvousPattern { public static void main(String[]

2021-08-05 21:53:45 307 4

原创 【java并发编程】信号模式

信号模式 ​ 顾名思义,信号模式应该是通过发送信号进行并发处理的。没错!信号模式就是针对 一个线程向另一个线程发送信号 的情景出现的。线程1完成事件A时会发出信号,线程2运行到一定阶段时会等待检查线程1发出的事件A的完成信号,只有收到事件A的完成信号后线程2才可以继续运行。最简单直接的方法可以使用Object类的wait()和notify()方法实现 import java.util.concurrent.atomic.AtomicInteger; /** * @author xuxi * @da

2021-08-05 19:52:08 440 3

原创 【java并发编程】并发设计模式---持续更新

JAVA并发设计模式 ​ 设计模式是多次被使用的被证明是针对某类问题的最优解决方案,并发处理当中也有专门为并发而生的设计模式。本文会介绍一些常用的并发设计模式 信号模式 会合模式 互斥模式 多元复用模式 栅栏模式 双重检查锁定模式 ...

2021-08-05 19:50:06 152

原创 【MySQL】mysql范式一二三

在设计数据库的时候切记遵守范式规则,才能更好的解决数据冗余,数据有效性检查,提高存储效率。 第一范式 属性不可分 错误示例 正确示例 第二范式 每个非主属性完全函数依赖于键码。 什么是依赖 A->B 表示 A 函数决定 B,也可以说 B 函数依赖于 A。 如果 {A1,A2,… ,An} 是关系的一个或多个属性的集合,该集合函数决定了关系的其它所有属性并且是最小的,那么该集合就称为键码。 对于 A->B,如果能找到 A 的真子集 A’,使得 A’-> B,那么 A->B 就是部分

2021-08-02 16:38:45 243

原创 【Java】java8之Stream流

java8新特性 Stream流 Stream是java8 API中添加的一个新的抽象,可以以一种声明的方式处理数据。 Stream是一个来自数据源的元素队列并支持聚合操作 Stream特点: 不会存储数据 不会修改数据源,会产生一个新的集合 不会立即执行,只有在需要结果的时候才执行 内部迭代,一旦遍历就会失效,想再次遍历必须重新生成 Stream可以通过集合和数组进行创建 集合产生流的两个方法: stream():返回一个顺序流 parallelStram():返回一个并行流,内部是以多线程的方式

2021-08-02 16:28:01 223

原创 微信小程序之循环、for、for-item、for-index、key

wx:for 我认为是类似于es6中的for-in/for-of写法,有点像(let item in list)的简化,遍历使用wx:for="{{listName}}",,默认循环数组的子对象为item,渲染数据的时候使用{{item.xxx}} wx:for-item 将上面的item重命名,便于区分多层循环中选中的对象元素,不使用wx:for-item也不影响功能,但是影响阅读和维护 wx:for-index 多层循环的时候对当前数组下标进行命名,便于区分 wx:key wx:key 的值以两种形式提

2021-07-29 11:32:00 2358

原创 正则表达式基础入门JavaScript实现

正则表达式是什么 正则表达式,简称regex。是用来匹配和处理文本的字符串 正则表达式可以包含纯文本,甚至可以只包含纯文本,比如Ben这个正则表达式,它将匹配原始文本中的Ben 匹配单个字符 正则表达式区分大小写 " . "字符可以匹配任何一个单个的字符,比如c.t可以匹配到cat 和cot 匹配特殊字符 加上\进行转义 匹配一组字符 元字符: 数字元字符: \d:任何一个数字字符(等价于[0-9]) \D:任何一个非数字字符(等价于[ ^ 0-9]) \w:任何一个字母数字字符(大小写均可)或下划线

2021-07-29 11:30:31 122

原创 【Java设计模式】单例模式与序列化

序列化会破坏单例模式 当使用双重校验锁并且使用了volatile的时候,这种看上去非常perfect的方式也可能存在单例模式被破坏的问题,那就是遇到序列化的时候。 Q:序列化之后的对象还是同一个吗 答案是 不是 public class Singleton implements Serializable{ private volatile static Singleton singleton; private Singleton (){} public static Singleto

2021-07-29 11:15:42 449

原创 【MySQL】MySQL基础

MySQL数据类型 时间日期: ​ MySQL提供了两种日期类型,DateTime和TimeStamp,这两种类型是相似的。 ​ DateTime能够保存从1001年到9999年的日期和时间,精度为秒,存储空间为8个字节 ​ TimeStamp保存1970年1月1日午夜到2038年的秒数,存储空间为4个字节,和时区有关,不同时区下所代表的具体时间不同。默认情况下这个值会是当前时间。 字符串: varchar:节省了存储空间,但在update的时候可能会使所在行变得更长,如果一个行占用的空间增长并且在页内没有

2021-07-09 13:46:20 166

原创 简单工厂模式

简单工厂模式 也称为静态工厂方法模式,属于类创建型模式。定义一个工厂类,根据参数的不同返回不同类的实例,简单工厂模式专门定义一个工厂类来负责创建具体产品类的实例,被创建的实例通常具有相同的父类。 只需要传一个正确的参数,就能获得需要的对象,无需知道实现过程。 代码实现: public class simpleFactory{ public static Product createProduct(String type){ if(type.equals("A")){

2021-07-09 13:43:02 98

原创 【Java设计模式】java设计模式之单例模式

单例模式 所谓类的单例模式,就是采取一定的方法保证在整个软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得对象实例的方法 方式一:还没使用到就已经创建对象 步骤如下: 1.构造器私有化(防止直接new) 2.类的内部创建对象 3.向外暴露一个静态的公共方法(getInstance) class Test{ prvate String name; //通常是重量级的对象,不能浪费 private static Test test=new Test("小明") private

2021-05-05 11:44:39 111

原创 小程序开发笔记(一):登录

小程序的登录流程并不是像web端那样输入用户名密码就能获取到token,小程序登录首先需要调用wx.login()这个方法 wx.login({ success:res=>{ console.log(res.code)//这个code每次都是不一样的 } }) 这个方法会返回一个微信用户登录的临时凭证code,然后我们通过wx.request()将这个code传入我们的后端 wx.request( url: ''//这里是后端接口地址, method: 'POST', data: { cod

2021-04-22 10:13:56 199

原创 略讲es6

一.let和const 传统定义变量和常量统一使用var var name="xx" var Pi=Math.Pi 在Es6中使用let定义变量,const定义常量 let name="xx" const Pi=Math.Pi let和const解决了: var的变量穿透问题 for(var i=0;i<5;i++){ console.log(i)//打印0 1 2 3 4 } console.log(i)//打印5 for(let i=0;i<5;i++){ console.log(

2021-04-17 21:09:09 126

原创 ArrayList源码分析

一.底层数据结构 二.构造函数 三.扩容机制 四.相关方法 ArrayList底层数据结构是不能被序列化的数组 transient Object[] elementData private static final int DEFAULT_CAPACITY=10//默认初始化大小 private static final Object[] EMPTY_ELEMENTDATA={};//空实例的共享数组 private static final Object[] DEFAULTCAPACITY_EMPTY_

2021-04-17 20:59:01 93

原创 java动态代理--简单易懂

代理模式 ​ 代理模式就是为目标对象提供一个代理对象,为了更好的保护和隐藏我们的目标对象,同时也为实施不同控制策略的时候留下空间,控制更具灵活性。 动态代理 ​ java的动态代理可以动态的添加代理并且动态处理代理方法的调用,只需要指定一组接口和委托类对象,就能动态获取代理类。 原理 ​ 可以举个例子,就比如我要找我朋友出门,但是要先经过他父母的同意,这时候他父母就是代理,我要通过他们,才能得到目标类(朋友)的方法。朋友父母会问要去哪里或者去了哪里,这其实就是为实施不同控制策略留下的操作空间 示例代码 /*

2021-03-16 19:47:34 146

原创 回调与Promise

一.回调是什么 回调可以简单的理解为 你去商店买某个东西,店家告诉你卖完了,你留下电话让店家有货的时候通知你来买。回调就是这个原理 同步回调 立即执行,全部执行完了才算结束,比如数组遍历 const arr=[1,2,3] arr.forEach(item=>{ console.log(item) }) //foreach全部都执行完了才能执行下面的 console.log("forEach之后") 异步回调 异步回调函数,会放入队列中将来执行 setTimeout(()=>{ conso

2021-03-14 20:31:35 162

原创 java基础知识(更新中

JAVA基础 一.标识符 标识符是什么 在JAVA中,标识符是由字母、数字、下划线和美元符号构成的,且不能以数字开头,不能是保留字例如if else这种,不能是是布尔值或者null,区分大小写 变量 变量是用于表示在程序中可能会被改变的值 在给变量赋值之前,要先声明变量,最好同时对变量进行初始化 常量 常量是代表一个值不会在程序执行过程中被改变的标识 使用常量的好处:不必重复输入同一个值,提高程序阅读性 命名习惯 变量和方法使用小写字母命名,如果包含多个单词,则使用驼峰命名 类的每个单词首字母都大写 常量使

2021-03-14 13:52:10 132

原创 算法实现:JAVA(持续更新中)

算法实现:JAVA 在阅读大话数据结构这本书的时候记的笔记,一是分享,二是方便自己查找复习 一.目录: ​ 1.原地算法 ​ 2.斐波那契数列 ​ 3.冒泡排序 ​ 4.归并排序 ​ 5.希尔排序 ​ 6.简单选择排序 ​ 7.直接插入排序 二.代码实现 1.原地算法:使用O(1)空间复杂度的所有算法。给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改

2020-09-21 23:11:22 152

原创 赫夫曼树原理以及java实现(新手向)

赫夫曼树原理以及java实现 看了很多大佬写的关于赫夫曼树的讲解,今天我也抽些时间写一下自己的理解吧。 开讲之前,先提提 “权值” 这个概念:权值就是数据出现的频率,比如在字符串“AAAABBBCCD”中,A的权值是4,B是3,C是2,D是1。 关于赫夫曼树,我是这样理解的:用集合装结点,将集合中的结点根据权值从小到大排序,每次取权值最小的两个结点(也就是排序后的前两个结点)作为叶结点,生成一个根结点,把这两个叶结点从集合中移除,将根结点放进集合之中,再次对集合中的结点排序,重复上述操作直至集合中只有一个根

2020-08-05 17:34:54 259

原创 java语言程序设计与数据结构(基础篇)自敲代码

java语言程序设计与数据结构(基础篇)自敲代码 这学期敲的一些作业,1到13章以及17章IO有几道题。 附上github网址:https://github.com/ibanezxx/java- (写得很烂但还是想要star呜呜呜

2020-06-05 13:54:05 1069

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除