Java
文章平均质量分 71
teng_sd_cn
无。
展开
-
Spring自定义BeanPostProcessor的时候怎么支持循环依赖
1. 什么是循环依赖?循环依赖说白了就是在我们的程序中,类A需要依赖于类B,类B又需要依赖于类A,这时候两个类实例就构成了相互依赖,你中有我,我中有你。@Componentpublic class A { @Autowired private B b;}@Componentpublic class B { @Autowired private A a...原创 2020-04-25 12:20:38 · 761 阅读 · 1 评论 -
使用BitSet对1000万个Int整数进行排序
//因为BitSet中可以存true/false,而且是按位存储,所以在数据量很大的时候,合理的使用BitSet可以节省很大的内存空间,//提高程序的运算效率。// 下面是我使用Bitset和Arrays工具类进行排序的测试类public class BitSetSort { public static void main(String[] args) {// Stri原创 2017-09-12 21:48:39 · 1670 阅读 · 1 评论 -
Java中几种常量池的区分
在java的内存分配中,经常听到很多关于常量池的描述,我开始看的时候也是看的很模糊,网上五花八门的说法简直太多了,最后查阅各种资料,终于算是差不多理清了,很多网上说法都有问题,笔者尝试着来区分一下这几个概念。1.全局字符串池(string pool也有叫做string literal pool)全局字符串池里的内容是在类加载完成,经过验证,准备阶段之后在堆中生成字符串对象实例,然后将该字符转载 2017-10-19 14:55:26 · 277 阅读 · 0 评论 -
给大家分享一个桥接模式的讲解
本文最后会放上文章的连接。网上大部分讲设计模式之桥接模式的文章都千篇一律,看了很多文章也没理解什么情况,不过还是发现了一篇好文章,看了之后感觉终于明白了桥接模式是怎么一回事了。我的理解就是:如果在两个以及两个以上维度都可能会发生变化的情况下,如果使用继承的方式,那么类会出现飞速的增长,如果我们用了桥接模式,那么我们就可以让多个维度各自变化互不影响,只需要组合一下,就可以原创 2017-10-31 20:26:08 · 506 阅读 · 0 评论 -
Java内部类总结
很多学习Java的人都知道Java有内部类,但是我想大部分人在开发中都很少使用内部类编写代码。大部人也不知道内部类有什么作用。接下来,我们就一起来聊聊内部类。Java中有:成员内部类,静态内部类,局部内部类,匿名内部类 四种。成员内部类:public class OutClass{ private class InnerClass{ }}原创 2017-08-02 09:09:28 · 209 阅读 · 0 评论 -
使用java nio 编写简易聊天室
服务器端:相当于是一个接收客户端消息的分发器,为了简单,直接在接收到客户端的消息后, 直接发送给所有的客户端package chatroom.chatserver;import java.io.IOException;import java.net.InetSocketAddress;import java.net.ServerSocket;i原创 2018-01-09 14:45:22 · 1301 阅读 · 0 评论 -
springboot怎么使用maven打包时将本地jar包一块打进去
如果我们通过本地向springboot工程中引入了jar包,那么我们在打包发行的时候,怎么将本地jar也打包到该工程发行包中去呢?1、我们需要手工引入本地jar包 1.1 选中工程-->单击鼠标右键(选择如下图所示) 1.2 然后添加需要引入的本地jar包 1.3 点击apply后,点击o原创 2017-10-24 17:15:15 · 14327 阅读 · 3 评论 -
RedisLock 锁注解,基于springboot2.0.4,lettuce
最近因为业务需要用到加锁,所以就想用redis锁,因为对于业务来说,redis锁已经能够满足需求了。但是,因为需要很多地方需要用到加锁,项目又是基于springboot,所以,就想写个springboot-starter,然后封装个注解,需要的项目中只要引入starter,并且在需要加锁的方法上加上注解就可以了。1、添加pom依赖 <dependency> ...原创 2019-06-22 17:28:12 · 3242 阅读 · 0 评论 -
springboot配置logback日志示例大全
PS: 1、springboot默认使用的日志框架是logback;2、想使用spring扩展profile支持,要以logback-spring.xml命名,其他如property需要改为springProperty一、configuration (最外层)scan当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。scanPeriod:设置监...原创 2019-10-11 10:27:26 · 510 阅读 · 0 评论 -
使用springboot时,@Scheduled定时器遇到的问题
@Scheduled 这个注解确实给我们带了很大的方便,我们只要加上该注解,并且根据需求设置好就可以使用定时任务了。但是,我们需要注意的是,@Scheduled 并不一定一定会按时执行。因为使用@Scheduled 的定时任务虽然是异步执行的,但是,不同的定时任务之间并不是并行的!!!!!!!!在其中一个定时任务没有执行完之前,其他的定时任务即使是到了执行时间,也是不会执行的,它们会进原创 2017-09-18 21:42:03 · 18598 阅读 · 1 评论 -
AOP 切面的使用,以及如何在通知上获取切入方法的注解和参数
1、自定义注解@Retention(RetentionPolicy.RUNTIME)@Target(value=ElementType.METHOD)public @interface AdviceAnnotation { String name();}2、service层public interface AdviceService { void study(String原创 2017-09-09 18:52:49 · 5405 阅读 · 0 评论 -
在toString()方法中千万不要使用this
如果我们想打印出一个对象的引用地址,我们可以想到重写toString()方法,在该方法中打印this的值,因为this就是指代的本身。然后我们就写了如下的代码:@Overridepublic String toString(){ return "对象地址:"+this;}可是,这样的话,就导致了toString()方法的无限递归调用,最终导致内存溢出。为什么原创 2017-08-01 17:23:31 · 2385 阅读 · 0 评论 -
springcloud中的feign使用
我们使用springcloud的feign,可以让我们像调用本地方法似的调用远程方法,就和dubbo类似。但是,使用feign的时候,我们要注意几点。首先,我们要开启feign。@EnableFeignClients该注解就可以开启feign功能。使用feign的时候,参数上我们一定要加@RequestParam,@RequestBody等注解,不然的话就会报错。原创 2017-08-16 16:33:33 · 629 阅读 · 0 评论 -
Java通过反射获取泛型实际类型总结(什么可获取,什么不可获取)
Type接口说明Type接口只有一个实现类Class,但是有四个子接口,这四个Type子接口描述了Java泛型的四种形式。分别是:GenericArrayType 该接口表示一种数组类型,其组件类型为参数化类型或类型变量,如参数化类型数组Map[] map,还有类型变量数组T[] tParameterizedType 该接口表示参数化类型,如 Collection。Ty原创 2017-08-04 11:19:53 · 8256 阅读 · 0 评论 -
大白话讲解ThreadLocal的原理
ThreadLocal顾名思义,本地线程,可以理解为本地线程变量,说白了就是操作本地线程的局部变量。下面我们通过源码进行说明:首先,我们看一下ThreadLocal的set方法源码实现:public void set(T value) { Thread t = Thread.currentThread(); ThreadLocalMap map = ge原创 2017-08-12 17:10:36 · 1369 阅读 · 1 评论 -
Java线程之semaphore和Exchanger
Semaphore是Java线程的一个计数信号量。我们可用于多线程的并发访问控制。就像我们常见的线程池,数据库连接池就可以使用Semaphore进行逻辑的实现。Semaphore中我们就介绍两个最常用的两个方法。acquire() 从Semaphore获取许可,如果计数不小于0,就说明还有可用的许可,那么线程就可以成功获取许可,执行。如果没有许可 了,那么这个方法就会一直阻塞原创 2017-08-13 15:12:09 · 304 阅读 · 0 评论 -
同步异步和阻塞非阻塞
今天突然看到同步异步和阻塞非阻塞的问题,一度陷入迷茫,经过我努力的汲取知识,在这里说下我的理解。同步异步:可以理解成这是一种行为。阻塞非阻塞:可以理解成这是一种状态。举一个我看到的很不错的例子:《张大爷烧水》话说张大爷有两只壶,一只是普通的烧水壶,一只是有响笛的壶。今天张大爷心情不错,想泡茶喝。那还等什么,烧水呗!(同步阻塞):张大爷拿出了普通的烧水壶开始烧水,然后站在旁边原创 2017-08-14 22:40:01 · 248 阅读 · 0 评论 -
电脑装多个jdk后,配置环境变量无效的解决办法
最近在使用JAXB进行xml和javabean进行转换的时候,遇到了一件事,就是在我本机上可以正常转换,可是到了测试环境和正式环境转换出来的内容都是null,经过查找原因,最后感觉是jdk版本问题导致的转换出现了问题。我本机的JDK版本是1.8.0_77,测试机上的版本是1.8.0_111,正式机上是1.8.0_4几,所以我就在测试机上又装了一个1.8.0_77的JDK,到了这里,原创 2017-08-25 15:31:32 · 3239 阅读 · 1 评论 -
Javaweb中乱码问题详解
为什么需要编码?由于人类的语言太多了,在计算机中表示这些语言的符号太多了,导致在计算机中无法通过一个基本的存储单元--字节来表示,所以我们就需要进行一些拆分和翻译工作,以使计算机可以理解我们的语言。计算机中都有哪些编码?ASCII码:共128个字符,用一个字节的低7位表示,0-31是控制字符,32-126是打印字符;ISO-88559-1:扩展了ASCII码,共256个字符,包原创 2017-08-15 21:23:56 · 233 阅读 · 0 评论 -
Java的静态分派和动态分派
静态分派:Java的静态分派只涉及到方法的重载,也就是我们实际调用的是哪个重载方法实际上是在编译期间确定的。下面来举例说明一下:// 水果接口interface Fruit{}// 苹果实现类class Apple implements Fruit{}// 橘子实现类class Orange implements Fruit{}// 重载方法class原创 2017-08-08 15:42:50 · 338 阅读 · 0 评论