- 博客(189)
- 资源 (14)
- 收藏
- 关注
原创 GPL3.0协议人话简介版
如果没有专利许可,在你分发受GPL3保护的作品时,如果你明知这个作品依赖某个专利,而且这个专利对应的源码并不是任何能都能免费从公开网站或其他很容易方式获取,那么你必须提供该源码,至于是否侵权,取决于接收者怎么使用了;4. (不修改源代码)和GPL2.0第一条一致,在不修改本程序的情况下,在收到本程序源码之后,你可以通过任何媒介,复制和分发该程序源码的逐字副本,但你需要把本协议和程序源代码一起发给接收者。2)本程序的输出不受GPL保护,除非本程序得到的输出就是本程序或本程序的修改版。
2024-01-06 11:23:44 4485
原创 GPL2.0人话版
1. (不改源代码)在收到本程序源码之后,你可以通过任何媒介,复制和分发该程序源码的逐字副本(不修改源程序),但你需要把本协议和程序源代码一起发给接收者。简而言之,你收到GPL2.0协议下的程序,可以一字不改的转给其他人,但必需把本协议一起带上,转让过程可以收费。7. (与专利或产权不冲突)如果法院判决或专利指控等原因,不允许你在本协议下分发本程序,那你不能分发该程序。如果你要分发,则必须满足本许可协议。5. (协议自动生效)你不接受本协议,则不能修改或分发本程序,否则视为接受本许可协议。
2024-01-05 14:14:07 1021
原创 正确关闭从服务
以root用户登录MySQL从数据库,按顺序执行下面语句:STOP SLAVE;RESET SLAVE;SHOW SLAVE STATUS;CHANGE MASTER TO master_user="", master_host=" ", master_password="";第一行的意思是关掉Slave SQL进程,使Slave_SQL_Running为No。 第二行的意思是关掉Slave IO进程,使Slave_IO_Running为No,不再从主服务器读取日志。 第三方是检查SLA
2021-07-01 21:48:25 403
原创 Mac 每次都要执行source ~/.bash_profile
最近碰到了这个问题,搜了很多资料,都是千篇一律的说是修改.zshrc,但其实,最有可能的是修改~/.profile,在~/.profile中添加source ~/.bash_profile关掉Termianl,然后重新打开,就可以了。...
2019-06-25 21:54:06 9896 4
原创 发布Artifact到Maven中央仓库
1. 在GitHub上创建仓库,提交代码2. 使用Github账号登录Travis CI平台,执行构建操作(optional)要执行这一步,需要在源代码中再添加一个.travis.yml配置文件,具体参考:https://docs.travis-ci.com/user/getting-started/理论上每次提交代码都会执行Build,所以不需要手动触发,我的实例:https://t...
2018-09-28 17:56:03 1315
原创 Spring Boot Web启动流程
1. 配置Beans源。2. 推测是否是Web环境(只有环境中同时有Servlet和ConfigurableWebApplicationContext才能算是Web环境)。3. 寻找ApplicationContextInitializer接口的实现类,并生成实例,然后按@Order排序。4. 寻找ApplicationListe
2017-12-26 10:40:13 1709
原创 创建单节点Hadoop集群
1 安装JDK首先,你得先确认机器是否已经安装了JDK,如果没有安装,则需要安装,以Ubuntu-16.04为例,:$ sudo apt-get installdefault-jdk用java –version,发现系统提示我装的是JDK1.8,默认装到了/usr/lib/jvm/java-8-openjdk-amd64。https://www.digitaloce
2017-12-22 19:02:15 731
原创 HTTPS原理以及Java实现
HTTPS协议是HTTP协议和SSL协议的结合体,使用HTTPS发送数据意味着消息首先经过SSL加密,然后通过HTTP协议转发,最后再由接收方的SSL解密。都知道SSL/TLS使用了非对称加密(RAS或DSA),但非对称加密是很复杂而且很慢的。所以在实际中,客户端拿到第三方CertificateAuthority提供的数字证书(包含公钥),解出公钥之后并不是直接用公钥对数据做非对称加密。而是利
2017-12-07 17:05:54 6037
原创 Gradle项目树
在多项目构建中,项目的结构用树结构表示。初始化阶段,settings.gradle负责创建一棵由一系列ProjectDescriptor组成的项目树,当这棵树组装完毕,接着Gradle就根据这棵由ProjectDescriptors组成的项目树再创建一个由一系列Project对象组成的项目树。也就是说,在初始化阶段,我们在settings.gradle中操作的是ProjectDescriptor,
2017-01-18 17:38:23 1821
原创 Gradle生命周期
Gradle与Maven有一个很大的区别是Gradle构建生命周期分三个阶段:初始化阶段:负责判断有多少个Projects参与构建。配置阶段:负责对初始化阶段创建的Projects完成配置。执行阶段:根据配置阶段的配置执行任务。初始化阶段构建初始化阶段首先寻找一个叫settings.gradle的文件,检查是否当前构建是否是多项目构建,并负责创建项目树。在多项目构建中,settings.gradl
2017-01-18 17:04:24 3075
原创 React Native遇见的几个坑
1. 环境变量配置解决办法:配置ANDROID_HOME,和JAVA_HOME。安装Android SDK,并安装Build Tool 23.0.1,最好把所有版本装上,因为将来使用的插件可能依赖的版本是不一样的。2. 执行cd android && ./gradlew assembleRelease任务错误* What went wrong:Execution failed for task '
2017-01-15 15:04:19 9985 1
原创 UUID笔记
全称为:Universally Unique IDentifier,或Globally Unique IdentifierURN: 全称为Uniform Resource NameUUID特征长度为128 bits,其中包含了一个时间字段(可记录到3400年)。不需要集中注册,也就是不需要集中授权就可以管理他们。UUID是唯一的,不随时间变化,而且是可持久化的,因此很适合把UUID作为URN。UU
2016-12-18 16:53:52 1048
原创 自定义枚举以及如何在反射中获取枚举值
枚举也是类,在定义枚举的时候,其实是定义了一个枚举集合,然后在这个集合中包含一些列枚举值。比如性别可以是一个枚举集合,可能中包含男性、女性等枚举值。定义枚举集合以性别这个枚举集合为例,先来定义两个枚举值,分别为MALE和FEMALE:publicenum Gender { MALE, FEMALE}JAVA编译器会把这MALE和FEMALE转成两个枚举值。枚举类-Enum(name,
2016-06-13 10:16:43 22528 1
原创 CSS3 Flex计算逻辑
Flex样式Flex: flex-grow | flex-shrink | flex-basisflex-grow:纯数字,表示增长因子。默认值为0,表示按元素的原大小显示。 flex-shrink:纯数字,表示收缩因子。默认值是1,如果是0则按原始大小显示。当屏幕或容器变小时,不同元素的收缩比例可能与容器变大的逻辑是不一样的,所以会有这个属性。 flex-basis:表示flex-i...
2016-06-10 21:08:18 4344 2
原创 RegExp在IE8等浏览器中的兼容性问题
这里讲的兼容性问题主要指String的API在正则表达式的处理上不同。匹配结果的兼容性第一个问题:在IE",,ab,,".split(","); // output ["","","ab","",""]",,ab,,".split(/,/); // output ["ab"]第二个问题:正则表达式中可能有分组,但是这个分组可能并没有参与(也就是没有匹配到任何子字符串)。关于这个分组的结果:IE"
2016-05-12 18:28:12 12420
原创 J2EE常见路径处理
资源路径File(path)对于UNIX操作系统,绝对路径总是以”/”开头,相对路径没有前缀;对于Windows操作系统,绝对路径格式是”盘符:\\path”,Windows UNC绝对路径的的前缀是”\\\\”。如果path是相对路径,文件的绝对路径部分从user.dir系统属性获取。比如如果user.dir的值是:c:/Users/workspace/projectDemo,那么File("p
2016-04-29 11:15:53 7181 1
原创 git reset与git revert比较
git resetgit reset的作用是还原Index的状态或修改本地分支HEAD的位置。这个命令适合用于从某个提交点重新开新的分支。比如,如果某个提交之后的代码我们都不要了,就可以在本地reset至指定commit,然后开一个新的branch继续新的开发(原来分支在远程上没有发生任何变化的)。使用git reset是不影响远程分支的,一切都在本地发生。如果回退需要很快影响远程分支的,应该使用
2016-04-11 15:30:20 11146
原创 详解window.history
Window.history保存用户在一个会话期间的网站访问记录,用户每次访问一个新的URL即创建一个新的历史记录。history.go()、history.back()、history.forward()history.back()和history.forward()分别表示向后一页和向前一页。history.go(num)表示向前或向后翻多少页,num为正数表示向前翻,为负数则向后翻。Hist
2016-04-06 15:32:33 24638 1
原创 Angular Scope解析与应用
Scope层级结构顶层服务对象$rootScope来源于ng模块,由$RootScopeProvider提供。因为ng模块是angular.bootstrap()执行时依赖的模块,所以在整个应用中都可以通过$rootScope引用,而且在这个应用中是唯一的。但唯一性仅限于单个应用内,因为服务都存在注入器中,而每个bootstrap应用有自己的注入器,所以,$rootScope作为一个服务,在不同的
2016-04-06 10:50:10 4717
原创 归并排序-迭代法与递归法
注意:这个方法不改变原数组,而是生成一个新的数组。Array.prototype.mergeSort = function(fun/*, thisArg*/) { 'use strict'; if (this === void 0 || this === null) { throw new TypeError(); } if (fun && typeof fun !==
2016-03-28 15:34:42 1809
原创 AngularJS模块详解
在angular中,模块可以是一个对象、一个方法或一个数组(数组的最后一个元素必须是方法)。后面要讲的模块属性和方法,都是针对通过angular.module()方法定义的模块而言的,我称之为angular模块。通过angular.module()方法定义的模块是唯一的,如果重复定义,后面的就会覆盖前面的定义。不是通过angular.module()定义的模块,比如一个方法或一个数组,这些模块也是
2016-03-23 13:54:59 13042
原创 泛型
泛型没有泛型之前有以下两个问题:l 从聚集(collection)中取出一个元素,必须把这个元素转换为具体类型。l 插入元素时,编译器不检查你插入的对象的类型与聚集中元素的类型是否相同。泛型的作用就是告诉编译器你希望聚集中的元素是什么类型,这样编译器就可以在编译阶段帮你检查你准备插入聚集的元素类型是否正确;或从聚集中取出元素时元素不需要强制转换,因为编译器已经知道聚集中的元素类型。泛型定义所谓
2016-01-20 17:19:01 2556 3
原创 Requirejs常用配置和应用
requirejs、require方法冲突如果加载了多个requirejs脚本,每个requirejs会判断是否浏览器已经实现了require和define方法。如果浏览器已经自带require和define方法,或者之前已经有一个requirejs脚本执行,那么这个requirejs就会立刻停止执行。所以,即使页面上加载了多次requirejs脚本也不会有什么问题。配置Context我把cont
2016-01-08 10:41:34 14113 1
原创 易混HTML Entities与正确使用方法
在页面上,表示HTML实体有多种方式,比如有“&+name;”、“&#+10进制ID”、“&#x+16进制ID”。而“\u+16进制”一般用于CSS的content样式属性。空字符 – null空字符:\u0000空白 – whitespace空字符表示没有字符,不占页面物理位置,空白是有物理位置的。空白包括空格、制表符、回车符和换行符。空格-space: , ,\u0020;不间
2015-12-22 15:58:43 3643
原创 元素转换-Transform
所谓元素转换,其实就是对元素的坐标在二维或三维空间上做矩阵换算。根据换算的结果,又分成了多种转换类型。但无论是哪一种,都不影响元素在页面上的物理空间,只改变元素的视觉效果。也就是说,比如元素缩放、旋转都不影响周围其他元素的布局。有些开发者喜欢用平移做元素居中效果,其实非常不妥,因为元素原来的物理空间还在那里,控制起来不轻松。另外,转换属性(transform)只有一个,因此,转换类型不能叠加。也就
2015-12-21 18:22:41 3686
原创 元素绘制顺序
元素绘制顺序,顾名思义,即浏览器创建和布局元素的顺序,包括时间和空间顺序。层叠上下文HTML元素大多是二维的,所谓层叠上下文是指当多个元素在二维空间重叠时,如何在一个三维的空间上确定各元素的位置。形成层叠上下文的元素就会有一个三维坐标,这个第三维的坐标值受z-index的影响,但这个三维坐标的值并不一定等于z-index的值。需要注意,HTML元素大部分是流式布局的(从上到下),元素之间并没有重叠
2015-12-18 17:08:27 2175
原创 Spring文件上传
因为文件上传这样的工作一般来说是开发人员自定的,所以Spring默认是不处理multipart请求的。但Spring为multipart做了些通用的支持性工作。Form元素Form元素的enctype必须是multipart/form-data。ConfigurationMultipartResolver处理multipart请求需要一个MultipartResolver:bean id="mul
2015-09-02 12:13:22 2283
原创 元素样式控制
样式的优先级样式属性通过四种方式可以被添加,他们的优先级从高到低依次为:1. Inline Styles;2. Style Sheet Rules;3. HTML Attributes(比如fill,height, width等);4. HTML标签默认定义;通用Element.styleElement.style操作的是元素的styleat
2015-07-28 16:57:13 1821 1
原创 异步模块定义AMD
全称为Asynchronous Module Definition,异步组件(或模块)定义。AMD是一种机制,使用这种机制,组件和它的依赖就可以实现异步加载。Define方法define(id?, dependencies?, factory);组件ID组件ID是组件的唯一标识符,在和组件ID一对一的脚本文件(一个脚本文件中只有一个define)中这个ID可以没有,而且最好没有。这是因为组件加载器
2015-06-10 17:47:16 4753
原创 CommonJS简介及模块标准
JavaScript早期主要用于基于浏览器的应用,随着NodeJS的应用,JavaScript被大量应用于服务端应用。但因为客户端和服务端的不同,需要写多份不同的代码以适应客户端和服务端的不同。CommonJS是一种思想,它的终极目标是使应用程序开发者根据CommonJS API编写的JavaScript应用可以在不同的JavaScript解析器和HOST环境上运行。目前,有四大平台支持Commo
2015-06-03 16:11:08 13531
原创 jQuery Callbacks应用关键点
Callbacks是jQuery 1.7引入的方法,用于管理一系列使用相同参数的回调函数。所有回调函数(以下简称回调)保存在一个数组中,可以重复调用。其本质相当于一个回调函数列(List),因此可以做添加、删除、清空回调函数等操作。生成回调列(Callbacks)var callbacks = $.Callbacks();回调执行顺序回调保存在数组中,然后通过for循环遍历,所以列中的回调按照被添
2015-05-28 15:59:23 4377 1
原创 Git常用命令
仓库1. 克隆一个远程repository到本地HTTP的方式: git clone https://github.com/linus87/GitTest.gitSSH的方式:git clonegit@github.com:linus87/GitTest.gitGit Read-Only的方式: gitclone git://github.com/linus87/GitTest.git一
2015-05-08 09:30:35 2587
原创 JavaScript Date全解
Date构造函数New Date() | Date()没有参数默认就是系统当前时区的时间,结果:Sat Apr11 2015 16:42:09 GMT+0800 (China Standard Time)生成代表当前系统的时间,不用new也可以生成,Date本身就是个方法。New Date(milliseconds)这个毫秒参数是从1970-01-01 00:00:00到现在所经过的时间。New
2015-05-07 09:04:46 3820
原创 Web应用设置Context Path的方式
URL:http://hostname.com/contextPath/servletPath/pathInfoJetty如果没有contextPath,则默认使用root上下文,root上下文的路径为"/"。warName.war在没有XML IoC文件的情况下:如果WAR文件名是myapp.war,那么上下文路径是:/myapp;如果WAR文件名是ROOT.war,那么上下文路径是:/;如果W
2015-04-30 10:10:21 52033 3
原创 前端跨域数据访问
术语同源请求URL拥有相同protocol、host、port。参考Table 1 同源举例。用户认证(User Credential)在CORS中,用户认证指cookies, HTTP基本认证,客户端SSL认证。不指代理端的认证或Origin头。缺乏用户认证是指响应中不包含cookie,而且请求中不包含HTTP认证和SSL证书。简单方法(Simple method)指的是GET, HEAD, P
2015-04-26 22:20:42 5113 1
原创 鼠标事件比较与鼠标位置
Mouseenter和mouseover的区别这两个都是鼠标移入元素内部时触发,它们的区别是mouseenter事件没有冒泡阶段,而mouseover事件则有冒泡阶段,这是第一个区别。第二个区别是触发的几率不一样:鼠标从元素外进入元素内,一定会触发mouseenter,但不一定触发mouseover。因为mouseover只有当元素有空间被鼠标直接接触到才能触发。即使同时触发,它们的先后顺序在不同
2015-04-24 09:41:23 10988 2
原创 HTML焦点与键盘事件
所谓焦点就是用户当前正在操作的对象,可以是某个元素,也可能是某个浏览器中的tab或window。比如用鼠标点击输入框,那么输入框就会成为焦点。使用键盘上的Tab键,又可以把焦点转移到另外一个元素或浏览器的其他区域。通过鼠标和键盘都可以转移焦点,甚至编辑焦点元素。焦点元素同一时间一个document只能有一个元素成为焦点,这个焦点元素可以使用JavaScript访问:document.activeE
2015-04-20 16:46:50 19778
原创 垂直居中的几种方法比较(纯CSS)
方法一 content .table {display:table;}.table-cell {display:table-cell; vertical-align:middle;}优点:content 可以动态改变高度,如果你不需要支持IE7浏览器,这个应该是首选方案,也是W3C推荐的方案。缺点:IE7和IE8 beta不支持。方法二Content#content { p
2015-04-19 22:44:32 2496 5
J2SE 1.5 API CHM
2016-01-26
HIbernateSynchronizer
2009-02-22
注册表大全(最优注册表学习教材)
2008-12-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人