EveryDay笔记

 

模板方法模式

我们大多数情况下,都是使用抽象工厂和简单工厂。简单工厂用来创建工厂,抽象工厂创建产品。 

工厂的作用,就是创建接口。 

 

无论是简单工厂模式、工厂模式还是抽象工厂模式,它们本质上都是将不变的部分提取出来

,将可变的部分留作接口,以达到最大程度上的复用

 

梦想之歌

 

【世界500强推崇的6大员工思维】①为他人工作,也是为自己工作;②公司付给你金钱,工

作赋予你终生受益的能力;③要对得起目前的薪水,更要对得起将来的前途;④工作本身没

情绪,我们也不能带情绪工作;⑤能在昨天完成工作的人,永远是成功的;⑥保持激情的秘

诀,就是不断树立新目标。

 

 

【马云:团队靠什么支撑?】企业文化是空的、虚的,没有支撑着的东西是无法前进的。价值

感与工资是阴阳八卦、阴阳调和两手都要硬。我们对进来的员工都给予他们三样东西,一是

:良好的工作环境(人际关系),二是钱(今天是工资,明天是奖金,后天是每个人手中的股票

),三是个人成长。

 

结束培训行业工作,停下来思考人生,拟定计划,写写技术博客,实线行动,开始新的起航!朝向成功的路上

 

1. 举例说明你什么时候会用抽象类,什么时候更愿意使用接口? 

 

 

 

2. 你能说出在标准的JDK库中使用的一些设计模式吗? 

 

spring 源码

 

读Spring源码之前,你要先清楚,为什么你要用Spring...

 

Spring最基本的功能是做为管理bean的容器,所以我以为应该先从org.springframework.context包了解咯,包括org.springframework.web.context;

 

然后是org.springframework.beans

      org.springframework.aop

 

Spring中文手册是必须的~~

 

你看那个从core开始看就可以了

从ApplicationContext

 

 

Spring源代码解析(一):IOC容器:http://www.javaeye.com/topic/86339

Spring源代码解析(二):IoC容器在Web容器中的启动:http://www.javaeye.com/topic/86594

Spring源代码解析(三):Spring JDBC:http://www.javaeye.com/topic/87034

Spring源代码解析(四):Spring MVC:http://www.javaeye.com/topic/87692

Spring源代码解析(五):Spring AOP获取Proxy:http://www.javaeye.com/topic/88187

Spring源代码解析(六):Spring声明式事务处理:http://www.javaeye.com/topic/88189

Spring源代码解析(七):Spring AOP中对拦截器调用的实现:http://www.javaeye.com/topic/107785

Spring源代码解析(八):Spring驱动Hibernate的实现:http://www.javaeye.com/topic/110801

Spring源代码解析(九):Spring Acegi框架鉴权的实现:http://www.javaeye.com/topic/112979

Spring源代码解析(十):Spring Acegi框架授权的实现:http://www.javaeye.com/topic/113436 

 

mechached在php端用,maven我们用来打包发布的,nosql用来保存商品内存信息的,hadoop我们用来分析日志研究用户行为的。

 

我的工作主要是理清需求,设计库表,设计模型,设计对外的接口,预研一些基础框架技术比如cache, batch, time, search,还要负责按时交货。。。

 

java用的hessian + spring + mybatis spring mvc层的东西。

 

7.8

: 给你一些建议,如果想搞架构方面就需要把一些基础知识学透,例如:设计模式、java编程思想、高并发、重构、架构之美等。

我现在其实也是在努力这方面,看书是必须的,

而且一些是必看的,光靠工作中还是有很大局限,要理论实践结合。回头我会发个目录你可以参考。

 

 

7.10

数据库优化(sql优化)

1.sql优化:

 1.选择最有效的表名顺序(仅适用于RBO模式)将表上记录最少的那个表置于FROM的最右端作为基表。Oracle会首先扫描基表(FROM子句中最后的那个表)并对       

记录进行排序

2.select 查询中避免使用'*',*被解析成具体的字段,浪费内存

3.减少访问数据库的次数                                                                    

4) 使用DECODE函数来减少处理时间                                

-->使用decode函数可以避免重复扫描相同的行或重复连接相同的表

用Where子句替换HAVING子句                                                                                                    

-->尽可能的避免having子句,因为HAVING 子句是对检索出所有记录之后再对结果集进行过滤。这个处理需要排序,总计等操作                 

-->通过WHERE子句则在分组之前即可过滤不必要的记录数目,从而减少聚合的开销 

使用表别名 用EXISTS替代IN                                                                                   

    在一些基于基础表的查询中,为了满足一个条件,往往需要对另一个表进行联接.在这种情况下,使用EXISTS(或NOT EXISTS)通常        

将提高查询的效率.          

合理使用索引以提高性能

    虽然使用索引能得到查询效率的提高,但是索引需要空间来存储,需要定期维护.尤其是在有大量DML操作的表上,任意的DML操作都将引起索

引的变更这意味着每条记录的INSERT , DELETE , UPDATE将为此多付出4 , 5 次的磁盘I/O 因此定期的重构索引是有必要的.

 

索引的情况:

WHERE  employee_id + 10 > 150;        -->索引列上使用了计算,因此索引失效,走全表扫描方式   

) 避免在索引列上使用NOT运算或不等于运算(<>,!=)                                                                                   

通常,我们要避免在索引列上使用NOT或<>,两者会产生在和在索引列上使用函数相同的影响。 当ORACLE遇到NOT或不等运算时,他就会停止        

使用索引转而执行全表扫描。                     

WHERE  NOT ( deptno = 20 );

WHERE  deptno > 20 OR deptno < 20; 

-->尽管此方式可以替换且实现上述结果,但依然走全表扫描,如果是单纯的 > 或 < 运算,则此时为索引范围扫描    

避免索引列上使用函数 此时索引失效,使用全表扫描          

WHERE子句中的连接顺序

     ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前,那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾。

6.SELECT子句中避免使用 ' * '

     当你想在SELECT子句中列出所有的COLUMN时,使用动态SQL列引用 '*' 是一个方便的方法。不幸的是,这是一个非常低效的方法。实际上,ORACLE在解析的过程中,会将'*' 依次转换成所有的列名,这个工作是通过查询数据字典完成的,这意味着将耗费更多的时间。

7.减少访问数据库的次数

     当执行每条SQL语句时,ORACLE在内部执行了许多工作:解析SQL语句,估算索引的利用率,绑定变量,读数据块等等。由此可见,减少访问数据库的次数,就能实际上减少ORACLE的工作量。

8.使用DECODE函数来减少处理时间

17.使用表的别名(Alias)

用EXISTS替代IN

 

7.18

每天都能看一点财经以掌握市场和国家动态,看一章管理的知识提升自己竞争力,看一些专业领域的信息巩固自己知识储备,

