自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 shiro框架基础--shiro框架概念及原理

authenticator:认证器,主体进行认证最终通过authenticator进行authorizer:授权器,主体进行授权最终通过authorizer进行sessionManager:web应用中一般是用web容器对session进行管理,shiro也提供了一套session管理方式SessionDao:通过SessionDao管理session数据,以下是SessionDao的方法public interface SessionDAO {/* 《一线大厂Java面试题解析+后端开发学习笔记

2022-05-10 13:17:13 320

原创 ScheduledThreadPoolExecutor源码解读(二)

null,triggerTime(initialDelay, unit),//重点! 传入的delay取反了,用delay正负来区分执行间隔是否固定unit.toNanos(-delay));//将任务包装成RunnableScheduledFuture对象//decorateTask直接返回sft,这个函数的意图是让开发者DIY继承实现的RunnableScheduledFuture t = decorateTask(command, sft);sft.outerTask = t;//延迟

2022-05-10 13:15:32 398

原创 Redis~Geospatial(地理空间)、Hyperloglog(基数统计)

获取西安的坐标——GEOPOS127.0.0.1:6379> GEOPOS CHINA xian“108.94683212041854858”“34.29296115814533863”以经度120 纬度35位置为中心,获取半径1000千米内的城市——GEORADIUS127.0.0.1:6379> GEORADIUS CHINA 120 35 1000 km“beijing”“shanghai”获取在广州半径500千米内的城市——GEORADIUSB

2022-05-10 13:13:35 339

原创 Qt知识点梳理 —— 自定义数据结构序列化与反序列化

本文展示通过序列化将自定义数据结构序列化到硬盘文件中,再从文件反序列出来还原数据信息。Qt中序列化与反序列化Qt中使用QDataStream类实现对象序列化;序列化:QFile file(“file.rx”); //定义文件路径file.open(QIODevice::WriteOnly); //以只写模式打开QDataStream out(&file); //定义数据流out << QString(“hello world!”);

2022-05-10 13:11:50 703

原创 OSI 7层模型讲解(大白话 通俗易懂)

这些应用不驻留于应用层,但是它们使用应用层的各种网络协议,例如:HTTP协议,HTTPS协议。有几十个应用层协议,于各种功能在这一层,这些协议组成了各种网络服务的基础,例如域名解析协议DNS协议,文件传输是借助FTP协议完成的,对于电子邮件,则使用SMTP协议。其次,应用层通过协议为网络提供服务,执行用户的活动。[](()表示层======================================================================表示层从应用层接收数据。这些数据是以

2022-05-10 13:09:50 789

原创 Mysql查询相关知识(进阶七:子查询

分类:按子查询出现的位置:select后面:仅仅支持标量子查询from后面:支持表子查询where或having后面*标量子查询(单行)√列子查询(多行)√行子查询exists后面(相关子查询)表子查询按结果集的行列数不同:标量子查询(结果集只有一行一列)列子查询(结果集只有一行多列)行子查询(结果集有一行多列)表子查询(结果集一般为多行多列)[](()一、where或having后面1.标量子查询(单行子查询)2.列子查询(多行子查询)3.行子查询(多行多列)特

2022-05-10 13:07:35 308

原创 Mysql大合集,你要内容的这里全都有

2、Mysql 的技术特点是什么?Mysql数据库软件是一个客户端或服务器系统,其中包括:支持各种客户端程序和库的多线程SQL服务器、不同的后端、厂泛的应用程序编程接口和管理工具。3、Heap表是什么?HEAP表存在于内存中,用于临时高速存储。BLOB或TEXT字段是不允许的只能使用比较运算符=,<, >,=>,=<HEAP表不支持AUTO_ INCREMENT索引不可为NULL4、Mysql 服务器默认端口是什么?Mysql服务器的默认端口是3306.5、与Ora

2022-05-10 13:05:47 186

原创 MySQL优化小技巧

max()比如一个sql select max(money) from pay,当进行查询时会进行全表扫描查出最大值,但如果我们给 money加一个索引,执行效率就会很快,因为这相当于一个覆盖索引,索引是顺序的,不需要进行扫描查找count()count(*) 会将列为空的也计算进去,count(release_year),直接指定哪个字段则不会将为空的列计算进去子查询优化通常是将子查询转化为 join 来查询,但要注意数据重复的情况limit 查询优化limit通常还会伴随orde

2022-05-10 13:03:46 85

原创 MyBatis练习——使用MyBatis查询所有职员信息

<con 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 figuration>在src/main/java下创建一个基础的包jack.mybatis.simple,在这个包下面再创建model包。根据数据库表employee,在model包下创建实体类Employee。Employee.javapackage jack.mybatis.simple.model

2022-05-10 13:01:53 204

原创 LeetCode - Easy - 197

| recordDate | date || temperature | int |±--------------±--------+id is the primary key for this table.This table contains information about the temperature in a certain day.Write an SQL query to find all dates’ id with higher temperature

2022-05-09 14:03:35 274

原创 Kafka是如何实现高性能的

将写磁盘的过程变为顺序写Kafka的整个设计中,Partition相当于一个非常长的数组,而Broker接收到的所有消息顺序写入这个大数组中。同时Consumer通过Offset顺序消费这些数据,并且不删除已经消费的数据,从而避免了随机写磁盘的过程。由于磁盘有限,不可能保存所有数据,实际上作为消息系统Kafka也没必要保存所有数据,需要删除旧的数据。而这个删除过程,并非通过使用“读-写”模式去修改文件,而是将Partition分为多个Segment,每个Segment对应一个物理文件,通过删除整个文件的

2022-05-09 14:01:34 201

原创 Kafka、RabbitMQ、RocketMQ消息中间件的对比

–分布式系统中,我们广泛运用消息中间件进行系统间的数据交换,便于异步解耦。现在开源的消息中间件有很多,前段时间我们自家的产品 RocketMQ (MetaQ的内核) 也顺利开源,得到大家的关注。那么,消息中间件性能究竟哪家强?带着这个疑问,我们中间件测试组对常见的三类消息产品(Kafka、RabbitMQ、RocketMQ)做了性能比较。Kafka是LinkedIn开源的分布式发布-订阅消息系统,目前归属于Apache定级项目。Kafka主要特点是基于Pull的模式来处理消息消费,追求高吞吐量,一开

2022-05-09 13:59:49 258 1

原创 JS实现滑动拼图验证

.container {width: 310px;margin: 100px auto;}#msg {width: 100%;line-height: 40px;font-size: 14px;text-align: center;}a:link,a:visited,a:hover,a:active {margin-left: 100px;color: #0366D6;}.block {position: absolute;left: 0;top: 0;}.sli

2022-05-09 13:57:21 680

原创 js实现时钟

// console.log(“number=” + number, “index=” + index);var rad = 2 * pi / 12 * index;var x = Math.cos(rad) * (r - 30);var y = Math.sin(rad) * (r - 30);ctx.textAlign = ‘center’;// 让数字落在坐标的中心ctx.textBaseline = ‘middle’;ctx.fillStyle = “black”;// 在坐标为(x

2022-05-09 13:55:34 405

原创 java高并发系列 - 第11天:线程中断的几种方式

//循环处理业务if (exit) {break;}}}}public static void setExit() {exit = true;}public static void main(String[] args) throws InterruptedException {T t = new T();t.start();TimeUnit.SECONDS.sleep(3);setExit();}}代码中启动了一个线程,线程的run方法中有个死循环,内部通过exit变量的

2022-05-09 13:53:14 126

原创 Java面试题整理《基础篇》

可变性:String 类中使⽤ final 关键字修饰字符数组来保存字符串,所以 String 对象是不可变的,每次操作都会产生新对象。⽽ StringBuilder 与 StringBuffer 都继承⾃ AbstractStringBuilder 类,在 AbstractStringBuilder 中也是使⽤字符数组保存字符串 char[]value 但是没有⽤ final 关键字修饰,所以这两种对象都是可变的。线程安全:String 中的对象是不可变的,也就可以理解为常量,线程安全。St.

2022-05-09 13:51:07 186

原创 Java集合基础知识总结(绝对经典)

六、list和set对比《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】Set子接口:无序,不允许重复,检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。List子接口:有序,可以有重复元素,和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。Set和List具体子类:Set|————HashSet:以哈希表的形式存放元素,插入删除速度很快。List|—

2022-05-09 13:47:12 457

原创 java语言入门总结

人类对机器的一些指令的集合2.程序是由_字符__构成,编写程序所用的文件叫做_源文件__,当程序运行时必须将该文件转换为_机器码文件__文件。3.Java是在___1995__年问世,由___Sun___公司__Green__项目组负责研发,组长叫___詹姆斯·高斯林___,被后人称为Java 之父。4.Java语言的特点是___跨平台性_____,简单性__,面向对象_____。5.请简述Java语言的运行机制。编译 编译器: 源文件—》机器码文件(C 、);运行效率高,源代码-----翻译器

2022-05-09 13:44:58 273

原创 Java设计模式:透明式合成模式

}}文件夹:import java.util.LinkedList;import java.util.List;/**文件夹。*/public class Dir extends Component {private List components = new LinkedList<>();private String name;public Dir(String name) {this.name = name;}@Overridepublic void add

2022-05-09 13:43:15 74

原创 nginx日志切割

LOGS_PATH=/usr/local/nginx/logs/history#获取时间《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 YESTERDAY=$(date -d “yesterday” %Y-%m-%d)mv ${CUR_LOGS_PATH}/access.log KaTeX parse error: Expected group after '_' at position 19: …GS_PATH}/acc

2022-05-08 10:55:31 118

原创 MySQL:SELECT COUNT 小结

先看看COUNT(*),MyISAM 引擎会把一个表的总行数记录了下来,所以在执行 COUNT(*)的时候会直接返回数量,执行效率很高。对于InnoDB这样的事务性存储引擎, 因为增加了版本控制(MVCC)的原因,同时有多个事务访问数据并且有更新操作的时候,每个事务需要维护自己的可见性,那么每个事务查询到的行数也是不同的,所以不能缓存具体的行数,他每次都需要count计算一下所有的行数。如果您正在学习Spring Boot,推荐一个连载多年还在继续更新的免费教程:http://blog.didi

2022-05-08 10:53:30 667

原创 MYSQL查询近一年 近一月 近一周 今天数据 没有数据返回0 按时间有序返回数据

“time”:“202101”},{“total”:0.0,“count”:0.0,“time”:“202012”},{“total”:0.0,“count”:0.0,“time”:“202011”},{“total”:0.0,“count”:0.0,“time”:“202010”},{“total”:0.0,“count”:0.0,“time”:“202009”},{“total”:0.0,“count”:0.0,“time”:“202008”},{

2022-05-08 10:51:52 540

原创 MySQL如何实现万亿级数据存储?

可以看到,我们在Mycat的schema.xml文件中配置的dataHost节点的信息,成功写入到Zookeeper中了。为了验证Mycat的配置信息,是否已经同步到Zookeeper的其他节点上,我们也可以在binghe152和binghe153服务器上登录Zookeeper,查看Mycat配置信息是否写入成功。binghe152服务器[root@binghe152 ~]# zkCli.shConnecting to localhost:2181#################省略N行输出

2022-05-08 10:46:56 1730

原创 MySQL 数据库 day-04

表子查询(结果集一般为多行多列)**[](()(一)、where或having后面 ☆**1、标量子查询(单行子查询)√2、列子查询(多行子查询)√3、行子查询(多行多列)**_**特点:①子查询放在小括号内②子查询一般放在条件的右侧③标量子查询,一般搭配着单行操作符使用< >= <= = <>列子查询,一般搭配着多行操作符使用in any/some all④子查询的执行优先于主查询执行,主查询的条件用到了子查询的结果**_[](()1、行子查询

2022-05-08 10:42:48 149

原创 mykit-cache之——分布式缓存插件正式开源

测试的入口为io.mykit.cache.test.redis.spring.test.xml.RedisTest,执行测试方法前需要先根据自身的Redis集群情况配置classpath:properties/redis.properties文件,将redis.properties中的Redis集群的节点IP和端口修改为自身的Redis集群节点的IP和端口mykit-cache-ehcachemykit-cache架构下与ehcache缓存相关的组件mykit-cache-ehcache-spr

2022-05-08 10:40:19 258

原创 mybatis与spring集成

testjavax.servlet<art 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 ifactId>javax.servlet-api${servlet.version}providedorg.projectlomboklombok${lombok.version}providedssmsrc/main/java**/*.xmlsrc/main/resourc

2022-05-08 10:37:56 102

原创 MyBatis-详解ResultMap结果映射

MyBatis 有两种不同的方式加载关联:嵌套 Select 查询:通过执行另外一个 SQL 映射语句来加载期望的复杂类型。嵌套结果映射:使用嵌套的结果映射来处理连接结果的重复子集。3.1关联的嵌套 Select 查询属性:select:用于加载复杂类型属性的映射语句的 ID,它会从 column 属性指定的列中检索数据,作为参数传递给目标 select 语句。AuthorMapper接口:public interface AuthorMapper {public Autho.

2022-05-08 10:36:24 605

原创 MD5算法底层原理

MD5的哈希结果长度为128位,按每32位分成一组共4组。这4组结果是由4个初始值A、B、C、D经过不断演变得到。MD5的官方实现中,A、B、C、D的初始值如下(16进制):A=0x01234567B=0x89ABCDEFC=0xFEDCBA98D=0x76543210第三步:循环加工这一步是最复杂的一步,我们看看下面这张图,此图代表了单次A,B,C,D值演变的流程。图中,A,B,C,D就是哈希值的四个分组。每一次循环都会让旧的ABCD产生新的ABCD。一共进行多少次循环呢?由处理后的原文长

2022-05-08 10:34:13 763

原创 mac、idea、gradle编译spring源码并搭建阅读源码环境

[](()二、搭建Gradle环境1、首先来到Gradle官网:[https://services.gradle.org/distributions/](()如下图:我们选择想要安装的发布版本,gradle-x.x-bin.zip是需要下载的安装发布版,gradle-x.x-src.zip是源码,gradle-x.x-all.zip则是下载全部的文件。 我本地为 gradle-5.6.3。2、Gradle下载的源码不需要安装,我们将下载的压缩包在本机的目录下直接解压即可,解压后的目录如下图所示。

2022-05-08 10:32:11 346

原创 RabbitMQ安装以及消息模型使用攻略

//创建连接工厂ConnectionFactory factory = new ConnectionFactory();//设置rabbitmq服务器IP地址factory.setHost(“192.168.5.128”);//设置rabbitmq服务器连接端口factory.setPort(5672);//设置rabbitmq服务器虚拟主机factory.setVirtualHost(“yingxue”);//设置rabbitmq服务器用户名factory.setUsername(“wh

2022-05-06 13:09:29 710

原创 Python每日一练——数据存储第六关

salary real);‘’')db.commit()db.commit()return Trueexcept:db.rollback()return Falseif createTable(db):print(‘create table success’)else:print(‘create table failed’)使用navicat工具查看:[](()面试题二 之 向MySQL表中插入数据:coding=utf-8author_ = 孤寒者from pymysql

2022-05-06 13:07:11 753

原创 prometheus grafana监控cassandra集群

2、将cassandra属性导出,这个依赖一个java agent包[jmx_exporter]((),导出配置不要使用[https://github.com/prometheus/jmx_exporter](()上的cassandra配置,这里面的配置跟5408这个dashboard不兼容,需要修改很多,直接用[https://grafana.com/grafana/dashboards/5408](()里面的配置即可,为了方便使用我把文件上传到csdn文档里面(免费),有需要的自取[https://d.

2022-05-06 13:05:23 349

原创 P8架构师都要懂的微服务架构深度解析:微服务构建,领域驱动设计

领域驱动设计可以让业务和技术的变化产生的不可预知因素互相分离,将人员变动、团队规模、协作沟通等外界因素变化对产品和项目的影响封装在一个可控的容器和框架下,从而解决软件面临的复杂性问题,如下图所示。事务脚本模式与领域建模模式● 事务脚本模式:事物脚本模式常见于单体应用中,它将所有逻辑全部组织在一个单一过程方法中,从数据库的调用到不同业务逻辑、策略的执行全部集成在一个大的方法块中。它的好处是简单、容易实现,它的缺点是没有自己的状态,也无法扩展,容易将服务组件与数据存储模型之间的刚性依赖引入业务逻辑中。●

2022-05-06 13:03:27 155

原创 Oracle快速入门(基本概念+查询大全

select * from emp;[](()4、方言特征select 1+1;//在mysql当中会输出2不会报错,但是在Oracle当中会报错在Oracle当中需要这样做select 1+1 from dual;dual表是oracle的虚表,伪表,主要是用来补齐语法结构[](()四、别名查询:使用as 关键字,可以省略select ename 姓名,sal 工资 from emp;在刚安装完Oracle需要解决中文乱码的问题中文乱码问题解决[](()1、查看服务器端编码sel

2022-05-06 13:01:00 262

原创 Nginx服务器安装

[root@localhost yum.repos.d]# vim epel.repo[epel]name=Extra Packages for Enterprise Linux 7baseurl=http://172.21.72.103/CentOS-YUM/Aliyun/version_7/epel/Packagesenabled=1gpgcheck=0[root@localhost yum.repos.d]# yum clean all[root@localhost yum.repo.

2022-05-06 12:59:03 993

原创 Nexus简介及使用IDEA打包上传到Nexus3私服详细教程

===================1.配置 .m2 下的 settings.xml首先,这个文件在系统盘当前设备登录用户的.m2文件下,加入认证机制没有就去网上copy一个配置好的,自己配置容易出错->settings.xm 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 l<-nexusadminadmin123maven-snapshotsadminadmin123maven-

2022-05-06 12:57:27 707

原创 Netty权威指南:I-O-多路复用技术

服务器需要同时处理多种网络协议的套接字。目前支持I/O多路复用的系统调用有select、pselect、poll、epoll,在Linux网络编程过程中,很长一段时间都使用select做轮询和网络事件通知,然而select的一些固有缺陷导致了它的应用受到了很大的限制,最终Linux不得不在新的内核版本中寻找select的替代方案,最终选择了epoll。epoll 与select 的原理比较类似,为了克服select的缺点,epoll 作了很多重大改进,现总结如下。1.支持一一个进程打开的socket.

2022-05-06 12:55:27 261

原创 Netty堆外内存泄漏如何应对?

我们可以从官方文档中获取更加清晰的认识,总结如下:Netty堆外内存回收算法是基于引用计数的;如果一个发送组件(sending component)企图传递一个基于引用计数对象,通常发送组件不需要回收该对象,而是交给消费组件。如果代码块组件(component)接收基于引用计数的内存对象,且不再使用,该组件应负责引用释放——引用计数会-1。如:ChannelHandler就是典型的引用对象接收组件。官方提供了判断是否需要引用释放的案例:public ByteBuf a(ByteBu

2022-05-06 12:53:49 638

原创 MySQL纯手写面试笔记解析,2020锤爆35K月薪,你值得拥有

慢查询![img](https://imgconvert.csdnimg.cn/aHR0cDovL3AxLnBzdGF0cC5jb20vb3JpZ2luL 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 3BnYy1pbWFnZS9jOGZkNjAxYWIwZjk0ZDllOTJkMjM2MWQ0NmUzOGU2MQ?x-oss-process=image/format,png)索引与执行计划SQL优化由于篇幅字数原.

2022-05-06 12:51:29 517

原创 Mybatis工作流程及其原理与解析

public SqlSessionFactory build(InputStream inputStream, String environment, Properties properties) {try {XMLConfigBuilder parser = new XMLConfigBuilder(inputStream, environment, properties);//解析mybatis-config.xmlreturn build(parser.parse());} catch (E

2022-05-05 17:22:50 152

空空如也

空空如也

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

TA关注的人

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