做3dh春丽网站叫什么/360搜索指数
1.需求
- 处理一个列表的数据,要求按照列表的数据处理10个数据
- 可以使用多线程处理,但是针对每个线程,1~10的处理顺序不能变。
- 每个数据的处理必须原子,即只有一个线程可以针对某个数据进行处理,但是10个数据是可以由10个线程并行处理的。只是有前面的单线程内的处理顺序要求。
2.设计
2.1.设计说明
设计一个处理的监控链,为每个数据定义一个线程锁定的指针,叫锁定指针,表示数据已经被锁定,后续的线程需要排队。
为每个线程定义一个激活指针,如果有线程需要激活那么就通过该指针激活等待中的线程。
比如线程1开始处理数据1了,那么就把自己的指针设置给数据1的锁定指针。
这时候如果线程2也想处数据1,会有两种情况,如下分别处理
情况1:数据没有任何线程锁定,那么按照线程1的方式处理数据1
情况2:线程1正在处理数据,那么我把我的指针设置给线程1的激活指针,同时把我的指针设置给数据1的锁定指针。这时候如果有线程3要处理数据1,处理的方和线程2的处理方法相同。
2.2.设计要点
- 如果资源未被占用,那么锁资源,开始处理,由锁定指针承载。
- 如果资源已经被占用了,所有等待的线程排队,形成一条激活链,由激活指针承载。
这个设计的关键就是两个指针,如下用类图说明。
类图如下:
3.代码
#include <iostream>
#include <thread>
#include <queue>
#include <mutex>
#include <condition_variable>
#include <atomic>
#include <windows.h> using namespace std;
class BoxDatas;
class MyThred;
std::mutex printmtx;//数据处理对象
class Data
{
public:int id = 0;int count = 0;
};
class BoxData
{
public:Data data;BoxData(int id){data.id = id;}MyThred* handelThread = NULL;std::mutex mtx;
};//数据容器承担多线程的处理对数据的保护功能
class BoxDatas
{
public:static BoxDatas my;static BoxDatas getMy() {return my;}static const int max = 10;BoxDatas() {for (int i = 0; i < max; i++){bs[i] = new BoxData(i);}}BoxData* bs[max];//所有数据加工只都超过10可以结束线程bool isStop() {for (size_t i = 0; i < max; i++){if (bs[i]->data.count < 10) {return false;}}return true;}
};BoxDatas BoxDatas::my = BoxDatas();//线程承载类
class MyThred
{
public:int id;std::mutex mtx;std::condition_variable cv;std::atomic_bool ready = false;MyThred* p_next = nullptr;//构造函数MyThred(int id) {this->id = id;}//数据处理函数void funBox(BoxData* boxData) {DWORD threadId = GetCurrentThreadId();//如果已经有线程占用了,那么等待std::unique_lock<std::mutex> lock(boxData->mtx);//这个锁的目标是: boxData->handelThreadif (boxData->handelThread != NULL) {std::unique_lock<std::mutex> lock2(boxData->handelThread->mtx);//这个锁的目标是:handelThread->p_nextboxData->handelThread->p_next = this;boxData->handelThread = this;//lock2.unlock();lock.unlock();//cout <<"Thread id:"<< threadId <<" data Id:" << boxData->data.id << " wait \n";print(boxData->data.id, "wait");cv.wait(lock2);// 无条件激活等待的线程//cv.wait(lock2, [this](){ return ready.load(); }); // 等待直到ready为true }else{boxData->handelThread = this;lock.unlock();}//cout << "Thread id:" << threadId << " data Id :" << boxData->data.id << " exe \n";print(boxData->data.id,"exe");//数据处理dataProcessing(boxData->data);std::unique_lock<std::mutex> lock2(mtx);//这个锁的目标是:handelThread->p_next//处理完成后需要调用等待激活的线程if (p_next != nullptr) {p_next->activeThread();}else{std::unique_lock<std::mutex> lock3(boxData->mtx);//这个锁的目标是: boxData->handelThreadboxData->handelThread = nullptr;lock3.unlock();}lock2.unlock();}//数据处理逻辑void dataProcessing(Data& data) {//加一个延时填充线程执行占用的时间//std::this_thread::sleep_for(std::chrono::seconds(5));data.count++;DWORD threadId = GetCurrentThreadId();//cout << "Thread id:" << id << " data Id:" << data.id <<" data value:"<< data.count << " value \n";print(data.id,"value", data.count);}void print(int dataId,std::string funType) {DWORD threadId = GetCurrentThreadId();std::unique_lock<std::mutex> lock(printmtx);cout << "Thread id:" << threadId << " data Id:" << dataId << " " << funType << "\n";lock.unlock();}void print(int dataId, std::string funType,int value) {DWORD threadId = GetCurrentThreadId();std::unique_lock<std::mutex> lock(printmtx);cout << "Thread id:" << threadId << " data Id:" << dataId << " data value:"<< value <<" " << funType << "\n";lock.unlock();}//此线程激活void activeThread() {ready = true;cv.notify_one(); // 唤醒一个等待在cv上的线程(如果有的话)}//线程主函数void mainThread() {while (true){for(BoxData* bd : BoxDatas::getMy().bs){funBox(bd);}//如果完成了数据,那么退出if (BoxDatas::getMy().isStop()) {break;}}}//线程运行std::thread run() {return std::thread([this] {mainThread(); });}
};//入口函数
int main() {std::thread threads[5];//线程初始化for (int i = 0; i < 5; i++){MyThred thrend(i);threads[i] = thrend.run();}//防止程序提取退出for (size_t i = 0; i < 5; i++){threads[i].join();}std::cout << "Hello from thread!\n";return 0;
}
4.运行结果
Thread id:15512 data Id:0 exe
Thread id:19512 data Id:0 wait
Thread id:15512 data Id:0 data value:1 value
Thread id:9320 data Id:0 wait
Thread id:10556 data Id:0 wait
Thread id:15512 data Id:1 exe
Thread id:25516 data Id:0 wait
Thread id:15512 data Id:1 data value:1 value
Thread id:19512 data Id:0 exe
Thread id:15512 data Id:2 exe
Thread id:9320 data Id:0 exe
Thread id:19512 data Id:0 data value:2 value
Thread id:15512 data Id:2 data value:1 value
Thread id:9320 data Id:0 data value:3 value
Thread id:19512 data Id:1 wait
Thread id:10556 data Id:0 exe
Thread id:15512 data Id:3 exe
Thread id:9320 data Id:1 wait
Thread id:10556 data Id:0 data value:4 value
Thread id:15512 data Id:3 data value:1 value
Thread id:19512 data Id:1 exe
Thread id:25516 data Id:0 exe
Thread id:10556 data Id:1 wait
Thread id:19512 data Id:1 data value:2 value
Thread id:25516 data Id:0 data value:5 value
Thread id:9320 data Id:1 exe
Thread id:15512 data Id:4 exe
Thread id:10556 data Id:1 exe
Thread id:19512 data Id:2 wait
Thread id:9320 data Id:1 data value:3 value
Thread id:15512 data Id:4 data value:1 value
Thread id:10556 data Id:1 data value:4 value
Thread id:25516 data Id:1 wait
Thread id:19512 data Id:2 exe
Thread id:9320 data Id:2 wait
Thread id:19512 data Id:2 data value:2 value
Thread id:10556 data Id:2 wait
Thread id:15512 data Id:5 exe
Thread id:15512 data Id:5 data value:1 value
Thread id:25516 data Id:1 exe
Thread id:25516 data Id:1 data value:5 value
Thread id:9320 data Id:2 exe
Thread id:9320 data Id:2 data value:3 value
Thread id:19512 data Id:3 wait
Thread id:10556 data Id:2 exe
Thread id:15512 data Id:6 exe
Thread id:15512 data Id:6 data value:1 value
Thread id:10556 data Id:2 data value:4 value
Thread id:25516 data Id:2 wait
Thread id:19512 data Id:3 exe
Thread id:9320 data Id:3 wait
Thread id:19512 data Id:3 data value:2 value
Thread id:10556 data Id:3 wait
Thread id:15512 data Id:7 exe
Thread id:15512 data Id:7 data value:1 value
Thread id:25516 data Id:2 exe
Thread id:25516 data Id:2 data value:5 value
Thread id:9320 data Id:3 exe
Thread id:9320 data Id:3 data value:3 value
Thread id:19512 data Id:4 wait
Thread id:10556 data Id:3 exe
Thread id:10556 data Id:3 data value:4 value
Thread id:25516 data Id:3 wait
Thread id:19512 data Id:4 exe
Thread id:19512 data Id:4 data value:2 value
Thread id:9320 data Id:4 wait
Thread id:25516 data Id:3 exe
Thread id:25516 data Id:3 data value:5 value
Thread id:10556 data Id:4 wait
Thread id:15512 data Id:8 exe
Thread id:15512 data Id:8 data value:1 value
Thread id:19512 data Id:5 wait
Thread id:9320 data Id:4 exe
Thread id:9320 data Id:4 data value:3 value
Thread id:25516 data Id:4 wait
Thread id:10556 data Id:4 exe
Thread id:10556 data Id:4 data value:4 value
Thread id:15512 data Id:9 exe
Thread id:15512 data Id:9 data value:1 value
Thread id:19512 data Id:5 exe
Thread id:19512 data Id:5 data value:2 value
Thread id:9320 data Id:5 wait
Thread id:25516 data Id:4 exe
Thread id:10556 data Id:5 wait
Thread id:25516 data Id:4 data value:5 value
Thread id:19512 data Id:6 wait
Thread id:15512 data Id:0 wait
Thread id:9320 data Id:5 exe
Thread id:9320 data Id:5 data value:3 value
Thread id:25516 data Id:5 wait
Thread id:10556 data Id:5 exe
Thread id:10556 data Id:5 data value:4 value
Thread id:19512 data Id:6 exe
Thread id:9320 data Id:6 wait
Thread id:15512 data Id:0 exe
Thread id:19512 data Id:6 data value:2 value
Thread id:25516 data Id:5 exe
Thread id:10556 data Id:6 wait
Thread id:15512 data Id:0 data value:6 value
Thread id:25516 data Id:5 data value:5 value
Thread id:9320 data Id:6 exe
Thread id:19512 data Id:7 wait
Thread id:9320 data Id:6 data value:3 value
Thread id:10556 data Id:6 exe
Thread id:15512 data Id:1 wait
Thread id:10556 data Id:6 data value:4 value
Thread id:19512 data Id:7 exe
Thread id:25516 data Id:6 wait
Thread id:19512 data Id:7 data value:2 value
Thread id:15512 data Id:1 exe
Thread id:9320 data Id:7 wait
Thread id:15512 data Id:1 data value:6 value
Thread id:25516 data Id:6 exe
Thread id:25516 data Id:6 data value:5 value
Thread id:10556 data Id:7 wait
Thread id:9320 data Id:7 exe
Thread id:19512 data Id:8 wait
Thread id:9320 data Id:7 data value:3 value
Thread id:25516 data Id:7 wait
Thread id:15512 data Id:2 wait
Thread id:10556 data Id:7 exe
Thread id:10556 data Id:7 data value:4 value
Thread id:9320 data Id:8 wait
Thread id:19512 data Id:8 exe
Thread id:19512 data Id:8 data value:2 value
Thread id:25516 data Id:7 exe
Thread id:25516 data Id:7 data value:5 value
Thread id:15512 data Id:2 exe
Thread id:15512 data Id:2 data value:6 value
Thread id:10556 data Id:8 wait
Thread id:9320 data Id:8 exe
Thread id:9320 data Id:8 data value:3 value
Thread id:19512 data Id:9 wait
Thread id:15512 data Id:3 wait
Thread id:25516 data Id:8 wait
Thread id:19512 data Id:9 exe
Thread id:19512 data Id:9 data value:2 value
Thread id:15512 data Id:3 exe
Thread id:9320 data Id:9 wait
Thread id:10556 data Id:8 exe
Thread id:10556 data Id:8 data value:4 value
Thread id:25516 data Id:8 exe
Thread id:19512 data Id:0 wait
Thread id:15512 data Id:3 data value:6 value
Thread id:25516 data Id:8 data value:5 value
Thread id:9320 data Id:9 exe
Thread id:10556 data Id:9 wait
Thread id:9320 data Id:9 data value:3 value
Thread id:19512 data Id:0 exe
Thread id:19512 data Id:0 data value:7 value
Thread id:15512 data Id:4 wait
Thread id:10556 data Id:9 exe
Thread id:25516 data Id:9 wait
Thread id:10556 data Id:9 data value:4 value
Thread id:19512 data Id:1 wait
Thread id:9320 data Id:0 wait
Thread id:15512 data Id:4 exe
Thread id:15512 data Id:4 data value:6 value
Thread id:10556 data Id:0 wait
Thread id:25516 data Id:9 exe
Thread id:9320 data Id:0 exe
Thread id:19512 data Id:1 exe
Thread id:19512 data Id:1 data value:7 value
Thread id:25516 data Id:9 data value:5 value
Thread id:9320 data Id:0 data value:8 value
Thread id:15512 data Id:5 wait
Thread id:10556 data Id:0 exe
Thread id:10556 data Id:0 data value:9 value
Thread id:19512 data Id:2 wait
Thread id:9320 data Id:1 wait
Thread id:25516 data Id:0 wait
Thread id:19512 data Id:2 exe
Thread id:15512 data Id:5 exe
Thread id:9320 data Id:1 exe
Thread id:10556 data Id:1 wait
Thread id:19512 data Id:2 data value:7 value
Thread id:15512 data Id:5 data value:6 value
Thread id:9320 data Id:1 data value:8 value
Thread id:25516 data Id:0 exe
Thread id:25516 data Id:0 data value:10 value
Thread id:19512 data Id:3 wait
Thread id:10556 data Id:1 exe
Thread id:10556 data Id:1 data value:9 value
Thread id:15512 data Id:6 wait
Thread id:25516 data Id:1 wait
Thread id:9320 data Id:2 wait
Thread id:15512 data Id:6 exe
Thread id:15512 data Id:6 data value:6 value
Thread id:25516 data Id:1 exe
Thread id:25516 data Id:1 data value:10 value
Thread id:19512 data Id:3 exe
Thread id:10556 data Id:2 wait
Thread id:19512 data Id:3 data value:7 value
Thread id:9320 data Id:2 exe
Thread id:15512 data Id:7 wait
Thread id:9320 data Id:2 data value:8 value
Thread id:10556 data Id:2 exe
Thread id:25516 data Id:2 wait
Thread id:10556 data Id:2 data value:9 value
Thread id:15512 data Id:7 exe
Thread id:19512 data Id:4 wait
Thread id:15512 data Id:7 data value:6 value
Thread id:25516 data Id:2 exe
Thread id:25516 data Id:2 data value:10 value
Thread id:9320 data Id:3 wait
Thread id:19512 data Id:4 exe
Thread id:10556 data Id:3 wait
Thread id:19512 data Id:4 data value:7 value
Thread id:25516 data Id:3 wait
Thread id:15512 data Id:8 wait
Thread id:9320 data Id:3 exe
Thread id:9320 data Id:3 data value:8 value
Thread id:19512 data Id:5 wait
Thread id:10556 data Id:3 exe
Thread id:15512 data Id:8 exe
Thread id:25516 data Id:3 exe
Thread id:9320 data Id:4 wait
Thread id:10556 data Id:3 data value:9 value
Thread id:10556 data Id:4 wait
Thread id:25516 data Id:3 data value:10 value
Thread id:19512 data Id:5 exe
Thread id:15512 data Id:8 data value:6 value
Thread id:9320 data Id:4 exe
Thread id:9320 data Id:4 data value:8 value
Thread id:19512 data Id:5 data value:7 value
Thread id:25516 data Id:4 wait
Thread id:10556 data Id:4 exe
Thread id:15512 data Id:9 wait
Thread id:10556 data Id:4 data value:9 value
Thread id:19512 data Id:6 wait
Thread id:9320 data Id:5 wait
Thread id:25516 data Id:4 exe
Thread id:10556 data Id:5 wait
Thread id:25516 data Id:4 data value:10 value
Thread id:15512 data Id:9 exe
Thread id:15512 data Id:9 data value:6 value
Thread id:19512 data Id:6 exe
Thread id:25516 data Id:5 wait
Thread id:9320 data Id:5 exe
Thread id:9320 data Id:5 data value:8 value
Thread id:10556 data Id:5 exe
Thread id:10556 data Id:5 data value:9 value
Thread id:19512 data Id:6 data value:7 value
Thread id:15512 data Id:0 wait
Thread id:25516 data Id:5 exe
Thread id:9320 data Id:6 wait
Thread id:25516 data Id:5 data value:10 value
Thread id:19512 data Id:7 wait
Thread id:10556 data Id:6 wait
Thread id:15512 data Id:0 exe
Thread id:15512 data Id:0 data value:11 value
Thread id:25516 data Id:6 wait
Thread id:9320 data Id:6 exe
Thread id:9320 data Id:6 data value:8 value
Thread id:19512 data Id:7 exe
Thread id:19512 data Id:7 data value:7 value
Thread id:10556 data Id:6 exe
Thread id:10556 data Id:6 data value:9 value
Thread id:15512 data Id:1 wait
Thread id:25516 data Id:6 exe
Thread id:25516 data Id:6 data value:10 value
Thread id:9320 data Id:7 wait
Thread id:10556 data Id:7 wait
Thread id:19512 data Id:8 wait
Thread id:9320 data Id:7 exe
Thread id:9320 data Id:7 data value:8 value
Thread id:10556 data Id:7 exe
Thread id:25516 data Id:7 wait
Thread id:15512 data Id:1 exe
Thread id:15512 data Id:1 data value:11 value
Thread id:19512 data Id:8 exe
Thread id:19512 data Id:8 data value:7 value
Thread id:10556 data Id:7 data value:9 value
Thread id:9320 data Id:8 wait
Thread id:25516 data Id:7 exe
Thread id:15512 data Id:2 wait
Thread id:25516 data Id:7 data value:10 value
Thread id:10556 data Id:8 wait
Thread id:19512 data Id:9 wait
Thread id:9320 data Id:8 exe
Thread id:9320 data Id:8 data value:8 value
Thread id:25516 data Id:8 wait
Thread id:15512 data Id:2 exe
Thread id:15512 data Id:2 data value:11 value
Thread id:10556 data Id:8 exe
Thread id:10556 data Id:8 data value:9 value
Thread id:19512 data Id:9 exe
Thread id:19512 data Id:9 data value:7 value
Thread id:9320 data Id:9 wait
Thread id:25516 data Id:8 exe
Thread id:25516 data Id:8 data value:10 value
Thread id:15512 data Id:3 wait
Thread id:19512 data Id:0 wait
Thread id:10556 data Id:9 wait
Thread id:15512 data Id:3 exe
Thread id:15512 data Id:3 data value:11 value
Thread id:19512 data Id:0 exe
Thread id:19512 data Id:0 data value:12 value
Thread id:9320 data Id:9 exe
Thread id:9320 data Id:9 data value:8 value
Thread id:25516 data Id:9 wait
Thread id:10556 data Id:9 exe
Thread id:10556 data Id:9 data value:9 value
Thread id:15512 data Id:4 wait
Thread id:9320 data Id:0 wait
Thread id:19512 data Id:1 wait
Thread id:15512 data Id:4 exe
Thread id:15512 data Id:4 data value:11 value
Thread id:9320 data Id:0 exe
Thread id:9320 data Id:0 data value:13 value
Thread id:25516 data Id:9 exe
Thread id:25516 data Id:9 data value:10 value
Thread id:10556 data Id:0 wait
Thread id:19512 data Id:1 exe
Thread id:19512 data Id:1 data value:12 value
Thread id:15512 data Id:5 wait
Thread id:10556 data Id:0 exe
Thread id:10556 data Id:0 data value:14 value
Thread id:9320 data Id:1 wait
Thread id:15512 data Id:5 exe
Thread id:15512 data Id:5 data value:11 value
Thread id:19512 data Id:2 wait
Thread id:9320 data Id:1 exe
Thread id:9320 data Id:1 data value:13 value
Thread id:10556 data Id:1 wait
Thread id:19512 data Id:2 exe
Thread id:19512 data Id:2 data value:12 value
Thread id:15512 data Id:6 wait
Thread id:10556 data Id:1 exe
Thread id:10556 data Id:1 data value:14 value
Thread id:9320 data Id:2 wait
Thread id:15512 data Id:6 exe
Thread id:15512 data Id:6 data value:11 value
Thread id:19512 data Id:3 wait
Thread id:9320 data Id:2 exe
Thread id:9320 data Id:2 data value:13 value
Thread id:10556 data Id:2 wait
Thread id:19512 data Id:3 exe
Thread id:19512 data Id:3 data value:12 value
Thread id:15512 data Id:7 wait
Thread id:10556 data Id:2 exe
Thread id:10556 data Id:2 data value:14 value
Thread id:9320 data Id:3 wait
Thread id:15512 data Id:7 exe
Thread id:15512 data Id:7 data value:11 value
Thread id:19512 data Id:4 wait
Thread id:9320 data Id:3 exe
Thread id:9320 data Id:3 data value:13 value
Thread id:10556 data Id:3 wait
Thread id:19512 data Id:4 exe
Thread id:19512 data Id:4 data value:12 value
Thread id:15512 data Id:8 wait
Thread id:10556 data Id:3 exe
Thread id:10556 data Id:3 data value:14 value
Thread id:9320 data Id:4 wait
Thread id:15512 data Id:8 exe
Thread id:15512 data Id:8 data value:11 value
Thread id:19512 data Id:5 wait
Thread id:9320 data Id:4 exe
Thread id:9320 data Id:4 data value:13 value
Thread id:10556 data Id:4 wait
Thread id:19512 data Id:5 exe
Thread id:19512 data Id:5 data value:12 value
Thread id:15512 data Id:9 wait
Thread id:10556 data Id:4 exe
Thread id:10556 data Id:4 data value:14 value
Thread id:9320 data Id:5 wait
Thread id:15512 data Id:9 exe
Thread id:15512 data Id:9 data value:11 value
Thread id:19512 data Id:6 wait
Thread id:9320 data Id:5 exe
Thread id:9320 data Id:5 data value:13 value
Thread id:10556 data Id:5 wait
Thread id:19512 data Id:6 exe
Thread id:19512 data Id:6 data value:12 value
Thread id:9320 data Id:6 wait
Thread id:10556 data Id:5 exe
Thread id:10556 data Id:5 data value:14 value
Thread id:19512 data Id:7 wait
Thread id:9320 data Id:6 exe
Thread id:10556 data Id:6 wait
Thread id:9320 data Id:6 data value:13 value
Thread id:19512 data Id:7 exe
Thread id:19512 data Id:7 data value:12 value
Thread id:9320 data Id:7 wait
Thread id:10556 data Id:6 exe
Thread id:10556 data Id:6 data value:14 value
Thread id:19512 data Id:8 wait
Thread id:9320 data Id:7 exe
Thread id:9320 data Id:7 data value:13 value
Thread id:10556 data Id:7 wait
Thread id:19512 data Id:8 exe
Thread id:19512 data Id:8 data value:12 value
Thread id:9320 data Id:8 wait
Thread id:10556 data Id:7 exe
Thread id:10556 data Id:7 data value:14 value
Thread id:19512 data Id:9 wait
Thread id:9320 data Id:8 exe
Thread id:9320 data Id:8 data value:13 value
Thread id:10556 data Id:8 wait
Thread id:19512 data Id:9 exe
Thread id:19512 data Id:9 data value:12 value
Thread id:9320 data Id:9 wait
Thread id:10556 data Id:8 exe
Thread id:10556 data Id:8 data value:14 value
Thread id:10556 data Id:9 wait
Thread id:9320 data Id:9 exe
Thread id:9320 data Id:9 data value:13 value
Thread id:10556 data Id:9 exe
Thread id:10556 data Id:9 data value:14 value
Hello from thread!
相关文章:

c++ 线程交叉场景试验
1.需求 处理一个列表的数据,要求按照列表的数据处理10个数据可以使用多线程处理,但是针对每个线程,1~10的处理顺序不能变。每个数据的处理必须原子,即只有一个线程可以针对某个数据进行处理,但是10个数据是可以由10个…...

Cell:如何升华你的单细胞数据——PCF空间单细胞蛋白组联合scRNA-seq解析骨髓微环境
骨髓微环境非常复杂,含有不同的细胞类型,包括了造血、间充质、内皮、血管平滑肌和神经谱系细胞等。非造血细胞对于骨髓造血非常关键。然而,这些细胞在人骨髓中的异质性和空间定位在很大程度上仍未被表征。来自佩雷尔曼医学院的研究者使用scRN…...

vue强制刷新组件
在Vue中强制刷新一个组件,通常不是一个推荐的做法,因为Vue的响应式系统设计就是为了自动处理依赖的更新。要强制重新渲染组件,以下是几种方法: 使用key属性: 最常见的方法是改变组件的key属性。当key发生变化时&#x…...

分享5款对工作学习有帮助的效率软件
今天再来推荐5个超级好用的效率软件,无论是对你的学习还是办公都能有所帮助,每个都堪称神器中的神器,用完后觉得不好用你找我。 1.文件复制——ClipClip ClipClip是一款功能强大、操作简便的文件复制与管理软件。它改变了传统的复制粘…...