再看一点你个人感兴趣的内容轻松你的大脑。希望你们能够时时刻刻做有价值的事。

 

7.21

項目有計劃,有期限。每個人的職業道路也一樣。

 

請回答以下問題:

 

这份工作你还打算做多久?你打算转向其他语言的开发吗?你打算一直做程序员吗?未来五年会在哪个城市?什么时候自己创业?什么时候能买房?什么时候结婚什么时候生小BB?转行后做什么?

 

如果要自己创业,你要准备些什么(比如资金,知识,学习资料)......

 

 

要求有gmail/twitter/stackoverflow/github帐号。有开源贡献的特别考虑。

创新要求:能够掌握python/ruby/perl/Erlang等一两种脚本语言为佳。

工作领域:我们有挑战的领域有大规模数据集群、高性能异步通讯、海量数据处理、分布式存储与缓存、并行计算、高并发处理等。

 

学英语-每天听,看英文文章,有道词典,词汇,发音等

 

7.22

maven 可以不同项目之间管理

 

groupId  用来表示项目名称

artifactId 用来表示项目的模块名称(建议使用项目名称)

version 表示这个项目的版本

 

源代码放在src/main/java中

源代码的资源文件放置在src/main/resources文件夹中

测试代码应该放置在src/test/java中

测试代码的字眼文件应该放置在src/test/resources文件中

运行mvn 

  mvn clean -->表示运行清理操作(会默认把target文件夹中的数据清理)

  mvn clean compile ---> 表示先运行清理之后运行编译,会见代码编译到target文件夹中

  mvn clean test --->运行清理和测试

  mvn clean package --->运行清理与打包

  mvn clean install ---->运行清理和安装,会把打好的包安装到本地仓库中,以便其他的项目可以调用

  mvn clean deploy  --->运行清理和发布(发布到私服务器上面)

  mvn test         会执行src/test/java 下的Junit 测试代码

  mvn package      会将项目打成jar包,并放在target目录中

  mvn install      会将项目jar包安装到本地仓库中,以便其他项目使用,执行此命令之前会先执行编译,测试,打包命令 

  surefire:test    surefire是Maven世界中负责执行测试的插件

  maven archetype  来创建该项目的骨架

  7.23

  使用mvn archetype generate 可以自动完成这个骨架的简历

 

Maven(多模块的项目管理)

1.maven初步

2.依赖

3.仓库

4.生命周期和插件

 

maven的传递性: a-->b  b-->c  a-->c

maven的依赖范围:1.test范围指的是测试范围有效,在编译和打包时都不会使用这个依赖

2.compile范围是指在编译有效,在编译和打包时都会将依赖储存进去

3.provided依赖:在编译和测试的过程有效,在最后生成war时不加入,如:servlet-api,因为tomcat等web服务器已经存在,如果再打包回冲突

4.runtime在运行的时候依赖,在编译的时候不依赖

默认的依赖范围是compile

4.依赖的聚合:

 

 

 

7.24

如果你想在这三年内富的流油,Hadoop技术绝对是个不错的选择!

课程大纲:

第一天:Hadoop概论和快速入门

上午:

Hadoop 简介:缘起与术语

        练习一:Hadoop 单机安装

HDFS 理念与命令解说

        练习二:HDFS 操作实务

MapReduce 简介:

        练习三:MapReduce 范例操作

Hadoop 集群安装配置:

        练习四:Hadoop 集群安装实战

 

下午:

Hadoop 相关应用(1) -Hadoop Streaming

        练习五:Hadoop Streaming 操作练习

Hadoop 相关应用(2) - Pig

        练习六:Pig Latin 操作练习

Hadoop 相关应用(3) - Hive

        练习七: PhpHiveAdmin 数据仓库

       练习八: ComETL 快速数据转换

 

第二天: Hadoop高级编程和实战

上午:

MapReduce程序讲解

       练习九:使用JAVA编写一个完整的MapReduce分析程序。

MapReduce开发优化

       练习十:使用Combiners, Partitioner, Distributed Cache优化代码。

下午:

MapReduce高级I/O编程

       练习十一:使用Writables和WritableComparables,使用定制InputFormats和OutputFormats读取和输出内容。

Hadoop大数据分析实战

       练习十二:使用Flume/Scribe 接受数据,使用Lzo压缩,录入Hive库,配置Oozie/ComETL工作流分析和定时器,最后使用FineReport数据展现。

7.25

mvn help:system 打印所有的java系统属性和环境变量

 

<dependencies>

    <dependency>

      <groupId>junit</groupId>

      <artifactId>junit</artifactId>

      <version>3.8.1</version>

      <scope>test</scope>

    </dependency>

  </dependencies>

</project>

groupId, artifactId 和 version 的三行。这三个元素定义了一个项目基本的坐标

groupId 定义了项目属于哪个组,这个组往往和项目所在的组织或公司存在关联。

譬如在googlecode上建立了一个名为myapp的项目,那么groupId就应该是com.googlecode.myapp 

artifactId 定义了当前Maven项目在组织中唯一的ID, 可以理解为项目中的模块, 模块为Maven中最小单位构件

version 项目的版本

 

7.26

传智播客(韩顺平):

memcached

mysql优化

排序介绍:

冒泡排序,选择排序,插入排序,快速排序,顺序查找,二分查找

cookie,session

开发自己的网上支付平台

 

7.27

浦发银行:

用户昵称:lvwenwen88

查询密码:895278

 

7。28

1.http测试:httpclient 

2.nio网络编程:netty,appache mini 

3.webservice cxf 

4.lucense用于搜索,数据库不宜存文件,用磁盘存,这个做搜索 

剩下的慢慢收集吧

 

JAVA牛人的BLOG列表 

兔八哥的BLOG: 不错的J2EE方面的东西 

一亩三分地: java东东的blog 

James Gosling: on the Java Road: JAVA的老爸 

Bruce Eckel: JAVA编程思想无人不知无人不晓 

spring live: spring框架 

raibledesigns: Appfuse作者 

透明: 熊节

 

7.29

memcached

1.memcached是一个高效的,支持分布式的内存对象缓存系统,他可以把各种php的数据(array,对象,基本数据类型)放入到他管理的内存中

 

8.1

Memcached入门

Memcached 是一个高性能的,分布式的内存对象缓存系统,

目前全世界不少人使用这个缓存项目来构建自己大负载的网站,它可以应对任意多个连接,使用非阻塞的网络IO。

由于它的工作机制是在内存中开辟一块空间,然后建立一个HashTable,Memcached自管理这些HashTable

来分担数据库的压力,通过在内存里维护一个统一的巨大的hash表,

它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度

通用的性质,但打算在加快动态Web应用程序,减轻数据库负载使用。Memcached的的奇妙之处在于两阶段散列的方法。它的行为,

