分享72个PHP源码,总有一款适合您

news2024/11/23 18:41:54

PHP源码

分享72个PHP源码,总有一款适合您

下面是文件的名字,我放了一些图片,文章里不是所有的图主要是放不下...,

72个PHP源码下载链接:https://pan.baidu.com/s/11BEwLdHiZF0DqB3Bhb3FaQ?pwd=joxq 
提取码:joxq

Python采集代码下载链接:采集代码.zip - 蓝奏云

import os
import shutil
import time
from time import sleep

import requests
from bs4 import BeautifulSoup
from docx import Document
from docx.shared import Inches

from framework.base.BaseFrame import BaseFrame
from sprider.business.DownLoad import DownLoad
from sprider.business.SeleniumTools import SeleniumTools
from sprider.business.SpriderTools import SpriderTools

from selenium import webdriver
from selenium.webdriver.common.by import By
from sprider.model.SpriderEntity import SpriderEntity
from sprider.access.SpriderAccess import SpriderAccess


class HuaJunCode:
    base_url =  "https://down.chinaz.com" # 采集的网址
    save_path = "D:\\Freedom\\Sprider\\ChinaZ\\"
    sprider_count = 97  # 采集数量
    sprider_start_count=5396#



    word_content_list = []
    folder_name = ""
    page_end_number=0
    max_pager=15 #每页的数量
    haved_sprider_count =0  # 已经采集的数量
    page_count = 1  # 每个栏目开始业务content="text/html; charset=gb2312"
    filter_down_file=[]

    def __init__(self):
        pass

