分类 唠嗑 下的文章

前段时间刚刚结束了我的18岁生日,一些很久不联系的朋友给我送上了祝福。
简单的回忆一下最近几年发生的事情吧,很多人timg.jpg都已经知道我的经历了,高三辍学,学习编程,那个时候不到17岁,16岁可以说是,15岁左右就开始
接触一点互联网灰色的产业,跟几个大哥哥一起写脚本赚一点收入,也算是满足了当时我一点点的虚荣心吧。
我觉得,我长得那一瞬间是有一次放学回家,我把书房门一关上,书包中的书本取出来,电脑打开(假装写作业),然后每天看行业动态,写脚本更新
软件,然后老妈一来我就假装写作业,然后那一天晚上,我觉得这样不是一个长久之计,就给妈妈坦白:“我想正规训练一下计算机”,就这样我就来到了西安某技校大专。
在这之前,我觉得我的技术在同龄人已经很超前了,所以有沾沾自喜的自豪感:但是现实把我狠狠的打击一番,我几乎浪费了一年的时间,为什么这么说呢?我的这个浪费指的是没有那种渴望学习,因为没有学习路径,很迷茫很迷茫,到18年,我停了手里所有的业务线,只剩下一个博客;18年的6月份开始学习前端+Java;随身带笔记本,去图书馆查资料,看视频,看纯英文官方文档;对我的提升无疑是最大的,在短短几个月时间,我认识了非常多的好友,有跟我一样学习中的,有已经工作的程序员,他们有时候讨论的问题总是是我的下一个学习知识点,在当时我的技术栈是Vue和Java;
转折发生了,班上应该是感觉到了快毕业了(为期2年),很多开始找工作的,测试啊,运维一大堆,都想找,我也想找,但是我有点坐井观天,想去面试看看面试官问我什么,我就写好简历(18岁,大专),去投了西安3个小厂,只有一个通知我面试:
面试跟一个好朋友一起去的,他的原生js有正规的学习过,他21岁,当兵出来的;我就去了,那是一个比较大的小区,里面就是工作室,大概就是7个人左右的小团队,进去之后,老板不在,ok我忍,一个php的老阿姨(20出头吧)来跟我聊了一下,我就跟他说,简单的介绍了一下自己,我还以为他要问原生js的一些知识点或者vue的hook,或者通信协议之类的等等,结果什么都没问,说:“我们最近有一个项目是vue的,所以想找一个vue有经验的带带我们,我们也在学习” , 我懵了,朋友也懵了,这算什么?逗我吗?然后又问我:“会php吗?” 我说:“学过2天,但是如果需要这个的话,我可以一周上手一下框架快速学习一下” 她说:“你只会java是吧?” 我说:“是的” 她说:“nuxt框架会吗” (她当时说的是读的英文字母拼起来的) 觉得好不专业,我说我会,昨天还看了一些文档。 然后她又想了一下:“她说今天早上来了2个前端的再等通知,说简历先放在我这里,有实习机会的话就给我说” (百分之99凉了) 我觉得这次面试的尴尬有几个原因:“准备太仓促,那个时候才17岁,不能录用,简历太草率,项目经验没有写全等很多原因” 这次面试对我的帮助很大,我找到了方向,出了那个大门之后,我心中的自信伴随着复仇之火又起来了,接下来的2个月我学习了很多东西,也安排了明年和过年的计划。

这两天解决了2天的bug,关于java的,老师也束手无策,我已经再崩溃的边缘,今天写这个文章是要警醒我自己,不能放弃任何一件事情,年龄虽小,可以用技术征服,但是心智小,是真的结束了。

很久没更新了,最近写了很多笔记,读者可以下载印象笔记,可以分享出来大家一起研究一下。

github地址:https://github.com/1018715564
知乎:@胖版吴彦祖
wechat:meng99huan

java反射机制运行状态中,对于任何一个类,都可以知道这个类所有属性和方法,对于任何一个对象,都可以调用它的任何一个方法,
这种动态获取信息或者动态调用功能称之为反射机制

获取Class的四种F方法:

例子:

                                                  //获取Class—getClass方法 
                                          test ts=new test();
                                       Class cl=ts.getClass();
                                          System.out.println(cl);
                                              //获取Class—Class.forName方法  
                                                 try {
                                                              Class cl=Class.forName("com.entity.test");
                                                              System.out.println(cl);
                                                    } catch (ClassNotFoundException e) {
                                                              // TODO Auto-generated catch block
                                                           e.printStackTrace();
                                                   }
                                              //获取Class—类名.class方法 
                                                             Class cl=test.class;
                                                             System.out.println(cl);
                                              //获取Class—包装类.type
                                                                        Class cl=Boolean.TYPE;
                                                                        System.out.println(cl);