就好像是一个巨大的哈希表,查找key = value对。给它一个键,并设置或获取一些任意数据。做一个memcached的查询时,首先客户端哈希键对整个服务器列表。

一旦它选择了一个服务器,然后客户端发送的请求,服务器内部哈希键查找实际项目数据。巨系统打交道时,最大的好处,

是memcached的能力大规模向外扩展。由于客户端执行一个散列层,它变得完全微不足道的几十个节点添加到群集。有没有超载,或组播协议内爆的互连。

 

其实Memcached的是没有一个Java的产品,但它有一个Java客户端API。这意味着如果您想您的Java EE应用程序移植到使用memcached,

金额修改是不可避免的使用API​​ get和put /从缓存值。使用memcached是非常简单的,但仍然有一些事情你应该尽量避免与可扩展性和性能方面。

 

不要缓存比阅读更频繁更新的对象。memcached是用来减少数据库读取,而不是写。你有看到什么读/写每个对象的比例将。如果数的比例是高的,

然后缓存有很大的意义。

尽量避免在运行中的memcached节点的寻呼。交换可能是一个memcached的灾难。

尽量避免行基于缓存。相反,memcached的缓存复杂的对象将更有效率。

选择合适的散列算法。使用默认的算法,添加或删除服务器将你的所有缓存无效。哈希对由于服务器列表已经改变,

你的钥匙最可能会散列到不同的服务器。使用一致的散列算法(http://weblogs.java.net/blog/tomwhite/archive/2007/11/consistent_hash.html)

添加和删除服务器,将让您的缓存对象的最有效的。

 

Memcached机制深入了解

 

 1.基于c/s架构,协议简单

  c/s架构,此时memcached为服务器端,我们可以使用如PHP,c/c++等程序连接memcached服务器。

  memcached的服务器客户端通信并不使用XML等格式,而使用简单的基于文本行的协议。因此,通过telnet也能在memcached上保存数据、取得数据

 

 2.基于libevent的事件处理

   libevent是一套跨平台的事件处理接口的封装,能够兼容包括这些操作系统:Windows/Linux/BSD/Solaris 等操作系统的的事件处理。

   Memcached 使用libevent来进行网络并发连接的处理,能够保持在很大并发情况下,仍旧能够保持快速的响应能力。

 3.内置内存存储方式

 为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。

 另外,内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。memcached本身是为缓存而设计的服务器,

 因此并没有过多考虑数据的永久性问题。

 4.基于客户端的分布式

  memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。各个memcached不会互相通信以共享信息。

  那么,怎样进行分布式呢?这完全取决于客户端的实现

  如图:

 

        1. 生命周期 

*  生命周期 1. apache 关闭后 2. apache没有关闭,但是时间到.

2. Memcached数据存在什么地方(内存)

3. Memcached最佳实践

① 将从数据库查询的数据放入Memcached (举例说明)

 

将Session数据放入到Memcached(举例说明)

保证memcache扩展开启,memcachd运行

设置php.ini中session.save_handler=memcache

设置php.ini中session.save_path=tcp://localhost:11211

也可以通过php函数 ini_set() 函数在页面设置.

4.Memcached的数据是无用户状态的.即不会和某个用户绑定

5.Memcached访问安全性(举例)

设置防火墙

iptables -a input -p 协议 -s 可以访问ip -dport 端口 -j ACCEPT

 

5.Memcached vs session的比较

1.存放的介质不同 

2.生命周期方式

3. 要解决的问题重点不同(session 主要用于追踪用户状态,是http协

议关联), (memcache用于保存数据)

 

相关技术

Redis(Key/value型数据库),将数据保存在内存中,并定时向硬

盘中同步。

 

什么是分布式?

分布式软件系统(Distributed Software Systems)是支持分布式处理的软件系统,是在由通信网络互联的多处理机体系结构上执行任务的系统。

它包括分布式操作系统、分布式程序设计语言及其编译(解释)系统、分布式文件系统和分布式数据库系统等。

 

什么是分布式缓存?

分布式缓存系统是为了解决数据库服务器和web服务器之间的瓶颈。

如果一个网站的流量很大,这个瓶颈将会非常明显,每次数据库查询耗费的时间将会非常可观。

对于更新速度不是很快的网站,我们可以用静态化来避免过多的数据库查询。

对于更新速度以秒计的网站,静态化也不会太理想,可以用缓存系统来构建。

如果只是单台服务器用作缓存,问题不会太复杂,如果有多台服务器用作缓存,就要考虑缓存服务器的负载均衡。

 

什么是分布式事务?

分布式事务处理(Distributed Transaction Processing,DTP)

分布式事务处理是指一个事务可能涉及多个数据库操作,分布式事务处理的关键是必须有一种方法可以知道事务在任何地方所做的所有动作,

提交或回滚事务的决定必须产生统一的结果(全部提交或全部回滚)。 

或 跨越多个服务器的事务称为分布式事务,sql  server  可以由DTc  microsoft  distributed  transaction  coordinator  

来支持处理分布式事务,可以使用  BEgin  distributed  transaction  命令启动一个分布式事务处理

 

要努力,混出个人样,这个社会太现实了。

 

8.5

从事java 2年有余,最近想提高一下自己能力,分析Java那部分源码最好呢?

jdk源码学习(collection框架、并发包、io等),要养成常看jdk源码的习惯。 

如果你对j2ee感兴趣,可以按以下顺序: 

tomcat(jetty) -> struts2(spring mvc) -> spring -> ibatis(hibernate)。 

如果能坚持读完这些核心代码,相信你的境界会再上一层。

 

java.util.concurrent 

CopyOnWriteArrayList,ConcurrentHashMap,LinkedTransferQueue这些jdk里的集合设计得很不错,其实整个collection framework都设计的不错。

 

8.6

java.util.concurrent.ExecutorService; 

如果我要限制最多3个人同时进行操作一个资源的话,

是java.util.concurrent.Semaphore吧

幸亏没问ConcurrentHashMap

 

8.7

 mysql的优化

1. 数据库(表)设计合理

我们的表设计要符合3NF   3范式(规范的模式) , 有时我们需要适当的逆范式

2. sql语句的优化(索引,常用小技巧.)

3. 数据的配置(缓存设大)

4. 适当硬件配置和操作系统 (读写分离.)

 

 数据的3NF

1NF :就是具有原子性,不可分割.(只要使用的是关系性数据库,就自动符合)

2NF: 在满足1NF 的基础上,我们考虑是否满足2NF: 只要表的记录满足唯一性,也是说,你的同一张表,不可能出现完全相同的记录, 一般说我们在 表中设计一个主键即可.

3NF: 在满足2NF 的基础上,我们考虑是否满足3NF:即我们的字段信息可以通过关联的关系,派生即可.(通常我们通过外键来处理)

逆范式: 为什么需呀逆范式:

(相册的功能对应数据库的设计)

适当的逆范式.

sql语句的优化

面试题:sql语句有几类

ddl(数据定义语言)[create alter drop]

dml(数据操作语言)[insert,delete update]

select

dtl(数据事物语句) [commit rollback savepoint]

dcl(数据控制语句) [gant revoke]

 

mysql可以自定义函数(max)

 

四种索引(性价比高,不需要加内存,不用改程序)

1.主键索引,唯一索引,普通索引,全文索引,符合索引(多列上的索引)

 

加索引(alter table emp add primary key (empno))

分割水平:qq1,qq2,qq3,insert into qq1 values(); (qq id%100);

垂直分割:id,fenshu,timu(大---->变成一张表),miaosu(大--->变成一张表)

读写分离原理:读写分离目的是:给大型网站缓解查询压力,在服务器端跑了

(amoeba服务器,他可以判断语句是dml(写)还是读的操作),如果是写的数据就会找master mysql,

把这个数据更新到主数据库中去,主数据会把它的数据同步到他的slave数据库下面(由mysql proxy完成);

如果是查询(select)语句他,amoeba会根据当前的负载情况,挑选出其中 一个server把数据返回

 

 

如何学习一个MVC框架需要从下面几个方面下手

1.环境搭建(hello world)

2.如何传递参数到Controller

3.如何从控制器获取参数

4.如何完成文件的上传

5.如何验证

6.异常的处理

7.深入学习一些原理和源代码的学习

 

8.8

多线程

8.11

esb 技术

B2B, B2C, C2B, C2C, C2D, C2EFG...

java用的hessian + spring + mybatis.

我正在看spring mvc层的东西。

mechached在php端用,maven我们用来打包发布的,nosql用来保存商品内存信息的,hadoop我们用来分析日志研究用户行为的。

最近在看aop的两种实现方式cglib和jdkdynamicproxy.

我在spring mvc上花了太多的时间了,主要是UrlHandler, viewresolver和view之间的关系,理了很长时间才搞定。

 

spingMvc(以资源为导向)

 

http://www.iteye.com/topic/831144

 

8.12

大型网站的常用技术:1.页面静态化,2.memcache

ESB:

ESB全称为Enterprise Service Bus,即企业服务总线。它是传统中间件技术与XML、Web服务等技术结合的产物。ESB提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素。 

  ESB的出现改变了传统的软件架构,可以提供比传统中间件产品更为廉价的解决方案,同时它还可以消除不同应用之间的技术差异,让不同的应用服务器协调运作,实现了不同服务之间的通信与整合。从功能上看,ESB提供了事件驱动和文档导向的处理模式,以及分布式的运行管理机制,它支持基于内容的路由和过滤,具备了复杂数据的传输能力,并可以提供一系列的标准接口。 

  ESB的五个基本功能:

  1)服务的MetaData管理:在总线范畴内对服务的注册命名及寻址管理功能。

  2)传输服务: 必须确保通过企业总线互连的业务流程间的消息的正确交付,传输还包括基于内容的路由功能。

  3)中介:提供位置透明性的服务路由和定位服务;多种消息传递形式;支持广泛使用的传输协议。

  4)多种服务集成方式: 如JCA,Web服务,Messaging ,Adaptor等.

  5)服务和事件管理支持: 如服务调用的记录、测量和监控数据;提供事件检测、触发和分布功能;

  ESB的八个扩展功能: 

  1)面向服务的元数据管理: 他必须了解被他中介的两端,即服务的请求以及请求者对服务的要求,以及服务的提供者和他所提供的服务的描述;

  2) Mediation :它必须具有某种机制能够完成中介的作用,如协议转换;

  3)通信:服务发布、订阅,响应 请求,同步异步消息,路由和寻址等;

  4) 集成: 遗留系统适配器,服务编排和映射,协议转换,数据变换,企业应用集成中间件的连续等。

  5)服务交互: 服务接口定义,服务实现的置换,服务消息模型,服务目录和发现等。 

  6)服务安全: 认证和授权、不可否认和机密性、安全标准的支持等;

  7)服务质量: 事务,服务的可交付性等;

  8)服务等级: 性能、可用性等。 

  ESB 中最常提到的两个功能是消息转换和消息路由。

  我认为ESB或SOA,关键有4点: 

