![](https://img-blog.csdnimg.cn/20190927151124774.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
java技术文章系列
文章平均质量分 52
常用的Java知识汇总
二缺和傻宝宝
互相学习
展开
-
反射理解
1.Class这个类用于操作一个类的属性,方法,构造器。 2.类的共同点:都有方法,属性,构造器。抽取出来就是Class类 3.方法的共同点:都有返回值,参数。抽取出来就是Method类 4.属性的共同点:都有类型,都有name。抽取出来就是Field类 在写代码当中,基本就是围绕着 Class类,Constructor类,Method类—invoke(obj,args[])方法,Field原创 2017-12-29 17:08:57 · 218 阅读 · 0 评论 -
setAccessible(true)用法及意义
实际开发中,setAccessible具体的用处主要有两处:作用于方法上,method.setAccessible(true);public static void test02() throws Exception{ User u = new User(); Class clazz = u.getClass(); Method m = clazz.getDeclaredMe...原创 2020-02-04 21:26:17 · 53479 阅读 · 8 评论 -
详解动态代理及其实现原理
1.什么是代理。比如(工厂,商店,客户),工厂是委托类,商店是代理类,工厂委托商店做代理来买产品,可以这样通俗理解。 2.代理的好处:(1.可以隐藏委托类的实现;2.可以实现客户与委托类间的解耦,在不修改委托类代码的情况下能够做一些额外的处理,比如买烟的时候限制年龄…可以在代理类中进行对应的操作。) 3.再讲动态代理之前,先明白静态代理是怎么实现的,若代理类在程序运行前就已经存在,那么这种代理方原创 2017-12-28 16:37:09 · 3800 阅读 · 0 评论 -
并发情况下保持逻辑的顺序性
并发情况下保持逻辑的顺序性在日常开发中,经常会使用到异步消息去处理业务,今天说的场景是使用mq的方式去消费消息,但是如果同时过来多条消息,需要你在处理时候,保证顺序执行,比如更新商品,前后时间同时发过来两条消息,如果不加以判断,会把最后更新那一次的数据覆盖;或者是处理单据信息,相同的订单同时过来三种不同的状态,但是要求你需要按照顺序去执行,这时候该怎么做?在这里我根据实际的业务,提供三种不同的实现思路。第一种,在发送消息之前,存入更新时间,消费时候,以最后一次更新的时间数据去消费;参考代码如下:原创 2020-07-24 23:26:46 · 919 阅读 · 0 评论 -
单例笔记总结
双重检测public class SingletonTest { // 定义一个私有构造方法 private SingletonTest() { } //定义一个静态私有变量(不初始化,不使用final关键字,使用volatile保证了多线程访问时instance变量的可见性,避免了instance初始化时其他变量属性还没赋值完时,被另外线程调用) private static volatile SingletonTest instance;原创 2020-07-04 18:49:21 · 148 阅读 · 0 评论 -
SpringMvc看源码思路
1、HandlerMapping实现:使用DefaultAnnotationHandlerMapping(spring3.1之前)或RequestMappingHandlerMapping(spring3.1)替换之前的BeanNameUrlHandlerMapping。注解式处理器映射会扫描spring容器中的bean,发现bean实现类上拥有@Controller或@RequestMa...原创 2020-04-05 00:26:46 · 156 阅读 · 0 评论 -
Guava之项目集合操作使用
1.Maps.uniqueIndex(Iterable, Function) // nickname属性能唯一确定一个WebUser ArrayList<WebUser> users = Lists.newArrayList(new WebUser(1,"one"),new WebUser(2,"two"),new WebUser(1,"three"),new W...原创 2020-03-23 23:47:47 · 255 阅读 · 0 评论 -
基于TCP模拟聊天室
利用面向对象的思想,对在线聊天的模块进行封装;一个服务器,可以有多个客户端进行连接;每个客户端是个单独的线程,互不影响;(因为每跟服务端建立一次连接,所对应的Socket是不同的,一个ServerSocket可以对应多个Socket); 对于客户端来说,既可以是发送者,也可以是接收者;所以发送者和接收者需要使用线程来处理; 底层数据传输还是借助于io流进行处理,BufferedReader...原创 2020-01-05 14:26:49 · 213 阅读 · 0 评论 -
基于UDP模拟在线聊天
需要注意两个核心类:DatagramSocket,DatagramPacket 和InetSocketAddress 实现多线程去模拟,本次例子会有四个线程去完成实现(学生和老师,都是既可以是接收者也可以是发生者); 使用字符转换流(InputStreamReader)+字符缓冲流(BufferedReader)去读取数据,发生消息; 看如下例子,先把发送者和接收者的底层实现写好,剩下的谁是...原创 2020-01-05 11:44:09 · 303 阅读 · 0 评论 -
io流知识学习总结
总结的放到前边:下边的类图很重要,心里边一定要有个印象,最好可以记住,尤其是标红的类; 注意装饰类的使用,这是一种好的代码规范,性能的提升; ByteArrayInputStream,ByteArrayOutStream这两个类很关键,可以把任何内容转成字节数组(不管你是文件流,对象流,数据流...),放于内存,然后再做响应的处理;构造File的三种形式; File里边的路径可以是不存...原创 2020-01-04 20:17:45 · 183 阅读 · 0 评论 -
System.arraycopy方法小总结
@HotSpotIntrinsicCandidate public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, i...原创 2019-11-24 11:17:58 · 262 阅读 · 0 评论 -
dependencyManagement标签在项目中的实际使用
首先,现在项目中,大家对于maven的使用,就是聚合和依赖,子类和父类之间的继承,现在项目中遇到这样一种情况,就是有些依赖的jar包,随着使用的过程,版本会需要更新,如果使用的模块比较少的话,一个模块一个模块去修改其实还可以(要么修改partner的pom文件,要么就修改引入子类的pom文件,说到这里,在解释一句,在parent中严禁直接使用depandencys预定义依赖,坏处是子model会自...原创 2019-10-13 22:32:05 · 786 阅读 · 0 评论 -
Java异常简介
Java异常简介Java异常是Java提供的一种识别及响应错误的一致性机制。Java异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程序健壮性。在有效使用异常的情况下,异常能清晰的回答what, where, why这3个问题:异常类型回答了“什么”被抛出,异常堆栈跟踪回答了“在哪“抛出,异常信息回答了“为什么“会抛出。Java异常机制用到的...转载 2019-08-11 23:59:21 · 104 阅读 · 0 评论 -
@Param注解在mybatis中的使用以及传入参数的几种方式
关于Mybatis @Param 注解,官方文档:http://www.mybatis.org/mybatis-3/zh/java-api.html其中关于 @param部分的说明是:@Param Parameter N/A 如果你的映射器的方法需要多个参数, 这个注解可以被应用于映射器的方法 参数来给每个参数一个名字。否则,多 参数将会以它们的顺序位置来被命名 (不包括任何 RowBo...原创 2019-08-11 20:32:02 · 1845 阅读 · 0 评论 -
为什么在sqlSessionFactoryBeanName中要用value注入sqlSessionFactory,而不是ref?
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />第一点:在mybatis-spring 1.1.0以前,是通过<property name="sqlSessionFactory" ref="sqlSessionFactory"/>将SqlSessionFactory对象注...原创 2019-08-11 19:53:17 · 2803 阅读 · 1 评论 -
@Resource
@Autowired 与@Resource的区别:1、 @Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上。2、 @Autowired默认按类型装配(这个注解是属业spring的),默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,如:@Autowired(required=fa...原创 2019-08-04 11:07:09 · 6929 阅读 · 0 评论 -
Arrays.asList()注意事项
Arrays.asList()在平时开发中还是比较常见的,我们可以使用它将一个数组转换为一个List集合。String[] myArray = { "Apple", "Banana", "Orange" };List<String> myList = Arrays.asList(myArray);//上面两个语句等价于下面一条语句List<String> m...原创 2019-07-14 11:58:42 · 446 阅读 · 0 评论 -
VOLATILE 只保证可见性,并不保证原子性
转载:http://blog.csdn.net/guyuealian/article/details/52525724 在说明Java多线程内存可见性之前,先来简单了解一下Java内存模型。 (1)Java所有变量都存储在主内存中 (2)每个线程都有自己独立的工作内存,里面保存该线程的使用到的变量副本(该副本就是主内存中该变量的一份拷贝)(1)线程对共享变量的所有操作都必须在自己的工作...转载 2019-07-13 17:19:46 · 560 阅读 · 0 评论