progress meter for PHP (AJAX上传文件PHP源码)
OpenPNE中文 v2.12.3 中文版
UCenter Home-中秋搏饼插件 v1.2 UTF8版
UCenter Home-中秋搏饼插件 v1.2 GBK版
522QQ在线电视直播程序 v1.1
php实现msn协议的类
IP地址查询(PHP+SQLITE) v1.0
南充人开源PHP文章系统 v1.0
TVBlog P1.0 bulid 080901 Beta
Simple Directory Listing v2.1 beta1 文件管理系统
Simple Directory Listing v1.0.002 文件管理系统
ZY music! v1.1.1
PHP文章系统 v1.0
kgogoprime v1.2.0
FxAsk v1.0
站长助手(WEBMASTER HELPER) v2.0
明科在线客服系统  v6.0 for php
SQLiteManager v1.2.0
Nucleus v3.33 多国语言版
Punbb v1.2.20 多国语言版


    def sprider(self,title_name="NET"):

        """
       采集
       PHP https://down.chinaz.com/class/572_5_1.htm
       NET https://down.chinaz.com/class/572_4_1.htm
       ASP https://down.chinaz.com/class/572_3_1.htm
       Python https://down.chinaz.com/class/604_572_1.htm
            https://down.chinaz.com/class/608_572_1.htm
        微信 https://down.chinaz.com/class/610_572_1.htm
       Ruby   https://down.chinaz.com/class/622_572_1.htm
       NodeJs https://down.chinaz.com/class/626_572_1.htm
       C https://down.chinaz.com/class/594_572_1.htm
       :return:
       """
        if title_name == "PHP":
            self.folder_name = "PHP源码"
            self.second_column_name = "572_5"
        elif title_name == "Go":
            self.folder_name = "Go源码"
            self.second_column_name = "606_572"
        elif title_name == "NET":
            self.folder_name = "NET源码"
            self.second_column_name = "572_4"
        elif title_name == "ASP":
            self.folder_name = "ASP源码"
            self.second_column_name = "572_3"
        elif title_name == "Python":
            self.folder_name = "Python源码"
            self.second_column_name = "604_572"
        elif title_name == "JavaScript":
            self.folder_name = "JavaScript源码"
            self.second_column_name = "602_572"
        elif title_name == "Java":
            self.folder_name = "Java源码"
            self.second_column_name = "572_517"
        elif title_name == "HTML":
            self.folder_name = "HTML-CSS源码"
            self.second_column_name = "608_572"
        elif title_name == "TypeScript":
            self.folder_name = "TypeScript源码"
            self.second_column_name = "772_572"
        elif title_name == "微信小程序":
            self.folder_name = "微信小程序源码"
            self.second_column_name = "610_572"
        elif title_name == "Ruby":
            self.folder_name = "Ruby源码"
            self.second_column_name = "622_572"
        elif title_name == "NodeJs":
            self.folder_name = "NodeJs源码"
            self.second_column_name = "626_572"
        elif title_name == "C++":
            self.folder_name = "C++源码"
            self.second_column_name = "596_572"
        elif title_name == "C":
            self.folder_name = "C源码"
            self.second_column_name = "594_572"
        #https://down.chinaz.com/class/594_572_1.htm


        first_column_name = title_name # 一级目录
        self.sprider_category = title_name  # 一级目录
        second_folder_name = str(self.sprider_count) + "个" + self.folder_name #二级目录
        self.sprider_type =second_folder_name
        self.merchant=int(self.sprider_start_count) //int(self.max_pager)+1 #起始页码用于效率采集
        self.file_path = self.save_path + os.sep + "Code" + os.sep + first_column_name + os.sep + second_folder_name
        self.save_path = self.save_path+ os.sep + "Code" + os.sep+first_column_name+os.sep + second_folder_name+ os.sep + self.folder_name
        BaseFrame().debug("开始采集ChinaZCode"+self.folder_name+"...")
        sprider_url = (self.base_url + "/class/{0}_1.htm".format(self.second_column_name))
        down_path="D:\\Freedom\\Sprider\\ChinaZ\\Code\\"+first_column_name+"\\"+second_folder_name+"\\Temp\\"
        if os.path.exists(down_path) is True:
            shutil.rmtree(down_path)
        if os.path.exists(down_path) is False:
            os.makedirs(down_path)

        if os.path.exists(self.save_path ) is True:
            shutil.rmtree(self.save_path )
        if os.path.exists(self.save_path ) is False:
            os.makedirs(self.save_path )
        chrome_options = webdriver.ChromeOptions()
        diy_prefs ={'profile.default_content_settings.popups': 0,
                    'download.default_directory':'{0}'.format(down_path)}
        # 添加路径到selenium配置中
        chrome_options.add_experimental_option('prefs', diy_prefs)
        chrome_options.add_argument('--headless') #隐藏浏览器

        # 实例化chrome浏览器时,关联忽略证书错误
        driver = webdriver.Chrome(options=chrome_options)
        driver.set_window_size(1280, 800)  # 分辨率 1280*800

        # driver.get方法将定位在给定的URL的网页,get接受url可以是任何网址,此处以百度为例
        driver.get(sprider_url)
        # content = driver.page_source
        # print(content)
        div_elem = driver.find_element(By.CLASS_NAME, "main")  # 列表页面 核心内容
        element_list = div_elem.find_elements(By.CLASS_NAME, 'item')

        laster_pager_ul = driver.find_element(By.CLASS_NAME, "el-pager")
        laster_pager_li =laster_pager_ul.find_elements(By.CLASS_NAME, 'number')
        laster_pager_url = laster_pager_li[len(laster_pager_li) - 1]
        page_end_number = int(laster_pager_url.text)
        self.page_count=self.merchant
        while self.page_count <= int(page_end_number):  # 翻完停止
            try:
                if self.page_count == 1:
                    self.sprider_detail(driver,element_list,self.page_count,page_end_number,down_path)
                    pass
                else:
                    if self.haved_sprider_count == self.sprider_count:
                        BaseFrame().debug("采集到达数量采集停止...")
                        BaseFrame().debug("开始写文章...")
                        self.builder_word(self.folder_name, self.word_content_list)
                        BaseFrame().debug("文件编写完毕,请到对应的磁盘查看word文件和下载文件!")
                        break
                    #(self.base_url + "/sort/{0}/{1}/".format(url_index, self.page_count))
                    #http://soft.onlinedown.net/sort/177/2/

                    next_url = self.base_url + "/class/{0}_{1}.htm".format(self.second_column_name, self.page_count)
                    driver.get(next_url)

                    div_elem = driver.find_element(By.CLASS_NAME, "main")  # 列表页面 核心内容
                    element_list = div_elem.find_elements(By.CLASS_NAME, 'item')
                    self.sprider_detail( driver, element_list, self.page_count, page_end_number, down_path)
                    pass
                #print(self.page_count)
                self.page_count = self.page_count + 1  # 页码增加1
            except Exception as e:
                print("sprider()执行过程出现错误:" + str(e))
                sleep(1)

 


