Home 博客

知力企业博客

A short description about your blog

个人知识管理的29个原则

Posted by: 快乐的小鱼 in Untagged  on

 1、持续的学习成为个人生存和发展的基础。持续学习不一定能带来成功,但不学习一定失败;
2、信息和知识爆炸,在一段时间和时期内,学习的内容必须聚焦。起码要在一个领域内成为专家。
3、你应该学习的内容取决于你的价值观、特长、个性和目标。
4、你必须学会如何有效的评估信息和知识,所以你必须根据你的价值观、特长、个性和目标确立自己对信息和知识的"过滤器";
5、人是知识获取的重要渠道,所以你应该知道谁最擅长什么?遇到问题时知道可以向谁学习和请教;
6、你牛了你的朋友也一定牛,建立人际资源的基础是自己的知识基础、个性和激情、自己优势的合理展示和帮助别人的意愿;
7、人际关系需要维护;捷径是找到那些愿意共享自己朋友资源的人,你也应该做这样的人;
8、信息如果不经过处理,不能称为知识。所以你存储的知识起码你应该简单看过、知道是在讲什么;
9、信息和知识存储前应该尽可能做规范化的工作,例如你做的摘要、感触、觉得最有价值的部分、将来能做什么用等等;
10、建立自己的分类字典,而不是每次想起什么就建立什么样的文件夹或者标签。分类字典,持之以恒坚持,适当调整;
11、知识存储中分类不宜过宽,过宽则等于没有分类;分类不宜过深,过深后你就不会再去看;
12.充分利用各种工具,尤其是web2.0工具做知识存储和获取工作;
13.知识存储时适当共享,听取和收集别人的意见和建议;
14、有意识的做知识显性化的工作,既方便知识传播也促进知识学习和建立人际网络;
15、知识传播中必须考虑传播的方式和效率;
16、不能用简单朴素的语言表述的知识证明你还没有深入理解;
17、多用举例子、讲故事的方法传播你的知识、见解。这个过程是你对知识的再深化过程;
18、你的知识传播的越广,你的影响力越大;
19、你的目的决定了你知识利用的方式。如果目的是要写论文,则你的知识就是明确、简洁的表达;如果是想要在市场上销售,就必须产品化、规范化或者专利化;
20、知识本身没有价值,只有被利用时才能展现其价值;
21、知识必须跟任务、项目结合起来才能发挥作用;
22、单独的一个主题的知识很难被很好的利用,所以你必须将你的知识融入团队中或者找到自己的合作伙伴;
23、知识创新最简单的方法是总结和分析;
24、知识创新是一种习惯;
25、学习或者实践---总结----将总结出来的内容投入实践检验和请行家批评-继续总结和实践;
26、不能光做,还要思考;
27、个人竞争力的源泉不是你现在知道的或者掌握的,而是你选择方向和快速学习的能力,是你能够将知识用足用好的能力;
28、环境造就人,太安逸的环境对个人的发展弊大于利。如果不能找到好的环境,那就自己给自己压力;
29、既要会做,也要会展示自己做的,要有树立个人品牌的意识。


JAVA中的数据库连接池

Posted by: 快乐的小鱼 in Untagged  on

问题提出

应用系统中频繁的对数据库进行操作,每次操作都要进行“建立,操作,释放”等过程,导致性能低下,资源浪费。

数据库连接池(connection pool)的工作原理

对于共享资源,有一个很著名的设计模式:资源池(Resource Pool)。该模式正是为了解决资源的频繁分配﹑释放所造成的问题。为解决上述问题,可以采用数据库连接池技术。数据库连接池的基本思想就是为数据库连接 建立一个缓冲池。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从缓冲池中取出一个,使用完毕之后再放回去。 

 

  服务器自带的连接池

  JDBCAPI中没有提供连接池的方法。一些大型的WEB应用服务器如BEAWebLogicIBMWebSphere等提供了连接池的机制,但是必须有其第三方的专用类方法支持连接池的用法。

  连接池关键问题分析

  1、并发问题

  为了使连接管理服务具有最大的通用性,必须考虑多线程环境,即并发问题。这个问题相对比较好解决,因为Java语言自身提供了对并发管理的 支持,使用synchronized关键字即可确保线程是同步的。使用方法为直接在类方法前面加上synchronized关键字,如:

