自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【MAVEN】Maven配置过程及“‘mvn‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件”问题处理

网上有多种解决方案,但我试了都没成功,一个是检查自己下载、解压的文件有没有bin目录,另一个我把path那里写了Maven的绝对路径,问题得到解决。我windows环境下载的是第二行bin.zip,src.zip的文件解压后并没有bin目录。查看高级系统配置,找到环境变量,在系统变量加上。记录配置Maven过程及遇到的一点问题。按理就已经成功了,但有可能出现如下问题。在系统变量的path再添加一行。

2023-04-28 21:10:39 1370 1

原创 【MySQL】分库分表问题

比如数据库拆分后,订单和库存在两个库中,一个下单减库存的操作,就涉及跨库事务。分库分表以后,数据分散存储到不同的数据库和表中,如果查询指定数据列表,或者需要对数据列表进行排序时,就变得异常复杂,则需要在内存中进行处理,整体性能会比较差,一般来说,会限制这类型的操作。将原本存储于单个数据库上的数据拆分到多个数据库,把原来存储在单张数据表的数据拆分到多张数据表中,实现数据切分,从而提升数据库操作性能。数据库主键:实现简单,单调递增,具有一定的业务可读性,强依赖db、存在性能瓶颈,存在暴露业务信息的风险。

2023-04-05 21:26:16 455

原创 用Redis实现消息队列的四种思路

Redis设计实现消息队列。

2023-04-05 17:37:32 1108

原创 【Java多线程】Future类使用

Future就是对于具体的Runnable或者Callable任务的执行结果进行取消、查询是否完成、获取结果等操作。它代表是异步执行的结果,意思是当异步执行结束之后,返回的结果将会保存在Future中。当我们提交一个Callable任务后,我们会同时获得一个Future对象,然后,我们在主线程某个时刻调用Future对象的get()方法,就可以获得异步执行的结果。在调用get()时,如果异步任务已经完成,我们就直接获得结果。如果异步任务还没有完成,那么get()会阻塞,直到任务完成后才返回结果。

2023-04-01 10:59:05 1289

原创 【Java多线程】volatile与内存屏障详解

volatile读的内存语义:读一个volatile变量时,JMM会把线程对应的工作内存中共享变量数据设置为无效的,然后会从主内存中去读取共享变量最新的数据。禁止上面的volatile写和下面的volatile读/写或普通写操作重排序,前面所有的volatile写的操作,数据都已经刷新到主内存。volatile写:针对的是volatile的变量,在写的时候,是把volatile变量的值,从工作内存刷新到主内存。是一种屏障指令,它使得CPU或编译器对屏障指令的前和后所发出的内存操作,执行一个排序的约束。

2023-03-28 09:47:37 1214

原创 【Java多线程】线程池探究

线程池(Thread Pool)是一种基于池化思想管理线程的工具,经常出现在多线程服务器中,如MySQL。线程过多会带来额外的开销,其中包括创建销毁线程的开销、调度线程的开销等等,同时也降低了计算机的整体性能。线程池维护多个线程,等待监督管理者分配可并发执行的任务。这种做法,一方面避免了处理任务时创建销毁线程开销的代价,另一方面避免了线程数量膨胀导致的过分调度问题,保证了对内核的充分利用。本文学习记录的线程池是JDK中提供的ThreadPoolExecutor类。

2023-03-21 15:42:27 169

原创 【Java多线程】Synchronized和lock底层剖析

Compare and Swap,翻译成比较并交换。执行函数CAS(V,E,N),3个操作数,内存值V,旧的预期值E,要修改的新值N。当且仅当预期值E和内存值V相同时,将内存值V修改为N,否则什么都不做。AQS核心思想是,如果被请求的共享资源空闲,那么就将当前请求资源的线程设置为有效的工作线程,将共享资源设置为锁定状态;如果共享资源被占用,就需要一定的阻塞等待唤醒机制来保证锁分配。这个机制主要用的是CLH队列的变体实现的,将暂时获取不到锁的线程加入到队列中。

2023-03-20 01:24:50 406

原创 【Java】面向对象三大基本特征

Java面向对象三大基本特征

2023-03-19 16:12:33 368

原创 【Redis持久化】RDB快照和AOF日志

Redis默认是把所有的数据都存在内存中的。但是当服务器重启或程序异常崩溃时,Redis的数据就会全部丢失。因此出现了持久化的概念。持久化就是将存在内存中的数据同步到磁盘来保证持久化。Redis 的一种持久化方式叫快照(snapshotting,RDB),另一种方式是只追加文件(append-only file, AOF)。