PHPLOVE爱墙(仿QQ爱墙) H2008
白月文章系统整合站点之电影与软件服务站 v2.0
TURF(开源)权限管理系统 v0.1 bulid 080626 Alpha
WFUpload  v2.0.2 汉化版
Twinklous File Manager v1.5
YouTube  RSS 小偷
白月文章系统整合站点之水电十局站 v2.0
品告CMS系统(电影版) v0.92
读吧书网 v3.5 正式版
BossEditor Ajax 在线编辑 v1.1
Tattertools v1.1.2.1 中文版
动态Q闪字程序
织梦内容管理系统DedeCms v5.1 Build 080812 UTF-8
同城苏州PHP分类信息程序 v1.0
toolxp.cn中国奖牌数量实时显示 PHP版 build 080810
DiY-Page自定制系统 v5.2.0
TurboDbAdmin  v0.2.3 中文版
TurboDbAdmin  v0.2.3
白月生产企业订单管理系统GBK v2.0  Build 080807
Sablog-X v1.6 build 080806

          sleep(1)



    def sprider_detail(self, driver,element_list,page_count,max_page,down_path):
        """
        采集明细页面
        :param driver:
        :param element_list:
        :param page_count:
        :param max_page:
        :param down_path:
        :return:
        """
        index = 0
        element_array=[]
        element_length=len(element_list)
        for element in element_list:
            url_A_obj = element.find_element(By.CLASS_NAME,  'name-text')
            next_url = url_A_obj.get_attribute("href")
            coder_title = url_A_obj.get_attribute("title")
            e=coder_title+"$"+ next_url
            element_array.append(e)
            pass
        if int(self.page_count) == int(self.merchant):
            self.sprider_start_index = int(self.sprider_start_count) % int(self.max_pager)
            index=self.sprider_start_index
        while index < element_length:


            if os.path.exists(down_path) is False:
                os.makedirs(down_path)

            if self.haved_sprider_count == self.sprider_count:
                BaseFrame().debug("采集到达数量采集停止...")
                break

            #element = element_list[index]
            element=element_array[index]
            time.sleep(1)

            index = index + 1
            sprider_info="正在采集第"+str(page_count)+"页的第"+str(index)+"个资源,共"+str(max_page)+"页资源"
            BaseFrame().debug(sprider_info)
            next_url=element.split("$")[1]
            coder_title=element.split("$")[0]
            # next_url = element.find_element(By.TAG_NAME, 'a').get_attribute("href")
            # coder_title =element.find_element(By.TAG_NAME, 'img').get_attribute("title")
            driver.get(next_url) # 请求明细页面
            try:
                codeEntity = SpriderEntity()  # 下载过的资源不再下载
                codeEntity.sprider_base_url = self.base_url
                codeEntity.create_datetime = SpriderTools.get_current_datetime()
                codeEntity.sprider_url = next_url
                codeEntity.sprider_pic_title = coder_title
                codeEntity.sprider_pic_index = str(index)
                codeEntity.sprider_pager_index = page_count
                codeEntity.sprider_type = self.sprider_type
                if SpriderAccess().query_sprider_entity_by_urlandindex(next_url, str(index)) is None:
                    SpriderAccess().save_sprider(codeEntity)
                else:
                    BaseFrame().debug(coder_title+next_url + "数据采集过因此跳过")
                    continue

                if SeleniumTools.judeg_element_isexist(driver, "CLASS_NAME", "download-item") == 3:
                    driver.back()
                    BaseFrame().debug(coder_title+"不存在源码是soft因此跳过哦....")
                    continue
                print("准备点击下载按钮...")
                driver.find_element(By.CLASS_NAME, "download-item").click() #下载源码
                sleep(1)
                result,message=SpriderTools.judge_file_exist(True,240,1,down_path,"zip|rar|gz|tgz")#判断源码
                if result is True:

                    sprider_content = [coder_title, self.save_path + os.sep +"image"+ os.sep + coder_title + ".jpg"]  # 采集成功的记录
                    self.word_content_list.append(sprider_content)  # 增加到最终的数组
                    self.haved_sprider_count = self.haved_sprider_count + 1
                    BaseFrame().debug("已经采集完成第" + str(self.haved_sprider_count) + "个")
                    time.sleep(1)
                    driver.back()

                    coder_title = str(coder_title).replace("/", "") #去掉windows不识别的字符
                    files = os.listdir(down_path)
                    file_name = files[0] #获取默认值
                    if len(self.filter_down_file)>0:
                        for file in files:
                            for filter_file in self.filter_down_file:
                                if str(file) in str(filter_file):
                                    BaseFrame().error(filter_file + "文件被过滤...")
                                    pass
                                else:
                                    file_name = file

                    srcFile = down_path + os.sep + file_name
                    file_ext = os.path.splitext(srcFile)[-1]

                    dstFile = down_path + os.sep + coder_title + file_ext
                    os.rename(srcFile, dstFile)
                    srcFile = dstFile
                    dstFile = self.save_path + os.sep + coder_title + file_ext

                    shutil.move(srcFile, dstFile)  # 移动文件

                else:
                    files = os.listdir(down_path)  # 读取目录下所有文件
                    coder_title = str(coder_title).replace("/", "")  # 去掉windows不识别的字符
                    try:
                        if str(message)=="0个文件认定是False":
                            BaseFrame().error(coder_title+"文件不存在...")
                            shutil.rmtree(down_path)  # 如果没下载完是无法删除的
                            pass
                        else:
                            BaseFrame().error("检测下载文件出错可能原因是等待时间不够已经超时,再等待60秒...")
                            time.sleep(60)
                            shutil.rmtree(down_path) #如果没下载完是无法删除的
                            #清空数组
                            self.filter_down_file.clear()
                    except Exception as e:
                        # 使用数组append记录文件名字 移动的时候过滤
                        self.builder_filter_file(files)
                    pass
            except Exception as e:
                BaseFrame().error("sprider_detail()执行过程出现错误:" + str(e))
                BaseFrame().error("sprider_detail()记录下载的文件名")
                # 使用数组append记录文件名字 移动的时候过滤
                files = os.listdir(down_path)  # 读取目录下所有文件
                self.builder_filter_file(files)

        if(int(page_count)==int(max_page)):
            self.builder_word(self.folder_name,self.word_content_list)
            BaseFrame().debug("文件编写完毕,请到对应的磁盘查看word文件和下载文件!")


