序言
随着浏览器运行性能及前端技术的日新月异,对于使用在线表格做报表已经成为时下主流趋势,而在线电子表格也层出不穷,如Google的SpreadSheet等,由于公司报表类产品中需要使用在线电子表格,并且要在基本的电子表格控件上增加许多额外与业务相关的扩展,因此在咨询及使用过一些通用工具后决定自己造轮子。造轮子之前先学习前人的经验,如何设计在线电子表格。为了入门我们先选择了本文将介绍的这个99行代码完成的在线电子表格。
99行代码的电子表格简介
作者 :audreyt
源码地址: http://jsfiddle.net/audreyt/LtDyP/
使用技术: HTML5+CSS3+AngularJS1.x
主界面截图:
绘制表格的方法
1 定义行数组(Rows
)与列数组(Cols
)
$scope.Cols = [], $scope.Rows = [];
2 初始化数组
将列数组(Cols
)初始化为['A','B','C','D','E','F','G','H']
将行数组(Rows
)初始化为[1,2,3,4,...,18,19,20]
makeRange($scope.Cols, 'A', 'H');
makeRange($scope.Rows, 1, 20);
其中makeRange(array, cur, end)
函数的作用就是根据cur
至end
之间的范围初始化给array
数组,源码如下:
function makeRange(array, cur, end) {
while (cur <= end) {
array.push(cur);
// If it’s a number, increase it by one; otherwise move to next letter
cur = (isNaN( cur ) ? String.fromCharCode(cur.charCodeAt()+1 ) : cur+1);
}
}
3 绑定页面元素
利用AngularJS的双向数据绑定特性,将Javascript变量与页面元素进行绑定
通过该HTML代码可以了解,其实表格是通过标签实现的,其中的单元格就是
文本框,通过行列的循环(ng-repeat
)绘制出一张电子表格。
列头为表格第一行,列头第一个元素是一个刷新按钮,其余通过循环(ng-repeat
)列数组(Cols
)绘制,并将数组元素值作为元素显示内容
↻
{{ col }}
{{ row }}
如此,一张电子表格就绘制完成
单元格添加键盘事件
JS中实现keydown( $event, col, row )
方法
// UP(38) and DOWN(40)/ENTER(13) move focus to the row above (-1) and below (+1).
$scope.keydown = function(event, col, row) {
switch(event.which) {
case 38: case 40: case 13: $timeout( function() {
var direction = (event.which === 38) ? -1 : +1;
var cell = document.querySelector( '#' + col + (row + direction) );
if (cell) {
cell.focus();
}
} );
}
};
如果当键盘按下“上”键(键值:38),则根据单元格ID属性找到上方第一个一个单元格,并使其成为焦点(focus);如果当键盘按下“下”键(键值:40)或“回车”键(键值:13),则根据单元格ID属性找到下方一个单元格,并使其成为焦点(focus)。
表格的数值存储
// Restore the previous .sheet
$scope.sheet = angular.fromJson( localStorage.getItem( '' ) );
sheet
对象中存储形式为键值对,如
$scope.sheet = { B1: 1874, A2: '+', B2: 2046, A3: '⇒', B3: '=B1+B2' };
其中键为单元格ID属性,即行+列组合的字符串,值为单元格值。
表格的运算过程
表格计算通过Web Workers开启计算线程完成
$scope.worker = new Worker("/echo/js/?js="+encodeURIComponent("(" + WorkerJS.toString() + ")()"));
// Worker.js
function WorkerJS () {
var sheet, errs, vals;
self.onmessage = function(message) {
sheet = message.data, errs = {}, vals = {};
Object.getOwnPropertyNames(sheet || {}).forEach(function(coord) {
// Four variable names pointing to the same coordinate: A1, a1, $A1, $a1
[ '', '$' ].forEach(function(p) { [ coord, coord.toLowerCase() ].forEach(function(c){
var name = p+c;
// Worker is reused across computations, so only define each variable once
if ((Object.getOwnPropertyDescriptor( self, name ) || {}).get) { return; }
// Define self['A1'], which is the same thing as the global variable A1
Object.defineProperty( self, name, { get: function() {
if (coord in vals) { return vals[coord]; }
vals[coord] = NaN;
// Turn numeric strings into numbers, so =A1+C1 works when both are numbers
var x = +sheet[coord];
if (sheet[coord] !== x.toString()) { x = sheet[coord]; }
// Evaluate formula cells that begin with =
try { vals[coord] = (('=' === x[0]) ? eval.call( null, x.slice( 1 ) ) : x);
} catch (e) {
var match = /\$?[A-Za-z]+[1-9][0-9]*\b/.exec( e );
if (match && !( match[0] in self )) {
// The formula refers to a uninitialized cell; set it to 0 and retry
self[match[0]] = 0;
delete vals[coord];
return self[coord];
}
// Otherwise, stringify the caught exception in the errs object
errs[coord] = e.toString();
}
// Turn vals[coord] into a string if it's not a number or boolean
switch (typeof vals[coord]) { case 'function': case 'object': vals[coord]+=''; }
return vals[coord];
} } );
}); });
});
// For each coordinate in the sheet, call the property getter defined above
for (var coord in sheet) { self[coord]; }
postMessage([ errs, vals ]);
};
}
总结
经过分析,99行实现的该电子表格虽然功能简单,但是基本的表格绘制及运算实现了,为我们未来设计电子表格结构提供了重要的参考价值。
你可能感兴趣的:(解析99行代码的在线电子表格(Web Spreadsheet in 99 lines))
c语言 日志模块,一个简单又高效的日志系统
jy ch
c语言 日志模块
下载源代码摘要:本文给出一个性能高,使用简单的日志解决方案。本模块实现日志信息的批量写入文件,定时自动flush到文件中,写入文件的日志级别可动态调整,单个日志文件大小可配置,循环对日志文件写入,这样不会造成机器空间被日志文件耗尽。关键字:日志性能日志级别一、程序日志是商品程序中必不可少的部分。在正式商用的程序中一般对于日志都会有一些类似的要求:性能要求运行时日志级别可调整日志文件空间使用安全性问
anaconda中的python在pycharm中用不了_Pycharm中使用Anaconda
白白前
Pycharm中使用Anaconda问题:安装完Pycharm和Anaconda后,想让Pycharm能调用Anaconda中包含的各种包。这样就不用重复安装各种包了。Anaconda下载安装Anaconda指的是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。因为包含了大量的科学包,Anaconda的下载文件比较大(约515MB)。安装Anacond
agoda获取酒店数据
风云路上想改名
笔记 python agoda爬取 报错重启
最近改了改代码,正好解决了一些报错问题,更新出来。个别处会加蜜数据库以及线程控制fromDBUtils.PooledDBimportPooledDBimportrequestsimportdemjsonimporttimeimportrandomimportjsonimportpymysqlimportdatetimeimportthreadingb={"user":"root","passwd"
Docker 与 CI/CD:自动化构建和部署
drebander
docker docker ci/cd 自动化
在现代软件开发中,CI/CD(持续集成/持续部署)是一种高效的软件开发和运维方法。CI/CD通过自动化构建、测试和部署流程,减少了人为错误,提高了软件交付的速度和质量。Docker,作为一种容器化平台,为CI/CD提供了理想的运行环境,通过容器化实现应用的一致性和可移植性。本文将探讨如何将Docker与CI/CD集成,实现自动化构建和部署。1.Docker与CI/CD集成的优势1.1通过Docke
DeepSeek在企业中的有那些具体应用?
大势下的牛马
搭建本地gpt Deepseek 大模型推理 微调 人工智能
在当今竞争激烈的商业世界里,企业就像在大海中航行的船只,需要不断寻找新的方向和动力来保持领先。而DeepSeek,就是那股强劲的东风,能给企业带来全新的活力和机遇。它就像一个超级智能助手,能帮企业解决各种难题,提高效率,降低成本,还能让客户更满意。接下来,就让我们看看DeepSeek到底是怎么做到的,它又能给企业带来哪些实实在在的好处。应用场景1、客户服务与支持智能客服实现方式:DeepSeek能
DeepSeek混合专家模型:低成本高精度革新多语言AI应用
智能计算研究中心
其他
内容概要当前人工智能领域正经历从通用模型向垂直化、场景化应用的关键转型,DeepSeek混合专家模型(MoE)通过突破性的架构设计,为这一进程提供了技术范本。该模型采用分治策略的混合专家架构,通过动态激活670亿参数中的子模块处理特定任务,既保证了模型规模带来的知识广度,又显著降低了计算资源的冗余消耗。在此基础上,其多模态处理能力不仅覆盖80余种自然语言的高精度互译,还实现了视觉符号与文本语义的跨
python - 永久存储
susie0815
python python 服务器
打开文件使用open()函数打开文件时,openfilemode(文件打开模式)是一个决定了以何种方式打开文件以及对文件可以进行哪些操作的重要参数。基本模式只读模式(‘r’)默认的打开模式,用于读取文件。如果文件不存在,会抛出FileNotFoundError异常。try:file=open('test.txt','r')content=file.read()print(content)file.
使用分布式锁解决淘客返利系统中的并发问题
微赚淘客系统开发者@聚娃科技
分布式
使用分布式锁解决淘客返利系统中的并发问题大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!1.引言在淘客返利系统中,常常需要处理高并发的订单和返利计算。由于并发请求可能会导致数据不一致的问题,因此需要一种有效的解决方案来管理并发访问。分布式锁是一种常见的并发控制机制,可以确保在同一时刻只有一个请求对共享资源进行修改。本文将详细介绍如何在Java中使用分布式锁解决淘客返利
B - N! HDU - 1042
Ws_
c++ 算法 开发语言
GivenanintegerN(0≤N≤10000),yourtaskistocalculateN!InputOneNinoneline,processtotheendoffile.OutputForeachN,outputN!inoneline.SampleInputcopyOutputcopy123126翻译:这个问题是计算给定整数N的阶乘N!,其中0≤N≤10000。阶乘的定义是从1到N的所
自动化测试的学习路线
Ws_
学习
自动化测试是提高软件开发效率和质量的关键手段。学习自动化测试通常涉及多个方面的技能,从基础的编程语言知识到测试工具的使用,再到实际的测试脚本编写和执行。以下是一个学习自动化测试的路线图,帮助你有条不紊地掌握相关技能:1.基础知识在开始自动化测试之前,首先要具备一定的编程和软件测试基础:编程语言:Python、Java、JavaScript或者Ruby(根据你选择的自动化测试工具决定)软件测试基础:
Python自动化测试
Ws_
python python
Python自动化测试是软件开发中的重要组成部分,可以帮助提高测试效率和准确性。以下是学习Python自动化测试的基本路线,以及相关资料的链接:学习路线1.基础知识Python基础:掌握Python语言的基本语法、数据类型、控制流、函数、面向对象编程等。你可以先确保对Python的基本语法有清晰的理解。参考资料:Python官方文档书籍推荐:《Python编程:从入门到实践》2.了解自动化测试的基
Everything搜索神器:秒级检索背后的黑科技
码农技术栈
everything 科技 java python windows
开篇小剧场:你是否经历过这样的场景?Windows自带的搜索:输入关键词,等待……转圈……继续等待……Everything:输入关键词,结果瞬间呈现!为什么Everything能这么快?它到底用了什么“黑科技”?今天我们就来揭开它的神秘面纱!一、Everything的“快”从何而来?1.颠覆传统:不搜索文件内容,只搜索文件名Everything的核心目标是快速定位文件,而不是像Windows搜索那
Python实现Excel表格保存到不同文件夹
Leo_Aqu
excel python
"""点击“上传”按钮,从本地上传待处理的Excel表格点击“处理”按钮,对Excel表格进行处理点击“保存A”按钮,保存处理后的Excel表格到A文件夹下点击“保存B”按钮,保存处理后的Excel表格到B文件夹下"""#作者:Leo#时间:2024/9/2621:52importtkinterastkfromtkinterimportfiledialog,messageboximportpand
Docker 在微服务架构中的应用(一)
计算机毕设定制辅导-无忧学长
# Docker 架构 docker 微服务
一、引言在当今数字化时代,软件开发领域正经历着快速的变革。随着业务需求的日益复杂和多样化,传统的单体架构逐渐暴露出其局限性,如可维护性差、扩展困难以及开发效率低下等问题。在这样的背景下,微服务架构应运而生,它将大型应用拆分成多个小型、独立的服务,每个服务专注于特定的业务功能,通过轻量级的通信机制进行协作。这种架构模式不仅提高了系统的可维护性和可扩展性,还使得开发团队能够更加独立地进行开发和部署,大
通义灵码AI程序员
天天向上杰
AI编程 AIGC 人工智能
通义灵码是阿里云与通义实验室联合打造的智能编码辅助工具,基于通义大模型技术,为开发者提供多种编程辅助功能。它支持多种编程语言,包括Java、Python、Go、TypeScript、JavaScript、C/C++、PHP、C#、Ruby等200多种编码语言。通义灵码AI程序员:今年1月,通义灵码AI程序员全面上线,同时支持VSCode、JetBrainsIDEs,是国内首个真正落地的AI程序员。
简识MQ之Kafka、ActiveMQ、RabbitMQ、RocketMQ传递机制
天天向上杰
MQ kafka activemq rabbitmq rocketmq
四种主流消息队列(Kafka、ActiveMQ、RabbitMQ、RocketMQ)的生产者与消费者传递信息的机制说明,以及实际使用中的注意事项和示例:1.ApacheKafka传递机制模型:基于发布-订阅模型,生产者向主题(Topic)发送消息,消费者订阅主题并消费消息。核心流程:生产者将消息发送到Kafka集群的Broker,根据分区策略(如轮询、哈希)将消息写入对应的分区(Partition
浅聊MySQL中的LBCC和MVCC
天天向上杰
mysql 数据库
MySQL中的LBCC(Lock-BasedConcurrencyControl,基于锁的并发控制)和MVCC(Multi-VersionConcurrencyControl,多版本并发控制)是两种不同的并发控制机制,它们在实现方式、作用以及应用场景上存在显著的区别。一、LBCC(基于锁的并发控制)实现方式:LBCC主要通过锁机制来控制并发访问,包括行锁、表锁、间隙锁和临键锁等。行锁:锁定单个行记
rem、em、vw区别
IT木昜
大白话前端面试题 前端 javascript css
在前端开发里,rem、em、vw都是用来设置元素大小的单位,下面就用大白话讲讲它们的区别。参考标准不一样rem:就像大家都用同一把“大尺子”来量东西,这把“大尺子”就是网页里根元素(也就是标签)的字体大小。不管元素在网页里的哪个位置,只要用rem做单位,它的大小就按照这把“大尺子”来算。比如根元素字体大小是16px,那么1rem就是16px,2rem就是32px。em:每个元素自己有一把“小尺子”
JavaEE进阶知识学习-----定时任务调度Quartz-4
四川码匠
Quartz JAVA进阶学习 Quartz 任务调度
Quartz和SpringMVC,Spring整合1.Quartz依赖的包如下:org.springframeworkspring-context-support${spring.version}org.springframeworkspring-tx${spring.version}org.quartz-schedulerquartz2.2.3使用Quartz配置作业的方式第一种:MethodI
python使用技巧
超超是超超
python
1、耗时装饰器importtimedefdecorate(func):definner():begin=time.time()result=func()end=time.time()print(f'函数{func}耗时{end-begin}')returnresultreturninner2、查看代码运行耗时fromline_profilerimportLineProfilerdefoperati
6月5日世界环境日:Agoda发布可持续旅游趋势调查报告
美通社
微软 分布式存储 vm 办公软件 datagridview
Agoda近日发布“可持续旅游趋势调查”报告,揭示轻松识别可持续的环保旅行选择、限制使用一次性塑料制品以及为最大限度提高能源效率的住宿供应商提供经济激励是让旅行更具可持续性所需的前三大额外措施。建立更多保护区,限制游客人数并取消一次性卫浴用品排在全球前五大措施之列。为纪念2021年6月5日世界环境日,Agoda公布这项调查结果。从调查中我们还发现,过度旅游、海滩和水道污染是人们最担心的旅游会带来的
近18亿亏损阴霾笼罩,江淮汽车能否依赖尊界走出困境?
财经三剑客
汽车
在新能源汽车行业的风起云涌中,江淮汽车似乎找到了一条新的出路——与华为联手打造超豪华品牌尊界。然而,这场豪赌能否让江淮汽车摆脱困境,仍然是一个未知数。2月14日,网络上传播了一张朋友圈截图,截图中的何畅声称“有些科技,无法平权,尊贵的人,优先享受”,并附上尊界S800的海报作为配图。这番言论公然挑战了行业内倡导的科技普及和平等的理念,同时也进一步明确了尊界的品牌定位——作为一个超豪华品牌,其车型售
Anaconda与python和pycharm的安装及其关系
Daylight..
学习笔记 pycharm python ide
Anaconda与python和pycharm的安装及其关系一、Anaconda与python和pycharm的关系:1.Anaconda包含python,并且里面含有许多常用的库。(安装了Anaconda就不需要安装python了)2.pycharm是一种IDE(集成开发环境),在其中可以编写Python程序。(工具和语言的关系)。二、如何安装?Anaconda的安装Anaconda官网下载地址
23. AI-概述
真上帝的左手
23. AI ai 人工智能
文章目录前言一、AI1.简介2.发展3.应用场景前言AI 随着技术的发展,AI正变得越来越强大和普及,其在解决复杂问题和提高人类生活质量方面的潜力日益显现。一、AIAI(ArtificialIntelligence,人工智能)1.简介 AI(ArtificialIntelligence,人工智能)是计算机科学的一个分支,旨在开发智能系统,使其能够执行通常需要人类智能的任务,例如学习、推理、问
Alaninyl-Hydroxyproline;76400-25-4;A-Hyp
perhaps_chutai
健康医疗
基本信息英文名称:Alaninyl-Hydroxyproline中文名称:丙氨酰-羟基脯氨酸氨基酸序列:丙氨酸-羟基脯氨酸单字母序列:A-Hyp三字母序列:Ala-Hyp分子量:199.22分子式:C₈H₁₄N₂O₄CAS号:76400-25-4等电点:一般没有明确报道,理论上可根据其结构中氨基和羧基等的解离情况大致估算,但无特别确切的单一数值。结构信息H-Ala-Hyp-OH是由丙氨酸(Ala)
【无标题】
是懒羊羊吖~
笔记
一.WED前端应用软件:c/s架构b/s架构web前端:html5css3javascripthtml5:超文本标记语言----超链接,文字,标签标签语法规范:结束-----双标签标签体------可以嵌套inputimg---------单标签属性:定制元素的行为,属性是不通用的,每一个标签存在自身的属性,当属性名等于属性值时,只需要写属性名,不需要写属性值。二.HTML1.样式//文档声明:告
【TOGAF系列】架构开发方法(ADF)第十一章
东临碣石82
架构
第11章:G阶段:实施治理11.1目标G阶段的目标是:确保实施项目符合目标架构为解决方案和任何实施驱动的架构变更请求执行适当的架构治理功能11.2输入本节定义了阶段G的输入。11.2.1企业外部参考资料架构参考资料(见TOGAF标准——架构内容)11.2.2非架构输入架构工作请求(见TOGAF标准——架构内容)能力评估(见TOGAF标准——架构内容)11.2.3架构输入■企业架构的组织模型(见TO
ImportError: cannot import name ‘Mapping‘ from ‘collections‘
AI算法网奇
python基础 前端 javascript 数据库
ImportError:cannotimportname'Mapping'from'collections'解决方法:fromcollections.abcimportMapping#正确导入Mappingdefprocess_mapping(data):ifisinstance(data,Mapping):#使用Mapping进行类型检查#处理映射类型的代码pass测试命令:python-c"f
joint_info smpl
AI算法网奇
python基础 计算机视觉 人工智能
生成代码:出处:https://github.com/DART-Lab-LLUI/Metrabs_PoseEstimationdefget_joint_info():joint_names_smpl=('pelv,lhip,rhip,bell,lkne,rkne,spin,lank,rank,thor,ltoe,rtoe,neck,lcla,rcla,head,lsho,''rsho,lelb,r
python图形界面化编程GUI(二)常用的组件(Text、Radiobutton、Checkbutton、Canvas)和布局管理器(gird、pack、place)
hwwaizs
python-GUI图形化编程 python 开发语言
Text文本框Text(多行文本框)的主要用于显示多行文本,还可以显示网页链接,图片,HTML页面,甚至CSS样式表,添加组件等。主要用来显示信息,也常被当做简单的文本处理器、⽂本编辑器或者网页浏览器来使用。IDLE就是Text组件构成的。insert插入的时候可以用INSERT代表当前光标的位置,END代表在结尾的位置,也可以用插入小数的形式,2.3代表第二行第三列后插入。fromtkinter
ASM系列六 利用TreeApi 添加和移除类成员
lijingyao8206
jvm 动态代理 ASM 字节码技术 TreeAPI
同生成的做法一样,添加和移除类成员只要去修改fields和methods中的元素即可。这里我们拿一个简单的类做例子,下面这个Task类,我们来移除isNeedRemove方法,并且添加一个int 类型的addedField属性。
package asm.core;
/**
* Created by yunshen.ljy on 2015/6/
Springmvc-权限设计
bee1314
spring Web jsp
万丈高楼平地起。
权限管理对于管理系统而言已经是标配中的标配了吧,对于我等俗人更是不能免俗。同时就目前的项目状况而言,我们还不需要那么高大上的开源的解决方案,如Spring Security,Shiro。小伙伴一致决定我们还是从基本的功能迭代起来吧。
目标:
1.实现权限的管理(CRUD)
2.实现部门管理 (CRUD)
3.实现人员的管理 (CRUD)
4.实现部门和权限
算法竞赛入门经典(第二版)第2章习题
CrazyMizzz
c 算法
2.4.1 输出技巧
#include <stdio.h>
int
main()
{
int i, n;
scanf("%d", &n);
for (i = 1; i <= n; i++)
printf("%d\n", i);
return 0;
}
习题2-2 水仙花数(daffodil
struts2中jsp自动跳转到Action
麦田的设计者
jsp webxml struts2 自动跳转
1、在struts2的开发中,经常需要用户点击网页后就直接跳转到一个Action,执行Action里面的方法,利用mvc分层思想执行相应操作在界面上得到动态数据。毕竟用户不可能在地址栏里输入一个Action(不是专业人士)
2、<jsp:forward page="xxx.action" /> ,这个标签可以实现跳转,page的路径是相对地址,不同与jsp和j
php 操作webservice实例
IT独行者
PHP webservice
首先大家要简单了解了何谓webservice,接下来就做两个非常简单的例子,webservice还是逃不开server端与client端。我测试的环境为:apache2.2.11 php5.2.10做这个测试之前,要确认你的php配置文件中已经将soap扩展打开,即extension=php_soap.dll;
OK 现在我们来体验webservice
//server端 serve
Windows下使用Vagrant安装linux系统
_wy_
windows vagrant
准备工作:
下载安装 VirtualBox :https://www.virtualbox.org/
下载安装 Vagrant :http://www.vagrantup.com/
下载需要使用的 box :
官方提供的范例:http://files.vagrantup.com/precise32.box
还可以在 http://www.vagrantbox.es/
更改linux的文件拥有者及用户组(chown和chgrp)
无量
c linux chgrp chown
本文(转)
http://blog.163.com/yanenshun@126/blog/static/128388169201203011157308/
http://ydlmlh.iteye.com/blog/1435157
一、基本使用:
使用chown命令可以修改文件或目录所属的用户:
命令
linux下抓包工具
矮蛋蛋
linux
原文地址:
http://blog.chinaunix.net/uid-23670869-id-2610683.html
tcpdump -nn -vv -X udp port 8888
上面命令是抓取udp包、端口为8888
netstat -tln 命令是用来查看linux的端口使用情况
13 . 列出所有的网络连接
lsof -i
14. 列出所有tcp 网络连接信息
l
我觉得mybatis是垃圾!:“每一个用mybatis的男纸,你伤不起”
alafqq
mybatis
最近看了
每一个用mybatis的男纸,你伤不起
原文地址 :http://www.iteye.com/topic/1073938
发表一下个人看法。欢迎大神拍砖;
个人一直使用的是Ibatis框架,公司对其进行过小小的改良;
最近换了公司,要使用新的框架。听说mybatis不错;就对其进行了部分的研究;
发现多了一个mapper层;个人感觉就是个dao;
解决java数据交换之谜
百合不是茶
数据交换
交换两个数字的方法有以下三种 ,其中第一种最常用
/*
输出最小的一个数
*/
public class jiaohuan1 {
public static void main(String[] args) {
int a =4;
int b = 3;
if(a<b){
// 第一种交换方式
int tmep =
渐变显示
bijian1013
JavaScript
<style type="text/css">
#wxf {
FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#ffffff, EndColorStr=#97FF98);
height: 25px;
}
</style>
探索JUnit4扩展:断言语法assertThat
bijian1013
java 单元测试 assertThat
一.概述
JUnit 设计的目的就是有效地抓住编程人员写代码的意图,然后快速检查他们的代码是否与他们的意图相匹配。 JUnit 发展至今,版本不停的翻新,但是所有版本都一致致力于解决一个问题,那就是如何发现编程人员的代码意图,并且如何使得编程人员更加容易地表达他们的代码意图。JUnit 4.4 也是为了如何能够
【Gson三】Gson解析{"data":{"IM":["MSN","QQ","Gtalk"]}}
bit1129
gson
如何把如下简单的JSON字符串反序列化为Java的POJO对象?
{"data":{"IM":["MSN","QQ","Gtalk"]}}
下面的POJO类Model无法完成正确的解析:
import com.google.gson.Gson;
【Kafka九】Kafka High Level API vs. Low Level API
bit1129
kafka
1. Kafka提供了两种Consumer API
High Level Consumer API
Low Level Consumer API(Kafka诡异的称之为Simple Consumer API,实际上非常复杂)
在选用哪种Consumer API时,首先要弄清楚这两种API的工作原理,能做什么不能做什么,能做的话怎么做的以及用的时候,有哪些可能的问题
在nginx中集成lua脚本:添加自定义Http头,封IP等
ronin47
nginx lua
Lua是一个可以嵌入到Nginx配置文件中的动态脚本语言,从而可以在Nginx请求处理的任何阶段执行各种Lua代码。刚开始我们只是用Lua 把请求路由到后端服务器,但是它对我们架构的作用超出了我们的预期。下面就讲讲我们所做的工作。 强制搜索引擎只索引mixlr.com
Google把子域名当作完全独立的网站,我们不希望爬虫抓取子域名的页面,降低我们的Page rank。
location /{
java-归并排序
bylijinnan
java
import java.util.Arrays;
public class MergeSort {
public static void main(String[] args) {
int[] a={20,1,3,8,5,9,4,25};
mergeSort(a,0,a.length-1);
System.out.println(Arrays.to
Netty源码学习-CompositeChannelBuffer
bylijinnan
java netty
CompositeChannelBuffer体现了Netty的“Transparent Zero Copy”
查看API(
http://docs.jboss.org/netty/3.2/api/org/jboss/netty/buffer/package-summary.html#package_description)
可以看到,所谓“Transparent Zero Copy”是通
Android中给Activity添加返回键
hotsunshine
Activity
// this need android:minSdkVersion="11"
getActionBar().setDisplayHomeAsUpEnabled(true);
@Override
public boolean onOptionsItemSelected(MenuItem item) {
静态页面传参
ctrain
静态
$(document).ready(function () {
var request = {
QueryString :
function (val) {
var uri = window.location.search;
var re = new RegExp("" + val + "=([^&?]*)", &
Windows中查找某个目录下的所有文件中包含某个字符串的命令
daizj
windows 查找某个目录下的所有文件 包含某个字符串
findstr可以完成这个工作。
[html]
view plain
copy
>findstr /s /i "string" *.*
上面的命令表示,当前目录以及当前目录的所有子目录下的所有文件中查找"string&qu
改善程序代码质量的一些技巧
dcj3sjt126com
编程 PHP 重构
有很多理由都能说明为什么我们应该写出清晰、可读性好的程序。最重要的一点,程序你只写一次,但以后会无数次的阅读。当你第二天回头来看你的代码 时,你就要开始阅读它了。当你把代码拿给其他人看时,他必须阅读你的代码。因此,在编写时多花一点时间,你会在阅读它时节省大量的时间。让我们看一些基本的编程技巧: 尽量保持方法简短 尽管很多人都遵
SharedPreferences对数据的存储
dcj3sjt126com
SharedPreferences简介: &nbs
linux复习笔记之bash shell (2) bash基础
eksliang
bash bash shell
转载请出自出处:
http://eksliang.iteye.com/blog/2104329
1.影响显示结果的语系变量(locale)
1.1locale这个命令就是查看当前系统支持多少种语系,命令使用如下:
[root@localhost shell]# locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
Android零碎知识总结
gqdy365
android
1、CopyOnWriteArrayList add(E) 和remove(int index)都是对新的数组进行修改和新增。所以在多线程操作时不会出现java.util.ConcurrentModificationException错误。
所以最后得出结论:CopyOnWriteArrayList适合使用在读操作远远大于写操作的场景里,比如缓存。发生修改时候做copy,新老版本分离,保证读的高
HoverTree.Model.ArticleSelect类的作用
hvt
Web .net C# hovertree asp.net
ArticleSelect类在命名空间HoverTree.Model中可以认为是文章查询条件类,用于存放查询文章时的条件,例如HvtId就是文章的id。HvtIsShow就是文章的显示属性,当为-1是,该条件不产生作用,当为0时,查询不公开显示的文章,当为1时查询公开显示的文章。HvtIsHome则为是否在首页显示。HoverTree系统源码完全开放,开发环境为Visual Studio 2013
PHP 判断是否使用代理 PHP Proxy Detector
天梯梦
proxy
1. php 类
I found this class looking for something else actually but I remembered I needed some while ago something similar and I never found one. I'm sure it will help a lot of developers who try to
apache的math库中的回归——regression(翻译)
lvdccyb
Math apache
这个Math库,虽然不向weka那样专业的ML库,但是用户友好,易用。
多元线性回归,协方差和相关性(皮尔逊和斯皮尔曼),分布测试(假设检验,t,卡方,G),统计。
数学库中还包含,Cholesky,LU,SVD,QR,特征根分解,真不错。
基本覆盖了:线代,统计,矩阵,
最优化理论
曲线拟合
常微分方程
遗传算法(GA),
还有3维的运算。。。
基础数据结构和算法十三:Undirected Graphs (2)
sunwinner
Algorithm
Design pattern for graph processing.
Since we consider a large number of graph-processing algorithms, our initial design goal is to decouple our implementations from the graph representation
云计算平台最重要的五项技术
sumapp
云计算 云平台 智城云
云计算平台最重要的五项技术
1、云服务器
云服务器提供简单高效,处理能力可弹性伸缩的计算服务,支持国内领先的云计算技术和大规模分布存储技术,使您的系统更稳定、数据更安全、传输更快速、部署更灵活。
特性
机型丰富
通过高性能服务器虚拟化为云服务器,提供丰富配置类型虚拟机,极大简化数据存储、数据库搭建、web服务器搭建等工作;
仅需要几分钟,根据CP
《京东技术解密》有奖试读获奖名单公布
ITeye管理员
活动
ITeye携手博文视点举办的12月技术图书有奖试读活动已圆满结束,非常感谢广大用户对本次活动的关注与参与。
12月试读活动回顾:
http://webmaster.iteye.com/blog/2164754
本次技术图书试读活动获奖名单及相应作品如下:
一等奖(两名)
Microhardest:http://microhardest.ite