为什么优秀的员工会离职?为什么公司留不住他们?一家公司,吸引普通员工已经够难了,吸引和留住优秀员工就更难了。员工会因为一些更好的、不可错失的机会离开...
众所周知:从前端传入数据项的时候、后台通过HttpServletRequest 中的getParameter对数据进行获取。但仅仅是从前端请求发送过...
最近业务扩展,新业务需要二级域名,查了一些资料和目前业务上的框架,得出来思路: 目前项目里已经有个url过滤器了,用的是微软提供的jar,但不支持二...
内连接(INNER JOIN)(典型的连接运算,使用像 = 或 <> 之类的比较运算符)。包括相等连接和自然连接。 内连...
JAVA中实现pdf转图片可以通过第三方提供的架包,这里介绍几种常用的,可以根据自身需求选择使用。 一、icepdf。 有收费版和开源版,几种方法里...
Markdown是一种纯文本格式的标记语言。通过简单的标记语法,它可以使普通文本内容具有一定的格式。 相比WYSIWYG编辑器 优点: 因为是纯文本,所以只要支持Markdown的地方都能获得一样的编辑效果,可以让作者摆脱排版的困扰,专心写作。 操作简单。比如:WYSIWYG编辑时标记个标题,先选中内容,再点击导航栏的标题按钮,选择几级标题。要三个步骤。而Markdown只需要在标题内容前加#即可 缺点: 需要记一些语法(当然,是很简单。五分钟学会)。 有些平台不支持Markdown编辑模式。 还好,简书是支持Markdown编辑模式的。 开启方式:设置->默认编辑器->Markdown编辑器 一、标题 在想要设置为标题的文字前面加#来表示 一个#是一级标题,二个#是二级标题,以此类推。支持六级标题。 注:标准语法一般在#后跟个空格再写文字,貌似简书不加空格也行。 示例: # 这是一级标题 ## 这是二级标题 ### 这是三级标题 #### 这是四级标题 ##### 这是五级标题 ###### 这是六级标题 效果如下: 这是一级标题 这是二级标题 这是三级标题 这是四级标题 这是五级标题 这是六级标题 ...
#运行用户 user nobody; #启动进程,通常设置成和cpu的数量相等 worker_processes 1; #全局错误日志及PID文...
import java.net.URL; import java.net.MalformedURLException; import java....
将HTML文本转换为Markdown文本 package util; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.nodes.Node; import org.jsoup.select.Elements; /** * Created by deng on 2018/8/9. */ public class Html2Md { private Html2Md() { } public static String getMarkDownText(String html) { StringBuilder result = new StringBuilder(); Document document = Jsoup.parseBodyFragment(html.replace("&nbsp;", "")); // 遍历所有直接子节点 for (Node node : document.body().childNodes()) { result.append(handleNode(node)); } return result.toString(); } /** * 处理Node,目前支持处理p、pre、ul和ol四种节点 * * @param node * @return */ private static String handleNode(Node node) { String nodeName = node.nodeName(); String nodeStr = node.toString(); switch (nodeName) { case "p": Element pElement = Jsoup.parseBodyFragment(nodeStr).body().getElementsByTag("p").first(); String pStr = pElement.html(); for (Element child : pElement.children()) { pStr = handleInnerHtml(pStr, child); } return pStr + "\n"; case "pre": return "```\n" + Jsoup.parseBodyFragment(nodeStr).body().text() + "\n```\n"; case "ul": Element ulElement = Jsoup.parseBodyFragment(nodeStr).body().getElementsByTag("ul").first(); String ulStr = ulElement.html().replace("<li>", "- ").replace("</li>", ""); for (Element li : ulElement.getElementsByTag("li")) { for (Element child : li.children()) { ulStr = handleInnerHtml(ulStr, child); } } return ulStr + "\n"; case "ol": Element olElement = Jsoup.parseBodyFragment(nodeStr).body().getElementsByTag("ol").first(); String olStr = olElement.html(); Elements liElements = olElement.getElementsByTag("li"); for (int i = 1; i <= liElements.size(); i++) { Element li = liElements.get(i - 1); olStr = olStr.replace(li.toString(), li.toString().replace("<li>", i + ". ").replace("</li>", "")); for (Element child : li.children()) { olStr = handleInnerHtml(olStr, child); } } return olStr + "\n"; // 非HTML元素 case "#text": return "\n"; } return ""; } /** * 处理innerHTML中的HTML元素,目前支持处理的子元素包括strong、img、em * * @param innerHTML * @param child * @return */ private static String handleInnerHtml(String innerHTML, Element child) { switch (child.tag().toString()) { case "strong": innerHTML = innerHTML.replace(child.toString(), "**" + child.text() + "**"); break; case "img": String src = child.attr("src"); if (src.charAt(0) == '/') { src = "https://leetcode-cn.com" + src; } innerHTML = innerHTML.replace(child.toString(), "![img](" + src + ")"); break; case "em": innerHTML = innerHTML.replace(child.toString(), " *" + child.text() + "* "); break; default: innerHTML = innerHTML.replace(child.toString(), child.text()); break; } return innerHTML; } } 利用jsoup解析HTML元素,思路如下: [1] 首先遍历HTML文档的直接子节点,直接子节点只包括p、pre、ul和ol四类元素,其中pre对应的是md中的代码片,ul对应md中的无序列表,ol对应md中的有序列表。实现见handleNode方法。 [2] 其次解析每个一级子节点中的内部的HTML元素,包括strong、em、img,其中strong对应md中的粗体,em对应md中的斜体,img对应md中的图片。实现见handleInnerHTML方法。 运行效果: public static void main(String[] args) { System.out.println(Html2Md.getMarkDownText("<p>实现函数 ToLowerCase(),该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串。</p>\n" + "\n" + "<p>&nbsp;</p>\n" + "\n" + "<p><strong>示例 1:</strong></p>\n" + "\n" + "<pre><strong>输入: </strong>\"Hello\"\n" + "<strong>输出: </strong>\"hello\"</pre>\n" + "\n" + "<p><strong>示例 2:</strong></p>\n" + "\n" + "<pre><strong>输入: </strong>\"here\"\n" + "<strong>输出: </strong>\"here\"</pre>\n" + "\n" + "<p><strong>示例</strong><strong>&nbsp;3:</strong></p>\n" + "\n" + "<pre><strong>输入: </strong>\"LOVELY\"\n" + "<strong>输出: </strong>\"lovely\"\n" + "</pre>")); } 运行输出如下图所示: ![请输入图片描述][1] 至此,便完成了对LeetCode编程题项目MD文件的构建。 ...
状态码 说明 100 客户端应当继续发送请求。这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝。客户端应当继续发送请求的剩余部...
通过JAVA程序刷新网站的IP访问量,我用到的技术要点:用SWT的browser来访问网站url,用xpcom来修改Mozilla的代理IP。 为了...
一,JAVA性能优化之设计优化 设计优化处于性能优化手段的上层。它往往须要在软件开发之前进行。在软件开发之前,系统架构师应该就评估系统可能存在的各种...