自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

shuixiou1的博客

搬砖的日子

  • 博客(131)
  • 资源 (4)
  • 收藏
  • 关注

原创 微信小程序精通到入门---08 内置组件的使用

微信小程序精通到入门---08 内置组件的使用微信内置了一些input、icon、等等组件,可以直接使用。1、button基础库 1.0.0 开始支持,低版本需做兼容处理。按钮。属性 类型 默认值 必填 说明 最低版本 size string default 否 按钮的大小 1.0.0 type string default 否 按钮的样式类型 1.0.0 plain bool

2021-04-12 20:58:53 350 1

原创 微信小程序精通到入门---07 tabBar和导航跳转

一、tabBar使用tabBar就是微信小程序底部的tab框,每个框必须指定一个对应的页面,设置步骤如下。步骤1、在images文件下创建一个nav目录,并且创建了6个图片(3个tab,每个tab的active和非acitve状态各一张)步骤2、创建对应的页面,因为我们index页面已经创建好了,只要在创建2个对应的页面nav(用来后面导航演示用途),以及my页面。步骤3、在app.json进行如下配置 "tabBar": { "list": [ {

2021-04-12 20:38:21 819

原创 微信小程序精通到入门---06 组件

微信小程序精通到入门---06 组件一、组件基本使用1、组件基本使用1) 新建一个一级目录components,并且右键创建一个component组件2) 组件注册在.json文件进行注册,app.json是全局注册 "usingComponents": { "top": "/components/top/top", "baseTable": "/components/table/baseTable", "base": "/components/base/

2021-04-12 20:28:02 272

原创 微信小程序精通到入门---05网络请求、mock、上拉下拉刷新

微信小程序精通到入门---05网络请求、mock、上拉下拉刷新一、网络请求小程序经常需要往服务器传递数据或者从服务器拉取信息,这个时候可以使用wx.request这个API,微信小程序默认请求后端域名必须是https的,可以在微信开发工具设置不校验域名设置,在第一章已经讲解,不在复数。1、wx.request的参数和响应基本请求wx.request({ url: 'https://test.com/getinfo', success: function(res) { c

2021-04-12 19:29:10 326

原创 微信小程序精通到入门---04 弹框交互效果

微信小程序精通到入门---04 弹框等交互效果一、触摸反馈1、wxss.hover{ background-color: gray;}2、wxml<button hover-class="hover"> 点击button的hover效果 </button><view hover-class="hover"> 点击view的hover效果</view>hover-class设置后,触摸按钮时,会出现你设置的样式效果...

2021-04-11 23:41:04 273

原创 微信小程序精通到入门---03 全局数据和本地存储

微信小程序精通到入门---03 全局数据和本地存储一、全局数据1、全局数据的设置,访问获取,变更。设置:在app.js设置,挂载到globalData属性下,比如 globalData: { userInfo: null, sfs: [ { sf: 1, sfmc: '湖南', check: true }, { sf: 2, sfmc: '湖北', check: false }, // ... 省略 ] }访问获取:通过v

2021-04-11 22:56:42 542

原创 微信小程序精通到入门---02数据渲染和事件和url传参

微信小程序精通到入门---02数据渲染和事件和url传参一、数据渲染 ( 模板语法)从第一篇,我们初步认识了小程序的组织结构,下面再深入了解下小程序的渲染,什么是数据渲染,先要知道,小程序中js文件是负责逻辑处理,wcss和wxml负责视图的渲染工作,在wxml中数据通过{{}}等方式渲染到页面中,而数据变化后的渲染是通过setData(),才可以改变页面,这个就是数据渲染的过程。1、数据渲染语法首先:我们新建一个temp的page页面,先建立文件夹temp,再右击-新建page,名称也是t

2021-04-11 22:08:59 395 1

原创 微信小程序精通到入门---01环境和小程序结构

微信小程序精通到入门---01环境和基础结构前言:暂略官方文档:https://developers.weixin.qq.com/miniprogram/dev/framework/quickstart/getstart.html一、环境搭建1、下载开发工具https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html选择稳定版下载安装即可。2、小程序注册本教程是演示为主,不申请正式账号,..

2021-04-11 21:05:16 365 2

原创 微信网页授权和jsApi支付

第一部分 jsApi支付 一、js支付流程-调用流程1、鉴权是否登录态 // open_id 是否存在当前系统登陆域,判断已经登陆 if(sessionUser.getOpen_id()==null) { return res.put("error", "not login"); } 2、生成未支付订单out_trade_no = ddService.createDdxx(username,cp...

2021-04-07 22:27:53 436

原创 基于netty的简易RPC框架

基于netty的简易RPC框架一、基础设计1、服务注册和发现 rpc远程框架我们要实现的客户端使用功能是,远程调用接口的提供者producer使用@server注解,将此service注解的服务类信息,服务地址(本机ip+netty设置的服务端口),注册到注册中心上,注册中心采用zookeeper。调用接口端consumer在调用类的服务字段上使用@inject,即可调用远端producer,这个是使用服务发现类zookeeperDiscovery实现的,即在zookpeer找到对应服务名的..

2021-03-31 22:12:19 223 1

原创 netty心跳机制和重连

netty心跳机制和重连一、理论和概述1、何为心跳顾名思义, 所谓心跳, 即在 TCP 长连接中, 客户端和服务器之间定期发送的一种特殊的数据包, 通知对方自己还在线, 以确保 TCP 连接的有效性。为什么引入心跳机制和其原理?因为网络的不可靠性, 有可能在 TCP 保持长连接的过程中, 由于某些突发情况, 例如网线被拔出, 突然掉电等, 会造成服务器和客户端的连接中断. 在这些突发情况下, 如果恰好服务器和客户端之间没有交互的话, 那么它们是不能在短时间内发现对方已经掉线的. 为了解.

2021-03-21 23:05:47 672 3

原创 netty的ByteBuf的演示Demo

Netty的ByteBuf的演示Demo1、概述* Netty内部数据结构是一个byte,其中有一个readIndex字段,和一个writeIndex字段,标记读的位置和写的位置* [ discardable | readable | writeable ]* [ readIndex writeIndex capacity]2、常用API* Byte...

2021-03-20 16:47:20 275

原创 netty-future和promise的演示以及速率控制的案例

netty-future和promise的演示以及速率控制的案例一、future和promise的演示1、FutureFuture 模式 是处理异步执行时的一个处理模式,它有二种编程模式。第一种:将来式- 让执行线程,可以拿到异步调用的一个标记对象,如果执行线程调用future.get(),那么就能够等待异步执行的结果。第二种:回调式- 通过给Future添加回调的方式,通过回调拿到异步执行的结果案例1:/** * 案例1:使用JDk的Future模式 -- 将来式 *.

2021-03-20 16:45:09 2639

原创 netty阻塞请求的实现

Netty阻塞请求的实现一、概述和测试及工具使用1、概述什么是阻塞请求,这个名称是我自己称呼的,比如说在netty中我们客户端自定义的处理器中发送消息,但是要获得服务端的结果,却是异步返回的,怎么才能将这个异步变成同步呢?我们使用的是CountDownLatch闭锁实现。2、CountDownLatch异步转同步演示// 记录响应数据 static String res = null; // 效果,获得响应数据后,才会打印res,即线程会在await位置阻塞 pub

2021-03-18 20:47:02 1417 2

原创 netty文件上传断点续传的演示

Netty文件上传断点续传的演示一、理论和协议规范和工具类等1、实现原理: netty文件上传采用自定义的协议方式实现,断点续传主要是依据RandomAccessFile类的随机读写能力,主要流程是客户端发起请求,将需要上传文件名称、路径、读取文件的数据、以及读取文件的起始位置等等信息,并且缓存在服务端中(以文件路径为key,自定义协议对象为value),服务端拿到客户端发送的上述数据,就会写文件,并且写完文件,也会记录写过数据位置等信息,再次发送信息给客户端下一次需要读取的数据。 ...

2021-03-17 23:22:23 1512 2

原创 netty整合到spring-boot中

一、概述:netty整合到spring-boot中,主要实现方式,是通过用变量记录启动后的channel,然后server的类的bean注入到spring中,通过spring管理其生命周期以及监控其状态等等。1、创建SpringNettyServer类@Component // 主要点: 将此类的实例添加到spring中public class SpringNettyServer { private Logger logger = LoggerFactory.getLogger(Spr

2021-03-16 22:21:31 328

原创 netty使用长度解码器实现半包黏包的处理

一、概述: 1、名词解释 半包:TCP协议,存在一个缓冲区,如果发送的一个包大于这个缓冲区的大小,就会出现半包现象,即一个包分成二次发送了。 黏包:也是因为缓存区的存在,如果短时间发送很多小尺寸的包,那么tcp协议实现的底层会把这些小包一起发送。 拆包:就是对半包和黏包的一个处理。 2、概述 首先半包黏包的出现,并不是网络框架的原因,而是由于TCP协议实现产生的一个问题,如何解决半包、黏包,在我们使用的netty框架中主要有下面几个方式。 1) 设定包的结尾分割符...

2021-03-16 21:46:10 458 1

原创 java常见轮询算法

轮询算法轮询算法就是通过一个算法,对提供的一组列表进行计算,按照一定规则取出列表中的元素,常见的有顺序模式、随机模式、加权模式,加权平滑模式。定义轮询算法的接口:/** * 轮询算法接口 */public interface Balance<T> { T chooseOne(List<T> list);}1、随机模式轮询public class RandomBalance<T> implements Balance<T&gt

2021-03-10 20:45:22 8680

原创 spring-boot 配置文件加载顺序以及自定义配置文件名称

前言:spring-boot配置文件默认使用application.properties或application.yml配置文件,以及指定了spring.profiles.active = dev,可以额外加载application-dev.properties,这些都是常识性的知识,那么,如果我想加载不是application.properties的文件作为配置文件,有什么方式呢?一、自定义加载配置文件的方式自定义加载配置文件的方式一共有3种1、通过@PropertySourc..

2021-03-04 21:00:56 557 1

原创 selenium-java的使用教程

selenium的使用教程概述:selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium Remote Control)和测试的并行处理(Selenium Grid)。

2021-03-02 20:27:46 2022 4

原创 webmagic的源码分析-核心流程和组件

概述:WebMagic的结构分为Downloader、PageProcessor、Scheduler、Pipeline四大组件,并由Spider将它们彼此组织起来。这四大组件对应爬虫生命周期中的下载、处理、管理和持久化等功能。webmagic 的启动类时Spider,启动时run()方法运行时,会进行初始化各种组件,然后循环运行,从scheduler中取request,包装成runnable,进行请求处理。这个流程中,Scheduler组件负责去重和装待处理的请求,Downloader组件负责下载请求结

2021-02-25 14:43:51 768 3

原创 mybaits源码分析(八) StatementHandler的详解

mybaits源码分析(八) StatementHandler的详解 概述:StatementHandler是主要负责处理MyBatis与JDBC之间Statement的交互,通俗而言就是负责操作Statement对象与数据库之间的交互。其执行过程中主要依赖ParameterHandler和ResultSetHandler进行参数绑定和结果实体类绑定。一、类介绍1、StatementHandler的类层级 StatementHandler: 顶级接口, 定义了u...

2021-02-06 23:54:54 538 4

原创 mybaits源码分析(七) SqlSource及动态sql解析详细分析

SqlSource及动态sql解析 mybaits可以通过#{}的方式插值,也可以${}方式拼接,另外一个最强大的功能就是可以动态的解析sql语句,而不管动态解析还是静态解析,sql都是通过不同的SqlSource实现进包装的,本文将深入讲解动态sql解析。 一、sql解析加载的分析1、主干解析方法XMLScriptBuilder的parseScriptNode。a) 解析<select>语句标签的Node节点 public SqlSource par...

2021-02-06 23:47:58 583 3

原创 mybaits源码分析(六) 基础支持模块-反射-Io-类型处理

mybaits基础支撑 概述: mybaits的核心处理工作是由Executor、StatementHandler、ResultHandler、paramHandler四个模块处理整个sql执行过程,在这些过程中,主要对配置解析的一些MapperStatement、SqlSource、ResultMap、ParameterMapping这些参数型对象,进行处理工作,最终生成真实sql执行的过程,而本文主要讲解一些基础支撑的模块,方便后续的分析。 本文主要分析三个...

2021-02-06 00:06:27 272 4

原创 mybaits源码分析(五) 一级缓存、二级缓存最详细讲解

mybaits源码分析(五) 一级缓存、二级缓存详解前言:上一篇讲解了mybaits数据源,这一篇讲解一下mybaits一级缓存、二级缓存的基本使用,以及主要实现。本篇主要分为下面几个部分:一级缓存、二级缓存的使用及测试mybaits缓存相关类的介绍一级缓存详解二级缓存详解一、一级缓存、二级缓存的使用及测试在mybaits中,一级缓存是默认开启的,缓存的生命周期是sqlsession级别的,二级缓存全局配置是默认开启的,但是需要另外在namespace中也开启才可以使用二

2021-02-04 23:42:48 323 3

原创 mybaits源码分析(四) mybaits数据源详解

mybaits源码分析(四) 数据源前言:对于ORM框架,数据源都是不可或少的组件,虽然mybaits框架整合spring时,可以由外部指定数据源对象,构建到SqlSessionFactoryBean中,但是对于mybaits自身对数据源的实现原理还是值得探究的,本文将通过对MyBatis框架的数据源结构进行详尽的分析,并且深入解析MyBatis的连接池。本文内容初步分为下面几个部分 mybaits数据源的概述 mybaits数据源的构建和使用...

2021-02-03 23:08:44 581 3

原创 mybaits源码分析(三) 事务管理

mybaits源码分析(三) 事务管理前言:在mybaits源码分析(一) 核心执行流程事务这一块几乎是没讲到过。本篇主要讲解mybaits事务管理的实现机制,介绍mybaits事务设计接口和不同的实现,以及不同的事务实现JdbcTransaction 和 ManagedTransaction的具体实现不同,并且对mybaits配置文件解析,创建事务对象和实际使用的流程进行了分析。一、概述: 对数据库的事务而言,应该具有以下几点:创建(create)、提交(commi...

2021-02-02 21:44:29 203 3

原创 mybaits源码分析(二) 配置解析

mybaits源码分析(二) 配置解析 概述: 从上篇我们知道,mybaits在构建SqlsessionFacotry,实际是调用一系列的BaseBuilder的子类(内有configuration属性),来完成各种xml配置的解析,而实际上解析工作,是由XPathParser和包装dom节点node的Xnode完成解析工作。下面是XMLConfigBuilder的部分代码。 private XPathParser parser; // xpath解析器 public XMLC...

2021-02-02 20:38:47 220 3

原创 mybaits源码分析(一) 核心执行流程

本文主要介绍mybaits的核心执行过程的源码分析,我们按照xml配置的方式,建立一个查询的demo,测试代码如下@Test public void test2() throws Exception { InputStream in = Resources.getResourceAsStream("custom/sqlMapConfig2.xml"); SqlSessionFactory factory2 = new SqlSessionFactoryBuilder().build(in)

2021-02-01 22:32:14 211 3

原创 Spring的IOC依赖的处理方式的演示

前言:spring在getBean的时候,能够自动处理加载依赖的bean,即先实例化初始化依赖bean,然后再实例化本bean,这个过程中依赖以及循环依赖的校验是怎么处理的,我们用一个小案例进行演示。1、概述我们自制一个集BeanDefinition注册,bean实例化,依赖校验和依赖关系注册等等一系列功能为一体的BeanFacotry,即把spring继承各种接口的功能基于一体的BeanFaoctry(DefaultListableBeanFactory)。首先这个BeanFactory需要有能够

2021-01-29 21:40:46 228 3

原创 spring源码分析(一) IOC源码分析

spring-ioc源码分析概述:spring是一个ioc容器,ioc就是我们把对象之间的依赖关系交给spring进行管理,比如说,我们在配置文件或者java配置类定义了bean的各种关系,spring负责加载这些bean,并维护了类之间的依赖,如果我们需要使用bean,直接getBean即可,这个就是spring作为Ioc容器的主要功能。一、类介绍1、ApplicationContext的总览为了分析ioc的原理,我们先从可以接触到的applicationContent类进行入手,下面这个

2021-01-28 22:58:55 251 5

原创 spring-boot 启动自动加载配置的原理相关

spring-boot 自动加载的原理概述:spring-boot项目中,我们只要创建一个启动类并且标注@SpringBootApplication注解,就可以完成自动化的配置,这其中的原理,主要就是@SpringBootApplication注解的作用,下面我们详细分析下这个注解。一、SpringBootApplication注解@SpringBootApplication注解主要包装了三个子注解如下:@SpringBootConfiguration、@EnableAutoCon...

2021-01-27 22:08:43 397 3

原创 假装看源码之springmvc (四) springmvc的处理方法返回值处理

springmvc的处理方法返回值处理在springmvc我们自己创建的Controller中的方法,可以返回不同的返回值,而不管是什么样的返回值,最后的请求都会被正确的处理,在前面视图解析篇中,我们主要关注点是视图解析找视图,model数据合并,渲染视图,然而在这个过程中,我们忽略了这个解析视图的名称是怎么来的,resetFul请求(responseBody)没有视图,又是怎么中断请求的,不同的返回值是怎么通用的处理成modelAndValue的,带着这些问题,为了更加深入的探究这里面的奥秘,今天..

2021-01-26 22:46:14 451 3

原创 假装看源码之springmvc (三) springmvc的视图解析

springmvc的视图解析概述:springmvc的视图解析主要是通过ViewResolver构建View,然后组装model数据,最后渲染视图,ViewResolver是由我们配置的,默认提供的ViewResolver是InternalResourceViewResolver即Jsp的视图,下面我们在源码里找到视图解析的原理和实现。一、ViewResolver分析springmvc视图解析是通过ViewResolver根据view的名称,来查询指定的view,而View复制渲染,Resolv

2021-01-23 00:25:37 238 5

原创 LinkedHashMap实现LRU以及其在spring-mvc中AbstractCachingViewResolver运用

LinkedHashMap实现LRU以及其在spring-mvc中AbstractCachingViewResolver运用一、LinkedHashMap实现LRU1、LinkedHashMap有一个三个参数的构造函数,new LinkedHashMap<Object, View>(size, 0.75f, true),其中第三个参数accessOrder的作用是如果元素被访问的情况下,是否把元素添加到链表的尾部。结合LinkedHashMap的一个protected的removeEld

2021-01-22 23:15:25 257 3

原创 假装看源码之springmvc (二) 重定向带参数RedirectAttributes的原理

重定向带参数RedirectAttributes的原理一、 概述:有些功能需要在重定向的时候,带上上一次请求的参数,第一个方法,可以采用重定向拼接参数方法,第二个方法,可以采用RedirectAttributes的方式,用它来添加需要重定向带上的参数,而RedirectAttributes也有2个方式。然后重定向请求返回到页面的时候,才可以得到这个请求的参数,或者用@ModelAttribute获取。RedirectAttributes重定向带参数的2个方式:方式1: 通过att...

2021-01-21 22:54:46 571 3

原创 spring-mvc拦截器的原理和范例演示

spring-mvc拦截器 概述: spring-mvc拦截器主要是通过实现HandlerInterceptor接口,在spring-mvc的核心DispatcherServlet执行主要处理请求方法doDispatch时,由处理器映射器HandlerMapping根据请求对象requset的请求路径,找到对应的Handler以及包装HandlerInterceptor实现类组装成HandlerInterceptorChain,然后由HandlerInterceptorChain根据Ha...

2021-01-21 20:31:02 235 3

原创 spring-boot-note11---springsecurity的使用

前言: Spring Security 是 Spring 家族中的一个安全管理框架,Spring Security 基于 Spring 框架,提供了一套 Web 应用安全性的完整解决方案。一般来说,Web 应用的安全性包括用户认证(Authentication)和用户授权(Authorization)两个部分。用户认证指的是验证某个用户是否为系统中的合法主体,也就是说用户能否访问该系统。用户认证一般要求用户提供用户名和密码。系统通过校验用户名和密码来完成认证过程。用户授权指的是验证某个用户是否有权限..

2021-01-20 21:51:29 184 3

原创 shiro多realm的spring-boot案例剖析

shiro多realm整合的spring-boot案例剖析 概述:shiro认证的流程主要是通过securityManager调用login(Subject subject, AuthenticationToken token)方法,实际上委托的是Authenticator(认证器进行认证),默认情况下使用的是ModularRealmAuthenticator认证器,如果我们只有1个realm,最终的认证操作就是调用这个realm,如果我们有多个realm呢?这个时候就需要我们对Modular..

2021-01-18 22:14:57 332 4

原创 vue基础扩展9-属性监测变更原理

// vue属性监测变更原理 // 概述: 在使用vue中我们在data中定义的属性,能够在改变后,页面能够监听这些变化,下面演示属性监测变更的一些原理。 // 1、定义一个对象,用get、set改写属性, 即在get和set可以定义扩展的功能,而vue属性监测变更主要是通过同一个Dep对象 // 实现get,set的变更监听。即get时(如页面使用属性时),包装使用这些者属性为一个(Watch对象),添加到Dep中,而set时 //,调用这些所有, 添加的监听。 var obj.

2021-01-15 23:12:04 252 3

net_assist.rar

NetAssist是一款免费的网络调试工具,是学习netty时候,必备工具。

2021-03-11

dubbo-admin-2.6.0

dubbo-admin打包好的war包

2021-01-04

windows Let's Encrypt工具

Let's Encrypt是国外一个公共的免费SSL项目,由 Linux 基金会托管,由Mozilla、思科、Akamai、IdenTrust和EFF等组织发起,靠谱!   3、Let's Encrypt安装部署简单、方便,目前Cpanel、Oneinstack等面板都已经集成了Let's Encrypt一键申请安装,简单! 4、Let's Encrypt证书有效期三个月,每三个月需要续签证书 see why 这个工具是Let's Encrypt证书在windows平台使用的。

2018-08-21

深入理解Java虚拟机

深入理解java虚拟机,中文版,pdf带目录,文件小,质量高

2018-01-27

空空如也

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

TA关注的人

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