- 博客(549)
- 收藏
- 关注
原创 移动框架技术R - 第九章
基本布局样式布局代码<!DOCTYPE html><html> <head> <meta charset="utf-8"> <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width"> <title>.bar的基本布局</title>
2022-06-01 16:06:09
413
原创 移动框架技术R - 总结
选择题(2 * 15)填空(1 * 10)判断(10 )简答(4 * 5)程序填空(4 * 5):填一段代码综合(10):填长的一段代码第一章知道MVC第二章AngularJS1与Angular2的区别模块控制器作用域表达式单向绑定和双向绑定第三章分类常用内置指令自定义指令指令的作用域第四章MVVM脏检查机制依赖注入第五章创建服务的五种方式provide.
2022-05-31 19:28:22
493
原创 编译原理 —— 填空、简答
填空编译程序、编译的基本工作过程、编译五个阶段的主要任务、编译技术、文法、规范推导、句子、句型、句柄、语言、语法树、文法和语言的关系、文法和语言的分类、自动机、DFA和NFA、单词、单词的种类、语法分析方法的类型、中间语言、优化简答...
2022-05-28 08:25:17
307
原创 Android 期末复习 - 程序填空写程序段
prefersmenu外部类匿名类intendadpaterprepareAndroid 应用程序组件Activities - 屏幕AppCompatActivity设置 layout生命周期获取元素设置视图是否可见加载图标Services - 后台demoHow to register a serviceHow to start and stop a serviceHow to test a service
2022-05-19 19:31:37
573
原创 Android 期末复习 -大题
Android 架构Android 应用程序组件Activities一个活动标识一个具有用户界面的单一屏幕public class MainActivity extends Activity {}Services服务是运行在后台,执行长时间操作的组件。举个例子,服务可以是用户在使用不同的程序时在后台播放音乐,或者在活动中通过网络获取数据但不阻塞用户交互。public class MyService extends Service {}Broadcast Receivers广
2022-05-19 15:31:56
962
原创 解决 socket.io 频繁连接导致 cpu 升高问题
前提如果前端频繁刷新页面或者频繁断开重连将会导致服务端 cpu 升高解决方法使用 localStorage 缓存连接,每次通信都使用这个连接代码let socket;if(localStorage.getItem('socket')) { socket = JSON.parse(localStorage.getItem('socket')); // 创建一个不自动连接的 socket 对象 let temp = io({autoConnect: false});
2022-05-17 23:39:25
2512
原创 软件项目管理 —— 期末复习
软件项目概述项目的概念项目管理概述软件项目管理(了解)项目组织环境与管理过程项目管理的环境项目生命周期项目的管理过程项目经理的责任和权利项目整体管理项目启动和可行性分析项目管理计划项目目标管理项目计划执行与变更控制项目收尾与验证项目范围管理项目范围管理概述
2022-05-14 19:09:18
778
原创 Android 期末复习 - 填空
Chapter 1 An introduction to Android and Android StudioChapter 2 How to start your first Android appChapter 3 How to finish your first Android appChapter 4 How to test and debug an Android appChapter 5 How to work with layouts and widgetsChapter 6 H
2022-05-10 17:13:25
550
原创 Android 期末复习 - 名词解释
Chapter 1 An introduction to Android and Android StudioChapter 2 How to start your first Android appChapter 3 How to finish your first Android appChapter 4 How to test and debug an Android appChapter 5 How to work with layouts and widgetsChapter 6 How
2022-05-10 15:23:48
415
原创 Android 期末复习 - 选择
Chapter 1 An introduction to Android and Android StudioChapter 2 How to start your first Android appChapter 3 How to finish your first Android appChapter 4 How to test and debug an Android appChapter 5 How to work with layouts and widgetsChapter 6 How
2022-05-10 15:02:55
1258
原创 Linux C/C++网络编程实战-陈硕-笔记24-dummyload实现原理和代码
控制CPU使用可以使用脉冲宽度调制,控制CPU一段时间内“忙”和“闲”的比例。CPU使用率的测量:某段时间内,CPU“忙”所占的比例。(多核情况下,可以大于 100%)CPU使用率的控制:通过控制一个测量周期内,CPU“忙”所占时间与总周期时间的占比。示例说明如何控制CPU使用率:例如控制CPU使用率在20%。我们需要做的是在一个测量周期T = 100s内,使CPU忙的时间占 Tx=20s , 空闲时间占 Ty = 80s。这样,在一个T周期内,CPU所占时间占比总的时间 = Tx / T = .
2022-05-03 10:37:43
713
原创 Linux C/C++网络编程实战-陈硕-笔记23-procmon代码解析
#include "plot.h"#include <muduo/base/FileUtil.h>#include <muduo/base/ProcessInfo.h>#include <muduo/net/EventLoop.h>#include <muduo/net/http/HttpRequest.h>#include <muduo/net/http/HttpResponse.h>#include <muduo/net/h
2022-05-03 10:37:12
671
原创 Linux C/C++网络编程实战-陈硕-笔记22-实现前要考虑的问题
要如何实现这样一个 procmon 程序。从框架的设计上我们可以采用(主动式监控的)侵入式设计,也可以使用(被动式监控的)非侵入式设计,同时针对web页面中的绘图功能也有多种解决方案。侵入式 or 非 侵入式:(Intrusive or non-intrusive)侵入式:将程序做成一个库,被监控程序主动使用该库暴露其内部状态。优点:可以暴露其内部数据,例如运行期间收到多少次请求、成功/失败次数、响应情况、延迟等。因为侵入式监控程序,和被监控的程序在同一个地址空间中,它的权限和被监控的进程..
2022-05-03 10:36:52
313
原创 Linux C/C++网络编程实战-陈硕-笔记21-进程监控概述
进程监控代码:muduo/examples/procmon功能:实现一个带web界面的top,无需远程登录到某个主机查看他的资源消耗量,通过浏览器web查看。演示:查看 pid=1的进程,将它映射到3000端口,然后使用浏览器指定3000端口查看。演示:查看当前shell中运行的bash。...
2022-05-03 10:36:10
1296
原创 Linux C/C++网络编程实战-陈硕-笔记20-使用非阻塞IO
基于IO复用(非阻塞IO)实现的 netcat使用非阻塞IO可以有效避免上述情况的发生。但非阻塞IO在编程上要比阻塞IO更难,并且在程序的维护上比较痛苦。一般使用非阻塞IO编程时建议使用一些封装好的网络库比较容易编写。代码recipes/python/netcat-nonblock.pynetcat-nonblock#!/usr/bin/pythonimport errnoimport fcntlimport osimport selectimport socketimport s
2022-05-02 14:48:53
500
5
原创 Linux C/C++网络编程实战-陈硕-笔记19-IO-multiplexing方式实现Netcat
基于 IO 复用(阻塞IO)实现的 netcat测试下面进行一个测试:server:recipes/tpc/chargen.ccclient:recipes/python/netcat.pychargen 程序只发送数据而不读取,如果使用 nc 时有标准输入,即 nc 会向 chargen 发送数据,将最终导致 chargen 的接收缓冲区被填满,而 nc 无法再发送数据。因此,nc 的实现方式就显得尤为重要了。如果 nc 这边是网络读写没有分离开,那么由于对端缓冲区满将会导致
2022-05-02 14:28:44
205
原创 Linux C/C++网络编程实战-陈硕-笔记18-第一个 Netcat 的实现
基于多线程阻塞 IO 实现的 netcatThread-per-connection 适用于连接数目不太多,或者线程非常廉价的情况。使用多线程的方式来实现 netcat, 一个连接需要对应两个线程去处理,每个线程负责连接上的一个方向,即读 或 写。代码下面程序中,主线程负责 从标准输入,写到 TCP Socket,另一个线程负责 从 TCP Socket 读, 写到标准输出。源码https://github.com/Anita-Mul/recipes/blob/master/
2022-05-02 13:43:56
321
原创 Linux C/C++网络编程实战-陈硕-笔记17-多个版本的Netcat概览
操作模式对于 netcat 程序,存在两种模式,即 服务端 和 客户端, 它们的区别在于连接建立的方式。 一旦连接建立,客户端/服务器 的行为都是一样的,使用两个并行的循环处理:从标准输入,写到 TCP Socket从 TCP Socket 读, 写到标准输出主要有两种基本的并发模型:多线程配合阻塞IOIO多路复用配合非阻塞netcat 的实现这里提供三种netcat的实现:recipes/tpc/netcat.cc thread-per-connectionrecipes
2022-05-02 12:54:09
1827
原创 Linux C/C++网络编程实战-陈硕-笔记16-TCP使用的基本事项
SIGPIPE 信号如果向一个已经关掉的管道写数据,write系统调用会返回一个 SIGPIPE 信号例1于读写IO,当我们使用管道连接一行命令时,如果管道末端的命令执行失败,那么整个管道的程序将会依次收到SIGPIPE。避免了无效的计算。gunzip -c message.log.gz | grep -a Succeeded. | head -10# gunzip -c或--stdout或--to-stdout 把解压后的文件输出到标准输出设备# grep -a grep如果碰到\0
2022-05-02 12:29:32
1510
原创 Linux C/C++网络编程实战-陈硕-笔记15-如何正确使用 TCP
netcatnetcat 除了读取 socket 描述符,还要读取 stdin 和 stdout并发模型thread-per-connectionIO 复用和非阻塞 IO 配合如何安全的关闭 TCP 连接为什么 IO复用 必须和非阻塞 IO 一起使用netcat 基本功能信号发生器:发送数据。nc > /dev/zero、类似chargen服务负载:接收数据。nc > /dev/null、类似discard服务通过dd产生定量数据,通过nc发送测试网络带宽,dd
2022-05-02 11:25:17
1296
2
原创 Linux C/C++网络编程实战-陈硕-笔记14-扩展知识
UTC and GMTUTC:协调世界时。协调世界时是以原子时秒长为基础,在时刻上尽量接近于世界时的一种时间计量系统。UTC是原子时,以某一个时间起点至今的原子时秒长来计数。(UTC = TAI + Leap Seconds, 原子时 + 闰秒修正。)GMT:格林尼治时间。格林尼治标准时间的正午是指当太阳横穿格林尼治子午线时(也就是在格林尼治时)的时间。GMT是天文时,以地球自转计时。(地球每天的自转是有些不规则的,而且正在缓慢减速。所以,格林尼治时间已经不再被作为标准时间使用。)Unix Time
2022-05-02 11:24:02
459
原创 Linux C/C++网络编程实战-陈硕-笔记13-网络时间同步
TCP:传输控制协议。面向连接的、可靠的、基于字节流的传输层通信协议。特点:可靠传输(应答确认)、提供拥塞控制、全双工通信(允许通信双方的应用程序在任何时候都能发送数据,因为TCP连接的两端都设有缓存,用来临时存放双向通信的数据)。UDP:用户数据报协议。无连接的、 不可靠的、 面向数据报的协议。特点:提供单播,多播,广播的功能UDP的使用场景(一般情况下尽量使用TCP协议):资源受限的情况下:例如 nat穿透技术。在互联网技术中,UDP常用在缓存读取,保存;用在监控或终端上报。不在乎可靠性:例.
2022-05-02 11:23:42
197
原创 Linux C/C++网络编程实战-陈硕-笔记12-其它测试方案
测试配置1. 冒烟测试同一台机器,误差应该很小(单位数微秒以内,在0左右浮动)./roundtrip_udp 127.0.0.1两台机器,AB之间的测试结果 与 BA之间的测试结果,应该相同(误差互为相反数),参考下图:./roundtrip_udp e6400./roundtrip_udp atom2考虑两台机器都没有NTP(不会自动校正时间),则两个机器之间的误差应成线性增长。两个机器的时钟,一个快一个慢,在不校准各自时钟的前提下,快时钟机器每秒走的秒数比慢时
2022-05-02 11:23:13
221
原创 Linux C/C++网络编程实战-陈硕-笔记11-Roundtrip代码分析
代码UDP, two threadsrecipes/tpc/roundtrip_udp.ccUDP with muduo, single threadmuduo/examples/roundtrip/roundtrip_udp.ccTCP with muduomuduo/examples/roundtrip/roundtrip.cc代码客户端与服务段发送的消息体是一个16字节的数据,其中前 8 字节的数据表示客户端的发送时间(T1)。后 8 字节数据表示 服务端接收到数据的时间(T2
2022-05-02 11:22:46
646
原创 Linux C/C++网络编程实战-陈硕-笔记10-网络时间同步
网络时间同步(NTP)原理Device A发送一个NTP报文给Device B,该报文带有它离开Device A时的时间戳,该时间戳为10:00:00am(T1)。当此NTP报文到达Device B时,Device B加上自己的时间戳,该时间戳为11:00:01am(T2)。当此NTP报文离开Device B时,Device B再加上自己的时间戳,该时间戳为11:00:02am(T3)。当Device A接收到该响应报文时,Device A的本地时间为10:00:03am(T4)tim.
2022-05-01 19:56:04
254
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人