2023-03-13 16:23:41 324

原创 【JVM】垃圾回收器

串行回收器:Serial,Serial old;并行回收器:ParNew,Parallel scavenge,Parallel old;并发回收器:CMS、G1;新生代收集器:Serial,ParNew,Parallel scavenge;老年代收集器:Serial old,Parallel old, CMS;整堆收集器:G1;

2023-03-01 19:33:19 874

原创 【数据库/MySQL】MySQL三大日志提要

主体主要参考自Javaguide对应章节Javaguide中的总结:MySQL InnoDB 引擎使用redo log(重做日志)保证事务的持久性,使用undo log(回滚日志)来保证事务的原子性。MySQL数据库的数据备份、主备、主主、主从都离不开binlog,需要依靠binlog来同步数据,保证数据一致性。

2023-02-27 16:49:06 289

原创 【消息队列】关于消息队列的一些面试问题

生产者投递消息的速率>消费者消费的速率,导致我们消息会堆积在我们 mq 服务器端中,没有及时的被消费者消费,所以就会产生消息堆积的问题。1.多线程方式实现异步可能会消耗到我们的 cpu 资源,可能会影响到我们业务线程执行会发生 cpu 竞争的问题;背景:mq服务器集群或者mq采用分区模型架构存放消息,每个分区对于一个消费者消费消息。消费者获取消息,如果消费消息失败, mq 服务器则会间隔的形式 实现重试策略;rabbitmq 消费者我们的消息消费如果成功,消息会被立即删除。A.提高消费者消费的速率;

2023-02-21 15:50:06 91

原创 CentOS搭建dns服务

BIND(Berkeley InternetName Daemon)是现今互联网上最常使用的DNS服务器软件,使用BIND作为服务器软件的DNS服务器约占所有DNS服务器的九成。BIND现在由互联网系统协会(Internet Systems Consortium)负责开发与维护。此组织还维护一个很有名的软件DHCP。我们使用时安装软件名为bind,而进程名和用户名为named。修改dns服务器ip,ping www.test.com进行测试。,原文中内网实验成功,我在公网服务器实验失败。

2023-02-13 00:24:37 258

原创 【数据结构|二叉树】二叉树的层序遍历

对多道二叉树层序遍历相关题目,主要是用了两种遍历方式,一种是递归方式,一种是使用队列。代码模板可以用于多道题的解答,在此用两道题目记录这两种思路。

2023-02-11 10:00:30 67

原创 【Java基础/数据结构】栈(Stack)与队列(Queue、Deque)

Java堆栈、队列

2023-01-27 12:18:28 259

原创 【Java基础】String & StringBuffer & StringBuilder

方法时,实际传递的是引用的一个拷贝。其实,每当把 String 对象作为方法的参数时,都会复制一份引用,而该引用所指向的对象其实一直待在单一的物理位置上,从未动过。Java 语言本身并不支持运算符重载,“+”和“+=”是专门为 String 类重载过的运算符,也是 Java 中仅有的两个重载过的运算符。的返回值,其实是最终结果的引用。是 Java SE5 引入的,在这之前用的是。值的方法,实际上都是创建了一个全新的。返回的引用已经指向了一个新的对象,而。的定义,传入其中的引用有了名字。

2023-01-23 12:16:13 105

原创 【网络安全】ICMP隐蔽隧道通信与检测

在一些网络环境中,如果攻击者使用各类上层隧道(例如HTTP隧道,DNS隧道,正反向端口转发等)进行操作均失败。那么可以尝试使用ICMP建立隧道,ICMP协议不需要端口的开放,因为其基于IP工作的,所以我们将其归结到网络层,ICMP消息最为常见的就是ping命令的回复,将TCP/UDP数据包封装到ICMP的ping数据包中,从而穿过防火墙**(通常防火墙是不会屏蔽ping数据包的)**

2023-01-17 19:53:09 1093

原创 【MySQL】事务与MVCC

在计算机术语中事务是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。数据库事务可以保证多个对数据库的操作(也就是 SQL 语句)构成一个逻辑上的整体。

2023-01-13 23:09:46 119

原创 Linux配置应用自启动

配置环境时遇到常用服务需手动开启,十分麻烦,在此记录使用centOS配置服务自启动操作。以redis_exporter为例。开启服务,并设置开机自启。

2022-08-31 09:56:47 211

