精华内容
下载资源
问答
  • 方舟生存进化网络错误信息怎么办

    千次阅读 2021-08-05 05:49:19
    1回答克鲁赛德战记网络错误4001怎么办?可能是因为设备系统版本过低,提示4001错误大部分原因是安卓版本太低,如果玩家的设备系统低于该系统,将会导致登录不了游戏。也可能是网络连接问题,玩家需要确认设备2021-05-...

    1

    回答

    克鲁赛德战记网络错误4001怎么办?

    可能是因为设备系统版本过低,提示4001错误大部分原因是安卓版本太低,如果玩家的设备系统低于该系统,将会导致登录不了游戏。也可能是网络连接问题,玩家需要确认设备

    2021-05-09

    1

    回答

    方舟生存进化怎么显示物品信息?

    在玩游戏的过程中,如果出现鼠标悬停在物品上,不显示物品信息的时候。可以直接点击图中的物品栏。或者按一下键盘G键,就可以调出悬停显示详细信息。

    2021-05-05

    1

    回答

    方舟生存进化信息素怎么用?

    信息素的使用方法很简单,信息素可以直接给雌性恐龙服用,服用后,恐龙头顶图标会显示一个瓶子状的图标,表示效果已经存在,这样就代表信息素服用成功。这就是信息素的使用方法。

    2021-05-06

    2

    回答

    方舟生存进化存档丢失怎么办??

    方法一:如果出现数据丢失,目前最有效的办法就是!寻找到新的方舟安装器,覆盖安装修复!这种覆盖安装包建议大家可以去论坛或者网盘上寻找,小伙伴们也可以去论坛多加交流

    2019-07-27

    2

    回答

    《方舟生存进化》黑屏了怎么办? ?

    黑屏可能有这几种原因:1.手机配置达不到以至于不能运行(入valkan不支持,这个没办法解决,只能更新系统或者换手机)2.游戏bug。目前还属于测试,可能会有种

    2019-07-06

    1

    回答

    方舟生存进化低温症怎么办?

    方舟生存进化中,如果遇到了低温症的情况,玩家首先要检查自己所处地区的温度,如果低于10度则有可能出现低温症。如果温度过低,玩家可以考虑转移到树林中,或是山脉地区。除此以外,玩家还可以使用火炬或是火堆来提升自己周围区域的气温。

    2021-04-26

    1

    回答

    方舟生存进化卡在初始页面怎么办?

    网络连接失败:检查一下自己的网络,如果不能正常联网,把网络重新连接好即可;||服务器正在维护:等待服务器维修结束即可;||安装包错误:安装包错误需要玩家卸载游戏后,去官网下载最新版游戏安装包重新安装游戏。

    2020-09-02

    1

    回答

    方舟生存进化信息素有什么用?

    信息素可以加快恐龙的繁殖过程,并且无视距离,在给母龙服用后就会自动进行繁殖,繁殖下来的蛋会是超级受精蛋。超级受精蛋的孵蛋速度会更快,并且不需要控制周围的环境温度,也不会腐坏。使用信息素生出来的蛋还会提升变异几率和双/多胞胎的几率,变异可以使恐龙的额外属性提升。

    2021-04-12

    1

    回答

    方舟生存进化焦土中暑了怎么办?

    首先找个阴凉处躲避一下,如树林里或者岩石、建筑的阴影处。||然后去有水的地方,如河流、湖泊等,跳到水里洗个澡。||接着随身携带帐篷,发现中暑后就多帐篷里去,等状态消除后再继续冒险。

    2020-04-06

    1

    回答

    方舟生存进化手游信息素怎么用?

    提前准备好一对公母恐龙,并将它们围起来。然后去琥珀商城购买信息素。购买完成后将公母恐龙的巡逻模式打开,并吹哨让它们进入到巡逻模式当中。将信息素放到母恐龙背包中强制给它使用。给母恐龙使用完信息素后,就可以等待后代恐龙的降生。如果是单机模式可以在快出生时存档,如果后代的属性不好的话还可以回档重刷。

    2021-05-05

    1

    回答

    方舟生存进化进不去怎么办?

    闪退导致进不去:玩家可以尝试清理缓存、退出后台应用、升级手机的安卓版本;||网络问题:检查一下自己的网络,如果不能正常联网,更换网络环境尝试即可,比如从移动网络切换为Wifi,或者从Wifi切换为移动网络;||服务器维护:等待服务器维护好即可;||安装包问题:缺失游戏运行必要文件,建议卸载重装。

    2020-09-02

    1

    回答

    方舟生存进化被水蛭吸住怎么办?

    在方舟中被水蛭寄生后,玩家可以站在篝火上,将水蛭烧死,也可以让别的玩家对准自己长按e,选择去除水蛭选项。恐龙被水蛭寄生的话,玩家对准恐龙长按e,选择去除水蛭即可。

    2021-04-13

    1

    回答

    方舟生存进化卡石头缝里怎么办?

    方舟生存进化卡石头缝里的话可以让队友骑着阿根廷巨鹰来将玩家抓出来,也可以尝试使用斧子这类的工具将石头砸开。玩家需要注意的是队友骑的必须是大型的飞行生物,小型的飞行生物(如无齿翼龙)无法抓取玩家。

    2021-04-14

    1

    回答

    方舟生存进化信息素镖怎么做?

    方舟生存进化手机版中,制作信息素镖需要解锁学习信息素镖配方,准备材料和铁匠台两个步骤。信息素镖配方会在玩家等级达到96级并学习麻醉镖后解锁,制作材料则需要准备金属锭2个、麻醉镖1个和生物毒素3份,准备完毕后把材料放到铁匠台上制作即可获得。

    2021-04-16

    1

    回答

    方舟生存进化卡在石头出不来怎么办?

    线上找朋友用鹰或者翼龙之类的弄出来叼起来活着杀了自己之后复活脱离。单机的直接用控制台命令自杀了,一直挥拳消耗体力和饥饿度,死了创新档。如果身上带了抓钩可以用抓钩逃出去。然后自己努力跳出去。

    2021-04-17

    1

    回答

    方舟生存进化不支持Vulkan怎么办??

    VulkanSupport是一个跨平台的2D和3D绘图应用程序接口,主要是用来支持方舟的高画质需求功能软件。而官方的配置要求为:运行内存3G以上,安卓7.0版本

    2019-07-27

    1

    回答

    方舟生存进化嘎查不开心怎么办??

    现在说下大家最关心的嘎查心情的问题。1.嘎查的心情。心情不好不产水晶,2.心情一般产出是水晶品质不高给的材料也不多;3.兴奋状态产出高品质水晶和材料双倍。

    2019-07-27

    1

    回答

    方舟信息素怎么用?

    在方舟手游中,信息素的作用是可以让玩家更好的培养后代恐龙,不仅能缩短父母恐龙的生育时间,还能增加后代恐龙的变异几率,更有概率一胞多胎。不过信息素只能对母恐龙使用。

    2020-08-11

    1

    回答

    荒野乱斗老是网络不好怎么办?

    更换网络环境:如果玩家用的是WIFI网络,WIFI网络的带宽是共享的,使用人越多人均网速就越慢,所以建议玩家更换网络环境再试;尽可能地靠近路由器:根据网端粘连特性可能是网络连接距离路由器太远造成的网络不好;

    2020-07-06

    1

    回答

    和平精英总是显示联网错误怎么办?

    可能是网络异常原因,这时玩家重启下路由器或者切换移动网络即可解决;也可能是服务器波动原因,这时玩家退出重新登录或者等待官方维护后重新登录即可解决。

    2020-08-21

    1

    回答

    原神生日设置错误了怎么办?

    首先需要进入游戏,然后在主界面的左上方点击个人头像,点击头像之后就是个人信息界面以及菜单栏了,在个人信息界面玩家就可以看到自己的生日,点击生日之后就可以调整自己的生日日期了。不过生日只能修改一次,所以一定要确认之后再修改。

    2021-06-16

    1

    回答

    和平精英连不上网络怎么办?

    可能是网络异常原因,这时玩家重启下路由器或者切换移动网络即可解决;也可能是服务器波动原因,这时玩家退出重新登录或者等待官方维护后重新登录即可解决。

    2020-08-20

    1

    回答

    电磁风暴持续出现网络连接错误?

    我们用的电子设备,就是用电磁原理工作的啊电磁风暴,甚至可以摧毁电子设备,不能工作算是影响小了。。。。。。。。

    2019-08-12

    1

    回答

    公主连结网络连接不上怎么办?

    玩家可以通过关闭暂时不用的程序或者使用硬件配置较高的手机尝试。也可以卸载原有客户端,下载最新的客户端重新安装。或者直接切换不同的网络尝试登录。

    2021-03-17

    1

    回答

    方舟生存进化怎么酿酒?

    啤酒是方舟生存进化中驯服砂犷兽的必需物品,只能通过酒桶中发酵制作获得。

    2020-04-06

    1

    回答

    方舟生存进化怎么烤肉?

    方舟生存进化制作烤肉需要用到篝火,篝火在印痕技能解锁,制作好篝火之后,将篝火放置于地面,对准篝火双击物品栏里的生肉和木头或茅草(燃料),将他们放入右边篝火栏中,然后点击点火就可以开始烤肉了。

    2020-04-06

    1

    回答

    方舟生存进化怎么存档?

    方舟生存进化游戏无需手动存档,系统自动15分钟保存一次,如果掉线,读档就从上次存档开始,也有可能是存档的瞬间掉线了。只要不是强制关闭的,自然退出会自动存档,什么都不会丢失的。

    2020-04-06

    1

    回答

    方舟生存进化怎么传送?

    游戏中传送方法首先点开传送器,传送器有三种选项,分别是方舟数据、生物和贡品。选择方舟数据,拖动要传送的物品到传送器即可,不同物品的传送时间不同,有些要耐心等待。

    2020-04-07

    1

    回答

    方舟生存进化怎么联机?

    1、在C盘创建一个名为Ark的文件夹2、下载我打包的工具找到1号文件夹把里面的两个文件放到Ark文件夹下并且运行update_ark。bat等待下载完成,成功后

    2019-07-06

    1

    回答

    方舟生存进化怎么联机?

    1、在C盘创建一个名为Ark的文件夹2、下载我打包的工具找到1号文件夹把里面的两个文件放到Ark文件夹下并且运行update_ark。bat等待下载完成,成功后

    2019-07-15

    展开全文
  • 总要有人踩刹车

    千次阅读 2021-03-18 17:15:39
    翻旧文发现曾经挖了一个坑,看不见的竞争 - 什么是风控。本来说要展开写写,结果都一年半年了,也没展开。今天也展不开,但是仍然希望读者更好的了解风控这份职业的价值,以及发展空间。企业发展就像...

    翻旧文发现曾经挖了一个坑,看不见的竞争 - 什么是风控

    本来说要展开写写,结果都一年半年了,也没展开。

    今天也展不开,但是仍然希望读者更好的了解风控这份职业的价值,以及发展空间。

    企业发展就像是一场越野拉力赛,踩油门固然可以获得速度,但是在面对各种风险场合,总要有人踩刹车,否则,高速行驶的车就会装上障碍,或者栽入泥塘。企业发展,也是同理。

    1、警惕增长背后的危机

    越是业绩蒸蒸日上的时候,越要警惕可能的风险,我看产品数据有个习惯,数据指标增长过快的时候,我第一反应不是兴奋,而是紧张。增长是不是健康,有没有可能是刷量或羊毛党?

    很多创业公司一看到数据飙升,自然觉得是好事,包装一下给投资人,也许可以融到更多钱,但这个数据背后的质量如何,真实价值如何?不管对外如何包装,至少自己要心里有数。实际上就我这些年的行业经验来看,大部分情况下,遇到没有预期,没有理由的数据指标激增,最后验证下来,很高比例是存在显著问题的。或者说,不健康的增长。

    很多时候,很多企业管理者会有一种很自然的心态,就是符合自己利益的数据增长或下降就是正常的,必然的,而不符合自己利益的数据增长和下降就是有问题的,需要调研和解读的,这就导致了很多特别拧巴的工作。比如说,老板看一下报表,看到了用户新增的增长,是不会质疑的,但看到了留存的下降,就会觉得非常不愉快,而分析留存下降就成了最重要的工作,但如果事实上,新增的增长其实是有问题的,这个工作就会变得莫名其妙,而很多时候,员工为了满足老板的期望去寻找数据理由和借口,和真相就会越来越远。

    十多年前,我在职场遇到过不止一次,老板追问A数据的问题,但根源在于B数据不准确,而A数据是基于B数据生成的,老板只关心A,直到终于明确证据发现B的问题,其实这个过程也挺痛苦的。

    2、被忽略的隐形价值

    很多新入职场的从业者不太了解风控工作的意义,有些会认为这个职位很尴尬,确实,风控岗位的特点是,你做的非常好的时候,是没有存在感的,但如果出了问题,就是天大的责任

    所以很多人觉得,我为什么要做这样的工作,很没有成就感。

    其实这里有个隐形价值,通过这个岗位所获得的认知价值。风控岗位,需要对业务的各种细节和问题具有非常敏锐的认知,而且需要面对各种匪夷所思的挑战和对抗。一个资深的风控专家,他对行业的很多风险认知,是远远超出同等经验的其他岗位,而且会非常清楚灰黑产的套路和各种手段。

    磨练出这种认知价值,对自身的职场或创业,都会有极大的帮助。

    职场通病之 - 坐守金山不自知,其实和旧文说的是一个道理。很多人觉得做风控没前途,不受待见,是低估了这种认知价值,以及缺乏主动做出调整改变的动力。

    一个资深的风控人才,其实在业内是非常受欢迎的,而且对高速成长的公司,风控专家的待遇和地位都是非常有保障的。你知道顶尖风控专家怎么找工作么?是给老板上课去的,你们这个业务目前的潜在风险一二三,你们现在系统可能存在的问题一二三,你们用的服务商存在的问题一二三。你讲完就可以谈价码了。

    很多从业者不知道的是,没有好的风控,老板睡不好觉的。

    3、对抗产生机会

    风控是一种需要长期保持各种对抗的岗位,我旧文也提过一个观点,->机会源于对抗

    写到这里总觉得是教人学坏,其实互联网很多核心领域的风控高手,想赚钱的通路特别多,如果底线低一些的话,就会更多。但我也说过,世界不止黑与白,互联网很多创新,来自于不循规蹈矩,从某种意义来说,博弈是市场发展的常态。

    一个善于从规则中发现弱点的安全高手,他有足够的底线,不想做黑产赚钱,不想赚一些昧心钱,但他可以用自己的认知能力,让自己的网店在电商平台的搜索排名中高一些,获得一些自然流量,是不是一种合法获利途径?

    一个商旅产业的风控高手,总能找到别人看不到的合规的超低价商旅资源,如果做成服务卖给客户,是不是一种合法的获利途径?

    我以前讲过案例,一个澳门赌场的资深风控专家,在他眼里,世界上很多赌场都是有羊毛可以薅的,有些人是怎么从赌场赚到钱的 但普通人是发现不了的。当然,他也知道另一个风险边界,如果去薅新加坡赌场的羊毛,多半是安全的,最多进入黑名单。但如果去薅柬埔寨赌场的羊毛,有可能会送命的。

    其实,理解风控,提升认知,会给自己带来无数新的机会,而且在职场选择或创业历程中,可以避开90%以上别人注意不到的坑。

    但这碗饭不容易吃,非常考验敏锐度,业务理解力。以及在一定程度上,风控也是一个特别需要人脉的事情。所谓信息面很重要,有时候你需要尽快知道谁在搞你,用什么方式搞你。有时候你需要知道,有什么新的灰黑产方法和工具在流传,彩虹库里有多少你们的用户资料被泄露。

    当然,风控还涉及一个成本问题,实际上,很多新入行的从业者都没有意识到,风控是多么重成本的事情。一个创业者如果没有意识到风控成本的问题,那么其实很多产品和运营方案都是极度危险的,找我谈创业计划的年轻人,几乎有90%都存在这个问题。

    好吧, 以后有机会再展开吧。

    展开全文
  • 电话里说是XX市委网信办的,说我名下个域名 ws65535.xyz 被举报包含色情内容。 最初我以为是骗子(最近一段时间冒充公安机关进行诈骗的案例比较多,家人和同事都曾经接到过自称派出所的诈骗电话)。我说这个域名...

    一、名下闲置域名被举报涉黄

    2020年12月3日,宁静祥和的下午,正在按部就班地敲着代码,突然被一通电话打乱了思绪。
    电话里说是XX市委网信办的,说我名下有个域名 ws65535.xyz 被人举报包含色情内容。

    最初我以为是骗子(最近一段时间冒充公安机关进行诈骗的案例比较多,家人和同事都曾经接到过自称派出所的诈骗电话)。我说这个域名我注册之后就没有使用过,怎么可能被举报。对方说明确实是被举报了,而且还有截图证据,并提出要加微信详谈。

    我将信将疑地加了对方微信,对方发给我这样一张截图:

    域名被举报含有色情内容

    当时这个网站(www.ws65535.xyz) 已经访问不通了。
    我 ping了一下举报截图上面的IP地址 103.223.120.113,发现也是ping 不通的,并且查到这个IP归属地是香港。

    了解情况

    二、域名已经过期,不在本人名下了

    但是我注册之后从来没有使用过这个域名啊,顿时感觉很奇怪,先找到这个域名再说。

    我已经不记得这个域名是在哪个平台、哪个账号注册的了,我和媳妇儿每人有一个阿里云和一个腾讯云账号,我自己还有个百度智能云账号,我分别登陆这5个账号,都没找到这个ws65535.xyz 域名,我只记得自己确实注册过这个域名,但是就是找不到,顿时感觉很烦躁。

    我突然想到这个域名是不是已经过期,不在我名下了。
    于是我通过 whois 查询了一下域名注册信息(https://who.is/whois/ws65535.xyz) ,发现该域名 (ws65535.xyz) 已经在 2020-09-17 被他人通过 西部数码(https://www.west.cn/) 服务商注册。
    注册人信息见截图。

    域名注册人信息

    我又在短信记录中搜索到了域名过期时阿里云发给我的通知短息,发现该域名2019年5月底就已经过期了。

    阿里云提示域名过期短信记录

    三、域名的备案信息竟然还是我的!

    既然域名已经不在我名下了,还跟我有啥关系,再次进行沟通澄清:

    澄清域名注册信息已经不是我的

    对方表明网站的备案主体还是我。

    我一查,没错,备案主体确实还特么的是我。

    域名备案信息查询

    四、域名过期备案为何没有自动注销?

    那么问题来了,我之前注册备案之后又过期的域名已经有几个了,正常情况下域名过期之后,服务商(阿里云、腾讯云等)会自动帮助注销备案的,为什么只有这个域名过期之后备案没有注销?

    这个域名确实有一定的特殊性,域名是在阿里云购买的,域名备案时我的备案主体已经从阿里云迁到了腾讯云。
    因为我的服务器都是在腾讯云买的,如果备案不在腾讯云的话域名访问是不能接入到服务器的。
    至于为什么要在腾讯云买服务器?因为便宜啊,不过腾讯云服务的稳定性确实是不如阿里云成熟,我这边曾经出过一次服务器突然无法通过内网访问数据库的问题,通过工单联系客服才给解决。
    也就是说出事儿的域名是在阿里云购买,在腾讯云做的备案。
    针对这种特殊情况,我首先咨询了阿里云的客服:

    阿里云咨询记录

    阿里云的意思是备案是在腾讯云做的,所以注销备案要找腾讯云解决。
    说的确实有道理,于是我又找到了腾讯云:

    腾讯云咨询记录

    腾讯云提到 2020-10-20 核查专员曾和我电话沟通过,我同意取消接入。
    我回忆了一下,确实接到过腾讯云的电话,因为当时正忙于工作,ws65535.xyz 这个域名又没有实际使用过,就同意取消接入了,也没有细问。
    腾讯云说的取消接入应该是禁止该域名接入到腾讯云的服务器,而不包括注销域名备案。
    现在腾讯云已经没有了这个域名的备案信息,所以不能帮我注销网址备案。

    说到这里基本已经了解我的域名过期,备案为什么没有自动注销了。
    因为域名是在阿里云购买的,备案主体却在腾讯云下,所以域名过期了,备案主体是不能明确知道的,所以没有自动帮我注销备案。
    后面通过其他案例我又了解到,即使A,B两个账号都属于阿里云,在A账号购买域名,在B账号进行备案,A账号的域名过期之后,备案也是不会自动注销的。

    五、如何自己注销备案?

    既然腾讯云已经不能帮忙注销备案,那就只能自己来操作了。
    最初是想打管局的电话咨询一下,结果语音提示繁忙,让自己去管局官网找答案。
    在官网的通知通告栏目搜索河北,倒是很容易就找到了注销备案申请表:

    查找注销备案申请表

    下载了注销备案申请表,里面除了表格外,还写明了注销流程(下面是河北省的流程,不同省份不一样,具体流程在申请表的文件里有说明):

    1. 填写表格(注销网址、备案号、注销原因、联系方式等)
    2. 打印填写好的表格
    3. 在表格上签字(个人)或盖章(企业)
    4. 将签好字的表表格扫描成图片
    5. 另外准备身份证扫描件、手持身份证照片等,跟申请表一起发送到指定的邮箱。

    网信办要求我把注销申请邮件的截图发给他:

    注销备案申请邮件截图

    六、准备自证材料

    需要准备的材料

    我准备的自证材料主要有下面几条:

    1. 通过whois (https://who.is/whois/ws65535.xyz) 查询域名注册信息,可以得知该域名 (ws65535.xyz) 已经在 2020-09-17 被他人通过 西部数码(https://www.west.cn/) 服务商注册。

    理论上来说,whois上面的个人信息(姓名、地址、手机号)是可以乱填的,国外有一些域名注册商不需要实名认证(比如GoDaddy.com)。这样做的风险就是账号被盗的话域名就找不回来了,因为你没有办法证明域名是你注册的。

    1. 腾讯云备案(075536554862)曾经于2020-10-19 11:26:07给我打电话询问域名 (ws65535.xyz)是否在用,我明确表示域名已经不用了,腾讯云表示取消接入该域名,并删除备案信息,有电话录音为证(我设置的所有陌生电话自动录音,现在用上了)
    2. 2020年12月03日我向腾讯云咨询该域名备案的注销问题时,腾讯云再次表示"ws65535.xyz于2020-10-20在腾讯云已取消接入,目前腾讯云已无备案信息"。
    3. (这条最后没加进去)我如果搞一台香港的服务器(事发网站的IP归属地是香港)做网站,那我还辛辛苦苦做备案干嘛(网址接入中国大陆区域外的服务器不需要备案)。

    另外还根据要求准备了下面两个附件:

    1. 已签字的注销备案申请表,及申请邮件发送截图、备案注销成功回复邮件截图(后补充)。
    2. 名下域名整理:注册时间、过期时间、备案时间、备案号、用途等信息。

    七、前往市委网信办

    12月7日星期一,特意跟领导请了半天假,奢侈地打了个车,9点左右到达目的地。

    接待我的就是微信上沟通的大哥,姓张,见面先握手,非常友好热情,告诉我也不用紧张,简单说明一下情况,拍照签字按手印就行了,就是时间可能会长一点,说着还给我泡了杯铁观音,让我坐下休息会,别着急。

    根据我的口述和自证材料,张哥现场写了一份证明文件,打印出来让我看还有没有需要修改的地方,然后反复改了4、5次,才最终定稿。
    之后就到了拍照签字按手印的环节,在材料中所有有我名字的地方按手印,最后签上名字,拿着正面材料拍了照片(按手印签字的过程中也拍了几张照片),告诉我收到备案注销成功的回复邮件后截图发给他,他就可以提交上去了。
    整个过程大概用了一个多小时,期间没有其他人过来,我是独一份。结束时还客气的说有空可以过来这喝茶聊天,我差点没憋住笑出来,有点不太礼貌。

    10点半左右,坐上了回北京的公交,12点半到公司,点了个外卖,吃完下午进入工作状态。

    八、域名备案完成注销

    12月8日星期二,早晨上班路上接到了河北省备案管理处的电话,问我是否确定注销网站备案,我说确定。
    电话挂断一分钟后我就收到了域名注销成功的回复邮件。

    到公司之后我又从ICP备案官网查了一下,备案确实是注销了。
    于是我又把备案注销成功的回复邮件截图发给了张哥。

    注销备案成功邮件截图

    至此,整个事件基本结束了。

    九、Tips

    1. ICP备案查询官网:https://beian.miit.gov.cn/
    2. 域名过期,一定要查一下备案是否自动注销了,万一域名被别人注册用于非法用途,轻则需要费时费力处理,严重了有可能被起诉。
    3. 当域名和备案主体不在同一个服务商(或者同一个服务商,不在同一个账号下)时,一定要特别注意域名过期后备案​是否被注销。​
    4. 当备案主体下备案主体下有多个域名时,可以注销单个域名的备案;当备案主体下只有一个域名时,注销这个域名备案会连同备案主体一起注销。
    5. 域名是否需要备案取决于域名接入服务器是否在中国大陆,跟域名本身没有什么关系。服务器不在中国大陆范围,域名就不需要备案。
    6. 域名是否需要实名认证一般是由域名服务商(阿里云、腾讯云)决定的,在国内买的域名一般都需要实名认证。国外有一些域名注册商不需要实名认证(比如GoDaddy.com),这样做的风险就是账号被盗的话域名就找不回来了,因为你没有办法证明域名是你注册的。
    7. 信息比较全的域名注册信息查询网站:https://who.is/
    8. 一些国外的域名注册商会有一种注册人隐私保护的服务,一年几十刀的费用,可以隐藏注册人信息。

    欢迎关注公众号【全栈札记】

    展开全文
  • 哈喽,自从实习以来很久没有更文了,一是没有时间,二是实习了之后突然发现自己能写的东西也没有多少了。赶上1024征文活动,就写一篇吧,在实习的这段时间,我更加认识到日志的重要性,客户端值没传过来?看日志,...


    一. 前言

    哈喽,自从实习以来很久没有更文了,一是没有时间,二是实习了之后突然发现自己能写的东西也没有多少了。赶上1024有征文活动,就写一篇吧,在实习的这段时间,我更加认识到日志的重要性,客户端值没传过来?看日志,服务崩溃了?看日志,没错,日志是出现异常第一个想到的东西,它记录了程序运行过程中所调用的函数,所接受到的值,所执行的行为等等。大家也都看到这篇的标题了,我这个人有一个缺点,就是不太喜欢用别人的东西,如果有能力,我希望自己造,所以今天我们自己来动手撸一个日志库,文章重点讲实现过程,如果需要源码,可以前往github获取FdogLog,一个轻量级C++日志库,用于日志服务。

    跪求三连!


    二. 基本功能

    我们先来捋一捋这个日志库应该实现那些功能。

    1. 日志最最最基本的功能是什么,当然是打印或记录日志。
    2. 信息应该包括哪些信息,时间?运行用户?所在文件?想要显示的信息?(自定义显示信息下篇实现)
    3. 信息虽然显示丰富,但是要尽可能让代码自己获取其他信息,调用者只需要设置最主要的信息。
    4. 信息有重要等级之分,所以我们需要对信息做必要分类,提高效率。
    5. 如何实现全局尽可能简洁的调用。
    6. 如果日志库是运行在多线程环境,如何保证线程安全。(下篇实现)

    这些就是一个日志库所具备的最基本的功能,接下来继续思考,还需要什么。

    1. 怎么控制日志的行为。
    2. 如果保存在文件,如何定义文件名。
    3. 随着日志增加,文件会越来越大,如何解决。(下篇实现)

    简单规划完一个不那么完美的日志库所具备的能力,现在我们来对这几条做更详细的规划。

    1. 日志最最最基本的功能是什么,当然是打印或记录日志。
    2. 信息应该包括哪些信息,时间?运行用户?所在文件?想要显示的信息?

    当我在调用一个名为function的函数时。

    function();
    

    你希望它输出怎么样的信息。

    我被调用
    [2021-10-20 23:27:23] 我被调用
    [2021-10-20 23:27:23] INFO 我被调用
    [2021-10-20 23:27:23] INFO root 我被调用
    [2021-10-20 23:27:23] INFO root 17938 我被调用
    [2021-10-20 23:27:23] INFO root 17938 [/media/rcl/FdogIM/service.h function:8] 我被调用

    我想大部分人都会选择最后一种输出信息吧(虽然在这之前,我们都大量使用cout输出第一种),所以我们的日志应该包括时间,日志等级,运行用户,进程ID,调用函数所在文件,以及调用时所在行数。当然总会有人不想全部输出,这将在后面给出方案。

    1. 信息虽然显示丰富,但是要尽可能让代码自己获取其他信息,调用者只需要设置最主要的信息。

    2. 信息有重要等级之分,所以我们需要对信息做必要分类,提高效率。

    3. 如何实现全局尽可能简洁的调用.

    信息有重要等级之分,要可以对信息做区分,按照常见的等级之分,有:

    ERROR: 此信息输出后,主体系统核心模块不能正常工作,需要修复才能正常工作。
    WARN:   此信息输出后,系统一般模块存在问题,不影响系统运行。
    INFO:     此信息输出后,主要是记录系统运行状态等关联信息。
    DEBUG: 最细粒度的输出,除去上面各种情况后,你希望输出的相关信息,都可以在这里输出。
    TRACE:  最细粒度的输出,除去上面各种情况后,你希望输出的相关信息,都可以在这里输出。

    有了等级之分,如何实现全局尽可能简洁的调用,通俗的说就是去掉一切不必要的调用,只留下最主要的调用。

    例如:

    #include<iostream>
    #include"fdoglogger.h"  //添加日志库头文件
    
    using namespace fdog;   //日志库的命名空间
    
    int main(){
        FdogError("错误");
        FdogWarn("警告");
        FdogInfo("信息");
        FdogDebug("调试");
        FdogTrace("追踪");
        return 0;
    }
    

    你不必初始化什么信息,调用什么多余的初始化函数,只需要用这五个类似函数的东西来输出即可,同样,如果是另一个源文件,依旧是这样的调用方式(这里可以使用单一模式来实现,其意图是保证一个类仅有一个实列,并提供一个访问它的全局访问点,该实例被所有程序模块共享。就比如日志的输出。)。

    1. 如果日志库是运行在多线程环境,如何保证线程安全。

    到目前,一个基本的日志库的调用基本成形,如果在单线程,它可以很好的工作,但是到了多线程环境下,就不能保证了,第一点就是单例模式的创建,当两个线程同时去初始化时,无法保证单一实例被成功创建,第二,日志既然是输出到文件,不同线程写入文件时,如何保证写入数据不会错乱。既然写的是C++的日志输出,必然用到了cout ,cout 不是原子性的操作,所以在多线程下是不安全的,这些都是我们需要考虑到的。

    1. 怎么控制日志的行为。

    这里使用配置文件进行日志的行为规定,包括打印什么日志,输入到文件,还是终端,输出的等级,以及日志开关,等等,配置文件将在程序启动时被读取。(提醒各位千万不要写死代码,后患无穷!!!)

    1. 如果保存在文件,如何定义文件名。

    2. 随着日志增加,文件会越来越大,如何解决。

    日志的文件名由配置文件指定,但是创建时会在后面加上创建日期后缀,并且可以在配置文件中配置每隔多少天创建一个新的日志文件,如果配置中心有设置日志文件大小,则会优先大小判断,超过便创建一个新文件。


    三. 代码实现

    1. fdoglogger.h
    #ifndef FDOGLOGGER_H
    #define FDOGLOGGER_H
    #include<iostream>
    #include<fstream>
    #include<map>
    #include<mutex>
    #ifndef linux
    #include<unistd.h>
    #include<sys/syscall.h>
    #include<sys/stat.h>
    #include<sys/types.h>
    #include <pwd.h>
    #endif
    #ifndef WIN32
    //TODO
    #endif
    using namespace std;
    
    namespace fdog {
    
    #define RED   "\e[1;31m"
    #define BLUE  "\e[1;34m"
    #define GREEN "\e[1;32m"
    #define WHITE "\e[1;37m"
    #define DEFA  "\e[0m"
    
    enum class coutType: int {Error, Warn, Info, Debug, Trace};
    enum class fileType: int {Error, Warn, Info, Debug, Trace};
    enum class terminalType: int {Error, Warn, Info, Debug, Trace};
    
    struct Logger {
        string logSwitch;           //日志开关
        string logFileSwitch;       //是否写入文件
        string logTerminalSwitch;   //是否打印到终端
        string logName;             //日志文件名字
        string logFilePath;         //日志文件保存路径
        string logMixSize;          //日志文件最大大小
        string logBehavior;         //日志文件达到最大大小行为
        string logOverlay;          //日志文件覆盖时间
        string logOutputLevelFile;  //日志输出等级(file)
        string logOutputLevelTerminal;//日志输出等级
    };
    
    class FdogLogger {
    public:
        void initLogConfig();
    
        void releaseConfig();
    
        static FdogLogger* getInstance();
    
        string getCoutType(coutType coutType);
    
        bool getFileType(fileType fileCoutBool);
    
        bool getTerminalType(terminalType terminalCoutTyle);
    
        string getLogCoutTime();
    
        string getLogNameTime();
    
        string getFilePash();
    
        string getLogCoutProcessId();
    
        string getLogCoutThreadId();
    
        string getLogCoutUserName();
    
        bool createFile(string filePash);
    
        bool logFileWrite(string messages);
    
        bool bindFileCoutMap(string value1, fileType value2);
    
        bool bindTerminalCoutMap(string value1, terminalType value2);
    
    private:
        char szbuf[128];
        Logger logger;
        static FdogLogger * singleObject;
        static mutex * mutex_new;
        map<coutType, string> coutTypeMap;
        map<fileType, bool> fileCoutMap;
        map<terminalType, bool> terminalCoutMap;
    
    private:
        FdogLogger();
        ~FdogLogger();
    };
    
    #define Error1 __FDOGNAME__(Error)
    #define Warn1 __FDOGNAME__(Warn)
    #define Info1 __FDOGNAME__(Info)
    #define Debug1 __FDOGNAME__(Debug)
    #define Trace1 __FDOGNAME__(Trace)
    
    
    #define SQUARE_BRACKETS_LEFT " ["
    #define SQUARE_BRACKETS_RIGHT "] "
    #define SPACE " "
    #define LINE_FEED "\n"
    #define COLON ":"
    #define SLASH "/"
    
    #define __FDOGTIME__  FdogLogger::getInstance()->getLogCoutTime()          //时间宏
    #define __FDOGPID__   FdogLogger::getInstance()->getLogCoutProcessId()     //进程宏
    #define __FDOGTID__   FdogLogger::getInstance()->getLogCoutThreadId()      //线程宏
    #define __FDOGFILE__  __FILE__        //文件名宏
    #define __FDOGPASH__  FdogLogger::getInstance()->getFilePash() + __FDOGFILE__ //文件路径
    #define __FDOGFUNC__   __func__        //函数名宏
    #define __FDOGLINE__  __LINE__        //行数宏
    #define __USERNAME__  FdogLogger::getInstance()->getLogCoutUserName()     //获取调用用户名字
    #define __FDOGNAME__(name) #name        //名字宏
    
    
    #define COMBINATION_INFO_FILE(coutTypeInfo, message) \
        do{\
            string messagesAll = __FDOGTIME__ + coutTypeInfo + __USERNAME__ + __FDOGTID__ + SQUARE_BRACKETS_LEFT + \
            __FDOGPASH__  + SPACE +__FDOGFUNC__ + COLON + to_string(__FDOGLINE__) + SQUARE_BRACKETS_RIGHT + message + LINE_FEED;\
            FdogLogger::getInstance()->logFileWrite(messagesAll); \
        }while(0);
    
    #define COMBINATION_INFO_TERMINAL(coutTypeInfo, message) \
        do{\
            string messagesAll = __FDOGTIME__ + WHITE + coutTypeInfo + DEFA + __USERNAME__ + __FDOGTID__ + SQUARE_BRACKETS_LEFT + \
            __FDOGPASH__  + SPACE +__FDOGFUNC__ + COLON + to_string(__FDOGLINE__) + SQUARE_BRACKETS_RIGHT + message + LINE_FEED;\
            cout << messagesAll;\
        }while(0);
    
    #define LoggerCout(coutTyle, coutTypeInfo, fileCoutBool, terminalCoutBool, message) \
        do {\
            string coutType = FdogLogger::getInstance()->getCoutType(coutTyle);\
            if (FdogLogger::getInstance()->getFileType(fileCoutBool)) {\
                COMBINATION_INFO_FILE(coutTypeInfo, message)\
            }\
            if (FdogLogger::getInstance()->getTerminalType(terminalCoutBool)) {\
                COMBINATION_INFO_TERMINAL(coutTypeInfo, message)\
            }\
        }while(0);
    
    #define FdogError(message) \
        do{\
            LoggerCout(fdog::coutType::Error, Error1, fdog::fileType::Error, fdog::terminalType::Error, message)\
        }while(0);
    
    #define FdogWarn(message)  \
        do{\
            LoggerCout(fdog::coutType::Warn, Warn1, fdog::fileType::Warn, fdog::terminalType::Warn, message)\
        }while(0);
    
    #define FdogInfo(message)  \
        do{\
            LoggerCout(fdog::coutType::Info, Info1, fdog::fileType::Info, fdog::terminalType::Info, message)\
        }while(0);
    
    #define FdogDebug(message) \
        do{\
            LoggerCout(fdog::coutType::Debug, Debug1, fdog::fileType::Debug, fdog::terminalType::Debug, message)\
        }while(0);
    
    #define FdogTrace(message) \
        do{\
            LoggerCout(fdog::coutType::Trace, Trace1, fdog::fileType::Trace, fdog::terminalType::Trace, message)\
        }while(0);
    
    }
    
    #endif
    
    
    2. fdoglogger.cpp
    #include"fdoglogger.h"
    
    using namespace fdog;
    
    
    FdogLogger * FdogLogger::singleObject = nullptr;
    mutex * FdogLogger::mutex_new = new(mutex);
    
    FdogLogger::FdogLogger(){
        initLogConfig();
    }
    FdogLogger::~FdogLogger(){
    
    }
    
    FdogLogger* FdogLogger::getInstance(){
        mutex_new->lock();
        if (singleObject == nullptr) {
            singleObject = new FdogLogger();
        }
        mutex_new->unlock();
        return singleObject;
    }
    
    void FdogLogger::initLogConfig(){
    
        map<string, string *> flogConfInfo;
        flogConfInfo["logSwitch"] = &this->logger.logSwitch;
        flogConfInfo["logFileSwitch"] = &this->logger.logFileSwitch;
        flogConfInfo["logTerminalSwitch"] = &this->logger.logTerminalSwitch;
        flogConfInfo["logName"] = &this->logger.logName;
        flogConfInfo["logFilePath"] = &this->logger.logFilePath;
        flogConfInfo["logMixSize"] = &this->logger.logMixSize;
        flogConfInfo["logBehavior"] = &this->logger.logBehavior;
        flogConfInfo["logOverlay"] = &this->logger.logOverlay;
        flogConfInfo["logOutputLevelFile"] = &this->logger.logOutputLevelFile;
        flogConfInfo["logOutputLevelTerminal"] = &this->logger.logOutputLevelTerminal;
    
        string str;
        ifstream file;
        char str_c[100]={0};
        file.open("fdoglogconf.conf");
        if(!file.is_open()){
            cout<<"文件打开失败\n";
        }
        while(getline(file, str)){
            if(!str.length()) {
                continue;
            }
            string str_copy = str;
            //cout<<"获取数据:"<<str_copy<<endl;
            int j = 0;
            for(int i = 0; i < str.length(); i++){
                if(str[i]==' ')continue;
                str_copy[j] = str[i];
                j++;
            }
            str_copy.erase(j);
            if(str_copy[0]!='#'){
                sscanf(str_copy.data(),"%[^=]",str_c);
                auto iter = flogConfInfo.find(str_c);
                if(iter!=flogConfInfo.end()){
                    sscanf(str_copy.data(),"%*[^=]=%s",str_c);
                    *iter->second = str_c;
                } else {
                }
            }
        }
        logger.logName = logger.logName + getLogNameTime() + ".log";
    
        bindFileCoutMap("5", fileType::Error);
        bindFileCoutMap("4", fileType::Warn);
        bindFileCoutMap("3", fileType::Info);
        bindFileCoutMap("2", fileType::Debug);
        bindFileCoutMap("1", fileType::Trace);
    
        bindTerminalCoutMap("5", terminalType::Error);
        bindTerminalCoutMap("4", terminalType::Warn);
        bindTerminalCoutMap("3", terminalType::Info);
        bindTerminalCoutMap("2", terminalType::Debug);
        bindTerminalCoutMap("1", terminalType::Trace);
    
        if(logger.logFileSwitch == "on"){
            if(!createFile(logger.logFilePath)){
                std::cout<<"Log work path creation failed\n";
            }
        }
    
        cout << "|========FdogLogger v2.0==========================|" <<endl << endl;
        cout << "  日志开关:" << logger.logSwitch << endl;
        cout << "  文件输出:" << logger.logFileSwitch << endl;
        cout << "  终端输出:" << logger.logTerminalSwitch << endl;
        cout << "  日志输出等级(文件):" << logger.logOutputLevelFile << endl;    
        cout << "  日志输出等级(终端):" << logger.logOutputLevelTerminal << endl;
        cout << "  日志文件名:" << logger.logName << endl;
        cout << "  日志保存路径:" << logger.logFilePath << endl;
        cout << "  单文件最大大小:"<< logger.logMixSize << "M" << endl;
        cout << "  日志保存时间 :" << logger.logOverlay << "天" << endl << endl;
        cout << "|=================================================|" <<endl;
        
        return;
    }
    
    string FdogLogger::getCoutType(coutType coutType){
        return singleObject->coutTypeMap[coutType];
    }
    
    bool FdogLogger::getFileType(fileType fileCoutBool){
        return singleObject->fileCoutMap[fileCoutBool];
    }
    
    bool FdogLogger::getTerminalType(terminalType terminalCoutTyle){
        return singleObject->terminalCoutMap[terminalCoutTyle];
    }
    
    string FdogLogger::getLogCoutTime(){
        time_t timep;
        time (&timep);
        char tmp[64];
        strftime(tmp, sizeof(tmp), "%Y-%m-%d %H:%M:%S",localtime(&timep));
        string tmp_str = tmp;
    
        return SQUARE_BRACKETS_LEFT + tmp_str + SQUARE_BRACKETS_RIGHT;
    }
    
    string FdogLogger::getLogNameTime(){
        time_t timep;
        time (&timep);
        char tmp[64];
        strftime(tmp, sizeof(tmp), "%Y-%m-%d-%H:%M:%S",localtime(&timep));
        return tmp;
    }
    
    string FdogLogger::getFilePash(){
        getcwd(szbuf, sizeof(szbuf)-1);
        string szbuf_str = szbuf;
        return szbuf_str + SLASH;
    }
    
    string FdogLogger::getLogCoutProcessId(){
    #ifndef linux
        return to_string(getpid());
    #endif
    #ifndef WIN32
    //  unsigned long GetPid(){
    //     return GetCurrentProcessId();
    // }
    #endif
    }
    
    string FdogLogger::getLogCoutThreadId(){
    #ifndef linux
        return to_string(syscall(__NR_gettid));
    #endif
    #ifndef WIN32
    //  unsigned long GetTid(){
    //     return GetCurrentThreadId();
    // }
    #endif
    }
    
    string FdogLogger::getLogCoutUserName(){
        struct passwd *my_info;
        my_info = getpwuid(getuid());
        string name = my_info->pw_name;
        return SPACE + name + SPACE;
    }
    
    bool FdogLogger::createFile(string filePash){
        int len = filePash.length();
        if(!len){
            filePash = "log";
            if (0 != access(filePash.c_str(), 0)){
                if(-1 == mkdir(filePash.c_str(),0)){
                    std::cout<<"没路径";
                    return 0;
                }
            }
        }
        std::string filePash_cy(len,'\0');
        for(int i =0;i<len;i++){
            filePash_cy[i]=filePash[i];
            if(filePash_cy[i]=='/' || filePash_cy[i]=='\\'){
                if (-1 == access(filePash_cy.c_str(), 0)){
                    if(0!=mkdir(filePash_cy.c_str(),0)){
                        std::cout<<"有路径";
                        return 0;
                    }
                }
            }
        }
        return 1;
    }
    
    bool FdogLogger::logFileWrite(string messages){
        ofstream file;
        file.open(logger.logFilePath + logger.logName, ::ios::app | ios::out);
        if(!file){
            cout<<"写失败"<<endl;
            return 0;
        }
        file << messages;
        file.close();
        return 1;
    }
    
    bool FdogLogger::bindFileCoutMap(string value1, fileType value2){
        if(logger.logOutputLevelFile.find(value1)!=std::string::npos) {
            fileCoutMap[value2] = true;
        } else {
            fileCoutMap[value2] = false;
        }
    }
    
    bool FdogLogger::bindTerminalCoutMap(string value1, terminalType value2){
        if(logger.logOutputLevelTerminal.find(value1)!=std::string::npos) {
            terminalCoutMap[value2] = true;
        } else {
            terminalCoutMap[value2] = false;
        }
    }
    

    四. 测试用例

    在这里插入图片描述

    1. fdoglogger_test.cpp
    #include<iostream>
    #include"fdoglogger.h"  //添加日志库头文件
    
    using namespace fdog;   //日志库的命名空间
    
    int main(){
        FdogError("错误");
        FdogWarn("警告");
        FdogInfo("信息");
        FdogDebug("调试");
        FdogTrace("追踪");
        return 0;
    }
    

    在这里插入图片描述

    在这里插入图片描述

    暂时考虑到的就是这些,如有缺陷,欢迎评论区补充。(比如文件写入打开就关闭,很浪费资源,如何优化,下篇见)。

    源码已上传github,还原star! FdogLog,一个轻量级C++日志库,用于日志服务。


    展开全文
  • ❤️ 看完两件事 如果你觉得这篇内容对你挺启发,我想邀请你帮我两个小忙: 点个「在看」,让更多的也能看到这篇内容(喜欢不点在看,都是耍流氓 -_-) 关注公众号「前端开发博客」,每周重点攻克一个前端面试...
  • 一、前言 不知不觉间,迎来了2021年的第一天。过去的2020年注定是一个不平凡一年,疫情来得太快就像...在危难时刻,我们用自己的技术,贡献自己的一份力量。新技术代表新的生产力,一定是我们快速战胜疫情,开创未来
  • 关联规则就是关联的规则,形式是这样定义的:两个不相交的非空集合X、Y,如果X-->Y,就说X-->Y是一条关联规则。在题目的例子中,我们发现购买啤酒就一定会购买尿布,{啤酒}-->{尿布}就是一条关联规则。...
  • 终于有人把数据挖掘讲明白了

    万次阅读 多人点赞 2021-03-03 15:08:19
    我们假设一个极端的情况,假设K线图真的是像一些说的,准确性还不如找猴子掷飞镖来得高,也就是K线图和后市走势实际没啥关系,那水平再高的大牛花再多的时间研究,最终也不可能从K线图中找出真正价值的信息。...
  • 他从那时起,就日复一日的学习,并在 Github 做笔记的习惯,你看他的提交记录,每天都,一天都没拉下,就这样坚持了一年。 这个一年没有间断过的坚持,我是真的被震撼到,虽然我也经常肝文章,但是我也做不到...
  • 作者:易哥开讲 ...来源:知乎 ...1、17的团队,组织扁平,管理者劳神劳力、疲于应付 2、员工背地拉小群专项吐槽,各种负能量 3、费劲全力培养,员工不感恩 4、反对派多,使劲抱团,人数达到1/3 5、不.
  • 疫情下技术的宅家指南

    千次阅读 多人点赞 2021-01-18 01:17:08
    再说我们绝大多数的春节假期也不过7天,这一口气直接隔离14天,简直是不给活路嘛… 未来,我们无法预计疫情到底什么时候可以结束,我们能够做的就是适应它,做好长期抗疫的准备。 假如因为疫情被再次要求居家.
  • 本人于3年前写的博文,如何在面试中介绍自己的项目经验,经过大家的捧场,陆续得到了将近7万个点击量,也得到了众多网站公众号的转载,不过自己感觉,这篇文章更多的是偏重于方法,没有具体给到Java方面相关的说辞。...
  • 一、笔记本电脑声音变小了怎么办1、系统托盘区域的音量调节调节一下桌面右下角即系统托盘区域的音量调节,这个虽然很简单,也都知道,但也不排除被忽略的可能,只顾调节物理音响的调节旋钮,即 忘了在系统...
  • 大学生信息检索概论练习题

    千次阅读 2021-07-16 15:35:20
    文献的特性 知识信息性 、 客观物质性 、 人工记录性 、 动态发展性 。 35.文献的 内容 特征用于找出相关文献, 外部 特征用于获得特定文献。 36.文献获取与利用的过程中存在三重语言障碍,分别为: 自然语言障碍 ...
  • 信息检索习题

    千次阅读 2021-06-30 16:49:44
    信息检索常用的方法: 引文追溯法 、 工具法 和 循环法 55、专利三层含义: 新颖性 、 创造性 和 实用性 。 55.按检索手段划分,文献检索工具可以分为手工检索工具和【机械检索】工具。 56.国家标准的代号体系...
  • 微信红包封面催生暴利灰产:有人月入三十万

    万次阅读 多人点赞 2021-02-06 15:53:51
    不少以为,微信此举不过是想给视频号导流,增加创作者曝光的机会,但在投机者们眼中,不到200字的公告满屏都是商机——可以靠卖红包封面赚钱。 一个普通的封面卖家,生意好时能日进千元,而一家为此服务的处于...
  • 信息安全技术(俞承杭)期末复习

    千次阅读 2021-01-15 14:13:08
    信息系统是指基于计算机技术和网络通信技术的系统,是、规程、数据库、硬件和软件等各种设备、工具的有机集合 在信息安全领域,重点关注的是与信息处理生活周期相关的各个环节 .信息化社会发展三要素是物质、能源...
  • 或许有人会问,为什么呢? 因为就四张背景图啊!!!你完全可以这样: 对当前的滑块验证码界面进行截图,与对应的完整背景图进行对比,找到缺口位置,即可计算出滑块到缺口的距离了(滑块初始位置的横坐标是固定的)。...
  • 管理信息系统复习总结(保姆级)

    万次阅读 多人点赞 2021-01-01 14:19:37
    第一章 当今全球商业中的信息系统 管理信息系统的新变化:①技术(云计算、大数据与物联网、移动数字化平台) ②管理(在线合作与社会化网络软件、商务智能、虚拟会议)③组织(社会化商务、远程办公、商业价值的共创...
  • 2、查看进程,特别是路径和启动参数的进程查看软件检查 3、检查所有启动项(包括服务等很多启动位置) 4、查看可引起程序调用的关联项、插件项 高级防范:(防止内核级隐藏端口、进程、注册表等) 1、其他可...
  • 展开全部小红书里的点赞和收藏会被关注的...小红书以“Inspire Lives 分享和发现世界的精彩”为使命,用户可以通过短视频、图文等形式记录生活点滴,分享生活方式,并基于兴趣形成互动。小红书目前女性用户占绝大...
  • 看到一个有趣的故事,说给你听听。为了逃离那个充满压力的世界,几天前我和我的搭档前往威尼斯度假。如果你曾经去过意大利,尤其是意大利北部,你就会知道,在价格方面,意大利对我们游客并不宽容。这...
  • MVCC:听说有人好奇我的底层实现

    千次阅读 2021-03-18 18:11:28
    而是在数据提交的时候进行检测,如果发现有冲突则返回冲突信息。 小结 Innodb的MVCC机制就是乐观锁的一种体现,读不加锁,读写不冲突,在不加锁的情况下能让多个事务进行并发读写,并且解决读写冲突问题,极大的...
  • 大学生只会C语言写简单的计算怎么办

    千次阅读 多人点赞 2021-06-15 17:31:49
    大学生会C语言写几个简单的计算太正常了,有些直到毕业了都写不出什么程序。 这个也是大多数应届生的一个现状。 在学校的时候不知道要好好学习,等马上会接受社会毒打时才发现自己一无是处,然后开始临时抱佛脚...
  • 被恶意刷验证码短信怎么办

    千次阅读 2021-02-04 10:16:00
    短信验证码被刷怎么办?一 事件简述二 问题分析三 应急解决方案1 黑名单模式拦截2 请求验证拦截3 应急方案总结四 最终解决方案第一步:获取防火墙帐号密钥第二步:下载防火墙服务器第三步:前后端接入查看防火墙数据...
  • 收藏,数据仓库建设与框架终于有人给讲明白了

    千次阅读 多人点赞 2021-09-08 09:16:27
    数据仓库,这个几乎是所有大数据开发面试必问的话题。比如数据仓库的分层...小伙伴甚至觉得这些都是形而上学,不懂这些我不一样搞了很多年开发? 1.什么是数据仓库 数据仓库,英文名称为DataWarehouse,可简...
  • 终于有人把“低代码”说清楚了!

    千次阅读 多人点赞 2021-03-05 10:24:35
    ” 低代码仿佛也这样的力量,让不会代码的也能通过可视化操作,感受开发一套应用软件的成就感、获得感。不少程序员觉得低代码、零代码开发平台就是个玩具,但我认为,低代码、零代码不是所谓的“低智盛行”,...
  • 如何解决个人信息泄露问题

    千次阅读 2021-03-23 16:32:05
    拥有上千家门店的知名商户,竟私自摄像头抓取顾客人脸并自动生成编号。今年的央视3·15晚会上,多家企业因通过公民个人信息谋利而被曝光。 随着信息化与经济社会的深度融合,利用个人信息侵扰群众生活的现象...
  • 许多该开发平台创建的 Web 或移动应用均中招,暴露了近 3800 万条包含敏感信息的数据记录! 今天,笔者在又看到一条因配置错误导致数据公开可访问的新闻,数据不但裸奔了,还被搜索引擎收录了。 近日,产品比较...
  • 到三十,像是一个分水岭,肩上的担子更沉,身体的问题也在增多。 中年发福,减肥越来越难,看到0糖0卡饮料眼前一亮,失眠焦虑成为常态,发际线加速后移……这是和我们接触的30岁左右互联网、新经济从业者们身上...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,286,570
精华内容 514,628
关键字:

发现有人用自己信息怎么办