java基础
javafanwk
专注微服务架构,熟悉react、大数据、云计算,喜欢看java编程思想,设计模式,算法等书,希望通过我的努力减少代码量,提高java的标准化,提高程序的稳定度,认真搞技术,一直在路上,希望大家共同前行,进步。。。
展开
-
System.out.print 不能打印
System.out.print(root.val + ">"); //不打印System.out.println(root.val + ">"); //正常打印private void write(String s) { try { synchronized (this) { ensureOpen(); textOut.write(s); textO原创 2021-12-22 17:00:38 · 2048 阅读 · 0 评论 -
poi excel下载工具类优化(利用LinkedHashMap和反射getDeclaredMethod)
目的:源代码重复代码过多,所以准备提取工具类。考虑用过数组等,但是Excel需要标题(中文)和对象属性对应关系,所以考虑LinkedHashMap方法按顺序提取,后利用getDeclaredMethod("show", null); 第一个参数时String方法名,第二个参数时输入参数,没有为空,后进行优化,根据属性得到get方法(getUsername 改为username 属性名)。一、未优化...原创 2018-05-05 13:29:16 · 359 阅读 · 0 评论 -
实际面试题汇总(二)
一、SQL题 目的:查询所有用户每家银行的开户情况(如一家银行有多个account 只列出一个即可)答案:SELECT *from `user` GROUP BY username,bank1核心是GROUP BY 后边可以跟多个字段 ,字段的顺序不影响结果,结果都相同,按照啊group by a,b 是同时按照a,b分组,假如有一个不相同就分为两组。group by 一般和聚合函数一起使...原创 2018-05-07 10:11:36 · 153 阅读 · 0 评论 -
利用ReflectionToStringBuilder打印VO里的属性
有时候我们要在log里把VO里面的一些属性打印出来,一般我们都会去改写类的toString方法,apache的ReflectionToStringBuilder类利用放射机制,能方便的实现类的toString方法,还能通过参数设置toString的样式 Java代码 import org.apache.commons.lang.builder.ReflectionToStringBuild...原创 2018-05-25 15:10:50 · 1296 阅读 · 0 评论 -
ServletRequest强转HttpServletRequest
代码中常见这样的代码:HttpServletRequest httpRequest = (HttpServletRequest) servletRequestString usertoken = httpRequest.getHeader("usertoken");String url = httpRequest.getRequestURI().substring(httpRequest.getC...原创 2018-05-21 17:14:25 · 13344 阅读 · 2 评论 -
Spring Security
配置Spring Security@Configurationpublic class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Bean UserDetailsService customUserService() { return new CustomUserService(); ...原创 2018-05-21 18:07:33 · 150 阅读 · 0 评论 -
@JsonView注解
使用接口来声明多个视图package org.byron4j.springMVC4_rest_jackson_jsonview_annotation; public class Profile { public interface PublicView {} public interface FriendsView extends PublicView{} public...原创 2018-05-25 16:35:07 · 806 阅读 · 0 评论 -
随机数生成,任意长度
String createData(int length) { StringBuilder sb = new StringBuilder(); Random rand = new Random(); for (int i = 0; i < length; i++) { sb.append(rand.ne...原创 2018-07-13 20:24:50 · 887 阅读 · 0 评论 -
静态方法中调用非静态方法
静态static方法中不能调用非静态non-static方法,准确地说是不能直接调用non-static方法。但是可以通过将一个对象的引用传入static方法中,再去调用该对象的non-static方法。 在主函数(static方法)中我们经常创建某个类的实例,再利用其引用变量调用它的非静态方法。//StaticMethodTest.java//A ststic m...原创 2018-08-18 20:22:12 · 16768 阅读 · 5 评论 -
BeanUtils的拷贝的方向
BeanUtils常用的jar包由两个,jar不同拷贝的方向完全不同(坑) BeanUtils提供对Java反射和自省API的包装。其主要目的是利用反射机制对JavaBean的属性进行处理。我们知道,一个JavaBean通常包含了大量的属性,很多情况下,对JavaBean的处理导致大量get/set代码堆积,增加了代码长度和阅读代码的难度。1、package org...原创 2018-08-21 10:35:25 · 233 阅读 · 0 评论 -
KeyValueHelper 自定方法 优化convertMap 空指针报错
原来的代码:KeyValueHelper.setMessageText(orderList, orderDetail::getlMateria, orderDetail::setSubclass, convertMap(materiaMap, materiaMap::getSubclass));KeyValueHelper.setMessageText(rmaReturnDetailSn...原创 2019-01-01 10:08:40 · 447 阅读 · 0 评论 -
BeanUtils 复制从哪到哪
BeanUtils的工具类有两个jar包。不同jar中的方法,用法正好相反()BeanUtils提供对Java反射和自省API的包装。其主要目的是利用反射机制对JavaBean的属性进行处理。我们知道,一个JavaBean通常包含了大量的属性,很多情况下,对JavaBean的处理导致大量get/set代码堆积,增加了代码长度和阅读代码的难度。注意:属性复制,不同...原创 2019-04-25 14:26:44 · 207 阅读 · 0 评论 -
Spring Boot 之servlet、Filter
目的:最近公司的项目中需要用到filter拦截所有请求,看用户是否登录等验证信息,所以把servlet,filter,listener总结一下一、servlet1.启动类中添加 @Bean public ServletRegistrationBean getDemoServlet(){ ServletRegistrationBean registrationBean=new Servlet...原创 2018-05-17 15:42:32 · 172 阅读 · 0 评论 -
枚举类型
枚举类型最近在程序里用到了枚举类型处理异常的返回值,和异常code挺方便,推荐大家使用枚举类型enum Other {ONE,TWO,TREE_BOOK}由于枚举类型的实例是常量,因此按照命名惯例他们都用大写表示,如果在一个名字中有多个单词,用下划线将它们隔开。public class EurekaApplication { public static void main(Strin...原创 2018-02-25 17:12:52 · 523 阅读 · 0 评论 -
代理 idea
继承,组合,第三种关系是代理,这是继承和组合之间的中庸之道java并没有提供对代理的直接支持,他的实现是组合加继承idea可以直接向get,set 一样生成该方法class SpaceShipDelegation { private SpaceShipcontrols spaceShipcontrols;}class SpaceShipcontrols { public ...原创 2018-02-26 21:32:04 · 608 阅读 · 0 评论 -
this() 重构代码
原来处理异常的方法,重复代码比较多 //不需要传参数或者拼接的时候调用的构造方法 public AppcationException(IBusinessRuntimeException iBusinessRuntimeException){ this.iBusinessRuntimeException=iBusinessRuntimeException; this.strin...原创 2018-02-27 14:25:44 · 1182 阅读 · 0 评论 -
Java开发规范(三)
(四) OOP规约 1.【强制】避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名来访问即可。 2.【强制】所有的覆写方法,必须加@Override注解。 反例:getObject()与get0bject()的问题。一个是字母的O,一个是数字的0,加@Override可以准确判断是否覆盖成功。另外,如果在抽象类中对方法签名进行修改,其实现类会马上编译报错。 3...原创 2018-02-19 21:32:29 · 1358 阅读 · 0 评论 -
Java 四种线程池newCachedThreadPool,newFixedThreadPool,newScheduledThreadPool,newSingleThreadExecutor
1、new Thread的弊端new Thread(new Runnable() {@Override public void run() { // TODO Auto-generated method stub }}).start();a. 每次new Thread新建对象性能差。b. 线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可能占用过多系统资源导致死机...转载 2018-02-20 10:44:25 · 1141 阅读 · 0 评论 -
Java开发规范(五)
三、单元测试 1. 【强制】好的单元测试必须遵守AIR原则。 说明:单元测试在线上运行时,感觉像空气(AIR)一样并不存在,但在测试质量的保障上,却是非常关键的。好的单元测试宏观上来说,具有自动化、独立性、可重复执行的特点。 l A:Automatic(自动化) l I:Independent(独立性)R:Repeatable (可重复) 2. 【强制】单元测试应该是全自动执行的,并且非交互式的。...转载 2018-02-20 18:33:51 · 1579 阅读 · 1 评论 -
swagger2 API文档的框架 配置
随着互联网技术的发展,现在的网站架构基本都由原来的后端渲染,变成了:前端渲染、先后端分离的形态,而且前端技术和后端技术在各自的道路上越走越远。 前端和后端的唯一联系,变成了API接口;API文档变成了前后端开发人员联系的纽带,变得越来越重要,swagger就是一款让你更好的书写API文档的框架。pom.xml 添加依赖<!-- Restful API接口说明 生成 ...原创 2018-02-20 20:51:29 · 1526 阅读 · 1 评论 -
成员初始化
成员初始化对于方法的局部变量,假如没有初始化(赋值)java编译错误对于类的数据成员(字段)的基本类型,java自动初始化public class EurekaApplication { int i; long j; double k; EurekaApplication m; public static void main(String[] args) { new...原创 2018-02-24 18:25:36 · 1319 阅读 · 0 评论 -
数组初始化 可变参数
数组的初始化写在开始的话”:重构即重写代码,以使得它更可读、更容易理解,并因此更具有维护性。软件最大的投入到了代码的维护上,所以磨刀不误砍柴工。 数组只是相同类型的、用一个标识符名称封装到一起的对象序列或基本类型数据序列。数组有三种初始化方式第一种Integer[] a = new Integer[20];它现在还只是一个引用数组,直到通过创建新的Integer对象,并把对象赋值给引用,初始化进程...原创 2018-02-25 16:16:57 · 1085 阅读 · 0 评论 -
面试题:java垃圾回收的命令是什么及其执行过程
面试题:java垃圾回收的命令是什么及其执行过程首先:java内存是怎样分配的,对象是在5个地方存储数据1.寄存器 java不能操作寄存器,汇编语言可以直接操作寄存器,可以忽略器存在;2.堆栈 位于RAM(随机访问存储器)中,对象的引用存于堆栈中,其他语言例如c++,对象存于堆栈中3.堆位于RAM(随机访问存储器)中,对象存于堆中4.常量存储位于RAM(随机访问存储器)中,常量存放于此,例如:字符...原创 2018-02-22 18:18:03 · 2916 阅读 · 0 评论 -
方法重载和this关键字(总结无程序,纯手打)
一、方法重载1.构造器器重载是一种特殊的方法重载构造器没有返回值,没有修饰符,并且名字和类名相同(别的方法首字母小写,小驼峰)系统默认创建无参构造器,如自己定义有参的,则系统就不创建了,理论上无参构造器应该有。2.方法重载可以是不同顺序(一般不推荐),不同个数的形参组合,返回值不同不是方法重载a.需要注意类型提升的问题,如常数值9当做int值处理,所以如果某个重载方法接受int型参数,她就会被调用...原创 2018-02-22 19:42:03 · 1274 阅读 · 0 评论 -
java 代码块 静态代码块 构造代码块 普通代码块
今天有个同事问我关于代码块的问题 只记得静态代码块要提前执行 怕说错,查了资料,实测的一下,供大家参考public class book {{System.out.println("这里是构造代码块");//所有类中有一个默认的构造函数,这里的代码块为构造代码块,在类中的对象被创建时执行}public static void main(String[] args) {原创 2018-01-23 22:00:17 · 1252 阅读 · 0 评论