1.reuse: 服务多了,就要避免重复,能重用的就重用 

2.integration: 可重用服务之间会有依赖或者需要整合。才能完成更强大的功能。 

3.route: 服务之间怎么整合,信息如何交换。route的过程会有过滤(filter)。 

4.transform: 信息也需要转换成不同的格式。 

理解ESB应该包含以下内容:

 

消息服务器:消息接收器、消息队列、消息发送器。。。

Router:路由

mapping:协议转换器

工作流:workflow,或者只是flow

等待。

ESB的全称是 企业 服务 总线。 

应用领域是 企业级应用的集成。 

关注点是 服务。 

特点是 总线。 

 

ESB应该是企业信息系统的基础性设置,各种可复用的资源(file,db,ws,jms,ftp,process,businessmodel等),可以注册到ESB,并在企业内部发布出来。同时,ESB应该易于扩展(协议,服务能力),易管理(提供监控和治理能力,QoS)。 

 

EIP(企业集成模式)中 描述了ESB的动态轮廓:channel+filter: 

一个ESB的运行时特征就像是一条流动的河(channel),中间可以走分支或者聚合(Splitter Aggregator),或者改道(router),也许某些地方,还有堤坝和水闸(flowcontrol)。 

 

这个是我理解的ESB

总的来说,可以认为:ESB就是一个大的IOC(DI),spring的DI是object级别的,ESB的DI是service级别的. 

ESB是SOA的一部分, SOA包括业务和技术两个方面,而ESB主要还是技术相关的. 

webservice和esb的区别哪就是 

webservice只是esb可以访问的一种服务提供者(协议) 

 

webservice的方式只是一种大家都熟悉的一个方法, 

打个比方,现在需要实现一个服务,客户端发送一个人员编码,返回人员姓名 

下面的几种设计方法都可以成为esb(websphere message broker)的服务提供者 

 

A,开发一个webservice,提供调用参数人员编码,返回包含人员姓名soap消息包 

B.开发一个socketserver ,接受一个char[20]的 数组,返回char[100]的数组 

C.开发一个structs action,通过 someaction.do?usercode=? 的方法返回一个json格式的姓名{name:'edwin'} 

D.使用消息队列中间件,发送xml格式的请求消息,再从指定队列读取返回值 

 

现在明白webserice和esb的关系了吧。 

 

1.一般的esb流程是什么样子的? 

是不是主系统发生soap请求。esb接收并且转换成jms然后子系统监听jms。最后得到数据。 

还是。jms仅仅是内部转换。soap请求在esb转成jms后。加入队列。然后再转成soap调用子系统? 

