WordPress产品导入后内容出现乱码,以及附属一些别的功能

news/2025/1/20 9:45:49/文章来源:https://www.cnblogs.com/Boboschen/p/18680805
效果图如下

 

 

该插件附带了一个可以把产品描述里面的超链接给去掉,以及有的产品图片点击会在地址栏上面显示图片的路径,在该插件可以进行关闭,并且替换成一个模态窗,还有对产品邮费展示进行了处理,到金额到达包邮的时候,别的邮费进行隐藏

下面是该插件源码
目录结构
duola
  duola.php
  scripts.js
  styles.css

duola.php文件

<?php
/*
Plugin Name: 产品数据内容处理
Description: 产品标题以及描述中,如果有原本网站的数据,使用这个插件进行处理(新版本功能:增加了产品详情,给产品图片新增了一个模态窗,以及产品隐藏其他运费增加了一个快捷按钮和产品描述去超链接)
Version: 2.3.4
Author: 朵啦
*/if (!defined('ABSPATH')) {exit; // 如果直接访问,退出
}class ContentReplacer {public function __construct() {// 添加后台菜单add_action('admin_menu', array($this, 'add_admin_menu'));// 处理表单提交add_action('admin_post_replace_content', array($this, 'handle_form_submission'));// 处理回滚add_action('admin_post_rollback_content', array($this, 'handle_rollback'));// 处理免运费隐藏按钮的表单提交add_action('admin_post_toggle_shipping', array($this, 'handle_toggle_shipping'));// 处理产品模态窗按钮的表单提交add_action('admin_post_toggle_modal', array($this, 'handle_toggle_modal'));add_action('admin_post_toggle_hyperlink', array($this, 'handle_toggle_hyperlink'));add_action('admin_post_close_hyperlink', array($this, 'handle_close_hyperlink'));// 检查简码状态的AJAX处理add_action('wp_ajax_check_shortcode_status', array($this, 'check_shortcode_status'));// 添加样式和脚本add_action('admin_enqueue_scripts', array($this, 'enqueue_styles'));}// 添加后台菜单项public function add_admin_menu() {add_menu_page('产品数据内容处理',  // 页面标题'产品数据内容处理',  // 菜单标题'manage_options', // 权限'content-replacer', // 菜单别名array($this, 'create_admin_page'), // 页面内容的回调函数'dashicons-admin-tools' // 图标
        );}public function enqueue_styles() {wp_enqueue_style('content-replacer-styles', plugins_url('styles.css', __FILE__));wp_enqueue_script('content-replacer-scripts', plugins_url('scripts.js', __FILE__), array('jquery'), null, true);wp_add_inline_style('content-replacer-styles', '
        #adminmenu .toplevel_page_content-replacer .wp-menu-image:before {content: "";display: inline-block;width: 20px;height: 20px;background-image: url(' . plugins_url('img/icon.png', __FILE__) . ');background-size: cover;}');
    }// 创建后台页面public function create_admin_page() {?><div class="wrap content-replacer-container"><h1>产品数据内容处理</h1><form method="post" action="<?php echo admin_url('admin-post.php'); ?>" id="content-replacer-form"><input type="hidden" name="action" value="replace_content"><?php wp_nonce_field('replace_content_nonce', 'replace_content_nonce_field'); ?><table class="form-table"><tr valign="top"><th scope="row"><label for="original_text">原始内容</label></th><td><input type="text" id="original_text" name="original_text" required /></td></tr><tr valign="top"><th scope="row"><label for="new_text">新内容</label></th><td><input type="text" id="new_text" name="new_text" required /></td></tr></table><p class="submit"><input type="submit" class="button-primary" value="替换内容" /></p><div id="loading" class="loading">正在处理中,请稍候...</div><div class="progress-bar" id="progress-bar"><div class="progress-bar-inner" id="progress-bar-inner"></div></div></form><h2>替换历史</h2><ul><?php$history = get_option('content_replacer_history', array());if (empty($history)) {echo '<li>还没有进行过替换。</li>';} else {$history_by_date = [];foreach ($history as $entry) {$date = date('Y-m-d H:i:s', strtotime($entry['date']));if (!isset($history_by_date[$date])) {$history_by_date[$date] = ['entries' => [], 'count' => 0];}$history_by_date[$date]['entries'][] = '"' . esc_html($entry['original_text']) . '" 替换为 "' . esc_html($entry['new_text']) . '"';$history_by_date[$date]['count'] += $entry['replacements'];}foreach ($history_by_date as $date => $data) {$entries = array_unique($data['entries']); // 去除重复项echo '<li>';echo '' . esc_html($date) . ' 替换: ';echo implode(', ', $entries);echo '' . $data['count'] . ' 处改动 ';echo ' <a href="' . wp_nonce_url(admin_url('admin-post.php?action=rollback_content&date=' . urlencode($date)), 'rollback_content_nonce', 'rollback_content_nonce_field') . '">回滚</a>';echo '</li>';}}?></ul></div><div class="wrap content-replacer-container"><!-- 新按钮:免运费隐藏 --><form method="post" action="<?php echo admin_url('admin-post.php'); ?>" id="shipping-toggle-form"><input type="hidden" name="action" value="toggle_shipping"><?php wp_nonce_field('toggle_shipping_nonce', 'toggle_shipping_nonce_field'); ?><p class="submit"><input type="submit" class="button-primary" id="toggle-shipping-button" value="免运费隐藏" /></p></form><!-- 新按钮:产品模态窗 --><form method="post" action="<?php echo admin_url('admin-post.php'); ?>" id="modal-toggle-form"><input type="hidden" name="action" value="toggle_modal"><?php wp_nonce_field('toggle_modal_nonce', 'toggle_modal_nonce_field'); ?><p class="submit"><input type="submit" class="button-primary" id="toggle-modal-button" value="产品模态窗" /></p></form><!-- 新按钮:去产品超链接 --><form method="post" action="<?php echo admin_url('admin-post.php'); ?>" id="hyperlink-toggle-form"><input type="hidden" name="action" value="toggle_hyperlink"><?php wp_nonce_field('toggle_hyperlink_nonce', 'toggle_hyperlink_nonce_field'); ?><p class="submit"><input type="submit" class="button-primary" id="toggle-hyperlink-button" value="检查中..." /></p></form><!-- 新按钮:关闭描述去超链接功能 --><form method="post" action="<?php echo admin_url('admin-post.php'); ?>" id="hyperlink-close-form" style="display:none;"><input type="hidden" name="action" value="close_hyperlink"><?php wp_nonce_field('close_hyperlink_nonce', 'close_hyperlink_nonce_field'); ?><p class="submit"><input type="submit" class="button-primary" id="close-hyperlink-button" value="关闭描述去超链接功能" /></p></form></div><script>jQuery(document).ready(function($) {$('#content-replacer-form').on('submit', function() {$('#loading').hide();$('#progress-bar').show();var progressBar = $('#progress-bar-inner');var width = 0;var interval = setInterval(function() {if (width >= 100) {clearInterval(interval);$('#progress-bar').hide();} else {width += 1; // 增加进度的步长progressBar.css('width', width + '%');progressBar.text(width + '%');}}, 50); // 模拟进度,逐步增加
                });// 隐藏其他插件提示$('.notice, .update-nag, .updated, .error, .is-dismissible').not('.content-replacer-container .notice').hide();// 检查 function.php 中是否有相关简码
                $.ajax({url: ajaxurl,data: {'action': 'check_shortcode_status'},success: function(response) {if (response.shipping_hidden) {$('#toggle-shipping-button').val('其他运费已隐藏');}if (response.modal_enabled) {$('#toggle-modal-button').val('产品图片模态窗已开启');}if (response.hyperlinks_exist) {$('#toggle-hyperlink-button').val('描述有超链接,点击去掉').css({'background-color': '#ff6666','color': '#f5f5dc'}).prop('disabled', false);} else {$('#toggle-hyperlink-button').val('产品无链接,无需点击此按钮').css({'background-color': '#add8e6','color': '#ffffff'}).prop('disabled', true);}}});// 当去掉超链接按钮被点击$('#hyperlink-toggle-form').on('submit', function() {$('#toggle-hyperlink-button').val('超链接已去掉,无需点击此按钮').prop('disabled', true);$('#close-hyperlink-button').parent().show();});// 当关闭超链接功能按钮被点击$('#hyperlink-close-form').on('submit', function() {$('#toggle-hyperlink-button').val('描述有超链接,点击去掉').prop('disabled', false);$('#close-hyperlink-button').parent().hide();});});</script><?php}// 处理表单提交public function handle_form_submission() {if (!isset($_POST['replace_content_nonce_field']) || !wp_verify_nonce($_POST['replace_content_nonce_field'], 'replace_content_nonce')) {wp_die('Nonce 验证失败');}if (!current_user_can('manage_options')) {wp_die('无权限');}$original_text = sanitize_text_field($_POST['original_text']);$new_text = sanitize_text_field($_POST['new_text']);global $wpdb;// 获取所有产品$products = $wpdb->get_results("SELECT ID, post_title, post_content, post_excerpt FROM {$wpdb->posts} WHERE post_type = 'product'");// 在替换前保存原始数据$history = get_option('content_replacer_history', array());$total_replacements = 0;foreach ($products as $product) {$original_data = array('ID' => $product->ID,'post_title' => $product->post_title,'post_content' => $product->post_content,'post_excerpt' => $product->post_excerpt,);$title_replacements = substr_count($product->post_title, $original_text);$content_replacements = substr_count($product->post_content, $original_text);$excerpt_replacements = substr_count($product->post_excerpt, $original_text);$total_replacements += $title_replacements + $content_replacements + $excerpt_replacements;$history_entry = array('date' => current_time('mysql'),'original_text' => $original_text,'new_text' => $new_text,'data' => $original_data,'replacements' => $total_replacements,);array_unshift($history, $history_entry); // 添加到数组开头
        }update_option('content_replacer_history', $history);// 执行替换操作foreach ($products as $product) {$updated_post = array('ID' => $product->ID,'post_title' => str_replace($original_text, $new_text, $product->post_title),'post_content' => str_replace($original_text, $new_text, $product->post_content),'post_excerpt' => str_replace($original_text, $new_text, $product->post_excerpt),);$wpdb->update($wpdb->posts,$updated_post,array('ID' => $product->ID));}wp_redirect(admin_url('admin.php?page=content-replacer'));exit;}// 处理回滚操作public function handle_rollback() {if (!isset($_GET['rollback_content_nonce_field']) || !wp_verify_nonce($_GET['rollback_content_nonce_field'], 'rollback_content_nonce')) {wp_die('Nonce 验证失败');}if (!current_user_can('manage_options')) {wp_die('无权限');}$date = urldecode($_GET['date']);$history = get_option('content_replacer_history', array());// 筛选出指定日期的历史记录$entries_to_rollback = array_filter($history, function($entry) use ($date) {return date('Y-m-d H:i:s', strtotime($entry['date'])) === $date;});if (!empty($entries_to_rollback)) {global $wpdb;foreach ($entries_to_rollback as $entry) {$original_data = $entry['data'];$wpdb->update($wpdb->posts,array('post_title' => $original_data['post_title'],'post_content' => $original_data['post_content'],'post_excerpt' => $original_data['post_excerpt'],),array('ID' => $original_data['ID']));}// 移除已回滚的历史记录$history = array_filter($history, function($entry) use ($date) {return date('Y-m-d H:i:s', strtotime($entry['date'])) !== $date;});update_option('content_replacer_history', $history);wp_redirect(admin_url('admin.php?page=content-replacer'));exit;} else {wp_die('无效的历史记录日期');}}// 处理免运费隐藏按钮的表单提交public function handle_toggle_shipping() {if (!isset($_POST['toggle_shipping_nonce_field']) || !wp_verify_nonce($_POST['toggle_shipping_nonce_field'], 'toggle_shipping_nonce')) {wp_die('Nonce 验证失败');}if (!current_user_can('manage_options')) {wp_die('无权限');}$function_code = "
        function js_hide_all_shipping_when_free_is_available( \$shipping_rates ) { foreach ( \$shipping_rates as \$key => \$rate ) { if ( \$rate->get_method_id() == 'free_shipping' ) { \$shipping_rates = array( \$key => \$rate ); } } return \$shipping_rates;} add_filter( 'woocommerce_package_rates', 'js_hide_all_shipping_when_free_is_available' );";
