VMware使用macOS如何全屏

如何解决 VMware 安装 VMware Tools 后仍不能全屏显示的问题 ...

2018-02-07 14:10:45 · 1 分钟 · 26 字

关于浏览器缓存

探讨浏览器缓存相关 ...

2018-02-02 14:38:49 · 1 分钟 · 142 字

JavaScript知识巩固

Refresh your JavaScript Knowledge ...

2018-02-01 21:28:22 · 11 分钟 · 2309 字

React教程之快速上手篇

React 官方教程系列之快速上手篇 ...

2018-02-01 15:32:54 · 3 分钟 · 522 字

mysql误删数据恢复

对于 MySQL 误删数据,如何通过二进制日志进行数据查找和恢复 ...

2018-02-01 15:14:45 · 3 分钟 · 554 字

Apache项目Maven官方文档学习及翻译(译)

从理解 pom.xml 探析 Maven ...

2018-01-29 14:34:24 · 6 分钟 · 1214 字

关于域名

探析域名 概念 域名(简称“网域”),与互联网上的一个物理 IP 关联 是电子邮件地址中@符号之后和网址中 www.之后的唯一名称 子域名 子域名也是域名,隶属于较大的网域 例如:mail.google.com、www.google.com和docs.google.com都是域名google.com的子域名 域名所有者可以创建子域名,为顶级域名下的网页或服务提供简单好记的地址 裸网域 就是不含“www”前缀的网域地址。例如 google.com,而不是www.google.com 主域名 所注册的域名,可在账号中添加其他域名 辅助域名 主域名之外,可为账号添加其他域名,让相应网域中的用户可使用其他服务 网域别名 可用作其他网域的别名的域名 可为账号添加一个域名作为网域别名,从而为网域中每位用户提供一个采用该域名别名的电子邮件地址 发送至用户任一地址的邮件均会递送到用户的同一个电子邮件收件箱 IP 地址 一个域名可能有一个或多个关联的 IP 地址

2018-01-25 15:09:24 · 1 分钟 · 27 字

关于DNS

探析 DNS DNS 概念 Domain Name System,域名系统 本质 整理和识别各个域名的网络电话簿 将域名转换为托管该网站的计算机的物理 IP MX 记录 概念 Mail Exchange,邮件交换记录 作用 将一个网域的电子邮件定向到托管该网域用户账号的服务器 设置 一个网域可定义多条 MX 记录,每条记录有不同的优先级。 如果邮件通过最高优先级记录无法递送,则采用第二优先级,以此类推 TXT 记录 作用 为网域之外的来源提供文本信息的一种 DNS 记录 文本类型 人工可读文本 机器可读文本 CNAME 记录 规范名称记录 作用 将一个别名关联到另一个真正的或规范的域名 A 记录 地址记录(主机记录),Address 作用 将一个域名关联到托管该网域服务的计算机的物理 IP NS 记录 作用 用于确定哪些服务器为一个网域传达 DNS 信息 网域通常有主要的和辅助的域名服务器记录 TTL 生存时间,Time To Live 作用 决定对该记录所做的后续更改需要多少秒才会生效 推荐值 3600(即 1 个小时) 让整个互联网中的服务器每小时检查一次该记录的更新情况 原因 较短的 TTL 在之前的有效期到期后才会生效 若想快速还原一项更改,则可设置较短的 TTL 值(如 300,5 分钟)...

2018-01-25 14:46:04 · 1 分钟 · 84 字

linux发行版理解

