[免費]基于Python的招聘職位信息推薦系統(獵聘網數據分析與可視化)(Django+requests庫)【論文+源碼+SQL腳本】

大家好,我是python222_小鋒老師,看到一個不錯的基于Python的招聘職位信息推薦系統(獵聘網數據分析與可視化)(Django+requests庫),分享下哈。

項目視頻演示

【免費】基于Python的招聘職位信息推薦系統(獵聘網數據分析與可視化)(Django+爬蟲) Python畢業設計_嗶哩嗶哩_bilibili

項目介紹

隨著互聯網和信息技術的不斷發展,就業和招聘形式也迎來了深刻的變革。就業推薦系統不僅能夠為求職者提供個性化、精準的匹配,而且還解決了現代就業市場面臨的一系列挑戰問題,另外對于求職者而言,該系統還減輕了信息過載的壓力,幫助畢業生快速找到適合自己技能和興趣的職位,節省了畢業生的求職時間和成本,提高了就業市場的效率,同時為畢業生提供更好的就業機會和就業支持。

本文基于協同過濾算法,設計實現了就業推薦系統,旨在提供高度個性化的職位推薦,以滿足畢業生求職者和雇主的需求。系統首先采用爬蟲技術收集企業公開發布的招聘崗位信息,抽取特征值并且歸一化處理,根據指定的畢業生和求職人員的相似度計算畢業生和企業單位的相似度。然后在得到畢業生和企業單位的相似度的基礎上,根據隨機游走模型算法計算出企業單位的求職熱度。最后計算最終的排序綜合權值,完成基于協同過濾的就業推薦系統的建立。該系統涵蓋了控制臺功能、數據爬取、數據管理、數據可視化和就業推薦等多個核心功能模塊。同時,系統為解決就業場景中企業與畢業生相互匹配的問題,引入企業對畢業生的偏好系數,企業偏好系數是利用改進的隨機游走算法(PersonalRank)計算企業招聘過程中對畢業生特征屬性的招聘偏好值。最終的推薦算法融合企業偏好系數計算出畢業生與企業的符合度,根據符合度為畢業生推薦合適的就業崗位。通過該系統,畢業生用戶可以輕松地管理其就業信息,獲得定制的職位推薦,并通過可視化工具了解就業市場趨勢。

系統的設計過程中使用了先進的技術和開發框架,確保了系統的高性能和可擴展性。整個系統采用 Python 語言編寫,后端基于 Django 的 Web 應用框架,數據庫采用 MySQL設計,使用 ECharts?進行數據可視化顯示。數據獲取使用 Selenium?框架進行數據的采集,然后對數據進行分析并且將結果在前臺進行可視化的展示。獲取的數據解析后存儲到數據庫。該系統的個性化就業職位推薦功能是基于用戶的協同過濾算法設計實現。經過功能測試和性能測試,系統展現出了其在多個方面的有效性和可靠性。總之,本文開發的就業推薦系統為解決現代就業市場的智能化挑戰,提供了一個有前景的解決方案,并為未來功能更加強大的就業推薦系統的研究和應用提供了一定的基礎。

系統展示

部分代碼

