手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表Tag:java

备份:sqlserver to mysql

从sqlserver转到mysql上相对还是比较方便的,外面的工具层出不穷,比如dbconverter之类的,可惜它是商业版,而且,15M左右,还TNND没有破解版。
问了一下google和百度,最终度娘没有帮我解决,而且谷哥告诉我答案了:http://www.cnblogs.com/andrew-blog/archive/2011/12/03/SQL_mss2sql.html
然后下载到本地。做个备份,以后可以直接用
下载:mss2sql.rar
只有1.3M哦,非常好用,昨天帮一个朋友转数据的时候,只花了大约半小时左右转换了将近1G左右的数据。

由于用法简单就不多做介绍了,sqlserver的登录可以直接选系统登录,而不需要输入密码,你懂的。甚至可以支持远程导入,黑黑。。。当然这受限于网络带宽的传输了。
如果还不会,就看我上面的URL吧,里面有图文教学,不过我相信,即使没有教学,也是下一步下一步就会搞的。

Tags: sqlserver, mysql, convert

/*!select*/ 突破防注入

看到本文的时候,其实我还是很蛋定的,大约早在3年多前就看到有人这么做过了,当时还给我发了一大堆这样的代码。
其实还有例子,那就是当初在liba网的时候,有一段时间突然发现MYSQL超慢。bobby查询了所有的数据库查询,发现了类似本文的例子,那时候其实很惊讶,/*!xxxx*/这样的代码不是被注释了吗?又能用来干嘛 ?
所以,今天看到这一篇博客的时候,还是忍不住贴出来,因为这已经真的不算是秘密的秘密了。

来源:http://hi.baidu.com/isbx/blog/item/795dcc112b85f40eb8127b4d.html

作者:meao

昨天在检测一个外国PHP网站时
在id=255后加’出现forbidden
于是我and 1=1正常 and 1=2出错
说明肯定有注入
接着我order by猜出字段
然后union select 1,2,3,4 //悲剧的又出现了forbidden
肯定是做了过滤了
后来构造了语句id=-255+union+/*!select*/+1,2,3,4

原理:

MySQL Server supports some variants of C-style comments. These enable you to write code that includes MySQL extensions, but is still portable, by using comments of the following form:

/*! MySQL-specific code */

In this case, MySQL Server parses and executes the code within the comment as it would any other SQL statement, but other SQL servers will ignore the extensions. For example, MySQL Server recognizes the STRAIGHT_JOIN keyword in the following statement, but other servers will not:

SELECT /*! STRAIGHT_JOIN */ col1 FROM table1,table2 WHERE …

If you add a version number after the “!” character, the syntax within the comment is executed only if the MySQL version is greater than or equal to the specified version number. The TEMPORARY keyword in the following comment is executed only by servers from MySQL 3.23.02 or higher:

CREATE /*!32302 TEMPORARY */ TABLE t (a INT);

The comment syntax just described applies to how the mysqld server parses SQL statements. The mysql client program also performs some parsing of statements before sending them to the server. (It does this to determine statement boundaries within a multiple-statement input line.)

Tags: select, mysql

解决图片防盗链接问题

在直接引用外部图片的时候,经常会出现,该图片来自于XXX网站,请勿盗链
找了一下资料,发现只有几种方法可以解决
1、JS,HTML里嵌入iframe,然后类似地打开一个网页的形式,使得页面认为已经访问过主体网站,所以可以解决防盗链
2、如果页面中的图片是:/xxljaslkdjf/xxx.jpg,而这个图片事实上来自于:xxx.xxx.com网站,这时候在页面的<base >TAG里设置一下,就不需要全文正则替换图片了。灰常方便。。。
3、设置HTTP_REFERER,这个有点麻烦,不是每个站都支持。。。
4、在页面中放置一iframe,地址就是主体网站。然后等访问完成后302跳转到真正的页面,图片就能正常了
5、用URL转发的形式,如:image.php?url=image.path.jpg,通过这种方式,几乎解决了很多问题(但,不能走CDN了。真可惜啊。怎么办呢??生成本地图片后,再由CDN转发?不太现实)

基本上就上述的方法了,如果你还有新方法,请告知

Tags: 盗链

update sql

更新数据库的时候,提示: You can't specify target table 'channels' for update in FROM clause
出错的SQL是什么呢?
出错的是SQL是:
update channels set parentid = 0 where parentid in (select b.id from channels b where b.parentid = 0) ;
从理论上来看好象没什么错,但就是出现上面的错误(You can't specify target table 'channels' for update in FROM clause),说是不能在原表操作。于是改正它。。
改成:
update channels set parentid = 0 where parentid IN ( select id from (SELECT id from channels where parentid = 0) as tmp )
看上去是不是很恶心?但确实是通过临时表来解决了这个问题。。。
好吧,我又恶心了

Tags: update, 子查询

浏览器对JavaScript代码执行的限制

这是相对比较值得关注的内容,要知道浏览器对JS的解析都是通过他们自带的一些引擎来牏的。比如chrome所谓的V8引擎,都会有针对性的进行加速和处理,再者比如说IE对JS的规范支持又是比较延后的。因此,了解一下各个浏览器对JS代码执行的限制等,对于开发中遇到的问题也会有一定的了解。。

好吧,原文来自于:“http://rockux.com/archives/%E6%B5%8F%E8%A7%88%E5%99%A8%E5%AF%B9javascript%E4%BB%A3%E7%A0%81%E6%89%A7%E8%A1%8C%E7%9A%84%E9%99%90%E5%88%B6”

浏览器的用户界面和JavaScript代码共享同一个处理进程。无论是浏览器需要响应一个菜单的点击,还是渲染一个页面或者执行Ajax请求,每一个事件都会添加到一个队列中。当浏览器空闲的时候,就会继续执行队列中的任务。

浏览器的线程

实际上,在高端一些的浏览器中都不是只有一个线程。作为极端的例子,IE9和Chrome会为每一个tab生成一个系统的进程。然而,对于每一个页 面来说,仍然只有一个事件处理的队列,也就意味着一次只能执行一个任务。这很必要,因为浏览器或者你的JS都可能会去更改HTML的内容。

不难理解,浏览器必须要限制你的JS执行的时间。如果执行时间很长,会锁死进程甚至导致系统崩溃。这就是你会看到这个“无响应的脚本”的对话框原因。

但是浏览器怎么来决定一个代码是不是执行的时间超长了呢?正如你所想的,5个流行的浏览器的处理方式都不一样。

IE

IE对JS代码的限制是500万条。

Firefox

FireFox使用时间来限制,最多是10秒。

Safari

Safari也是限制5秒。

Chrome

Chrome没有特别的限制,但是他会去检测浏览器是否崩溃或者没有响应。

Opera

Opera也没有限制。但是浏览器不会引起系统的崩溃,你在这个停止响应的时候还可以继续开Tab。

有的浏览器允许你自己配置限制的数额,但是不推荐这样改。这样有的人可能用这种办法来修复“不能响应”的页面。你可以搜一下,但是通过修改浏览器的配置来解决响应的问题不是最终的解决办法。

那么如何才能防止JavaScript抛出这样的错误呢?最佳的解决办法就是避免在客户端执行需要长时间运行的函数。理想情况下,所有的函数都应该在几十毫秒内解决问题。更多更复杂的计算应该交给后端然后通过刷新页面或者异步方法来处理。

然而,我们应该意识到减少客户端的压力在现在这种JS大型应用中不是最佳的办法。还有一些别的办法,我们后面会讲到。

 

Records:1012