原创 【群体智能优化算法】粒子群算法(PSO)入门实践

粒子群算法在对动物集群活动行为观察基础上,利用群体中的个体对信息的共享使整个群体的运动在问题求解空间中产生从无序到有序的演化过程,从而获得最优解。群体智能优化算法主要模拟了昆虫、兽群、鸟群和鱼群的群集行为,这些群体按照一种合作的方式寻找食物,群体中的每个成员通过学习它自身的经验和其他成员的经验来不断地改变搜索的方向。它的控制是分布式的,不存在中心控制。(5)适应性原则在所需代价不太高的情况下,群体能够在适当的时候改变自身的行为。(4)稳定性原则群体不应当在每次环境变化的时候都改变自身的行为。......

2022-07-31 15:37:08 989

原创 【密码学/密码分析】基于TMTO的密码分析方法

TMTO全称Time-memory Trade-off,译为时间-存储折中攻击。TMTO在计算空间和计算时间中找到折中点,可以大幅提高计算效率、降低计算成本,有利于处理背包和离散对数问题等一系列搜索任务。这种时间-存储折中的方法是一种概率模型, 无法确保100%成功率, 成功率的大小将取决于分配的时间和内存的大小。...

2022-07-25 16:52:39 1809

原创 【密码学/密码分析】生日悖论及生日攻击

鸽巢原理:给定n个鸽巢,至少存在n+1只鸽子,那总是会发生碰撞。概率环境:我们需要多少个物体(鸽子)使得发生碰撞的概率大于1/2?答案是n1/2,而不是n/2。举个例子,想象一位老师问一个有30名学生的班级(n = 30)每个人的生日在哪一天(为简便,此处省略闰年)以确定是否有两个学生同一天生日(对应碰撞)。从直觉角度考虑,机率看起来很小。若老师选择特定日期(例如9月16日),则至少有一名学生在那天出生的几率是,约为7.9%。但是,与我们的直觉相反的是,至少一名学生和另外任意一名学生有着相同生日的几率大约

2022-06-04 23:16:22 1849

原创 【虚拟机扩容】简单快速完成Ubuntu虚拟机扩容

环境 ubuntu 20.0.4找到虚拟机设置,删除快照文件且虚拟机关机时,点击扩展,设置所需数值。执行如下指令,安装Gparted软件。然后在应用程序中可以找到图形化应用。打开软件选中所需扩容分区,要先从外层开始分配,这里是sda2然后sda5。点击红框处进行操作。分配后,按绿色对钩按钮alt+f2打开运行窗口,在里面输入gnome-system-monitor命令,然后回车,在文件系统看到扩展成功。............

2022-06-03 00:29:27 3535 2

原创 【数据结构】BRT红黑树

