`
mengdejun
  • 浏览: 408117 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Easyconnectionpool2.0

 
阅读更多
  1. packagecom.mdj.dmdatabase.develop;
  2. importjava.io.PrintWriter;
  3. importjava.io.Serializable;
  4. importjava.io.UnsupportedEncodingException;
  5. importjava.sql.Connection;
  6. importjava.sql.ResultSet;
  7. importjava.sql.SQLException;
  8. importjava.util.List;
  9. importjava.util.Map;
  10. importjava.util.Vector;
  11. importjavax.sql.DataSource;
  12. /**
  13. *@seeConnectionpoolEasyconnectionPool
  14. *@author武汉软件工程职业学院<br>
  15. *孟德军<br>
  16. *2009-01-01<br>
  17. *封装了Dbutils工具<br>
  18. *的部分细节
  19. *@version2.0
  20. */
  21. publicinterfaceDmDataSourceextendsDataSource,Serializable{
  22. /**
  23. *@see#resultset存放数据库的表信息.
  24. */
  25. ResultSetresultset=null;
  26. /**
  27. *@see#con数据库连接
  28. */
  29. Connectioncon=null;
  30. /**
  31. *@see#pool连接池容器.可自行选择。
  32. */
  33. Vector<Connection>pool=null;
  34. /**
  35. *@see#driverclass数据库驱动类
  36. */
  37. Stringdriverclass=null;
  38. /**
  39. *@see#uername数据库用户名
  40. */
  41. Stringuername=null;
  42. /**
  43. *@see#password数据库密码
  44. */
  45. Stringpassword=null;
  46. /**
  47. *@see#url连接数据库url
  48. */
  49. Stringurl=null;
  50. /**
  51. *@see#filepath配置文件路径.
  52. */
  53. Stringfilepath=null;
  54. /**
  55. *@see#logpath日志文件路径.
  56. */
  57. Stringlogpath=null;
  58. /**
  59. *@see#maxwaittime允许等待时间
  60. */
  61. intmaxwaittime=0;
  62. /**
  63. *@see#delaytime延迟时间
  64. */
  65. intdelaytime=0;
  66. /**
  67. *@see#maxconnection最大连接
  68. */
  69. intmaxconnection=0;
  70. /**
  71. *@see#minconnection最小连接
  72. */
  73. intminconnection=0;
  74. /**
  75. *@see#poolsize连接池大小.
  76. */
  77. intpoolsize=0;
  78. publicvoidcloseConnectionPool()throwsSQLException;
  79. /**
  80. *@paramusername数据库用户名<br>password数据库密码
  81. *@deprecated建议使用getconnection()
  82. *@see#getConnection()参见
  83. */
  84. publicConnectiongetConnection(Stringusername,Stringpassword)
  85. throwsSQLException;
  86. /**
  87. *@see#getConnection()无用户名和密码,以在配置文件中配置。
  88. */
  89. publicConnectiongetConnection()throwsSQLException;
  90. publicPrintWritergetLogWriter()throwsSQLException;
  91. publicintgetLoginTimeout()throwsSQLException;
  92. publicvoidreleaseConnection(Connectioncon);
  93. publicvoidsetLogWriter(PrintWriterout)throwsSQLException;
  94. publicvoidsetLoginTimeout(intseconds)throwsSQLException;
  95. publicMapmapexecuteQuery(Stringsql)throwsSQLException;
  96. publicListlistexecuteQuery(Stringsql,Classbeanclass)
  97. throwsSQLException;
  98. publicResultSetgetTables(Stringcatalog,Stringschemapattern,
  99. Stringtablenamepattern,String[]types)throwsSQLException;
  100. publicintgetJDBCMajorVersion()throwsSQLException;
  101. publicintgeneralUpdate(Stringsql)throwsSQLException;
  102. publicResultSetgeneralQuery(Stringsql)throwsSQLException;
  103. publicStringtoChinese(Stringstr,StringoldcharsetName,
  104. StringnewcharsetName)throwsUnsupportedEncodingException;
  105. }
  1. packagecom.mdj.dmdatabase.DmDriverManager;
  2. importjava.io.File;
  3. importjava.io.FileInputStream;
  4. importjava.io.FileNotFoundException;
  5. importjava.io.FileWriter;
  6. importjava.io.IOException;
  7. importjava.io.InputStream;
  8. importjava.io.PrintWriter;
  9. importjava.io.UnsupportedEncodingException;
  10. importjava.sql.Connection;
  11. importjava.sql.DatabaseMetaData;
  12. importjava.sql.DriverManager;
  13. importjava.sql.PreparedStatement;
  14. importjava.sql.ResultSet;
  15. importjava.sql.SQLException;
  16. importjava.sql.Statement;
  17. importjava.util.Date;
  18. importjava.util.List;
  19. importjava.util.Map;
  20. importjava.util.Properties;
  21. importjava.util.Timer;
  22. importjava.util.TimerTask;
  23. importjava.util.Vector;
  24. importjavax.xml.parsers.DocumentBuilder;
  25. importjavax.xml.parsers.DocumentBuilderFactory;
  26. importjavax.xml.parsers.ParserConfigurationException;
  27. importorg.apache.commons.dbutils.DbUtils;
  28. importorg.apache.commons.dbutils.QueryRunner;
  29. importorg.apache.commons.dbutils.handlers.BeanListHandler;
  30. importorg.apache.commons.dbutils.handlers.MapListHandler;
  31. importorg.w3c.dom.Document;
  32. importorg.w3c.dom.Element;
  33. importorg.w3c.dom.NodeList;
  34. importorg.xml.sax.SAXException;
  35. importcom.mdj.dmdatabase.pool.Dmconnection;
  36. /**
  37. *@seeConnectionpoolEasyconnectionPool
  38. *@author<hr><pbgcolor="#9acd32">武汉软件工程职业学院</p>
  39. *孟德军<br>
  40. *2009-01-03<br>
  41. *封装了Dbutils<br>
  42. *工具的部分细节
  43. *
  44. *@version2.0
  45. */
  46. publicclassDatabaseManagerextendsDmconnection{
  47. /**
  48. *
  49. */
  50. privatestaticfinallongserialVersionUID=1L;
  51. /**
  52. *@see#databasemetaData数据源.
  53. */
  54. privateDatabaseMetaDatadatabasemetaData;
  55. /**
  56. *@see#resultset存放数据库的表信息.
  57. */
  58. privateResultSetresultset=null;
  59. /**
  60. *@see#map存放mapexecuteQuery查询结果
  61. */
  62. privateMapmap=null;
  63. /**
  64. *@see#list存放listexecuteQuery查询结果
  65. */
  66. privateListlist=null;
  67. /**
  68. *@see#con数据库连接
  69. */
  70. privateConnectioncon=null;
  71. /**
  72. *@see#pool连接池容器.可自行选择。
  73. */
  74. privateVector<Connection>pool=null;
  75. /**
  76. *@see#driverclass数据库驱动类
  77. */
  78. privateStringdriverclass="dm.jdbc.driver.DmDriver";
  79. /**
  80. *@see#uername数据库用户名
  81. */
  82. privateStringusername="SYSDBA";
  83. /**
  84. *@see#password数据库密码
  85. */
  86. privateStringpassword="123456";
  87. /**
  88. *@see#url连接数据库url
  89. */
  90. privateStringurl="jdbc:dm://localhost:12345/guest";
  91. /**
  92. *@see#filepath配置文件路径.
  93. */
  94. privatestaticStringfilepath=null;
  95. /**
  96. *@see#logpath日志文件路径.
  97. */
  98. privateStringlogpath="..//server.log";
  99. /**
  100. *@see#maxwaittime允许等待时间
  101. */
  102. privateintmaxwaittime=10;
  103. /**
  104. *@see#delaytime延迟时间
  105. */
  106. privateintdelaytime=10;
  107. /**
  108. *@see#maxconnection最大连接
  109. */
  110. privateintmaxconnection=10;
  111. /**
  112. *@see#minconnection最小连接
  113. */
  114. privateintminconnection=5;
  115. /**
  116. *@see#poolsize连接池大小.
  117. */
  118. privateintpoolsize=10;
  119. /**
  120. *@see#manager本类实例.
  121. */
  122. privatestaticDatabaseManagermanager=null;
  123. /**
  124. *@see#timer扫描连接池.
  125. */
  126. privateTimertimer;
  127. privatePrintWriterwriter;
  128. privatebooleanloading=false;
  129. /**
  130. *@see#addConnection()为连接池添加连接
  131. *@throwsClassNotFoundException
  132. */
  133. privateDatabaseManager(){
  134. try{
  135. init();
  136. Filefile=newFile(logpath);
  137. writer=newPrintWriter(newFileWriter(file.getAbsolutePath(),
  138. true),true);
  139. addConnection();
  140. }catch(IOExceptione){
  141. e.printStackTrace();
  142. }
  143. }
  144. privatevoidinit(){
  145. if(loading==false){
  146. config(filepath);
  147. }else{
  148. readconfig(filepath);
  149. }
  150. pool=newVector<Connection>(maxconnection);
  151. timer=newTimer(true);
  152. }
  153. staticpublicsynchronizedDatabaseManagergetinstance(Stringpath){
  154. //必须先初始化变量filepath,然后在创建变量.
  155. DatabaseManager.filepath=path;
  156. if(manager==null){
  157. manager=newDatabaseManager();
  158. }
  159. returnmanager;
  160. }
  161. privatevoidaddConnection(){
  162. serverlog("serverstart");
  163. for(inti=0;i<maxconnection;i++){
  164. try{
  165. Class.forName(driverclass);
  166. DriverManager.setLogWriter(writer);
  167. DriverManager.setLoginTimeout(maxwaittime);
  168. con=DriverManager.getConnection(url,username,password);
  169. pool.add(con);
  170. }catch(ClassNotFoundExceptione){
  171. //TODOAuto-generatedcatchblock
  172. serverlog(e.getMessage());
  173. }catch(SQLExceptione){
  174. //TODOAuto-generatedcatchblock
  175. serverlog(e.getMessage());
  176. }
  177. }
  178. }
  179. /**
  180. *@see#releaseConnection(Connection)释放连接,返还连接池.
  181. *@returncon当前连接.
  182. *
  183. */
  184. publicsynchronizedConnectiongetConnection()throwsSQLException{
  185. if(pool.size()>0){
  186. con=pool.get(0);
  187. pool.remove(0);
  188. scaner();
  189. returncon;
  190. }else{
  191. returncon;
  192. }
  193. }
  194. /**
  195. *@see#releaseConnection(Connection)释放连接,返还连接池.
  196. *@returncon当前连接.
  197. *
  198. */
  199. publicsynchronizedConnectiongetConnection(Stringusername,
  200. Stringpassword){
  201. if(pool.size()>0){
  202. con=pool.get(0);
  203. pool.remove(0);
  204. returncon;
  205. }else{
  206. returncon;
  207. }
  208. }
  209. publicsynchronizedvoidreleaseConnection(Connectioncon){
  210. pool.add(con);
  211. }
  212. /**
  213. *@return无返回值
  214. *@see#closeConnectionPool()关闭连接,清空连接池.
  215. *@throwsSQLException
  216. */
  217. publicvoidcloseConnectionPool()throwsSQLException{
  218. for(inti=0;i<pool.size();i++){
  219. pool.get(i).close();
  220. pool.clear();
  221. timer.cancel();
  222. }
  223. }
  224. /**
  225. *@see#scaner()扫描连接池.
  226. */
  227. privatevoidscaner(){
  228. TimerTasktask=newTimerTask(){
  229. @Override
  230. publicvoidrun(){
  231. //TODOAuto-generatedmethodstub
  232. if(manager.pool.size()<maxconnection){
  233. while(manager.pool.size()<maxconnection){
  234. addConnection();
  235. }
  236. }
  237. }
  238. };
  239. timer.schedule(task,10000,10000);
  240. }
  241. /**
  242. *@see#config(String)读取配置文件.<br>
  243. *初始化数据库连接数据.
  244. *@since<hr>http://blog.csdn.net/mak0000<a
  245. *href="http://blog.csdn.net/mak0000">更多信息</a>
  246. *@throwspath
  247. *为配置文件路径,文件路径错误会抛出FileNotFoundException异常
  248. */
  249. /**
  250. *@see#config(String)读取配置文件.
  251. */
  252. privatevoidconfig(Stringpath){
  253. loading=true;
  254. DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();
  255. try{
  256. DocumentBuilderbuilder=factory.newDocumentBuilder();
  257. Documentdocument=builder.parse(DatabaseManager.filepath);
  258. NodeListnodelist=document.getElementsByTagName("dbmsdriver");
  259. for(inti=0;i<nodelist.getLength();i++){
  260. Elementelement=(Element)nodelist.item(i);
  261. driverclass=element.getElementsByTagName("driverclass").item(
  262. 0).getFirstChild().getNodeValue();
  263. url=element.getElementsByTagName("url").item(0)
  264. .getFirstChild().getNodeValue();
  265. username=element.getElementsByTagName("username").item(0)
  266. .getFirstChild().getNodeValue();
  267. password=element.getElementsByTagName("password").item(0)
  268. .getFirstChild().getNodeValue();
  269. maxconnection=Integer
  270. .parseInt(element.getElementsByTagName("maxconnection")
  271. .item(0).getFirstChild().getNodeValue());
  272. minconnection=Integer
  273. .parseInt(element.getElementsByTagName("minconnection")
  274. .item(0).getFirstChild().getNodeValue());
  275. logpath=element.getElementsByTagName("logpath").item(0)
  276. .getFirstChild().getNodeValue();
  277. maxwaittime=Integer.parseInt(element.getElementsByTagName(
  278. "maxwaittime").item(0).getFirstChild().getNodeValue());
  279. delaytime=Integer.parseInt(element.getElementsByTagName(
  280. "delaytime").item(0).getFirstChild().getNodeValue());
  281. }
  282. }catch(ParserConfigurationExceptione){
  283. //TODOAuto-generatedcatchblock
  284. e.printStackTrace();
  285. serverlog(newDate()+":/t"+e.getMessage()+"/n");
  286. }catch(SAXExceptione){
  287. e.printStackTrace();
  288. serverlog(newDate()+":/t"+e.getMessage()+"/n");
  289. }catch(IOExceptione){
  290. e.printStackTrace();
  291. serverlog(newDate()+":/t"+e.getMessage()+"/n");
  292. }
  293. }
  294. /**
  295. *@deprecated该方法为候选方法.
  296. *@parampath
  297. *配置文件路径.
  298. */
  299. publicvoidreadconfig(Stringpath){
  300. loading=false;
  301. Propertiesproperties=newProperties();
  302. try{
  303. InputStreamin=newFileInputStream(DatabaseManager.filepath);
  304. properties.load(in);
  305. driverclass=properties.getProperty("driverclass");
  306. url=properties.getProperty("url");
  307. username=properties.getProperty("username");
  308. password=properties.getProperty("password");
  309. maxconnection=Integer.parseInt(properties
  310. .getProperty("maxconnection"));
  311. minconnection=Integer.parseInt(properties
  312. .getProperty("minconnection"));
  313. delaytime=Integer.parseInt(properties.getProperty("delaytime"));
  314. logpath=properties.getProperty("logpath");
  315. in.close();
  316. }catch(FileNotFoundExceptione){
  317. e.printStackTrace();
  318. }catch(IOExceptione){
  319. e.printStackTrace();
  320. }
  321. }
  322. /**
  323. *@see#serverlog(String)日志.
  324. *@parammsg
  325. *异常及日常信息.
  326. *@since<ahref="http://www.w3.org/xmlschema">建议将变量以配置文件形式存放,<br>
  327. *以方便使用,例如xml,properties<br>
  328. *文件.</a>
  329. */
  330. privatevoidserverlog(Stringmsg){
  331. writer.println(newDate()+":"+msg);
  332. writer.close();
  333. }
  334. /**
  335. *@see#setLogWriter(PrintWriter)setdelaytime
  336. *@throwsSQLException
  337. */
  338. publicvoidsetLoginTimeout(intseconds)throwsSQLException{
  339. this.maxwaittime=seconds;
  340. }
  341. /**
  342. *@see#getLoginTimeout()getdelaytime.
  343. *@throwsSQLException
  344. */
  345. publicintgetLoginTimeout()throwsSQLException{
  346. returnmaxwaittime;
  347. }
  348. /**
  349. *@see#setLogWriter(PrintWriter)setlogwriter.
  350. *@throwsSQLException
  351. */
  352. publicvoidsetLogWriter(PrintWriterout)throwsSQLException{
  353. this.writer=out;
  354. }
  355. /**
  356. *@see#getLogWriter()getlogwriter
  357. *@throwsSQLException
  358. */
  359. publicPrintWritergetLogWriter()throwsSQLException{
  360. returnwriter;
  361. }
  362. /**
  363. *@see#listexecuteQuery(String,Class)putthevarinlist,listincludesobjectsbean
  364. *@sinceBook.class<br>
  365. *Bookbook=(Book)result.get(i);<br>
  366. *book.getid();
  367. */
  368. @Override
  369. publicListlistexecuteQuery(Stringsql,Classbeanclass)
  370. throwsSQLException{
  371. con=getConnection();
  372. DbUtils.loadDriver(driverclass);
  373. //buildaqueryrunnerinstance.
  374. QueryRunnerqueryrunner=newQueryRunner();
  375. list=(List)queryrunner.query(con,sql,
  376. newBeanListHandler(beanclass));
  377. releaseConnection(con);
  378. returnlist;
  379. }
  380. /**
  381. *@see#mapexecuteQuery(String)map形式存放数据.listincludesmap
  382. */
  383. @Override
  384. publicMapmapexecuteQuery(Stringsql)throwsSQLException{
  385. //TODOAuto-generatedmethodstub
  386. con=getConnection();
  387. DbUtils.loadDriver(driverclass);
  388. QueryRunnerqueryrunner=newQueryRunner();
  389. list=(List)queryrunner.query(con,sql,newMapListHandler());
  390. releaseConnection(con);
  391. for(inti=0;i<list.size();i++){
  392. map=(Map)list.get(i);
  393. }
  394. returnmap;
  395. }
  396. /**
  397. *@see#getTables(String,String,String,String[])获取数据库表结构.
  398. *@paramcatalog
  399. *,schemaPattern,tableNamePattern,types
  400. *
  401. */
  402. publicResultSetgetTables(Stringcatalog,StringschemaPattern,
  403. StringtableNamePattern,String[]types)throwsSQLException{
  404. con=getConnection();
  405. databasemetaData=con.getMetaData();
  406. resultset=databasemetaData.getTables(catalog,schemaPattern,
  407. tableNamePattern,types);
  408. releaseConnection(con);
  409. returnresultset;
  410. }
  411. /**
  412. *@see#getJDBCMajorVersion()jdbc主版本号.
  413. */
  414. @Override
  415. publicintgetJDBCMajorVersion()throwsSQLException{
  416. //TODOAuto-generatedmethodstub
  417. con=getConnection();
  418. databasemetaData=con.getMetaData();
  419. intversion=databasemetaData.getJDBCMajorVersion();
  420. releaseConnection(con);
  421. returnversion;
  422. }
  423. /**
  424. *@see#getJDBCMinorVersion()jdbc次版本号.
  425. */
  426. @Override
  427. publicintgetJDBCMinorVersion()throwsSQLException{
  428. //TODOAuto-generatedmethodstub
  429. con=getConnection();
  430. databasemetaData=con.getMetaData();
  431. intversion=databasemetaData.getJDBCMinorVersion();
  432. releaseConnection(con);
  433. returnversion;
  434. }
  435. @Override
  436. /*
  437. *@see#getMaxConnections()数据库支持的同时建立连接的对象数目.
  438. */
  439. publicintgetMaxConnections()throwsSQLException{
  440. con=getConnection();
  441. databasemetaData=con.getMetaData();
  442. intmaxconnection=databasemetaData.getMaxConnections();
  443. releaseConnection(con);
  444. returnmaxconnection;
  445. }
  446. /**
  447. *@see#getMaxStatements()数据库支持同时打开statement的数目.
  448. */
  449. @Override
  450. publicintgetMaxStatements()throwsSQLException{
  451. //TODOAuto-generatedmethodstub
  452. con=getConnection();
  453. databasemetaData=con.getMetaData();
  454. intminconnection=databasemetaData.getMaxStatements();
  455. releaseConnection(con);
  456. returnminconnection;
  457. }
  458. /**
  459. *@see#generalUpdate(String)更新.
  460. */
  461. publicintgeneralUpdate(Stringsql){
  462. intresult=0;
  463. Statementstatement;
  464. try{
  465. con=getConnection();
  466. statement=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
  467. ResultSet.CONCUR_UPDATABLE);
  468. result=statement.executeUpdate(sql);
  469. statement.close();
  470. releaseConnection(con);
  471. }catch(SQLExceptione){
  472. //TODOAuto-generatedcatchblock
  473. serverlog(e.getSQLState()+"/t"+e.getMessage());
  474. }
  475. returnresult;
  476. }
  477. publicResultSetgeneralQuery(Stringsql){
  478. ResultSetresult=null;
  479. Statementstatement;
  480. try{
  481. con=getConnection();
  482. statement=con.createStatement();
  483. result=statement.executeQuery(sql);
  484. result.close();
  485. statement.close();
  486. releaseConnection(con);
  487. }catch(SQLExceptione){
  488. serverlog(e.getSQLState()+"/t"+e.getMessage());
  489. }
  490. returnresult;
  491. }
  492. publicStringtoChinese(Stringstr,StringoldcharsetName,
  493. StringnewcharsetName){
  494. Stringchinesestr=null;
  495. if(str.equals(null)||str==""){
  496. chinesestr="";
  497. }else{
  498. try{
  499. chinesestr=newString(str.getBytes(oldcharsetName),
  500. newcharsetName);
  501. }catch(UnsupportedEncodingExceptione){
  502. serverlog("/t"+e.getMessage());
  503. }
  504. }
  505. returnchinesestr;
  506. }
  507. }

  1. packagecom.mdj.dmdatabase.test;
  2. importjava.io.IOException;
  3. importjava.sql.Connection;
  4. importjava.sql.SQLException;
  5. importjava.util.List;
  6. importjava.util.Map;
  7. importcom.mdj.dmdatabase.DmDriverManager.DatabaseManager;
  8. importcom.mdj.dmdatabase.javabean.Guest;
  9. /**
  10. *@since<ahref="http://blog.csdn.net/mak0000">Connectionpool
  11. *EasyconnectionPool</a>
  12. *@author武汉软件工程职业学院<br>
  13. *孟德军<br>
  14. *2009-01-01<br>
  15. *封装了Dbutils工具<br>
  16. *的部分细节
  17. *@version2.0
  18. *
  19. */
  20. publicclassTest{
  21. /**
  22. *@see#managerDatabaseManager类的实例.
  23. */
  24. privateDatabaseManagermanager;
  25. /**
  26. *@see#con<pbgcolor="#9acd32">java.sql.ConnectionconConnection实例</p>
  27. */
  28. privateConnectioncon=null;
  29. publicTest(Stringpath)throwsIOException,SQLException{
  30. manager=DatabaseManager.getinstance(path);
  31. //con=manager.getConnection();
  32. /**
  33. *此处书写代码.查询数据无需用connection接收
  34. */
  35. /*inta=manager.generalUpdate("insertintoguestbook(author,title,ip,updatetime,content)values('王红梅','你过得怎么样','192.168.18.1','2009-01-04','你过得怎么样')");
  36. System.out.println(a);*/
  37. Mapmap=manager.mapexecuteQuery("select*fromguestbook");
  38. for(inti=0;i<map.size();i++){
  39. System.out.println(map.get("author")+""+map.get("title")+""
  40. +map.get("ip")+map.get("updatetime")+""
  41. +map.get("content"));
  42. }
  43. Listlist=manager.listexecuteQuery("select*fromguestbook",
  44. Guest.class);
  45. Guestguestbook=null;
  46. for(inti=0;i<list.size();i++){
  47. guestbook=(Guest)list.get(i);
  48. System.out
  49. .println(guestbook.getAuthor()+"/t"
  50. +guestbook.getTitle()+"/t"+guestbook.getIp()
  51. +"/t"+guestbook.getUpdatetime()+"/t"
  52. +guestbook.getContent());
  53. }
  54. manager.releaseConnection(con);manager.closeConnectionPool();
  55. }
  56. publicstaticvoidmain(String[]args){
  57. Stringpath=System.getProperty("user.dir")+"//src//sysconfig.xml";
  58. try{
  59. newTest(path);
  60. }catch(SQLExceptione){
  61. }catch(IOExceptione){
  62. e.printStackTrace();
  63. }
  64. }
  65. }
分享到:
评论

相关推荐

    java连接池2.0

    Java连接池2.0,即EasyConnectionPool 2.0,是针对数据库连接管理的优化升级版本,旨在提高应用程序在处理数据库连接时的效率和稳定性。在这个版本中,开发团队引入了一个新的组件——连接池控制器(Manager),它...

    java连接池 beta v3

    在描述中提到了“数据库连接池2.0”,这可能是`easyconnectionpool`的一个新版本,相比于之前的1.5版本,它引入了一个名为“Manager”的连接池控制器。这个控制器是连接池的核心部分,负责分配、回收和管理数据库...

    【9493】基于springboot+vue的美食信息推荐系统的设计与实现.zip

    技术选型 【后端】:Java 【框架】:springboot 【前端】:vue 【JDK版本】:JDK1.8 【服务器】:tomcat7+ 【数据库】:mysql 5.7+ 项目包含前后台完整源码。 项目都经过严格调试,确保可以运行! 具体项目介绍可查看博主文章或私聊获取 助力学习实践,提升编程技能,快来获取这份宝贵的资源吧! 在当今快速发展的信息技术领域,技术选型是决定一个项目成功与否的重要因素之一。基于以下的技术栈,我们为您带来了一份完善且经过实践验证的项目资源,让您在学习和提升编程技能的道路上事半功倍。以下是该项目的技术选型和其组件的详细介绍。 在后端技术方面,我们选择了Java作为编程语言。Java以其稳健性、跨平台性和丰富的库支持,在企业级应用中处于领导地位。项目采用了流行的Spring Boot框架,这个框架以简化Java企业级开发而闻名。Spring Boot提供了简洁的配置方式、内置的嵌入式服务器支持以及强大的生态系统,使开发者能够更高效地构建和部署应用。 前端技术方面,我们使用了Vue.js,这是一个用于构建用户界面的渐进式JavaScript框架。Vue以其易上手、灵活和性能出色而受到开发者的青睐,它的组件化开发思想也有助于提高代码的复用性和可维护性。 项目的编译和运行环境选择了JDK 1.8。尽管Java已经推出了更新的版本,但JDK 1.8依旧是一种成熟且稳定的选择,广泛应用于各类项目中,确保了兼容性和稳定性。 在服务器方面,本项目部署在Tomcat 7+之上。Tomcat是Apache软件基金会下的一个开源Servlet容器,也是应用最为广泛的Java Web服务器之一。其稳定性和可靠的性能表现为Java Web应用提供了坚实的支持。 数据库方面,我们采用了MySQL 5.7+。MySQL是一种高效、可靠且使用广泛的关系型数据库管理系统,5.7版本在性能和功能上都有显著的提升。 值得一提的是,该项目包含了前后台的完整源码,并经过严格调试,确保可以顺利运行。通过项目的学习和实践,您将能更好地掌握从后端到前端的完整开发流程,提升自己的编程技能。欢迎参考博主的详细文章或私信获取更多信息,利用这一宝贵资源来推进您的技术成长之路!

    (源码)基于Spring、Struts和Hibernate的OA系统.zip

    # 基于Spring、Struts和Hibernate的OA系统 ## 项目简介 本项目是一个基于Spring、Struts和Hibernate框架的办公自动化(OA)系统。该系统主要用于企业内部的日常办公管理,包括用户登录、组织管理、权限管理等功能。系统前端使用现成的模板和JavaScript、jQuery技术,后端通过Struts、Hibernate和Spring框架实现业务逻辑和数据持久化。 ## 项目的主要特性和功能 ### 登录模块 防止多设备登录系统能够检测到同一账号在不同设备上的登录情况,并在检测到异地登录时通知用户并强制下线。 WebSocket支持使用WebSocket技术实现实时通知功能。 ### 组织管理模块 部门管理支持部门的增删改查操作,包括查看部门信息、职位信息和员工数量。 用户管理支持用户的增删改查操作,包括指定用户所在部门、职位和角色。 角色管理支持角色的增删改查操作,包括查看角色权限和修改角色权限。

    基于MySQL、express框架、Vue3的光谷智慧交通系统源码+数据库+文档说明(高分项目)

    基于MySQL、express框架、Vue3的光谷智慧交通系统源码+数据库+文档说明(高分项目),该项目是个人毕设项目,答辩评审分达到98分,代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。该资源主要针对计算机、通信、人工智能、自动化等相关专业的学生、老师或从业者下载使用,亦可作为期末课程设计、课程大作业、毕业设计等。项目整体具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现不同的功能。 基于MySQL、express框架、Vue3的光谷智慧交通系统源码+数据库+文档说明(高分项目)基于MySQL、express框架、Vue3的光谷智慧交通系统源码+数据库+文档说明(高分项目)基于MySQL、express框架、Vue3的光谷智慧交通系统源码+数据库+文档说明(高分项目)基于MySQL、express框架、Vue3的光谷智慧交通系统源码+数据库+文档说明(高分项目)基于MySQL、express框架、Vue3的光谷智慧交通系统源码+数据库+文档说明(高分项目)基于MySQL、express框架、Vue3的光谷智慧交通系统源码+数据库+文档说明(高

    open3d python 给点云每个点设置不同的颜色

    open3d python 给点云每个点设置不同的颜色

    【电磁】基于matlab具有Mur吸收边界的区域的二维FDTD【含Matlab源码 9136期】.mp4

    Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    HengCe-18900-2024-2030中国室内木门市场现状研究分析与发展前景预测报告-样本.docx

    HengCe-18900-2024-2030中国室内木门市场现状研究分析与发展前景预测报告-样本.docx

    (源码)基于ASP.NET Web API的供应链管理系统.zip

    # 基于ASP.NET Web API的供应链管理系统 ## 项目简介 供应链管理系统(SCM)是一个基于ASP.NET Web API框架开发的企业级应用,旨在帮助企业高效管理供应链中的各个环节。系统涵盖了供应商管理、采购管理、库存管理、订单管理等多个模块,通过API接口实现数据的增删改查操作,确保供应链的顺畅运作。 ## 项目的主要特性和功能 1. 供应商管理 供应商信息的增删改查操作。 供应商联系人管理。 供应商评级和分类管理。 2. 采购管理 采购订单的创建、编辑和删除。 采购产品的状态管理。 采购合同的生成和管理。 3. 库存管理 库存产品的入库和出库管理。 库存状态的实时监控。 4. 订单管理 订单的创建、编辑和删除。 订单状态的跟踪和管理。 5. 用户管理 用户登录和权限管理。 用户角色的分配和管理。

    基于SpringBoot的“学生考勤管理系统”的设计与实现(源码+数据库+文档+PPT).zip

    系统主要包括首页,个人中心,学生管理,教师管理,班级信息管理,课程信息管理,签到信息管理,考勤信息管理,请假信息管理,考勤统计管理等功能模块。

    维特协议标准精度示例程序c.zip

    c语言

    DICOM文件+DX放射平片-数字X射线图像DICOM测试文件

    DICOM文件+DX放射平片—数字X射线图像DICOM测试文件,文件为.dcm类型DICOM图像文件文件,仅供需要了解DICOM或相关DICOM开发的技术人员当作测试数据或研究使用,请勿用于非法用途。

    C#ASP.NET仓储管理系统源码数据库 SQL2008源码类型 WebForm

    ASP.NET仓储管理系统源码 一、 程序说明 该程序大部分使用于生产制造厂,其中结合了制造厂的采购,销售,生产等. 开源部分是仓库系统后台管理系 统, 在给客户实施的过程中利用到了很多硬件设备, 设计到Wince系统,Android系统等PDA设备,各种打印 机,条码打印机,感应设备等,而且这些可能在整个项目中占据主导,而后台管理系统只是辅助作用的。 该程序使用的.NET MVC开发,大量使用到了jQuery,以及Bootstrap。 数据库使用了SQL Server.

    【小程序毕业设计】面向文艺影视社群的微信小程序源码(完整前后端+mysql+说明文档).zip

    环境说明: 开发语言:Java/php JDK版本:JDK1.8 数据库:mysql 5.7及以上 数据库工具:Navicat11及以上 开发软件:eclipse/idea 小程序框架:uniapp/原生小程序 开发工具:HBuilder X/微信开发者

    Skia-macOS-Release-arm64.zip

    Skia-macOS-Release-arm64.zip aseprite 安装所需依赖安装包

    中国品牌日研究特辑-数字经济时代下中国品牌高质量发展之用户趋势.pdf

    中国品牌日研究特辑-数字经济时代下中国品牌高质量发展之用户趋势.pdf

    生成xcinsphfs0exefsromfscertifateticket转储从任天堂Switch游戏卡和安装的SDe.zip

    c语言

    一个基于qt开发的包含各种基础图像处理技术的桌面应用,图像处理算法基于halcon,有直接调用halcon脚本和执行halcon

    一个基于qt开发的包含各种基础图像处理技术的桌面应用,图像处理算法基于halcon,有直接调用halcon脚本和执行halcon C++代码方式。 导入图片,预处理,滤波,边缘检测,阈值分割,形态学变换,图像增强,图像变换,

    【9312】基于Springboot+vue的精品水果线上销售网站的设计与实现.zip

    技术选型 【后端】:Java 【框架】:springboot 【前端】:vue 【JDK版本】:JDK1.8 【服务器】:tomcat7+ 【数据库】:mysql 5.7+ 项目包含前后台完整源码。 项目都经过严格调试,确保可以运行! 具体项目介绍可查看博主文章或私聊获取 助力学习实践,提升编程技能,快来获取这份宝贵的资源吧! 在当今快速发展的信息技术领域,技术选型是决定一个项目成功与否的重要因素之一。基于以下的技术栈,我们为您带来了一份完善且经过实践验证的项目资源,让您在学习和提升编程技能的道路上事半功倍。以下是该项目的技术选型和其组件的详细介绍。 在后端技术方面,我们选择了Java作为编程语言。Java以其稳健性、跨平台性和丰富的库支持,在企业级应用中处于领导地位。项目采用了流行的Spring Boot框架,这个框架以简化Java企业级开发而闻名。Spring Boot提供了简洁的配置方式、内置的嵌入式服务器支持以及强大的生态系统,使开发者能够更高效地构建和部署应用。 前端技术方面,我们使用了Vue.js,这是一个用于构建用户界面的渐进式JavaScript框架。Vue以其易上手、灵活和性能出色而受到开发者的青睐,它的组件化开发思想也有助于提高代码的复用性和可维护性。 项目的编译和运行环境选择了JDK 1.8。尽管Java已经推出了更新的版本,但JDK 1.8依旧是一种成熟且稳定的选择,广泛应用于各类项目中,确保了兼容性和稳定性。 在服务器方面,本项目部署在Tomcat 7+之上。Tomcat是Apache软件基金会下的一个开源Servlet容器,也是应用最为广泛的Java Web服务器之一。其稳定性和可靠的性能表现为Java Web应用提供了坚实的支持。 数据库方面,我们采用了MySQL 5.7+。MySQL是一种高效、可靠且使用广泛的关系型数据库管理系统,5.7版本在性能和功能上都有显著的提升。 值得一提的是,该项目包含了前后台的完整源码,并经过严格调试,确保可以顺利运行。通过项目的学习和实践,您将能更好地掌握从后端到前端的完整开发流程,提升自己的编程技能。欢迎参考博主的详细文章或私信获取更多信息,利用这一宝贵资源来推进您的技术成长之路!

    C#固定资产管理系统源码(带条码打印)数据库 SQL2008源码类型 WinForm

    固定资产管理系统源码(带条码打印) 功能介绍 1.基本信息管理:包括资产分类,基本资料,资产编号规则,保存列间距和选择资产显示列等功能; 2.固定资产管理:包括资产增加,资产更新,资产删除,资产清理,资产清理查询和资产折旧核算 3.数据维护管理:包系统数据初始化,系统数据备份/恢复等功能; 4.系统维护管理:包括本单位信息和操作员管理等功能; 5.系统辅助工具:包括计算器和记事本等功能; 6.条码打印:对条码进行打印等功能;

Global site tag (gtag.js) - Google Analytics