精华内容
下载资源
问答
  • mysql 左连接连接 例子

    千次阅读 2014-04-29 22:36:18
    例子: 用户访问记录: 问题:查出看了湖南卫视但没有看北京卫视的用户信息 逻辑:先通过左连接将看了湖南卫视和北京卫视的查出来,然后再将看了湖南卫视但不在刚才查出的结果中的用户查出来。 SELECT * FROM test...

    连接就是将两个表按照某个公共字段来拼成一个大表。

    左连接就是在做连接是以左边这个表为标准,来遍历右边的表。


    1、引子

    左连接,自连接


    SELECT * FROM test_visit t1 LEFT JOIN test_visit t2 ON t1.uid = t2.uid

    结果:




    2、问题 例子:

    用户访问记录:


    问题:查出看了湖南卫视但没有看北京卫视的用户信息

    逻辑:先通过左连接将看了湖南卫视和北京卫视的查出来,然后再将看了湖南卫视但不在刚才查出的结果中的用户查出来。

    SELECT * FROM test_visit WHERE channel='湖南卫视' AND uid NOT IN (
    SELECT DISTINCT t1.uid FROM test_visit t1 LEFT JOIN test_visit t2 ON t1.uid = t2.uid
    WHERE t1.channel='湖南卫视' AND t2.channel='北京卫视' )


    结果:


    各位大神,有什么好的方法,说说吧,我感觉这个不是最优的

    展开全文
  • android连接mysql数据库例子

    千次下载 热门讨论 2013-07-21 16:08:24
    android连接mysql数据库例子,客户端--服务器---数据库模式,大家分享一下
  • Hibernate 连接Mycat例子详解

    千次阅读 2015-05-07 11:39:10
    Hibernate 连接Mycat例子详解

    使用Java持久层框架Hibernate连接Mycat分布式数据库中间件的简单例子详解,包含完整实例源码、编译代码所需的全部Lib库文件,说明文档,以及数据库相关SQL文件。

    CSDN下载地址:http://download.csdn.net/detail/dreamcode/8671499

    git下载地址:https://github.com/romanticode/Mycat-doc/commit/8e15ae390b603657ad7aa3552492f40fca1bba29


    1、下载最新的Mycat工程源码


    2、schema.xml,添加以下语句:

    <table name="news_table"primaryKey="ID" type="global"dataNode="dn1,dn2,dn3" />


    3、 打开Mycat命令行窗口,执行建表语句

    CREATE TABLE `news_table` (

      `id` int(20) NOT NULL AUTO_INCREMENT,

      `title` varchar(200) DEFAULT NULL,

      `content` varchar(200) DEFAULT NULL,

      PRIMARY KEY (`id`)

    )


    4、直接运行HibernateDemo


    展开全文
  • koa连接mysql项目例子

    千次阅读 2018-06-25 17:33:33
    koa路由层封装 typescript例子 koa面向对象式编程(仿egg.js) 最近做了一个koa的例子,... controller : 负责直接和数据库进行连接(写sql, 对参数进行处理) services: 负责传输数据 route: 负责...

    koa路由层封装

    typescript例子

    koa面向对象式编程(仿egg.js)

    最近做了一个koa的例子,封装了一些controller层和services层

    技术栈采用的是koa2 + koa-router + mysql

    • controller : 负责直接和数据库进行连接(写sql, 对参数进行处理)

    • services: 负责传输数据

    • route: 负责定义路面的路由

    简单看一下项目的目录结构

     

    这便是其中最重要的三层结构

    入口文件是index.js,我们简单来看一下源码

    var Koa=require('koa');
    var path=require('path')
    var bodyParser = require('koa-bodyparser');
    var session = require('koa-session-minimal');
    var MysqlStore = require('koa-mysql-session');
    var config = require('./config/default.js');
    var koaStatic = require('koa-static')
    var app=new Koa()
    const routers = require('./routes/index')
    ​
    // session存储配置
    const sessionMysqlConfig= {
      user: config.database.USERNAME,
      password: config.database.PASSWORD,
      database: config.database.DATABASE,
      host: config.database.HOST,
    }
    ​
    // 配置session中间件
    app.use(session({
      key: 'USER_SID',
      store: new MysqlStore(sessionMysqlConfig)
    }))
    ​
    // 配置跨域
    app.use(async (ctx, next) => {
      ctx.set('Access-Control-Allow-Headers', 'Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With')
      ctx.set('Access-Control-Allow-Origin', 'http://localhost:9000');
      ctx.set('Access-Control-Allow-Methods', 'PUT,DELETE,POST,GET');
      ctx.set('Access-Control-Allow-Credentials', true);
      ctx.set('Access-Control-Max-Age', 3600 * 24);
      await next();
    });
    // 配置静态资源加载中间件
    app.use(koaStatic(
      path.join(__dirname , './public')
    ))
    ​
    // 使用表单解析中间件
    app.use(bodyParser())
    ​
    // 使用新建的路由文件
    app.use(routers.routes()).use(routers.allowedMethods())
    ​
    // 监听在1200
    app.listen(config.port)
    ​
    console.log(`listening on port ${config.port}`)
    ​

    中间读取了数据库配置和进行跨域的设置以及表单解析,其中路由定义是在引用router

    我们来看一下router的定义

    ​
    ​
    
    const router = require('koa-router')()
    // 配置所有的routes文件
    const routes = (config => {
        return config.reduce((copy, name) => {
        // 这里是请求对应的路由模块,获得对应的对象
        const obj = require(`./${name}`)
        const newArr = Object.keys(obj).reduce((total, each) => {
          let item = { path: `/api/${name}/${each}`, method: obj[each].method, action: each, service: name }
          total.push(item)
          return total
        }, [])
        copy = copy.concat(newArr)
          return copy
        }, [])
    })([
      'admin',
      'user',
      'guider',
      'order',
    ])
    /**
     * 整合所有子路由
     */
    // 配置最终的路由,形式为
    // router.get(url, service.action)
    routes.forEach(item => {
      const service = require(`../services/${item.service}`)
      router[item.method](item.path, service[item.action])
    })
    module.exports = router
    ​
    ​

     

    这是对应的routes的输出

    [ { path: '/api/admin/list',
        method: 'get',
        action: 'list',
        service: 'admin' },
      { path: '/api/admin/add',
        method: 'post',
        action: 'add',
        service: 'admin' },
      { path: '/api/admin/update',
        method: 'post',
        action: 'update',
        service: 'admin' },
      { path: '/api/admin/del',
        method: 'post',
        action: 'del',
        service: 'admin' },
      { path: '/api/admin/login',
        method: 'post',
        action: 'login',
        service: 'admin' },
      { path: '/api/admin/single',
        method: 'post',
        action: 'single',
        service: 'admin' },
      { path: '/api/user/list',
        method: 'get',
        action: 'list',
        service: 'user' },
      { path: '/api/user/add',
        method: 'post',
        action: 'add',
        service: 'user' },
      { path: '/api/user/update',
        method: 'post',
        action: 'update',
        service: 'user' },
      { path: '/api/user/del',
        method: 'post',
        action: 'del',
        service: 'user' },
      { path: '/api/user/single',
        method: 'post',
        action: 'single',
        service: 'user' },
      { path: '/api/guider/list',
        method: 'get',
        action: 'list',
        service: 'guider' },
      { path: '/api/guider/add',
        method: 'post',
        action: 'add',
        service: 'guider' },
      { path: '/api/guider/update',
        method: 'post',
        action: 'update',
        service: 'guider' },
      { path: '/api/guider/del',
        method: 'post',
        action: 'del',
        service: 'guider' },
      { path: '/api/guider/single',
        method: 'post',
        action: 'single',
        service: 'guider' },
      { path: '/api/order/list',
        method: 'get',
        action: 'list',
        service: 'order' },
      { path: '/api/order/add',
        method: 'post',
        action: 'add',
        service: 'order' },
      { path: '/api/order/update',
        method: 'post',
        action: 'update',
        service: 'order' },
      { path: '/api/order/del',
        method: 'post',
        action: 'del',
        service: 'order' },
      { path: '/api/order/listu',
        method: 'post',
        action: 'listu',
        service: 'order' },
      { path: '/api/order/listb',
        method: 'post',
        action: 'listb',
        service: 'order' },
      { path: '/api/order/single',
        method: 'post',
        action: 'single',
        service: 'order' } ]

    接下来我们看一下单个route模块的定义

    admin为例:

    // 封装好的模版对象,里面有一些最基本的方法定义
    // add,list,delete,update
    const model = require('../model')
    // 方法对象
    const methods = require('../methods')
    module.exports = {
      ...model,
      'login': { method: methods.post },
      'single': { method: methods.post },
    }
    
    

    model对象如下:

    const methods = require('../methods')
    ​
    module.exports = {
      'list': { method: methods.get },
      'add': { method: methods.post },
      'update': { method: methods.post },
      'del': { method: methods.post },
    }
    ​

    methods对象如下:

    module.exports = {
      get: 'get',
      post: 'post',
    }

    到这里,我们的route封装已经完成,其实就是把一堆路由的定义化整为零变成了一个个文件夹下的js文件,变成了一个个对象

    然后通过在route/index.js里面的定义对相应的service层进行调用对应的方法,其中名字的命名需要一致

    我们来看一下services下的各个模块

     

    以admin为例:

    services的执行逻辑为

    • 拿到参数

    • 调用controller对应的方法

    • 处理结果

    • 返回结果

    // 请求对应的controller模块
    const controller = require('../../controller/admin')
    // 请求对应的模版对象
    const model = require('../model')
    // 封装的pojo消息集,对返回数据的处理
    const pojo = require('../../helper/pojo')
    // success: 成功返回
    // failed: 失败返回
    // filterUnderLine: 处理驼峰和下划线的区别
    const { success, failed, filterUnderLine }  = pojo
    const m  = model([
      'list',
      'add',
      'update',
      'del',
    ], 'admin')
    ​
    // 查询单个对象
    const single = async ctx => {
      let res;
      try {
        // 获取的到参数 
        const val = ctx.request.body
        // 调用对应的controller层
        await controller.single(val).then(result => {
          // 对返回结果进行处理
          if(result.length === 0 || result === null || result === undefined)  
            // 等于0或者null | undefined 返回失败的对象
            res = failed('操作失败')
          else 
            // 其他返回成功的对象,处理一下从数据库拿到的数据
            res = success(filterUnderLine(result[0]))
        })
      } catch(err) {
        // 出错返回失败的对象
        res = failed(err)
      }
      // 数据返回给前台
      ctx.body = res
    }
    const login = async ctx => {
      let res;
      try {
        const val = ctx.request.body
        await controller.login(val).then(result => {
          if(result.length === 0 || result === null || result === undefined)  
            res = failed('用户名或密码不对')
          else 
            res = success(filterUnderLine(result[0]))
        })
      } catch(err) {
        res = failed(err)
      }
      ctx.body = res
    }
    // 模块的对应导出
    module.exports = {
      ...m,
      login,
      single,
    }

     

    services的model对象

    const pojo = require('../../helper/pojo')
    const { success, failed, successWithCode, filterUnderLine } = pojo
    const list = [
      'del',
      'add',
      'update',
    ]
    /**
     * 
     * @param {*} config  对应的方法,要定义的哪几个方法模块,单个services层传入
     * @param {*} file 对应的controller文件名称
     * @return 返回一个对应好的对象
     */
    module.exports = (config, file) => {
      const controller = require(`../../controller/${file}`)
        return config.reduce((copy, name) => {
        copy[name] = async ctx => {
          let res;
          try {
            const val = ctx.request.body
            await controller[name](val).then(result => {
              // 没有数据返回的接口直接返回msg和code
              if (list.indexOf(name) !== -1) {
                res = successWithCode('操作成功')
                return
              }
              // 其他模块方法直接过滤数据下划线
              const arr = result.map(item => filterUnderLine(item))
              res = success(arr)
            })
          } catch(err) {
            res = failed(err)
          }
          ctx.body = res
        }
          return copy
        }, {})
    }
    ​

     

    到了这里,就剩下对controller层的调用,也就是对数据库的真正操作

     

    以admin为例:

    一个controller的方法逻辑为

    • 接受参数

    • 编写sql

    • 调用数据库连接池执行

    • 返回结果

    const pool = require('../../lib/mysql')
    const { NtNUpdate } = require('../../helper')
    const { STATUS } = require('../../enum')
    const { query } = pool
    // 新添管理员
    const add = (val) => {
      const { account, phone, password, name, creator, type } = val
      // 写好的sql语句
      const _sql = 'insert into tour_admin(account,phone,password,create_time,creator,name,type,status) values(?,?,?,now(),?,?,?,?);'
      // 执行数据库并且返回结果
      return query( _sql, [ account, phone, password, creator, name, type, STATUS.NORMAL,])
    }
    ​
    const login = (val) => {
      const { account, password } = val
      const _sql = 'select * from tour_admin where account = ? and password = ? and status = ?'
      return query( _sql, [ account, password, STATUS.NORMAL ] )
    }
    ​
    // 更改管理员
    const update = (val) => {
      const { account, phone, password, name, type, id } = val
      let _sql = 'update tour_admin set '
      const { sql, args } = NtNUpdate({ account, phone, password, name, type }, _sql)
      _sql = sql + 'where id = ?'
      const arr = [ ...args, id]
      return query( _sql, arr )
    }
    ​
    // 查询管理员
    const list = val => {
      const sql = 'select * from tour_admin where status != ?'
      return query(sql, [ STATUS.DELED ])
    }
    ​
    // 查询单个管理员byId
    const single = val => {
      const { id } = val
      const sql = 'select * from tour_admin where status != ? and id = ?'
      return query(sql, [ STATUS.DELED, id ])
    }
    ​
    // 删除管理员
    const del = val => {
      const { id } = val
      const sql = 'update tour_admin set status = ? where id = ?'
      return query(sql, [ STATUS.DELED, id ])
    }
    ​
    module.exports = {
      add,
      list,
      update,
      del,
      login,
      single,
    }

    helper如下

    /**
     * 
     * @param {*} params  参数对象
     * @param {*} sql sql语句
     * @description 根据参数对象去改变sql语句,最后返回对应的sql语句
     * @return 返回处理后的sql语句
     */
    const update = (params, sql) =>  {
      let keys = Object.keys(params)
      let arr = []
      keys.forEach((key) => {
        if (key) {
          sql = sql + `${key} = ? ,`
          arr.push(params[key])
        }
      })
      sql = sql.substring(0, sql.length - 1)
      return {
        args: arr,
        sql,
      }
    }
    ​
    module.exports = {
      NtNUpdate: update,
    }
    ​
    
    

    enum如下

    const status = require('./status')
    const type = require('./status')
    ​
    module.exports = {
      STATUS: status,
      TYPES: type,
    }
    ​

    Status如下

    module.exports = {
      DELED: 404,
      ABA: 111,
      NORMAL: 0,
    }

    lib/mysql如下

    const mysql = require('mysql');
    const config = require('../config/default.js')
    ​
    const pool  = mysql.createPool({
      host     : config.database.HOST,
      user     : config.database.USERNAME,
      password : config.database.PASSWORD,
      database : config.database.DATABASE
    });
    ​
    /**
     * 
     * @param sql 接收的sql语句
     * @param values 接受的参数: 为数组
     */
    const query = function( sql, values ) {
      return new Promise(( resolve, reject ) => {
        pool.getConnection(function(err, connection) {
          if (err) {
            console.log(err)
            resolve( err )
          } else {
            connection.query(sql, values, ( err, rows) => {
              if ( err ) {
                reject( err )
              } else {
                resolve( rows )
              }
              connection.release()
            })
          }
        })
      })
    }
    module.exports={
      query,
    }

    到这里,我们就实现了koa的相关操作了。

     

    最后,这是项目地址,欢迎star,

     

     

    展开全文
  • druid连接例子

    千次阅读 2020-06-26 18:19:01
    } } // 获取连接 public static Connection getConnection() throws SQLException { if(ds == null){ return null; } return ds.getConnection(); } // 释放资源 public static void close(Statement stmt,...

     先导入jia包

    驱动jar包

    druid的Jar包

     

    写配置文件

    定义配置文件(手动加载)

    • 名称:自定义
    • 路径:自定义

    封装工具类代码

    package com.lingaolu.dataSource;
    
    import com.alibaba.druid.pool.DruidDataSourceFactory;
    
    import javax.sql.DataSource;
    import java.io.IOException;
    import java.sql.*;
    import java.util.Properties;
    
    /**
     * @author 林高禄
     * @create 2020-06-26-17:52
     */
    public class JdbcUtils {
    
        private static DataSource ds;
    
        static{
            try {
                // 加载配置文件
                Properties p = new Properties();
                p.load(JdbcUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
                // 获取DataSource对象
                ds = DruidDataSourceFactory.createDataSource(p);
            } catch (IOException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        // 获取连接
        public static Connection getConnection() throws SQLException {
            if(ds == null){
                return null;
            }
            return ds.getConnection();
        }
    
        // 释放资源
        public static void close(Statement stmt,Connection con){
            close(null,stmt,con);
        }
    
        // 释放资源
        public static void close(ResultSet rs,Statement stmt,Connection con){
            if(rs != null){
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(stmt != null){
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(con != null){
                try {
                    con.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    
        // 获取连接池
        public static DataSource getDataSource(){
            return ds;
        }
    }
    

    数据库数据

     

    测试demo

    package com.lingaolu.dataSource;
    
    import java.sql.*;
    
    /**
     * @author 林高禄
     * @create 2020-06-26-18:05
     */
    public class DruidDemo {
        public static void main(String[] args) {
            Connection con = null;
            PreparedStatement pstmt = null;
            ResultSet rs = null;
            try {
                con = JdbcUtils.getConnection();
                String sql = "select * from Account where name=?";
                pstmt = con.prepareStatement(sql);
                pstmt.setString(1,"张三");
               rs = pstmt.executeQuery();
                while(rs.next()){
                    int id = rs.getInt("id");
                    String name = rs.getString("name");
                    System.out.println(id+name);
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }finally {
                JdbcUtils.close(rs,pstmt,con);
            }
        }
    }
    

    运行输出:

    1张三
    7张三

     

    展开全文
  • ado.net连接数据库简单例子

    千次阅读 2015-04-24 17:13:57
    本地连接一台服务器上的数据库,对其进行查询、插入、删除等操作: 1、需要ip地址,需要数据库的名称,需要一个SQL Sevrer账户; 2、查询操作:  //用于连接的字符串支持的关键字  //...
  • Unity 客户端连接服务器的例子

    千次阅读 2013-07-14 18:49:24
    using UnityEngine; using System.Collections; public class Client1 : MonoBehaviour { string IP = "192.168.0.114"; int Port = 10000; void OnGUI() { switch(Network.peerType) ... case Networ
  • c3p0连接例子

    千次阅读 2020-06-24 17:45:04
    先导入jia包 驱动jar包 c3p0Jar包 写配置文件 定义配置文件 名称:c3p0.properties或者c3p0-config.xml 路径:根路径,直接把文件...-- 使用默认的配置读取连接池对象 -->...-- 连接...
  • JDBC连接postgresql例子

    万次阅读 2018-07-26 11:41:59
    package tool; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet;...import java.sql.SQLException;...public class PsqlConnectionTool {...
  • 例子理解左连接与右连接

    千次阅读 2016-08-16 09:59:33
    用(+)实现左连接也右连接,找到以下例子来理解,容易理解多了: 左连接,+号放左的反方向,即右表: + 表示补充,即哪个表加号,这个表就是匹配表。如果加号写在右表,左表就是全部显示,所以是左连接。 例如...
  • HikariCP-2.5.1.jar log4j-1.2.11.jar log4j-api-2.3.jar log4j-core-2.3.jar ojdbc7.jar slf4j-api-1.8.0-alpha2.jar
  • Hibernate连接oracle数据库的简单例子

    千次阅读 2015-07-03 21:07:44
    Hibernate连接oracle数据库的简单例子 一、Hibernate连接数据库 由于最近学习hibernate时,与oracle数据库发生交互时总是出错!网上关于如何详细hibernate连接数据库的例子也不多,所以在这里写一写例子,以供...
  • MyBatis连接DB2简单例子

    千次阅读 2013-11-06 14:32:37
    项目代码 ps:注意把那几个jar包都加入项目中! User.java package com.yihaomen.mybatis.model; public class User { private int id; private String userName;... private String userAddress
  • MySQL自连接例子

    千次阅读 2018-08-27 10:06:23
    查询表中员工领导的信息 使用自连接查询的结果如下
  • Flex连接WebService例子

    千次阅读 2011-10-01 18:22:25
    Flex连接后台数据四种:WebService、HTTPService、RemoteObject、Socket,其中Webservice和HTTPService数据传输格式都是XML,数据传输量较大,传输效率不高,但是也不失为一种可行的解决方案,后两种RemoteObject...
  • ado 数据库连接.连接(连接db2)的例子

    千次阅读 2008-12-07 20:04:00
    感謝易語言,感謝cctv,希望易語言更開放些,例子放多點,開放是發展的基礎!‘database=rbsj;这是连数据库名,Hostname=PC-200806261910;”这是自己的计算机的名字,如果真 (数据库连接.连接 (“Provider=IBMDADB...
  • PHP连接mysql例子

    千次阅读 2011-02-25 20:18:00
    <br />对于熟悉做网站的人来说,要想网站做成动态的,肯定要数据库的支持,利用特定的脚本连接到数据库,从数据库中提取资料、向数据库中添加资料、删除资料等。这里我通过一个实例来说明如何用php连接到...
  • 01 MQTT小例子-连接

    千次阅读 2021-01-31 09:27:24
    01 MQTT小例子-连接1.目的:2.环境搭建1.https://www.emqx.cn/2.找到这个免费的测试的MQTT服务地址。3.打开MQTTBox软件,3.1创建一个Client3.2 进行下面的配置3.3这样connected变绿才是连接成功。3.测试1、知道一些...
  • Qt5连接Mysql5.7例子

    千次阅读 2016-05-14 13:40:46
    //|QSqlDataBase这个类的static函数 默认addDataBase的连接名是defaultConnectionName //|最好是在后面第二个参数代入connectionname用于以后取出 这里没必要 担心作用域的问题因为是static函数在当前线程都有效 //|...
  • Netty实现长连接简单例子

    万次阅读 热门讨论 2017-05-27 12:32:56
    实现长连接的简单例子 服务端 NettyServerBootstrap提供长连接服务 public class NettyServerBootstrap { private static final Log log = LogFactory.getLog(NettyServerBootstrap.class); private ...
  • 姓名表aidname1张三2李四3王五工作表bidjobSid123123423344姓名表的id和工作表的sid是主外键关系 (1) 内连接: select a.*,b.* from a inner join b on a.id=b.sid 结果:a.ida.nameb.idb.jobb.sid1张三12312...
  • BoneCP数据连接池的例子配置

    千次阅读 2013-07-01 17:36:38
    #每个分区最大的连接数 maxConnectionsPerPartition=30 #每个分区最小的连接数  minConnectionsPerPartition=10 #当每个分区中的connection大约快用完时,BoneCP动态批量创建connection,这个属性控制一起创建多少个...
  • sql左外连接应用例子

    千次阅读 2017-06-19 09:29:12
    左外连接 left outer join ...on 可以保持左表完整加入另一表中的数据 select ma.MaterialSort as 材料种类,ma.MaterialName as 材料名称,ma.Count as 材料数量,at.AttentionPerson as 关注人 from Material as ...
  • 1、内连接(自然连接): 只有两个表相匹配的行才能在结果集中出现 2、外连接: 包括 (1)左外连接(左边的表不加限制) (2)右外连接(右边的表不加限制) (3)全外连接(左右两表都不加限制) 3、创建...
  • 用JDBC连接Vertica数据库的例子源代码

    千次阅读 2014-03-14 19:18:15
    JDBC连接Vertica数据库的例子源代码
  • linux中netstat查看80端口连接例子

    千次阅读 2016-09-14 18:14:03
    Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等,下文就为各位介绍netstat查看80端口连接例子 ...
  • Netty(八) 多客户端连接例子

    千次阅读 2018-05-29 22:20:32
    Netty(八) 多客户端连接例子 多客户端连接,支持重连 package com.zqw.netty5x; import io.netty.bootstrap.Bootstrap; import io.netty.channel.Channel; import io.netty.channel.ChannelInitializer; ...
  • Http长连接例子_亲测可用哦

    万次阅读 2016-10-31 11:06:28
    一、什么事Http长连接:在网上很多很多关于Http长连接的文章,但是我看了很多都看不懂。自己总结的所谓的http长连接就是在一请求一个页面后,在服务器端不断开http连接,而是通过response一直在定时的往页面客户端...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,018,753
精华内容 407,501
关键字:

刚连接有哪些例子