- 博客(58)
- 资源 (2)
- 收藏
- 关注
原创 绝对干货-讲讲设计模式之结构型设计模式
,举个反例:现在已有一个运用组合思想实现的静态代理类来给老功能做逻辑扩展,,后面发现新的需求需要新的扩展逻辑,,那我们就要再去重新写一个静态代理类,,然后后面发现新需求又来了,又要再重新添加扩展逻辑在写一个静态代理类,,该死的新需求老是需要新的扩展逻辑,这样导致我们针对同一个类写了好多代理类,发现这么多静态代理类特别难管理,没法对代码的规范方法命名什么做限制,经典的23种设计模式种属于结构型设计模式的是装饰模式,适配器模式,代理模式,组合模式,桥接模式,外观模式,享元模式。
2023-12-23 18:45:22
871
原创 绝对干货-讲讲设计模式之创建型设计模式的本质
创建型模式(Creational Patterns):创建型模式关注对象的创建机制,包括了如何实例化一个对象或者一组对象的方法。,并且提供全局唯一的访问点,方便其他对象来访问该实例,实现了对象的复用和全局访问的需求。原型模式主要针对已有对象来复刻新的对象,主要解决的问题就是大批量同类对象创建的性能问题,通过克隆的方式省去了对象创建过程中很多前置复杂的操作。通过共同的接口来集中管理对象的创建逻辑,隐藏对象的具体实现,来实现对象的创建和使用的解耦。它将对象的构建过程和其表示分离,使得相同的构建过程(
2023-11-26 19:39:04
571
原创 大话java异常家族-检查与非检查
其实你爷爷Exception本身就属于检查异常,只是从你父亲(RunTimeException )这一脉开辟了非检查异常的先河 从你父亲(RunTimeException )这一脉开始往下都是隶属于非检查异常,当然也包括你,然后你父亲的兄弟姐妹都是继承了你爷爷的检查异常。有一天你开始疑惑为啥是你父亲(RunTimeException )开创非检查异常,你反复看你父亲履历(源码)也没发现什么特殊的地方,然后你开始往上翻你的家族史,终于在你的老祖履历中发现了。定义为非检查异常,这是一个约定俗成的规则。
2023-11-23 22:29:11
504
原创 MethodArgumentNotValidException 与 ConstraintViolationException
当使用注解进行参数校验时,如果参数违反了约束条件(例如,@NotNull、@Size、@Pattern等),就会抛出 ConstraintViolationException 异常。MethodArgumentNotValidException 和ConstraintViolationException 都是用于处理参数校验异常的异常类,但它们在不同的上下文中使用。- 通常,该异常是在控制器(Controller)中接收到请求参数后发生的,它包含了关于哪个参数违反了约束条件以及相应的错误消息。
2023-11-22 21:28:38
1679
原创 日志门面slf4j与常用的日志框架Log4j,Logback和Log4j2
slf4j 是众多日志框架接口的集合(俗称日志门面),它不负责具体的日志实现,只在编译时负责寻找合适的日志框架进行绑定,各日志框架通过扩展jar包中的适配器与slf4j建立适配 SLF4J可以和Log4j、Logback、Log4j2、JUL等日志框架配合使用,这里主要讲一下常用的几种。Apache Log4j 2是对 Log4j 的升级,它比其前身 Log4j 1.x 提供了重大改进,并提供了 Logback 中可用的许多改进,同时修复了 Logback 架构中的一些固有问题。按出现顺序逐个分析一下。
2023-11-21 22:26:34
976
原创 Jmeter 吞吐量Per User作用
聚合报告中将统计的的样本数将变成线程组配置的线程数*吞吐量控制器配置的执行样本数量。前提是线程组配置执行接口的次数线程数*循环数 大于吞吐量控制器配置的执行样本数量。第一点:Per User仅在Total Execution时生效。第二点:Per User 选中后。
2023-11-18 15:47:37
584
原创 讲一下归约函数reduce 以及它的函数式接口BinaryOperator
在计算中,归约函数通常用于将一个集合或流中的元素聚合成一个结果。看到没有人家是三种不同的泛型,简单来说就是输入前两种泛型的值,一顿骚操作 返回第三种泛型的值,那么问题来了具体的骚操作是啥呢?BiPredicate<T,U> 其相当于BiFunction<T,U,Boolean> 这样理解是不是相当简单。方法中,归约函数接受两个参数:累加器(初始值或者上一次归约操作的结果)和当前元素,并返回一个新的累加器的值。方法接受一个归约函数作为参数,并将其应用于流中的元素来生成一个结果。方法来执行集合的归约操作。
2023-11-08 21:23:42
181
原创 系统讲解java中list.stream()的用法
在Java 8及以后的版本中,引入了新的Stream API,这个API提供了一组新的操作方法,可以便捷。中间操作是懒执行的,只有在触发终止操作时,中间操作才会被执行,中间操作函数还有对应的子中间操作函数可调用。中间操作可以被连续地串联起来形成一个操作流水线,最终由终止操作来触发流的执行。它定义了比较两个对象的规则,用于在排序、查找等操作中确定对象的顺序。终止操作是惰性求值的,也就是说,只有在调用终止操作时,中间操作才会被执行。类型的参数,该接口接受一个输入元素,并返回指定类型的元素流。
2023-11-08 17:45:17
1351
原创 SELECT COUNT( * ) 与SELECT COUNT( 1 ) 区别
这是一种更为简洁和高效的写法。它会统计符合查询条件的行数,但实际上并不关心查询的具体列。因为我们只关心存在与否,所以使用任意常量(例如 1)代替列名即可。:这是一种常见且通用的写法,它会统计所有符合查询条件的行数,包括所有列,不包括 NULL 值。它会对查询的每一行进行计数,这可能涉及扫描整个表或使用索引。这是因为数据库引擎在执行查询时,并不需要获取所有列的数据,只需要判断是否存在即可。都用于统计符合条件的行数,但它们在具体实现和效率上有一些区别。可以避免读取额外的数据,从而提高查询性能。
2023-11-05 15:22:49
1464
原创 讲一下 O(n)、O(log n)、O(n^2)、O(2^n)四种 时间复杂度
O(2^n) 表示算法的时间复杂度随着输入规模 n 的增长呈指数级增加。通常,具有 O(2^n) 时间复杂度的算法是指数级算法,例如穷举搜索算法(如子集生成、组合优化问题等)。O(log n) 表示算法的时间复杂度与输入规模 n 的对数成正比。O(n^2) 表示算法的时间复杂度与输入规模 n 的平方成正比。常见的具有 O(n^2) 时间复杂度的算法包括冒泡排序、插入排序、选择排序等。O(n) 的时间复杂度表示当 n 增长时,算法的执行时间最多会线性增加,不会超过 n 倍。
2023-11-02 21:15:11
855
原创 Mysql 行级锁读锁/写锁加锁时机以及如何避免行锁升级为表锁
-手动加行读锁:select * from tablename where id =1。--手动加行写锁:select * from tablename where id =1。自动加行锁的情况,当使用update 和delete 是where查询命中索引时(其实间隙锁也是这个道理)1.如果update 和delete没有命中索引则会出现行锁升级为表锁(间隙锁锁住了所有行)next - key 锁 = record lock(行锁 ) + gap锁。间隙锁 是锁住一个区间,区间类更改会阻塞。
2023-10-31 21:48:12
330
原创 mysql 元数据锁 MDL读锁与MDL写锁
此时事务2执行alter table tablename add ... --会发生修改阻塞。--相当于加了MDL读锁。--提交事务 释放MDL读锁。如果事务一执行做dml操作,操作期间将加MDL写锁。
2023-10-31 20:35:29
102
原创 Mysql 表读锁与表写锁
加锁:lock table table_name write 释放锁:unlock tables。加锁:lock table table_name read 释放锁:unlock tables。2.期间事务2可以访问该表,但是修改事会遇到阻塞等待,只有等到事务一释放锁后才能修改成功。1.期间事务2不可以访问该表(遇到查询阻塞)只有等到事务一释放锁后才能查询成功。当事务一用表读锁锁住某张表后,1.事务一必须释放表读锁才能访问其他表。当事务一用表写锁锁住某张表后,
2023-10-31 20:22:15
177
原创 关于mysql json字段创建索引
JSON_CONTAINS() 数组中是否包含某些值,交集(必须都包含,此处注意mysql版本必须是8.024以上否则使用可能会失效)JSON_OVERLAPS() 数组中是否包含某些值,并集(只要包含一个就行省的用JSON_CONTAINS一直OR)1.给json数组里的对象属性param_value(假如是数字类型)创建索引。被创建索引的关键字类型又分两种,数字(UNSIGNED)和字符串(char(128))一、给json对象属性param_value(假如是长度128以下的字符串)创建索引。
2023-10-30 22:05:44
440
原创 关于原生js 获取元素的总结
首先页面标签比如a 标签行类定义一个onclick=“findAA();return=false”函数注意这里也可以定义成onclick=“findAA(this);return=false”(;return false加不加区别就是阻止冒泡)这个this加不加决定了你在findAA()函数中获取当前被点击节点元素的方法如果加this那么获取方法就是直接function findAA(e){//这里e拿来就是当前点击的节点元素你可以通过e.parentNode获取到被点击元素的父节.
2020-06-10 20:49:14
326
原创 利用qq官方提供的js_sdk实现qq互联登录
最新公司交给我一个实现qq互联登录系统的功能,公司其他人也没有这方面经验,全靠网上搜索资料实现了该功能,下面总结一下个人实现该功能的一些总结,有一些不对的地方望网友交流指正 首先讲一下我们这边的需求,主要就是实现一个用qq号绑定系统账号后实现qq互联登录的功能 ,我们的需求里不需要获取qq里的一些信息(我们不需要实现利用qq号注册的功能),所以我把我使用js_sdk实现qq互联登录过程分成几个...
2019-07-13 18:17:27
1109
原创 关于eclipse的使用总结
最近新入职一家公司,公司内部要求统一要求开发环境为idea。其实自我从事java开发工作以来,我所任职的前两家公司都是统一使用eclipse作为日常开发工具,突然让我换掉熟悉的老朋友还真有点恋恋不舍,,,考虑到今后可能回忘记eclipse的一些操作,我决定写了这篇关于eclipse的使用总结。有些的不好的地方也请网友们指正交流。Eclipse的设计思想是:一切皆插件。Eclipse核心很小,其它...
2019-07-07 13:50:47
714
原创 关于mysql主键类型选择数据库自增主键,还是选择uuid的问题的理解
最近遇到了要选择String类型通过uuid设置实体类id好还是选择数字整型设置成数据库自增好的问题,总结了一下两者的优缺点:用数据库自增id的优点:首先字段长度较uuid小很多,可以是bigint甚至是int类型,这对检索的性能会有所影响。我们平时数据库一般用的都是innodb引擎的表,这种表格检索数据的时候,哪怕走索引,也是先根据索引找到主键,然后由主键找到这条记录。所以主键的长度短的话...
2019-05-08 20:45:36
1170
2
原创 关于事务管理器
1.proxy-target-class=“true” 与proxy-target-class="false"的区别<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/> 注意:proxy-target-class属性值决定是基于接口的还是基于类的代理被创...
2019-04-28 22:38:45
802
原创 关于异常捕捉
关与异常捕捉这个问题首先我们要区分什么时候用try {}catch(){}什么时候用throw 什么时候用throws,1.如果你需要抓取具体的异常那么需要对代码块用try {}catch(){}2.如果你将抓取的异常抛出到控制台或日志中就需要用到throw — 注意这个throw一般会写在catch代码块里,还有就是如果catch中加了这个throw,并且try {}catch(){}捕捉...
2019-04-28 21:28:57
427
原创 $.ajax()方法详解
转载至:博客园jquery中的ajax方法参数总是记不住,这里记录一下。1.url:要求为String类型的参数,(默认为当前页地址)发送请求的地址。2.type:要求为String类型的参数,请求方式(post或get)默认为get。注意其他http请求方法,例如put和delete也可以使用,但仅部分浏览器支持。3.timeout:要求为Number类型的参数,设置请求超时时间(...
2019-04-10 22:19:42
618
原创 关于slf4j与log4j
每个Java开发人员都知道日志记录对Java应用的重要性,尤其是对服务端应用,而且其中许多人都已经熟悉了各种记录日志的库,比如java.util.logging,Apache的log4j,logback,然而如果你不知道SLF4J,java的简单记录日志的设计的话 ,那么到了学习并在你的项目中使用它的时候了。在这篇Java文档里,我们将学习为什么使用SLF4J比使用log4j或者java.util...
2019-04-07 19:38:27
267
原创 Spring如何加载Properties文件
Spring的框架中,org.springframework.beans.factory.config.PropertyPlaceholderConfigurer类可以将.properties(key/value形式)文件中一些动态设定的值(value),在XML中替换为占位该键(keykeykey)的值,.properties文件可以根据客户需求,自定义一些相关的参数,这样的设计可提供程序的...
2019-03-19 00:27:17
1316
原创 关于static写的比较好的文章
我只想提醒访客两句话:1被static修饰的属性,方法,代码块在类的多次加载中只会初始化一次,即无论里new多少次类,被static修饰的属性,方法,代码块,只会在第一次new时加载2.被static修饰的属性,方法,代码块其实不需要new类,直接用类名就可以调用详细解释static比较好的文章转载博客园的文章...
2019-03-13 22:02:39
105
原创 关于使用wetouch的ui-table标签不能通过 设置start-refresh为true实现table的立即刷新的一种解决方法
由于移动端用的wetouch框架来开发,这里要做一个需要实时刷新的list展示,并且又不想用table标签来做,所以在开发文档中找到wetouch组件:ui-table但是这里遇到了一个刷新的问题 即设置start-refresh为true实现table的立即刷新,用文档里提供的这个方法始终不能实现随时刷新,后来不得已 直接不用ui-table里的自带的url属性 而是通过ui.reques...
2019-03-05 22:55:16
279
原创 关于tomcat端口配置
tomcat中server.xml端口配置的简单阐述:一般server.xml都会有都是有三个port端口以及两个redirectPort端口这里简单解释一下这几个端口的意识下面是某个项目的tomcat配置文件&amp;amp;amp;amp;lt;?xml version=&amp;amp;amp;quot;1.0&amp;amp;amp;quot; encoding=&amp;amp;amp;quot;UTF-8&
2019-01-25 23:23:32
740
原创 有关svn服务端与客户端的问题总结
SVN如何将版本库url访问地址中的https改为http(学习转载)最近遇到一个安装完svn服务端VisualSvnServer后首次上传文件的问题主要问题是之前的文件是包含之前svn地址的,我想直接对这个包含以前svn地址的文件进行上传操作结果搞了半天也没有成果。最后发现了几种解决办法:第一种方法:去掉文件的老svn地址通过svn的导出功能将目标文件导出,,导出的文件就不带svn地址...
2019-01-01 03:36:56
448
1
原创 TCP/IP协议、HTTP协议、SOCKET通讯详解
1、TCP连接TCP(Transmission Control Protocol) 传输控制协议。TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握确认建立一个连接。位码即tcp标志位,有6种 标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urg...
2019-01-01 02:20:11
250
1
原创 关于springmvc如何与前台交互json格式数据总结
首先简单介绍一下springmvc与前台交互的两种形式:可以看出,前台传过来的方式有两种,一种是传json格式的数据过来,另一种就是在url的末尾传普通的key/value串过来,针对这两种方式,在Controller类中会有不同的解析,但是在Controller类中返回的json格式的数据都是一样的。下面来具体分析一下SpringMVC是如何与前台进行json数据的交互的。在讲之前先认识两个...
2018-12-16 20:33:15
193
原创 使用Visual Studio 2017创建 we touch 项目时关于工作区的问题
关于Visual Studio 2017如何下载包实现 we touch 开发环境的可以参考WeTouch 开发文档这里谈如果不小心导致这种情况首先这种情况出现的原因是因为里不小心在同一个工作区根目录导入了两个文件夹后导致的,,至于工作区名123是我点击 -文件 - 工作区另存为 后重命名的现在教大家将工作区恢复到初创时的情况,第一步:第一步就是上面的工作区另存为,然后随便取个...
2018-12-15 22:17:46
705
原创 关于eclipse配置tomcat配置
1代表tomcat安装路径2.代表项目部署路径还有一个servlet里一个重要的配置,上网搜了下这句的解释:contex指上下文,实际上就是一个web项目;path是虚拟目录,访问的时候用127.0.0.1:8080/welcom/*.jsp访问网页,welcome前面要加/;docBase是网页实际存放位置的根目录,映射为path虚拟目录;...
2018-12-15 20:58:42
143
原创 在mysql5.7存在的情况下在安装一个mysql8.0以上版本数据库的办法
想想都难受,为了想保住本机的5.7版本,在不卸载的情况下装一个mysql8.0以上版本,1.为了方便起见我们先把本机mysql服务都停了(快捷win+R 运行 【services.msc】 打开【服务】然后将MYSQL57关了)2.如果你的my.ini文件在安装目录直接打开,如果不在,一般在c盘全局搜一下my.ini就有了,改一下里面的客户端与服务端两个端口,可以改成3307,方正避开3306...
2018-12-15 01:57:24
3364
原创 Mysql如何找到my.ini文件并修改端口
一般my.ini文件会在mysql安装目录下,如果不在一般可以在c盘全局搜my.ini就可以搜出来然后点击打开客户端服务端端口都要修改
2018-12-15 00:20:28
1723
原创 Visual Studio Code 2017如何汉化
安装打开2017后进入操作界面,然后点击如图:在搜索框中搜索单词chinese,会出现中文简体的安装包,点击安装,安装完就是中文界面了,上图是我安装过的...
2018-12-14 21:21:05
1280
solr7.5手动倒mysql库需要用到的jar.zip 两个jar都在压缩包里
2020-07-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人