$functions_path = get_template_directory() . '/functions.php';$functions_content = file_get_contents($functions_path);if (strpos($functions_content, 'js_hide_all_shipping_when_free_is_available') === false) {file_put_contents($functions_path, $functions_content . PHP_EOL . $function_code);} else {$functions_content = str_replace($function_code, '', $functions_content);file_put_contents($functions_path, $functions_content);}wp_redirect(admin_url('admin.php?page=content-replacer'));exit;}// 处理产品模态窗按钮的表单提交public function handle_toggle_modal() {if (!isset($_POST['toggle_modal_nonce_field']) || !wp_verify_nonce($_POST['toggle_modal_nonce_field'], 'toggle_modal_nonce')) {wp_die('Nonce 验证失败');}if (!current_user_can('manage_options')) {wp_die('无权限');}$function_code = "
        function theme_enqueue_scripts_and_styles() {wp_enqueue_style('custom-style', get_stylesheet_directory_uri() . '/css/custom-style.css');wp_enqueue_script('custom-script', get_template_directory_uri() . '/js/custom-script.js', array('jquery'), null, true);\$inline_script = \"jQuery(document).ready(function($) {\$('body').append('<div id=\\\"myModal\\\" class=\\\"modal\\\"><span class=\\\"close\\\">&times;</span><img class=\\\"modal-content\\\" id=\\\"img01\\\"></div>');var modal_css = '<style>\.modal {display: none; position: fixed; z-index: 1000; padding-top: 100px; left: 0; top: 0; width: 100%; height: 100%; overflow: auto; background-color: rgb(0,0,0); background-color: rgba(0,0,0,0.9);}\.modal-content {margin: auto; display: block; max-width: 40%; transition: transform 0.3s;}\.close {position: absolute; top: 15px; right: 35px; color: white; font-size: 40px; font-weight: bold; cursor: pointer;}\</style>';\$('head').append(modal_css);var isZoomed = false;\$('.woocommerce-product-gallery__image a').click(function(event) {event.preventDefault();var imgSrc = \$(this).find('img').attr('src');\$('#img01').attr('src', imgSrc);\$('#myModal').css('display', 'block');isZoomed = false;\$('#img01').css('transform', 'scale(1)');});\$('.close, .modal').on('click', function(event) {if (event.target !== this) return;\$('#myModal').css('display', 'none');});\$('#img01').on('dblclick', function() {if (isZoomed) {\$(this).css('transform', 'scale(1)');isZoomed = false;} else {\$(this).css('transform', 'scale(2)');isZoomed = true;}});});\";
wp_add_inline_script('custom-script', \$inline_script);}add_action('wp_enqueue_scripts', 'theme_enqueue_scripts_and_styles');";
$functions_path = get_template_directory() . '/functions.php';$functions_content = file_get_contents($functions_path);if (strpos($functions_content, 'theme_enqueue_scripts_and_styles') === false) {file_put_contents($functions_path, $functions_content . PHP_EOL . $function_code);} else {$functions_content = str_replace($function_code, '', $functions_content);file_put_contents($functions_path, $functions_content);}wp_redirect(admin_url('admin.php?page=content-replacer'));exit;}// 处理去产品超链接按钮的表单提交public function handle_toggle_hyperlink() {if (!isset($_POST['toggle_hyperlink_nonce_field']) || !wp_verify_nonce($_POST['toggle_hyperlink_nonce_field'], 'toggle_hyperlink_nonce')) {wp_die('Nonce 验证失败');}if (!current_user_can('manage_options')) {wp_die('无权限');}$function_code = "
    function remove_product_hyperlinks(\$content) {if (is_product()) {\$content = preg_replace('/<a href=\".*?\">(.*?)<\/a>/', '\$1', \$content);}return \$content;}add_filter('the_content', 'remove_product_hyperlinks');";
