- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章PHP常用工具类大全附全部代码下载由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
废话不多说了,直接给大家贴php代码了,具体代码如下所示:
1
2
3
4
5
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
|
<?php
/**
* 助手类
* @author www.shouce.ren
*
*/
class
Helper
{
/**
* 判断当前服务器系统
* @return string
*/
public
static
function
getOS(){
if
(PATH_SEPARATOR ==
':'
){
return
'Linux'
;
}
else
{
return
'Windows'
;
}
}
/**
* 当前微妙数
* @return number
*/
public
static
function
microtime_float() {
list (
$usec
,
$sec
) =
explode
(
" "
, microtime () );
return
(( float )
$usec
+ ( float )
$sec
);
}
/**
* 切割utf-8格式的字符串(一个汉字或者字符占一个字节)
*
* @author zhao jinhan
* @version v1.0.0
*
*/
public
static
function
truncate_utf8_string(
$string
,
$length
,
$etc
=
'...'
) {
$result
=
''
;
$string
= html_entity_decode ( trim (
strip_tags
(
$string
) ), ENT_QUOTES,
'UTF-8'
);
$strlen
=
strlen
(
$string
);
for
(
$i
= 0; ((
$i
<
$strlen
) && (
$length
> 0));
$i
++) {
if
(
$number
=
strpos
(
str_pad
(
decbin
( ord (
substr
(
$string
,
$i
, 1 ) ) ), 8,
'0'
, STR_PAD_LEFT ),
'0'
)) {
if
(
$length
< 1.0) {
break
;
}
$result
.=
substr
(
$string
,
$i
,
$number
);
$length
-= 1.0;
$i
+=
$number
- 1;
}
else
{
$result
.=
substr
(
$string
,
$i
, 1 );
$length
-= 0.5;
}
}
$result
= htmlspecialchars (
$result
, ENT_QUOTES,
'UTF-8'
);
if
(
$i
<
$strlen
) {
$result
.=
$etc
;
}
return
$result
;
}
/**
* 遍历文件夹
* @param string $dir
* @param boolean $all true表示递归遍历
* @return array
*/
public
static
function
scanfDir(
$dir
=
''
,
$all
= false, &
$ret
=
array
()){
if
( false !== (
$handle
= opendir (
$dir
))) {
while
( false !== (
$file
= readdir (
$handle
)) ) {
if
(!in_array(
$file
,
array
(
'.'
,
'..'
,
'.git'
,
'.gitignore'
,
'.svn'
,
'.htaccess'
,
'.buildpath'
,
'.project'
))) {
$cur_path
=
$dir
.
'/'
.
$file
;
if
(
is_dir
(
$cur_path
)) {
$ret
[
'dirs'
][] =
$cur_path
;
$all
&& self::scanfDir(
$cur_path
,
$all
,
$ret
);
}
else
{
$ret
[
'files'
] [] =
$cur_path
;
}
}
}
closedir
(
$handle
);
}
return
$ret
;
}
/**
* 邮件发送
* @param string $toemail
* @param string $subject
* @param string $message
* @return boolean
*/
public
static
function
sendMail(
$toemail
=
''
,
$subject
=
''
,
$message
=
''
) {
$mailer
= Yii::createComponent (
'application.extensions.mailer.EMailer'
);
//邮件配置
$mailer
->SetLanguage(
'zh_cn'
);
$mailer
->Host = Yii::app()->params[
'emailHost'
];
//发送邮件服务器
$mailer
->Port = Yii::app()->params[
'emailPort'
];
//邮件端口
$mailer
->Timeout = Yii::app()->params[
'emailTimeout'
];
//邮件发送超时时间
$mailer
->ContentType =
'text/html'
;
//设置html格式
$mailer
->SMTPAuth = true;
$mailer
->Username = Yii::app()->params[
'emailUserName'
];
$mailer
->Password = Yii::app()->params[
'emailPassword'
];
$mailer
->IsSMTP ();
$mailer
->From =
$mailer
->Username;
// 发件人邮箱
$mailer
->FromName = Yii::app()->params[
'emailFormName'
];
// 发件人姓名
$mailer
->AddReplyTo (
$mailer
->Username );
$mailer
->CharSet =
'UTF-8'
;
// 添加邮件日志
$modelMail
=
new
MailLog ();
$modelMail
->accept =
$toemail
;
$modelMail
->subject =
$subject
;
$modelMail
->message =
$message
;
$modelMail
->send_status =
'waiting'
;
$modelMail
->save ();
// 发送邮件
$mailer
->AddAddress (
$toemail
);
$mailer
->Subject =
$subject
;
$mailer
->Body =
$message
;
if
(
$mailer
->Send () === true) {
$modelMail
->times =
$modelMail
->times + 1;
$modelMail
->send_status =
'success'
;
$modelMail
->save ();
return
true;
}
else
{
$error
=
$mailer
->ErrorInfo;
$modelMail
->times =
$modelMail
->times + 1;
$modelMail
->send_status =
'failed'
;
$modelMail
->error =
$error
;
$modelMail
->save ();
return
false;
}
}
/**
* 判断字符串是utf-8 还是gb2312
* @param unknown $str
* @param string $default
* @return string
*/
public
static
function
utf8_gb2312(
$str
,
$default
=
'gb2312'
)
{
$str
= preg_replace(
"/[\x01-\x7F]+/"
,
""
,
$str
);
if
(
empty
(
$str
))
return
$default
;
$preg
=
array
(
"gb2312"
=>
"/^([\xA1-\xF7][\xA0-\xFE])+$/"
,
//正则判断是否是gb2312
"utf-8"
=>
"/^[\x{4E00}-\x{9FA5}]+$/u"
,
//正则判断是否是汉字(utf8编码的条件了),这个范围实际上已经包含了繁体中文字了
);
if
(
$default
==
'gb2312'
) {
$option
=
'utf-8'
;
}
else
{
$option
=
'gb2312'
;
}
if
(!preg_match(
$preg
[
$default
],
$str
)) {
return
$option
;
}
$str
= @iconv(
$default
,
$option
,
$str
);
//不能转成 $option, 说明原来的不是 $default
if
(
empty
(
$str
)) {
return
$option
;
}
return
$default
;
}
/**
* utf-8和gb2312自动转化
* @param unknown $string
* @param string $outEncoding
* @return unknown|string
*/
public
static
function
safeEncoding(
$string
,
$outEncoding
=
'UTF-8'
)
{
$encoding
=
"UTF-8"
;
for
(
$i
= 0;
$i
<
strlen
(
$string
);
$i
++) {
if
(ord (
$string
{
$i
} ) < 128)
continue
;
if
((ord (
$string
{
$i
} ) & 224) == 224) {
// 第一个字节判断通过
$char
=
$string
{++
$i
};
if
((ord (
$char
) & 128) == 128) {
// 第二个字节判断通过
$char
=
$string
{++
$i
};
if
((ord (
$char
) & 128) == 128) {
$encoding
=
"UTF-8"
;
break
;
}
}
}
if
((ord (
$string
{
$i
} ) & 192) == 192) {
// 第一个字节判断通过
$char
=
$string
{++
$i
};
if
((ord (
$char
) & 128) == 128) {
// 第二个字节判断通过
$encoding
=
"GB2312"
;
break
;
}
}
}
if
(
strtoupper
(
$encoding
) ==
strtoupper
(
$outEncoding
))
return
$string
;
else
return
@iconv (
$encoding
,
$outEncoding
,
$string
);
}
/**
* 返回二维数组中某个键名的所有值
* @param input $array
* @param string $key
* @return array
*/
public
static
function
array_key_values(
$array
=
array
(),
$key
=
''
)
{
$ret
=
array
();
foreach
((
array
)
$array
as
$k
=>
$v
){
$ret
[
$k
] =
$v
[
$key
];
}
return
$ret
;
}
/**
* 判断 文件/目录 是否可写(取代系统自带的 is_writeable 函数)
* @param string $file 文件/目录
* @return boolean
*/
public
static
function
is_writeable
(
$file
) {
if
(
is_dir
(
$file
)){
$dir
=
$file
;
if
(
$fp
= @
fopen
(
"$dir/test.txt"
,
'w'
)) {
@fclose(
$fp
);
@unlink(
"$dir/test.txt"
);
$writeable
= 1;
}
else
{
$writeable
= 0;
}
}
else
{
if
(
$fp
= @
fopen
(
$file
,
'a+'
)) {
@fclose(
$fp
);
$writeable
= 1;
}
else
{
$writeable
= 0;
}
}
return
$writeable
;
}
/**
* 格式化单位
*/
static
public
function
byteFormat(
$size
,
$dec
= 2 ) {
$a
=
array
(
"B"
,
"KB"
,
"MB"
,
"GB"
,
"TB"
,
"PB"
);
$pos
= 0;
while
(
$size
>= 1024 ) {
$size
/= 1024;
$pos
++;
}
return
round
(
$size
,
$dec
) .
" "
.
$a
[
$pos
];
}
/**
* 下拉框,单选按钮 自动选择
*
* @param $string 输入字符
* @param $param 条件
* @param $type 类型
* selected checked
* @return string
*/
static
public
function
selected(
$string
,
$param
= 1,
$type
=
'select'
) {
$true
= false;
if
(
is_array
(
$param
) ) {
$true
= in_array(
$string
,
$param
);
}
elseif
(
$string
==
$param
) {
$true
= true;
}
$return
=
''
;
if
(
$true
)
$return
=
$type
==
'select'
?
'selected="selected"'
:
'checked="checked"'
;
echo
$return
;
}
/**
* 下载远程图片
* @param string $url 图片的绝对url
* @param string $filepath 文件的完整路径(例如/www/images/test) ,此函数会自动根据图片url和http头信息确定图片的后缀名
* @param string $filename 要保存的文件名(不含扩展名)
* @return mixed 下载成功返回一个描述图片信息的数组,下载失败则返回false
*/
static
public
function
downloadImage(
$url
,
$filepath
,
$filename
) {
//服务器返回的头信息
$responseHeaders
=
array
();
//原始图片名
$originalfilename
=
''
;
//图片的后缀名
$ext
=
''
;
$ch
= curl_init(
$url
);
//设置curl_exec返回的值包含Http头
curl_setopt(
$ch
, CURLOPT_HEADER, 1);
//设置curl_exec返回的值包含Http内容
curl_setopt(
$ch
, CURLOPT_RETURNTRANSFER, 1);
//设置抓取跳转(http 301,302)后的页面
curl_setopt(
$ch
, CURLOPT_FOLLOWLOCATION, 1);
//设置最多的HTTP重定向的数量
curl_setopt(
$ch
, CURLOPT_MAXREDIRS, 3);
//服务器返回的数据(包括http头信息和内容)
$html
= curl_exec(
$ch
);
//获取此次抓取的相关信息
$httpinfo
= curl_getinfo(
$ch
);
curl_close(
$ch
);
if
(
$html
!== false) {
//分离response的header和body,由于服务器可能使用了302跳转,所以此处需要将字符串分离为 2+跳转次数 个子串
$httpArr
=
explode
(
"\r\n\r\n"
,
$html
, 2 +
$httpinfo
[
'redirect_count'
]);
//倒数第二段是服务器最后一次response的http头
$header
=
$httpArr
[
count
(
$httpArr
) - 2];
//倒数第一段是服务器最后一次response的内容
$body
=
$httpArr
[
count
(
$httpArr
) - 1];
$header
.=
"\r\n"
;
//获取最后一次response的header信息
preg_match_all(
'/([a-z0-9-_]+):\s*([^\r\n]+)\r\n/i'
,
$header
,
$matches
);
if
(!
empty
(
$matches
) &&
count
(
$matches
) == 3 && !
empty
(
$matches
[1]) && !
empty
(
$matches
[1])) {
for
(
$i
= 0;
$i
<
count
(
$matches
[1]);
$i
++) {
if
(
array_key_exists
(
$i
,
$matches
[2])) {
$responseHeaders
[
$matches
[1][
$i
]] =
$matches
[2][
$i
];
}
}
}
//获取图片后缀名
if
(0 < preg_match(
'{(?:[^\/\\\\]+)\.(jpg|jpeg|gif|png|bmp)$}i'
,
$url
,
$matches
)) {
$originalfilename
=
$matches
[0];
$ext
=
$matches
[1];
}
else
{
if
(
array_key_exists
(
'Content-Type'
,
$responseHeaders
)) {
if
(0 < preg_match(
'{image/(\w+)}i'
,
$responseHeaders
[
'Content-Type'
],
$extmatches
)) {
$ext
=
$extmatches
[1];
}
}
}
//保存文件
if
(!
empty
(
$ext
)) {
//如果目录不存在,则先要创建目录
if
(!
is_dir
(
$filepath
)){
mkdir
(
$filepath
, 0777, true);
}
$filepath
.=
'/'
.
$filename
.
".$ext"
;
$local_file
=
fopen
(
$filepath
,
'w'
);
if
(false !==
$local_file
) {
if
(false !== fwrite(
$local_file
,
$body
)) {
fclose(
$local_file
);
$sizeinfo
=
getimagesize
(
$filepath
);
return
array
(
'filepath'
=>
realpath
(
$filepath
),
'width'
=>
$sizeinfo
[0],
'height'
=>
$sizeinfo
[1],
'orginalfilename'
=>
$originalfilename
,
'filename'
=>
pathinfo
(
$filepath
, PATHINFO_BASENAME));
}
}
}
}
return
false;
}
/**
* 查找ip是否在某个段位里面
* @param string $ip 要查询的ip
* @param $arrIP 禁止的ip
* @return boolean
*/
public
static
function
ipAccess(
$ip
=
'0.0.0.0'
,
$arrIP
=
array
()){
$access
= true;
$ip
&&
$arr_cur_ip
=
explode
(
'.'
,
$ip
);
foreach
((
array
)
$arrIP
as
$key
=>
$value
){
if
(
$value
==
'*.*.*.*'
){
$access
= false;
//禁止所有
break
;
}
$tmp_arr
=
explode
(
'.'
,
$value
);
if
((
$arr_cur_ip
[0] ==
$tmp_arr
[0]) && (
$arr_cur_ip
[1] ==
$tmp_arr
[1])) {
//前两段相同
if
((
$arr_cur_ip
[2] ==
$tmp_arr
[2]) || (
$tmp_arr
[2] ==
'*'
)){
//第三段为* 或者相同
if
((
$arr_cur_ip
[3] ==
$tmp_arr
[3]) || (
$tmp_arr
[3] ==
'*'
)){
//第四段为* 或者相同
$access
= false;
//在禁止ip列,则禁止访问
break
;
}
}
}
}
return
$access
;
}
/**
* @param string $string 原文或者密文
* @param string $operation 操作(ENCODE | DECODE), 默认为 DECODE
* @param string $key 密钥
* @param int $expiry 密文有效期, 加密时候有效, 单位 秒,0 为永久有效
* @return string 处理后的 原文或者 经过 base64_encode 处理后的密文
*
* @example
*
* $a = authcode('abc', 'ENCODE', 'key');
* $b = authcode($a, 'DECODE', 'key'); // $b(abc)
*
* $a = authcode('abc', 'ENCODE', 'key', 3600);
* $b = authcode('abc', 'DECODE', 'key'); // 在一个小时内,$b(abc),否则 $b 为空
*/
public
static
function
authcode(
$string
,
$operation
=
'DECODE'
,
$key
=
''
,
$expiry
= 3600) {
$ckey_length
= 4;
// 随机密钥长度 取值 0-32;
// 加入随机密钥,可以令密文无任何规律,即便是原文和密钥完全相同,加密结果也会每次不同,增大破解难度。
// 取值越大,密文变动规律越大,密文变化 = 16 的 $ckey_length 次方
// 当此值为 0 时,则不产生随机密钥
$key
= md5 (
$key
?
$key
:
'key'
);
//这里可以填写默认key值
$keya
= md5 (
substr
(
$key
, 0, 16 ) );
$keyb
= md5 (
substr
(
$key
, 16, 16 ) );
$keyc
=
$ckey_length
? (
$operation
==
'DECODE'
?
substr
(
$string
, 0,
$ckey_length
) :
substr
( md5 ( microtime () ), -
$ckey_length
)) :
''
;
$cryptkey
=
$keya
. md5 (
$keya
.
$keyc
);
$key_length
=
strlen
(
$cryptkey
);
$string
=
$operation
==
'DECODE'
?
base64_decode
(
substr
(
$string
,
$ckey_length
) ) : sprintf (
'%010d'
,
$expiry
?
$expiry
+ time () : 0 ) .
substr
( md5 (
$string
.
$keyb
), 0, 16 ) .
$string
;
$string_length
=
strlen
(
$string
);
$result
=
''
;
$box
= range ( 0, 255 );
$rndkey
=
array
();
for
(
$i
= 0;
$i
<= 255;
$i
++) {
$rndkey
[
$i
] = ord (
$cryptkey
[
$i
%
$key_length
] );
}
for
(
$j
=
$i
= 0;
$i
< 256;
$i
++) {
$j
= (
$j
+
$box
[
$i
] +
$rndkey
[
$i
]) % 256;
$tmp
=
$box
[
$i
];
$box
[
$i
] =
$box
[
$j
];
$box
[
$j
] =
$tmp
;
}
for
(
$a
=
$j
=
$i
= 0;
$i
<
$string_length
;
$i
++) {
$a
= (
$a
+ 1) % 256;
$j
= (
$j
+
$box
[
$a
]) % 256;
$tmp
=
$box
[
$a
];
$box
[
$a
] =
$box
[
$j
];
$box
[
$j
] =
$tmp
;
$result
.=
chr
( ord (
$string
[
$i
] ) ^ (
$box
[(
$box
[
$a
] +
$box
[
$j
]) % 256]) );
}
if
(
$operation
==
'DECODE'
) {
if
((
substr
(
$result
, 0, 10 ) == 0 ||
substr
(
$result
, 0, 10 ) - time () > 0) &&
substr
(
$result
, 10, 16 ) ==
substr
( md5 (
substr
(
$result
, 26 ) .
$keyb
), 0, 16 )) {
return
substr
(
$result
, 26 );
}
else
{
return
''
;
}
}
else
{
return
$keyc
.
str_replace
(
'='
,
''
,
base64_encode
(
$result
) );
}
}
public
static
function
gbkToUtf8(
$str
){
return
iconv(
"GBK"
,
"UTF-8"
,
$str
);
}
/**
* 取得输入目录所包含的所有目录和文件
* 以关联数组形式返回
* author: flynetcn
*/
static
public
function
deepScanDir(
$dir
)
{
$fileArr
=
array
();
$dirArr
=
array
();
$dir
= rtrim(
$dir
,
'//'
);
if
(
is_dir
(
$dir
)){
$dirHandle
= opendir(
$dir
);
while
(false !== (
$fileName
= readdir(
$dirHandle
))){
$subFile
=
$dir
. DIRECTORY_SEPARATOR .
$fileName
;
if
(
is_file
(
$subFile
)){
$fileArr
[] =
$subFile
;
}
elseif
(
is_dir
(
$subFile
) &&
str_replace
(
'.'
,
''
,
$fileName
)!=
''
){
$dirArr
[] =
$subFile
;
$arr
= self::deepScanDir(
$subFile
);
$dirArr
=
array_merge
(
$dirArr
,
$arr
[
'dir'
]);
$fileArr
=
array_merge
(
$fileArr
,
$arr
[
'file'
]);
}
}
closedir
(
$dirHandle
);
}
return
array
(
'dir'
=>
$dirArr
,
'file'
=>
$fileArr
);
}
/**
* 取得输入目录所包含的所有文件
* 以数组形式返回
* author: flynetcn
*/
static
public
function
get_dir_files(
$dir
)
{
if
(
is_file
(
$dir
)) {
return
array
(
$dir
);
}
$files
=
array
();
if
(
is_dir
(
$dir
) && (
$dir_p
= opendir(
$dir
))) {
$ds
= DIRECTORY_SEPARATOR;
while
((
$filename
= readdir(
$dir_p
)) !== false) {
if
(
$filename
==
'.'
||
$filename
==
'..'
) {
continue
; }
$filetype
=
filetype
(
$dir
.
$ds
.
$filename
);
if
(
$filetype
==
'dir'
) {
$files
=
array_merge
(
$files
, self::get_dir_files(
$dir
.
$ds
.
$filename
));
}
elseif
(
$filetype
==
'file'
) {
$files
[] =
$dir
.
$ds
.
$filename
;
}
}
closedir
(
$dir_p
);
}
return
$files
;
}
}
|
太多1000多行呢了保存不了,查看完整并下载 。
Helper.rar 。
以上内容就是本文的全部叙述,喜欢的朋友可以直接下载源码哦.
最后此篇关于PHP常用工具类大全附全部代码下载的文章就讲到这里了,如果你想了解更多关于PHP常用工具类大全附全部代码下载的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
这个问题在这里已经有了答案: Android ADT version required 20.0.0 and above (10 个答案) 关闭 9 年前。 我刚刚安装了 Eclipse Juno
按照 This page from codeplex 上的指南进行操作后,我无法在我的工具/选项窗口中看到 Python 选项。我认为我与指南的唯一偏差是: 发行版:没有安装 activestate
我有一个非常大的 .sql 脚本。我将此脚本添加到 Visual Studio 2013 下的 SQL Server 项目中。当我尝试构建它时,我收到此错误消息 This T-SQL script e
当我在SpringBoot项目中想加个依赖,但是不确定现有依赖的依赖的依赖.....有没有添加过这个依赖,怎么办呢?如果添加过了但是不知道我需要的这个依赖属于哪个依赖的下面,怎么查呢? IDEA中提供
我正在做一个项目来减少 PDF 的大小,压缩它们。我想知道市场上是否有任何非常好的工具/库(.NET)。 我确实尝试了一些像 Onstream Compression 这样的工具,但结果并不令人满意。
我想从我的源代码编译一个安卓内核。 但我想使用工具或类似的东西。 所以我只需单击一个按钮并获得一个可闪存的 zip 文件... 有工具吗? 我可以用脚本来做吗? 谢谢! 最佳答案 这取决于您从哪里获得
我们生成 pdf 文件,其中包含有关数万名客户每月财务余额的数据。在高峰期(年底有 100.000 个文件),使用在 5 台服务器之间分配负载,该过程可能需要长达 5 天的时间才能完成。工作负载的分配
模块:xmllib xmllib 是一个非验证的低级语法分析器。应用程序员使用的 xmllib 可以覆盖 XMLParser 类,并提供处理文档元素(如特定或类属标记,或字符实体)的方法。从 Py
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 3 年前。
我在一家医疗保健公司工作,拥有有关患者位置(地址、城市、州、 zip )的信息。我试图确定有多少百分比的患者住在离 5 个特定位置最近的地方。我正在寻找的答案是“25% 的患者住在离#1 地点最近的地
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 4年前关闭。 我们不允许在 Stack Overflow 上提出有关通用计算硬件和软件的问题。您可以编辑问
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be
请问我在哪里可以得到 SvcTraceViewer 工具? 我尝试下载并安装许多 SDK。 我查看了程序文件的垃圾箱。 我需要它来跟踪我的 WCF 调用出了什么问题。 最佳答案 您可以通过下载 Win
我正在尝试在我最喜欢的编辑器中设置适当的代码完成功能,我们将其称为AnEditor,以避免互联网上充斥着特定于程序的答案。 (您知道语言是ALanguage。)编辑器具有两个我喜欢的功能:它既可以在控
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
当 merge 的两个分支对同一文件有更改时,Mercurial 是否总是使用外部 merge 工具? 或者它是否首先查看它是否可以 merge 文件本身,如果不能,则仅转向外部工具? 我问的原因是我
我正在为我使用的编辑器编写 Scala 插件,该插件将突出显示所有未使用的代码路径(可能未使用 defs 、 vals 、 classes 和 implicits ),并为用户提供一个选项以将它们从.
我有 jquery 工具滚动器...我喜欢它只为 swipeLeft swipeRight 实现触摸选项。 当我使用 touch: true 时,它也会在向上/向下滑动时旋转.. 我按照此处的说明
我已经尝试了一些用于构建 UML(对象/依赖图)的 Eclipse 工具,但我真正需要的是一个工具来生成这样的代码外 UML。 (反之亦然) 我更喜欢一个简单的 UML 工具,它易于安装并且没有任何依
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
我是一名优秀的程序员,十分优秀!