㈠ mybatis中特殊sql的几种配置方法
1.in条件for循环
<select id="getBooList" resultMap="java.util.Map" parameterType="java.util.List" >
select booking_no, max(booking_general_seq) max_seq from interface_booking_t where booking_no in
<foreach item="item" index="index" collection="list" open="(" separator="," close=")">
#{item}
</foreach>
group by booking_no
</select>
2.insert并且返回主键
<insert id="insertAndGetId" parameterType="com.phy.mlisp.management.domain.Document">
<selectKey resultType="long" order="BEFORE" keyProperty="id">
SELECT MLISP_DOCUMENT_SEQ.NEXTVAL as ID from DUAL
</selectKey>
insert into MLISP_DOCUMENT_T (ID, NAME, ALIAS,
FILE_SIZE,CONTENT,STATUS,CREATE_BY,CREATE_DATE,LAST_UPDATE_BY,
LAST_UPDATE_DATE)
values (#{id},#{name,jdbcType=VARCHAR}, #{alias,jdbcType=VARCHAR},#{fileSize,jdbcType=INTEGER},
#{content,jdbcType=BLOB},
#{status,jdbcType=INTEGER},#{createBy,jdbcType=VARCHAR},SYSDATE,
#{lastUpdateBy,jdbcType=VARCHAR},SYSDATE)
</insert>
3.批量insert
<insert id="batchInsert" parameterType="java.util.List">
insert into INTERFACE_BOOKING_CONTA_T (ID, BOOKING_ID, BOOKING_CONTAINER_SEQ,
CONTA_TYPE, CONTA_SIZE, CONTA_QUANTITY,
CONTA_SIZE_TYPE_ISO)
select interface_booking_conta_seq.NEXTVAL,A.* from(
<foreach collection="list" item="item" index="index" separator="UNION ALL" >
(select #{item.bookingId,jdbcType=DECIMAL}, #{item.bookingContainerSeq,jdbcType=DECIMAL},
#{item.contaType,jdbcType=VARCHAR}, #{item.contaSize,jdbcType=VARCHAR}, #{item.contaQuantity,jdbcType=DECIMAL},
#{item.contaSizeTypeIso,jdbcType=VARCHAR} from al)
</foreach>) A
</insert>
4.批量更新
<update id="batchUpdate" parameterType="java.util.List">
<foreach collection="list" item="item" index="index" open="begin" close=";end;" separator=";">
UPDATE WCP_DISPATCH_CONTA_T
<set>
<if test="item.dispatchId != null">
DISPATCH_ID = #{item.dispatchId,jdbcType=DECIMAL},
</if>
</set>
WHERE DISPATCH_ID = #{item.dispatchId,jdbcType=DECIMAL}
</foreach>
</update>
㈡ 如何让数据流动起来,让数据拥抱数据
围墙里的大数据注定成为死数据。大数据需要开放式创新,从数据的开放、共享和交易,到价值提取能力的开放,再到基础处理和分析平台的开放,让数据如同血液在数据社会的躯体中长流,滋润数据经济,让更多的长尾企业和数据思维创新者产生多姿多彩的化学作用,才能创造大数据的黄金时代。
我的大数据研究轨迹
我做了4-5年的移动架构和Java虚拟机,4-5年的众核架构和并行编程系统,最近4-5年也在追时髦,先是投入物联网,最近几年一直在做大数据。我们团队的大数据研究轨迹如下图所示:
2010-2012年,主要关注数据和机器的关系:水平扩展、容错、一致性、软硬件协同设计,同时厘清各种计算模式,从批处理(MapRece)到流处理、Big SQL/ad hoc query、图计算、机器学习等等。事实上,我们的团队只是英特尔大数据研发力量的一部分,上海的团队是英特尔Hadoop发行版的主力军,现在英特尔成了Cloudera的最大股东,自己不做发行版了,但是平台优化、开源支持和垂直领域的解决方案仍然是英特尔大数据研发的重心。
从2013年开始关注数据与人的关系:对于数据科学家怎么做好分布式机器学习、特征工程与非监督学习,对于领域专家来说怎么做好交互式分析工具,对于终端用户怎么做好交互式可视化工具。英特尔研究院在美国卡内基梅隆大学支持的科研中心做了GraphLab、Stale Synchronous Parallelism,在MIT的科研中心做了交互式可视化和SciDB上的大数据分析,而中国主要做了Spark SQL和MLlib(机器学习库),现在也涉及到深度学习算法和基础设施。
2014年重点分析数据和数据的关系:我们原来的工作重心是开源,后来发现开源只是开放式创新的一个部分,做大数据的开放式创新还要做数据的开放、大数据基础设施的开放以及价值提取能力的开放。
数据的暗黑之海与外部效应
下面是一张非常有意思的图,黄色部分是化石级的,即没有联网、没有数字化的数据,而绝大多数的数据是在这片海里面。只有海平面的这些数据(有人把它称作Surface Web)才是真正大家能访问到的数据,爬虫能爬到、搜索引擎能检索到的数据,而绝大多数的数据是在暗黑之海里面(相应地叫做Dark Web),据说这一部分占数据总量的85%以上,它们在一些孤岛里面,在一些企业、政府里面躺在地板上睡大觉。
数据之于数据社会,就如同水之于城市或者血液之于身体一样。城市因为河流而诞生也受其滋养,血液一旦停滞身体也就危在旦夕。所以,对于号称数据化生存的社会来说,我们一定要让数据流动起来,不然这个社会将会丧失诸多重要功能。
所以,我们希望数据能够像“金风玉露一相逢”那样产生化学作用。马化腾先生提出了一个internet+的概念,英特尔也有一个大数据X,相当于大数据乘以各行各业。如下图所示,乘法效应之外,数据有个非常奇妙的效应叫做外部效应(externality),比如这个数据对我没用但对TA很有用,所谓我之毒药彼之蜜糖。
比如,金融数据和电商数据碰撞在一起,就产生了像小微贷款那样的互联网金融;电信数据和政府数据相遇,可以产生人口统计学方面的价值,帮助城市规划人们居住、工作、娱乐的场所;金融数据和医学数据在一起,麦肯锡列举了很多应用,比如可以发现骗保;物流数据和电商数据凑在一块,可以了解各个经济子领域的运行情况;物流数据和金融数据产生供应链金融,而金融数据和农业数据也能发生一些化学作用。比如Google analytics出来的几个人,利用美国开放气象数据,在每一块农田上建立微气象模型,可以预测灾害,帮助农民保险和理赔。
所以,要走数据开放之路,让不同领域的数据真正流动起来、融合起来,才能释放大数据的价值。
三个关于开放的概念
1、数据开放
首先是狭义的数据开放。数据开放的主体是政府和科研机构,把非涉密的政府数据及科研数据开放出来。现在也有一些企业愿意开放数据,像Netflix和一些电信运营商,来帮助他们的数据价值化,建构生态系统。但是数据开放不等于信息公开。首先,数据不等于信息,信息是从数据里面提炼出来的东西。我们希望,首先要开放原始的数据(raw data),其次,它是一种主动和免费的开放,我们现在经常听说要申请信息公开,那是被动的开放。
Tim Berners Lee提出了数据开放的五星标准,以保证数据质量:一星是开放授权的格式,比如说PDF;其次是结构化,把数据从文件变成了像excel这样的表;三星是开放格式,如CSV;四星是能够通过URI找到每一个数据项;五星代表能够和其它数据链接,形成一个开放的数据图谱。
现在主流的数据开放门户,像data.dov或data.gov.uk,都是基于开源软件。英特尔在MIT的大数据科研中心也做了一种形态,叫Datahub:吉祥物很有趣,一半是大象,代表数据库技术,一半是章鱼,取自github的吉祥物章鱼猫。它提供更多的功能比如易管理性,提供结构化数据服务和访问控制,对数据共享进行管理,同时可以在原地做可视化和分析。
广义的数据开放还有数据的共享及交易,比如点对点进行数据共享或在多边平台上做数据交易。马克思说生产资料所有制是经济的基础,但是现在大家可以发现,生产资料的租赁制变成了一种主流(参考《Lean Startup》),在数据的场景下,我不一定拥有数据,甚至不用整个数据集,但可以租赁。租赁的过程中要保证数据的权利。
首先,我可以做到数据给你用,但不可以给你看见。姚期智老先生82年提出“millionaires’ dilemma(百万富翁的窘境)”,两个百万富翁比富谁都不愿意说出自己有多少钱,这就是典型的“可用但不可见”场景。在实际生活中的例子很多,比如美国国土安全部有恐怖分子名单(数据1),航空公司有乘客飞行记录(数据2),国土安全部向航空公司要乘客飞行记录,航空公司不给,因为涉及隐私,他反过来向国土安全部要恐怖分子名单,也不行,因为是国家机密。双方都有发现恐怖分子的意愿,但都不愿给出数据,有没有办法让数据1和数据2放一起扫一下,但又保障数据安全呢?
其次,在数据使用过程中要有审计,万一那个扫描程序偷偷把数据藏起来送回去怎么办?再者,需要数据定价机制,双方数据的价值一定不对等,产生的洞察对各方的用途也不一样,因此要有个定价机制,比大锅饭式的数据共享更有激励性。
从点对点的共享,走到多边的数据交易,从一对多的数据服务到多对多的数据市场,再到数据交易所。如果说现在的数据市场更多是对数据集进行买卖的话,那么数据交易所就是一个基于市场进行价值发现和定价的,像股票交易所那样的、小批量、高频率的数据交易。
我们支持了不少研究来实现刚才所说的这些功能,比如说可用而不可见。案例一是通过加密数据库CryptDB/Monomi实现,在数据拥有方甲方这边的数据库是完全加密的,这事实上也防止了现在出现的很多数据泄露问题,大家已经听到,比如说某互联网服务提供商的员工偷偷把数据拿出来卖,你的数据一旦加密了他拿出来也没用。其次,这个加密数据库可以运行乙方的普通SQL程序,因为它采用了同态加密技术和洋葱加密法,SQL的一些语义在密文上也可以执行。
针对“百万富翁的窘境”,我们做了另一种可用但不可见的技术,叫做数据咖啡馆。大家知道咖啡馆是让人和人进行思想碰撞的地方,这个数据咖啡馆就是让数据和数据能够碰撞而产生新的价值。
比如两个电商,一个是卖衣服的,一个是卖化妆品的,他们对于客户的洞察都是相对有限的,如果两边的数据放在一起做一次分析,那么就能够获得全面的用户画像。再如,癌症是一类长尾病症,有太多的基因突变,每个研究机构的基因组样本都相对有限,这在某种程度上解释了为什么过去50年癌症的治愈率仅仅提升了8%。那么,多个研究机构的数据在咖啡馆碰一碰,也能够加速癌症的研究。
在咖啡馆的底层是多方安全计算的技术,基于英特尔和伯克利的一个联合研究。在上面是安全、可信的Spark,基于“data lineage”的使用审计,根据各方数据对结果的贡献进行定价。
2、大数据基础设施的开放
现在有的是有大数据思维的人,但他们很捉急,玩不起、玩不会大数据,他不懂怎么存储、怎么处理这些大数据,这就需要云计算。基础设施的开放还是传统的Platform as a Service,比如Amazon AWS里有MapRece,Google有Big Query。这些大数据的基础处理和分析平台可以降低数据思维者的门槛,释放他们的创造力。
比如decide.com,每天爬几十万的数据,对价格信息(结构化的和非结构化的)进行分析,然后告诉你买什么牌子、什么时候买最好。只有四个PhD搞算法,其他的靠AWS。另一家公司Prismatic,也利用了AWS,这是一家做个性化阅读推荐的,我专门研究过它的计算图、存储和高性能库,用LISP的一个变种Clojure写的非常漂亮,真正做技术的只有三个学生。
所以当这些基础设施社会化以后,大数据思维者的春天很快就要到来。
3、价值提取能力的开放
现在的模式一般是一大一小或一对多。比如Tesco和Dunnhumby,后者刚开始是很小的公司,找到Tesco给它做客户忠诚度计划,一做就做了几十年,这样的长期战略合作优于短期的数据分析服务,决策更注重长期性。当然,Dunnhumby现在已经不是小公司了,也为其他大公司提供数据分析服务。再如沃尔玛和另外一家小公司合作,做数据分析,最后他把这家小公司买下来了,成了它的Walmart Labs。
一对多的模式,典型的是Palantir——Peter Thiel和斯坦福的几个教授成立的公司,目前还是私有的,但估值近百亿了,它很擅长给各类政府和金融机构提供数据价值提取服务。真正把这种能力开放的是Kaggle,它的双边,一边是10多万的分析师,另一边是需求方企业,企业在Kaggle上发标,分析师竞标,获得业务。这可能是真正解决长尾公司价值提取能力的办法。当然,如果能和我们的数据咖啡馆结合,就更好了。
㈢ 不适合作为数据处理与数据库应用的语言是
Lisp
SQL是标准化数据库查询语言,支持大部分数据库的处理,是目前应用最广泛的一种数据库处理语言。
Cobol是面向商业的通用语言,是一种适合于商业及数据处理的类似英语的程序设计语言。在财会工作、统计报表、计划编制、情报检索、人事管理等数据管理及商业数据处理领域,都有着广泛的应用。
4GL是指第四代程序设计语言,它的特点是简单易学,用户界面好,非过程化程度高且直接面向问题,只需告知计算机“做什么”,而不必告知计算机“怎么做”。其中Cobol就是这样一种语言。
Lisp是在20世纪50年代末由麻省理工学院为研究人工智能而开发的,它的强大优势在于编写编辑命令和集成环境。它不适合作为数据处理与数据库应用的语言。
㈣ 作为程序员的你,常用的软件有哪些
这个就非常多了,下面我以常见的编程开发软件和数据库管理软件为例,简单介绍几种,感兴趣的朋友可以尝试一下:
01 编程开发软件这个要看具体编程语言了,不同语言开发工具自然不同,这里以常见的C/C++、Java和Python为例,简单介绍3种比较常用的软件:
这是Windows平台下一个非常专业的集成开发工具,号称宇宙第一IDE环境,不仅仅只是C/C++,常见的C#、VB等编程语言,这个软件都能很好支持,智能补全、代码高亮、语法检查等功能非常不错,除此之外,还支持单元测试、代码重构和分析等高级功能,因此非常适合大型项目开发和维护:
这是一个非常专业智能的Java开发工具,在企业和个人桌面中,有着非常高的使用率和欢迎度,自动补全、语法提示、代码高亮等功能非常不错,除此之外,还支持JUnit、CVS整合、代码重构等高级功能,自带有Maven和Gradle构建工具,因此更适合Java项目开发和维护,个人使用起来非常不错:
这是一个非常专业的Python开发软件,和IntelliJ IDEA一样,Jetbrains公司的产品,在业界非常流行、受欢迎,智能补全、代码高亮、语法提示等功能非常不错,除此之外,还支持代码重构和分析、单元测试等高级功能,因此更适合大型项目,个人使用来说,也非常简单,很容易上手和掌握:
02 数据库管理软件
这个就非常多了,不同数据库都有专门的管理软件和工具,这里简单介绍3个比较通用的数据库管理软件,分别是HeidiSQL、DBeaver和DataGrip,对于日常使用来说,非常不错:
这是Windows平台下一个非常轻巧灵活的数据库管理软件,基于Delphi开发而来,目前支持MySQL、MariaDB、MSSQL、PostgreSQL等主流数据库,常见的建库建表、视图索引、触发器等基本功能,这个软件都能很好兼容,除此之外,还支持SQL脚本导入导出、数据备份恢复等功能,对于日常数据库管理来说,非常不错:
这是一个基于Java开发的数据库管理软件,免费、开源、跨平台,目前支持Oracle、MySQL、PostgreSQL、SQL Server等十几种主流数据库开发,建库建表、视图索引、触发器、存储过程等基本功能 都 可轻松查看和设计,数据库导入导出、数据 恢复 备份等功能也都非常不错,对于日常数据库管理和维护来说,是一个非常不错的工具:
这也是一个通用的数据库管理软件,Jetbrains公司的产品,支持跨平台,但原则上针对个人不免费,常见的PostgreSQL、MySQL、Oracle等数据库,这个软件都能很好支持, 数据导入导出( 恢复备份 )、 智能代码填充、版本 集成 控制等功能非常不错,对于日常数据库管理来说,也是一个不错的工具:
每天常用开发工具:
0.Git:分布式版本控制系统;
1.IntelliJ IDEA:java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一;
2.Sublime Text:不只是代码编辑器;
3.Postman:Http请求模拟工具和功能强大的网页调试工具;
4.DataGrip:支持几乎所有主流的关系数据库、多功能的数据库操作工具;
5.Vagrant:用于创建和部署虚拟化开发环境,配合虚拟机使用;
6.Gradle:自动化构建工具;
7.JIRA:项目与事务跟踪工具;
8.iTerm2:Mac上的终端工具;
9.Jenkins:持续集成工具。
做了一个写代码用了十几年的人,很多编程的习惯已经养成了,现在就罗列下每天必用的软件:
直接安装的linux系统,因为几乎所有的代码都是在linux下完成
不同的开发语言,每天要用到的软件可能不一样。
我是开发java web的,电脑安装了很多工具,但是说每天要用到的好像就几个。
作为程序员使用最多的软件,莫过于编程开发所用到的软件编辑器,但是编辑器的种类有很多。我们需要做到的是,找到你最喜欢的编辑器然后熟练的使用它。
同时掌握常见的一些快捷键的操作方式,从而来提升我们的工作效率,而不是以软件而论软件,什么都去接触使用。毕竟软件是工具是帮助我们提升开发效率。
下面我就列举我们PHP经常使用的软件
IDE工具类软件这一类是开发软件编写代码用的。这一类的软件非常多,我就推荐一个经常使用的PHPStorm,因为太多的话大家也用不到,也没有那么多的精力去熟练每一个编辑器。
PHPStorm是 JetBrains 公司开发的一款商业的 PHP 集成开发工具,旨在提高用户效率,可深刻理解用户的编码,提供智能代码补全,快速导航以及即时错误检查。可以说是PHP开发程序员必备的神器。
常用快捷键如下:
1.复制快捷方式
F5 复制文件/文件夹
CTRL+C 复制
CTRL+V 粘贴
CTRL+X 剪 切,删除行
CTRL+D 复制行
CTRL+SHIFT+V 可以复制多个文本
2.自动代码
ALT+回车 导入包,自动修正
CTRL+ALT+L 格式化代
码CTRL+ALT+I 自动缩进
CTRL+ALT+O 优化导入的类和包
CTRL+SHIFT+SPACE 切换窗口
CTRL+SPACE空格 代码自动完成,代码提示,一般与输入法冲突
CTRL+ALT+SPACE 类 名或接口名提示(与系统冲突)
CTRL+P 方法参数提示,显示默认参数
CTRL+J 自动代码提示,自动补全
CTRL+ALT+T 把选中的代码放在 TRY{} IF{} ELSE{} 里ALT+INSERT 生成代码(如GET,SET方法,构造函数等)
3.运行
Alt + Shift + F10 选择的配置和运行
Alt + Shift + F9 选择配置和调试
Shift + F10 运行
Shift + F9调试
Ctrl + Shift + F10运行范围内配置编辑器
Ctrl + Shift + X运行命令行
4.其他快捷方式
CTRL+Z 倒退(代码后悔)
CTRL+SHIFT+Z 向前
CTRL+H 显 示类结构图
Ctrl +F12 文件结构弹出
CTRL+O 魔术方法
CTRL+/ 注释//取消注释
CTRL+SHIFT+/ 注释/*...*/
ctrl + '.': 折叠选中的代码的代码
ALT+ / 切换代码视图,标签切换
5.其他快捷方式
CTRL+Z 倒退(代码后悔)
CTRL+SHIFT+Z 向前
CTRL+H 显 示类结构图
Ctrl +F12 文件结构弹出
CTRL+O 魔术方法CTRL+/ 注释//取消注释
CTRL+SHIFT+/ 注释/*...*/
ctrl + '.': 折叠选中的代码的代码
ALT+ / 切换代码视图,
数据库相关常用的工具 Navicat for MySQL是管理数据库的操作工具,都是可以连接远程的云数据库。方便简化开发,还可以手动备份、可视化的sql分析。
常用快捷键:
ctrl+q 打开查询窗口
ctrl+/ 注释sql语句
ctrl+shift +/ 解除注释
ctrl+r 运行查询窗口的sql语句
ctrl+shift+r 只运行选中的sql语句
F6 打开一个mysql命令行窗口
ctrl+d (1):查看表结构详情,包括索引 触发器,存储过程,外键,唯一键;(2):复制一行
ctrl+l 删除一行
ctrl+n 打开一个新的查询窗口
ctrl+w 关闭一个查询窗口
ctrl+tab 多窗口切换
服务器连接软件XShell6是非常强大的SSH远程终端客户端,帮助我们连接远程的Linux服务器来进行操作。
粘贴:Shift+Insert
历史 命令编辑ctrl + p 返回上一次输入命令字符
alt + > 返回上一次执行命令
其它
ctrl + s 锁住终端
ctrl + q 解锁终端
ctrl + l 清屏相当于命令clear
Tab键,快速补全命令
轻量级文本编辑器Notepad++。这个很轻量,打开一下文本非常的方便。
常用快捷键
Ctrl+C 复制
Ctrl+X 剪切
Ctrl+V 粘贴
Ctrl+Z 撤消
Ctrl+Y 恢复
Ctrl+A 全选
Ctrl+F 键查找对话框启动
Ctrl+H 查找/替换对话框
Ctrl+D 复制并粘贴当行
Ctrl+F2 切换书签
F2 转到下一个书签Shift+F2 转到上一个书签
F11 全屏模式
前端 :
visual studio code
后端:
pycharm
IDEA
安卓:
android studio
浏览器:
谷歌
火狐
数据库管理:
navicat
远端链接:
fileZilla
xshell
electerm(mac上使用)
流程图设计:
xmind
processOn
笔记:
为知笔记(付费一年60)
有道云笔记
虚拟机(容器)
VMware Fusion(mac上)
docker
其他:
postman
jmeter
作为一个12年开发经验的前端程序员,我来聊聊每天必用的几个软件。
写代码自然离不开 编辑器 。目前我主要使用的是微软的 Visual Studio Code 。VS Code比较轻量,功能足够应付日常开发所需,跨平台,而且完全免费 。因为之前长期使用Visual Studio在Windows平台上做开发,后来技术栈变化,经常需要在Linux和MacOS上做开发,VS Code就成了我顺理成章的选择。后来干脆在Windows上也用VS Code了。目前整个团队都已经被VS Code圈粉了。其它类似的如Sublime Text(需要付费)和Atom也有不少人使用。
因为是团队开发, 源代码管理工具 自然必不可少,而 git 是目前最热门的一个。我们公司也不例外,几年前从Perforce迁移到了 GitHub企业版 (和公众版本UI完全相同)。平时的代码审查也都是在GitHub企业版上完成的,不再使用单独的代码审查工具。有些不习惯使用命令行方式的同事使用 SourceTree 完成日常的代码分支管理和提交,而我则比较热衷于命令行方式。VS Code也提供了比较完善的git集成,但因为习惯的原因,除了直观比较不同代码版本的差异,我一般也不用VS Code执行git操作。
作为一个Web前端, 浏览器及前端调试工具 自然不可或缺, Google Chrome + Developer Tools (F12) 自然是首选。使用Developer Tools,可以对JavaScript进行调试,监控HTTP请求/响应,分析CSS计算问题和JS性能问题。 Chrome下还有很多功能强大的插件,个人比较常用的包括React Developer Tools、PostMan、Proxy SwitchOmega和AdBlock。当然,因为经常面对浏览器兼容性问题,Firefox、IE、Edge、Apple Safari以及各自的Developer Tools都是免不了要用的。
团队目前使用Scrum模型,自然需要一个做 任务规划和质量管理 的工具。我们采用了 JIRA , 每天的站会(daily stanp meeting)都会对scrum看板(board)进行更新。
遇到技术问题,自然免不了要上网查找资料。 Google 的使用频率非常高(需要科学上网)。大部分问题都能在 StackOveflow 上找到线索,但有时候也不得不跑到大名鼎鼎的同性交友网站 GitHub 上看源码。 MDN (Mozilla Developer Network)对于前端开发也是不可或缺(此处鄙视一下w3cschool,上面到处是错误知识)。
其它如node.js/npm、docker等,因为和具体的技术栈相关,就不具体展开讲了。
作为一个开发人员,你每天使用什么软件呢,欢迎说说看。
尽管我是后端出身的,不过也经常写前端代码,甚至还用C#/C++参与过一些客户端开发,自认为也算是一个Web全栈工程师。随着前端技术的不断进步,现在的前端已经不再是写写页面这么简单了,很多逻辑在前端就写了,我建议每一个出色的开发者应该尽可能对前后端都能有不错的掌握。
今天给大家推荐一些我认为前端和后端开发都需要经常用到的一些软件,这里面包括了查询资料工具、原型工具、文本编辑器、版本管理工具。
原型工具 不管前端还是后端,尤其是前端程序员,在跟产品经历沟通之后肯定会要查看原型的,方便自己在开发过程中使用,基本上大公司输出的原型都比较规范,除非你遇到张小龙这种级别的大神,哥们儿直接盯着你做了。
目前主流的原型工具主要有Axure、MockPlus、墨刀等,其中Axure依然是应用最为广泛的原型工具,大多数开发者也都应该用来看原型。
文本编辑器 不管是前端还是后端程序员,当然前端程序员就不说了,在WebStorm出现之前,没有一款真正可以叫做IDE的前端开发工具,那么基本上文本编辑器就是前端程序员最重要的编程工具。同样后端程序员即使不需要写前端代码,文本编辑器也是必备的,您不需要每次看代码都打开庞大的集成开发环境,像IDEA这种比较耗费资源的,平时查看代码啥的完全没有必要,何况你还经常要看一些前端代码。
当然你比较习惯Linux/Unix下开发,Emacs/Vim可能是你用得比较多的文本编辑器,还有UltraEdit、Sublime Text、EditPlus、Atom这些老牌的文本编辑器,不过现在我觉得每个程序员都应该下载一个Visual Studio Code,支持的语言比较多,而且插件非常丰富,是微软官方支持的开发者工具,开源免费而且颜值非常高。
查询资料、版本管理工具不用多说,每个程序员都要学会很好的使用Google、Stack Overflow两个工具,可以说你日常开发当中可能遇到的问题,通过这两个工具你全都能找到解决方案。
另外一个是Dash文档管理工具,Dash是一个非常好的开发者帮助文档工具,这个工具的好处是给所有的开发文档做了一个整合,C/C++、Java、PHP、Python、Latex、Emacs Lisp、Haskell、JavaScript、Go语言等文档都能够在这个工具当中下载使用。
最后一个就是版本管理了,SVN和Git依然是目前使用最为广泛的版本管理工具,不过就使用来说我还是推荐Git版本控制系统,可以说这个时代Git就是最好的版本管理工具了,尤其是开源时代、互联网时代,Git已经成为了最重要的版本管理工具,不管是命令行管理还是使用Github等客户端工具,堪称完美。
入行十一年,现在主要做一些管理和架构方面的工作,也会做一些Coding,主要是一些新技术的研究和“踩坑”。
编辑器首先是EditPlus,这是一个文本编辑器。最常用的两个功能:正则表达式查询和文件夹内所有文件内容搜索。
平时经常需要看一些系统日志,甚至要从好几天几十个日志文件中找到内容,这个软件很好用。(原谅我们没有上日志平台)
然后就是IDE啦,我还是喜欢用Eclipse,有时候会用STS(Spring Tool Suite),它也是一个被包装过的Eclipse,方便做一些Spring框架的研究。
一个是DbVisualizer,凡是具有JDBC数据库接口的数据库都可以管理,什么数据库都能连。
还有一个是SQLyog,这是一个快速而简洁的图形化管理MYSQL数据库的工具,我只用里面一个功能,就是数据的导入导出,效率非常高!
大部分项目只对外提供接口服务,所以接口测试工具少不了,我一般使用SoapUI,WebService/Rest都可以进行测试。
每天肯定会用的肯定不止上面几个,还有版本控制工具svn和git,都会用到是因为单位svn现在开始往git迁移。
因为用的Scrum敏捷开发流程,所以JIRA、Sonar、Fisheye这些也是都会用到的。
Maven也不用说了,几个项目基本都是基于Maven构建的。
必用的基本就是这些,只要电脑开着,这几个软件基本都是打开状态。
㈤ 传统的基于编程语言的应用软件开发
汇编语言
汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。它同样需要编程者将每一步具体的操作用命令的形式写出来。汇编程序通常由三部分组成:指令、伪指令和宏指令。汇编程序的每一句指令只能对应实际操作过程中的一个很细微的动作。例如移动、自增,因此汇编源程序一般比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识,但汇编语言的优点也是显而易见的,用汇编语言所能完成的操作不是一般高级语言所能够实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。
汇编语言分为:
脚本语言:
脚本语言(Script language,scripting language,scripting programming language)是为了缩短传统的编写-编译-链接-运行(edit-compile-link-run)过程而创建的计算机编程语言。此命名起源于一个脚本“screenplay”,每次运行都会使对话框逐字重复。
早期的脚本语言经常被称为批量处理语言或工作控制语言。一个脚本通常是解释运行而非编译。
虽然许多脚本语言都超越了计算机简单任务自动化的领域,成熟到可以编写精巧的程序,但仍然还是被称为脚本。几乎所有计算机系统的各个层次都有一种脚本语言。包括操作系统层,如计算机游戏,网络应用程序,字处理文档,网络软件等。在许多方面,高级编程语言和脚本语言之间互相交叉,二者之间没有明确的界限。
脚本编程速度更快,且脚本文件明显小于如同类C程序文件。这种灵活性是以执行效率为代价的。脚本通常是解释执行的,速度可能很慢,且运行时更耗内存。在很多案例中,如编写一些数十行的小脚本,它所带来的编写优势就远远超过了运行时的劣势,尤其是在当前程序员工资趋高和硬件成本趋低时。
脚本语言是一种解释性的语言,例如Python 、vbscript,javascript,installshield script,ActionScript等等,它不象c\c++等可以编译成二进制代码,以可执行文件的形式存在。
机器语言:
由于计算机内部只能接受二进制代码,因此,用二进制代码0和1描述的指令称为机器指令,全部机器指令的集合构成计算机的机器语言,用机器语言编程的程序称为目标程序。只有目标程序才能被计算机直接识别和执行。但是机器语言编写的程序无明显特征,难以记忆,不便阅读和书写,且依赖于具体机种,局限性很大,机器语言属于低级语言。
高级语言
高级语言是大多数编程者的选择。和汇编语言相比,它不但将许多相关的机器指令合成为单条指令,并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等,这样就大大简化了程序中的指令。同时,由于省略了很多细节,编程者也就不需要有太多的专业知识。
高级语言主要是相对于汇编语言而言,它并不是特指某一种具体的语言,而是包括了很多编程语言,像最简单的编程语言PASCAL语言也属于高级语言。
高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可将它们分为两类:
解释类:执行方式类似于我们日常生活中的“同声翻译”,应用程序源代码一边由相应语言的解释器“翻译”成目标代码(机器语言),一边执行,因此效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器,但这种方式比较灵活,可以动态地调整、修改应用程序。如较早时期的Qbasic语言。
编译类:编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言),因此其目标程序可以脱离其语言环境独立执行,使用比较方便、效率较高。但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件(* .obj,也就是OBJ文件)才能执行,只有目标文件而没有源代码,修改很不方便。
常见语言:
C#
C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。C#是微软公司研究员Anders Hejlsberg的最新成果。Csharp(音标 [∫a:p])(又被简称为"C#")是微软公司在2000年6月发布的一种新的编程语言,并定于在微软职业开发者论坛(PDC)上登台亮相。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、界面、与Java几乎同样的语法,和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司.NET windows网络框架的主角。在本文中,我将考察创建一种新计算机语言的一般动机,并将特别指明是什么原因导致了C#的出现,然后我将介绍C#和它与Java、C、C++的相似之处。其次我将讨论一些存在于Java和C#之间的高层次的、和基础的差别。我将以衡量在用多种语言开发大型应用程序的时候所需的知识(或者对这种知识的缺乏程度)来结束本文,而这正是.NET和C#的一个主要战略.以及Windows 2000的一个"d预览版本",还有MSDN上迅速增多的文档集子的形式获得(还没有最终定型)。
Basic
BASIC(Beginners' All-purpose Symbolic Instruction Code,又译培基),意思就是“初学者的全方位符式指令代码”,是一种设计给初学者使用的程序设计语言。BASIC是一种直译式的编程语言,在完成编写后不须经由编译及连结等手续即可执行,但如果需要单独执行时仍然需要将其建立成执行档。
Pascal
Pascal是一种计算机通用的高级程序设计语言。Pascal的取名是为了纪念十七世纪法国着名哲学家和数学家Blaise Pascal。它由瑞士Niklaus Wirth教授于六十年代末设计并创立。Pascal语言语法严谨,层次分明,程序易写,具有很强的可读性,是第一个结构化的编程语言。
C语言
C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的D.M.Ritchie于1972年推出,1978年后,C语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画,具体应用比如单片机以及嵌入式系统开发。
C++
C++这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做“C plus plus”,“CPP”。 它是一种使用非常广泛的计算机编程语言。C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、泛型程序设计等多种程序设计风格。
JAVA
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显着优势和广阔前景。
AAuto
AAuto是专用于桌面软件快速开发的新一代混合型编程语言 - 具有动态语言轻便、灵活、快速开发的特性,而且又可以同时支持静态类型开发,象静态语言那样使用。AAuto可以直接支持原生DLL,即使是外部EXE进程中的函数,也可以使用一句代码声明为普通的AAuto函数对象(原生call支持),AAuto支持非常多的标准调用约定,例如 stdcall,cdecl,thiscall,fastcall,regparm(n) 等调用约定都可以支持。AAuto虽然小,但支持的接口很丰富、可以支持com静态动态双接口,象VBS一样原生支持com对象。
用一个简单的代码演示一下,下面的AAuto代码定义了一个结构体:
?
1
2
3
4
5
6
7
//定义类
classPOINT{//类点
intx;inty;//“整数”类型x;“整数”类型y
func=function(){//函数=函数()
//动态类型
}
}
这种全新的混合编程语言开创了一种全新的编程方式,也因为这种语言特性,AAuto可以非常方便的嵌入各种第三方语言,AAuto可以嵌入汇编机器码,C语言,Java,PHP,C#,Python,Javascript,VBScript......等等数量众多的第三方编程语言,方便的互调函数,并且这些调用第三方语言的功能模块都是使用AAuto实现( 开放源码 )。混合型语言让我们可以体验到激动人心的全新编程方式。
AAuto可以将硬盘目录,硬盘文件一键嵌入EXE文件,将全部程序包含所有资源生成独立的绿色EXE文件,所有文件读写的相关函数自动支持,无需更改代码,AAuto制作的程序不需要安装程序,也不需要释放DLL运行库,AAuto制作的程序都是免安装绿色软件。
AAuto属于类C系语言、并且可以自定义一套自己的语法。AAuto在语法风格接近流行类C系语言。有其他语言基础的可以轻松上手,学习AAuto以后学习其他编程语言更可事半功倍。
AAuto支持多线程开发,复杂的多线程开发在AAuto中变得非常简单,标准库也提供大量简化多线程开发的辅助支持库,为多线程软件开发带来很大的方便(请参考快手范例 -> 多线程 )。
AAuto的标准库基本使用纯AAuto源码实现,并且全部开源,标准库提供了大量的简化编程的常用函数,涉及到软件开发的方方面面,极大的简化了桌面软件开发过程。
AAuto提供web.form支持库( 开源 ),可以创建web窗体加载网页创建web风格的软件界面,网页与本机代码可以直接交互,在快手工程向导里,就提供了 WEB UI 的模板。在使用web窗体时,你能感受到AAuto这种混合语言带来的巨大方便,较之传统编程语言,AAuto 可以更快更加方便的创建 WEB UI 程序,在AAuto自带的范例中,就有一个多窗口浏览器的范例,仅仅使用了一页300行源码就实现了一个功能较完整的多窗口网页浏览器,可以看出使用AAuto极大的简化了Web相关开发技术。另外,AAuto提供了web.layout支持库,封装了轻量快速的界面引擎HTMLayout,可以使用传统的HTML,CSS技术,更加方便的实现漂亮的界面,而且运行,响应速度极快,官方也提供了大量HTMLayout的范例,教程。使用AAuto开发传统界面也非常的方便,AAuto提供可视化开发工具,可以象VB一样(实际上比VB更简单)的通过拖拉控件创建程序。
易语言
[4] 易语言是一门计算机程序语言。以“易”着称,以中文作为程序代码表达的语言形式。易语言的创始人是吴涛。早期版本的名字为E语言。易语言最早的版本的发布可追溯至2000年9月11日。可以说,创造易语言的初衷是进行用中文来编写程序的实践。从2000年至今,易语言已经发展到一定的规模:功能上、用户数量上都十分可观。
创建者:大连吴涛易语言(吴涛)
易语言简称:e、VE、E语言
最新版本:易语言5.3 (201401107) (支持静态编译)
特色:
1.以简体中文作为程序代码进行编程操作。
2.全中文支持,无需跨越英语门槛。
3.全可视化编程,支持所见即所得程序界面设计和程序流程编码。
4.中文语句快速录入。提供多种内嵌专用输入法,彻底解决中文语句输入速度慢的问题。
5.代码即文档。自动规范强制代码格式转换,任何人编写的任何程序源代码格式均统一。
6.加入了png支持,所涉及到组件: 标签, 按钮, 选择框, 图片框, 图形按钮, 画板, 窗体, 表格。
SQL
结构化查询语言(Structured Query Language)简称SQL,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统可以使用相同的结构化查询语言语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使他具有极大的灵活性和强大的功能。
SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言,得到了广泛的应用。如今无论是像Oracle,Sybase,Informix,SQL server这些大型的数据库管理系统,还是像Visual Foxpro,PowerBuilder这些微机上常用的数据库开发系统,都支持SQL语言作为查询语言。
其他语言
习语言
即中文版的C语言[5]
O语言
O语言是一款中文计算机语言(或称套装:O汇编语言、O中间语言、O高级语言)[6]
AWK
二十世纪70年代Bells Labs创立了Awk语言,它是一种用于处理大数据量强大的命令行语言。
BASH
Bash(Bourne-Again Shell)是一种专门为GNU操作系统服务的命令行语言。
Common Lisp
Common Lisp,即为大家所熟知的CL,一种遵循ANSI-standard规范高效运行的编程语言.使用Common Lisp最好的地方是用户可以根据应用领域选择合适方法和范例。
Eiffel
Eiffel是一种面向对象的语言。它演变自1985年,是世界上众多最成熟的编程语言中的一种.在解决计算问题中,Eiffel代码是可读的和可重用的。
Emacs Lisp
一种计算机编程语言的变体,Emacs Lisp可以被任何其他的编程语言所使用。
Erlang
Erlang是另外一种编程语言,通常分布在网络环境中,被用于构建强大的系统程序,Erlang和Java类似。
Forth
Forth是一种基于堆栈概念的高层次编程语言.它不依赖于变量的使用。这种语言帮助解决了一些编程中的老问题。
Icon
Icon是另外一种具有处理数据结构和字符串特征的高层次编程语言。Icon的运行速度比C语言还要快。它在程序员尝试新想法,快速编程,文本处理,图像编程,处理大的数据类型方面很有作用。
Lisp
在处理大数据量演算,解决方案,动态变化的问题,以及多种混杂数据的问题上,Lisp是一种理想的编程语言。它适合定位最具有挑战性的问题。
Lua
Lua是一种强大快速的脚本语言。
Mercury
它是一种将逻辑编程方式和功能编程方式联合在一起的编程语言。Mercury在复杂的,严格类型风格的系统上运行。
PHP
PHP是一种广泛使用的编程语言.因为它所编写的代码量小,越来越多的公司转向PHP编程。
Perl
由Larry Wall设计,Perl是最为广泛使用的编程语言中的一种,Perl第一次被应用在文本编辑器上使用了。
Pike
Pike和C语言以及Java类似。它是一种易学的语言,因为它不牵涉复杂的函数功能。
Python
Python是一种面向对象、直译式计算机程序设计语言。