要求

    • 必备知识

      本文要求基本了解 Adobe Flex编程知识和JAVA基础知识。

    • 开发环境

      MyEclipse10/Flash Builder4.6/Flash Player11及以上

    • 演示地址

      演示地址 资料下载

 
 

关于 Myeclipse10.6+Flash Builder 4.6插件安装配置 请阅读:

Myeclipse10.6+Flash Builder 4.6安装配置

程序截图:

程序部分代码

UserDao.java

  1. package Dao;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.PreparedStatement;
  5. import java.sql.ResultSet;
  6. import java.sql.SQLException;
  7. import java.util.ArrayList;
  8.  
  9. import tool.ConvertJson;
  10. import tool.JDBCUtilSingle;
  11.  
  12. import bean.User;
  13.  
  14. public class UserDao {
  15.  
  16. /**
  17. * 初始化10条数据
  18. */
  19.  
  20. private void initData(){
  21. Connection connection=null;
  22. PreparedStatement statement=null;
  23. ResultSet rs=null;
  24. connection=JDBCUtilSingle.getInitJDBCUtil().getConnection();
  25. String sql="truncate usermanagement_user";
  26. String sql2="INSERT INTO `usermanagement_user` VALUES (1,'licheng','test@qq.com','189********','湖南长沙'),(2,'张三','test@gmail.com','150********','北京'),(3,'李四','test@sou.com.cn','188********','上海'),(4,'王五','test@sina.com','135********','南京'),(5,'赵六','test@163.com','138********','成都');";
  27. try {
  28. statement=connection.prepareStatement(sql);
  29. statement.executeUpdate();
  30. statement=connection.prepareStatement(sql2);
  31. statement.executeUpdate();
  32. } catch (SQLException e) {
  33. // TODO Auto-generated catch block
  34. e.printStackTrace();
  35. } finally{
  36. JDBCUtilSingle.getInitJDBCUtil().closeConnection(rs, statement, connection);
  37. }
  38. }
  39.  
  40. /**
  41. * 获取用户信息
  42. * @return 装载用户信息的集合列表
  43. */
  44. public ArrayList<User> getList(){
  45.  
  46. ArrayList<User> users=new ArrayList<User>();
  47. Connection connection=null;
  48. PreparedStatement statement=null;
  49. ResultSet rs=null;
  50. connection=JDBCUtilSingle.getInitJDBCUtil().getConnection();
  51. String sql="select * from usermanagement_user";
  52. try {
  53. statement=connection.prepareStatement(sql);
  54. rs=statement.executeQuery();
  55. while(rs.next()){
  56. users.add(new User(rs.getInt(1),rs.getString(2),rs.getString(3),rs.getString(4),rs.getString(5)));
  57. }
  58. } catch (SQLException e) {
  59. // TODO Auto-generated catch block
  60. e.printStackTrace();
  61. } finally{
  62. JDBCUtilSingle.getInitJDBCUtil().closeConnection(rs, statement, connection);
  63. }
  64.  
  65. if(users.size()==0){
  66. initData();
  67. users=getList();
  68. }
  69.  
  70. return users;
  71. }
  72.  
  73. /**
  74. * 添加一条用户数据
  75. * @param name 名称
  76. * @param email 邮箱
  77. * @param tel 电话
  78. * @param area 区域
  79. * @return 装载用户信息的集合
  80. */
  81. public ArrayList<User> addUser(String name,String email,String tel,String area){
  82.  
  83. Connection connection=null;
  84. PreparedStatement statement=null;
  85. ResultSet rs=null;
  86. connection=JDBCUtilSingle.getInitJDBCUtil().getConnection();
  87. String sql="insert into usermanagement_user(name,email,tel,area) values(?,?,?,?)";
  88. try {
  89. statement=connection.prepareStatement(sql);
  90. statement.setString(1, name);
  91. statement.setString(2, email);
  92. statement.setString(3, tel);
  93. statement.setString(4, area);
  94. statement.executeUpdate(); //返回1表示插入成功
  95. } catch (SQLException e) {
  96. // TODO Auto-generated catch block
  97. e.printStackTrace();
  98. } finally{
  99. JDBCUtilSingle.getInitJDBCUtil().closeConnection(rs, statement, connection);
  100. }
  101.  
  102. return getList(); //获取集合信息
  103.  
  104. }
  105.  
  106. /**
  107. * 根据ID删除指定的用户
  108. * @param id 要删除的ID号
  109. * @return 用户集合列表
  110. */
  111. public ArrayList<User> delUser(int id){
  112. Connection connection=null;
  113. PreparedStatement statement=null;
  114. ResultSet rs=null;
  115. connection=JDBCUtilSingle.getInitJDBCUtil().getConnection();
  116. String sql="delete from usermanagement_user where id=?";
  117. try {
  118. statement=connection.prepareStatement(sql);
  119. statement.setInt(1,id);
  120. statement.executeUpdate(); //返回1表示删除成功
  121. } catch (SQLException e) {
  122. // TODO Auto-generated catch block
  123. e.printStackTrace();
  124. } finally{
  125. JDBCUtilSingle.getInitJDBCUtil().closeConnection(rs, statement, connection);
  126. }
  127. return getList();
  128. }
  129.  
  130. public ArrayList<User> updUser(int id,String name,String email,String tel,String area){
  131. Connection connection=null;
  132. PreparedStatement statement=null;
  133. ResultSet rs=null;
  134. connection=JDBCUtilSingle.getInitJDBCUtil().getConnection();
  135. String sql="update usermanagement_user set name=?,email=?,tel=?,area=? where id=?";
  136. try {
  137. statement=connection.prepareStatement(sql);
  138. statement.setString(1, name);
  139. statement.setString(2, email);
  140. statement.setString(3, tel);
  141. statement.setString(4, area);
  142. statement.setInt(5, id);
  143. statement.executeUpdate();
  144. } catch (SQLException e) {
  145. // TODO Auto-generated catch block
  146. e.printStackTrace();
  147. }finally{
  148. JDBCUtilSingle.getInitJDBCUtil().closeConnection(rs, statement, connection);
  149. }
  150. return getList();
  151. }
  152.  
  153. }