(先是整理需连接的系统,需要连接的系统功能(一般管它叫服务),确定服务的依赖关系,支持的协议(文件,WebService, RPC,...),调用的方式(同步/异步) 

然后使用ESB提供的那些协议组件,一点点串起来就行。串的方式可以参考EIP (www.eaipatterns.com) 

 

你说的两种异步方式的话都可以, 

如果是同步的,也可以直接soap -> soap, 不用JMS。 一般用JMS是为了实现异步通讯 )

2.使用jms的考虑是jms对队列的信息进行持久化。防止比如子系统突然挂掉了。消息丢失。 

但是有个问题。是esb自动监听jms的队列的话。会导致直接消费了。而数据没有存在队列中。还是会出现消息丢失的问题。 

这个应该怎么解决。 

(JMS,至少我接触的ActiveMQ, 是可以支持事务的,发生异常,可以不消费信息 )

 

3.esb进行协议之间的转换。每种方式都需要些一个转换方式么?有没有什么通用的。或者是

自动转换的。比如soap和jms的互相转换。不是协议切换。是内容转换。 

(议转换是为了配合你那些需要整合的系统,如果都是SOAP,也就不需要转了。 

消息内容转换(格式,内容),一般ESB都提供各种工具的。 ) 

1、如果你要做同步转异步,可以在esb上做成ws转jms,然后起到一个缓冲的作用。 

最后可以再同步的返回给调用方。 

你也可以修改调用方为jms方式,这样就是彻底的异步了,在esb端可以jms转ws,调用业务服

务方的ws。 

2、esb都支持事务的,jms中如果不确认消息的话,不会从持久存储去delete掉的。 

一般的esb。也可以做成是esb消费掉消息,然后存入esb自己内置的jms 

provider中,这样你再消费的话,也是可靠的。还可以做成补偿机制的,即esb中如何消息处

理失败,把消费放回去原来的queue或是一个中间的临时queue,稍后做recover。 

3、从esb的不同transport进去的数据,在esb的中介层处理时,其实消息格式都是一致的、

通用的。也就是说常见的ws或jms转换在一般的esb里处理都很简单。如果稍微复杂点,也很

容易扩展transformer(比如通过xslt做xml格式转换)来实现数据内容和格式的转换。 

 

OSGI,SOA,ESB,MQ,WebService都是当前的热门。期待这方面的书。

SOA

 

SOA:面向服务的体系结构(service-oriented architecture,SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)

通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。

这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。 

SOA是为了信息集成,而出现的一种新事物,它显然是超越的现有的一切技术,但是它又包含了所有的技术。SOA达到的一个目的就是面向服务,

而这种面向服务的结果就是忽略任何与技术有关的东西,最终提供的都是服务接口。 

其实我们还应该搞清楚面向对象和面向组件之间的区别,面向组件和面向服务的区别,SOA和web service之间的区别? 

面向对象和面向组件的区别在于面向组件需要和传输协议及应用服务器的端口绑定,面向服务就是要进一步对面向组件解耦,

所谓解耦就是将将业务组件和传输协议的端口解耦,既各种业务组件可以自由的绑定各种传输协议。 

SOA和web service之间的区别是SOA是在web Service的基础上发展起来的,web service实现了松散耦合的服务和粗粒度的服务,

但是web service本质上只是一个服务组件,它虽然采用的标准的协议,但是它是个应用服务器紧密相关的。

所以可以得出结论:SOA本身并非什么具体的技术,也不是什么架构,它是一种思想,它超越了现有的技术和架构,

但是它又包含了现有技术和架构。运用这种思想要到达的目的就是做到业务和技术的完全分离,做到敏捷的、不受限制的信息集成。 

有人说英语,有人说汉语,还有人说法语...

Web Service说, 这不利于集成..大家都来说"世界语"--SOAP

SOA说, 世界语还是语言, 和特定表达方式绑定了; 我们最终要做到, 大家都使用脑电波交流, 

最终要做到语言和表达完全分离, 做到敏捷的、不受限制的信息集成.

ESB是SOA的一部分, SOA包括业务和技术两个方面,而ESB主要还是技术相关的. 

SOA:面向服务的体系结构(service-oriented architecture,SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)

通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。

这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。 

SOA是为了信息集成,而出现的一种新事物,它显然是超越的现有的一切技术,但是它又包含了所有的技术。SOA达到的一个目的就是面向服务,

而这种面向服务的结果就是忽略任何与技术有关的东西,最终提供的都是服务接口。 

其实我们还应该搞清楚面向对象和面向组件之间的区别,面向组件和面向服务的区别,SOA和web service之间的区别? 

面向对象和面向组件的区别在于面向组件需要和传输协议及应用服务器的端口绑定,面向服务就是要进一步对面向组件解耦,

所谓解耦就是将将业务组件和传输协议的端口解耦,既各种业务组件可以自由的绑定各种传输协议。 

SOA和web service之间的区别是SOA是在web Service的基础上发展起来的,web service实现了松散耦合的服务和粗粒度的服务,

但是web service本质上只是一个服务组件,它虽然采用的标准的协议,但是它是个应用服务器紧密相关的。

所以可以得出结论:SOA本身并非什么具体的技术,也不是什么架构,它是一种思想,它超越了现有的技术和架构,

但是它又包含了现有技术和架构。运用这种思想要到达的目的就是做到业务和技术的完全分离,做到敏捷的、不受限制的信息集成。 

有人说英语,有人说汉语,还有人说法语...

Web Service说, 这不利于集成..大家都来说"世界语"--SOAP

SOA说, 世界语还是语言, 和特定表达方式绑定了; 我们最终要做到, 大家都使用脑电波交流, 

最终要做到语言和表达完全分离, 做到敏捷的、不受限制的信息集成.

ESB是SOA的一部分, SOA包括业务和技术两个方面,而ESB主要还是技术相关的. 

 

OSGI

OSGi(Open Service Gateway Initiative)技术是面向Java的动态模型系统。OSGi服务平台向Java提供服务,

这些服务使Java成为软件集成和软件开发的首选环境。Java提供在多个平台支持产品的可移植性。OSGi技术提供允许应用程序使用精炼、

可重用和可协作的组件构建的标准化原语。这些组件能够组装进一个应用和部署中。

OSGi是什么

 

OSGi亦称做Java语言的动态模块系统,它为模块化应用的开发定义了一个基础架构。OSGi容器已有多家开源实现,比如Knoflerfish、Equinox和Apache的Felix。

您可以通过这些容器,把您的应用程序劈分为多个模块单元,这样,您就可以更容易地管理这些模块单元之间的交叉依赖关系。

 

OSGi规范和Servlet规范及EJB规范类似,该规范定义了两种对象,一是容器对外提供的服务对象,另一个是容器和您的应用程序之间必须遵守的契约,

其中,服务对象是容器要实现的。您如果想要在OSGi平台上进行开发,首先,您必须要使用OSGi API来创建您的应用,然后将之部署到OSGi容器中。

