- C#最佳工具集合:IDE、分析、自动化工具等 2017-09-12 16:35:20 分类:DotNet程序员 来自:Sweet Tang,英文原文 C#是企业中广泛使用的编程语言,特别是那些依赖微
江南老画船
c#
C#最佳工具集合:IDE、分析、自动化工具等2017-09-1216:35:20分类:DotNet程序员来自:SweetTang,英文原文C#是企业中广泛使用的编程语言,特别是那些依赖微软的程序语言。如果您使用C#构建应用程序,则最有可能使用VisualStudio,并且已经寻找了一些扩展来对您的开发进行管理。但是,这个工具列表可能会改变您编写C#代码的方式。C#编程的最佳工具有以下几类:IDEV
- 10分钟学会ES7+ES8-缺乏decorator
西瓜学派
web前端ES678
10分钟学会ES7+ES8作者:王刚力时间:2017-09-12浏览人数:147撰文为何身为一个前端开发者,ECMAScript(以下简称ES)早已广泛应用在我们的工作当中。了解ECMA机构流程的人应该知道,标准委员会会在每年的6月份正式发布一次规范的修订,而这次的发布也将作为当年的正式版本。以后的改动,都会基于上一版本进行修改。所以,我们这次就基于ES6的版本对ES7、ES8版本的新增以及修改内
- 2017-09-12
z紫暄z
淋了场透彻的雨。说来,人生还真都是意外。前一刻还在林间偷果,也并不是真的想着去摘,是一路远观,看着着实可爱,那么诱人,忍不住偷偷尝了一口,好甜~手不自觉的就摘来。正偷的欢,天空忽的雷鸣电闪,舍不得果子撒不下欢,不过瞬间,倾盆大雨落下来。正是在林间路上,环顾四周,无任何遮挡物,避无可避,苦笑一下,索性放弃挣扎,由的雨水泼下来,拍打到身上有些刺疼。雨下的又大又急,雷声轰隆。新疆的雨就是这样狂暴,像是要
- angular4
泡泡糖_966c
angular4从零到实战讲解2017-09-12项目源码地址:https://github.com/wuyanwen/angularProjectPlus.git
- 2017-09-12
水文君
图片发自App图片发自App图片发自App图片发自App图片发自App图片发自App
- 2017-09-12忆昨日书
信得DR
你是风沙中慢慢燃起的苍白的火焰没有余温给我时光里的水迹被无声拧干终究挥散至此干涸你在旧日阶前做出挽留的姿态未曾伸手未曾回头是路灯下伶仃的影呵出一团没有温度的气悲情钉在时间的缝他们的影子在窃窃私语而你静坐双膝如木是一夜的沉默是桥年久失修是浮木不浮泅渡的人双双溺死在无所谓救赎的路上你的脸显得悲喜不明而秋天的枯叶覆上以叶之华美掩上苍老的伤
- 2017-09-12
李沐晨
《大鱼海棠》人间有人遇鱼名椿水下有神化人成鲲两界隔一门另有一秋白发天神开天之列落落烟尘南冥天池分椿抱树根秋叶燃尽补天水送恋人北冥有鱼其名为鲲别时雨纷纷踏空无痕上古有大椿八千岁为春八千岁为秋此大年轮回裸身
- 2017-09-12
琪娟Aisha
图片发自App图片发自App图片发自App图片发自App图片发自App图片发自App图片发自App图片发自App
- 2017-09-12
新心断点
《建筑设计》杂志(BD:BuildingDesign)于本月初公布了伦敦最丑建筑──一栋位于维多利亚车站外的高层建筑。赢得这一称号其实还挺难的,它可是从众多奇葩建筑之中披荆斩棘,才杀出重围的呢!亮红色的尖角从这栋造价3亿8千万欧元的建筑上伸出。有人称,它看上去就像是醉醺醺的英国步兵;还有人称,它就像一只傻傻的正在梳理羽毛的小公鸡。总之,建筑界对其的评论,可谓是一边倒的批判。英文原文'ABright
- 2017-09-12
倩儿倩
这是离开你的第二天,最大的体悟是这种疼痛是持续平均的,感觉心里都在温温的疼着,不敢去回忆以前,不敢回忆我们,不敢去想如果我们没有分开,现在是在打电话还是聊微信呢。这次,我们真的要分开了。
- 2017-09-12
沐曦_dawn
她说,你是她的唯一他说,她是你的挚爱她说,陪伴最长情的告白他说,君若不离我必不弃她说,不愿就此放弃他说,不会回到原地青涩不及当初,聚散不由你我。他说,喜欢一个人好难,没有自由,备受限制。她说,爱一个人好痛,为他着想,迁就对方。他说,喜欢她的时候,孤单时便总会想起。她说,爱他的时候,潜意识里暖暖的全都是他。他说,喜欢他的人很多,让她不要放弃。她说,她爱的人很少,他就是她的唯一。他说,放弃一个爱你的人
- 2017-09-12
SenaDeng
大阪梅田站3COINS跟Saluthep5building图片发自App图片发自App图片发自App图片发自App8楼图片发自App图片发自App图片发自App图片发自App图片发自App图片发自App
- 2017-09-12跑步的时候你在想什么
禾必
一只毛虫在未成为蝴蝶的时候死去,它永远只能是一只虫子。庆祝每一个突破自我的日子。感觉自己萌萌哒赶着台风来袭的最后几个小时,赶紧把运动进行到底。结果想到这两天可能不能跑步了,愣是给它多跑了几圈,然后全身就没有一处干的了。但是跑完的那种解脱感,真的只有跑了才会知道。特别是跑完的第一口水,千金难买的甜。慢跑真的是一项会上瘾的运动,像吸毒品的感觉,不跑难受,跑了难受,可是让人一种解放自我的感觉。——当你在
- 2017-09-12
洋氵羊
体验入:今天下午洗了一个萨摩耶放进池子里它跳了出来跑到了后面放狗的地方怎么弄也不出来后来拿牵带一逗就出来了找核心:狗狗自己跑出来心里肯定很慌应该拿出它自己的东西让它知道该怎么办转身用:找对方法很重要
- 2017-09-12
SukieGUO
0903-swsz-213-郭淑娟-第8次作业图片发自App文章多角度分析了什么是真正的爱,什么是似是而非的爱,分析了心理学角度的原因,形成过程。分析了真正的爱需要勇气,需要付出,需要投入……把感性的东西理性来分析,避免因为对爱的错判而引发众多误解、过高的期许、伤害!绘制导图的过程就是梳理作者思想的过程和转化成自己认知的过程,改变了以往“泛读”“断章取义”的阅读方法,更全面更深入地领会到作者的意图
- 2017-09-12
莫心莫肺
姓名:魏正君《六项精进》第270期感谢2组公司:绵阳大北农农牧科技有限公司【日精进打卡第65天】【知~学习】背诵《大学》3遍,累计194遍。背诵《六项精进大纲》3遍,累计194遍。【经典名句分享】爱出者爱返,福往者福来。己所不欲,勿施于人。己所欲者,慎施于人。每个人都有错,但只有愚者才执迷不悟。【行~实践】1、修身:早起,步行3750步。2、齐家:和妹妹交流泸州地震情况。3、建功:今日拜访木马李源
- 2017-09-12
买点僵尸粉
这两天板中停水停电了。实在是太难受了,小心翼翼的使用仅有的百分之几的电,心里慌慌的。过了人生中第一个正式的教师节,吃了许多东西,也到了酒吧,吃东西的时候真的蛮开心的,不过吃完也没有多开心,又觉得自己身上的担子重了一点,现在觉得当学生挺好的,不用想太多,不用备课,不用应付领导,唉,想上好课,又觉得自己能力不够。现在发现学生的课蛮难上的,有些太跳,我能怎么办,我也很绝望呀!!!感觉今天都是负面情堵,感
- 小林107期双色球推荐247期3D推荐
小林福彩推荐
原创2017-09-12推荐2017107期双色球精选15红:12681113151821222628303132心水9红:6813212226303132单注:06081315212206081322313206081326303206081522263006082130313206131526313206152126303106212226313208131521263108131522303
- 2017-09-12
kitcui
儿子上初二了,感赏儿子能很快适应新学期生活,独立自主。感赏儿子放学后能很快到家没有在外逗留玩耍的习惯。感赏儿子每天自觉地上学完成作业,感赏儿子比上学期学习有进步,相信孩子一定会越好越好、越来越棒!今天看到群里一段话:孩子的自律来源于信任,而不只是放手。放手不是一种改变孩子的手段,而是家长在孩子变得更糟糕时,还能心平气和地接纳孩子,在不断发生的状况中锻炼信任能力的过程。而信任孩子是一种爱孩子的能力,
- 2017-09-12
HAHAshine
终于来到了大学,老师说大学是一个新的起点,你会站在新的高度去看这个世界,你或许会交到一辈子的知心挚友,又或者拥有一段美好的爱情,大学,就是一个让人得到提升的地方。可是来到这里差不多已经一周了,没有什么特别的感受,有的只是寂寞无聊,不知道自己该干些什么,也没有他们说的那么好。我看到了一些同学的热情洋溢,可是我是个慢热的人,让我一下子对别人那么热情我做不到,而且我也不想变成为了合群而努力合群的人。也没
- 十字路口的拥抱
A山里鹤
实力派闪小说】十字路口的拥抱萧心哥2017-09-12萧心哥静静写字作者简介:萧心哥,曾用笔名肖晨,晓晓;青年音乐人,80后知名作家;中国五位金蚂蚁作家之一;出版有小说集《南来北往的客》、《大阪城的过客》、诗集《四季花开的客栈》等,主编有《流行歌曲同名小说》等畅销书40多本。十字路口萧心哥他和她吵架了。吵架后,她想,我千里迢迢从乡下来看你,你却催我回去,分明是在城里有了女人;他想,农忙季节你不在家
- 2017-09-12
月野兔TT
心有千千结,脸有千千孔。⊙﹏⊙第一次清理毛孔,痛到飙泪,咬着牙告诉自己这都可以忍了,孰不可忍?心和脸要经历了多少糟心,才能淤堵成这样的惨状?好在,心里清澈了,路也明媚了,现在就是清理这张脸了呀~~每一次都变好,每一天都进步,加油(^ω^)小兔子~
- 2017-09-12
上帝的喜笑
相亲相爱有真心自信价值感被建立破碎的里面不知道自己为啥在这里自我不肯定不认识自己价值对自己有安全感吗对学校是压力不是喜欢去的地方反而是要躲避成为影响别人的人相信神够大吗大过你的问题大过孩子问题神没有你依然可以做事吗听世界声音会迷茫自我价值感完全吸收完全消化走到哪里都天下无敌主我知道你的能力大过一切
- 2017-09-12
小胡_e6f9
人生如若初见,挥动着指间,送走天边一抹夕阳,葬在那一缕思恋。我从你的全世界路过,你是否从你们的世界路过……
- 2017-09-12
门庭依旧
你是个纯正的人。这是你的美德也是你的缺点。你自己有纯正的品格,便希望全部生活都是由纯正的现象组成,而这是不可能的。你看不起社会服务活动,希望凡事始终要有目的性,这也是不可能的。你还要求个人的活动总是目标明确,爱情与家庭生活永远统一,这又是不可能的。生活的一切妩媚多姿,一切的美都是由阴暗面和光明面组成的。
- 2017-09-12
清月楼
图片发自App图片发自App图片发自App图片发自App图片发自App图片发自App图片发自App图片发自App图片发自App
- 2017-09-12
李宇航妈妈
图片发自App一天时间不知道看了多少回淘宝快递信息!今天已经周二,还有两天时间就到家长节,所有的东西都还没到,心里这个急呀!昨晚的明信片商家加班给做了出来,今天一早就给发货了,感谢商家的帮助,虽然说人家是赚了咱们钱,但是帮与不帮都在于人家!其实人和人之间没有什么解决不了的事,关键是需要好好沟通!理解万岁!今晚看到快递信息都已经更新,围裙套装明天就能收到,明信片也往潍坊发过去了,还有树贴已经到了青岛
- 2017-09-12
成败火
今天上体育课时发生了一件事情,本班的同学和高三的同学发生了冲突,因为什么原因就不说了,就是因为一些小事就发生本不该发生的事,从这事件中,我们可以想想,本来就可以用几句话就能解决的事,非要动手,都是脾气不好,退一步海阔天空,自已都好好想想自己的原因,有时就是因为你冲动了而犯下的错误,要是当时能冷静下来好好说,就不会发生现在学校的打架斗殴,人总是会犯错,只要你能改,都是可以的,人人都会犯错,人人都懂得
- 2017-09-12
双陳
图片发自App图片发自App图片发自App图片发自App图片发自App图片发自App图片发自App图片发自App
- 2017-09-12
孔美荣
9.12今天朋友来找述说她心里的不满,我给她讲金刚知慧,虽然她不是很理解,但是还是感恩她把我当成了无话不谈的姐妹。感恩现在的发展速度,上街就拿一个手机什么都可以买到,不再像以前一样忘了拿钱就什么也办不了。感恩我们的房东让我们晚了一个月交房租,让我们又可以周转一个月。图片发自App
- SAX解析xml文件
小猪猪08
xml
1.创建SAXParserFactory实例
2.通过SAXParserFactory对象获取SAXParser实例
3.创建一个类SAXParserHander继续DefaultHandler,并且实例化这个类
4.SAXParser实例的parse来获取文件
public static void main(String[] args) {
//
- 为什么mysql里的ibdata1文件不断的增长?
brotherlamp
linuxlinux运维linux资料linux视频linux运维自学
我们在 Percona 支持栏目经常收到关于 MySQL 的 ibdata1 文件的这个问题。
当监控服务器发送一个关于 MySQL 服务器存储的报警时,恐慌就开始了 —— 就是说磁盘快要满了。
一番调查后你意识到大多数地盘空间被 InnoDB 的共享表空间 ibdata1 使用。而你已经启用了 innodbfileper_table,所以问题是:
ibdata1存了什么?
当你启用了 i
- Quartz-quartz.properties配置
eksliang
quartz
其实Quartz JAR文件的org.quartz包下就包含了一个quartz.properties属性配置文件并提供了默认设置。如果需要调整默认配置,可以在类路径下建立一个新的quartz.properties,它将自动被Quartz加载并覆盖默认的设置。
下面是这些默认值的解释
#-----集群的配置
org.quartz.scheduler.instanceName =
- informatica session的使用
18289753290
workflowsessionlogInformatica
如果希望workflow存储最近20次的log,在session里的Config Object设置,log options做配置,save session log :sessions run ;savesessio log for these runs:20
session下面的source 里面有个tracing 
- Scrapy抓取网页时出现CRC check failed 0x471e6e9a != 0x7c07b839L的错误
酷的飞上天空
scrapy
Scrapy版本0.14.4
出现问题现象:
ERROR: Error downloading <GET http://xxxxx CRC check failed
解决方法
1.设置网络请求时的header中的属性'Accept-Encoding': '*;q=0'
明确表示不支持任何形式的压缩格式,避免程序的解压
- java Swing小集锦
永夜-极光
java swing
1.关闭窗体弹出确认对话框
1.1 this.setDefaultCloseOperation (JFrame.DO_NOTHING_ON_CLOSE);
1.2
this.addWindowListener (
new WindowAdapter () {
public void windo
- 强制删除.svn文件夹
随便小屋
java
在windows上,从别处复制的项目中可能带有.svn文件夹,手动删除太麻烦,并且每个文件夹下都有。所以写了个程序进行删除。因为.svn文件夹在windows上是只读的,所以用File中的delete()和deleteOnExist()方法都不能将其删除,所以只能采用windows命令方式进行删除
- GET和POST有什么区别?及为什么网上的多数答案都是错的。
aijuans
get post
如果有人问你,GET和POST,有什么区别?你会如何回答? 我的经历
前几天有人问我这个问题。我说GET是用于获取数据的,POST,一般用于将数据发给服务器之用。
这个答案好像并不是他想要的。于是他继续追问有没有别的区别?我说这就是个名字而已,如果服务器支持,他完全可以把G
- 谈谈新浪微博背后的那些算法
aoyouzi
谈谈新浪微博背后的那些算法
本文对微博中常见的问题的对应算法进行了简单的介绍,在实际应用中的算法比介绍的要复杂的多。当然,本文覆盖的主题并不全,比如好友推荐、热点跟踪等就没有涉及到。但古人云“窥一斑而见全豹”,希望本文的介绍能帮助大家更好的理解微博这样的社交网络应用。
微博是一个很多人都在用的社交应用。天天刷微博的人每天都会进行着这样几个操作:原创、转发、回复、阅读、关注、@等。其中,前四个是针对短博文,最后的关注和@则针
- Connection reset 连接被重置的解决方法
百合不是茶
java字符流连接被重置
流是java的核心部分,,昨天在做android服务器连接服务器的时候出了问题,就将代码放到java中执行,结果还是一样连接被重置
被重置的代码如下;
客户端代码;
package 通信软件服务器;
import java.io.BufferedWriter;
import java.io.OutputStream;
import java.io.O
- web.xml配置详解之filter
bijian1013
javaweb.xmlfilter
一.定义
<filter>
<filter-name>encodingfilter</filter-name>
<filter-class>com.my.app.EncodingFilter</filter-class>
<init-param>
<param-name>encoding<
- Heritrix
Bill_chen
多线程xml算法制造配置管理
作为纯Java语言开发的、功能强大的网络爬虫Heritrix,其功能极其强大,且扩展性良好,深受热爱搜索技术的盆友们的喜爱,但它配置较为复杂,且源码不好理解,最近又使劲看了下,结合自己的学习和理解,跟大家分享Heritrix的点点滴滴。
Heritrix的下载(http://sourceforge.net/projects/archive-crawler/)安装、配置,就不罗嗦了,可以自己找找资
- 【Zookeeper】FAQ
bit1129
zookeeper
1.脱离IDE,运行简单的Java客户端程序
#ZkClient是简单的Zookeeper~$ java -cp "./:zookeeper-3.4.6.jar:./lib/*" ZKClient
1. Zookeeper是的Watcher回调是同步操作,需要添加异步处理的代码
2. 如果Zookeeper集群跨越多个机房,那么Leader/
- The user specified as a definer ('aaa'@'localhost') does not exist
白糖_
localhost
今天遇到一个客户BUG,当前的jdbc连接用户是root,然后部分删除操作都会报下面这个错误:The user specified as a definer ('aaa'@'localhost') does not exist
最后找原因发现删除操作做了触发器,而触发器里面有这样一句
/*!50017 DEFINER = ''aaa@'localhost' */
原来最初
- javascript中showModelDialog刷新父页面
bozch
JavaScript刷新父页面showModalDialog
在页面中使用showModalDialog打开模式子页面窗口的时候,如果想在子页面中操作父页面中的某个节点,可以通过如下的进行:
window.showModalDialog('url',self,‘status...’); // 首先中间参数使用self
在子页面使用w
- 编程之美-买书折扣
bylijinnan
编程之美
import java.util.Arrays;
public class BookDiscount {
/**编程之美 买书折扣
书上的贪心算法的分析很有意思,我看了半天看不懂,结果作者说,贪心算法在这个问题上是不适用的。。
下面用动态规划实现。
哈利波特这本书一共有五卷,每卷都是8欧元,如果读者一次购买不同的两卷可扣除5%的折扣,三卷10%,四卷20%,五卷
- 关于struts2.3.4项目跨站执行脚本以及远程执行漏洞修复概要
chenbowen00
strutsWEB安全
因为近期负责的几个银行系统软件,需要交付客户,因此客户专门请了安全公司对系统进行了安全评测,结果发现了诸如跨站执行脚本,远程执行漏洞以及弱口令等问题。
下面记录下本次解决的过程以便后续
1、首先从最简单的开始处理,服务器的弱口令问题,首先根据安全工具提供的测试描述中发现应用服务器中存在一个匿名用户,默认是不需要密码的,经过分析发现服务器使用了FTP协议,
而使用ftp协议默认会产生一个匿名用
- [电力与暖气]煤炭燃烧与电力加温
comsci
在宇宙中,用贝塔射线观测地球某个部分,看上去,好像一个个马蜂窝,又像珊瑚礁一样,原来是某个国家的采煤区.....
不过,这个采煤区的煤炭看来是要用完了.....那么依赖将起燃烧并取暖的城市,在极度严寒的季节中...该怎么办呢?
&nbs
- oracle O7_DICTIONARY_ACCESSIBILITY参数
daizj
oracle
O7_DICTIONARY_ACCESSIBILITY参数控制对数据字典的访问.设置为true,如果用户被授予了如select any table等any table权限,用户即使不是dba或sysdba用户也可以访问数据字典.在9i及以上版本默认为false,8i及以前版本默认为true.如果设置为true就可能会带来安全上的一些问题.这也就为什么O7_DICTIONARY_ACCESSIBIL
- 比较全面的MySQL优化参考
dengkane
mysql
本文整理了一些MySQL的通用优化方法,做个简单的总结分享,旨在帮助那些没有专职MySQL DBA的企业做好基本的优化工作,至于具体的SQL优化,大部分通过加适当的索引即可达到效果,更复杂的就需要具体分析了,可以参考本站的一些优化案例或者联系我,下方有我的联系方式。这是上篇。
1、硬件层相关优化
1.1、CPU相关
在服务器的BIOS设置中,可
- C语言homework2,有一个逆序打印数字的小算法
dcj3sjt126com
c
#h1#
0、完成课堂例子
1、将一个四位数逆序打印
1234 ==> 4321
实现方法一:
# include <stdio.h>
int main(void)
{
int i = 1234;
int one = i%10;
int two = i / 10 % 10;
int three = i / 100 % 10;
- apacheBench对网站进行压力测试
dcj3sjt126com
apachebench
ab 的全称是 ApacheBench , 是 Apache 附带的一个小工具 , 专门用于 HTTP Server 的 benchmark testing , 可以同时模拟多个并发请求。前段时间看到公司的开发人员也在用它作一些测试,看起来也不错,很简单,也很容易使用,所以今天花一点时间看了一下。
通过下面的一个简单的例子和注释,相信大家可以更容易理解这个工具的使用。
- 2种办法让HashMap线程安全
flyfoxs
javajdkjni
多线程之--2种办法让HashMap线程安全
多线程之--synchronized 和reentrantlock的优缺点
多线程之--2种JAVA乐观锁的比较( NonfairSync VS. FairSync)
HashMap不是线程安全的,往往在写程序时需要通过一些方法来回避.其实JDK原生的提供了2种方法让HashMap支持线程安全.
- Spring Security(04)——认证简介
234390216
Spring Security认证过程
认证简介
目录
1.1 认证过程
1.2 Web应用的认证过程
1.2.1 ExceptionTranslationFilter
1.2.2 在request之间共享SecurityContext
1
- Java 位运算
Javahuhui
java位运算
// 左移( << ) 低位补0
// 0000 0000 0000 0000 0000 0000 0000 0110 然后左移2位后,低位补0:
// 0000 0000 0000 0000 0000 0000 0001 1000
System.out.println(6 << 2);// 运行结果是24
// 右移( >> ) 高位补"
- mysql免安装版配置
ldzyz007
mysql
1、my-small.ini是为了小型数据库而设计的。不应该把这个模型用于含有一些常用项目的数据库。
2、my-medium.ini是为中等规模的数据库而设计的。如果你正在企业中使用RHEL,可能会比这个操作系统的最小RAM需求(256MB)明显多得多的物理内存。由此可见,如果有那么多RAM内存可以使用,自然可以在同一台机器上运行其它服务。
3、my-large.ini是为专用于一个SQL数据
- MFC和ado数据库使用时遇到的问题
你不认识的休道人
sqlC++mfc
===================================================================
第一个
===================================================================
try{
CString sql;
sql.Format("select * from p
- 表单重复提交Double Submits
rensanning
double
可能发生的场景:
*多次点击提交按钮
*刷新页面
*点击浏览器回退按钮
*直接访问收藏夹中的地址
*重复发送HTTP请求(Ajax)
(1)点击按钮后disable该按钮一会儿,这样能避免急躁的用户频繁点击按钮。
这种方法确实有些粗暴,友好一点的可以把按钮的文字变一下做个提示,比如Bootstrap的做法:
http://getbootstrap.co
- Java String 十大常见问题
tomcat_oracle
java正则表达式
1.字符串比较,使用“==”还是equals()? "=="判断两个引用的是不是同一个内存地址(同一个物理对象)。 equals()判断两个字符串的值是否相等。 除非你想判断两个string引用是否同一个对象,否则应该总是使用equals()方法。 如果你了解字符串的驻留(String Interning)则会更好地理解这个问题。
- SpringMVC 登陆拦截器实现登陆控制
xp9802
springMVC
思路,先登陆后,将登陆信息存储在session中,然后通过拦截器,对系统中的页面和资源进行访问拦截,同时对于登陆本身相关的页面和资源不拦截。
实现方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23