推荐getclss方法和类名直接.class方法。
1.Filde类,获取成员属性

                                               //1.Filed类获取成员变量
                                              //2.获取Class
                                                        Class cl=test.class;
                                                        Object obj=cl.newInstance();
                                                        //获取指定对象
                                                        Field name=cl.getDeclaredField("name");
                                                        //公有化
                                                        name.setAccessible(true);
                                                        //拿到值
                                                        System.out.println(name.get(obj));

PS:文字说明【首先先拿到Class,然后通过test类中的无参构造函数来获取对象newInstance(),然后用Class获取名为name的属性,然后破坏封装 name.setAccessible(true); 然后通过Field对象从test对象Obj中拿到name name.get(obj)】
2)获取全部属性变量

                                                        //1.Filed类获取成员变量
                                              //2.获取Class
                                                        Class cl=test.class;
                                                        Object obj=cl.newInstance();
                                                        //获取指定对象
                                                        Field fields[]=cl.getDeclaredFields();
                                                        //循环里面的内容
                                                        for (Field field : fields) {
                                                                  System.out.println(field.getName());
                                                        }
1. 

获得Methods全部方法

                                                        //获取Class
                                                        Class cl=test.class;
                                                        Method me[]=cl.getDeclaredMethods();
                                                        for (Method method : me) {
                                                                  System.out.println(method.getName());
                                                        }
2)获得Method某个方法,不带参数
                                                        //获取Class
                                                        Class cl=test.class;
                                                        Object obj=cl.newInstance();
                                                        //调用ccc方法
                                                        Method me=cl.getDeclaredMethod("ccc",new Class[]{});
                                                        Object re=me.invoke(obj, new Object[]{});

3)获得Method某个方法,带参数

                                                        //获取Class
                                                        Class cl=test.class;
                                                        Object obj=cl.newInstance();
                                                        //调用ccc方法
                                                        Method me=cl.getDeclaredMethod("ccc",new Class[]{String.class,int.class});
                                                        Object re=me.invoke(obj, new Object[]{"谢振坤",88});

3.构造方法,获取全部无参构造方法

                                                        //获取Class
                                                        Class cl=test.class;
                                                        Object obj=cl.newInstance();
                                                        //调用构造方法
                                                        Constructor gz[]=cl.getConstructors();
                                                        for (Constructor constructor : gz) {
                                                                  System.out.println(constructor);
                                                        }

1)获取单独的构造方法,无参

                                                      Class cl=test.class;
                                                      Constructor gz=cl.getConstructor();
                                                        test t=(test) gz.newInstance();
                                                        System.out.println(t);

2)获取单独的构造方法,有参

                                                      Class cl=test.class;
                                                      Constructor gz=cl.getConstructor(String.class,int.class);
                                                      test t=(test) gz.newInstance("张三",67);
                                                       System.out.println(t);

4.反射ARR数组

                                                        //获取Class,这里定义arr的数据类型
                                                        Class cl=Class.forName("java.lang.Object");
                                                        Object arr=Array.newInstance(cl, 5);
                                                        //通过reflact包中的Array来设置名为arr,第3个值为5
                                ![下载.jpg][1]                        Array.set(arr, 3, 5);
                                                        //通过reflact包中的Array来获取名为arr,第3个值
                                                        Object elem=Array.get(arr, 3);
                                                        System.out.println(elem);
                                            
            

                                                    
            

今天又是充满希望的一天,就跟着案例教程做了一个vue的小项目,但是虽然说很简单,但是在学习的过程中,对于没有多少js的基础的人来说
是比较困难的,项目的关键的地方就是用了vue的三个进行交互的方法,get,post,jsonp
--语法
引入vue交互模块,resource.js,然后直接在方法中this.$http.get(post(jsonp)) 第一个参数是url路径,第二个参数是数据,然后通过then.funcition,分别是成功返回的方法,和失败返回的方法
--需要特别提示一点的就是在post的提交的时候需要把emulateJSON:true,加入到第三个参数中并且用{}包裹起来
--在jsonp跨域中,callback的默认名字就是callback,但是在百度中,默认的名字为cb,所以在调用接口的时候,需要声明callback的名字为cb,所以要在第三个参数中声明jsonp:'cb',这样我们就可以正常调用了。

