背景 今天在维护一个旧项目的时候,看到一个方法把string 转换为 byte[] 用的是写入内存流的,然后ToArray(),因为平常都是用System.Text.Encoding.UTF8.GetBytes(string) ,刚好这里遇到一个安全的问题,就想把它重构了. 由于这个是已经找不到原来开发的人员,所以也无从问当时为什么要这么做,我想就算找到应该他也不知道当时为什么要这么做. 由于这个是线上跑了很久的项目,所以需要做一下测试,万一真里面真的是有历史原因呢!于是就有了这篇文章. 重构过…
1.要弄懂"~"运算符的计算方法,首先必须明白二进制数在内存中的存放形式,二进制数在内存中是以补码的形式存放的 另外正数和负数的补码不一样,正数的补码,反码都是其本身,即: 正数9(1001)在内存中存储为01001,必须补上符号位 补码为01001 反码为01001,其中前面加的0是符号位,负数的是1 负数 -1(10001,开头的1为符号位)在内存中存放为,11111 其中11111为其补码 反码为11110 负数的补码是:符号位不变,其余各位求反,末位加1 ,即11111 反码是…
Zend Studio默认php文件的存放路径是你配置的服务器的路径,比如你配置的服务器是localhost,那么,你在zend下建立的文件均是相对于localhost而言的,比如你新建一个php工程,名字为PHP,然后在这个工程中又建立了一个文件index.php,那么当你调试运行的时候,其浏览器中显示的路径将为http://localhost/PHP/index.php .这一点需要注意.…
前言:我是喜欢编程的一只菜鸟,在自学过程中,对遇到的一些问题和困惑,有时虽有一点体会感悟,但时间一长就会淡忘,很不利于知识的积累.因此,想通过博客园这个平台,一来记录自己的学习体会,二来便于向众多高手请教. 最近学习C语言,主要使用C-Free进行编写.在学习过程中发现,书中提示C语言必须要遵循某种写法,但是奇怪的是,不按照这种写法却也能通过编译. 如以下代码: #include <stdio.h> struct point /*定义结构体*/ { int x; int y; }; int m…
一.查看API sleep是Thread类的方法,导致此线程暂停执行指定时间,给其他线程执行机会,但是依然保持着监控状态,过了指定时间会自动恢复,调用sleep方法不会释放锁对象. 当调用sleep方法后,当前线程进入阻塞状态.目的是让出CPU给其他线程运行的机会.但是由于sleep方法不会释放锁对象,所以在一个同步代码块中调用这个方法后,线程虽然休眠了,但其他线程无法访问它的锁对象.这是因为sleep方法拥有CPU的执行权,它可以自动醒来无需唤醒.而当sleep()结束指定休眠时间后,这个线程…
大家为了节省空间,常常进行按需引入来节省空间,这里我给大家来介绍一下element中按需引入无限滚动指令注意的事项. 针对前面element 按需引入的一些配置这里就不再详细介绍了. 那么这里讲的是在main.js写入以下代码. import { InfiniteScroll } from 'element-ui'; Vue.use(InfiniteScroll) 好,这样引入.注册了,那么我们接下来做得事情就是在页面使用它. <template> <ul class="inf…
有如下代码段: ofstream ofs; while(...) { ofs.close(); ofs.open(...) ofs << "内容"; ... } ofs.close(); 你也发现了,这里在第一次open之前多余地调用了一次close,结果就是,创建了输出文件,但却没有按预期写入任何内容. 原因:第一次调用close会产生错误标记,从而导致写操作失效.调用相关函数检测状态的结果是: is_open(); //true eof();//false bad();…
首先,Vue 的官方是不建议直接操作 DOM 的,其优势在于视图和数据的双向绑定,而且所有DOM操作都可以用Vue实现,反而使用jQuery来操作DOM的话,会造成不必要的麻烦,DOM未渲染完成之前事件绑定不上,当然也有解决办法,比如setTimeOut,但是何必呢?直接用Vue不是更方便吗? 这里是用v-for循环渲染的列表,而之后要对列表进行DOM操作,代码如下,初次渲染的时候没有问题,事件可以正常绑定,但数据刷新两次之后,就获取不到DOM了,当然事件也无法执行.当然也可以用setTimeO…
<script type="text/javascript"> window.onload = function () { var obj = document.getElementById("divID"); alert(obj.innerHTML); } $(function () { var objQuery = $("#divID"); alert(objQuery.html()); }); </script> 如…
rpm安装包通常为二进制包(Binary)以及源代码包(Source)两种形式. 在使用源代码方式安装MySQL的时候,官方站点上下载的源代码包通常为scr.rpm格式,而不是直接的tar包.对此,须要先使用rpm命令先安装源代码后在进行编译安装.本文是对该方式的描写叙述. 1.下载源代码包  http://mirrors.sohu.com/mysql/MySQL-5.6/  http://dev.mysql.com/downloads/mysql/ 2.安装rpm#环境suse11:~ # c…