自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(261)
  • 资源 (1)
  • 收藏
  • 关注

原创 vue基础语法学习

注意:vue实例的代理机制的属性名是有要求的,下划线和美元符开头的一般是vue内部用的。不然就会有可能导致vue内部使用的变量被覆盖。Object是js中的类。什么是数据代理机制?

2024-04-22 21:14:16 214

原创 【无标题】

expire key seconds 例如: expire name 20。del key1 key2 key3 例如:del name age。set key value 例如: set name zhang。exists key 例如: exists name。get key value 例如:get name。ttl key 例如: ttl name。返回0 变量不存在。返回1 变量存在。

2024-04-18 22:16:13 232

原创 java操作es集群模糊查询等

注意,es根据字段多个值进行查询的时候,需要加上keyword表示不进行分词处理,用于关键词搜索,不然会出现异常的情况,查询到的结果很奇怪。这一项,分数用于判断模糊查询的匹配程度。分数越高匹配程度越高。不需要的话可以查询的时候取消评分降低性能消耗。es使用的是集群配置。引入上面的依赖后我们只需要在springboot项目当中添加以下的配置即可。注意后面导包的时候要用org下面的包而不是co下面的。这个依赖中已经包含了一下这些依赖,我们只需要在项目中引入这个依赖即可。根据id查询文档信息。

2023-09-18 08:32:42 1220

原创 Redis主从集群环境搭建以及分布式锁实现方案

这里遇到一个问题,有点时候会出现2000,但是这里并没有问题,而是我电脑性能太低导致实际上各个线程并没有同时执行,而是其中有一个线程获取到锁并释放了然后另一个线程获取到了导致的。这六个节点是相互关联的,其中一个节点加入数据在其他的节点都能够查询到数据。countdownlatch是所有线程执行完了之后才让主线程继续执行,这样我们上面代码中输出的a和b就是最终所有线程操作结束之后的值,而不是获取到线程执行过程中的值。这里说明请求是顺序执行的,是其中一个线程释放锁之后另一个线程才获取的。

2023-09-06 08:49:12 329 1

原创 事务方法中保证数据只插入一次方案探究

的值是0,a线程执行到了逻辑代码2,这个时候stamp一定已经被a线程变成了1,此时,线程b这个时候首先获取stamp的值是1,线程a还没有执行完成,也就是事务还没有提交,后面执行插入逻辑的时候当然一样会存在幻读问题,导致b线程还是能够插入成功。首先最简单的方式是在数据层面加入唯一性约束,但是项目中会出现报错,并且这里我们要求不能在数据库层面进行操作,数据的事务的隔离级别必须是可重复读,只能在代码中保证数据插入的数据的唯一性。针对上述的情况,幻读的原因就是a事务的开启在b事务提交之前。

2023-08-30 10:50:56 852 1

原创 C语言中实现hash表

一般高级语言都会有封装好的hash存储结构,使用c语言的时候同样也可以实现hash,我们自己实现的话逻辑会非常复杂,并且可能会出错,这里我们需要利用一个第三方开源的头文件。另外,对于hash的实现,键值可以是不同的类型,可以是指针,也可以是另一个结构体类型,等等。下面我们利用这个头文件来实现一个hash结构,实现添加元素、删除元素、统计元素个数、遍历元素等功能。官方文档说我们需要实现这样的一个结构体,以便我们实现hash表这个结构。判断是否包含某个键值为key的元素。另外,在官网也有它的用法介绍,

2023-04-29 12:17:08 1036 1

原创 SpringCloud-学习笔记(五)nacos集群环境搭建

我们首先使用MySQL数据库创建一个空的库,然后执行nacos压缩包的conf里面提供的nacos-conf.sql文件。官方的建议是使用MySQL组词给模式的高可用集群,这里为了方便演示,仅使用单点的数据库来测试使用。最后在浏览器访问:http://localhost/nacos即可。,然后将原来的文件的内容改为自己的ip和端口。修改集群配置(节点信息)、数据库配置。搭建MySQL集群并初始化数据库表。中数据库的配置,修改为自己的配置。然后我们下面开始配置nginx。分别启动多个nacos节点。

2023-02-20 10:36:12 459

原创 SpringCloud-学习笔记(四)nacos基本使用