redis秒杀(PHP版本)
前提提要 今天产品端提了个需求,院校组要求借调我去帮忙,因为我以前做过商城,现在他们需求做一个积分商城,需要做一个秒杀模块,结果毫无意外的我被借调过去了,刚好可以复习一下以前的知识,现在介…...

图形用户界面(GUI)在AI去衣技术中的作用与重要性
引言: 随着人工智能技术的不断进步,AI去衣这一概念逐渐进入公众视野。它指的是利用深度学习算法,从图片或视频中自动移除人物的衣物,生成相应的“裸体”图像。尽管这项技术在道德和隐私方面引发了诸多争议,但其背后的技…...

如何阅读:一个已被证实的低投入高回报的学习方法的笔记
系列文章目录 如何有效阅读一本书笔记 如何阅读:一个已被证实的低投入高回报的学习方法 麦肯锡精英高效阅读法笔记 读懂一本书笔记 文章目录 系列文章目录第一章 扫清阅读障碍破解读不快、读不进去的谜题一切为了阅读小学教师让你做,但中学老师阻止你做的…...

pycharm 安装“通义灵码“并测试
过程:“File>setting>Plugins” 提示: 翻译之后: 点击"接受"之后,提示一下图片,点击ok 安装完成: 安装完"通义灵码"之后,需要登陆,登陆后测试 参考…...

