程序猿随想

来源:互联网 发布:竞彩缩水软件 编辑:程序博客网 时间:2024/06/10 00:30

  • 5.30杂谈
    今天先记录几个关键词吧(Android学习方面),也很迟了zzz: 多线程、反编译(dex2jar和jdgui)、okhttp、retrofit(对okhttp进行封装)、学习网站:CSDN、Github、appxcode、博客园(cnblogs)、极客学院、CSDN学院、Android官网、Segmentfault、cnbeta(资讯类)。

  • 5.31随想

    今天还是主要在学习之前下好安装好的IntelliJ IDEA的使用,上手也不算难,也试了一个web项目和一个用了SSH框架的web项目,很爽 (≧▽≦)/和Eclipse、Myeclipse相比较只能用四个字形容感受:相见恨晚!╮(╯▽╰)╭ 1.8的JDK环境加Tomcat8的本地服务器,不知道是IDE优化了还是各种加成,重新部署项目很快,点一下Run汤姆猫6,7秒就Redeploy好了,这可真是比用Myeclipse+JDK1.6+Tomcat7快的多了。还有一个必须提的就是代码提示很强大,快键键也很多(因为和Android Studio是同平台产品的所以快捷键完全一样)。说说遇到的问题吧,最令我印象深刻的是,这Spring的applicationContext.xml里面配的数据库连接改了之后还是原来那个数据库,很怪,用IDEA自带的Database管理工具改变了连接的数据库参数好像也是没有什么变化,后台的Hibernate的DAO还是会到原来那个数据库那里去访问数据,甚至我把applicationContext.xml数据库的连接信息的

     <property name="url"value="jdbc:mysql://localhost:3306/xyb"></property>

去掉最后的数据库名字(xyb)变成 “jdbc:mysql://localhost:3306/” 这样居然也能对数据访问和操作,而且还是最初的那个数据库(xyb),这真是日了鬼了,确实是没怎么想明白——6月2日补充:是可以在hbm.xml中更改连接的数据库名字的,疏忽了

//Account.hbm.xml<hibernate-mapping>    <class name="com.po.Account" table="account" catalog="xyb">    ……</hibernate-mapping>

,对了,IDEA里用SQL语句也有代码提示,,挺方便的吧。还有Android Studio里菜单栏下面有一排工具栏,怎么IDEA里一个都没了,嗯,原来是要手动显示菜单栏中的View->Toolbar,打上勾就出来了。
默认不显示工具栏Toolbar
打开了Toolbar
然后今天还更熟悉了foreach遍历集合,发现(对于我算是发现了)当集合中没有元素时(不为NULL)用foreach去遍历并且在遍历中使用遍历的对象并不会报出异常,这就很明显了,当遇到不为NULL的空集合时foreach一次也不会循环,这真是奈斯。


  • 6.1记录

    IDEA关闭重复代码检测:Settings->搜索Duplicated code,把勾取消。

    SSH框架下的用JUnit和Spring-test进行单元测试(直接在单元测试类中操作和验证数据库中的数据)。参看文章《SSH框架下用JUnit+spring-test单元测试》。
    今天还熟悉了Map用entrySet遍历的方法,并且将Map对象作为List集合的元素。entry就相当于Map中的一个实体。通过entry.getKey( )和entry.getValue( )方法可以很方便地得到这个实体的键和值。上代码了。

       List<Map<String,String>> list1=new ArrayList<Map<String,String>>();        Map<String,String> map1=new HashMap<String, String>();        map1.put("heihei", "heihei");        map1.put("haha", "haha");        Map<String,String> map2=new HashMap<String, String>();        map2.put("lel", "lele");        map2.put("nunu", "nunu");        list1.add(map1);        list1.add(map2);        String ke;        String va;        for(Map.Entry entry2:map2.entrySet()){            ke=entry2.getKey().toString();            va=entry2.getValue().toString();            System.out.println("key:"+ke+", "+"value:"+va);        }

输出:
key:lel, value:lele
key:nunu, value:nunu