linux 作为开源系统,有着众多的发行版本(毕竟有着庞大的社区和狂热的爱好者),不同的发行版本(Linux Distribution)随着发展,在使用方式上也有一些不同,例如各自的包管理器、已经适用场景等等。借此整理一下 linux 的不同发行版本,以便在使用不同版 linux 时不至混乱。 大致分类 商业发行版 Ubuntu(Canonical 公司) Fedora(RedHat) openSUSE(Novell) Mandriva Linux 社区发行版 Debian Gentoo 既不是商业发行版也不是社区发行版 Linux Distrubutions Linux 桌面发行版组成 Linux 内核 GNU 工具&库 附加软件、文档 窗口系统 窗口管理器 桌面环境 开源软件包 二进制可执行文件 源代码发布方式(支持修改和重新编译) 定制发行版镜像 Gentoo Linux 内核 T2 Linux From Scratch 提供: 所有软件的源代码 基本内核 编译器 定制工具 安装工具 软件包管理系统 发行版通常被分区成软件包,每个软件包包含一个特定的软件或服务 软件包 软件包通常是已编译的机器码,由软件包管理器安装和卸载 软件包组成 元数据:软件描述、版本、依赖(提供给软件包管理器以使用元数据进行搜索、自动更新到最新版本、自动解决依赖) 常见软件包格式 deb——Debian rpm——Fedora(Red Hat) 流行的发行版 基于 Dpkg(Debian 系) 商业发行版 Ubuntu(流行的桌面发行版,由 Canonical 维护) 社区发行版 Debian(强烈信奉自由软件,由志愿者维护) Kubuntu(使用 KDE 桌面的 Ubuntu) Linux Mint(由 Ubuntu 派生,与 Ubuntu 兼容) OpenGEU(Ubuntu 派生) Elementary OS(基于 Ubuntu,形似 Mac OS X) gOS 及其他 基于 RPM(Red Hat 系) 商业发行版 Red Hat Enterprise Linux(Fedora 的商业版,由 Red Hat 维护) Mandriva(最初派生自 Red Hat,现由法国同名公司维护) openSUSE(最初由 Slackware 分离出,现由 Novell 维护) 社区发行版 Fedora(Red Hat 社区版,会引入新特性测试) PCLinuxOS(Mandriva 派生版) CentOS(Red Hat 发展而来,由志愿者维护,旨在提供开源,与 Red Hat 完全兼容) 基于其他包格式 ArchLinux(基于 KISS——Keep It Simple and Stupid 的滚动更新的操作系统) Chakra(由 ArchLinux 派生,只是用 KDE 桌面的半滚动更新发行版) Gentoo(面向高级用户,所有软件源代码需自行编译) Slackware(最早发行版之一,1993 年创建,由Patrick Volkerding维护) 参考链接...

2018-01-25 10:51:20 · 1 分钟 · 141 字

谷歌机器学习开源框架Tensorflow安装相关

关于安装 TensorFlow 的一系列准备 前期准备 tensorflow 官方推荐安装是通过 pip 安装的,先来看看 pip 是什么 pip 本质 包安装器 类似工具 linux 的 rpm(RPM Package Manager,递归写法,类似于 GNU——GNU’s Not Unix) nodejs 的 npm(node package manager) java 的 Maven(严谨来说,PyPI 相当于 Maven,包社区) Conda(由 Python 编写,语言无关的跨平台包管理器) Anaconda(本身一个 python 数据科学平台,同时是一个平台无关的包管理器、环境管理器) 名称解释 pip 的解释应该是 Python Install Package 或者 Package Index for Python(个人猜测,暂未找到官方解释) 因为通过 pip 为 python 安装包时的用法是 pip install some-package 具体行为 去 PyPI(Python Package Index)下载相关包 安装 预安装情况 装有大于等于 2.7.9 或 3.4 版本的 python,已预装...

2018-01-25 10:17:43 · 1 分钟 · 166 字

虚拟机vmware使用——安装vmware-tools

每次安装虚拟机都忘记怎么安装 vmware tools,而不安装这个东西,用起来总是各种蹩脚,故做此整理。 背景 虚拟机屏幕不能自适应大小,虽然 vmware 有相关设置,但貌似不能符合使用要求,因此仍需要安装 vmware tools(感觉甚至像一个补丁)来完善 vmware 的使用,比如与宿主机的文件传输等。 安装前提 VMware Tools 使用 Perl 编写,所以需要装有 Perl 操作步骤(以 Ubuntu 为例) 从 VMware 菜单栏中选择“安装 VMware Tools” 找到 VMware Tools 安装文件(后缀为 tar.gz 的压缩文件) 打开终端,切换至 root 用户 sudo su 检查是否自动装载 VMware Tools 虚拟 CD-ROM 映像 若已装载 CD-ROM 设备,则列出 CD-ROM 设备及其装载点 mount df 若未装载,则需安装 CD-ROM 驱动器 检查装载点目录 可能在/mnt/cdrom 或/media/VMware Tools(例如本例) 若不存在装载点目录则创建 mkdir /mnt/cdrom 装载 CD-ROM 驱动器 mount /dev/cdrom /mnt/cdrom 某些 Linux 发行版使用不同的设备名称,或以不同的方式组织/dev 目录,若 CD-ROM 驱动器不是/dev/cdrom 或 CD-ROM 装载点不是/mnt/cdrom,则需根据实际情况进行装载...

