- 博客(151)
- 问答 (1)
- 收藏
- 关注
原创 CDP和Chrome
WebDriver和是用于自动化浏览器的两个主要协议,大多数的浏览器自动化工具都是基于上述其中之一来实现的。可以通过这两种形式来和浏览器交互,通过代码来控制浏览器,完成浏览器的自动化行为(包括网页加载,爬虫,截图,导出pdf等)。
2024-02-18 23:45:32
2184
原创 GO-日志分析
官网:https://github.com/uber-go/zapzap在很多开源的库中使用,比如etcddubbo-go等中。
2023-09-19 23:47:06
808
1
原创 Go 异步任务
异步任务在开发中很常见,用来做解耦。本文介绍一下异步队列的实现的几个问题,并且结合三方库实现来分析。带着上面的问题,对比https://github.com/golang-queue/queue的实现,说明一下。
2023-08-08 23:54:29
661
原创 Dubbogo 详解
dubbo功能很强大的微服务开发框架,支持多种通信协议,并具有流量治理的功能。dubbo在有了大转变,拥抱了云原生,从哪些方面可以体现呢?
2023-07-23 22:09:10
1078
原创 GO web开发
go官方提供了http服务,但它的功能很简单。这里介绍web开发中的一些问题,和web框架(echo)怎么解决这些问题 ,对于具体的echo的使用,可看官网官网:它的特点:关于echo和gin的不同可以看下面的内容对于我来说,有下面几点官网提供了详细的例子和使用说明,具体可以看官网。除此之外,还需要注意未知的错误发生,导致程序发生意外。在开始之前先列举go原生和echo的两种方式。
2023-07-01 23:49:26
639
原创 GO channel解析
官方文档:https://go.dev/ref/spec#Channel_types在 Go 语言中,channel 是一种用于在 goroutine 之间进行通信和同步的机制。可以用于在不同的 goroutine 之间传递数据。
2023-06-26 15:12:56
347
1
原创 GO defer详解
关于defer,找到了两篇官方的文章defer是Go语言的一种延迟调用的机制,可以在函数执行完毕之后执行动作。在函数return或者painc(这两种情况下,当前函数执行结束了,这也算函数执行完毕之后)执行。
2023-06-20 23:15:34
678
1
原创 Go-unsafe详解
Go语言的unsafe包提供了一些底层操作的函数,这些函数可以绕过Go语言的类型系统,直接操作内存。虽然这些函数很强大,但是使用不当可能会导致程序崩溃或者产生不可预料的行为。因此,使用unsafe包时必须小心谨慎。此外,他提供了一些方法和类型如下其中Pointer的功能是很强大的,reflect包的功能大多基于它实现,具体可看下面内容。
2023-06-18 18:22:37
1020
原创 GO-slice详解
slice(切片)是go中常见和强大的类型,这篇文章不是slice使用简介,从源码角度来分析slice的实现,slice的一些迷惑的使用方式,同时也讲清楚一些问题。官方有slice相关的博客。
2023-06-11 13:55:53
1472
原创 go-Context详解
Context是一个很特殊的接口,在go里面主要承担的责任是在边界(方法,线程等)传递上下文,这些上下文包括需要有几个注意点。
2023-06-08 00:10:42
1321
原创 GO 性能分析
go提供了内存分析工具,pprof利用它可以看cpu和内存的情况。pprof分为大体分为两个部分数据采集有两种方式:官方官方提供了两种方式这是用来给没http服务来使用给http服务来使用的,提供了路由来方便访问。三方库profile数据分析:官方文档:https://github.com/google/pprof。
2023-06-06 01:24:40
405
原创 go调试工具-delve
上面的快速开始介绍了一些常用的使用方式,它的help写的很好,很清晰,关于单个命令就不再这里介绍了。下面主要介绍几个命令debugexectest除此之外还有一个子命令(开始dlv session之后的输入的命令)disassemble-官方文档。
2023-06-04 18:45:24
1053
原创 go-cli
在使用flag的时候,一般来说,有两个步骤定义flag。调用解析。正常使用。cobra是一个cli的框架,利用他可以创建强大的现代化的CLI的应用程序并且可以生成命令文件,他包含一下特点支持子命令和命令嵌套。完全的遵从的POSIX的flag。全局和局部的flag。智能建议(app server… did you mean app server?)。自动生成help命令和flag(-h --help)支持命令别名。…
2022-11-30 23:26:01
652
原创 go nil介绍
在 Go 中,为了简单和方便,nil 被设计为一个标识符,可以用来表示某些类型的零值。他不是一个不变的值,而是随着不同类型有不同的类型,在日常的编码中,编译器会根据上下文来推导出。
2022-11-09 00:34:52
1016
原创 go mock使用介绍
go mock使用介绍单元测试需要mock一些东西(比如,RPC的远程调用),这里介绍goMock的使用方式。安装需要安装两个东西gomock的包用来做mock代码库的。仓库:github.com/golang/mock/gomockgo get github.com/golang/mock/gomockgogen工具仓库:github.com/golang/mock/mockgen一个工具,用来帮助生成mock代码的。理论上来说,不用这个工具是可以的,自己用手写。go版
2022-05-29 16:16:50
3612
3
原创 MySQL-InnoDB锁
MySQL-InnoDB锁innoDB中支持下面的几种锁:Shared and Exclusive Locks(共享锁和独占锁)Intention Locks(意向锁)Record Locks(记录锁)Gap Locks(间隙锁)Next-Key LocksInsert Intention Locks(插入意向锁)AUTO-INC Locks(自动提交锁)Predicate Locks for Spatial Indexes(空间索引的谓词判断锁)Shared and Exclusi
2022-05-22 23:57:54
356
1
原创 mysql-InnoDB-mvcc
mysql-InnoDB-mvcc概述mvcc全称为Multi-Version Concurrency Control(多版本并发控制),出现的背景是为了减少锁的使用,事务的隔离级别是读锁和写锁在相互作用的不同结果(下文会详细的介绍),mvcc的出现是为了减少锁的使用,在保证隔离性的前提下提高效率。通过快照(版本)来实现。锁实现隔离性事务存在意义是保证系统的所有的数据都是符合期望的,数据的状态是一致的。数据库的理论中,为了实现这个目标需要从下面的三个点开始入手:原子性(A)隔离性(C)持久性
2022-05-15 20:45:56
355
原创 SpringDataMongoDB-4
SpringDataMongoDB-4Lifecycle EventsSpringData MongoDB提供了几个特殊的事件类型,我们可以继承AbstractMongoEventListener 重写他的方法,或者实现ApplicationListener接受MongoMappingEvent<?>事件,就可以做操作了。由下面的几个事件AfterLoadEventAfterDeleteEventBeforeDeleteEventBeforeConvertEventBefore
2022-05-02 13:53:04
1585
原创 SpringDataMongoDB-3
SpringDataMongoDB-3自定义Spring Data Repositories的实现自定义RepositoriesSpringData提供了各种各样的方法为了减少代码量,但是如果这些还不能满足我们的要求,可以自己提供repository的实现。两种方式独立于SpringData,不适用他提供的一些方法。自己定义接口,自己写实现类。这种很简单,不依托SpringData,那它就是一个独立的Bean。按照正常的方式使用就好了接口public interface CustomerB
2022-04-30 21:41:04
629
原创 SpringDataMongoDB-2
SpringDataMongoDB-2定义Repository接口这是使用SpringData MongoDB的第一步,先定义 Repository。这个接口需要传递两个类型参数,域对象和主键的类型。就像上一节例子的那样。增加顶级接口一般来说都是直接继承Repository或者CrudRepository,或者具体的SpringData各个模块自己实现的Repository的子类。但是如果自己想要做一个顶级的接口,项目中的各个Repository继承与它来做处理。需要按照下面的步骤来操作。自定
2022-04-28 22:58:12
1900
原创 SpringDataMongoDB-1
SpringDataMongoDB-1有两种方式来操作MongoDB,使用它最原始的Client和使用SpringDataMongoDB来操作。这里主要介绍具体的使用方式。MongoDB官方文档MongoDB下载SpringData-MongoDB官方文档写在前面Spring Data MongoDB 3.x的版本>=JDK1.8,Spring的版本>=5.3.19下面的表格列出了SpringDataMongo、Driver、服务器版本的兼容性。Spring Data R
2022-04-28 11:59:14
231
原创 Java I/O介绍
Java I/O介绍Linux I/O模型要知道,在Linux中,一切都是文件,对socket的操作也可以看做对文件的操作,文件操作有一个文件描述符(File descriptor,简称为fd)。对文件的读写操作会调用内核提供的命令,返回fd给调用方,通过它来操作。同步堵塞同步堵塞IO模型最常见的,进程调用recvFrom,当前线程会一直堵塞,一直等到数据复制到进程的缓冲区或者发生异常的时候才返回(有用户态和系统态,一般的数据流向是,数据一开始是放在磁盘的,当进程调用读取命令的时候,内核会开
2022-04-28 11:48:49
157
1
原创 Spring-Aop
Spring-Aop分析Aop的大体实现的思路,说明关键类的作用。例子配置package com.lc.proxy;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.EnableAspectJAutoProxy;@Confi
2022-02-27 17:53:53
224
原创 Spring-动态数据源
Spring-动态数据源动态数据源的原理得先说清。原理平常在使用Mysql的时候是通过JDBC的,得给一个url,userName,和password,如下: jdbc:mysql://localhost:3306/t_db1?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC一个url对应一个Connection对象,需要在url中指定需要连接的库。之后的Mysql的CRUD的操作都是通过Connectio
2022-02-26 18:20:09
6216
8
原创 Springboot启动分析
Springboot启动分析建议先看Spring-@ComponentScan分析SpringBoot的例子就不写了,最熟悉的代码如下:@SpringBootApplicationpublic class SimpleApplication { public static void main(String[] args) { SpringApplication.run(SimpleApplication.class,args); }}SpringApplication的作用是什么?@S
2022-02-24 19:56:46
470
原创 spring事务-2(事务传播级别组合说明)
Spring事务例子配置类package com.lc.jdbc;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.jdbc.datasource.DataSourc
2022-02-23 00:35:39
603
1
原创 Spring事务-1
Spring事务例子配置类package com.lc.jdbc;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.jdbc.datasource.DataSourc
2022-02-22 19:03:17
241
原创 SpringMvc分析-3
SpringMvc分析-3本篇文章想要说说SpringMvc的一些常见的类和接口,以及他们的作用.建议对照流程图来看springMvc分析-1(总体概述)SpringMvc分析-2(细节)开头Mvc是model,view,Controller的缩写。请求由Controller处理,数据变为Model,将Model用于View的渲染。在之前的Servlet的写法中,也有类似的写法,可以只写一个HttpServlet的实现类,在这个实现类里面做请求的分发,也可以配置很多的Servlet,在Web.x
2022-02-20 12:40:47
156
原创 ControllerAdvice分析说明
ControllerAdvice分析说明@ControllerAdvice见的最多的就是同于对异常的处理。比如下面的这个样子@ControllerAdvicepublic class TestControllerAdvised { @ExceptionHandler(value = Exception.class) public String modelAndViewException(){ // 做一些异常的处理逻辑 }}在阅读SpringMvc源码的时候,发现除了异常处理之外,还有
2022-02-19 17:04:09
625
原创 SpringMvc流程分析-2
SpringMvc流程分析-2和上一篇一样,画个图比较方便的说明问题SpringMvc分析-2(细节)参数的解析操作是通过HandlerMethodArgumentResolver来做的,具体的实现方式就得看不同的实现类了,这里着重分析一下@RequestParam注解对应的解析方式(org.springframework.web.method.annotation.RequestParamMethodArgumentResolver),这种写法在Spring中很常见,提供两个方法,一个是suppo
2022-02-17 22:31:25
315
原创 SpringMvc流程分析-1
SpringMvc流程分析-1SpringMvc的大体的流程只是在网上大体的看了看,从没有对照源码来看看。本文就从源码开始,简单的分析SpringMvc的流程这里的例子很简单了,就不举了,断点打到DispatchServlet的doDispatch处理流程大体的处理流程看 springMvc处理流程概述补充说明HandlerMapping的作用是什么?HandlerMapping就一个方法,通过这个方法可以返回HandlerExecutionChain对象,这个对象会选择处理这个请求的hand
2022-02-16 19:59:37
389
原创 Mybatis动态sql实现分析
Mybatis动态sql实现分析例子Mybatis的配置文件<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "file:D:\ideaProject\mybatis-3-master\src\main\java\org\apache\ibatis\builder\xml\mybatis-3-config.d
2022-02-12 16:45:41
1132
原创 Spring-@ComponentScan分析
Spring-@ComponentScan分析简述ComponentScan注解可以指定Spring Bean 扫描的基本路径。通过它指定的路径,可以加载这个路径下面所有的符合规则的Bean(比如说@Component注解标注的类,或者ManagedBean,Named)。将他们加载到Spring中,他的功能等同于Spring xml配置文件中的<context:component-scan>标签此外,在他基本的功能上,增加了资源的匹配操作,bean名字的生成,scope注解的解析,是否使
2022-01-18 22:22:34
1041
空空如也
如何生成一个真正意义上的随机数
2021-05-20
TA创建的收藏夹 TA关注的收藏夹
TA关注的人