React 与 React-Native 使用同一个 meteor 后台

Steve_Xu 2019-04-22 09:07:00 阅读数:527 评论数:0 收藏数:0

meteor 可以快速构建 pc,移动端,桌面端应用。

最大的优点是:数据库的数据发生变化时,可以实时推送到前端,非常适用于实时展示的应用开发。

在 react,react-native 应用中,可以仅使用同一个 meteor 后台,实时向前端推送数据。

github 代码地址

metaor 安装

windows 安装 meteor

官方推荐 chocolatey 安装 meteor。

  1. 先从 chocolatey 安装 chocolatey
  2. 然后在命令行中运行 choco install meteor

但是 meteor 安装速度非常慢,一顿搜索之后,找到了 Windows 下通过二进制包安装的下载地址 https://install.meteor.com/windows,搜索来源 https://github.com/meteor/docs/blob/version-NEXT/long-form/alternate-windows-installation.md

OSX/Linux 安装 meteor

安装非常简单

curl https://install.meteor.com/ | sh

验证安装

命令行输入

meteor --version

输出版本号,表示安装成功

Meteor 1.8.1

mongodb 安装

windows 安装 mongodb

https://www.mongodb.com/ 下载安装包安装

OSX 安装 mongodb

brew install mongod

或者下载二进制包安装

mongod ,不是 mongodb

mongodb 图形界面

推荐 https://robomongo.org/, 易于使用,也是免费的。

meteor DDP

react,react-native 使用同一个 meteor 后台,所以 meteor 后台要与前端应用分开编写。

这就涉及到 meteor 中后台与前端的数据交互,meteor 中定义了一个 DDP协议

DDP协议定义了 meteor 后台发布数据,客户端订阅数据的操作。

本应用使用已经编写好了的 DDP 协议库,地址如下: https://github.com/mondora/ddp.js

创建 meteor 项目

meteor create --bare [project-name]

更多创建参数

meteor help create

meteor 连接 mongodb

meteor 项目启动命令如下:

meteor run

配置端口

meteor run --port 9090

meteor 连接自己的 mongodb

meteor 安装包中集成了 mongodb,默认启动的是集成的 mongodb。
为了连接自己的 mongodb,需要传入参数

MONGO_URL=mongodb://username:password@localhost:27017/[database-name]?authSource=admin meteor  run --port 9090

刚开始没加上 authSource=admin 参数,一直连接不上 mongodb,加上之后就好了,根据需要加。

更多连接参数

编写 meteor 后台

import {Meteor} from 'meteor/meteor'; 
// mongodb 的 todo collection 
const Todo = new Meteor.Collection('todo');
// 发布数据,前端就可以调用
Meteor.publish('todo', () => {
    return Todo.find();
});
/**
 * 定义前端调用的方法
 */
Meteor.methods({
    // 查找一条数据
    getTodo(id) {
        return Todo.findOne(id);
    },
    // 查找所有数据
    getAllTodo() {
        return Todo.find().fetch();
    },
    // 新增
    addTodo(item) {
        return Todo.insert(item);
    },
    // 删除
    removeTodo(id) {
        return Todo.remove({_id: id});
    },
    // 编辑
    editTodo(item) {
        return Todo.update({_id: item.id}, {$set: item});
    },
    /**
     *
     * @param {number 当前页面 从 1 开始} currentPage
     * @param {number 单次请求总条数} pageSize
     */
    getPageTodo(currentPage = 1, pageSize = 10) {
        if (page < 1) {
            return null;
        }
        // meteor 对 mongodb 的操作方法做了封装
        // 更多操作请查看 meteor 官方文档
        const total = Todo.find().count();
        const list = Todo.find(
            {},
            {
                skip: (currentPage - 1) * pageSize,
                limit: pageSize,
            }
        ).fetch();
        return {total, data: list};
    },
});
// 定义对 mongodb 的操作权限
// 若没有定义,则是允许所有增删改查操作
Todo.deny({
    // 是否允许 mongodb 的新增操作, 返回 true 表示允许,否则不允许
    insert() {
        return true;
    },
    update() {
        return true;
    },
    remove() {
        return true;
    },
});