2018-01-25 09:59:50 · 1 分钟 · 110 字

设计模式学习笔记(下)

继设计模式学习笔记(上) 15 抽象工厂模式 场景 不同数据库在 SQL 的具体实现上有差距,若存在系统中使用 SQL 语句上过多的使用专门的某种数据库的 SQL 语句,在迁移数据库时,会导致很多 SQL 在新的数据库中不能运行。 解决 使用原生 SQL 语句 实例 class User { private int _id; public int ID { get { return _id; } set { _id = value; } } private string _name;; public string Name { get { return _name; } set { _name = value; } } } 模式解释 工厂方法模式是定义一个用于创建对象的接口,让子类决定实例化哪一个类 效果 由于多态的存在,声明 User 接口的对象事先不知道在访问哪个数据库,却可以在运行时正常,达到业务逻辑与数据访问解耦 抽象工厂模式 提供一个创建一系列相关或相互依赖对象的接口,而无需指定具体的类 实际使用步骤 先通过抽象工厂创建一个具体工厂,再通过具体工厂生产特定实现的产品对象...

2018-01-24 15:56:32 · 1 分钟 · 211 字

设计模式学习笔记(上)

关于 Java 设计模式的学习 继承 两个类之间是 is-a 的关系可以考虑用继承 而两个类之间是 has-a,表示某个角色具有某一项责任,不适合用继承 例如:飞机场有飞机,但是飞机不能去继承飞机场 多态 多态表示不同的对象可以执行相同的动作,但要通过它们自己的实现代码来执行 特点:(子替父演戏实例) 子类以父类身份出现 子类在工作时以自己的方式实现 子类以父类身份出现时,子类特有的属性和方法不可以使用 多态原理 当方法被调用时,无论对象是否被转换成其父类,都只有位于对象继承最末端的方法实现会被调用。 即父类的抽象方法是按照其运行时类型而非编译时类型进行动态绑定调用的 抽象类 不能实例化 抽象方法必须被子类重写 若类包含抽象方法,则类必须定义为抽象类 总结:抽象类代表一个抽象概念,它提供一个继承的出发点,当设计一个新的抽象类时,一定是用来继承的。 在一个继承关系树里,树叶节点应为具体类,树枝节点均应为抽象类。 例如:动物是抽象类,猫是具体类,而当猫划分品种时,比如包含金丝猫和其他品种,那猫应该是树枝,也应是抽象类。 接口 接口是把隐式公共方法和属性组合起来,以封装特定功能的一个集合。 一旦类实现了接口,类就可以支持接口所指定的所有属性和成员。 声明接口在语法上与声明抽象类完全相同,但不允许提供接口中任何成员的执行方式(没有具体实现) 所以接口不能实例化、不能有构造方法和字段、不能有修饰符、不能声明为抽象的或静态的 实现接口的类必须实现接口中所有方法和属性 区分抽象类和接口 抽象 类是对对象的抽象 抽象类是对类的抽象 接口是对行为的抽象 对象是否有相似关联 若行为跨越不同类的对象,可使用接口 对于相似的类对象,用继承抽象类 设计角度 抽象类是从子类中发现了公共的东西,泛化出父类,然后子类继承父类 接口根本不知道子类的存在,方法如何实现不确认,预先定义 通过重构改善既有代码的设计 所有抽象类往往通过重构得来 面向对象设计(OOD) 可维护 可复用 可拓展 灵活性好 UML 关联 聚合(弱拥有):A 对象可以包含 B 对象,但 B 对象不是 A 对象的一部分 组合(强拥有):严格的整体与部分的关系 依赖 简单工厂 用单独的类考虑创造实例的过程 策略模式 官方定义 它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。 解释 所有的算法完成相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少了各种算法类与使用算法类之间的耦合。 优势 另外策略模式简化了单元测试,因为每个算法有独立的类,可以通过自己的接口单独测试。...

2018-01-24 15:53:31 · 2 分钟 · 219 字

从输入网址到浏览器呈现内容期间发生的事情