引入带颜色的节点也是为了方便在进行插入或删除操作时,如果破坏了二叉查找树的平衡性能通过一系列变换保持平衡。红黑树的查找、插入、删除的时间复杂度均为O(log2n)(注意:AVL的查找、插入、删除的时间复杂度均为O(log2n)结点是红色或黑色;根结点是黑色。叶子结点(也叫外部结点、NULL结点、失败结点)是黑色。不存在两个相邻的红结点。(即红结点的父结点和子结点都是黑色的)从任意结点到可达的叶子结点的每个路径包含相同数目的黑色节点。从根到叶节点的最长路径不大于最短路径的2倍。有n个内部节点的红黑树的高度h

2022-06-01 11:08:05 450

原创 有效解决CentOS 8 AppStream报错以及makecache报错等问题

解决CentOS8 AppStream报错以及makecache报错等问题1.备份使用CentOS 8 yum安装java11,遇到一系列问题。首先备份原有的repo文件cd /etc/yum.repos.d && mkdir bak && mv *.repo ./bak看到一些其他教程只修改CentOS-Base.repo这个文件,会出现以下提示2.换阿里云源有些教程给出的换源网址已经不能再使用,建议查看官网https://developer.ali

2022-03-04 22:23:24 1307

原创 【ssh sftp终端工具】MobaXterm下载及配置

MobaXterm下载及配置MobaXterm又称之为mobaXVT,是一款集万千于一身的全能型终端神器,为程序员,网站管理员,IT管理员提供了量身定制的功能,能够以更简单的方式处理其远程作业。该软件允许启动远程会话,且启动的每个会话都会自动保存并显示在左侧边栏中,并具有很强的扩展能力。优点功能十分强大,支持SSH,FTP,串口,VNC,X server等功能;支持标签,切换也十分方便;众多快捷键,操作方便;有丰富的插件,可以进一步增强功能;虽然有收费版,但免费版已经可以满足我们的日常需求

2022-03-04 20:26:04 2064

原创 【Java Web/计算机网络】Session vs. Cookie vs. Token

【Java Web/计算机网络】Session vs. Cookies vs. Token一、什么是Cookie?Cookie 是保存在用户计算机上的小型文本文件。cookie 的最大文件大小为 4KB。它也称为 HTTP cookie、Web cookie 或 Internet cookie。当用户第一次访问网站时,网站会以 cookie 的形式向用户的计算机发送数据包。Cookie 帮助网站在用户访问其网站时跟踪用户的浏览历史或购物车信息。存储在 cookie 中的信息不安全,因为它以任何人都可

2022-03-02 21:09:31 3771

原创 【Java并发/多线程】基本概念|创建线程|线程状态

Java并发/多线程进程和线程的区别进程是一个独立的运行环境,而线程是在进程中执行的一个任务。他们两个本质的区别是是否单独占有内存地址空间及其它系统资源(比如I/O):进程单独占有一定的内存地址空间,所以进程间存在内存隔离,数据是分开的,数据共享复杂但是同步简单,各个进程之间互不干扰;而线程共享所属进程占有的内存地址空间和资源,数据共享简单,但是同步复杂。进程单独占有一定的内存地址空间,一个进程出现问题不会影响其他进程,不影响主程序的稳定性,可靠性高;一个线程崩溃可能影响整个程序的稳定性,可靠性较

2022-02-26 21:44:26 230

原创 【JVM JMM】Java虚拟机 Java内存学习入门篇

Java虚拟机 JVM学习一、什么是JVM1.定义Java Virtual Machine,JAVA程序的运行环境(JAVA二进制字节码的运行环境)JVM 是 Java 的核心和基础,在 Java 编译器和 os 平台之间的虚拟处理器。它是一种基于下层的操作系统和硬件平台并利用软件方法来实现的抽象的计算机,可以在上面执行 Java 的字节码程序。Java 编译器只需面向 JVM,生成 JVM 能理解的代码或字节码文件。Java 源文件经编译器,编译成字节码程序,通过 JVM 将每一条指令翻译成不同

2022-02-26 11:01:17 579

原创 【Java类初始化】实例详解

Java类初始化W3Cschool Java类初始化类的加载过程加载-链接-初始化加载:将class文件字节码内容加载到内存中,并将这些静态数据换成方法取得运行时的数据结构,然后生成一个代表这个类的java.lang.Class对象。链接:将Java类的二进制代码合并到JVM的运行状态之中的过程。验证:确保加载的类信息符合JVM规范,没有安全方面的问题。准备:正式为类变量分配内存并设置类变量默认初始值的阶段,这些内存都将在方法区中进行分配。解析:虚拟机常量池内的符号引用(常量名)替换

2022-02-25 23:47:36 365

原创 Spring MVC学习

Spring MVC一、简介1、什么是MVCMVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分M:Model,模型层,指工程中的JavaBean,作用是处理数据JavaBean分为两类:一类称为实体类Bean:专门存储业务数据的,如 Student、User 等一类称为业务处理 Bean:指 Service 或 Dao 对象,专门用于处理业务逻辑和数据访问。V:View,视图层,指工程中的html或jsp等页面,作用是与用户进行交互,展示数据C:Controller,控制层

2022-02-24 17:00:57 811

原创 MyBatis入门学习

MyBatis入门学习MyBatis是一个Java持久化框架,它通过XML描述符或注解把对象与存储过程或SQL语句关联起来,映射成数据库内对应的纪录。与其他对象关系映射框架不同,MyBatis没有将Java对象与数据库表关联起来,而是将Java方法与SQL语句关联。MyBatis允许用户充分利用数据库的各种功能,例如存储过程、视图、各种复杂的查询以及某数据库的专有特性。如果要对遗留数据库、不规范的数据库进行操作,或者要完全控制SQL的执行,MyBatis是一个不错的选择。与JDBC相比,MyBati

2022-02-20 23:58:47 660

原创 【Java注解】@Test注解测试应用和实践探究

Java@Test注解实践利用Junit测试的@Test注解,可以避免经常编写测试类。@Test注解,方便我们对一段代码进行测试。需要导入相应的包:import org.junit.Test;在方法前加上 @Test , 则该方法即为测试方法,可以执行。下图为第四版《Java编程思想》的描述但在实际使用中发现方法权限只能是public,不能用static修饰,而且不能用于内部类的方法。、Case1 下面的代码可以正常执行,输出正常import org.junit.Test;publ

2022-02-19 20:25:57 10807 2

原创 Spring框架学习(四)事务与事务管理

事务管理事务是数据库操作最基本单元,逻辑上一组操作,要么都成功,如果有一个失败,所有操作都失败。事务是一个不可分割操作序列,也是数据库并发控制的基本单位,其执行的结果必须使数据库从一种一致性状态变到另一种一致性状态(1)事务的特性ACID,是指数据库管理系统(DBMS)在写入或更新资料的过程中,为保证事务(transaction)是正确可靠的,所必须具备的四个特性:原子性(atomicity,或称不可分割性)、一致性(consistency)、隔离性(isolation,又称独立性)、持久性(dur

2022-02-13 11:16:23 523

原创 Spring框架学习(三)JdbcTemplate

JdbcTemplateJdbcTemplate是Spring对JDBC的封装,目的是使JDBC更加易于使用。JdbcTemplate是Spring的一部分。JdbcTemplate处理了资源的建立和释放。他帮助我们避免一些常见的错误,比如忘了总要关闭连接。他运行核心的JDBC工作流,如Statement的建立和执行,而我们只需要提供SQL语句和提取结果。在JdbcTemplate中执行SQL语句的方法大致分为3类:execute:可以执行所有SQL语句,一般用于执行DDL语句。update:用于

2022-02-11 11:04:18 771

原创 RAFT共识算法学习

RAFT共识算法https://raft.github.io/raft.pdf raft论文http://thesecretlivesofdata.com/raft/ raft算法动画演示1.分布式系统etcd简介etcd是CoreOS团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。etcd内部采用raft协议作为一致性算法,etcd基于Go语言实现。etcd作为服务发现系统,有以下的特点:简单:安装配置简单,而且提供了HTTP API进

2022-02-11 00:40:06 1518

原创 Spring框架学习(二)AOP(Aspect Oriented Programming,面向切面编程)

Aop(Aspect Oriented Programming,面向切面编程)面向切面编程,利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。不修改源代码的方式,在主干功能中添加新功能。(1)AOP中的一些概念目标对象(target)目标对象指将要被增强的对象,即包含主业务逻辑的类对象。连接点(JoinPoint)连接点,程序运行的某一个点,比如执行某个方法,在Spring AOP中Join Point总是表示

2022-02-09 23:50:16 328

原创 Spring框架学习(一)概述与IOC

1.Spring框架概述Spring框架是Java应用最广的框架,它的成功来源于理念。Spring设计轻量级的开源的JavaEE框架Spring可以解决企业应用开发的复杂性Spring有两个核心部分:IOC和AopIOC:控制反转,把创建对象过程交给Spring进行管理。AOP:面向切面,不修改源代码进行功能增强。Spring特点方便解耦,简化开发AOP编程的支持声明式事务的支持方便程序的测试方便集成各种优秀框架降低API的开发难度2.IOC(Inv

2022-02-09 17:44:24 265

原创 Java注解与反射

一、注解(Annotation)注解(也被称为元数据)为我们在代码中添加信息提供了一种形式化的方法,是我们可以在稍后某个时刻非常方便地使用这些元数据。注解的定义看起来很像接口的定义。与其他Java接口一样,注解也将会编译成class文件。内置注解@Override表示当前的方法定义将覆盖超类中的方法。@Deprecated在使用一些方法时会出现横线。表示废弃,这个注释可以修辞方法,属性,类,表示不鼓励程序员使用这样的元素,通常是因为他很危险或有更好的选择@SuperWarnin

2022-02-06 10:50:49 286

原创 解决MySQL命令行输入密码闪退+不能启动问题

win10环境,新下载MySQL8.0.26。刚装完还是能用,两天没打开,突然出现了问题,下面记录一下解决过程。右键屏幕底部,打开任务管理器-服务,在服务中点击查看MySQL服务状态是否为开启。MySQL服务没有开启,搜索“cmd”,右键单击以管理员身份运行。在命令行窗口中键入(视个人安装路径,默认的是这个):cd C:\Program Files\MySQL\MySQL Server 8.0\bin来到该路径下,初始化,键入:mysqld --initialize回车后键入:net s.

2022-01-27 10:05:35 4727 8

空空如也

空空如也

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

TA关注的人

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