- 浏览: 17316 次
- 性别:
- 来自: 福州
最新评论
-
xiaguangme:
LV1
MyClass myclass = new MyCla ...
升级打怪穿装备,看看你能升几级 -
dsjt:
seyaa 写道飛翔の雲 写道弱弱问下。java代码
priv ...
升级打怪穿装备,看看你能升几级 -
seyaa:
飛翔の雲 写道弱弱问下。java代码
private fina ...
升级打怪穿装备,看看你能升几级 -
zy19982004:
zy19982004 写道太悲剧了
只会了LV1
publi ...
升级打怪穿装备,看看你能升几级 -
zy19982004:
太悲剧了 只会了LV1public int getBase(M ...
升级打怪穿装备,看看你能升几级
文章列表
public getter不用锁
对单一对象,使用带锁独立副作用方法
对一组对象,使用一个在同一个包中的工具,依固定顺序加锁,相关的锁全部加完后,访问无锁的default final setter进行设值,锁与锁之间可以读取和计算,但不能进行设值
函数等于
一次性全局变量(参数,简写为a)+goto+一次性全局变量(返回值,非必须,简写为r)+goto
虚函数等于
switch(type)
a+goto+r+goto//首次goto可变
异常等于
a+goto
switch(catch)
r+goto//2次goto可变
如果语言不能提供机制正常地实现异常的功能,那只好利用异常来做不属于他语义的事情了
第二:函数因为call和return共存,所以他其实不是一种忽略代码的机制,而常见的忽略代码的机制如if,都被限定在一个函数内,异常可以跨函数忽略代码
分析下程序里在哪些方面会出现非预期情况:
硬件、逻辑和预言。
预言是啥?好像没听过?其实它是常见的东西,如timeout,timeout就是一个预言,这段代码要在这段时间内完成。预言是最最根本的异常来源,所有其它异常都因他产生
硬件,如网络,这方面的非预期情况可以划给异常。为什么?因为有一个隐藏的预言,硬件正确。有可能用非预言定义硬件出错吗?不可能,因为硬件可能在任何时候出错。
逻辑,这个划给bug?其实这里是要细分的:客户端逻辑错误,本地逻辑错误,服务端逻辑错误
客户端逻辑错误,需要预言客户端正确吗?多数情况不是,因为可以通过检查进行分类,除非这个分类不可解(如停机问题)或不值得(考虑了性能) ...
public class Main {
public static class A extends RuntimeException{}
public static class B extends RuntimeException{}
public static void throwRuntimeException(){
if(Math.random()>=Math.random()){
throw new A();
}else{
throw new B();
}
}
public static void use(A a){}
...
一,对象的传递
c++在传递对象的时候,很关注到底是对象(即复制对象),还是引用(即传原对象),以及是否const,除了效率之外,还牵涉到是否可修改,也就是语言的严谨性
但是到了java中,因为语言没有强制要求,很容易出现本该复制的对象,本体却到处乱传,特别是愚蠢的自动生成getter,setter,就是万恶之源,
二,封装
先上例子
public class A{
private int i = 0;
public void a(){
i++;
}
public void b(){
i--;
}
public void c(){
...
function Polygon(iSides) {
this.sides = iSides;
if(typeof Polygon._initialized == "undefined") {
Polygon.prototype.getArea = function() {
return 0;
};
Polygon._initialized = true;
}
}
function Triangle(iBase,iHeight) {
Polygon.call(this,3);
this.base = iBase;
this.he ...
升级打怪穿装备,看看你能升几级
- 博客分类:
- 其他
我鶸鰯才升到lv3
class MyClass {
private final int base;
private int current;
public MyClass(int base,int current){
this.base = base < 0 ? 0 : base > 15 ? 15 : base;
this.current = current < 0 ? 0 : current > 30 ? 30 : current;
}
public int getV ...
public interface SQLer<S,A,R> {
void setSQL(S sql);
void setArgs(A args);
R getResult();
}
public interface ArgsCreator<A> {
A createArgs();
}
假设需要两个接口进行协作,但如果只这样定义,无法获得类型检查,因此,可以这样定义
public interface SQLer<S,A,R> {
void setSQL(S sql);
void s ...
接上回:
:我们可以Extract Method(提炼函数)啊,只要把重复部分提炼出来就ok了.
:别把问题想的太简单,你看这两个函数,主要是在返回的地方不同,没办法直接提炼,我们应该使用模板方法模式.
:我们已经使用了模板方法模式了,现在要再次引入模板方法模式,不觉得太复杂了吗? :的确这样,看来我们给这个类赋予了过多职责.
:嗯,我们把查询的功能分离出去吧,只剩下构造SQL的职责就没问题了
public abstract class SimplePagingQueryJdbcTemplate{
public static final Pattern fromPatter ...
重构题(2)--通过复制粘贴,获得第一份答案
- 博客分类:
- 其他
public <T>List<T> query(SimpleQuery simpleQuery,Pager pager, RowMapper<T> rowMapper){
String querySQL = simpleQuery.getQuerySQL();
Object args = simpleQuery.getArgs();
long count = count(simpleQuery);
pager.setTotalObjects(count);
if(count<=pager.getFirstResult( ...
public abstract class SimplePagingQueryJdbcTemplate{
public static final Pattern fromPattern = Pattern.compile("from",Pattern.CASE_INSENSITIVE);
public static final String countSQLHead = "select count(*) from ";
public static final Pattern orderByPattern = Pattern ...
就不凑热闹了,只是抒发下自己的感情
毕业院校,某985;
大学生活,虚度光阴;
学业成绩,惨不忍睹;
人际关系,平均以下;
惟一欣慰,知足常乐。
public class Sword {
private int power;
}