自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(85)
  • 资源 (7)
  • 问答 (1)
  • 收藏
  • 关注

原创 微服务治理

服务治理服务化的关键是服务治理。服务治理主要包括服务发现、负载均衡、限流、熔断、超时、重试、服务追踪。服务发现如果服务少,可以通过硬编码或配置文件提供服务地址。但是面对大量服务实例和频繁的上线部署,服务之间如果想知道彼此的服务地址和运行状态,这时候就需要服务发现组件来实现。服务发现概述使用一个注册中心来记录分布式系统中全部服务信息,以便让其他服务能快速找到这些已经注册的服务。要尽量做到高可用。服务发现模块需要有服务注册、服务查找、服务健康检查和服务变更通知等关键功能。可以通过服务名称来查找和使用

2021-10-12 14:15:36 4093 1

原创 Dubbo - SPI机制

Dubbo SPIdubbo中采用了SPI思想,并没有使用jdk的SPI机制,而是自己实现的一套SPI机制。jdk SPI 的缺点JDK 标准的 SPI 会一次性加载实例化扩展点的所有实现,在 META-INF/service 下的文件里面加了 N 个实现类,那么 JDK 启动的时候都会一次性全部加载。那么如果有的扩展点实现初始化很耗时或者如果有些实现类并没有用到, 那么会很浪费资源如果扩展点加载失败,会导致调用方报错,而且这个错误很难定位到是这个原因Dubbo SPIDubbo的源码中,很

2021-10-08 16:32:48 581

原创 关于@Value和@Autowired

关于@Value和@AutowiredConfigurationClassPostProcessorConfigurationClassParserConfigurationClassBeanDefinitionReader一切的一切又得回到Spring中大多数bean的起点ConfigurationClassPostProcessor,ConfigurationClassPostProcessor实现了BeanDefinitionRegistryPostProcessor接口。我们在Sprin

2021-09-18 17:03:50 703

原创 JUC并发编程-ReentrantLock原理

ReentrantLockReentrantlock 是并发包中一个可重入的锁,是基于AQS(AbstractQueuedSynchronized)实现的,它有公平锁和不公平锁两种实现方式。Reentranlock 中有一个内部抽象类 Sync 继承自 AbstractQueuedSynchronized ,主要是它来实现锁的功能, Sync 在 ReentrantLock 中有两种实现类:NonfairSync、FairSync,正好对应了ReentrantLock的非公平锁、公平锁两大类型。

2021-08-24 13:53:47 200

原创 JUC并发编程-ThreadFuture

FutureTask1. Futurefuture接口定义了获取任务线程执行信息以及取消线程运行的接口方法public interface Future<V> { boolean cancel(boolean mayInterruptIfRunning); boolean isCancelled(); boolean isDone(); V get() throws InterruptedException, ExecutionException

2021-08-24 09:51:00 259

原创 记录一次jvm问题:Survivor区非常小 | UseAdaptiveSizePolicy策略

记录一次比较特殊的jvm问题问题top命令 发下吗某java应用cpu占用率过高top -Hp 15436 查看15436对应的子线程[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U95vyf8f-1629511995368)(1629449215545.png)]printf %x 15570 输出子线程号的16进制格式3cd2jstack -l 15436|grep 0x3cd2 -A 30 输出栈使用信息发现每次执行的任务都不相同,并

2021-08-21 10:17:02 3738

原创 mysql基于块的嵌套循环连接

基于块的嵌套循环连接(Block Nested-Loop Join)《MySQL是怎样运行的:从根儿上理解MySQL》读书笔记采用嵌套循环连接算法的两表连接过程中,被驱动表可是要被访问好多次的,如果这个被驱动表中的数据特别多而且不能使用索引进行访问,那就相当于要从磁盘上读好几次这个表,这个 I/O 代价就非常大了,所以我们得想办法: 尽量减少访问被驱动表的次数​ 当被驱动表中的数据非常多时,每次访问被驱动表,被驱动表的记录会被加载到内存中,在内存中的每一条记录只会和驱动表结果集的一条记录做匹配,之

