自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(192)
  • 收藏
  • 关注

原创 JVM字节码class文件和类的加载

每一个java类被编译后都会生成一个对应的.class字节码文件,通常以16进制来查看,数据是以二进制流的形式存储的,中间没有分隔符。.class文件是编译的结果,只加载了常量、静态成员变量、静态成员方法、static代码块等。在程序运行时才会加载进JVM内存。.class字节码文件由十个部分组成:MagicNumber(魔数) :位于.class字节码文件最开头的四个字节,是固定值0xCAFEBABE。虚拟机加载.class文件时会先检查魔数是不是0xCAFEBAB...

2022-02-21 11:35:49 1203

原创 JUC包中并发安全集合

1、CopyOnWriteArrayListCopyOnWriteArrayList是并发安全的ArrayList,采用写时复制的策略 Object[]属性用来存放数组的元素 ReentrantLock属性是一个独占锁,为了保证同时只能有一个线程操作数组,实现并发安全1、add(E e)方法2、get(int index)方法先获取数组 通过下标访问数组元素整个过程没有上锁,从而导致的问题?——数据的弱一致问题 假设线程A在获取数组元素的过程中,另外一个线程B删除了这个元

2022-02-12 11:26:21 878

原创 mybatis 中的 DAO 接口和 XML 文件里的 SQL 是如何建立关系的?

DAO接口的全路径名和 XML文件中的 SQL标签的namespace +id是一样的。其实,这也是建立关联的根本原因。一句话讲完就是:MyBatis 会先解析这些 XML 文件,通过 XML 文件里面的命名空间 (namespace)跟 DAO 建立关系;然后 XML 中的每段 SQL 会有一个id 跟 DAO 接口的方法名一样,从而进行关联。Mybatis配置文件:<!-- DAO接口所在包名,Spring会自动查找其下的类 --><bean...

2022-02-12 10:30:31 1879

原创 Java并发编程——锁概述

1、乐观锁和悲观锁悲观锁共享资源认为数据很容易被其他任务修改,因此在操作该共享资源前首先要去获取这个共享资源的监视器锁,才会对资源进行操作。如果获取不到锁就等待。 乐观锁认为共享资源一般不容易被其他任务修改,因此直接访问资源,直到提交修改时再去检测是否有其他任务修改了该资源。2、公平锁和非公平锁公平锁是指各个线程获取锁的顺序是按照申请锁的顺利来的,最早申请锁的线程首先获得锁 非公平锁不一定是按先到先得的顺序ReentrantLock提供了公平锁和非公平锁的实现:默认是非公平锁:Reen

2022-02-11 22:46:53 273

原创 CAS算法以及CAS在JUC包原子类的应用