UserServer.java

  1. package service;
  2.  
  3. import java.util.ArrayList;
  4. import bean.User;
  5. import Dao.UserDao;
  6.  
  7. public class UserServer {
  8.  
  9. public ArrayList<User> getList(){
  10. return new UserDao().getList();
  11. }
  12.  
  13. public ArrayList<User> addUser(String name,String email,String tel,String area){
  14. return new UserDao().addUser(name, email, tel, area);
  15. }
  16.  
  17. public ArrayList<User> delUser(int id){
  18. return new UserDao().delUser(id);
  19. }
  20.  
  21. public ArrayList<User> updUser(int id,String name,String email,String tel,String area){
  22. return new UserDao().updUser(id, name, email, tel, area);
  23. }
  24.  
  25. }

remoting-config.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <service id="remoting-service"
  3. class="flex.messaging.services.RemotingService">
  4.  
  5. <adapters>
  6. <adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true"/>
  7. </adapters>
  8.  
  9. <default-channels>
  10. <channel ref="my-amf"/>
  11. </default-channels>
  12.  
  13. <destination id="UsererverTaget">
  14. <properties>
  15. <source>service.UserServer</source>
  16. </properties>
  17. </destination>
  18. </service>

主程序代码 UserManagement.mxml:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
  3. xmlns:s="library://ns.adobe.com/flex/spark"
  4. xmlns:mx="library://ns.adobe.com/flex/mx"
  5. verticalCenter="0" horizontalCenter="0"
  6. creationComplete="init()">
  7.  
  8. <fx:Declarations>
  9. <!-- 将非可视元素(例如服务、值对象)放在此处 -->
  10. <s:RemoteObject id="userDist" destination="UsererverTaget"
  11. fault="userDist_faultHandler(event)">
  12. <s:method name="getList" result="getList_resultHandler(event)" />
  13. <s:method name="addUser" result="user_resultHandler(event)" />
  14. <s:method name="delUser" result="user_resultHandler(event)" />
  15. <s:method name="updUser" result="user_resultHandler(event)" />
  16. </s:RemoteObject>
  17. </fx:Declarations>
  18. <fx:Script>
  19. <![CDATA[
  20. import components.GridItemRenderer;
  21.  
  22. import mx.collections.ArrayCollection;
  23. import mx.containers.Grid;
  24. import mx.controls.Alert;
  25. import mx.managers.PopUpManager;
  26. import mx.rpc.events.FaultEvent;
  27. import mx.rpc.events.ResultEvent;
  28. import mx.utils.StringUtil;
  29. import spark.events.GridEvent;
  30.  
  31. [Bindable]
  32. public var personList:ArrayCollection;
  33.  
  34. public var idColumn:GridColumn;
  35. public var nameColumn:GridColumn;
  36. public var emailColumn:GridColumn;
  37. public var telColumn:GridColumn;
  38. public var areaColumn:GridColumn;
  39.  
  40. public var userItem:Object;
  41.  
  42. /**
  43. * 程序初始化
  44. */
  45. private function init():void{
  46.  
  47. userDist.getList(); //调用 getList方法获取数据
  48. //绑定按钮的监听事件
  49. add.addEventListener(MouseEvent.CLICK,addClick);
  50. mod.addEventListener(MouseEvent.CLICK,modClick);
  51. del.addEventListener(MouseEvent.CLICK,delClick);
  52. usersDG.addEventListener(GridEvent.GRID_CLICK,usersDG_clickHandler);
  53. adduser.addEventListener(MouseEvent.CLICK,addUser);
  54. upduser.addEventListener(MouseEvent.CLICK,updUser);
  55. }
  56.  
  57. /**
  58. * getList方法调用结果处理函数
  59. */
  60. protected function getList_resultHandler(event:ResultEvent):void
  61. {
  62. //获取用户信息列表
  63. personList=event.result as ArrayCollection;
  64.  
  65. idColumn=usersDG.columns.getItemAt(0) as GridColumn;
  66. nameColumn=usersDG.columns.getItemAt(1) as GridColumn;
  67. emailColumn=usersDG.columns.getItemAt(2) as GridColumn;
  68. telColumn=usersDG.columns.getItemAt(3) as GridColumn;
  69. areaColumn=usersDG.columns.getItemAt(4) as GridColumn;
  70.  
  71. //渲染器貌似要到这里定义 需要等数据初始化完毕在定义渲染器 直接到组件定义 报错
  72. idColumn.itemRenderer=new ClassFactory(GridItemRenderer);
  73. nameColumn.itemRenderer=new ClassFactory(GridItemRenderer);
  74. emailColumn.itemRenderer=new ClassFactory(GridItemRenderer);
  75. telColumn.itemRenderer=new ClassFactory(GridItemRenderer);
  76. areaColumn.itemRenderer=new ClassFactory(GridItemRenderer);
  77.  
  78. //设置渲染器
  79. usersDG.columns=new ArrayList([idColumn,nameColumn,emailColumn,telColumn,areaColumn]);
  80.  
  81. //禁用按钮
  82. mod.enabled=false;
  83. del.enabled=false;
  84. }
  85.  
  86. /**
  87. * userDist 错误处理函数
  88. */
  89. protected function userDist_faultHandler(event:FaultEvent):void
  90. {
  91. // 弹出错误信息
  92. Alert.show(event.message.toString());
  93. }
  94.  
  95. /**
  96. * 单击添加按钮
  97. */
  98. protected function addClick(event:MouseEvent):void{
  99. adduser.visible=true;
  100. upduser.visible=false;
  101. popup.visible=true; //popup层可见
  102. popmsg.text="新增用户";
  103. }
  104.  
  105. /**
  106. * 单击修改按钮
  107. */
  108. protected function modClick(event:MouseEvent):void{
  109. adduser.visible=false;
  110. upduser.visible=true;
  111. popup.visible=true; //popup层可见
  112. popmsg.text="更新用户";
  113.  
  114. myname.text=userItem.name;
  115. email.text=userItem.email;
  116. tel.text=userItem.tel;
  117. area.text=userItem.area;
  118. }
  119.  
  120. /**
  121. * 关闭弹出层
  122. */
  123. protected function close_clickHandler():void
  124. {
  125. popup.visible=false; //popup层可见
  126. myname.text=null;email.text=null;tel.text=null;area.text=null;
  127. }
  128.  
  129. /**
  130. * 数据列表的单击事件
  131. */
  132. protected function usersDG_clickHandler(event:GridEvent):void
  133. {
  134. if(usersDG.selectedIndex!=-1){
  135. mod.enabled=true;
  136. del.enabled=true;
  137. userItem=usersDG.selectedItem;
  138. }
  139. }
  140.  
  141. /**
  142. * 添加用户
  143. */
  144. protected function addUser(event:MouseEvent):void{
  145. var _name:String=StringUtil.trim(myname.text);
  146. var _email:String=StringUtil.trim(email.text);
  147. var _tel:String=StringUtil.trim(tel.text);
  148. var _area:String=StringUtil.trim(area.text);
  149. if(_name!=""&&_email!=""&&_tel!=""&&_area!=""){
  150. close_clickHandler(); //关闭弹出层
  151. userDist.addUser(_name,_email,_tel,_area);
  152. usersDG.selectedIndex=-1;
  153. }else{
  154. Alert.show("输入的各项内容不能为空!!");
  155. }
  156. }
  157.  
  158. /**
  159. * 删除用户
  160. */
  161. protected function delClick(event:Event):void{
  162.  
  163. if(usersDG.selectedIndex!=-1){
  164. userDist.delUser(int(userItem.id));
  165. usersDG.selectedIndex=-1;
  166. mod.enabled=false;
  167. del.enabled=false;
  168. }
  169. }
  170.  
  171. /**
  172. * 修改用户
  173. */
  174. protected function updUser(event:MouseEvent):void{
  175. var _name:String=StringUtil.trim(myname.text);
  176. var _email:String=StringUtil.trim(email.text);
  177. var _tel:String=StringUtil.trim(tel.text);
  178. var _area:String=StringUtil.trim(area.text);
  179. if(_name!=""&&_email!=""&&_tel!=""&&_area!=""){
  180. close_clickHandler(); //关闭弹出层
  181. usersDG.selectedIndex=-1;
  182. userDist.updUser(userItem.id,_name,_email,_tel,_area);
  183. }else{
  184. Alert.show("输入的各项内容不能为空!!");
  185. }
  186.  
  187. }
  188.  
  189. /**
  190. * 结果处理函数
  191. */
  192. protected function user_resultHandler(event:ResultEvent):void
  193. {
  194.  
  195. //获取用户信息列表
  196. personList=event.result as ArrayCollection;
  197. if(usersDG.selectedIndex==-1){
  198. mod.enabled=false;
  199. del.enabled=false;
  200. }
  201.  
  202. }
  203.  
  204. ]]>
  205. </fx:Script>
  206. <s:Rect width="100%" height="100%">
  207. <s:fill>
  208. <s:SolidColor color="#333333"/>
  209. </s:fill>
  210. </s:Rect>
  211.  
  212. <s:Group width="800" height="500" top="80" horizontalCenter="0">
  213. <s:filters>
  214. <s:DropShadowFilter alpha="0.3" angle="90" blurX="5.0" blurY="5.0" color="#000000"
  215. distance="2" hideObject="false" inner="false" knockout="false"
  216. quality="1" strength="5"/>
  217. </s:filters>
  218.  
  219. <!--白色大背景-->
  220. <s:Rect width="100%" height="100%">
  221. <s:fill>
  222. <s:SolidColor color="#FFFFFF"/>
  223. </s:fill>
  224. </s:Rect>
  225.  
  226. <!--按钮-->
  227. <s:Group width="800" height="50" horizontalCenter="0" >
  228.  
  229. <s:Button id="add" x="10" y="10" width="60" height="30" label="新增" color="#FFFFFF" fontFamily="微软雅黑"
  230. fontSize="13" skinClass="skinks.AddButtonSkin" buttonMode="true"/>
  231.  
  232. <s:Button id="mod" x="80" y="10" width="60" height="30" label="修改" color="#FFFFFF" fontFamily="微软雅黑"
  233. fontSize="13" skinClass="skinks.ModButtonSkin" buttonMode="true"/>
  234.  
  235. <s:Button id="del" x="150" y="10" width="60" height="30" label="删除" buttonMode="true"
  236. color="#FFFFFF" fontFamily="微软雅黑" fontSize="13"
  237. skinClass="skinks.DelButtonSkin"/>
  238.  
  239. </s:Group>
  240.  
  241. <!--数据表-->
  242. <s:DataGrid id="usersDG" y="50" left="10" right="10" color="#FFFFFF" fontFamily="微软雅黑" fontSize="13"
  243. horizontalCenter="0" requestedRowCount="10" rowHeight="40" skinClass="skinks.DG"
  244. dataProvider="{personList}"
  245.  
  246. >
  247. <s:columns>
  248. <s:ArrayList>
  249. <s:GridColumn dataField="id" width="85" headerText="#" headerRenderer="components.GridHeaderRenderer" ></s:GridColumn>
  250. <s:GridColumn dataField="name" width="150" headerText="名称" headerRenderer="components.GridHeaderRenderer" ></s:GridColumn>
  251. <s:GridColumn dataField="email" width="250" headerText="邮箱" headerRenderer="components.GridHeaderRenderer" ></s:GridColumn>
  252. <s:GridColumn dataField="tel" headerText="电话" headerRenderer="components.GridHeaderRenderer" ></s:GridColumn>
  253. <s:GridColumn dataField="area" headerText="地区" headerRenderer="components.GridHeaderRenderer" ></s:GridColumn>
  254. </s:ArrayList>
  255. </s:columns>
  256. </s:DataGrid>
  257.  
  258. </s:Group>
  259.  
  260. <!--锁屏 弹出层-->
  261.  
  262. <s:Group id="popup" width="100%" height="100%" visible="false">
  263. <s:Rect width="100%" height="100%" alpha="0.4">
  264. <s:fill>
  265. <s:SolidColor color="#000000"/>
  266. </s:fill>
  267. </s:Rect>
  268. <!--框-->
  269. <s:Group width="400" height="320" horizontalCenter="0" top="200" >
  270. <s:Rect width="100%" height="100%">
  271. <s:fill>
  272. <s:SolidColor color="#FFFFFF"/>
  273. </s:fill>
  274. </s:Rect>
  275. <!--label条-->
  276. <s:Group width="100%" height="40">
  277. <s:Rect width="100%" height="100%">
  278. <s:fill>
  279. <s:SolidColor color="#3DAFE3"/>
  280. </s:fill>
  281. </s:Rect>
  282. <s:Label id="popmsg" x="10" color="#FFFFFF" fontFamily="微软雅黑" fontSize="14" text="新增用户"
  283. verticalAlign="middle" verticalCenter="0"/>
  284. <s:Label right="10" width="25" height="25" color="#FFFFFF" fontFamily="Verdana"
  285. fontSize="18" fontWeight="bold" text="X" textAlign="center"
  286. verticalAlign="middle" verticalCenter="0" buttonMode="true"
  287. click="close_clickHandler()"/>
  288. </s:Group>
  289. <s:HGroup horizontalCenter="0" top="60">
  290. <s:Label width="80" height="30" color="#666666" fontFamily="微软雅黑" fontSize="13"
  291. text="名称:" textAlign="center" verticalAlign="middle" trackingLeft="3" trackingRight="3"/>
  292. <s:TextInput id="myname" width="250" height="30" borderAlpha="0.5"
  293. borderVisible="true" focusColor="#FFFFFF"
  294. skinClass="skinks.TextInputSkin"/>
  295. </s:HGroup>
  296. <s:HGroup x="30" y="230" horizontalCenter="0" top="110">
  297. <s:Label width="80" height="30" color="#666666" fontFamily="微软雅黑" fontSize="13"
  298. text="邮箱:" textAlign="center" verticalAlign="middle" trackingLeft="3" trackingRight="3"/>
  299. <s:TextInput id="email" width="250" height="30" borderAlpha="0.5"
  300. borderVisible="true" focusColor="#FFFFFF"
  301. skinClass="skinks.TextInputSkin"/>
  302. </s:HGroup>
  303. <s:HGroup x="30" y="110" horizontalCenter="0" top="160">
  304. <s:Label width="80" height="30" color="#666666" fontFamily="微软雅黑" fontSize="13"
  305. text="电话:" textAlign="center" verticalAlign="middle" trackingLeft="3" trackingRight="3"/>
  306. <s:TextInput id="tel" width="250" height="30" borderAlpha="0.5"
  307. borderVisible="true" focusColor="#FFFFFF"
  308. skinClass="skinks.TextInputSkin"/>
  309. </s:HGroup>
  310. <s:HGroup x="30" y="170" horizontalCenter="0" top="210">
  311. <s:Label width="80" height="30" color="#666666" fontFamily="微软雅黑" fontSize="13"
  312. text="地区:" textAlign="center" verticalAlign="middle" trackingLeft="3" trackingRight="3"/>
  313. <s:TextInput id="area" width="250" height="30" borderAlpha="0.5"
  314. borderVisible="true" focusColor="#FFFFFF"
  315. skinClass="skinks.TextInputSkin"/>
  316. </s:HGroup>
  317.  
  318. <s:Group x="30" y="270" top="260">
  319. <s:Button id="adduser" left="85" label="新增" color="#FFFFFF" fontFamily="微软雅黑" fontSize="13"
  320. skinClass="skinks.MyButton"/>
  321. <s:Button id="upduser" left="85" label="更新" color="#FFFFFF" fontFamily="微软雅黑" fontSize="13"
  322. skinClass="skinks.MyButton"/>
  323. </s:Group>
  324.  
  325. </s:Group>
  326. </s:Group>
  327.  
  328. </s:Application>

