package get_class_method; public class ReflectDemo { /** * @param args */ public static void main(String[] args) { getClassObject1(); getClassObject2(); getClassObject3(); } public static void getClassObject1(){ Person p = new Person(); System.out.pr…
是在运行状态中,对于任意一个类 (class文件),都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性: 这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制. 动态获取类中信息,就是java反射 .可以理解为对类的解剖. 反射机制图解说明: 先创建一个字节码文件: public class Person { private int age; private String name; public Person(String name,int…
除了在html中自己手写form表单外,django还可以通过 继承django.forms.Form 或django.forms.ModelForm两个类来自动生成form表单,下面依次利用三种方式来实现form表单,实现向数据库中添加书籍的页面,效果如下: 首先在models类中定义了Book,Author和Publish类,并定义了关联关系,publish,author和book分别为一对多和多对多关系,代码如下: class Book(models.Model): title = mod…
许多小伙伴对于java中的三种初始化块的执行顺序一直感到头疼,接下来我们就来分析一下这三种初始化块到底是怎么运行的.有些公司也会将这个问题作为笔试题目. 下面通过一段代码来看看创建对象时这么初始化块是如何运行的 package com.hxy; public class CodeBlock{ public static void main(String[] args) { new HelloB(); // new HelloB(); } } class HelloA{ //无参构造器 publi…
java多线程都有几种方式 有三种: (1)继承Thread类,重写run函数 创建: class xx extends Thread{ public void run(){ Thread.sleep(1000) //线程休眠1000毫秒,sleep使线程进入Block状态,并释放资源 }} 开启线程: 对象.start() //启动线程,run函数运行 (2)实现Runnable接口,重写run函数 开启线程: Thread t = new Thread(对象) //创建线程对象 t.star…
现在app都做的越来越炫酷,各种动画效果,各种特效很好的提高了用户的体验.很多app在登录界面都使用了动画效果,比如Uber,Keep,QQ等等.这些动画效果基本都是使用gif或者MP4来实现的. 效果图: 这里提供3种方式实现登录界面动画,有需要的同学可以参考一下 1.video篇,使用avplayer加载video来实现效果 实现步骤基本上是初始化播放器,然后加载video,有几个注意点:1.导入头文件#import <AVFoundation/AVFoundation.h> 2.app进…
通过前面几篇的分析,我们知道代理类是通过Proxy类的ProxyClassFactory工厂生成的,这个工厂类会去调用ProxyGenerator类的generateProxyClass()方法来生成代理类的字节码.ProxyGenerator这个类存放在sun.misc包下,我们可以通过OpenJDK源码来找到这个类,该类的generateProxyClass()静态方法的核心内容就是去调用generateClassFile()实例方法来生成Class文件.我们直接来看generateClas…
代理模式 代理(Proxy)是一种设计模式,提供了间接对目标对象进行访问的方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的功能上,增加额外的功能补充,即扩展目标对象的功能. 这就符合了设计模式的开闭原则,即在对既有代码不改动的情况下进行功能的扩展. 举个例子来说明代理的作用:明星与经纪人之间就是被代理和代理的关系,明星出演活动的时候,明星就是一个目标对象,他只要负责活动中的节目,而其他琐碎的事情就交给他的代理人(经纪人) 来解决.这就是代理思想在现实中的一个例子. 静态代理…
普通for循环语法: for (int i = 0; i < integers.length; i++) { System.out.println(intergers[i]); } foreach 循环语法: for(Integer in : integers){ System.out.println(in); } 今天我们来比较一下两种for循环对ArrayList和LinkList集合的循环性能比较.首先简单的了解一下ArrayList和LinkList的区别: ArrayList:Arra…
我们学习数组比较常用的数组排序算法不是为了在工作中使用(这三个算法性能不高),而是为了练习for循环和数组.因为在工作中Java API提供了现成的优化的排序方法,效率很高,以后工作中直接使用即可 .   快速排序.冒泡排序.插入排序等排序算法在公司笔试题中会经常出现,所以是很有必要掌握的. 快速排序法主要是运用了Arrays中的一个方法Arrays.sort()实现. 冒泡法是运用遍历数组进行比较,通过不断的比较将最小值或者最大值一个一个的遍历出来.选择排序法是将数组的第一个数据作为最大或…