$functions_path = get_template_directory() . '/functions.php';$functions_content = file_get_contents($functions_path);if (strpos($functions_content, 'remove_product_hyperlinks') === false) {file_put_contents($functions_path, $functions_content . PHP_EOL . $function_code);}wp_redirect(admin_url('admin.php?page=content-replacer'));exit;}// 处理关闭去超链接功能按钮的表单提交public function handle_close_hyperlink() {if (!isset($_POST['close_hyperlink_nonce_field']) || !wp_verify_nonce($_POST['close_hyperlink_nonce_field'], 'close_hyperlink_nonce')) {wp_die('Nonce 验证失败');}if (!current_user_can('manage_options')) {wp_die('无权限');}$functions_path = get_template_directory() . '/functions.php';$functions_content = file_get_contents($functions_path);$function_code = "
        function remove_product_hyperlinks(\$content) {if (is_product()) {\$content = preg_replace('/<a href=\".*?\">(.*?)<\/a>/', '\$1', \$content);}return \$content;}add_filter('the_content', 'remove_product_hyperlinks');";if (strpos($functions_content, 'remove_product_hyperlinks') !== false) {$functions_content = str_replace($function_code, '', $functions_content);file_put_contents($functions_path, $functions_content);}wp_redirect(admin_url('admin.php?page=content-replacer'));exit;}// 新增 AJAX 处理函数,检测简码状态// 新增 AJAX 处理函数,检测产品描述中的超链接状态public function check_shortcode_status() {$functions_path = get_template_directory() . '/functions.php';$functions_content = file_get_contents($functions_path);$response = array('shipping_hidden' => strpos($functions_content, 'js_hide_all_shipping_when_free_is_available') !== false,'modal_enabled' => strpos($functions_content, 'theme_enqueue_scripts_and_styles') !== false,'hyperlinks_exist' => false);global $wpdb;$products = $wpdb->get_results("SELECT post_content FROM {$wpdb->posts} WHERE post_type = 'product'");foreach ($products as $product) {if (preg_match('/<a href=\".*?\">/', $product->post_content)) {$response['hyperlinks_exist'] = true;break;}}wp_send_json($response);}
}// 实例化插件类
new ContentReplacer();

 

