自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 异步线程池在开发中的使用

代码】异步线程池在开发中的使用。

2022-07-19 16:18:59 175 1

原创 B站普通人和高手系列面试题

1.Spring 中Bean的作用域有哪些2.Dubbo是如何动态感知服务下线的?3.那你说说Mybatis里面的缓存机制吧?一级缓存sqlseesion二级缓存cachingExecutor 装饰模式mapper的namespace4.Spring中事务的传播行为有哪些?一共有7种5.为什么要使用Spring 框架?6.请简述一下伪共享的概念以及如何避免?原因缓存行,解决对其填充,使用@contented注解7.谈谈你对线程安全的理解?多线程情况下不管怎么执行结果都

2022-05-05 19:56:42 688

原创 一个网络请求的生命周期(三)——Nginx

上一小结总结了从浏览器利用http协议发送了请求,讲道理下一步应该是lvs和f5这些硬件层面的转发,因为是属于传输层第四层的他不需要tcp的3次握手和4次挥手所以就并发性能可以很高,lvs主要是对网络层的和链路层的改造,生成一个虚拟vip,虚拟vip的作用是对外可见对内隐藏。lvs因为不需要3次握手和4次挥手根据操作系统的不同和机器性能的不同64位操作系统ipvs大约占据16MB为2的20次方最大可支持104万的并发,所以几十万是没有问题的。pow(2,20),即 1048576 ...

2022-04-28 14:50:50 402

原创 一个网络请求的生命周期(二)

上回说都本地在浏览器输入了www.baidu.com,是通过https访问的网站,说到https就不得不先受说最常用的http协议。http协议是基于tcp/ip协议的在应用层

2022-03-27 23:26:43 658

原创 一个网络请求的生命周期(一)

总感觉学了好多知识,有很多知识还是反复反复的学习,当面试被问到的时候却总是回答不出来,这是因为对自己的知识体系没有一个系统的认知,死记硬背很容易一下子就忘了。很想做到一次就记住了,所以要体系的梳理一下,曾经有想利用右脑来记忆画成漫画编程故事来记忆,但是惭愧的很,小弟既不会画漫画也不会写故事,只能先用文字的方法按图索骥的一点点的延申扩展出去。--------------------------------------------以上废话结束当我们通过浏览器发出请求访问一个网站的时候到底经历

2022-03-21 20:39:20 1348

原创 20222,面经,Java面试经验

公司:杭州衡泰时间:2022.1.4面试流程:自我介绍这些略面试中提问问到的问题:1,spring 事务,2.事务嵌套的问题,是否会失效3.

2022-01-04 20:45:22 824

原创 利用反射和多线程

package com.hikvision.mes.report.service.service.impl;import cn.evun.ime.platform.core.utils.PaginationHelp;import cn.evun.ime.platform.core.utils.StringUtils;import cn.evun.sweet.framework.core.mvc.model.QueryResult;import com.alibaba.fastjson.JSONA.

2021-12-24 18:51:04 438

原创 zookeeper分布式锁

package com.hikvision.mes.service.system.service.util;import org.apache.zookeeper.*;import org.apache.zookeeper.data.Stat;import java.util.Collections;import java.util.List;import java.util.concurrent.CountDownLatch;public class WatchCallBack im.

2021-11-04 21:00:56 708

原创 关于@Value注解 不能给static静态变量注入值的方法

正常使用方法package cn.evun.ime.platform.schedule.configuration;/** * @author ruanrj * @description * @create 2017-02-24. */import cn.evun.ime.platform.schedule.servlet.TimedJobServletContextListener;import org.springframework.beans.factory.annotation

2021-11-01 15:59:35 429

原创 随机数和复利的概率

