TCP 建立连接和断开连接的过程?如果 server 没有 accept,连接会怎样?
UDP bind 和 connect 有什么用?
write 和 sendto 有什么区别?
对端异常掉线,本端调用 write 函数向 socket 写入数据,会出现什么情况?
nagle
shutdown() 和 close() 有什么区别?如何优雅关闭 socket ?
C++多重继承的对象模型?菱形继承的对象模型?
网络编程
https://blog.csdn.net/f2935552941/article/details/88807548
poll机制与select机制类似,通过管理文件描述符来进行轮询,效率更高,并且处理的连接个数不受内核的限制。
如何解决高并发
1.尽量使用缓存,包括用户缓存,信息缓存等,多花点内存来做缓存,可以大量减少与数据库的交互,提高性能。
2.html静态化也是某些缓存策略使用的手段,对于系统中频繁使用数据库查询但是内容更新很小的应用,可以考虑使用html静态化来实现,比如论坛中论坛的公用设置信息,这些信息目前的主流论坛都可以进行后台管理并且存储再数据库中,这些信息其实大量被前台程序调用,但是更新频率很小,可以考虑将这部分内容进行后台更新的时候进行静态化,这样避免了大量的数据库访问请求。能使用静态页面的地方尽量使用,减少容器的解析(尽量将动态内容生成静态html来显示)。能使用静态页面的地方尽量使用,减少容器的解析(尽量将动态内容生成静态html来显示)。
3.使用高性能的服务器、高性能的数据库、高效率的编程语言、还有高性能的Web容器.
4.使用Ngnix负载均衡
5.优化数据库查询语句,减少直接使用hibernate等工具的直接生成语句(仅耗时较长的查询做优化)。
优化数据库结构,多做索引,提高查询效率,数据库集群和库表散列
6.不要频繁得使用new对象,能使用单例模式就使用, 对于utility类型的类通过静态方法来访问。
7.使用线程安全的集合对象vector(已经过时可以使用CopyOnWriteArrayList) hashtable
8.使用线程池。