- 博客(40)
- 收藏
- 关注
原创 Java接入微信小程序支付、退款、发货通知
*** 小程序 下单API*//*** 查询支付订单API ONE{}=>outTradeNo – 商户订单号 系统生 TOW{}=>mchId商户的商户号,由微信支付生成并下发。// 请求头配置/*** 微信回调参数==>微信序列号*//*** 微信回调参数==>应答随机串*//*** 微信回调参数==>应答时间戳*//*** 微信回调参数==>应答签名*/
2024-03-20 16:27:19 1474 1
原创 获取日期(天,周,月,年)
*** 获取当前周最后一天 23:59:59*/// 获得当前日期是一个星期的第几天// 如果等于1,说明是周日,时间提前一周// 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一// 获得当前日期是一个星期的第几天// 根据日历的规则,给当前日期减去星期几与一个星期第一天的差值// 开始+6,获取周结束日期/*** 获取当月最后一天 23:59:59*/// 当天结束时间/*** 获取上月最后一天 23:59:59*/
2024-02-20 10:54:18 390
原创 Windows系统上如何搭建Linux操作系统
VMware 等文件 https://www.alipan.com/s/VoAimdcKnio 点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。13,输入 ip addr 查看虚拟机ip地址。2,选择VMent8,然后选择“更改设置”1,点击编辑,选择“虚拟网络编辑器”2,输入ip地址和root账户密码。1,选择安装地址,其他直接下一步。5,自定义文件位置,然后下一步。4,选择Linux,下一步。10,关闭窗口,选择完成。4,开启虚拟机,然后回车。
2023-12-07 14:00:48 889 1
原创 Shiro和Spring Security的特点
Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码学和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。三个核心组件:Subject, SecurityManager 和 Realms。Subject:主体,即访问应用的用户,在Shiro中使用Subject代表该用户。用户只有授权后才允许访问相应的资源。
2022-09-05 00:29:04 261
原创 Redis单线程设计为什么速度快
Redis主要的5种数据类型(string、list、hash、set、zset),数据结构相对简单,操作起来也相对快速。多路 I/O 复用技术可以让单个线程高效的处理多个连接请求,在内存中Redis的操作非常快。纯内存数据库,Redis完全是基于内存的,绝大部分请求是纯粹的内存操作,所以非常快速。Redis采用单线程,避免了线程切换和资源竞争带来的开销。
2022-08-24 19:57:35 340
原创 Redis的数据删除策略
如果执行的太少,那又和惰性删除一样了,过期键占用的内存不会及时得到释放。另外最重要的是,在获取某个键时,如果某个键的过期时间已经到了,但是还没执行定期删除,那么就会返回这个键的值,这是业务不能忍受的错误。缺点:对内存不友好,如果一个键已经过期,但是一直没有使用,那么该键就会一直存在内存中,如果数据库中有很多这种使用不到的过期键,这些键便永远不会被删除,内存永远不会释放。每隔一段时间,我们就对一些key进行检查,删除里面过期的key(从一定数量的数据库中取出一定数量的随机键进行检查,并删除其中的过期键)。
2022-08-21 21:53:33 2604
原创 springboot自动装配原理
AutoConfigurationImportSelector实现DeferredImportSelector接口,说明是DeferredImportSelector接口的一个实现类。5,其中使用getCandidateConfigurations()方法获取META-INF/spring.factories文件中的需要自动装配的类名。(3)@ComponentScan 扫描启动类所在的包以及子包下所有标记为Bean的组件并注册到IOC容器中。2,其中包括三个核心注解。...
2022-08-14 23:31:34 142 1
原创 Spring如何解决循环依赖问题
3)B顺利初始化完毕,将自己放到一级缓存里面(此时B里面的A依然是创建中状态)然后回来接着创建A,此时B已经创建结束,直接从一级缓存里面拿到B,然后A初始化完成,并将A放到一级缓存中。(2)B实例化的时候发现需要A,于是B先查一级缓存,没有,再查二级缓存,还是没有,再查三级缓存,找到了A然后把三级缓存里面的这个A放到二级缓存里面,并删除三级缓存里面的A。多个bean之间相互依赖,形成了一个闭环。比如:A依赖于B、B依赖于C、C依赖于A。(1)A创建过程中需要B,于是A将自己放到三级缓存里面,去实例化B。..
2022-08-07 22:38:21 164
原创 SpringBoot的生命周期
如果Bean类实现BeanClassLoaderAware接口,则将通过传递加载此Bean的ClassLoader对象的实例来调用setBeanClassLoader()方法。如果配置文件中的Bean定义包含init-method属性,则该属性的值将解析为Bean类中的方法名称,并将调用该方法。如果Bean类实现BeanNameAware接口,则将通过传递Bean的名称来调用setBeanName()方法。5,是否实现InitializingBean接口。3,检查Aware的相关接口。...
2022-08-01 01:39:24 432
原创 Spring框架自动装配的原理
1,@Autowired是通过bean的后置处理器进行解析的,创建newAnnotationConfigApplicationContext()时,系统会自动生成IOC加载的组件,进行注册AutowiredAnnotationBeanPostProcessor。(1)在实例化之后预解析(解析@Autowired标注的属性,方法。(2)在属性注入时进行真正解析(拿到上一步缓存的属性,在IOC容器中进行查找,并且返回注入)3,按照@Qualifier的值查找,寻找是否有相同的值。2,按照对象类型查找。...
2022-07-24 23:06:36 190
原创 Thymeleaf
1,什么是模板引擎 是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档。模板文件+数据+模板引擎结合——>HTML文件2,常见的模板引擎(1)Thymeleaf 1.Thymeleaf在有网络和无网络的环境下皆可运行,即它可以让美工在浏览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果。这是由于它支持 html 原型,然后在 html 标签里增加额外的属性来达到模板+数据的展示方式。浏览器
2022-07-11 00:42:22 199
原创 Servlet
1,C/S 架构4,C/S B/S 的区别5,url 元素 6,Tomcat目录结构7,Web的目录结构8,Servlet10,GenericServlet抽象类:提供了Servlet与ServletConfig接口方法的默认实现(service( )方法除外)11,HttpServlet抽象类:继承自GenericServlet 处理HTTP协议的请求和响应。12,ServletConfig接口:在Servlet初始化过程中获取配置信息,一个Servlet只有一个ServletConfig对象。13,Se
2022-07-03 23:53:41 276
原创 MyBatis(五)映射器注解
1,常见的注解(1)基本注释:实现简单的增删改查操作。 (2)结果映射注解:实现结果的映射关系,也可以完成级联映射。(3)动态SQL注解:实现动态 SQL 的内容。2,Insert 新增3,Delete 删除4,Update 修改5,Select 查询6,@Results 结果映射语法:@Results({ @Result(id = 是否为主键, column = "字段", property = "属性" ) }) 7,一对一映射8,多表映射9,动态SQL注解(1
2022-06-23 04:56:40 1046
原创 MyBatis(四)动态SQL
1,动态SQL定义:根据不同条件来拼接SQL语句,实现数据库更准确的操作。实现:映射器配置文件或者注解2,常用的SQL元素3,if 元素语法:< if test = "条件" > 满足条件的语句 注意:拼接SQL语句的时候注意AND和逗号。4,choose、when、otherwise元素语法:5,trim、where、set元素语法:< trim prefix = " " suffixOverrides = " " prefixOverrides = " " suffix = " "...
2022-06-23 00:43:57 111
原创 MyBatis(三)动态代理和映射器
1,动态代理的规范(1)Mapper.xml文件中的namespace与mapper接口的类路径相同。(2)Mapper接口方法名和Mapper.xml中定义的每个statement的id相同。(3)Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相同。(4)Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同。(5)sqlmpper 和 接口要在同一个包下。(6)sqlmapper文件名和接
2022-06-22 04:38:41 342
原创 MyBatis(二)基础配置
1,元素的结构:默认使用数据库环境 2,配置数据库事务3,数据源:配置环境信息中数据源连接的信息。4, 标签 5,< typeAliases > 元素的功能
2022-06-21 20:56:49 122
原创 MyBatis(一)简介
1,JDBC编程和ORM模型JDBC的弊端:(1)硬编码:SQL语句存在Java代码中,不能很好的分离数据库语句和Java语句,造成代码不易维护。(2)SQL参数固定:SQL语句的参数固定,使得SQL语句不灵活,无法满足多组的场景。(3)代码重复度高:大量的重复代码,以ResultSet为例,每次都需要重复解析。(4)底层技术:JDBC属于底层的技术,不支持分布式,缓存等技术,对于复杂的场景应对不好。ORM模型:概念:ORM模型是数据库的表和简单Java对象(Plain Ordinary Java Obje
2022-06-21 20:04:30 304
原创 Mysql的事务
1,概念(3)隔离性:⼀个事务的执⾏不能其它事务⼲扰。⼀个事务内部的操作及使⽤的数据对其它并发事务是隔离的,并发执⾏的各个事务之间不能互相⼲扰。(4)持久性:也称永久性,指⼀个事务⼀旦提交,它对数据库中的数据的改变就应该是永久性的。接下来的其它操作或故障不应该对其执⾏结果有任何影响。3,隔离级别(1)读取未提交内容(Read Uncommitted)所有事务都可以看到其他未提交事务的执行结果。可以读取未提交数据。(脏读)(2)读取提交内容(Read Committed)在事务提交或者回滚之后,才可以被读取到
2022-06-20 07:28:19 142
原创 JDBC介绍
1,JDBC概念Java Database Connectivity(JDBC):Java访问数据库的解决方案。JDBC定义了一套接口,即访问数据库的通用API,不同数据库厂商根据各自数据库的特点去实现这些接口。JDBC希望用相同的方式访问不同的数据库,让具体的数据库操作与数据库厂商实现无关,从而在不同数据库之间轻易的进行切换。2,JDBC相关类接口 (2)DriverManager() 获取Connection连接 (3)创建St
2022-06-18 05:21:39 65
原创 MySQL数据库(五)视 图 、 存 储 过 程 和 触 发 器
1,视图概念:视图是从一个或几个表中所导出的虚表语法:create view view_name as select...说明: view_name:自己定义的视图名 as:后面是这个视图说用到的查询结果2,视图的操作(1)视图的查询查询所有的视图:select * from 视图名 where 数据库名;查看刚刚建立的视图:show create view 视图名(2)删除储存过程:drop view 视图名3,视图的作用(1)简化查询(2)重写格式化数据(3)频繁
2022-06-13 00:00:27 230
原创 MySQL数据库(四)事务和函数
概念:就是将一组SQL语句放在同一批次内去执行,如果一个SQL语句出错,则该批次内的所有SQL都将被取消执行。5,MySQL的四种隔离级别(1)Read Uncommitted(读取未提交内容)也称“脏读”(2)Read Committed(读取提交内容 也叫做不可重复读)(3)Repeatable Read(可重读)新增对应“幻读”(4)Serializable(可串行化) 6,MySQL函数 函数名 返回值 curdate()
2022-06-10 06:25:07 410
原创 MySQL数据库(三)高级数据查询语句
非等值查询语法:select * from 表1,表2等值查询(1)内联查询语法:select * from 表1,表2 where 表1.字段1 = 表2.字段2...(3)内联查询的第二种写法 inner join on 语法:select * from 表1 inner join 表2 on 条件(4)外联查询 left join in 或 right join on语法:select * from 表1 left 或 right join 表2 on 条件;(5)union
2022-06-10 05:04:37 4427
原创 MySQL数据库(二)DML数据操作语句和基本的DQL语句
(1)数据增加:INSERT,主要功能是给数据库表增加记录。(2)数据删除:DELETE,主要功能是删除数据库表中已有的记录。可以依照条件去做修改。(3)数据修改:UPDATE,主要功能是修改数据库表中已有的记录。可以根据条件去做修改。 语法:INSERT INTO 表名 [(字段1,字段2,字段3...字段n)] VALUE/VALUES (值1,值2,值3...值n)[(值1,值2,值3...值n)];3,数据添加:INSERT INTO SELECT 语法:INS
2022-06-10 00:46:29 603
原创 MySQL数据库(一)
1,数据库的作用(1)数据的保存:大量程序产生的数据在程序运行时和程序结束后对数据进行保存。(2)数据的完整性:连接数据和数据之间的结构,连接数据和程序之间的依赖关系。(3)数据的读取:为了使写入的数据更方便的进行读取。(4)数据的安全性:防止因为外界因素所造成的数据丢失。(5)结构化:数据在数据库中的储存可以依靠二维表结构的逻辑来储存数据,可以参考数据原有的依赖关系和机构关系去储存数据。(6)独立性:储存在数据库的数据和应用程序之间相互独立,互不影响。(7)共享性:多个用户可以共同分析计算机数据库中的数据
2022-06-07 01:14:33 1221
原创 Collection集合与Map集合
Collection:单列集合(接口) List(接口): 特点: 1,有索引值 2,可以重复 3,有序排列 4,查询快,增删慢 List接口中的成员方法: void add(int index,E e); E remove(int index); .........
2022-06-06 09:08:03 161
原创 线程及线程池
一个程序运行后至少有一个进程,一个进程中可以包含多个线程。线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。分时调度:所有线程轮流获取CPU的使用权,平均分配每个线程占用的CPU的时间。抢占式调度:优先级高的线程先使用CPU,如果线程优先级相同,java使用java.lang.Thread类代表线程,所有线程对象都必须是Thread类或其他子类的实例。每个线程的作用是完成一定的任务,实际上就是执行一段程序流即一段
2022-06-05 22:29:27 919
原创 Linux(三)进程,vim权限,网络
定义:进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行 资源分配和调度的一个独立单位,是应用程序运行的载体。含义:用于报告当前系统的进程状态格式:ps [选项] [参数]选项: -a:显示所有用户的进程 -u:显示用户名和启动时间 -l :长格式显示案例1:显示家目录当前进程PID:地址编号TTY:终端名称TIME:运行时间CMD:命令名称 ps:操作命令 bash:将命令解析显示出来案例2:显示所有
2022-06-04 17:07:21 796
原创 Linux(一)介绍
1,Linux定义Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、 支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和 64位硬件。2,Linux内核版本 可以得到Linux的内核版本,在Linux下通过终端 输入 uname -r。Linux的内核版本 3.10.0-1127.19.1.el7.x86_64 由4部...
2022-06-01 08:41:41 593
原创 ArrayList集合
1.ArrayList集合的使用方法ArrayList<数据类型> 变量名 = new ArrayList<数据类型>();注意:数据类型必须是引用数据类型
2022-05-26 11:36:58 262 1
原创 java中多态运用
1.多态的概念同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性,比如钢笔是笔,笔是书写工具,则工具和笔是钢笔的两种形态。2.多态的使用(1)要有继承关系的存在(2)要有方法的重写(3)要有父类引用指向子类对象3.多态成员变量的特点编译看左边,运行看左边。Fu f=new Zi();System.out.println(f.num);//f是Fu中的值,只能取到父中的值4.多态成员方法的特点编译看左边,运行看右边。Fu f1=new
2022-05-20 14:46:53 1272 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人