遍历以Map为集合元素的List:

        for(Map<String, String> map3:list1){            Iterator iterator2=map3.entrySet().iterator();            while(iterator2.hasNext()){                Map.Entry entry=(Map.Entry)iterator2.next();                ke=entry.getKey().toString();                va=entry.getValue().toString();                System.out.println("key:"+ke+", "+"value:"+va);                System.out.println("");            }

输出:
key:haha, value:haha

key:heihei, value:heihei

key:lel, value:lele

key:nunu, value:nunu


  • 6.4记录
    Java判断字符串内容是否为数字方法之一:利用正则表达式
String str="64738";boolean result=str.matches("[0-9]+");//result为true或false//matches方法判断是否匹配所给的正则表达式

判断是否为浮点数:

  public static boolean isDouble(String str) {        Pattern pattern = Pattern.compile("^[-\\+]?[.\\d]*$");        return pattern.matcher(str).matches();      }  

final关键字修饰时该类不能被继承
final关键字修饰方法时该方法不能被其子类方法覆盖(覆盖表示子类方法中参数类型、或参数个数、或参数顺序不同)
final关键字修饰变量时该变量的值不能改变,该变量不能再去指向别的对象,一旦初始化后无法改变。但其指向的对象的值可以改变,如:

static String b="222";final static String a=b;System.out.println(a);//输出"222"b="3333";  System.out.println(b); //输出"3333"System.out.println(a);//还是输出"222",因为前面已经初始化赋值了b的值"222",值不再更改

  • 6.9随想
    Java中一个方法中的匿名内部类调用该方法中的局部变量时,该变量必须在方法中声明为final,如
        final TextView tvtopkymn=(TextView)popupView.findViewById(R.id.tvtopktmn);        tvtopkymn.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                tvtopkymn.setText("我是调用final变量");            }        });

这是为了克服局部变量和内部类之间生命周期的不一致性,内部类的生命周期比方法(等同于局部变量的生命周期)要长。设想一下:方法f被调用,从而在它的调用栈中生成了变量i,此时产生了一个局部内部类对象 inner_object,它访问了该局部变量i .当方法f()运行结束后,局部变量i就已死亡了,不存在了.但:局部内部类对象 inner_object还可能一直存在(只能没有人再引用该对象时,它才会死亡),它不会随着方法f()运行结束死亡.这时:出现了一个”荒唐”结果:局部内部类对象 inner_object要访问一个已不存在的局部变量i!


  • 6.16记录
    java.lang.String中的split方法,实现方法为
    public String[] split(String regex)根据给定正则表达式的匹配拆分此字符串,将所有符合条件的都拆分完全,相当于下面一种的limit参数为0。
    或者
    public String[] split(String regex,int limit)根据匹配给定的正则表达式来拆分此字符串,limit参数限制目标数组中的元素个数,即该模式最多应用(limit-1)次就不再继续往下拆分;如果limit为0,则拆完为止,和不带这个limit参数结果一样。
    举个栗子
public class Test{   public static void main(String args[]){      String Str = new String("Welcome-to-cheetahlou-cheetah.com");      for (String retval: Str.split("-", 2)){         System.out.println(retval);      }      System.out.println("");      for (String retval: Str.split("-", 3)){         System.out.println(retval);      }      System.out.println("");//limit参数为0      for (String retval: Str.split("-", 0)){         System.out.println(retval);      }      System.out.println("");//无limit参数,其实就是limit参数为0      for (String retval: Str.split("-")){         System.out.println(retval);      }   }}

输出结果将是:

Welcome
to-cheetahlou-cheetah.com

Welcome
to
cheetahlou-cheetah.com

Welcome
to
cheetahlou
cheetah.com

Welcome
to
cheetahlou
cheetah.com

另外,
1、如果用“.”作为分隔的话,必须是如下写法:String.split("\\."),这样才能正确的分隔开,不能用String.split(".");
2、如果用“|”作为分隔的话,必须是如下写法:String.split("\|"),这样才能正确的分隔开,不能用String.split("|");
“.”和“|”都是转义字符,必须得加”\”;
3、如果在一个字符串中有多个分隔符,可以用“|”作为连字符,比如:“a=1 and b =2 or c=3”,把三个都分隔出来,可以用String.split("and|or"); 再比如:String str="Java string-split#test",可以用Str.split(" |-|#")把每个字符串分开。