{% load static %}
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>登入-職位推薦系統</title><meta name="renderer" content="webkit"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport"content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0"><link rel="stylesheet" href="{% static "layuiadmin/layui/css/layui.css" %}" media="all"><link rel="stylesheet" href="{% static "layuiadmin/style/admin.css" %}" media="all"><link rel="stylesheet" href="{% static "layuiadmin/style/login.css" %}" media="all">
</head>
<body>{#  <div class="layadmin-user-login layadmin-user-display-show" id="LAY-user-login" style="display: none;">#}
<div class="layadmin-user-login layadmin-user-display-show" id="LAY-user-login"style="display: none; background-image: url('/static/背景.png'); background-size: cover;"><div class="layadmin-user-login-main"><div class="layadmin-user-login-box layadmin-user-login-header"><h2 style="color: #fff">用戶登錄</h2><p>招聘推薦系統</p></div><div class="layadmin-user-login-box layadmin-user-login-body layui-form"><div class="layui-form-item"><label class="layadmin-user-login-icon layui-icon layui-icon-username"></label><input type="text" name="user" placeholder="賬號" class="layui-input"></div><div class="layui-form-item"><label class="layadmin-user-login-icon layui-icon layui-icon-password"></label><input type="password" name="password" placeholder="密碼" class="layui-input"></div><div class="layui-form-item" style="margin-bottom: 20px;"><a href="{% url "register" %}" class="layadmin-user-jump-change layadmin-link" style="margin-top: 7px;">還沒賬號?</a></div><div class="layui-form-item"><button class="layui-btn layui-btn-fluid" lay-submit lay-filter="LAY-user-login-submit">登 入</button></div></div></div>
</div><script src="{% static "layuiadmin/layui/layui.js" %}"></script>
<script>layui.config({base: '{% static "layuiadmin/" %}' //靜態資源所在路徑}).extend({index: 'lib/index' //主入口模塊}).use(['index', 'form', 'jquery'], function () {var $ = layui.jquery,form = layui.form,layer = layui.layer;//提交form.on('submit(LAY-user-login-submit)', function (obj) {obj = obj.field;if (obj.user == '') {layer.msg('賬號不能為空');return false;}if (obj.password == '') {layer.msg('密碼不能為空');return false;}//請求登入接口$.ajax({type: 'POST',url: '/login/',data: obj,success: function (res) {// 彈窗內容, 樣式if (res.code == 0) {layer.msg(res.msg + ' ' + res.user_name, {icon: 1, time: 1000});setTimeout(function () {location.href = "http://127.0.0.1:8000/index/";}, 1000) // 延遲重定向} else {layer.msg(res.msg);return false;}},error: function (response) {layer.msg(response.msg);}})});});
</script>
</body>
</html>
from django.shortcuts import render, redirect
from django.http import JsonResponse
# Create your views here.
from job import models
import re
from psutil import *
from numpy import *
from job import tools
from job import job_recommendspider_code = 0  # 定義全局變量,用來識別爬蟲的狀態,0空閑,1繁忙# python manage.py inspectdb > job/models.py
# 使用此命令可以將數據庫表導入models生成數據模型def login(request):if request.method == "POST":user = request.POST.get('user')pass_word = request.POST.get('password')print('user------>', user)users_list = list(models.UserList.objects.all().values("user_id"))users_id = [x['user_id'] for x in users_list]print(users_id)ret = models.UserList.objects.filter(user_id=user, pass_word=pass_word)if user not in users_id:return JsonResponse({'code': 1, 'msg': '該賬號不存在!'})elif ret:# 有此用戶 -->> 跳轉到首頁# 登錄成功后,將用戶名和昵稱保存到session 中,request.session['user_id'] = useruser_obj = ret.last()if user_obj:  # 檢查用戶對象是否存在user_name = user_obj.user_namerequest.session['user_name'] = user_namereturn JsonResponse({'code': 0, 'msg': '登錄成功!', 'user_name': user_name})else:return JsonResponse({'code': 1, 'msg': '密碼錯誤!'})else:return render(request, "login.html")def register(request):if request.method == "POST":user = request.POST.get('user')pass_word = request.POST.get('password')user_name = request.POST.get('user_name')users_list = list(models.UserList.objects.all().values("user_id"))users_id = [x['user_id'] for x in users_list]if user in users_id:return JsonResponse({'code': 1, 'msg': '該賬號已存在!'})else:models.UserList.objects.create(user_id=user, user_name=user_name, pass_word=pass_word)request.session['user_id'] = user  # 設置緩存request.session['user_name'] = user_namereturn JsonResponse({'code': 0, 'msg': '注冊成功!'})else:return render(request, "register.html")# 退出(登出)
def logout(request):# 1. 將session中的用戶名、昵稱刪除request.session.flush()# 2. 重定向到 登錄界面return redirect('login')def index(request):"""此函數用于返回主頁,主頁包括頭部,左側菜單"""return render(request, "index.html")def welcome(request):"""此函數用于處理控制臺頁面"""job_data = models.JobData.objects.all().values()  # 查詢所有的職位信息all_job = len(job_data)  # 職位信息總數list_1 = []  # 定義一個空列表for job in list(job_data):  # 使用循環處理最高哦薪資try:  # 使用try...except檢驗最高薪資的提取,如果提取不到則加入0salary_1 = float(re.findall(r'-(\d+)k', job['salary'])[0])  # 使用正則提取最高薪資job['salary_1'] = salary_1  # 添加一個最高薪資list_1.append(salary_1)  # 把最高薪資添加到list_1用來計算平均薪資except Exception as e:# print(e)job['salary_1'] = 0list_1.append(0)job_data = sorted(list(job_data), key=lambda x: x['salary_1'], reverse=True)  # 反向排序所有職位信息的最高薪資# print(job_data)job_data_10 = job_data[0:10]  # 取最高薪資前10用來渲染top—10表格# print(job_data[0:10])job_data_1 = job_data[0]  # 取出最高薪資的職位信息mean_salary = int(mean(list_1))  # 計算平均薪資spider_info = models.SpiderInfo.objects.filter(spider_id=1).first()  # 查詢爬蟲程序運行的數據記錄# print(spider_info)return render(request, "welcome.html", locals())def spiders(request):global spider_code# print(spider_code)spider_code_1 = spider_codereturn render(request, "spiders.html", locals())def start_spider(request):if request.method == "POST":key_word = request.POST.get("key_word")city = request.POST.get("city")page = request.POST.get("page")role = request.POST.get("role")spider_code = 1  # 改變爬蟲狀態spider_model = models.SpiderInfo.objects.filter(spider_id=1).first()# print(spider_model)spider_model.count += 1  # 給次數+1spider_model.page += int(page)  # 給爬取頁數加上選擇的頁數spider_model.save()if role == '獵聘網':# print(key_word,city,page)spider_code = tools.lieSpider(key_word=key_word, city=city, all_page=page)return JsonResponse({"code": 0, "msg": "爬取完畢!"})else:return JsonResponse({"code": 1, "msg": "請使用POST請求"})def job_list(request):return render(request, "job_list.html", locals())def get_job_list(request):"""此函數用來渲染職位信息列表"""page = int(request.GET.get("page", ""))  # 獲取請求地址中頁碼limit = int(request.GET.get("limit", ""))  # 獲取請求地址中的每頁數據數量keyword = request.GET.get("keyword", "")price_min = request.GET.get("price_min", "")price_max = request.GET.get("price_max", "")edu = request.GET.get("edu", "")city = request.GET.get("city", "")job_data_list = list(models.JobData.objects.filter(name__icontains=keyword, education__icontains=edu,place__icontains=city).values())  # 查詢所有的職位信息job_data = []if price_min != "" or price_max != "":for job in job_data_list:try:salary_1 = '薪資' + job['salary']max_salary = float(re.findall(r'-(\d+)k', salary_1)[0])  # 使用正則提取最高薪資min_salary = float(re.findall(r'薪資(\d+)', salary_1)[0])  # 使用正則提取最低薪資if price_min == "" and price_max != "":if max_salary <= float(price_max):job_data.append(job)elif price_min != "" and price_max == "":if min_salary >= float(price_min):job_data.append(job)else:if min_salary >= float(price_min) and float(price_max) >= max_salary:job_data.append(job)except Exception as e:  # 如果篩選不出就跳過continueelse:job_data = job_data_listjob_data_1 = job_data[(page - 1) * limit:limit * page]for job in job_data_1:ret = models.SendList.objects.filter(user_id=request.session.get("user_id"), job_id=job['job_id']).values()if ret:job['send_key'] = 1else:job['send_key'] = 0# print(job_data_1)if len(job_data) == 0 or len(job_data_list) == 0:return JsonResponse({"code": 1, "msg": "沒找到需要查詢的數據!", "count": "{}".format(len(job_data)), "data": job_data_1})return JsonResponse({"code": 0, "msg": "success", "count": "{}".format(len(job_data)), "data": job_data_1})def get_psutil(request):"""此函數用于讀取cpu使用率和內存占用率"""# cpu_percent()可以獲取cpu的使用率,參數interval是獲取的間隔# virtual_memory()[2]可以獲取內存的使用率return JsonResponse({'cpu_data': cpu_percent(interval=1), 'memory_data': virtual_memory()[2]})def get_pie(request):"""此函數用于渲染控制臺餅圖的數據,要求學歷的數據和薪資待遇的數據"""edu_list = ['博士', '碩士', '本科', '大專', '不限']edu_data = []for edu in edu_list:edu_count = len(models.JobData.objects.filter(education__icontains=edu))  # 使用for循環,查詢字段education包含這些學歷的職位信息edu_data.append({'name': edu, "value": edu_count})  # 添加到學歷的數據列表中# print(edu_data)list_5 = []list_10 = []list_15 = []list_20 = []list_30 = []list_50 = []list_51 = []job_data = models.JobData.objects.all().values()  # 查詢所有的職位信息for job in list(job_data):try:salary_1 = float(re.findall(r'-(\d+)k', job['salary'])[0])  # 提取薪資待遇的最高薪資要求if salary_1 <= 5:  # 小于5K則加入list_5list_5.append(salary_1)elif 10 >= salary_1 > 5:  # 在5K和10K之間,加入list_10list_10.append(salary_1)elif 15 >= salary_1 > 10:  # 10K-15K加入list_15list_15.append(salary_1)elif 20 >= salary_1 > 15:  # 15K-20K加入list_20list_20.append(salary_1)elif 30 >= salary_1 > 20:  # 20K-30K 加list_30list_30.append(salary_1)elif 50 >= salary_1 > 30:  # 30K-50K加入list_50list_50.append(salary_1)elif salary_1 > 50:  # 大于50K加入list_51list_51.append(salary_1)except Exception as e:job['salary_1'] = 0salary_data = [{'name': '5K及以下', 'value': len(list_5)},  # 生成薪資待遇各個階段的數據字典,value是里面職位信息的數量{'name': '5-10K', 'value': len(list_10)},{'name': '10K-15K', 'value': len(list_15)},{'name': '15K-20K', 'value': len(list_20)},{'name': '20K-30K', 'value': len(list_30)},{'name': '30-50K', 'value': len(list_50)},{'name': '50K以上', 'value': len(list_51)}]# print(edu_data)return JsonResponse({'edu_data': edu_data, 'salary_data': salary_data})def send_job(request):"""此函數用于投遞職位和取消投遞"""if request.method == "POST":user_id = request.session.get("user_id")job_id = request.POST.get("job_id")send_key = request.POST.get("send_key")if int(send_key) == 1:models.SendList.objects.filter(user_id=user_id, job_id=job_id).delete()else:models.SendList.objects.create(user_id=user_id, job_id=job_id)return JsonResponse({"Code": 0, "msg": "操作成功"})def job_expect(request):if request.method == "POST":job_name = request.POST.get("key_word")city = request.POST.get("city")ret = models.UserExpect.objects.filter(user=request.session.get("user_id"))# print(ret)if ret:ret.update(key_word=job_name, place=city)else:user_obj = models.UserList.objects.filter(user_id=request.session.get("user_id")).first()models.UserExpect.objects.create(user=user_obj, key_word=job_name, place=city)return JsonResponse({"Code": 0, "msg": "操作成功"})else:ret = models.UserExpect.objects.filter(user=request.session.get("user_id")).values()# print(ret)if len(ret) != 0:keyword = ret[0]['key_word']place = ret[0]['place']else:keyword = ''place = ''return render(request, "expect.html", locals())def get_recommend(request):recommend_list = job_recommend.recommend_by_item_id(request.session.get("user_id"), 9)# print(recommend_list)return render(request, "recommend.html", locals())def send_page(request):return render(request, "send_list.html")def send_list(request):send_list = list(models.JobData.objects.filter(sendlist__user=request.session.get("user_id")).values())for send in send_list:send['send_key'] = 1if len(send_list) == 0:return JsonResponse({"code": 1, "msg": "沒找到需要查詢的數據!", "count": "{}".format(len(send_list)), "data": []})else:return JsonResponse({"code": 0, "msg": "success", "count": "{}".format(len(send_list)), "data": send_list})def pass_page(request):user_obj = models.UserList.objects.filter(user_id=request.session.get("user_id")).first()return render(request, "pass_page.html", locals())def up_info(request):if request.method == "POST":user_name = request.POST.get("user_name")old_pass = request.POST.get("old_pass")pass_word = request.POST.get("pass_word")user_obj = models.UserList.objects.filter(user_id=request.session.get("user_id")).first()if old_pass != user_obj.pass_word:return JsonResponse({"Code": 0, "msg": "原密碼錯誤"})else:models.UserList.objects.filter(user_id=request.session.get("user_id")).update(user_name=user_name,pass_word=pass_word)return JsonResponse({"Code": 0, "msg": "密碼修改成功"})def salary(request):return render(request, "salary.html")def edu(request):return render(request, "edu.html")def bar_page(request):return render(request, "bar_page.html")def bar(request):key_list = [x['key_word'] for x in list(models.JobData.objects.all().values("key_word"))]# print(key_list)bar_x = list(set(key_list))# print(bar_x)bar_y = []for x in bar_x:bar_y.append(key_list.count(x))# print(bar_y)return JsonResponse({"Code": 0, "bar_x": bar_x, "bar_y": bar_y})

源碼下載

鏈接:https://pan.baidu.com/s/1QOrfbB4Q-5nnlixX-S7nvA
提取碼:1234

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/91465.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/91465.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/91465.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

國產化PDF處理控件Spire.PDF教程:Java 提取 PDF 圖片,高質量提取與圖片過濾技巧

在處理包含圖片的 PDF 文件時&#xff0c;例如掃描文檔、產品手冊或宣傳資料&#xff0c;我們經常需要將其中的圖像提取出來&#xff0c;用于保存、識別或再加工。E-iceblue旗下Spire系列產品&#xff0c;是文檔處理領域的佼佼者&#xff0c;支持國產化信創。本文將介紹如何使用…

Cesium 快速入門(七)材質詳解

Cesium 快速入門&#xff08;七&#xff09;材質詳解 看過的知識不等于學會。唯有用心總結、系統記錄&#xff0c;并通過溫故知新反復實踐&#xff0c;才能真正掌握一二 作為一名摸爬滾打三年的前端開發&#xff0c;開源社區給了我飯碗&#xff0c;我也將所學的知識體系回饋給大…

C++:結構體(Structure)

目錄 第一性原理出發&#xff1a;我們要解決什么問題&#xff1f; 定義結構體&#xff08;Defining Structures&#xff09; 問題&#xff1a;名字太長怎么辦&#xff1f; 如何定義結構體變量&#xff1f; 結構體的大小&#xff08;Size of Structures&#xff09; 初始化…

化學結構式解讀指南:從基礎認知到InDraw智能識別

中文名稱&#xff1a;3-[2-(二甲基氨基)乙基]-1H-吲哚英文名稱&#xff1a;3-[2-(dimethylamino)ethyl]-1H-indole分子式: C12H16N2分子量: 188.2740這是什么結構式&#xff1f;怎么繪制呢&#xff1f;可以用InDraw里的AI圖像識別這個結構式&#xff0c;也可以手動繪圖&#xf…

如何使用一臺電腦adb調試多個Android設備

目錄 一、臨時斷開其中一個設備連接 二、指定調試設備 總結 當我們使用Android調試工具調試多個設備&#xff0c;例如一開始使用adb連接了一臺Android真機進行調試&#xff0c;此時又在Android studio中打開了一個模擬機&#xff0c;此時我們在adb命令窗口中使用adb命令的…

ChatGPT的下一站:從“答案引擎”到“思維教練”

摘要&#xff1a;我們正處在一個“萬物皆可ChatGPT”的時代&#xff0c;但當它淪為最高效的“代碼搬運工”和“作業速成器”時&#xff0c;我們得到的究竟是效率的提升還是思維的退化&#xff1f;本文深入探討一個引人深思的概念——“導師模式”的AI。它不再直接提供答案&…

SpringBoot集成Flyway

SpringBoot集成Flyway_springboot flyway-CSDN博客 Flyway 本質上是一個開源的數據庫遷移工具&#xff0c;它能夠以自動化、可重復且可靠的方式管理數據庫的變更。無論是小型項目還是大型企業級應用&#xff0c;Flyway 都能助力開發者輕松應對數據庫架構的演進。它支持多種數據…

【實時Linux實戰系列】實時圖像處理應用開發

在當今快速發展的技術領域&#xff0c;實時圖像處理應用在眾多領域發揮著至關重要的作用。從自動駕駛汽車、工業自動化檢測到醫療影像診斷&#xff0c;實時圖像處理技術的應用場景無處不在。通過在實時Linux系統中開發圖像處理應用&#xff0c;開發者能夠充分利用Linux的穩定性…

Caterpillar Fungus Optimizer, CFO

核心算法解析1. 算法框架與初始化class EnhancedCFO: def __init__(self, objective_func, dim10, pop_size30, max_iter200, lb-10, ub10):??改進點??&#xff1a;針對傳統優化算法后期易停滯的問題&#xff0c;結合了精英策略、多樣性控制和自適應參數??關鍵特性??&a…

c++設計模式編程練習

一、運用觀察者模式原理編寫鳥類模型運行結果&#xff1a;二、運用簡單工廠模式編寫打怪掉裝備模型運行結果

FastMCP本地構建Server和Clinet交互

1. MCP Server介紹 MCP Server 是實現模型上下文協議&#xff08;MCP&#xff09;的服務器&#xff0c;旨在為 AI 模型提供一個標準化接口&#xff0c;連接外部數據源和工具&#xff0c;例如文件系統、數據庫或 API。 相比之下&#xff0c;在MCP出現前&#xff0c;AI調用工具…

工業企業與清潔生產匹配數據庫(1998-2015年)

1484工業企業與清潔生產匹配數據庫&#xff08;1998-2015年&#xff09;“清潔生產”近年發文趨勢及主題分布數據來源中華人民共和國生態環境部以及中國工業企業數據庫&#xff0c;由數據皮皮俠團隊整理時間跨度1998-2015年數據范圍各工業企業數據指標參考文獻孫博文,鄭世林.環…

第13屆藍橋杯C++青少組中/高級組選拔賽2022年1月22日真題

第13屆藍橋杯C青少組中/高級組選拔賽2022年1月22日真題 更多內容請查看網站&#xff1a;【試卷中心 -----> 藍橋杯----> C ----> 選拔賽】 網站鏈接 青少年軟件編程歷年真題模擬題實時更新 編程題 第 1 題 比大小 題目描述&#xff1a; 給出兩個不同的整數&#…

從0到1學PHP(七):PHP 與 HTML 表單:實現數據交互

目錄一、表單的創建與提交方式1.1 HTML 表單的基本結構1.2 GET 和 POST 提交方式的區別及適用場景二、表單數據的接收與處理2.1 使用\$_GET、\$_POST 超全局變量獲取表單數據2.2 對接收的數據進行驗證三、表單安全處理3.1 防止 XSS 攻擊的方法3.2 防止 CSRF 攻擊的措施一、表單…

Docker compose和Docker-compose的區別

Docker Compose 的兩個命令形式 docker compose&#xff08;空格連接&#xff09;與 docker-compose&#xff08;短橫線連接&#xff09;核心區別如下&#xff1a;一、技術本質docker-compose&#xff08;短橫線&#xff09;獨立可執行文件&#xff1a;早期實現方式&#xff0c…

自定心深凹槽參數檢測裝置及檢測方法 - 激光頻率梳 3D 輪廓檢測

一、引言在機械零件深凹槽檢測中&#xff0c;傳統方法常因定心不準導致檢測誤差。如平臺推表檢測時零件基準面與測量平臺難以精準對齊&#xff0c;三坐標測量需人工找正&#xff0c;效率低且誤差大。激光頻率梳 3D 輪廓檢測雖精度高&#xff0c;但缺乏自定心機制會影響深凹槽軸…

C語言---結構體(格式、用法、嵌套、初始化)、共用體、枚舉類型、typedef類型

目錄 結構體與共用體 1、結構體(struct) (1) 格式與用法 (2) 結構體允許嵌套 (3) 結構體成員初始化 (4) 指針替換變量 (5) 求結構體在內存空間所占字節 2、共用體(union) (1) 格式與概念 (2) 應用 3、枚舉類型(enum) (1) 格式與概念 (2) 應用 4、typedef 類型 結構體與共用…

輻射源定位方法簡述

文章目錄 前言 一、按照信息建模分類 1.1.時間參數 1.1.1.到達時間&#xff08;TOA, Time of Arrival&#xff09;定位 1.1.2.到達時間差&#xff08;TDOA, Time Difference of Arrival&#xff09;定位 1.2.角度參數 1.2.1.到達角度&#xff08;AOA, Angle of Arrival&a…

CamX-設置SceneMode:CONTROL_SCENE_MODE_FACE_PRIORITY不生效問題解決

應用設置CONTROL_SCENE_MODE_FACE_PRIORITY設置不生效 問題&#xff1a;app 代碼 CaptureRequest.Builder captureRequestBuilder mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);builder.set(CaptureRequest.CONTROL_SCENE_MODE, CameraMetadata.CONTRO…

MFC CChartCtrl編程

重點&#xff1a;創建CChartCtrl控件有2種方式1、直接創建CChartCtrl2、窗體上添加Custom Control&#xff08;切記一定不能是Static Text或者Picture Control&#xff0c;否則無法響應鼠標消息&#xff09;&#xff0c;然后根據ID關聯CChartCtrl控件&#xff0c;初始化代碼如下…