export default Todo;

前端调用

定义高阶组件

为了代码复用,定义了高阶组件,react 与 react-native 可以共用

// meteor.js
import React, {Component} from 'react';
import DDP from 'ddp.js';
/**
 * meteor 连接选项
 */
const meteorOptions = {
  endpoint: 'ws://192.168.31.121:9090/websocket',// react-native 不支持 localhost,127.0.0.1,请替换为自己的 IPv4 地址
  SocketConstructor: WebSocket,
  reconnectInterval: 10000,// 重连间隔
  autoConnect: true,// 是否自动连接
  autoReconnect: true,// 是否自动重连
};
const PUBLIC_EVENTS = [
  // 'ready',
  // 'nosub',
  'added',
  'changed',
  'removed',
  // 'result',
  // 'updated',
  // 'error',
];
export default (WrapperComponent, {collectionName, methodName}) => {
  class MeteorWrapper extends Component {
    ddp = new DDP(meteorOptions);
    lockRequest = false
    recordSubscriptions = {};
    state = {
      meteorList: [],
      initOver: false,
    };

    componentDidMount() {
      if (!this.ddp) {
        console.error(`数据推送未连接上服务器!`);
        return;
      }
      // 添加订阅
      this.addSubscription();
    }

    componentWillUnmount() {
      // 取消订阅
      this.removeSubscription();
      // 断开连接
      this.ddp.disconnect();
    }

    getDataResult() {
      // 防止初始化请求次数过多
      if (this.lockRequest) {
        return
      }
      this.lockRequest = true
      const {ddp} = this;
      const self = this;
      /**
       * 调用后台定义的方法, 前端传递数组参数,meteor 后台接受到的是列表参数
       */
      ddp.method(methodName, [1, 10]);
      ddp.on('result', data => {
        const {result} = data;
        console.log(data);
        self.setState({
          meteorList: result,
          initOver: true,
        });
        self.lockRequest = false
      });
    }

    componentDidCatch(error, info) {
      console.error(error, info);
    }

    addSubscription() {
      if (!collectionName) {
        console.error('mongodb collection 为空!');
        return;
      }
      const {ddp} = this;
      const self = this;
      // 订阅数据
      self.recordSubscriptions[collectionName] = ddp.sub(collectionName);
      PUBLIC_EVENTS.forEach(event => {
        ddp.on(event, () => {
          console.log(event)
          self.getDataResult();
        });
      });
      ddp.on('error', error => {
        console.error(`服务器推送数据错误,错误消息:${error}`)
      });
      ddp.on('ready', () => {
        self.getDataResult();
      });
    }

    removeSubscription() {
      this.ddp.unsub(this.recordSubscriptions[collectionName]);
    }

    render() {
      return <WrapperComponent {...this.props} {...this.state} />;
    }
  }

  return MeteorWrapper;
};

react 使用示例

import React, {Component} from 'react';
import {List, Skeleton} from 'antd';
import './App.css';
import MeteorWrapper from './meteor'

function App(props) {
  const {meteorList = [], initOver} = props
  return (
    <div className="App">
      <List
        itemLayout="horizontal"
        dataSource={meteorList}
        renderItem={item => (
          <List.Item key={item.id}>
            <Skeleton loading={!initOver} active avatar>
              <List.Item.Meta
                title={item.name}
                description={item.desc}
              />
            </Skeleton>

          </List.Item>
        )}
      />
    </div>
  );
}

export default MeteorWrapper(App, {
  collectionName:'todo',
  methodName:'getAllTodo'
})

react-native 使用示例

import React  from 'react';
import {StyleSheet, Text, View, FlatList} from 'react-native';
import MeteorWrapper from './meteor'