namespace可以用来做环境隔离, nacos默认会有一个public的命名空间,我们也可以在控制台新建命名空间,这个时候命名空间中是没有任何服务的,如果我们想要将publlic中的服务移动到新创建的命名空间中,就需要将服务中的配置文件进行修改,服务中的application.yml文件需要添加nacos的namespace,这个namespace的值就是我们新创建的命名空间的id。使用nacos实现多个微服务的统一配置管理。修改负载均衡的规则,实现同一个集群里的服务间的调用首先调用同一个集群的服务。

2023-02-08 19:42:25 1094

原创 线程池ThreadPoolExecutor源码解析

否则,退出线程将同时中断那些尚未中断的线程。试想一下,如果我们一个比价大型的项目,,每次需要用到多线程都new一个线程,那么这就会导致线程的创建数量我们不好管理和控制,另外创建和销毁线程的开销还是比较大的,甚至有的时候都已经超过了我们这个线程本身执行这个任务所需要的资源耗,这就是非常不合理的了。我们可以看一下这个方法,我们可以发现这个线程里面不断地调用阻塞队列里面的线程,然后调用它的run方法执行任务,所以实际上没有创建新的线程,你可能比较好奇为这个执行run方法的线程是哪里来的。这样运算好像效率更高。

2023-01-16 23:23:44 464

原创 javaswing基本使用

【代码】javaswing基本使用。

2022-12-26 20:35:49 199

原创 多线程设计模式-保护性暂停模式

有这么一个场景,我们有两个线程,其中一个线程需要等待获取另外一个线程的执行结果,之气那我们是使用join方法可以实现,现在我们不用jon来实现。同时我们可以看一下join方法的底层实现原理,这里面也用到了超时等待,我们上面所写的就是join超时等待的实现原理。上面都是单任务的情况,我们还可以对上面的代码进行修改,改成多任务的版本。并创建一个公共类用来存放GuardedObject 类。同时然后编写业务类,分别添加任务和获取执行的结果。在GuradeObject类中加入以下代码。最后编写代码进行测试。

2022-12-25 13:41:44 165

原创 SimpleDateFormat线程不安全解析以及解决方案

在下面的代码中我们定义了SimpleDateFormat对象被使用的总次数以及同时使用的最大线程的数量。这个establish方法接收了一个参数calendar,而这个对象是一个SimpleDateFormat对象的遍历,多线程使用同一个这个对象,而在这个。是Java中用来日期格式化的一个类,可以将特定格式的字符转转化成日期,也可将日期转化成特定格式的字符串。对象内部的数据在多线程的操作下混乱了,也就导致在进行数据格式化的时候出现了原本不应该出现的数字,也就导致了。对象就会出现安全问题。

2022-12-19 21:58:46 388 1

原创 javassist在mybatis中的应用

获取到了mappe文件中的标签封装成的MappedStatement对象了之后,就可以调用sqlsession进行相应的操作了。是由东京工业大学的数学和计算机科学系的 Shigeru Chiba (千叶 滋)所创建的。javassist是jboss的一个子项目,其主要的优点,在于简单,而且快速。直接使用java编码的形式,而不需要了解虚拟机指令,就能动态改变类的结构,或者动态生成类。它可以在一个已经编译好的类中添加新的方法,或者是修改已有的方法,并且不需要对字节码方面有深入的了解。

2022-12-19 12:02:32 471

原创 dom4j解析xml配置文件

其实在mybatis的底层就是把sql封装成了一个MappedStatement对象,这里面记录了这个sql的各种信息,包括返回值类型,sql语句,返回的结果集,是否使用缓存等等。jaxen依赖的依赖是dom4j中用到的,所以使用dom4j的时候需要引入jaxen依赖。sqlMapper.xml是配置sql语句的配置文件。test.xml文件是mybatis的配置文件。编写代码解析xml文件。

2022-12-19 01:31:06 1130 3

原创 微信小程序订单支付后端demo

项目中我们需要自己创建自己后台的订单表。这里只是展示调用微信官方的demo,具体的业务逻辑以及各种参数的校验需要自己根据项目需要自行完善。

2022-10-11 21:56:50 635

原创 SpringSecurity学习笔记(十三)认证授权底层原理

也就是说这个对象会获取到每个接口需要哪些权限,也就是说如果我们自己实现了这样一个接口,就可以自定义接口的访问权限,如果这个自定义的是从数据库里面查询出来的就不用每次都像下面这样在代码里面写了。在之前第一篇学习ss整体架构的时候有这么一个图。在一个请求过来的时候会首先经过。