public synchronized Connection getConnection()

  2、多数据库服务器和多用户

  对于大型的企业级应用,常常需要同时连接不同的数据库(如连接OracleSybase)。如何连接不同的数据库呢?我们采用的策略是: 设计一个符合单例模式的连接池管理类,在连接池管理类的唯一实例被创建时读取一个资源文件,其中资源文件中存放着多个数据库的url地址 ()﹑用户名()﹑密码 ()等信息。

  3、事务处理

  我们知道,事务具有原子性,此时要求对数据库的操作符合“ALL-ALL-NOTHING”原则,即对于一组SQL语句要么全做,要么全不做。

  在Java语言中,Connection类本身提供了对事务的支持,可以通过设置ConnectionAutoCommit属性为 false,然后显式的调用commitrollback方法来实现。但要高效的进行Connection复用,就必须提供相应的事务支持机制。可采用 每一个事务独占一个连接来实现,这种方法可以大大降低事务管理的复杂性。

  4、连接池的分配与释放

  连接池的分配与释放,对系统的性能有很大的影响。合理的分配与释放,可以提高连接的复用度,从而降低建立新连接的开销,同时还可以加快用户的访问速度。

  5、连接池的配置与维护

  连接池中到底应该放置多少连接,才能使系统的性能最佳?系统可采取设置最小连接数(minConn)和最大连接数(maxConn)来控制 连接池中的连接。

  

具体的实现

javax.sql.RowSet 包添加了对缓冲数据源的支持,即可以将缓冲池缓冲的数据库连接看作是一个是实实在在的数据源服务来使用。RowSet 包提供了好几个接口用于处理数据库缓冲池,主要的接口有:
1
DataSource 接口:DataSource 接口的实例对象代表了存在于中间层服务器中的缓冲数据源服务。使用它可以返还数据库缓冲池中现存的数据库连接,DataSource 接口的实例对象实际上是某个JNDI 服务的提供者,在使用它之前,该JNDI 服务对象必须先在中间层服务器环境中注册,并且和某个服务名绑定在一起,然后它才能被别的Java 应用程序调用。
2
ConnectionPoolDataSource 接口:该接口可以用于创建一个被缓冲于缓冲池的数据库物理连接,它有可能会被DataSource 接口的实例对象调用。
3
PooledConnection 接口:该接口代表被缓冲的数据库连接,它定义了一个getConnection()方法使用这个方法可以返回java.sql.Connection 接口的实例对象。

 

在继续连接池之前,先讲一下JNDI概述 

 
  我们大家每天都不知不觉地使用了命名服务。例如,当你在web浏览器输入URL,http://java.sun.com 时,DNS(Domain Name System,域名系统)将这个符号URL名转换成通讯标识(IP地址)。命名系统中的对象可以是DNS记录中的名 称、应用服务器中的EJB组件(Enterprise JavaBeans Component) LDAP(Lightweight Directory Access Protocol)中的用户Profile 

  目录服务是命名服务的自然扩展。两者之间的关键差别是目录服务中对象可以有属性(例如,用户有email地址),而命名服务中对象没有属性。因此,在 目录服务中,你可以根据属性搜索对象。JNDI允许你访问文件系统中的文件,定位远程RMI注册的对象,访问象LDAP这样的目录服务,定位网络上的 EJB组件。 

  对于象LDAP 客户端、应用launcher、类浏览器、网络管理实用程序,甚至地址薄这样的应用来说,JNDI是一个很好的选择。 

 

JAVAtomcat应用。

JAVA中代码

Context ic = new InitialContext();

DataSource source = (DataSource) ic .lookup("java:comp/env/jdbc/books");

connection = source.getConnection();

 

Tomcatconf/context.xml中的配置,在根节点Context中加入

  

   <Resource name="jdbc/books"  auth="Container" type="javax.sql.DataSource"  maxActive="100"     maxIdle="30" maxWait="10000"    username="admin"   password="admin"     driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"      url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=books" />

 

属性名称

说明

name

指定ResourceJNDI名称

auth

指定管理ResourceManagerContainer:由容器创建和管理|Application:由Web应用创建和管理)

type

指定Resource所属的Java

maxActive

指定连接池中处于活动状态的数据库连接的最大数目

maxIdle

指定连接池中处于空闲状态的数据库连接的最大数目

maxWait

指定连接池中的连接处于空闲的最长时间,超过这个时间会抛出异常,取值为-1,表示可以无限期等待

 

补充:如果是Mysql的数据库

  
              username="ccs" password="secret" url="jdbc:mysql://localhost:3306/ccs"
              driverClassName="com.mysql.jdbc.Driver"
              maxActive="20" maxIdle="10"/>

 