MooPHP站长系列工具
非常漂亮的php+ajax许愿程序
Discuz!  v6.1.0 Build 080804 简体中文版 GBK
PHPWind Forums v6.3.2 build 080730 简体中文 utf-8
PHPWind Forums v6.3.2 build 080730 繁体中文 big5
PHPWind Forums v6.3.2 build 080730 简体中文 GBK
TradeSky  v1.0
网络硬盘_支持1GB文件上传和续传 v1.2 无错版
同城苏州黄页系统 v1.0
md5在线加密工具 v1.0
MooPHP之网站关键字排名小工具 v1.0
QQ邮箱编辑器 v1.0 (小小菜刀PHP版)
APJE私服发布系统 v2.0 PHP版
通达采集系统 v1.1 build 080722
牛仔IIS日志蜘蛛爬行记录分析器 v1.1
文件管理器(PHP)
EasyTalk 迷你博客 v3.2
视频建站系统Pocle v2.6 简体中文 UTF-8
视频建站系统Pocle v2.6 繁体中文 UTF-8
视频建站系统Pocle v2.6 简体中文 GBK
MooPHP之搜索引擎收录与反向链接查询小工具 v1.0
Blue Smiley Organizer  v5.47
隐士网在线合婚美化版 v1.0
MooPHP之网址转换成HEX编码小工具 v1.0
ECND带提取码的网络硬盘 v0.1.0 For Discuz! v6.1.0
国外流行php流量交换系统
FavShop网店系统 v1.0
PHPDug v2.0 多国语言版
ECND网络硬盘 v0.1.0 beta
在线批量生成缩略图工具
MooPHP之Alexa查询工具 v1.0
LazyCMS内容管理系统 v1.1.0.0702
LxBlog 多用户博客个人主页系统  v6.0 Build 080701 big5
LxBlog 多用户博客个人主页系统  v6.0 Build 080701 utf-8