2022-10-10 19:55:57 342

原创 SpringSecurity学习笔记(十二)异常以及权限管理使用

如果我们登录了其他的无权限的用户进行访问则出现。此时我们登录id为1的用户,源码分析:这里面涉及到一个类。SS中的异常主要分为两种。我们在数据库中插入数据。

2022-10-09 22:28:27 261

原创 SpringSecurity学习笔记(十一)CSRF攻击以及CORS跨域

什么是CSRFCSRF:跨站请求伪造。也可称为一站式攻击。也可写作XSRF。按照字面意思来理解,跨站请求伪造,意思就是说用户登录了A网站之后,会话没有过期,然后登录了B网站,这个时候B网站中的请求访问了A网站,这个时候A网站就会认为是合法的用户的请求,这个时候用户是无感知的,从而导致用户在A网站的账户出现安全问题。特别是在一些银行之类的网站上如果受到这种攻击,造成的损失是致命的。CSRF防御。

2022-10-09 11:25:30 1199

原创 SpringSecurity学习笔记(十)Session会话

底层的实现原理,简单地来说实际上就是维护了一个map,记录用户以及对应的session。如果允许再次登录就会在用户在新的设备登录的时候更新对应的session,原来用户的session就会失效。不允许再次登录就是在用户再次登录的时候发现map里面已经存在了用户的session了就会直接返回错误信息。这种方式对于传统的单体的项目来说是比较容易实现的,但是在微服务项目里面我们如何实现呢?对于我们的web项目,我们可以在ss的配置里面配置下面的内容。,这个是用来将session序列化到redis的工具。

2022-10-07 23:24:22 638

原创 SpringSecurity学习笔记(九)RememberMe进阶

前面我们介绍了rememberMe的实现原理,从中我们可以思考这样一个问题,如果我们的cookie被非法用户获取,然后携带这个cookie进行访问我们的项目中的内容,就会导致非法用户登录。这个问题怎么解决呢?

2022-10-07 21:00:24 540

原创 SpringSecurity学习笔记(八)RememberMe功能

RememberMe 是一种服务器端的行为。传统的登录方式基于 Session会话,一旦用户的会话超时过期,就要再次登录,这样太过于烦琐。如果能有一种机制,让用户会话过期之后,还能继续保持认证状态,就会方便很多,RememberMe 就是为了解决这一需求而生的。原本的交互流程是,用户登录了之后会将用户的信息保存在服务端的session中,并且返回客户端一个jsessionid作为一个标识,默认过期时间是30分钟,30min没有进行任何操作,时间到了之后就会过期。

2022-10-07 16:30:02 564

原创 SpringSecurity学习笔记(七)密码加密

直接使用其他的密码加密方式我们先把密码改成bcrypt加密这个时候我们一样可以使用密码123登录第二种密码加密方式为什么我们前面说默认的是?,这个是在配置里面配置的所以只要我们自己在容器中创建一个就可以实现使用自己的默认的编码方法。如果没有找到就会自己创建一个map,这个时候就要在密码字段前面加上指明加密方式。当然如果我们自定义了一个,这样我们数据库中的密码就不需要加上密码加密前缀。}.}.}.

2022-10-06 18:15:41 1199 2

原创 SpringSecurity学习笔记(六)验证码实现

当然,项目中验证码的实现逻辑肯定不是这样子简单,而是要记录是哪个用户的验证码,而且一般是存放在redis里面设置过期时间。有了验证码之后我们就需要验证码正确之后才能进行用户名密码的验证,这时候我们需要改变验证的逻辑,自定义验证过滤器。编写Controller类返回验证码,这里注意将验证码的请求放行,不然无法获取。然后启动项目测试,只有验证码正确的时候才能访问成功。然后配置验证码生成类的信息。首先在项目中加入依赖。

2022-10-06 10:56:20 342

原创 SpringSecurity学习笔记(五)自定义数据源

我们也可以自己创建一个类型的bean这样就可以使得自动配置类失效。部分源码如下注入的//直接创建一个bean破坏 @Bean public UserDetailsService userDetailsService() {

2022-10-05 16:40:14 520 4

原创 SpringSecurity学习笔记(四)注销登录、获取用户数据

SpringSecurity注销登录、获取用户数据

2022-10-03 16:38:11 888 2

原创 SpringSecurity学习笔记(三)自定义资源拦截规则以及登录界面跳转

