
java开发小知识笔录
文章平均质量分 75
Survivor001
这个作者很懒,什么都没留下…
展开
-
JAVA1.8 Stream流
JAVA1.8 Stream流原创 2022-02-11 10:34:32 · 4880 阅读 · 0 评论 -
JAVA JVM底层解析
花了一段时间,把java的知识点总结整理了一下,这篇总结对于初学者,我个人觉得会有很大的收益,因为从概括到细节,都图形化表现出来了,学习起来应该会很轻松。后面也会花时间一个个知识点单独写在博客。(劳动成果,下载可得)...原创 2021-08-18 17:56:47 · 143 阅读 · 0 评论 -
Spring IOC源码深入-- 介绍
官方文档:https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#beans-annotation-configIoC 也称为依赖注入 (DI)。这是一个过程,其中对象仅通过构造函数参数、工厂方法的参数或在对象实例被构造或从工厂方法返回后在对象实例上设置的属性来定义它们的依赖项(即,它们使用的其他对象) .然后容器在创建 bean 时注入这些依赖项。这个过程基本上是 bean 本身的逆过程(因此得名,控.原创 2021-08-10 11:33:29 · 121 阅读 · 0 评论 -
网络编程--TCP
网络编程TCP协议软件结构网络通信协议4次挥手(断开连接时)三要素模型图(重点核心)原创 2021-05-30 21:37:23 · 107 阅读 · 0 评论 -
多线程透析--jvm创建对象过程|volatile作用和原理|线程三大特性
多线程透析–volatile作用和原理想必大家都听说过volatile这个修饰词,可能在你对他的理解仅停留在保证数据准确性的层面。今天详细说下volatile的一个功能和原理。说道volatile 千万不要和synchronize作用混淆了,都知道synchronize锁,主要是为了保证程序的执行的原子性,保证线程安全。多线程三大特性:原子性、有序性、可见性。而volatile 就可以保障有序性和可见性,但是记住,它是不能保证原子性的。那么就先说说什么是原子性,什么是有序性,什么是可见性?1.原创 2021-05-17 22:20:55 · 217 阅读 · 2 评论 -
多线程透析--synchronize底层实现原理
多线程透析–synchronize底层实现原理之前就说过了遇到线程同步问题我们都常想到synchronize关键字,它确实能很好的解决线程同步问题,但是它会引起一些其他问题,比如最突出的一点就是程序效率问题。之前说过在JDK1.1~1.2 synchronize关键字就是实现了重量级锁,所以在一些小场合反而拉夸了效率。什么是重量级锁的概念,之前也提到了多线程透析–进程和线程底层分析,重量级锁是需要OS操作系统调度,想当于在内存和CPU之前加了一个中间者。不过后面随着JDK1.6对synchroniz转载 2021-04-22 22:16:04 · 264 阅读 · 0 评论 -
多线程透析--JUC的锁机制、锁原理CAS、AQS
多线程透析–JUC的锁机制、锁原理其实之前博客中就已经提到了JUC,今天详细的透析下JUC的锁机制和锁原理。在JDK1.1~1.2 的时候 只有synchronize锁,此时的锁只是一个重量级锁,所谓的重量级锁我个人理解就是线程在使用资源时需要通过OS线程队列进行调度,只有在获取锁(没有其他线程占用锁)的情况下才能进行。这类锁一般具有排他性,所以也叫悲观锁。而早期的synchronize不管你是否是多线程竞争关系,都会同样的采取重量级锁这一套。这样再简单的线程操作中,就很影响效率。在JDK 1.5原创 2021-04-21 23:20:28 · 625 阅读 · 0 评论 -
多线程透析-CAS
多线程透析-CAS研究过多线程锁的想必都是知道CAS。什么是CAS?CAS (Compare And Swap):比较并交换。是一种轻量级锁的实现方式,也被称为乐观锁。锁的原理就是不会真实的去添加锁,而是通过频繁的去探测访问资源进行比较,直达资源可用进行交换操作。老规矩还是举例说明:现在有多个线程a,b,c要对公共资源count进行++操作。按照之前学习的内容在处理这个程序的时候我们会想到synchronize 和 juc 进行操作,以保障多线程的三大特性(原子性、有序性、可见性–后续详细透析)原创 2021-04-20 22:55:48 · 177 阅读 · 2 评论 -
多线程透析-锁基本概念
多线程透析-锁基本概念知道多线程的基本上都知道锁这个东西,现在就来详细说下锁的概念。先不说直接说锁的概念,老样式还是举例分析下:举个例子:小明需要上厕所,如果厕所没有人,小明就直接去蹲坑了,这里就类似与小明是一个线程A,厕所是共享资源count。现在第二个人小华来了 也要上厕所,但是小明并没有结束怎么办呢?方式一:小华就等呗,来回打转,不停的去看看小明结束没,一旦结束了我立马进去。方式二:小明防止别人硬上,就在厕所上上一把锁,小华看见被锁住了,只能在一边坐着等着,等锁开了,再进去。上面两种情况原创 2021-04-20 01:27:47 · 525 阅读 · 1 评论 -
多线程透析--进程和线程底层分析,在系统中线程执行过程
多线程透析–进程和线程底层分析1.什么是进程?程序启动后分配到内存,资源分配的基本单位,比如qq.exe。2.什么是线程?程序执行的基本单位。怎么了解以上两个含义的解释呢?我们从CPU底层来理解下:一个程序被启动后,会进入到内中变成:指令+数据。就是说一个进程执行后,会被分配到内存中,变成一个或者多个指令和数据,而这样的指令+数据就是一个个线程。3.程序如何开始运行的?记住操作系统执行程序都是由CPU来操作的,而CPU只会执行处理线程。那先了解下的CPU中几个核心的部件:Regis原创 2021-04-19 23:58:46 · 367 阅读 · 0 评论 -
基于JUC线程池的使用ExecutorService
基于JUC线程池的使用ExecutorService往往采用多线程目的都是为了提高程序效率,提高系统使用性。但是频繁的创建和销毁线程本身就是一个有损效率的事。所以java的JUC就提供了线程池的使用。线程池 :提前创建好多个线程放入线程池中,使用时直接获取,使用完成放回线程池。可以避免频繁创建和销毁线程,实现重复利用。好处:提高了响应效率(减少了创建线程时间)降低资源消耗(重复利用线程池里面线程,不再是创建)便于管理。corePoolSize : 核心池大小maximumPoolSize原创 2021-03-28 21:16:07 · 176 阅读 · 0 评论 -
java线程通讯-生产者消费者模型(信号灯法)
java线程通讯-生产者消费者模型(信号灯法)上面博客采用缓存区方式实现了生产者与消费者https://blog.youkuaiyun.com/qq_31142237/article/details/115285293这篇介绍下生产者消费者模型的信号灯法,根据不停场景使用不同方式。信号灯法:利用标识控制线程等待和唤醒,类似于信号灯,红灯性绿灯停。举例:站在司机的角度:红灯停,人走。 绿灯走,人停。对象分析: 车 、 人 、 信号灯车: 就是来车行走。人:就是来人行走。信号灯: 绿灯时车走行走,变灯原创 2021-03-28 20:38:51 · 162 阅读 · 0 评论 -
java线程通讯-生产者消费者模型(管道法)
多线程-线程通讯-生产者消费者模型多线程的使用往往不单单是单个线程的实现,而是多个线程的相互协作实现逻辑业务。什么是线程通讯?多个线程协作完成共享资源的使用,实现线程安全,线程不死锁。线程通讯实现方式:等待(wait()) | 通知 notify() .notifyall()wait()、notify()、notifyall() 方法都是Object类下的方法。wait() : 让当前线程进入等到状态,并且释放锁资源。notify() : 唤醒一个等待线程,且随机线程。notifyall()原创 2021-03-28 19:54:34 · 392 阅读 · 0 评论 -
Java静态代理和动态代理
Java静态代理和动态代理什么是代理?代理是一种设计模式。通过代理对象间接的反问被代理对象。(是的就是这么简单)怎么理解呢?举个例子:小明*(被代理对象)*去详情了,想约女孩出来看电影(代理事务),但是不想自己去找女孩,这时候找到媒婆(代理对象)去传话,达到约会的目的。我们通过上图想一想,代理的好处和作用。为什么小明不自己去找小美说呢? ---->加入小明是个丑八怪,那直接去找小美,那不是凉凉。找媒婆的话就能直接把话带到且让自己相貌啥的不直接被小美知道。同理:通过代理对象实原创 2021-03-23 23:26:30 · 110 阅读 · 0 评论 -
多线程--线程同步锁Lock锁
多线程–线程同步锁–Lock锁-ReentrantLock之前说了线程同步机制Synchronize锁,其实除此之外还有一种JUC的Lock锁也能实现线程同步。而且Lock实现类ReentrantLock相比Synchronize有更大的灵活性,更加丰富,更是适合大多场景的使用。先来简单的对比下ReentrantLock和Synchronize吧。Synchronsize锁是独占锁,加锁和释放锁都是自动的,只要加上关键字synchronize或者代码块就行。使用起来很简单,但是呢灵活性较差。Ree原创 2021-03-11 00:05:40 · 1528 阅读 · 8 评论 -
Spingboot Resttemplate连接池配置
Spingboot Resttemplate连接池配置package com.jshhxx.framework.config;import org.apache.http.client.HttpClient;import org.apache.http.client.config.RequestConfig;import org.apache.http.config.Registry;import org.apache.http.config.RegistryBuilder;import or原创 2020-09-27 15:00:07 · 1339 阅读 · 0 评论 -
在线安装docker,docker拉取jdk与mysql镜像
在线安装docker,docker拉取jdk与mysql镜像离线情况下安装docker,jdk,mysql已经在终极离线安装docker。。。说过了,现在记录下在线安装docker以及拉取镜像,相对于离线还是简单很多。一、环境准备Centos7,就完事了(前提已经连接上网络)二、在线安装docker我之前的微博也说过了Centos7安装docker。三、docker拉取jdk和mysq...原创 2019-09-12 17:06:09 · 8373 阅读 · 3 评论 -
java 构造函数重载输出结果对比
java 构造函数重载输出结果对比package gouzaohanshureturn;public class ConstrTest { private String name=""; private String password=""; private String age=""; private ConstrTest(){} private ...原创 2018-08-31 10:34:35 · 466 阅读 · 0 评论 -
Springboot 日志管理配置logback-spring.xml
作为企业级的或者稍大型的开发项目,日志是必不可少的模块,在这里介绍了基础springboot的日志配置.首先创建一个管理日志的配置文件,然在resources包下面: 配置文件名规定的起logback-spring.xml获取logback.xml都是可以的. 我这里日志用到的slfj4作为标准,logbac作为日志系统 .那就直接上代码吧!<?xml versio...原创 2018-08-30 11:07:42 · 5227 阅读 · 0 评论 -
maven、maven项目部署
maven、maven项目部署***理解maven项目以及其部署,这篇内容比较对,也比较杂,但是都是个人理解之后,总结出来的,希望对向我们新手们有所帮助。1.maven的理解2.maven项目部署,内置tomcat插件部署(war包)1.maven的理解?对于maven很多网站上都有诠释,我就不粘在这里了,我们只要理解它是用于管理项目的就行。我们需要知道的就是,第一点:maven项目...原创 2019-04-15 18:15:15 · 1205 阅读 · 0 评论 -
springboot项目简单介绍、启动和部署
springboot项目介绍,启动和部署springboot介绍大家知道springboot是基于spring研发出来的,但是要知道springboot其实并不是对spring功能的增强,而是提供了一种快速使用spring的方式或者说是工具。springboot集合了大量的第三方库,Spring Boot应用中这些第三方库几乎可以是零配置的开箱即用,大部分的 Spring Boot 应用都只...原创 2019-04-16 09:44:10 · 39867 阅读 · 1 评论 -
为什么需要配置环境变量
为什么需要配置环境变量做开发的都知道在一个新的环境下都需要先安装个jdk,maven。。。,然后做环境变量配置,网上一搜配置方法到处都是,但是都没有介绍为什么需要配置环境变量。其实就是一个用处, 我们不管安装什么软件,要项启动这个软件都必须在安装目录下去执行启动软件(快捷键除外), 配置环境变量的用途就是,通过系统变量配置,让系统不管在什么目录下都能去执行改程序。想一下 要是不能再任意目录下都...原创 2019-04-15 10:09:45 · 959 阅读 · 0 评论 -
分布式系统
分布式系统开发分布式系统开发集中式系统想要理解分布式系统开发的含义,就要知道另一个开发模式,就是传统的一体化开发或者说集中式系统开发。很久以前就开始做项目的都知道,以前的系统开发都是集中式的,**所谓的集中式简单来说就是系统应用的内容就是一个整体的项目,一个项目就是所有的应用。**比如做一个网上商城的项目,可能我们需要划分很多模块比如商品信息、订单信息、用户信息等等。在集中式系统开发中这些...原创 2019-05-03 19:03:34 · 729 阅读 · 0 评论 -
分布式系统中CAP原理
分布式系统CAP原理分布式系统发开虽然有点很多但是并不是完美的,CAP原理就是其中的体现之一。CAP原理:指的是在一个分布式系统中,Consistency(一致性)、Availability(可用性)、Partitontolerance(分区容忍性),三者不可得兼。一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。简单说就是所有节点在同一时刻的数据完全一致,这就意味着节点越...原创 2019-05-03 20:12:43 · 1643 阅读 · 0 评论 -
微服务、微服务核心基础以及常见的微服务框架
微服务、微服务核心基础以及常见的微服务框架背景微服务越来越多地用于开发领域,因为开发人员致力于创建更大,更复杂的应用程序,这些应用程序作为小型服务的组合得到更好的开发和管理,这些服务可以协同工作,实现更大的应用程序范围的功能。工具正在上升,以满足使用逐件方法思考和构建应用程序的需要,坦率地说,这比一次性考虑整个应用程序更不令人难以置信。(DZone,Java微服务 )什么是微服务?微服务...原创 2019-05-03 21:42:01 · 1135 阅读 · 0 评论 -
maven项目打包jar给其他项目pom引用和外部引用
maven项目打包jar给其他项目pom引用和外部引用在现实开发过程中,很多代码需要被重复利用的,但是代码量又是很多,这样的代码可以提出出来作为公共代码或者叫做工具使用,通常这样的工具会以jar包的形式被其他项目pom引入或者外部引入使用。第一步 创建maven项目,完成工具类打包jar我这里用的工具idea,其他方式创建maven项目也一样。这里我们选择maven-archety...原创 2019-04-25 09:56:56 · 19359 阅读 · 5 评论 -
Centos7上安装docker
Centos7上安装dockerDocker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE。社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经过官方测试认证过的基础设施、容器、插件等。社区版按照stable和edge两种方式发布,每个季度更新stable版本,如17.06,17.09;每个月份更新edge版本,如17.09,17.10。...转载 2019-05-09 09:26:37 · 298 阅读 · 0 评论 -
Docker搭建MySQL服务
Docker搭建MySQL服务Docker开源镜像前面我们已经安装好了Docker,也简单了解了Docker。那么我们可以尝试搭建一个MySQL服务。要搭建服务就要启动服务容器,要创建容易就要有镜像,Docker提供了一个类似Github的开源平台,提供开源镜像,放心可靠。(毕竟大家都看着源码呢)Docker开源镜像传送门大概步骤下载MySQL镜像创建运行容器好像很简单是吧?...转载 2019-05-09 09:33:38 · 174 阅读 · 0 评论 -
注册中心的选择和Eurake服务搭建
注册中心的选择和Eurake服务搭建在上一篇介绍了微服务的基础架构(微服务基础架构),里面也了解到注册中心有Zookeeper和Eurake,那我们在开发的时候选择哪一种作为服务注册中心呢?客观的来说使用哪种作为注册中心都是可行的,但是还是得根据项目的具体需求来选择。通过CAP定理选择注册中心。1.Zookeeper : cp设计,它保证了一致性和分区容错性,集群搭建的时候,某个节点失效,...原创 2019-05-21 16:41:13 · 602 阅读 · 0 评论 -
springcloud LoadBalancerClient 负载策略原理
springcloud LoadBalancerClient 负载策略原理springcloud 提供了跟多组件以及大量与服务治理相关的抽象接口,LoadBalancerClient为springcloud提供的负载均衡器客户端。LoadBalancerClient先从提供的服务中获取某一个实例(默认策略为轮询),比如订单服务需要访问商品服务,商品服务有3个节点,LoadBalancerCl...原创 2019-05-23 19:53:57 · 13182 阅读 · 1 评论 -
SpringCloud LoadBalancerClient实现负载均衡以及自定义负载策略(一个或多个)
SpringCloud LoadBalancerClient实现负载均衡以及自定义负载策略(一个或多个)上篇已经介绍了LoadBalancerClient负载策略实现的原理LoadBalancerClient负载策略实现原理,以及整体负载过程实现的介绍。本章主要来具体实现怎样使用LoadBalancerClient实现负载均衡。1.准备工作 a. 商品服务 作为被消费者服务(...原创 2019-05-24 10:40:23 · 10879 阅读 · 4 评论 -
Mysql 数据库服务远程连接限制修改
Mysql 数据库服务远程连接限制修改一般安装Mysql当server服务限制了远程连接时,在别的服务器上连接该服务器的mysql会包错:is not allowed connect to this mysql…解决办法:修改连接权限:1.所有服务器都可以连接该服务器mysql服务GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFI...原创 2019-06-28 14:26:58 · 585 阅读 · 0 评论 -
java 判断字符和字符串是否为全角字符
java 判断字符和字符串是否为全角字符一般这个判断在对未知字符串进行字符转码的时候要用到. // 判断字符串是否为全角 String input = "dd"; System.out.println(input.matches("[\uFE30-\uFFA0]")); // 判断字符是否为去全角 char a ='Ⅰ'; if((i...原创 2018-08-31 08:49:48 · 3083 阅读 · 1 评论