把数据库驱动(mssqlserver2.jar).jar文件,加入到Tomcatcommonlib

 

注意:在Tomcate5.5以下的版本,还需要项目工程的web.xml中添加,资源引用

    jdbc/books

    javax.sql.DataSource

    Container

 

 

getClass()

 

这是java 中的反射机制,当一个class生成实例的时候JVM中都会有一个class来描述这个class的属性,你可以通过实例的.getclass()这个方法来拿到这个class

 

    InputStream is = getClass().getResourceAsStream("/db.properties");

 

  这个方法实际上是通过ClassLoader来工作的      所以要把db.properties   放到ClassPath里面去  

 

注意:src/目录下的文件,部署后,会放到WEB-INFclasses

 

Class

forName(className)这个名为className的类装入JVM  
 
这样就可以动态的加载类,通过Class的反射机制可以获得此类的一些信息

 

Class.forName(); 的好处在于你不用编译/运行时依赖于特定的 JDBC Driver , 也就减少了项目代码的依赖性. 而且也很容易改造成从配置文件读取JDBC配置, 从而可以在运行时动态更换JDBC/DB.

实际上这样也可以的。

com.mysql.jdbc.Driver driver = new com.mysql.jdbc.Driver();

//or

//new com.mysql.jdbc.Driver();   

String url = "jdbc:mysql://127.0.0.1/test?useUnicode=true&characterEncoding=utf-8";

String user = "";

String psw = "";

Connection con = DriverManager.getConnection(url,user,psw);

 

ResultResultSet的区别

 在开发过程中,我们不能返回ResultSet对象,连接一旦断开,在连接上建立的会话和在会话上建立的结果集都会自动关闭.所以我们必须开发类似于返 回List的接口.但是针对通用函数,List是无能为力的,我们要返回比List更通用的,jstl中的Result可以完成此任务.

 

解析Java对象的equals()hashCode()的使用。

Java语言中,equals()hashCode()两个函数的使用是紧密配合的,你要是自己设计其中一个,就要设计另外一个。在多数情况 下,这两个函数是不用考虑的,直接使用它们的默认设计就可以了。但是在一些情况下,这两个函数最好是自己设计,才能确保整个程序的正常运行。

需要自己设计的场合:当一个对象(比如,自定义的类)加入到一个集合中时,并且要对集合中的对象进行添加,搜索,删除等操作时。可能需要重写这两个方法。

equals():

它是用于进行两个对象的比较的,是对象内容的比较,当然也能用于进行对象参阅值的比较。

对象内容的比较才是设计equals()的真正目的,Java语言对equals()的要求如下,这些要求是必须遵循的。否则,你就不该浪费时间:

·         对称性:如果x.equals(y)返回是“true”,那么y.equals(x)也应该返回是“true”

·         反射性:x.equals(x)必须返回是“true”

·         类推性:如果x.equals(y)返回是“true”,而且y.equals(z)返回是“true”,那么z.equals(x)也应该返回是“true”

·         还有一致性:如果x.equals(y)返回是“true”,只要xy内容一直不变,不管你重复x.equals(y)多少次,返回都是“true”

·         任何情况下,x.equals(null),永远返回是“false”x.equals(x不同类型的对象)永远返回是“false”

hashCode():
JDK API 1.6.0的解释:
hashCodepublic int hashCode()
返回该对象的哈希码值。支持此方法是为了提高哈希表(例如 java.util.Hashtable 提供的哈希表)的性能。 hashCode 的常规协定是:

·         如果x.equals(y)返回“true”,那么xyhashCode()必须相等。

·         如果x.equals(y)返回“false”,那么xyhashCode()有可能相等,也有可能不等。

 第二规则,可能是由于hash冲突造成的。


Kulanite's Typography

Posted by: 快乐的小鱼 in Untagged  on

This page presents most of typographical aspects of JA Kulanite. Make your readers happy with great Typography and User Experience!

This is an Heading 1

Lorem tortor Curabitur urna interdum Maecenas ut felis Sed euismod id. Congue Quisque augue elit dolor nibh id lobortis egestas tristique fringilla. Laoreet elit.

This is an Heading 2

Wisi sed pede Phasellus Vestibulum elit consequat consequat eu pellentesque metus. Laoreet Vestibulum pharetra pede mattis nunc dapibus id magna a dictumst.

Below is a sample of <pre> or <div class="code">

#ja-rightcol {   width: 180px;   float: right;   color: #EEEEEE; } 

This is an Heading 3

