AG集团【真.热门】
销售热线:
0531-61345555


    产品中心


     当前位置:主页 > 技术文章 >
     
    AG集团技术文章 - 随笔分类 - 杨元博客园
     

      Orthanc+OHIF DICOM Viewer最佳Dicom解析、在线浏览实践指南(解决方案)

      摘要:概念 DICOM identifiers Very importantly, the DICOM standard specifies DICOM tags that allow to index each single DICOM resource: Patients are indexed wi阅读全文

      posted @2019-05-22 11:40杨元 阅读 (2478)

      pay-spring-boot 开箱即用的Java支付模块,整合支付宝支付、微信支付

      摘要:关于 使用本模块,可轻松实现支付宝支付、微信支付对接,从而专注于业务,无需关心第三方逻辑。 模块完全独立,无支付宝、微信SDK依赖。 基于Spring Boot。 依赖Redis。 我能做什么 支付宝:电脑网站支付、手机网站支付、扫码支付、APP支付。 微信:电脑网站支付(同扫码支付)、手机网站支付阅读全文

      posted @2019-05-11 16:43杨元 阅读 (2526)

      摘要:小菜最近用到RabbitMQ,由于之前了解过其他消息中间件,算是有些基础,所以随手从网上搜了几篇文章,准备大概了解下RabbitMQ的消息模型,没想到网上文章千篇一律,写一大堆内容,就是说不明白到底怎么回事,真是逼小菜写博客… 首先说明本文只适合有消息中间件基础的读者,本文不会讲解基础概念,而是一针阅读全文

      posted @2018-09-02 22:06杨元 阅读 (2270)

      摘要:前言 此框架由小菜独立开发,并且已经在生产环境中运行大约一年时间。 也就是说,Security框架写出来有一段时间了,但是一直没有公布、开源,经过不断迭代完善,终于算是拿得出手啦~ Security框架存在的意义并不是为了替代 Shiro 或 Spring Security ,而且提供另一种选择阅读全文

      posted @2018-05-24 14:34杨元 阅读 (6052)

      chunkupload 文件上传断点续传组件(java) - 正式发布

      摘要:chunkupload简介 chunkupload是一款基于java语言的断点续传组件,针对文件上传,非文件下载,集成方便,使用简单。 chunkupload实现如下功能: 实现断点续传 对于同一个文件,允许多用户同时上传,并且上传的用户越多,上传越快 线; 同一物理机下进程安全阅读全文

      posted @2016-10-05 10:15杨元 阅读 (4365)

      摘要:replace、replaceAll、replaceFirst这三个函数会java的同学估计都用过,笔者已经用了2年多,可是,我们真的懂他们吗? 概述一下他们三个的用法: replace(CharSequence target, CharSequence replacement),用...阅读全文

      posted @2015-09-15 11:32杨元 阅读 (32769)

      用java PreparedStatement就不用担心sql注入了吗?

      摘要:先感慨下,好久没写博客了,一是工作太忙,二是身体不太给力,好在终于查清病因了,趁着今天闲下来,迫不及待与读者交流,最后忠告一句:身体是活着的本钱! 言归正传,对java有了解的同学基本上都体验过JDBC,基本都了解PreparedStatement,PreparedStatement相比Sta...阅读全文

      posted @2015-09-15 10:28杨元 阅读 (22581)

      摘要:java常量池是一个经久不衰的话题,也是面试官的最爱,题目花样百出,小菜早就对常量池有所耳闻,这次好好总结一下。理论 小菜先拙劣的表达一下jvm虚拟内存分布: 程序计数器是jvm执行程序的流水线,存放一些跳转指令,这个太高深,小菜不懂。 本地方法栈是jvm调用操作系统方法所使用的栈。 ...阅读全文

      posted @2015-07-08 23:29杨元 阅读 (27315)

      openseadragon.js与deep zoom java实现艺术品图片展示

      摘要:openseadragon.js 是一款用来做图像缩放的插件,它可以用来做图片展示,做展示的插件很多,也很优秀,但大多数都解决不了图片尺寸过大的问题。 艺术品图像展示就是最简单的例子,展示此类图片一般要求比较精细,所以图片尺寸很大,如果按照普通的方式直接将整个图片加载,要耗费巨大的带宽。 op...阅读全文

      posted @2015-05-25 11:53杨元 阅读 (1929)

      摘要:Smack框架对XMPP协议进行了封装,从而方便与Openfire即时通信服务器做交互。说白了,Smack框架可以通过对象构造符合XMPP协议的XML字符串,避免手动拼接字符串。XMPP协议基本XML结构如下:1 5 消息内容6 大多数情况下,这么简单的结构是满足不了需求的,我们可能...阅读全文

      posted @2015-05-11 23:06杨元 阅读 (4832)

      摘要:在JavaScript中,方法往往涉及到上下文,也就是this,因此往往不能直接引用,就拿最常见的console.log(info…)来说,避免书写冗长的console,直接用log(info…)代替,不假思索的会想到如下语法:1 var log = console.log;2 log(...阅读全文

      posted @2015-05-10 22:53杨元 阅读 (3500)

      摘要:至今,小菜用java快两年了,有些事,也该有个总结。 基本类型和包装类型的概念在本文不作赘述。 如果这两种类型直接使用,倒没什么值得讨论的,无非就是自动装箱拆箱,java可以让你感觉不到他们的存在,但如果我们在数据库映射实体(下文简称bo,即businessobject)中使用,就得注意了!...阅读全文

      posted @2015-04-19 21:07杨元 阅读 (2594)

      摘要:今天小菜无意间在社区看到一个讨论:“0~400中1出现了多少次?”。 小菜看到大部分网友给出的算法是基于字符串的处理,思路大致是:把所有数字拼接成一个字符串,然后对字符串进行处理,进而获取出现次数。例如以下代码: 1 /** 2 * 网友版本 3 * 找出1出现的次数 4 **/ 5 ...阅读全文

      posted @2015-03-03 12:04杨元 阅读 (1050)

      摘要:近几天看了些关于JavaScript内存管理的文章,相对于Java JVM的内存管理,显得简单些。 在学习的过程中,发现有不少网友谈到了循环引用,说循环引用会造成内存泄漏,垃圾回收器无法回收。 实际上,并没有这么可怕,根据小菜目前的了解,这种循环引用造成的内存泄漏,仅仅会发生在低版本的IE浏...阅读全文

      posted @2015-03-03 11:51杨元 阅读 (466)

      摘要:JQuery这种Write Less Do More的框架,用多了难免会对原生js眼高手低。 小菜其实不想写这篇博客,貌似很初级的样子,但是看到网络上连原生js事件绑定和解除都说不明白,还是决定科普一下了。 首先声明,小菜懂的也不是很多,只是把我的思路和大家分享一下。DOM0事件模型 事件...阅读全文

      posted @2014-12-28 22:46杨元 阅读 (67252)

      摘要:重写window对象的方法不是一件新奇的事,比如我们可能需要改变默认alert的行为,如何安全的重写呢? 小菜看到某知名IT网站是这样的写法:1 window.alert = function(){}; 或者1 alert = function(){}; 实际上,这种写法有些欠妥。这相当于...阅读全文

      posted @2014-12-28 22:06杨元 阅读 (2040)

      摘要:谷歌浏览器不仅仅可以用来上网,对于开发人员来说,它更像是一款强大的开发辅助工具。 工欲善其事必先利其器,接下来笔者给大家分享一些Chrome的使用方法。 假如读者了解如何在Chrome中添加JavaScript断点,那请继续阅读;否则,自行脑补。 假如有这样一段代码: 1 var a = ...阅读全文

      posted @2014-11-29 00:06杨元 阅读 (25491)

      JavaScript简洁继承机制实现(不使用prototype和new)

      摘要:此方法并非笔者原创,笔者只是在前辈的基础上,加以总结,得出一种简洁实用的JavaScript继承方法。 传统的JavaScript继承基于prototype原型链,并且需要使用大量的new操作,代码不够简洁,可读性也不是很强,貌似还容易受到原型链污染。 笔者总结的继承方式,简洁明了,虽然不...阅读全文

      posted @2014-11-23 15:30杨元 阅读 (811)

      摘要:循环是模版引擎必不可少的一部分,而说起循环,会引出一个至关重要的因素:索引。 所谓索引,即循环次数,通过索引,可以获取当前循环是第几次。 如果读者阅读过官方文档,会见到如下获取索引的方式:data:1 {2 names: [Maradona,Pele,Ronaldo,Mes...阅读全文

      posted @2014-10-31 01:16杨元 阅读 (9275)

      摘要:JsRender 作为一款JavaScript模版引擎,必不可少的会有循环功能,也就是for,但由于JsRender过于灵活,for竟然可以接受object作为循环对象。 {{for Array}}和{{for Object}}都是允许的,{{for Array}}大家都能理解,就是遍历一个数...阅读全文

      posted @2014-10-31 01:02杨元 阅读 (2569)

      摘要:问题引入 Json是什么就不多说了,本文把Json理解成一种协议。 印象之中,Json貌似是前端的专属,其实不然,服务器端组织数据,依然可以用Json协议。 比如说,某公司有一套测评题目(基于Json协议),这些题目比较珍贵,不想直接放在js中,所以就将题目文件放在服务器端,然后通过一个接口去...阅读全文

      posted @2014-09-29 18:05杨元 阅读 (8528)

      摘要:由于公司需要,小菜最近在搞app web开发,目前只有ios和android版本,虽然仅此两个版本,但是依然要考虑浏览器兼容性问题,因为android和ios默认浏览器内核是不一样的。 先说说兼容性问题是什么。假如有这样一个URL:阅读全文

      posted @2014-09-18 19:58杨元 阅读 (58785)

      JsRender实用教程(tag else使用、循环嵌套访问父级数据)

      摘要:前言 JsRender是一款基于jQuery的JavaScript模版引擎,它具有如下特点: 简单直观 功能强大 可扩展的 快如闪电 这些特性看起来很厉害,但几乎每个模版引擎,都会这么宣传。。。 由于工作需要,小菜才接触到此款模版引擎。使用了一段时...阅读全文

      posted @2014-09-16 18:24杨元 阅读 (12701)

      jQuery document window load ready 区别详解

      摘要:用过JavaScript的童鞋,应该知道window对象和document对象,也应该听说过load事件和ready事件,小菜当然也知道,而且自认为很了解,直到最近出了问题,才知道事情并不是那么简单。 首先说说window和document,直观上来讲,window代表的是浏览器窗口,而do...阅读全文

      posted @2014-08-27 22:08杨元 阅读 (6620)

      摘要:QQ强聊虽然早就变成了一个传说,但现在依然可以实现。 小菜其实早就知道这个漏洞,但是一直没公布,前两天突然来兴致试了试,没想到漏洞依然存在。 然后小菜跑到了乌云漏洞报告平台举报漏洞,但没想到被腾讯鲁莽的否认了,他竟然说漏洞不存在,漏洞不存在,那些截图是怎么来的。。。小菜辛辛苦苦写的漏洞原理,...阅读全文

      posted @2014-06-26 16:56杨元 阅读 (5422)

      Handlebars.js循环中索引(@index)使用技巧(访问父级索引)

      摘要:使用Handlebars.js过程中,难免会使用循环,比如构造数据表格。而使用循环,又经常会用到索引,也就是获取当前循环到第几次了,一般会以这个为序号显示在页面上。 Handlebars.js中获取循环索引很简单,只需在循环中使用{{@index}}即可。 1 2 3 4 ...阅读全文

      posted @2014-06-17 21:12杨元 阅读 (27560)

      摘要:Nutz是一组轻便小型的框架的集合, 各个部分可以被独立使用,把SSH的精华封装在一个1M左右的jar包中,Nutz不对其他任何第三方库产生依赖,如果不考虑数据库链接和日志的话,创建完美的Web应用只需要一个Nutz的jar包。 作为产品而言,就算是再优秀,如果没有优良的使用文档,也是白搭。...阅读全文

      posted @2014-06-12 18:02杨元 阅读 (4456)

      摘要:在B/S结构客户端越来越“胖”的今天,作为一名全端程序员,您很可能会在前端操作html字符串,注意,是操作html字符串,不是操作当前页面的html。 举个例子,百度推出的在线HTML富文本编辑器Ueditor,可以在线制作富文本文档,功能堪比精简版的Microsoft Word。虽然Ued...阅读全文

      posted @2014-05-29 21:25杨元 阅读 (1502)

      摘要:1 2 3 4 5 each嵌套 - by 杨元 6 7 8 each嵌套 9 10 11 12 13 14 15 16 17 18 19 26 27 28 55 56 循环嵌套在稍微复杂点的页面设计中即会涉及,Handlebars.js完全支持each嵌套,可以在each中使用each。 上边的例子演示了两个关键点:each嵌套的可实现性、如何在each嵌套中读取父each中的数据。 例子很简单,info本身是一个信息列表,是...阅读全文

      posted @2014-03-10 22:21杨元 阅读 (22056)

      摘要:1 2 3 4 5 关于循环中索引的使用 - by 杨元 6 7 8 关于循环中索引的使 9 10 11 12 13 序号14 姓名15 性别16 年龄17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 42 43 ...阅读全文

      posted @2014-03-10 22:16杨元 阅读 (16220)

      摘要:oracle数据库相信大家都比较熟悉,数据库中有一种非常常用的数据类型:字符串型。 对应该类型,在oracle中有三种比较常用的类型:varchar2(byte)、varchar2(char)、nvarchar2()。 那么这三种类型到底有什么区别呢? 首先,我们要时刻记清:无论是varchar2还是nvarchar2,最大字节数都是4000。 varchar2(byte):就是默认的表示方式,比如我们写成:varchar2(100),就相当于varchar2(100 byte),表示最大字节数是100,该字段最多能容纳100个字节,强调空间大小。由于我们描述的是字节,因此,保存汉字等字符时.阅读全文

      posted @2013-12-25 18:17杨元 阅读 (23921)

      摘要:if-else是计算机语言中基本的分支语句,虽然很简单,但可能会出现滥用的情况,如图: 这种标记判断,嵌套成这样(其实没有必要嵌套),会让别人觉得作者水平很低。 可以看出,这些if仅仅是在判断一个变量,根据这个变量的值,返回不同的文字信息。 用switch也不是很好,那样虽然理解起来容易一些,但仍然需要编写很长很长的代码。 接下来小菜就总结几点消除if-else的小技巧。1.将对应关系保存在数据库中,作为字典。 截图中的例子,无非就是一个对应关系,把指定的数字翻译成文字信息。 这很像我们常用的字典,我们只需要把数字和文字信息存入数据库,然后通过数字查询文字信息即可。 这样一来,翻译工作仅需一.阅读全文

      posted @2013-12-25 18:14杨元 阅读 (4215)

      摘要:写在开头的话: 阅读本文需要了解基本的Handlebars.js概念,本文并不是Handlebars.js基础教程,而是注重于实际应用,为读者阐述使用过程中可能会遇到的一些问题。 实际上,小菜写这篇文章,很大程度是因为关于这个插件的中文资料比较少,像小菜这样的新手难以快速使用。 小菜再次申明,本文不...阅读全文

      posted @2013-12-12 16:25杨元 阅读 (117539)

      摘要:返回目录 有了这些功能,[ajax+json+Handlebars]替代[vo+el表达式]不成问题,新时代的曙光已经来临,最佳解决方案在此,您还等什么? 教程到此结束。。。祝读者学习愉快。。。 小菜水平有限,高手勿喷。。。 有问题欢迎和我交流。。。阅读全文

      posted @2013-12-12 16:15杨元 阅读 (4869)

      摘要:返回目录 1 2 3 4 5 关于HTML编码 - by 杨元 6 7 8 关于HTML编码 9 10 11 12 13 姓名14 性别15 年龄16 个人主页17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 45 46 4...阅读全文

      posted @2013-12-12 16:13杨元 阅读 (16366)

      js模版引擎handlebars.js实用教程——另一种Helper用法

      摘要:返回目录 1 2 3 4 5 另一种Helper用法 - by 杨元 6 7 8 另一种Helper用法 9 10 11 12 13 姓名 14 性别 15 年龄 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ...阅读全文

      posted @2013-12-12 16:11杨元 阅读 (19833)

      js模版引擎handlebars.js实用教程——由于if功力不足引出的Helper

      摘要:返回目录 1 2 3 4 5 由于if功力不足引出的Helper - by 杨元 6 7 8 由于if功力不足引出的Helper 9 10 11 12 13 姓名14 性别15 年龄16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 49 50 ...阅读全文

      posted @2013-12-12 16:09杨元 阅读 (40234)

      js模版引擎handlebars.js实用教程——if-判断的基本用法

      摘要:返回目录 1 2 3 4 5 if-判断的基本用法 - by 杨元 6 7 8 if-判断的基本用法 9 10 11 12 13 姓名14 性别15 年龄16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 41 42 43 73 74...阅读全文

      posted @2013-12-12 16:07杨元 阅读 (38322)

      js模版引擎handlebars.js实用教程——with-终极this应用

      摘要:返回目录 1 2 3 4 5 with-终极this应用 - by 杨元 6 7 8 with-终极this应用 9 10 11 12 13 姓名14 性别15 年龄16 兴趣爱好17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 47 ...阅读全文

      posted @2013-12-12 16:04杨元 阅读 (9437)

      js模版引擎handlebars.js实用教程——with-进入到某个属性(进入到某个上下文环境)

      摘要:返回目录 1 2 3 4 5 with-进入到某个属性(进入到某个上下文环境) - by 杨元 6 7 8 with-进入到某个属性(进入到某个上下文环境) 9 10 11 12 13 姓名 14 性别 15 年龄 16 兴趣爱好 17 18 19 20 21 22 23 24 25 ...阅读全文

      posted @2013-12-12 16:02杨元 阅读 (13309)

      js模版引擎handlebars.js实用教程——each-循环中使用this

      摘要:返回目录 1 2 3 4 5 each-循环中使用this - by 杨元 6 7 8 each-循环中使用this 9 10 11 12 13 姓名14 性别15 年龄16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 39 40 41 ...阅读全文

      posted @2013-12-12 15:59杨元 阅读 (22736)

      js模版引擎handlebars.js实用教程——each-基本循环使用方法

      摘要:返回目录 1 2 3 4 5 each-基本循环使用方法 - by 杨元 6 7 8 each-基本循环使用方法 9 10 11 12 13 姓名14 性别15 年龄16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 39 40 41 7...阅读全文

      posted @2013-12-12 15:56杨元 阅读 (39168)

      js模版引擎handlebars.js实用教程——如何引入Handlebars.js

      摘要:返回目录 Jquery插件,第一步当然要引用Jquery啦,然后引用Handlebars.js即可,仅仅需要这两个js文件。1 2阅读全文

      posted @2013-12-12 15:51杨元 阅读 (24615)

      js模版引擎handlebars.js实用教程——为什么选择Handlebars.js

      摘要:返回目录 据小菜了解,对于java开发,涉及到页面展示时,比较主流的有两种解决方案: 1. struts2+vo+el表达式。 这种方式,重点不在于struts2,而是vo和el表达式,其基本思想是:根据页面需要的信息,构造出一个实体,这个实体中包含了界面需要的所有属性,通常这个实体是由N个表中的字段构成的,俗称vo。由于vo的属性可以是String、List、Map等等等,又可以vo套vo,因此这种方式非常灵活,也非常好用。 在后台对vo进行赋值,通过struts2封装到request中,然后在界面用el表达式,通常是${}、forEach标签什么的,即可构造出界面。 但这种方式小菜却不是很阅读全文

      posted @2013-12-12 15:44杨元 阅读 (39429)

      摘要:小菜使用Spring有几个月了,但是对于它的内部原理,却是一头雾水,这次借着工作中遇到的一个小问题,来总结一下Spring。 Spring依赖注入的思想,就是把对象交由Spring容器管理,使用者只需声明什么时候需要对象 ,这个可以说是常识,在这就不多说啦。 小菜的项目中,为了提高代码运行效率,需要在类实例化的时候初始化一个列表,避免重复查询,于是小菜想当然的写了如下代码: 1 @Component 2 public class ApplyStatusHandler{ 3 @Autowired 4 private DictMgr dictMgr; 5 @Autowired 6 ...阅读全文

      posted @2013-10-30 19:14杨元 阅读 (7504)

      JS动态修改页面EasyUI datebox不生效、EasyUI动态添加Class、EasyUI动态渲染解析解决方案

      摘要:这是个小菜在实际工作中遇到的问题,相信很多EasyUI新手很可能也遇到这样的问题,因此小菜觉得有必要拿出来分享一下。 这个问题要从EasyUI的datebox组件说起,小菜用这个组件的时候,发现用$(#id).val()这种形式,居然拿不到文本框的值! 经过度娘的帮助,发现可以用$(#id).datebox(getValue),但是这是为什么捏? 经过一翻研究和探索,小菜发现,如果一个input加上class=easyui-datebox,也就是声明在此文本框上边使用datebox组件,那么经过Easy阅读全文

      posted @2013-10-08 22:53杨元 阅读 (37320)

      摘要:小菜一直对操作系统心存畏惧,以前也很少接触,这次创业购买了Linux云主机,由于木有人帮忙,只能自己动手优化服务器了。。。。 小菜的云主机配置大致为:centeos6(32位),4核心cpu,4G内存,5M独享带宽。一、jvm内存优化方案。 要优化服务器,首先从jvm入手,分配好jvm内存,配置方案如下: declare -x JAVA_OPTS=-server -Xms1280M -Xmx1280M -Xmn512M -Xss1024k -XX:+AggressiveOpts -XX:+UseParallelGC -XX:+UseBiasedLocking 其中,-s阅读全文

      posted @2013-09-20 03:08杨元 阅读 (4588)

      tomcat通过conf-Catalina-localhost目录发布项目详解

      摘要:Tomcat发布项目的方式大致有三种,但小菜认为通过在tomcat的conf/Catalina/localhost目录下添加配置文件,来发布项目,是最佳选择。 因为这样对tomcat的入侵性最小,只需要新增一个配置文件,不需要修改原有配置;而且支持动态解析,修改完代码直接生效(修改配置除外)。 但是网上关于这种方法的介绍很简单,小菜来补充一下。 1.直接在eclipse中添加一个server,添加过程中指明tomcat的路径即可。 2.在tomcat服务器的conf\Catalina\localhost目录下创建一个xml文件(路径找不到就自己创建),内容如下: ...阅读全文

      posted @2013-09-12 11:04杨元 阅读 (47801)

      摘要:今天小菜处理下拉菜单级联问题时,想获取HTML标签中某个事件的内容,也就是值,比如从中获取javascript:test();。小菜想通过事件中的信息,确定下一级的菜单,但是这个貌似很简单的问题,却让小菜纠结了一番。 稍微懂点JQuery的童鞋,可能会尝试这样获取:1 $(document).ready(function(){2 var onchangeValue = $(#city).attr(onchange);3 alert(onchangeValue);4 }); 一般情况下,这样的确可以获取到,因为JQuery万能的attr方法,可以获阅读全文

      posted @2013-07-20 22:12杨元 阅读 (6356)

      摘要:今天小菜去北京某知名公司面试,做了公司的面试题,然后就是轻松的面试。 面试过程中,面试官让我讲讲其中一个题是怎么选的答案,代码大致内容如下: 1 public class StringTest{ 2 public static void main(String[] args){ 3 String str = s; 4 5 changeStr(str); 6 7 System.out.println(str); 8 9 }10 11 private sta...阅读全文

      posted @2013-07-18 22:13杨元 阅读 (2233)

      摘要:对于很多刚刚接触UML的童鞋,可能会对类之间的关联与依赖关系不太理解,今天小菜就浅薄的讲一下。 这块的确是有点乱,不过小菜突然找到了一个比较好的切入点,拿出来分享一下。 接触过设计模式的读者,会经常看到这样的场景:在实例化A类的时候,需要B类作为构造方法的参数,这说明A类需要持有一个B类的引用。比如代理模式、装饰模式等,都会这样做。例如Java中的IO流采用的就是装饰模式,所以我们会经常看到这样的语句:new BufferInputStream(new FileInputStream(c:\\1.db)); 这种持有引用,就是简单的关联关系。在代码中表现为:在A类中有一阅读全文

      posted @2013-06-16 08:12杨元 阅读 (15372)

      摘要:小菜的网站由于建的比较早,而且那时候刚刚接触计算机,没考虑太长远,选择了asp的网站程序:新云CMS。 现在真是后悔莫及啊。。。如今Wordpress实在是太方便了。 最近发现了一个新云的Bug,由于新云年代久远,再加上asp基本过时,网上根本搜索不到答案,因此小菜在这分享一下,希望能够帮助目前使用新云CMS的苦逼站长。 事情是这样的: 在后台填写软件下载地址的时候,如果地址中含有&符号,保存时会自动转义成,但是读的时候它却不会把数据库中的还原成&,导致无法跳转。 比如,下载地址中填写阅读全文

      posted @2013-06-12 10:58杨元 阅读 (1218)

      CSS从大图中抠取小图完整教程(background-position应用)

      摘要:相信很多喜欢研究网页界面的童鞋都遇到过一个奇妙的现象:网页中很多图片素材被合成在一张图片上。 起初小菜模仿网站的时候,经常遇到这个现象,那时候也不知道这时什么技术,人家的整张图片素材不会利用,只能用ps切图,切成单个的再用。。。 其实,这是一个非常简单的技术,就是因为想象的太难了,才一直找不到问题...阅读全文

      posted @2013-06-01 00:29杨元 阅读 (40540)

      摘要:提示:阅读本文需要有一定的正则表达式基础。 正则表达式中的断言,作为高级应用出现,倒不是因为它有多难,而是概念比较抽象,不容易理解而已,今天就让小菜通俗的讲解一下。 如果不用断言,以往用过的那些表达式,仅仅能获取到有规律的字符串,而不能获取无规律的字符串。 举个例子,比如html源码中有titlexxx/title标签,用以前的知识,我们只能确定源码中的title和/title是固定不变的。因此,如果想获取页面标题(xxx),充其量只能写一个类似于这样的表达式:title.*/title,而这样写匹阅读全文

      posted @2013-05-30 07:51杨元 阅读 (32447)

      摘要:小菜最近接触了struts2中的令牌知识,由于该知识点比较重要,因此想弄明白些,于是满怀信心的上网查阅资料,结果让小菜很无奈,网上的资料千篇一律,总结出来就一句话:“访问页面时,在页面产生一个token id,同时在服务器的session中保存一个同样的id,提交时判断如果相同怎么样不相同怎么样。。。”可能是小菜愚笨,实在是无法从这么精炼的描述中体会令牌的精髓。肤浅的那么一说,然后上来就是一堆代码,有时候对初学者的帮助可能不是很大,如果能够介绍一下其中的原理,无疑会加快读者学习速度。经过刻苦的研究,下面小菜来介绍一下,令牌究竟是如何做到防止界面刷新的。本文不涉及令牌具体用法,只讲原理。首先需.阅读全文

      posted @2013-05-05 01:09杨元 阅读 (14163)

      摘要:小菜最近在读《Java与模式》一书时,发现关于单例模式的章节中有这样一段话: 作者想表达的大意为:为了实现某个对象能够持久在内存中,以供程序在整个运行周期都可以访问,可以让对象的某个成员变量持有一个指向自身的引用,来避免被回收。 成员变量想要被清空,需要等待对象被释放,而对象被释放需要没有引用指向它,此时成员变量恰恰指向了对象本身,这看起来很不错,形成了一个循环。 但实际上,这种说法是不准确的,容易让读者产生误解。 请看下边这段代码:logs.test; 2 3 public class SingletonTest { 4 5 public s...阅读全文

      posted @2013-04-22 22:42杨元 阅读 (3641)

      摘要:小菜提到的实体类,即项目中业务或者数据库表的映射,貌似也可以称为模型,不同的语言中叫法不同吧!! 举个例子,比如在某个Web页面中,表单上有大量的数据需要提交,如果是初学者,很可能这样接收参数: String param1;String param2;String param3;…… 这样做的坏处很多,比如:代码会显得很乱,可能会出现大量重复代码,最主要的就是没有做到面向对象的“封装性”,导致程序不容易维护。 由此,聪明的程序员们提出了实体类的概念,也就是用类来封装业务所需要的数据。 public class User { private String uid; private String.阅读全文

      posted @2013-04-19 00:16杨元 阅读 (14564)

      摘要:今天有朋友想要用程序模拟网易163邮箱注册,但是遇到了一些小问题,小菜特准备了一篇文档,希望可以帮到需要的朋友。模拟程序整体流程图:整个过程必须使用同一个模拟对象!注册说明:l post方式提交l 参数列表:name=A12312312AASD&flow=main&uid=&password=a123123&confirmPassword=a123123&mobile=&vcode=xxx&from=email163。name参数是用户输入的邮件名称;flow参数不用动;uid参数是用户输入的邮件阅读全文

      posted @2013-04-15 00:55杨元 阅读 (3311)

      摘要:泛型是什么意思在这就不多说了,而Java中泛型类的定义也比较简单,例如:public class TestT{}。这样就定义了一个泛型类Test,在实例化该类时,必须指明泛型T的具体类型,例如:TestObject t = new TestObject();,指明泛型T的类型为Object。 但是Java中的泛型方法就比较复杂了。 泛型类,是在实例化类的时候指明泛型的具体类型;泛型方法,是在调用方法的时候指明泛型的具体类型。 定义泛型方法语法格式如下: 调用泛型方法语法格式如下: 说明一下,定义泛型方法时,必须在返回值前边加一个T阅读全文

      posted @2013-04-09 22:29杨元 阅读 (199977)

      摘要:很早以前就接触过CSS,但对于浮动始终非常迷惑,可能是自身理解能力差,也可能是没能遇到一篇通俗的教程。 前些天小菜终于搞懂了浮动的基本原理,迫不及待的分享给大家。写在前面的话: 由于CSS内容比较多,小菜没有精力从头到尾讲一遍,只能有针对性的讲解。 如果读者理解CSS盒子模型,但对于浮动不理解,那么这篇文章可以帮助你。 小菜水平有限,本文仅仅是入门教程,不当之处请谅解! 本文以div元素布局为例。教程开始: 首先要知道,div是块级元素,在页面中独占一行,自上而下排列,也就是传说中的流。如下图: 可以看出,即使div1的宽度很小,页面中一行可以容下div1和div2,div2也不会排在div.阅读全文

      posted @2013-03-27 01:01杨元 阅读 (94857)

      摘要:在程序设计过程中,读者很可能遇到这样一种困境:设计了一个接口,但实现这个接口的子类并不需要实现接口中的全部方法,也就是说,接口中的方法过多,对于某些子类是多余的,我们不得不浪费的写上一个空的实现。 今天小菜提到的“抽象接口”,就是用来解决这个问题的。 为了不误导读者,先说明一下,什么是“抽象接口”。 所谓“抽象接口”,即在提供接口的同时,提供一个抽象类,用抽象类实现该接口(实际上这是缺省适配模式)。 下面小菜举个例子,让读者体会这样做的好处。 代码写的不咋地,为了防止读者看不懂,先上一张类图:具体代码: ITestInterface.java1 /*2 假设有一个顶层接口3 */4...阅读全文

      posted @2013-03-11 22:46杨元 阅读 (19249)

      摘要:经过前两篇教程,相信读者对AJAX实际应用有了一定体会,这篇文章就来总结一下AJAX常用技术。 使用AJAX流程: l 根据浏览器类型创建XMLHttpRequest对象。 l 设置XMLHttpRequest对象的回调函数,onreadystatechange属性。 l 创建连接,open方法。 l 设置Http头信息,setRequestHeader方法。 l 请求数据,send方法。 XMLHttpRequest类常用方法、属性说明: onreadystatechange方法:设置异步响应回调函数,每当响应状态发生变化时,都将调用此函数,具体是指readyState的值变化。 open.阅读全文

      posted @2013-01-29 16:08杨元 阅读 (599)

      摘要:这个Demo是通过POST方法向服务器请求天气xml,本来也想直接访问google的天气xml接口,但是这也涉及到跨域(跨域知识前一篇有讲解),只能作罢,没办法只好自己用了一个模拟的服务器。 通过本例,展示了如下技术: l 利用AJAX向服务器POST请求。 l 利用javascript解析xml数据。 l 利用javascript更改html界面显示。 Demo概要说明: 服务器端有一个ashx服务文件,客户端通过AJAX技术向服务文件POST请求信息,如果信息正确,服务文件将读取同目录下的xml文件,返回给客户端。 客户端index.html为展示页面,调用ajax.js完成..阅读全文

      posted @2013-01-17 11:22杨元 阅读 (1512)

      摘要:在写这个Demo时,原本是想直接访问小菜博客的rss,但这是明显的跨域访问,是不允许的。 因此,小菜把博客rss保存到了本地,就是一个xml格式文件,直接用AJAX请求本地的xml文件。 通过本例,展示了如下技术: l AJAX的核心类XMLHttpRequest的使用。 l AJAX通过GET方式获取服务端xml文件。 l 利用Javascript操作xml文件。 l 利用Javascript更新html界面。 Demo概要说明: index.html作为主页,引用ajax.js脚本,在ajax.js脚本中利用AJAX技术请求同目录下的rss.xml,请求成功后在index.html中显示.阅读全文

      posted @2013-01-13 08:51杨元 阅读 (699)

      摘要:从刚刚接触B/S开发,就耳闻AJAX技术,但一直处于模棱两可的状态,大道理明白,一到动手就傻眼了。AJAX仿佛就是深不可测的技术,成为B/S学习过程中的一个阴影。直到前些日子,小菜才真正开始AJAX实践,真正动手了才发现,AJAX并没有那么困难,如果不考虑AJAX的变型应用,只考虑AJAX基本应用,它还是相当简单的,过于复杂的理论阻碍了我们动手的积极性。因此,本系列教程将从实用的角度出发,以最快的速度让读者掌握基本的AJAX应用,以最直接的方式展示AJAX技术。为了更好的阅读本系列教程,对读者有如下要求:l 熟悉HTML。l 熟悉HTTP协议。l 熟悉javascript。l 熟悉XML。l.阅读全文

      posted @2013-01-02 17:03杨元 阅读 (1154)

      摘要:Normal 0 false 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE ...阅读全文

      posted @2012-12-27 12:57杨元 阅读 (12641)

      摘要:最近做项目,需要C#与java间的交互,也就是C#编写服务器,java编写客户端,让两者进行通信。 通信无非就是互发数据,首选Socket技术,通过TCP协议建立长连接,一般是以字节数组的形式传递数据,也就是说,无论传递什么东东,都先拆成字节数组。既然是面向对象编程,发送的数据要用实体类封装,同时配合List泛型集合,可以达到非常好的灵活性、便捷性。 废话少说,本文的核心问题就是:C#与java如通过传递对象通信? 刚开始我也很迷茫,不知道这个能不能实现,但同时又很兴奋,因为自己在做一件很有意思的事。经过探索研究,发现没有问题!可行!下面分享一下! 需要用到的核心技术: n S阅读全文

      posted @2012-12-23 08:44杨元 阅读 (17797)

      摘要:提示:本文所提到的线程状态变化,并不是指线程启动、暂停、停止,而是说线程内部状态的迁移。 随着软件技术不断发展,用户需求不断提升,多线程的重要性日益凸显。 关于线程,通俗的讲,每当启动一个exe应用程序,都会创建一个进程和一个主线程,主线程用来处理界面绘制、界面事件响应等工作,而进程则是线程的容器,主线程和用户创建的新线程,都将在相应的进程中维护。 由此可知,一个程序之所以能工作,是线程的功劳,进程仅仅是容器而已,一旦程序的主线程被阻塞,就会造成界面无响应等现象,这时候就要用多线程解决问题。 然而,在程序中使用多线程,是比较头疼的一件事。以我的体会,多线程首先会造成程序不稳定,处理不好容易导.阅读全文

      posted @2012-12-10 15:08杨元 阅读 (3071)

      摘要:有良好的注释习惯,不一定是合格程序员;但没有良好注释习惯,一定不是合格程序员。 程序注释,我体会比较深刻,因为我的机房收费系统重构就是因为注释写的不好。 记得刚刚开始接触编程的时候,完全不懂注释的意义,但学习别人的代码时,发现人家都有注释,于是也学着用注释点缀自己的程序,经过将近两年的积累,我对注释有了比较深刻的认识,接下来就与大家共享一下自己的经验。 前篇废话,其实关于注释的讨论、优点、注意事项等等,网上有很多很多,本小菜在此从实际应用角度出发,分享经验。一、注释可以帮助理清思路。写注释不仅仅是关爱他人,让别人维护起来更加轻松,实际上写注释对理清思路有很大帮助。正所谓代码未动,注释先行。举.阅读全文

      posted @2012-12-05 19:57杨元 阅读 (1849)

      摘要:1. Comment each level(每个级别的注释有统一的风格)注释每一个代码块,并且在各个级别的代码块上,要使用统一的注释方法。例如:对于类,应包含简单的描述、作者以及最近的更改日期对于方法,应包含目的的描述、功能、参数以及返回值使用统一的注释规则对于一个团队是非常重要的。当然,更加推荐使用注释的约定和工具(例如,C#的XML或Java的Javadoc),它们会是注释变得更加容易。2. Use paragraph comments(对段落注释)将代码块分成若干完成独立功能的“段落”,并在每个“段落”前添加注释,向读者说明“即将发生什么”。// Check that all data阅读全文

      posted @2012-12-05 19:48杨元 阅读 (2858)

      摘要:其实这些东西网上都有,但是比较凌乱,很少有封装好的类,在此共享一下。。。 一个Socket服务器类,一个Socket客户端类,都可以直接拿去用,下边有详细的调用示例。 需要说明的是,服务器类没有处理多客户连接,只是简单的响应单客户连接。 另外,提醒一点,尤其是很多新手容易犯的错误,就是服务器类处理事务是在线程中进行的,此时不能访问界面上的控件,需要委托跨线程访问。Socket服务器类(SocketServicesHelper.cs):using System; using System.IO; using System.Net; using System.Net.Sockets; using.阅读全文

      posted @2012-11-28 17:00杨元 阅读 (2507)

      C#操作注册表REG_DWORD类型键异常(RegistryValueKind.DWord异常)解决方案

      摘要:在用C#操作注册表时,如果注册表键的类型是REG_DWORD,有可能遇到溢出BUG。网上这方面的资料很少,在这共享一下。 C#可以用RegistryKey类的SetValue方法来设置键值,例如: 看起来一切正常,但是这个RegistryValueKind.DWord是有问题的。 注册表中的REG_DWORD是无符号32位数值,而C#中的RegistryValueKind.DWord是有符号32位数值。这就意味着RegistryValueKind.DWord的表示范围比REG_DWORD小,因此导致直接传入一些大数时会抛出异常提示类型不正确。 那么如何解决这个BUG呢? 读者可能试图这样做:.阅读全文

      posted @2012-11-28 16:28杨元 阅读 (879)

      摘要:关于禁用USB接口,有一种方法是在注册表HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer位置新建键“NoDrives”,类型是REG_DWORD,通过设置其值,隐藏某个驱动器盘符;再新建一个键“NoViewOnDrive”,类型也是REG_DWORD,通过设置其值,禁止访问某个驱动器。 这些应该很好理解,U盘也是驱动器,当然可以禁用。可是问题就出在“通过设置其值”,如何设置? 关于如何设置,网上有“详细”说明,可是说的太晦涩,估计大家抄来抄去,自己也不知道是什么意思,就在网上发教程了,导.阅读全文

      posted @2012-11-28 14:22杨元 阅读 (657)

      svchost.exe启动服务原理(如何查看系统服务究竟启动了哪个文件)

      摘要:引言: 本来是不想研究这些东西的,但是米老大指示要求禁用网上邻居,顺便研究一下。 其实禁用网上邻居,可以简单的从注册表禁用,不过这样太苍白无力了,既然做,就做强悍点,直接从服务入手,彻底kill网上邻居服务(是篡改服务文件,而不是简单的暂停服务),神也无力回天,除非修复系统。 网上邻居核心服务是ComputerBrowser,那么如何找到这个服务启动的文件呢? 再多废话点,提醒各位需要禁用网上邻居的童鞋,别忘了网上邻居还有DOS版哦~~~,命令是NET,直接篡改C:\Windows\System32目录下的net.exe即可简单禁用。 注意,我们做的不是病毒,不仅能篡改,还要能改回来,不能破坏阅读全文

      posted @2012-11-11 14:19杨元 阅读 (4034)

      摘要:参考博文: SQL LIKE语句多条件贪婪匹配算法 SQL LIKE语句多条件贪婪加权匹配算法(改进版) SQL LIKE语句多条件贪婪加权匹配(新增必要词指定)前言: 算法的基本特性在前几篇博客中已经做了详细的说明,经过不断的改进优化,到归仓的时候了,也就是说,该算法告一段落,不再更新。 作为最终的解决方案,简要的总结一下算法特性,以方便读者参阅。 l 目的:主要用于多条件模糊匹配。 l 贪婪特性:返回满足条件尽可能多的记录。 l 权重特性:为关键词分配权重,AG集团代表关键词的重要性,在不破坏贪婪特性的前提下,返回权重高的记录。 l 必要关键词指定特性:在不破坏贪婪特性和权重特性的前提下,返回的.阅读全文

      posted @2012-10-18 14:29杨元 阅读 (609)

      摘要:前两篇博客:SQL LIKE语句多条件贪婪匹配算法SQL LIKE语句多条件贪婪加权匹配算法(改进版) 为了更好的扩充本算法的适用范围,特加入必要关键词指定功能。 在实际应用中,很可能希望匹配的时候必须出现某个词,否则就是没有意义的匹配。 说到这,读者可能觉得这些需求小题大做,在程序中用正则表达式很容易实现,再次重申,现在的矛盾是我们不能把记录返回到程序中处理,因为涉及到大数据量,必须考虑服务器承受能力、并发访问数量、网络传输能力、程序处理能力等诸多因素。在服务器端尽量缩小数据范围,减少数据传输量,无疑是最佳选择。 这个版本加入的新特性即必要关键词指定,同样拿“如何在CSDN网站注册用户”这句阅读全文

      posted @2012-10-18 14:12杨元 阅读 (210)

      摘要:在CMS开发中,经常会有类似这样的需求: 提问——回答模式,最经典的例子就是百度提问。 提问者提出问题,由其他人回答,其他人可以是用户,也可以是服务商。 在这个模式中,如何充分利用历史数据是最关键的技术。很多时候,由于客户不擅长使用搜索功能,一上来就提问,而这些问题往往早已经有近乎完美的答案,但没有充分利用。这样一来,不仅加大了劳动量,又增加了数据冗余。 如果在提问的时候能充分调动历史数据,提交问题之前先看看历史问题能不能解决客户疑问,解决了,最好不过,解决不了,再提交。百度提问就是采用的这种方案: 模式固然好,可怎么实现就有些困难了,毕竟这是百度作为搜索引擎的看家本领。 从上图可以看出“C.阅读全文

      posted @2012-10-04 18:46杨元 阅读 (644)

      摘要:前言废话: 微软最近推出的邮箱非常火爆,笔者也抢注了一个,当时大约是一个半月之前,微软公开注册的第二天,那时候我的名字就已经被注册了,可见是多么疯狂。。。。 最近想正式使用,因为俺现在的QQ邮箱显得太业余了。 作为专业菜鸟当然不能在网页里使用邮箱,但加入Foxmail时却遇到一系列问题,不是想的那么容易。。。。微软总是给人惊喜。。。。 经过一番搜索,终于解决了问题,考虑到网上此类教程较少,特此分享。 注:如果你看到了这篇文章,很可能是遇到了类似“IMAP接收密码错误”这样的问题。教程开始:填写outlook.com邮箱帐号,单击“下一步”。填写outlook.com邮箱密阅读全文

      posted @2012-10-04 18:35杨元 阅读 (4975)

      摘要:先来看一段单线程的原始代码(代码中有详细的注释): 服务器(TCPServer.java):import java.net.*; import java.io.*; public class TCPServer{ public static void main(String[] args) throws Exception{ ServerSocket ss = new ServerSocket(5566); //创建一个Socket服务器,监听5566端口 int i=0; //利用死循环不停的监听端口 while(true){ Socket...阅读全文

      posted @2012-09-03 09:36杨元 阅读 (12413)

      摘要:最近因为三层架构中的实体类,引发了不少小问题,下面列举一下,谈谈自己的感想。 本文所指的实体类仅限于三层中的实体类,即数据库表的映射。一、为什么要用实体类? 使程序简洁易懂,便于维护。 暗合接口不变原则。 体现面向对象思想。举例说明: 不用实体类的三层假如程序有所变动,需要增加一个参数,学生年龄用实体类的三层同样增加一个参数,学生年龄 很明显的看出,用实体类之后,代码明显变得简洁,面向对象封装思想。 最重要的是,如果将来有所改动,只需要改动实体类,方法间调用接口,完全不需要变动,大大减少了程序修改量,迎合了面向对象中接口不变的思想。 甚至在程序设计时,就把将来可能需要的属性预先放.阅读全文

      posted @2012-08-18 15:52杨元 阅读 (1076)

      摘要:最近做关于Windows Server POP3服务器的小项目,翻遍网络,也没能找到接口。 值得庆幸的是最终发现了一个控制台接口winpop.exe,也就是用cmd命令提示符与POP3服务器交互。 这样实属无奈之举,用cmd命令效率低不说,而且获取、分析返回信息相当麻烦。然而这还不算什么,最主要的是:B/S模式下,网页程序有权限调用cmd吗? 这里调用cmd,当然不是调用客户机器上的cmd,而是服务器上的cmd,这样心里还有点底。 小心翼翼的在我电脑上做了实验,成功在aspx页面中调用cmd,并执行了ping命令,而且顺利获取、分析返回信息。 于是我满怀信心的把测试程序发布到了服务器上,也是.阅读全文

      posted @2012-08-14 09:48杨元 阅读 (745)

      三层架构中使用实体类填充泛型集合代替DataTable解决方案(ASP.NET+C#)

      摘要:用三层架构开发项目,经常会遇到如下场景: D层负责与数据库交互,一般是得到DataTable或DataSet对象,然后返回给B层,B层进行类似的处理来读取数据:dt.Rows[0][“xxx”];或者dt.Rows[0][1];(强烈不建议使用)。 有时DataTable也会被传到UI层,与控件进行绑定,显示数据。例如ASP.NET的repeater控件提取数据:%# Eval(“xxx”)%。 无论是何种情况,使用DataTable不可避免的要填写读取的字段,这样做的坏处不言而喻: 非常容易写错,而且编译器不检查。 必须了解数据库的结构。 不符合面向对象编程思想。阅读全文

      posted @2012-08-01 08:17杨元 阅读 (192)

      摘要:作为一名IT菜鸟,用PE维护系统已经满足不了我的需求,把windows装进U盘又太俗,只能把目光转向Linux了。 大致从网上搜索了一下教程,尽是些N年前老掉牙的教程。别的不说,那个麻烦劲就让人吐了。 时代在发展,科技在进步,其实简单的方法早就有了,虽然网上也有一些,但是并不全面,造成很多问题。现在,本小菜把它总结出来。 准备工作: Unetbootin:Linux系统写入U盘工具。 BOOTICE:引导设置工具。 你自己的Linux系统ISO镜像。 把U盘格式化成FAT32格式,对着U盘点右键--格式化即可,不需要什么工具。 第一步,使用unetbootin向U盘写入Linux系..阅读全文

      posted @2012-07-26 09:56杨元 阅读 (338)

      摘要:方法一:通过修改注册表禁用USB原理:只要把注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\USBSTOR路径下的Start值改成4即可禁用USB(默认为3,即允许USB)。优点:简单易行。缺点:地球人都知道,很容易识破。建议:用一个timer或者创建一个线程,来锁定这个值。程序代码:using Microsoft.Win32; /// summary /// 通过注册表启用USB /// /summary /// returns/returns public boo阅读全文

      posted @2012-07-16 13:20杨元 阅读 (1559)

      摘要:俗话说,常在河边走哪有不湿鞋。前些天重新安装了系统,最近需要用IIS发布一下.NET程序。我一向很放心的IIS竟然抛出了莫名其妙的500错误,让我一头雾水。 500错误是服务器内部错误,一般和程序没关系。最终问题算是解决了,可是改动了N个地方,具体是哪的原因也不太清楚,反正跑不了这些地方。 注意:以下图有显示不全的,可以图片另存为,在电脑上看即可! 1. 开启容易被忽略的服务。 进入“控制面板---管理工具---服务---DistributedTransaction Coordinator”。把这个服务设置成自动,并且启动它。2.权限配置。第一步,修改网站应用池进程标识为:NetWorkSe.阅读全文

      posted @2012-07-15 21:14杨元 阅读 (299)

      摘要:网站静态化一直是SEO重点关注对象。静态化有好有坏,最大的好处是收录迅速,坏处是纯静态的HTML页面难以维护,特别是对于大型的网站。本文将介绍如何将新云CMS网站管理系统静态化。 本文以新云CMS 3.0为例。 1.进入后台控制面板,找到“软件频道基本设置”,点击进入,在右侧窗口找到如下设置: 在这主要是开启静态功能,设置一下静态页面存放的路径。按照图中设置好,很简单,一看就懂。我这只是一个示例,具体可以自己改,图中有关于标签的大致说明,一般情况下按照我这样配置就行了。我把图中的三个写在下边:[InstallDir][channel]downlist/s[classid]_[page].h..阅读全文

      posted @2012-06-22 09:15杨元 阅读 (1202)

      摘要:在使用C#的过程中,难免会用到多线程,而用多线程之后,线程如何与界面交互则是一个非常头疼的问题。其实不仅仅是界面,一般情况下,我们往往需要获得线程的一些信息来确定线程的状态。比较好的方式是用委托实现,看例子: 注:本例利用委托和跨线程访问技术,用界面上的两个label控件实时显示线程的执行次数。网上虽然有很多这方面的文章,但是过于简略,说明很少,刚刚接触这方面的程序员很难理解,故写此文。TestClass类:class TestClass{ //声明一个delegate(委托)类型:testDelegate,该类型可以搭载返回值为空,参数只有一个(long型)的方法。 ...阅读全文

      posted @2012-06-18 10:13杨元 阅读 (3423)

      摘要:本文将由浅入深详细介绍Java内存分配的原理,以帮助新手更轻松的学习Java。这类文章网上有很多,但大多比较零碎。本文从认知过程角度出发,将带给读者一个系统的介绍。 进入正题前首先要知道的是Java程序运行在JVM(Java VirtualMachine,Java虚拟机)上,可以把JVM理解成Java程序和操作系统之间的桥梁,JVM实现了Java的平台无关性,由此可见JVM的重要性。所以在学习Java内存分配原理的时候一定要牢记这一切都是在JVM中进行的,JVM是内存分配原理的基础与前提。 简单通俗的讲,一个完整的Java程序运行过程会涉及以下内存区域: l 寄存器:JVM内部虚拟寄存器,存.阅读全文

      posted @2012-06-11 09:46杨元 阅读 (117)

      摘要:最近完善图书馆维护系统,遇到了一个小问题: 没办法显示抛出的异常。 由于用户要求不高,所以没有对异常进行处理,直接把异常信息显示给用户,其实这样做是很不恰当的,但是时间有限,还要继续学习,不能做太细了。但是就这么个小小的问题,竟然花费了两个小时!从网上查了很多资料,基本上就没有对的,也可以说没人能给出一个明确的答案。 事情非常简单:用ASP.NET的Response.Write方法向客户端返回一段javascript代码,显示出异常信息,代码如下try{ //….}catch (Exception ex){ Response.Write(script language=&#阅读全文

      posted @2012-06-04 11:58杨元 阅读 (552)

      ASP.NET巧妙利用repeater控件和checkBox控件实现批量操作

      摘要:一般的CMS(Content Manager System)中,不可避免的会涉及批量操作。比如显示一页数据,一个良好的设计都会加上批量删除、批量推荐等操作。 在ASP.NET中,做这样的批量操作非常简单,以批量删除为例,AG集团我们仅需要checkBox控件用来多选,外加一个批量删除按钮。显示数据这里采用repeater控件。 下面是我的工程中一段代码: aspx前台文件代码: table tbody tr thclass=th_CheckBox/...阅读全文

      posted @2012-05-20 20:27杨元 阅读 (252)

      摘要:本小菜在设计数据库的时候,不幸遇到这样一个问题: 数据库中有两个表,分别是小组表和成员表。其中小组表中有一个创建者字段,成员表中有一个所属组字段。 看着挺符合逻辑的设计,却引发了一个哲学问题:先有鸡先有蛋?两个表形成了互相依赖。在数据库刚刚建成的时候,两个表中都没有数据,那么向任何一个表中插入数据都是失败的。 出现问题就要马上解决,于是我便到网上搜索,找到这样一句话:“如果两表互有关联,则为多对多的关系,按照第三范式规定,建立第三个中间表,用于存储两表主键,关联时使用第三表的字段进行关联.”。按照这个规则所说的,建立两个中间表,用来存储组表的主键和成员表的主键(另一个表反之),然后用这两个中.阅读全文

      posted @2012-05-20 19:17杨元 阅读 (183)

      摘要:这次做图书馆维护系统,首先要解决的问题就是角色权限动态分配,权限分配直接体现就是菜单的动态分配。在此和大家分享一下心得。 大多数系统,都有多种类型的用户,不同的用户权限不同,某一个功能,A类用户是可见的,但是B类用户没有必要或者不应该看见这个功能,这就要涉及到功能的动态分配。要解决这个问题,当然要从数据下手,在学姐的指导下,有了如下的UML设计图:解释一下:MemberType表是用户类型表。SystemFunction表是系统所有功能表,记录了功能的名称和对应的页面URL,思想是一个功能即一个页面。Tab表是菜单表,也就是顶级菜单,SystemFunction表中的功能将被归类到这个菜单中.阅读全文

      posted @2012-05-20 19:06杨元 阅读 (951)

      摘要:六、概要设计。 数据库分析完了,基础已经搞定,接下来就是对程序的初步设计。如何设计呢?如果是小程序,用脑子想想,也就算设计完了,但是如果是稍微复杂点的系统,恐怕就不行了。概要设计还是要借助于UML图,现在你知道它有多重要了吧?我们先来设计程序的大致结构,可以用UML的包图。作为专业水准的菜鸟,我们要用三层架构来设计程序。所谓三层架构,就是把程序分为基本的三层,分别为:UI层(用户界面层)、BLL层(业务逻辑层)、DAL层(数据访问层)。把程序分成三层,好处不言而喻,从此你就再也见不到所有东西都在一个窗体里混乱的情形,如果什么地方需要修改,再也不用去改动整个工程。每一层都有各自的功能,从UI..阅读全文

      posted @2012-04-19 13:12杨元 阅读 (219)

      摘要:四、需求分析→数据库设计 从这开始,就真正进入项目实战啦。先说点体会,我刚开始接触编程的时候,都是编写一些小东西,往往都是半天或者一天什么的就编完了,那时候根本没想过做程序之前还要有需求分析。经过快两年的学习,接触的都是比较大的系统,才明白没有需求分析的程序都太业余了,没有任何技术含量。对于一个系统来说,如果需求分析不到位,那么将有灾难性的后果,从这节的小标题就能看出,需求是数据库设计的基石,需求定了,数据库基本上就定了,数据库定了,程序的基本功能也就定了。我们以一个简单的学生管理系统为例子,来分析一下需求。分析需求地球人一般都是用UML图,啥是UML图呢,就是一种把程序用图形表示的标准,它.阅读全文

      posted @2012-04-19 13:06杨元 阅读 (224)

      摘要:写在前面的话:这个教程本来是想重点介绍SQL数据库,但是写着写着发现已经有很多关于数据的知识了,索性把项目整个开发过程都写了下来。由于时间确实很紧,教程收尾比较匆忙,感觉写的很对不起大家,但是基本上一个项目的流程就这么多了(不包括后期测试),什么时候该做什么,该用什么工具,有什么技巧,都差不多说到了,我的能力也就到这了。补充一点:每个阶段都要产生相应的文档,这可是非常重要的,真正做项目的时候不要忽略了! 直到现在,接触数据库的时间大约有一年了,刚开始用的时候真是一点也不懂,就那么硬生生的用,经过一年的积累,虽然还算是小菜,但是也懂得点东西。为了整理知识,同时帮助更多的人能更好的学习数据库,我.阅读全文

      posted @2012-04-19 13:00杨元 阅读 (319)

      JQuery以POST方法从ASP.NET服务器获取Json数据完整示例

      摘要:最近学习JQuery,用到了它的POST方法向服务器请求数据,服务器返回Json格式的数据。看上去非常简单,但出了很多莫名其妙的问题。主要原因就是第一次学习太生疏,很多地方写的不规范造成的。这方面的资料虽然可以从网上查到,但是百花齐放,怎么写的都有,在此,我就以标准的格式写一个例子,希望对大家有帮助,也给自己留着备用。 本文适合有一定JQuery、ASP.NET基础的读者阅读。 在写例子之前,还要啰嗦些重点内容: 无论何种客户端,向服务器传递数据都有两种方式:GET方法和POST方法。GET方法传递的数据直接写在URL上,比如:阅读全文

      posted @2012-01-31 16:11杨元 阅读 (9361)

      摘要:学习web开发,使用Cookie是不可避免的,在这就浅显的总结一下。仅供新手参阅,老鸟路过。个人感觉Cookie的使用和ASP.NET中的Session非常像,只不过Cookie是保存在客户端,而Session是在服务器端,两者都以记录信息为目的,作为访问网站的凭据。本文仅仅是实践操作,不涉及理论知识。 本来想画个思维导图,但是想想还是算了,我不太喜欢在博客中贴一个让人眼花缭乱的思维导图,而且思维导图以图片的形式存在也不利于知识的传播。实际操作之前简单的讲一下Cookie吧! Cookie其实就是一些保存在客户端的小文件,为下次访问网站时保存一些信息,比如:是否登录。Cookie的最大优...阅读全文

      posted @2012-01-27 19:02杨元 阅读 (189)

      摘要:为了避免本文误导大家,首先声明:在面向对象语言中探讨这些没有太大的意义,但是它可以帮助我们更好的理解.NET语言特性。本文以C#为例,会涉及.NET中的克隆(浅复制)。 关于这个讨论,是由合作开发引起的。当时在DBHelper层里使用了new关键字创建一个数据库表对象(DataTable),而我在数据访问层(DAL)接收数据库表对象时没有加关键字new,只是声明了一个类型为DataTable的“对象变量”:DataTable dt;而没有这样声明:DataTable dt = new DataTable();究竟这样写对不对呢? 废话不多说,直接说原理:地球人都知道,要想实例化一个对象,必须用阅读全文

      posted @2012-01-19 21:29杨元 阅读 (205)

      摘要:很多时候我们需要利用参数在存储过程中重新组织SQL语句,在存储过程中拼接的SQL语句只是一个字符串,不会被直接执行,所以加一个execute执行它就可以了。具体看如下演示代码:代码:set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgo-- =============================================-- Author: yy-- Create date: 2012-1-17-- Description: 存储过程SQL字符串拼接示例-- =============================================..阅读全文

      posted @2012-01-18 09:59杨元 阅读 (1213)

      摘要:JavaScript原型概念说不好理解其实没那么难,说好理解其实也没那么简单,关键是你有没有找到一个合适自己的理解方法。预备知识: 我想研究js原型的人肯定对js有一定了解,所以基础的知识不再赘述。但是我还要强调一些变态的知识点:l JavaScript没有类的概念,是基于原型的面向对象。l function这个关键字一定要理解正确!这不是传统意义上的定义函数的关键字,而是类!一定要把function理解成类!所以,在function a(){}时,其实你是在创建一个functio的实例,a不是函。


    上一篇:51CTO博客20       

    下一篇:杭州:做活水文章 做优水生态 让城市更宜居生活
    Copyright©2015-2019AG集团版权所有                                       网站地图