- 浏览: 57948 次
- 性别:
- 来自: 北京
最新评论
-
SeasonWu:
很有帮助,多谢指点。请问博主,一般手机APP来服务端(假设是P ...
[摘录]Restful 的无状态原则
文章列表
摘自 http://www.cnblogs.com/qianlifeng/archive/2011/04/22/2024856.html
【写日志的原则】
Ⅰ.在catch后,把异常写入日志.
Ⅱ.在调用第三方控件的开始和结束处.
Ⅲ.在连接数据库的开始结束处.
Ⅳ.除非必要,不要在循环体中加入日志,否则一旦出问题可能导致日志暴增.
Ⅴ.在自己认为很重要的逻辑处写入日志.
日志在线下开发测试阶段和线上运行阶段功用不同:
线下开发测试阶段logging主要用于验证程序逻辑, 线上运行阶段主要目的是记录异常和错误,便于定位外部系统异常、程序潜在bug,快速修复。
今天碰到lognet 配置完毕后打印不出日志的问题,查阅网上资料发现,原因多是配置和使用不全。
配置步骤归结为三步:
1. project中引入log4net.dll,这里推荐使用nuget。。。简单方便快捷
2. 定义lognet配置项,可在Web.config 或者 App.config 等配置文件中定义,也可以使用独立的配置文件。
3. 在程序中显式声明使用配置项。也有两种方法,一是在Assembly.cs中[assembly: log4net.Config.XmlConfigurator(Watch = true)]或其变种, 或者在程序main方法第一条语句前加入log4ne ...
在SqlServer中,没有单独的TRUNCATE权限。如果需要执行TRUNCATE操作,至少需要ALTER权限,运维同事基于安全因素考虑一般不愿意给开ALTER权限。这里有一种折中方法:首先由dbo建立一个存储过程
CREATE PROCEDURE [dbo].[sp_TruncateTable]
@TableName varchar(50)
WITH EXECUTE AS SELF
AS
BEGIN
SET NOCOUNT ON;
DECLARE @TruncateSql nvarchar(2000)
SET @TruncateSql = 'TRU ...
简述公钥加密过程:
背景: 两个用户 Alice 和 Bob。
Bob 拥有一对密钥(公钥、 私钥)。
事件: Alice 需要将一段信息加密后发送给Bob。
过程:
1. Bob 将自己的公钥发送给 Alice
2. Alice 使用Bob的公钥对信息进行加密得到密文,然后将密文传送给
3. Bob 使用自己的私钥对密文进行解密,得到明文信息。
一句话简述: Alice使用Bob的公钥加密,Bob使用自己的私钥解密。
简述公钥认证过程:
...
短短五句真诀,记住即可。
四舍六入五考虑
五后非零就进一
五后皆零看奇偶
五前为偶应舍去
五前为奇要进一
浓缩即是精华。
本文转自: http://blog.02ta.com/blog/java/thinking-in-java
第1章 对象导论
继承的关系意味着有时需要在已写好的接口类中添加新方法
向上转型这个词源于继承图的典型布局方式,通常基类在顶部而导出类在其下部散开.
抽象类的作用是不希望任何人创建基类的实际对象,而只是希望他们将对象向上转型到基类
1. 安装jar包到本地maven仓库(以heritrix1.14.4.jar为例)
mvn install:install-file -DgroupId=org.archive.heritrix -DartifactId=archive-commons -Dversion=1.14.4 -Dpackaging=jar -Dfile=/path/to/heritrix-1.14.4.jar
2. pom.xml中使用本地仓库
<!-- We add a local repository that comes with this project,
for I do ...
原理在这里: http://www.cnblogs.com/allensun/archive/2011/02/16/1956532.html
构造方法如下:
/**
* 构造Bloom Filter
* @param capacity 支持的最大元素数
* @param errorRate 期望的最大错误率
*/
public LongBloomFilter(int capacity, double errorRate) {
// 计算实际需要的最小位数组长度m
size = (int) Math.abs(capacity * ...
一句话:数据类型的字节数由编译器决定。
转自: http://www.cnblogs.com/augellis/archive/2009/09/29/1576501.html
常用数据类型对应字节数 可用如sizeof(char),sizeof(char*)等得出
32位编译器:
char :1个字节 char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器) short int : 2个字节 int: 4个字节 unsigned ...
"Statelessness" 是restful风格最重要的原则。它的含义是指,客户端和服务器交互的过程中(各次请求之间)是无状态的。 无状态是针对于“状态”来说的。 一个WEB应用协议中的“状态”指的是,为两个相互关联的用户交互操作保留某种公共信息,例如用户登录信息,工作流等。 这些信息具有不同作用域,如page,request,session,application等。通常由服务器负责保存这些信息。
“无状态” 的概念逐渐流行,得益于分布式系统的发展。首先,无状态请求易于实现负载均衡。在分布式web系统下,有多个可用服务器,每个服务器都可以处理客 ...
HTTP HEAD用作缓存验证和更新
- 博客分类:
- web
HTTP缓存的主要目的是为了节约网络传输(避免重复下载资源),提高交互效率(直接读取本地缓存的资源,速度一般比网络传输快)。基于这些考虑,GET方法一般都支持缓存。
HEAD请求本身不下载任何资源,这是它与GET的唯一区别。 HEAD一般用于测试网络资源的有效性(是否存在),可访问性,以及缓存的资源是否需要更新。 如何验证资源是否过期和需要更新呢,根据ResponseHeader中的MetaInfo(例如LastModified, E-tag等)来判断。 首先,我们通过GET请求获取资源,并加入缓存中, 同时记录资源的更新时间LastModified。在下次需要该资源时, ...
详细信息见:
http://www.csharpcity.com/sqlite-ado-net-c-4-0/
具体操作参考:
http://www.dreamincode.net/forums/topic/157830-using-sqlite-with-c%23/
转自:http://hi.baidu.com/%CC%D8%B0%AE%C0%B6%C1%AB%BB%A8/blog/item/5b4856122dfabd5e43a9ade7.html
top - 13:37:58 up 51
days, 20:48, 2 users, load average: 0.05, 0.03, 0.02Tasks: 290 total, 1 running, 289 sleeping,
0 stopped, 0 zombieCpu(s):
0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0. ...
linux 内存使用量计算
- 博客分类:
- linux
转自:http://blog.taoyiz.com/archives/172
Linux 优先使用物理内存,当物理内存还有空闲时,linux是不会施放内存的,即时占用内存的程序已经被关闭了(这部分内存就用来做缓存了)。也就是说,即时你有2G的内存,用过一段时间后,也会被占满。这样做的好处是,启动那些刚开启过的程序、或是读取刚存取过得数据会比较快,对于服务器很有好处。
你可以用 free 指令查看一下输出,用 used 减去 buffer 和 cache,才是你运行中的程序所占用的空间,举例如下:
total used free shared buffers cached
Mem: ...
java调优整理--堆和栈的相关知识
- 博客分类:
- java
栈用来表示程序的运行处理逻辑,而堆用来存储数据。
java中每个线程都有一个独立于其他线程的线程栈,每个线程栈代表了不同的处理逻辑。线程栈大小一般为1M,可根据-Xss参数调整。
堆是程序存储数据(对象)的地方,堆中的数据是共享的,这样的设计一方面便于线程间交互,另一方面堆可以存储一些公共的常量、对象及缓存,节省内存。
java的数据类型可以分为基本类型和引用类型。基本类型因为大小固定,且长度均在1-8个字节,因此存储在栈中。 对象存储在堆中,对象的引用存储在栈中。
java线程栈的大小可以通过-Xss设置,当栈中存储数据比较多时,可适当调大线程栈。java.lang.StackO ...