package com.example.demo.test;import java.text.SimpleDateFormat;import java.time.LocalDateTime;import java.time.ZoneOffset;import java.time.format.DateTimeFormatter;import java.util.Calendar;import java.util.Date;public class GetTime { publ.

2021-09-18 17:06:39 82

原创 网络协议原理

应用层端点和端点之间通过ip端口传输的请求其实封装的是io的soket套接字,一台电脑的接口默认最大是65535,一般应用的端口都是里面的随机,很多网站的默认端口都是80传输控制层——有很多种协议,这些协议的作用就是提供网络中各个端口的信息流的传递和交互,http协议就是其中一种被互联网广泛应用的,它有固定的请求头和返回体网络层——就是这台机器怎么把二进制流信号从这台电脑穿给远在天边的另外一台电脑或者服务器的,它就是通过下一条的机制,可以找到自己的,ip地址,然后和子网掩码,然后通过网关去找到链路.

2021-07-06 22:37:44 235 1

原创 一些常用的sql或者XML语句

1.批量插入的方法 <!-- 保存订单完成率指标数据 --> <insert id="insertSmtOrThtOrderCompletionRateList" parameterType="beat.model.OrderCompletionRateDto"> insert into rt_order_completion_rate_dz( base_code, factory_code, floor_code, w

2021-05-26 16:10:29 353

原创 JDK 1.8新特性,Lamda表达式,steam流的一些用法例子

1.返回集合的某个字段集List<MaThtZjConfigEntity> data = new ArrayList<>()List<String> position = null;if (!CollectionUtils.isEmpty(data)) { position = data.stream().map(MaThtZjConfigEntity::getZjType).distinct().collect(Collectors.toList())

2021-05-19 14:31:57 563

原创 通过反射的方式给调用set和get方法,用于动态的返回值

package com.hikvision.mes.report.util;import java.lang.reflect.Method;import java.math.BigDecimal;public class ReflectionNameUtil { /** * Created by xuchenghua * Date 2021/01/22 * Description:根据属性名反射获取get和set方法 */ .

2021-01-25 19:13:40 198

原创 开发中常常会遇到的一些前端Demao

<script> window.onload = function(){ var opts = document.getElementById("select"); var value = 2//这个值就是你获取的值; if(value!=""){ for(var i=0;i<opts.options.length;i++){ if(value==opts.options[i].

2020-11-23 23:11:38 143

原创 自定義代碼生成器

public class GenerationVlEntity { //老值 private String originalValue; //新值 private String newValue; public String getNewValue() { return newValue; } public void setNewValue(String newValue) { this.newValue ...

2020-11-23 11:13:27 164

原创 告别996之函数编程,JDK1.8新特性

package com.example.demo.jdk18;public class Sku { //id private Integer skuId; //名称 private String skuName; //单价 private Double skuPrice; //购买个数 private Integer totalNum; //总价 private Double totalPrice; //商品类型.

2020-11-18 01:32:29 132

原创 (杭银)视频管理服务平台业务梳理

项目说明:视频服务管理平台又称在线培训平台是满足员工当前碎片化,移动化学习方式的移动端视频播放平台。该平台可解决当前我行大量优秀课程无播放载体,分支机构无法开展便捷化,轻量化培训,也解决了优秀课程、经验无法快速播放学习的问题。白话文就是一句话:给移动客户端提供视频学习,管理视频载体的服务平台。这个项目的技术架构用的是:Springboot + SSO+Minio+Velocity+Mybits-Plus+Mysql+RedisSpringboot作为一个快速开发框架的脚手架;SSO作为内网单点.

2020-10-23 16:47:44 210

原创 微服务架构一节公开课

2020-09-09 22:02:55 119

原创 框架源码解析,第一篇Spring5.0源码解析(一)

1.spring bean id 不允许重复重复启动会报错

2020-09-08 11:37:15 144

原创 查漏补缺篇

感觉自己现在最缺的或者最想学的一些点。微服务各个组件的实现和源码,mysql优化的详细思路,spring 怎么添加自己的jar包组件,spring boot的具体执行流程和常用方法,tomcat的相关优化,spring cloud alibab 组件源码解读,消息中间件的运用,分布式事务和分布式锁,幂等性,实际项目相关的安全问题和实际业务流程,比如说秒杀和支付,还要日志,dockers,和ks8,镜像真的要学的东西真的还是太多了。加油!!!先从Spring 源码解析开始吧。...

2020-09-07 18:24:48 132

原创 并发编程第14篇,并发队列框架实战操作

并发队列框架实战操作用户态与内核态之间的区别内核态(Kernel Mode):运行操作系统程序,操作硬件Cpu的调度分配、内存、IO操作。用户态(User Mode):运行用户程序Synchronized升级重量锁优化过程Synchronized 锁 默认是为轻量锁,慢慢升级为重量级锁,当如果线程没有获取锁的时候会被阻塞等待,同时释放cpu执行权,而我们阻塞或者唤醒线程的过程是有系统内核实现的,所以如果Synchronized 升级为重量锁的时候是一个用户...

2020-09-07 15:04:43 181

原创 并发编程第13篇,Threadlocal源码解读

Threadlocal源码解读什么是ThreadlocalThreadLocal提供了线程本地变量,它可以保证访问到的变量属于当前线程,每个线程都保存有一个变量副本,每个线程的变量都不同。ThreadLocal相当于提供了一种线程隔离,将变量与线程相绑定。Threadloca适用于在多线程的情况下,可以实现传递数据,实现线程隔离。Threadlocal基本API 1.New Threadlocal();---创建Threadlocal 2.set 设置当前线程绑定的局部变量...

2020-09-03 17:08:52 121

原创 并发编程第12篇,FutureTask原理

FutureTask原理使用FutureTask可以返回当前线程的结果。可以让线程阻塞或者是唤醒LockSupport与Wait/notifyFutureTask简单用法 public class Test001 implements Callable<String> { public static void main(String[] args) throws ExecutionException, InterruptedException {...

2020-09-03 16:09:25 170

原创 并发编程第11篇,线程池的一些常用用法和使用

线程池源码解读什么是线程池线程池和数据库连接池非常类似,可以统一管理和维护线程,减少没有必要的开销。为什么要使用线程池因为频繁的开启线程或者停止,线程需要从新被cpu从就绪到运行状态调度,效率非常低。所以使用线程可以实现复用,从而提高效率。线程池的作用1.降低资源消耗:通过池化技术重复利用已创建的线程,降低线程创建和销毁造成的损耗。2.提高响应速度:任务到达时,无需等待线程创建即可立即执行。3.提高线程的可管理性:线程是稀缺资源,如果无限制创建,不仅会消...

2020-09-03 15:38:10 158

原创 并发编程第8篇,AQS源码解读

public class AqsLock { public static void main(String[] args) { Lock lock = new ReentrantLock(true); Thread t1 = new Thread("t1"){ @Override public void run() { lock.lock(); Syst.

2020-09-02 17:32:09 119

原创 并发编程第10篇,CountDownLatch(计数器)和Semaphore(信号量)

Semaphore信号量底层原理Semaphore用于限制可以访问某些资源(物理或逻辑的)的线程数目,他维护了一个许可证集合,有多少资源需要限制就维护多少许可证集合,假如这里有N个资源,那就对应于N个许可证,同一时刻也只能有N个线程访问。一个线程获取许可证就调用acquire方法,用完了释放资源就调用release方法。可以简单理解为Semaphore信号量可以实现对接口限流,底层是基于aqs实现Semaphore简单用法 Semaphore semaphore = new Sema

2020-09-01 10:55:08 343 1

原创 并发编程第9篇,Condition

Condition private static Lock lock = new ReentrantLock(); private static Condition condition = lock.newCondition(); public static void main(String[] args) throws InterruptedException { Thread thread = new Thread(() -> { lock.lo...

2020-08-31 17:02:20 97

原创 并发编程第7篇,AQS一些简单的概念

AQS基本的概念aqs全称为AbstractQueuedSynchronizer 是一个抽象同步队列,它提供了一个FIFO队列,可以看成是一个用来实现同步锁以及其他涉及到同步功能的核心组件,常见的有:ReentrantLock、CountDownLatch等。AQS是一个抽象类,主要是通过继承的方式来使用,它本身没有实现任何的同步接口,仅仅是定义了同步状态的获取以及释放的方法来提供自定义的同步组件。AQS底层的实现 结合CAS compareAndSwapInt实现AQS源码解读N.

2020-08-31 16:19:02 155

原创 并发编程第六篇,lock锁接口和其实现

并发包基本介绍简单解释一下J.U.C,是JDK中提供的并发工具包,。里面提供了很多并发编程中很常用的实用工具类,比如atomic原子操作、比如lock同步锁、fork/join、CountDownLatch(信号量)、Semaphore (计数器)等。Lock锁基本的实现void lock() ---获取锁 如果没有获取到锁则阻塞等待。void lockInterruptibly --- 和lock一样 但是可以阻塞线程 可以中断tryLock()---非阻塞式获取锁,如果获取...

2020-08-31 15:34:17 202

原创 并发编程第5篇,Synchronized的原理

Synchronized基本特性1.在普通方法上加上Synchronized锁,则使用this锁2.在静态同步方法上,则使用当前类的class字节码3.可以自定义Synchronized锁的对象相关测试代码 public class Test005 extends Thread { private Object lockObject = new Object(); @Override public void run() { ...

2020-08-31 10:47:15 161

原创 并发编程第4篇,锁的分类

锁的分类悲观锁悲观锁比较悲观,当多个线程对同一行数据实现修改的时候,最后只有一个线程才能修改成功,只要谁能够对获取该到行锁则其他线程时不能够对该数据做任何修改操作,且是阻塞状态。 比如for update 或者事务开启了事务但是没有提交事务。select * from information_schema.innodb_trx tselect t.trx_mysql_thread_id from information_schema.innodb_trx tkill 768; --清..

2020-08-28 14:49:48 159 1

原创 并发编程第3篇,volatile原理分析

volatile原理分析什么是 Volatile能够保证线程可见性,当一个线程修改共享变量时,能够保证对另外一个线程可见性,但是注意他不能够保证共享变量的原子性问题。Volatile的特性可见性能够保证线程可见性,当一个线程修改共享变量时,能够保证对另外一个线程可见性,但是注意他不能够保证共享变量的原子性问题。顺序性程序执行程序按照代码的先后顺序执行。原子性即一个操作或者多个操作 要么全部执行并且执行的过程,要么失败。Volatile可见性 publ

2020-08-27 18:24:39 251

原创 并发编程第二篇,线程之间的通讯

并发和并行的区别所有的并发处理都有排队等候,唤醒,执行至少三个这样的步骤.所以并发肯定是宏观概念,在微观上他们都是序列被处理的,只不过资源不会在某一个上被阻塞(一般是通过时间片轮转),所以在宏观上看多个几乎同时到达的请求同时在被处理。如果是同一时刻到达的请求也会根据优先级的不同,而先后进入队列排队等候执行。 并发并行是两个既相似而又不相同的概念:并发性,又称共行性,是指能处理多个同时性活动的能力;并行是指同时发生的两个并发事件,具有并发的含义,而并发则不一定并行,也亦是说并发事件之间不一定...

2020-08-27 11:49:40 132

原创 并发专题第一篇,多线程快速入门和简单介绍

本篇文章主要内容1.什么是进程、线程2.多线程有那些好处3.多线程的应用场景有那些4.如何理解多线程上下文切换5.使用多线程存在那些缺陷6.多线程四种创建的方式7.如何创建带返回结果的线程8.多线程综合案例,异步实现发送短信、异步实现记录请求日志9.多线程五种状态有那些10.如何优雅的停止一个线程——————————————————————————————————————————————什么是进程进程就是系统中正在运行的一个程序,程序一旦运行就是一个进程,在一个进程中可..

2020-08-27 10:27:47 138

原创 设计模式的六大原则

开闭原则(Open Close Principle)开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。里氏代换原则(Liskov Substitution Principle)里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。 里氏代换原则.

2020-08-25 15:08:04 101

原创 设计模式第13篇,工厂模式

工厂模式什么是工厂模式实现了创建者和调用者分离,工厂模式分为简单工厂、工厂方法、抽象工厂模式工厂模式好处工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。利用工厂模式可以降低程序的耦合性,为后期的维护修改提供了很大的便利。将选择实现类、创建对象统一管理和控制。从而将调用者跟我们的实现类解耦。工厂与容器概念工厂模式分类简单工厂模式简单工厂模式相当于是一个工厂中有各种产品,创建在一个类中,客户无需知道具体产品的名称,只需要知道产品...

2020-08-25 10:08:47 98

原创 设计模式第12篇适配器模式

适配模式什么是适配器在设计模式中,适配器模式(英语:adapter pattern)有时候也称包装样式或者包装(wrapper)。将一个类的接口转接成用户所期待的。一个适配使得因接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。适配器分类适配器分为,类适配器、对象适配、接口适配方式类适配器方式采用继承方式,对象适配方式使用构造函数传递适配器案例我们就拿日本电饭煲的例子进行说明,日本电饭煲电源接口标准是110V电压,而中国标准电...

2020-08-24 10:14:06 86

原创 设计模式第11篇原型模式

原型模式什么是原型模式克隆原型模式是一个创建型的模式。原型二字表明了改模式应该有一个样板实例,用户从这个样板对象中复制一个内部属性一致的对象,这个过程也就是我们称的“克隆”。被复制的实例就是我们所称的“原型”,这个原型是可定制的。原型模式多用于创建复杂的或者构造耗时的实例,因为这种情况下,复制一个已经存在的实例可使程序运行更高效。原型模式应用场景类初始化需要消化非常多的资源,这个资源包括数据、硬件资源等,通过原型拷贝避免这些消耗。(2)通过new产生的一个对象需要非常繁琐的...

2020-08-24 09:23:37 100

原创 设计模式第10篇建造者模式

建造者模式什么是建造者模式建造者模式:是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。工厂类模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中起来进行管理,用来创建复合对象,所谓复合对象就是指某个类具有不同的属性,其实建造者模式就是前面抽象工厂模式和最后的Test结合起来得到的。建造者模式通常包括下面几个角色:1、Builder:给出一个抽象接口,以规范产品对象的各个组成成分的建造。这个接口规定要实现复杂对象的哪些部分的创建,并不涉..

2020-08-23 15:47:08 104

空空如也

空空如也

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

TA关注的人

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