wukong https://www.e-learn.cn/tag/wukong-0 zh-hans Mysql4种方式避免重复插入数据! https://www.e-learn.cn/topic/4102569 <span>Mysql4种方式避免重复插入数据! </span> <span><span lang="" about="/user/73" typeof="schema:Person" property="schema:name" datatype="">≡放荡痞女</span></span> <span>2021-02-12 12:04:58</span> <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"> <div class="detail-box"> <div class="article-detail"> <div class="content"> <div> <p style="text-align: center"><img class="b-lazy" data-src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9zRzFpY3BjbWhiaWFCN1RQZnM0ME9OdTVGUFVEeER3c1I0M3RaOWRIR3lLVGlhcjJFaWJ6ZHc1aWNoUzAzaWJCYTc3ZW9ZM3BxMk5tYkFEaWI0elZFcjlTMTBqMmcvNjQw?x-oss-process=image/format,png" data-original="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9zRzFpY3BjbWhiaWFCN1RQZnM0ME9OdTVGUFVEeER3c1I0M3RaOWRIR3lLVGlhcjJFaWJ6ZHc1aWNoUzAzaWJCYTc3ZW9ZM3BxMk5tYkFEaWI0elZFcjlTMTBqMmcvNjQw?x-oss-process=image/format,png" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" /></p> <blockquote> <p>作者:小小猿爱嘻嘻</p> <p>wukong.com/question/6749061190594330891/</p> </blockquote> <p>最常见的方式就是为字段设置主键或唯一索引,当插入重复数据时,抛出错误,程序终止,但这会给后续处理带来麻烦,因此需要对插入语句做特殊处理,尽量避开或忽略异常,下面我简单介绍一下,感兴趣的朋友可以尝试一下:</p> <p>这里为了方便演示,我新建了一个user测试表,主要有id,username,sex,address这4个字段,其中主键为id(自增),同时对username字段设置了唯一索引:</p> <p>01 insert ignore into</p> <p>即插入数据时,如果数据存在,则忽略此次插入,前提条件是插入的数据字段设置了主键或唯一索引,测试SQL语句如下,当插入本条数据时,MySQL数据库会首先检索已有数据(也就是idx_username索引),如果存在,则忽略本次插入,如果不存在,则正常插入数据:<img class="b-lazy" data-src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9ldWtaOUo2QkVpYWZNWm5pY0xnVmliNVk4aWE4aWM4SW9WelBhaHpTV21qamJnMVFKZG1DZFVienBWeDU5TTlacG5XQjdiV2F0cEtoZlVRTm9vWmY3NjhlZEF3LzY0MA?x-oss-process=image/format,png" data-original="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9ldWtaOUo2QkVpYWZNWm5pY0xnVmliNVk4aWE4aWM4SW9WelBhaHpTV21qamJnMVFKZG1DZFVienBWeDU5TTlacG5XQjdiV2F0cEtoZlVRTm9vWmY3NjhlZEF3LzY0MA?x-oss-process=image/format,png" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" /></p> <p>02 on duplicate key update</p> <p>即插入数据时,如果数据存在,则执行更新操作,前提条件同上,也是插入的数据字段设置了主键或唯一索引,测试SQL语句如下,当插入本条记录时,MySQL数据库会首先检索已有数据(idx_username索引),如果存在,则执行update更新操作,如果不存在,则直接插入:<img class="b-lazy" data-src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9ldWtaOUo2QkVpYWZNWm5pY0xnVmliNVk4aWE4aWM4SW9WelBhWVB6S1F6eTZDRnhjT2JsQ2pCZjlyb1pTaWF2MlQ0RGlhUGljeHFLbG1HS1doTkhjZTJDR2RPeU53LzY0MA?x-oss-process=image/format,png" data-original="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9ldWtaOUo2QkVpYWZNWm5pY0xnVmliNVk4aWE4aWM4SW9WelBhWVB6S1F6eTZDRnhjT2JsQ2pCZjlyb1pTaWF2MlQ0RGlhUGljeHFLbG1HS1doTkhjZTJDR2RPeU53LzY0MA?x-oss-process=image/format,png" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" /></p> <p>03 replace into</p> <p>即插入数据时,如果数据存在,则删除再插入,前提条件同上,插入的数据字段需要设置主键或唯一索引,测试SQL语句如下,当插入本条记录时,MySQL数据库会首先检索已有数据(idx_username索引),如果存在,则先删除旧数据,然后再插入,如果不存在,则直接插入:<img class="b-lazy" data-src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9ldWtaOUo2QkVpYWZNWm5pY0xnVmliNVk4aWE4aWM4SW9WelBhajdQOEhBdE53dkE0S1pLbHVjRUxRM2ljUnZnRThmanZGWUpKNVdYUUI3ZjBiWm4weTVaWjVNZy82NDA?x-oss-process=image/format,png" data-original="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9ldWtaOUo2QkVpYWZNWm5pY0xnVmliNVk4aWE4aWM4SW9WelBhajdQOEhBdE53dkE0S1pLbHVjRUxRM2ljUnZnRThmanZGWUpKNVdYUUI3ZjBiWm4weTVaWjVNZy82NDA?x-oss-process=image/format,png" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" /></p> <p>04 insert if not exists</p> <p>即insert into … select … where not exist ... ,这种方式适合于插入的数据字段没有设置主键或唯一索引,当插入一条数据时,首先判断MySQL数据库中是否存在这条数据,如果不存在,则正常插入,如果存在,则忽略:<img class="b-lazy" data-src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9ldWtaOUo2QkVpYWZNWm5pY0xnVmliNVk4aWE4aWM4SW9WelBhTWljVmlhZWp5eHlzaWNLSHRrRzBwSEJmdzRTUlczdkNUV3ZpYTZQRllOM0ZrNlJ4Z3lDN1pjVG02US82NDA?x-oss-process=image/format,png" data-original="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9ldWtaOUo2QkVpYWZNWm5pY0xnVmliNVk4aWE4aWM4SW9WelBhTWljVmlhZWp5eHlzaWNLSHRrRzBwSEJmdzRTUlczdkNUV3ZpYTZQRllOM0ZrNlJ4Z3lDN1pjVG02US82NDA?x-oss-process=image/format,png" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" />目前,就分享这4种MySQL处理重复数据的方式吧,前3种方式适合字段设置了主键或唯一索引,最后一种方式则没有此限制,只要你熟悉一下使用过程,很快就能掌握的,网上也有相关资料和教程,介绍的非常详细,感兴趣的话,可以搜一下。</p> <p><strong>推荐阅读</strong><br /></p> <p><a href="https://www.oschina.net/action/GoToLink?url=http%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzA3ODQ0Mzg2OA%253D%253D%26chksm%3D87535b73b024d26577646e2f6605132dd09730c07ce8e62f2a0ea404ee8758bb42c6d68681f5%26idx%3D2%26mid%3D2649055040%26scene%3D21%26sn%3De8562431ee94d53ffd99dc85cfcede36%23wechat_redirect" rel="nofollow" target="_blank">InnoDB索引允许NULL对性能有影响吗</a><br /></p> <p><a href="https://www.oschina.net/action/GoToLink?url=http%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzA3ODQ0Mzg2OA%253D%253D%26chksm%3D87535b73b024d265e69122a6d8c378c627e848efce2ddce409974018e5a66c3ffb304798de5f%26idx%3D3%26mid%3D2649055040%26scene%3D21%26sn%3Da9874be755df8a010cd8f28350f6f9e0%23wechat_redirect" rel="nofollow" target="_blank">Mysql的binlog和relay-log到底长啥样?</a><br /></p> <p><a href="https://www.oschina.net/action/GoToLink?url=http%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzA3ODQ0Mzg2OA%253D%253D%26chksm%3D87535b03b024d21504201d05214357c52034320f2636a401d8ad2a5d1ab8299e7f4e07e3c2ce%26idx%3D2%26mid%3D2649055024%26scene%3D21%26sn%3D7b464b22a132370ef7b36d93320ea11e%23wechat_redirect" rel="nofollow" target="_blank">涨姿势:为啥MySQL官方不推荐使用uuid或者雪花id作为主键?</a><br /></p> <p style="text-align: center"><img class="b-lazy" data-src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9zRzFpY3BjbWhiaWFDbGt4VUp2aWFHQ0Nkc1ZWUmhpYmVmQms5NERSM3A4Z01FeUk0OTNqYnhmR2NpYVpJcWdtQW1kcmxHQlZCU0RrSlR1TXpFUXdkaWI0d2tjZy82NDA?x-oss-process=image/format,png" data-original="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9zRzFpY3BjbWhiaWFDbGt4VUp2aWFHQ0Nkc1ZWUmhpYmVmQms5NERSM3A4Z01FeUk0OTNqYnhmR2NpYVpJcWdtQW1kcmxHQlZCU0RrSlR1TXpFUXdkaWI0d2tjZy82NDA?x-oss-process=image/format,png" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" /></p> </div> </div> </div> <div class="collapse-bar"> <span>展开阅读全文 <i></i></span> </div> </div> <div class="tags-box"> <div class="tags-box__inner"> <a href="https://www.oschina.net/p/mysql" rel="nofollow">mysql</a> <a href="https://www.oschina.net/p/relay" rel="nofollow">relay</a> <a href="https://www.oschina.net/p/wukong" rel="nofollow">wukong</a> <a href="https://www.oschina.net/p/innodb" rel="nofollow">innodb</a> </div> </div> <div class="copyright-box"> </div> <div class="alert alert-success" role="alert"><p>来源:<code>oschina</code></p><p>链接:<code>https://my.oschina.net/u/4668897/blog/4613282</code></p></div></div> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field--label">标签</div> <div class="field--items"> <div class="field--item"><a href="/tag/relay" hreflang="zh-hans">Relay</a></div> <div class="field--item"><a href="/tag/wukong-0" hreflang="zh-hans">wukong</a></div> <div class="field--item"><a href="/tag/innodb" hreflang="zh-hans">InnoDB</a></div> <div class="field--item"><a href="/tag/mysql" hreflang="zh-hans">mysql</a></div> </div> </div> Fri, 12 Feb 2021 04:04:58 +0000 ≡放荡痞女 4102569 at https://www.e-learn.cn 几句简单的python代码完成周公解梦功能 https://www.e-learn.cn/topic/4006825 <span>几句简单的python代码完成周公解梦功能</span> <span><span lang="" about="/user/36" typeof="schema:Person" property="schema:name" datatype="">ぃ、小莉子</span></span> <span>2021-01-22 18:01:24</span> <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"> <p>《周公解梦》是靠人的梦来卜吉凶的一本于民间流传的解梦书籍,共有七类梦境的解述。这是非常传统的中国文化体系的一部分,但是如何用代码来获取并搜索周公解梦的数据呢?一般情况下,要通过爬虫获取数据,然后再进行索引搜索,这个过程是十分复杂的,要熟练很多技术并且花不少时间开发,所以最好的方法还是直接调用接口完成,笔者以python为例,来实现这个功能:</p> <pre><code class="language-python"># -*- coding: utf-8 -*- # flake8: noqa __author__ = 'wukong' import urllib from urllib import urlencode #配置您申请的appKey和openId app_key="***" open_id="***" """ request_url 请求地址 params 请求参数 method 请求方法 """ def request_content(request_url,params,method): params = urlencode(params) if method and method.lower() =="get": f = urllib.urlopen("%s?%s" % (request_url, params)) else: f = urllib.urlopen(request_url, params) content = f.read() print content def main(): domain="http://api.xiaocongjisuan.com/"; servlet="life/dream/analysis" method="get" request_url=domain+servlet #字典 params ={} params["appKey"]=app_key params["openId"]=open_id #变动部分 params["keyword"]="女人" params["upLimit"]=20 params["highligth"]=1 request_content(request_url,params,method) if __name__ == '__main__': main() </code></pre> <p>喜欢其他的语言的朋友可以点<a href="https://www.xiaocongjisuan.com/show/api/37" rel="nofollow">这里查看</a>,接下来附上一个nodejs的实现方式:</p> <pre><code class="language-nodejs">var http = require('http'); var qs = require('querystring'); //配置您申请的appKey和openId app_key = "***"; open_id = "***"; function request_content(request_url,port,params,method){ var path=request_url; if(!!params){ var content = qs.stringify(params); path=request_url+'?' + content; } var options = { port: port, path: path, method: method }; if(method.toLowerCase()=='post'){ options['headers']="Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8"; } var req = http.request(options, function (res) { res.setEncoding('utf8'); res.on('data', function (chunk) { console.log(chunk); }); }); req.on('error', function (e) { console.log('problem with request: ' + e.message); }); req.end(); } function main(){ var domain="http://api.xiaocongjisuan.com/"; var port=8080;//http对应80端口,https 对应443端口,请使用者自己改正 var servlet="life/dream/analysis"; var method="get"; var request_url=domain+servlet; var params = {}; params['appKey']=app_key; params['openId']=open_id; //变动部分 params["keyword"]="女人"; params["upLimit"]=20; params["highligth"]=1; request_content(request_url,port,params,method); } main(); </code></pre> <div class="alert alert-success" role="alert"><p>来源:<code>oschina</code></p><p>链接:<code>https://my.oschina.net/u/4226814/blog/3116064</code></p></div></div> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field--label">标签</div> <div class="field--items"> <div class="field--item"><a href="/tag/java-ee" hreflang="zh-hans">Java EE</a></div> <div class="field--item"><a href="/tag/openid" hreflang="zh-hans">openid</a></div> <div class="field--item"><a href="/tag/python" hreflang="zh-hans">python</a></div> <div class="field--item"><a href="/tag/wukong-0" hreflang="zh-hans">wukong</a></div> <div class="field--item"><a href="/tag/def" hreflang="zh-hans">def</a></div> </div> </div> Fri, 22 Jan 2021 10:01:24 +0000 ぃ、小莉子 4006825 at https://www.e-learn.cn linux创建删除用户及vim简单操作 https://www.e-learn.cn/topic/4005593 <span>linux创建删除用户及vim简单操作</span> <span><span lang="" about="/user/210" typeof="schema:Person" property="schema:name" datatype="">限于喜欢</span></span> <span>2021-01-21 11:27:12</span> <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"> <span id="OSC_h1_1"></span> <h1><a rel="nofollow"></a>用户操作相关:</h1> <span id="OSC_h3_2"></span> <h3><a rel="nofollow"></a>1、新建几个普通用户wukong,wuneng,wujing,他们都属于xiyouji组的成员,其中wujing没有和系统交互的shell(没有和系统交互的shell就是无法登陆系统)。</h3> <p><img alt="在这里插入图片描述" class="b-lazy" data-src="https://img-blog.csdnimg.cn/20210119181836279.png" data-original="https://img-blog.csdnimg.cn/20210119181836279.png" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" /><br /> 创建xiyouxi组 添加wukong wuneng 用户<br /><img alt="在这里插入图片描述" class="b-lazy" data-src="https://img-blog.csdnimg.cn/20210119182015311.png" data-original="https://img-blog.csdnimg.cn/20210119182015311.png" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" /><br /> 创建没有和系统交互shell的用户 wujing<br /><br /><br /></p> <span id="OSC_h3_3"></span> <h3><a rel="nofollow"></a>2、wukong和wuneng的密码都为redhat。 (设置密码使用: passwd 用户)</h3> <p><img alt="在这里插入图片描述" class="b-lazy" data-src="https://img-blog.csdnimg.cn/20210119182217496.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDAyNzkzMA==,size_16,color_FFFFFF,t_70" data-original="https://img-blog.csdnimg.cn/20210119182217496.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDAyNzkzMA==,size_16,color_FFFFFF,t_70" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" /></p> <span id="OSC_h3_4"></span> <h3><a rel="nofollow"></a>3、设置wukong可以添加用户, wuneng可以删除用户的操作。(并测试)</h3> <p>vim /etc/sudoers进入编写sudoers文件 按G进入最下面 添加图中内容<br /><img alt="在这里插入图片描述" class="b-lazy" data-src="https://img-blog.csdnimg.cn/20210119183323143.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDAyNzkzMA==,size_16,color_FFFFFF,t_70" data-original="https://img-blog.csdnimg.cn/20210119183323143.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDAyNzkzMA==,size_16,color_FFFFFF,t_70" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" /><br /> :wq!退出<br /><br /></p> <p>测试: su wukong 更改账户为wukong<br /> 创建账户tangseng<br /></p> <p><img alt="在这里插入图片描述" class="b-lazy" data-src="https://img-blog.csdnimg.cn/20210119183822729.png" data-original="https://img-blog.csdnimg.cn/20210119183822729.png" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" /><br /> 输入密码后 cat /etc/passwd 查看用户已创建<br /><img alt="在这里插入图片描述" class="b-lazy" data-src="https://img-blog.csdnimg.cn/20210119183937204.png" data-original="https://img-blog.csdnimg.cn/20210119183937204.png" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" /><br /> su wuneng 更改账户为wuneng<br /> 删除账户tangseng<br /><img alt="在这里插入图片描述" class="b-lazy" data-src="https://img-blog.csdnimg.cn/20210119184047943.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDAyNzkzMA==,size_16,color_FFFFFF,t_70" data-original="https://img-blog.csdnimg.cn/20210119184047943.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDAyNzkzMA==,size_16,color_FFFFFF,t_70" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" /><br /><img alt="在这里插入图片描述" class="b-lazy" data-src="https://img-blog.csdnimg.cn/20210119184106313.png" data-original="https://img-blog.csdnimg.cn/20210119184106313.png" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" /><br /> 已经删除<br /><br /><br /><br /><br /><br /><br /></p> <span id="OSC_h1_5"></span> <h1><a rel="nofollow"></a>vim相关:</h1> <span id="OSC_h3_6"></span> <h3><a rel="nofollow"></a>1、复制/var/log/message 文件到当前用户的家目录</h3> <p><img alt="在这里插入图片描述" class="b-lazy" data-src="https://img-blog.csdnimg.cn/20210119184454654.png" data-original="https://img-blog.csdnimg.cn/20210119184454654.png" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" /></p> <span id="OSC_h3_7"></span> <h3><a rel="nofollow"></a>2、vim编辑家目录的 message 文件,显示出行号, 将全文中的关键字root替换为redhat, 复制前10行内容粘贴到文档末尾,删除第50行的文件内容,最后将文档另存为用户家目录中命名为 message.bak ,源文件message不保存退出。</h3> <p>显示行号为 :set nu<br /><img alt="在这里插入图片描述" class="b-lazy" data-src="https://img-blog.csdnimg.cn/20210119184626287.png" data-original="https://img-blog.csdnimg.cn/20210119184626287.png" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" />将全文中的关键字root替换为redhat<br /><img alt="在这里插入图片描述" class="b-lazy" data-src="https://img-blog.csdnimg.cn/20210119184811941.png" data-original="https://img-blog.csdnimg.cn/20210119184811941.png" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" /><br /> 按gg前往首行 输入10yy复制前10行 显示<br /><img alt="在这里插入图片描述" class="b-lazy" data-src="https://img-blog.csdnimg.cn/20210119184952742.png" data-original="https://img-blog.csdnimg.cn/20210119184952742.png" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" /><br /> 按G前往末行 输入P粘贴至此行之后 显示<br /><img alt="在这里插入图片描述" class="b-lazy" data-src="https://img-blog.csdnimg.cn/20210119185116610.png" data-original="https://img-blog.csdnimg.cn/20210119185116610.png" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" /><br /> 删除第五十行的内容<br /> 先50G移动光标至第五十行 输入d$删除此行<br /><img alt="在这里插入图片描述" class="b-lazy" data-src="https://img-blog.csdnimg.cn/20210119185500793.png" data-original="https://img-blog.csdnimg.cn/20210119185500793.png" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" /><br /> 输入:w message.bak 回车<br /> :q!退出<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /></p> <div class="alert alert-success" role="alert"><p>来源:<code>oschina</code></p><p>链接:<code>https://my.oschina.net/u/4262150/blog/4917326</code></p></div></div> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field--label">标签</div> <div class="field--items"> <div class="field--item"><a href="/tag/wukong-0" hreflang="zh-hans">wukong</a></div> <div class="field--item"><a href="/tag/rhel" hreflang="zh-hans">RHEL</a></div> <div class="field--item"><a href="/tag/linux" hreflang="zh-hans">Linux</a></div> <div class="field--item"><a href="/tag/v-im" hreflang="zh-hans">V-IM</a></div> </div> </div> Thu, 21 Jan 2021 03:27:12 +0000 限于喜欢 4005593 at https://www.e-learn.cn [Python] Python 获取中文的首字母 和 全部拼音首字母 https://www.e-learn.cn/topic/3973159 <span>[Python] Python 获取中文的首字母 和 全部拼音首字母</span> <span><span lang="" about="/user/24" typeof="schema:Person" property="schema:name" datatype="">Deadly</span></span> <span>2020-12-19 16:45:26</span> <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"> <p> </p> <p>Python 获取中文的首字母 和 全部拼音首字母</p> <p> </p> <p>代码如下:</p> <div class="cnblogs_code"> <pre><code><span style="color: #000000;">import pinyin def getStrAllAplha(str): </span><span style="color: #0000ff;">return</span> pinyin.get_initial(str, delimiter=<span style="color: #800000;">""</span><span style="color: #000000;">).upper() def getStrFirstAplha(str): str</span>=<span style="color: #000000;">getStrAllAplha(str) str</span>=str[<span style="color: #800080;">0</span>:<span style="color: #800080;">1</span><span style="color: #000000;">] </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> str.upper() str </span>= <span style="color: #800000;">'</span><span style="color: #800000;">你好在哪来</span><span style="color: #800000;">'</span><span style="color: #000000;"> print(getStrAllAplha(str)) print(getStrFirstAplha(str))</span></code></pre> </div> <p> </p> <p>输出:</p> <p>NHZNL</p> <p>N</p> <p> </p> <p>本博客地址: <a href="https://www.cnblogs.com/wukong1688/" target="_blank" rel="nofollow">wukong1688</a></p> <p>本文原文地址:<a href="https://www.cnblogs.com/wukong1688/p/11149049.html" target="_blank" rel="nofollow">https://www.cnblogs.com/wukong1688/p/11149049.html</a></p> <p>转载请著名出处!谢谢~~</p> <div class="alert alert-success" role="alert"><p>来源:<code>oschina</code></p><p>链接:<code>https://my.oschina.net/u/4417863/blog/3473310</code></p></div></div> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field--label">标签</div> <div class="field--items"> <div class="field--item"><a href="/tag/python" hreflang="zh-hans">python</a></div> <div class="field--item"><a href="/tag/def" hreflang="zh-hans">def</a></div> <div class="field--item"><a href="/tag/wukong-0" hreflang="zh-hans">wukong</a></div> </div> </div> Sat, 19 Dec 2020 08:45:26 +0000 Deadly 3973159 at https://www.e-learn.cn Mysql4种方式避免重复插入数据! https://www.e-learn.cn/topic/3840075 <span>Mysql4种方式避免重复插入数据!</span> <span><span lang="" about="/user/85" typeof="schema:Person" property="schema:name" datatype="">社会主义新天地</span></span> <span>2020-10-02 00:51:19</span> <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"> <div> <p style="text-align: center"><strong>Python实战社群</strong></p> <p style="text-align: center"><strong>Java实战社群</strong></p> <p><strong><strong>长按识别下方二维码,</strong></strong><strong>按需求添加</strong></p> <p><img title="640.webp (1).jpg" class="b-lazy" data-src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9nU2dLV0Z3TjFkQ0xpYzNJeDZEc1JyZlh3aWFndExYTDlLOEFVVlRxTTBHY2lhdUxjZ1FPc0NPOXpOcmZaU1JyU2dmT0ZscWY2ZERXenpqcTZka3ZUbVQwUS82NDA?x-oss-process=image/format,png" data-original="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9nU2dLV0Z3TjFkQ0xpYzNJeDZEc1JyZlh3aWFndExYTDlLOEFVVlRxTTBHY2lhdUxjZ1FPc0NPOXpOcmZaU1JyU2dmT0ZscWY2ZERXenpqcTZka3ZUbVQwUS82NDA?x-oss-process=image/format,png" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" /></p> <p><strong>扫码关注添加客服</strong></p> <p><strong>进Python社群▲</strong></p> <p><img title="微信图片_20200223084351_副本.png" class="b-lazy" data-src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9nU2dLV0Z3TjFkQ0xpYzNJeDZEc1JyZlh3aWFndExYTDlLR0daY0Noa2pzd1dUSGNXUEVSU2VHNzl0SllncTJWZ3hpYmhlcGlhdVRVQ0lJNkZWZXprekNrVmcvNjQw?x-oss-process=image/format,png" data-original="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9nU2dLV0Z3TjFkQ0xpYzNJeDZEc1JyZlh3aWFndExYTDlLR0daY0Noa2pzd1dUSGNXUEVSU2VHNzl0SllncTJWZ3hpYmhlcGlhdVRVQ0lJNkZWZXprekNrVmcvNjQw?x-oss-process=image/format,png" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" /></p> <p><strong><strong><strong>扫码关注添加客服</strong></strong></strong></p> <p><strong><strong>进Java社群</strong>▲</strong></p> <p>作者丨小小猿爱嘻嘻<br /></p> <p>wukong.com/question/6749061190594330891/</p> <p>最常见的方式就是为字段设置主键或唯一索引,当插入重复数据时,抛出错误,程序终止,但这会给后续处理带来麻烦,因此需要对插入语句做特殊处理,尽量避开或忽略异常,下面我简单介绍一下,感兴趣的朋友可以尝试一下:</p> <p>这里为了方便演示,我新建了一个user测试表,主要有id,username,sex,address这4个字段,其中主键为id(自增),同时对username字段设置了唯一索引:</p> <p>01 insert ignore into</p> <p>即插入数据时,如果数据存在,则忽略此次插入,前提条件是插入的数据字段设置了主键或唯一索引,测试SQL语句如下,当插入本条数据时,MySQL数据库会首先检索已有数据(也就是idx_username索引),如果存在,则忽略本次插入,如果不存在,则正常插入数据:<img class="b-lazy" data-src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9ldWtaOUo2QkVpYWZNWm5pY0xnVmliNVk4aWE4aWM4SW9WelBhaHpTV21qamJnMVFKZG1DZFVienBWeDU5TTlacG5XQjdiV2F0cEtoZlVRTm9vWmY3NjhlZEF3LzY0MA?x-oss-process=image/format,png" data-original="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9ldWtaOUo2QkVpYWZNWm5pY0xnVmliNVk4aWE4aWM4SW9WelBhaHpTV21qamJnMVFKZG1DZFVienBWeDU5TTlacG5XQjdiV2F0cEtoZlVRTm9vWmY3NjhlZEF3LzY0MA?x-oss-process=image/format,png" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" /></p> <p>02 on duplicate key update</p> <p>即插入数据时,如果数据存在,则执行更新操作,前提条件同上,也是插入的数据字段设置了主键或唯一索引,测试SQL语句如下,当插入本条记录时,MySQL数据库会首先检索已有数据(idx_username索引),如果存在,则执行update更新操作,如果不存在,则直接插入:<img class="b-lazy" data-src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9ldWtaOUo2QkVpYWZNWm5pY0xnVmliNVk4aWE4aWM4SW9WelBhWVB6S1F6eTZDRnhjT2JsQ2pCZjlyb1pTaWF2MlQ0RGlhUGljeHFLbG1HS1doTkhjZTJDR2RPeU53LzY0MA?x-oss-process=image/format,png" data-original="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9ldWtaOUo2QkVpYWZNWm5pY0xnVmliNVk4aWE4aWM4SW9WelBhWVB6S1F6eTZDRnhjT2JsQ2pCZjlyb1pTaWF2MlQ0RGlhUGljeHFLbG1HS1doTkhjZTJDR2RPeU53LzY0MA?x-oss-process=image/format,png" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" /></p> <p>03 replace into</p> <p>即插入数据时,如果数据存在,则删除再插入,前提条件同上,插入的数据字段需要设置主键或唯一索引,测试SQL语句如下,当插入本条记录时,MySQL数据库会首先检索已有数据(idx_username索引),如果存在,则先删除旧数据,然后再插入,如果不存在,则直接插入:<img class="b-lazy" data-src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9ldWtaOUo2QkVpYWZNWm5pY0xnVmliNVk4aWE4aWM4SW9WelBhajdQOEhBdE53dkE0S1pLbHVjRUxRM2ljUnZnRThmanZGWUpKNVdYUUI3ZjBiWm4weTVaWjVNZy82NDA?x-oss-process=image/format,png" data-original="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9ldWtaOUo2QkVpYWZNWm5pY0xnVmliNVk4aWE4aWM4SW9WelBhajdQOEhBdE53dkE0S1pLbHVjRUxRM2ljUnZnRThmanZGWUpKNVdYUUI3ZjBiWm4weTVaWjVNZy82NDA?x-oss-process=image/format,png" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" /></p> <p>04 insert if not exists</p> <p>即insert into … select … where not exist ... ,这种方式适合于插入的数据字段没有设置主键或唯一索引,当插入一条数据时,首先判断MySQL数据库中是否存在这条数据,如果不存在,则正常插入,如果存在,则忽略:<img class="b-lazy" data-src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9ldWtaOUo2QkVpYWZNWm5pY0xnVmliNVk4aWE4aWM4SW9WelBhTWljVmlhZWp5eHlzaWNLSHRrRzBwSEJmdzRTUlczdkNUV3ZpYTZQRllOM0ZrNlJ4Z3lDN1pjVG02US82NDA?x-oss-process=image/format,png" data-original="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9ldWtaOUo2QkVpYWZNWm5pY0xnVmliNVk4aWE4aWM4SW9WelBhTWljVmlhZWp5eHlzaWNLSHRrRzBwSEJmdzRTUlczdkNUV3ZpYTZQRllOM0ZrNlJ4Z3lDN1pjVG02US82NDA?x-oss-process=image/format,png" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" />目前,就分享这4种MySQL处理重复数据的方式吧,前3种方式适合字段设置了主键或唯一索引,最后一种方式则没有此限制,只要你熟悉一下使用过程,很快就能掌握的,网上也有相关资料和教程,介绍的非常详细,感兴趣的话,可以搜一下。</p> <p><img class="b-lazy" data-src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2dpZi9RaWJBMlNPM2ljOVlvaWNCVzhnMUt3VXJlVWVRSVdSN2FqdFlDdWNwV0xyYVk5WDlpYmYwVlJ6bWpzRnVhbGVOREtZSG1WVG00UFdSQjk5aWNkaWNSZW5rT2Z3QS82NDA?x-oss-process=image/format,png" data-original="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2dpZi9RaWJBMlNPM2ljOVlvaWNCVzhnMUt3VXJlVWVRSVdSN2FqdFlDdWNwV0xyYVk5WDlpYmYwVlJ6bWpzRnVhbGVOREtZSG1WVG00UFdSQjk5aWNkaWNSZW5rT2Z3QS82NDA?x-oss-process=image/format,png" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" /></p> <pre class="has"><code class="language-php">程序员专栏 扫码关注填加客服 长按识别下方二维码进群 </code></pre> <p><strong><img class="b-lazy" data-src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy8ySHlJbEd1TzAyWkxkSHNpYlE2MURCYkdQOTlZRTRGR3VKVFhpYTJlaWFiQ2oyWG10S2RkTEJQaWJhNEl6aWJEc0dmRlNqc2I3aFlFUXczZ2JKYWpobkxvczJ3LzY0MA?x-oss-process=image/format,png" data-original="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy8ySHlJbEd1TzAyWkxkSHNpYlE2MURCYkdQOTlZRTRGR3VKVFhpYTJlaWFiQ2oyWG10S2RkTEJQaWJhNEl6aWJEc0dmRlNqc2I3aFlFUXczZ2JKYWpobkxvczJ3LzY0MA?x-oss-process=image/format,png" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" /></strong></p> <p style="text-align: left"><strong><strong>近期精彩内容推荐:</strong><strong> </strong> </strong></p> <p style="text-align: left"><img class="b-lazy" data-src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6L3A2VmxxdmlhMVVpY3h5ZjZWQjVSbVB6SFpZYVNTOENDT3JBb3RVVjllcHlYQktrdXZZWEQxTGNlM1Q3ZHdTRWRPTDE1TEdRbGFMa0dUejJYbmtodEFKMncvNjQw?x-oss-process=image/format,png" data-original="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6L3A2VmxxdmlhMVVpY3h5ZjZWQjVSbVB6SFpZYVNTOENDT3JBb3RVVjllcHlYQktrdXZZWEQxTGNlM1Q3ZHdTRWRPTDE1TEdRbGFMa0dUejJYbmtodEFKMncvNjQw?x-oss-process=image/format,png" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" /><strong> </strong><a href="https://mp.weixin.qq.com/s?__biz=MzUyODg4Nzk2MQ%3D%3D&amp;idx=1&amp;mid=2247502187&amp;scene=21&amp;sn=35707e2cd98cfe62ee2c055252a4ca0d#wechat_redirect" rel="nofollow">字节跳动半夜给员工发钱,全员沸腾了</a></p> <p style="text-align: left"><strong><img class="b-lazy" data-src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6L3A2VmxxdmlhMVVpY3h5ZjZWQjVSbVB6SFpZYVNTOENDT3JBb3RVVjllcHlYQktrdXZZWEQxTGNlM1Q3ZHdTRWRPTDE1TEdRbGFMa0dUejJYbmtodEFKMncvNjQw?x-oss-process=image/format,png" data-original="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6L3A2VmxxdmlhMVVpY3h5ZjZWQjVSbVB6SFpZYVNTOENDT3JBb3RVVjllcHlYQktrdXZZWEQxTGNlM1Q3ZHdTRWRPTDE1TEdRbGFMa0dUejJYbmtodEFKMncvNjQw?x-oss-process=image/format,png" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" /> </strong><a href="https://mp.weixin.qq.com/s?__biz=MzI1OTQwOTg2Mg%3D%3D&amp;idx=1&amp;mid=2247496430&amp;scene=21&amp;sn=a78722fe79f4c74faab1a5c1192e2a88#wechat_redirect" rel="nofollow">为何程序员上班时间总戴个耳机?</a></p> <p style="text-align: left"><strong><img height="16" width="16" class="b-lazy" data-src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6L3A2VmxxdmlhMVVpY3h5ZjZWQjVSbVB6SFpZYVNTOENDT3JBb3RVVjllcHlYQktrdXZZWEQxTGNlM1Q3ZHdTRWRPTDE1TEdRbGFMa0dUejJYbmtodEFKMncvNjQw?x-oss-process=image/format,png" data-original="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6L3A2VmxxdmlhMVVpY3h5ZjZWQjVSbVB6SFpZYVNTOENDT3JBb3RVVjllcHlYQktrdXZZWEQxTGNlM1Q3ZHdTRWRPTDE1TEdRbGFMa0dUejJYbmtodEFKMncvNjQw?x-oss-process=image/format,png" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" /> </strong><a href="https://mp.weixin.qq.com/s?__biz=MzU2NDY5ODc3NQ%3D%3D&amp;idx=1&amp;mid=2247485870&amp;scene=21&amp;sn=98f451990a12c8bc2853f0dc79c678e3#wechat_redirect" rel="nofollow">为什么建议大家使用 Linux 开发?</a></p> <p style="text-align: left"><img class="b-lazy" data-src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6L3A2VmxxdmlhMVVpY3h5ZjZWQjVSbVB6SFpZYVNTOENDT3JBb3RVVjllcHlYQktrdXZZWEQxTGNlM1Q3ZHdTRWRPTDE1TEdRbGFMa0dUejJYbmtodEFKMncvNjQw?x-oss-process=image/format,png" data-original="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6L3A2VmxxdmlhMVVpY3h5ZjZWQjVSbVB6SFpZYVNTOENDT3JBb3RVVjllcHlYQktrdXZZWEQxTGNlM1Q3ZHdTRWRPTDE1TEdRbGFMa0dUejJYbmtodEFKMncvNjQw?x-oss-process=image/format,png" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" /> <a href="https://mp.weixin.qq.com/s?__biz=MzIwMDU3MDkzNg%3D%3D&amp;idx=1&amp;mid=2651311016&amp;scene=21&amp;sn=c696cf4705b66de2b5e06e4dab0cfe6f#wechat_redirect" rel="nofollow">盘点提高国内访问GitHub速度的9种方案</a></p> <p style="text-align: center"><img class="b-lazy" data-src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy8ySHlJbEd1TzAyWkxkSHNpYlE2MURCYkdQOTlZRTRGR3VlOWt5ZnJlaWJFSW9YMGJJaWN3MnhuT2hFUmljUlpXMGliVnNFWXJaZjR0SkNLOENadEllOVJuWFdRLzY0MA?x-oss-process=image/format,png" data-original="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy8ySHlJbEd1TzAyWkxkSHNpYlE2MURCYkdQOTlZRTRGR3VlOWt5ZnJlaWJFSW9YMGJJaWN3MnhuT2hFUmljUlpXMGliVnNFWXJaZjR0SkNLOENadEllOVJuWFdRLzY0MA?x-oss-process=image/format,png" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" /></p> <p><img class="b-lazy" data-src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9RaWJBMlNPM2ljOVlvNlVocjV5NFRERUs0SThTd0tucE1jQWVySTVBRmFDNnRwMXowblNZaDFYb1hVQThyQ0ZXMm5PQnN0ZmdSZFlMNXJ4N2JlUGd4a2lhZy82NDA?x-oss-process=image/format,png" data-original="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9RaWJBMlNPM2ljOVlvNlVocjV5NFRERUs0SThTd0tucE1jQWVySTVBRmFDNnRwMXowblNZaDFYb1hVQThyQ0ZXMm5PQnN0ZmdSZFlMNXJ4N2JlUGd4a2lhZy82NDA?x-oss-process=image/format,png" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" /></p> <p style="text-align: right"><strong>在看点这里</strong><strong><img width="27" class="b-lazy" data-src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2dpZi80YXllaEk5WVJaaWJuaGQ0MmF5ZDVGS0FNNlJNVnFJM3JlNlN5ZDFrMDROWkFUUmVhZ3NFMUh2RGRvWjBIemcxSldFVW9SdUpFN0lWUXpGaWNmT0dkU0NBLzY0MA?x-oss-process=image/format,png" data-original="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2dpZi80YXllaEk5WVJaaWJuaGQ0MmF5ZDVGS0FNNlJNVnFJM3JlNlN5ZDFrMDROWkFUUmVhZ3NFMUh2RGRvWjBIemcxSldFVW9SdUpFN0lWUXpGaWNmT0dkU0NBLzY0MA?x-oss-process=image/format,png" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" />好文分享给更多人↓↓</strong></p> </div> <div class="alert alert-success" role="alert"><p>来源:<code>oschina</code></p><p>链接:<code>https://my.oschina.net/u/4351246/blog/4613711</code></p></div></div> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field--label">标签</div> <div class="field--items"> <div class="field--item"><a href="/tag/python" hreflang="zh-hans">python</a></div> <div class="field--item"><a href="/tag/java" hreflang="zh-hans">java</a></div> <div class="field--item"><a href="/tag/mysql" hreflang="zh-hans">mysql</a></div> <div class="field--item"><a href="/tag/github" hreflang="zh-hans">github</a></div> <div class="field--item"><a href="/tag/linux" hreflang="zh-hans">Linux</a></div> <div class="field--item"><a href="/tag/wukong-0" hreflang="zh-hans">wukong</a></div> </div> </div> Thu, 01 Oct 2020 16:51:19 +0000 社会主义新天地 3840075 at https://www.e-learn.cn javascript创建对象的方法--构造函数模式 https://www.e-learn.cn/topic/3631788 <span>javascript创建对象的方法--构造函数模式</span> <span><span lang="" about="/user/177" typeof="schema:Person" property="schema:name" datatype="">天涯浪子</span></span> <span>2020-05-09 10:54:24</span> <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"> <span id="OSC_h1_1"></span> <h1>javascript创建对象的方法--构造函数模式</h1> <span id="OSC_h3_2"></span> <h3>一、总结</h3> <p>构造函数模式作用和不足</p> <p>1、作用:解决工厂模式<span style="color: #ff0000;"><strong><span style="background-color: #ffff00;">不是用new关键字</span></strong></span>来创建对象的弊端</p> <p>2、作用:解决工厂模式创建的<strong><span style="color: #ff0000; background-color: #ffff00;">实例和模型没有内在联系</span></strong>的问题</p> <p>3、不足:无法解决工厂模式不同实例对应于不同内存的问题(<strong><span style="color: #ff0000; background-color: #ffff00;">内存浪费</span></strong>),这个用原型模式可以解决</p> <p> </p> <span id="OSC_h3_3"></span> <h3>二、javascript创建对象的方法--构造函数模式(<strong><span style="color: #ff0000; background-color: #ffff00;">需仔细看</span></strong>)</h3> <p>构造函数模式</p> <ol><li>new 调用的函数为构造函数,<span style="color: #ff0000;">构造函数和普通函数区别仅仅在于是否使用了new来调用</span>。</li> <li>所谓“构造函数”,就是专门用来生成“对象”的函数。<span style="color: #ff0000;">它提供模板,作为对象的基本结构</span>。</li> <li>构造函数内部使用了<span style="color: #ff0000;">this变量</span>。对构造函数使用new运算符,就能生成实例,并且<span style="color: #ff0000;">this变量会绑定在实例对象上</span>。</li> <li><span style="color: #ff0000;">instanceof</span> 验证原型对象与实例对象之间的关系。</li> <li>使用<span style="color: #ff0000;">call和apply方法</span>实现<span style="color: #ff0000;">对象的冒充</span></li> <li>问题:<span style="color: #ff0000;">浪费内存</span>--使用构造函数每生成一个实例,都增加一个重复的内容,多占用一些内存。这样既不环保,也缺乏效率。</li> </ol><p> </p> <span id="OSC_h3_4"></span> <h3>三、代码</h3> <p>代码一:</p> <div class="cnblogs_code"> <pre><code><span style="color: #008080;"> 1</span> <span style="color: #0000ff;">&lt;!</span><span style="color: #ff00ff;">DOCTYPE html</span><span style="color: #0000ff;">&gt;</span> <span style="color: #008080;"> 2</span> <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">html </span><span style="color: #ff0000;">lang</span><span style="color: #0000ff;">="zh-cn"</span><span style="color: #0000ff;">&gt;</span> <span style="color: #008080;"> 3</span> <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">head</span><span style="color: #0000ff;">&gt;</span> <span style="color: #008080;"> 4</span> <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">meta </span><span style="color: #ff0000;">charset</span><span style="color: #0000ff;">="utf-8"</span><span style="color: #0000ff;">&gt;</span> <span style="color: #008080;"> 5</span> <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">title</span><span style="color: #0000ff;">&gt;</span>课堂演示<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">title</span><span style="color: #0000ff;">&gt;</span> <span style="color: #008080;"> 6</span> <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">head</span><span style="color: #0000ff;">&gt;</span> <span style="color: #008080;"> 7</span> <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">body</span><span style="color: #0000ff;">&gt;</span> <span style="color: #008080;"> 8</span> <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">script</span><span style="color: #0000ff;">&gt;</span> <span style="color: #008080;"> 9</span> <span style="background-color: #f5f5f5; color: #008000;">//</span><span style="background-color: #f5f5f5; color: #008000;">基本模式</span> <span style="color: #008080;">10</span> <span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;"> people1</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #0000ff;">new</span><span style="background-color: #f5f5f5; color: #000000;"> Object(); </span><span style="color: #008080;">11</span> <span style="background-color: #f5f5f5; color: #000000;"> people1.name</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">孙悟空</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">; </span><span style="color: #008080;">12</span> <span style="background-color: #f5f5f5; color: #000000;"> people1.weapon</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">金箍棒</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">; </span><span style="color: #008080;">13</span> <span style="background-color: #f5f5f5; color: #000000;"> people1.run</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #0000ff;">function</span><span style="background-color: #f5f5f5; color: #000000;">(){ </span><span style="color: #008080;">14</span> <span style="background-color: #f5f5f5; color: #0000ff;">return</span> <span style="background-color: #f5f5f5; color: #0000ff;">this</span><span style="background-color: #f5f5f5; color: #000000;">.name</span><span style="background-color: #f5f5f5; color: #000000;">+</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">的武器是</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">+</span><span style="background-color: #f5f5f5; color: #0000ff;">this</span><span style="background-color: #f5f5f5; color: #000000;">.weapon </span><span style="color: #008080;">15</span> <span style="background-color: #f5f5f5; color: #000000;"> } </span><span style="color: #008080;">16</span> <span style="background-color: #f5f5f5; color: #008000;">//</span><span style="background-color: #f5f5f5; color: #008000;"> alert(people1.name) </span> <span style="color: #008080;">17</span> <span style="background-color: #f5f5f5; color: #008000;">//</span><span style="background-color: #f5f5f5; color: #008000;">alert(people1.run()) //注意方法的调用需要加()</span> <span style="color: #008080;">18</span> <span style="background-color: #f5f5f5; color: #008000;">//</span><span style="background-color: #f5f5f5; color: #008000;">该方法如果创建多个对象就会比较繁琐,如下...... </span> <span style="color: #008080;">19</span> <span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;"> people2</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #0000ff;">new</span><span style="background-color: #f5f5f5; color: #000000;"> Object(); </span><span style="color: #008080;">20</span> <span style="background-color: #f5f5f5; color: #000000;"> people2.name</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">猪八戒</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">; </span><span style="color: #008080;">21</span> <span style="background-color: #f5f5f5; color: #000000;"> people2.weapon</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">钉耙</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">; </span><span style="color: #008080;">22</span> <span style="background-color: #f5f5f5; color: #000000;"> people2.run</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #0000ff;">function</span><span style="background-color: #f5f5f5; color: #000000;">(){ </span><span style="color: #008080;">23</span> <span style="background-color: #f5f5f5; color: #0000ff;">return</span> <span style="background-color: #f5f5f5; color: #0000ff;">this</span><span style="background-color: #f5f5f5; color: #000000;">.name</span><span style="background-color: #f5f5f5; color: #000000;">+</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">的武器是</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">+</span><span style="background-color: #f5f5f5; color: #0000ff;">this</span><span style="background-color: #f5f5f5; color: #000000;">.weapon </span><span style="color: #008080;">24</span> <span style="background-color: #f5f5f5; color: #000000;"> } </span><span style="color: #008080;">25</span> <span style="background-color: #f5f5f5; color: #008000;">//</span><span style="background-color: #f5f5f5; color: #008000;">工厂模式</span> <span style="color: #008080;">26</span> <span style="background-color: #f5f5f5; color: #0000ff;">function</span><span style="background-color: #f5f5f5; color: #000000;"> creatPeople(name,weapon){ </span><span style="color: #008080;">27</span> <span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;"> people</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #0000ff;">new</span><span style="background-color: #f5f5f5; color: #000000;"> Object() </span><span style="background-color: #f5f5f5; color: #008000;">//</span><span style="background-color: #f5f5f5; color: #008000;">可以类比为加工对象的原材料</span> <span style="color: #008080;">28</span> <span style="background-color: #f5f5f5; color: #000000;"> people.name</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">name; </span><span style="color: #008080;">29</span> <span style="background-color: #f5f5f5; color: #000000;"> people.weapon</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">weapon; </span><span style="color: #008080;">30</span> <span style="background-color: #f5f5f5; color: #000000;"> people.run</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #0000ff;">function</span><span style="background-color: #f5f5f5; color: #000000;">(){ </span><span style="color: #008080;">31</span> <span style="background-color: #f5f5f5; color: #0000ff;">return</span> <span style="background-color: #f5f5f5; color: #0000ff;">this</span><span style="background-color: #f5f5f5; color: #000000;">.name</span><span style="background-color: #f5f5f5; color: #000000;">+</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">的武器是</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">+</span><span style="background-color: #f5f5f5; color: #0000ff;">this</span><span style="background-color: #f5f5f5; color: #000000;">.weapon </span><span style="color: #008080;">32</span> <span style="background-color: #f5f5f5; color: #000000;"> } </span><span style="background-color: #f5f5f5; color: #008000;">//</span><span style="background-color: #f5f5f5; color: #008000;">以上步骤可以类比为加工对象的过程</span> <span style="color: #008080;">33</span> <span style="background-color: #f5f5f5; color: #0000ff;">return</span><span style="background-color: #f5f5f5; color: #000000;"> people </span><span style="background-color: #f5f5f5; color: #008000;">//</span><span style="background-color: #f5f5f5; color: #008000;">注意一定要讲创建的对象返回 </span> <span style="color: #008080;">34</span> <span style="background-color: #f5f5f5; color: #008000;">//</span><span style="background-color: #f5f5f5; color: #008000;">可以类比为产品加工完毕出厂的工作</span> <span style="color: #008080;">35</span> <span style="background-color: #f5f5f5; color: #000000;"> } </span><span style="color: #008080;">36</span> <span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;"> wukong</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">creatPeople(</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">孙悟空</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">,</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">金箍棒</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">); </span><span style="color: #008080;">37</span> <span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;"> bajian</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">creatPeople(</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">猪八戒</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">,</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">钉耙</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">); </span><span style="color: #008080;">38</span> <span style="background-color: #f5f5f5; color: #008000;">//</span><span style="background-color: #f5f5f5; color: #008000;">alert(wukong.run)</span> <span style="color: #008080;">39</span> <span style="background-color: #f5f5f5; color: #008000;">//</span><span style="background-color: #f5f5f5; color: #008000;">alert(bajian.run)</span> <span style="color: #008080;">40</span> <span style="background-color: #f5f5f5; color: #008000;">//</span><span style="background-color: #f5f5f5; color: #008000;">alert(wukong.run==bajian.run)//<span style="background-color: #ffff00;">两个对象实例的地址是不同的,说明两个对象会占用两个地址空间的内存</span></span> <span style="color: #008080;">41</span> <span style="background-color: #f5f5f5; color: #008000;">//</span><span style="background-color: #f5f5f5; color: #008000;">new 关键字</span> <span style="color: #008080;">42</span> <span style="background-color: #f5f5f5; color: #0000ff;">function</span><span style="background-color: #f5f5f5; color: #000000;"> fun(){ </span><span style="color: #008080;">43</span> <span style="background-color: #f5f5f5; color: #000000;"> alert(</span><span style="background-color: #f5f5f5; color: #0000ff;">this</span><span style="background-color: #f5f5f5; color: #000000;">) </span><span style="color: #008080;">44</span> <span style="background-color: #f5f5f5; color: #000000;"> } </span><span style="color: #008080;">45</span> <span style="background-color: #f5f5f5; color: #008000;">//</span><span style="background-color: #f5f5f5; color: #008000;">fun()</span> <span style="color: #008080;">46</span> <span style="background-color: #f5f5f5; color: #008000;">//</span><span style="background-color: #f5f5f5; color: #008000;">new fun() //<span style="background-color: #ffff00;">如果有new 函数里的this就是新创建出来的对象,如果没有就是Window</span></span> <span style="color: #008080;">47</span> <span style="background-color: #f5f5f5; color: #008000;">//</span><span style="background-color: #f5f5f5; color: #008000;">构造函数模式</span> <span style="color: #008080;">48</span> <span style="background-color: #f5f5f5; color: #008000;">//</span><span style="background-color: #f5f5f5; color: #008000;">注意:<strong><span style="background-color: #ffff00;">构造函数不需要使用 return语句返回对象,它的返回是自动完成的</span></strong></span> <span style="color: #008080;">49</span> <span style="background-color: #f5f5f5; color: #0000ff;">function</span><span style="background-color: #f5f5f5; color: #000000;"> People(name,weapon){ </span><span style="color: #008080;">50</span> <span style="background-color: #f5f5f5; color: #0000ff;">this</span><span style="background-color: #f5f5f5; color: #000000;">.name</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">name; </span><span style="color: #008080;">51</span> <strong><span style="background-color: #ffff00; color: #0000ff;">this</span></strong><span style="background-color: #f5f5f5; color: #000000;">.weapon</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">weapon; </span><span style="color: #008080;">52</span> <span style="background-color: #f5f5f5; color: #0000ff;">this</span><span style="background-color: #f5f5f5; color: #000000;">.run</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #0000ff;">function</span><span style="background-color: #f5f5f5; color: #000000;">(){ </span><span style="color: #008080;">53</span> <span style="background-color: #f5f5f5; color: #0000ff;">return</span> <span style="background-color: #f5f5f5; color: #0000ff;">this</span><span style="background-color: #f5f5f5; color: #000000;">.name</span><span style="background-color: #f5f5f5; color: #000000;">+</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">的武器是</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">+</span><span style="background-color: #f5f5f5; color: #0000ff;">this</span><span style="background-color: #f5f5f5; color: #000000;">.weapon </span><span style="color: #008080;">54</span> <span style="background-color: #f5f5f5; color: #000000;"> } </span><span style="color: #008080;">55</span> <span style="background-color: #f5f5f5; color: #000000;"> } </span><span style="color: #008080;">56</span> <span style="background-color: #ffff00;"><span style="color: #0000ff;">var</span><span style="color: #000000;"> wujing</span></span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #ffff00; color: #0000ff;">new</span><span style="background-color: #f5f5f5; color: #000000;"><span style="background-color: #ffff00;"> People</span>(</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">沙悟净</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">,</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">禅杖</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">); </span><span style="color: #008080;">57</span> <span style="background-color: #f5f5f5; color: #000000;"> alert(wujing.run()) </span><span style="color: #008080;">58</span> <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">script</span><span style="color: #0000ff;">&gt;</span> <span style="color: #008080;">59</span> <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">body</span><span style="color: #0000ff;">&gt;</span> <span style="color: #008080;">60</span> <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">html</span><span style="color: #0000ff;">&gt;</span></code></pre> </div> <p>1、<strong><span style="color: #ff0000; background-color: #ffff00;">原型模式(内存浪费)</span></strong>:原型模式的不同实例分配到不同的内存</p> <p>2、this用法:<span style="color: #ff0000;">普通函数,如果有new 函数里的this就是新创建出来的对象,如果没有就是Window</span></p> <p>3、<strong><span style="color: #ff0000; background-color: #ffff00;">js构造函数自动返回</span></strong>:js的构造函数不需要返回,自动返回</p> <p>4、this用法:用了this关键字,<span style="color: #ff0000;">因为用了new之后this指向对象</span></p> <p>5、<strong><span style="color: #ff0000; background-color: #ffff00;">var 变量名接收一切</span></strong>:js中新创建出来的对象还是用 var 变量名 的方式接收,和变量的方式一样</p> <p>6、js构造模式和其它一样:<span style="color: #ff0000;">js的构造模式和java、c++等一样</span></p> <p> </p> <p>代码二:</p> <div class="cnblogs_code"> <pre><code><span style="color: #008080;"> 1</span> <span style="color: #0000ff;">&lt;!</span><span style="color: #ff00ff;">DOCTYPE html</span><span style="color: #0000ff;">&gt;</span> <span style="color: #008080;"> 2</span> <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">html </span><span style="color: #ff0000;">lang</span><span style="color: #0000ff;">="zh-cn"</span><span style="color: #0000ff;">&gt;</span> <span style="color: #008080;"> 3</span> <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">head</span><span style="color: #0000ff;">&gt;</span> <span style="color: #008080;"> 4</span> <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">meta </span><span style="color: #ff0000;">charset</span><span style="color: #0000ff;">="utf-8"</span><span style="color: #0000ff;">&gt;</span> <span style="color: #008080;"> 5</span> <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">title</span><span style="color: #0000ff;">&gt;</span>课堂演示<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">title</span><span style="color: #0000ff;">&gt;</span> <span style="color: #008080;"> 6</span> <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">head</span><span style="color: #0000ff;">&gt;</span> <span style="color: #008080;"> 7</span> <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">body</span><span style="color: #0000ff;">&gt;</span> <span style="color: #008080;"> 8</span> <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">script</span><span style="color: #0000ff;">&gt;</span> <span style="color: #008080;"> 9</span> <span style="background-color: #f5f5f5; color: #008000;">//</span><span style="background-color: #f5f5f5; color: #008000;">构造函数模式</span> <span style="color: #008080;">10</span> <span style="background-color: #f5f5f5; color: #008000;">//</span><span style="background-color: #f5f5f5; color: #008000;">注意:构造函数不需要使用 return语句返回对象,它的返回是自动完成的</span> <span style="color: #008080;">11</span> <span style="background-color: #f5f5f5; color: #0000ff;">function</span><span style="background-color: #f5f5f5; color: #000000;"> People(name,weapon){ </span><span style="color: #008080;">12</span> <span style="background-color: #f5f5f5; color: #0000ff;">this</span><span style="background-color: #f5f5f5; color: #000000;">.name</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">name; </span><span style="color: #008080;">13</span> <span style="background-color: #f5f5f5; color: #0000ff;">this</span><span style="background-color: #f5f5f5; color: #000000;">.weapon</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">weapon; </span><span style="color: #008080;">14</span> <span style="background-color: #f5f5f5; color: #0000ff;">this</span><span style="background-color: #f5f5f5; color: #000000;">.run</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #0000ff;">function</span><span style="background-color: #f5f5f5; color: #000000;">(){ </span><span style="color: #008080;">15</span> <span style="background-color: #f5f5f5; color: #0000ff;">return</span> <span style="background-color: #f5f5f5; color: #0000ff;">this</span><span style="background-color: #f5f5f5; color: #000000;">.name</span><span style="background-color: #f5f5f5; color: #000000;">+</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">的武器是</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">+</span><span style="background-color: #f5f5f5; color: #0000ff;">this</span><span style="background-color: #f5f5f5; color: #000000;">.weapon </span><span style="color: #008080;">16</span> <span style="background-color: #f5f5f5; color: #000000;"> } </span><span style="color: #008080;">17</span> <span style="background-color: #f5f5f5; color: #000000;"> } </span><span style="color: #008080;">18</span> <span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;"> wujing</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #0000ff;">new</span><span style="background-color: #f5f5f5; color: #000000;"> People(</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">沙悟净</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">,</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">禅杖</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">); </span><span style="color: #008080;">19</span> <span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;"> wukong</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #0000ff;">new</span><span style="background-color: #f5f5f5; color: #000000;"> People(</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">孙悟空</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">,</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">金箍棒</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">); </span><span style="color: #008080;">20</span> <span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;"> bajian</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #0000ff;">new</span><span style="background-color: #f5f5f5; color: #000000;"> People(</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">猪八戒</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">,</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">钉耙</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">); </span><span style="color: #008080;">21</span> <span style="background-color: #f5f5f5; color: #008000;">//</span><span style="background-color: #f5f5f5; color: #008000;">alert(wujing.run())</span> <span style="color: #008080;">22</span> <span style="background-color: #f5f5f5; color: #008000;">//</span><span style="background-color: #f5f5f5; color: #008000;">alert(<span style="background-color: #ffff00;">wujing instanceof People</span>)</span> <span style="color: #008080;">23</span> <span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;"> monster</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #0000ff;">new</span><span style="background-color: #f5f5f5; color: #000000;"> Object(); </span><span style="color: #008080;">24</span> <span style="background-color: #f5f5f5; color: #008000;">//</span><span style="background-color: #f5f5f5; color: #008000;">People.<span style="background-color: #ffff00;">call</span>(monster,'妖怪','葫芦')</span> <span style="color: #008080;">25</span> <span style="background-color: #f5f5f5; color: #000000;"> People.<span style="background-color: #ffff00;">apply(monster,[</span></span><span style="background-color: #ffff00;"><span style="color: #000000;">'</span><span style="color: #000000;">妖怪</span><span style="color: #000000;">'</span><span style="color: #000000;">,</span><span style="color: #000000;">'</span><span style="color: #000000;">葫芦</span><span style="color: #000000;">'</span><span style="color: #000000;">]) </span></span><span style="color: #008080;">26</span> <span style="background-color: #f5f5f5; color: #008000;">//</span><span style="background-color: #f5f5f5; color: #008000;"> alert(monster.run())</span> <span style="color: #008080;">27</span> <span style="background-color: #f5f5f5; color: #008000;">//</span><span style="background-color: #f5f5f5; color: #008000;"> alert(monster.name)</span> <span style="color: #008080;">28</span> <span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;"> monster1</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #0000ff;">new</span><span style="background-color: #f5f5f5; color: #000000;"> People(</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">小妖</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">,</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">长矛</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">) </span><span style="color: #008080;">29</span> <span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;"> monster2</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #0000ff;">new</span><span style="background-color: #f5f5f5; color: #000000;"> People(</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">小妖</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">,</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">长矛</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">) </span><span style="color: #008080;">30</span> <span style="background-color: #f5f5f5; color: #000000;"> alert(monster1.run()</span><span style="background-color: #f5f5f5; color: #000000;">+</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">\n</span><span style="background-color: #f5f5f5; color: #000000;">'</span><span style="background-color: #f5f5f5; color: #000000;">+</span><span style="background-color: #f5f5f5; color: #000000;">monster2.run()) </span><span style="color: #008080;">31</span> <span style="background-color: #f5f5f5; color: #000000;"> alert(monster1.run</span><span style="background-color: #f5f5f5; color: #000000;">==</span><span style="background-color: #f5f5f5; color: #000000;">monster2.run)</span><span style="background-color: #f5f5f5; color: #008000;">//</span><span style="background-color: #ffff00; color: #008000;">两个对象实例的地址是不同的,说明两个对象会占用两个地址空间的内存 </span> <span style="color: #008080;">32</span> <span style="color: #008080;">33</span> <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">script</span><span style="color: #0000ff;">&gt;</span> <span style="color: #008080;">34</span> <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">body</span><span style="color: #0000ff;">&gt;</span> <span style="color: #008080;">35</span> <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">html</span><span style="color: #0000ff;">&gt;</span></code></pre> </div> <p>1、<strong><span style="color: #ff0000; background-color: #ffff00;">判断实例</span></strong>:<strong><span style="background-color: #ffff00; color: #ff0000;">instanceof</span></strong>来判断实例,看这个of就知道实例在前,模型在后</p> <p>2、<strong><span style="color: #ff0000; background-color: #ffff00;">call和apply用法</span></strong>:call方法和apply方法实现<strong><span style="color: #ff0000; background-color: #ffff00;">对象的模仿</span></strong>,用法是要 <strong><span style="color: #ff0000; background-color: #ffff00;">被模仿的东西.apply</span></strong> 的形式</p> <p>3、<strong><span style="color: #ff0000; background-color: #ffff00;">构造模式内存浪费</span></strong>:构造器模式创建的对象分配的地址是不同的</p> <p> </p> <div class="alert alert-success" role="alert"><p>来源:<code>oschina</code></p><p>链接:<code>https://my.oschina.net/u/4346331/blog/3986809</code></p></div></div> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field--label">标签</div> <div class="field--items"> <div class="field--item"><a href="/tag/monster" hreflang="zh-hans">Monster</a></div> <div class="field--item"><a href="/tag/wukong-0" hreflang="zh-hans">wukong</a></div> <div class="field--item"><a href="/tag/shejimoshi" hreflang="zh-hans">设计模式</a></div> <div class="field--item"><a href="/tag/monster-2" hreflang="zh-hans">monster 2</a></div> </div> </div> Sat, 09 May 2020 02:54:24 +0000 天涯浪子 3631788 at https://www.e-learn.cn 2018 ACM-ICPC Asia Beijing Regional Contest https://www.e-learn.cn/topic/3620790 <span>2018 ACM-ICPC Asia Beijing Regional Contest</span> <span><span lang="" about="/user/103" typeof="schema:Person" property="schema:name" datatype="">ε祈祈猫儿з</span></span> <span>2020-05-06 09:50:29</span> <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"> <blockquote> <span id="OSC_h3_1"></span> <h3><a href="https://hihocoder.com/problemset/problem/1871" target="_blank" rel="nofollow"> Heshen's Account Book</a></h3> <span id="OSC_h3_2"></span> <h3><a href="https://hihocoder.com/problemset/problem/1870" target="_blank" rel="nofollow"> Jin Yong’s Wukong Ranking List</a></h3> <span id="OSC_h3_3"></span> <h3><a href="https://hihocoder.com/problemset/problem/1872" target="_blank" rel="nofollow">Pythagorean triple</a></h3> <span id="OSC_h3_4"></span> <h3><a href="https://hihocoder.com/problemset/problem/1873" target="_blank" rel="nofollow">Frog and Portal</a></h3> <span id="OSC_h3_5"></span> <h3><a href="https://hihocoder.com/problemset/problem/1874" target="_blank" rel="nofollow">Xor 2</a></h3> <span id="OSC_h3_6"></span> <h3><a href="https://hihocoder.com/problemset/problem/1875" target="_blank" rel="nofollow">The Kth Largest Value</a></h3> <span id="OSC_h3_7"></span> <h3><a href="https://hihocoder.com/problemset/problem/1876" target="_blank" rel="nofollow">Solving Equations is Easy</a></h3> <span id="OSC_h3_8"></span> <h3><a href="https://hihocoder.com/problemset/problem/1877" target="_blank" rel="nofollow"> Approximate Matching</a></h3> <span id="OSC_h3_9"></span> <h3><a href="https://hihocoder.com/problemset/problem/1878" target="_blank" rel="nofollow">Palindromes</a></h3> <span id="OSC_h3_10"></span> <h3><a href="https://hihocoder.com/problemset/problem/1879" target="_blank" rel="nofollow">Rikka with Triangles</a></h3> <p> </p> </blockquote> <div class="alert alert-success" role="alert"><p>来源:<code>oschina</code></p><p>链接:<code>https://my.oschina.net/u/4336234/blog/3441306</code></p></div></div> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field--label">标签</div> <div class="field--items"> <div class="field--item"><a href="/tag/wukong-0" hreflang="zh-hans">wukong</a></div> </div> </div> Wed, 06 May 2020 01:50:29 +0000 ε祈祈猫儿з 3620790 at https://www.e-learn.cn [RN] React Native 使用 AsyncStorage 存储 缓存数据 https://www.e-learn.cn/topic/3601484 <span>[RN] React Native 使用 AsyncStorage 存储 缓存数据</span> <span><span lang="" about="/user/217" typeof="schema:Person" property="schema:name" datatype="">随声附和</span></span> <span>2020-04-29 18:09:32</span> <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"> <p> React Native 使用 AsyncStorage 存储 缓存数据</p> <p>AsyncStorage是一个简单的、异步的、持久化的Key-Value存储系统,它对于App来说是全局性的。这是官网上对它的介绍。可以知道,这个asyncstorage也是以键值对的形式进行存储数据的。   那么问题来了,该怎么使用这个呢?官网上说并不推荐我们直接用这个asyncstorage,而是进行抽象封装以后在进行调用。</p> <p> </p> <p> </p> <p>封装类 StorageUtil.js   代码如下:</p> <div class="cnblogs_code"> <pre><code>import {AsyncStorage} <span style="color: #0000ff;">from</span> <span style="color: #800000;">'</span><span style="color: #800000;">react-native</span><span style="color: #800000;">'</span><span style="color: #000000;">; </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> StorageUtil { </span><span style="color: #008000;">/*</span><span style="color: #008000;">* * 获取 * @param key * @returns {*|Promise&lt;*&gt;|PromiseLike&lt;T | never&gt;|Promise&lt;T | never&gt;} </span><span style="color: #008000;">*/</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">get</span><span style="color: #000000;">(key) { </span><span style="color: #0000ff;">return</span> AsyncStorage.getItem(key).then((value) =&gt;<span style="color: #000000;"> { </span><span style="color: #0000ff;">const</span> jsonValue =<span style="color: #000000;"> JSON.parse(value); </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> jsonValue; }); } </span><span style="color: #008000;">/*</span><span style="color: #008000;">* * 保存 * @param key * @param value * @returns {*} </span><span style="color: #008000;">*/</span> <span style="color: #0000ff;">static</span><span style="color: #000000;"> save(key, value) { </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> AsyncStorage.setItem(key, JSON.stringify(value)); } </span><span style="color: #008000;">/*</span><span style="color: #008000;">* * 更新 * @param key * @param value * @returns {*} </span><span style="color: #008000;">*/</span> <span style="color: #0000ff;">static</span><span style="color: #000000;"> update(key, value) { </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> AsyncStorage.setItem(key, JSON.stringify(value)); } </span><span style="color: #008000;">/*</span><span style="color: #008000;">* * 删除 * @param key * @returns {*} </span><span style="color: #008000;">*/</span> <span style="color: #0000ff;">static</span><span style="color: #000000;"> delete(key) { </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> AsyncStorage.removeItem(key); } </span><span style="color: #008000;">/*</span><span style="color: #008000;">* * 删除所有配置数据 * @returns {Promise&lt;string&gt;} </span><span style="color: #008000;">*/</span> <span style="color: #0000ff;">static</span><span style="color: #000000;"> clear() { </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> AsyncStorage.clear(); } } export </span><span style="color: #0000ff;">default</span> StorageUtil;</code></pre> </div> <p> </p> <p>使用代码:</p> <div class="cnblogs_code"> <pre><code>let key = <span style="color: #800000;">'</span><span style="color: #800000;">per</span><span style="color: #800000;">'</span><span style="color: #000000;">; let person </span>= <span style="color: #800000;">"</span><span style="color: #800000;">hello</span><span style="color: #800000;">"</span><span style="color: #000000;">; </span><span style="color: #008000;">//</span><span style="color: #008000;">保存</span> <span style="color: #000000;"> StorageUtil.save(key, person); </span><span style="color: #008000;">//</span><span style="color: #008000;">获取</span> StorageUtil.<span style="color: #0000ff;">get</span>(key).then((row)=&gt;<span style="color: #000000;">{ </span><span style="color: #0000ff;">if</span><span style="color: #000000;">(row){ console.log(row) }</span><span style="color: #0000ff;">else</span><span style="color: #000000;">{ console.log(</span><span style="color: #800000;">"</span><span style="color: #800000;">null</span><span style="color: #800000;">"</span><span style="color: #000000;">) } }); </span><span style="color: #008000;">//</span><span style="color: #008000;">更新</span> let person2 = <span style="color: #800000;">"</span><span style="color: #800000;">广州</span><span style="color: #800000;">"</span><span style="color: #000000;">; StorageUtil.update(key, person2); </span><span style="color: #008000;">//</span><span style="color: #008000;"> StorageUtil.delete(key); </span><span style="color: #008000;">//</span><span style="color: #008000;">清除所有</span> <span style="color: #000000;"> StorageUtil.clear(); StorageUtil.</span><span style="color: #0000ff;">get</span>(key).then((row)=&gt;<span style="color: #000000;">{ </span><span style="color: #0000ff;">if</span><span style="color: #000000;">(row){ alert(row); console.log(row) }</span><span style="color: #0000ff;">else</span><span style="color: #000000;">{ console.log(</span><span style="color: #800000;">"</span><span style="color: #800000;">null</span><span style="color: #800000;">"</span><span style="color: #000000;">) } });</span></code></pre> </div> <p> </p> <p>本博客地址: <a href="https://www.cnblogs.com/wukong1688/" target="_blank" rel="nofollow">wukong1688</a></p> <p>本文原文地址:<a href="https://www.cnblogs.com/wukong1688/p/10958297.html" target="_blank" rel="nofollow">https://www.cnblogs.com/wukong1688/p/10958297.html</a></p> <p>转载请著名出处!谢谢~~</p> <p> </p> <div class="alert alert-success" role="alert"><p>来源:<code>oschina</code></p><p>链接:<code>https://my.oschina.net/u/4268222/blog/3515994</code></p></div></div> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field--label">标签</div> <div class="field--items"> <div class="field--item"><a href="/tag/wukong-0" hreflang="zh-hans">wukong</a></div> <div class="field--item"><a href="/tag/jsonvalue" hreflang="zh-hans">jsonvalue</a></div> <div class="field--item"><a href="/tag/react-native-0" hreflang="zh-hans">React Native</a></div> <div class="field--item"><a href="/tag/javascript" hreflang="zh-hans">javascript</a></div> </div> </div> Wed, 29 Apr 2020 10:09:32 +0000 随声附和 3601484 at https://www.e-learn.cn