公共资源:可以随意访问认证访问:只有登录了之后的用户才能访问。授权访问:登录的用户必须具有响应的权限才能够访问。我们想要自定义认证逻辑,就需要创建一些原来不存在的bean,这个时候就可以使注解发现创建默认的实现类失效。测试环境搭建return "just a test,这个是公共资源!";return "访问受限资源!";}下面我们重写一个配置类去替换内部默认的配置类。

2022-10-03 10:06:20 1668

原创 SpringSecurity学习笔记(二)加载的Filter,默认配置

()

2022-10-02 14:06:11 1113

原创 SpringSecurity学习笔记(一)springSecurity的整体架构

首先我们要知道SpringSecurity是Spring家族中的一员,是基于spring框架提供的一套web应用安全性的完整解决方案,包括可高度定制的认证、授权、鉴权等一系列的流程。它在和springcloud进行整合时候具有其他的框架无法比拟的优势,因此逐渐成为微服务时代首选的安全框架。除了SpringSecurity以外还有其他的框架也能够提供安全的支持,比如Shiro:阿帕奇旗下的比较老牌的安全框架,轻量、简单、易于集成、可以单独在Javase环境中使用而不用在spring环境中使用。

2022-10-01 17:27:15 1183

原创 MySQL实现删除重复数据行仅保留一行

另外这个sql里面涉及到中间表的查询,也就是我中间又进行了一些select,这是因为MySQL中。错误的意思是说,不能先select出同一表中的某些值,再update这个表(在同一语句中)接下来研究如何做到删除重读的数据行并且仅保留第一条id最小的记录。因此我上面的sql这样写即可。创建数据库表并加入数据。

2022-09-29 13:08:37 2381

原创 最小生成树和最短路径算法

按照顶点递增的顺序不断增加顶点到树中来,增加的时候遍历已经选择的生成的树的所有的节点的边,找到权值最小的边并且没有被选中而且不会构成图的边加入到树中。最短路径和最小生成树不同的是最小生成树只能保证整个树的权值最小但是两个点的距离不一定最小,最短路径能够保证两个点之间的路径最小。按照边的权值递增的顺序构造最小生成树,每次选择边的权值最小的进行连接,如果构成图则跳过,直到所有的顶点都构造到树中。普利姆算法是将选中的顶点和未选择的顶点分成两个集合,复杂度和顶点的数量有关。科里斯卡尔算法则看的是边的数量。

2022-09-27 16:55:40 588

原创 关于Redis的事件回调解析以及docker中的配置

Redis的过期回调可以实现我们的redsi的key在过期的时候回调一些接口从而来实现项目中需要的一些功能。比如我们想在订单超时的时候进行关闭,可以用这个来进行一个简单的实现,当然实际的项目中能否这样使用我们暂且不做讨论,这里只是举个例子。这个配置的注释打开,由于打开这个回调的通知会对redis的性能有一定的影响,所以官方默认是关闭的。,这个类在我们下面创建一个监听器类的时候需要用到这个对象作为入参,所以必须创建,不然由于构造函数参数缺少没无法创建监听器bean对象。Redis的事件回调的特点。

2022-09-07 23:13:09 1221

原创 Windows的执行策略介绍

它确定是否可以加载配置文件(包括 Windows PowerShell 配置文件)和运行脚本,并且确定哪些脚本(如果有)在运行之前必须进行数字签名。本地计算机和当前用户的执行策略存储在注册表中。无需在 PowerShell 配置文件中设置执行策略。特定会话的执行策略仅存储在内存中,并在会话关闭时丢失。在 Windows 计算机上,可以为本地计算机、当前用户或特定会话设置执行策略。还可使用组策略设置为计算机和用户设置执行策略。这个时候就是执行策略的问题,修改执行策略,什么是Windows的执行策略?

2022-08-22 16:32:42 1176

转载 SpringBoot自动装配的原理

第一行if时会首先判断当前系统是否禁用了自动装配的功能,如果当前系统禁用了自动装配的功能则会返回如下这个空的数组,后续也就无法注入bean了,如果没有禁用自动装配则进入else分枝,第一步操作首先会去加载所有Spring预先定义的配置条件信息,这些配置信息在。方法,这个方法执行完毕后,Spring会把这个方法返回的类的全限定名数组里的所有的类都注入到IOC容器中。利用@Import注解,将所有符合自动装配条件的bean注入到IOC容器中。这个是一个符合注解,包含下面几个注解。的启动类上有这个注解。