SQL代码:

  1. CREATE TABLE `usermanagement_user` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `name` varchar(20) NOT NULL DEFAULT '',
  4. `email` varchar(50) NOT NULL DEFAULT '',
  5. `tel` varchar(14) NOT NULL DEFAULT '',
  6. `area` varchar(50) NOT NULL DEFAULT '',
  7. PRIMARY KEY (`id`)
  8. ) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
作者:Li-Cheng
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

Flex4+BlazeDS+JAVA+MySql 构建J2EE工程 对用户信息进行管理实例的更多相关文章

  1. MySQL基础篇(07):用户和权限管理,日志体系简介

    本文源码:GitHub·点这里 || GitEE·点这里 一.MySQL用户 1.基础描述 在数据库的使用过程中,用户作为访问数据库的鉴权因素,起到非常重要的作用,安装MySQL时会自动生成一个roo ...

  2. 玩玩微信公众号Java版之五:获取关注用户信息

    在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的.对于不同公众号,同一用户的openid不同).公众号可通过本接口来根据Op ...

  3. kotlin+springboot+mybatis-puls+mysql搭建gradle-web工程

    kotlin+springboot+mybatis-puls+mysql搭建web工程 ​ 前段时间研究了spring security及OAuth2系列之后,本来打算研究spring的,但是部门发生 ...

  4. 从零自学Hadoop(09):使用Maven构建Hadoop工程

    阅读目录 序 Maven 安装 构建 示例下载 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,Source ...

  5. 使用BLADE构建c++工程管理

    使用BLADE构建c++工程管理 字数764 阅读2753 评论2 喜欢4 一. c++工程依赖管理 之前在百度一直使用comake2构建c++项目,十分方便.免去了手写Makefile的痛苦,很多项 ...

  6. Java学习之J2EE

    什么是J2EE  本文摘抄于其他博文. 什么是J2EE 一.准备篇 1 什么是J2EE?它和普通的Java有什么不同?答:J2EE全称为Java2 Platform Enterprise Editio ...

  7. 云服务器配置 docker java mysql mongodb redis nginx 环境

    磁盘挂载 fdisk -l #查看磁盘列表 mkfs.ext4 /dev/vdb #格式化磁盘 mount /dev/vdb /data #挂载磁盘在/data echo '/dev/vdb /dat ...

  8. 一个基于mysql构建的队列表

    通常大家都会使用redis作为应用的任务队列表,redis的List结构,在一段进行任务的插入,在另一端进行任务的提取. 任务的插入 $redis->lPush("key:task:l ...

  9. Java Mysql连接池配置和案例分析--超时异常和处理

    前言: 最近在开发服务的时候, 发现服务只要一段时间不用, 下次首次访问总是失败. 该问题影响虽不大, 但终究影响用户体验. 观察日志后发现, mysql连接因长时间空闲而被关闭, 使用时没有死链检测 ...

随机推荐

  1. 51nod 1336 RMQ逆问题

    RMQ问题是一类区间最值问题,这里给出一个特殊的RMQ问题,初始给定一个n长的排列P,注:n长排列是指有1~n这n个整数构成的一个序列每个整数恰好出现一次.并对这个排列P进行M次查询操作,每次查询形如 ...

  2. Func系列4:其他功能

    非Python API接口支持 Func通过非Python API实现远程调用,目的是为第三方工具提供调用及返回接口.Func使用func-transmit命令来实现,支持YAML.JSON格式,实现 ...

  3. select,epool,pool解释

    内容主要来自搜狗实验室技术交流文档, 编写链接数巨大的高负载服务器程序时,经典的多线程模式和select模式都不再适合了.应该采用epool/kqueue/dev_pool来捕获IO事件. ----- ...

  4. ExtJs4 SpringMvc3 实现Grid 分页

    新建一个Maven webapp项目,webxml以及spring配置没什么需要注意的,不再赘述. Maven依赖:(个人习惯,有用没用的都加上...) <project xmlns=" ...

  5. C和C++混合编程

    extern "C"表示编译生成的内部符号名使用C约定.C++支持函数重载,而C不支持,两者的编译规则也不一样.函数被C++编译后在符号库中的名字与C语言的不 同.例如,假设某个函 ...

  6. Fatal error: Class 'GearmanClient' not found解决方法

    产生原因: 没有安装PHP的gearman扩展 解决方法:1.  打开:http://pecl.php.net/package/gearman2.  wget  http://pecl.php.net ...

  7. linux查看和开放某端口

    查看某端口是否已打开: netstat -nulp //UDP端口netstat -ntlp //TCP端口 或者:lsof -i:port-num 开放某端口: 在/etc/sysconfig/ip ...

  8. gerrit 使用笔记

    添加git hooks git库的钩子目录中有一个commit-msg脚本文件,可以在git执行commit时,在提交信息中自动添加一个唯一的Change-Id scp -P 29419 admin@ ...

  9. 回朔法/KMP算法-查找字符串

    回朔法:在字符串查找的时候最容易想到的是暴力查找,也就是回朔法.其思路是将要寻找的串的每个字符取出,然后按顺序在源串中查找,如果找到则返回true,否则源串索引向后移动一位,再重复查找,直到找到返回t ...

  10. Servlet中的配置 web.xml

    url-pattern配置 可以为同一个Servlet配置多个url-pattern: <servlet> <servlet-name>DoGetPostDemo</se ...