Java基础
文章平均质量分 76
胡小禾
左手写码,右手写诗。一个混迹在二线厂,爱代码但不想当程序员的打工人
展开
-
Java常识
常识内容原创 2021-11-30 20:50:41 · 378 阅读 · 0 评论 -
【Spring常识】
文章目录1 @Transactional(readOnly = true)1 @Transactional(readOnly = true)这种注解用法是告诉Spring事务管理器,我这个方法没有写事务,只有读事务, 所以Spring会作出一些优化.这里强调下:如果你一次执行单条查询语句,则没有必要启用事务支持,数据库默认支持SQL执行期间的读一致性;如果你一次执行多条查询语句,例如统计查询,报表查询,在这种场景下,多条查询SQL必须保证整体的读一致性,否则,在前条SQL查询之后,后条SQL查询原创 2022-03-25 21:00:47 · 1773 阅读 · 0 评论 -
(3)Springboot2核心功能
文章目录二 Web开发2.7 文件上传2.8 错误处理2.9二 Web开发(接上文)2.7 文件上传页面<form method="post" action="/upload" enctype="multipart/form-data"> <input type="file" name="file"><br> <input type="submit" value="提交"></form>java/**原创 2022-05-03 20:57:58 · 595 阅读 · 0 评论 -
(2)Springboot2核心功能
文章目录一 配置文件1.1 配置提示二 web开发2.1 springmvc自动配置概览2.2 简单功能分析2.2.0 静态资源2.2.1 欢迎页2.3 请求参数处理2.4 数据响应和内容协商2.5 视图解析与模板引擎2.6 拦截器2.7 跨域2.8 异常处理2.9 原生servlet2.10 嵌入式web2.11 定制化原理2.12一 配置文件1.1 配置提示自定义的类和配置文件绑定一般没有提示; 添加下面的依赖可以 实现自定义配置类的yaml文件编写时也能够自动提示.<dependency原创 2022-04-19 22:34:01 · 133 阅读 · 0 评论 -
(1)SpringBoot入门
文章目录一 SpringBoot特点1.1 依赖管理1.1.1 父项目做依赖管理1.1.2 开发导入starter场景启动器1.1.3 无需关注版本号,自动版本仲裁1.1.4 可以修改默认版本号1.2 自动配置二 容器功能2.1 组件添加2.1.1 `@Configuration`2.1.2 @Bean、@Component、@Controller、@Service、@Repository2.1.3 @ComponentScan、@Import2.1.4 @Conditional2.22.2.12.2.22原创 2022-04-01 23:50:27 · 219 阅读 · 0 评论 -
cglib proxy
文章目录动态代理常用有三: JDK代理, cglib代理, javaassistant代理. 这里demo一下 cglib代理…cglib 是 jdk代理的补充, 最大的区别在于能够针对一个无接口的类实现代理.本质是针对被代理类生成一个功能增强的子类. 因此, private 方法, final类,都是不能被代理的.来看demo:public class CglibProxy implements MethodInterceptor { private Enhancer enhancer原创 2022-02-19 16:39:23 · 379 阅读 · 0 评论 -
Java8实战(Java8 in Action)精华篇
文章目录五、use stream5.X unlimited stream六、用流收集数据七、并行流五、use stream5.X unlimited streamStreamAPI offers two static methods to generate Stream using functions,i.e. Stream.iterate() & Stream.generate()...原创 2018-10-21 00:07:25 · 2831 阅读 · 0 评论 -
SPI速记
文章目录一 Java SPI1.21.2.11.2.21.2.3一 Java SPISPI - service provider interfaceSPI 是一套规范,用于扩展和替换框架的组件. 最典型如 JDBC 驱动.在mysql-connector中有这样一个目录(文件):类似的, 在slf4j中也有这样的实现.我们在头脑中很具象地思考一下:一般得到一个接口的实现类, 只需要 IFoo foo= new Bar(). 那如何让这个过程可配置呢? 简单:我们约定好一个目录,即类路径下的ME原创 2022-02-02 16:52:16 · 394 阅读 · 0 评论 -
logback_6 code review(TODO)
文章目录一 slf4j和logback1.11.1.11.1.21.1.31.21.2.11.2.21.2.3这篇文章我们说下 logback 的核心源码.高能预警: logback 是一款设计十分精巧, 代码量不大但务实的框架. 笔者使用了务实 这个形容词,因为在阅读其源码过程中发现该框架没有丝毫的炫技, 好比言辞朴实而张力十足的文章.一 slf4j和logback在之前的文章中,我们就提到 logback "原生"实现了slf4j. 这点和 log4j 很不同.后者和 slf4j 集成时还需要原创 2022-01-25 23:46:45 · 81 阅读 · 0 评论 -
logback_5-Logging Separation
文章目录一 问题1.11.1.11.1.21.1.31.21.2.11.2.21.2.3这一章我们说说日志的隔离.一 问题1.11.1.11.1.21.1.31.21.2.11.2.21.2.3原创 2022-01-25 23:24:45 · 203 阅读 · 0 评论 -
Java Classloader基础及应用介绍
文章目录一 what's Classloader(CL)二 内置CL2.1 Bootstrap CL2.2 ExtCL(ExtClassloader)2.3本篇系统介绍class loader 及其应用.以下 使用 CL (classloader) 来简写.一 what’s Classloader(CL)笔者以为,在讨论计算机(编程) 中的概念时首先一定要确定 概念所在的维度(范畴)是什么,否则会发现,大家说的貌似都对, 但哪里总有点不对.当我们说 Java Classloader时,我们要搞清楚是原创 2022-01-22 18:54:19 · 623 阅读 · 0 评论 -
logback4_MDC
文章目录一 What's MDC1.1 本质1.2 例子二 Automating access to the MDC2.1 案例一2.2 切线程2.3 MDCInsertingServletFilterMDC (Mapped Diagnostic Context)一 What’s MDC在分布式系统中,多线程处理多个客户端司空见惯.有个做法是每个客户端对应一个Logger,但这种做法会产生大量Logger而且管理起来也不便.另有一种做法是将日志的上下文信息放到MDC里.MDC 是slf4j的定义,而原创 2021-12-25 21:33:27 · 1282 阅读 · 0 评论 -
logback_3-Filters
文章目录一 In logback-classic1.1 Regular filters1.2 Implementing your own Filter1.3 LevelFilter1.4 ThresholdFilter1.5 EvaluatorFilter1.5.1 GEventEvaluator1.5.2 JaninoEventEvaluator二 TurboFilters2.1 Implementing your own TurboFilter2.22.3三3.13.23.3Filters 和 app原创 2021-12-18 17:04:07 · 556 阅读 · 0 评论 -
logback_2-Encoder,Layout
文章目录一 What is an encoder二 Encoder interface三 LayoutWrappingEncoder四 PatternLayoutEncoder五 Layouts六 PatternLayout七一 What is an encoderEncoders就是把 LoggingEvent转化为字节数组并向 OutputStream(输出流)写出的这么个东东.Layouts 就是能够把 LoggingEvent转换成字符串的东东.相比较之下, Layouts既不能控制 L原创 2021-12-17 23:26:02 · 1056 阅读 · 0 评论 -
logback_1-Appenders
文章目录原创 2021-12-12 23:24:40 · 252 阅读 · 0 评论 -
Logback_0-Overview,Architecture,Configuration
文章目录一 logback组件二 Hello world三 logback架构3.1 包结构3.2 LoggerContext3.3 Named Hierarchy一 logback组件logback-core基础模块;logback-classic 和 logback-access 都对其有依赖logback-classic原生依赖了slf4j ,方便用户在使用Logback和 JUL ,log4j 等框架之间切换logback-classic 实际是 logback-core的扩原创 2021-11-13 18:05:45 · 266 阅读 · 0 评论 -
Jconsole
JConsole有界面,能够比较方便地看到堆内存 \线程\类,以及JMX的变化. 线下环境中算是个不错的诊断工具.那怎么操作呢? 十分简单, 本地的JDK安装路径中找到 jConsole.exe ,双击,填写远程JVM进程即可.要注意: JConsole使用时要求远程JVM打开了 JMX 端口, JMX端口和服务端口是不同的. 这一点,经常搞忘了…比如, kafka 服务端口默认是9092,我们极少改动; 但是JMX一般设为 9999.连接成功后最后得到界面像这样:看到界面上的多个TAB, 我原创 2021-10-11 13:11:48 · 287 阅读 · 0 评论 -
Servlet 三大器
一、Filterhttps://blog.csdn.net/reggergdsg/article/details/52821502 http://naotu.baidu.com/file/fbda5d22eae856a26486ef3774dd0a64?token=98f4600ed798292d二、原创 2018-05-17 14:35:51 · 491 阅读 · 0 评论 -
Java 泛型精要
本篇记录了Java泛型的部分要点,内容主要参考《effective java》中泛型一章,文章将提纲挈领列举Joshua Bloch对Java泛型的使用建议。一、新代码中不要用原始类型(rawtype)原因不赘述了。只是有几点需要注意:1、List与List&amp;lt; Object&amp;gt;List : 逃避了类型检查List&amp;lt; Object&amp;gt;:告知编译器,它能够持有任何类型的...原创 2018-10-01 16:38:59 · 183 阅读 · 0 评论 -
泛型边界_3 逆变(Contravariance)
一、超类型通配符(supertype wildcards)可声明通配符是某特定类的任何父类界定,如&lt; ? super MyClass&gt;,或者&lt; ? super T&gt; ,不过不存在&lt; T super MyClass&gt;,这样可以安全地传递一个类型对象到泛型类型中。有了superType wildcards ,就可以向Collection写入了。public ...原创 2018-09-02 17:11:21 · 138 阅读 · 0 评论 -
泛型边界_2 编译器有点蠢
首先来看ArrayList 的几个API的定义:public boolean add(E e)public int indexOf(Object o)public boolean contains(Object o)显然:indexOf 、contains的入参是Object, 而add的入参是泛型类型的参数。再看一段demo:public class Compiler...原创 2018-09-01 23:51:01 · 1908 阅读 · 0 评论 -
泛型边界_2 通配符
一、数组协变类型先看一个数组的独特的行为,能够向子类型的数组赋予父类型的引用。public class CovariantArrays { public static void main(String[] args) { Fruit[] fruit = new Apple[10]; fruit[0] = new Apple(); fruit[...原创 2018-09-01 18:57:37 · 210 阅读 · 0 评论 -
Java泛型擦除是边界处的动作(四)
一、编译期的泛型’java泛型可能表示着没有任何意义的事物。 比如:下面的ArrayMaker 中的属性kind,事实上会被存储为 Class,没有任何参数。因此, Array.newInstance() 并没有kind 蕴含的类型信息,不会产生具体的结果,会生成 unchecked call 的警告1、数组泛型public class ArrayMaker<T> {...原创 2018-08-28 00:06:43 · 686 阅读 · 0 评论 -
Java 枚举
一、enum基本特性先来个DEMO:public enum Fruit { APPLE, PEAR, PEACH;}class EnumTest{ public static void main(String[] args) { /*values()*/ Arrays.stream(Fruit.values()).forEach(e -&amp;amp;amp;gt; { ...原创 2018-09-13 00:21:34 · 726 阅读 · 0 评论 -
注解
一、注解常识1.1 注解是什么?注解(Annotation。。注意:Annotation本身在JDK中就是一个Interface ),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。简单来说注解其实就是代码中的特殊标记,这些标记可以在编...原创 2018-09-17 23:51:14 · 128 阅读 · 0 评论 -
Java类型信息
一、RTTI大白话:本来只能在编译期做有关类型的操作,有了RTTI(runtime type information),在运行时也可以做了。RTTI的最终目的:在运行时识别一个对象的类型。我们有两种方式可以在运行时识别对象和类型信息传统RTTI,即在编译时已经知道了类型基于反射的RTTI先看1 , 2的话看下一节一个很简单的继承(其实是模板设计模式),对于shapes来说:放入Ci...原创 2018-09-19 23:27:59 · 173 阅读 · 0 评论 -
Java 初始化和清理
一、constructor二、overload是否重载,与返回值类型无关,只与参数列表有关,另外:public void m1(Integer integer) {}与public void m1(int i ){}也能构成overload。三、...原创 2018-10-14 10:58:05 · 121 阅读 · 0 评论 -
Java 泛型擦除的问题(三)
一、擦除的原因主要是Java从非泛化代码到泛化代码,为了向前兼容旧版本做出的妥协二、擦除的代价显著的代价就是运行时不能保留泛型信息,由此也就不能显式地引用运行时操作,比如转型instanceOf 操作和new 表达式。比如:Class Foo&amp;amp;amp;lt;T&amp;amp;amp;gt;{ T bar;}Foo&amp;amp;amp;lt;Dog&amp;amp;amp;gt; foo =原创 2018-08-27 21:57:51 · 1029 阅读 · 0 评论 -
Java:复用类
组合+继承是两种常用的复用代码的方法,本文结合《编程思想》的内容,对java的代码复用做点小小的分析和总结。文章目录原创 2018-10-15 23:50:08 · 197 阅读 · 0 评论 -
Java多态(Polymorphism)
文章目录一、向上转型二、动态绑定2.1 绑定2.2 缺陷: 覆盖private方法2.3 缺陷:域与静态方法三、构造器和多态3.1 构造器调用链3.2 构造器内部的多态方法的行为四、协变返回类型五、用继承来设计六、总结多态polymorphism 通过分离what 和 how (即分离了“是什么”和“如何做”),从另一个角度分离接口和实现。多态可改善代码的组织结构和可读性,还能创建可扩展程序–&...原创 2018-10-20 22:48:10 · 1220 阅读 · 0 评论 -
Java接口
文章目录一、抽象类和抽象方法二、接口三、完全解耦四、多重继承五、通过继承拓展接口六、接口适配七、接口中的域八、接口嵌套九、接口与工厂十、总结接口和内部类是一种将接口和实现分离的更结构化的方法。一、抽象类和抽象方法抽象类是普通类和接口之间的一种“中庸之道”。创建抽象类的目的是希望通过这个通用接口来操作一系列子类。假如抽象类没有具体的实现,那么这个抽象类本身也没有意义。二、接口接口:可以理...原创 2018-10-23 23:39:23 · 132 阅读 · 0 评论 -
内部类inner class
文章目录一、创建内部类二、链接到外部类三、.this &amp; .new四、inner class &amp; upcasting五、内部类作用域六、匿名内部类七、嵌套类八、why inner class?九、内部类继承十、内部类的覆盖十一、局部内部类十二、内部类标识十三、总结一、创建内部类二、链接到外部类三、.this &amp; .new四、inner class &amp; upc...原创 2018-10-23 23:44:21 · 144 阅读 · 0 评论