2022-08-21 09:37:23 139

原创 线程间通信方式

因为如果不判断的话第一个线程执行完之后唤醒第二个,第二个执行完结束了,没有办法唤醒第三个等待的线程了。注意这里面还是需要注意一下的,比如实现打印完成之后线程结束,这里面就要进行if判断了。三个线程分别交替打印A、B、C,打印100次。基于Lock锁的Condition实现线程通信。基于synchronized 锁的实现方式。对第二种方式进行重构优化。

2022-08-20 00:44:38 70

转载 操作系统内存管理

参考文章内存管理的概念内存管理(Memory Management)是操作系统设计中最重要和最复杂的内容之一。虽然计算机硬件一直在飞速发展,内存容量也在不断增长,但是仍然不可能将所有用户进程和系统所需要的全部程序和数据放入主存中,所以操作系统必须将内存空间进行合理地划分和有效地动态分配。操作系统对内存的划分和动态分配,就是内存管理的概念。有效的内存管理在多道程序设计中非常重要,不仅方便用户使用存储器、提高内存利用率,还可以通过虚拟技术从逻辑上扩充存储器。内存管理的主要功能内存空间的分配和

2022-08-16 22:10:38 909

原创 Stack以及ArrayDeque、LinkedList的区别练习

ArrayDeque底层通过数组实现,为了满足可以同时在数组两端插入或删除元素的需求,该数组还必须是循环的,即循环数组(circular array),也就是说数组的任何一点都可能被看作起点或者终点。可以看你到stack的源码很少,它是基于Vector集合来实现的,而Vector集合本来就是线程安全的,使用Synchronize的方式实现的,效率比较低,所以不建议使用。同时,LinkedList也是非线程安全的,并发环境下,多个线程同时操作 LinkedList,会引发不可预知的错误。...

2022-08-15 01:18:54 377

原创 关于Semaphore信号量的源码解读

非公平锁,因为在对列中排队的线程,只有头结点的后继节点有资格可以获取锁,而在获取许可证时,有其他的线程(不是同步对列中的线程)进入,尝试去获取许可证,这两个线程都有可能获取到许可证,这就是非公平锁的特点。从上面的分析中可以看到,多态的特性,很多方法在执行的时候并不是我们直接点的进去的,而是根据实际的类型觉得调用哪些方法,所以分析的时候千万不要只是点进去某个方法,不然运行的时候可能不是这个方法。公平锁,就是只有队首的节点线程,可以获取许可证,有其他的线程在获取许可证时,会被加入到队尾,等待获取锁。...

2022-08-15 00:41:07 184

原创 JAVA排查bug的相关命令

jstat(Java Virtual Machine Statistics Monitoring Tool)是JDK提供的一个可以监控Java虚拟机各种运行状态信息的命令行工具。它可以显示Java虚拟机中的类加载、内存、垃圾收集、即时编译等运行状态的信息。主要用于打印指定Java进程(或核心文件、远程调试服务器)的共享对象内存映射或堆内存细节。用来查看所有的java进程的pid号。...

2022-08-10 13:25:36 185

原创 完全背包问题求组合数和排列数

这个是完全背包问题的典型应用,由于只是求个数,不涉及到零钱排列情况不一样算两次的情况,所以两层for循环,这个与上面一题唯一不同的一点就是有序,顺序不同算两次,所以这里两层for循环的遍历顺序是。...

2022-07-30 09:33:17 387

原创 回溯算法-----473. 火柴拼正方形&&698. 划分为k个相等的子集

我觉得这个东西是需要大量的思考练习的,不要觉得花几个小时研究一道题浪费时间,其实你花两个小时,做了十题自己会的题,很爽,但是你的收获真的有比花两个小时做出了、彻底搞懂自己不会的这个题的收获多吗,我觉得不见得。说明一下这个我参考解答里面其实排序的时候并没有是降序排列,反而是升序排列,导致增加了时长,我把排序的代码注释掉之后,时长反而变短了许多。有四个桶,回溯的时候不停地遍历数组,在回溯的方法内部遍历桶,看这个桶能不能放下这个元素,能放下就放进去,这样就解决了。,真的受益良多,推荐给大家,也欢迎大家交流学习。.

2022-07-29 00:36:38 168

Java实现单个文件下载、多文件打包下载

web项目基于Response对象实现。

2022-06-17

空空如也

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

TA关注的人

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