老是等不上wwWtknzn的页面了,不能显示tknzncOm了上帝之鹰 5zn怎么了办

Alphabet is mostly a collection of companies. This newer Googl…阅读全文关注话题分享阅读全文22K766 条评论分享收藏感谢阅读全文21K654 条评论分享收藏感谢阅读全文20K1,195 条评论分享收藏感谢阅读全文16K856 条评论分享收藏感谢阅读全文15K1,244 条评论分享收藏感谢1,369单身的人不听情歌之离别篇 - 歌单 - 网易云音乐
单身的人不听情歌之离别篇
播放:60次
网易云音乐多端下载
同步歌单,随时畅听320k好音乐
网易公司版权所有(C)杭州乐读科技有限公司运营:
违法和不良信息举报电话:6
举报邮箱:word文档怎么在文字的右上角打[1],就是论文的参考文献在文章中的额标注_百度知道
word文档怎么在文字的右上角打[1],就是论文的参考文献在文章中的额标注
我有更好的答案
把光标移动到需要输入上标的文字右边,单击菜单【格式】,【字体】,打开”字体”对话框,在”上标”前面打钩,单击”确定”,然后输入[1],输入好后,取消”上标”前面的打钩。
html&__bd_tkn__=75b1feb176e5d152c9ecf32aae187dbc833ecebe11a1fbf821def22cbc2b" target="_blank">http://zhidao.com/share/" target="_blank">http://blog,选右下角的“选项”,抛砖引玉,大家慢慢琢磨其中的奥秘吧。简单吧。
12.切换回到页面视图方法如下(以Word2003为例): 1.光标移到要插入参考文献的地方,菜单中“插入”——“引用”-“脚注和尾注”。
2.对话框中选择“尾注”?我们只要查找^p^p.。 来源,并替换为^p即可。这里的^p就是换行符;&gt,绝不出错。
13.参考文献越多,这种方法的优势就体现的越大。还没完,标号上的方括号如何加呢?很简单:在全文中。如怎么批量清除段落之间多余的空行呢,这就是输入第一个参考文献的地方,2。如果用自定义方法加入方括号。
8.所有文献都引用完后:<a href="http,参考文献插入已经完成了,所在位置建议选“节的结尾”!
以此类推有很多特殊字符可以轻松替换.com/question/.html&__bd_tkn__=75b1feb176e5d152c9ecf32aae187dbc833ecebe11a1fbf821def22cbc2b
有没有更简单的方法改变尾注的编号呢,一键进入新时代~牛大了。
10.在尾注右边的下拉菜单中选择“尾注分隔符”。具体操作办法如下:如果用了尾注就查找尾注标记^e,然后全部替换为[^&]即可;如果用了脚注就查找脚注标记^f,再全部替换为[^&]便可以了(注意查找时让“不限定格式”按钮为灰色),你会发现在第一篇参考文献前面一条短横线(页面视图里才能看到),如果参考文献跨页了,在跨页的地方还有一条长横线,这些线无法选中,也无法删除。这是尾注的标志,但一般科技论文格式中都不能有这样的线,否则参考文献以后就是移动的位置。
11.再在下拉菜单中选择“尾注延续分隔符”,可以继续写文章了。
7.在下一个要插入参考文献的地方再次按以上方法插入尾注,就会出现一个“2”(Word已经自动为你排序了),当你调整段落顺序后,好像没有什么办法简化)://zhidao.baidu.com/question/,这个序号也不会变)..,这时那条短横线出现了,选中它,删除;{}《》等格式:&lt。
4.确定后在该处就插入了一个上标“1”,在编号格式中选中阿拉伯数字;尾注中默认格式中唯独没有方括号,继续输入所要插入的参考文献?答案就在强大的word替换功能里。大家一般都熟悉常用的查找和替换,但是一些特殊字符的查找和替换恐怕很少有人用过.baidu。 来源。
我们还是用默认的1,麻烦更大了,参考文献的序号不会跟着调整,所以一定要把它们删除。
9.切换到普通视图,菜单中“视图”——“脚注”,这时最下方出现了尾注的编辑栏,后面的参考文献也会自动消失,参考文献都会自动地排好序了,这是那条长横线出现了,选中它,删除。再说如何用特殊字符替换功能给尾注编号加方括号。很多杂志和论文要求参考文献编号带有方括号,但是word的脚注&#47,而光标自动跳到文章最后。如果删除了。
5.将文章最后的上标“1”的格式改成正常(记住是改格式,就知道很简单了,查找尾注标记^e,然后全部替换为[^&]即可;如果用了脚注就查找脚注标记^f,再全部替换为[^&]便可以了(注意查找时让“不限定格式”按钮为灰色)别看步骤多,操作一遍,前面就是一个上标“1”://blog.renren。
6.对着参考文献前面的“1”双击,光标就回到了文章内容中插入参考文献的地方。
3.如“自动编号”后不是阿拉伯数字,再在它后面输入所插入的参考文献(格式按杂志要求来慢慢输。这时,无论文章如何改动,编号方式选“自动编号”:<a href="http,而不是将它删掉重新输入,3插入尾注吧,等你做完了所有工作,再用word的特殊字符将尾注编号替换为带方括号格式的[1],[2],[3]即可,当然也可以替换为
本回答被网友采纳
想打上先打上[1],然后选中它,设置文字字体,用右击菜单的选项或“格式”里的字体项,设置“上标”即可,希望能帮到你。
先打出[1],然后按住鼠标左键选中,在选中区域点右键“字体”,“效果”里“上标”选中,再点确定就OK了
能是,做的,
给的,好的。
其他2条回答
为您推荐:
其他类似问题
您可能关注的内容
word文档的相关知识
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。&figure&&img src=&https://pic4.zhimg.com/v2-ddacaa4da792_b.jpg& data-rawwidth=&642& data-rawheight=&333& class=&origin_image zh-lightbox-thumb& width=&642& data-original=&https://pic4.zhimg.com/v2-ddacaa4da792_r.jpg&&&/figure&&p&如果你最近留意,可能会在朋友圈见到这样的标题:&b&央视都曝光了!WiFi 万能钥匙盗取用户网络密码,快来看看吧!&/b&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-7a5f752efef92_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&597& data-rawheight=&101& class=&origin_image zh-lightbox-thumb& width=&597& data-original=&https://pic1.zhimg.com/v2-7a5f752efef92_r.jpg&&&/figure&&p&没错,这次真的是被央视《经济半小时》报道了,其实关于 WiFi 钥匙共享用户密码的争议从来就不是什么新鲜事,包括这次被工信部点名,提到的无非还是过去的那些一直存在着的安全隐患。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-5dcacb9b101af22ee9e86_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&596& data-rawheight=&92& class=&origin_image zh-lightbox-thumb& width=&596& data-original=&https://pic2.zhimg.com/v2-5dcacb9b101af22ee9e86_r.jpg&&&/figure&&p&看,几年前就有此类报道,这并不是什么新闻,然而呢?&/p&&p&如今是 2018 年,这款从诞生之初就争议缠身的产品现在已位列 App 活跃榜第三!&/p&&figure&&img src=&https://pic1.zhimg.com/v2-feede69eeb3_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&500& data-rawheight=&504& class=&origin_image zh-lightbox-thumb& width=&500& data-original=&https://pic1.zhimg.com/v2-feede69eeb3_r.jpg&&&/figure&&p&WiFi 万能钥匙的装机量早就不是昔日可比,想想这是多么大的体量?&/p&&p&这些年来,WiFi 万能钥匙的装机量不断刷新纪录,而带有 WiFi 功能的无线路由器早已飞入寻常百姓家。 &/p&&p&从 WiFi 万能钥匙的工作原理可知,WiFi 路由器设备越多,WiFi 万能钥匙理论上能“破解”的 WiFi 密码就越多,就会有越多的用户去使用,被分享的 WiFi 密码就越多,从而形成正向循环。&/p&&p&对于 WiFi 万能钥匙产品方来说,他们获得了大量用户。&/p&&p&而对于我们用户来说,获得了大批“裸奔”在外的 WiFi 路由器。&/p&&p&也许你会觉得黑哥在危言耸听,那我们今天就实战演练下,无需任何黑客工具,&b&只需要 WiFi 万能钥匙加上微信扫一扫功能,能对一台共享过 WiFi 密码的路由器做些什么?&/b&&/p&&p&黑哥在家打开 WiFi 万能钥匙扫描,发现周边就有 4 个邻居的热点可以直接连接,毫无疑问,他们的密码早就存在云端密码库了。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-57fe6fd5a117d81589ae4_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&562& data-rawheight=&1000& class=&origin_image zh-lightbox-thumb& width=&562& data-original=&https://pic4.zhimg.com/v2-57fe6fd5a117d81589ae4_r.jpg&&&/figure&&p&选一个信号好的尝试连接,没问题,很快就能连上。这时候你在手机端进入无线网络热点页面,就会看到这个热点已经保存下来,下次就可以直接登录了。&/p&&p&注意,重点来了——&/p&&p&如果你是安卓手机,就能查看到该热点已经以二维码的形式保存到手机上。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-efd600bb4ad7a07a8ffc4caca2c7ece6_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1080& data-rawheight=&1435& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic3.zhimg.com/v2-efd600bb4ad7a07a8ffc4caca2c7ece6_r.jpg&&&/figure&&p&对于一个二维码?难道不是下意识地用微信扫一扫吗?&/p&&p&好,我们把二维码截图存在相册,打开微信扫一扫,看看会发生什么?&/p&&figure&&img src=&https://pic4.zhimg.com/v2-e4c812bf55283da8babdd734_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1080& data-rawheight=&384& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic4.zhimg.com/v2-e4c812bf55283da8babdd734_r.jpg&&&/figure&&p&就是这么简单,这个 WiFi 热点的明文密码已经被我们获取,并且还有意外收获,邻居家的手机号。。。&/p&&p&还记得刚才我们获取到的 IP 地址 192.168.0.105 吗,来试试这个网段的网关默认地址,也就是路由器的默认地址 192.168.0.1, 我们在手机浏览器输入上述地址访问,也就打开了邻居家路由器的管理页面。&/p&&p&你们应该知道,路由器的初始密码一般都是常见的 “admin”,尝试了一下,果然顺利登陆。。。&/p&&figure&&img src=&https://pic1.zhimg.com/v2-79dcd81c08f7a006f96e04_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1080& data-rawheight=&639& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic1.zhimg.com/v2-79dcd81c08f7a006f96e04_r.jpg&&&/figure&&p&现在,我已经获取到了邻居家路由器的全部管理权限,而这些操作对任何一个小白来说都毫无难度。当然也是黑哥运气好,用初始密码就直接成功登陆。&/p&&p&如果我愿意,我可以对这台路由器为所欲为。虽然黑哥没有太多的黑客技术,但对邻居的网络限个速,改个密码之类的还是绰绰有余。&/p&&p&这简直就像一位玉体横陈的美女躺在你面前,没有一点点防备。还好黑哥坐怀不乱,看了下胸前的红领巾,悄悄关上门退了出来。&/p&&p&也许你会说,靠初始密码登录路由器完全是靠运气。&/p&&p&而事实上,未修改初始密码的,或者管理密码和 WiFi 设为同样密码的,而这样的用户绝不在少数。&/p&&p&据金山毒霸安全中心发布的《2014年上半年无线路由器及WiFi安全研究报告》数据显示:&b&高达 60% 的网民使用默认密码登录路由器后台,如admin、root 等,大约 36% 的网民使用的是弱密码,一般为有规律的键位分布或数字字母序列,比如“”、“aaaaaaaa”等。&/b&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-b8b74edc9f_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&868& data-rawheight=&432& class=&origin_image zh-lightbox-thumb& width=&868& data-original=&https://pic2.zhimg.com/v2-b8b74edc9f_r.jpg&&&/figure&&p&也就是说,&b&在中国&/b&,&b&总计有 96% 的路由器密码几乎形同虚设&/b&。&/p&&p&这样的比例,还算是运气吗?&/p&&figure&&img src=&https://pic3.zhimg.com/v2-11bfe8fdd638b4dfc6e46_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&554& data-rawheight=&554& class=&origin_image zh-lightbox-thumb& width=&554& data-original=&https://pic3.zhimg.com/v2-11bfe8fdd638b4dfc6e46_r.jpg&&&/figure&&p&即使是用户修改过初始管理密码,只要有个靠谱的密码字典本,有台配置不错的电脑,那些可能在你看来已经设置得连自己都记不住的密码,在暴力破解面前,只有一个字:&b&跪!&/b&&/p&&p&不要以为暴力破解会花很长时间,来看看这张 2006 年发布的表格——&/p&&figure&&img src=&https://pic4.zhimg.com/v2-aa0e8d720f022056dcd570b_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&590& data-rawheight=&322& class=&origin_image zh-lightbox-thumb& width=&590& data-original=&https://pic4.zhimg.com/v2-aa0e8d720f022056dcd570b_r.jpg&&&/figure&&p&破解一个最常见的 8 位数字密码在 2006 年需要 348 分钟,那么在 2018 年需要多长时间呢?&/p&&p&&b&只需 0.4 秒钟!&/b&&/p&&p&这是由国际知名网络完全机构 SplashData 在 2017 年 12 月公布的最新数据。&/p&&p&黑哥这里还提供一个网站,专用于测试你的密码被一台普通配置的电脑攻破需要多长时间。我测试了一个 8 位纯数字密码,显示结果如下——&/p&&figure&&img src=&https://pic2.zhimg.com/v2-f933b59bf10b8_b.jpg& data-size=&normal& data-rawwidth=&1080& data-rawheight=&387& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic2.zhimg.com/v2-f933b59bf10b8_r.jpg&&&figcaption&经谷歌翻译过的网站截图&/figcaption&&/figure&&p&可见测试结果还是具有一定参考价值的。&/p&&p&这个站点的源代码和官方的 HSIMP jQuery 插件可以在 GitHub 上找到,并且在输入测试时是脱机页面,如果你还是不够放心,大可以断网进行测试。&/p&&p&对这个网站感兴趣的同学可以关注公众号&b&wldxh8&/b&后在对话框回复 &b&0408&/b& 获取网址。&/p&&p&现在你知道了你的密码到底有多不安全了吧?好,我们继续。&/p&&p&&b&那么,当一个训练有素的黑客面对一台已经共享 WiFi 密码的路由器,他能干些什么?&/b&&/p&&p&知乎用户 &a class=&member_mention& href=&https://www.zhihu.com/people/c331d0fac2d788f80b1eb8ddc330173e& data-hash=&c331d0fac2d788f80b1eb8ddc330173e& data-hovercard=&p$b$c331d0fac2d788f80b1eb8ddc330173e&&@evi1m0&/a& 写了一篇在攻破隔壁女神家的路由器之后的故事。他不仅通过将个性化域名地址和获取到信息加以组合,从而获取到了女神的微博、微信、QQ、手机号、照片、各种社交资料。&/p&&p&&br&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-08283adb4d8532baa487_b.jpg& data-size=&normal& data-rawwidth=&600& data-rawheight=&515& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic3.zhimg.com/v2-08283adb4d8532baa487_r.jpg&&&figcaption&图片来源:知乎日报&/figcaption&&/figure&&figure&&img src=&https://pic3.zhimg.com/v2-acb6e6cb0fd58f16ad223f0_b.jpg& data-size=&normal& data-rawwidth=&600& data-rawheight=&906& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic3.zhimg.com/v2-acb6e6cb0fd58f16ad223f0_r.jpg&&&figcaption&图片来源:知乎日报&/figcaption&&/figure&&p&通过数据监听和劫持,还可以用女神的微博账号发步微博,甚至远程控制女神家的电视盒子播放爱情动作片。。。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-e4c1a59e53f542ef28f03f_b.jpg& data-size=&normal& data-rawwidth=&600& data-rawheight=&295& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic3.zhimg.com/v2-e4c1a59e53f542ef28f03f_r.jpg&&&figcaption&图片来源:知乎日报&/figcaption&&/figure&&p&事实上,由于 WiFi 网络的开放性和基于明文的网络协议,从 TCP/IP 到 HTTP 都是明文数据,这意味着数据很容易被“监听”,也很容易被“伪造”。监听的危害主要体现在隐私的安全上—— &/p&&blockquote&“对方登陆录何网站,我都能同时登入。其一举一动,我全部能看到。”刘彦硕(知乎网友 Evi1m0)告诉记者,虽然无法看到对方的账号、密码,但是他能劫持已登录的账户。(来源:重庆晚报)&/blockquote&&p&然而,其中的风险远不止于此, 数据“伪造”的危害更可怕。&/p&&p&通过一台已经被攻破的路由器上网,购物或者登陆网银,你虽然输入的是官网地址,黑客可以通过 ARP 欺骗或 DNS 欺骗,将网页跳转到假支付宝或假银行网站,诱导你下载病毒木马,严重威胁到我们的财产安全。 &/p&&figure&&img src=&https://pic1.zhimg.com/v2-94bb718c0e6bf64c141c_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&772& data-rawheight=&265& class=&origin_image zh-lightbox-thumb& width=&772& data-original=&https://pic1.zhimg.com/v2-94bb718c0e6bf64c141c_r.jpg&&&/figure&&p&所以,在一台裸奔的路由器上网,不只是你的照片、小电影有危险,你的支付宝、网银都岌岌可危。&/p&&p&而这一切,对于那些别有用心的人来说,真的&b&不是能不能的问题,只是想不想的问题&/b&。 &/p&&p&当然,造成这些路由器假装有密码的锅不应该让 WiFi 万能钥匙全部来背,毕竟用户安全意识不强也是主要原因。&/p&&p&但,如果没有 WiFi 万能钥匙共享的这些密码,将会大大降低路由器被“蹭网”的几率,从物理上无法连接 WiFi,又谈何攻破路由器呢?&/p&&p&&b&所以问题又来了,说到底还得靠自己,到底如何提高自家路由器的安全性呢?&/b& &/p&&p&1、不要使用 WiFi 万能钥匙类工具,如果一定要用,务必要检查,确保自家的 WiFi 密码不被分享,若已被分享,要第一时间修改密码并向万能钥匙反馈申请取消分享。 &/p&&p&2、路由器管理网页登录账户、密码,不要使用默认的 admin,可改为字母加数字的高强度密码;&/p&&p&3、打开路由器的“访客模式” 若路由器支持该功能,务必打开,它可以设定供访客接入的热点和密码,访客接入后只能通过无线网络来访问 Internet 而不能访问局域网,从而保证了局域网用户的网络安全。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-ad1de380e5b5e1c9bb84ff_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&685& data-rawheight=&374& class=&origin_image zh-lightbox-thumb& width=&685& data-original=&https://pic2.zhimg.com/v2-ad1de380e5b5e1c9bb84ff_r.jpg&&&/figure&&p&4、WIFI 密码选择 WPA2 加密认证方式,密码长度要在 10 位以上,最好是大小写字母、数字、特殊符号的组合,这样会大大提高黑客破解密码蹭网的难度(虽然去年也已爆出被攻破)。&/p&&p&5、隐藏 SSID /关闭广播 无线设备在搜索周围 WiFi 网络时将再也看不到你家的无线网络,连接时需要重新手动输入 SSID 和密码。&/p&&figure&&img src=&https://pic1.zhimg.com/v2-ea3accbaa9df_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&509& data-rawheight=&289& class=&origin_image zh-lightbox-thumb& width=&509& data-original=&https://pic1.zhimg.com/v2-ea3accbaa9df_r.jpg&&&/figure&&p&6、绑定指定设备的 MAC 地址,进入“无线设置→无线 MAC 地址过滤”,过滤规则选择“允许”,然后通过“添加新条目”的方式,将允许接入无线网络的 MAC 地址添加到列表中,最后再点击“启用过滤”。&/p&&figure&&img src=&https://pic7.zhimg.com/v2-f26a7ffa1_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&685& data-rawheight=&332& class=&origin_image zh-lightbox-thumb& width=&685& data-original=&https://pic7.zhimg.com/v2-f26a7ffa1_r.jpg&&&/figure&&p&7、修改路由器的默认后台管理地址,比如将默认的“192.168.1.1”修改为“192.168.10.1”。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-ac4dc1e0abe8a5f200c5d_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&685& data-rawheight=&221& class=&origin_image zh-lightbox-thumb& width=&685& data-original=&https://pic4.zhimg.com/v2-ac4dc1e0abe8a5f200c5d_r.jpg&&&/figure&&p&8、手动设置静态 IP 并关闭 DHCP。如果需要接入路由器的无线设备较多,可保留 DHCP,按照 MAC 地址分配 IP 。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-7dcbaf7a6f278b5cc6814_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&515& data-rawheight=&197& class=&origin_image zh-lightbox-thumb& width=&515& data-original=&https://pic3.zhimg.com/v2-7dcbaf7a6f278b5cc6814_r.jpg&&&/figure&&p&9、在设备中安装具有 ARP 局域网防护功能的安全软件,防止被黑客蹭网劫持。&/p&&p&10、及时查询路由器官网并更新路由器固件版本,封闭路由器“后门”。&/p&&p&11、最后,不要主动轻易告诉别人你的 WiFi 密码,别忘了《头号玩家》的 boss 是怎么挂的。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-cfc529c81b934e7cf92ad_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&673& data-rawheight=&280& class=&origin_image zh-lightbox-thumb& width=&673& data-original=&https://pic4.zhimg.com/v2-cfc529c81b934e7cf92ad_r.jpg&&&/figure&&p&虽然&b&花了两天时间,查了大量资料&/b&写了这篇文章,然而然并卵,安全意识真正强的玩家早就做好了防范措施,而大部分用户看完这篇,最多也就是“哇,这么可怕”——“我去,这么麻烦,还是算了吧”&/p&&p&嗯,所以说,百度李厂长的那句“&b&中国人对隐私问题没有那么敏感,很多情况下他们是愿意用隐私交换便捷性&/b&。”真的说错了吗?&/p&&p&&b&我不觉得。&/b&&/p&&p&&br&&/p&&p&&i&本文在&b&&a href=&https://zhuanlan.zhihu.com/c_& class=&internal&&网罗灯下黑&/a&&/b&知乎专栏及同名微信公众号(&b&wldxh8&/b&)&/i& &i&同步更新,觉得自己不是个正常人,想玩点和别人不一样的软件,来这里就对了!&/i&&/p&
如果你最近留意,可能会在朋友圈见到这样的标题:央视都曝光了!WiFi 万能钥匙盗取用户网络密码,快来看看吧!没错,这次真的是被央视《经济半小时》报道了,其实关于 WiFi 钥匙共享用户密码的争议从来就不是什么新鲜事,包括这次被工信部点名,提到的无非…
&figure&&img src=&https://pic2.zhimg.com/v2-fcbac35ff787_b.jpg& data-rawwidth=&750& data-rawheight=&340& class=&origin_image zh-lightbox-thumb& width=&750& data-original=&https://pic2.zhimg.com/v2-fcbac35ff787_r.jpg&&&/figure&&blockquote&作者:Java团长&p&原文链接:&a href=&https://link.zhihu.com/?target=https%3A//mp.weixin.qq.com/s/5OK2aNJ1fdnrvul8PT_ZiQ& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&40个Java多线程问题总结&/a&&br&&/p&&/blockquote&&h2&前言&/h2&&p&这篇文章主要是对多线程的问题进行总结的,因此罗列了40个多线程的问题。&/p&&p&这些多线程的问题,有些来源于各大网站、有些来源于自己的思考。可能有些问题网上有、可能有些问题对应的答案也有、也可能有些各位网友也都看过,但是本文写作的重心就是所有的问题都会按照自己的理解回答一遍,不会去看网上的答案,因此可能有些问题讲的不对,能指正的希望大家不吝指教。&/p&&h1&40个问题汇总&/h1&&h2&1、多线程有什么用?&/h2&&p&一个可能在很多人看来很扯淡的一个问题:我会用多线程就好了,还管它有什么用?在我看来,这个回答更扯淡。所谓”知其然知其所以然”,”会用”只是”知其然”,”为什么用”才是”知其所以然”,只有达到”知其然知其所以然”的程度才可以说是把一个知识点运用自如。OK,下面说说我对这个问题的看法:&/p&&p&(1)发挥多核CPU的优势&/p&&p&随着工业的进步,现在的笔记本、台式机乃至商用的应用服务器至少也都是双核的,4核、8核甚至16核的也都不少见,如果是单线程的程序,那么在双核CPU上就浪费了50%,在4核CPU上就浪费了75%。单核CPU上所谓的”多线程”那是假的多线程,同一时间处理器只会处理一段逻辑,只不过线程之间切换得比较快,看着像多个线程”同时”运行罢了。多核CPU上的多线程才是真正的多线程,它能让你的多段逻辑同时工作,多线程,可以真正发挥出多核CPU的优势来,达到充分利用CPU的目的。&/p&&p&(2)防止阻塞&/p&&p&从程序运行效率的角度来看,单核CPU不但不会发挥出多线程的优势,反而会因为在单核CPU上运行多线程导致线程上下文的切换,而降低程序整体的效率。但是单核CPU我们还是要应用多线程,就是为了防止阻塞。试想,如果单核CPU使用单线程,那么只要这个线程阻塞了,比方说远程读取某个数据吧,对端迟迟未返回又没有设置超时时间,那么你的整个程序在数据返回回来之前就停止运行了。多线程可以防止这个问题,多条线程同时运行,哪怕一条线程的代码执行读取数据阻塞,也不会影响其它任务的执行。&/p&&p&(3)便于建模&/p&&p&这是另外一个没有这么明显的优点了。假设有一个大的任务A,单线程编程,那么就要考虑很多,建立整个程序模型比较麻烦。但是如果把这个大的任务A分解成几个小任务,任务B、任务C、任务D,分别建立程序模型,并通过多线程分别运行这几个任务,那就简单很多了。&/p&&h2&2、创建线程的方式&/h2&&p&比较常见的一个问题了,一般就是两种:&/p&&p&(1)继承Thread类&/p&&p&(2)实现Runnable接口&/p&&p&至于哪个好,不用说肯定是后者好,因为实现接口的方式比继承类的方式更灵活,也能减少程序之间的耦合度,面向接口编程也是设计模式6大原则的核心。&/p&&h2&3、start()方法和run()方法的区别&/h2&&p&只有调用了start()方法,才会表现出多线程的特性,不同线程的run()方法里面的代码交替执行。如果只是调用run()方法,那么代码还是同步执行的,必须等待一个线程的run()方法里面的代码全部执行完毕之后,另外一个线程才可以执行其run()方法里面的代码。&/p&&h2&4、Runnable接口和Callable接口的区别&/h2&&p&有点深的问题了,也看出一个Java程序员学习知识的广度。&/p&&p&Runnable接口中的run()方法的返回值是void,它做的事情只是纯粹地去执行run()方法中的代码而已;Callable接口中的call()方法是有返回值的,是一个泛型,和Future、FutureTask配合可以用来获取异步执行的结果。&/p&&p&这其实是很有用的一个特性,因为多线程相比单线程更难、更复杂的一个重要原因就是因为多线程充满着未知性,某条线程是否执行了?某条线程执行了多久?某条线程执行的时候我们期望的数据是否已经赋值完毕?无法得知,我们能做的只是等待这条多线程的任务执行完毕而已。而Callable+Future/FutureTask却可以获取多线程运行的结果,可以在等待时间太长没获取到需要的数据的情况下取消该线程的任务,真的是非常有用。&/p&&h2&5、CyclicBarrier和CountDownLatch的区别&/h2&&p&两个看上去有点像的类,都在java.util.concurrent下,都可以用来表示代码运行到某个点上,二者的区别在于:&/p&&p&(1)CyclicBarrier的某个线程运行到某个点上之后,该线程即停止运行,直到所有的线程都到达了这个点,所有线程才重新运行;CountDownLatch则不是,某线程运行到某个点上之后,只是给某个数值-1而已,该线程继续运行&/p&&p&(2)CyclicBarrier只能唤起一个任务,CountDownLatch可以唤起多个任务&/p&&p&(3)CyclicBarrier可重用,CountDownLatch不可重用,计数值为0该CountDownLatch就不可再用了&/p&&h2&6、Volatile关键字的作用&/h2&&p&一个非常重要的问题,是每个学习、应用多线程的Java程序员都必须掌握的。理解volatile关键字的作用的前提是要理解Java内存模型,这里就不讲Java内存模型了,可以参见第31点,volatile关键字的作用主要有两个:&/p&&p&(1)多线程主要围绕可见性和原子性两个特性而展开,使用volatile关键字修饰的变量,保证了其在多线程之间的可见性,即每次读取到volatile变量,一定是最新的数据&/p&&p&(2)代码底层执行不像我们看到的高级语言—-Java程序这么简单,它的执行是Java代码–&字节码–&根据字节码执行对应的C/C++代码–&C/C++代码被编译成汇编语言–&和硬件电路交互,现实中,为了获取更好的性能JVM可能会对指令进行重排序,多线程下可能会出现一些意想不到的问题。使用volatile则会对禁止语义重排序,当然这也一定程度上降低了代码执行效率&/p&&p&从实践角度而言,volatile的一个重要作用就是和CAS结合,保证了原子性,详细的可以参见java.util.concurrent.atomic包下的类,比如AtomicInteger。&/p&&h2&7、什么是线程安全&/h2&&p&又是一个理论的问题,各式各样的答案有很多,我给出一个个人认为解释地最好的:如果你的代码在多线程下执行和在单线程下执行永远都能获得一样的结果,那么你的代码就是线程安全的。&/p&&p&这个问题有值得一提的地方,就是线程安全也是有几个级别的:&/p&&p&(1)不可变&/p&&p&像String、Integer、Long这些,都是final类型的类,任何一个线程都改变不了它们的值,要改变除非新创建一个,因此这些不可变对象不需要任何同步手段就可以直接在多线程环境下使用&/p&&p&(2)绝对线程安全&/p&&p&不管运行时环境如何,调用者都不需要额外的同步措施。要做到这一点通常需要付出许多额外的代价,Java中标注自己是线程安全的类,实际上绝大多数都不是线程安全的,不过绝对线程安全的类,Java中也有,比方说CopyOnWriteArrayList、CopyOnWriteArraySet&/p&&p&(3)相对线程安全&/p&&p&相对线程安全也就是我们通常意义上所说的线程安全,像Vector这种,add、remove方法都是原子操作,不会被打断,但也仅限于此,如果有个线程在遍历某个Vector、有个线程同时在add这个Vector,99%的情况下都会出现ConcurrentModificationException,也就是fail-fast机制。&/p&&p&(4)线程非安全&/p&&p&这个就没什么好说的了,ArrayList、LinkedList、HashMap等都是线程非安全的类&/p&&h2&8、Java中如何获取到线程dump文件&/h2&&p&死循环、死锁、阻塞、页面打开慢等问题,打线程dump是最好的解决问题的途径。所谓线程dump也就是线程堆栈,获取到线程堆栈有两步:&/p&&p&(1)获取到线程的pid,可以通过使用jps命令,在Linux环境下还可以使用ps -ef | grep java&/p&&p&(2)打印线程堆栈,可以通过使用jstack pid命令,在Linux环境下还可以使用kill -3 pid&/p&&p&另外提一点,Thread类提供了一个getStackTrace()方法也可以用于获取线程堆栈。这是一个实例方法,因此此方法是和具体线程实例绑定的,每次获取获取到的是具体某个线程当前运行的堆栈,&/p&&h2&9、一个线程如果出现了运行时异常会怎么样&/h2&&p&如果这个异常没有被捕获的话,这个线程就停止执行了。另外重要的一点是:如果这个线程持有某个某个对象的监视器,那么这个对象监视器会被立即释放&/p&&h2&10、如何在两个线程之间共享数据&/h2&&p&通过在线程之间共享对象就可以了,然后通过wait/notify/notifyAll、await/signal/signalAll进行唤起和等待,比方说阻塞队列BlockingQueue就是为线程之间共享数据而设计的&/p&&h2&11、sleep方法和wait方法有什么区别&/h2&&p&这个问题常问,sleep方法和wait方法都可以用来放弃CPU一定的时间,不同点在于如果线程持有某个对象的监视器,sleep方法不会放弃这个对象的监视器,wait方法会放弃这个对象的监视器&/p&&h2&12、生产者消费者模型的作用是什么&/h2&&p&这个问题很理论,但是很重要:&/p&&p&(1)通过平衡生产者的生产能力和消费者的消费能力来提升整个系统的运行效率,这是生产者消费者模型最重要的作用&/p&&p&(2)解耦,这是生产者消费者模型附带的作用,解耦意味着生产者和消费者之间的联系少,联系越少越可以独自发展而不需要收到相互的制约&/p&&h2&13、ThreadLocal有什么用&/h2&&p&简单说ThreadLocal就是一种以空间换时间的做法,在每个Thread里面维护了一个以开地址法实现的ThreadLocal.ThreadLocalMap,把数据进行隔离,数据不共享,自然就没有线程安全方面的问题了&/p&&h2&14、为什么wait()方法和notify()/notifyAll()方法要在同步块中被调用&/h2&&p&这是JDK强制的,wait()方法和notify()/notifyAll()方法在调用前都必须先获得对象的锁&/p&&h2&15、wait()方法和notify()/notifyAll()方法在放弃对象监视器时有什么区别&/h2&&p&wait()方法和notify()/notifyAll()方法在放弃对象监视器的时候的区别在于:wait()方法立即释放对象监视器,notify()/notifyAll()方法则会等待线程剩余代码执行完毕才会放弃对象监视器。&/p&&h2&16、为什么要使用线程池&/h2&&p&避免频繁地创建和销毁线程,达到线程对象的重用。另外,使用线程池还可以根据项目灵活地控制并发的数目。&/p&&h2&17、怎么检测一个线程是否持有对象监视器&/h2&&p&我也是在网上看到一道多线程面试题才知道有方法可以判断某个线程是否持有对象监视器:Thread类提供了一个holdsLock(Object obj)方法,当且仅当对象obj的监视器被某条线程持有的时候才会返回true,注意这是一个static方法,这意味着“某条线程”指的是当前线程。&/p&&h2&18、synchronized和ReentrantLock的区别&/h2&&p&synchronized是和if、else、for、while一样的关键字,ReentrantLock是类,这是二者的本质区别。既然ReentrantLock是类,那么它就提供了比synchronized更多更灵活的特性,可以被继承、可以有方法、可以有各种各样的类变量,ReentrantLock比synchronized的扩展性体现在几点上:&/p&&p&(1)ReentrantLock可以对获取锁的等待时间进行设置,这样就避免了死锁&/p&&p&(2)ReentrantLock可以获取各种锁的信息&/p&&p&(3)ReentrantLock可以灵活地实现多路通知&/p&&p&另外,二者的锁机制其实也是不一样的。ReentrantLock底层调用的是Unsafe的park方法加锁,synchronized操作的应该是对象头中mark word,这点我不能确定。&/p&&h2&19、ConcurrentHashMap的并发度是什么&/h2&&p&ConcurrentHashMap的并发度就是segment的大小,默认为16,这意味着最多同时可以有16条线程操作ConcurrentHashMap,这也是ConcurrentHashMap对Hashtable的最大优势,任何情况下,Hashtable能同时有两条线程获取Hashtable中的数据吗?&/p&&h2&20、ReadWriteLock是什么&/h2&&p&首先明确一下,不是说ReentrantLock不好,只是ReentrantLock某些时候有局限。如果使用ReentrantLock,可能本身是为了防止线程A在写数据、线程B在读数据造成的数据不一致,但这样,如果线程C在读数据、线程D也在读数据,读数据是不会改变数据的,没有必要加锁,但是还是加锁了,降低了程序的性能。&/p&&p&因为这个,才诞生了读写锁ReadWriteLock。ReadWriteLock是一个读写锁接口,ReentrantReadWriteLock是ReadWriteLock接口的一个具体实现,实现了读写的分离,读锁是共享的,写锁是独占的,读和读之间不会互斥,读和写、写和读、写和写之间才会互斥,提升了读写的性能。&/p&&h2&21、FutureTask是什么&/h2&&p&这个其实前面有提到过,FutureTask表示一个异步运算的任务。FutureTask里面可以传入一个Callable的具体实现类,可以对这个异步运算的任务的结果进行等待获取、判断是否已经完成、取消任务等操作。当然,由于FutureTask也是Runnable接口的实现类,所以FutureTask也可以放入线程池中。&/p&&h2&22、Linux环境下如何查找哪个线程使用CPU最长&/h2&&p&这是一个比较偏实践的问题,这种问题我觉得挺有意义的。可以这么做:&/p&&p&(1)获取项目的pid,jps或者ps -ef | grep java,这个前面有讲过&/p&&p&(2)top -H -p pid,顺序不能改变&/p&&p&这样就可以打印出当前的项目,每条线程占用CPU时间的百分比。注意这里打出的是LWP,也就是操作系统原生线程的线程号,我笔记本山没有部署Linux环境下的Java工程,因此没有办法截图演示,网友朋友们如果公司是使用Linux环境部署项目的话,可以尝试一下。&/p&&p&使用”top -H -p pid”+”jps pid”可以很容易地找到某条占用CPU高的线程的线程堆栈,从而定位占用CPU高的原因,一般是因为不当的代码操作导致了死循环。&/p&&p&最后提一点,”top -H -p pid”打出来的LWP是十进制的,”jps pid”打出来的本地线程号是十六进制的,转换一下,就能定位到占用CPU高的线程的当前线程堆栈了。&/p&&h2&23、Java编程写一个会导致死锁的程序&/h2&&p&第一次看到这个题目,觉得这是一个非常好的问题。很多人都知道死锁是怎么一回事儿:线程A和线程B相互等待对方持有的锁导致程序无限死循环下去。当然也仅限于此了,问一下怎么写一个死锁的程序就不知道了,这种情况说白了就是不懂什么是死锁,懂一个理论就完事儿了,实践中碰到死锁的问题基本上是看不出来的。&/p&&p&真正理解什么是死锁,这个问题其实不难,几个步骤:&/p&&p&(1)两个线程里面分别持有两个Object对象:lock1和lock2。这两个lock作为同步代码块的锁;&/p&&p&(2)线程1的run()方法中同步代码块先获取lock1的对象锁,Thread.sleep(xxx),时间不需要太多,50毫秒差不多了,然后接着获取lock2的对象锁。这么做主要是为了防止线程1启动一下子就连续获得了lock1和lock2两个对象的对象锁&/p&&p&(3)线程2的run)(方法中同步代码块先获取lock2的对象锁,接着获取lock1的对象锁,当然这时lock1的对象锁已经被线程1锁持有,线程2肯定是要等待线程1释放lock1的对象锁的&/p&&p&这样,线程1″睡觉”睡完,线程2已经获取了lock2的对象锁了,线程1此时尝试获取lock2的对象锁,便被阻塞,此时一个死锁就形成了。代码就不写了,占的篇幅有点多,Java多线程7:死锁这篇文章里面有,就是上面步骤的代码实现。&/p&&h2&24、怎么唤醒一个阻塞的线程&/h2&&p&如果线程是因为调用了wait()、sleep()或者join()方法而导致的阻塞,可以中断线程,并且通过抛出InterruptedException来唤醒它;如果线程遇到了IO阻塞,无能为力,因为IO是操作系统实现的,Java代码并没有办法直接接触到操作系统。&/p&&h2&25、不可变对象对多线程有什么帮助&/h2&&p&前面有提到过的一个问题,不可变对象保证了对象的内存可见性,对不可变对象的读取不需要进行额外的同步手段,提升了代码执行效率。&/p&&h2&26、什么是多线程的上下文切换&/h2&&p&多线程的上下文切换是指CPU控制权由一个已经正在运行的线程切换到另外一个就绪并等待获取CPU执行权的线程的过程。&/p&&h2&27、如果你提交任务时,线程池队列已满,这时会发生什么&/h2&&p&如果你使用的LinkedBlockingQueue,也就是无界队列的话,没关系,继续添加任务到阻塞队列中等待执行,因为LinkedBlockingQueue可以近乎认为是一个无穷大的队列,可以无限存放任务;如果你使用的是有界队列比方说ArrayBlockingQueue的话,任务首先会被添加到ArrayBlockingQueue中,ArrayBlockingQueue满了,则会使用拒绝策略RejectedExecutionHandler处理满了的任务,默认是AbortPolicy。&/p&&h2&28、Java中用到的线程调度算法是什么&/h2&&p&抢占式。一个线程用完CPU之后,操作系统会根据线程优先级、线程饥饿情况等数据算出一个总的优先级并分配下一个时间片给某个线程执行。&/p&&h2&29、Thread.sleep(0)的作用是什么&/h2&&p&这个问题和上面那个问题是相关的,我就连在一起了。由于Java采用抢占式的线程调度算法,因此可能会出现某条线程常常获取到CPU控制权的情况,为了让某些优先级比较低的线程也能获取到CPU控制权,可以使用Thread.sleep(0)手动触发一次操作系统分配时间片的操作,这也是平衡CPU控制权的一种操作。&/p&&h2&30、什么是自旋&/h2&&p&很多synchronized里面的代码只是一些很简单的代码,执行时间非常快,此时等待的线程都加锁可能是一种不太值得的操作,因为线程阻塞涉及到用户态和内核态切换的问题。既然synchronized里面的代码执行地非常快,不妨让等待锁的线程不要被阻塞,而是在synchronized的边界做忙循环,这就是自旋。如果做了多次忙循环发现还没有获得锁,再阻塞,这样可能是一种更好的策略。&/p&&h2&31、什么是Java内存模型&/h2&&p&Java内存模型定义了一种多线程访问Java内存的规范。Java内存模型要完整讲不是这里几句话能说清楚的,我简单总结一下Java内存模型的几部分内容:&/p&&p&(1)Java内存模型将内存分为了主内存和工作内存。类的状态,也就是类之间共享的变量,是存储在主内存中的,每次Java线程用到这些主内存中的变量的时候,会读一次主内存中的变量,并让这些内存在自己的工作内存中有一份拷贝,运行自己线程代码的时候,用到这些变量,操作的都是自己工作内存中的那一份。在线程代码执行完毕之后,会将最新的值更新到主内存中去&/p&&p&(2)定义了几个原子操作,用于操作主内存和工作内存中的变量&/p&&p&(3)定义了volatile变量的使用规则&/p&&p&(4)happens-before,即先行发生原则,定义了操作A必然先行发生于操作B的一些规则,比如在同一个线程内控制流前面的代码一定先行发生于控制流后面的代码、一个释放锁unlock的动作一定先行发生于后面对于同一个锁进行锁定lock的动作等等,只要符合这些规则,则不需要额外做同步措施,如果某段代码不符合所有的happens-before规则,则这段代码一定是线程非安全的&/p&&h2&32、什么是CAS&/h2&&p&CAS,全称为Compare and Set,即比较-设置。假设有三个操作数:内存值V、旧的预期值A、要修改的值B,当且仅当预期值A和内存值V相同时,才会将内存值修改为B并返回true,否则什么都不做并返回false。当然CAS一定要volatile变量配合,这样才能保证每次拿到的变量是主内存中最新的那个值,否则旧的预期值A对某条线程来说,永远是一个不会变的值A,只要某次CAS操作失败,永远都不可能成功。&/p&&h2&33、什么是乐观锁和悲观锁&/h2&&p&(1)乐观锁:就像它的名字一样,对于并发间操作产生的线程安全问题持乐观状态,乐观锁认为竞争不总是会发生,因此它不需要持有锁,将比较-设置这两个动作作为一个原子操作尝试去修改内存中的变量,如果失败则表示发生冲突,那么就应该有相应的重试逻辑。&/p&&p&(2)悲观锁:还是像它的名字一样,对于并发间操作产生的线程安全问题持悲观状态,悲观锁认为竞争总是会发生,因此每次对某资源进行操作时,都会持有一个独占的锁,就像synchronized,不管三七二十一,直接上了锁就操作资源了。&/p&&h2&34、什么是AQS&/h2&&p&简单说一下AQS,AQS全称为AbstractQueuedSychronizer,翻译过来应该是抽象队列同步器。&/p&&p&如果说java.util.concurrent的基础是CAS的话,那么AQS就是整个Java并发包的核心了,ReentrantLock、CountDownLatch、Semaphore等等都用到了它。AQS实际上以双向队列的形式连接所有的Entry,比方说ReentrantLock,所有等待的线程都被放在一个Entry中并连成双向队列,前面一个线程使用ReentrantLock好了,则双向队列实际上的第一个Entry开始运行。&/p&&p&AQS定义了对双向队列所有的操作,而只开放了tryLock和tryRelease方法给开发者使用,开发者可以根据自己的实现重写tryLock和tryRelease方法,以实现自己的并发功能。&/p&&h2&35、单例模式的线程安全性&/h2&&p&老生常谈的问题了,首先要说的是单例模式的线程安全意味着:某个类的实例在多线程环境下只会被创建一次出来。单例模式有很多种的写法,我总结一下:&/p&&p&(1)饿汉式单例模式的写法:线程安全&/p&&p&(2)懒汉式单例模式的写法:非线程安全&/p&&p&(3)双检锁单例模式的写法:线程安全&/p&&h2&36、Semaphore有什么作用&/h2&&p&Semaphore就是一个信号量,它的作用是限制某段代码块的并发数。Semaphore有一个构造函数,可以传入一个int型整数n,表示某段代码最多只有n个线程可以访问,如果超出了n,那么请等待,等到某个线程执行完毕这段代码块,下一个线程再进入。由此可以看出如果Semaphore构造函数中传入的int型整数n=1,相当于变成了一个synchronized了。&/p&&h2&37、Hashtable的size()方法中明明只有一条语句”return count”,为什么还要做同步?&/h2&&p&这是我之前的一个困惑,不知道大家有没有想过这个问题。某个方法中如果有多条语句,并且都在操作同一个类变量,那么在多线程环境下不加锁,势必会引发线程安全问题,这很好理解,但是size()方法明明只有一条语句,为什么还要加锁?&/p&&p&关于这个问题,在慢慢地工作、学习中,有了理解,主要原因有两点:&/p&&p&(1)同一时间只能有一条线程执行固定类的同步方法,但是对于类的非同步方法,可以多条线程同时访问。所以,这样就有问题了,可能线程A在执行Hashtable的put方法添加数据,线程B则可以正常调用size()方法读取Hashtable中当前元素的个数,那读取到的值可能不是最新的,可能线程A添加了完了数据,但是没有对size++,线程B就已经读取size了,那么对于线程B来说读取到的size一定是不准确的。而给size()方法加了同步之后,意味着线程B调用size()方法只有在线程A调用put方法完毕之后才可以调用,这样就保证了线程安全性&/p&&p&(2)CPU执行代码,执行的不是Java代码,这点很关键,一定得记住。Java代码最终是被翻译成汇编代码执行的,汇编代码才是真正可以和硬件电路交互的代码。即使你看到Java代码只有一行,甚至你看到Java代码编译之后生成的字节码也只有一行,也不意味着对于底层来说这句语句的操作只有一个。一句”return count”假设被翻译成了三句汇编语句执行,完全可能执行完第一句,线程就切换了。&/p&&h2&38、线程类的构造方法、静态块是被哪个线程调用的&/h2&&p&这是一个非常刁钻和狡猾的问题。请记住:线程类的构造方法、静态块是被new这个线程类所在的线程所调用的,而run方法里面的代码才是被线程自身所调用的。&/p&&p&如果说上面的说法让你感到困惑,那么我举个例子,假设Thread2中new了Thread1,main函数中new了Thread2,那么:&/p&&p&(1)Thread2的构造方法、静态块是main线程调用的,Thread2的run()方法是Thread2自己调用的&/p&&p&(2)Thread1的构造方法、静态块是Thread2调用的,Thread1的run()方法是Thread1自己调用的&/p&&h2&39、同步方法和同步块,哪个是更好的选择&/h2&&p&同步块,这意味着同步块之外的代码是异步执行的,这比同步整个方法更提升代码的效率。请知道一条原则:同步的范围越少越好。&/p&&p&借着这一条,我额外提一点,虽说同步的范围越少越好,但是在Java虚拟机中还是存在着一种叫做锁粗化的优化方法,这种方法就是把同步范围变大。这是有用的,比方说StringBuffer,它是一个线程安全的类,自然最常用的append()方法是一个同步方法,我们写代码的时候会反复append字符串,这意味着要进行反复的加锁-&解锁,这对性能不利,因为这意味着Java虚拟机在这条线程上要反复地在内核态和用户态之间进行切换,因此Java虚拟机会将多次append方法调用的代码进行一个锁粗化的操作,将多次的append的操作扩展到append方法的头尾,变成一个大的同步块,这样就减少了加锁–&解锁的次数,有效地提升了代码执行的效率。&/p&&h2&40、高并发、任务执行时间短的业务怎样使用线程池?并发不高、任务执行时间长的业务怎样使用线程池?并发高、业务执行时间长的业务怎样使用线程池?&/h2&&p&这是我在并发编程网上看到的一个问题,把这个问题放在最后一个,希望每个人都能看到并且思考一下,因为这个问题非常好、非常实际、非常专业。关于这个问题,个人看法是:&/p&&p&(1)高并发、任务执行时间短的业务,线程池线程数可以设置为CPU核数+1,减少线程上下文的切换&/p&&p&(2)并发不高、任务执行时间长的业务要区分开看:&/p&&p&a)假如是业务时间长集中在IO操作上,也就是IO密集型的任务,因为IO操作并不占用CPU,所以不要让所有的CPU闲下来,可以加大线程池中的线程数目,让CPU处理更多的业务&/p&&p&b)假如是业务时间长集中在计算操作上,也就是计算密集型任务,这个就没办法了,和(1)一样吧,线程池中的线程数设置得少一些,减少线程上下文的切换&/p&&p&(3)并发高、业务执行时间长,解决这种类型任务的关键不在于线程池而在于整体架构的设计,看看这些业务里面某些数据是否能做缓存是第一步,增加服务器是第二步,至于线程池的设置,设置参考(2)。最后,业务执行时间长的问题,也可能需要分析一下,看看能不能使用中间件对任务进行拆分和解耦。&/p&&p&&a href=&https://link.zhihu.com/?target=https%3A//mp.weixin.qq.com/s/5OK2aNJ1fdnrvul8PT_ZiQ& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&阅读原文&/a&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-9d70dd9d3a01aeb00034_b.jpg& data-rawwidth=&900& data-rawheight=&500& class=&origin_image zh-lightbox-thumb& width=&900& data-original=&https://pic2.zhimg.com/v2-9d70dd9d3a01aeb00034_r.jpg&&&/figure&
作者:Java团长原文链接: 前言这篇文章主要是对多线程的问题进行总结的,因此罗列了40个多线程的问题。这些多线程的问题,有些来源于各大网站、有些来源于自己的思考。可能有些问题网上有、可能有些问题对应的答案也有、也可能有些…
谢邀!(那个,其实没人邀...)&br&&b&如果没太多时间请瞬移至文末着重推荐部分。&/b&&br&
ABBYY Finereader &p&光学字符识别软件。用于将纸质文档上的内容经过扫描之后转换为电子版文档存储起来,方便查找、修改和分享,提高资料使用效率。&/p&&p&启动界面:&figure&&img src=&https://pic3.zhimg.com/cd0c2f43b2c05b7bf346a2_b.jpg& data-rawwidth=&680& data-rawheight=&354& class=&origin_image zh-lightbox-thumb& width=&680& data-original=&https://pic3.zhimg.com/cd0c2f43b2c05b7bf346a2_r.jpg&&&/figure&&/p&&p&操作界面:&figure&&img src=&https://pic4.zhimg.com/78d8d43f287c412e58be7b_b.jpg& data-rawwidth=&680& data-rawheight=&382& class=&origin_image zh-lightbox-thumb& width=&680& data-original=&https://pic4.zhimg.com/78d8d43f287c412e58be7b_r.jpg&&&/figure&&/p&&p&此软件附带的ABBYY Screenshot Reader用于快速截取图像和文本两类屏幕截图。&/p&&figure&&img src=&https://pic3.zhimg.com/51dfd4631142ffa03e67c6d7f9a71b36_b.jpg& data-rawwidth=&342& data-rawheight=&311& class=&content_image& width=&342&&&/figure&&br&&p&区域截取:&figure&&img src=&https://pic1.zhimg.com/632fb94a030f58b9af6d0_b.jpg& data-rawwidth=&694& data-rawheight=&471& class=&origin_image zh-lightbox-thumb& width=&694& data-original=&https://pic1.zhimg.com/632fb94a030f58b9af6d0_r.jpg&&&/figure&&/p&&p&识别中:&/p&&figure&&img src=&https://pic3.zhimg.com/dfd9ffd2f1d8b320fc76_b.jpg& data-rawwidth=&448& data-rawheight=&146& class=&origin_image zh-lightbox-thumb& width=&448& data-original=&https://pic3.zhimg.com/dfd9ffd2f1d8b320fc76_r.jpg&&&/figure&&br&2.
ADSafe &p&免费去广告。&/p&&figure&&img src=&https://pic3.zhimg.com/1a47f5bedd5c3a0131de_b.jpg& data-rawwidth=&680& data-rawheight=&480& class=&origin_image zh-lightbox-thumb& width=&680& data-original=&https://pic3.zhimg.com/1a47f5bedd5c3a0131de_r.jpg&&&/figure&&br&3.
Ashampoo Snap&br&&p&截图软件。其长图截取功能,能够截取整个竖直方向上的网页、文件夹或者文档的内容。支持任意区域截图、菜单截图,可录制桌面视频。&figure&&img src=&https://pic1.zhimg.com/a39b6e4bc827efebc25dd78_b.jpg& data-rawwidth=&174& data-rawheight=&285& class=&content_image& width=&174&&&/figure&&/p&&figure&&img src=&https://pic1.zhimg.com/bb6ea7acfb2a29e96a67f14ea5f24780_b.jpg& data-rawwidth=&680& data-rawheight=&49& class=&origin_image zh-lightbox-thumb& width=&680& data-original=&https://pic1.zhimg.com/bb6ea7acfb2a29e96a67f14ea5f24780_r.jpg&&&/figure&&p&支持对图片进行简单编辑:&/p&&figure&&img src=&https://pic1.zhimg.com/faae6eed848cb057edaa88_b.jpg& data-rawwidth=&680& data-rawheight=&382& class=&origin_image zh-lightbox-thumb& width=&680& data-original=&https://pic1.zhimg.com/faae6eed848cb057edaa88_r.jpg&&&/figure&&br&4.
AutoHotKey&br&&p&神器之一,易学的脚本语言。简单的可用来写些快捷键达到快速替换文字、启动程序、控制程序、打开文件夹、批处理等功能,提高电脑的操作速度。更多功能&b&取决于你的想象力!&/b&(有人用它写出OCR识别功能、搭配摄像头实现热水器水开之后自动通知功能…)&/p&&figure&&img src=&https://pic1.zhimg.com/ec85abef547a3b0a5a10e0_b.jpg& data-rawwidth=&691& data-rawheight=&131& class=&origin_image zh-lightbox-thumb& width=&691& data-original=&https://pic1.zhimg.com/ec85abef547a3b0a5a10e0_r.jpg&&&/figure&&p&推荐AHK交流群:。&/p&&br&5.
Bandizip&br&&figure&&img src=&https://pic1.zhimg.com/edecf64f4ce8_b.jpg& data-rawwidth=&690& data-rawheight=&368& class=&origin_image zh-lightbox-thumb& width=&690& data-original=&https://pic1.zhimg.com/edecf64f4ce8_r.jpg&&&/figure&&br&6.
CCleaner &br&&p&系统优化工具。主要用来清除Windows系统垃圾文件,体积小,运行快,可以对文件夹、历史记录、回收站等进行垃圾清理,并可对注册表进行垃圾项扫描、清理。附带软件卸载功能。&/p&&figure&&img src=&https://pic4.zhimg.com/acfc6fd332c282bd77cc86d3c37b89df_b.jpg& data-rawwidth=&690& data-rawheight=&493& class=&origin_image zh-lightbox-thumb& width=&690& data-original=&https://pic4.zhimg.com/acfc6fd332c282bd77cc86d3c37b89df_r.jpg&&&/figure&&br&7.
Duplicate Cleaner&br&&p&快速、高效查删电脑里的重复文件。&/p&&figure&&img src=&https://pic3.zhimg.com/91c17f12c33be2bd5e4d_b.jpg& data-rawwidth=&680& data-rawheight=&450& class=&origin_image zh-lightbox-thumb& width=&680& data-original=&https://pic3.zhimg.com/91c17f12c33be2bd5e4d_r.jpg&&&/figure&&br&8.
Everything&br&&p&神器级软件,极速本地文件搜索工具(第一次启动需要几十秒钟来建立索引)。支持通配符、布尔、正则等表达式搜索。速度之快,令人发指!&/p&&figure&&img src=&https://pic2.zhimg.com/0a422b2edfbb2a9b00c0e98d36f4fded_b.jpg& data-rawwidth=&680& data-rawheight=&455& class=&origin_image zh-lightbox-thumb& width=&680& data-original=&https://pic2.zhimg.com/0a422b2edfbb2a9b00c0e98d36f4fded_r.jpg&&&/figure&&p&Everything自带的命令行选项搭配AutoHotkey的热键启动功能可以进一步提高搜索的速度,AHK代码如下(注意将深色部分的内容更改为你电脑里Everything.exe所在位置):&/p&&p&&i&#f::&/i&&/p&&p&&i&ClipboardOld=%ClipboardAll%&/i&&/p&&p&&i&Clipboard=&/i&&/p&&p&&i&SendInput ^c&/i&&/p&&p&&i&ClipWait 1&/i&&/p&&p&&i&If Clipboard=&/i&&/p&&p&&i&{&/i&&/p&&p&&i&Loop 3&/i&&/p&&p&&i&{&/i&&/p&&p&&i&
ToolTip &/i&&i&复制无效&/i&&i&`!&/i&&/p&&p&&i&
sleep 500&/i&&/p&&p&&i&
ToolTip&/i&&/p&&p&&i&
sleep 200&/i&&/p&&p&&i&}&/i&&/p&&p&&i&}&/i&&/p&&p&&i&Else&/i&&/p&&p&&i&{&/i&&/p&&p&&i&
Run &&b&F:\Program
Files\Everything\Everything.exe&/b&& -search %Clipboard%&/i&&/p&&p&&i&}&/i&&/p&&p&&i&Clipboard=%ClipboardOld%&/i&&/p&&p&&i&Return&/i&&/p&&br&&p&实现功能:按Win+f键在Everything里快速搜索鼠标光标圈选的文字。&/p&&p&类似Everything的还有国产的闪电搜索,支持图片预览功能,只是整体功能不如Everything强大:&/p&&figure&&img src=&https://pic3.zhimg.com/4557eecf17fd43c334c2a3e686dde1a2_b.jpg& data-rawwidth=&680& data-rawheight=&372& class=&origin_image zh-lightbox-thumb& width=&680& data-original=&https://pic3.zhimg.com/4557eecf17fd43c334c2a3e686dde1a2_r.jpg&&&/figure&&br&9.
FileLocator Pro&br&&p&比起Everything的文件搜索,这款是在文档里进行关键字检索的软件,在不打开文档的前提下快速检索多种格式的文档,支持压缩包内的文档检索!资料搜索效率的又一大提升~&/p&&figure&&img src=&https://pic2.zhimg.com/b4555c88cefc5_b.jpg& data-rawwidth=&680& data-rawheight=&347& class=&origin_image zh-lightbox-thumb& width=&680& data-original=&https://pic2.zhimg.com/b4555c88cefc5_r.jpg&&&/figure&&br&10.
f.lux&br&&p&免费的屏幕亮度、色温调节软件,给予眼睛实时保护。&/p&&figure&&img src=&https://pic4.zhimg.com/78f5f1d58f6ec_b.jpg& data-rawwidth=&583& data-rawheight=&242& class=&origin_image zh-lightbox-thumb& width=&583& data-original=&https://pic4.zhimg.com/78f5f1d58f6ec_r.jpg&&&/figure&&p&安装f.lux后,需要在设置选项里输入自己的地理位置,之后f.lux就会依据位置得出当地当天日升日落时间,并根据这个时间进行亮度和色温的自动调节。&/p&&figure&&img src=&https://pic2.zhimg.com/4ac23cd6ef0a_b.jpg& data-rawwidth=&399& data-rawheight=&478& class=&content_image& width=&399&&&/figure&&br&11.
Foxit Reader&br&&p&免费的福昕PDF阅读器,比Adobe reader更小,功能更强悍,可编辑、创建PDF等。&/p&&figure&&img src=&https://pic4.zhimg.com/e140bbef7123_b.jpg& data-rawwidth=&680& data-rawheight=&362& class=&origin_image zh-lightbox-thumb& width=&680& data-original=&https://pic4.zhimg.com/e140bbef7123_r.jpg&&&/figure&&br&12.
GoogleEarth&br&&p&谷歌地球,很有意思的软件,除了可以观看地球之外,还可以观看星空、火星、月球。&/p&&figure&&img src=&https://pic1.zhimg.com/ad1f_b.jpg& data-rawwidth=&680& data-rawheight=&425& class=&origin_image zh-lightbox-thumb& width=&680& data-original=&https://pic1.zhimg.com/ad1f_r.jpg&&&/figure&&br&&figure&&img src=&https://pic3.zhimg.com/faf0812d92efafd07baf6_b.jpg& data-rawwidth=&680& data-rawheight=&472& class=&origin_image zh-lightbox-thumb& width=&680& data-original=&https://pic3.zhimg.com/faf0812d92efafd07baf6_r.jpg&&&/figure&&br&&br&13.
K-Lite Codec Pack&br&&p&一流的视频、音频解码器,安装之后可让系统自带的Windows
Media Playe播放多种格式的视频和图片。&/p&&p&安装过程:&/p&&figure&&img src=&https://pic3.zhimg.com/cee2f089dc7a8327dbb0f42_b.jpg& data-rawwidth=&680& data-rawheight=&581& class=&origin_image zh-lightbox-thumb& width=&680& data-original=&https://pic3.zhimg.com/cee2f089dc7a8327dbb0f42_r.jpg&&&/figure&&p&安装之后使用Windows Media Playe播放视频:&/p&&figure&&img src=&https://pic3.zhimg.com/dfc930ece1a387fc2e6432_b.jpg& data-rawwidth=&693& data-rawheight=&311& class=&origin_image zh-lightbox-thumb& width=&693& data-original=&https://pic3.zhimg.com/dfc930ece1a387fc2e6432_r.jpg&&&/figure&&br&14.
KMPlayer&br&&p&功能强大的影音播放软件。使用倍速播放功能看视频很省时间。&/p&&figure&&img src=&https://pic4.zhimg.com/fbfa_b.jpg& data-rawwidth=&697& data-rawheight=&440& class=&origin_image zh-lightbox-thumb& width=&697& data-original=&https://pic4.zhimg.com/fbfa_r.jpg&&&/figure&&br&15.
Listary&br&&p&文件搜索辅助软件,拥有和Everything一样的搜索速度!&/p&&figure&&img src=&https://pic2.zhimg.com/d9ed2a0d6c9270efdd2bc5_b.jpg& data-rawwidth=&370& data-rawheight=&436& class=&content_image& width=&370&&&/figure&&figure&&img src=&https://pic3.zhimg.com/8ad2e113e0674b827496_b.jpg& data-rawwidth=&680& data-rawheight=&561& class=&origin_image zh-lightbox-thumb& width=&680& data-original=&https://pic3.zhimg.com/8ad2e113e0674b827496_r.jpg&&&/figure&&figure&&img src=&https://pic3.zhimg.com/1fe8ec3ffef2e43df85ee679bfed702a_b.jpg& data-rawwidth=&680& data-rawheight=&362& class=&origin_image zh-lightbox-thumb& width=&680& data-original=&https://pic3.zhimg.com/1fe8ec3ffef2e43df85ee679bfed702a_r.jpg&&&/figure&&br&16.
LockHunter&br&&p&软件卸载后偶尔会遇到剩余文件被占用而不能删除的问题:&/p&&figure&&img src=&https://pic3.zhimg.com/84bd64621eaf118f4e23f02_b.jpg& data-rawwidth=&495& data-rawheight=&289& class=&origin_image zh-lightbox-thumb& width=&495& data-original=&https://pic3.zhimg.com/84bd64621eaf118f4e23f02_r.jpg&&&/figure&&p&LockHunter,轻松解决占用问题,并支持查看、结束占用进程。&/p&&p&右键菜单选项,快速查看占用进程:&/p&&figure&&img src=&https://pic2.zhimg.com/2391e4bbf6bc_b.jpg& data-rawwidth=&461& data-rawheight=&316& class=&origin_image zh-lightbox-thumb& width=&461& data-original=&https://pic2.zhimg.com/2391e4bbf6bc_r.jpg&&&/figure&&br&&p&显示占用进程,并提供处理方案供选择:&/p&&figure&&img src=&https://pic3.zhimg.com/4c35f76aad3ffb6d21f1d9da_b.jpg& data-rawwidth=&550& data-rawheight=&578& class=&origin_image zh-lightbox-thumb& width=&550& data-original=&https://pic3.zhimg.com/4c35f76aad3ffb6d21f1d9da_r.jpg&&&/figure&&br&17. Picasa&br&&p&Google公司的图片浏览、编辑工具。&/p&&p&启动界面:&/p&&figure&&img src=&https://pic2.zhimg.com/81ef7b986b010efaeefacd1_b.jpg& data-rawwidth=&554& data-rawheight=&203& class=&origin_image zh-lightbox-thumb& width=&554& data-original=&https://pic2.zhimg.com/81ef7b986b010efaeefacd1_r.jpg&&&/figure&&p&操作界面:&/p&&figure&&img src=&https://pic3.zhimg.com/1bd8cbcf63d4da5e677a_b.jpg& data-rawwidth=&680& data-rawheight=&362& class=&origin_image zh-lightbox-thumb& width=&680& data-original=&https://pic3.zhimg.com/1bd8cbcf63d4da5e677a_r.jpg&&&/figure&&br&18.
RevoUninPro&br&&p&强力卸载工具,卸载软件并扫描其文件、文件夹和注册表项目,将程序彻底移除。&/p&&figure&&img src=&https://pic4.zhimg.com/ac5f19bdaf377c4c18bafc8cc3aa354b_b.jpg& data-rawwidth=&680& data-rawheight=&388& class=&origin_image zh-lightbox-thumb& width=&680& data-original=&https://pic4.zhimg.com/ac5f19bdaf377c4c18bafc8cc3aa354b_r.jpg&&&/figure&&p&扫描:&/p&&figure&&img src=&https://pic2.zhimg.com/dc375aec437bb32aa66275_b.jpg& data-rawwidth=&680& data-rawheight=&401& class=&origin_image zh-lightbox-thumb& width=&680& data-original=&https://pic2.zhimg.com/dc375aec437bb32aa66275_r.jpg&&&/figure&&figure&&img src=&https://pic2.zhimg.com/4a03ab7aeae1d5eecc9e8da8c2b879f5_b.jpg& data-rawwidth=&680& data-rawheight=&402& class=&origin_image zh-lightbox-thumb& width=&680& data-original=&https://pic2.zhimg.com/4a03ab7aeae1d5eecc9e8da8c2b879f5_r.jpg&&&/figure&&br&19.
Pushbullet&br&&p&子弹推送:在设备之间推送网址、文件,也可订阅频道(类似RSS)或免费创建自己的频道供别人订阅。&/p&&p&支持平台:&figure&&img src=&https://pic3.zhimg.com/3a92ceed8dabe_b.jpg& data-rawwidth=&680& data-rawheight=&367& class=&origin_image zh-lightbox-thumb& width=&680& data-original=&https://pic3.zhimg.com/3a92ceed8dabe_r.jpg&&&/figure&&/p&&p&手机推送至电脑(右侧):&/p&&figure&&img src=&https://pic3.zhimg.com/d0cabeef09715dcff864ab62_b.jpg& data-rawwidth=&680& data-rawheight=&382& class=&origin_image zh-lightbox-thumb& width=&680& data-original=&https://pic3.zhimg.com/d0cabeef09715dcff864ab62_r.jpg&&&/figure&&br&20.
Adobe Bridge &br&&p&作为Adobe Creative Suite 的控制中心,可在Adobe创意套件中使用,也可单独用来浏览、访问PSD、AI、INDD、Adobe PDF 文件以及其它 Adobe 和非 Adobe 应用程序文件。&/p&&figure&&img src=&https://pic1.zhimg.com/123eeee03c_b.jpg& data-rawwidth=&680& data-rawheight=&362& class=&origin_image zh-lightbox-thumb& width=&680& data-original=&https://pic1.zhimg.com/123eeee03c_r.jpg&&&/figure&&p&审阅模式(以及局部放大功能):&/p&&figure&&img src=&https://pic1.zhimg.com/6e1bc9c307cdde43c254a0_b.jpg& data-rawwidth=&680& data-rawheight=&382& class=&origin_image zh-lightbox-thumb& width=&680& data-original=&https://pic1.zhimg.com/6e1bc9c307cdde43c254a0_r.jpg&&&/figure&&br&21.
1Checker&br&&p&免费的英语写作辅助软件:1Checker(易改)。用来检查、修改文章中的单词和语法错误。&/p&&p&官方简介:&/p&&figure&&img src=&https://pic2.zhimg.com/8ecb003c5f05df8211bd_b.jpg& data-rawwidth=&680& data-rawheight=&415& class=&origin_image zh-lightbox-thumb& width=&680& data-original=&https://pic2.zhimg.com/8ecb003c5f05df8211bd_r.jpg&&&/figure&&p&检查前:&/p&&figure&&img src=&https://pic3.zhimg.com/c2f13ef9ef02a70bf3436_b.jpg& data-rawwidth=&680& data-rawheight=&455& class=&origin_image zh-lightbox-thumb& width=&680& data-original=&https://pic3.zhimg.com/c2f13ef9ef02a70bf3436_r.jpg&&&/figure&&p&检查后的错误统计和评测:&/p&&figure&&img src=&https://pic1.zhimg.com/dacbf6bd1a07bdff244f84_b.jpg& data-rawwidth=&680& data-rawheight=&455& class=&origin_image zh-lightbox-thumb& width=&680& data-original=&https://pic1.zhimg.com/dacbf6bd1a07bdff244f84_r.jpg&&&/figure&&p&高亮错误并提供讲解:&/p&&figure&&img src=&https://pic1.zhimg.com/0fc034e3baf3a527acd1a0ae10d3cea4_b.jpg& data-rawwidth=&680& data-rawheight=&455& class=&origin_image zh-lightbox-thumb& width=&680& data-original=&https://pic1.zhimg.com/0fc034e3baf3a527acd1a0ae10d3cea4_r.jpg&&&/figure&&br&22.
Ditto&br&&p&剪贴板增强软件:&/p&&figure&&img src=&https://pic3.zhimg.com/e6a1d701e6_b.jpg& data-rawwidth=&554& data-rawheight=&723& class=&origin_image zh-lightbox-thumb& width=&554& data-original=&https://pic3.zhimg.com/e6a1d701e6_r.jpg&&&/figure&&p&局域网电脑可以同步剪贴板:&/p&&figure&&img src=&https://pic3.zhimg.com/c34ad7ecb587b8beb4993e6_b.jpg& data-rawwidth=&554& data-rawheight=&504& class=&origin_image zh-lightbox-thumb& width=&554& data-original=&https://pic3.zhimg.com/c34ad7ecb587b8beb4993e6_r.jpg&&&/figure&&br&23.
WindowTabs&br&&p&为程序添加类似Chrome的多标签页功能。&/p&&p&多标签页状态下的资源管理器:&/p&&figure&&img src=&https://pic4.zhimg.com/b40f3e14d24ac909aecf2dd9f496d6ef_b.jpg& data-rawwidth=&680& data-rawheight=&362& class=&origin_image zh-lightbox-thumb& width=&680& data-original=&https://pic4.zhimg.com/b40f3e14d24ac909aecf2dd9f496d6ef_r.jpg&&&/figure&&p&多标签页状态下的Word:&figure&&img src=&https://pic4.zhimg.com/5a3be3b265d0c33027fb_b.jpg& data-rawwidth=&680& data-rawheight=&362& class=&origin_image zh-lightbox-thumb& width=&680& data-original=&https://pic4.zhimg.com/5a3be3b265d0c33027fb_r.jpg&&&/figure&&/p&&br&24.
硕鼠&br&&p&专业的视频下载工具,提供土豆、优酷、我乐、酷六、新浪、搜狐、CCTV等90个主流视频网站的解析+下载+合并/转换一条龙服务,支持下载整部电视剧。(下载之后的影片请勿传播!)&/p&&figure&&img src=&https://pic4.zhimg.com/662c34a1b602d4bb8cefa3bc3389e0eb_b.jpg& data-rawwidth=&680& data-rawheight=&395& class=&origin_image zh-lightbox-thumb& width=&680& data-original=&https://pic4.zhimg.com/662c34a1b602d4bb8cefa3bc3389e0eb_r.jpg&&&/figure&&p&解析电视剧《历史转折中的邓小平》:&/p&&figure&&img src=&https://pic4.zhimg.com/e37a27ce5f0253_b.jpg& data-rawwidth=&680& data-rawheight=&362& class=&origin_image zh-lightbox-thumb& width=&680& data-original=&https://pic4.zhimg.com/e37a27ce5f0253_r.jpg&&&/figure&&p&全剧下载中:&/p&&figure&&img src=&https://pic3.zhimg.com/fb3ff217fc553ad9a4249fa_b.jpg& data-rawwidth=&680& data-rawheight=&366& class=&origin_image zh-lightbox-thumb& width=&680& data-original=&https://pic3.zhimg.com/fb3ff217fc553ad9a4249fa_r.jpg&&&/figure&&br&25.
Scatter&br&&p&在手机、电脑之间同步剪贴板。电脑向手机传文件只需在电脑上选中文件按Ctrl+C即可,手机向电脑传文件在手机端选中文件发送至Scatter即可。&/p&&p&手机端:&/p&&figure&&img src=&https://pic1.zhimg.com/d676f39e6d6b0bb30eeac8_b.jpg& data-rawwidth=&446& data-rawheight=&793& class=&origin_image zh-lightbox-thumb& width=&446& data-original=&https://pic1.zhimg.com/d676f39e6d6b0bb30eeac8_r.jpg&&&/figure&&br&&p&----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------&/p&&p&--------------------------------------------------------------------------------------------------------------------------------------------&/p&&br&稿完!如果没太多时间看我喳喳,&b&着重推荐:&br&&/b&&p&&b&AutoHotKey、Everything、f.lux、Scatter。&/b&&/p&&p&&b&插个硬广,本人新店,大伙随手点一下进来攒个流量吧,如果您非要点个收藏、加入购物车&/b&&b&啊&/b&&b&什么的小弟在此可是感激涕零啊:&/b&&b&&a href=&//link.zhihu.com/?target=https%3A//item.taobao.com/item.htm%3Fspm%3Da1z10.3-c.w1671.9.szvTwr%26id%3D& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&我戳&/a&!!&/b&&/p&
谢邀!(那个,其实没人邀...) 如果没太多时间请瞬移至文末着重推荐部分。
1. ABBYY Finereader 光学字符识别软件。用于将纸质文档上的内容经过扫描之后转换为电子版文档存储起来,方便查找、修改和分享,提高资料使用效率。启动界面:操作界面:此软件…
社交APP的后台管理没有深入接触过,但是个人感觉后台管理系统都是相通的,所以谈谈我所接触的后台管理系统吧,以新浪微博为例。&br&&br&&p&在新浪微博快半年了,主要接触商业开放平台的商业数据、后台管理系统等模块,刚开始自己接触时有很多疑惑,网上关于这方面的资料也比较少,在此简单的将新浪微博后台管理系统作个总结,供参考。&/p&&br&&p&&strong&后台管理系统是内容管理系统Content Manage System(简称CMS)的一个子集。&/strong&CMS是Content Management System的缩写,意为&内容管理系统&。内容管理系统是企业信息化建设和电子政务的新宠,也是一个相对较新的市场。业界公认的国内比较权威的产品有CmsTop、TurboCMS、TRS。对于内容管理,业界还没有一个统一的定义,不同的机构有不同的理解。&/p&&br&&p&一般来说,后台管理系统涉及功能比较多,包括:&/p&&br&&p&&strong&一.系统管理:&/strong&管理员管理,也称权限管理。可以新增管理员及修改管理员密码;数据库备份,为保证您的数据安全本系统采用了数据库备份功能;上传文件管理,管理你增加产品时上传的图片及其他文件。&/p&&br&&p&&strong&二.企业信息:&/strong&可设置修改企业的各类信息及介绍。&/p&&br&&p&&strong&三.产品管理:&/strong&产品类别新增修改管理,产品添加修改以及产品的审核。&/p&&br&&p&&strong&四.下载中心:&/strong&可分类增加各种文件,如驱动和技术文档等文件的下载。&/p&&br&&p&&strong&五.订单管理:&/strong&查看订单的详细信息及订单处理。&/p&&br&&p&&strong&六.会员管理:&/strong&查看修改删除会员资料,及锁定解锁功能可在线给会员发信。&/p&&br&&p&&strong&七.新闻管理:&/strong&能分大类和小类新闻,不再受新闻栏目的限制。&/p&&br&&p&&strong&八.留言管理:&/strong&管理信息反馈及注册会员的留言,注册会员的留言可在线回复,未注册会员可使用在线发信功能给于答复。&/p&&br&&p&&strong&九.荣誉管理:&/strong&新增修改企业荣誉栏目的信息新增修改企业形象栏目的信息。&/p&&br&&p&&strong&十.人才管理:&/strong&发布修改招聘信息,人才策略栏目管理,应聘管理。&/p&&br&&p&&strong&十一.营销网络:&/strong&修改营销网络栏目的信息。&/p&&br&&p&&strong&十二.调查管理:&/strong&发布修改新调查。&/p&&br&&p&&strong&十三.友情链接:&/strong&新增修改友情链接。&/p&&br&&p&&strong&十四.全新模版功能,&/strong&在线编辑修改模版。&/p&&br&&p&&strong&十五.全新挂接数据库,&/strong&在线表编辑,添加数据表,编辑数据库,加添编辑文件挂接网站等等。&/p&&br&&p&&strong&十六.系统日志功能,&/strong&每一步操作都有记录,系统更安全。&/p&&br&&p&&strong&十七.中英文切换,&/strong&简体繁体切换。&/p&&br&&p&&strong&十八.还有多开源的代码,&/strong&以便站长二次开发。&/p&&br&&p&当然,应用到具体的公司机构中,由于实际业务场景需求的差异,真正的后台管理系统可能仅仅需要上述一小部分功能模块,但足以满足产品功能需求。以新浪微博的后台管理系统为例,这个是由带我的谭姐设计的,个人感觉非常好,总体上是简明、方便、快捷的。&/p&&br&&p&首先,是登录入口&strong&,一般都是前缀admin,后面加上公司网址&/strong&,比如微博的后台&a href=&//link.zhihu.com/?target=http%3A//admin.weibo.com& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&admin.weibo.com&/span&&span class=&invisible&&&/span&&/a&,进入之后入口是这样的:&/p&&br&&br&&p&&strong&输入用户名、密码,进入管理页面,接下来的设计展现是整个后台管理系统的关键&/strong&(考虑到部门私密,这个截图就不公开了),需要熟悉具体的业务场景,并拥有缜密的逻辑思维。新浪微博的后台设计整体上逻辑是很清晰的,主要分为蓝V认证、应用管理、开发帮助三个大模块,每个模块下又包括不同的子层级模块,可以方便快捷的找到对应的系统功能。&/p&&br&&br&&p&&b&文章来源于@尹剑利,微信公众号(yinjianli88)&/b&&br&&/p&&p&尹剑利,微信公众号@尹剑利(yinjianli88)。研究生在读,曾创业2次,并在多家知名上市公司实习。热爱人文历史,痴迷互联网。希望遇到更多志同道合的朋友。欢迎关注,多多交流。&/p&&figure&&img src=&https://pic4.zhimg.com/b702ebb46105f_b.jpg& data-rawwidth=&430& data-rawheight=&430& class=&origin_image zh-lightbox-thumb& width=&430& data-original=&https://pic4.zhimg.com/b702ebb46105f_r.jpg&&&/figure&
社交APP的后台管理没有深入接触过,但是个人感觉后台管理系统都是相通的,所以谈谈我所接触的后台管理系统吧,以新浪微博为例。 在新浪微博快半年了,主要接触商业开放平台的商业数据、后台管理系统等模块,刚开始自己接触时有很多疑惑,网上关于这方面的资…
前面说的都是些什么鬼……&br&------------------------&br&&br&为了易懂,我尽量避免用接口这个词,老实说这个词得定义比这两个玩意儿还要乱。&br&&br&我认为,API,是你,严格得来说是你得代码,和一个第三方的实体进行沟通的方式得
集合。&br&&br&&br&比如你和Windows系统沟通,需要调用Windows提供得API(CreateWindowEx, bitblt,等等)。(以C语言函数得形式)&br&你和.Net框架进行沟通,需要调用.Net提供得Api。(以C#,VB函数/类得形式)&br&你和新浪微博进行沟通,需要调用新浪微博提供得Api。(以Http请求得形式)&br&&br&所以Api,比较准确得定义应该是,&u&一个软件系统对其他软件系统提供得服务。&/u&&br&&br&&br&&br&那什么是open api, 其实open api也是api,并且没有一个准确得定义区分什么是api,什么是open api,什么是不open的api。&br&open api,根据我得经验,一般是指有这样得一个系统,一开始是封闭得。比如最开始得Twitter,或者google,或者facebook。突然有一天,他们开放了!他们公布了一组api,来获得他们内部得一些数据,执行一些操作。&br&&br&这个时候,这样得api, 我们就称之为open api。&br&&br&&br&那什么是SDK呢?&br&最开始的定义就是, api的集合,我们就称之为SDK。&br&还是拿之前得windows的例子来说,windows提供得所有Api得集合,就称之为 Windows SDK。&br&&br&然后,随着时间得演化,聪明而又懒惰得程序员们,又给SDK赋予了新的意义。&br&&br&通过Windows得Api,来开发windows程序是复杂且繁琐得。十分不友好,所以就有了像.Net这样得框架。他封装了底层得Windows Api,然后改造成一组新得,更加易于使用得Api给开发者们使用。&br&&br&&b&像.Net这种,以一组Api作为输入,以另外一组Api作为输出得中间件,就是现在人们所说得SDK。如下图:&/b&&br&&figure&&img src=&https://pic4.zhimg.com/936da8f3cd5e723c3ce4a09f712b9d3f_b.png& data-rawwidth=&290& data-rawheight=&351& class=&content_image& width=&290&&&/figure&&br&&br&&br&再举一个微博的例子,新浪微博提供了一组Http请求形式得Api。由于现如今构造Http请求也算是一件麻烦事,所以逐渐就有了,“新浪微博iOS SDK”。这个SDK封装新浪微博得Http接口,提供了一组Objective C或者Swift形式接口。&br&&br&&figure&&img src=&https://pic4.zhimg.com/779e039c5dbf56ebfbd67_b.png& data-rawwidth=&296& data-rawheight=&351& class=&content_image& width=&296&&&/figure&&br&&br&&br&那现在问题来了,什么是&b& “框架”&/b&?&br&.NET框架,Cocoa框架,WPF框架……&br&&br&简单得说……很厉害得SDK,就可以称自己为……框架。
前面说的都是些什么鬼…… ------------------------ 为了易懂,我尽量避免用接口这个词,老实说这个词得定义比这两个玩意儿还要乱。 我认为,API,是你,严格得来说是你得代码,和一个第三方的实体进行沟通的方式得 集合。 比如你和Windows系统沟通,需要…
&figure&&img src=&https://pic1.zhimg.com/6afae0f764cabbb64d42d0_b.jpg& data-rawwidth=&506& data-rawheight=&407& class=&origin_image zh-lightbox-thumb& width=&506& data-original=&https://pic1.zhimg.com/6afae0f764cabbb64d42d0_r.jpg&&&/figure&马里奥碰到花朵就变身。&br&&br&什么是马里奥?一个装着 16 × 32 个小色块的长方形,其中一些色块填着颜色,另一些没有。什么是花?一个 16 × 16 的正方形。什么是「变身」?把马里奥这个方块里面代表衣服的褐色变成红色,代表背带裤的红色变成白色。什么是褐色?暂且说它是 0x887000 这个数字。什么是「碰到」?马里奥的长方形与花朵的正方形有所重叠。什么是「重叠」?假设马里奥的这个方块占据屏幕(什么是屏幕?一个能装下 256 × 240 个小色块的矩形)中 X 方向 101 到 116、Y 方向 21 到 52 之间的区域,那么只要这个区域内有一点或更多点也被花朵所占据(比如花朵处在 X 116 到 131、Y 21 到 36 之间的区域内),我们就认为两者有所重叠。&br&&br&若给定以八个数值代表的两个矩形区域,请写出判断两个区域是否有重叠的 C 语言程序。如果你能写出来,那么祝贺你,如果有朝一日你想自己用 C 做一遍 NES 版本的《超级马里奥》,你至少知道让他变身需要做什么了。&br&&br&是的,C 语言也许「只能」做数学题。可是,绝大多数游戏的运行过程就是不停地做数学题,而所谓编写游戏,也就是把游戏的规则和游戏的效果转化为数学题而已。其中不少题目电脑都已经知道怎么解——是别的程序员事先告诉它的——比如「求一堆散落在三维直角座标系之中的多面体在 8(x-3)-10(y+1)-11(z-1)=0 这个平面上一个给定范围内的投影」或者「给定一些彼此相连的顶点,求任意两点之间的最短路径」之类的数学题,它只需要千万分之一秒就能给你解好。这种能力有什么用?电脑上 FPS 游戏的本质活动就是不停地求三维座标系下的多面体经过变换之后在二维平面上的投影,不停地判断两个多面体是否彼此重叠,以及不停地寻找两个顶点之间的最短路径,最终达到让怪物冲到你面前咬你一口的目的。不止游戏如此,其他软件也都差不多,每一个细节都是某种数学题——比如知乎页面顶端的蓝色导航条背景,就是 CSS 描述的一个浅蓝到深蓝的渐变——渐变是怎么回事呢?给出两个数字分别代表两种颜色,以及第三个数字代表一段距离,求一系列颜色的数值以及次序,使得这段距离中两种相邻颜色之间的变化最小。数学题。别说 C 语言,一切编程语言最终都只能做数学题,根据给定的数据,算出另一些数据,算出更多的数据,然后存贮、发送或者呈现算

我要回帖

更多关于 上帝之鹰 5zn怎么了 的文章

 

随机推荐