后端
qqq2018
奋意向人生
展开
-
2020-10-29 RPC和http
对比 RPC常用在分布式系统,性能要求高的场景,可以建立在udp,tcp之上,也可以建立在http协议之上(比如说著名的grpc使用http2)或者自定义的tcp(自定义的tcp根据需要约定字段,可以减少很多废话)。HTTP用在浏览器服务器通信,传输的内容废话太多,太笨重(指http1.1,到http2已经优化了编码问题,那用自定义的tcp就必要不大,可以直接用基于http2的rpc了),但是可读性好(用restful风格的http越来越多,restful要求uri,要求参数名好认等),通过各种防火墙穿透原创 2020-10-30 12:13:01 · 95 阅读 · 0 评论 -
2020-10-28linux top命令
load average:1分 5分 15分cpu正在处理和等待处理的进程数量 数值÷核心数=每个核心的负载 大于1就是有拥堵了 1:每个核心的 m:切换内存使用率显示方式 t:切换cpu使用率显示方式 N:依据进程号对进程排序 P:依据cpu使用率对进程排序 M:依据内存利用率对进程排序 ...原创 2020-10-28 12:13:29 · 76 阅读 · 0 评论 -
2020-10-27 Java接口/抽象类的共同点/区别 设计模式
抽象类和接口的区别 共同点 1.都不能被实例化 区别 1.一个类可以实现多个接口,只能扩展一个抽象类 2.接口所有方法/成员都抽象,抽象类可以有非抽象方法/成员(子类中就可以不重复写他们,提高复用) 23 种设计模式 这些模式可以分为三大类: 创建型模式(Creational Patterns)、 结构型模式(Structural Patterns)、 行为型模式(Behavioral Patterns)。 **创建型模式:**提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例原创 2020-10-27 19:34:22 · 101 阅读 · 0 评论 -
2020-10-21 protobuf+java base64
1.github下载protobuf编译器: https://github.com/protocolbuffers/protobuf/releases windows64位选择 “protoc-版本号-win64.zip” 2.解压。 3.编写.proto文件,如PersonMsg.proto: syntax = "proto2"; message Person { // ID(必需) required int32 id = 1; // 姓名(必需) required string name = 2原创 2020-10-21 12:16:52 · 622 阅读 · 0 评论 -
linux命令
kill 用途:给系统发送信号(sig)。信号种类有很多,叫做sigXXX,分别有对应编号。 kill 进程号 kill默认是编号15的信号SIGTERM(15)它不是强制停止。 kill -9 进程id SIGKILL(9)此信号强制进程立刻停止运行。程序不能忽略此信号,而未保存的进度将会丢失。 通常有两种情况是不能kill掉的: 1.进程已经成为僵尸进程,当它的父进程将它回收或将它的父进程kill掉即可在ps输出看不到了; 2.进程正处在内核状态中,会屏蔽所有信号,包括SIGKILL,所以这个时候kil原创 2020-09-04 15:05:38 · 108 阅读 · 0 评论 -
数据库常见面试题(附答案)
数据库常见面试题(附答案) https://blog.csdn.net/qq_22222499/article/details/79060495 mysql四种存储引擎 https://www.cnblogs.com/snake23/p/9635822.html原创 2020-06-28 09:59:13 · 257 阅读 · 0 评论 -
IPC(进程间通信)之管道详解
管道和共享内存(最快的IPC)区别: 1.管道一次通信四次数据拷贝:由用户空间的buf中将数据拷贝到内核中->内核将数据拷贝到内存中->内存到内核->内核到用户空间的buf。而共享内存则只拷贝两次数据:用户空间到内存 -> 内存到用户空间。 2.管道用循环队列实现,连续传送数据可以不限大小。共享内存每次传递数据大小是固定的; 3.共享内存可以随机访问,管道只能顺序读写; 匿名管道 在具有公共祖先的进程之间进行通信。通信跟随进程消亡,所以是只存在于内存的临时文件。由于这.原创 2020-06-23 11:41:39 · 1320 阅读 · 0 评论 -
语言特性
为什么c++比python快? 1.Python经过了更多层,甚至连数字都是object。 2.Python是解释执行的,和物理机CPU之间多了解释器这层,而C++是编译执行的,直接就是机器码,编译的时候编译器还可以进行一些优化。 python的多线程是假多线程 解释器提供了GIL(Global Interpreter Lock ,全局解释器锁)保证线程数据同步,每个时刻只有一条线程在执行。 可以使用多进程实现并行。 # 多线程 from threading import Thread def.原创 2020-06-23 11:32:21 · 124 阅读 · 0 评论 -
容器
容器和VMM(Hypervisor或VMM,Virtual Machine Monitor)的对比: 容器:操作系统层虚拟化,把应用和运行库打包在一起。 1.占用资源少,启动快速:没有运行Guest OS所需的内存开销,无需为虚拟机预留运行内存,无需安装、运行App不需要的运行库/操作系统服务,内存占用、存储空间占用都小的多。 2.共用内核,应用之间的隔离是不如虚拟机彻底,如果某个应用运行时导致内核崩溃,所有的容器都会崩溃。而虚拟机内的应用崩溃,理论上是不会影响其它虚拟机上的应用。 VMM:硬件虚拟原创 2020-06-23 10:11:56 · 117 阅读 · 0 评论