银行利息怎么算?
我们不能笼统的说利息如何计算,利息计算可分为存款和贷款。而存款又分:活期,定期(三个月,半年,一年,三年,五年)等,贷款又分为:一次性偿还,分期偿还(等额本息,等额本金),说这些只是告诉你利息不可一概而论;我们先看看关于利率方面的介绍。
介绍:
算含蓄存款利息的基本规定:各种储蓄存款的存期一律按对年、对月、对日计算;不论大月、小月、平月或闰月,每月均按30天计算,全年按360天计算;足一个月的零头天数,按实际天数计算。计算存期采用算头不算尾的办法,即从存入的当天一直算到支取目的前一天为止。利随本清,不计复利。除活期储蓄存款未清户按年度结息外,其余各种储蓄存款,不论存期多长,一律利随本清,不计复利。自动转存的存款,视同到期办理,利息可并入本金。
银行利息怎么算计息起点和尾数: 计息起点和尾数处理的规定。计息起点为元位,元以下角分位不计利息。利息金额算至分位,分位以下四舍五入。凡需分段计息的,每段计算应先保留至厘位,各段利息相加得出利息总额,再将分位以下的厘位四舍五入。
银行利息怎么算利息单位:利息单位及其换算。年利率按本金的百分之几表示(%),月利率按本金的千分之几表示(‰),日利率按本金的万分之几表示。其换算公式为:年利率=月利率×12 ;月利率=日利率×30 ;年利率=日利率×360
介绍参考出处:http://jingyan.baidu.com/article/d45ad148f5bdec69552b80b8.html
一、存款利息
我们先来说说存款利息是如何计算的!
根据上面的介绍,我们可以知道利息是按每一期的利率算的,而利率又分日利率、月利率、年利率;而算法公式都是一样的。所以剩下的你就按照公式套就可以了。
我们先来推导一下计算公式;先来设置几个常数,为便于公式的推导计算,所取数字都是简单计算的数字;
每期的利率是10%用P表示,存款100元用A表示。
利息 = A*P
本期总本息 = A*(1+P) ①
第2期(本息自动转存的金额) = [A*(1+P)]*(1+P)
第3期(本息再次转存的金额) = {[A*(1+P)]*(1+P)}*(1+p)
.............. 后面的期次这里就不全部列出了,通过上面的式子我们进行变式换算:
得到n期后的总本息总额 = A*(1+P)^n (^n:表示n次方) ②
根据①式和②式可以推导出:n期的利率 = ((1+P)^n)-1 或 (1+P)^n-1
我先举个整存整取的例子:
假如你有10万元放到银行里,整存整取,三个月的年利率为1.71%,六个月的年利率为1.98%,一年的年利率为2.25%,两年的年利率为2.79%,利息各是多少?哪种存款最好?
如果只关心利息的多少,可以进行简单的计算进行比较,分别各以三个月、六个月、一年、两年为一期,以10万元本金,两年的时间进行计算,如下: 以三个月期为例:三个月利率 1.71%*3/12=1.71%/4=0.4275%,两年有8个3个月,就是8期。 三个月到期自动转存:本金和利息总额是100000*(1+0.4275%)^8(8次方)= 103471.61元 六个月自动转存计算:本金和利息总额是100000*(1+1.98%*6/12)^4 = 104019.20元 一年期自动转存计算:本金和利息总额是100000*(1+2.25%)^2 = 104550.63元 二年期自动转存计算:本金和利息总额是100000*(1+2.79%*2)= 105580元 因此,从利息上看2年最多,但两年中本金不能动,三个月利息最少,你可以每个三个月动一次本金。
例子参考出处:http://zhidao.baidu.com/question/157946384.html
再举个例子:
假如现在的3个月定期存款利率是2.07%,假如存入一万元,那么三个月后到期日我将获得多少利息?如果我连续存四次三个月的定期,造成利滚利,这样与一年定期3.06%相比有多大差别?
年利率/360=日利率。银行计算存期以360“天”为一年,所以可以把年利率看作是与银行约定的总收益,这样就可以认为每天都得到这份收益的1/360。
存期(日)=(到期年-起存年)*360+(到期月-起存月)*12+(到期日-起存日)。每个月份都被看作30天,所以实际的天数跟计息天数会发生不一致,所以前面斜体的“天”用了引号。我们看下面的例子就知道。
3个月定期的总利率=月利率*3=(年利率/12)*3=0.5175%,
一年是四期3个月定期的总本息=10000*(1+0.5175%)^4=10208.6124 元。
一年定期的总本息=10000*(1+3.06%)=10306元
四期三个月的比一年定期少量97.4元
四期三个月定期的利率=1*(1+0.5175%)^4-1=2.086% ,比一年定期3.06%相比少了0.974%。假设还是前面所说的10000元,那么根据利息公式:利息=本金*利率=10000×0.974%=97.4,就是差了97块4毛钱。
这里隐藏着一个假象。表面上收益较高的长期定期反而有可能不如连续的多次短期!这是因为利率是会变动的,而银行计息仅仅取决于存入当天的利率。这样,在存期内如果国家有上调利率的政策,你都不会反映到以后的利息中;例如2015年一年的时间里就连续5次降息,如果是在一个加息频繁的时期,如果把钱都存成3年、5年的定期存款,不仅要忍受流动资金减少带来的不便,还会使存款面临加息导致的相对贬值的风险,到时候提也不是不提也不是!所以具体怎么存法还要看当前的政策形势!
例子参考出处:http://jingyan.baidu.com/article/cbcede07d7c1c702f50b4d43.html
二、贷款利息
贷款利息的计算又不太一样,因为不同的还款方式公式也不相同,银行贷款利息,一般是按月 复利计算的,分期还款方式有:短期一次性还本付息,等额本息,等额本金.
一次性还本息的计算公式:= 本金×(1+期利率)^期数
等额本息还款公式:
等额本息还款公式推导 设贷款总额为A,银行月利率为β,总期数为m(个月),月还款额设为X, 则各个月所欠银行贷款为: 第一个月A(1+β)-X 第二个月[A(1+β)-X](1+β)-X = A(1+β)^2-X[1+(1+β)] 第三个月{[A(1+β)-X](1+β)-X}(1+β)-X = A(1+β)^3-X[1+(1+β)+(1+β)^2] …… 由此可得第n个月后所欠银行贷款为:A(1+β)^n-X[1+(1+β)+(1+β)^2+…+(1+β)^(n-1)] ①式
可以看到[1+(1+β)+(1+β)^2+…+(1+β)^(n-1)]中括号内的式子是等比数列;由于还款总期数为n,也即第n月刚好还完银行所有贷款,剩余为0,因此有:
A(1+β)^n-X[(1+β)^(n-1)]/β = 0
。。。。。。。。。。。。。。。。。。。。。
等比数列a1/a2=a2/a3=a3/a4.....=q,所以q为公比,所以An=A(n-1)× q,根据等比数量通项公式An=A1*q^(n-1),
等比数量求和公式推导:
Sn=A1+A2+......+An
两边乘以q则:q*Sn=A2+......+An+An+1 => q*Sn-Sn = A(n+1) - A1
把等比数列通项公式An=A1*q^(n-1)带入上式, (q-1)Sn=A1*q^n - A1 => Sn = A1((q^n)-1)/(q-1)
所以①式根据等比数列求和公式可得:A(1+β)^n-X[1+(1+β)+(1+β)^2+…+(1+β)^(n-1)] = A(1+β)^n-X[(1+β)^n-1]/β
由于还款总期数为m,也即第m月刚好还完银行所有贷款,因此有:
假如贷款60000元,一年(12个月),按现在一年期贷款年利率5.31%(月利率:5.31%/12=0.4425%)计算
1.一次性还本付息,本息合计=60000*(1+0.4425%)^12=63264.69元
=2.等额本息,还款是每一期(每个月)还款额都是一样的还款,
=
=
=
=
=============================================================================
http://zhidao.baidu.com/link?url=doZTov5sm4p5Rr9uPl_9MOdV5qBW9Uvxsh9QMcnXEF3oeajwFQ8mW0nryyl2x1P1IRf0rdT9A6FzWCvDEjot6a
http://www.cnblogs.com/sunzhenchao/archive/2013/01/14/2859727.html
http://wenku.baidu.com/link?url=oEvQaQbigg5JWNnUTjbTW9P1wPiwW1yZ4CofjqdSEc35D-eUnzCR3toIA8zPwbSoNCaHGeA-6AuB5H75Dobj8_UaPYfuHi_96kgw2vSBpdK
http://zhidao.baidu.com/link?url=2947ztv9fxpuqOhPeTr2hiWkLcdccbRrf_yiS_8mcE5U7GCXBqk6o_nV7kgdMYdyalpehP_6fbosEYad9Snlqq
=====
=http://www.kaixin001.com/repaste/20707681_1696603196.html?stat=orrecn_out
=http://www.zybang.com/question/28a6d1e1bd62517db2d94ddf9f05a320.html
========
DOCTYPE html >
< html >
< head >
< meta http-equiv =Content-Type content ="text/html; charset=gb2312" >
< meta charset ="utf-8" />
< title > JS计算器,贷款利率计算器title >
< style > /* 这是一个CSS样式表:定义了程序输出的样式 */
body { font-size : 12px ; }
#payment { } /* 定义 id="payment" 的元素样式 */
#graph { border : solid black 1px ; } /* 图表有一个1像素的边框 */
th, td { vertical-align : top ; } /* 表格单元格对齐方式为顶端对齐 */
table {
border-collapse : collapse ;
border : none ;
}
td, th {
border : solid #000 1px ;
}
.output { font-weight : bold ; } /* 计算结果定义为粗体 */
.btn {
font-weight : 700 ;
line-height : 30px ;
width : 100px ;
height : 35px ;
}
.tbl {
width : 95% ;
}
.td1 {
width : 70px
}
.td2 {
width : 140px
}
.help
{
float : right ;
cursor : pointer ;
line-height : 10px ;
margin-top : -6px ;
margin-right : -6px ;
}
.nr {
color : #666 ;
font-size : 12px ;
padding-top : 0px ;
margin : 8px -2px -2px ;
}
.tsk {
background : #f8f8f8 ;
border : 1px solid #CCC ;
box-shadow : 0 1px 5px #DDD ;
line-height : 20px ;
padding : 10px ;
position : absolute ;
display : none ;
z-index : 10000 ;
width : 215px ;
left : 1px ;
top : 16px
}
.circle {
width : 15px ;
height : 15px ;
font-weight : 700 ;
text-indent : 4px ;
cursor : pointer ;
float : left ;
line-height : 16px ;
background : #5A8BDC ;
-moz-border-radius : 50px ;
-webkit-border-radius : 50px ;
border-radius : 50px ;
}
.resultInfo {
font-weight : normal ;
font-size : 10px ;
color : red ;
}
style >
< script >
function $(id){ return document.getElementById(id); }
function helpClick(obj)
{
$(obj.id + " _help " ).style.display = " block " ;
}
function hidHelp(obj)
{
obj.parentElement.style.display = " none " ;
}
function Test()
{
var t1 = document.createElement( " table " );
t1.width = " 100% " ;
t1.insertRow();
t1.rows[ 0 ].innerHTML = " 期次 本金 利息 月供 剩余贷款 " ;
/*
t1.insertRow();
t1.rows[t1.rows.length-1].insertCell();
t1.rows[t1.rows.length-1].insertCell();
t1.rows[t1.rows.length-1].insertCell();
t1.rows[t1.rows.length-1].cells[0].innerHTML = 1;
t1.rows[t1.rows.length-1].cells[1].innerHTML = 2;
t1.rows[t1.rows.length-1].cells[2].innerHTML = 3;
*/
// t1.rows[t1.rows.length-1].insertCell()
// tab.appendChild("1 2 ");
// tab.appendChild(t1);
// alert(newRow.cells.length);
// div.appendChild(table);
// cell.innerHTML = '';
// StringBuilder html = new StringBuilder("");
// document.getElementById('zhutiTable').appendChild(t);
// 查找文档中用于输入输出的元素
var amount = document.getElementById( " amount " ); // 贷款总额
var apr = document.getElementById( " apr " ); // 年利息
var years = document.getElementById( " years " ); // 偿还期限
var zipcode = document.getElementById( " zipcode " ); // 邮政编码(查找放贷人)
var payment = document.getElementById( " payment " ); // 月还贷款额
var total = document.getElementById( " total " ); // 还贷款总额
var totalinterest = document.getElementById( " totalinterest " ); // 贷款总利息
// 假设所有的输入都是合法的,将从input元素中获取输入数据
// 将百分比格式转换为小数格式,并从年利率转换为月利率
// 将年度赔付转换为月度赔付
var principal = parseFloat(amount.value);
var interest = parseFloat(apr.value) / 100 / 12 ;
var payments = parseFloat(years.value) * 12 ;
// 现在计算月度赔付的数据
var x = Math.pow( 1 + interest, payments); // Math.pow()进行幂次运算
var monthly = (principal * x * interest) / (x-1);
// 月还款额=贷款金额*年利率/12*(1+年利率/12)^(年期*12)/((1+年利率/12)^(年期*12)-1)
var yue = principal * (interest) * x / (Math.pow(1+interest,payments)-1);
var shy = principal;
for (i = 0 ;i < payments;i ++ ){
// 第N月本金: 月还款额=(1+年利率/12)^(N-1-年期*12)
var y_bj = Math.pow(interest + 1 ,i - payments)
// 第N月利息: 月还款额=(1-(1+年利率/12)^(N-1-年期*12))
var y_lx = 1 - Math.pow( 1 + interest,i - payments);
t1.insertRow(t1.rows.length);
t1.rows[t1.rows.length - 1 ].insertCell();
t1.rows[t1.rows.length - 1 ].insertCell();
t1.rows[t1.rows.length - 1 ].insertCell();
t1.rows[t1.rows.length - 1 ].insertCell();
t1.rows[t1.rows.length - 1 ].insertCell();
t1.rows[t1.rows.length - 1 ].cells[ 0 ].innerHTML = i + 1 ;
t1.rows[t1.rows.length - 1 ].cells[ 1 ].innerHTML = (monthly * y_bj).toFixed( 2 );
t1.rows[t1.rows.length - 1 ].cells[ 2 ].innerHTML = (monthly * y_lx).toFixed( 2 );
t1.rows[t1.rows.length - 1 ].cells[ 3 ].innerHTML = monthly.toFixed( 2 );
t1.rows[t1.rows.length - 1 ].cells[ 4 ].innerHTML = (principal -= (monthly * y_bj)).toFixed( 2 );
}
var tr = $( " tr_tab " );
tr.cells[ 0 ].innerHTML = t1.outerHTML;
}
script >
head >
< body >
< table id ="t_main" width =500px >
< tbody >
< tr >
< th colspan =2 style ="text-align:left;font-size:24px;background-color:#3f3" > 输入数据:th >
tr >
< tr >
< td width =100px >
贷款总金额:td >
< td >< input id ="amount" value ="500000" />< span style ="margin-left:-18px" > 元span > td >
tr >
< tr >
< td >
基准年利率:td >
< td >< input id ="apr" value ="3.5" />< span style ="margin-left:-14px" > %span > td >
tr >
< td >
利率折扣: td >
< td >
< select id =llzk style ="width:173px;" >
< option value ="2.0" > 基准利率2倍option >
< option value ="1.5" > 基准利率1.5倍option >
< option value ="1.4" > 基准利率1.4倍option >
< option value ="1.3" > 基准利率1.3倍option >
< option value ="1.2" > 基准利率1.2倍option >
< option value ="1.1" > 基准利率1.1倍option >
< option value ="1.05" > 基准利率1.05倍option >
< option value ="1.0" selected =true > 基准利率option >
< option value ="0.95" > 基准利率9.5折option >
< option value ="0.9" > 基准利率9折option >
< option value ="0.88" > 基准利率8.8折option >
< option value ="0.85" > 基准利率8.5折option >
< option value ="0.83" > 基准利率8.3折option >
< option value ="0.8" > 基准利率8折option >
< option value ="0.75" > 基准利率7.5折option >
< option value ="0.7" > 基准利率7折option >
select >
td >
tr >
< tr >
< td >
贷款期限:td >
< td >< input id ="years" value ="30" />< span style ="margin-left:-18px" > 年span > td >
tr >
< tr style ="display:none" >
< td >
邮政编码(查找放贷人):td >
< td >< input id ="zipcode" />
< span id ="lenders" > span >
td >
tr >
< tr >
< th colspan =2 >
< input class ="btn" type =button onclick ="calculate();" value ="计 算" />
< input class ="btn" type =button onclick ="Test();" value ="测 试" />
< input class ="btn" type =reset value ="重 置" />
th >
tr >
< tr >
< th colspan =2 style ="text-align:left;font-size:24px;background-color:#3f3" >
输出结果:< span class ="resultInfo" > 此结果仅供参考,实际应缴费以当地为准span >
th >
tr >
< tr >
< td >
每月付款:td >
< td >
< input id ="payment" value ="30" />
td >
tr >
< tr >
< td >
付款总额:td >
< td >< span class ="output" id ="total" > 0span > td >
tr >
< tr >
< td >
利息总额:td >
< td >< span class ="output" id ="totalinterest" > 0span > td >
tr >
< tr >
< td colspan ="2" >
< table id ="result" style ="width:100%" >
< tbody >
< tr >
< td style ="position:relative;width:50%;" >
< div >
< span style ="float:left" > 每月等额还款span >
< div class ="circle" onclick ="helpClick(this)" id ="debxhk" > ?div >
div >
< div class ="tsk" id ="debxhk_help" >
< div onclick ="hidHelp(this)" class ="help" > Xdiv >
< div class ="nr" >
每月等额还款即等额本息还款法,指借款人每月按相等的金额偿还贷款本息,其中每月贷款利息按月初剩余贷款本金计算并逐月结清。
div >
div >
< table style ="clear:both" cellpadding ="0" cellspacing ="0" class ="tbl" >
< tbody >
< tr >
< td class ="td1" > 贷款总额td >
< td class ="td2" >< var id ="_debx_dkze" > 0var > 元td >
tr >
< tr >
< td class ="td1" > 还款月数td >
< td class ="td2" >< var id ="_debx_hkys" > 0var > 月td >
tr >
< tr >
< td class ="td1" > 首月还款td >
< td class ="td2" >< em id ="_debx_syhk" > 0em > 元td >
tr >
< tr >
< td class ="td1" > 每月递减td >
< td class ="td1" >< em id ="_debj_mydj" > 0em > 元td >
tr >
< tr >
< td class ="td1" > 总付利息td >
< td class ="td2" >< em id ="_debx_zflx" > 0em > 元td >
tr >
< tr >
< td class ="td1" > 本息合计td >
< td class ="td2" >< em id ="_debx_bxhj" > 1,039,024.42em > 元td >
tr >
tbody >
table >
td >
< td style ="position:relative" >
< div >
< span style ="float:left" > 逐月递减还款span >
< div onclick ="helpClick(this)" class ="circle" id ="debjhk" > ?div >
div >
< div class ="tsk" id ="debjhk_help" >
< div onclick ="hidHelp(this)" class ="help" > Xdiv >
< div class ="nr" >
逐月递减还款即等额本金还款法,指本金保持相同,利息逐月递减,月还款数递减;由于每月的还款本金额固定,而利息越来越少,贷款人起初还款压力较大,但是随时间的推移每月还款数也越来越少。
div >
div >
< table style ="clear:both" cellpadding ="0" cellspacing ="0" class ="tbl" >
< tbody >
< tr >
< td class ="td1" > 贷款总额td >
< td class ="td2" >< var id ="_debj_dkze" > 0var > 元td >
tr >
< tr >
< td class ="td1" > 还款月数td >
< td class ="td2" >< var id ="_debj_hkys" > 0var > 月td >
tr >
< tr >
< td class ="td1" > 首月还款td >
< td class ="td2" >< em id ="_debj_syhk" > 0em > 元
td >
tr >
< tr >
< td class ="td1" > 每月递减td >
< td class ="td1" >< em id ="_debj_mydj" > 0em > 元td >
tr >
< tr >
< td class ="td1" > 总付利息td >
< td class ="td2" >< em id ="_debj_zflx" > 0em > 元td >
tr >
< tr >
< td class ="td1" > 本息合计td >
< td class ="td2" >< em id ="_debj_bxhj" > 1,039,024.42em > 元td >
tr >
tbody >
table > td >
tr >
< tr style ="display:none" >
< td colspan ="2" >
< span class ="resultInfo" > 此结果仅供参考,实际应缴费以当地为准span >
td >
tr >
tbody >
table >
td >
tr >
< tr >
< td colspan =2 >< span style ="font-weight:bold;" > 图表:贷款金额,累计金额,利息支付span > td >
tr >
< tr >
< td colspan ="2" >
< canvas id ="graph" width ="500" height ="250" > canvas >
td >
tr >
< tr id ="tr_tab" >
< td colspan ="2" >
td >
tr >
tbody >
table >
< div id ="list" > div >
< script >
function calculate() {
// 生成每月还款额表格
Test();
// 查找文档中用于输入输出的元素
var amount = document.getElementById( " amount " ); // 贷款总额
var apr = document.getElementById( " apr " ); // 年利息
var years = document.getElementById( " years " ); // 偿还期限
var zipcode = document.getElementById( " zipcode " ); // 邮政编码(查找放贷人)
var payment = document.getElementById( " payment " ); // 月还贷款额
var total = document.getElementById( " total " ); // 还贷款总额
var totalinterest = document.getElementById( " totalinterest " ); // 贷款总利息
// 假设所有的输入都是合法的,将从input元素中获取输入数据
// 将百分比格式转换为小数格式,并从年利率转换为月利率
// 将年度赔付转换为月度赔付
var principal = parseFloat(amount.value);
var interest = parseFloat(apr.value) / 100 / 12 ;
var payments = parseFloat(years.value) * 12 ;
// 现在计算月度赔付的数据
var x = Math.pow( 1 + interest, payments); // Math.pow()进行幂次运算
var monthly = (principal * x * interest) / (x-1);
// 月还款额=贷款金额*年利率/12*(1+年利率/12)^(年期*12)/((1+年利率/12)^(年期*12)-1)
var yue = principal * (interest) * x / (Math.pow(1+interest,payments)-1)
// 第N月本金: 月还款额=(1+年利率/12)^(N-1-年期*12)
var y_bj = Math.pow(interest + 1 , - payments)
// 第N月利息: 月还款额=(1-(1+年利率/12)^(N-1-年期*12))
var y_lx = 1 - Math.pow( 1 + interest, - payments)
// 如果结果没有超过JavaScript能表示的数字范围,且用户的输入也正确
// 这里所展示的结果就是合法的
if (isFinite(monthly)) {
// 将数据填充至输出字段的位置,四舍五入到小数点后两位数字
// payment.innerHTML = monthly.toFixed(2);
payment.value = monthly.toFixed( 2 );
total.innerHTML = (monthly * payments).toFixed( 2 );
totalinterest.innerHTML = ((monthly * payments) - principal).toFixed( 2 );
// 将用户的输入数据保存下来,这样在下次访问时也能取到数据
save(amount.value, apr.value, years.value, zipcode.value);
// 找到并展示本地放贷人,但忽略网络错误
try { // 捕获这段代码抛出的所有异常
getLenders(amount.value, apr.value, years.value, zipcode.value);
}
catch (e) { /* 忽略这些异常 */ }
// 最后,用图表展示贷款余额、利息和资产收益
chart(principal, interest, monthly, payments);
}
else {
// 计算结果不是数字或者是无穷大,意味着输入数据是非法或不完整的
// 清空之前的输出数据
payment.innerHTML = "" ; // 清空元素的文本内容
total.innerHTML = ""
totalinterest.innerHTML = "" ;
chart(); // 不传参数的话就是清除图表
}
}
// 将用户的输入保存至localStorage对象的属性中
// 这些属性在再次访问时还会继续保持在原位置
// 如果你在浏览器中按照file:// URL的方式直接打开本地文件,
// 则无法在某些浏览器中使用存储功能(比如FireFox)
// 而通过HTTP打开文件是可行的
function save(amount, apr, years, zipcode) {
if (window.localStorage) { // 只有在浏览器支持的时候才运行这里的代码
localStorage.loan_amount = amount;
localStorage.loan_apr = apr;
localStorage.loan_years = years;
localStorage.loan_zipcode = zipcode;
}
}
// 在文档首次加载时,将会尝试还原输入字段
window.onload = function () {
// 如果浏览器支持本地存储并且上次保存的值是存在的
if (window.localStorage && localStorage.loan_amount) {
document.getElementById( " amount " ).value = localStorage.loan_amount;
document.getElementById( " apr " ).value = localStorage.loan_apr;
document.getElementById( " years " ).value = localStorage.loan_years;
document.getElementById( " zipcode " ).value = localStorage.loan_zipcode;
}
};
// 将用户的输入发送至服务器端脚本(理论上)将
// 返回一个本地放贷人的链接列表,在这个例子中并没有实现这种查找放贷人的服务
// 但如果该服务存在,该函数会使用它
function getLenders(amount, apr, years, zipcode) {
// 如果浏览器不支持XMLHttpRequest对象,则退出
if ( ! window.XMLHttpRequest) return ;
// 找到要显示放贷人列表的元素
var ad = document.getElementById( " lenders " );
if ( ! ad) return ; // 如果返回为空,则退出
// 将用户的输入数据进行URL编码,并作为查询参数附加在URL里
var url = " getLenders.php " + // 处理数据的URL地址
" ?amt= " + encodeURIComponent(amount) + // 使用查询串中的数据
" &apr= " + encodeURIComponent(apr) +
" &yrs= " + encodeURIComponent(years) +
" &zip= " + encodeURIComponent(zipcode);
// 通过XMLHttpRequest对象来提取返回数据
var req = new XMLHttpRequest(); // 发起一个新的请求
req.open( " GET " , url); // 通过URL发起一个HTTP GET请求
req.send( null ); // 不带任何正文发送这个请求
// 在返回数据之前,注册了一个事件处理函数,这个处理函数
// 将会在服务器的响应返回至客户端的时候调用
// 这种异步编程模式在客户端JavaScript中是非常常见的
req.onreadystatechange = function () {
if (req.readyState == 4 && req.status == 200 ) {
// 如果代码运行到这里,说明我们得到了一个合法且完整的HTTP响应
var response = req.responseText; // HTTP响应是以字符串的形式呈现的
var lenders = JSON.parse(response); // 将其解析为JS数组
// 将数组中的放贷人对象转换为HTML字符串形式
var list = "" ;
for ( var i = 0 ; i < lenders.length; i ++ ) {
list += " " +
lenders[i].name + " " ;
}
// 将数据在HTML元素中呈现出来
ad.innerHTML = " " + list + " " ;
}
}
}
// 在HTML元素中用图表展示月度贷款余额、利息和资产收益
// 如果不传入参数的话,则清空之前的图表数据
// principal:贷款金额
// interest:利息
// monthly:每月还款额
// payments:还款期限
function chart(principal, interest, monthly, payments) {
var graph = document.getElementById( " graph " ); // 得到标签
graph.width = graph.width; // 用一种巧妙的手法清除并重置画布
// 如果不传入参数,或者浏览器不支持画布,则直接返回
if (arguments.length == 0 || ! graph.getContext) return ;
// 获得画布元素的"context"对象,这个对象定义了一组绘画API
var g = graph.getContext( " 2d " ); // 所有的绘画操作都将基于这个对象
var width = graph.width, height = graph.height; // 获得画布大小
// 这里的函数作用是将付款数字的数据转换为像素
function paymentToX(n) { return n * width / payments; }
function amountToY(a) { return height - (a * height / (monthly*payments*1.05));}
// 总付款数据是一条从(0,0)到(payments, monthly*payments)的直线
g.moveTo(paymentToX( 0 ), amountToY( 0 )); // 从左下方开始
g.lineTo(paymentToX(payments),amountToY(monthly * payments)); // 绘至右上方
g.lineTo(paymentToX(payments), amountToY( 0 )); // 再至右下方
g.closePath(); // 将结尾连接至开头
g.fillStyle = " #f88 " ; // 亮红色
g.fill(); // 填充矩形
g.font = " bold 12px sans-serif " ; // 定义一种字体
g.fillText( " 总支出 " , 15 , 20 ); // 将文字绘制到图例中
// 总贷款额的还款进度,很多资产数据并不是线性的,很难将其反映至图表中
var equity = 0 ;
g.beginPath(); // 开始绘制新图形
g.moveTo(paymentToX( 0 ), amountToY( 0 )); // 从左下方开始
for ( var p = 1 ; p <= payments; p ++ ) { // 计算出每一笔赔付的利息
var thisMonthsInterest = (principal - equity) * interest;
equity += (monthly - thisMonthsInterest); // 得到资产额
g.lineTo(paymentToX(p),amountToY(equity)); // 将数据绘制到画布上
}
g.lineTo(paymentToX(payments), amountToY( 0 )); // 将数据线绘制至X轴
g.closePath(); // 将线条结尾连接至线条开头
g.fillStyle = " #78E682 " ; // 使用绿色绘制图形
g.fill(); // 曲线之下的部分均填充
g.fillText( " 贷款数额 " , 60 , 20 ); // 文本颜色设置为绿色
// 余额,再次循环,余额数据显示为黑色粗线条
var bal = principal;
g.beginPath();
g.moveTo(paymentToX( 0 ),amountToY(bal));
for ( var p = 1 ; p <= payments; p ++ ) {
var thisMonthsInterest = bal * interest;
bal -= (monthly - thisMonthsInterest); // 得到资产额
g.lineTo(paymentToX(p),amountToY(bal)); // 将直线连接至某点
}
g.lineWidth = 2 ; // 将直线宽度加粗
g.strokeStyle = " #E422CB " ; // 绘制线条的颜色
g.stroke(); // 绘制余额的曲线
g.fillStyle = " black " ; // 使用黑色字体
g.fillText( " 贷款余额 " , 120 , 20 ); // 图例文字
// 将年度数据在X轴做标记
g.textAlign = " center " ; // 文字居中对齐
var y = amountToY( 0 ); // Y坐标设为0
for ( var year = 1 ; year * 12 <= payments; year ++ ) { // 遍历每年
var x = paymentToX(year * 12 ); // 计算标记位置
g.fillRect(x - 0.5 ,y - 3 , 1 , 3 ); // 开始绘制标记
if (year == 1 ) g.fillText( " 1年 " , x, y - 5 ); // 在坐标轴做标记
if (year % 5 == 0 && year * 12 !== payments) // 每5年的数据
g.fillText(String(year) + " 年 " , x, y - 5 );
}
// 将赔付数额标记在右边界
g.textAlign = " right " ; // 文字右对齐
g.textBaseline = " middle " ; // 文字垂直居中
var ticks = [monthly * payments, principal]; // 我们将要用到的两个点
var rightEdge = paymentToX(payments); // 设置X坐标
for ( var i = 0 ; i < ticks.length; i ++ ) { // 对每两个点做循环
var y = amountToY(ticks[i]); // 计算每个标记的Y坐标
g.fillRect(rightEdge - 3 , y - 0.5 , 5 , 1 ); // 绘制标记
g.fillText(String(ticks[i].toFixed( 0 )),rightEdge - 5 , y); // 绘制文本
}
g.textAlign = " left " ;
g.fillRect( 0 , y - 0.5 , 6 , 1 ); // 绘制标记
g.fillText(String(principal), 15 , y); // 绘制文本
}
script >
body >
html >
View Code
==
==
转载于:https://www.cnblogs.com/mq0036/p/5209823.html
你可能感兴趣的:(银行利息计算公式推导(存款,贷款))
零基础必看!CCF-GESP Python一级考点全解析:运算符这样学就对了
奕澄羽邦
python 开发语言
第一章编程世界的基础工具:运算符三剑客在Python编程语言中,运算符如同魔法咒语般神奇。对于CCF-GESPPython一级考生而言,正确掌握比较运算符、算术运算符和逻辑运算符这三大基础工具,就相当于打开了数字世界的大门。这三个运算符家族共同构成了程序逻辑的核心骨架,其灵活组合能实现从简单计算到复杂判断的多样功能。1.1运算符分类图谱算术运算符:负责数字间的数学运算(+-*/%)比较运算符:用于
Spike Neural Network Introduction and Research Directions
Debug_Snail
SNN Neuralnetwork 人工智能 AIGC
1.SNNs是一类神经网络,其中的神经元通过脉冲(spikes)来传递信息,而不是像传统的人工神经网络中那样使用实数值激活。SNNs更接近生物学上的神经系统,因为生物神经元也是通过电信号脉冲来传递信息的。与传统神经网络相比,SNNs具有以下几个特点:更低的功耗-因为只在发生脉冲时才激活神经元,所以整体功耗会比传统神经网络低很多。这使得SNNs很适合应用在对功耗要求非常严格的场景,如边缘计算。时序编
【Unity】灯光Light
xiaoaiyu___
unity 游戏引擎
Type:光照类型,一共有四种Directionallight:方向光,类似太阳的日照效果。Pointlight:点光源,类似蜡烛。Spotlight:聚光灯,类似手电筒。AreaLight:区域光,无法用作实时光照,一般用于光照贴图烘培Color:光源的颜色,自己选Mode:光照模式Realtime实时:运行时每帧计算并更新实时灯光。没有预先计算实时灯光。Mixed混合:一种提供烘焙和实时功能的
C语言开发以及维护用到的工具简介
812503533
蓦然回首---再看C语言 c语言 编辑器 开发语言
C语言作为一门经典的编程语言,广泛应用于系统编程、嵌入式开发、操作系统内核等领域。经过第一部分的介绍,已经可以实现一些最简单的功能了,比如文字版本的计算器,猜数字小游戏,通过调整输出格式从而输出优美的图形等等,那么在未来的实际使用中,使用一些什么工具去进行c语言的编辑,查看,编译,运行等等,本文将做简单的介绍,后续再慢慢完善相关的内容。1、编辑器所有语言在编写的时候使用的工具就叫做编辑器,C语言程
【春招笔试真题】饿了么2025.03.07-开发岗真题
春秋招笔试突围
最新互联网春秋招试题合集 java 算法 网络
饿了么2025.03.07-开发岗题目1️⃣:统计01串中0和1的个数,通过计算可能的交换方式确定不同字符串数量2️⃣:使用模板匹配技术识别验证码图片中的"#"符号分布模式3️⃣:构建字典树(Trie)优化异或查询,实现高效的数字黑板游戏整体难度这套题目整体难度适中,由简到难逐步递进:第一题是基础的计数问题,需要理解交换操作的特性第二题是模式识别问题,需要实现模板匹配第三题是高级数据结构应用,需要
【C语言】八进制、十六进制
Octopus2077
c语言 开发语言 算法 visual studio
前言在我们日常生活中使用的数往往是十进制的,而当我们学习C语言后我们会接触到许多不同的进制并且时常需要去思考与使用这些不同的进制(尤其是2的幂相关的进制,因为这种计数系统比十进制更接近于计算机的二进制系统),所以学习和掌握这些不同进制是非常重要的。本文将对八进制和十六进制(8和16都为2的幂)进行一些讲解。通常情况C语言都假定整型常量是十进制的数,但在表达与计算机相关的值时,八进制和十六进制却十分
Docker高级应用-限制容器的cpu和内存
云原生的爱好者
docker 容器 运维
一、为什么要用docker限制容器的cpu和内存1.资源隔离与公平分配防止资源争用:在多容器环境中,限制CPU和内存可以避免某个容器占用过多资源,影响其他容器的运行。确保公平性:通过限制资源,确保每个容器都能获得所需的计算能力,避免资源被少数容器独占。2.提高系统稳定性防止内存泄漏:限制内存可以避免容器因内存泄漏耗尽主机内存,导致系统崩溃。避免CPU过载:限制CPU使用可以防止容器过度占用CPU,
新导则下的防洪评价报告编制方法及洪水建模实践技术
吹翻书页的风
水文水利 地质地下水 环境科学 arcgis 防洪评价报告编制 HEC-RAS软件 二维水动力模型计算
目录1、《防洪评价报告编制导则解读河道管理范围内建设项目编制导则》(SL/T808-2021)解读2、防洪评价相关制度与解析3、防洪评价地形获取及常用计算4、HEC-RAS软件原理及特点5、HEC-RAS地形导入6、一维数学模型计算7、基于数学模型软件的一维构筑物的水动力模型计算及本章内容在报告中编写方法8、数值模型软件概述及数据基础处理9、基于数学模型软件的二维水动力模型计算析及结果输出及评价章
R+VIC 模型融合实践技术应用及未来气候变化模型预测
weixin_贾
水文模型集合 水文水资源 防洪评价 风险评估 滑坡 泥石流 数学建模 经验分享
目前,无论是工程实践或是科学研究中都存在很多著名的水文模型如SWAT/HSPF/HEC-HMS等。虽然,这些软件有各自的优点;但是,由于适用的尺度主要的是中小流域,所以在预测气候变化对水文过程影响等方面都有所不足。VIC模型是一个大尺度的半分布式水文模型,其设计之初就是为了模拟大流域的水文过程;它能够计算陆地-大气的能量通量,考虑土壤性质和土地利用的影响,自带有简化的湖泊/湿地模块,也能够将植被状
Python学习第十一天
Leo来编程
Python学习 python
疑惑:有很多人不知道是不是也分不清什么是单核?什么是多核?什么是时间片?进程?线程?那么在讲进程和线程前我先举个例子更好理解这些概念。单核例子:比如你是一个厨师(计算机)在一个厨房(CPU)里需要同时做3个菜(进程)、每个菜需要准备不同的调料以及协作(线程),那么这个厨师需要不断地切换时间(时间片)来达到同时在一个时间将三个菜做完。多核的话其实对应的例子就是多个厨师,这样的例子太多了因为万物皆对象
matlab spmd,matlab并行计算命令
其实我是老莫
matlab spmd
1.matlab仿真模型怎么并行计算以单台双核计算机为例。首先打开MATLAB命令窗口,输入matlabpoolopen就OK了。这样,就相当于将一台计算机的两个核心,当做两台机器用啦。接下来是编程序实现的方法。MATLAB并行计算的模式有几种?主要是两种:parfor模式和spmd模式。两种模式的应用都很简单。第一个中,parfor其实就是parallel+for简化而来,顾名思义啊,就是把原来
目标检测项目
sho_re
神经网络 人工智能 pytorch 目标检测
·识别图片中有哪些物体并且找到物体的存在位置多任务:位置+类别目标种类与数量繁多的问题目标尺度不均的问题遮挡、噪声等外部环境干扰VOC数据集:PASCALVOC挑战赛(ThePASCALVisualObjectClasses)是一个世界级的计算机视觉挑战赛。4大类,20小类VOC2007:9963图片/24640目标VOC2012:23080图片/54900目标·COCO数据集:起源于微软2014
HarmonyNext实战案例:基于ArkTS的高性能分布式机器学习应用开发
harmonyos-next
HarmonyNext实战案例:基于ArkTS的高性能分布式机器学习应用开发引言在HarmonyNext生态系统中,分布式机器学习是其核心特性之一。通过分布式机器学习,开发者可以充分利用多设备的计算资源,实现复杂模型的训练与推理。本文将深入探讨如何使用ArkTS12+语法开发一个高性能的分布式机器学习应用,涵盖从基础概念到高级技巧的全面讲解。通过本案例,您将学习到如何利用HarmonyNext的分
主存储器、SRAM 与 DRAM 的工作原理及相关技术
海大超级无敌暴龙战士
计算机组成原理 学习方法
主存储器、SRAM与DRAM的工作原理及相关技术本文介绍了三种内容:SRAM与DRAM的工作方式DRAM的刷新机制与地址引脚复用技术DRAM行列(Row/Column)优化原则及行缓冲器容量的计算1.主存储器中SRAM与DRAM的工作方式1.1SRAM的工作方式基本原理:SRAM(静态随机存储器)利用由晶体管构成的锁存电路(通常为6T结构)来存储每一比特。只要电源保持,SRAM单元可以无限期地保存
本地部署AI大模型之并行计算:什么是可重入互斥锁/递归锁
杰瑞学AI
Devops Computer knowledge 开发语言 python 软件工程 性能优化
目录1.普通互斥锁的局限性2.可重入互斥锁的工作原理3.使用场景4.代码示例5.实现关键6.注意事项可重入互斥锁(ReentrantMutex,或称为递归锁)是一种特殊类型的互斥锁,允许同一线程多次获取同一把锁而不会导致死锁。以下是其核心要点:1.普通互斥锁的局限性普通互斥锁(Mutex)在同一个线程中只能被获取一次。若线程尝试重复获取已持有的锁,会导致自死锁(线程无限等待自己释放锁)。2.可重入
刷题前必学!二叉树!用JavaScript学数据结构与算法
JavaScript算法与数据结构-HowieCong务必要熟悉JavaScript使用再来学!一、树是什么?数据结构中的树,对于现实世界中的树简化——树根抽象为“根节点”,树枝抽象为“边”,树枝的两个端点抽象为“结点”,树叶抽象为“叶子结点”计算机中的树如下:二、树的重点树的层次计算规则:根结点所在的那一层为第一层,其子节点为第二层,以此类推结点和树的高度计算规则:叶子结点高度为1,每向上一层
从零开始学习黑客技术,看这一篇就够了
网络安全-旭师兄
学习 web安全 python 密码学 网络安全
基于入门网络安全/黑客打造的:黑客&网络安全入门&进阶学习资源包黑客,对于很多人来说,是一个神秘的代名词,加之影视作品夸张的艺术表现,使得黑客这个本来只专注于技术的群体,散发出亦正亦邪的神秘色彩。黑客源自英文hacker一词,最初曾指热心于计算机技术、水平高超的电脑高手,尤其是程序设计人员,逐渐区分为白帽、灰帽、黑帽等。其中,白帽黑客被称为道德黑客。他们不会非法入侵用户网络,而是通过一系列测试检查
计算机网络:电路交换,报文交换,分组交换
LG.YDX
计算机网络 计算机网络 网络
一、电路交换:核心思想在通信前建立一条专用物理路径(电路),整个通信过程中独占该路径,结束后释放资源。特点1.建立连接(尝试占用通信资源)2.通信(一直占用通信资源)3.释放连接(归还通信资源)优点:•实时性强(如语音通话、视频会议)。•数据传输顺序和完整性有保障。缺点:•资源浪费(空闲时链路无法被其他用户使用)。•连接建立/释放时间长(不适合突发性数据传输)。线路分配的灵活性差。节点交换不支持“
统信uos20:利用docker部署python+jupyterlab开发环境
阆遤
docker python jupyter github actions workflow 统信uos20
很多统信uos20计算机没有联网安装python开发环境的条件,但是工作中需要对数据进行分析处理,因而产生了离线部署python开发环境的想法。我首先下载了python3.11的源代码包,在uos中编译居然正常通过。但后续的麻烦来了:需要安装的库没法安装。尝试了一天,最终放弃。改用Docker方式部署,理由就不多解释了。一、在uos中安装docker。我的系统是uos20linux4.19.0-a
面试题之react useMemo和uesCallback
阿丽塔~
react.js 前端 前端框架
在面试中,关于React中的useMemo和useCallback的区别是一个常见的问题。useMemo和useCallback的区别1.功能定义useMemo:用于缓存计算结果,避免在每次组件渲染时重新计算复杂的值。它接受一个计算函数和一个依赖数组,只有当依赖项发生变化时,才会重新计算。useCallback:用于缓存函数实例,避免在每次组件渲染时创建新的函数。它接受一个函数和一个依赖数组,只有
架构生命周期(演进史)技术应服务于业务
Limbo1213
java架构 生命周期演进史
架构生命周期简介本篇幅主要讲述架构的各阶段出现的需求问题、业务问题、性能问题以及相应的解决方案。1、web1.0时代(1996年左右)2、web2.0时代(2006年左右)3、互联网时代(2012年左右)–》互联网±-》智慧城市。滴滴打车。饿了么(工商局)4、大数据+云计算5、AI未来以来时代…第一时期单一应用架构allinone。所有的模块和代码都在一起。技术也不分层。(2000年左右)网站的初
DeepSeek + Cline:编程如何加速引擎
meisongqing
人工智能
DeepSeek与Cline的结合为编程工作流提供了显著的加速能力,这种组合通过AI辅助规划、代码生成与优化、实时调试等功能,大幅提升开发效率。以下是具体实现方式及技术要点:一、智能规划与代码生成问题分析与规划(Plan模式)DeepSeek-R1模型擅长处理复杂逻辑推理,开发者可在Cline的Plan模式下用自然语言描述需求(如“用Python实现数据清洗并计算平均值”)。DeepSeek会根据
前端开发使用的 安卓模拟器_【译】移动开发中的仿真器与模拟器
weixin_39976748
前端开发使用的 安卓模拟器
译者注:本文主要涉及到两个概念:Emulator和Simulator。通常我们在工作中可能统统习惯称为“模拟器”,但实际上二者有所不同。为了分清概念,本文将Emulator译作“仿真器”,Simulator译作“模拟器”。听起来可能略拗口,如产生生理或心理不适,敬请谅解。仿真器(Emulator),又称仿真程序,在软件工程中指可以使计算机或者其他多媒体平台(掌上电脑,手机)能够运行其他平台上的程序
(六)Java-BigDecimal
Kyrie_Li
Java体系 java 开发语言
一、概述BigDecimal类用于高精度计算,特别适用于需要进行精确浮点数运算的场合,例如货币计算、金融应用或科学计算。二、优势由于double和float类型是浮点数类型,它们在表示一些十进制数时会出现精度丢失问题,而BigDecimal则可以避免这些问题,提供任意精度的数值表示。三、特点1.任意精度:BigDecimal的精度仅受限于计算机的内存,而不像float和double有固定的精度限制
c++计算n的阶乘(用循环和递归)
Absinthe_苦艾酒
c/c++ c++ 算法 数据结构
1.循环//计算阶乘#includeusingnamespacestd;intfct(int*p){intsum=1;while(*p>=2){sum*=((*p)--);}returnsum;}intmain(){cout>n;coutusingnamespacestd;//使用递归计算阶乘intfct(intn){if(n==1)return1;elsereturnn*fct(n-1);}in
基于jsp+servlet+mysql实现增删改查
蟹黄味汉堡
mysql servlet jsp
#声明单纯记录学习计算机当中所遇到的问题把解决问题的方法分享给大家希望大佬不要喷我这个小白#链接mysql数据库publicclassBaseDao{publicConnectiongetConnection()throwsClassNotFoundException,SQLException{//url里的demo4为数据库名称Stringurl="jdbc:mysql://localhost:
神经网络中梯度计算求和公式求导问题
serve the people
日常琐问 神经网络 机器学习 算法
以下是公式一推导出公式二的过程。表达式一∂E∂wjk=−2(tk−ok)⋅sigmoid(∑jwjk⋅oj)⋅(1−sigmoid(∑jwjk⋅oj))⋅∂∂wjk(∑jwjk⋅oj)\frac{\partialE}{\partialw_{jk}}=-2(t_k-o_k)\cdot\text{sigmoid}\left(\sum_jw_{jk}\cdoto_j\right)\cdot(1-\tex
操作系统概述
Wlq0415
操作系统 系统架构
操作系统定义操作系统(OS)是管理计算机硬件和软件资源的系统软件,旨在提供一个操作环境,使用户和应用程序能够高效地使用计算机资源。它通过合理组织计算机工作流程、控制程序执行并提供友好接口,确保用户能够顺利进行各种操作。操作系统的作用资源管理:操作系统管理计算机中运行的程序,并分配CPU、内存、输入输出设备等各种软硬件资源,确保它们高效运作。人机接口:为用户提供友好的界面,使用户能够方便地与计算机进
基于大数据架构的就业岗位推荐系统的设计与实现【java或python】—计算机毕业设计源码+LW文档
qq_375279829
大数据 架构 python 课程设计 算法
摘要随着互联网技术的迅猛发展和大数据时代的到来,就业市场日益复杂多变,求职者与招聘方之间的信息不对称问题愈发突出。为解决这一难题,本文设计并实现了一个基于大数据架构的就业岗位推荐系统。该系统通过收集、整合并分析大量求职者简历信息、企业招聘信息以及市场动态数据,运用先进的机器学习算法,为求职者提供个性化的岗位推荐服务,同时帮助企业快速定位到合适的候选人。本文将从系统设计的背景与意义、技术基础、需求分
计算机网络 概述
kikikidult
计算机网络
目录1.1因特网概述1网络、互连网(互联网)和因特网的区别和关系因特网服务提供者(InternetServiceProvider,ISP)2因特网发展的三个阶段3因特网的标准化工作4因特网的组成1.2三种交换方式1电路交换(CircuitSwitching)2分组交换(PacketSwitching)3报文交换(MessageSwitching)4三种交换方式的对比1.3计算机网络的定义1.4计算
Spring中@Value注解,需要注意的地方
无量
spring bean @Value xml
Spring 3以后,支持@Value注解的方式获取properties文件中的配置值,简化了读取配置文件的复杂操作
1、在applicationContext.xml文件(或引用文件中)中配置properties文件
<bean id="appProperty"
class="org.springframework.beans.fac
mongoDB 分片
开窍的石头
mongodb
mongoDB的分片。要mongos查询数据时候 先查询configsvr看数据在那台shard上,configsvr上边放的是metar信息,指的是那条数据在那个片上。由此可以看出mongo在做分片的时候咱们至少要有一个configsvr,和两个以上的shard(片)信息。
第一步启动两台以上的mongo服务
&nb
OVER(PARTITION BY)函数用法
0624chenhong
oracle
这篇写得很好,引自
http://www.cnblogs.com/lanzi/archive/2010/10/26/1861338.html
OVER(PARTITION BY)函数用法
2010年10月26日
OVER(PARTITION BY)函数介绍
开窗函数 &nb
Android开发中,ADB server didn't ACK 解决方法
一炮送你回车库
Android开发
首先通知:凡是安装360、豌豆荚、腾讯管家的全部卸载,然后再尝试。
一直没搞明白这个问题咋出现的,但今天看到一个方法,搞定了!原来是豌豆荚占用了 5037 端口导致。
参见原文章:一个豌豆荚引发的血案——关于ADB server didn't ACK的问题
简单来讲,首先将Windows任务进程中的豌豆荚干掉,如果还是不行,再继续按下列步骤排查。
&nb
canvas中的像素绘制问题
换个号韩国红果果
JavaScript canvas
pixl的绘制,1.如果绘制点正处于相邻像素交叉线,绘制x像素的线宽,则从交叉线分别向前向后绘制x/2个像素,如果x/2是整数,则刚好填满x个像素,如果是小数,则先把整数格填满,再去绘制剩下的小数部分,绘制时,是将小数部分的颜色用来除以一个像素的宽度,颜色会变淡。所以要用整数坐标来画的话(即绘制点正处于相邻像素交叉线时),线宽必须是2的整数倍。否则会出现不饱满的像素。
2.如果绘制点为一个像素的
编码乱码问题
灵静志远
java jvm jsp 编码
1、JVM中单个字符占用的字节长度跟编码方式有关,而默认编码方式又跟平台是一一对应的或说平台决定了默认字符编码方式;2、对于单个字符:ISO-8859-1单字节编码,GBK双字节编码,UTF-8三字节编码;因此中文平台(中文平台默认字符集编码GBK)下一个中文字符占2个字节,而英文平台(英文平台默认字符集编码Cp1252(类似于ISO-8859-1))。
3、getBytes()、getByte
java 求几个月后的日期
darkranger
calendar getinstance
Date plandate = planDate.toDate();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.setTime(plandate);
// 取得三个月后时间
cal.add(Calendar.M
数据库设计的三大范式(通俗易懂)
aijuans
数据库复习
关系数据库中的关系必须满足一定的要求。满足不同程度要求的为不同范式。数据库的设计范式是数据库设计所需要满足的规范。只有理解数据库的设计范式,才能设计出高效率、优雅的数据库,否则可能会设计出错误的数据库.
目前,主要有六种范式:第一范式、第二范式、第三范式、BC范式、第四范式和第五范式。满足最低要求的叫第一范式,简称1NF。在第一范式基础上进一步满足一些要求的为第二范式,简称2NF。其余依此类推。
想学工作流怎么入手
atongyeye
jbpm
工作流在工作中变得越来越重要,很多朋友想学工作流却不知如何入手。 很多朋友习惯性的这看一点,那了解一点,既不系统,也容易半途而废。好比学武功,最好的办法是有一本武功秘籍。研究明白,则犹如打通任督二脉。
系统学习工作流,很重要的一本书《JBPM工作流开发指南》。
本人苦苦学习两个月,基本上可以解决大部分流程问题。整理一下学习思路,有兴趣的朋友可以参考下。
1 首先要
Context和SQLiteOpenHelper创建数据库
百合不是茶
android Context创建数据库
一直以为安卓数据库的创建就是使用SQLiteOpenHelper创建,但是最近在android的一本书上看到了Context也可以创建数据库,下面我们一起分析这两种方式创建数据库的方式和区别,重点在SQLiteOpenHelper
一:SQLiteOpenHelper创建数据库:
1,SQLi
浅谈group by和distinct
bijian1013
oracle 数据库 group by distinct
group by和distinct只了去重意义一样,但是group by应用范围更广泛些,如分组汇总或者从聚合函数里筛选数据等。
譬如:统计每id数并且只显示数大于3
select id ,count(id) from ta
vi opertion
征客丶
mac opration vi
进入 command mode (命令行模式)
按 esc 键
再按 shift + 冒号
注:以下命令中 带 $ 【在命令行模式下进行】,不带 $ 【在非命令行模式下进行】
一、文件操作
1.1、强制退出不保存
$ q!
1.2、保存
$ w
1.3、保存并退出
$ wq
1.4、刷新或重新加载已打开的文件
$ e
二、光标移动
2.1、跳到指定行
数字
【Spark十四】深入Spark RDD第三部分RDD基本API
bit1129
spark
对于K/V类型的RDD,如下操作是什么含义?
val rdd = sc.parallelize(List(("A",3),("C",6),("A",1),("B",5))
rdd.reduceByKey(_+_).collect
reduceByKey在这里的操作,是把
java类加载机制
BlueSkator
java 虚拟机
java类加载机制
1.java类加载器的树状结构
引导类加载器
^
|
扩展类加载器
^
|
系统类加载器
java使用代理模式来完成类加载,java的类加载器也有类似于继承的关系,引导类是最顶层的加载器,它是所有类的根加载器,它负责加载java核心库。当一个类加载器接到装载类到虚拟机的请求时,通常会代理给父类加载器,若已经是根加载器了,就自己完成加载。
虚拟机区分一个Cla
动态添加文本框
BreakingBad
文本框
<script> var num=1; function AddInput() { var str=""; str+="<input 
读《研磨设计模式》-代码笔记-单例模式
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
public class Singleton {
}
/*
* 懒汉模式。注意,getInstance如果在多线程环境中调用,需要加上synchronized,否则存在线程不安全问题
*/
class LazySingleton
iOS应用打包发布常见问题
chenhbc
ios iOS发布 iOS上传 iOS打包
这个月公司安排我一个人做iOS客户端开发,由于急着用,我先发布一个版本,由于第一次发布iOS应用,期间出了不少问题,记录于此。
1、使用Application Loader 发布时报错:Communication error.please use diagnostic mode to check connectivity.you need to have outbound acc
工作流复杂拓扑结构处理新思路
comsci
设计模式 工作 算法 企业应用 OO
我们走的设计路线和国外的产品不太一样,不一样在哪里呢? 国外的流程的设计思路是通过事先定义一整套规则(类似XPDL)来约束和控制流程图的复杂度(我对国外的产品了解不够多,仅仅是在有限的了解程度上面提出这样的看法),从而避免在流程引擎中处理这些复杂的图的问题,而我们却没有通过事先定义这样的复杂的规则来约束和降低用户自定义流程图的灵活性,这样一来,在引擎和流程流转控制这一个层面就会遇到很
oracle 11g新特性Flashback data archive
daizj
oracle
1. 什么是flashback data archive
Flashback data archive是oracle 11g中引入的一个新特性。Flashback archive是一个新的数据库对象,用于存储一个或多表的历史数据。Flashback archive是一个逻辑对象,概念上类似于表空间。实际上flashback archive可以看作是存储一个或多个表的所有事务变化的逻辑空间。
多叉树:2-3-4树
dieslrae
树
平衡树多叉树,每个节点最多有4个子节点和3个数据项,2,3,4的含义是指一个节点可能含有的子节点的个数,效率比红黑树稍差.一般不允许出现重复关键字值.2-3-4树有以下特征:
1、有一个数据项的节点总是有2个子节点(称为2-节点)
2、有两个数据项的节点总是有3个子节点(称为3-节
C语言学习七动态分配 malloc的使用
dcj3sjt126com
c language malloc
/*
2013年3月15日15:16:24
malloc 就memory(内存) allocate(分配)的缩写
本程序没有实际含义,只是理解使用
*/
# include <stdio.h>
# include <malloc.h>
int main(void)
{
int i = 5; //分配了4个字节 静态分配
int * p
Objective-C编码规范[译]
dcj3sjt126com
代码规范
原文链接 : The official raywenderlich.com Objective-C style guide
原文作者 : raywenderlich.com Team
译文出自 : raywenderlich.com Objective-C编码规范
译者 : Sam Lau
0.性能优化-目录
frank1234
性能优化
从今天开始笔者陆续发表一些性能测试相关的文章,主要是对自己前段时间学习的总结,由于水平有限,性能测试领域很深,本人理解的也比较浅,欢迎各位大咖批评指正。
主要内容包括:
一、性能测试指标
吞吐量、TPS、响应时间、负载、可扩展性、PV、思考时间
http://frank1234.iteye.com/blog/2180305
二、性能测试策略
生产环境相同 基准测试 预热等
htt
Java父类取得子类传递的泛型参数Class类型
happyqing
java 泛型 父类 子类 Class
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import org.junit.Test;
abstract class BaseDao<T> {
public void getType() {
//Class<E> clazz =
跟我学SpringMVC目录汇总贴、PDF下载、源码下载
jinnianshilongnian
springMVC
----广告--------------------------------------------------------------
网站核心商详页开发
掌握Java技术,掌握并发/异步工具使用,熟悉spring、ibatis框架;
掌握数据库技术,表设计和索引优化,分库分表/读写分离;
了解缓存技术,熟练使用如Redis/Memcached等主流技术;
了解Ngin
the HTTP rewrite module requires the PCRE library
流浪鱼
rewrite
./configure: error: the HTTP rewrite module requires the PCRE library.
模块依赖性Nginx需要依赖下面3个包
1. gzip 模块需要 zlib 库 ( 下载: http://www.zlib.net/ )
2. rewrite 模块需要 pcre 库 ( 下载: http://www.pcre.org/ )
3. s
第12章 Ajax(中)
onestopweb
Ajax
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/
Optimize query with Query Stripping in Web Intelligence
blueoxygen
BO
http://wiki.sdn.sap.com/wiki/display/BOBJ/Optimize+query+with+Query+Stripping+in+Web+Intelligence
and a very straightfoward video
http://www.sdn.sap.com/irj/scn/events?rid=/library/uuid/40ec3a0c-936
Java开发者写SQL时常犯的10个错误
tomcat_oracle
java sql
1、不用PreparedStatements 有意思的是,在JDBC出现了许多年后的今天,这个错误依然出现在博客、论坛和邮件列表中,即便要记住和理解它是一件很简单的事。开发者不使用PreparedStatements的原因可能有如下几个: 他们对PreparedStatements不了解 他们认为使用PreparedStatements太慢了 他们认为写Prepar
世纪互联与结盟有感
阿尔萨斯
10月10日,世纪互联与(Foxcon)签约成立合资公司,有感。
全球电子制造业巨头(全球500强企业)与世纪互联共同看好IDC、云计算等业务在中国的增长空间,双方迅速果断出手,在资本层面上达成合作,此举体现了全球电子制造业巨头对世纪互联IDC业务的欣赏与信任,另一方面反映出世纪互联目前良好的运营状况与广阔的发展前景。
众所周知,精于电子产品制造(世界第一),对于世纪互联而言,能够与结盟