分类 唠嗑 下的文章

这阵子,一个前端的vue项目已经结束了,也自己上线了,对自己提升很大,巧逢今天和导师聊天,聊到了工作。
我们的背景就是,大专的学历和2年的学习经历,同期的2位非常好的朋友经导师推荐去朋友小厂面试;
由于这层关系,也就是需要2个”码农“,几个月整一个后端管理系统,对技术要求不高(ssm会做增删改查);
但是据说面试了一个月的应届生和培训出来的,没找到一个合适的,没有写出一个增删改查。

当时知道这个小厂对于我的2位朋友有着磨练的机会,所以今天就去了,结果3个小时之内,做到第二个小时就委婉的
让他们走了,我个人心里觉得有这样几个原因:

1.紧张(第一次这种环境下的机试)
据我所知,这两位朋友code功底蛮深的,不谈什么高大上的分布式线程熔断乱七八糟的技术,就光增删改查玩的还是很6的)
2.轻易相信的自己
我们的学校尤其是我们班都是以实战为主,2年不知道做过多少demo和项目练习,对自己的技术过于自信,没有认真准备,
导致轻视了这个机会,我相信他们一定会引以为戒

关于这个基础重要还是高大上的技术重要呢?
其实我的客观理解就是:深入java基础很重要,高大上技术是通过第三方的渠道了解到的,比如别人,视频,工作
所以为了我们这种即将春招的应届毕业生不要追求很多新潮的技术,也不要忘记了,不要轻信任何一个demo或者练习

前段时间刚刚结束了我的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
        .....