首页 文章 精选 留言 我的

精选列表

搜索[最权威安装],共10000篇文章
优秀的个人博客,低调大师

线程数多少合理?

爱生活,爱编码,微信搜一搜【架构技术专栏】关注这个喜欢分享的地方。 本文 架构技术专栏 已收录,有各种视频、资料以及技术文章。 一、什么时候应该使用多线程? 今天看到一个问题,突然有感而发,想聊下这个话题。 不知道大家有没有想过这个问题,就是什么时候我该使用多线程呢?使用多线程就一定会提升系统性能吗? 1、其实是否应该使用多线程在很大程度上取决于应用程序的类型。 计算密集型(如纯数学运算) 的, 并受CPU 功能的制约, 则只有多CPU(或者多个内核) 机器能够从更多的线程中受益, 单CPU下, 多线程不会带来任何性能上的提升, 反而有可能由于线程切换等额外开销而导致性能下降 IO密集型的,当我的应用必须等待缓慢的资源(如网络连接或者数据库连接上返回数据)时,那么多线程会让系统的CPU充分的利用起来,当一个线程阻塞挂起时,另一个线程可以继续使用CPU资源。 其实,就是多线程不会增加CPU的处理能,而是能够更加充分地利用CPU资源。 由于同一进程的多个线程是共享同一片内存资源的,在带来方便的同时也必然会增加其复杂性,如何保证多线程访问数据的一致性问题等。而多线程属于编程中容易翻车的地方。并且多线程编程问题的测试定位也是比较难的。总体来说,好的多线程是写出来,将多线程问题寄希望于测试中发现, 无疑是极度不可靠的。SO,努力的学习吧。 Java API 与多线程息息相关的的几大关键字:volatile、synchronized、 wait、 notify. 理解了这几个关键字,就可以编写多线程的代码了。 二、什么时候需要加锁? 在多线程场合下,最重要的就是保障数据的一致性问题,而保障数据一致性问题,就需要借助于锁了。 其实我们在多线程的场景下应该搞清楚一个问题,就是到底什么需要保护?并不是所有的的数据都需要加锁保护,只有那些涉及到被多线程访问的共享的数据才需要加锁保护。 锁的本质其实就是确保在同一时刻,只有一个线程在访问共享数据,那么此时该共享数据就能得到有效的保护。 举例说明下,比如我们想构造一个多线程下安全的单向链表: <img src="/Users/luqiang/Downloads/公众号图片/链表插入新图.jpg" alt="链表插入新图" style="zoom:50%;" /> 假如现在有两个线程在操作这个链表,一个写线程插入一个新元素7,另一个读线程遍历链表数据,如果不使用任何锁,那就有可能出现下面的执行顺序: 步骤 写线程 读线程 0 修改链表元素2的next指针指向7这个元素 ... ... 1 ... ... 遍历链表,到7的时候发现next 为null,遍历结束 2 修改元素7的next 指针指向3 ... ... 通过上面的例子我们可以明显看到在多线程下操作这个链表,有可能会导致读线程读到的数据不完整,只有从链表头部到元素7的位置的数据。由此可见,不加入任何保护措施的多线程保护,势必会导致数据的混乱。为了避免数据一致性问题,我们就需要将操作该队列的代码放入同步块内(锁的对象也就是这个链表实例),来确保同一时刻只有一个线程可以访问该链表。 如何加锁? 这里简单的说下,一般我们都是使用synchronized(如果没有特殊需求建议直接使用这个关键字,jdk新版本它真的很快),记住synchronized 锁的就是对象头。 简单的说下,主要有下面几种用法: synchronized 放在方法上,锁的是当前synchronized 方法的对象实例 synchronized在static 方法上,锁的是synchronized 方法的class 类对象,注意这里class 其实也是一个对象。 synchronized(this)在代码块中,锁的是代码块括号内的对象,这里this指的就是调用这个方法的类实例对象 三、 多线程中易犯的错误 1、锁范围过大 共享资源访问完成后, 后续的代码没有放在synchronized同步代码块之外。 会导致当前线程长期无效的占用该锁, 而其它争用该锁的线程只能等待, 最终导致性能受到极大影响。 public void test() { synchronized(lock){ ... ... //正在访问共享资源 ... ... //做其它耗时操作,但这些耗时操作与共享资源无关 } } 面对上面这种写法,会导致此线程长期占有此锁,从而导致其他线程只能等待,下面来讨论下解决方法: 1)单CPU场景下,将不需要同步的耗时操作拿到同步块外面,有的情况可以提升性能,有的却不行。 CPU密集型的代码 ,不存在磁盘IO/网络IO等低CPU消耗的代码。 这种情况下, CPU 99%都在执行代码。 因此缩小同步块也不会带来任何性能上的提升, 同时缩小同步块也不会带来性能上的下降。 IO密集型的代码,在执行不消耗CPU的代码时,其实CPU属于空闲状态的。如果此时让CPU工作起来就可以带来整体上性能的提升。所以在这种情况下,就可以将不需要同步的耗时操作移到同步块外面了。 2)多CPU场景下,将耗时的CPU操作拿到同步块外面,总是可以提升性能的 CPU密集型的代码,不存在IO操作等不消耗CPU的代码片段。因为当前是多CPU,其他CPU也可能是空闲的。所以在缩小同步块的时候,也会让其他线程尽快的执行这段代码从而带来性能上的提升。 IO密集型的代码,因为当前PCU都是空闲的状态,所以将耗时的操作放在同步块外面,一定会带来整体上的性能提升。 当然,不管怎么样,缩小锁的同步范围对于系统来说都是百利而无一害的,因此上面的代码应该改为: public void test() { synchronized(lock){ ... ... //正在访问共享资源 } ... ... //做其它耗时操作,但这些耗时操作与共享资源无关 } 综上所述,一个重点,就是只将访问共享资源的代码放在同步块内,保证快进快出。 2、死锁的问题 死锁要知道的: 死锁,简单地说就是两个线程或多个线程在同时等待被对方持有的锁导致的,死锁会导致线程无法继续执行并被永久挂起。 如果线程发生了死锁,那我们就能从线程堆栈中明显的看到”Found one Java-level deadlock“,并且线程栈还会给出死锁的分析结果。 死锁这种问题如果发生在关键系统上就可能会导致系统瘫痪,如果想要快速恢复系统,临时唯一的方法就是保留线程栈先重启,然后再尽快的恢复。 死锁这种问题有时候测试是很难被立即发现的,很多时候在测试时能否及时发现这类问题,就全看你的运气和你准备的测试用例了。 避免死锁这类问题,唯一的办法就是改代码。但一个可靠的系统是设计出来的,而不是通过改BUG改出来的,当出现这种问题的时候就需要从系统设计角度去分析了。 有人会认为死锁会导致CPU 100%,其实对也不对。 要看使用的什么类型的锁了,比如synchronized导致的死锁,那就不会导致CPU100%,只会挂起线程。但如果是自旋锁这种才可能会消耗CPU。 3、共用一把锁的问题 就是多个共享变量会共用一把锁,特别是在方法级别上使用synchronized,从而人为导致的锁竞争。 上例子,下面是新手容易犯的错误: 1 public class MyTest 2 { 3 Object shared; 4 synchronized void fun1() {...} //访问共享变量shared 5 synchronized void fun2() {...} //访问共享变量shared 6 synchronized void fun3() {...} //不访问共享变量shared 7 synchronized void fun4() {...} //不访问共享变量shared 8 synchronized void fun5() {...} //不访问共享变量shared 9 } 上面的代码每一个方法都被加了synchronized ,明显违背了保护什么锁什么的原则。 三、线程数我们一般设多少比较合理呢? 其实大家都知道,在大多数场合下多线程都是可以提高系统的性能和吞吐量,但一个系统到底多少个线程才是合理的? 总的来说,线程数量太多太少其实都不太好,多了会因为线程频繁切换导致开销增大,有时候反而降低了系统性能。少了又会导致CPU资源不能充分的利用起来,性能没有达到瓶颈。 所以,系统到底使用多少线程合适,是要看系统的线程是否能充分的利用了CPU。其实实际情况,是很多时候不消耗CPU,如:磁盘IO、网络IO等。 磁盘IO、网络IO相比CPU的速度,那简直是相当的慢的,在执行IO的这段时间里CPU其实是空闲的。如果这时其他线程能把这空闲的CPU利用上,就可以达到提示系统性能和吞吐的目的。 其实上面我们也提到过,也就是两种计算特性: CPU密集型: 因为每个CPU都是高计算负载的情况,如果设置过多的线程反而会产生不必要的上下文切换。所以,一般线程我们会设置 CPU 核数 + 1就可以了,为啥要加1 呢,即使当计算(CPU)密集型的线程偶尔由于页缺失故障或者其他原因而暂停时,这个“额外”的线程也能确保 CPU 的时钟周期不会被浪费,其实就是个备份。 IO密集型:因为大量的IO操作,会导致CPU处于空闲状态,所以这时我们可以多设置些线程。 所以, 线程数 = CPU 核心数 * (1+ IO 耗时/CPU 耗时) 就可以了,希望能给你点启发。 爱生活,爱编码,微信搜一搜【架构技术专栏】关注这个喜欢分享的地方。 本文 架构技术专栏 已收录,有各种视频、资料以及技术文章。

优秀的个人博客,低调大师

哀悼日网站全站变灰代码,简单的还是ng这种方式...

云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 一般在清明节,全国哀悼日,大地震的日子,以及一些影响力很大的伟人逝世或纪念日的时候,身为站长的我们都会让自己的网站的全部网页变成灰色(黑白色),以表示我们对逝者的悼念。 那么今天就说说,通过几行简单的代码,来实现这个功能。 第一种:修改CSS文件 我们可以在网页的CSS文件中添加以下的CSS代码,来实现网页黑白色,也就是网站变灰。 代码 html { filter: progid:DXImageTransform.Microsoft.BasicImage(grayscale=1); -webkit-filter: grayscale(100%); } 第二种:在网页的标签内加入以下代码 如果你不想改动CSS文件,你可以通过在网页头部中的标签内部加入内联CSS代码的形式实现网站网页变灰。 代码 <style type="text/css"> html { filter: progid:DXImageTransform.Microsoft.BasicImage(grayscale=1); -webkit-filter: grayscale(100%);} </style> 第三种:修改标签加入内联样式 如里上面的两种方式都不喜欢,可以通过修改标签,以加入内联样式的方法,达到网页变灰的效果 代码 <html style="filter: progid:DXImageTransform.Microsoft.BasicImage(grayscale=1); -webkit-filter: grayscale(100%);"> 第四种:作者本人用的CSS代码 代码: body *{ -webkit-filter: grayscale(100%); /* webkit */ -moz-filter: grayscale(100%); /*firefox*/ -ms-filter: grayscale(100%); /*ie9*/ -o-filter: grayscale(100%); /*opera*/ filter: grayscale(100%); filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1); filter:gray; /*ie9- */ } 第五中:通过nginx使网站变灰 在Nginx负载均衡服务器上,利用sub_filter指令在输出的HTML中增加一行。 就可以实现在IE及IE内核浏览器下,所有网站变灰色。步骤如下: 1、重新编译Nginx,增加http_sub_module模块: --with-http_sub_module 2、在nginx.conf配置文件的http {...}大括号内增加以下两行: sub_filter '</head>' '<style type="text/css">html{filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);}</style>'; sub_filter_once on; 3、保存后,重新加载配置文件: /usr/local/nginx/sbin/nginx -t /usr/local/nginx/sbin/nginx -s reload 这样,整个页面就都变灰色了。 PS:以上几种方法,都是通过CSS的滤镜来控制页面的显示而已,唯一不同的就CSS代码调用的方式。各位,喜欢哪种就自己挖去吧! 【云栖号在线课堂】每天都有产品技术专家分享!课程地址:https://yqh.aliyun.com/zhibo 立即加入社群,与专家面对面,及时了解课程最新动态!【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK 原文发布时间:2020-04-07本文作者:互联网架构师 本文来自:“互联网架构师 微信公众号”,了解相关信息可以关注“互联网架构师”

优秀的个人博客,低调大师

2020,关注企业级云原生实践落地的大会来了!

过去的 2019 年,云原生关注度依然居高不下,更多开发者热衷使用云原生技术,更多企业开始探索云原生架构转型落地。尽管云原生技术已经被广泛接受,其在企业技术栈的落地仍然面临挑战。 在与各行业头部企业深度合作和交流中,我们发现国内云原生实践已累积了诸多宝贵经验。云原生技术带来的资源成本降低、研发运维效率提升等巨大价值,已经驱动企业主动迎接这些挑战。可以预见通过云原生上云最大化使用云的能力,高效的社会分工,使企业聚焦于自身业务发展,将成为企业的共识。 2020,站在一个全新十年的节点上,我们期望在以开放创新为支撑的云原生领域发声,邀请来自国内外 IT 公司的一线云原生技术专家们,碰撞思想、共话实践。全方位洞悉云原生技术趋势,分享企业云原生落地实践痛点及经验,共同探索中国企业的云原生化转型的新路径。 2020 年 2 月 29 日,阿里云主办

优秀的个人博客,低调大师

详细版本|UI2Code智能生成Flutter代码——机器生成代码

作者: 闲鱼技术-上叶,余晏 背景 在《UI2CODE--整体设计》篇中,我们提到UI2Code工程的整体流程。前步图片分析之后,我们可以得到对应的DSL布局描述。利用DSL的资讯,结合IntelliJ Plugin介面工具,面向使用者提供生成对应Flutter代码。 本篇主要介绍我们如何处理DSL的资讯,想法上即是Flutter的翻译机。总体概念如下: 输入的DSL是什么? DSL做为一种描述语言,抽象表示为了解决某一类任务而专门设计的计算机语言。在此我们的DSL代表图像识别和布局识别侧的输出,为一JSON格式。 这些资讯主要描述了这个图层(Layer)的范围(Frame)、是什么样子的类型(Type)、是什么样子的样式(Styles)、含有哪些数据(Value)等等。图层集(Layers)栏位则代表了这张视觉稿的所有图层。

优秀的个人博客,低调大师

Python 爬取张国荣火的 8 首歌,60000 评论看完泪奔!

今天是4月1日。 每年的这一天, 一部分人搜索枯肠想尽办法整蛊, 一部分人感怀四月该很好,倘若你还在。 甚至有人,用AI的方式来还原你。 但那终究不是你啊。 你走了16年了,那些当年在课桌前趁老师不注意偷偷听你歌的少年们,或许早已为人夫为人妇。 即便如此,每年却有很多人在这人间四月天里,借着你给世界留下的不绝回音,去思念你、去给你留言,即便明明知道,永远也不会收到回复。 今天,CSDN选择以科技的方式,来纪念哥哥。 我们爬取了你在网易云音乐上,评论最多的八首歌曲。 它们依次是:《沉默是金》《春夏秋冬》《倩女幽魂》《当爱已成往事》《我》《风继续吹》《玻璃之情》《风再起时》。 总共64540条的评论中,出现最多的是“生日快乐”、“哥哥”、“加油”、“你若尚在场”、“新年快乐”和“哥哥,生日快乐”。 词云图里很少有“4月1日”、“愚人节”的字眼,这并不是今天去给你评论的人少,而是今天这个日子,实在不适合对你说“快乐”。 来,先给大家看看评论的代码。 # coding:utf-8 import json import time import requests from fake_useragent import UserAgent import random import multiprocessing import sys #reload(sys) #sys.setdefaultencoding('utf-8') ua = UserAgent(verify_ssl=False) song_list = [{'186453':'春夏秋冬'},{'188204':'沉默是金'},{'188175':'倩女幽魂'},{'188489':'风继续吹'},{'187374':'我'},{'186760':'风雨起时'}] headers = { 'Origin':'https://music.163.com', 'Referer': 'https://music.163.com/song?id=26620756', 'Host': 'music.163.com', 'User-Agent': ua.random } def get_comments(page,ite): # 获取评论信息 # """ for key, values in ite.items(): song_id = key song_name = values ip_list = [IP列表] url = 'http://music.163.com/api/v1/resource/comments/R_SO_4_'+ song_id +'?limit=20&offset=' + str(page) proxies = get_random_ip(ip_list) try: response = requests.get(url=url, headers=headers,proxies=proxies) except Exception as e: print (page) print (ite) return 0 result = json.loads(response.text) items = result['comments'] for item in items: # 用户名 user_name = item['user']['nickname'].replace(',', ',') # 用户ID user_id = str(item['user']['userId']) print(user_id) # 评论内容 comment = item['content'].strip().replace('', '').replace(',', ',') # 评论ID comment_id = str(item['commentId']) # 评论点赞数 praise = str(item['likedCount']) # 评论时间 date = time.localtime(int(str(item['time'])[:10])) date = time.strftime("%Y-%m-%d %H:%M:%S", date) 八首歌的歌词代码: import requests from bs4 import BeautifulSoup import re import json import time import random import os headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3355.4 Safari/537.36', 'Referer': 'http://music.163.com', 'Host': 'music.163.com' } # 获取页面源码 def GetHtml(url): try: res = requests.get(url=url, headers=headers) except: return None return res.text # 提取歌手歌词信息 def GetSongsInfo(url): print('[INFO]:Getting Songs Info...') html = GetHtml(url) soup = BeautifulSoup(html, 'lxml') links = soup.find('ul', class_='f-hide').find_all('a') if len(links) < 1: print('[Warning]:_GetSongsInfonot find...') Info = {'ID': [], 'NAME': []} for link in links: SongID = link.get('href').split('=')[-1] SongName = link.get_text() Info['ID'].append(SongID) Info['NAME'].append(SongName) # print(Info) return Info def GetLyrics(SongID): print('[INFO]:Getting %s lyric...' % SongID) ApiUrl = 'http://music.163.com/api/song/lyric?id={}&lv=1&kv=1&tv=-1'.format(SongID) html = GetHtml(ApiUrl) html_json = json.loads(html) temp = html_json['lrc']['lyric'] rule = re.compile(r'[.*]') lyric = re.sub(rule, '', temp).strip() print(lyric) return lyric def main(): SingerId = input('Enter the Singer ID:') url = 'http://music.163.com/artist?id={}'.format(SingerId) # url = "http://music.163.com/artist?id=6457" Info = GetSongsInfo(url) IDs = Info['ID'] i = 0 for ID in IDs: lyric = GetLyrics(ID) SaveLyrics(Info['NAME'][i], lyric) i += 1 time.sleep(random.random() * 3) # print('[INFO]:All Done...') def SaveLyrics(SongName, lyric): print('[INFO]: Start to Save {}...'.format(SongName)) if not os.path.isdir('./results'): os.makedirs('./results') with open('./results/{}.txt'.format(SongName), 'w', encoding='utf-8') as f: f.write(lyric) 《沉默是金》 是错永不对 真永是真 任你怎说安守我本份 始终相信 沉默是金 这首歌是你亲自谱曲的。 当时,“谭张争霸”(1986-1989年,谭咏麟和张国荣为争夺乐坛地位,而在音乐上展开了全面竞争角逐)已经进入白热化。 你讨厌争来争去,于是借歌明志,推出了《沉默是金》。 你说,“任你怎说安守我本份,始终相信,沉默是金。” 清者自清,你的沉默,愈加彰显纯真本色。 《春夏秋冬》 秋天该很好 你若尚在场 秋风即使带凉 亦漂亮 深秋中的你填密我梦想 就像落叶飞 轻敲我窗 每到你生日时、每到新年时、每到你离开世界的那天时,你的歌下面就会有大量评论涌来。 你是4月1日走的,但是喜欢你的人,总是3月30日、31日甚至更早,就来你的音乐下面评论。 多少人希望你复活,甚至有人在重庆看到一位和你眉眼很像的出租者司机,都忍不住拍下。 你眼神中的澄澈和犹豫,事隔经年,还是那么让人无法忘记。 《倩女幽魂》 红尘里 美梦有几多方向 找痴痴梦幻中心爱 路随人茫茫 《倩女幽魂》里,你是羞涩怯弱的书生,走夜路时要点三盏灯笼,但却为了担心阳光把小倩的魂魄照散,死死地用肩膀扛着门板。 小倩走了,宁采臣的心也跟着死了。 哥哥走了,别人再演宁采臣,总感觉除却巫山不是云。 《当爱已成往事》 为何你不懂 只要有爱就有痛 有一天你会知道 人生没有我并不会不同 《霸王别姬》里,你演程蝶衣。 演得那么妩媚,以至于有人断言你是童子功出身。 其实,你只不过是重病还坚持训练而已。 你说“不疯魔,不成活”,所以你知道段小楼娶妻后,会嫉妒会难过会发狂。 戏里戏外,你都爱过,你说“只要有爱就有痛”,但却更像是唱给自己听。 你这样的纯粹和“认死理”,总是让粉丝很心疼你...... 《我》 孤独的沙漠里 一样盛放的赤裸裸 多么高兴 在琉璃屋中快乐生活 对世界说 甚么是光明和磊落 我就是我 是颜色不一样的烟火 多少人用你唱的那句“我就是我,是颜色不一样的烟火”来鼓励自己活出自我。 但最后你却已烟火一样的方式,离开了人世间。 几年前,梁朝伟在纪念你的演唱会上,拨通你的电话。 电话里,留言声依旧,“你好,我是leslie,有事请留言。” 梁朝伟沉默了,许久之后,淡淡说句:“宝荣啊,不如我们从头来过。” 《风继续吹》 风继续吹不忍远离 心里亦有泪不愿流泪望着你 过去多少快乐记忆 何妨与你一起去追 这是你的成名曲,所以你似乎很中意它。 每每参加演唱会,都要唱一唱。 最后一次唱起时,不知怎的竟然哭了,台下观众也跟着你哭。 因为这首歌,是你翻身的见证啊。 你在歌坛摸爬滚打那么多年,一直寂寂无声,是这首歌才没有让你被埋没。 《玻璃之情》 不信眼泪 能令失落的你爱下去 难收的覆水 将感情漫漫荡开去 如果你太累 及时地道别没有罪 你曾说,每次唱歌前,都要给这首歌编一个故事,唱的时候,脑海中浮现出故事的画面,而这种画面感,让你唱得很投入。 为什么你的歌经久不息,就是因为你不仅对人重情,对歌也重情。 《风再起时》 我回头再往某年 像失色照片乍现眼前 这个茫然困惑少年 愿一生以歌 投入每天永不变 1989年,已经见过了娱乐圈太多浮沉的你,突然宣布告别乐坛。 你见过喧嚣,但你却不属于喧嚣。 策划告别演唱会之前,你和音乐人陈少琪、黎小田商量。 陈少琪说,“你不是有一首成名曲叫《风继续吹》么?不如歌名就叫《风再起时》,就是希望只要一起风的时候,歌迷就会想起你的这首歌。” 边上的黎小田,花了十五分钟就在随手找来的白纸上,谱好了曲子。 很快,陈少琪也把词填好了。 有人说,这首歌里的歌词,就是为你量身定做的:“我回头再往某年,像失色照片乍现眼前,这个茫然困惑少年,愿一生以歌,投入每天永不变”。 愿一生以歌,投入每天永不变...... 不知道现在的你,还唱歌吗?还演戏吗? 你知不知道,今天很多人都在想你。 谢谢你,留给我们这么多歌曲和电影。 愿你在另外一个世界,永远没有忧郁和伤心。 以上。

优秀的个人博客,低调大师

2018年自然语言处理值得关注的研究、论文和代码

2018年对于自然语言处理(NPL)是很有意义的一年,见证了许多新的研究方向和尖端成果。Elvis Saravia 是计算语言学专家,也是2019 计算语言学会年度大会北美分部的项目委员之一。他总结了2018年 NLP 的重要进展,包括增强学习、情感分析和深度学习等领域。点击文章中的链接,可获得每一项研究的详细信息、论文或者代码。 综合领域 Facebook 研究员们发明了一种机器翻译的新方法,只需要使用单一语言语料库,这对于缺乏资料的语言非常有用。 Young 和同事更新了他们近期发表的论文《基于深度学习的自然语言处理的最新趋势》,增加了 NLP 文献中最新的 SQuAD 结果。 Bloomberg 研究员 Yi Yang 发表了 RNN 卷积筛选建模的最新论文及代码,称体现了语言中的长期依存性和组合性。 百度发布了 Deep Voice 3,是一项基于注意、完全卷积的文字语音转换神经系统,比目前的循环系统在神经语音合成方面快几个量级。 Pair2vec 是一种学习文字嵌入对的新方法,能体现隐含关系的背景知识。 百度发布了名为同声翻译与预测及可控延迟(STACL)的机器翻译算法,能够同时进行多个翻译。在同声传译时,这项技术不需要等发言者暂停发言,而可以预测发言者的下一个词语。 Deep INFOMAX 是一种学习无监督表征的方法,将输入和高层特征矢量之间的共同信息最大化。 蒙特利尔大学的 AI 研究团队 MILA 发表了多个超赞的研究成果,记录了自然语言生成(NLG)任务中 GAN 的限制。 聊天机器人是 NLP 的一个重要研究领域,创业公司 lang.ai 如何使用无监督 AI 来解决打造聊天机器人的重要挑战之一:理解用户到底想要什么。 这个模型提供了一种新方法进行文字生成,可以实现更强的解读性和控制性。 谷歌 AI 发表了论文,探索语言建模的极限。 亚马逊研究员提出了一种语言建模方法,这种新的训练策略的重要性在于,在现实中,要获得大量的训练数据来建立一种新能力经常是不现实的。 **增强学习**许多研究员认为增强学习是机器学习的最前端。 我们来看看这个领域内,2018年都有哪些重大进展。 David Ha 的“世界模型”,目标是研究个体能否在其自身的梦境中学习,需要利用增强学习来学习一项规则,依靠世界模型中抽取的特征来解决制定的任务。 OpenAI 开发了一个类似人类的机器人手,通过增强学习算法获得操纵物体的灵活性。 DeepMind 在《自然》杂志发布了一篇论文,讨论虚拟环境中,人工个体的网格表征怎样通过矢量导航找到解决。 TextWorld 是以文字游戏为灵感的学习环境,用于训练增强学习代理。 Google研究员开发了一项名为 MnasNet 的技术,是一种自动化神经网络架构搜索方法,用于通过增强学习设计移动化机器学习模型。 OpenAI Five 利用增强学习,能在复杂游戏 Dota 2 中打败业余水准的人类选手。 DeepMind 开发了名为 PopArt 的技术,利用增强学习在多任务环境中具有高精确度。 三星的 CozNet 是一种增强学习算法,在两项知名的NPL比赛中展现了顶尖表现。 Arel 使用对抗奖励学习来讲故事,解决故事评估维度的局限。 Metacar 是为无人驾驶汽车而设计的增强学习环境,在以 Tensorflow.js 打造的浏览器上使用。 OpenAI 发布的 Gym Retro 平台提供 1000多个游戏,进行增强学习研究。 情感分析机器学习系统需要更深的理解能力,才能与人类在情感层面互动。 这篇新论文提出了“层级化CVAE用于精准的仇恨言论分类”,能够理解40多个群体和13中不同类别的仇恨言论。 这篇论文讨论如何使用简单的支持向量机变量获得最佳结果,并指出模型方面需要注意的几点。目前大部分情感分析都是基于神经方法,研究时需要注意模型和特征的选择。 这篇论文定量分析了推特表情肤色修改器的使用效果。 这篇论文讨论如何使用深度卷积神经网络检测讽刺。另外,这项新研究使用眼动追踪、NLP和深度学习算法检测讽刺。 研究员开发了一项成为“情感聊天机器”的方法,这个聊天机器人不仅能给出符合事实与逻辑的答案,还能在聊天中加入悲伤、厌烦等情绪。 Lei Zhang 等研究员发表了一篇论文,综合概括了深度学习方法如何用于情感分析。 这个双向异步框架可以在聊天中生成有意义的情感回复。 这项研究使用计算机视觉方法,研究语境中的情感识别。 这篇在2018 NAACL 大会上发表的论文,提出了一种方法可以使用简单的递归神经网络模拟情感流。 深度学习 DeepMind 与哈佛大学教师 Wouter Kool 合作发表了论文,研究人类如何使用大脑来做决定,以及这些研究结果能如何启发人工智能的研究。 这篇论文引入了“群组归一化”的概念,可以有效替代批归一化,被认为是深度学习的一项重要技术。 Sperichal CNN 是一种打造卷积神经网络的新方法。 BAIR 发布了一篇文章,讨论目前循环神经网络和前馈神经网络在解决各种问题时的优缺点。 Facebook 的 AI 研究小组开发了一项新技术,能将 AI 模型运行效率提升16%。这能提高 AI 模型的训练速度,并简化模型的量化和运行。 这篇《自然》杂志论文,介绍了一种可以预测地震后余震位置的深度学习方法。 DeepMind 研究员开发了一种新方法,利用神经算数逻辑单元(NALU)改善神经网络,追踪时间、用数字图片运行算数、数图片中的物体个数等等。 DARTS 是一种架构搜索算法,可以设计高性能的图像分类卷积架构。 这篇论文《实证验证序列建模中的通用卷积网络和神经网络》,讨论了序列建模中 CNN 和 RNN 的区别。 图形神经网络如何帮助推断潜在关系结构、模拟多代理和物理动态。 谷歌 AI 研究团队发布了一篇论文,提出了一种改进版的 RNN,能够提高自动数据解读的精确度。 Distill 发布了新研究,可以在一个数据源的语境下分析另一个数据。- 如果没有任何数据、也没有任何人类知识工程,有可能习得精准的认知模型吗?这项研究会告诉你答案。 这篇论文详细描述了针对深度神经网络的批归一化研究。 这篇论文回顾了神经网络中,如何更好地进行批训练。 这篇论文讨论如何正确评估深度半监督学习算法。 本文由阿里云云栖社区组织翻译。文章原标题《NLP Highlights of 2018》,译者:炫,审校:袁虎。文章简译,更为详细的内容,请查看原文。

优秀的个人博客,低调大师

使用HANA Web-based Development Workbench创建简单的Server Side JavaScript

服务器端的JavaScript, 看下wikipedia的介绍:https://en.wikipedia.org/wiki/JavaScript#Server-side_JavaScriptServer-side JavaScript In December 1995, soon after releasing JavaScript for browsers, Netscape introduced an implementation of the language for server-side scripting with Netscape Enterprise Server. Since 1996, the IIS web-server has supported Microsoft's implementation of server-side Javascript -- JScript -- in ASP and .NET pages. Since the mid-2000s, additional server-side JavaScript implementations have been introduced, such as Node.js in 2009. 再看SAP的Server Side(服务器端) JavaScript解决方案:SAP Extended Application Service打开SAP HANA Web-Based Development Workbench:创建一个新的package: 创建一个新的Application: 创建一个新的文件test.xsjs, 内容如下: var userInput = $.request.parameters.get("userStuff"); $.response.contentType = "text/html"; $.response.setBody(userInput); 这个hello world应用是一个简单的echo应用:将用户通过url传进来的数据直接输出。测试: 要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。