网猫影视系统NetMao Movie v4.6.6 开源版

 

HDWiki(For Dz 6.1) v1.51 Build 080627 UTF-8 正式版
HDWiki(For Dz 6.1) v1.51 Build 080627 GBK 正式版
1听寻址器 v1.0
多关键字排名查询 v1.0
bo-blog简易api接口通行证 for bo-blog 2.1.0  
BBBC-CMS v1.0
QQ空间最近访客查看器PHP版
VeryCMS  v3.3 繁体中文版 BIG5
VeryCMS v3.3 简体中文 GBK
VeryCMS  v3.3 简体中文 UFT-8
PHPSPACE社交门户  v1.0 UTF8
域名管理器  v0.1
云网互动php影视系统 v1.0.1
清松网络PHP版周公解梦查询系统 v1.20
MooPHP之WhoIS查询小工具 v1.0
MooPHP通用自定义表单系统  v1.3
buscx.cn汉字拼音五笔部首速查 v1.0
爱普达(Aipuda)多语言企业网站管理系统 v6.3.0
php版查询纯真ip数据库
非主流图片小偷 php版 build 0610
phpWebSite v1.5.2
小鬼当家音乐系统iShowMusic v1.2 Build 0610

import os
from time import sleep
import time

class SpriderTools:
    __doc__ = "系统工具类"

    @staticmethod
    def get_word_image(business_name,max_index):
        """
        获取word插图
        :param business_name: 图片业务 名称
        :param max_index: 最大序号
        :return: 图片的路径
        """
        import random
        key = str(random.randint(1, int(max_index)))
        random_file_name = business_name + key + ".png"
        random_full_file_name = business_name+"image" + os.sep + random_file_name
        return random_full_file_name

    @staticmethod
    def get_current_datetime():
        return time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))

    @staticmethod
    def gen_password():
        """
        网站根路径
        :return:
        """
        import random, string
        passwds = []  # 保存符合要求的密码
        count = 1
        i = 0  # 记录符合要求的密码个数
        while i < int(count):
            passwd = set(random.sample(string.ascii_letters + string.digits, 28))  # 从字母和数字中随机抽取8位生成密码
            if passwd.intersection(string.ascii_uppercase) and passwd.intersection(
                    string.ascii_lowercase) and passwd.intersection(string.digits):  # 判断密码中是否包含大小写字母和数字
                passwds.append(''.join(passwd))  # 将集合转化为字符串
                i += 1  # 每生成1个符合要求的密码,i加1
        return (passwds)

    @staticmethod
    def judge_file_exist1(is_check, check_times, check_interval_sec, check_path, check_ext):
        """
        检测函数
        :param is_check:是否检测True表示检测False 不检查
        :param check_times:检测次数
        :param check_interval:检测时间间隔(默认值)
        :param check_path:检测路径(默认值)
        :param chedk_ext:检测扩展名(默认值)
        :return:返回真假
        """
        if os.path.exists(check_path) is False:
            raise Exception("路径不存在...")
        if str.isdigit(str(check_times)) is False:
            raise Exception("检测次数不是数字...")
        if is_check is False:
            return True, "不进行检测"  # 直接执行下一步操作
        else:
            for number in range(1, int(check_times)):
                print("正在进行第" + str(number) + "次检测...")
                files = os.listdir(check_path)  # 读取目录下所有文件

                file_number = len(files)
                if file_number == 0:
                    # 不存在任何文件,休眠一会 继续执行下一次
                    sleep(int(check_interval_sec))  # 休眠一会
                    return False, "0个文件认定是False"
                elif file_number == 1:
                    file_name = files[0]
                    # crdownload
                    file_full_name = check_path + os.sep + file_name
                    file_ext = os.path.splitext(file_full_name)[-1]
                    if "crdownload" == str(file_ext.split(".")[1]):
                        sleep(int(check_interval_sec))  # 休眠一会
                        continue
                    if "tmp" == str(file_ext.split(".")[1]):
                        sleep(int(check_interval_sec))  # 休眠一会
                        continue
                    if "exe" == str(file_ext.split(".")[1]):
                        os.remove(file_full_name)
                        print("清理exe文件")
                        continue
                    for e in check_ext.split("|"):
                        if e == str(file_ext.split(".")[1]):
                            return True, file_full_name
                        else:
                            sleep(int(check_interval_sec))  # 休眠一会
                            continue
                else:
                    # 多个文件认定是False直接执行下一步操作
                    for file in files:
                        file_ext = str(os.path.splitext(file)[-1])
                        if file_ext == ".rar":
                            os.unlink(file)
                        if file_ext == ".zip":
                            os.unlink(file)
                    return False, "多个文件认定是False"
            return False, "可能是不存在文件或者是tmp或crdownload文件"

    @staticmethod
    def judge_file_exist(is_check,check_times,check_interval_sec,check_path,check_ext):
        """
        检测函数
        :param is_check:是否检测True表示检测False 不检查
        :param check_times:检测次数
        :param check_interval:检测时间间隔(默认值)
        :param check_path:检测路径(默认值)
        :param chedk_ext:检测扩展名(默认值)
        :return:返回真假
        """
        if os.path.exists(check_path) is False:
            raise Exception("路径不存在...")
        if str.isdigit(str(check_times)) is False:
            raise Exception("检测次数不是数字...")
        if is_check is False:
            return True,"不进行检测" #直接执行下一步操作
        else:
            for number in range(1,int(check_times)):
                print("正在进行第"+str(number)+"次检测...")
                sleep(1) #延迟1s经常检测不到
                files = os.listdir(check_path) # 读取目录下所有文件

                file_number=len(files)
                if file_number ==0:
                    #不存在任何文件,休眠一会 继续执行下一次
                    sleep(int(check_interval_sec))  # 休眠一会
                    return False, "0个文件认定是False"
                elif file_number==1:
                    file_name=files[0]
                    #crdownload
                    file_full_name=check_path+os.sep+file_name
                    file_ext=os.path.splitext(file_full_name)[-1]
                    if "crdownload"==str(file_ext.split(".")[1]):
                        sleep(int(check_interval_sec))  # 休眠一会
                        continue
                    if "tmp" == str(file_ext.split(".")[1]):
                        sleep(int(check_interval_sec))  # 休眠一会
                        continue
                    for e in check_ext.split("|"):
                        if e == str(file_ext.split(".")[1]):
                            return True,file_full_name
                        else:
                            sleep(int(check_interval_sec))  # 休眠一会
                            continue
                else:
                    #多个文件认定是False直接执行下一步操作
                    for file in files:
                        file_ext = str(os.path.splitext(file)[-1])
                        if file_ext==".rar":
                            os.unlink(file)
                        if file_ext==".zip":
                            os.unlink(file)
                    return False,"多个文件认定是False"
            return False,"可能是不存在文件或者是tmp或crdownload文件"

 

