stack的三种含义
本文来自:
阮一峰的网络日志
如有引用请注明,谢谢!
#stack的三种含义
学习编程的时候,经常会看到stack这个词,它的中文名字叫做”栈”。理解这个概念,对于理解程序的运行至关重要。容易混淆的是,这个词其实有三种含义,适用于不同的场合,必须加以区分。
含义一:数据结构stack的第一种含义是一组数据的存放方式,特点为LIFO,即后进先出(Last in, first out)。
在这种数据结构中,数据像积木那样一层层堆起来,后面加入的数据就放在最上层。使用的时候,最上层的数据第一个被用掉,这就叫做”后进先出”。
与这种结构配套的,是一些特定的方法,主要为下面这些。
push:在最顶层加入数据。
pop:返回并移除最顶层的数据。
top:返回最顶层数据的值,但不移除它。
isempty:返回一个布尔值,表示当前stack是否为空栈。
含义二:代码运行方式stack的第二种含义是“调用栈”(call stack),表示函数或子例程像堆积木一样存放,以实现层层调用。下面以一段Java代码为例(来源)。
class Student{
int age; ...
markdown pad 生成带目录的html
环境win7、markdown pad 2
目的使用markdown pad 2编辑生成wiki风格的接口文档
处理方案使用markdown pad 2的导出功能和高级设置的Html head 编辑器功能。
工具–>选项–>高级–>Html head 编辑器
打开编辑器
输入:
<script>
document.addEventListener("DOMContentLoaded", function() {
// 生成目录列表
var outline = document.createElement("ul");
outline.setAttribute("id", "outline-list");
outline.style.cssText = "border: 1px solid #ccc;";
document.body.insertBefo ...
使用sublime text2 编辑markdown文件并导出带目录的html
前一篇文章介绍了使用markdown pad2来生成带目录的html文件。但是有很多程序员喜欢使用sublime来进行markdown的编写。这里介绍一下sublime下如何把markdown文件生成带目录的html。
环境win7、 sublime text2
配置过程sublime text 安装 markdown preview插件
sublime text 安装插件基本配置请参看之前的一篇文章:
sublime text2 安装插件
ctrl+shift+P 调出窗口,输入 install package –> 输入 markdown preview 选中安装插件。
配置markdown高亮显示
在Preferences ->Package Settings->Markdown Preview->Setting Default中找到
"enable_mathjax": true,
/*
Enable uml support scripts: flowchart.js and sequence-diagram.js.
*/
& ...
记一次处理http请求返回json数据中文乱码问题
背景项目中rest接口返回中文错误提示信息显示乱码。
环境apache httpClient
spring mvc
tomcat
处理过程分析理清问题接口部署在本地tomcat上时,使用Apache httpClient客户端访问无乱码。
接口部署到服务器上的tomcat时,使用Apache httpClient客户端访问返回结果中文乱码。
初次排查检查HttpClient请求Content-type为UTF-8,排除客户端编码问题。
再次排查查看本地tomcat编码为默认编码,服务器tomcat编码为UTF-8编码。怀疑是tomcat编码问题导致的,修改本地tomcat编码为UTF-8,测试无乱码,排除tomcat编码问题。
第三次排查因为客户端和服务器编码都没有问题,怀疑是接口输出数据有问题。添加日志记录输出结果,发现数据无乱码。
怀疑是spring mvc 视图返回json字符串时编码有问题。百度一下发现spring mvc确实存在视图返回json字符串时使用的是iso-8859-1编码。
测试之,使用response out流输出json字符串,结果无乱码。
确定问题和spr ...
java des加密实践
背景工作中数据加密是C++实现的des加密,业务方是java语言。现在需要使用java对C++加密的内容进行解密。
思路:
根据C++的des加密算法实现,使用java进行逆向处理。
具体代码如下:
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
public class DESUtil {
private static final String Key = "d4odQA#5";
private static final String Algorithm = "DES"; //定义 加密算法,可用 DES,DESede,Blowfish
// 加密字符串
public static String encryptMode(String src) {
String hexStr = "";
...
post请求执行window open
背景一般在html中打开新页面都是直接使用window.open(url),打开新的页面是get请求,如果url有参数的话URL就会很长,在浏览器上会有参数显示。这里使用post请求可以避免该问题。
处理方案创建一个form表单method为post方式:
<form action="" method="post" name="targetForm" id="targetForm" target="targetForm" onsubmit="openWindow('targetForm');">
<input type="hidden" name="name1" id="id1"/>
<input type="hidden" name="name2" id="id2"/>
</ ...
gor搭建个人博客
环境win7、golang、git
下载安装gorgor github里面有gor的安装和使用说明。
这里主要说一下使用中遇到的问题:
执行 go install github.com/wendal/gor/gor 操作的时候会报错:
connot find package “github.com/howeyc/fsnotify”
处理方案如下:
https://github.com/howeyc/fsnotify
下载zip包。
解压缩zip包内容到$GOPATH/src/github.com/howeyc/fsnotify
注意fsnotify目录下就是文件。
然后再执行 go install github.com/wendal/gor/gor
搭建github个人博客参考 http://www.cnblogs.com/purediy/archive/2013/03/07/2948892.html
首先要有一个github个人账号。
创建public仓库,名字以username.github.com命名。
进入username.github.com仓库,选择右侧的setting。 ...
mongodb安装配置
使用mongoDB zip安装包安装配置mongodb。
安装下载mongoDB安装包。
https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-3.0.4.zip
解压缩安装包到 D盘根目录 D:\mongoDB
mongoDB目录下创建data\db目录和data\log目录分别用来安装db和日志文件,在log文件夹下创建一个日志文件MongoDB.log。
运行cmd.exe进入dos命令界面,执行下列命令,启动MongoDB
cd d:\mongoDB\bin
d:\mongodb\bin>mongod -dbpath "d:\mongoDB\data\db"
如果看到信息显示当前监听端口27017则表示启动成功。
测试连接打开一个cmd窗口,进入mongodb的bin目录,输入mongo或者mongo.exe,出现 connect to test 等信息说明测试通过,此时我们已经进入了test这个数据库。输入exit或者ctrl+C可退出。
配置当mongod.exe被关闭时,mongo.exe ...
sublime text2 安装插件
sublime tex t2本身自带了编程语言雷插件,可以通过Preferences–>Browse Packages查看。当然还有一些方便开发的插件需要单独安装。这里说一下sublime text2安装插件的操作流程。
环境win7、sublime text2
配置打开sublime 使用ctrl+` 调出控制台窗口,输入:
import urllib2,os;
pf='Package Control.sublime-package';
ipp=sublime.installed_packages_path();
os.makedirs(ipp)
if not
os.path.exists(ipp)
else
None;
urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler()));
open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond ...
微信公众平台开发入门
因工作需要,要在微信公众平台上进行服务号的开发,现记录下开发流程。
环境win7、IDEA14、Jdk1.7、微信公众平台测试号、外网域名
搭建基础开发环境搭建web项目使用最简单的Servlet做消息入口。
创建WeChatServlet 继承 HttpServlet
在web.xml中配置sevlet的url路径
<servlet-name>wechat</servlet-name>
<servlet-class>cn.wh.wechat.WeChatServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>wechat</servlet-name>
<url-pattern>/wechat</url-pattern>
</servlet-mapping>
在微信公众平台申请管理测试号
http://mp.weixin.qq.com/debug/cgi-bin ...