项目需求: 将map中的内容部分填充到表格 没有数据的填写符号” - ” Go 的html/template包对HTML模板提供了丰富的模板语言。主要用于Web应用程序,在客户端的浏览中以结构化的方式显示数据。 go提供的模板填充接口,支持各种所以结构。 当渲染模板时,要访问模板中的数据,最前的变量是通过{{. }} 来访问。其中花括号中的点(.) 称为管道和root。 模板使用语法: {{/* comment */}} 定义一个注释 {{.Title}} 在嵌套元素中显示Title对应的字段 {{.}} 显示根元素 {{if .Title}} {{else}} {{end}} if else条件选择 {{range .Title}} {{.}} {{end}} 在Title上做循环显示每个元素 接口调用代码: func getResultHtml(mapInfo map[string]string) string { buf := new(bytes. 继续阅读 >>


卢晓丹 18/08/11 21:27:57
目录: istio 定义 为什么需要istio istio的主要功能 istio架构 安装istio istio之envoy istio之point istio之mixer istio访问外网问题 Istio定义 一个用来连接、管理和保护微服务的开放平台。 Istio提供一种简单的方式来建立已部署服务网络,具备负载均衡、服务间认证、监控等功能,而不需要改动任何服务代码。 想要为服务增加对Istio的支持,您只需要在环境中部署一个sidecar,使用Istio控制面板功能配置和管理代理,拦截微服务之间的所有网络通信。 为什么需要Istio 随着微服务出现,微服务的连接、管理和监控成为难题。Kubernetes 可以处理多个容器的工作负载,但当涉及更复杂的需求时,需要像Istio这样的微服务网格。 Istio的主要功能 流量管理(Pilot)。控制服务之间的流量和API调用的流向,使得调用更灵活可靠,并使网络在恶劣情况下更加健壮。 可观察性。通过集成zipkin等服务,快速了 继续阅读 >>


卢晓丹 18/04/07 16:02:16
新建一个Django文件 //新建一个django项目 和 一个app $ django-admin.py startproject mysite $ django-admin.py startapp my_app //运行(指定ip地址的)开发服务器 python manage.py runserver python manage.py runserver 0.0.0.0:8080 关于urls.py文件 网上有些例子用到 patterns 函数,我的django创建文件中不能对这个函数正常引用,需要加入: from django.conf.urls.defaults import * 函数用法:指定功能函数匹配的url urlpatterns = patterns('', ('^hello/$', hello), ) 关于正则语法 关于django的运行过橙 浏览器接收请求链接 /hello Django通过setting.py文件 继续阅读 >>


卢晓丹 17/12/12 17:42:49
mysql 忘记密码重置 1. 停止 MySQL 服务 $ cd /usr/local/mysql/bin/ $ mysql.server stop 2.进入安全模式 $ cd /usr/local/mysql/bin/ $ sudo ./mysqld_safe --skip-grant-tables 3.新开一个终端,进入 MySQL 输入mysql命令直接进入 $ cd /usr/local/mysql/bin/ $ mysql > use mysql > flush privileges; > set password for 'root'@'localhost'='***' 修改完成。 4.重启 cd /usr/local/mysql/bin/ mysql.server start mysql 安装 MYSQL-python 正常情况 sudo pip install MYSQL-python 出错情况 继续阅读 >>


卢晓丹 17/11/21 22:24:54
概念 Hadoop,一种分析和处理大数据的软件平台。是Appach的一个用JAVA语言实现的开源软件的加框,在大量计算机组成的集群中实现了对于海量数据进行的分布式计算。 Hadoop的框架核心设计是:HDFS和MapReduce.HDFS为海量数据提供了存储,则MapReduce为海量数据提供了计算。 关于HDFS分布式文件系统 用于数据的存储 大文件被分成多块,以冗余镜像的方式分布在不同的机器中。 关于MapReduce Hadoop为每个input split创建一个task调用Map计算,task计算input中的每个记录,然后Map将结果以key-value形式输出。按照key值将结果整理交给Reduce,Reduce输出结果。保存在HDFS。 Hadoop集群组成 NameNode 文件如何拆分 被拆分部分都存储在哪些DataNode节点 文件系统运行的状态信息(从DataNode接受心跳信号,管理节点工作状态) Secondary NameN 继续阅读 >>


卢晓丹 17/11/08 21:28:42
这几天看了TCP/IP的相关知识,感觉要系统的整理很难,一段一段的整又容易乱,最后想到用解决问题的方式来整理。 这里有一点基本概念和模型图TCP/IP协议基本知识 问题: 1.TCP/IP,ICMP,ARP,FTP,DNS,DHCP,MTU这些,分别是什么? 2.TCP 和 UDP的区别及用途? 3.端口和服务间的关系及常用端口? 4.TCP三次握手? 5.私有地址和公有地址及其工作方式?有哪些私有(保留)地址? 6.IP地址分为几类?为解决IP地址不够用的问题又作出了什么改变? 7.IP地址,MAC地址为何缺一不可? 8.描述路由表选路过程? 9.路径MTU发现工作原理? 10.简述DNS工作过程? 11.ARP 的工作过程? 12.NAT 的工作机制? 13.TCP 凭哪些来保证其靠性? 14.访问www.baidu.com的过程? 15.断开链接四次挥手? 16.滑动窗口,拥塞控制,流量控制? TCP粘包问题? 发送的Data长度? 文中图片均来自网络,若有侵权请联系我删除 继续阅读 >>


卢晓丹 17/07/03 16:41:00
面试被要求实现这个函数。 函数功能:将字符串转换为整数。那么实现这个一半需要考虑到哪些情况呢? 符号:整数可以为负数。 考虑上溢和下溢 字符中的非法字符如何处理 我们知道int类型计算机存储中占32bit, 首位存储符号,表示的数范围为-2147483648 - 2147483647 #define MAX_INT ((1 << 31) - 1) #define MIN_INT (-(1 << 31)) using namespace std; int MyAtoi(char *str) { char *temp = str; int i = 0; int flag = 0; unsigned int sum = 0; while( ' ' == *temp ) ++temp; //排除开头的空格 if( *temp != '-' && *temp != '+' && 继续阅读 >>


卢晓丹 17/03/29 13:33:13
IP协议是TCP/IP协议族的动力,它为上层协议提供无状态、无连接、不可靠的服务。 优点:简单,高效。 无状态指:IP通信双方不同步传输数据的状态信息,所有的IP数据报的传输都是独立的。所以容易发生重复和乱序的情况并且IP层不予处理。 然后将这些乱序的交给上层传输层(TCP/UDP等)来处理,将其处理成有序的,正确的。再交给应用层。 不可靠指:IP协议不能保证IP数据报准确到达。所以它提供ICMP报文来辅助,一旦检测到IP数据报发送失败,通知上层协议。 IP头部信息: 头部长度:通常20字节,有选项时更长,总共不超过60字节。 IP数据报长度:65535字节。 逐个分析: 4位版本号:IP协议(IPv4)版本号位4 4位头部长度:标识头部有多少个4字节,即最大共15*4个字节 8位服务类型:包含一个4位优先权字段:最小延时,最大吞吐量,最高可靠性和最小费用。 16位总长度:表示整个IP数据报的长度,最大表示65535,但由于MTU限制,一般无法到达这个值。 16位标识:唯一的 继续阅读 >>


卢晓丹 17/03/25 19:47:17
先来看一下函数原型: #include <sys/epoll.h> int epoll_create(int size); //创建内核事件表 int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event); //注册文件描述符 int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout); //返回活跃事件 首先epoll是多路复用的一种,什么是多路复用? IO复用表示多个IO操作复用一个线程。操作系统为你提供一种功能,当某个socket上有事件发生时,操作系统会给你一个通知。然后我们使用select,poll, epoll去get这些通知并逐个处理,这就是简单的多路复用思想。 网络IO模型有很多,IO多路复用只是其中一种,还包括: 阻塞IO(read()或 继续阅读 >>


卢晓丹 17/03/23 04:02:25
使用 #include <signal.h> typedef void (*sighandler_t)(int); sighandler_t signal(int signum, sighandler_t handler); 参数1:我们要进行处理的信号。命令kill -l查看(共64个),这些信号都是系统定义的宏。 参数2:我们处理的方式(3种)。 第一种: signal(SIGINT, SIG_ING); //SIG_ING表示忽略指定信号 //SIGINT信号通常是CTRL+C,或DELETE。 第二种: signal(SIGINT, SIG_DFL); //SIG_DFL执行默认系统动作 第三种: signal(SIGINT, void(*handle)(int)); example: void handler(int sig) { std::cout << "捕捉到信号" << sig << 继续阅读 >>


卢晓丹 17/03/23 01:22:03