最后送大家一首诗:

山高路远坑深,
大军纵横驰奔,
谁敢横刀立马?
惟有点赞加关注大军。
 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用docker搭建版本控制系统-SVN

作者简介&#xff1a;一名Linux运维工程师&#xff0c;主要分享自己遇到的学习过程与遇到的问题。 座右铭&#xff1a;选择时尽心&#xff0c;行动时尽力&#xff0c;坚持时无怨&#xff0c;结束时无悔。 个人公众号&#xff1a;早九晚十二&#xff0c;欢迎大家留言交流…

day41|● 343. 整数拆分 ● 96.不同的二叉搜索树

题目链接:343. 整数拆分 1.代码 暴力做法&#xff1a;n前进行组合搜索得出二维数组result存放结果&#xff0c;然后对里面的元素进行乘积&#xff0c;谁最大就是结果 2.递归做法 class Solution { public:int integerBreak(int n) {vector<int>f(n 5, 0);f[2] 1;for …

LinkedList链表知识点概括

作者&#xff1a;爱塔居的博客_CSDN博客-JavaSE,数据结构领域博主 专栏&#xff1a;数据结构 作者简介&#xff1a;大三学生&#xff0c;希望2023年迎来更优秀的自己&#xff01;希望跟大家一同进步~ 文章目录 前言 一、链表的基本概念 二、面试题实战 前言 顺序表/ArrayList:…