2021-08-19 15:38:30 947

原创 《MySQL是怎样运行的:从根儿上理解MySQL》- mysql 数据存储

《MySQL是怎样运行的:从根儿上理解MySQL》- mysql 数据存储《MySQL是怎样运行的:从根儿上理解MySQL》读书笔记InnoDb数据页结构页是 InnoDB 管理存储空间的基本单位,一个页的大小一般是 16KB 。InnoDB 为了不同的目的而设计了许多种不同类型的 页 ,比如存放表空间头部信息的页,存放 Insert Buffer 信息的页,存放 INODE 信息的页,存放 undo 日志信息的页等等等等。我们聚焦的是那些存放我们表中记录的那种类型的页,官方称这种存放记录的页为索引(

2021-08-19 11:31:40 2074

原创 redis相关(1)

redis

2021-08-16 22:14:44 97

原创 秒杀系统-限流

秒杀系统秒杀令牌秒杀大闸队列泄洪一、秒杀令牌用户利用自己的 token和商品的 id等信息,很容易就能写个脚本不停的发送请求,在活动没开始前,就开始刷,这样就会影响正常用户的下单,存在不公平现象;利用秒杀令牌机制,在活动开始前,秒杀令牌是不会发送给用户的,因此其活动请求之前没有令牌的请求都是无效的。1. 秒杀原则秒杀下单前,需要先获得秒杀令牌才能进行秒杀下单秒杀接口需要依靠令牌才能进入,令牌合法之后,才能进入秒杀下单的逻辑;秒杀活动模块全权负责秒杀令牌的生成周期以及生成方式;

2021-08-16 16:52:28 1297

原创 Spring-Import注解

Import注解@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface Import { //Import注解常用于导入spring component Class<?>[] value();}@Import注解的使用主要与ConfiguretionClassPostProcessor有关。ConfigurationClassPostProcessor是Sp

2021-08-10 18:05:49 470

原创 Mybatis基本原理及整合Spring

Mybatis基本原理及整合SpringMyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。MyBatis 以及与Spring的整合过程中需要解决以下问题xml文件中的sql语句如何与接口映射mappe

2021-08-10 17:36:50 220

原创 Thread类

Thread 线程1. 重要的知识概念1.1 锁池假设线程A已经拥有了某个对象(不是类)的锁,而其它线程B、c想要调用这个对象的某个synchronized方法(或者块),由于B、c线程在进入对象的synchronized方法(或者块)之前必须先获得该对象锁的拥有权,而恰巧该对象的锁目前正被线程A所占用,此时B、c线程就会被阻塞,进入一个地方去等待锁的释放,这个地方便是该对象的锁池1.2 等待池(等待队列)假设线程A调用了某个对象的wait()方法,线程A就会释放该对象的锁,同时线程A就进入到了该

2021-02-23 23:02:29 4857 1

原创 JUC并发编程-ConcurrentHashMap

ConcurrentHashMapConcurrentHashMap 同样也分为 1.7 、1.8 版,两者在实现上略有不同。1.7 /** * Segment 数组,存放数据时首先需要定位到具体的 Segment 中。 */ final Segment<K,V>[] segments; transient Set<K> keySet; transient Set<Map.Entry<K,V>> en

2021-02-19 15:46:49 98

原创 JUC并发编程-AQS原理

AQS1.概述谈到并发, 不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer (AQS)! 类如其名,抽象的队列式同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类都依赖于他,如常用的 ReentrantLock/Semaphore/CountDownLatch…。AQS的核心思想:如果被请求的共享资源空闲,则将当前请求资源的线程设置为有效的工作线程,并将共享资源设置为锁定状态,如果被请求的共享资源被占用,

2021-02-06 00:14:04 366

原创 ThreadLocal与ThreadLocalMap

ThreadLocal与ThreadLocalMap【jdk 1.8】使用场景每个线程需要一个独享的对象(通常是工具类)每个线程内需要保存全局变量,可以在不同的地方直接获取,避免参数传递的麻烦作用让某个需要用到的对象在线程间隔离(每个线程都有自己独享的对象)任何方法中都可以轻松获取其对象好处可以达到线程安全不需要加锁,提高效率高效利用内存,相比于每个任务都新建一个对象,用ThreadLocal可以节省内存和开销免去传递参数的繁琐,降低了程序耦合度主要方法1)in

2021-02-04 23:07:16 2343

原创 springboot *.jar中没有主清单属性 解决办法

创建springboot的一般会依赖springboot的parent或者导入pring-boot-dependencies如果是依赖springboot的parent项目遇到 *.jar中没有主清单属性 解决办法则需要添加此插件<properties> <start-class>com.lmt.springcloud.EurekaServerMain7001</start-class></properties> <buil

2021-01-28 19:28:58 287

原创 Tomcat部署war包应用

tomcat主要目录bin:包含启动关闭程序等conf:配置文件目录lib:库logs:日志存储目录webapps:默认的项目存储目录work:Catalina生成的文件部署将war包放在webapps目录下在conf目录下的server.xml文件里有这样一个默认配置<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">

2021-01-28 12:34:54 934

原创 HashMap JDK1.8

HashMap JDK1.8在分析HashMap之前,我们先看一下Map接口java.util.Map在Map接口中我们主要观察三个地方首先时两个方法Set<K> keySet();Collection<V> values();ketSet方法可以看出其采用的是set来维护其key值,可以推出其key值是唯一的而values()方法的返回值可以看出其采用的Collection,可以看出其value值是不唯一的我们所需要看的另一个地方是在Map内部定义了一个Ent

2021-01-27 15:45:30 136

原创 JUC并发编程-线程池之ThreadPoolExecutor使用和原理

解决问题:提升性能 :它们通常在执行大量异步任务时,由于减少了每个任务的调用开销,并且它们提供了一种**限制和管理资源(包括线程)**的方法,使得性能提升明显;统计信息:每个ThreadPoolExecutor保持一些基本的统计信息,例如完成的任务数量。参数:corePoolSize 核心线程池大小maximumPoolSize 最大线程池大小线程池会根据corePoolSize和maximumPoolSize自动调整线程池的大小规则: 1. 当正在执行的线程数量少于core.

2021-01-26 21:10:07 152

原创 Spring security登录解析

AbstractAuthenticationProcessingFilterpublic void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (Ht

2020-12-18 15:03:58 321

原创 mybatis-Plus 通用枚举

通用枚举1、声明通用枚举属性方式一:使用 @EnumValue 注解枚举属性public enum StatusEnum { DISABLED(0,"禁用"),ENABLE(1,"正常"); StatusEnum(Integer code, String descp) { this.code = code; this.descp = descp; } @EnumValue//指明字段的值为code private Int

2020-11-29 11:26:55 512

原创 mybatis-Plus 逻辑删除

逻辑删除第一步:配置mybatis-plus: global-config: db-config: logic-delete-field: isDeleted #实体名称 logic-delete-value: 1 # 已经删除标志值 logic-not-delete-value: 0 #未删除标志值第二步:数据库字段类型支持说明:支持所有数据类型(推荐使用 Integer,Boolean,LocalDateTime)如果数据库字段使用dat

2020-11-29 10:33:13 884

原创 mybatis-Plus(Spring boot版)

一、配置pom文件<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.0</version></dependency>配置数据源spring: datasource: type: com.alib

2020-11-29 10:05:58 945 1

原创 html取消高度塌陷

添加伪类元素:after{content:’’;clear:both;display:block;}设置为会块级元素并清除左右浮动,从而把父级元素撑开,避免了高度塌陷

2020-10-19 17:08:32 234

原创 CSS position属性

CSS position 属性可选值值描述absolute生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。元素的位置通过 “left”, “top”, “right” 以及 “bottom” 属性进行规定。fixed生成绝对定位的元素,相对于浏览器窗口进行定位。元素的位置通过 “left”, “top”, “right” 以及 “bottom” 属性进行规定。relative生成相对定位的元素,相对于其正常位置进行定位,因此,“left:2

2020-07-15 12:12:34 217

原创 git

git一、简介Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。官网地址为:https://git-scm.com/Git优点适合分布式开发,强调个体;公共服务器压力和数据量都不会太大;速度快、灵活;任意两个开发者之间可以很容易的解决冲突;离线工作。Gi

2020-07-14 15:53:52 212

原创 CSS background属性

CSS background属性background 简写属性在一个声明中设置所有的背景属性。可以设置如下属性:background-colorbackground-positionbackground-sizebackground-repeatbackground-originbackground-clipbackground-attachmentbackground-image如果不设置其中的某个值,也不会出问题,比如 background:#ff0000 url(‘smile

2020-07-13 00:33:41 423

原创 CSS 居中之text-align与margin的区别

区分 text-align与margin两种对齐的方式text-aligntext-align 属性规定元素中的文本的水平对齐方式。注意:其文本内容也包括其所有子孙元素中的文本margin:0 auto我们先理解一下auto,其含义因元素类型和上下文而异,在边距中,auto可以表示两种情况:占用可用空间或0 px。这两个将为元素定义不同的布局。“自动”占用可用空间**这是我们利用auto最常见的用法。通过分配auto元素的左右边距,它们可以平等地占据元素容器中的可用水平空间 - 因此

2020-07-13 00:26:41 1958

原创 HttpServlet

HttpServlet类首先看一下HttpServlet类的继承关系我们发现HttpServlet继承自GenericServlet类,而GenericServlet类是实现的Servlet和ServletConfig接口所以我们先看一下GenericServlet类的定义GenericServletpackage javax.servlet;import java.io.IOException;import java.io.Serializable;import java.util.E

2020-07-10 23:24:09 168

原创 ServletConfig

ServletConfig接口简介在运行 Servlet 程序时,可能需要一些辅助信息,例如,文件使用的编码、使用 Servlet 程序的共享信息等,这些信息可以在 web.xml 文件中使用一个或多个 <init-param>元素进行配置。当 Tomcat 初始化一个 Servlet 时,会将该 Servlet 的配置信息封装到 ServletConfig 对象中,此时可以通过调用 init(ServletConfig config)方法将 ServletConfig 对象传递给Servl

2020-07-10 17:46:58 186

原创 Java Servlet

Servlet简介Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。优势Java Servlet 通常情况下与使用 CGI(Common Gateway Interface,公共网关接口)实现的程序可以达到异曲同工的效果。但是相比于 CGI,Servlet 有以

2020-07-09 23:24:00 115 1

原创 登录界面

简单的登录界面<!DOCTYPE html><html lang="en"><head> <base href="http://localhost:8080/book/"> <meta charset="UTF-8"> <title>登录</title> <style type="text/css"> @import url("static/css/log

2020-07-08 10:54:21 315

原创 三层架构

三层架构       三层架构就是为了符合“高内聚,低耦合”思想,把各个功能模块划分为 表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL) 三层架构,各层之间采用接口相互访问,并通过对象模型的实体类(Model)作为数据传递的载体,不同的对象模型的实体类一般对应于数据库的不同表,实体类的属性与数据库表的字段名一致。       三层架构区分层次的目的是为了

2020-07-08 10:28:08 315

原创 POJO

pojo       POJO(Plain Ordinary Java Object)简单的Java对象。但是它通指没有使用Entity Beans的普通java对象,可以把POJO作为支持业务逻辑的协助类*。      POJO实质上可以理解为简单的实体类,顾名思义POJO类的作用是方便程序员使用数据库中的数据表,对于广大的程序员,可以很方便的将POJO类当做对象来进行使用

2020-07-08 09:29:09 103

原创 javabean

javabean       JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器.JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制(反射机制)发现和操作这些JavaBean 的属性。功能       用户可以使用JavaBean将功能、

2020-07-08 09:27:32 106

原创 java反射

package limengtong.com;/** * @author * @date 2020/7/2 - 19:15 */public class user { public int age; private String name; String add; public user(){ System.out.println("空的构造方法被调用"); } public user(int age, String nam.

2020-07-02 22:26:29 729

原创 Oacle数据库存储管理

Oacle数据库存储管理在物理上,数据库中的数据存储在数据文件中,而在逻辑上数据库的数据存储在表空间中。通过使用表空间可以有效地部署不同类型的数据,加强数据管理,从而提高数据库的运行性能。 管理表空间 根据表空间对盘区的管理方式比较控件可以分为数据字典管理的表空间和本地化管理的表空间。要创建本地管理方式的表空间,可以在createtablespace语句中显示的使用extent management子句指定local关键字。1.表空间的建立本地管 理表空间中区的分配管理方式:使用e..

2020-06-18 09:05:26 196

原创 Oracle数据库体系结构

Oracle数据库的体系结构完整的Oracle数据库系统通常由实例和数据库两部分组成。数据库是一系列物理文件的集合;实例则是一组Oracle后台进程/线程以及在服务器分配的共享内存区。实例和数据库之间的关系是:数据库可以由多个实例装载和打开,而实例可以在任何时间装载和打开一个数据库。数据库的主要功能是保存数据,实际上可以将数据库看作是存储数据的容器。数据库的存储结构也就是数据库存储数据的方式,Oracle数据库的存储结构分为逻辑存储结构和物理存储结构。 逻辑存储结构 在逻辑上,Oracle将保

2020-06-18 08:43:46 269

原创 sublime安装emment问题

解决办法:去https://github.com/emmetio/pyv8-binaries下载对应的pyv8文件,但是因为网络原因可能不能正常下载,所以可以去gitee上去下载,网址:https://gitee.com/moozat/pyv8-binaries 下载完成后解压,建立一个文件夹PyV8,将刚才解压的文件移动的此文件夹中打开sublime 点击 preference->Browse packages...如图返回上一级目录,打开Installed Packages...

2020-05-12 19:45:28 233

jdk-8u281-linux-x64.tar.gz

jdk-8u281-linux-x64.tar.gz

2021-01-21

RabbitMQ安装说明以及安装包-Linux.rar

RabbitMQ的整个安装流程,包含了安装包以及一些问题的处理,格式为mardown格式 ,有图片演示

2020-08-13

Login_regist_java.rar

主要是注册和登录页面 后台采用javaEE 三层架构。数据库采用的是mysql,源码包含html页面、 以及Servlet程序。采用的是tomcat服务器

2020-07-08

VS2019配置MSMPI.docx

win10 64位环境下 Visual Studio 2019 配置安装 微软的MSMPI,此文档有详细配置过程,并配有测试代码

2020-05-22

电子投票系统.rar

数据结构课程设计,因为课程需要不采用数据库,数据存储均采用文件;编程语言为java ,其中采用swing对界面进行设计,因为时间原因,考虑略有不周;功能:管理员对其候选人。投票人进行管理,投票人可以通过登录账号登录系统对候选人进行投票。。。。。。。。具体详情在文件的报告中

2020-05-20

数据库课设-宿舍管理系统java.rar

数据库课设----宿舍管理系统java编写。主要是对宿舍进行管理,包括学生入住搬离、宿舍卫生检查、来访人员登记、宿舍报修、学生信息查询、宿舍信息查询等等,具体在文件的报告中叙述

2019-12-25

java飞机大战小游戏(网络数据库线程).rar

一个大二的java课设,为了高分加上了数据库和网络,其实没啥卵用,再次放在这存着,以纪念一下一个卑微的人的学习历程

2019-12-25

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

TA关注的人

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