Java
skdzyl1
小伙子要有目标,要上进那
展开
-
性能优化思维导向
强烈参考:性能优化的核心思路,干货分享_明明如月的技术博客-CSDN博客原创 2021-11-12 21:05:02 · 338 阅读 · 0 评论 -
SpringBoot与IOC
一、什么是IOC二、IOC的设计理念 1.ApplicationContext 三个常用的Context 1)FileSystemXMLApplicationContext:加载制定目录下的配置文件。 2)ClassPathXMLApplicationContext:加载类路径下的配置文件。 3)AnnotationConfigApplicationCon...原创 2020-01-05 12:21:34 · 396 阅读 · 0 评论 -
SpringBoot使用踩过得坑(持续更新)
1.包扫描SpringBoot自会扫描启动类所在包和下层包中的Bean;其他路径要扫描需要@ComponentScan("xxx.xxx.xxx")。2.SpringBoot 的redis缓存1) 在同一个类中调用另一个打了缓存注解@CacheAble的方法,第二个调用的方法是不走缓存。2) CacheInteceptor CacheAspectSupport CachePro...原创 2020-01-05 00:03:50 · 265 阅读 · 0 评论 -
线程池ThreadPool机制
引言:本节将详细讲java解线程原理和使用,主要基于java.util.concurrent.ThreadPoolExecutor类来学习和总结。一、什么是线程池,好处和缺点二、线程池的结构 1.ThredPoolExecutor类的主要属性/阻塞队列 private final BlockingQueue<Runnable> workQueue;//可...原创 2020-01-04 19:04:40 · 234 阅读 · 0 评论 -
SpringBoot与AOP
一、引言 Springboot的两大核心IOC和AOP:即控制翻转和面向切面编程,今天学习探讨AOP的作用、原理和使用。二、什么是AOP 1.在不修改源码前提下,扩展功能。从而和业务代码剥离,做到解耦。 2.AOP在Spring框架中应用广泛,包括缓存,事务,定时任务,重试等这一些业务类的注解。三、AOP的通知类型 1.Before前置通知:在方法执...原创 2020-01-03 21:49:55 · 155 阅读 · 0 评论 -
SpringBoot与Shedule定时任务
一、问题描述1. springBoot中的@Schedule注解定时任务,在某些情况下并没有生效,定时任务不再执行,进而导致业务出现问题。二、分析定位1. 首先查看百度有没有相关的问题,查询到有一篇帖子讲到定时任务是串行执行的,而并不是并发的。但是怀疑SpringBoot应该没有这么低级,猜想应该是线程池接收任务去执行,因此翻阅源代码以及做测试,来真正定位以及修改这个问题。三...原创 2020-01-03 21:49:34 · 1063 阅读 · 0 评论 -
设计模式之代理模式
《JAVA与模式》之代理模式(转载)在阎宏博士的《JAVA与模式》一书中开头是这样描述代理(Proxy)模式的: 代理模式是对象的结构模式。代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。代理模式的结构 所谓代理,就是一个人或者机构代表另一个人或者机构采取行动。在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对转载 2015-08-17 22:27:11 · 384 阅读 · 0 评论 -
Java之NIO
一、什么是NIO? New IO;提供了与标准IO不同的工作方式;二、组成部分 1.缓存区(Buffer):主要做数据容器,每一种基本数据类型(除了boolean)都对应一个Buffer的子类; 2.通道(Channel) 3.选择器(Selector) 4.其他。。。原创 2017-06-01 22:42:07 · 190 阅读 · 0 评论 -
Java中的copyOnWrite容器
一、什么是copyOnWrite容器 1)含义:写时拷贝复制。 2)在并发访问的背景下,当需要修改JAVA中Containers的元素时,不直接修改该容器,而是先复制一份副本,在副本上进行修改。修改完成之后,将指向原来容器的引用指向新的容器(副本容器)。二、优点 1)支持并发的读,而不需要加锁; 2)读写分离,读和写不同的容器。二、JDK支持 1)CopyOnWriteArraylList原创 2017-07-02 23:14:00 · 342 阅读 · 0 评论 -
Java中的锁
一、Lock锁 1.锁的用途:控制多线程并发访问共享资源的的一种方式。 2.什么叫隐式锁,什么叫显示锁 隐式锁:使用这把锁时,不需要显示的对锁进行获取和释放,就可以完成锁的功能。比如synchronized。 显示锁:正好相反,代码要显示的调用这把锁的各种控制方法,才可以完成相应的功能。比如Lock锁。二、Lock锁的基本用法lock.lock(); //一定要放在try外原创 2017-06-24 00:02:38 · 240 阅读 · 0 评论 -
Java之垃圾回收
一、垃圾回收1.什么叫垃圾回收? 1)回收目标:堆中的对象及其内存;对象或者数组的引用类型对象。 2)系统会自动在内存区为之分配一块内存,对象就保存在这块内存区内,当这块内存不再被任何变量引用时,这块内存就成为了垃圾,等待垃圾回收机制进行回收 2.回收的特征 1.垃圾回收机制只负责回收堆内存中的对象,不会回收任何物理资源(例如数据库连接、网络连接、IO流等资源)。 2.程序无法精准控制垃圾原创 2017-07-04 19:17:34 · 279 阅读 · 0 评论 -
Java中的ThreadLocal
一、什么是ThreadLocal 0.public class ThreadLocal extends Object {…}1.每一个线程都可以通过ThreadLocal对象的get或者set方法来获取或者设置该线程独有的,自己的变量副本。2.各个线程中的该对象都是独立的,其他线程访问不到。二、特点1.该ThreadLocal变量是局部的线程变量。 2.该线程变量是private私有和stati原创 2017-06-25 21:50:58 · 225 阅读 · 0 评论 -
HasMap
哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,而HashMap的实现原理也常常出现在各类的面试题中,重要性可见一斑。本文会对java集合框架中的对应实现HashMap的实现原理进行讲解,然后会对JDK7的HashMap源码进行分析。//实际存储的key-value键值对的个数 t原创 2017-06-14 21:05:50 · 470 阅读 · 0 评论 -
Java之泛型
一、什么是泛型? 1.原创 2016-11-29 23:23:04 · 238 阅读 · 0 评论 -
消息中间件
1.消息的优先级2.消息排序3.消息过滤4.消息持久化5.消息重试6.事务的支持7.broker满生产者,队列,消费者消息队列的优点:1)解耦2)异步消息,系统响应在JMs中,有两种消息模型:点对点模式和发布订阅模式。1.在点对点模式中:有三种角色1)消息队列,发送者,接受者;每个消息被发送到消息队列,等待接受者消费,直到被消费或原创 2017-07-20 19:44:23 · 202 阅读 · 0 评论 -
土土
一、终止线程池主要有两个方法:shutdown() 和 shutdownNow()。 shutdown()后线程池将变成shutdown状态,此时不接收新任务,但会处理完正在运行的和在阻塞队列中等待处理的任务。 shutdownNow()后线程池将变成stop状态,此时不接收新任务,不再处理在阻塞队列中等待的任务,还会尝试中断正在处理中的工作线程。 二、空闲工作线程如何设置消亡原创 2017-08-19 16:24:25 · 231 阅读 · 0 评论 -
HTTP安全认证
Http安全认证一、基本认证 基本身份验证它提供了一个方法来解决这个问题,虽然不是很安全。基本身份验证,客户端的每个请求发送Base64编码凭据,使用HTTP[授权]头。这意味着每个请求独立于其他请求和服务器可能/不维护客户端,这对可扩展性是非常好的。下面示出的是准备标头的样本代码。 String plainClientCredentials=”myusername:mypass原创 2017-07-24 19:21:55 · 1795 阅读 · 0 评论 -
JAVA中的原子类
一、Java中提供的基本的原子类有: AtomicBoolean,AtomicInteger,AtomicDouble二、原子类的基本特征:手段: 1)保证操作的原子性 2)保证多线程下的可见性。目标: 保证线程安全三、concurrent包常用的类: AtomicInteger、AtomicLong、AtomicReference。...原创 2017-08-06 10:28:30 · 266 阅读 · 0 评论 -
Java多线程之并发工具类之CyclicBarrier
一、什么叫CyclicBarrier?1.字面意思:可循环使用的屏障。 2.主要做的事情:让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障;屏障才会开门,所有被屏障拦截的线程才会继续进行。二、CyclicBarrier类API构造器CyclicBarrier(int parties) 创建CyclicBarrier对象,parties 表示屏障拦截的线程数量。Cyclic原创 2016-12-06 22:58:45 · 360 阅读 · 0 评论 -
Java中的拷贝问题
一、拷贝 1)数组拷贝:Arrays.copy(); —数组是新数组首地址空间,但是内部的元素对象依然是原有的实例引用。2)System.arraycopy public static native void arraycopy(Object src, int srcPos, Object dest, int原创 2017-08-10 22:02:16 · 249 阅读 · 0 评论 -
ElasticSearch
ElasticSearch 基本: 1)接近实时NRT,从搜索文档到获取文档大概延迟1秒 2)集群:cluster,有多个节点组成的一个集群,y有集群名称表示 3)节点:node,参与数据的存储,索引,搜搜功能 4)索引:index,可以定义任一多个;几个相似文档数据的集合,索引名称必须全部小写;对文档进行搜索,索引,存储和删除,更新都要用到这个索引名称 5)类型:type,定义在索引上原创 2017-09-02 12:17:07 · 431 阅读 · 0 评论 -
RPC
海量互联网业务系统只能依赖分布式架构来解决,而分布式开发的基石则是RPC;本文主要针对两个开源的RPC框架(gRPC、 Apache Thrift),以及配合GoLang、C++两个开发语言进行性能对比分析。C++、Thrift都是比较成熟的技术,先简单介绍一下GoLang以及gRPC。 GoLang Go语言是由Google开发的一个开源项目,目的之一为了提高开发人员的编程效率。 Go语言语法灵活原创 2017-09-20 13:42:05 · 464 阅读 · 0 评论 -
MYSQL:查看约束是否存在并创建
DROP PROCEDURE IF EXISTS TEST_UNIQUE;DELIMITER $$CREATE PROCEDURE TEST_UNIQUE ()BEGIN DECLARE cnt INT; SELECT COUNT(*) INTO cnt FROM INFORMATION_SCHEMA.KEY_COLUMN_USAG...原创 2019-09-24 13:31:19 · 1115 阅读 · 0 评论 -
Java之类加载器
一、java的类加载器非分为3类: 1.bootstrap classloader:主要负责java核心API类的加载。2.ExtClassLoader:主要负责Java扩展API类的加载。3.AppClassLoader:主要负责classpath下面的类的加载。二、一个java程序的加载流程 JVM启动–》运行bootstrap classloader–》加载java核心API,也包括Ext原创 2017-04-25 22:00:22 · 227 阅读 · 0 评论 -
Java学习之类成员变量的作用域
一、private,protect ,public说了多少次,说了多少遍,总是记不住呢!1.private 私有变量,只属于我自己,私有神圣不可侵犯。只有本类具有访问,引用和修改权限。对外只暴露本类的public方法来修改。那么对于private变量,怎样修改,赋值,引用呢?只有一个办法,通过本类对外暴漏的pulic方法!!! ‘2.friendly 默认的友好变量,如果什么都不写!!!原创 2016-10-29 21:17:18 · 1253 阅读 · 1 评论 -
java之静态内部类
一、内部类分为普通内部类和静态内部类。二、内部类:主要的应用是因为,这个类无需声明在外,只需要定义在一个类的内部,就可以满足需求,而且增强了代码的封装性和隐蔽性。三、普通内部类: 1)普通内部类可以获得外部对象的引用,所以普通内部类能够访问外部对象的成员变量 ,也就能够使用外部类的资源。 2)普通内部类依赖于外部类,与外部类是共生共死原创 2015-05-31 22:24:09 · 387 阅读 · 0 评论 -
java之Unicode编码 -一段代码
package com.zyl.learn.code;/** * 1、Unicode是一种编码规范,是为解决全球字符通用编码而设计的,而rUTF-8,UTF-16等是这种规范的一种实现。 * * 2、java内部采用Unicode编码规范,也就是支持多语言的,具体采用的UTF-16编码方式。 * * 3、不管程序过程中用到了gbk,iso8859-1等格式,在存储与传递的过程中原创 2015-08-04 23:02:43 · 491 阅读 · 0 评论 -
设计模式之代理模式代码
Java代理模式Demo/** * Created by zyl on 2015/8/17. */public interface Action { public abstract void action();}public class Real implements Action { public void getDesc() { System原创 2015-08-17 23:10:15 · 433 阅读 · 0 评论 -
java之单元测试
单元测试 在这里主要讲基于Junit单元测试框架的Java单元测试。 在很久之前,我是从来不谢单元测试的。思考其原因:其一,工作任务紧,来不及写单元测试;其二,项目中的好多类以及各种耦合,并不是很好写单元测试;其三,对于Mock等的测试手段,还不是很了解。大概由于这三种原因使得,单元测试覆盖率很低。 由于各种的质量问题和要求,慢慢地我也开始写单元测试,这时一个艰难原创 2015-05-29 23:27:52 · 428 阅读 · 0 评论 -
java之super用法
1.父类package com.zyl.learn.common;/** * Created by zyl on 2015/8/2. */public class Circle { private double radius; public Circle(double radius) { this.radius = radius; }原创 2015-08-02 12:27:02 · 580 阅读 · 0 评论 -
Java之克隆
JAVA克隆对象一、克隆的含义:克隆一个对象,其属性会保持一样,但两个对象的引用并不相同。二、克隆的实现:clone()方法;类必须实现Cloneable接口,并且重写Objet类的clone()方法。原创 2015-08-02 11:04:42 · 403 阅读 · 0 评论 -
JAVA之Class类和getClass
Class类和getClass一、 java.lang.Class一个类在使用时必须加载进虚拟机,会创建包含此类信息的对象。该对象称之为元对象,包含有类名,构造函数,方法等信息。该对象是上述类的一个实例。每个类只有一个元对象,每个对象都有一个相同的元对象。二、public class clone { public static void main(String原创 2015-08-02 11:36:22 · 481 阅读 · 0 评论 -
Java 之多线程同步
一、什么是多线程? 1.每一个java程序都有一个main函数,作为主线程。 2.在主线程运行过程中生成的线程为独立于主线程的新线程,其拥有独立的线程栈。(这里可以考虑什么叫做独立)二、为什么多线程非要去同步它呢? 1.同步的本质原因是:这几个多线程,会去同时访问其所共享的资源(包括成员变量,打印机等)。正式因为共享资源的存在,才需要去同步多线程,防止多线程访问带来的数据不一致性。 2.顺便原创 2016-07-10 21:38:42 · 389 阅读 · 0 评论 -
Java之序列化和反序列化
一、什么序列化、反序列化1.把对象装换为字节序列的过程称之为对象的序列化。2.把字节序列恢复为对象的过程称之为对象的反序列化二、序列化的方式 1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中; 2) 在网络上传送对象的字节序列三、 在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理,以便长期保存。比如最常见的是Web服务器中的Session对象,当有 10原创 2016-08-26 22:33:00 · 439 阅读 · 0 评论 -
mysql小记
1.as 作为从数据库中获取数据对应的字段重新命名;、 2.as 后边不能跟sql语法中的函数名和关键字等,如果非要用请在关键字加上单引号。原创 2016-05-15 20:20:00 · 409 阅读 · 0 评论 -
Java 小记
1.静态方法内部只能调用静态方法,不能调用非静态方法。一个static方法内部发出对非static方法的调用 tip:静态方法属于类,在类调用静态方法时,如果还要考虑实例的创建才能调用的非静态方法,这不是太残忍了吗!2.只有记住抽象类与普通类的唯一区别就是不能创建实例对象和允许有abstract方法。3.clone 有缺省行为,super.clone();因为首先要把父类中的成员复制到位,原创 2016-05-28 17:33:06 · 276 阅读 · 0 评论 -
火热的函数式编程
一、什么是函数是变成? 1.简单说:函数式编程是一种编程凡事,即式一种如何编程的方法论;属于结构化编程,主要思想是把运算过程尽量写成一系列嵌套的函数调用。 2.例子思考: 计算(a.add()+b.add()+c.add())*d.add();想一想用结构化和面向对象思想如何事项得出结果。二、特点 1.. 函数是”第一等公民” 所谓”第一等公民”(原创 2016-05-15 20:14:42 · 317 阅读 · 0 评论 -
Spring MVC
一、IOC 控制反转 1.定义:什么叫控制反转? 当一个对象A,需要使用另一个对象B时,必须显示的new一个对象B;这样带来一个问题,类之间的耦合度不断增加。而在IOC中,不需要用户或程序员再这样做;IOC会控制这个过程。 2.IOC思想:Spring容器来实现这些相互依赖对象的创建、协调工作。 3.反转实质:控制的什么被反转了?就是:获得依赖对象的方式反转了。 4.IoC的一个重原创 2016-05-15 19:54:56 · 269 阅读 · 0 评论 -
Gavua 之 cache
一、简介 Google Guava包含了Google的Java项目许多依赖的库,如:集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support] 、并发库 [concurrency libraries] 、通用注解 [common annotations] 、字符串处理 [string processing] 、I/O 等等。本文只介转载 2016-01-06 21:41:21 · 1389 阅读 · 0 评论 -
代码整洁之道笔记-有意义的命名
有意义的命名一.命名范围:变量,方法,参数,类名,包名;文件名,文件夹。二.命名规则1.名副其实:看到名字,就应该了解其代表的意义,其用途很自然地理解其功能。2.避免误导,产生歧义:一个名字最好只有一个意义。 不好的用法:sourceString,sourceList。不要使用区分度较小的命名,比如serviceDeployment和serviceDeployments。不要使原创 2015-07-29 22:12:35 · 491 阅读 · 0 评论