数据湖之Hudi基础:核心原理

继续Hudi核心概念 参考官网描述与尚硅谷hudi公开资料 文章目录基本概念时间轴TimeLine1.Instants action 在表上执行的操作类型2.Instant time3.State两个时间概念文件布局&#xff08;FileLayout&#xff09;索引 Index表类型&#xff08;Table Types&#xff09;Copy On Writ…

echarts:实现3D地图版块叠加动效散点效果

需求描述 如下图所示&#xff0c;展示3D效果的地图版块&#xff0c;并叠加显示动效散点&#xff1a; 实现思路 首先是3D地图版块效果的实现&#xff0c;可以参考广州3D地图&#xff1b;而动效散点的实现&#xff0c;可以参考地图发散分布。 这里再提一个经过尝试并不行的思…

【mmdeploy】mmseg转ONNX/TensorRT,附推理代码

目录 1.关于mmdeploy 2.环境安装 2.1预编译安装&#xff08;Linux-x86_64, CUDA 11.x, TensorRT 8.2.3.0&#xff09;&#xff1a; 2.2预编译安装&#xff08;Linux-x86_64, CUDA 11.x, ONNX&#xff09;&#xff1a; 3.mmseg工程torch转onnx 4.使用onnx模型文件进行推理…

Dubbo框架学习(第一章Dubbo简介)

由于在微服务领域有两大框架统治&#xff0c;一个是springCloud的全家桶&#xff0c;一个是Dubbo。我用Dubbo比较少&#xff0c;所以也是学习状态。Dubbo框架学习&#xff0c;资料来源于cn.dubbo.apache.org。第一章Dubbo简介Apache Dubbo 是一款 RPC 微服务框架&#xff0c;提…

字节跳动青训营--前端day2

文章目录前言一、css1. css的组成2. css三种使用方式3.css的工作方式二、 css选择器Selector1. 选择元素的方式2. 伪类&#xff08;pseudo-classes&#xff09;2.1 状态伪类2.1 结构伪类3.通过组合选择元素3.1 直接组合3.2 元素组合的拓展4. 选择器的特异度&#xff08;Specifi…

小型水库雨水情测报和安全监测解决方案

平升电子小型水库雨水情测报和安全监测解决方案辅助水利管理部门实现水库雨水情信息“全要素、全量程、全覆盖”自动测报。系统具备水库水位、雨量、现场图像/视频等水文信息采集、传输、处理及预警广播等功能&#xff0c;有效提升了雨水情信息的时效性和准确度&#xff0c;为保…

jmeter 使用beanshell 编写脚本