从开发者的角度看,OSGi具有以下优点:

 

a) 您可以在不重启容器的情况下,动态地安装、卸载、启动和停止您的应用程序中的不同模块;

 

b) 对于您应用程序中的某一特定模块,容器可以同时运行该模块的多个版本;

 

c) OSGi为开发嵌入式应用、移动应用、富互联网应用(RIA)提供了非常优秀的基础架构

 

如果说您使用Servlet容器开发您的网络应用,使用EJB容器开发交易式应用,您可能会问,为什么我们还需要另外的容器呢?对这个问题的简短回答是,

OSIG容器是专门为开发复杂的Java应用准备的,在这些应用的开发过程中,您非常需要将这些应用分割为一个个的模块。在本系列以后的文章中,

我将针对这个问题进行展开并深入回答。

“OSGi service platform是一个开放并且提供统一接口标准的体系框架,基于这个体系框架,服务提供商,程序开发人员,软件提供商,服务网管运营商,

设备提供商能够协调地联合起来开发,

部署以及管理向用户提供的各种服务。”还需要提到的是OSGi service platform是一个基于Java的platform。

 

OSGi的提出和诞生之初,其目的主要是能够灵活方便并远程管理互联的网络嵌入设备(听说是1997年左右提出,与Jini有深厚渊源)。随着硬件设备的能力不断提高,

java技术的日益普及,尤其J2ME的壮大,现实应用的需求也不断扩大和推进,一个统一的标准变得非常的必要。OSGi Alliance就在这样的背景下成立了。从1999年成立以来,

OSGi Alliance已经针对这个service platform发布了4版规范,其中r4是2005年10月份刚刚发布。

 

目前有不少公司对OSGi service platform推出了自己的实现,象ibm的smf(Service Management Framework,嗯,多好的名字,在那么多的platform实现中,

我个人最喜欢这个名字,言简意赅)。

 

1、前途迷茫没信心,86%不了解自己专业的就业方向;2、自我认知偏差大,78%不了解自我;3、优势不明空自卑;4、证书满天考哪个;

5、毕业该往何处去; 6、简历乱投没人理;7、面试无数没offer ;

8、就业情报太短缺;9、考研出国前途忧;10、职业规划怎么做。

 

8.13

在Serlet中避免使用实例变量是保证Servlet线程安全的最佳选择。从Java 内存模型也可以知道,方法中的临时变量是在栈上分配空间,

而且每个线程都有自己私有的栈空间,所以它们不会影响线程的安全。

在Serlet中避免使用实例变量是保证Servlet线程安全的最佳选择。从Java 内存模型也可以知道,方法中的临时变量是在栈上分配空间,

而且每个线程都有自己私有的栈空间,所以它们不会影响线程的安全。

(Servlet/JSP默认是以多线程模式执行的,Servlet多线程体系结构是建立在Java多线程机制之上的,它的生命周期是由Web容器负责的。当客户端第一次请求某个Servlet时,Servlet容器将会根据web.xml配置文件实例化这个Servlet类。

当有新的客户端请求该Servlet时,一般不会再实例化该Servlet类,也就是有多个线程在使用这个实例。 

这样,当两个或多个线程同时访问同一个Servlet时,可能会发生多个线程同时访问同一资源的情况,数据可能会变得不一致)

1.解决serlet线程安全问题

  1、实现 SingleThreadModel 接口(Servlet引擎将为每个新的请求创建一个单独的Servlet实例,

  这将引起大量的系统开销。SingleThreadModel在Servlet2.4中已不再提倡使用)

  2、同步对共享数据的操作(同样如果在程序中使用同步来保护要使用的共享的数据,也会使系统的性能大大下降)

  3、避免使用实例变量(最佳)

 

 8.15

 阿里云对高并发、分布式、LINUX深层次编程要求较高,这个是考功力的,没啥捷径的

 【人生三大规划】一、职业规划:就是以怎样的职业和技能去赚钱,去养家糊口、去成就自己短暂的人生。

 二、财务规划:如果你会赚钱,但不会理财,你仍然不会有快乐的生活。三、健康规划:没有健康的身体和良好的心理状态,那这样的人生也是没有什么意义的。。。

 程序员应聘必备词汇:了解=听过名字;熟悉=知道是啥;熟练=用过;精通=做过东西

你只有能坚持每两周看一本技术书 觉对是高手 

8.19

java并发编程:2,3.5,6,8,10,7,12

线程原子性操作:不可再分的操作

原子性指事务的一个完整操作。操作成功则提交,失败则回滚,即一件事要做就做完整,要么就什么都不做 

逸出:如果一个对象还没有完成构造就发布了, 这种情况就是逸出. 

 

8.20

ConcurrentSkipListMap ,ConcurrentSkipListSet,ConcurrentHashMap并发

CopyOnWriteArrayList,

同步工具类:Semaphore,Barrier,Latch,CountDownLatch是一种灵活的闭锁的实现

 

8.21

多线程并发java,java编程实战笔记

http://www.iteye.com/blogs/subjects/JavaConcurrencyIP

http://coolxing.iteye.com/category/187391

1.死锁,锁顺序死锁,

synchronized的一个缺点是不能中断正在等待获取锁的线程, 并且在请求锁失败的情况, 必须无限制的等待. 

ReadWriteLock 读写锁

 

8.22

Nio

 

8.25

我来深圳是干什么的?要达到什么成就?只有我自己很清楚!努力加油!

 

8.26

18610674217

 

北京市北三环中路甲6号 柯莱特集团大厦9层?

 

18682128008

 

 

完整、系统学习过Java语言基本知识,至少掌握java.lang, java.io和java.utils几个包中的API的用法。

n 读过《Java编程思想》、《Java编程语言》、《Effective Java》、《企业应用架构模式》等Java编程方面的名著。

n 读过《设计模式》、《重构》、《代码大全》、《领域驱动设计》等提高开发质量的书籍

n 熟悉常用的Java开发类库和框架,如Spring, Guice, Tapestry, Struts, Hibernate, JPA等。

n 熟悉各种软件开发工具,如Subversion, GIT,Maven, Ant, Eclipse, NetBeans等。

 

dddlib是公司开发的一个基于领域驱动设计思想的开源框架http://code.google.com/p/dddlib/

华夏银行:

电话:010-58598600

 (初)深圳-小强<70968722>  20:45:18

要想出去叫起价钱来,发现一定要对spring等开源框架有较为深层次的了解

 

8.27

当学习一个新的mvc框架需要从以下几个方面入手:

 1.环境的搭建 (实现hello world)

 2.如何传递参数到 Controller

 3.如何从控制器获取参数

 4.如何完成文件的上传

 5.如何完成验证

 6.异常的处理

 7.深入学习一些原理和源代码的学习

