java学习

java学习

 

linux修改系统时间常用命令

设置时间伟2008年8月8号12:00
# date -s "2008-08-08 12:00:00"
修改完后,记得执行clock -w,把系统时间写入CMOS

posted @ 2016-05-05 17:27 杨军威 阅读(147) | 评论 (0)编辑 收藏

JavaScript匿名函数和全局变量,局部变量

 <script type="text/javascript" >
 (function(){
   i=10;
  function aa(){
   i=2;
  }
  aa();
  alert(i);
 })();

(function(){
   i=10;
  function aa(){
  var i=2;
  }
  aa();
  alert(i);
 })();

 </script>


在同一个js文件中,使用匿名函数,可以定义方法名相同的方法。
在函数里面没有var声明的变量会直接影响全局的变量,是因为在js中,如果某个变量没有var声明,
会自动到上一层作用域中去找这个变量的声明语句,如果找到,就使用,如果没有找到,继续向上查找,
一直查找到全局作用域为止。如果全局中仍然没有这个变量的声明语句,那么会自动在全局作用域进行声明,
这个就是js的作用域链 。
外部访问函数内部的变量是闭包实现的,函数内部的变量访问外部的变量是作用域链实现的

posted @ 2016-04-29 16:29 杨军威 阅读(763) | 评论 (0)编辑 收藏

this关键字

<html>
 <script type="text/javascript">
 /*作为普通函数来调用时,this的值指向window,
 准确的说,this为null,但被解释成window
 
 alert(window.xx);
 function t(){
  this.xx = 2;
 }
 t();
 alert(window.xx);
 */
 /*作为对象的方法来调用
 this指向方法的调用者,就是该对象
 var obj = {xx:11,yy:22,t:function(){alert(this.xx);}};
 obj.t();
 var dog = {xx:33};
 dog.t = obj.t;
 dog.t();
 */
 /*this作为方法调用时,this指向其调用者,即母体对象,
 不管被调用函数声明时属于方法还是属于函数
 var dog = {xx:33};
 show = function(){
  alert('show=' +this.xx);
 }
 dog.t = show;
 dog.t();
 */
 /*函数作为构造函数调用时
 js中没有类的概念,创建对象是用构造函数完成
 或者直接用json格式来创建对象
 new对象发生的步骤
 a:系统创建空对象{},空对象的constructor属性指向构造感受
 b:把函数的this指向该空对象
 c:执行该函数
 d:返回该对象
 */
  function Pig(){
   this.age = 2;
   return  'a';
  }
  var pig = new Pig();
  //返回Pig对象,因为函数作为构造函数运行时,
  //return的值是忽略的,还是返回对象
 </script>
</html>

posted @ 2014-12-07 20:16 杨军威 阅读(164) | 评论 (0)编辑 收藏

arguments对象

<html>
 <script type="text/javascript">
 /*arguments是一个对象,一个长得很像数组的对象*/
 /*arguments内容是函数运行时期的实参列表*/
 /*arguments.callee  属性代表当前运行的函数*/
 /*题目:不用函数名,使用匿名函数,完成递归*/
 alert((function(n){
  if (n<=1){
   return n;
  }else{
   return n+arguments.callee(n-1);
  }
 })(100));
 /*
  函数运行期内,关键的三个函数
  1:ao 如果本函数ao上没有属性,则继续去外层函数的ao
  上找,直到全局对象,叫做作用域链
  2:arguments  每个函数有自己的callee属性,但不向外层
  接着找arguments相关属性,不形成链
  
  
 */
 </script>
</html>

posted @ 2014-12-07 20:15 杨军威 阅读(202) | 评论 (0)编辑 收藏

js函数声明和函数表达式

<html>
 <script type="text/javascript">
 function t1(){}
 //t2=function(){}
 /*这2种方式效果是不同的
 t1是函数声明,全局内得到一个t1变量,值是function
 t2只是一个赋值过程,值是右侧的表达式的返回结果,即函数
 function(){}在js看来,就和3*3一样,是个表达式,返回一个结果
 因此t1,t2两种方式在词法分析时,有着本质区别
 前者在词法分析阶段就发挥作用
 后者在运行阶段才发挥作用
 
 
 */
 (function(window,undefined){alert(window);})(window);
 
 </script>
</html>

posted @ 2014-12-06 16:48 杨军威 阅读(190) | 评论 (0)编辑 收藏

javascript词法分析