Wisi sed pede Phasellus Vestibulum elit consequat consequat eu pellentesque metus. Laoreet Vestibulum pharetra pede mattis nunc dapibus id magna a dictumst. Nunc cursus sem et pretium sapien eget consectetuer malesuada Phasellus Curabitur.

  1. This is a sample Ordered List.
  2. Lorem ipsum dolor sit amet consectetuer.
  3. Condimentum quis.
  4. Congue Quisque augue elit dolor nibh.

This is an Heading 4

Wisi sed pede Phasellus Vestibulum elit consequat consequat eu pellentesque metus. Laoreet Vestibulum pharetra pede mattis nunc dapibus id magna a dictumst. Nunc cursus sem et pretium sapien eget consectetuer malesuada Phasellus Curabitur.

  • This is a sample Unordered List.
  • Condimentum quis.
  • Congue Quisque augue elit dolor.
  • Nunc cursus sem et pretium sapien eget.
  • This is a sample Check list. Interdum Vestibulum Sed Lorem eu
  • Dolor Curabitur Nam Nulla augue id iaculis a nec Cum at.
  • Lorem et nunc congue pede auctor condimentum habitasse rutrum
  • Nunc cursus sem et pretium sapien eget.
  • This is a sample Unordered list. Interdum Vestibulum Sed Lorem eu
  • Dolor Curabitur Nam Nulla augue id iaculis a nec Cum at.
  • Lorem et nunc congue pede auctor condimentum habitasse rutrum
  • Nunc cursus sem et pretium sapien eget.
This is a sample Bubble. Use <div class="bubble1"> <div> <div> <div> <div> <div> Your Bubble goes here! </div> </div> </div> </div> </div><span class="author">ROUNDED SPEECH BUBBLE</span> </div>
ROUNDED SPEECH BUBBLE.
This is a sample Bubble. Use <div class="bubble2"><div><div><div> <div><div>Your Bubble goes here! </div></div></div></div></div><span class="author">SQUARE SPEECH BUBBLE.</span> </div>
SQUARE SPEECH BUBBLE.
This is a sample Bubble. Use <div class="bubble3"> <div> <div> <div> <div> <div> Your Bubble goes here! </div> </div> </div> </div></div><span class="author">ROUNDED THINKING BUBBLE</span> </div>
ROUNDED THINKING BUBBLE.
This is a sample Bubble. Use <div class="bubble4"><div><div><div><div><div> Your Bubble goes here! </div></div></div></div></div><span class="author">SQUARE THINKING BUBBLE</span> </div>
SQUARE THINKING BUBBLE.

This is a sample clip note. Use <p class="stickynote">Your clip note goes here!</p> to form a clip note!

This is a sample download. Use <p class="download">Your download goes here!</p> to form a download!

This is a sample Blockquote. Use <blockquote>Your quote goes here!</blockquote> to form a quote!
This is a sample Blockquote. Use <blockquote><span class="open">Y</span>our quote goes her<span class="close">e!</span></blockquote> to form a quote!

01This is a sample block number. Use <p class="blocknumber"><span class="bignumber">01.</span>Your content goes here!</p> to form a block number!

02This is a sample block number. Use <p class="blocknumber"><span class="bignumber">02.</span>Your content goes here!</p> to form a block number!

03This is a sample block number. Use <p class="blocknumber"><span class="bignumber">03.</span>Your content goes here!</p> to form a block number!

This is a sample error message. Use <p class="error">Your error message goes here!</p>.

This is a sample info message. Use <p class="message">Your info message goes here!</p>.

This is a sample tips message. Use <p class="tips">Your tips goes here!</p>.

This is a highlight phrase. Use <span class="highlight">Your highlight phrase goes here!</span>.

This is a Magazine Style Drop Cap. The first letter in this paragraph is big. JA Kulanite bring into your Jooomla template the magazine drop cap technique and CSS2 includes the first-letter pseudo class. In all fairness to the paragraph itself we probably should type enough to see how it looks when it is surrounded by its textual friends by using more words.

Legend style

Use <div class="legend"><h3 class="legend-title">Your title</h3><p>Lorem ipsum dolor sit amet consectetuer at elit augue In lorem. Quis Donec libero at Vivamus mi fringilla neque commodo at vitae. A mauris risus consequat ac egestas netus est Vestibulum Curabitur consectetuer.</p></div>




友情链接: 100分教育社区 上海市企业信息化促进中心 国家工业和信息化部 中国信息安全评测认证中心 中国教育网 多特软件站 天空软件站 华军软件园 上海西楚礼仪