scripts.js文件

// scripts.js

jQuery(document).ready(function($) {$('#content-replacer-form').on('submit', function() {$('#loading').show();});// 隐藏其他插件提示$('.notice, .update-nag, .updated, .error, .is-dismissible').not('.content-replacer-container .notice').hide();// 提交表单时显示 loading 动画$('#shipping-toggle-form, #modal-toggle-form').on('submit', function() {$('#loading').show();});// 检查 function.php 中是否有相关简码
    $.ajax({url: ajaxurl,data: {'action': 'check_shortcode_status'},success: function(response) {if (response.shipping_hidden) {$('#toggle-shipping-button').val('其他运费已隐藏');}if (response.modal_enabled) {$('#toggle-modal-button').val('产品图片模态窗已开启');}if (response.hyperlinks_exist) {$('#toggle-hyperlink-button').val('描述有超链接,点击去掉').css({'background-color': '#ff6666','color': '#f5f5dc'}).prop('disabled', false);} else {$('#toggle-hyperlink-button').val('产品无链接,无需点击此按钮').css({'background-color': '#add8e6','color': '#ffffff'}).prop('disabled', true);}}});// 当去掉超链接按钮被点击$('#hyperlink-toggle-form').on('submit', function() {$('#toggle-hyperlink-button').val('超链接已去掉,无需点击此按钮').prop('disabled', true);$('#close-hyperlink-button').parent().show();});// 当关闭超链接功能按钮被点击$('#hyperlink-close-form').on('submit', function() {$('#toggle-hyperlink-button').val('描述有超链接,点击去掉').prop('disabled', false);$('#close-hyperlink-button').parent().hide();});
});

 

