Java分布式Socket监控项目思考

 内容说明

  • 一项课程作业Java编写Socket长连接监控分布式终端,并将终端状态写入数据库供前端查询
 基础:c++/Posix/APUE/Mysql&sqlite
 核心内容:Socket/线程/并发/同步
难点:Java语言未系统学习过,Java中JDBC操作数据库未接触过 
  • 过程:
    • 心跳包程序理解重写:
      • 问题与技能:java语言面向对象,Java语言的Socket使用,Java异常基本使用
      • 解决方法:
        • 熟悉一下Java语法,套用c++面向对象方法(其实面向对象部分基本一样,包括Python的面向对象)
        • 抄代码,理解代码逻辑,(相信每一个关键词,每一行代码都有其意义和功能)学习新语言新工具最快的方式就是使用它
        • 就遇到问题集中问题点查询,避免盲目查询,一次解决一个Bug,多用Google和Stackoverflow(超级高效)
    • Server端处理
      • WatchDog监视新连接
      • 多线程处理各连接内部报文,超时未收到报文,清除连接释放资源
      • 加入机器状态协议消息标识
      • 考虑了多种通信状况的可能,终于理解TCP/IP为什么设计那么多头部和校验了
    • 本地Hashmap缓存消息较少数据库读写次数
      • 设计之初没考虑状态包对数据库的高频读写更新,后来为了减少数据库读写在本地建立一个最新状态缓存即Hashmap映射集,一般尽量只更新本地状态缓存即Hashmap,必要时读写数据库
      • hashmap可能不是很好的实现,健壮性欠考虑,考虑用Redis或者sqlite作为本地缓存数据库,效果应该会好些
    • 数据库操作更新
      • sql语句嵌入到Java语句中(JDBC),基本的增删改查,封装成了一个查询类
      • 之前学过Mysql和sqlite的基本操作.在Java里是通过是所谓的JDBC(其实还是执行sql语句),这两天看了Python的数据库接口,发现都一样的执行sql语句

后记

  • 好奇Java的线程实现和同步,之前看Posix和APUE的线程章节,一堆的Mutex和lock,感觉Java直接靠关键字synchronized 就搞定了(其实内部还是锁机制)
  • 不管哪种语言
    • Socket,一样的bind/connect
    • 线程的同步,一样的加锁互斥等待同步资源共享
    • 线程/进程通信,一样的写进一个"文件",给另一个进程读:信号/信号量(非典型读写),,共享文件/管道(典型读写)

转载于:https://www.cnblogs.com/zeroArn/p/6198847.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值