function App(props) {
  const {meteorList = [], initOver} = props
  return (
    <View style={styles.container}>
      <FlatList
        data={meteorList}
        renderItem={({item}) => (
          <View style={styles.item}>
            <View style={styles.name}><Text>{item.name}</Text></View>
            <View style={styles.desc}><Text>{item.desc}</Text></View>
          </View>)}
      />
    </View>
  );
}

export default MeteorWrapper(App, {
  collectionName:'todo',
  methodName:'getAllTodo'
})
const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
    fontSize: 14,
    lineHeight: 2,
  },
  item: {
    padding: 10,
    borderColor: '#ccc',
    borderBottomWidth: 1,
    borderStyle: 'solid',
  },
  name: {
    color: '#000',
    fontWeight: "900",
    fontSize: 24
  },
  desc: {
    color: '#666'
  }
});

开启远程调试

运行命令

adb shell input keyevent 82

点击 dev setting
然后点击 Debug server host & port for device
设置为 127.0.0。1:8081

再次运行

adb shell input keyevent 82

点击 Debug js remote ,就会自动弹出调试页面。

IOS 运行报错

错误信息如下,请查看解决 React-Native mac10.14.4 运行报错 error Failed to build iOS project

error Failed to build iOS project. We ran "xcodebuild" command but it exited with error code 65. To debug build logs further, consider building your app with Xcode.app, by opening reactNative.xcodeproj