探析浏览器访问站点这一行为背后的具体行为。 浏览器地址栏输入网址www.coder.com 浏览器发送一个 UDP 包给 DNS 服务器 DNS 服务器返回 coder.com 的 IP (optional)浏览器将该 IP 缓存起来,以提高下次访问速度(Chrome 通过 chrome://net-internals/#dns 查看) 浏览器利用获取到的 IP 发起 HTTP 请求,但是 HTTP Request/Response 必须在 TCP 这个“虚拟的连接”上发送和接收 建立“虚拟的”TCP 连接需要本机 IP、本机端口、服务器 IP、服务器端口 本机端口由操作系统给浏览器随机分配 服务器端口使用相应服务的端口,例如 HTTP 服务:80 三次握手后,客户端与服务器建立 TCP 连接 一个 HTTP GET 请求经过多个路由器转发,达到服务器端(HTTP 数据包可能被下层分片传输) web 服务器处理请求(三种方式) 用一个线程处理所有请求,但同一时刻只能处理一个,性能问题严重 为每个请求分配一个进程/线程,但当连接太多时,服务器端的进程/线程耗费大量内存资源,进程/线程切换导致 CPU 不堪重负 复用 I/O:众多 Web 服务器采用复用结构,例如通过 epoll 方式监视所有连接,当连接状态发生变化(如有数据可读),才用一个进程/线程对该连接进行处理,处理完继续监视,等待下次变化。该方式可用少量进程/线程应对大量的连接请求 以 Nginx 为例,对于 HTTP GET 请求,Nginx 利用 epoll 方式读取出来,Nginx 判断该请求是静态 or 动态 若为静态(HTML、JavaScript、CSS、图片等),依赖于 Nginx 配置,可能转发到其他缓存服务器,可能读取本机硬盘上相关文件直接返回...

2018-01-24 09:49:03 · 1 分钟 · 206 字

使用vmware安装macOS

虽然类似这样的文章网上一搜一大把,但应 youngwa 邀,还是决定重新整理一下个人安装的详细流程及相关资源链接,以备后用。 资源准备 macOS 系统镜像 8G 左右 cdr 后缀 点击下载 vmware 推荐版本 12(自行安装) vmware 补丁(用于添加 macOS 类镜像)点击下载 操作步骤 下载以上三个资源 安装 VMware 安装补丁,补充 VMware 关于镜像类型的选择(若不安装补丁,则没有 macOS 镜像的选项),安装 unlock,右击使用管理员权限打开 win-install.cmd 新建虚拟机,选择 macOS 类型镜像,并做相应配置 配置好后打开虚拟机的 vmx 文件,手动修改配置(搜索 smc)在 smc.present = “TRUE"后添加一行 smc.version = 0 启动虚拟机进行系统安装 完成即可(历时一个小时左右,视宿主机内存及硬盘配置而定) 注意事项 需要理解 linux 分区概念(不理解也可以将虚拟机分配的全部空间用作一个分区,在实用工具选项中选择磁盘工具,设置后关闭,进行系统安装) 注意点 安装 macOS 和安装其他系统镜像类型的虚拟机没什么大的区别,主要在于以下几点: 为 VMware 安装补丁,拓展镜像类型(实用 unlock) 修改 vmx,虚拟机配置文件,添加 smc.version = 0

2018-01-23 12:04:14 · 1 分钟 · 61 字

linux忘记密码

这算不上一篇博客,只是不想再重复在解决这个问题上花费时间。另外对于解决方案的原理有待深究。 核心操作 进入GRUB修改 kernel 镜像启动参数 具体步骤 启动系统时长按 shift,进入 GRUB 引导模式 进入高级模式 选择恢复模式(recovery mode)按 E 键(这里最容易错,是按 e 键编辑启动项,而不是按回车进入) 找到 recovery nomodeset 改为 quiet splash rw init=/bin/bash(挂载硬盘为可读写模式) 按 Ctrl+x 或 F10 进行引导 进入 root@(none):/# 输入 passwd 进行 root 的密码设置 重启 Tip:此方案用于解决 root 密码重置,但如果是 ubuntu,默认是以普通用户登录或游客访问,在登录界面是看不到 root 用户的入口,需要登录普通用户需要 sudo su 来切换 root,但如果普通用户忘记密码,就进不到这一步,这时解决方案则是在第 7 步为 passwd 加上参数,即要设置密码的用户名 参考 https://books.google.com/books?id=X3tZDgAAQBAJ&pg=PA191&lpg=PA191&dq=recovery+nomodeset&source=bl&ots=HOI9ga8YBl&sig=J8_HlXL2v9V9BnpNpvXKoPbW2MM&hl=zh-CN&sa=X&ved=0ahUKEwjh0MWQ--zYAhVBl5QKHSfvBd0Q6AEIVDAE#v=onepage&q=recovery%20nomodeset&f=false

2018-01-23 09:48:20 · 1 分钟 · 54 字

js学习笔记——一些常用的高级属性

MSDN 学习 js 高级教程 note 构造函数 使用构造函数定义类型(type) 概念 构造函数是一个为 Object 初始化一个特定类型的函数 使用 new 关键字调用构造函数 这里有一些 js 内建对象和自定义对象的例子 var myObject = new Object(); var myBirthday = new Date(1993, 11, 12); var myCar = new Car(); 构造函数包含 this 关键字,它是对新创建的空对象的引用(reference) 它通过创建属性并为他们赋初始值来初始化新对象 构造函数将返回对所创建对象的引用 function Circle(xPoint, yPoint, radius) { this.x = xPoint; this.y = yPoint; this.radius = radius; } var aCircle = new Circle(5, 11, 99); 使用自定义构造函数创建的所有对象的类型都是 object js 只有 6 中类型:object、function、string、number、boolean、undefined typeof操作符以字符串形式返回类型信息 var index = 5; var result = typeof index === "number"; var description = "abc"; var result = typeof description === "string"; true true 为声明和未声明的变量测试 undefined 数据类型...

2018-01-20 14:11:34 · 2 分钟 · 395 字

js学习笔记——变量作用域

js 变量作用域探析 背景 var o = {}; o.fun = test(); o.fun(); function test() { var fn = function () { console.log(this); }; return fn; } {fun: ƒ} 由于对这个程序的输出结果感到不解,于是决定深入了解 js 作用域究竟是什么个东西 参考:https://msdn.microsoft.com/zh-cn/library/bzt2dkta(v=vs.94).aspx 变量作用域 又要谈到 js 的两个范围:全局和局部 函数之外声明的变量就是全局变量,可在整个程序中访问和修改 函数内声明的变量是局部变量,每当执行程序时都会创建和销毁该变量(所以称临时变量),并且无法通过函数之外的任何代码访问该变量(MSDN 如是说) js 不支持块范围(通过一组大括号定义新范围),于是就只有全局(函数外)和局部(函数内),以函数划分的这两种范围 js 范围 var aNumber = 100; tweak(); function tweak() { document.write(aNumber); if (false) { var aNumber = 123; } } undefined 虽然 if(false),var aNumber = 123 不会执行,但是 js 在执行函数 tweak()时,会查找所有变量声明,var aNumber 被扫描到,js 使用初始值undefined创建变量,即使使用一个值声明变量 var aNumber = 123,但 aNumber 变量的初始值仍为undefined,仅当执行包含声明的行(var aNumber = 123)时才会使用已声明的值。...

2018-01-20 10:53:32 · 1 分钟 · 213 字

javascript-puzzlers

关于深入理解 js 的 44 道 wired 题目,经实际验证及分析的学习笔记。 ["1", "2", "3"].map(parseInt) [1, NaN, NaN] map() map passes 3 params (element, index, array) parseInt take two parameters (val, radix) typeof null "object" null instanceof object false typeof always return “object” for native non callable objects [ [3, 2, 1].reduce(Math.pow), [].reduce(Math.pow) ] reduce on an empty array without an initial value throws TypeError array.reduce() Math.pow var val = "smtg"; console.log("Value is " + (val === "smtg") ?...

2018-01-20 09:22:05 · 8 分钟 · 1650 字

js学习笔记——this关键字

js 关键字 this 用法解析 解释 函数运行时自动生成的一个内部对象,只能在函数内部使用(想起了 Python 函数的 self) function test() { this.x = 1; } 函数使用场合不同,this 的值会发生变化 但 this 总指的是调用函数的那个对象 使用场景 纯粹函数调用(全局调用) 函数作为对象方法的调用 作为构造函数调用 apply 调用 1.纯粹函数调用 全局性调用,this 代表全局对象 Global function test() { this.x = 1; alert(this.x); } test(); 1 var x = 1; function test() { alert(this.x); } test(); 1 不会报错,因为相当于 alert(Global.x) var x = 1; function test() { this.x = 0; } test(); alert(x); 0 test()之后相当于将全局变量的 x 重新赋值 0,Global....

2018-01-19 18:22:06 · 2 分钟 · 227 字