自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux远程调用

安装sshpassyum -y install sshpass调用远程sshpass -p "密码" ssh 用户名@目标ip "执行的命令"远程启动java进程sshpass -p "1111" ssh root@ip "source /etc/profile; bash 'java -jar XXX.jar'"远程执行shell脚本时,不会自动加载环境变量,需要添加source /etc/profile;...

2022-04-02 10:54:31 1517

原创 rabbitMQ--五种消息模型

基本消息模型生产者发送一条消息给消息队列,消费者被动接收消息代码:生产者public class Producer { public static void main(String[] args) { /*** * 1 创建连接工程 * 2 创建连接Connection * 3 通过连接获取通道 * 4 通过连接创建交换机,申明队列,绑定关系,路由可以,发送消息和接收消息 * 5

2021-08-13 10:38:11 609

原创 rabbitMQ--架构模型

架构模型如下:名词解释Broker:rabbitmq服务Virtual Host:虚拟主机,用于进行逻辑隔离(相当于mysql中的schema),一个Virtual Host可以包含多个不同的exchange和queue(名称不一样)新增virtual Host管理页面添加命令添加rabbitmqctl add_vhost vhostpathExchange:交换机,生产者将消息发送到交换机,交换机根据路由key,将消息分发到对应的queue(队列)。Queue:用来

2021-08-13 10:25:00 235

原创 rabbitMQ--安装及常用命令

安装安装环境 CentOS安装方式使用yum在线安装yum update -yyum -q makecache -y --disablerepo='*' --enablerepo='rabbitmq_erlang' --enablerepo='rabbitmq_server'## install these dependencies from standard OS repositoriesyum install socat logrotate -y## install RabbitMQ

2021-08-13 10:18:45 153

原创 HashMap

前期知识哈希(hash):哈希也称为散列。基本原理是吧任意长度的输入通过某种规则转为固定长度的输出。这种映射规则就是哈希算法。特点:不能由哈希值反向推导出原始数据;输入数据微小的变化能得到不同的hash值,相同的输入会得到相同的hash值;执行效率高效;冲突概率小;hashCode():Object类的方法,官网定义如下:Returns a hash code value for the object. This method is supported for the be

2021-05-13 09:57:32 201

原创 java注解

作用注解本身不是程序,是对程序做出的解释,可以理解为给其他程序看的注释格式“@注释名(arg)”,可以添加一些参数,如图:使用场地注解可以添加在**包(package),类(class),方法(method),成员变量(field)**上。元注解负责解释其他注解的注解;@Target(ElementType.xxx):用于描述注解的的适用范围@Retention(RetentionPolicy.xxx):用于描述注解的生命周期@Documented:说明该注解将包含java文档中.

2021-04-08 15:29:46 62

原创 Ubuntu 安装nginx

常用命令##切换至root用户su root##使用apt命令安装apt-get install nginx##查看当前版本号nginx -v## 启动nginxservice nginx start## 指定配置文件启动/usr/local/nginx/sbin/nginx -c conf/nginx.conf查看是否启动成功安装后各个文件夹所在位置/usr/sbin/nginx:主程序/etc/nginx:存放配置文件/usr/share/nginx:存放静态文件

2021-03-23 17:10:32 177

原创 redis操作笔记

设置密码config set requirepass 1126连接:auth 1126问题:当服务重启后此密码失效解决:修改配置文件 requirepass 1126重启redis redis-server --service-start redis.windows-service.conf选择不同的库默认0号库 select 1数据内容字符串 get、set链表 lpush rpush lpop rpop lrange哈希 hset hget hmget hg.

2021-03-23 16:42:07 68

原创 redis 后台启动

进入 DOS窗口在进入Redis的安装目录输入:redis-server --service-install redis.windows.conf --loglevel verbose ( 安装redis服务 )输入:redis-server --service-start ( 启动服务 )输入:redis-server --service-stop (停止服务)启动指定的配置文件redis-server --service-start redis.windows-service.conf.

2021-01-05 17:11:14 74

原创 spring cloud 学习笔记

单体应用存在的问题业务的发展,开发变得复杂,修改新增功能需要对整个系统精选测试,重新部署,一个模块出现问题很可能让整个系统崩溃,且模块内容过于复杂,耦合性太高。分布式,集群集群:一台服务器无法负荷高并发的数据访问量,那么久设置多个服务器一起分担压力(物理层面),多个人干同一件事情来分摊压力分布式:讲一个复杂问题拆分成若干个简单的小问题,讲一个大型的项目架构拆分成若干个微服务来协同完成(软件设计层面),将庞大的工作拆分成若干个小步骤,分别有不同的人完成这些小步骤,最终将所有小步骤组合成整个项目Spr

2020-12-29 15:04:20 174 1

原创 MyBatis学习笔记

简述ORMapping: Object Relationship Mapping 对象关系映射对象:面向对象关系:关系型数据库映射:java到Mysql的映射,开发者可以以面向对象的思想来管理数据库使用创建maven工程,添加pom依赖 <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactI

2020-12-22 14:57:05 153

原创 Spring AOP

简介AOP:Aspect Oriented Programming 面向切面编程优点:降低模块之间的耦合度使系统更加容易拓展更好的代码复用非业务代码更加集中,便于统一管理业务代码更加简洁纯粹AOP是对面向队形编程的一个补充,在运行时,动态的将代码切入到累的制定方法,指定位置上的编程思想就是面向切面编程,将不同方法的同一位置抽象成一个切面对象,对该切面对象进行编程就是AOP。使用示例创建maven工程,pom.xml添加依赖 <dependency>

2020-12-21 14:19:47 83

原创 java web学习笔记

创建java web项目idea+tomcat7新建web项目目录结构如下配置tomcat运行,并通过浏览器访问Servlet什么是servletservlet 是java web 开发的基石,它是运行在servlet容器中(tomcat)中,负责与客户端进行通信。servlet功能:创建 并返回基于客户端请求的动态html页面。与数据库进行通信Servlet 使用Servlet本身是一组接口,自定义一个类,实现servlet接口,这个类就具备了接收客户端请求

2020-12-18 14:33:24 280

原创 Spring IOC初始化源码分析之(十一)finishBeanFactoryInitialization----初始化bean

源码分析通过上述的各个配置和准备工作,终于来到了重点,将剩余的bean示例化,那么它是如何实现的呢,先看下代码: protected void finishBeanFactoryInitialization(ConfigurableListableBeanFactory beanFactory) { // Initialize conversion service for this context. //判断BeanFactory中是否存在名称为“conversionService”且类型为Co

2020-11-26 09:08:08 130

原创 Spring IOC初始化源码分析之(十)registerListeners----注册监听器

源码分析先看代码 protected void registerListeners() { // Register statically specified listeners first. //将默认特定的监听器与多播器绑定 for (ApplicationListener<?> listener : getApplicationListeners()) { getApplicationEventMulticaster().addApplicationListener(

2020-11-25 21:13:37 278

原创 Spring IOC初始化源码分析之(九)onRefresh()----刷新

源码分析先看代码:protected void initApplicationEventMulticaster() { //获取bean工厂 ConfigurableListableBeanFactory beanFactory = getBeanFactory(); //当前是否包含了名为applicationEventMulticaster的事件多播器bean注入 if (beanFactory.containsLocalBean(APPLICATION_EVENT_MULTICAS

2020-11-25 21:11:48 269

原创 Spring IOC初始化源码分析之(八) initApplicationEventMulticaster----初始化事件多播器

源码分析先看代码:protected void initApplicationEventMulticaster() { //获取bean工厂 ConfigurableListableBeanFactory beanFactory = getBeanFactory(); //当前是否包含了名为applicationEventMulticaster的事件多播器bean注入 if (beanFactory.containsLocalBean(APPLICATION_EVENT_MULTICAS

2020-11-25 21:10:48 545

原创 Spring IOC初始化源码分析之(七)initMessageSource----初始化消息源

protected void initMessageSource() { ConfigurableListableBeanFactory beanFactory = getBeanFactory(); if (beanFactory.containsLocalBean(MESSAGE_SOURCE_BEAN_NAME)) { this.messageSource = beanFactory.getBean(MESSAGE_SOURCE_BEAN_NAME, MessageSource.clas

2020-11-25 21:10:23 217

原创 Spring IOC初始化源码分析之(六)registerBeanPostProcessors----注册bean增强器

源码分析先看代码:protected void registerBeanPostProcessors(ConfigurableListableBeanFactory beanFactory) { PostProcessorRegistrationDelegate.registerBeanPostProcessors(beanFactory, this); }方法中只有一个registerBeanPostProcessors方法,具体如下:public static void register

2020-11-25 21:10:09 197

原创 Spring IOC初始化源码分析之(五)invokeBeanFactoryPostProcessors----执行bean工厂增强处理器

源码分析先看代码/** * Instantiate and invoke all registered BeanFactoryPostProcessor beans, * respecting explicit order if given. * <p>Must be called before singleton instantiation. * 示例化并且执行所有注册为bean的BeanFactoryPostProssor,并且按照显式顺序执行(若有) * 这步必须要

2020-11-25 21:09:45 150

原创 Spring IOC初始化源码分析之(四)postProcessBeanFactory-----对bean工厂进行后置处理

源码分析先看源码:protected void prepareBeanFactory(ConfigurableListableBeanFactory beanFactory) { // Tell the internal bean factory to use the context's class loader etc. //设置类加载器 beanFactory.setBeanClassLoader(getClassLoader()); //设置bean表达式解释器,能够让beanFa

2020-11-25 21:08:41 200

原创 Spring IOC初始化源码分析之(三)parepareBeanFatory----配置bean工厂

源码分析源码如下:protected void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) { }显然,在AbstractApplicationContext中,postProcessBeanFactory只是定义的一个抽象方法,而继承自AbstractApplicationContext的子类可重写此实现,即对于继承的子类能够对beanFactory进行其想要的操作。例如在AbstractRefresh

2020-11-25 21:04:58 137

原创 Spring IOC初始化源码分析之(二)obtainFreshBeanFactory----获取bean工厂

源码分析 protected ConfigurableListableBeanFactory obtainFreshBeanFactory() { //刷新bean工厂 refreshBeanFactory(); //返回工厂 return getBeanFactory(); }代码显示,获取bean工厂的过程分两步:第一步刷新,第二步返回;(如同将大象关进冰箱)那么,刷新工厂需要做哪些事呢,下面看代码: protected final void refreshBeanFa

2020-11-25 18:02:42 181

原创 Spring IOC初始化源码分析之(一)prepareRefresh----准备上下文

源码分析先看代码 protected void prepareRefresh() { // Switch to active. //设置日期和标识位 this.startupDate = System.currentTimeMillis(); this.closed.set(false); this.active.set(true); //写日志 if (logger.isDebugEnabled()) { if (logger.isTraceEnabled()) {

2020-11-25 18:02:16 103

原创 angularjs select无法获取默认值

项目中对已有值进行编辑,但是无法获取 <select class="form-control kt-input" data-col-index="2" title="机型" ng-model="aircraftArchiveCtrl.modifyArchive.modelId"> <option ng-selected="aircraftArchiveCtrl.modifyArchive.modelId == model.id" ng-repeat

2020-11-19 17:14:07 182

原创 angularjs 各版本

地址

2020-11-18 16:13:13 1429

原创 一文简述IOC

概述ioc容器作为spring框架核心组件之一,此篇文章对其进行简述分析概念:ioc全称Inversion of Control ,翻译为控制反转;那么什么是控制反转?在讨论这个问题前先看下对象的创建有哪些方式?//newStudent stu=new Student();//使用反射1Class clazz =Class.forName("xxx.Student");Student stu=(Student)clazz.newInstance();//使用反射2 使用构造器类C

2020-11-15 22:19:27 591

原创 ubuntu安装jdk8

安装ubuntu软件后执行以下命令sudo apt-get update安装jdksudo apt install openjdk-8-jdk

2020-11-15 22:16:29 91

原创 JAVA------synchronized关键字

概述synchronized关键字是通过对一个对象加锁,来解决多线程间的同步问题,具体使用不做赘述,主要讨论synchronized的实现原理。详情先看段代码:public class T09_Sync { public static void main(String[] args) { Object o=new Object(); synchronized (o){ System.out.println("Hello");

2020-11-02 14:07:49 120

原创 JAVA------Volatile关键字

概述volatile的功能有两个:线程可见性+禁止指令重排序几个基本概念原子性、可见性、有序性原子性:一个或多个操作要么全部执行,要么不执行,且执行时不会被打断,如int i=1;可见性:多个线程访问同一个变量时,一个线程修改变量,其他各个线程能够立即看到修改的值;有序性:程序的执行顺序按照代码的先后顺序执行;指令重排序 先看一段代码public class T10_Disorder { private static int x = 0, y = 0; private st

2020-10-30 16:07:48 79

原创 JAVA------多线程之同步容器&并发容器

同步容器在java早期,提供了Vector和HashTable两个同步容器,分别是List和Map的具体实现。查看其源码,实现线程同步的方法是对每个公共使用synchronize关键字,在方法上实现同步。源码如下://vector.add(e) public synchronized boolean add(E e) { modCount++; ensureCapacityHelper(elementCount + 1); elementData[el

2020-10-23 15:00:57 202

原创 JAVA------多线程之ThreadLocal

概述ThreadLocal可以理解为一个工具类,能够为多个线程提供保存在各个线程内部的局部变量,通过提供的set和get方法来实现线程独立地对这些变量的修改和访问。因为变量保存在线程内部,线程在操作时不会产生线程不安全问题。使用示例 以下是简单的使用示例,两线程都对变量赋不一样的值,分别访问,删除public class T07_ThreadLocal { static ThreadLocal<String> local = new ThreadLocal&lt.

2020-10-21 17:21:13 132

原创 JAVA------多线程之线程池

概述是什么?看名字线程池是在一个池(容器)里面事先创建若干个线程,需要的时候直接从池子里拿而不是自己创建,从而减少线程对象创建和销毁的时间开销。为什么? 今假设创建一线程执行某任务,执行时间如下:创建线程T1+执行任务T2+销毁线程T3,当T1+T3>T2时,那么当此种任务数量很多时,那么大多数的时间都是在创建和销毁线程,性能利用率低下。此时使用线程池能极大地提高吞吐量,提高效率。这种情况可以类比仓库工具管理,假设仓库有10把扳手,当有工人需要扳手的时候直接向仓库申请,用...

2020-10-19 18:01:04 163 1

原创 JAVA------JUC源码探究之LockSupport

概述是什么? 查看官网文档可以得知,LockSupport是用于创建锁或其他同步器基本的线程阻塞原语。换句话说,它是AQS等其他锁或同步器实现线程阻塞和唤醒的底层基础。方法概述LockSupport中提供了几个基本方法如下:park():除非有许可,当前线程阻塞,禁止被调度;当发生以下三种情况时,将立即释放:其他线程以此线程为参数调用unpark(Thread)方法; 其他线程将此线程打断; 发生了不可预料的事情park(Object):阻塞当前线程,释放条件与pa...

2020-10-15 17:48:07 213

原创 JAVA------JUC源码探究之AbstractQueuedSynchronizer(AQS)

概念 首先,AQS是什么? 在官网的解释中,AQS是一个基于 先进先出(FIFO)队列,可以构建其他同步装置(semaphores,events)的基...

2020-10-13 14:32:09 117

原创 JAVA------JUC源码探究之Lock

概述在java多线程同步过程中,除了使用synchronized关键字外,还在java.util.concurrent.lock包中提供了一些手动加锁的类。类关系如下:常用的锁----ReentrantLock是什么? ReentrantLock类是java提供的给 同步代码块 加锁,保证线程同步的类。主要依赖的原理为volatile+CAS。 有哪些种类? ReentrantLock为我们提供了公平锁和非公平锁两种,默认为非公平锁,若要使用...

2020-09-28 15:54:22 205

原创 JAVA------JUC源码探究之Atomic-xxx

在多线程进行同步时,通常是使用synchronized关键字,或者lock等其他方式,来保证操作而原子性。然而,在java.util.concurrent.atomic包中,提供了一些已经能够实现原子性操作的类。功能AtomicXxx与普通的变量相比,最大的不同在于多线程对原子量的读写能够在不加锁的情况下保证线程安全。例如,对于普通的int i++,在多线程对它进行读写时,是线程不安全的。而原子量atomicInteger.incrementAndGet()能够在多线程同时调用时,保证其线程安全。

2020-09-27 17:14:36 146

原创 JAVA------探索CAS

概念什么是CAS,它的全称为compare and swap,比较并且交换。他会进行如下一波操作:假设,当前内存中有原始数据A,当前数据V,更新后的数据S,比较原始数据A和当前数据V是否相等;(比较) 若相等,则将S写入V的内存地址;(交换) 返回操作是否成功;那么它会产生什么效果?在多个线程同时操作一个共享数据时,它能保证每次只有一个线程对数据进行操作,但是其他线程不会阻塞。因为每个线程在更新数据前都要进行一次比较,若数据已被其他线程修改,则操作失败。原理在java中,C

2020-09-27 16:15:17 71

原创 JAVA------多线程之探究生产者与消费者

问题描述生产者和消费者在同一时间段内共用同一个存储空间,生产者向空间里存放数据,而消费者取用数据。问题分析生产者:负责生产数据,若此时容器已满,则停止生产(进入阻塞状态,释放锁);若容器未满,则 生产数据,并唤醒所有线程,可能是消费者,也可能是生产者。消费者:负责消费数据,若此时容器已空,则排队等候(进入阻塞状态,释放锁);若容器为空,则消费数据,并唤醒所有线程,可能是消费者,也可能是生产者。代码实现package thread.question;import java.ut

2020-09-24 16:00:41 47

原创 JAVA------多线程之探究同步

问题提出 今假设今天晚上北京到上海的高铁只剩下1张二等座,购票流程为查询余票,付钱,出票三个步骤。此时张三和李四分别在不同的窗口购票,若此时没有同步机制,则可能出现张三在出票前,李四查询任然有一张余票,可付款,出票,则此时会出现一张票同时卖给两个人。这种情况当然是不允许的,不然春运回家时会发现你的座位上坐着一个抠脚大汉。。。。解决方法 解决方法很简单,只要保证张三访问火车票在退出(出票)前,其他人(李四)不能够访问操作这张票就可以。线程同步 由上述例子...

2020-09-24 15:09:22 218

空空如也

空空如也

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

TA关注的人

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