java实体类属性和注释转成Map<String,String>格式 实体类中的属性和注释转换格式,返回给前端。根据类型的不同,动态的展示表头数据。2.1首先根据传参判断,得到需要转换的实体类。2.2利用实体类上的@JsonProperty注解,去解析。2.3具体的解析方法...
Java8对List<T>数据进行分组转成Map<String,List<T>>格式 从数据库中查的数据是一个List集合,现在需要把集合中的元素按照MetaDataInfo中的type进行分组,并组装成Map格式,便于前端展示3.说明用到了java8中的Collectors.groupingBy(),按照括号中的条件进行分组...
Java由根目录遍历到子目录,由子节点遍历回溯到根目录 1.需求说明:把整个目录树包括目录下的叶子节点(数据),一次性返回。思路:a.首先获取到根目录的信息,然后查询到根目录下的数据。b.由根目录找到根目录下的子目录,然后递归调用 public List<DataClassInfoVo> query(List<DataClassInfoVo> dataObjectClassListOneSort){ for(int i=0;i<dataObjectClassListOneSort.size()
Java获取sql语句where条件后的语句 需求说明:从sql语句中截取where条件后的语句示例:从下面语句中只截取 a.name="xx" and a.age="15";select * from a where a.name="xx" and a.age="15"; 解决办法:用到的是Jsqlparser1.首先引入对应的依赖2.直接代码 /** * 获取SQL中的where后面的条件 * * @param sql * @return * @throws JSQ
Java拼接sql,并组装成建表语句 需求分析:前端传过来的字段,后端组装成sql的建表语句。例子:前端传过来:字段名称,字段类型,字段长度,非空,是否主键username(主键) varchar(30),pwd varchar(30),user表名,用户表:中文名。后端需要组装成建表语句。CREATE TABLE USER (username VARCHAR ( 30 ) NOT NULL COMMENT '用户名',pwd VARCHAR ( 30 ) NOT NULL COMMENT '密码',PRIMARY KE
java中json格式的字符串和javabean互转 要实现javabean和json字符串互转,需要json的jar包jar包liapackage com.it;import com.alibaba.fastjson.JSONObject;public class TestJson { public static void main(String[] args) { // json格式的字符串转javabean Str...
MySql锁 根据加锁的范围,Mysql里面的锁大致可以分为全局锁,表级锁和行锁三类。全局锁全局锁就是对整个数据库实例加锁。Mysql提供了一个加全局读锁的方法,命令是Flush tables with read lock(FTWRL)。当需要让整个库处于只读的状态,可以使用这个命令,之后其他线程的以下语句会被阻塞:数据更新语句(数据的增删改)、数据定义语句(包括建表、修改表结构等)和更新类事务的提交语句。全局锁的典型使用场景是,做全库逻辑备份。也就是把整库每个表都select出来存成文本。...
Java8 Stream 增强 之前有写过一些简单的案例链接,欢迎大家指点、点赞、评论。这次分享,工作中可能会用的到一些增强的stream方法基础代码public class User { private int id; private String username; private String pwd; public int getId() { return id; } public void setId(int id) { this.id
Java8 Stream Stream的定义定义和基本概念学了知识不运用,等于耕地不播种,话不多说,我们开始操作基础代码模型public class TestList { public static void main(String[] args) { ArrayList<User> list = new ArrayList<>(); list.add(new User(1,"zhangsan1")); list.add(new User(
java运行时数据区域 程序计数器 是一块较小的内存空间,可以看作是当前线程执行的字节码的行号指示器。在虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器完成。由于java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,在任何一个确定的时刻,一个处理器都只会执行一条线程中的指令。因此,为了线程切换后能恢复到正确的执行位置,每条线程都需要一个独立的程序计数器,各条线程之间计数器互不...
Java虚拟机类加载机制 类加载的时机 类从被加载到虚拟机内存开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用、卸载7个阶段。其中验证、准备、解析统称为连接。 什么情况下需要开始类加载过程第一个阶段:加载?这一点java虚拟机并没有约束,但是对于初始化阶段,虚拟机严格规定了有且只有5种情况必须立即对类进行初始化(而加载等阶段是在初始化之前)。1)遇到new、getstatic、putstatic、或invokestatic这4条字节码指令时,如果类没有进行过初始化,需...
java 对象的内存布局 从今天开始,我会在这里记录jvm相关的内容,一方面自己可以随时复习,另一方面分享给有需要的读者,大家一起努力一起进步。分享来源《深入理解Java虚拟机》-周志明著在HotSpot虚拟机中,对象在内存中存储的布局可以分为3块区域:对象头、实例数据、对齐填充对象头Mark Word HotSpot虚拟机的对象头包含两部分信息,第一部分用于存储对象自身的运行时数据,如哈希码、GC分代年龄、锁状态标志、线程持有的锁、偏向锁ID、偏向时间戳等,这部分的数据长度在32位和64位的虚拟机...
Java中“...“的含义 Java中3个点的含义是:不定参数个数,也就是动态的参数个数举个例子public class StringCopy { public static void main(String[] args) { String[]a={"hello", "world", "123", "china", "csdn", "com"}; ArrayList<String> list = new ArrayList<>(); list.
Spring的动态代理 1.概念通过代理类为原始类新增额外功能2.编码定义接口public interface UserService { public void register(User user); public boolean login(String name, String password);}定义实现类public class UserServiceImpl implements UserService { @Override public voi
Java代理设计模式-静态代理 1.概念a.通过代理类,为原始类增加额外的功能b.好处:利于原始类的维护2.代理类开发的核心要素代理类=原始类+额外功能+代理类和原始类实现相同的接口3.代理类的方式静态代理、动态代理。4.静态代理编码定义接口public interface UserService { public void register(User user); public boolean login(String name, String password);}定义实现
Java 反射获取类的属性和父类的属性 定义两个类Person是父类,Student是子类public class Person { private String username; private String grade;}public class Student extends Person { private String sex;}通过反射分别获取父类和子类的属性public class ReflectTest { public static void main(String[
java基于子类的动态代理 基于子类的动态代理:如果是maven工程则需先引入依赖<dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>2.1_3</version></dependency>提供方:第三方cglib库创建代理类的要求:被代理类不能是final类public class Cli.
java基于接口的动态代理 用到的类:Proxy(由jdk提供)用到的方法:newProxyInstance()实现接口的动态代理前提:被代理的类至少实现一个接口,如果没有则不用使用接口的动态代理/** * 对手机商要求的接口 */public interface IProducer { /** * 卖手机 * @param money */ public void saleProduct(float money); /** * 产品售后
ArrayList原理扩容解析(jdk1.8) 1.先模拟数组扩容需要的条件 ArrayList<Object> list = new ArrayList<>(); for(int i=1;i<=10;i++){ list.add(i); } list.add(1,"zhaoliu");2.当开始添加第11个元素时,会调用add(index,element)方法,开始进行下标判断,调用ensureCapacityInternal方法,参数值为