<html>
 <script type="text/javascript">
 function a(b){
  alert(b);
  function b(){
   alert(b);
  }
  b();
 }
 //a(1);
 /*ao{b=fun}*/
 function aa(b){
  alert(b);
  b=function (){
   alert(b);
  }
  b();
 }
 aa(1);
 /*
 0:ao={}
 1:分析参数 ao={b=undefined},马上变成ao={b=1}
 2:分析var声明,没有
 3:分析函数声明,没有
 (注:b=function(){}是一个赋值过程,在执行期才有用)
 */
 /*词法分析
  分析3样东西
  第一步:先分析参数
  第二步:再分析变量声明
  第三步:分析函数声明
  一个函数能使用的局部变量,就从3步而来
  具体步骤:
  0:函数运行前的一瞬间,生成active object
  1:a.把声明的参数作为ao对象的属性,值都是undefined
   b.接收实参,形成ao对应属性的值
  2:分析变量声明,如var
   如果ao上还没有此变量声明,则把此变量作为ao属性,
   值是undefined
   如果ao上已经有了此属性,则不做任何影响
  3:分析函数声明,如function t(){}
  则把此函数作为ao的属性
  注:如果此前ao已经有了t属性,则以前的t被覆盖
 */
 function t1(age){
  alert(age);
 }
 //t1(1);
 function t2(age){
  var age = 99;
  alert(age);
 }
 //t2(1);
 function t3(g){
  var g = 'hello';
  alert(g);
  function g(){
   
  }
  alert(g);
 }
 //t3();
 
 </script>
</html>

posted @ 2014-12-06 16:47 杨军威 阅读(195) | 评论 (0)编辑 收藏

javascript词法分析

<html>
 <script type="text/javascript">
 function a(b){
  alert(b);
  function b(){
   alert(b);
  }
  b();
 }
 //a(1);
 /*ao{b=fun}*/
 function aa(b){
  alert(b);
  b=function (){
   alert(b);
  }
  b();
 }
 aa(1);
 /*
 0:ao={}
 1:分析参数 ao={b=undefined},马上变成ao={b=1}
 2:分析var声明,没有
 3:分析函数声明,没有
 (注:b=function(){}是一个赋值过程,在执行期才有用)
 */
 /*词法分析
  分析3样东西
  第一步:先分析参数
  第二步:再分析变量声明
  第三步:分析函数声明
  一个函数能使用的局部变量,就从3步而来
  具体步骤:
  0:函数运行前的一瞬间,生成active object
  1:a.把声明的参数作为ao对象的属性,值都是undefined
   b.接收实参,形成ao对应属性的值
  2:分析变量声明,如var
   如果ao上还没有此变量声明,则把此变量作为ao属性,
   值是undefined
   如果ao上已经有了此属性,则不做任何影响
  3:分析函数声明,如function t(){}
  则把此函数作为ao的属性
  注:如果此前ao已经有了t属性,则以前的t被覆盖
 */
 function t1(age){
  alert(age);
 }
 //t1(1);
 function t2(age){
  var age = 99;
  alert(age);
 }
 //t2(1);
 function t3(g){
  var g = 'hello';
  alert(g);
  function g(){
   
  }
  alert(g);
 }
 //t3();
 
 </script>
</html>

posted @ 2014-12-06 16:47 杨军威 阅读(149) | 评论 (0)编辑 收藏

javascript作用域

<html>
 <script type="text/javascript">
 /*作用域
 在js中,函数嵌套是非常普遍的,在函数嵌套中,
 对变量是如何寻找的?
 答:首先在函数内部寻找,如果需找不到,则在外层寻找。
 直到……全局(window)区域.从里往外寻找
 */
  var c=5;
  function t1(){
   var d=6;
   function t2(){
    var e =7;
    alert(c+d+e);
   }
   t2();
  }
 //t1();//18
 function t3(){
   var d=6;
   function t2(){
    var e =7;
     d =3;
    alert(c+d+e);
   }
   t2();
  }
 //t3();//15
 /*声明变量,var的作用
 var 是在函数运行的上下文中,声明一个变量,
 如果不加var,则是一个赋值操作,
 但是不要狭隘的理解为声明了一个全局变量
 */
 //alert(window.d);
 //alert(window.e);
 function t(){
  d=5;//d没有加var,仅仅是一个赋值操作,寻找
  //t域内的函数,如果没找到,继续向外寻找……到window
  //如果window中还没有d,创建d变量并赋值
  var e=6;
 }
 //t();
 //alert(window.d);
 //alert(window.e);
 function  t4 (){
  var d;
  function t2(){
   d=5;
   e=6;
  }
  t2();
 }
 //t4();
 //alert(window.d);//undefined
 //alert(d);// d is not defined
 //alert(e);
 /*
 注意:以window.xxx引用全局变量,寻找不到,
 作为window的属性不存在,返回undefined。
 直接以xxx引用,寻找不到,则报xxx is not defined
 */
 
 var s1='g';
 function  t5(){
  alert(s1);//g
  alert(s2);//is not defined
  s2 = 'lo';
 }