一、介绍 1.1 介绍 BeanShell是一个小型的、免费的、可嵌入使用Java编写的具有对象脚本语言特性的Java源码解释器。 动态执行所有Java语句、Java代码片段以及弱类型Java和附加的脚本的便利 透明地访问所有Java对象和API 四种运行模式&#xff1a;命令行、控制台、Applet、远…

数据结构专题 -- 哈希思想详解

代码会存放在&#xff1a; https://github.com/sjmshsh/Data-Struct-HandWriting 通过阅读本篇文章&#xff0c;你可以学到&#xff1a; 哈希思想及其本质使用C实现简易的哈希表哈希思想的应用 位图布隆过滤器哈希切分极致升华&#xff0c;海量数据处理面试题 拓展 – 一致性…

二叉树的应用——哈夫曼树

哈夫曼树与哈夫曼编码 1.树的带权路径长 百分制成绩转五级制的算法流程图&#xff08;A/B/C/D/E的人数分别为6/18/21/36/19&#xff09;带权路径长 路经长 x 权重 树的带权路经长&#xff1a;所有叶结点的带权路径长度之和。 例如&#xff1a; &#xff08;a&#xff09;图…

[ 攻防演练演示篇 ] 利用谷歌 0day 漏洞上线靶机

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

橘子学kafka之基础命令使用

本系列主要开始处理关于kafka的一些技术知识点&#xff0c;尽量会以代码和实际命令为主要表达形式来做表现。 本文主要是关于如何在客户端使用命令做一个描述&#xff0c;其实我本来不想写的&#xff0c;但是今天在公司有同事居然不会&#xff0c;所以我觉得还是描述一下。而且…

贪心算法合集

95 分糖果问题 思路非常简单&#xff0c;和题解一模一样&#xff1a; 用数组存每个人对应的糖果数量&#xff0c;初始为1 从左到右遍历&#xff0c;如果比左边的大&#xff0c;1再从右到左遍历&#xff0c;如果比右边的大&#xff0c;1 import java.util.*;public class Solu…

录屏大师电脑版推荐(一键录制声画同步的视频)

很多小伙伴使用电脑多年&#xff0c;却不知道电脑有录屏功能。想要对电脑屏幕进行录制&#xff0c;只需在电脑上安装一个录屏大师。那有没有录屏大师电脑版推荐呢&#xff1f;在试用了多款电脑录屏大师之后&#xff0c;小编今天给大家推荐一款可以一键录制声画同步视频的录屏大…

使用Python为二年级的学生批量生成数学题

文章目录一.使用Python为二年级的学生批量生成数学题1.1 背景二.解决思路及其代码三.排版及其打印四.本文源码一.使用Python为二年级的学生批量生成数学题 1.1 背景 我妹妹今年上二年级&#xff0c;她的老师今天给他们布置了一项作业&#xff1a; 从今天起到开学&#xff0c;…

ENSP的AR40问题解决

AR40以及其他相关问题都可以参考此方法&#xff0c;都已经可以正常使用 现在有enspAR40问题的同学有救了&#xff0c;ensp的AR40问题困扰了我很长时间&#xff0c;根据官方的问题解决文档没有解决&#xff0c;反正就是之前的所有方法都没有用&#xff0c;也不是都没有用&#x…

初读《编程之美》就想秀一下,结果还翻车了

文章目录 一、前言 二、我的思路 三、Code 四、翻车现场 五、后续问题 一、前言 ———如何写一个短小的程序&#xff0c;让 Windows 的任务管理器显示CPU的占用率为50%? 这道有趣的面试题我是这两天从《编程之美》电子版中看到的&#xff0c;看意思就是邹老师在微软对一…

入门postgre sql(PG的下载和安装,包括普通用户源码构建的安装方式)

目录PG的下载安装1、Windows 上安装2、Linux上安装有root权限的安装无root权限的安装PG的下载安装 点击这里&#xff0c;了解pg 1、Windows 上安装 (1)下载安装 访问官网下载地址 https://www.enterprisedb.com/downloads/postgres-postgresql-downloads 下载最新发布的Po…