1、CAS的引入i++不是原子操作 可以在synchronized代码块中使用i++来保证原子性,但是synchronized的获取锁和释放锁带来的上下文切换开销太大 可以通过原子类(AutomicLong)来保证原子性,同时原子类中使用了CAS算法,保证了不阻塞情况下实现原子操作2、CAS介绍CAS,compare and swap,也属于乐观锁的实现机制。 JAVA JDK中的unsafe类提供了一系列CAS操作。3、JDK中的unsafe类unsafe类中的方法都是本地(nati

2022-02-11 22:46:45 528

原创 《图解HTTP》读书笔记

HTTP-TCP-IP通信流URL和URI的区别URL : 统一资源定位符 URI:统一资源标识符 URI是一个概念,只要能标识网络上某一个资源的都叫URI。URL是URI的子集,URL还提供了网络资源具体的访问方式HTTP1.0、1.1、2.0的区别HTTP1.1的变化: 1.1增加了长连接,并且默认就是长连接。HTTP1.0时每次建立TCP连接只能进行一次HTTP通信,在HTTP1.1的长连接中,只要通信双方没有提出断开连接,就一直处于连接状态。 H...

2022-02-09 11:44:14 3889 2

原创 《网络是怎么连接的》读书笔记

纲要 这本书详细介绍了在浏览器输入URL到显示页面的整个过程,分章节地介绍了这个过程中从 浏览器客户端到协议栈、网卡,再到集线器、交换器、路由器,再到防火墙、缓存服务器,再到服务器以及返回的的整个过程。1、解析URLURL通常由协议、域名、端口、文件目录构成——http://www.lab.glasscom.com/dir/ 解析URL,确定web服务器、文件所在的目录、需要对文件进行什么样的操作2、生成HTTP请求解析URL后,生成对应的HTTP请求。web服务器收.....

2022-01-29 16:37:09 2714

原创 Nginx

一、Ngnix的功能Nginx——反向代理服务器二、Nginx请求转发的配置nginx根目录/conf/nginx.conf配置,配置文件配置Nginx请求转发规则——路径匹配 根据前端请求地址中包含的内容将请求转发到不同的服务器上...

2022-01-17 20:10:31 310

原创 项目整体总结

一、项目介绍1、网站介绍我的项目是一个在线教育网站,分为前台用户系统和后台管理系统;前台用户系统面向学员用户,后台管理系统面向网站运营管理员。前台用户系统主要功能包括:1、通过课程列表获取课程的价格、讲师、介绍、章节等详情信息,点击章节可以播放课程视频。 2、通过讲师列表查找讲师的教的课程和本人介绍、评级等信息。后台管理系统主要功能包括:课程管理模块,包括课程的上传和删除、课程的分类 讲师管理模块,包括讲师信息的添加和删除 统计分析模块,统计分析课程播放量、订单量等信息 订

2022-01-15 18:13:15 1833

原创 项目SpringCloud微服务架构总结

项目是基于SpringBoot和SpringCloud的微服务架构一、微服务架构的介绍1、什么是微服务微服务架构风格是一种使用一个个独立部署运行的服务模块共同开发单个应用的方式途径,每个服务运行在自己的进程中,独立部署到不同的服务器上。 各个服务模块使用轻量级机制通信,通常是HTTP API ,这些服务基于业务能力构建,并能够通过自动化部署机制来独立部署,这些服务使用不同的编程语言实现,以及不同数据存储技术,并保持最低限度的集中式管理。2、微服务的优点各个服务独立、分开,代码体量小.

2022-01-15 18:12:40 1232

原创 Mybatis级联

以下内容来自《深入浅出Mybatis》数据库中表的关系包含一对一、一对多、多对多的关系,mybatis级联也包含一对一、一对多、多对多的关系,这里只介绍一对一级联、一对多级联。一、一对一级联 : <association>有两张表,分别是学生证表(t_student_selfcard)和学生表(t_student)构成一对一的级联关系 需求是查询根据t_student的id查询出学生信息,包括学生证的所有信息(在sql中我们可以使用join连接查询)首先创建POJO..

2022-01-13 15:21:24 1283

原创 Mybatis的各个标签

常见的select|insert|updae|delete标签 上动态sql的9个标签 trim | where | set | foreach | if | choose | when | otherwise | bind <resultMap>定义POJO和表中字段的映射关系 <sql>和<include> 通过<sql>标签定义一段sql语句的组成部分,其他语句可以通过引用来使用这段sq...

2022-01-12 19:51:35 331

原创 MyBatis动态SQL详解

Mybatis动态sql可以在Xml映射文件内,以标签的形式编写动态sql执行原理是根据表达式的值 ,完成逻辑判断, 并动态拼接sql的功能。 常见的动态SQL标签: if <select id="selectByStudentSelective" resultMap="BaseResultMap" parameterType="com.homejim.mybatis.entity.Student"> select <include refi.

2022-01-12 17:08:54 208

原创 Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式?

映射方式1、当列名和封装查询结果的类的属性名一一对应时:这时MyBatis 有自动映射功能,将查询的记录封装到resultType 指定的类的对象中去<mapper namespace="com.hanT.dao.UserDao"> <!--id对应接口中的方法名,resultType为返回结果的类型,要用类的全限定名--> <select id="getUserList" resultType="com.hanT.pojo.User">.

2022-01-12 16:51:39 5561

原创 Mybatis工作原理

1、首先通过 SqlSessionFactoryBuilder创建SqlSessionFactory工厂类,再通过SqlSessionFactory工厂类创建SqlSession对象。每个mybatis-config.xml对应一个SqlSessionFactory对象,也就是说如果有多套环境,每个环境创建一个SqlSessionFactory SqlSessionFactory 一旦被创建就应该在应用的运行期间一直存在,建议使用单例模式或者静态单例模式。//sqlSessionFactor..

2022-01-12 15:19:08 508

原创 微信支付模块

阿昌微信支付博客地址一、需求分析一些课程为收费课程,课程详情页面会有立即支付按钮,支付后才能观看。支付后需要弹出微信二维码和一些订单号信息。二、数据库表单设计两张表 订单表(t_order):点击立即支付之后就会生成订单表的一行记录 支付记录表(t_Pay_Log):支付后生成支付记录表的一行记录三、controller层接口按照支付的流程,controller一共五个接口(只介绍重要的接口)接口一:点击立即购买按钮,根据课程id,在订单表中生成...

2022-01-03 22:12:13 1871 1

原创 SpringSecurity底层原理和认证授权流程总结

安全框架(springsecurity、shiro等)主要分为两个部分:认证:系统认为用户是否能登录 授权:系统判断用户是否有权限去做某些事情项目主要使用了:基于token的用户权限认证与授权模块一:登录时springsecurity获取用户的信息,比如用户名、密码、和查数据库得到其权限列表如果系统的模块众多,每个模块都需要进行授权与认证,所以我们选择基于 token 的形式 进行授权与认证,用户根据用户名密码认证成功,然后获取当前用户角色的一系列权限 值,并以用户名为 key.

2022-01-03 13:52:18 2733

原创 Redis笔记

一、数据库发展概述1、单机Mysql时代90年代,一个网站的访问量一般不会太大,单个数据库完全够用。随着用户增多,网站出现以下问题数据量增加到一定程度,单机数据库就放不下了 数据的索引(B+ Tree),一个机器内存也存放不下 访问量变大后(读写混合),一台服务器承受不住。2、Memcached(缓存) + Mysql + 垂直拆分(读写分离)网站80%的情况都是在读,每次都要去查询数据库的话就十分的麻烦!所以说我们希望减轻数据库的压力,我们可以使用缓存来保证效率!...

2021-11-17 14:42:27 1299

原创 mybatis-plus笔记

Mybatis-Plus是Mybatis的增强工具包,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。其简化了CRUD操作,提供了代码生成器,强大的条件构造器,同时内置了多个实用插件:标配的分页插件、性能分析插件、全局拦截插件等。使得开发过程中,基本的范式代码都一句话解决了,省去了很多重复的操作...

2021-11-14 22:22:32 1263

原创 SpringBoot开发一个简单的网站

project:springboot-02!!!一、模拟一个数据库pojo.Department@Data@AllArgsConstructor@NoArgsConstructorpublic class Department { private Integer id; private String departmentName;}pojo.Employee@Data@NoArgsConstructor@AllArgsConstructorpubl

2021-10-14 23:04:34 7862 5

原创 基于MHSS的ARAIM算法的详细分析解释

RAIM和ARAIM的区别完好性支持信息ISM地面监测网通过观测核心星座,生成能反映核心星座固有性能的参数( 完好性支持信息 ( Integrity Support Message,ISM) ) ,并发送给载 接收机。ISM主要给出的是卫星导航系统的具有极高可靠 性的安全判定信息。ISM主要包括:用户测距误差(User Range Error, URE):用来计算精度和连续性的标称误差高斯分布的标准差; 用户测距精度(User Range Accuracy, URA)...

2021-10-13 22:27:08 2988 5

原创 @Controller和@RestController的区别:

Controller, RestController都是用来表示Spring某个类的是否可以接收HTTP请求@Controller标识一个Spring类是Spring MVC controller处理器 @RestController: a convenience annotation that does nothing more than adding the@Controller and @ResponseBody annotations。 @RestController是@Controll...

2021-10-09 16:35:59 108

原创 狂神SpringBoot笔记03—静态资源配置和thymeleaf

1、springboot获取静态资源的方式http://localhost:8080/路径后面的访问所有静态资源文件都会从resources文件下去找举例:在static下创建一个1.js文件:访问1.js————也可以在resources下创建名为public或者resources的目录,这样,public、resources、static都是静态资源目录,可以存放不同的静态资源。而且都可以通过上面的方式去访问这些静态资源。 但是如...

2021-10-09 16:32:22 1206 1

原创 卡尔曼滤波通俗易懂原理及其python实现

kalman滤波的核心思想根据k-1时刻的最优估计值来预测k时刻的预测值 再根据k时刻的测量值和k时刻的预测值,得到此时刻的最佳估计值 循环迭代 需要说明的是,不管是根据上一时刻的预测值还是本时刻的测量值,都是有误差存在的举例假设我们要研究房间里的温度,以分钟为单位。因为房间里的温度变化不大,因此根据k-1时刻的最优估计值来预测k时刻的预测值时,我们由经验认为:= 但是这个预测是有误差的,我们把误差定义为高斯白噪声。另外,房间里放置...

2021-10-07 16:40:02 6057 1

原创 springboot-@Value属性注入properties或yml文件

(具体程序在myfirst工程中)1、@Value注入properties需要现在SpringBoot的pom.xml导入此依赖,可以在相应的配置文件值被绑定后高亮提示。<!-- 导入配置文件处理器,配置文件进行绑定就会有提示,需要重启 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configurat

2021-10-04 20:25:18 4128

原创 狂神springboot学习笔记02—yaml语法

1、SpringBoot核心配置文件SpringBoot使用的是全局配置文件,配置文件的名称是固定的,但是有两种文件格式:application.properties(默认) application.yml (推荐)也就是说,如果你在resources目录下创建这两个名字的文件,SpringBoot会默认指定其为配置文件。application配置文件的作用:因为SpringBoot在底层给我们自动装配好了,配置文件可以修改这些默认值2、YAMLYAML和XML...

2021-10-04 16:32:04 103

原创 狂神springboot学习笔记01—第一个springboot程序

1、SpringBoot的优点以Java web项目为例,比较传统开发模式与微服务开发模式的区别:在传统开发模式里,所有的功能打包在一个 WAR包里,基本没有外部依赖(除了容器),部署在一个JEE容器(Tomcat,JBoss,WebLogic)里,包含了 DO/DAO,Service,UI等所有逻辑。微服务的具体特征有:①由一些独立的服务共同组成系统;②单独部署,跑在自己的进程中;③每个服务为独立的业务开发;④分布式管理;⑤非常强调隔离性。我们平时搭建...

2021-10-02 21:19:09 219

原创 什么是微服务?

参考文章:java|什么是微服务1.单体应用:传统的单体应用都是MVC架构的javaweb项目,所有的模块都是集成在一个JVM进程中优点: 所有代码都在一个项目中,方便管理。缺点:这个项目包含的四个模块都是相互依赖的,当这些模块的代码耦合到一起时,需要去加载每个模块的代码以及连接资源,任何一个出了问题,整个应用都会受到影响。1、项目过于臃肿,部署效率低下当大大小小的功能模块都集中在同一项目的时候,整个项目...

2021-10-02 16:23:19 76

原创 SSM框架整合及详解

后台架构上分为4层:DAO、POJO、controller、service(配合ssmbuild工程一起看)1、POJO层2、持久层:DAO层(mapper)DAO层:DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此 DAO层的首先任务是设计接口(BookMapper.interface) 第二步来写接口的实现类,这里用XML配置文件来实现BookMapper.interface3、Controller层Controller层负...

2021-09-28 14:41:19 616 1

原创 卫星导航基本知识

1、 需要四颗卫星才能确定接收机位置,因为一共有(x,y,z,)四个参数确定,为接收机和卫星时钟的钟差,有钟差才能更精确计算伪距。(接收机时钟精度远比卫星的精度小)2、卫星轨道 卫星轨道6要素:共同表征卫星在惯性空间下的位置 a、卫星轨道倾角:卫星轨道面和赤道面的夹角( i 来表示) b、开交点赤经 C、近地点张角 d、轨道长半轴 e、轨道偏心率 f、真近点角 卫星轨道并不是一个圆形,而是椭圆形,椭圆的一...

2021-09-15 14:49:06 2843 3

原创 3种工厂模式的介绍和对比!

1、作用:实现创建和调用分离2、分类:1、简单工厂模式2、工厂方法模式3、抽象工厂模式3、本质实例化对象时不用new的方式,用工厂方法代替。一、简单工厂模式其中,Car为接口,Audi_S8和BMW是Car的具体实现类,CarFactory为工厂类,在Consumer中调用对象。public interface Car { public void name();}这个Car接口必须要有,自己体会一下如果没有这个接口的话会是什么样。p..

2021-07-15 21:22:59 324

原创 超详细—狂神Mybatis笔记

思路:搭建环境—>导入Mybatis—>编写代码—>测试1、搭建环境1.1 创建数据库mybatis和user表CREATE DATABASE `mybatis`;USE `mybatis`;CREATE TABLE `user`( `id` INT(20) NOT NULL, `name` VARCHAR(30) DEFAULT NULL, `pwd` VARCHAR(30) DEFAULT NULL, PRIMARY KEY(`id`))ENGINE

2021-07-12 20:51:45 3458 2

原创 超全狂神Mybatis笔记1——初识Mybatis

1.简介1.1 什么是MybatisMybatis是一款基于java的持久层框架。持久层任务就是将数据保存到数据库或硬盘中以防数据丢失的操作。Mybatis支持定制化 SQL、存储过程以及高级映射。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。jdbc编程---当我们使用

2021-07-12 16:45:31 75

原创 载波相位平滑伪距算法一

建立伪距观测方程和载波相位观测方程,分别表示为:公式1其中,表示经差分校正后的用户接收机到卫星的伪距;为卫星钟差;为观测的相位差小数部分;为整周相位模糊度;为波长;为用户接收机到卫星的真实距离;为接收机的测量噪声。取时刻的相位观测量之差,以消除整周相位模糊度:公式2在时刻的伪距观测量为:公式3将公式2带入公式3中得:公式4将公式4带入公式1中得:公式5综合来看,这种方法只适合事后处理,无法得到实时载波相位平滑的伪距,比较...

2021-07-08 17:19:25 5018 1

原创 SBAS星基增强系统 及 广域增强系统WAAS

1、为什么需要增强系统?GPS自建成以来到现在,其SPS可以向民用用户提供水平方向100米左右,垂直方向150米左右的定位精度,但随着应用领域的不断拓展,民用航空对于GPS的应用提出了更加苛刻的要求,即GPS必须满足包括精度、完好性、连续性和可用性在内的全方位性能要求。为此,必须对GPS性能进行增强满足航空终端区导航甚至精密进近需求,因此星基增强系统应运而生,而美国研发的广域增强系统WAAS就是星基增强系统ABAS的重要成员,而WAAS主要通过差分技术来实现的。2...

2021-07-06 16:56:35 7037 2

原创 狂神——mybatis笔记

MyBatis1、简介1.1 什么是MybatisMyBatis 是一款优秀的持久层框架; 它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。 1.2 持久化—数据持久化持久化就是将程序的数据在持久状态和瞬时状态转化的过程 内.

2021-04-18 14:09:44 135 1

原创

大小顶堆都是用数组的形式存储的,但结构上是利用完全二叉树来实现数组的排序的 类:(优先队列)PriorityQueue<E> implements Queue 增:向队尾添加元素删:删除队首元素 这两个方法一个含参数一个不含参数、一个返回boolean一个返回元素 对于大顶堆,队首一定是最大的元素。小顶堆队首则是最小元素 PriorityQueue天生是小顶堆,即无参构造器构造的是小顶堆。那么如果我要大顶堆怎么办?(自定义构造器参...

2021-04-13 13:12:26 78

原创 Spring——事务

一、什么是事务事务是将一系列的sql操作封装在一个单元中,这个单元叫做事务,事务要嘛都做,要嘛不做,事务可以撤销。 我们在实际业务场景中,经常会遇到数据频繁修改读取的问题。在同一时刻,不同的业务逻辑对同一个表数据进行修改,这种冲突很可能造成数据不可挽回的错乱,所以我们需要用事务来对数据进行管理。 事务(Transaction)是并发控制单位,是用户定义的一个操作序列,这些操作要么都做,要么都不做,是一个不可分割的工作单位。 )典型场景:银行转账有以下两个操作 * lucy 转账 100 元

2021-04-11 22:22:20 1499

原创 JdbcTemplate详解

一、JdbcTemplate(概念和准备) 1、什么是 JdbcTemplate(Template译为模板)(1)Spring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作2、准备工作 (1)引入相关 jar 包 (2)在 spring 配置文件配置数据库连接池com.alibaba.druid.pool.DruidDataSource和com.mysql.jdbc.Driver 都是引入的jar包内的类,不需要自己创建.

2021-04-10 21:49:19 61280 6

原创 AOP操作

一、AOP术语二、AOP准备操作1、Spring 框架一般都是基于 AspectJ 实现 AOP 操作 (1)AspectJ 不是 Spring 组成部分,独立 AOP 框架,一般把 AspectJ 和 Spring 框架一起使 用,进行 AOP 操作 导入AspectJ的jar包即可使用2、基于 AspectJ 实现 AOP 操作 (1)基于 xml 配置文件实现 (2)基于注解方式实现(开发最常使用) 3、在项目工程里面引入 AOP 相关依赖...

2021-04-10 19:15:34 112

空空如也

空空如也

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

TA关注的人

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