• 什么是Tor?Tor浏览器更新有什么用?什么是Tor?Tor浏览器更新有什么用?
  • 难怪马斯克裁掉整个安全部门,推特540万用户数据在暗网公开难怪马斯克裁掉整个安全部门,推特540万用户数据在暗网公开
  • 中华人民共和国网络安全法中华人民共和国网络安全法
大横幅1
大横幅2
到期时间:永久 到期时间:推广
到期时间:推广 小横幅4
今日发布0 篇文章 | 本站共发布了2001篇文章
  • 人情世故影视解说,最新蓝海赛道,一分钟一条视频,多平台收益,轻松日入1000+

    项目介绍 大家都知道,酒桌文化是从古至今在中国一直流行的,大多数人都免不了跟上司领导打交道,因为有些话不能放到明面上去说,所以就衍生出了一些潜台词话语,而随着我们年龄的整长,从以前的不屑一顾到现在的逐帧学习,这就是大多数人的一个转变,而且,因为带有话题性,所有很多人也喜欢去视频下面评论,去讨论这种东西,讽刺也好,赞叹也罢,所以我们制作这种视频,这一切的行为都是对于我们引流变现起到了一个很好的作用,那么这是不是一个蓝海赛道呢,所有大家明白一点,这跟传统的解说是不一样的,传统解说是跟着视频内容走向,充当一个旁白角色,而我们这种类型所要做的,更多是去分析角色心理以及话中的潜台词,这无疑很大的增加了难度,所以,这并不会像传统解说那么泛滥,今天,我就给大家带来这个所谓“人情世故”视频的教学。...

    2024-04-06 赚钱项目 30
  • 视频号搬运玩法2.0!一个你意想不到的冷门玩法,小白都能日入四位数,思路打开,赚钱变得如此简单

    项目介绍 美女视频在哪个短视频平台都是很受欢迎的,因为哪个平台都不缺少S粉,今天我们要介绍的项目,就是通过搬运美女视频到视频号,加上一定的引导,吸引观众到评论区评论,我们赚取创作者分成计划的收益。我们要搬运的素材也是大家意想不到的,看完之后大家就会明白,原来思路打开了,赚钱会变得这么容易。 课程目录 项目介绍 账号准备 视频制作--实操 变现方式 ...

    2024-04-06 赚钱项目 38
  • 流量放大器,分享两款引流方法,抖音和Soul

    抖音公私域变现 注册抖音高权重号 设备选择和网络IP问题 抖音螺旋起号 抖音实战dou+独家玩法 打造高权重账号实操三大绝招 作品实操,剪辑的核心技术 如何做出一个爆款视频 运营抖音号的注意事项 有关孵化抖音的运营疑问 soul私域轰炸器 如何养出soul高权重账号 如何通过SEO裂变进行引流  在soul发布文案实现暴力引流! 引流实况展示 账号防封措施 ...

    2024-04-06 赚钱项目 36
  • 冷门赛道 纯AI搬砖玩法 单日收益800+ 快速拿结果 长期项目小白也能轻松上手!

    项目介绍 大家好,我是飞雪,全网同名飞雪创业记,今天分享的这个项目是公众号流量主项目,这个项目我们学员单人5个账号,月入5W+!很适合个人副业全职都可以,从23年到今年已经稳定运营一年了,最高收益单篇文章过万!通过开通公众号流量主,用Al工具写爆文批量发布在公众号,平台智能插入广告, 这样我们就会获取广告收益分成。利用微信平台新推出的“公域流量”推荐机制;流量主收益与广告获得更多曝光或直接点击,以此赚取收益;本次课程从项目原理,项目准备,选题素材,文库搭建,爆文公式拆解与学习,爆文实操演示与AI结果展示,项目雷点,红线和误区,全方位拆解和经验分享,希望能帮助到大家。 课程目录 项目原理 项目准备与工具 赛道选择和素材查找 实操AI指令和发文细节 搭建自己的文库及万能公式 爆文公式拆解与学习 爆文实操演示和AI写作 项目运营避坑 ...

    2024-04-05 赚钱项目 39
  • 制作热评图文或视频,快速涨粉接广告,实现月入过万

    项目介绍 大家好,我是一心,这次给大家带来的项目是制作热评图文或视频,快速涨粉接广告,实现月入过万。...

    2024-04-05 赚钱项目 29
  • 原始手法无脑搬运影视剧,单日收入300+,操作简单,几分钟生成一条视频,轻松过审核

    项目介绍 我们经常刷抖音、快手可以看到这样的作品,左下角有一个【影视|立即观看XX】这种类似的小程序,其实这就是挂载了短视频小程序进行变现。 这种原始搬运的手法,不需要复杂的操作,也不需要什么去重软件,只需要一个剪映就能在几分钟内产出一条短视频,并且还能轻松过审核,然后挂载小程序,进行变现,有一些朋友老是去盯着西瓜的那个中视频伙伴计划,如果你没有一定的创新和创作能力,中视频的收益还真不如直接搬运挂载的收益高。 课程目录 项目介绍 养号流程 如何寻找素材 项目实操 如何挂载小程序 ...

    2024-04-05 赚钱项目 29
  • 4月5日,星期五简报,60秒知晓天下事

    2024年4月5日,星期五,农历二月廿七,每天60秒知天下 1、青海茫崖市4日上午发生5.5级地震:有房屋裂缝,暂无人员伤亡报告;江西风雹灾害:已致7人死亡31.3万人受灾,直接经济损失4亿元; 2、台湾花莲强震:已致10死1099伤,705人受困,15人失联,累计余震达400次,全台七大晶圆厂损失百亿;国台办发声:愿提供救灾协助; 3、地震预警App收10元年费遭网友质疑,研究所回应:目前收费的仅限苹果系统; 4、广东东莞一所公助民办养老院凌晨发生火灾,已致3死10伤,死者均为老人,启用不足一月并曾组织消防演练; 5、山西保德一女司机驾驶奔驰车碾压两名孩子后逃逸,警方通报:造成两名儿童受伤,肇事司机已投案; 6、西安西京医院将猪肾移植至人体,移植肾已持续工作9天,在受者体内功能良好,正常产生尿液; 7、浙江义乌:对二孩、三孩家庭购买新房各补贴10万元、20万元;海南出台灵活就业人员缴存住房公积金新规:缴存比例最高24%; 8、“90后”男子控制87个账户炒一只股票,获利近1亿,证监会罚没2.7亿; 9、FIFA最新排名:国足保持世界第88位亚洲第13,阿根廷、法国与比利时依次位列世界前三; 10、世界年龄最大男子去世:享年114岁,其长寿秘籍是早睡每天一杯烈酒; 11、泰媒:泰国两派数千只猴子打群架,37只带头公猴被抓,帮派头目落网,泰政府表示:计划对猴群绝育; 12、日媒:日本福岛县近海域4日发生6.0级地震,东京等地有震感,无海啸危险,核电站暂无异常; 13、巴媒:巴西今年以来登革热死亡病例上升至1020人,病例总数超267万,已有10州及联邦区进入登革热卫生紧急状态; 14、外媒:伊朗两市军事总部遭恐怖袭击,已致11名伊朗士兵死亡,伊朗官员称18名恐怖分子已被全部击毙; 15、外媒:俄外交部称法国1500人的营级战术群或将4月入乌参战,法方对此暂无回应;芬兰与乌克兰签订双边安全协议,为期10年; 【每日金句】时间打磨完一些东西,也会留下一些东西,留下的,都是最好的。    ...

    2024-04-05 值得一看 48
  • uniapp Vue 使用 sip.js进行语音通话视频通话

    下载或者安装 sip.js 到 uniapp 项目,APP 端在 menifest.json 中配置麦克风权限 menifest.json 中 app 权限配置选中: android.permission.RECORD_AUDIO android.permission.MODIFY_AUDIO_SETTINGS sip.js 低版本 如 V0.13.0 版本的写法 注册 取消注册 呼叫 {{isInOut?inComingNumber:outGoingNumber}} 通话中... 呼入... 呼出... import * as sip from "@/common/js/sip-0.13.0.min.js" let ua; export default { name: "VoiceIntercom", props: {}, data() { return { configuration: {}, outGoingNumber: '02700002', baseUrl: 'web.domain.com', // sipurl格式: "sip:02700001@web.domain.com:7065", port: '7065', user: { number: '02700001', name: 'test', password: '123456' }, server: 'wss://web.domain.com:7067', currentSession: null, inComingNumber: null, isRegistered: false, isConnected: false, // 是否接通 isInOut: true, // true 被呼, false 呼出 } }, onLoad() { this.handleRegister() }, beforeDestroy() { this.handleUnRegister() }, methods: { // 登录 handleRegister() { this.configuration = { uri: `sip:${this.user.number}@${this.baseUrl}:${this.port}`, displayName: this.user.name, password: this.user.password, transportOptions: { wsServers: [this.server], traceSip: true }, } ua = new sip.UA(this.configuration) ua.on('registered', (resp) => { this.showTishi('【' + this.user.number + '】语音登录成功') this.isRegistered = true }) ua.on('registrationFailed', (resp) => { if (resp.statusCode == 503) { this.showTishi('【' + this.user.number + '】服务不可用') } else { this.showTishi('【' + this.user.number + '】语音登录失败:' + resp.reasonPhrase) } this.isRegistered = false console.log(resp, '语音登录失败') }) ua.on('unregistered', (response, cause) => { this.showTishi('【' + this.user.number + '】取消语音登录成功') console.log(response, cause, '取消语音登录') }) ua.on('invite', (session) => { this.currentSession = session this.inComingNumber = session.remoteIdentity.uri.user this.isInOut = true this.$refs.popup.open() this.$nextTick(() => { this.$refs.bell.$refs.audio.play() this.$refs.bell.$refs.audio.currentTime = 0 }) this.sessionEvent(session) }) ua.on('message', (message)=>{ console.log(message,'ua-message') }) ua.start() }, // 退出登录 handleUnRegister() { if (ua) { ua.unregister() this.isRegistered = false } }, // session 处理 sessionEvent(session) { session.on('rejected', () => { console.log('inComing挂断') }) session.on('cancel', () => { console.log('outgoing挂断') }) session.on('terminated', (message, cause) => { console.log(message, cause, 'session-terminated') if (cause == 'Rejected') { if (message.reasonPhrase == 'Decline') { this.showTishi('您的拨号暂时无人接听!') } else { this.showTishi('对方拒接了!') } } else if (cause == 'BYE') { this.showTishi('对方已挂机!') } else if (cause == 'Canceled') { this.showTishi('对方已取消!') } this.$refs.bell.$refs.audio.pause() this.$refs.popup.close() }) session.on('accepted', (resp) => { this.$refs.bell.$refs.audio.pause() this.isConnected = true console.log(resp, '接受了') }) session.on('trackAdded', () => { const pc = session.sessionDescriptionHandler.peerConnection const remoteStream = new MediaStream() pc.getReceivers().forEach((receiver) => { if (receiver.track) { remoteStream.addTrack(receiver.track) this.$refs.remoteAudio.$refs.audio.srcObject = remoteStream this.$refs.remoteAudio.$refs.audio.play() } }) }) session.on('bye', (resp, cause) => { console.log(resp, cause, 'session-bye') if ((resp && resp.method == 'BYE') || cause == 'BYE') { this.isConnected = false this.$refs.popup.close() this.$refs.remoteAudio.$refs.audio.pause() this.showTishi('【' + this.user.number + '】通话已结束!') } }) session.on('failed', () => { console.log('session-failed') }) }, // 接听 handleAccept() { const option = { sessionDescriptionHandlerOptions: { constraints: { audio: true, video: false } } } this.currentSession.accept(option) }, // 拒接 handleTerminate() { this.currentSession.terminate() this.$refs.popup.close() this.isConnected = false }, // 挂断 handleCacel() { if (this.isInOut) { this.currentSession.reject() } else { this.currentSession.terminate() } this.$refs.popup.close() this.isConnected = false }, // 拨打 handleCall(number) { number = this.outGoingNumber if (this.isRegistered) { this.isInOut = false const sipUrl = `sip:${number}@${this.baseUrl}:${this.port}` this.currentSession = ua.invite(sipUrl, { sessionDescriptionHandlerOptions: { constraints: { audio: true, video: false } } }) this.$refs.popup.open() this.sessionEvent(this.currentSession) } else { this.showTishi('请先登录语音用户') } }, showTishi(title){ uni.showToast({ title: title, icon: 'none' }) }, } } .container { font-size: 30rpx; } .top-box { padding: 30rpx; display: flex; } .popup-box { background: #ffffff; width: 80vw; padding: 40rpx; border-radius: 20rpx; line-height: 80rpx; } .flex-box { display: flex; justify-content: space-around; .uni-tag { font-size: 30rpx; padding: 16rpx 28rpx; } } .fs-36{ font-size: 36rpx; font-weight: bold; } sip.js 高版本如 V0.21.2 用法(参数同上,只列出 methods 里的部分) import { UserAgentOptions, UserAgent, Registerer, Invitation, Inviter, Session, SessionState, InvitationAcceptOptions, InviterOptions, Messager, URI, RegistererState, } from '@/common/js/sip-0.21.2.min.js' let userAgent, registerer; const target = UserAgent.makeURI(`sip:${this.outGoingNumber}@${this.baseUrl}:${this.port}`); methods: { handleRegister() { const uri = UserAgent.makeURI(`sip:${this.user.number}@${this.baseUrl}:${this.port}`) if(!uri){ console.log('创建URI失败') } const transportOptions = { server: this.server } const userAgentOptions = { authorizationUsername: this.user.number, authorizationPassword: this.user.password, displayName: this.user.name, transportOptions, uri, delegate: { onInvite } } userAgent = new UserAgent(userAgentOptions) registerer = new Registerer(userAgent) userAgent.start().then(()=>{ registerer.register({ requestDelegate: { onReject: (resp)=>{ console.log(resp, 'onReject') }, onAccept: (resp)=>{ console.log(resp, 'onAccept') }, onProgress: (resp) => { console.log(resp, 'onProgress') }, onRedirect: (resp) => { console.log(resp, 'onRedirect') }, onTrying: (resp) => { console.log(resp, 'onTrying') }, } }).catch((e: Error) => { console.log(e, "Register failed") }) }).catch((err:any)=>{ console.log(err,'start-err') }) registerer.stateChange.addListener((newState)=>{ switch (newState) { case RegistererState.Unregistered: console.log('退出登录') break; case RegistererState.Registered : break; case RegistererState.Initial : console.log('语音用户登录Initial') break; case RegistererState.Terminated : console.log('语音用户登录Terminated') break; } }) function onInvite(invitation){ this.currentSession = invitation this.inComingNumber = invitation.remoteIdentity.uri.user this.$refs.popup.open() invitation.stateChange.addListener((state)=>{ this.sessionStateEvent(state, invitation) }) } } handleAccept(){ let constrainsDefault = { audio: true, video: false, } const options = { sessionDescriptionHandlerOptions: { constraints: constrainsDefault } } this.currentSession.accept(options) this.isConnected = true } handleReject(){ this.currentSession.reject() this.$refs.popup.close() } sessionStateEvent(state, session){ switch(state){ case SessionState.Initial: console.log('SessionState.Initial') case SessionState.Establishing: console.log('SessionState.Establishing') break; case SessionState.Established: console.log('SessionState.Established') this.isConnected = true this.setupRemoteMedia(session) break; case SessionState.Terminating: console.log('SessionState.Terminating') break; case SessionState.Terminated: console.log('SessionState.Terminated') this.clearupMedia(session) break; } } setupRemoteMedia(session){ const remoteStream = new MediaStream() // console.log(session.sessionDescriptionHandler, 'sessionDescriptionHandler') session.sessionDescriptionHandler.peerConnection.getReceiver().forEach((receiver)=>{ if(receiver.track){ remoteStream.addTrack(receiver.track) } }) this.$refs.remoteAudio.$refs.audio.srcObject = remoteStream this.$refs.remoteAudio.$refs.audio.play() } clearupMedia(session){ if(this.isCallIn){ if(session.isCanceled){ console.log('对方已挂机') } }else{ if(!session.isCanceled){ // console.log('对方已挂机') } } this.$refs.remoteAudio.$refs.audio.srcObject = null this.$refs.remoteAudio.$refs.audio.pause() this.endCall() } handleCall(){ this.isCallIn = false this.$refs.popup.open() const inviterOptions = { sessionDescriptionHandlerOptions: { constraints: { audio: true, video: false } } } if(target){ const inviter = new Inviter(userAgent, target, inviterOptions) this.currentSession = inviter inviter.invite({ requestDelegate: { onReject: (resp)=>{ console.log(resp, 'inviter-onReject') if(resp.statusCode == 500){ console.log('对方不在线') }else{ console.log('对方拒接了') } }, onAccept: (resp)=>{ console.log(resp, 'inviter-onAccept') }, onProgress: (resp) => { console.log(resp, 'inviter-onProgress') }, onRedirect: (resp) => { console.log(resp, 'inviter-onRedirect') }, onTrying: (resp) => { console.log(resp, 'inviter-onTrying') }, } }) inviter.stateChange.addListener((state)=>{ this.sessionStateEvent(state, inviter) }) } } handleURegister(){ if(userAgent){ this.isRegistered = false registerer.unregister() } } sendMessage(){ if(target && this.isRegistered){ const messager = new Messager(userAgent, target, '你好') messager.message() } } endCall(){ this.isConnected = false this.$refs.popup.close() switch(this.currentSession.state){ case SessionState.Initial: case SessionState.Establishing: if(this.currentSession instanceof Inviter){ // incoming session this.currentSession.cancel() }else{ // outgoing session this.currentSession.reject() } break; case SessionState.Established: this.currentSession.bye() break; case SessionState.Terminating: break; case SessionState.Terminated: console.log(SessionState,'Terminated-endCall') break; } } } APP模式下检测麦克风权限,permission.js可从插件市场直接下载,使用页面import引入。 getPermission(){ let env = uni.getSystemInfoSync().platform if (env === 'android') {permission.requestAndroidPermission('android.permission.RECORD_AUDIO').then((e) => { if (e === -1) { uni.showToast({ title: '您已经拒绝录音权限,请在应用设置中手动打开', icon: 'none', }) } else if (e === 0) { uni.showToast({ title: '您拒绝了录音授权', icon: 'none', }) } else if (e === 1) { console.log('已授权') } else { uni.showToast({ title: '授权返回值错误', icon: 'none', }) } }).catch((err) => { uni.showToast({ title: '拉起录音授权失败', icon: 'none', }) }) } else if (env === 'ios') { if (permission.judgeIosPermission("record")){ console.log('已授权') }else{ uni.showToast({ title: '您拒绝了录音授权,请在应用设置中手动打开', icon: 'none', }) } } } ...

    2024-04-05 技术教程 100
  • 【MySQL】数据库排查慢查询、死锁进程排查、预防以及解决方法

    MySQL数据库排查慢查询、死锁进程及解决方法 一、排查慢查询 1.1检查慢查询日志是否开启 1.1.1使用命令检查是否开启慢查询日志: SHOW VARIABLES LIKE 'slow_query_log';   如果是 Value 为 off 则并未开启 1.1.2开启并且查看慢查询日志: MySQL提供了慢查询日志功能,可以记录所有执行时间超过long_query_time秒的查询语句,通过分析这些慢查询可以找到数据库性能瓶颈。 启用慢查询日志,在my.cnf中添加配置: slow_query_log=1 long_query_time=1 #修改记录慢查询的阈值,默认为10s log-slow-queries=/路径/slowquery.log #slowquery.log日志文件的路径 使用mysqldumpslow分析慢查询日志,找出真正的慢查询: mysqldumpslow -s t /路径/slowquery.log 根据慢查询结果分析数据库索引使用情况、SQL调优空间等。 1.2 使用EXPLAIN来分析SQL语句的执行计划 主要步骤如下: 选择需要分析的SQL语句。 在SQL语句前添加EXPLAIN关键字,例如: EXPLAIN SELECT * FROM table WHERE condition; 执行查询。EXPLAIN不会真正执行语句,只是展示其执行计划。 查看结果集。EXPLAIN查询结果将是一张表格,包含以下重要列:   id: SELECT的步骤序列,从上到下执行。id值从上到下为访问顺序,上层依赖下层。 select_type: SELECT类型,如SIMPLE或PRIMARY。 简单为PRIMARY或SIMPLE查询较好,JOIN等复杂嵌套查询效率较低。 table:读取的数据源。 type:连接类型或访问类型,如ALL或RANGE。ALL类型效率最低,需要全表扫描;使用索引类型为CONST、eq_ref、ref、range效率较高。 possible_keys:可能使用的索引。若为空,说明SQL没有利用索引,需添加索引。 key:实际使用的索引。实际使用的索引名。若使用不到索引,表明优化空间大。 key_len:使用的索引最大长度。 索引长度短效率高,避免过长索引。 rows:预估需要读取的行数。数值越小性能越好,多表JOIN联合查询数值过高需优化提升性能。 filtered:过滤条件生效率。比率越高过滤效率越好,能有效减少数据读取量。 根据结果分析SQL访问数据的方式及性能瓶颈点,如是否利用索引、表连接方式等。从而优化SQL语句。多次查询对比验证是否效果明显。 二、检测死锁 使用show processlist命令查看当前请求,锁等待(锁类型)大于0的为死锁进程   找到对应的阻塞操作的进程id 使用kill强制结束死锁进程 KILL ; 分析死锁原因,修改sql或导致死锁的业务代码 三、优化建议 添加合理的索引提高查询效率 使用explain分析查询执行计划,查询是否走索引 控制事务块大小,减小锁定范围 可以将一大批次的操作拆分为多个较小的事务,从而减小每个事务持有锁的范围,降低其他事务被锁定的可能性。 调整事务 isolation level,减少锁冲突 可以将事务级别调整为较宽松的读已提交(READ COMMITED)或REPEATABLE READ等级。这些级别对锁的要求不如串行化等级严格,可以减少冲突。 优化sql,减少回表次数等 如减少排序、执行多个小查询代替一个大查询、利用索引更好地检索数据等,可以降低数据库磁盘的IO操作,同时锁定的时间也会缩短。 增加硬件资源(CPU、内存等)对冲突几率更低 总体上,通过控制事务粒度、隔离级别和SQL优化,可以有效降低数据库锁冲突的可能性,提高并发处理能力。这些措施都值得尝试,看是否可以带来可观的优化空间 ...

    2024-04-05 技术教程 99
  • 前端开发:Vue3提示警告Failed to resolve component:XXX If this is a native custom element… 的解决方法

    前言 在前端开发中使用Vue的开发者都知道,Vue目前已经以Vue3.0为基础版本了,也就是说Vue3.0已经成为主流版本了。还在只用Vue2.0开发没有使用Vue3.0的开发者要注意了,要抓紧时间熟悉和了解Vue3以上的相关语法和知识点了,迫在眉急。本篇博文来分享一下,关于在使用Vue3的时候遇到的一个提示警告错误,虽然不复杂,但是这是一个比较常见且共性的问题,分享出来记录一下,方便以后查阅使用。 警告提示 虽然现在Vue3为基础版本,但是对于熟悉使用Vue2的开发者来说,有些写法还没有调整过来,比如本文要分享的警告提示在Vue2不会有警告,但是在Vue3就会有警告,下面分享一下笔者在开发过程中遇到的相似问题提示的汇总,虽然有三个不同的组件警告提示,其实是属于同一类的问题,具体警告信息合集如下所示:   1、 [Vue warn]: Failed to resolve component: van-loading If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.   at  ...

    2024-04-05 技术教程 103
  • Excel如何将FILTER函数筛选结果多余的错误值去掉?

    Excel如何将FILTER函数筛选结果多余的错误值去掉? 很多同学常用WPS处理表格数据,再用WPS表格提取数据的时候有一个很好用的函数Filter函数,它可以自动提取符合条件的数据,操作起来方便快捷。 但是如果我们所选择的区域太大,可能筛选结果会出现错误值,那么如何将FILTER函数筛选结果多余的错误值去掉? 推荐方法如下: =IFERROR(INDEX(FILTER(表!$A:$E,表!$E:$E="Kirin博客"),ROW(A1),COLUMN(A1)),"") 先用index函数和row、column函数把处理结果转换一下,然后加iferror函数将错误值隐藏。 大家可以尝试一下,有问题欢迎提问。有更好的方法可以留言补充,谢谢!   ...

    2024-04-04 技术教程 99
  • Excel中利用Filter函数进行多条件筛选数据的2种方法

    Excel中如何利用Filter函数进行多条件筛选数据? 很多同学常用WPS处理表格数据,再用WPS表格提取数据的时候有一个很好用的函数Filter函数,它可以自动提取符合条件的数据,操作起来方便快捷。但是在Excel的Filter函数介绍中只介绍了单条件筛选数据的方法,那我们在处理数据过程中,如果遇到想要通过多条件去筛选数据,那么改如何操作? 下面就给大家讲一下Excel中利用Filter函数进行多条件筛选数据的2种方法: 1、FILTER函数,多个条件筛选(且条件) 通用公式: =FILTER(结果值,(查找列1=查找值1)*(查找列2=查找值2)) 如果还有3个条件,就再次的相乘即可! 2、FILTER函数,多个条件筛选(或条件)   通用公式: =FILTER(结果值,(查找列1=查找值1)+(查找列2=查找值2)) 如果还有3个条件,就再次的相加即可! 大家可以尝试一下,有问题欢迎提问。有更好的方法可以留言补充,谢谢!...

    2024-04-04 技术教程 85
  • CloudDrive官网/CloudDrive下载地址 云盘本地挂载软件

    CloudDrive是什么?CloudDrive是一个强大的多云盘管理工具,为用户提供包含云盘本地挂载的一站式的多云盘解决方案。 1、CloudDrive是一个全方位的云存储管理平台,旨在无缝集成多个云存储服务,将它们统一整合到一个界面中。 2、使用CloudDrive,您可以轻松管理和访问所有云存储服务,无需在不同的应用程序和界面之间来回切换。 3、CloudDrive最引人注目的特点是其能够将多个云存储服务挂载为本地磁盘,直接访问文件而无需预先下载。想象一下,您可以将云存储服务当作本地文件系统的一部分来使用,带来的便利性不言而喻。 4、但这还不是全部 - CloudDrive还提供了高级功能,如快速的云端文件传输、实时的云文件通知和应用级别的权限控制。无论您是高级用户还是普通云存储用户,CloudDrive都能以卓越的效率和易用性让您充分发挥云存储资源的潜力。 CloudDrive的主要特性 1、云盘本地挂载 将多个云盘挂载到本地驱动器,就像它们是计算机文件系统的一部分。告别从云端下载文件的麻烦。 2、统一的多云盘管理 在一个地方管理所有云盘账户。轻松组织文件,同步文件夹,并跨不同云服务进行高级搜索。目前支持阿里云盘、百度网盘、115网盘、天翼云盘、PikPak、OneDrive、Google Drive、WebDAV和本地文件夹。 3、一次登录,到处使用 在一个地方登录所有的云盘账户,并在任何设备上使用,无需每次都要登录不同的账户。 云盘账户同步机制是安全的。 4、WebDAV服务 CloudDrive作为一个WebDAV服务器,可以向其他WebDAV客户端提供WebDAV服务。 5、跨云盘文件快速复制 在云盘之间快速直接地传输文件,无需中间下载。通过 CloudDrive 的优化文件传输功能节省时间和带宽。 6、文件变更通知 接收关于云文件变更的实时通知。与文件系统监视器应用无缝集成,实现无缝协作。 7、应用级权限控制 精细控制文件的访问权限。在程序级别定义和管理访问权限,确保安全共享和协作。 8、云盘服务商友好 使用CloudDrive,不再做网盘吸血鬼。 我们保证用户体验流畅,同时最大程度地减少网盘运营商的资源占用。 9、多云盘备份 将任意本地磁盘或网盘同时备份到多个网盘或者本地磁盘。 自动检测文件变化,自动增量备份。 覆盖或删除文件可保留无限多个历史版本备份。 多云备份,数据无忧。 10、在任何设备上运行 电脑:Windows, Linux, macOS NAS:Synology, QNAP... 电视手机:Android, LibreElec, CoreElec 路由器:OpenWRT路由器 使用CloudDrive 1、电脑 下载并安装CloudDrive的最新版本,您可以在计算机上拥有统一的云存储管理中心,并且将你的云盘扩展成你电脑的本地硬盘。 CloudDrive目前支持Windows x64、Linux、macOS,支持x86_64、arm64、armv7等架构的电脑。 2、手机 CloudDrive可以在Android手机上运行,将您的云盘扩展到本地存储。使用CloudDrive,您可以将多个云盘整合到一个统一的存储空间中,用户安装的所有app都直接访问本地挂载的云盘文件。 CloudDrive支持Android 7.0及以上版本,需要root权限才能在安卓系统上使用本地挂载功能。 CloudDrive官网/CloudDrive下载地址:http://www.clouddrive2.com/...

    2024-04-04 实用工具 64
  • 今天起,ChatGPT无需注册就能用了!

    OpenAI宣布:从今天起,ChatGPT打开即用,无需再注册帐号和登录了!不过,免登录无法享受一些高级功能,比如分享聊天记录、自定义指令等等。 访问地址是:https://openai.com/ (目前国内用不了) 松松刚测试了一下:使用ChatGPT还是需要注册登录的,但是免去了手机号验证码的环节。而且OpenAI实际开放的是chatGPT3.5。但是资料滞后严重,信息只更新到了2022年1月,这已经过去2年多了。而且,我个人感觉跟前段时间相比,性能大幅度降低,看来免费的AI工具会变得越来越差。 目前ChatGPT已经有185个国家和地区超1亿用户在使用ChatGPT了,但自2023年5月ChatGPT全球总访问量达到18亿次的峰值以来,这一受欢迎服务的流量增长开始放缓。 这也表明生成式AI竞争激烈。Chatgpt宣布这一举措的背后,也表明比如今年3月发布的Claude 3,在多项评测中的能力都超过了Chatgpt,成为当前最强大模型。 其实这几年,国内的AI大模型已经很强大了,只是很多人依然觉得国外的东西就是好。他们依然不怕麻烦的花钱买月租,去使用ChatGPT。最后在说下:ChatGPT 3.5信息有点旧了,最好配合国内的通义千问、文心一言、智谱清言一起用更有优势。...

    2024-04-04 值得一看 51
  • 某博不好意思晒在好友圈的照片

    点击围观  ...

    2024-04-04 福利分享 94
  • 某博小反差[照相机] ​​​

    点击围观  ...

    2024-04-04 福利分享 97
  • 4月4日,星期四简报,60秒知晓天下事

    2024年4月4日,星期四,农历二月廿六,每天60秒知天下 1、台湾花莲县海域发生7.3级地震:已致9死934伤,48栋民宅受损,余震逾200起,气象部门称:未来三天可能还有7级地震; 2、江西风雹灾害:已致7人死亡,9.3万人受灾,直接经济损失1.5亿元;江西一回乡祭祖车辆被水冲,当地通报:3人溺亡,一干部救人时失联 3、媒体:六大行存款一年多了14万亿,相当于每人多存1万;四大行定期存款占比均超50%,为近年来首次; 4、网传一男孩称家里多人在农发行任职,以后要"继承家产"当行长,银行回应:确认无此情况,正在排查分支机构; 5、广州出台幼儿园收费新规:公办幼儿园保教费每月823元;《广州市城中村改造条例》5月1日起施行:建立城中村改造协调工作机制; 6、央行等:自用传统动力汽车、自用新能源车可按所购车价格全额发放贷款; 7、比亚迪全年净利润超300亿元,近乎上汽、广汽、吉利、长城之和; 8、国际金价再创历史新高,国内金饰价格全线突破每克700元关口,黄金现货价较年初涨11.8%; 9、福布斯发布2024全球亿万富豪榜:LV老板蝉联世界首富,马斯克第二,中国富豪数量连降3年,农夫山泉钟睒睒首富; 10、海南西南海域一外籍货船与中方渔船发生碰撞,渔船上8人落水失联,搜救正在进行中; 11、美国财长耶伦4月4日至9日访华,外交部回应:希望美方同中方相向而行,妥处分歧; 12、美国要求韩国加强对向中国出口半导体技术的限制,外交部:望韩方做出正确判断; 13、欧媒:芬兰一所小学发生校园枪击案,12岁学生开枪致同学1死2伤,芬兰总理称:深感震惊; 14、外媒:7名国际慈善组织工作人员遭以军袭击死亡,多国谴责并敦促以色列全面调查; 15、俄媒:俄罗斯将就恐袭案向国际法庭起诉乌克兰;芬兰与乌克兰签署10年期安全合作协议; 【每日金句】生活是给自己看的,你有多大成色,世界才会给你多大脸色。    ...

    2024-04-04 值得一看 49
  • 4月1日起,未备案App小程序将下架

    从2024年4月1日起,工信部要求所有的APP、小程序都要备案,否则下架、关停、限制更新。这是去年8月份出的新规,没想到十个月这么快就过去了。 现在广东省已备案APP、小程序全国占比分别为22.15%、16.86%。一个广东占比全国近五分之一的份额,还是很厉害的! 还没有备案的同学抓紧去备案了,APP、小程序备案其实都很简单,和域名备案一样,填写相关资料就行了,每一个开发后台都有相关指引,只是app相对比域名又要麻烦一些,而且需要拿到开发这个app 时的id和密钥,必须证明这个软件是自己开发的,才能提交备案! 另外在开发 app 时,大家一定要向开发公司问清楚,是否同步提交 app 备案,否则自己拿到软件后也无法提交备案资料的。 当然,你一定会问说:我APP不备案,你能把我怎么样? 我的回答的是:你APP不备案,当然不会把你怎么样。但你休想用国内的服务器、也不可能上架国内的应用商店。国内的各种服务例如CDN、云存储、数据库、支付结算等等你都有没资格用。创业的门槛稍微加大。 当然上面的假设都是从APP创业者角度思考的,但对国家和普通民众来说绝对是好事。 APP备案相当于加强对App的监管,保障用户的隐私安全,很大程度上防止了电信诈骗。 APP备案终于来了,这绝对是一个移动互联网创业分水岭,一个划时代的政策!以后小程序、APP创业的门槛也会越来越高了。 扩展阅读:去年8月,工信部发布通知,APP和小程序要按照相关规定履行备案手续。当时预留了10个月作为过渡期。也就是说,从4月初到6月底,进入最后2个月监督检查期,一旦发现没有完成备案,那就只能说bye,bye了。 ...

    2024-04-03 值得一看 55
  • 油管YouTube最全教程:从注册到收款

    第一步、注册账号 对于纯新手而言,注册账号包括2个流程:一个是注册谷歌账号,一个是创建YouTube频道。 1.注册Gmail邮箱 几年前只要能科学上网,注册Gmail是没什么难度的,但近几年注册很容易失败,最常见的问题就是中国大陆的手机号无法接收验证码。 常见的的破解方法有:清理浏览器cookie、更换浏览器语言、使用第三方平台接码、更换电脑ip或浏览器等等。但根据个人实际测试,很多方法都已经行不通,也可能是自己的电脑ip注册太多账号的缘故。比较推荐的方法是用手机注册,而不是电脑注册。实在不想花时间折腾,也可以在某宝购买,价格也不高。 第一步 打开https://www.**屏蔽敏感词**/ 修改显示语言 登陆界面 注册好gmail之后,接下来就可以创建YouTube频道了。 2.创建YouTube频道 一般情况注册好gmail后会自带一个频道,但不推荐直接使用这个频道,因为该频道的资料是跟谷歌信息关联的,不方便后续的资料更改。 创建YouTube频道的方法: 点击头像,在头像下方有“创建频道”字样(初次创建才有),点击即可开始创建频道; . 频道创建完成只是入坑油管的第一步,接下来后台设置和频道包装非常关键。 频道设置和包装做好之后就可以发布视频了。在这里可以直接上传视频 点击上传视频 第二步、注册AdSense YouTube频道必须达到获利门槛(4000小时+1000订阅)之后才可以注册AdSense。如下图,频道达到获利门槛后,后台显示三步流程:查看合作伙伴计划条款、注册AdSense、接受审核,点击开始就可以开始注册AdSense。 注册AdSense相比创建频道而言,更为复杂,也更容易出错。 地区选择 香港 然后保存 注意这里的地区是指youtube频道地区,改为香港才能有获利功能。但是我们的adsense账户后台仍然是中国的,不影响正常收款结算 1、填写网址 注册 AdSense时要求提供网站的网址,YouTube频道就直接填网址(例如 **屏蔽敏感词**/channel/weitube123); 填写邮件地址,一般用创建频道的gmail关联就行。 2、填写所在国家或地区 填写所在的国家或地区时,一定不能乱填。如果填写中国,PIN码也会发到中国大陆且只能绑定中国大陆银行;如果是中国香港或者海外国家,PIN码则寄到对应地区或国家。国家或地区一旦确认,将无法更改! 3、创建付款资料 这部分主要填写个人地址等信息,这部分可以填写代收人信息,不一定填写自己的资料。账户类型有「个人」或「企业」,二者唯一的差别仅在「个人帐户」是用帐户持有人的收款人姓名收款,「企业帐户」则以公司名义收款。 AdSense帐户金额达验证门槛时(10美金),谷歌会寄送个人识别码(PIN码),因此收件地址一定要填写可以收到信件的,建议填写中国沿海大城市,交通和信息比较便利的地址(可委托朋友代收)。 新版AdSense会要求填写税务信息,将来的注册流程可能会有所变化。 adsense注册完成后,系统会自动进入获利审核状态,如果频道获利审核通过,YouTube的收益会每个月放进AdSense账号。 备注:官方不允许一个人拥有2个AdSense,因此建议一个浏览器不要同时存在2个AdSense,否则容易引起不必要的麻烦。 AdSense如何填写银行付款信息? 目前国内最常用的方法是招商银行的电汇,在付款设置里面增加电汇,具体填写方法如下图: 温馨提示: 1、接收不同的币种,需提供相应的中间行信息给汇款人作参考。 2、部分网点没有取得“金融标识码”,则该网点开户的一卡通无法接收境外汇入汇款,柜台可能会做退汇处理,详情可联系开户行确认。 3、有任何不明白的问题,打一卡通开户行的网点电话咨询清楚。 招行一卡通接收谷歌广告联盟境外汇款,英文姓名怎么填写? 收款人的英文姓名,按照银行卡证件姓名的汉语拼音拼写,全部大写,姓在前,名在后。比如:两个字的姓名,张三:ZHANG SAN;三个字的姓名,张小三:ZHANG XIAOSAN。 如果不放心,可以在招行网上银行、手机银行APP内查看,里面有自己姓名的英文写法。可直接在招行官网查询 汇款线路指南 -- 招商银行官网,或者下载官方路劲指南。填写完成后,YouTube产生的收益会每月底发到AdSense,如果收益超过100美金,则转入你所绑定的招行卡账户里。 收益转入银行卡之后怎么结汇取出来? 其实很简单,只要安装招行app找到相应的入口,并在招行工作时间即可结汇成人民币。 Google AdSense付款日期是哪一天? 谷歌广告联盟的付款日期是每月21日-26日,会在付款后的5个工作日内到账,通常在第二天也就是22日就会到招商银行账户。通过谷歌广告赚钱,对于大部分朋友来说,从申请到收款,障碍太多了,希望大家都能坚持到最后。 本文还没来及发布,来了个小惊喜。12日上午11点多在Google AdSense中添加电汇支付方式,当天下午3点,收到了付款邮件通知。 国内接收境外汇款,几天到账? 通常在支付日算起的5个工作日内到账,不过一般情况下,会在1-2天内到账,会因收款银行不同而有区别。 作者:峰少 公众号:峰少微课...

    2024-04-03 技术教程 71
  • 宝塔Linux面板一键迁移网站-Windows面板快速迁移网站

    宝塔Linux/Windows面板如何一键迁移网站?相信做网站的站长朋友都会面临着网站搬家的时候,可能原因是网站的服务器不稳定,或者网站发展起来后需要更好的服务器,所以就需要进行网站的搬家了。如果两台服务器都安装有宝塔面板的话,可以在旧服务器的面板上安装“宝塔一键迁移 API 版本”即可实现快速迁移网站数据到新服务器上(只需要在旧服务器面板上安装该插件即可),本文档介绍如何使用宝塔 Linux/Windows 面板快速迁移网站到其他云服务器中。 迁移准备 1、迁出云服务器:指需要进行数据迁移的其他的云服务器,在服务器中安装宝塔 Linux/Windows 面板软件,需要升级至最新版本,本示例以宝塔Linux面板为例。 2、迁入云服务器:指用于接收数据的云服务器,在服务器安装宝塔 Linux/Windows 面板软件,需要升级至最新版本,本示例以宝塔Linux面板为例。 3、确保迁出服务器和迁入服务器之间网络可达,可通过公网互通,或则私网互通。 迁入服务器操作 1、登录迁入云服务器的宝塔 Linux 面板。 2、选择左侧菜单栏中的【面板设置】,并在设置页面中开启 API 接口。如下图所示: 3、在弹出的“配置面板API” 窗口中,记录好接口密钥,将需迁出服务器的公网 IP /内网IP地址加入 IP 白名单中,单击【保存】。如下图所示: 迁出服务器操作 1、登录迁出服务器的宝塔 Linux 面板,选择左侧菜单栏中的【软件商店】。 2、在“软件商店”页面中,找到“宝塔一键迁移API版本”插件,并单击右侧的【安装】。如下图所示:注意:仅需在迁出服务器中安装一键迁移插件即可。 3、安装成功后,单击插件所在行右侧的【设置】。 4、在弹出的“宝塔一键迁移API版本”窗口中,参考以下信息填写接受数据的迁入服务器信息。如下图所示: 面板地址:填写迁入服务器的面板地址。例如:http://公网 IP:8888。 API密钥:填写在迁入服务器操作的 中已获取的 API 接口密钥。 5、选择【下一步】,在弹出提示窗口中单击【已添加,继续操作】进入检测环境步骤。 6、在检测环境步骤中,宝塔面板将对远程接收数据的迁入服务器进行环境检测,查看是否已安装相关软件及运行环境。其中包含网站服务、MySQL 数据库、FTP、PHP、可用磁盘容量。 若检测失败,并提示远程迁入服务器中未安装某个软件(例如 PHP、MySQL 等)则需登录迁入服务器面板,前往【软件商店】安装对应版本软件,直至检测全部通过后,单击【下一步】。如下图所示: 7、在选择数据步骤中,按需选择需迁移的数据,并单击【一键迁移】。如下图所示: 8、等待数据迁移完成,若提示迁移失败,则建议您查看迁移日志,并参考提示信息处理对应问题。问题解决后,再重新执行迁移步骤。迁移成功如下图所示: 网站迁移完成后 1、修改网站的域名解析,降域名解析记录修改为新的服务器公网ip地址。 2、域名解析生效需要点时间,等待解析生效完成后,在浏览器访问域名,就可以访问迁移后的网站了。  ...

    2024-04-02 技术教程 52

联系我们

在线咨询:点击这里给我发消息

QQ交流群:KirinBlog

工作日:8:00-23:00,节假日休息

扫码关注