styles.css文件

/* styles.css *//* 渐变背景色 */
.content-replacer-container {background: linear-gradient(135deg, #f9f1e9, #f5e0d3);padding: 20px;border-radius: 10px;color: #333;max-width: 800px;margin: 50px auto;box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);text-align: center;
}.content-replacer-container h1 {text-align: center;margin-bottom: 20px;font-size: 2em;
}.content-replacer-container .form-table {width: 100%;margin: 0 auto;
}.content-replacer-container .form-table th,
.content-replacer-container .form-table td {padding: 10px;text-align: left;
}.content-replacer-container input[type="text"] {width: 100%;padding: 10px;border: 1px solid #ddd;border-radius: 5px;margin-bottom: 10px;box-sizing: border-box;
}.content-replacer-container .button-primary {background: #ffba00;border: none;padding: 10px 20px;border-radius: 5px;cursor: pointer;transition: background 0.3s;
}.content-replacer-container .button-primary:hover {background: #ff9500;
}.content-replacer-container .loading {display: none;text-align: center;padding: 10px;margin-top: 20px;border-radius: 5px;color: #000; /* 将文字颜色改为黑色 */font-weight: bold;
}.content-replacer-container .progress-bar {display: none;width: 100%;background-color: #fff;border: 1px solid #ddd;border-radius: 5px;overflow: hidden;margin-top: 20px;position: relative;
}.content-replacer-container .progress-bar-inner {height: 30px;background-color: #00aaff;width: 0;line-height: 30px;color: #fff;text-align: center;white-space: nowrap;transition: width 0.5s ease; /* 平滑的过渡效果 */
}/* 替换历史样式 */
.content-replacer-container ul {list-style: none;padding: 0;
}.content-replacer-container ul li {background: rgba(255, 255, 255, 0.2);margin-bottom: 10px;padding: 10px;border-radius: 5px;
}.content-replacer-container ul li a {color: #333;text-decoration: underline;cursor: pointer;transition: color 0.3s;
}.content-replacer-container ul li a:hover {color: #ffba00;
}

 


duola.php

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/872007.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何利用甘特图进行高效管理?——附应用工具

通过快速创建甘特图并合理利用其进行项目管理,可以显著提升项目管理的效率和质量。同时,不断优化甘特图和项目管理流程也是实现持续改进的关键。甘特图通过横轴表示时间,纵轴表示任务,每个任务的开始和结束时间通过横向条形表示。甘特图可以帮助管理者对项目中的各个任务进…

互联网(internet)的基本组成

一般而言,互联网被认为由三个部分组成: Edge NetworkDevices and Endpoints: This part consists of all the devices at the periphery of the network that users directly interact with. It includes personal computers, laptops, smartphones, tablets, and various In…

WebRTC 笔记

目录通话建立流程特别提醒代码创建 RTCPeerConnection 对象获取本地摄像头/麦克风创建发起方会话描述对象(createOffer)连接的远程对等方属性(setRemoteDescription)建立一条最优的连接方式 WebRTC 允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(…

读量子霸权09电池

爱迪生、福特推动工业电气化,电池效率低是能源存储难题,量子计算机或助力电池设计与能源存储,锂空气电池、超级电池是候选技术,量子计算也应用于汽车设计。1. 能量 1.1. 爱迪生1.1.1. 爱迪生是工业和社会电气化背后不知疲倦的推动力1.1.2. 爱迪生青睐于电池1.2. 福特1.2.1.…

优化@Transactional事务性能(LazyConnectionDataSourceProxy)

背景 在项目开发中,使用 @Transactional 注解来管理事务非常方便,且优雅。但是也存在一个问题:长事务问题很多被 @Transactional 标记的方法,实际上并不需要进行数据库操作,或者说,它们在执行的很长一段时间内都不会真正触发数据库访问。举个例子,我们的业务逻辑可能如下…

ElasticSearch Java 使用

目录创建工程,导入坐标创建索引 index创建映射 mapping建立文档 document建立文档(通过 XContentBuilder)建立文档(使用 Jackson 转换实体)1)添加jackson坐标2)创建 Article 实体3)代码实现查询文档操作关键词查询字符串查询使用文档 ID 查询文档查询文档分页操作批量插…

