浅谈PHP神盾的解密过程
摘要:我们来做第一步解密处理吧。 PS: 这只是我的解密思路,与大家分享一下,也许你有更好的方法还望分享 $p' . $i); // 记录到日志 $i++; } $str = str_replace($params, $replace, $str); // 第二步 替换所有函数名 //...
阅读全文
posted @
2014-04-25 20:54
haosola
编辑
Java连接mySql—JDBC连接数据库
摘要:利用JDBC开发数据库 经典应该用框架: 第一步,加载JDBC数据库驱动程序(不同的数据库有不同的数据库驱动,所以在连接数据库之前,需加载驱动) 格式: String driver = "com.mysql.jdbc.Driver"; Class.forName(driver);//加...
阅读全文
posted @
2014-04-25 20:49
haosola
编辑
C++ 中的权限控制
摘要:权限控制,指的是用户只能访问符合自己权限的资源,系统对用户进行权限控制以防止用户的误操作/恶意操作等。 在C++代码中,权限控制指的是程序员在接口声明/类声明/函数声明等中进行的授权控制。如下面的代码: 复制代码 class base { //friend 授权getX函数对本类的完全...
阅读全文
posted @
2014-04-25 20:46
haosola
编辑
一对多关系映射
摘要:两张表之间如果存在外键,就会出现一对多关系(外键不能同时是主键) 如果想使用pojo类来表示一对多关系,这里以省份和城市为例: 省份类中应该包含多个城市的对象,一般默认使用Set集合表示某个省份下多个城市 城市类中应该包含一个省份的对象。 如果在表中存在外键,且使用MyEclipse一起...
阅读全文
posted @
2014-04-24 22:49
haosola
编辑
java POI实现向Excel中插入图片
摘要:做Web开发免不了要与Excel打交道。今天老大给我一个任务-导出Excel.开始想的还是蛮简单的,无非就是查找,构建Excel,response下载即可。但是有一点不同,就是要加入图片,就是这个加入图片搞了好久。同时网络上确实没有发现比较好的资料,所以写这篇博文记录之,供自己和博友们查询,参考...
阅读全文
posted @
2014-04-22 22:34
haosola
编辑
Java多线程:Semaphore
摘要:Semaphore为并发包中提供用于控制某资源同时可以被几个线程访问的类 实例代码: // 允许2个线程同时访问 final Semaphore semaphore = new Semaphore(2); ExecutorService executorService = Executo...
阅读全文
posted @
2014-04-21 20:21
haosola
编辑
Hibernate各种主键生成策略与配置详解
摘要:1、assigned 主键由外部程序负责生成,在 save()之前必须指定一个。Hibernate不负责维护主键生成。与Hibernate和底层数据库都无关,可以跨数据库。在存储对象前,必须要使用主键的setter方法给主键赋值,至于这个值怎么生成,完全由自己决定,这种方法应该尽量避免。 ...
阅读全文
posted @
2014-04-19 09:43
haosola
编辑
C# 线程间互相通信
摘要:C#线程间互相通信主要用到两个类:AutoResetEvent和ManualResetEvent. 一、AutoResetEvent AutoResetEvent 允许线程通过发信号互相通信,线程通过调用 AutoResetEvent 上的 WaitOne 来等待信号。 如果 AutoRes...
阅读全文
posted @
2014-04-19 09:36
haosola
编辑
asp中cookie欺骗/注入原理与防范
摘要:一直以来sql注入被广泛关注,也有专门的防注系统代码。发现,如果代码不严谨也会有cookie欺骗/注入的情况。原来, 防注入系统没有注意到 Cookies 的问题!这里以ASP为例,分析一下cookie欺骗/注入的产生。 Request.QueryString (GET) 或 Request....
阅读全文
posted @
2014-04-17 13:19
haosola
编辑
ASP.NET MVC下的四种验证编程方式
摘要:ASP.NET MVC采用Model绑定为目标Action生成了相应的参数列表,但是在真正执行目标Action方法之前,还需要对绑定的参数实施验证以确保其有效性,我们将针对参数的验证成为Model绑定。总地来说,我们可以采用4种不同的编程模式来进行针对绑定参数的验证。 一、手工验证绑定的参数 ...
阅读全文
posted @
2014-04-15 23:26
haosola
编辑
正确实现浅拷贝和深拷贝
摘要:浅拷贝和深拷贝的区别: 浅拷贝: 修改副本的值类型字段不会影响源对象对应的字段,修改副本的引用类型字段会影响源对象,因为源对象复制给副本对象的时候,是引用类型的引用地址,也就是两者引用的是同一个对象。 深拷贝: 无论值类型还是引用类型的字段,修改副本对象不会影响源对象,即使是引用类型,也...
阅读全文
posted @
2014-04-15 23:19
haosola
编辑
hibernate映射关系之多对多
摘要:多对多: * 关系在第三张表中,和两张表本身没有关系 * 多对多谁维护关系:谁都能维护关系(效率是一样的),一般情况下可以通过页面 来体现 * 关系体现: 第三张表的维护:增加、删除 course类对应的映射文件 student表对应的映射文件 多对多情况示例 import java.lang.annotation.Target; import java.util.HashSet; import java.util.S...
阅读全文
posted @
2014-04-12 14:52
haosola
编辑
ADO.NET- 基础总结及实例介绍
摘要:最近闲暇时间写的一些小程序中,访问数据库比较多;下面主要介绍下ADO.NET方面知识,有不足之处,希望大神们不吝赐教: 提到ADO.NET,经常会和ASP.NET进行混淆,两者的区别很大,没有可比性,下面讲下两者之前的区别: ASP.NET是微软在。net Framework提供的,用于开发web应用程序的类库,封装在System.Web.dll中,对应程序中是System.Web这个命名空间。 ADO.NET 对 Microsoft SQL Server 和 XML 等数据源以及通过 OLE DB 和 XML 公开的数据源提供一致的访问。ADO.NET 类在 System.Data...
阅读全文
posted @
2014-04-11 18:47
haosola
编辑
java中数据类型及运算符的注意事项
摘要:java中数据类型及运算符的注意事项 数据类型: boolean 类型数据只允许取值true 或 false(不可以使用0 或非0的整数来代替true和false,区分于C语言)。 char:Java中用" \u四位十六进制的数字 (即使在注释中出现\u ,后面如果跟的不是4个数字,也会报错)"表示将字符转换成对应的unicode编码,字符类型要用单引号括起来。有人说char其实也是整型是没有问题的。 double和float并不能表示一个精确的数字,当我们写doubled=0.0的时候,其实java并不知道我们要的数是0.0,他可能给我们生成的数字是0.01.因为doub
阅读全文
posted @
2014-04-11 18:43
haosola
编辑
利用C++ RAII技术自动回收堆内存
摘要:在C++的编程过程中,我们经常需要申请一块动态内存,然后当用完以后将其释放。通常而言,我们的代码是这样的: 1: void func() 2: { 3: //allocate a dynamic memory 4: int *ptr = new int; 5: 6: //use ptr 7: 8: //release allocated memory 9: delete ptr; 10: ptr = NULL; 11: } 如果这个函数func()逻辑比较简单,问题不大,但是当中间的代码有可能抛出异常时,上面的代码就会产生内存泄露(memory leak),如下面代...
阅读全文
posted @
2014-04-11 18:40
haosola
编辑
C++封装常用对象和对头文件探索
摘要:在C++实际开发中,难免会使用到一些你极为常用的算法(比如笔者经常使用的多线程技术),实现这些算法的类或是全局函数或是命名空间等等经常都要被使用多次,你会有哪些办法来使用呢?笔者有4个办法。 第一个方法就是你直接重新编写一个和原来一样的算法,但是这种方法又费时又费力,效率不高,只有初学者在没有办法的时候才会使用这种方法。第二种方法也是如此,就是复制一份代码到新写的文件中,这种方法的缺点是你不确定能否找到之前的代码,而且一点也不像IT人员的解决方案。 我们重点介绍第三种和第四种方法。 第三种方法是在需要的地方声明这个类或是全局函数。注意声明的时候要使用extern关键字来声明(任何东西...
阅读全文
posted @
2014-04-10 09:52
haosola
编辑
String.split()方法你可能不知道的一面
摘要:String.split()方法你可能不知道的一面 一、问题 java中String的split()是我们经常使用的方法,用来按照特定字符分割字符串,那么我们看以下一段代码: public void splitTest() { String str = "aaa|bbb|ccc"; String[] array = str.split("|"); System.out.println(Arrays.toString(array)); } 是不是感觉很简单,就是吧str按照"|"分割,结果就是[aaa,bbb,ccc]嘛。如果你这么想,
阅读全文
posted @
2014-04-10 09:32
haosola
编辑
动态内存分配(new)和释放(delete)
摘要:在之前我们所写过的程序中,所必需的内存空间的大小都是在程序执行之前就已经确定了。但如果我们需要内存大小为一个变量,其数值只有在程序运行时 (runtime)才能确定,例如有些情况下我们需要根据用户输入来决定必需的内存空间,那么该怎么办呢? 答案是动态内存分配(dynamic memory),为此C++ 集成了操作符new 和delete。 1. new 和new [] 操作符 动态内存分配用操作符 new 。new 后面跟一个数据类型,如果要求的元素多于一个,需要加上 [],元素数量放在 [] 中。它返回一个指向内存块开始位置的指针。语法是: pointer = new type...
阅读全文
posted @
2014-04-10 09:26
haosola
编辑
C#实现的异步Socket服务器
摘要:介绍 我最近需要为一个。net项目准备一个内部线程通信机制。 项目有多个使用ASP.NET,Windows 表单和控制台应用程序的服务器和客户端构成。 考虑到实现的可能性,我下定决心要使用原生的socket,而不是许多。NET中已经提前为我们构建好的组件, 像是所谓的管道, NetTcpClient 还有 Azure 服务总线。 这篇文章中的服务器基于System.Net.Sockets类异步方法。 这些允许你支持大量的socket客户端, 而一个客户端的连接是唯一的阻塞机制。 阻塞的时间是可以忽略不记得,所以服务器基本上是在当做一个多线程socket服务器在运作的。 背景 原生的...
阅读全文
posted @
2014-04-10 09:20
haosola
编辑
判断一个图是否有环
摘要:算法1 我们知道对于环1-2-3-4-1,每个节点的度都是2,基于此我们有如下算法(这是类似于有向图的拓扑排序): 求出图中所有顶点的度, 删除图中所有度 >&graph, int node, vector&visit, vector&father) { int n = graph.size(); visit[node] = 1; //cout《node《"-\n"; for(int i = 0; i "; tmp = father[tmp]; } cout《tmp《endl; } else if(visit[i] == 0) { f
阅读全文
posted @
2014-04-08 16:42
haosola
编辑
Asp.net的IP地址屏蔽功能设计
摘要:"IP地址的长度为32位,分为4段,每段8位,用十进制数字表示,每段数字范围为0~255,段与段之间用句点隔开。" 由此我们了解到,IP地址实际上是一个32位正整数,在C#中可以使用uint类型来表示,但SQLServer数据库里好像没有对应的类型;转而使用数据库支持的int类型的话,则会出现溢出的情况;因此我们做出妥协:使用long(bigint)类型。 TIP: int取值范围:-2,147,483,648 到 2,147,483,647 uint取值范围:0 到 4,294,967,295 long取值范围:-9,223,372,036,854,775,808 到 9
阅读全文
posted @
2014-04-08 16:37
haosola
编辑
Hibernate 事件监听
摘要:事件监听是JDK中常见的一种模式。 Hibernate中的事件监听机制可以对Session对象的动作进行监听,一旦发生了特殊的事件,Hibernate就会调用监听器类中的事件处理方法。在某些功能的设计中,既可以使用Hibernate的拦截器实现,也可以使用Hibernate的事件监听来实现。 Hibernate 定义了多个事件涵盖了持久化过程中的不同生命同期,即Session对象中的第一个方法均分别对应事件。调用某个方法时就会触发相应的事件,并被预先设置的监听器收到及处理。 Hibernate中事件监听器接口均在org.hibernate.event包中,事件与监听器接口对应关系如下:...
阅读全文
posted @
2014-04-02 10:24
haosola
编辑
使用BOOST BIND库提高C++程序性能
摘要:Boost.Bind为函数和函数对象,值语义和指针提供语义了一致的语法。我们首先通过一些简单的例子来看看它的基本用法,之后我们会延伸到嵌套绑定以实现功能组合。理解bind用法的一个关键是理解占位符(placeholder)的概念。占位符表示该参数将在函数对象里面提供。Boost.Bind提供多达9个这样的参数--_1, _2, _3, _4, _5,_6,_7,_8, _9.你可以在想要加入参数的地方使用它们。在第一个示例程序中,我们定义一个函数"nine_arguments",之后用bind表达式调用它。 #include #include boost/bind.hpp
阅读全文
posted @
2014-04-02 10:16
haosola
编辑