把npm依赖转换为本地依赖

概述

有的时候,当我们要使用额第三方库停止维护之后,我们想自己修改代码才能达到某个需求。但是 npm 默认是只读的,下次运行依赖管理会覆盖代码。

缘由

要在上面陈述的情况,我们可以把 npm 依赖库转换为本地依赖,这样就不再受包管理器约束,我们就可以自定义修改代码 了

方案

  1. 先删除 npm 中依赖

    yarn remove vuepress-plugin-comment
    
  2. 使用 require​​ 传入相对路径,例如:

    require('../../plugins/vuepress-plugin-vdoing-comment')
    

    如果是 Vuepress 插件,可能需要下面的方式:

    [
        // 使用本地插件
        // resolve(__dirname, '../../plugins/vdoing-comment'), // 评论
        // 使用npm仓库,待发布
        'vuepress-plugin-vdoing-comment', // 评论
        {
            choosen: 'artalk',
            options: {
                server: 'https://my-artalk-server',
                site: '站点名称',
                disableEmotion: false,
                disablePicture: true,
                disablePreview: false
            }
        }
    ],
    

Terwer...大约 1 分钟前端开发依赖代码转换本地dependencynpm
Struts2类型转换之全局类型转换

概述

全局类型转换。在 src​ 目录下新建 xwork-conversion.properties​ ,该文件的内容是 待转换的类=转换器名字 ,即:

space.terwer.bean.User=space.terwer.converter.UserConverter2

Terwer...小于 1 分钟后端开发Struts2目录新建文件概述全局类型转换converterglobal
Struts2类型转换之单个对象深入研究

重要特性总结

  1. Struts2 的类型转换,对于 8 个原生数据类型以及 Date,String 等常见类型,Struts2 可以使内建的类型转换器实现自动的转换;但对于自定义的对象类型来说,需要我们自己指定类型转换的方式,即自定义类型转换器。

  2. 对于自定义类型的转换器来说,需要提供三个信息:Action 的名字、Action 中待转换的属性名以及该属性对应的类型转换器。

    其中 Action 的名字是通过属性文件的 文件名​​ 来获得的、 Action 中待转换的属性名是通过属性文件中的 key ​​ 来获得的,该属性对应的类型转换器是通过该 key​​ 对应的 value​​ 来获得的。


Terwer...大约 3 分钟后端开发Struts2类型转换器类型转换属性转换strutsstruts2typetype-converterconverter
Struts2的类型转换

使用标签

注意:Struts2使用标签库找不到URI:[struts-tags]的taglib[s]问题解决

新建 login2.jsp​ 文件,内容如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Struts2.3 Login2</title>
</head>
<body>
	<s:form action="login">
		<s:textfield name="username" label="username"></s:textfield>
		<s:textfield name="password" label="password"></s:textfield>
		<s:submit label="submit"></s:submit>
	</s:form>
</body>
</html>

Terwer...大约 3 分钟后端开发Struts2使用标签注意转换strutsstruts2taglibconvertvalidate
ArrayList深入分析

基本方法

使用由 toString()​ 方法提供的默认的转换显示类集的内容,toString()​ 方法是从 AbstractCollection()​ 继承下来的。对于例子来说足够,但是通常情况下会重写此方法。

 public class ArrayListTest1 {
   public static void main(String[] args) {
     ArrayList arrayList = new ArrayList();
     arrayList.add("hello");
     arrayList.add("world");
     arrayList.add("world");
     arrayList.add("welcome");String s1 = (String) arrayList.get(0);
     String s2 = (String) arrayList.get(1);
     String s3 = (String) arrayList.get(2);
     String s4 = (String) arrayList.get(3);System.out.println(s1);
     System.out.println(s2);
     System.out.println(s3);
     System.out.println(s4);System.out.println("-------------");
     for (int i = 0; i < arrayList.size(); i++) {
       System.out.println(arrayList.get(i));
     }// arrayList.clear();
     // System.out.println(arrayList.size());
     // System.out.println(arrayList.isEmpty());
 ​
     arrayList.remove(0);System.out.println("-------------");
     for (int i = 0; i < arrayList.size(); i++) {
       System.out.println(arrayList.get(i));
     }
 ​
     arrayList.remove("welcome");
     System.out.println("-------------");
     for (int i = 0; i < arrayList.size(); i++) {
       System.out.println(arrayList.get(i));
     }System.out.println("-----------------");
 ​
     arrayList.add("aaa");
     arrayList.add("bbb");System.out.println(arrayList.indexOf("world"));
     System.out.println(arrayList.lastIndexOf("world"));
     System.out.println(arrayList.indexOf("aaa"));
   }
 }

Terwer...大约 5 分钟后端开发JavaSE结果包装操作转换基本arraylistdeepanalysis