po一下代码,代码的功能就是简单的百度搜索功能,输入东西按回车也会直接跳到一个百度搜素结果页中,调用了windows.open配合百度的搜索接口,把
参数换成输入框中的数据即可。

<!DOCTYPE html>

<meta charset="UTF-8">
<title>百度下拉菜单</title>
<script src="bootstrap.js"></script>
<script src="bootstrap.min.css"></script>
<script src="vue.js"></script>
<script src="vue-resource.js"></script>



<div id="box">
    <input type="text" class="input-group" v-model="text" @keyup="get($event)" @keydown.down="down()" @keydown.up.prevent="up()" @keydown.enter="enter()">
    <ul>
        <li class="list-group" v-for="(li,$index) in mydata" :class="{grey:$index==now}">{{li}}</li>
    </ul>
    <p v-show="mydata.length==0">暂无数据。。。</p>
</div>


u=1436948145,4270509323&fm=200&gp=0.jpg

4afbfbedab64034f29596c8ba6c379310b551da2.jpg
众所周知,AngularJS框架是由Google维护的,但是创立者为个人,后被收购,昨天在学习Vue语法的时候,了解到键盘监控的事件,尤大大让我很震惊的
居然用如此的方式来简化代码,往常都是调用keyCode方法来监控键盘输入的键码,但是在vue中,作者封装了直接在键盘事件的后面.出来就好。

--比如说,@keyup.enter="",意思监控enter键,于此同时,还可以.出对应的键码,比如说enter是13,那么在代码中13就可以代替enter目前我简单的测试了一下,delete,还有方向键,end键等做出了封装,非常nice,简化了代码
代码的思路令人称奇,尤大大也是HTML5的Clear的打造人

--膜拜完毕,总结一下今天的知识,今天学习特别少,因为都在没有信号的狭小的旅途中,明天就可以回归正轨
事件:

v-on:click/mouseover......

简写的:
@click=""        推荐

事件对象:
    @click="show($event)"
事件冒泡:
    阻止冒泡:  
        a). ev.cancelBubble=true;
        b). @click.stop    推荐
默认行为(默认事件):
    阻止默认行为:
        a). ev.preventDefault();
        b). @contextmenu.prevent    推荐
键盘:
    @keydown    $event    ev.keyCode
    @keyup

    常用键:
        回车
            a). @keyup.13
            b). @keyup.enter
        上、下、左、右
            @keyup/keydown.left
            @keyup/keydown.right
            @keyup/keydown.up
            @keyup/keydown.down
        .....

hello,还是你们熟悉的老沈,今天下午看了智能社的一节课,受益匪浅啊,学习vue的过程中掌握了很多boot和js的语法,又请输入图片描述
跟着导师自己做了一个留言板的小案例。

--案例感受,vue的入门是真的很简单,学到了vue的自定义指令,能够很快的做一个非常实用的留言板,但是由于是前端页面,不能数据保存
,等到后期教师满意度的项目结束以后,会写一个购物网站,把vue+bootstrap+javabean能够完整的做一个项目。
--先po一下代码吧。
<!DOCTYPE html>

<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="bootstrap.min.css">
<script src="jquery-3.0.0.js"></script>
<script src="bootstrap.min.css"></script>
<script src="vue.js"></script>


简易留言板

序号 用户名 年龄 操作
{{$index+1}} {{item.username}} {{item.age}}

暂无数据。。。


--js代码
new Vue({

el:'#window',
data:function () {
    return{
        message:[],
        username:'',
        age:'',
        Nowindex:'-99'
    }
},
methods:{
    submit:function () {
        this.message.push({
            name:this.username,
            age:this.age
        });
        this.age='';
        this.username='';
    },
    nowdelete:function (index) {
        if(index==-2){
            this.message=[]
        }else{
            this.message.splice(index,1);
        }
    }
}

})

--得引入jq和boot和vue
--案例功能,能够提交表单信息到下方的表格,以及删除
--用到的vue指令
v-model的表单双向数据绑定
v-for循环vue数组内容
--ps:在vue2.0的版本中,不能直接使用$index来表示序列了,要在for循环声明index的存在,比如v-for="(item,$index) in message
--ps:vue的点击事件v-on:click,如果后面跟的方法名如果有参数要表达的话,要写成@click="submit($index)",类似这种

明天继续,结束!