每次Commit一大堆Modify
和Xcode工程不一样,Java工程貌似每次Commit的时候会把编译的临时文件也进行commit
这样大家就没法协作了 因为每个机器生成的不一样,所以不能提交除了源代码和工程文件以外的文件
我不知道Xcode的工程怎么做到的,反正Java里可以通过写gitignore文件忽略掉这些文件
1 | #folder |
以上代表屏蔽掉target目录里的东西以及各种格式的文件夹
和Xcode工程不一样,Java工程貌似每次Commit的时候会把编译的临时文件也进行commit
这样大家就没法协作了 因为每个机器生成的不一样,所以不能提交除了源代码和工程文件以外的文件
我不知道Xcode的工程怎么做到的,反正Java里可以通过写gitignore文件忽略掉这些文件
1 | #folder |
以上代表屏蔽掉target目录里的东西以及各种格式的文件夹
Mac 中有个软件叫ShadowsocksX十分好用,但是有个问题比较坑爹就是命令行下无法使用,即使开了全局模式也不行
该文章在10.12.2的系统里已经失效,请参考MacOS 10.12 终端命令行下使用Shadowsocks
在以往多很多教程里都推荐使用proxychains-ng在命令行里做代理,从而达到科学上网的效果,但是在Mac 10.11之后Apple 推出了一个叫 System Integrity Protection 的功能,会导致代理失效
好多解决方式是进入Recovery模式下关掉这个安全措施
但是这个方法总感觉有点坑爹
Mac中还有可以根据App设置代理的软件叫Proxifier,去网上下个可用版本然后进行如下配置
添加本地端口1080的代理,因为ShadowsocksX启动的Shadowsocks服务在此端口
对需要走Shadowsocks的Application让其使用上一步1080端口的代理,然后让ShadowsocksX本身走Direct直接链接
然后在DNS里配置强制远程解析DNS (这点很重要!!一定要改)
如上图所示我们锁死了 Google Photos Backup 和 Terminal 这两个应用走1080端口是没问题,如果不对App加以限制的时候,就回造成任何流量都走1080端口,会造成死锁
1 |
|
软件本身在出现这种情况的时候也会提示你进行添加
我们根据文章
可以得知JSP作为一种动态网页技术是可以对服务器上实际的静态资源地址做映射的,且在Web技术中不同文件的相对路径寻址机制不同
为了解决在JSP的寻址问题,可以通过JSP标签设置一个全局变量 ctx 作为该Web服务的根目录参考点,
通常和jstl核心标签放在一起,被所有文件加载
1 | <%-- jstl核心标签 --%> |
假设在Tomcat服务器的webapps目录下存在project.war,此时
${ctx} = /project
使用该目录左右参考点,不管Servlet中和mvc:resources中如何映射,都能找到确定的地址 相当于使用绝对路径寻址
1 | <script src="${ctx}/js/util/bug-util.js"></script> <====JSP中的书写样式 |
假设访问地址
1 | www.int.com/html/page |
可以访问到page.html文件,而在page.html文件中进行了加载CSS文件和JS文件
1 | <link href="../css/style.css" rel="stylesheet" /> |
CSS文件中引用了图片image01
1 | .icon { |
JS文件中进行了相对路径跳转
1 | location.herf = "../index.html" |
先说结论 JS文件的相对路径是以其宿主文件(html)为准的,而CSS是以自己为准的 根据以上假设,util.js文件的宿主是page.html,那么可以总结出下表
表格结论
通常我们为a标签增加href属性,一般有两个目的:
如果我们不想让点击a标签的时候界面产生移动,以及想让他具有cursor:pointer属性怎么办,于是就是使用伪协议
“javascript:” 该字符串代表高速浏览器之后的都是JS代码,而直接紧跟 “;” 就是代表JS里的代码结束,也就是不执行任何逻辑
1 | <a href="#"></a> |
第1种,点击这个链接后,会让页面跳到页面顶部,在location.href后面增加#号。
第2种,点击这个链接后, 如果页面里面有id为none的元素,会执行锚点机制跳转到这个元素上缘。
第3种,不跳转,可以阻止默认的跳转行为,但是这个在后端代码中容易识别成注释,后面的代码不显示,之前遇到过这种坑,之后再没用过。
后面几种使用了javascript伪协议
参考文章DOM对象中的Node和Element的区别可以知道DOM中分为Node和Element,所以说
firstChild是取第一个Node,firstElementChild是取第一个Element
根据JS中DOM对象的描述,DOM内部分为Node和Element,并且放入了两个不同的数组 childNodes 和 children
1 | ...... |
只要是有字符空间存在(哪怕是空字符)就是Node,带有<>标签标记的才是Element,Node里包括Element
假设存在一个DOM对象,它有几个Node和几个Element呢
1 | <div> |
所以说div的各种属性是
标签 | childElementCount | childNodes | children |
---|---|---|---|
div | 1 | NodeList[3] | HTMLCollection[1] |
所以说span的各种属性是
标签 | childElementCount | childNodes | children |
---|---|---|---|
span | 0 | NodeList[1] | HTMLCollection[0] |
DOM对象是JavaScript源生提供对HTML的DOM进行模型化的一个对象,JQuery对象是对该对象进行了封装,并且添加了JQuery方法等
DOM对象是一个及其复杂的对象,其详细描述了该HTML的状态,摘取一部分如下
1 | accessKey:"" |
JQuery对象是由一组DOM对象和若干JQuery信息和方法组成的,因为在使用JQuery选择器的时候可以选择出一组的DOM而不是一个
1 | JQueryObject:init[2] |
由于DOM对象被包在JQuery中,所以两种转换方式将一个JQuery对象转换成DOM对象:[index]和.get(index)
1 | var DOM = $("div#id")[0] |
一个DOM对象,只需要用$()把DOM对象包装起来,就可以获得一个JQuery对象从而使用JQuery方法
相当于拿DOM对象初始化了一个JQuery对象
1 | var JQuery = $(DOM) |
在Java服务器中,Session是一个Java的Class, 是服务器内存中的一个概念
1 | javax.servlet.http.HttpSession; |
每一个Session是一个实例化的对象,内部有个Map可以通过键值对保存数据
参考文章 HTTP报文基本概念 可知道 Cookie是HTTP请求中的一个概念
Cookie是HTTP报文头的一部分,内部是Key-Value键值对来储存数据的
从上文得知Session和Cookie压根是两个领域的概念 那么他们之间有什么关系呢
那么问题来了 服务器如何知道我们多次操作是来自同一个用户(浏览器)的呢?
答案就是Session和Cookie两个机制共同作用,用来完成操作来源者但识别工作
此时会有两种情况,第一次请求
第二次请求
通过Session和Cookie但职能描述我们发现
也就是说
第一次请求时,Cookie中没有SessionID,服务器会生成,然后放入Response报文返回到浏览器里,之后的请求浏览器会发送带有SessionID的Cookie,所以服务器可以判断出是否来自同一来源
A: 这句话的完成表达是 “从服务器当前域下的Cookie中取出SessionID”
A: Session是服务器的概念,存在于服务器的内存中,只是其一个参数SessionID被放入了Cookie,所以说Map中的数据不会出现在HTTP报文中,只有前端拿着这个SessionID跑到服务器来,在服务器的逻辑中才能取到Session中的数据
A: 在浏览器中有个域的概念,不同的网站有不同的缓存空间,你在A网站下发送的HTTP请求,只能从自己的缓存空间里拿Cookie,拿不到B的Cookie,自然也就读不到B的SessionID,但是如果浏览器本身就被人修改过就不一定了。这里牵扯到了网络安全的基本知识,细节请自行学习。
A: Session是服务器管理HTTP链接的一个机制,和用户登录不登录没有关系,用户登录是在该机制上层业务层的一个东西,不管是否登录都有Session存在,无非是生成的Session中是否包涵的登录信息。
简单来说如果用户登录成功,生成的SessionID为11位,如果没有成功生成SessionID是10位,那么当Session返回服务端的时候,通过判断位数就可以验证用户当前是登录还是未登录的逻辑。(实际应用中并不会这么简单,SessionID的生成逻辑更复杂)
A: Session是可以自定义的,不一定使用javax.servlet.http.HttpSession,甚至和HTTP也没关系,它本身仅仅是一种状态保持逻辑,比如Spring有自己的Session类,Shiro也有自己的Session,用错甚至会引发问题
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true