IntelliJ IDEA 2024.3 Java开发工具

IntelliJ IDEA 2024.3 Java开发工具 JetBrains IntelliJ IDEA 2024 mac,是一款Java开发工具,IntelliJ IDEA 凭借无与伦比的 Java 和 Kotlin 支持脱颖而出。从一开始就支持尖IDEA 2024.3 中文版开发工具端语言功能,保持领先地位。IntelliJ IDEA 对您的代码了如指掌,利用这些…

AI应用实战课学习总结(6)分类算法分析实战

本文介绍了机器学习中的分类场景问题,常用的分类算法 以及 分类和回归的简单对比,最后通过一个医疗数据诊断分类的案例做了一次实战,相信对你理解分类应用应该有所帮助。大家好,我是Edison。 最近入坑黄佳老师的《AI应用实战课》,记录下我的学习之旅,也算是总结回顾。 今…

深入浅出索引(上)

1.什么是数据库索引,索引是干什么用的? 对于数据库的表而言,索引其实就是它的“目录”。 2.索引的三种实现方式?(暂时介绍3种) ①哈希表索引:哈希表是一种以键 - 值(key-value)存储数据的结构,我们只要输入待查找的值即 key,就可以找到其对应的值即 Value。哈希的思…

【推荐】一款开源且功能丰富、技术先进的在线项目任务管理系统

项目介绍 DooTask是一款基于PHP + Vue开源的、功能丰富、技术先进、安全性高的开源在线项目任务管理系统,适合各种规模的团队使用。提供各类文档协作工具、在线思维导图、在线流程图、项目管理、任务分发、即时IM,文件管理等工具;同时消息功能使用非对称加密技术让你的沟通更…

《SpringBoot》自动装配原理(简单易懂)

引入 先看SpringBoot的主配置类 @SpringBootApplication public class DemoApplication{public static void main(String[] args){SpringApplication.run(StartEurekaApplication.class, args);} }@SpringBootApplication 点进@SpringBootApplication来看,发现@SpringBootAppl…

VMware Data Services Manager 2.2 发布 - 数据库管理和数据服务管理

VMware Data Services Manager 2.2 发布 - 数据库管理和数据服务管理VMware Data Services Manager 2.2 发布 - 数据库管理和数据服务管理 在 vSphere 环境中按需配置和自动管理 PostgreSQL 和 MySQL 数据库 请访问原文链接:https://sysin.org/blog/vmware-data-services-mana…