程序猿随想
来源:互联网 发布:竞彩缩水软件 编辑:程序博客网 时间: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,打上勾就出来了。
然后今天还更熟悉了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:初始化:对类的静态变量,静态方法和静态代码块执行初始化工作。
双亲委派模型:类加载器收到类加载请求,首先将请求委派给父类加载器完成
用户自定义加载器->应用程序加载器->扩展类加载器->启动类加载器。
- 程序猿随想
- 一个程序猿的随想1
- 程序学习之路随想
- 游戏项目程序开发随想
- 随想
- 随想
- 随想
- 随想
- 随想
- 随想
- 随想
- 随想
- 随想
- 随想
- 随想
- 随想
- 随想
- 随想
- 解决 latex 不能很好的断行的问题
- 【hdu】3001 Travelling【三进制状压dp】
- SQLiteLog (1) no such Column
- StrictMode 详解
- 一个登陆小案例演示Servlet的使用
- 程序猿随想
- pl/sql触发器案列
- java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/
- Qt/C++ 360安全卫士主界面动态按钮demo
- bootstrapvalidator之API学习
- leetcode #66 in cpp
- windows2008SVN安装同步web出错问题
- 修改oracle数据库的编码为utf8
- 【hdu】3231 Box Relations【拓扑排序三维】