版权声明:本文为[Steve_Xu]原创文章
转载请带上:http://copyfuture.com/blogs-details/14611f066973e6b1c2443f48290d2c5a
或:https://www.cnblogs.com/stevexu/p/10748317.html


  1. 女流也顶不住了!Steam新游《Baba Is You》堪称烧脑之王
  2. 三七粉,您吃对了吗?
  3. 真香定律!?澳洲与华为签署 2 亿澳元大单,无视美国警告!
  4. Velodyne Lidar将在2019消费电子展(CES)上展示自动驾驶和驾驶辅助突破性技术
  5. 汽车音响越贵越好?大错特错
  6. 反编译之利用AndroidStudio动态调试smali源码
  7. Linux 工程向 Windows 平台迁移的一些小小 tips
  8. 【题解】晋升者计数 Promotion Counting [USACO 17 JAN] [P3605]
  9. 世界上第一个拥有航母的发展中国家,服役18年几乎都在维修厂
  10. 美国启动6G网络技术研究 美网友反应出人意料
  11. 跳槽就能薪水翻倍?这样的日子一去不复返:互联网人才“高薪”泡沫刺破
  12. 成年人的友谊到底有多现实?约你一次不来,下次就不会再约你了
  13. 没想到香川照之、松隆子等日本演员的家族势力竟如此强大
  14. 腾讯回应yoo视频被裁撤:业务团队整合到腾讯视频,仍保持正常运营
  15. Ajax之跨域请求
  16. 乾隆皇帝:藩属国朝觐中国皇帝都要磕头,英国人有什么理由不磕头
  17. 在裁员的浪潮下,如何才能使自己立于不败之地?
  18. 趣味算法:返回完全幂的绝对差
  19. 有一种爱,叫反复拉黑
  20. 是谁打的乔丹,大鸟,魔术师一起抱团?
  21. 许多人不知道Edge浏览器已经发布iOS/Android版本 微软表示无奈
  22. 一套完整的太阳能远程监控系统方案
  23. 二战时期意大利的伙食有多好 竟把英国俘虏吃的泪流满面!
  24. 这个女团不一般!
  25. 中国最大洋垃圾场,光日本一年运4000万吨,韩国指责中国污染环境
  26. 明星夫妇微商纳税12亿,微商究竟有多赚?
  27. 故宫最神秘的宫殿从未对外开放,存放785尊佛像,进门需三把钥匙
  28. 德云社相声同质化严重,“神经质”式表演风格难长久,你怎么看?
  29. Facebook面临爱尔兰数据调查机构7项数据调查
  30. 【威胁通告】Cisco Elastic Services Controller REST API认证绕过漏洞CVE-2019-1867
  31. 基于 Python 和 Pandas 的数据分析(6) --- Joining and Merging
  32. 跌的太猛?那是骗你的!3月23日废纸价格汇总
  33. RocketMQ4.3.x对顺序消息的理解
  34. 5G时代,苹果如何折叠?
  35. 译站丨帕奎塔在巴西将身披10号球衣 在米兰喜欢踢中场偏左位置
  36. 消防员牺牲的第4天,快递站收到1件陌生包裹
  37. 为什么明朝军事那么牛逼,却被清朝给消灭了呢?
  38. SpringCloud-Greenwich版本新特性探索(1)---SpringCloudGateway
  39. 身价千亿的婚礼有多土豪?明星现场献唱,光婚房就花了10个亿...
  40. Vue不能检测数组或对象变动问题的解决
  41. 李小龙曾差点参加越战?去美军报到,却因一个缺陷被劝退
  42. 最可惜豪车王牌,车重2.3吨一箱油810Km,却价格连跌,仍没人要
  43. 丰田或推出第二代86车型 有望2020年亮相
  44. 055大驱一舰多用,或携带8种导弹,包括东风-17和长剑-10!
  45. “春分”这一天是怎么确定的,这一天意味着什么
  46. Uzi:因为平时和比赛版本不同,所以出错了装备
  47. Linux安装ftp并java操作
  48. 天边有朵雨做的云,有朵奥尔特云,云在天边望星星,望尽太阳系
  49. 糖尿病人餐后运动半小时与一小时,血糖变化大不同,你做对了吗?
  50. Linux 用户管理和文件权限
  51. 50道SQL练习题及答案与详细分析(MySQL)
  52. 历史上的今天:协和式超音速客机首飞成功
  53. 自己的路自己走,自己的心自己懂
  54. 娃做得好,你奖励巧克力、玩具!大脑科学告诉你,这可能害了他!
  55. 货币化率或已到顶,拼多多大考才开始
  56. C 修真之旅
  57. 苹果拟为2020年版iPhone造5纳米芯片 仍由台积电生产
  58. 开普勒-107系统,遭正面且高速的碰撞造成巨大冲击!
  59. 一把被忽视的吃鸡神枪,性能完爆98K,却很少会有人会用!
  60. VMware15.0下ubuntu18.04桌面版配置静态IP
  61. 7万公里的福克斯发动机没动力太肉,车主看到火花塞后沉默不语
  62. ABP 框架 数据库底层迁移 Mysql 集群
  63. 何洁是糊了,但05超女为什么能实红呢?
  64. 个人免签支付系统.NET语言开发
  65. 灵动思绪EF(Entity FrameWork)
  66. 董卿出场,窦骁第一个起身鼓掌,谁注意一旁秦昊对吴越说的话?
  67. 教孩子换种方式学习,成语原来还可以这么玩!
  68. 暴跌的就一定是垃圾+泡沫?
  69. nodejs中npm以及yarn常用指令
  70. 赌王女婿遭起底,被称哈尔滨之光,何猷君给姐姐送祝福反被催婚
  71. TVB御用恶霸王俊棠也是慈父一名,为小儿子北上发展动用一切人脉
  72. 每日分享!~ JavaScript(js数组如何在指定的位置插入一个元素)
  73. 美国再现零售业倒闭潮,一周内500家店面关门(图)
  74. 谷歌云游戏服务年内上线:通过浏览器或YouTube就能玩游戏
  75. PHP常用正则
  76. 「五胡灾129」草木皆兵
  77. 19年面试总结
  78. 中国海军70周年大庆,数十种新舰现身青岛,规模堪称世界之最
  79. 三步爬取半次元热门图片
  80. 哺乳动物肠道微生物的传播模式
  81. 科创板上市的影子股将是下周的爆发点
  82. 老大爷网上参与拼团购买手机 不料手机没买到还损失999元
  83. 以爱彼表为代表的瑞士奢华手表品牌商逐渐放弃多品牌零售商
  84. 曾经的东巴基斯坦是如何在历史中一步步变成了孟加拉国?
  85. Asp.net MVC 示例项目"Suteki.Shop"分析之---Model和Service
  86. Jenkins环境搭建(3)-配置自动发送邮件
  87. 你以为孩子很幸福,孩子可能正郁闷。培养一个幸福阈值低的孩子
  88. 世界上这些最美的天然温泉,你喜欢哪一个?
  89. angular简介
  90. 最新联赛射手效率榜:C罗垫底梅西第5,姆巴佩第2,第1居然是他?
  91. 数据库设计 Step by Step (8)——视图集成
  92. 果然深谋远虑!辽宁舰究竟改动了哪些地方,最大改进十分显眼
  93. 中国重要的军事基地,是不允许外国人进入的景点!
  94. ​LPL春季赛:BLG魔鬼赛程首战对阵RNG 试炼正式开启
  95. 人民网调查:搜索引擎“画地为牢”,动摇互联网基石
  96. 蔚来汽车在美遭诉讼:百度总裁张亚勤受牵连,蔚来称积极辩护
  97. 警钟!河北保定大沙河段:非法采砂仍疯狂进行!百姓被逼贱卖农田、环境执法患上“失明症”!
  98. 并发专题(一)--初识多线程的发展及应用
  99. 28胜1负!火箭装死大神一数据联盟第一,难怪德帅给他开绿灯?
  100. Python入门学习指南--内附学习框架

  1. Python开发:部分第三方库无法在线安装解决方法(947)
  2. [Swift]LeetCode325. 最大子数组之和为k $ Maximum Size Subarray Sum Equals k(779)
  3. Matlab 2019a 安装包下载以及安装和激活(718)
  4. 仅限Edge和Chrome访问 全新网页端Skype应用上线(685)
  5. 前端笔记之NodeJS(一)初识NodeJS&内置模块&特点(683)
  6. C#读取excel文件提示未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序(663)
  7. 【预警通告】Weblogic反序列化远程代码执行漏洞(640)
  8. Visual Studio 2019 正式发布,重磅更新,支持live share(599)
  9. 【预警通告】Apache Tomcat远程代码执行漏洞CVE-2019-0232(573)
  10. 网上赌博平台维护审核提不了款怎么办?(535)
  11. React 与 React-Native 使用同一个 meteor 后台(527)
  12. Sublime Text3 最新版3207 安装及破解(458)
  13. Visual Studio 2019 正式发布(389)
  14. [翻译] Visual Studio 2019: 极速编码. 智能工作. 创造未来.(388)
  15. 刘强东身边的CXO还有谁“幸存”(373)
  16. 舍命生子产妇吴梦丈夫怒斥:没抢肺源不是精神分裂,网友断章取义(371)
  17. Confluence SSRF及远程代码执行漏洞处置手册(370)
  18. 机器学习 ML.NET 发布 1.0 RC(369)
  19. 阿里巴巴2018年纳税516亿元 同比增40%(368)
  20. K8s集群安装--最新版 Kubernetes 1.14.1(336)
  21. 雷军清华演讲实录:小米9年的创新、变革与未来(333)
  22. 小米手机卖不动了?(327)
  23. F#周报2019年第14期(317)
  24. 积分一样却选手下败将出战国际赛,《最强大脑》云队选手被坑了?(300)
  25. 《最强大脑》要垮?桑洁魏坤琳出轨细节被扒,戚薇才是神助攻(257)
  26. 华电教授孙玉兵被指与昔日同学共同学术造假,多所高校调查(250)
  27. F#周报2019年第15期(249)
  28. 日本明仁天皇退位,日本“平成”年代结束(246)
  29. linux系统安装cdcfordb2udb(241)
  30. Oracle甲骨文大规模裁员,你背离时代就会被淘汰(240)
  31. 他联系叙恐怖分子“卖军火”,称能搞到2000枚导弹,关键时刻中国警察出手(237)
  32. 魔兽世界:8.15搏击俱乐部坐骑获取流程 鳄鱼布鲁斯坐骑(236)
  33. 针对django2.2报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0xa6 in position 9737: ill....(235)
  34. 女友被曝插足许志安郑秀文婚姻 知情人透露马国明已下定决心分手(232)
  35. SQL简介及MySQL的安装目录详解(229)
  36. 视觉中国深夜道歉:全面配合监管部门彻底积极整改(228)
  37. 为什么国内汽车用沥青阻尼片,而欧洲主机厂却用树脂?(228)
  38. 谁是苏小明饭局爆粗偷拍者?知情人称另有其人(223)
  39. NodeJs之邮件(email)发送(222)
  40. 迪玛希好惨!昨晚《歌手》为声入人心男团帮帮唱,却再被指控侵权(222)
  41. 市值暴跌90%,世界零售巨头申请破产战胜了所有对手却输时代(221)
  42. 函数防抖,与函数节流(219)
  43. 机器学习基石笔记:01 The Learning Problem(217)
  44. 深度学习python的配置(Windows)(215)
  45. [深度应用]·实战掌握Dlib人脸识别开发教程(213)
  46. 许志安出轨视频系蓄谋偷拍?司机被曝收40万装红外摄像头(210)
  47. Google AI 系统 DeepMind 高中数学考试不及格(210)
  48. 干货!21部漫威电影观影顺序指南,在《复联4》之前赶紧补齐!(208)
  49. 赌命生子九个月后,吴梦离世:前半辈子任性了,我用生命买单(206)
  50. 威廉王子出轨凯特王妃闺蜜? 外媒称婚外情致兄弟反目(203)
  51. spring-cloud-sleuth+zipkin源码探究(203)
  52. WebGL three.js学习笔记 纹理贴图模拟太阳系运转(201)
  53. 新更新kb4493472导致无法正常开机(195)
  54. 杜敬谦死因疑曝光!或因他这一特殊的训练方式,泳迷高呼孙杨退役(190)
  55. AntDesign Form表单字段校验的三种方式(189)
  56. 韦杰落网,金诚集团终局(188)
  57. 华为推出方舟编译器 称可提升安卓系统效率(185)
  58. 山东庆云民企3000亩土地被贱卖 国企接盘拟转性(185)
  59. 《权力的游戏》龙妈有那么多爱她的人,为什么最终会选择琼恩雪诺(182)
  60. 张无忌为什么爱上她?陈钰琪版赵敏终于给答案了(181)
  61. “国防”靠美国? 韩国瑜=马英九2.0? 走着瞧(180)
  62. Python破解Wifi密码思路(180)
  63. 直认与老公感情淡了!27岁TVB上位女星:我们不是好熟(179)
  64. CUBA Studio 8.0 发布,企业级应用开发平台(179)
  65. 张丹峰出轨最新锤来了!毕滢的朋友圈简直刷新下限啊!(177)
  66. Github 上 Star 最多的个人 Spring Boot 开源学习项目(176)
  67. 使用 C 语言实现一个 HTTP GET 连接(175)
  68. 拿着普通员工超300倍的工资裁员800人,这家游戏公司CEO引发员工不满|一周新闻(175)
  69. AntD框架的upload组件上传图片时遇到的一些坑(175)
  70. 币安称 4000 万美元比特币被盗(174)
  71. 不要996!程序员创建955.WLB不加班公司名单,GitHub周榜第二(174)
  72. 《跃迁-成为高手的技术》之联机学习(173)
  73. Weblogic CVE-2019-2647等相关XXE漏洞分析(173)
  74. Codejam Qualification Round 2019(173)
  75. python爬虫重定向次数过多问题(172)
  76. simulink创建简单模型(172)
  77. 强大的jQGrid的傻瓜式使用方法。以及一些注意事项,备有相应的引入文件。(170)
  78. [NewLife.XCode]高级查询(168)
  79. Algolia使用教程 , 超详细傻子看都会(166)
  80. 核心算法缺位,人工智能发展面临“卡脖子”窘境(165)
  81. Delphi 开发微信公众平台 (二) 用户管理(164)
  82. 只需知道电话号码 即可监控任意一部手机,获取位置,太可怕(163)
  83. 范斯晶对祖母的称呼很意外,范志毅很心疼,缺少母爱的孩子不容易(162)
  84. 如何定位前端线上问题(如何排查前端生产问题)(162)
  85. 告诉你去越南芽庄必带回的好东西(161)
  86. 双双出轨!许志安劈腿马国明港姐女友,二人被拍16分钟激吻超20次(160)
  87. 数学家发现完美的乘法(160)
  88. 百度网盘下载神器 PanDownload v2.0.9(破解版、不限速)(159)
  89. 高管被警方带走背后:巧达科技操盘2亿人简历生意(159)
  90. 定义工作,解读自我——IT帮2019年2月线下活动回顾(159)
  91. 吹爆惠英红,《铁探》这位霸道总警司超带感!真乃港剧罕见大女主(156)
  92. vue生成图片验证码(155)
  93. 三国正史第一猛将:一人单挑数千人,不是吕布也不是关羽(154)
  94. 从0到1上线一个微信小程序(154)
  95. FreeSql 如何现实 Sqlite 跨库查询(154)
  96. 向佐的弟弟叫向佑,网友:那郭碧婷生的孩子叫什么?(153)
  97. spring-boot-2.0.3不一样系列之源码篇 - pageHelper分页,绝对有值得你看的地方(153)
  98. TensorFlow从1到2(十)带注意力机制的神经网络机器翻译(152)
  99. [Node.js] 3、搭建hexo博客(152)
  100. java基础(十五)----- Java 最全异常详解 ——Java高级开发必须懂的(152)

  1. [NOI2006] 网络收费
  2. 线性基的小证明...
  3. 从语言设计的角度探究Java中hashCode()和equals()的关系
  4. C# 多线程小试牛刀
  5. Python基础:输入与输出(I/O)
  6. link-1-STL 标准模板库
  7. mysql--浅谈多表查询1
  8. 进击JavaScript核心 --- (1)基本数据类型
  9. 大数据技术之_24_电影推荐系统项目_07_工具环境搭建(具体实操)
  10. 前端限制显示的文本字数的几种方法——不换行与换行
  11. 【实验吧】该题不简单——writeup
  12. 反向传播算法
  13. =、==、===、equals()的区别
  14. GitHub 推出开发者赞助项目
  15. 剑指Offer的学习笔记(C#篇)-- 从上往下打印二叉树
  16. argparse 在深度学习中的应用
  17. 张云雷复出?西城区文旅局:德云社在辖区内演出未发现违法违规问题
  18. Maven安装与配置
  19. acWing 825. 排队购物
  20. ajax&&jquery
  21. 苏联攻击机的悲壮行动,明知德军战机拦截,仍在无护航状态下出击
  22. 华为的5G技术,源于这种数学方法
  23. 一站式自动化测试平台 http://www.Autotestplat.com
  24. RabbitMQ总结
  25. 第九组 通信3班 063 自反ACL
  26. 短线还有最后一跌?大V们表示:反弹近了!(5月23日)
  27. 第九组 通信3班 063 OSPFv2与OSPFv3综合实验
  28. C# IE选项 - 重置IE
  29. Spring_数据校验和自定义检验规则
  30. 谈谈Java的string为什么是不可变的
  31. OFFICE 365 A1 Plus账号注册
  32. 初学python—做一个数组的增删改查操作
  33. oc工程中oc、swift混编代码打包成静态framework踩坑笔记
  34. 阿里云推“智能秒停系统”:50秒内短信通知 再不怕吃罚单
  35. 今天购买了一个云服务器
  36. 神奇!乌鸦竟然会传达悲观和怀疑情绪 还会对同伴“冷嘲热讽”
  37. 数字IC设计入门必备——VIM自定义模板调用与VCS基本仿真操作示例
  38. 点击事件的坐标计算(client || offset) +(X || Width || Left) 各种排列组合别绕晕
  39. windows下dubbo-admin2.6.x之后版本的安装
  40. linux 之基本命令学习总结
  41. 传祺难续“传奇”?销量暴跌超4成 加价卖车被“断裂门”尽毁
  42. 香港豪门后宫持续曝光:他用选美比赛“选妃”,与几万女星交往
  43. 小窥React360——用React创建360全景VR体验
  44. Spring Boot 2 快速教程:WebFlux 集成 Mongodb(四)
  45. .Net Core下使用RabbitMQ比较完备的两种方案(虽然代码有点惨淡,不过我会完善)
  46. “80后”女博士已任团中央书记处书记
  47. 杨元庆:现在是联想的最好时刻 我们四大战役全部打了胜仗
  48. Java开发环境的搭建(JDK和Eclipse的安装)
  49. oracle学习笔记(十四) 数据库对象 索引 视图 序列 同义词
  50. 机构风向标:外资出逃超500亿 美的集团等白马股表现欠佳
  51. 跟踪记录ABAP对外部系统的RFC通信
  52. c++11多线程详解(一)
  53. 小蓝杯,跌破发行价了
  54. [NewLife.XCode]百亿级性能
  55. 33岁何洁商场走穴被曝光,路人镜头下的她与精修图差别好大
  56. 途牛第一季度净亏损2240万美元 同比亏损幅度扩大
  57. 00 | Two Sum
  58. 智能威胁分析之图数据构建
  59. 快速掌握RabbitMQ(二)——四种Exchange介绍及代码演示
  60. Neo4j 第六篇:Cypher语法
  61. Java微信公众平台开发(三)--接收消息的分类及实体的创建
  62. Java8 中的 Optional
  63. 如何显示超大图像(3)
  64. 贵州检察机关依法对袁仁国决定逮捕
  65. 有关xerospolit运行报错问题的有效解决方案
  66. ADO学途 one day
  67. Linux 中 ip netns 命令
  68. Python爬虫之设置selenium webdriver等待
  69. BSOJ1040 -- 【练习题目】美元DOLLARS
  70. 外媒:稀土是中国手中的一张王牌
  71. sql server添加sa用户和密码
  72. 深入理解JVM的类加载
  73. querySelector和getElementById之间的区别
  74. 简说设计模式——观察者模式
  75. 扰动函数和拉链法模拟HashMap的存储结构
  76. 东芝中国:“上海东芝公司”不存在 未停止与华为的合作
  77. 彭于晏马思纯主演张爱玲这部小说,却被说更适合演《骆驼祥子》?
  78. 停止向华为供货?东芝辟谣回应
  79. 云米第一季度净利润5310万元 同比增长68%
  80. 贪吃的古蛙,古生物学家发现亿年前两栖动物之间战争
  81. APICloud发布低代码开发平台 效率提升30%至60%
  82. Golang 读写锁RWMutex 互斥锁Mutex 源码详解
  83. shell初级-----数据呈现方式
  84. 白玉兰入围名单公布!《知否》《都挺好》上榜,还有这部豆瓣3分剧
  85. 深网 | 京东618接入快手、抖音 实现“即看即买”
  86. 解决 APP启动白屏黑屏问题
  87. Spring Cloud Hystrix理解与实践(一):搭建简单监控集群
  88. 浏览器与服务器通信技术——jsonp
  89. 【刷题笔记】LeetCode 606. Construct String from Binary Tree
  90. 央行副行长刘国强:应对汇率波动经验丰富,政策工具储备充足
  91. 部署Azure Log Analytics
  92. 计算机基础--http的基础整理和巩固
  93. 章子怡:女人四十,不止表面风光
  94. 直击|对话杨元庆:希望今年创最好盈利 要震慑住谣言
  95. 微软通过合作为美国270万农村退伍军人提供高速宽带服务
  96. Java进程占用内存过高,排查解决方法
  97. Go语言中使用切片(slice)实现一个Vector容器
  98. 商务部回应美宣布对13个中国企业或个人实施制裁:反对“长臂管辖”
  99. 优酷土豆的Redis服务平台化之路
  100. shell初级-----处理用户输入