首页
关于
Search
1
给你10个市场数据调研报告的免费下载网站!以后竞品数据就从这里找!
142 阅读
2
php接口优化 使用curl_multi_init批量请求
132 阅读
3
2024年备考系统架构设计师
102 阅读
4
《从菜鸟到大师之路 ElasticSearch 篇》
102 阅读
5
PHP 文件I/O
89 阅读
php
thinkphp
laravel
工具
开源
mysql
数据结构
总结
思维逻辑
令人感动的创富故事
读书笔记
前端
vue
js
css
书籍
开源之旅
架构
消息队列
docker
教程
代码片段
redis
服务器
nginx
linux
科普
java
c
ElasticSearch
测试
php进阶
php基础
登录
Search
标签搜索
php函数
php语法
性能优化
安全
错误和异常处理
问题
vue
Composer
Session
缓存
框架
Swoole
api
并发
异步
正则表达式
php-fpm
mysql 索引
开发规范
协程
dafenqi
累计撰写
785
篇文章
累计收到
8
条评论
首页
栏目
php
thinkphp
laravel
工具
开源
mysql
数据结构
总结
思维逻辑
令人感动的创富故事
读书笔记
前端
vue
js
css
书籍
开源之旅
架构
消息队列
docker
教程
代码片段
副业
redis
服务器
nginx
linux
科普
java
c
ElasticSearch
测试
php进阶
php基础
页面
关于
搜索到
785
篇与
的结果
2023-12-28
PHP是做什么的之应用场景非比寻常
PHP具体可以做什么?Web开发是PHP语言最擅长的!PHP可以开发像淘宝、京东等商城系统。目前国内80%以上的动态网站都在使用PHP开发,没有任何语言可以与其抗衡!全球前100万的网站中,有77%以上的网站都是通过PHP来开发的(权威网站w3techs.com 2023年2月统计)PHP具体可以做:商城开发视频/直播系统开发广告系统开发API接口开发移动端APP开发微信开发小程序开发游戏后台开发物联网开发行业站/公司官网客户CRM管理系统财务系统开发办公自动化OA系统开发等等。
2023年12月28日
11 阅读
0 评论
0 点赞
2023-12-28
PHP用流方式下载文件的优势浅析
PHP用流方式下载文件的优势浅析在PHP中,可以使用fopen()函数打开一个远程文件,并使用流来下载文件内容到本地文件。这样优点是不用将文件全部一次性放入内存中,可以避免内存溢出的问题。下面是一个示例代码:$url = 'http://example.com/file.zip'; $local_file = '/path/to/local/file.zip'; // 打开远程文件 $remote_file = fopen($url, 'r'); // 打开本地文件 $fp = fopen($local_file, 'w'); // 使用流下载文件内容 while (!feof($remote_file)) { fwrite($fp, fread($remote_file, 1024)); } // 关闭文件 fclose($remote_file); fclose($fp);在上面的代码中,使用fopen()函数打开远程文件和本地文件,然后使用fread()函数从远程文件读取内容,并使用fwrite()函数将内容写入本地文件。注意,在使用流下载文件时,需要确保服务器允许远程访问,否则可能会出现错误。使用流下载文件时,需要注意以下事项:需要确保服务器允许远程访问,否则可能会出现错误。如果本地文件已存在,会被覆盖。如果不希望覆盖,可以在打开本地文件时指定 a 模式,表示追加到文件末尾。在下载大文件时,可能会用时较长,可以使用进度条显示下载进度。如果远程文件不存在或访问出错,可能会导致下载失败。在下载文件时,可以使用 HTTP 头信息来控制文件缓存、文件类型和文件下载方式等。在下载过程中,需要确保远程文件和本地文件都已正常打开,否则可能会出现错误。在读取远程文件时,需要使用 feof () 函数检查文件是否已读完,否则可能会出现死循环。在下载过程中,需要注意带宽限制和网络状况,否则可能会导致下载速度过慢。在 PHP 中,使用 fopen () 函数打开远程文件需要在 php.ini 中启用 allow_url_fopen 选项,在 PHP 中,allow_url_fopen 选项默认是开启的。
2023年12月28日
9 阅读
0 评论
0 点赞
2023-12-27
PHP常用函数大全
PHP常用函数大全Math 函数abs — 绝对值acos — 反余弦acosh — 反双曲余弦asin — 反正弦asinh — 反双曲正弦atan2 — 两个参数的反正切atan — 反正切atanh — 反双曲正切base_convert — 在任意进制之间转换数字bindec — 二进制转换为十进制ceil — 进一法取整cos — 余弦cosh — 双曲余弦decbin — 十进制转换为二进制dechex — 十进制转换为十六进制decoct — 十进制转换为八进制deg2rad — 将角度转换为弧度exp — 计算 e 的指数expm1 — 返回 exp(number) - 1,甚至当 number 的值接近零也能计算出准确结果floor — 舍去法取整fmod — 返回除法的浮点数余数getrandmax — 显示随机数最大的可能值hexdec — 十六进制转换为十进制hypot — 计算一直角三角形的斜边长度intdiv — 对除法结果取整is_finite — 判断是否为有限值is_infinite — 判断是否为无限值is_nan — 判断是否为合法数值lcg_value — 组合线性同余发生器log10 — 以 10 为底的对数log1p — 返回 log(1 + number),甚至当 number 的值接近零也能计算出准确结果log — 自然对数max — 找出最大值min — 找出最小值mt_getrandmax — 显示随机数的最大可能值mt_rand — 生成更好的随机数mt_srand — 播下一个更好的随机数发生器种子octdec — 八进制转换为十进制pi — 得到圆周率值pow — 指数表达式rad2deg — 将弧度数转换为相应的角度数rand — 产生一个随机整数round — 对浮点数进行四舍五入sin — 正弦sinh — 双曲正弦sqrt — 平方根srand — 播下随机数发生器种子tan — 正切tanh — 双曲正切字符串函数addcslashes — 以 C 语言风格使用反斜线转义字符串中的字符addslashes — 使用反斜线引用字符串bin2hex — 函数把包含数据的二进制字符串转换为十六进制值chop — rtrim 的别名chr — 返回指定的字符chunk_split — 将字符串分割成小块convert_cyr_string — 将字符由一种 Cyrillic 字符转换成另一种convert_uudecode — 解码一个 uuencode 编码的字符串convert_uuencode — 使用 uuencode 编码一个字符串count_chars — 返回字符串所用字符的信息crc32 — 计算一个字符串的 crc32 多项式crypt — 单向字符串散列echo — 输出一个或多个字符串explode — 使用一个字符串分割另一个字符串fprintf — 将格式化后的字符串写入到流get_html_translation_table — 返回使用 htmlspecialchars 和 htmlentities 后的转换表hebrev — 将逻辑顺序希伯来文(logical-Hebrew)转换为视觉顺序希伯来文(visual-Hebrew)hebrevc — 将逻辑顺序希伯来文(logical-Hebrew)转换为视觉顺序希伯来文(visual-Hebrew),并且转换换行符hex2bin — 转换十六进制字符串为二进制字符串html_entity_decode — Convert HTML entities to their corresponding charactershtmlentities — 将字符转换为 HTML 转义字符htmlspecialchars_decode — 将特殊的 HTML 实体转换回普通字符htmlspecialchars — 将特殊字符转换为 HTML 实体implode — 将一个一维数组的值转化为字符串join — 别名 implodelcfirst — 使一个字符串的第一个字符小写levenshtein — 计算两个字符串之间的编辑距离localeconv — Get numeric formatting informationltrim — 删除字符串开头的空白字符(或其他字符)md5_file — 计算指定文件的 MD5 散列值md5 — 计算字符串的 MD5 散列值metaphone — Calculate the metaphone key of a stringmoney_format — 将数字格式化成货币字符串nl_langinfo — Query language and locale informationnl2br — 在字符串所有新行之前插入 HTML 换行标记number_format — 以千位分隔符方式格式化一个数字ord — 转换字符串第一个字节为 0-255 之间的值parse_str — 将字符串解析成多个变量print — 输出字符串printf — 输出格式化字符串quoted_printable_decode — 将 quoted-printable 字符串转换为 8-bit 字符串quoted_printable_encode — 将 8-bit 字符串转换成 quoted-printable 字符串quotemeta — 转义元字符集rtrim — 删除字符串末端的空白字符(或者其他字符)setlocale — 设置地区信息sha1_file — 计算文件的 sha1 散列值sha1 — 计算字符串的 sha1 散列值similar_text — 计算两个字符串的相似度soundex — Calculate the soundex key of a stringsprintf — Return a formatted stringsscanf — 根据指定格式解析输入的字符str_getcsv — 解析 CSV 字符串为一个数组str_ireplace — str_replace 的忽略大小写版本str_pad — 使用另一个字符串填充字符串为指定长度str_repeat — 重复一个字符串str_replace — 子字符串替换str_rot13 — 对字符串执行 ROT13 转换str_shuffle — 随机打乱一个字符串str_split — 将字符串转换为数组str_word_count — 返回字符串中单词的使用情况strcasecmp — 二进制安全比较字符串(不区分大小写)strchr — 别名 strstrstrcmp — 二进制安全字符串比较strcoll — 基于区域设置的字符串比较strcspn — 获取不匹配遮罩的起始子字符串的长度strip_tags — 从字符串中去除 HTML 和 PHP 标记stripcslashes — 反引用一个使用 addcslashes 转义的字符串stripos — 查找字符串首次出现的位置(不区分大小写)stripslashes — 反引用一个引用字符串stristr — strstr 函数的忽略大小写版本strlen — 获取字符串长度strnatcasecmp — 使用“自然顺序”算法比较字符串(不区分大小写)strnatcmp — 使用自然排序算法比较字符串strncasecmp — 二进制安全比较字符串开头的若干个字符(不区分大小写)strncmp — 二进制安全比较字符串开头的若干个字符strpbrk — 在字符串中查找一组字符的任何一个字符strpos — 查找字符串首次出现的位置strrchr — 查找指定字符在字符串中的最后一次出现strrev — 反转字符串strripos — 计算指定字符串在目标字符串中最后一次出现的位置(不区分大小写)strrpos — 计算指定字符串在目标字符串中最后一次出现的位置strspn — 计算字符串中全部字符都存在于指定字符集合中的第一段子串的长度。strstr — 查找字符串的首次出现strtok — 标记分割字符串strtolower — 将字符串转化为小写strtoupper — 将字符串转化为大写strtr — 转换指定字符substr_compare — 二进制安全比较字符串(从偏移位置比较指定长度)substr_count — 计算字串出现的次数substr_replace — 替换字符串的子串substr — 返回字符串的子串trim — 去除字符串首尾处的空白字符(或者其他字符)ucfirst — 将字符串的首字母转换为大写ucwords — 将字符串中每个单词的首字母转换为大写vfprintf — 将格式化字符串写入流vprintf — 输出格式化字符串vsprintf — 返回格式化字符串wordwrap — 打断字符串为指定数量的字串数组函数array_change_key_case — 将数组中的所有键名修改为全大写或小写array_chunk — 将一个数组分割成多个array_column — 返回数组中指定的一列array_combine — 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值array_count_values — 统计数组中所有的值array_diff_assoc — 带索引检查计算数组的差集array_diff_key — 使用键名比较计算数组的差集array_diff_uassoc — 用用户提供的回调函数做索引检查来计算数组的差集array_diff_ukey — 用回调函数对键名比较计算数组的差集array_diff — 计算数组的差集array_fill_keys — 使用指定的键和值填充数组array_fill — 用给定的值填充数组array_filter — 用回调函数过滤数组中的单元array_flip — 交换数组中的键和值array_intersect_assoc — 带索引检查计算数组的交集array_intersect_key — 使用键名比较计算数组的交集array_intersect_uassoc — 带索引检查计算数组的交集,用回调函数比较索引array_intersect_ukey — 用回调函数比较键名来计算数组的交集array_intersect — 计算数组的交集array_key_exists — 检查数组里是否有指定的键名或索引array_key_first — Gets the first key of an arrayarray_key_last — Gets the last key of an arrayarray_keys — 返回数组中部分的或所有的键名array_map — 为数组的每个元素应用回调函数array_merge_recursive — 递归地合并一个或多个数组array_merge — 合并一个或多个数组array_multisort — 对多个数组或多维数组进行排序array_pad — 以指定长度将一个值填充进数组array_pop — 弹出数组最后一个单元(出栈)array_product — 计算数组中所有值的乘积array_push — 将一个或多个单元压入数组的末尾(入栈)array_rand — 从数组中随机取出一个或多个单元array_reduce — 用回调函数迭代地将数组简化为单一的值array_replace_recursive — 使用传递的数组递归替换第一个数组的元素array_replace — 使用传递的数组替换第一个数组的元素array_reverse — 返回单元顺序相反的数组array_search — 在数组中搜索给定的值,如果成功则返回首个相应的键名array_shift — 将数组开头的单元移出数组array_slice — 从数组中取出一段array_splice — 去掉数组中的某一部分并用其它值取代array_sum — 对数组中所有值求和array_udiff_assoc — 带索引检查计算数组的差集,用回调函数比较数据array_udiff_uassoc — 带索引检查计算数组的差集,用回调函数比较数据和索引array_udiff — 用回调函数比较数据来计算数组的差集array_uintersect_assoc — 带索引检查计算数组的交集,用回调函数比较数据array_uintersect_uassoc — 带索引检查计算数组的交集,用单独的回调函数比较数据和索引array_uintersect — 计算数组的交集,用回调函数比较数据array_unique — 移除数组中重复的值array_unshift — 在数组开头插入一个或多个单元array_values — 返回数组中所有的值array_walk_recursive — 对数组中的每个成员递归地应用用户函数array_walk — 使用用户自定义函数对数组中的每个元素做回调处理array — 新建一个数组arsort — 对数组进行逆向排序并保持索引关系asort — 对数组进行排序并保持索引关系compact — 建立一个数组,包括变量名和它们的值count — 计算数组中的单元数目,或对象中的属性个数current — 返回数组中的当前单元each — 返回数组中当前的键/值对并将数组指针向前移动一步end — 将数组的内部指针指向最后一个单元extract — 从数组中将变量导入到当前的符号表in_array — 检查数组中是否存在某个值key_exists — 别名 array_key_existskey — 从关联数组中取得键名krsort — 对数组按照键名逆向排序ksort — 对数组按照键名排序list — 把数组中的值赋给一组变量natcasesort — 用“自然排序”算法对数组进行不区分大小写字母的排序natsort — 用“自然排序”算法对数组排序next — 将数组中的内部指针向前移动一位pos — current 的别名prev — 将数组的内部指针倒回一位range — 根据范围创建数组,包含指定的元素reset — 将数组的内部指针指向第一个单元rsort — 对数组逆向排序shuffle — 打乱数组sizeof — count 的别名sort — 对数组排序uasort — 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联uksort — 使用用户自定义的比较函数对数组中的键名进行排序usort — 使用用户自定义的比较函数对数组中的值进行排序多字节字符串函数mb_check_encoding — 检查字符串在指定的编码里是否有效mb_chr — Get a specific charactermb_convert_case — 对字符串进行大小写转换mb_convert_encoding — 转换字符的编码mb_convert_kana — Convert “kana” one from another (“zen-kaku”, “han-kaku” and more)mb_convert_variables — 转换一个或多个变量的字符编码mb_decode_mimeheader — 解码 MIME 头字段中的字符串mb_decode_numericentity — 根据 HTML 数字字符串解码成字符mb_detect_encoding — 检测字符的编码mb_detect_order — 设置/获取 字符编码的检测顺序mb_encode_mimeheader — 为 MIME 头编码字符串mb_encode_numericentity — Encode character to HTML numeric string referencemb_encoding_aliases — Get aliases of a known encoding typemb_ereg_match — Regular expression match for multibyte stringmb_ereg_replace_callback — Perform a regular expression search and replace with multibyte support using a callbackmb_ereg_replace — Replace regular expression with multibyte supportmb_ereg_search_getpos — Returns start point for next regular expression matchmb_ereg_search_getregs — Retrieve the result from the last multibyte regular expression matchmb_ereg_search_init — Setup string and regular expression for a multibyte regular expression matchmb_ereg_search_pos — Returns position and length of a matched part of the multibyte regular expression for a predefined multibyte stringmb_ereg_search_regs — Returns the matched part of a multibyte regular expressionmb_ereg_search_setpos — Set start point of next regular expression matchmb_ereg_search — Multibyte regular expression match for predefined multibyte stringmb_ereg — Regular expression match with multibyte supportmb_eregi_replace — Replace regular expression with multibyte support ignoring casemb_eregi — Regular expression match ignoring case with multibyte supportmb_get_info — 获取 mbstring 的内部设置mb_http_input — 检测 HTTP 输入字符编码mb_http_output — 设置/获取 HTTP 输出字符编码mb_internal_encoding — 设置/获取内部字符编码mb_language — 设置/获取当前的语言mb_list_encodings — 返回所有支持编码的数组mb_ord — Get code point of charactermb_output_handler — 在输出缓冲中转换字符编码的回调函数mb_parse_str — 解析 GET/POST/COOKIE 数据并设置全局变量mb_preferred_mime_name — 获取 MIME 字符串mb_regex_encoding — Set/Get character encoding for multibyte regexmb_regex_set_options — Set/Get the default options for mbregex functionsmb_scrub — Descriptionmb_send_mail — 发送编码过的邮件mb_split — 使用正则表达式分割多字节字符串mb_strcut — 获取字符的一部分mb_strimwidth — 获取按指定宽度截断的字符串mb_stripos — 大小写不敏感地查找字符串在另一个字符串中首次出现的位置mb_stristr — 大小写不敏感地查找字符串在另一个字符串里的首次出现mb_strlen — 获取字符串的长度mb_strpos — 查找字符串在另一个字符串中首次出现的位置mb_strrchr — 查找指定字符在另一个字符串中最后一次的出现mb_strrichr — 大小写不敏感地查找指定字符在另一个字符串中最后一次的出现mb_strripos — 大小写不敏感地在字符串中查找一个字符串最后出现的位置mb_strrpos — 查找字符串在一个字符串中最后出现的位置mb_strstr — 查找字符串在另一个字符串里的首次出现mb_strtolower — 使字符串小写mb_strtoupper — 使字符串大写mb_strwidth — 返回字符串的宽度mb_substitute_character — 设置/获取替代字符mb_substr_count — 统计字符串出现的次数mb_substr — 获取部分字符串时间函数checkdate — 验证一个格里高里日期date_add — 别名 DateTime::adddate_create_from_format — 别名 DateTime::createFromFormatdate_create_immutable_from_format — 别名 DateTimeImmutable::createFromFormatdate_create_immutable — 别名 DateTimeImmutable::__constructdate_create — 别名 DateTime::__constructdate_date_set — 别名 DateTime::setDatedate_default_timezone_get — 取得一个脚本中所有日期时间函数所使用的默认时区date_default_timezone_set — 设定用于一个脚本中所有日期时间函数的默认时区date_diff — 别名 DateTime::diffdate_format — 别名 DateTime::formatdate_get_last_errors — 别名 DateTime::getLastErrorsdate_interval_create_from_date_string — 别名 DateInterval::createFromDateStringdate_interval_format — 别名 DateInterval::formatdate_isodate_set — 别名 DateTime::setISODatedate_modify — 别名 DateTime::modifydate_offset_get — 别名 DateTime::getOffsetdate_parse_from_format — Get info about given date formatted according to the specified formatdate_parse — Returns associative array with detailed info about given datedate_sub — 别名 DateTime::subdate_sun_info — Returns an array with information about sunset/sunrise and twilight begin/enddate_sunrise — 返回给定的日期与地点的日出时间date_sunset — 返回给定的日期与地点的日落时间date_time_set — 别名 DateTime::setTimedate_timestamp_get — 别名 DateTime::getTimestampdate_timestamp_set — 别名 DateTime::setTimestampdate_timezone_get — 别名 DateTime::getTimezonedate_timezone_set — 别名 DateTime::setTimezonedate — 格式化一个本地时间/日期getdate — 取得日期/时间信息gettimeofday — 取得当前时间gmdate — 格式化一个 GMT/UTC 日期/时间gmmktime — 取得 GMT 日期的 UNIX 时间戳gmstrftime — 根据区域设置格式化 GMT/UTC 时间/日期idate — 将本地时间日期格式化为整数localtime — 取得本地时间microtime — 返回当前 Unix 时间戳和微秒数mktime — 取得一个日期的 Unix 时间戳strftime — 根据区域设置格式化本地时间/日期strptime — 解析由 strftime 生成的日期/时间strtotime — 将任何字符串的日期时间描述解析为 Unix 时间戳time — 返回当前的 Unix 时间戳timezone_abbreviations_list — 别名 DateTimeZone::listAbbreviationstimezone_identifiers_list — 别名 DateTimeZone::listIdentifierstimezone_location_get — 别名 DateTimeZone::getLocationtimezone_name_from_abbr — Returns the timezone name from abbreviationtimezone_name_get — 别名 DateTimeZone::getNametimezone_offset_get — 别名 DateTimeZone::getOffsettimezone_open — 别名 DateTimeZone::__constructtimezone_transitions_get — 别名 DateTimeZone::getTransitionstimezone_version_get — Gets the version of the timezonedb目录函数chdir — 改变目录chroot — 改变根目录closedir — 关闭目录句柄dir — 返回一个 Directory 类实例getcwd — 取得当前工作目录opendir — 打开目录句柄readdir — 从目录句柄中读取条目rewinddir — 倒回目录句柄scandir — 列出指定路径中的文件和目录文件系统函数basename — 返回路径中的文件名部分chgrp — 改变文件所属的组chmod — 改变文件模式chown — 改变文件的所有者clearstatcache — 清除文件状态缓存copy — 拷贝文件delete — 参见 unlink 或 unsetdirname — 返回路径中的目录部分disk_free_space — 返回目录中的可用空间disk_total_space — 返回一个目录的磁盘总大小diskfreespace — disk_free_space 的别名fclose — 关闭一个已打开的文件指针feof — 测试文件指针是否到了文件结束的位置fflush — 将缓冲内容输出到文件fgetc — 从文件指针中读取字符fgetcsv — 从文件指针中读入一行并解析 CSV 字段fgets — 从文件指针中读取一行fgetss — 从文件指针中读取一行并过滤掉 HTML 标记file_exists — 检查文件或目录是否存在file_get_contents — 将整个文件读入一个字符串file_put_contents — 将一个字符串写入文件file — 把整个文件读入一个数组中fileatime — 取得文件的上次访问时间filectime — 取得文件的 inode 修改时间filegroup — 取得文件的组fileinode — 取得文件的 inodefilemtime — 取得文件修改时间fileowner — 取得文件的所有者fileperms — 取得文件的权限filesize — 取得文件大小filetype — 取得文件类型flock — 轻便的咨询文件锁定fnmatch — 用模式匹配文件名fopen — 打开文件或者 URLfpassthru — 输出文件指针处的所有剩余数据fputcsv — 将行格式化为 CSV 并写入文件指针fputs — fwrite 的别名fread — 读取文件(可安全用于二进制文件)fscanf — 从文件中格式化输入fseek — 在文件指针中定位fstat — 通过已打开的文件指针取得文件信息ftell — 返回文件指针读/写的位置ftruncate — 将文件截断到给定的长度fwrite — 写入文件(可安全用于二进制文件)glob — 寻找与模式匹配的文件路径is_dir — 判断给定文件名是否是一个目录is_executable — 判断给定文件名是否可执行is_file — 判断给定文件名是否为一个正常的文件is_link — 判断给定文件名是否为一个符号连接is_readable — 判断给定文件名是否可读is_uploaded_file — 判断文件是否是通过 HTTP POST 上传的is_writable — 判断给定的文件名是否可写is_writeable — is_writable 的别名lchgrp — 修改符号链接的所有组lchown — 修改符号链接的所有者link — 建立一个硬连接linkinfo — 获取一个连接的信息lstat — 给出一个文件或符号连接的信息mkdir — 新建目录move_uploaded_file — 将上传的文件移动到新位置parse_ini_file — 解析一个配置文件parse_ini_string — 解析配置字符串pathinfo — 返回文件路径的信息pclose — 关闭进程文件指针popen — 打开进程文件指针readfile — 输出文件readlink — 返回符号连接指向的目标realpath_cache_get — 获取真实目录缓存的详情realpath_cache_size — 获取真实路径缓冲区的大小realpath — 返回规范化的绝对路径名rename — 重命名一个文件或目录rewind — 倒回文件指针的位置rmdir — 删除目录set_file_buffer — stream_set_write_buffer 的别名stat — 给出文件的信息symlink — 建立符号连接tempnam — 建立一个具有唯一文件名的文件tmpfile — 建立一个临时文件touch — 设定文件的访问和修改时间umask — 改变当前的 umaskunlink — 删除文件
2023年12月27日
12 阅读
0 评论
0 点赞
2023-12-27
PHP优化Excel导出性能(xlswriter扩展)
PHP优化Excel导出性能(xlswriter扩展)公益课推荐:《PHP快速操控Excel之PhpSpreadsheet》课程地址:https://www.php.cn/course/1087.htmlxlswriter 是一个PHP C扩展,旨在提升php在导出大数据量时的性能问题,支持windows/Linux。可用于在Excel 2007+ XLSX文件中读取数据,插入多个工作表,写入文本、数字、公式、日期、图表、和超链接。它具备以下特性:一、写入100%兼容的 Excel XLSX 文件完整的 Excel 格式合并单元格定义工作表名称过滤器图表数据验证和下拉列表工作表 PNG/JPEG 图像用于写入大文件的内存优化模式适用于 Linux,FreeBSD,OpenBSD,OS X,Windows编译为 32 位和 64 位FreeBSD 许可证唯一的依赖是 zlib二、读取完整读取数据光标读取数据按数据类型读取xlsx 转 CSV性能对比下载安装github源码:https://github.com/viest/php-ext-xlswriterxlswriter文档:https://xlswriter-docs.viest.me/zh-cn/an-zhuang/huan-jing-yao-qiu下载ide helper:composer require viest/php-ext-xlswriter-ide-helper:dev-master但是我一直下载失败,于是去github仓库直接下载 https://github.com/viest/php-ext-xlswriter-ide-helper然后将里面的几个类复制到一个 xlswriter_ide_helper.php 文件里面,将这个文件放到你的项目中就有代码提示了。安装 xlswriter 扩展此处在docker中安装docker exec -it php72-fpm bashcd /usr/local/bin pecl install xlswriter docker-php-ext-enable xlswriter php -m php --ri xlswriter Version => 1.3.6 docker restart php72-fpm性能测试:测试数据:20 列,每列长度为 19 英文字母XlswriterPHPSpreadSheetPHP_XLSXWriter使用示例:private function rankPersonExport($activityInfo, $list){ $date = date('Y-m-d'); $filename = "{$activityInfo['orgname']}-{$activityInfo['name']}-个人排行榜-{$date}"; $header = ['名次', '用户ID', '对接账号', '姓名', '电话', '部门ID', '一级部门', '二级部门', '三级部门', '总积分', '最后积分时间', "毫秒"]; if (!empty($activityInfo['ext'])) { $extArr = json_decode($activityInfo['ext'], true); foreach ($extArr as $errItem) { array_push($header, $errItem['name']); } } // list $listVal = []; foreach($list as $v){ $temp = [ $v['rank'], $v['userid'], $v['userName'], $v['nickName'], $v['phone'], $v['departid'], $v['topDepartName'], $v['secDepartName'], $v['thirdDepartName'], $v['score'], $v['updatetime'], $v['micro'], ]; if (!empty($v['ext'])) { $extArr = explode('|', $v['ext']); foreach ($extArr as $k2 => $v2) { $errItemArr = explode('^', $v2); array_push($temp, $errItemArr[1]); } } array_push($listVal, $temp); } $re = downloadXLSX($filename, $header, $listVal); if($re){ return $this->output(0, $re); }else{ return $this->output(1, 'success'); }} function getTmpDir(): string{ $tmp = ini_get('upload_tmp_dir'); if ($tmp !== False && file_exists($tmp)) { return realpath($tmp); } return realpath(sys_get_temp_dir());}/** * download xlsx file * * @param string $filename * @param array $header * @param array $list * @return string errmsg */function downloadXLSX(string $filename, array $header, array $list): string{ try { $config = ['path' => getTmpDir() . '/']; $excel = (new \Vtiful\Kernel\Excel($config))->fileName($filename.'.xlsx', 'Sheet1'); $fileHandle = $excel->getHandle(); $format1 = new \Vtiful\Kernel\Format($fileHandle); $format2 = new \Vtiful\Kernel\Format($fileHandle); // title style $titleStyle = $format1->fontSize(16) ->bold() ->font("Calibri") ->align(\Vtiful\Kernel\Format::FORMAT_ALIGN_CENTER, \Vtiful\Kernel\Format::FORMAT_ALIGN_VERTICAL_CENTER) ->toResource(); // global style $globalStyle = $format2->fontSize(10) ->font("Calibri") ->align(\Vtiful\Kernel\Format::FORMAT_ALIGN_CENTER, \Vtiful\Kernel\Format::FORMAT_ALIGN_VERTICAL_CENTER) ->border(\Vtiful\Kernel\Format::BORDER_THIN) ->toResource(); $headerLen = count($header); // header array_unshift($list, $header); // title $title = array_fill(1, $headerLen - 1, ''); $title[0] = $filename; array_unshift($list, $title); $end = strtoupper(chr(65 + $headerLen - 1)); // column style $excel->setColumn("A:{$end}", 15, $globalStyle); // title $excel->MergeCells("A1:{$end}1", $filename)->setRow("A1", 25, $titleStyle); // 冻结前两行,列不冻结 $excel->freezePanes(2, 0); // 数据 $filePath = $excel->data($list)->output(); header("Content-Disposition:attachment;filename={$filename}.xlsx"); $re = copy($filePath, 'php://output'); if ($re === false) { $err = 'failed to write output'; } else { $err = ''; } @unlink($filePath); return $err; } catch (\Vtiful\Kernel\Exception $e) { return $e->getMessage(); }}如果发现下载的文件有时候打不开,那应该是你使用了官方的DEMO,问题出在 filesize(),这个函数是有缓存的,所以你会发现下载下来的文件和原始的文件大小不一样。要么像我一样不去设置 Content-Length,要么使用 clearstatcache()手动清除缓存。实测5w条记录导出耗时1.5s,效果还是很强劲的。
2023年12月27日
5 阅读
0 评论
0 点赞
2023-12-26
吐血整理!数十个程序员硬核工具奉上!
吐血整理!数十个程序员硬核工具奉上!在我认识的所有程序员里,每个人几乎都有专属于自己的常用工具和相关资源,今天给大家奉上数几十个程序员硬核工具,我相信这里总有一款工具是属于你的,所以一定要看到最后哟!程序员生产力工具大全如下:Idea-Intellij IDEA (java 编程语言 开发的集成环境)业界排名第一的java开发工具,非常非常好用,如果还在用eclipse的朋友,赶紧来体验一把,你一定会爱上她的。SecureCRT (SSH终端仿真程序)SecureCRT是一款终端仿真程序,支持SSH(SSH1和SSH2)以及Telnet和rlogin协议。SecureCRT用于连接运行包括Windows、UNIX和VMS在内的远程系统的理想工具。Termius (全平台的远程终端)termius是一款全平台的远程终端,Termius不仅涵盖了Windows、Linux、OSX,还变态得支持Android和iOS(以后在地铁、公交上都可以随时拿出手机来排查线上问题啦,还真是广大程序员的福音呢。Google Chrome (谷歌浏览器)Google Chrome是一款由Google公司开发的网页浏览器,该浏览器基于其他开源软件撰写,包括WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。iTerm (为Mac OS X编写的终端仿真程序)iTerm是一个为Mac OS X编写的,功能齐全的终端仿真程序;目标是在为用户提供OS X下最佳的命令行体验;字母i代表了本地苹果的外观和风格的程序界面,并把重点放在完整的国际支持;它合并由两个项目, CTerminal和TerminalX ,而这两者都是基于JTerminal项目;该软件非常有实用和易用性。Visual Studio Code (简称“VS Code”,编写现代Web和云应用的跨平台源代码编辑器)重新定义和优化了代码编辑,以便生成和调试新式 Web 应用程序和云应用程序。也是著名的文本编辑器,它是轻量级的,vSCode的一大特点就是你可以通过多种方式来调整设置,而且Vim可以和VScode集成在一起,它还带有一个集成终端,可用的扩展太多,使开发人员的工作变得更加轻松。我最喜欢的一些扩展是AWS Toolkit, ESLint,Live Server, Live Share, Prettier-代码格式化程序,YAML,Live Sass编译器,Docker等。VMware Fusion & VMware workstation (为计算机开发的虚拟机管理程序)是在计算机上无缝运行 Windows 的最佳方式,可确保 Windows 应用程序在计算机上实现无缝运行可以在基于 Intel 的计算机上无缝运行 Windows、Linux 以及其他 PC等多个操作系统,进而构建、测试或演示软件。Navicat Premium (数据库管理工具)Navicat premium是一款数据库管理工具,是一个可多重连线资料库的管理工具,它可以让你以单一程式同时连线到 MySQL、SQLite、Oracle 及 PostgreSQL 资料库,让管理不同类型的资料库更加的方便。Postman (api调试工具)简单来说,四个词,简单、实用、大方、美观!postman这款网页调试工具的windows客户端,功能强大的HTTP调试与模拟插件。使用Postman可以进行API开发、请求、调试,除了它,还可以使用lnsomnia和Insomnia Designer作为API文档。RedisDesktopManager (一款可视化 redis管理工具 )Redis Desktop Manager是一款简单快速、跨平台的Redis桌面管理工具,也被称作Redis可视化工具,Redis Desktop Manager官方版是一款开源软件,支持通过SSH Tunnel连接,支持windows、mac等多平台。Dash (基于MAC的 API文档浏览器和代码片段管理器)“开发者不可或缺的杰作。”Dash 可让您的 Mac 即时离线访问 200 多个 API 文档集。立刻搜索离线文件集200层+的API ,100+备忘单和 href="">更多 功能。您甚至可以"">生成自己的文档集 或 href="">请求 包含href="">文档集 。Fiddler & Wireshark (http抓包工具)Fiddler和Wireshark都是进行抓包的工具:所谓抓包就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。作为开发者,经常想调试一下http请求发送的数据的详情,那么可以使用这2款软件。用抓包工具wireshark的人相对来说更多一些。HBuilder X (HTML5的Web开发工具)当前最快的HTML开发工具,强大的代码助手帮你快速完成开发,最全的语法库和浏览器兼容性数据让浏览器碎片化不再头痛。作为HBuilder下一代的全新编辑器,HBuilderX被定位为ide和编辑器的完美结合,除了对某种语言的语法分析、提示、转到定义、调试,同时加强了对通用文本处理能力,界面更加清爽,拥有比上一代更加有效的快捷键体系。MobaXterm (远程终端控制软件,集串口,SSH远程登录和FTP传输三合一的工具)多功能终端MobaXterm Professional Edition 是一款豪华、全功能的终端软件。MobaXterm带来了所有必要的Unix命令到Windows桌面,在开箱单便携式exe文件。MobaXterm允许您启动远程会话。远程shell,MobaXterm远比Putty好用,您可以选择创建SSH,远程登录,Rlogin,RDP,VNC,XDMCP,FTP,SFTP或串行会话。Sublime Text (跨平台代码编辑器)http://www.sublimetext.cn/Sublime Text 是一款用于代码、标记和散文的精致文本编辑器。Sublime Text 中文网致力于为广大国内开发者提供详尽的中文文档、使用说明等,助力开发者快速掌握这个编辑器。16.webstorm (专业的HTML编辑工具)web开发的必备的一款开发神器,比如写js、页面、css,那么这款软件用起来非常顺手。此软件和idea出自于同一家公司,这家公司做了很多异常好用的软件,基本上你需要的各种开发相关的IDE,这家公司都生产。可以说是“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”。新版对JavaScript,TypeScript和CSS支持更好,改进了Vue.js的体验,并为Jest集成增加了新功能。17.Xshell (功能强大的终端模拟器)linux原创控制软件,完全免费且非常稳定的 SSH 客户端 ,支持多种远程协议,提供了很多特色与高级功能,简体中文界面也让你轻松管理远程服务器。Xshell 的 Screen 会话不闪屏,而且可以回滚;Script 的执行顺序可以调整;可以同时发送指令到多个 session;支持布局切换等。SwitchHosts (修改Hosts文件的工具)这是用于在多个HOSTS之间进行切换。可在公用hosts文件 、当前系统hosts、本地方案和在线方案间进行切换。作为一名开发人员,经常需要修改本地host,你还是通过修改host文件来操作的么?那样太慢了,这里建议大家使用switchhosts这款软件,可以快速修改本地host,非常好用。其他工具:CodeIf(智能命名) :https://unbug.github.io/codelf大部分开发者都或多或少遇到过变量命名的烦恼,如果命名不规范,不仅会影响开发的效率,而且对后面维护的同学来说也是一个不小的挑战,因为他要去揣摩你这个变量的含义。随着项目越来越复杂,变量和函数数量越来越多,虽然每个编程语言都有各种命名规范,但是也不能解决所有的问题。“计算机科学里两件最难的事:缓存失效和命名。” Codelf通过搜索在线开源平台Github, Bitbucket, Google Code, Codeplex, Sourceforge, Fedora Project的项目源码,帮开发者从中找出已有的匹配关键字的变量名,从而帮助为变量名苦恼的开发者命名。这个搜索服务支持直接搜索中文。同时可以在自己用的编辑器里安装插件,支持 VS Code、Atom、Sublime Text 和 Chrome。DocsChina-印记中文 : https://www.docschina.org这是一个前端中文文档合集,进入网站可以看到开发中经常使用的前端中文文档。如果你的英文实在不怎么好,还在为找中文文档而烦恼,这里将是你非常好的选择。记得放到自己的浏览器收藏夹里哦!any-rule(正则表达大全):http://github.com/any86/any-ruleany-rule 维护了一个常用正则表达式合集,并且本身是一个支持 Web/VS Code/idea/Alfred Workflow 多平台的正则表达式工具。tool.lu(在线工具): https://tool.lu程序员总是有很多小工具要使用,比如、Base64编码、Markdown编辑器时间戳转换,进制转换等,在线运行各种语言代码。这个网站包含了太多程序员需要用到的小工具了。比如你想运行点JAVA代码,又不想麻烦的在系统中安装JAVA环境,可以使用里边的在线运行代码工具,然后选择JAVA,写点JAVA代码就可以直接运行了。Baomitu(前端静态源库): https://cdn.baomitu.com这个静态资源库是支持HTTP/2的CDN服务,有了它,如果你是自己的小型项目或者是做测试就不用下载任何的代码库,直接粘贴地址过来用就可以,因为是国内的CDN库,速度还非常的快。Typora-Markdown(编写工具):https://www.typora.io一款实用的 Markdown 编写工具,所见即所得,用Markdown编写文章是一个程序员的标准配置,也就是标配。现在有很多在线工具都支持Markdown,什么有道云笔记、雀语,、印象笔记等。这种简单的界面,沉浸式的编写,清晰的大纲,它就像一件称手的兵器,让你一旦拥有就爱不释手。Snipaste (简单便捷的截图软件):https://zh.snipaste.com/download.html一款免费的桌面截图软件,功能强大,使用方便,支持任何屏幕位置截图,支持窗口截图,支持快捷方式截图。您可通过截取贴图,使两张图合并为一张图,还能调整截图文字图像等等,是一款非常强大的贴图软件,喜欢此款贴图软件的朋友不要错过。Captura (最好用的开源录屏、gif动态制作工具)官网:https://captura.updatestar.com/github:https://github.com/MathewSachin/Captura通过这款工具可以帮助你轻松录制各种视频。支持全屏录制、区域录制两种方式,全屏录制可以录制全部的电脑屏幕,将电脑屏幕上所有的动态都录制下来,该软件还拥有视频编解码器,可以对视频进行解码,支持mp4、avi、GIF、webm等格式,可以满足一般的解码需要。还支持屏幕截图、剪贴板,简单的图像编辑等功能,是一款非常好用的屏幕录像工具。向日葵 (远程控制软件):https://sunlogin.oray.com/向日葵远程控制是一款提供远程控制服务的软件。向日葵远程控制支持主流操作系统Windows、Linux、Mac、Android、iOS跨平台协同操作,在任何可连入互联网的地点,都可以轻松访问和控制安装了向日葵远程控制客户端的设备。整个远控过程,可通过浏览器直接进行,无需再安装软件。Everything (本地文件检索工具):http://www.voidtools.com/support/everything/由voidef="">tools 开发的一款文件搜索工具,这款软件是基于名称实时定位文件和目录。Everthing功能强大,体积小巧,第一次安装使用时会建立一个索引数据库,将所有文件和文件夹的名称导入其中,后续使用能够以极快的速度快速搜索,查找到你所需要的文件。StarUML (UML画图工具)画uml图的一款神器,类图、时序图、流程图、状态图等等,都可以用这款工具轻松应对。uTools (生产力工具集):https://u.tools/一个极简、插件化、跨平台的现代化桌面软件。通过自由选配丰富的插件,打造你得心应手的工具集合。这个工具,我只能说他是一款神奇,太牛逼,这款工具中汇集了很多好用的工具,可以通过这款工具秒开电脑上的各种软件。搜索资源网站工具:1.BingBing 国际版:https://cn.bing.com/感觉比某度要好用多了。2.DuckDuckGoDuckDuckGo:https://duckduckgo.com/从官网的介绍来看这个搜索引擎不收集用户信息,而且没有广告。3.Stack OverflowStack Overflow:https://stackoverflow.com/我们如果常用 Google,很多技术问题的答案就在这个网站上,如果你无法使用 Google 可以在这个网站上直接检索就好了。4.GitlogsGitlogs:https://www.gitlogs.com/Gitlogs 是专门针对 GitHub 项目的搜索引擎,我们通过他可以快速找到想要项目。5.jiumo search文档搜索引擎 jiumo search 鸠摩搜书:https://www.jiumodiary.com/可以用来找一些技术文档手册,很多在百度网盘里。6.EbookeEbooke:https://ebookee.org/Ebookee 是一个基于互联网并提供免费电子图书下载的搜索引擎网站。7.Iconfinder图标搜索:https://www.iconfinder.com/用来查找 logo 。8.TinEyeTinEye:https://www.tineye.com用来检索,我们可以上传或输入的 URL 来检索。9.SemanticScholarSemanticScholar:https://www.semanticscholar.org/SemanticScholar 是一个免费学术搜索引擎,其检索结果来自于期刊、学术会议资料或者是学术机构的文献。10.LibreStockLibreStock:https://librestock.com/LibreStock 上可以检索一些优质的高清。http://11.CC SearchCC Search:https://ccsearch.creativecommons.org/CC Search 上搜索到的资源都是无版权的,我们可以免费的使用。12.PexelsPexels:https://www.pexels.com/高质量的网站,可以免费使用。13.UnsplashUnsplash:https://unsplash.com/免费高清素材网站。14.The App StoreThe App Store:https://theappstore.org/The App Store 是一个针对苹果手机、iPad、Mac 设备的应用搜索工具。在线画图工具:在线画图工具ProcessOn:https://www.processon.com/在线画图工具http://draw.io:https://app.diagrams.net/在线思维导图工具:http://www.mindline.cn/webappPlantUML在线编辑器:http://haha98k.com/在线开发辅助工具:日常开发经常会用到一些辅助工具我总结为8大类,包括:编解码工具、转换工具、正则工具、编译工具、网络工具、格式化工具、可视化工具、在线生成器、以及其他工具等等。具体列表如下:在线编码工具:BASE64编解码工具:https://base64.supfree.net/• MD5编码工具:https://www.zxgj.cn/g/md5• AES/DES加解密:http://www.fly63.com/tool/cipher/• JWT解码工具:http://jwt.calebb.net/• ASCII编解码工具:https://www.matools.com/code-convert-ascii• Unicode编解码工具:https://www.zxgj.cn/g/unicode• UTF-8编解码工具:https://www.zxgj.cn/g/utf8• 字符串编解码工具:https://www.zxgj.cn/g/enstring• URL编解码工具:http://tool.chinaz.com/tools/urlencode.aspx?jdfwkey=lbixz1在线转换工具:在线ASCII码对照表:http://www.fly63.com/tool/ascii/• 通用进制转换工具:https://www.zxgj.cn/g/jinzhi• 在线浮点数十进制转换:http://www.binaryconvert.com/• RGB颜色转换:https://www.zxgj.cn/g/yansezhi• 时间戳转换工具:https://www.zxgj.cn/g/unix• 计量单位换算工具:http://www.fly63.com/tool/unitable/• 在线JSON解析:http://www.json.cn/• 在线JS代码格式化工具:https://prettier.io/playground/• SQL压缩/格式化工具:https://www.zxgj.cn/g/sqlformat• JSON和XML在线转换:https://www.zxgj.cn/g/jsonxml• JSON/YAML在线转换:http://www.fly63.com/tool/jsonyaml/• 人民币大小写转换工具:http://www.fly63.com/tool/renmingbi/正则表达式工具:正则表达式调试工具:https://regexr.com/• 正则表达式可视化工具:https://jex.im/regulex/网络工具:IP地址归属地查询:https://www.ip138.com/• IP地址查询:https://www.ipip.net/ip.html• HTTP在线接口测试工具:http://www.fly63.com/php/http/在线编译运行工具:C# 在线编译运行:https://rextester.com/• C/C++在线编译调试:https://www.onlinegdb.com/• 在线编译工具套装:https://c.runoob.com/可视化/格式化工具:在线前端编辑器: https://codepen.io/• 在线数据可视化:https://flourish.studio/• 在线JSON解析:http://www.json.cn/• 在线CSS代码可视化工具:https://enjoycss.com/• XML格式化工具:https://www.zxgj.cn/g/xmlformat• 在线JS代码格式化工具:https://prettier.io/playground/• SQL压缩/格式化工具:https://www.zxgj.cn/g/sqlformat• JSON和XML在线转换:https://www.zxgj.cn/g/jsonxml• JSON/YAML在线转换:http://www.fly63.com/tool/jsonyaml/在线生成器:UUID在线生成器:https://www.zxgj.cn/g/uuid• 随机数生成器:https://www.zxgj.cn/g/suijishu其他常用工具:在线Nginx配置工具:https://nginxconfig.io/• 在线对比工具:http://www.fly63.com/tool/textdiff/• 在线Chrome浏览器插件:https://www.crx4chrome.com/• 在线接口文档管理工具:http://www.docway.net在线素材工具:如果你写文章,或者做视频,那就一定少不了要找素材,包括各种、背景、emoji表情、表情包、壁纸、视频、gif图等等。• 免费透明背景素材:http://pngimg.com/• Emoji表情搜索:https://emoji.svend.cc/• Emoji表情包下载:https://emojiisland.com/• open source icons:https://feathericons.com/• 表情包在线网站:https://fabiaoqing.com/• 免费PNG库:https://pluspng.com/• ICON图标在线下载:https://www.iconfinder.com/• 极简壁纸:https://bz.zzzmh.cn/• Wallpaper Abyss壁纸:https://wall.alphacoders.com• Pixabay素材库:https://pixabay.com/zh/• Unsplash素材库:https://unsplash.com• Pexels素材库:http://www.pexels.com• NASA视频素材库:https://images.nasa.gov设计制作类工具:对于那些文章创作者和视频创作者而言,设计封面,做海报,设计LOGO,美化等等基本也是刚需。这样大概率日常会用到一些简易好上手的在线设计制作类工具,比如在线P图、音/视频轻量化剪辑、logo制作、海报设计制作、美化、在线转换或生成等等。• 在线PS:https://www.uupoop.com/• 在线音频剪辑:https://www.weixinsyt.com/• 在线视频剪辑:https://www.kapwing.com/• 免费logo在线制作:http://www.uugai.com/• 艺术字体在线生成:https://www.qt86.com/• 在线表格转换工具: https://tableconvert.com/• 在线海报设计工具:https://www.designcap.com/• 智能放大工具:https://bigjpg.com/• 二维码美化器:https://mh.cli.im/• 在线代码截图工具:https://carbon.now.sh/• 在线抠图工具:https://www.remove.bg/zh• ICO图标在线生成:http://www.fly63.com/php/ico/• SVG转PNG工具:http://www.fly63.com/tool/svg2img/• 视频转GIF工具:http://www.fly63.com/tool/giftxt/• 二维码在线生成器:http://www.fly63.com/tool/ewm/• 二维码在线解码:http://www.fly63.com/php/decoder/写辅助工具:写文章的过程中经常会用到和写作相关的辅助工具,比方说:字数统计工具、Markdown格式的文章排版工具、图床网站、代码截图工具等等,所以下面这些在线工具就能很好地满足我的需求。• 在线字数统计:https://www.eteste.com/• mdnice markdown排版工具:https://mdnice.com/• md2all markdown排版工具:http://md.aclickall.com/• 在线图床神器:https://picx.xpoet.cn/• 在线免费图床:https://sm.ms/• 图壳图床:https://imgkr.com/• 在线代码截图工具:https://carbon.now.sh/• 在线短链接工具:https://urlify.cn/• 在线文本替换:http://www.fly63.com/tool/textreplace/在线办公工具:部分在线工具主要用来处理一些和文档以及文稿相关的事情,经常用到的比如:在线的全套pdf处理和转换工具、各种各样多媒体文件间的相互转换工具、在线识别工具、在线压缩工具等等。• pdf在线处理工具1:https://smallpdf.com/cn/pdf-tools• pdf在线处理工具2:https://tools.pdf24.org/zh/• pdf转word在线工具:https://www.pdftoword.com/• 在线多媒体转换器合集:https://cn.office-converter.com/• 在线文字识别工具:https://ocr.wdku.net/• 在线文件压缩工具:https://docsmall.com/文档笔记工具:好记性不如烂笔头,作为一个学习者,我觉得记笔记是必不可少的步骤。当然现在基本都做电子笔记和电子文档比较多。现如今各式各样优秀的文档工具和笔记软件鳞次栉比,好用的也有很多,整理成如下列表,这东西各有长处,使用哪个最合意还得看个人习惯和需求了。• 印象笔记:https://www.yinxiang.com/• 有道笔记:https://note.youdao.com/• OneNote:https://www.onenote.com/• 幕布:https://mubu.com/• 为知笔记:https://www.wiz.cn/• 石墨文档:https://shimo.im/• Simplenote:https://simplenote.com/• 语雀:https://www.yuque.com/编程学习网:• php中文网:https://www.php.cn/• 哔哩哔哩:https://www.bilibili.com/• C语言网:https://www.dotcpp.com/• cppreference:http://zh.cppreference.com/• 中国大学MOOC:https://www.icourse163.org/• 牛客网:http://www.nowcoder.com• 网易公开课:http://open.163.com• CodeGym:https://codegym.cc/• BeginnersBook:https://beginnersbook.com/• JavaSED:http://www.javased.com/• codecademy:https://www.codecademy.com/• Coursera:https://www.coursera.org/• StackOverFlow:https://stackoverflow.com/• LeetCode:https://leetcode-cn.com/• LintCode:https://www.lintcode.com/
2023年12月26日
10 阅读
0 评论
0 点赞
1
...
45
46
47
...
157