spring mvc 开发步骤:

1.配置 web.xml (建实体类,controller)

2.创建hello_serlvet.xml

3.创建 controller

 

我在spring mvc上花了太多的时间了,主要是UrlHandler, viewresolver和view之间的关系,理了很长时间才搞定。

 

reset(重点,没有session,sitemesh) 以资源为导向

 

http://localhost:8080/user/classroom/33

 

什么是mvc

首先让我们了解下MVC(Model-View-Controller)三元组的概念:

Model(模型):数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或JavaBean组件(包含数据和行为),

不过现在一般都分离开来:Value Object(数据) 和 服务层(行为)。也就是模型提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务。

 

View(视图):负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西。

 

Controller(控制器):接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责展示。

也就是说控制器做了个调度员的工作,。

 

从图1-1我们还看到,在标准的MVC中模型能主动推数据给视图进行更新(观察者设计模式,在模型上注册视图,当模型更新时自动更新视图),

但在Web开发中模型是无法主动推给视图(无法主动更新用户界面),因为在Web开发是请求-响应模型。

 

 

 8.28

SpringMVC运行原理

 

1.客户端请求提交到DispatcherServlet

2.由DispatcherServlet控制器查询一个或多个HandlerMapping,找到处理请求的Controller

3.DispatcherServlet将请求提交到Controller

4.Controller调用业务逻辑处理后,返回ModelAndView

5.DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图

6.视图负责将结果显示到客户端

 

2.freemarker  网站静态化

 

reset (无状态的session)

 

9.6

《Java程序员应该知道的10个调试技巧》1.条件断点;2.异常断点;3.监视点;4.评估/检查;5.修改变量值;

6.在Main函数里面停止执行;7.环境变量;8.Drop to Frame;9.分布过滤;10.进入、跳出和返回

 

9.10

 

 

9.11

iteMesh是一个用来在JSP中实现页面布局和装饰(layout and decoration) 

的框架组件

 

9.12

只有互联网公司才有足够的薪水

UNIX;TOMCAT源代码;JS,JAVA;算法数据结构;大数据量,并发,多线程,事务

搜索引擎,nlp,推荐系统,数据挖掘,海量数据,分布式。大公司们都要这些。共勉。学习找工作中(现在js,囧)。

高并发。海量数据分析。搜索引擎。云计算。学好一样足够你进百度腾讯 阿里任何一样了。

貌似今年研究生水平还行的进百度是15到20K左右,到腾讯14,5K左右

 

9.13

 

java 数据结构与算法

1.冒泡排序 (交换位置次数较多,效率低,是效率最差的排序,他最简单)

2.选择排序(比较次数跟冒泡排序一样,交换次数比冒泡排序少,效率高,比较时,记录最小的数字,跟其他的比较,比较完后,取最小的交换位置即可)

3.插入排序(比选择排序快一点,比冒泡排序快一倍),当数据量较大时,用快速排序较好

 

9.15

