[{"content":"Tomcat项目部署 部署方式 直接将项目文件放置在webapps目录下。\n/example：项目的访问路径\u0026ndash;\u0026gt;虚拟目录 可将项目打包成.war格式，然后放置本目录下，Tomcat会自动解压 配置conf/sever.xml\n在\u0026lt;Host\u0026gt;标签中配置\n\u0026lt;Context docBase=\u0026#34;C:\\example\u0026#34; path=\u0026#34;/example\u0026#34;\u0026gt; \u0026lt;!--docBase:项目存放的路径 path:虚拟目录--\u0026gt; 在conf/Catalina/localhost中创建xml文件（例如：example.xml）。\n\u0026lt;Context docBase=\u0026#34;C:\\example\u0026#34;\u0026gt; \u0026lt;!--虚拟目录：xml的文件名称(example)--\u0026gt; 项目目录简介 含静态项目和动态项目\nexample //项目根目录 |_ WEB-INF |_ web.xml //web项目核心配置文件 |_ classes //放置字节码文件的目录 |_ lib //放置依赖的jar包 ","date":"2021-04-01T20:36:13Z","permalink":"https://ICan1DO.github.io/my-blog/p/tomcat-setup-webapps/","title":"Tomcat项目部署"},{"content":"Java集合 Collection\n集合接口层级的底层。Java平台并不提供任何对Collection接口的直接实现，但是提供更加详细的对子接口的实现，诸如Set和List接口。\n//基本操作方法 size(); //返回集合中元素个数 isEmpty(); //判断集合是否为空 contains(); //是否包含某个元素 add(); //添加元素，成功返回True remove(); //移除元素 iterator(); //迭代器 hasNext(); //是有含有下一个元素，并且返回下一个元素 collection.removeAll(Collection.singleton()); //Collections.singleton是一个静态工厂方法，返回一个只包含指定元素的不可变的Set集合。例如Collections.Singleton(e)方法返回只包含元素e的Set集合，然后集合c调用removeAll方法删除c中所有元素e的实例。同样，Collections.Singleton(null)方法返回只包含元素null的Set集合，然后集合c调用removeAll方法删除c中所有null元素。 toArray(); //方法主要是作为集合和老的期望输入数组的API之间的桥梁。数组操作允许Collection中的内容被转换到一个数组中去 Set\n不能包含重复元素的集合\nSortedSet\n元素按升序排列的Set。\nHashSet\nHashSet，将其元素存储在一个哈希表中，它具有最好的性能实现；然而它不保证迭代的顺序。\nTreeSet\nTreeSet，将其元素存储在一个红黑树中，按元素的值顺序排列；本质上它比HashSet要慢。\nLinkedHashSet\nLinkedHashSet，是作为一个哈希表实现的，用链表连接这些元素，按元素的插入顺序排列。\nList\n一个有序的集合。List可以包含重复的元素，并且List中的元素是有序排列的。\nArrayList\n通常有较好的性能实现\nLinkedList\n在一定条件下提供较好的执行性能\nQueue\n是一个其元素带有先后处理顺序的集合。队列通常（但不是必需的）以一种FIFO（先进先出）的形式管理元素。\nMap\n一个将键映射到值的对象。Map不能包含重复的键；每个键最多能映射到一个值（值之间可以重复）。\nSortMap\n映射关系按键的升序排列的Map。\n","date":"2021-03-14T17:14:03Z","permalink":"https://ICan1DO.github.io/my-blog/p/java-set/","title":"Java集合"},{"content":"JavaScript基础 数据类型 原始数据类型（基本数据类型） number：数字。整数/小数/NaN（not a number） string：字符串 boolean：true/false null：false undefined：false 引用数据类型：对象 变量 var 变量名 = 初始化值;\ntypeof(变量名)：获取变量的数据类型\n类型转换 number：0或NaN为false，其他为true string：“”为false，其他为true null：false undefined：false 对象：所有对象都为true 对象 Function方法对象\n创建方式\n//形参不需要填写数据类型，返回值也可以省略 let fun1=new function(\u0026#34;a\u0026#34;,\u0026#34;b\u0026#34;,\u0026#34;alert(a+b)\u0026#34;); //第一种方式 function fun2(a,b){ alert(a+b); }; //第二种方式 let fun3=function fun(a,b){ alert(a+b); }; //第三种方式 重名及参数相同：方法重名且参数相同，方法会被覆盖。\n方法调用：方法调用只与方法的名称有关，和参数列表无关。\n传入参数：JS方法声明中有一个隐藏的内置对象（数组：arguments），封装所得的实际参数。\nArray数组对象\n创建方式\n//数组长度可变，若没有赋值，则为undefined let arr1=new Array(1,2,3); //1,2,3 let arr2=new Array(4); //,,, let arr3=[1,2,3,\u0026#34;abc\u0026#34;,true];//1,2,3,abc,true 方法\narr1.join(); //join(参数):按照指定字符串拼接数组。默认\u0026#34;,\u0026#34; arr2.push(); //push()：向数组末尾添加元素。 Data日期对象\n创建方式\nlet date=new Date();//默认美国时间格式 方法\ntoLocaleString();//toLocaleString()：转换为当地时间格式 getTime();//获取毫秒值，与1970年1月1日比较 Math数学对象\n创建方式\n不需要创建，直接使用Math.[方法名]\n方法\nMath.PI;//获取π值 Math.random();//反悔[o,1)之前的随机数 Math.round(3.14);//3 四舍五入 Math.ceil(3.14);//4 向上取整 Math.floor(3.14);//3 向下取整 RegExp正则表达式对象\n正则表达式语法\n单个字符：[]\n[a] //字符a [ab] //a或b [a-z] //任意小写字符 \\d //单个数字，同[0-9] \\w //单个单词字符，同[a-zA-z0-9] 量词字符\n? //表示出现0次或1次 * //表示出现0次或多次 + //表示出现1次或多次 {m,n} //表示 m\u0026lt;=次数\u0026lt;=n 正则表达式对象\n创建方式\nlet reg=new RegExp(\u0026#34;^\\w{6,12}$\u0026#34;); //表示6-12个字符 let reg=/^\\w{6,12}$/; 方法\nreg.test(\u0026#34;Tred0ff\u0026#34;); //测试字符串是否符合定义规则。 Global对象\n全局对象，其中封装的方法不需要对象即可直接运行。\n方法\nencodeURI();//URL编码，一般只编码汉字 decodeURI();//URL解码 encodeURICompare();//URL编码,编码的字符更多，字符也编码 decodeURICompare();//URL解码 parseInt(); //逐一判断每一个字符是否是数字，知道不是数字为止。将前面数字转行为number isNaN(); //判断传入值是否是NaN eval(); //将javascript字符串转化为代码执行 DOM Document Object Model\nDocument：文档对象\n//1. 获取Element对象 getElementById(); //通过元素ID获取Html元素 getElementByTagName(); //根据元素名称获取Html元素，返回数组[] getElementByClassName(); //根据Class属性值获取元素对象们。返回数组[] getElementByName(); //根据Name属性值获取元素对象，返回数组 //2. 创建其他DOM对象 createAttribute(); createComment(); createElement();//参数填写元素名称 createTextNode(); Element：元素对象\n//通过document对象获取和创建 setAttribute(); //设置属性 removeAttribute(); //移除属性 Node：节点对象，其他五个的父对象\n所有DOM对象都可以被人为是一个节点。\n//方法 appendChild(); //添加子节点 removeChild(); //移除子节点 replaceChild(); //替换子节点 \u0026lt;a href=\u0026#34;javascript:void(0);\u0026#34;\u0026gt;超链接\u0026lt;/a\u0026gt; //javascript:void(0); 阻止返回值 //属性 parentNode //获取当前节点的父节点 事件\n获取元素\nlet element=document.getElementById(); //通过元素ID获取Html元素 element.src=\u0026#34;img/1.jpg\u0026#34; //设置Html元素属性 事件绑定\n//1.在Html标签元素中，指定时间属性 \u0026lt;img id=\u0026#34;car\u0026#34; src=\u0026#34;img/car.jpg\u0026#34; onclick=\u0026#34;functionName\u0026#34;\u0026gt; //2.js获取标签元素，获取事件属性 element.onclick= functionName; BOM Window：浏览器窗口对象\n创建方式\nWindow对象不需要创建。直接使用window.方法名()或者方法名使用。\n方法\nalert();//弹出提示框 confirm();//弹出选择框，返回true或false prompt();//显示用户输入对话框，返回用户输入的内容 open(); //前台新建浏览器标签页，并返回window对象 close(); //关闭当前浏览器标签页 setTimeout(); //指定毫秒数后，调用函数或者表达式。参数可以是方法或者代码片段 clearTimeout(); //取消setTimeout()方法设置的Timeout setInterval(); //按照指定的周期（毫秒）调用函数计算。参数可以是方法或者代码片段 setInterval(); //取消setInterval()设置的周期 可以获取下面BOM对象\nhistory、navigator、screen、location。\n可获取下面DOM对象\ndocument\nNavigator：浏览器对象\nScreen：屏幕对象\nHistory：标签页历史记录对象\nLocation：标签页地址对象\nreload(); // 刷新当前页面 location.href;//url地址href属性 ","date":"2021-03-08T13:33:03Z","permalink":"https://ICan1DO.github.io/my-blog/p/javascrip-base/","title":"JavaScript基础"},{"content":"HUGO博客搭建 本博客搭建参照少数派Elizen的文章《使用 Hugo 从 0 到 1 搭建个人博客》\nHUGO主题下载：主题\t本博客使用的主题为：stack\n更换博客主题\n按照上述文章搭建完成后，如果需要更换主题，把下载完成的主题解压至博客文件路径，目录*/temes下，文件夹名称可修改，这里博主改为stack。\n打开主题文件夹，进入exampleSite，将文件夹内的所有文件复制到伯博客文件夹主目录下并替换（红框中的文件建议必选，其中congfig.yaml主题配置文件）。\n回到主目录删除除congfig.yaml外的其他格式配置文件。然后打开文件该文件，修改博客地址、主题文件夹名称（博主为stack）。\n其余配置文件信息，参考主题说明文档。stack主题文档地址：https://docs.stack.jimmycai.com/v/zh-cn/\n修改完成后，先保存、上传。等待自动化运行完成后，打开博客地址，如果没有问题，即完成博客创建。\n如果打开存在未编码完全的情况，请参照下面的步骤。\n我们打卡GitHub博客项目，打开.github/workflows\n打开***.yml文件，也就是你之前创建的自动化文件。添加extended: true，因为部分主题需要用到hugo的extented版本才可编译成功。\nname: Update Hugo on: push: branches: - master # master 更新触发 jobs: build-deploy: runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v2 - name: Setup Hugo uses: peaceiris/actions-hugo@v2 with: hugo-version: latest extended: true - name: Build run: hugo - name: Deploy uses: peaceiris/actions-gh-pages@v3 with: personal_token: ${{ secrets.personal_token }} # 填写你自己的 personal_token PUBLISH_BRANCH: gh-pages # 推送到当前 gh-pages 分支 PUBLISH_DIR: ./public # hugo 生成到 public 作为跟目录 commit_message: ${{ github.event.head_commit.message }} 最后，重新运行workflow，再次打开博客即可。\n","date":"2021-02-01T00:00:00+02:00","permalink":"https://ICan1DO.github.io/my-blog/p/hugo-setup/","title":"Hugo博客搭建"}]