  • 6.19记录
    CSS中margin和padding的区别用图表示为
    这里写图片描述

-6.24感想
没什么具体的代码方面的想说,只是想到今天考完了可能是大学最后一门考试,也是有些感慨,感慨里夹杂着一丝丝害怕,一丝丝莫名的害怕,也许是我的内心不够强大,还是会有对未知未来的不确定,有时候还真是会想未来啊你来的慢一点,But,the only thing we can do is KEEP GOING!


  • 7.6记录
    用shiro框架验证登录:根据url过滤用户,设计用户组和权限,密码加密,记住密码登录

  • 8.6记录
    对于 Android 深入的点会问一些自定义组件、性能优化,屏幕适配,IPC、Binder的理解,插件化,常用开源库以及原理等等。

  • 10.6记录
    回调方法,另见摘录的博文《Java中的回调(摘录)》。

  • 11.7记录
    jQuery是一个类数组对象,而DOM对象就是一个单独的DOM元素。

  • 2017.1.2记录
    好的命名相当于给代码加了一段有用的注释

  • 2017.2.13记录
    jQuery的常用功能总结
    • 在 DOM 树中进行查询
    • 修改 DOM 树及 DOM 相关操作
    • 事件处理
    • Ajax
    • Deferred 和 Promise
    • 对象和数组处理
    • 还有一个一直在用却很难在列清单时想到的——跨浏览器

  • 2017.3.5记录
    Java中String的拆箱装箱
    先看个例子:
    String str1 ="abc";    String str2 ="abc";    System.out.println(str2==str1);  //输出为 true     System.out.println(str2.equals(str1));  //输出为 true     String str3 =new String("abc");    String str4 =new String("abc");     System.out.println(str3==str4);  //输出为 false     System.out.println(str3.equals(str4));  //输出为 true

再看个例子:

    String d ="2";     String e ="23";    e = e.substring(0, 1);    System.out.println(e.equals(d)); //输出为 true     System.out.println(e==d); //输出为 false

第二个例子中,e的初始值与d并不同,因此e与d是各自创建了个对象,(e==d)为false 。
同理可知,第一个例子中的str3与str4也是各自new了个对象,而str1与str2却是引用了同一个对象。
补充:obj1==obj2 判断是obj1,obj2这两个引用变量是否相等,即它们所指向的对象是否为同一个对象。言外之意就是要求两个变量所指内存地址相等的时候,才能返回true,每个对象都有自己的一块内存,因此必须指向同一个对象才返回ture。


  • 2017.3.10记录
    Java跳出多重循环
    在Java中,如何跳出当前的多重嵌套循环?
    答:在最外层循环前加一个标记如A,然后用break A;可以跳出多重循环。(Java中支持带标签的break和continue语句,作用有点类似于C和C++中的goto语句,但是就像要避免使用goto一样,应该避免使用带标签的break和continue,因为它不会让你的程序变得更优雅,很多时候甚至有相反的作用,所以这种语法其实不知道更好)

  • 2017.3.19记录
    类加载器工作机制

    1.装载:将Java二进制代码导入jvm中,生成Class文件。

    2.连接:a)校验:检查载入Class文件数据的正确性 b)准备:给类的静态变量分配存储空间 c)解析:将符号引用转成直接引用

    3:初始化:对类的静态变量,静态方法和静态代码块执行初始化工作。

    双亲委派模型:类加载器收到类加载请求,首先将请求委派给父类加载器完成

    用户自定义加载器->应用程序加载器->扩展类加载器->启动类加载器。

0 0
原创粉丝点击