技术心得体会

时间:2021-09-25 14:11:03
ESA
final记得好好使用
HSQL数据库
postgreSQL:
创建异常也通过异常工厂来,牛.
这个思想可以借鉴.
缓存和数据库的同步问题.
LRU:least recently used最近最少使用算法.

观察者模式.


敏捷开发:可以让汽车一边跑,一边换*.
能适应客户的需求变更.

享元设计模式:对象池,数据库连接池.线程池等技术算不算是享元设计模式.

技术问题:
在作为数据的载体进行参数的传递时:
是使用集合还是数组:ArrayList<String> or String[]; 或者说从效率上讲哪个相对高些.
对数组的使用场景是否正确

尽量不要在循环内出现远程调用;
每个业务动作远程调用次数是否小于3次
远程调用数据传输是否有不必要的冗余数据

咱们excel导入导出用的是POI报表打印.

Httpclient:
Lucene:
activeMQ:
ehcache:
jaxb:
Jettison :WSDL Analyzer:分析wsdl文件的;
oscache:
pdf:
portlet:
velocity;
poi:
ejb:
iText
hsql;
UML建模:
hession:类似于webservice的东西,直接传播的是二进制数据.
axis:斧子,cxf,webservice框架;
xpp3:xml到java类的转换工具.
Commons Codec:提供一些加密解密算法的东西;
Turbine:一个面向soa的web框架,支持jsp,velocity等前端界面展示工具.
Apache Syncope:做指纹识别的玩意.
Apache Synapse Enterprise Service Bus (ESB):支持多种数据格式之间的转换.
MINA:NIO framework library,client server framework library, or a networking socket library

hadoop相关框架:
hive:
flume:
hadoop:
hbase:
pig:
zookeeper:
sqoop:


专人专项,面向一线.
程序代码不能搞重复建设,如果同一个类中有相同的代码块,请把他提炼成类 的一个独立方法.
如果不同的类中出现相同的代码,请把它提炼成一个新类,永远不要重复代码.


Dalvik VM常量池的集中管理,用一个文件保存常量
而JVM的常量池一个文件一个常量池;
尽量使用标准库中的api.习惯使用常用的异常.而不是自己定义.
同时如果异常之间可以通过一些简单的字段进行区分,就定义异常常量,重用,减少类的数量.

后置++可能会有线程安全问题;return a++;//1 是首先返回,然后增加;
但是可能在增加返回中,多个线程之间并发访问导致异常数据的产生;

在一个同步代码块中,尽量避免调用public protect权限的方法,即可能被复写的逻辑方法;
这样可能出现问题,因为一旦复写的方法中出现未知的代码,比如获取锁和释放锁的操作,可能会造成死锁;

实验表明:三元运算符效率比if else效率高些;

同步代码块中的代码应该尽可能的简单.
只要对共享数据的修改进行锁定就可以了..

关于线程和线程要执行的代码进行明确的职责分明;
在jdk1.5中也有体现,
Task:需要执行的代码,即任务;
Executor:执行者,线程调度器;


ConcurrentHashMap:底层原理:
读不需要加锁,写的时候是按照hash链的顺序进行写的,因此锁的级别是在不同的段上进行.
类似于我们数据库中的行级锁,仅仅锁死那一行,而不是整个表(serialization);
删除操作,需要重新copy某个位置前面的所有记录.

不要在loop外面进行wait操作,而是在loop里面进行;

日志方式调试,指的是当我们的项目正式发布以后,不能debug了,
不能重现问题,记录当时的错误信息,便于判断;



kettle:ETL工具:

wide applicability:广泛的适用性
scalability:可伸缩性
high performance:高性能
high availability:高可用性
throughput:吞吐量
throughput-oriented:面向吞吐量
batch-processing:批处理;
latency-sensitive:休眠期敏感;
refinement:改良,优化;
parallel computation:并行计算;

persistent distributed lock service:Chubby
持久化的分布式锁服务。


OOAD:数据属于谁,那么操作数据的方法就应该放在谁上面.

Replace Contional With Polymorphism:用多态取代条件表达式

不要在一个类中对另一个类的对象做switch操作;


将函数的读写功能进行分离.
读作为一个函数,写作为一个函数.

增加的节点和字段的思考方向:
1 在哪里添加这个字段信息
2 在哪里修改这个字段信息
3 在哪里查看这个字段信息;


interoperability:交互性.