首页
归档
留言
友链
广告合作
壁纸
更多
美女主播
Search
1
博瑞GE车机升级/降级
5,590 阅读
2
Mac打印机设置黑白打印
4,903 阅读
3
修改elementUI中el-table树形结构图标
4,874 阅读
4
Mac客户端添加腾讯企业邮箱方法
4,654 阅读
5
intelliJ Idea 2022.2.X破解
4,333 阅读
后端开发
HarmonyOS Next
Web前端
微信开发
开发辅助
App开发
数据库
随笔日记
登录
/
注册
Search
标签搜索
Spring Boot
Java
Vue
Spring Cloud
Mac
MyBatis
WordPress
MacOS
asp.net
Element UI
Nacos
.Net
Spring Cloud Alibaba
MySQL
Mybatis-Plus
Typecho
jQuery
Java Script
微信小程序
Oracle
Laughing
累计撰写
618
篇文章
累计收到
1,419
条评论
首页
栏目
后端开发
HarmonyOS Next
Web前端
微信开发
开发辅助
App开发
数据库
随笔日记
页面
归档
留言
友链
广告合作
壁纸
美女主播
搜索到
618
篇与
的结果
2017-11-29
PowerDesigner 表格导出为excel
选中tablesctrl + shift +x 然后运行脚本'****************************************************************************** Option Explicit Dim rowsNum rowsNum = 0 '----------------------------------------------------------------------------- ' Main function '----------------------------------------------------------------------------- ' Get the current active model Dim Model Set Model = ActiveModel If (Model Is Nothing) Or (Not Model.IsKindOf(PdPDM.cls_Model)) Then MsgBox "The current model is not an PDM model." Else ' Get the tables collection '创建EXCEL APP dim beginrow DIM EXCEL, SHEET, SHEETLIST set EXCEL = CREATEOBJECT("Excel.Application") EXCEL.workbooks.add(-4167)'添加工作表 EXCEL.workbooks(1).sheets(1).name ="表结构" set SHEET = EXCEL.workbooks(1).sheets("表结构") EXCEL.workbooks(1).sheets.add EXCEL.workbooks(1).sheets(1).name ="目录" set SHEETLIST = EXCEL.workbooks(1).sheets("目录") ShowTableList Model,SHEETLIST ShowProperties Model, SHEET,SHEETLIST EXCEL.workbooks(1).Sheets(2).Select EXCEL.visible = true '设置列宽和自动换行 sheet.Columns(1).ColumnWidth = 20 sheet.Columns(2).ColumnWidth = 20 sheet.Columns(3).ColumnWidth = 20 sheet.Columns(4).ColumnWidth = 40 sheet.Columns(5).ColumnWidth = 10 sheet.Columns(6).ColumnWidth = 10 sheet.Columns(1).WrapText =true sheet.Columns(2).WrapText =true sheet.Columns(4).WrapText =true '不显示网格线 EXCEL.ActiveWindow.DisplayGridlines = False End If '----------------------------------------------------------------------------- ' Show properties of tables '----------------------------------------------------------------------------- Sub ShowProperties(mdl, sheet,SheetList) ' Show tables of the current model/package rowsNum=0 beginrow = rowsNum+1 Dim rowIndex rowIndex=3 ' For each table output "begin" Dim tab For Each tab In mdl.tables ShowTable tab,sheet,rowIndex,sheetList rowIndex = rowIndex +1 Next if mdl.tables.count > 0 then sheet.Range("A" & beginrow + 1 & ":A" & rowsNum).Rows.Group end if output "end" End Sub '----------------------------------------------------------------------------- ' Show table properties '----------------------------------------------------------------------------- Sub ShowTable(tab, sheet,rowIndex,sheetList) If IsObject(tab) Then Dim rangFlag rowsNum = rowsNum + 1 ' Show properties Output "================================" sheet.cells(rowsNum, 1) =tab.name sheet.cells(rowsNum, 1).HorizontalAlignment=3 sheet.cells(rowsNum, 2) = tab.code 'sheet.cells(rowsNum, 5).HorizontalAlignment=3 'sheet.cells(rowsNum, 6) = "" 'sheet.cells(rowsNum, 7) = "表说明" sheet.cells(rowsNum, 3) = tab.comment 'sheet.cells(rowsNum, 8).HorizontalAlignment=3 sheet.Range(sheet.cells(rowsNum, 3),sheet.cells(rowsNum, 7)).Merge '设置超链接,从目录点击表名去查看表结构 '字段中文名 字段英文名 字段类型 注释 是否主键 是否非空 默认值 sheetList.Hyperlinks.Add sheetList.cells(rowIndex,2), "","表结构"&"!B"&rowsNum rowsNum = rowsNum + 1 sheet.cells(rowsNum, 1) = "字段中文名" sheet.cells(rowsNum, 2) = "字段英文名" sheet.cells(rowsNum, 3) = "字段类型" sheet.cells(rowsNum, 4) = "注释" sheet.cells(rowsNum, 5) = "是否主键" sheet.cells(rowsNum, 6) = "是否非空" sheet.cells(rowsNum, 7) = "默认值" '设置边框 sheet.Range(sheet.cells(rowsNum-1, 1),sheet.cells(rowsNum, 7)).Borders.LineStyle = "1" 'sheet.Range(sheet.cells(rowsNum-1, 4),sheet.cells(rowsNum, 9)).Borders.LineStyle = "1" '字体为10号 sheet.Range(sheet.cells(rowsNum-1, 1),sheet.cells(rowsNum, 7)).Font.Size=10 Dim col ' running column Dim colsNum colsNum = 0 for each col in tab.columns rowsNum = rowsNum + 1 colsNum = colsNum + 1 sheet.cells(rowsNum, 1) = col.name 'sheet.cells(rowsNum, 3) = "" 'sheet.cells(rowsNum, 4) = col.name sheet.cells(rowsNum, 2) = col.code sheet.cells(rowsNum, 3) = col.datatype sheet.cells(rowsNum, 4) = col.comment If col.Primary = true Then sheet.cells(rowsNum, 5) = "Y" Else sheet.cells(rowsNum, 5) = " " End If If col.Mandatory = true Then sheet.cells(rowsNum, 6) = "Y" Else sheet.cells(rowsNum, 6) = " " End If sheet.cells(rowsNum, 7) = col.defaultvalue next sheet.Range(sheet.cells(rowsNum-colsNum+1,1),sheet.cells(rowsNum,7)).Borders.LineStyle = "3" 'sheet.Range(sheet.cells(rowsNum-colsNum+1,4),sheet.cells(rowsNum,9)).Borders.LineStyle = "3" sheet.Range(sheet.cells(rowsNum-colsNum+1,1),sheet.cells(rowsNum,7)).Font.Size = 10 rowsNum = rowsNum + 2 Output "FullDescription: " + tab.Name End If End Sub '----------------------------------------------------------------------------- ' Show List Of Table '----------------------------------------------------------------------------- Sub ShowTableList(mdl, SheetList) ' Show tables of the current model/package Dim rowsNo rowsNo=1 ' For each table output "begin" SheetList.cells(rowsNo, 1) = "主题" SheetList.cells(rowsNo, 2) = "表中文名" SheetList.cells(rowsNo, 3) = "表英文名" SheetList.cells(rowsNo, 4) = "表说明" rowsNo = rowsNo + 1 SheetList.cells(rowsNo, 1) = mdl.name Dim tab For Each tab In mdl.tables If IsObject(tab) Then rowsNo = rowsNo + 1 SheetList.cells(rowsNo, 1) = "" SheetList.cells(rowsNo, 2) = tab.name SheetList.cells(rowsNo, 3) = tab.code SheetList.cells(rowsNo, 4) = tab.comment End If Next SheetList.Columns(1).ColumnWidth = 20 SheetList.Columns(2).ColumnWidth = 20 SheetList.Columns(3).ColumnWidth = 30 SheetList.Columns(4).ColumnWidth = 60 output "end" End Sub
2017年11月29日
1,414 阅读
0 评论
1 点赞
2017-11-26
DotNet Core部署iis提示The application process started but failed to listen on the configured port
今天将一个DotNetCore网站部署到IIS的时候,系统提示The application process started but failed to listen on the configured port首先提示这个错误的,肯定是已经安装了Windows Server Hosting,如果没有安装Windows Server Hosting 的话,报错的信息不是这个,但是既然安装了Windows Server Hosting,为什么还会提示这个错误呢,其实导致这个错误的原因非常简单:就是安装完Windows Server Hosting没有重启IIS.重启IIS时,只重启了当前网站。所以解决办法也非常简单安装完Windows Server Hosting后一定要重启IIS,大家可以使用 iisreset命令重启
2017年11月26日
1,680 阅读
1 评论
0 点赞
2017-11-25
ASP.NET Core使用Redis
Redis是优秀的缓存组件,我们在DotNetCore中也能够很方便的使用。本文主要介绍在虚拟机安装Window Server作为缓存服务器进行简单使用的方法。使用准备为了使用Redis,我们需要一个缓存服务器,这里我们所有的东西都是通过Nuget的方式进行安装的。需要注意的是,Redis官方没有Win版本的,但是我们可以使用微软第三方的我们首先需要安装一下的Nuget包Microsoft.AspNetCore.Session Microsoft.AspNetCore.Http.Extensions Microsoft.Extensions.Caching.Redis Redis-64其中Redis位于C:\Users\Administrator.nuget\packages\redis-64将Redis-64文件夹拷贝到服务器,然后打开\3.0.503\tools\redis-server.exe 开启Redis
2017年11月25日
1,459 阅读
0 评论
2 点赞
2017-11-25
ASP.NET Core ISession找不到SetString方法
不得不感叹一下,现在ASP.NET Core的资料实在是太少了,官网的文档看着也混乱。有时候遇到点问题都找不到解决方案,网上的文章也基本是一人发表,全网来抄。DoNetCore默认的Session只能写入byte数组,为了能够调用SetString()方法,我们还需要安装如下的Nuget包Microsoft.AspNetCore.Http.Extensions这个当时郁闷了好久,就是找不到SetString()方法,大家如果碰到的,也看一下是不是缺少包
2017年11月25日
1,607 阅读
2 评论
2 点赞
2017-11-23
asp.net core读取配置文件公共方法
在asp.net core中,我么在startup.cs或者控制器中可以通过依赖注入或者其他方法很方便的读取配置文件的内容,但是在实际项目开发过程中,我们肯定不是这么简单的处理。一般情况下,我们都会通过一个公共的方法完成配置文件的读取,有时候还需要将配置文件映射到对应的实体类,方便其他人员调用。这里我们通过将公共方法放到单独的类库,让后将配置文件转换成强类型的实体类首先我们添加对应的类库项目然后添加nuget包对于如何创建项目,这里不再赘述,主要说明需要引入的包如下:Microsoft.Extensions.Configuration Microsoft.Extensions.Configuration.FileExtensions修改配置文件修改自己的配置文件,加入相应的配置信息,比如我的配置文件如下{ "Logging": { "IncludeScopes": false, "LogLevel": { "Default": "Warning" } }, "SysConfig": { "LoginProvider": "Cookie" //登陆提供者模式:Session、Cookie } }根据配置文件建立实体类using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace me.lisen.Bussiness.Entity { public class SysConfig { public string LoginProvider { get; set; } //登陆提供者模式:Session、Cookie } }建立公共方法,获取配置文件/* * 获取配置文件 * @lisen */ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Configuration; using Microsoft.Extensions.Configuration; using System.IO; using Microsoft.Extensions.Configuration.Json; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using me.lisen.Bussiness.Entity; namespace me.lisen.FrameworkCore.Util.config { public static class ConfigManager { static IConfiguration config = null; static ConfigManager() { string currentClassDir = AppContext.BaseDirectory; if (config == null) { config = new ConfigurationBuilder() .SetBasePath(currentClassDir) .AddJsonFile("appsettings.json", false, true) .Add(new JsonConfigurationSource { Path = "appsettings.json", Optional = false, ReloadOnChange = true }) .Build(); } } /// <summary> /// 获取系统公共配置文件 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="key"></param> /// <returns></returns> public static T GetValue<T>() where T : class, new() { T sysConfig = new T(); try { config.GetSection("SysConfig").Bind(sysConfig); } catch (Exception ex) { sysConfig = null; } return sysConfig; } /// <summary> /// 获取单一节点配置文件 /// </summary> /// <param name="key">节点,如果是多级节点需要按照:分隔的方式传递</param> /// <returns></returns> public static string GetValue(string key) { return config.GetSection(key).Value.ToString().Trim(); } } }界面调用界面调用就比较简单了,在cshtml页面,直接调用公共方法,获取参数即可
2017年11月23日
1,310 阅读
0 评论
1 点赞
2017-11-16
深度Linux使用一周小纪
首先说一下,我不是专业的测评,也不是特意针对深度Linux系统进行测试,我只是站在一个使用者的角度,简单的描述一下我的使用体验,不褒不贬,希望给打算安装深度Linux的童鞋一些直观的描述。电脑配置电脑型号 ThinkPad T440电脑加过固态,所以基本的配置如下内存:8G固态硬盘:120G其他配置大家可以参考T440介绍,这里不多描述为什么切换Linux本人是一名程序猿,之前使用win系统其实按照这个配置也是很流畅的,之所以想换Linux,其实无非是基于以下原因:折腾精神,O(∩_∩)O~受不了win下面软件的捆绑,现在动不动下个软件就被全家桶了,相信使用win的都曾深受其害,我觉得这点微软确实应该有点作为才行博客部属在Linux上面,所以为了维护博客服务器,也需要学习一点Linux姿势才行呀最近在学习Java,想熟悉以下Java在各个平台下面的表现为什么选择深度Linux相信之前接触过ghost系统的,对深度系统都不会感到陌生。想当年博主第一台电脑就是装的深度xp系统,呵呵。其实之所以选择深度Linux,一是觉得深度的见面非常美观,第二个就是对于我这种小白使用起来比较简单,之前也装过Ubuntu的桌面版,但是感觉界面非常难看,第二个是软件商店的软件那叫一个古老呀。所以这次还是下定决心将自己主力电脑换成了深度Linux。深度系统优点先来说说深度系统使用起来的优点吧软件商店软件非常丰富,基本能够满足日常使用,比如QQ、TIM、微信、WPS、远程连接、迅雷、Eclipse、jetbrains的软件等等都能够找到。界面比较美观,有一点Mac的风格,但是启动器说实话个人感觉不是特别好看自带crossover,无需自己配置,可以使用好多win下面的软件出现过一次输入法无法切换的问题,死活出不来搜狗输入法,后来不知道怎么弄的,自己好了系统感觉不是特别流畅,我觉得以我电脑的配置都能够流畅运行win7、win10的情况下,深度的系统就显得有些卡顿了自带steam,玩游戏朋友的福利,但是博主不玩游戏深度系统问题上面说完了优点,下面再来介绍一下目前发现的一些不太满意的地方上面说过软件商店软件非常丰富,但是软件更新不是很及时,这些跟win下面的某助手或者企鹅等商店更新软件的速度没法比电脑鼠标经常出现延迟卡顿,注意是经常,而且不是CPU或者内存占用过高的情况下QQ经常无法使用@系统托盘经常无法打开应用程序,特别是打开Foxmail,经常出现软件一闪而过的情况,需要多次打开今天就先介绍这么多,以后使用如果有其他的体会,会继续给大家分享2016年11月16日又发现了一个小问题,其实也不算问题,就是下载暂停,重新开始的时候,网速会出现负数
2017年11月16日
1,202 阅读
0 评论
0 点赞
2017-11-13
jsp常见的指令
在前面的章节中,我们介绍了jsp的include的指令,除了包含页面的指令,jsp还有一些其他的指令,比如重定向、使用bean以及获取、设置属性等指令。forward指令forward指令用于页面重定向,首页代码index.jsp<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" session="true" isThreadSafe="true" autoFlush="true" info="我是首页" errorPage="errorPage.jsp"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>首页</title> </head> <body> <form action="index.jsp" name="form1" method="post"> <input type="text" name="userName" id="UserName"> <input type="submit" value="提交"> <jsp:forward page="forward.jsp"></jsp:forward> </form> </body> </html>跳转页面的代码forward.jsp<%@page language="java" contentType="text/html; charset=UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>首页</title> </head> <body> <h1>跳转后的页面</h1> </body> </html> 温馨提示forward指令属于服务端跳转,所以我们会看到浏览器的地址还是index.jspforward指令还可以传递参数我们修改首页代码,如下<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" session="true" isThreadSafe="true" autoFlush="true" info="我是首页" errorPage="errorPage.jsp"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>首页</title> </head> <body> <form action="index.jsp" name="form1" method="post"> <input type="text" name="userName" id="UserName"> <input type="submit" value="提交"> <jsp:forward page="forward.jsp"> <jsp:param value="lisen.cc" name="website"/> </jsp:forward> </form> </body> </html>以及跳转后的页面代码<%@page language="java" contentType="text/html; charset=UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>首页</title> </head> <body> <h1>跳转后的页面<%=request.getParameter("website") %></h1> </body> </html> 我们可以看到,forward传递参数的形式跟包含页面传递参数的方式是一样的,都是通过param指令。中文字符处理当获取request的参数,如果中文出现乱码时,我们可以通过一下指令进行设置<% request.setCharacterEncoding("UTF-8"); %>
2017年11月13日
1,569 阅读
3 评论
1 点赞
2017-11-13
jsp包含页面的方法
在jsp中,我们可以通过两种方式包含页面,简单点的方法是包含一个或者几个静态页面,稍微高级一点的方式是包含动态页面,甚至像动态页面传递参数,下面我们针对这两种方式分别进行介绍。包含静态页面这里所谓的静态页面其实有点不太合适,我们也可以包含jsp页面,但是无法传递参数。包含静态页面通过<%@include file="" %>指令进行的。需要包含的页面index.jsp<%@include file="include.jsp" %> 被包含的页面include.jsp<h1>Include Page</h1> <h2><%=request.getParameter("included") %></h2>我们可以看一下下面的输出页面,由于无法传递参数,所以我们在页面获取的request的参数值是null包含动态页面并传递参数继续我们刚才的代码,我们修改index.jsp代码如下<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" session="true" isThreadSafe="true" autoFlush="true" info="我是首页" errorPage="errorPage.jsp"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>首页</title> </head> <body> <form action="index.jsp" name="form1" method="post"> <input type="text" name="userName" id="UserName"> <input type="submit" value="提交"> <% request.setCharacterEncoding("UTF-8"); String userName = request.getParameter("userName"); if(userName==null){ out.println("请输入用户名"); }else if(userName==""){ out.println("(づ ̄3 ̄)づ╭❤~,输入名称呀"); } else{ out.println(userName); } %> <%-- 注释 <%@include file="include.jsp" %> --%> <jsp:include page="include.jsp"> <jsp:param value="我被成功包含进来了" name="included"/> </jsp:include> </form> </body> </html>
2017年11月13日
1,224 阅读
0 评论
1 点赞
2017-11-11
JSP标签
JSP标签库,是使用XML语法格式完成程序操作的一种方法,其使用的语法类似于JavaBean的使用语法,于JavaBean一样,都可以通过类完成复杂的操作,而且最大的优势就是按照HTML标签的形式标签,这样可以方便的处理JSP页面的数据显示。定义空标签继承TagSupport类package me.lisen.JavaEEStudy; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.tagext.TagSupport; public class HelloTag extends TagSupport { @Override public int doStartTag() throws JspException { JspWriter jspWriter = super.pageContext.getOut(); try{ jspWriter.write("<h1>Hello,World!</h1>"); }catch (Exception e){ e.printStackTrace(); } return TagSupport.SKIP_BODY;//表示标签体为空 } }定义标签描述文件 /WEB-INF/hellotag.tld<?xml version="1.0" encoding="ISO-8859-1"?> <taglib xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" version="2.1"> <tlib-version>1.0</tlib-version> <short-name>firsttag</short-name> <uri>https://lisen.cc</uri> <!-- Invoke 'Generate' action to add tags or functions --> <tag> <name>hello</name> <tag-class>me.lisen.JavaEEStudy.HelloTag</tag-class> <body-content>empty</body-content> </tag> </taglib>使用标签<%@ page import="java.awt.*" %> <%@ page import="java.util.ArrayList" %><%-- Created by IntelliJ IDEA. User: lisen Date: 2017/11/10 Time: 下午12:43 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@page import="me.lisen.JavaEEStudy.Dpt" %> <%@taglib prefix="mytag" uri="/WEB-INF/hellotag.tld" %><%--定义标签--%> <html> <head> <title>首页</title> <script src="js/jquery-3.2.1.js" type="text/javascript"></script> <script src="css/bootstrap/js/bootstrap.js" type="text/javascript"></script> <link href="css/bootstrap/css/bootstrap.css" rel="stylesheet"> <script src="js/bootstrap-fileinput/js/fileinput.js" type="text/javascript"></script> <link href="js/bootstrap-fileinput/css/fileinput.css" rel="stylesheet"> <script src="js/bootstrap-fileinput/js/locales/zh.js" type="text/javascript"></script> </head> <body> <mytag:hello/><%--使用标签--%> </body> </html>如果标签描述文件的路径比较深,我们通过修改web.xml修改映射,然后调用对应的uri获取标签描述文件的位置首先,我们修改web.xml文件,对标签描述文件进行映射<jsp-config> <taglib> <taglib-uri>hellotagtld</taglib-uri> <taglib-location>/WEB-INF/hellotag.tld</taglib-location> </taglib> </jsp-config>修改标签引用的uri<%@taglib prefix="mytag" uri="hellotagtld" %><%--定义标签--%> 定义一个有属性的标签。修改继承的类package me.lisen.JavaEEStudy; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.tagext.TagSupport; import java.text.SimpleDateFormat; import java.util.Date; public class HelloTag extends TagSupport { private String formatStr; public void setFormatStr(String formatStr) { this.formatStr = formatStr; } public String getFormatStr() { return formatStr; } @Override public int doStartTag() throws JspException { JspWriter jspWriter = super.pageContext.getOut(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat(formatStr); try{ jspWriter.write(simpleDateFormat.format(new Date())); }catch (Exception e){ e.printStackTrace(); } return TagSupport.SKIP_BODY;//表示标签体为空 } }修改tld文件,加入定义的属性<?xml version="1.0" encoding="ISO-8859-1"?> <taglib xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" version="2.1"> <tlib-version>1.0</tlib-version> <short-name>firsttag</short-name> <uri>https://lisen.cc</uri> <!-- Invoke 'Generate' action to add tags or functions --> <tag> <name>hello</name> <tag-class>me.lisen.JavaEEStudy.HelloTag</tag-class> <body-content>empty</body-content> <attribute> <name>formatStr</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> </taglib>修改调用方法,传入属性<mytag:hello formatStr="yyyy-MM-dd"/><%--使用标签--%>
2017年11月11日
1,263 阅读
0 评论
1 点赞
2017-11-11
wordpress增加作者信息小工具
本文介绍的方法是通过在添加小工具代码的方式增加的,所以添加之后,大家可以随意调节显示的位置。增加小工具代码首先打开自己主题对应的小工具代码文件,一般位于主题下面的inc/functions/widgets.php文件,在文件顶部或者其他位置增加如下代码:<?php /* Widget Name:李森的博客 Description:李森的博客 Version:1.0 Author:李森的博客 Author URI:https://lisen.cc */ add_action('widgets_init', create_function('', 'return register_widget("Authorinfo");')); class Authorinfo extends WP_Widget { function Authorinfo() { $widget_ops = array('description' => '显示当前文章的作者信息!'); $this->WP_Widget('Authorinfo', '本文作者', $widget_ops); } function update($new_instance, $old_instance) { return $new_instance; } function widget($args, $instance) { extract( $args ); echo $before_widget; echo widget_authorinfo(); echo $after_widget; } } function widget_authorinfo(){ ?> <div class="Author-recommend"> <div class = "Author-recommendation"> <div class = "wrap"> <a class = "zzavatar" href = "https://lisen.cc/"> <img alt = "李森的博客" src = "https://lisen.cc/wp-content/themes/Nana/img/post-lz.png" class = "avatar avatar-137 photo" width = "137" height = "137" > </a> <h4><a href="https://lisen.cc/about-me">李森的博客</a></h4> <p class="description">李森的博客是个人的生活纪实博客,记录个人点滴生活,分享和交流开发技术。</p> <div id="aboutme_widget"> <span class="aboutme"> <ul> <li class="fahome"> <a title="李森的博客" href="https://lisen.cc/" rel="nofollow"> <i class="fa fa-home"></i> </a> </li> <li class = "fauser"> <a title = "专栏地址" href = "https://lisen.cc/" rel = "nofollow"> <i class = "fa fa-user"> </i> </a> </li> <li class="weixin"> <a title="微信号"> <i class="fa fa-weixin"></i> <span> <img alt = "微信号" src = "https://lisen.cc/blog/typecho/2017/06/weixinpay.png"></span> </a> </li> <li class="tqq"> <a target="blank" rel="nofollow" href="https://wpa.qq.com/msgrd?V=3&uin=79505393&Site=QQ& Menu = yes " title="QQ在线"> <i class="fa fa-qq "></i> </a> </li> <li class="tsina"> <a title="新浪微博" href="https://weibo.com/333454448" target="_blank" rel="nofollow"> <i class="fa fa-weibo"></i> </a> </li> <li class = "toutiao"> <a title = "头条号" href = "https://www.toutiao.com/c/user/1827107990" target = "_blank" rel = "nofollow"> <i class = "fa fa-tumblr"></i> </a> </li> </ul > </span> </div> </div> </div> </div> <?php } ?>修改样式打开主题样式文件style.css,增加如下样式/* 本文作者小工具开始 */ .Author-recommend { text-align:center } #sidebar .Author-recommendation { width:100%; background-color: LightGray; } .Author-recommend { text-align:center } .Author-recommendation { width:100%; float:left; position:relative; min-height:1px; padding:0; } .zzavatar img { width:100%; height:100%; border:1px solid #ddd; border-radius:50% } .liebiaos li { line-height:25px; whitewhite-space:nowrap; text-overflow:ellipsis; overflow:hidden } .liebiaos li a { color:#333 } .liebiaos li a:hover { color:#1abc9c } .liebiaos li { list-style-type:disc; list-style-position:inside; color:#1abc9c; whitewhite-space:nowrap; text-overflow:ellipsis; overflow:hidden; text-align:left; line-height:190% } .liebiaos p { text-align:left; margin:8px 0 } .Author-recommend .wrap .description { margin:5px auto 5px; height:100%; font-size:13px; line-height:25px } .Author-recommend .wrap { height:100%; margin-top:60px; padding:0; border:1px solid #e6e6e6; border-radius:4px; background:#fff } #aboutme_widget li { float: left; width: 16%; margin: 0 0.3%; height: 40px; line-height: 38px } #aboutme_widget a { color:#999; width:40px; display:block; text-align:center; margin:0 auto; border-radius:25px; border:none } #aboutme_widget .fauser a:hover { color:#fff; background:#b686d7; border:1px solid #b686d7 } #aboutme_widget .fahome a:hover { color:#fff; background:#949fd8; border:1px solid #949fd8 } .Author-recommend .wrap:hover { box-shadow:0 5px 20px rgba(0,0,0,.1) } .Author-recommend .wrap .zzavatar { width:80px; height:80px; margin-top:-40px; display:inline-block; background-color:#fff } .Author-recommend .wrap .zzavatar img { vertical-align:baselinebaseline } .Author-recommend .wrap .zzavatar { border-radius:40px } .Author-recommend .wrap h4 { font-size:21px; font-weight:700 } @media screen and (max-width:1080px) { .Author-recommendation { width:50% } } @media screen and (max-width:720px) { .Author-recommendation { width:100% } } @media screen and (max-width:360px) { #aboutme_widget li { margin-right:0 } } .aboutme { position:relative; font-size:18px; display:block } #aboutme_widget ul { overflow:hidden; padding:8px 0 } #aboutme_widget span { display:block } .Author-recommend .tebie .wrap .description { max-width:100%; text-align:left; height:100px } #text-121 .Author-recommend .tebie .wrap,#text-122 .Author-recommend .tebie .wrap { height:200px } #zhuantituijian .textwidget,#text-121 .textwidget,#text-122 .textwidget { padding:0 } #zhuantituijian .Author-recommendation,#text-121 .Author-recommendation,#text-122 .Author-recommendation { padding-left:0; padding-right:0 } #text-122 .Author-recommend .wrap { margin-top:40px; padding:0 15px; height:265px } #text-121 .Author-recommend .wrap { margin-top:58px; padding:0 15px } #zhuantituijian .textwidget img,#text-121 .textwidget img,#text-122 .textwidget img { padding:0 } #text-121,#text-122 { border:none; background:#e6e6e6 } #aboutme_widget a:hover { color:#fff; border:1px solid #fff } #aboutme_widget .toutiao a:hover { color:#fff; background:#d28300; border:1px solid #d28300 } #aboutme_widget .weixin a:hover { color:#fff; background:#248a34; border:1px solid #248a34 } #aboutme_widget .tsina a:hover { color:#fff; background:#c40000; border:1px solid #c40000 } #aboutme_widget .tqq a:hover { color:#fff; background:#4e91d1; border:1px solid #4e91d1 } #aboutme_widget .fauser a { color:#b686d7; border:1px solid #b686d7 } #aboutme_widget .fahome a { color:#949fd8; border:1px solid #949fd8 } #aboutme_widget .toutiao a { color:#d28300; border:1px solid #d28300 } #aboutme_widget .weixin a { color:#248a34; border:1px solid #248a34 } #aboutme_widget .tsina a { color:#c40000; border:1px solid #c40000 } #aboutme_widget .tqq a { color:#4e91d1; border:1px solid #4e91d1 } #aboutme_widget .weixin span { position:absolute; left:-10px; visibility:hidden; padding:5px; border:1px dashed gray; background-color:#ffffe0; color:#000; height: 132px; text-decoration:none } #aboutme_widget img { margin:0; padding:2px; height:90pt; max-width:90pt } #aboutme_widget .weixin:hover span { top:50px; left:0; visibility:visible } #text-15 .textwidget { padding:4px 4px 0 } /* 本文作者小工具结束 */使用方法通过上述设置之后,我们进入WordPress后台,依次进入外观→小工具,可以看到“本文作者”小工具,然后拖拽到需要显示的位置即可
2017年11月11日
1,618 阅读
2 评论
0 点赞
2017-11-09
let's encrypt强制更新
今天想更新一下博客的证书,结果提示cert not yet due for renewal发现无效, 出现上面的提示,基本说明renew失败了。再次强制执行发现有效,记录一下。命令如下:/bin/certbot renew --force-renew
2017年11月09日
1,300 阅读
0 评论
1 点赞
2017-11-07
Mac安装Tomcat
下载Tomcat去Tomcat官网下载最新版本的Tomcat,下载tar格式的即可。加压之后,放到一个目录。授权文件打开终端,输入以下命令sudo chmod 755 /Users/lisen/apache-tomcat-8.5.23/bin/*.sh回车后,输入密码,然后回车启动Tomcat输入以下命令,进入Tomcat的bin目录cd /Users/lisen/apache-tomcat-8.5.23/bin输入以下命令,启动Tomcatsudo sh startup.sh停止Tomcat输入以下命令,停止Tomcatsudo sh shutdown.sh测试Tomcat是否启动Tomcat默认的端口是8080,我们可以输入localhost:8080
2017年11月07日
1,234 阅读
0 评论
1 点赞
1
...
43
44
45
...
52