( --------work------

http://www-01.ibm.com/support/docview.wss?uid=swg27016507

osgi

 

第一个问题从学抽象类和接口就一直在想。总结了下,可以这么描述。 

 

抽象类 和接口的区别还是在类和接口的特性上。 

 

一个实现类只可以继承一个抽象类,但是可以实现多个接口。 

所以抽象类是用来定义一些本质的东西。 

而接口是一些可切换的标准。 

 

比如一个门,我会用抽象类定义这个门的开合,门框。有这些东西他就是一个门的事物。抽象类定义这个本质。 

一个门只能是门,不可能既是门又是案板。只能有一个本质。 

 

有猫眼槽大小。就是接口。 

门铃槽大小。就是接口 

 

如果我有门铃槽,表示我符合“有门铃门”的标准。而且你接入了直径是2厘米的猫眼槽,全世界制造这个直径的猫眼你都能随意切换。 

一个门可以实现多个标准。 

 

在开发中,用持久层举例。我会用一个抽象类定义AbstBaseDAO 来封装一些基本的 增删查改。 

方言类我会用接口方便在多个库之间切换。 

 

 

标准jdk库。。。有印象的就是io那里,好像是用到装饰模式。。 

单例就不用说了。

 

java:comp/env

 

 

晒晒计划

 1.Spring2.5更深入地学习一下,重点把IOC、AOP、MVC和Transaction部分的源代码看一遍,写几篇Blog总结一下 

2.Hibernate3.X再熟悉一下,深入源码,把Hibernate的运行机制摸透,写一篇心得总结一下 

3.了解一下AspectJ,重点摸清楚其主要特性、用法和限制,跟Spring AOP比对一下,写一篇读书笔记 

4.再次熟悉一下JEE各主要规范,写几篇Blog总结一下 

5.把《构建可扩展的Web站点》再读一遍,写一篇心得 

 

时间:5.19 — 6.7

 

呵呵,我也晒晒计划:

1.写个Tomcat源码debug总结

2.看完我那本《Java并发编程实践》,多做练习,多归纳

3.阅读Spring和Hibernate源代码,无针对性,先熟悉大体结构,写总结

4.学习AOP,包括AspectJ、JDK接口代理和CGLIB等风格的,写总结

5.学习Java IO/NIO库,顺便学习里面的设计模式,写总结

6.把JMS、JNDI、JMX等规范熟悉一下

http://www.douban.com/subject/1148282/ 推荐好书

我喜欢从java.sun.com上把虚拟机规范、Java语言规范、JavaEE的规范下载到本机。趴在床上看挺爽的,呵呵。

 

OSGi开发技术。

Oracle维护和调优。

JE嵌入式数据库。

面向组件的开发思想。

 

 6.14

Synchronized, 有两层语义,一个是互斥,一个是可见性,锁的两个特性是:互斥和可见。互斥保证了同时只有一个线程持有对象锁进行共享数据的操作,

从而保证了数据操作的原子性,而可见则保证共享数据的修改在下一个线程获得锁后看到更新后的数据

可以看出volatile的使用场景:多线程大量的读取,极少量或者一次性的写入,并且还有其他限制。

 

6.25

1.volatile:如果多个任务在同时访问某个域,那么这个域就应该是volatile,否则这个域就只能经由同步来访问

2.理解原子性与易变性,原子操作:对域中的值做赋值和返回操作通常都是原子性的

6.26

1.看简历的几个重点:学历、工作经验年限、主导和参与过的项目数量和在项目中的职责。 

  不会关注所谓“精通”,那是笔试和面试考察的范围,不是看应聘者自己说是否精通。

6.27

C:\wrok\WorkSpaces\CMBCIF\java_enhance

 

 

 

7.2

写详细文档:包名-->职责-->类关系--->具体的类--->类的描述--->类的属性--->类的方法

StepsConfigMgr

 

ApplicationContext cxt=BeanFactory.getBean...

 

Struts2源代码看了,不是看了,是类似于自己动手写了一遍,我深知看了没有任何用,

一定要写,要动手,写感悟才有用,否则看再多的书没有任何的意义与价值------巨人的总结

7.9

他如何通过命令查出是否启动了tomcat或jboss

 

ps -ef | grep tomcat

Linux下查看Java进程:ps -ef |grep java

stackoverflow、github 外国技术网站

 

多投投,机会还是很多的!

业余时间看看socket,多线程,hadoop的子项目(主要是架构和算法),nosql(cassandra,redis),熟悉java各种集合的内部数据结构。

你对Java的集合框架了解吗? 能否说说常用的类? 

 

作业条是工作条

报文体包括作业条(工作条),

报文包括报文头+报文体(作业条(作业头+作业接口,作业正文)-->工作条)

 

8.3

联机交易代码(周(M3RRPQueryStep,M3RRPBuildRetStep,Operation),陈)

工程:3_module_CoreTx,2_comm_RegClt,2_comm_Support

调用存储过程:context.callStoredProc(String paramsNodeName, String spId, String outputNodeName)

为什么会出现乱码:然而由于两种字符集之间编码的规则不同,导致转换出现乱码,这是因为,

在不同的字符集之间,同样的数字可能对应了不同的符号,也可能在另一种字符集中,该数字没有对应符号。

在计算机中,只有二进制的数据,不管数据是在内存中,还是在外部存储设备上。对于我们所看到的字符,

也是以二进制数据的形式存在的。不同字符对应二进制数的规则,就是字符的编码。字符编码的集合称为字符集。

context就是作业条

 

 

8.8

JMX   Java Management Extensions 

MX是拿来做管理运行时对象用的,比如说系统中有很多配置文件,怎么才能在运行时改变这些配置文件的值呢?这就需要jmx

 

 netstat -a  查看监听端口

 

 

MBeanFactory factory = AdminServiceFactory.getMBeanFactory();

 

MBeanServer  所在的包?websphere

MBeanHome 所在的包? websphere

com.ibm.jaxws.thinclient_6.1.0.jar

com.ibm.ws.admin.client_6.1.0.jar

com.ibm.ws.webservices.thinclient_6.1.0.jar

as400 reset connection socket

java.net.socketexception connection reset

 

1.防火墙

2.服务器端在客户端运行第一次结束的时候也跟着结束了,所以在客户端第二次写数据的时候服务器并没有开启,所以才会有服务器端链接重置的异常

jar命令:

java -cp WkecodeMessageSender.jar -Dhost=localhost -Dport=8080 -Durl=/3_module_CoreTx/cif -Drequest=C:\db2trace\message_20120807102247.txt -Dresponse=C:\db2trace\message.txt com.cmb.oltp.framework.test.WkecodeMessageSender

写批处理

java -cp WkecodeMessageSender.jar -Dhost=%1 -Dport=%2 -Durl=/3_module_CoreTx/cif -Drequest=%3 -Dresponse=%4 com.cmb.oltp.framework.test.WkecodeMessageSender

执行批处理

msgSender(批处理名称) localhost 8080 "C:\db2trace\message_20120807102247.txt" "C:\db2trace\message.txt com.cmb.oltp.framework.test.WkecodeMessageSender"

 

8.10

netstat

MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();

MBeanServerFactory

 

MBeanHome mbeanHome = (MBeanHome)ctx.lookup(MBeanHome.ADMIN_JNDI_NAME);

ServerMBean serverMBean = 

(ServerMBean)mbeanHome.getAdminMBean(serverName, "Server");

return serverMBean.getListenPort();

 

8.15

进程和线程区别

简而言之,一个程序至少有一个进程,一个进程至少有一个线程.

常用的套接字是数据流类型(TCP)和数据报文类型(UDP)

网络由下往上分为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。通过初步的了解,我知道IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用层,

HTTP协议中几个状态码的含义:503 500 401 200 301 302。。。

 

8.20

java.net.SocketException: Connection reset

8.22

在运行期间获得WebLogic Server所监听的IP地址和端口号

 

8.23

权限基本上3种控制方式

1:页面的只定义标签控制,按钮

2:url的拦截

3:AOP控制数据权限。

 

spring security就不错,开源例子很好

现成的网上可以copy

 

在运行期间获得was 8所监听的IP地址和端口号

websphere application server 8   监听 port ,address

 

 

8.24

BufferReader 因为readLine的方法读不出’\n’,’\r\n’,所以读出来的内容其长度与实际长度有出入。 

 

接收服务器端的报文数据不完整  java

 

接收服务器端的报文数据丢包  java

 

 

8.28

把think in java认真看一遍能应付上面的一半的问题

 

 

我感觉这个兄弟说的很正确! 

 

1.hashmap的内部实现机制,hash是怎样实现的,什么时候rehash 

2.java的内存管理 

5.java底层是怎样对文件操作的 

7.并发问题,锁,怎么处理死锁,脏数据处理 

9.equals和hashcode这些方法怎么使用的 

10.java的NIO 

 

 

这些知识点,看过 think in java 的都可以回答的差不多。 

 

equals 吧,think in java 就讲到了它设计的原则,也就是离散数学中的 等价关系。 

hashcode也讲的很详细。 

hashmap就不用说了。 

等等。。。。

as 400 获取报文,返回的报文有中文时,报文长度不够

 

9.1

http://www.111cn.net/jsp/Java/41497.htm

 

http://wentao365.iteye.com/blog/1374731

 

9.4

设计模式,重构,JVM,多线程,JAAS,SSO,JMS,缓存,UML,OOAD,分布式,集群,liunux etc.

 

9.6

http://localhost:9060/ibm/console/login.do

 

9.10

http://ibm-websphere.group.iteye.com/group/share

http://www.iteye.com/topic/609285

http://www.iteye.com/topic/192717

http://activemq.group.iteye.com/

http://www.iteye.com/topic/189652

http://www.iteye.com/topic/163560

 

9.11

什么是分布式事务??

就是管理不在同一台服务器上的N条操作的事务。。

 

 

如果在一个事务中,操作的资源只有一个,那这个事务就是本地事务。如果操作的资源不止一个,那们就可以称为分布式事务。这里的资源指数据库的连接,JMS的连接或者其他的一些连接。 

  请各位大侠说说自己的看法。

 

什么是事务?

 

我们将事务 定义为对应用程序状态的相关操作的集合

事务具有原子性、一致性、隔离性 以及持久性 这几个属性。这些属性统称为 ACID 属性。

 

9.13

学习NIO,并发包,多线程,多读读JDK源代码,阅读spring源码,学习javascript和jquery,提高自己的英语阅读水平

)

 

9.16

栈:先进后出 (pop(出栈),push(入栈),peek()查看)

队列:先进先出

遍历树:中序遍历(最常用),前序遍历,后序遍历

遍历树最简单的方法是用递归

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值