- 浏览: 29489 次
- 性别:
- 来自: 北京
最新评论
文章列表
最近在看图论中遍历两点间的不同路径,找到深度优先搜索算法。
先来记录下原本的算法方法
1. 准备一个栈来存储临时数据
2. 获得所有点之间的所有直接路径
3. 将起始节点压入栈
4. 从起始节点出发,找到第一个临节点
5. 如果这个临节点就是结束点,就把这个节点压入栈,那么这个栈内元素就是一条路径
6. 把结束点弹出,再继续寻找其他的结束节点,直到栈内没有元素
7. 如果这个节点不是结束点,就把这个节点作为开始节点,loop4-7步
直接贴代码吧
private void searchRoutes(Town startTown,
...
yazd项目心得(七)
- 博客分类:
- 设计模式
yazd的权限模式主要由Authorization和ForumPermissions来决定。
Authorization主要是代表一个授权,基本上如果用户登录了,那么就代表授权通过,所以Authorization主要就是由一个UserID来表示。
ForumPermissions代表了一组权限,它主要的精髓是一个数组,有boolean元素,true和false代表是否拥有某种权限,如最基本的读权限。
一般的Proxy类都会接收这两个参数。
眼睛基本已经无大碍。
今天使用apache连接weblogic,并使用ssl,终于完成,最终选用的方式是前端使用apache来进行ssl处理,weblogic只负责相关的业务处理。
在apache一边,载入mod_ssl.so、mod_rewrite.so和mod_wl.so,注意mod_wl.so的版本,之前就是因为版本不对导致了一些问题。
建立80端口的虚拟主机,在虚拟主机中用rewrite模块进行了https重定向,RewriteCond意思是重定向的条件,RewriteRule是重定向的匹配模式。使用weblogic模块进行连接weblogic的处理
<VirtualHo ...
依旧在害着眼病
今天有些突破,用apache的虚拟主机配置了443端口的https服务,和80端口一起发布,使用openssl制作的密钥和证书,现在静态文件都可以通过apache访问了。
问题是动态资源通过https时似乎没有委托到weblogic,明天还需要在看看。
http和https
- 博客分类:
- 一般问题
害了眼病,没什么可写的,在工作中遇到了一些问题,记录一下。
跨域访问可以通过<script>标签和<iframe>标签来解决部分问题。
使用Apache监听80和443端口,让weblogic开通7001和7002两个端口分别监听http和https,让apache用80映射weblogic的7001,用443映射weblogic的7002端口,是否可行?
yazd项目心得(六)
- 博客分类:
- 设计模式
今天继续看了yazd项目,这个jive论坛的前身,和当前流行的用spring框架写service,用持久框架写Dao的方式非常不同。最大的不同点感觉是,yazd项目的对象责任更加集中,在这里设计者可以充分发挥自己的抽象能力。
比如User对象中不只包括了属性,还包括了所有的行为,用户的权限,动作等操作。如果在spring框架中,属性和行为是相分离的,属性在entity对象中,行为在service中,这基本上可以理解为贫血的模型,但是那种形式更加有优势,还在研究中。
有一点可以确认的是yazd项目中这种方式是真正的面向对象编程,辅以设计模式的组织,虽然每次连接数据库都要 ...
yazd项目心得(五)
- 博客分类:
- 设计模式
7. yazd项目重要对象
Forum,Forum接口代表一个论坛,默认继承对象是DbForum。重要的接口方法有createThread,创建一个话题;createMessage,创建一条消息;遍历所有的话题,threads;创建一个查询,createQuery;对一个用户增加对当前论坛的权限,addUserPermission;激活过滤器,applyFilters
ForumThread,代表一个话题,一个话题至少有一条消息,当创建一个话题的时候,必须创建一个主消息rootmessage,其他消息是主消息的儿子、孙子,整个话题下是一个树形结构。
Fo ...
yazd项目心得(四)
- 博客分类:
- 设计模式
6. Prototype模式
例子是yazd项目中过滤器的实现,其实又有点像装饰器模式。filter和过滤对象继承同一个接口,接收一个过滤对象,在方法中进行过滤处理,比如在FilterHtml继承ForumMessage,在构造函数内clone所有的过滤对象的属性,病在getBody方法中对Html内容进行特殊字符的转换等处理。
10. 生成证书后,将其配置到weblogic中,但是发现用浏览器访问依然不被信任,说证书是不被信任的证书。大概是生成的证书需要得到知名认证机构的签名。知名的CA有AddTrust、Entrust、GeoTrust、RSA Data Security、Thawte、VISA、ValiCert、Verisign、beTRUSTed。
8. 生成keystore文件
keytool -genkey -v -alias [别名] -keyalg RSA -keysize 1024 -keypass [密码] -validity 365 -keystore [存放地址]
9. 生成pem文件
keytool -certreq -v -alias [别名] -file [pem地址] -keypass [密码] -storepass [密码] -keystore [keystore地址]
7. 使用struts2-ssl-plugin来拦截https请求
如果使用struts2作为web mvc框架,那么可以使用struts2-ssl-plugin来拦截ssl请求
其实就是封装了struts2拦截器,用于重定向https请求。
一开始认为需要在配置文件新建一个package用于定义ssl请求,其实大可不必,因为需要继承的ssl-default就继承了struts-default,如果原package继承struts-default,就可以将原来的package都继承ssl-default
<package name="xx" ex ...
6. 使用mod_rewrite来重写URL,
将rewrite_module modules/mod_rewrite.so放开
在http.conf中新写入:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^/test1/ http://localhost/test-web/test
</IfModule>
重要的是RewriteEngine on
下面是url做的映射,支持正则表达式
这样凡是访问test1的请求都直接重定向到ht ...
1. 安装weblogic10、apache2.2
2. 从oracle下载mod_wl.so
3. 在http.conf中写:
LoadModule weblogic_module modules/mod_wl.so
<IfModule mod_weblogic.c>
Include conf/Weblogic.conf
</IfModule>
4. 新建Weblogic.conf文件
5. 写入:
# Weblogic.conf file
WebLogicHost l ...
怎样用css画出一个三角
- 博客分类:
- Web前端
使用css可以在网页上画出一个三角型和类似的图形,而不用image
主要是利用css的border属性。
1. 将某个div的width和height属性都设置为0
2. 将border-width设置成50
3. 将border-style设置成solid
4. 将border-color设置成某一种颜色
4条边如果某3条边颜色设置成白色,那么就可以出现一个三角形
<div id="mydemo"></div>
#mydemo {
border-top:20px solid red;
border-right:20px ...
yazd项目心得(三)
- 博客分类:
- 设计模式
5. 缓存机制
yazd项目使用了简单的自定义缓存机制
主要涉及到的接口、对象有:
(1)Cacheable
是所有可以放入缓存中的对象的统一接口,只有一个方法getSize()用于返回占用内存空间的字节数
(2)Cache
是缓存对象,成员变量中,使用一个hashmap来存储缓存对象,2个链表,分别来存储缓存对象存入的顺序和存入的时间,最大可容纳的字节数,每次加入新的缓存对象的时候,都检查是否有需要删除的对象,删除的策略是最少使用频率的对象先删除,直到有10%的可用空间。
(3)CacheObject
缓存对象,真正加入到Cache中的对象,他的成员变量是一个简单的Ca ...