// t5();
 /*
 在t5中寻找s2,没有找到s2的变量声明,到window上寻找s2的变量声明,
 还是没有找到,报is not defined
 */
 
 function  t6(){
  alert(s1);//g
  alert(s2);//undefined
 var s2 = 'lo';
 }
 t6();
 /*
  解释:
  js代码自上而下执行,但是js代码的整体运行分为:
  词法分析期和运行期
  自上而下执行之前,先有一个词法分析过程。
  词法分析t6函数:
  声明了s2变量,但是没有对s2赋值,只有在运行期才赋值
  因此s2=undefined。
  执行t6函数:
  alert(s1);//g
  alert(s2);//undefined
  s2 = 'lo';
 */
 </script>
</html>

posted @ 2014-12-06 16:45 杨军威 阅读(168) | 评论 (0)编辑 收藏

hibernate实体类映射父子关系

/**
 * 任务实体类
 */
@Entity
@Table(name = "t_task")
public class Task implements Serializable {

    /**
  *
  */
 private static final long serialVersionUID = 1L;
 private Long id;
    private String name;
 
    //计划开始时间
    private Date plan_startTime;
  
    private Project project;
    //父任务
    private Task parent;
 
    // 子任务
    private Set<Task> children = new HashSet<Task>();

 

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id")
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

 
    @Temporal(TemporalType.TIMESTAMP)
    public Date getPlan_startTime() {
        return plan_startTime;
    }

    public void setPlan_startTime(Date plan_startTime) {
        this.plan_startTime = plan_startTime;
    }


    @ManyToOne(optional = false, cascade = {CascadeType.REFRESH, CascadeType.MERGE})
    @JoinColumn(name = "projectId")
    public Project getProject() {
        return project;
    }

    public void setProject(Project project) {
        this.project = project;
    }

    @ManyToOne(cascade = {CascadeType.REFRESH, CascadeType.MERGE})
    @JoinColumn(name = "parentId")
    public Task getParent() {
        return parent;
    }

    public void setParent(Task parent) {
        this.parent = parent;
    }

    @OrderBy("id ASC")
    @OneToMany(mappedBy = "parent", fetch = FetchType.LAZY, cascade = {CascadeType.ALL})
    public Set<Task> getChildren() {
        return children;
    }

    public void setChildren(Set<Task> children) {
        this.children = children;
    }

  
 
}

posted @ 2013-11-07 14:40 杨军威 阅读(497) | 评论 (0)编辑 收藏

自定义java annotation

@Retention(RetentionPolicy.RUNTIME)

public @interface MyAnnotation {

 public String key();
 public String value();
}



@MyAnnotation(key = "k", value = "v")
public class UserAnnotation {
 @MyAnnotation(key = "km", value = "vm")
 public void sayHello() {
  System.out.println("111");
 }

 public static void main(String[] args) throws Exception {
  Class<?> cla = Class
    .forName("com.kaishengit.annotation.UserAnnotation");
  Method[] methods = cla.getMethods();
  boolean flag = cla.isAnnotationPresent(MyAnnotation.class);
  System.out.println(flag);
  if (flag) {
   MyAnnotation mya = (MyAnnotation) cla
     .getAnnotation(MyAnnotation.class);
   System.out.println(mya.key() + "====" + mya.value());
  }
  Set<Method> set = new HashSet<Method>();
  for (int i = 0; i < methods.length; i++) {
   boolean otherflag = methods[i]
     .isAnnotationPresent(MyAnnotation.class);
   if (otherflag) {
    set.add(methods[i]);
    System.out.println(methods[i].getName());
   }

  }
  for (Method method : set) {
   MyAnnotation name = method.getAnnotation(MyAnnotation.class);
   System.out.println(name.key());
   System.out.println("value===:" + name.value());
  }

 }
}

posted @ 2013-09-11 17:22 杨军威 阅读(192) | 评论 (0)编辑 收藏

仅列出标题
共43页: First 上一页 11 12 13 14 15 16 17 18 19 下一页 Last 

导航

统计

常用链接

留言簿

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