React 之 useMemo Hook (九)
useMemo 是 React 的一个Hook,它允许你“记住”一些计算值,只有在依赖项之一发生变化时才会重新计算这些值。这有助于避免不必要的重新计算和渲染,从而提高应用程序的性能。 代码栗子(计算一个斐波那契数列的值)&#…...

短视频矩阵系统源码saas开发--可视化剪辑、矩阵托管、多功能合一开发
短视频矩阵系统源码saas开发(可视化剪辑、矩阵托管、智能私信聚合、线索转化、数据看板、seo关键词、子账号等多个板块开发) 短视频矩阵系统是一种集成了多种功能的系统,旨在帮助用户在短视频平台上进行高效的内容创作、管理和发布。根据您提…...

百度大模型文心一言api 请求错误码 一览表
错误码说明 千帆大模型平台API包含两类,分别为大模型能力API和大模型平台管控API,具体细分如下: 大模型能力API 对话Chat续写Completions向量Embeddings图像Images 大模型平台管控API 模型管理Prompt工程服务管理模型精调数据管理TPM&RP…...

Unity调用智谱API(简单操作 文本实时翻译)
代码展示: using Newtonsoft.Json; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Networking; using UnityEngine.UI;public class ZhiPuAi : MonoBehaviour {// API的端点URLpublic string…...

Android 开机启动扫描SD卡apk流程源码分析
在开机的时候,装在SD卡的apk和装在系统盘的apk扫描过程不一样,系统盘apk在系统启动过程中扫描,而SD卡上的就不是,等系统启动好了才挂载、扫描,下面就说下SD扫描的流程: 在SystemServer启动MountService&am…...

如何恢复回收站中被删除的文件?3个恢复策略,实测有用!
“刚刚一不小心把回收站清空了,大家有什么好用的方法可以帮我恢复回收站中删除的文件吗?快帮帮我吧!” 在使用电脑的过程中,我们有时可能会不小心将重要的文件或文件夹删除到回收站,并且随后可能进一步从回收站中彻底删…...

Unity---版本控制软件
13.3 版本控制——Git-1_哔哩哔哩_bilibili Git用的比较多 Git 常用Linux命令 pwd:显示当前所在路径 ls:显示当前路径下的所有文件 tab键自动补全 cd:切换路径 mkdir:在当前路径下创建一个文件夹 clear:清屏 vim…...

基于大模型的idea提炼:围绕论文和引用提炼idea之ResearchAgent
前言 对本博客比较熟悉的朋友知道,我司论文项目组正在基于大模型做论文的审稿(含CS英文论文审稿、和金融中文论文审稿)、翻译,且除了审稿翻译之外,我们还将继续做润色/修订、idea提炼(包含论文检索),是一个大的系统,包…...

前端深度扩展
1 为什么要有webpack 模块化管理:构建工具支持Common JS、ES6模块等规范;依赖管理:在大型项目中,手动管理文件依赖关系。webpack可以自动分析项目中的依赖关系,将其打包成1个或多个优化过的文件,减少页面加…...

雷军-2022.8小米创业思考-6-互联网七字诀之专注:有所为,有所不为;克制贪婪,少就是多;一次解决一个最迫切的需求
第六章 互联网七字诀 专注、极致、口碑、快,这就是我总结的互联网七字诀,也是我对互联网思维的高度概括。 专注 从商业角度看,专注就是要“把鸡蛋尽量放在一个篮子里”。这听起来似乎有些不合理,大家的第一反应可能是“风险会不会…...

【禅道客户案例】北大软件携手禅道,开启产品化之路新征程
在项目制项目模式下,软件公司根据客户的需求进行短期项目开发,具有灵活、高效、受众面广的优点,在业界得到了广泛的应用。但这种模式也面临诸多挑战,软件公司需要不断地开发新项目来维持业务增长,由于没有自己的产品也…...

解释泛型(Generics)在Java中的用途
在Java中,泛型(Generics)是一种在编译时期提供类型检查和约束的机制,它使得类和接口可以被参数化,即你可以定义一个类或接口,并通过参数传入具体的类型。泛型增加了代码的复用性和类型安全性,同…...

给网站网页PHP页面设置密码访问代码
将MkEncrypt.php文件上传至你网站根目录下或者同级目录下。 MkEncrypt.php里面添加代码,再将调用代码添加到你需要加密的页进行调用 MkEncrypt(‘123456’);括号里面123456修改成你需要设置的密码。 密码正确才能进去页面,进入后会存下cookies值&…...

124.反转链表(力扣)
题目描述 代码解决(思路1:双指针) class Solution { public:ListNode* reverseList(ListNode* head) {ListNode*temp;//保存cur下一个节点ListNode*curhead;ListNode*preNULL;while(cur){tempcur->next;// 保存一下 cur的下一个节点&#…...

【数据库原理及应用】期末复习汇总高校期末真题试卷06
试卷 一、选择题 1. ________是长期存储在计算机内的有组织,可共享的数据集合. A.数据库管理系统 B.数据库系统 C.数据库 D.文件组织 1. 有12个实体类型,并且它们之间存在15个不同的二元联系,其中4个是1:1联系类型,5…...

Offline:IQL
ICLR 2022 Poster Intro 部分离线强化学习的对价值函数采用的是最小化均方bellman误差。而其中误差源自单步的TD误差。TD误差中对target Q的计算需要选取一个max的动作,这就容易导致采取了OOD的数据。因此,IQL取消max,,通过一个期望回归算子…...

图像涂哪就动哪!Gen-2新功能“神笔马良”爆火,网友:急急急
AI搞视频生成,已经进化到这个程度了?! 对着一张照片随手一刷,就能让被选中的目标动起来! 明明是一辆静止的卡车,一刷就跑了起来,连光影都完美还原: 原本只是一张火灾照片࿰…...

【管理篇】管理三步曲:任务执行(三)
目录标题 多任务并行如何应对?如何确保项目有效的执行项目执行过程中常见的问题1、目标不明确2、责任不明确3、流程不健全4、沟通不到位 如何有效执行任务 如何让流程机制有效的执行 研究任务管理,就是为了把事情做出来,产出实实在在的业绩和成果&#…...

使用idea管理docker
写在前面 其实idea也提供了docker的管理功能,比如查看容器列表,启动容器,停止容器等,本文来看下如何管理本地的docker daemon和远程的dockers daemon。 1:管理本地 双击shift,录入service: …...

【Git】Commit后进行事务回滚
起因 因为一直使用git add .,在学习pytorch中添加了一个较大的数据集后,导致git push失败,而这个大数据集并不是必须要上传到仓库的,但是因为自己在设置.gitignore前已经进行了git comit,所以,需要进行事务…...

一分钟教你学浪app视频怎么缓存
你是否在学浪app上苦苦寻找如何缓存视频的方法?你是否想快速、轻松地观看自己喜欢的视频内容?那么,让我们一起探索一分钟教你如何缓存学浪app视频的技巧吧! 学浪下载工具我已经打包好了,有需要的自己下载一下 学浪下…...

stylus详解与引入
Stylus 是一个基于 Node.js 的 CSS 预处理器,它允许开发者以一种类似于脚本的方式编写 CSS 代码,从而创建出更加健壮、动态和富有表现力的样式表。Stylus 的特点包括: 1. 基于 JavaScript:由于 Node.js 是一个 JavaScript 运行环…...