var setting = {
time: 8E3
, token: ''
, review: 0
, queue: 1
, video: 1
, work: 1
, audio: 1
, book: 1
, docs: 1
, jump: 1
, read: '65'
, face: 0
, total: 0
, line: '公网1'
, http: '标清'
, vol: '0'
, rate: '1'
, auto : 0
, none: 0
, scale: 0
, course: 0
, lock: 1
, school: '账号为手机号可以不修改此参数'
, username: ''
, password: ''
} ,
_self = unsafeWindow,
url = location. pathname,
top = _self;
if ( url != '/studyApp/studying' && top != _self. top) document. domain = location. host. replace ( / . + ? \. / , '' ) ;
try {
while ( top != _self. top) {
top = top. parent. document ? top. parent : _self. top;
if ( top. location. pathname == '/mycourse/studentstudy' ) break ;
}
} catch ( err) {
top = _self;
}
var $ = _self. jQuery || top. jQuery,
parent = _self == top ? self : _self. parent,
Ext = _self. Ext || parent. Ext || { } ,
UE = _self. UE,
vjs = _self. videojs;
String. prototype. toCDB = function ( ) {
return this . replace ( / \s/ g, '' ) . replace ( / [ \uff01- \uff5e] / g, function ( str) {
return String. fromCharCode ( str. charCodeAt ( 0 ) - 65248 ) ;
} ) . replace ( / [ “”] / g, '"' ) . replace ( / [ ‘’] / g, "'" ) . replace ( / 。/ g, '.' ) ;
} ;
setting. normal = '' ;
setting. job = [ ':not(*)' ] ;
setting. video && setting. job. push ( 'iframe[src*="/video/index.html"]' ) ;
setting. work && setting. job. push ( 'iframe[src*="/work/index.html"]' ) ;
setting. audio && setting. job. push ( 'iframe[src*="/audio/index.html"]' ) ;
setting. book && setting. job. push ( 'iframe[src*="/innerbook/index.html"]' ) ;
setting. docs && setting. job. push ( 'iframe[src*="/ppt/index.html"]' , 'iframe[src*="/pdf/index.html"]' ) ;
setting. tip = ! setting. queue || top != _self && jobSort ( $ || Ext. query) ;
if ( url == '/mycourse/studentstudy' ) {
_self. checkMobileBrowerLearn = $. noop;
var classId = location. search. match ( / cla[ zs] { 2 } id= ( \d+ ) / i) [ 1 ] || 0 ,
courseId = _self. courseId || location. search. match ( / courseId= ( \d+ ) / i) [ 1 ] || 0 ;
setting. lock || $( '#coursetree' ) . on ( 'click' , '[onclick*=void], [href*=void]' , function ( ) {
_self. getTeacherAjax ( courseId, classId, $( this ) . parent ( ) . attr ( 'id' ) . slice ( 3 ) ) ;
} ) ;
} else if ( url == '/ananas/modules/video/index.html' && setting. video) {
if ( setting. review) _self. greenligth = Ext. emptyFn;
checkPlayer ( _self. supportH5Video ( ) ) ;
} else if ( url == '/work/doHomeWorkNew' || url == '/api/work' || url == '/work/addStudentWorkNewWeb' ) {
if ( ! UE) {
var len = ( $ || Ext. query || Array) ( 'font:contains(未登录)' , document) . length;
setTimeout ( len == 1 ? top. location. reload : parent. greenligth, setting. time) ;
} else if ( setting. work) {
setTimeout ( relieveLimit, 0 ) ;
beforeFind ( ) ;
}
} else if ( url == '/ananas/modules/audio/index.html' && setting. audio) {
if ( setting. review) _self. greenligth = Ext. emptyFn;
_self. videojs = hookAudio;
hookAudio. xhr = vjs. xhr;
} else if ( url == '/ananas/modules/innerbook/index.html' && setting. book && setting. tip) {
setTimeout ( function ( ) {
_self. setting ? _self. top. onchangepage ( _self. getFrameAttr ( 'end' ) ) : _self. greenligth ( ) ;
} , setting. time) ;
} else if ( url. match ( / ^ \/ ananas\/ modules\/ ( ppt| pdf) \/ index\. html$/ ) && setting. docs && setting. tip) {
setTimeout ( function ( ) {
_self. setting ? _self. finishJob ( ) : _self. greenligth ( ) ;
} , setting. time) ;
frameElement. setAttribute ( 'download' , 1 ) ;
} else if ( url == '/knowledge/cards' ) {
$ && checkToNext ( ) ;
} else if ( url. match ( / ^ \/ ( course| zt) \/ \d+ \. html$/ ) ) {
setTimeout ( function ( ) {
+ setting. read && _self. sendLogs && $( '.course_section:eq(0) .chapterText' ) . click ( ) ;
} , setting. time) ;
} else if ( url == '/ztnodedetailcontroller/visitnodedetail' ) {
setting. read * = 60 / $( '.course_section' ) . length;
setting. read && _self. sendLogs && autoRead ( ) ;
} else if ( url == '/mycourse/studentcourse' ) {
var gv = location. search. match ( / d= \d+ & / g) ;
setting. total && $( '' , {
href: '/moocAnalysis/chapterStatisticByUser?classI' + gv[ 1 ] + 'courseI' + gv[ 0 ] + 'userId=' + _self. getCookie ( '_uid' ) + '&ut=s' ,
target: '_blank' ,
title: '点击查看章节统计' ,
style: 'margin: 0 25px;' ,
html: '本课程共' + $( '.icon' ) . length + '节,剩余' + $( 'em:not(.openlock)' ) . length + '节未完成'
} ) . appendTo ( '.zt_logo' ) . parent ( ) . width ( 'auto' ) ;
} else if ( url. match ( / ^ \/ visit\/ ( courses| interaction) $/ ) ) {
setting. face && $( '.zmodel' ) . on ( 'click' , '[onclick^=openFaceTip]' , DisplayURL) ;
} else if ( location. host. match ( / ^ passport2/ ) ) {
setting. username && getSchoolId ( ) ;
} else if ( location. hostname == 'i.mooc.chaoxing.com' ) {
_self. layui. use ( 'layer' , function ( ) {
this . layer. open ( { content: '拖动进度条、倍速播放、秒过会导致不良记录!题库在慢慢补充,搜不到的题目系统会在次日进行自动补充' , title: '超星网课助手提示' , btn: '我已知悉' , offset: 't' , closeBtn: 0 } ) ;
} ) ;
} else if ( url == '/widget/pcvote/goStudentVotePage' ) {
$( ':checked' ) . click ( ) ;
$( '.StudentTimu' ) . each ( function ( index) {
var ans = _self. questionlist[ index] . answer;
$( ':radio, :checkbox' , this ) . each ( function ( num) {
ans[ num] . isanswer && this . click ( ) ;
} ) ;
$( ':text' , this ) . val ( function ( num) {
return $( ans[ num] . content) . text ( ) . trim ( ) ;
} ) ;
} ) ;
} else if ( url == '/work/selectWorkQuestionYiPiYue' ) {
submitAnswer ( getIframe ( ) . parent ( ) , $. extend ( true , [ ] , parent. _data) ) ;
}
function getIframe ( tip, win, job) {
if ( ! $) return Ext. get ( frameElement || [ ] ) . parent ( ) . child ( '.ans-job-icon' ) || Ext. get ( [ ] ) ;
do {
win = win ? win. parent : _self;
job = $( win. frameElement) . prevAll ( '.ans-job-icon' ) ;
} while ( ! job. length && win. parent. frameElement) ;
return tip ? win : job;
}
function jobSort ( $) {
var fn = $. fn ? [ getIframe ( 1 ) , 'length' ] : [ self, 'dom' ] ,
sel = setting. job. join ( ', :not(.ans-job-finished) > .ans-job-icon' + setting. normal + ' ~ ' ) ;
if ( $( sel, fn[ 0 ] . parent. document) [ 0 ] == fn[ 0 ] . frameElement) return true ;
if ( ! getIframe ( ) [ fn[ 1 ] ] || getIframe ( ) . parent ( ) . is ( '.ans-job-finished' ) ) return null;
setInterval ( function ( ) {
$( sel, fn[ 0 ] . parent. document) [ 0 ] == fn[ 0 ] . frameElement && fn[ 0 ] . location. reload ( ) ;
} , setting. time) ;
}
function checkPlayer ( tip) {
_self. videojs = hookVideo;
hookVideo. xhr = vjs. xhr;
Ext. isSogou = Ext. isIos = Ext. isAndroid = false ;
var data = Ext. decode ( _self. config ( 'data' ) ) || { } ;
delete data. danmaku;
data. doublespeed = 1 ;
frameElement. setAttribute ( 'data' , Ext. encode ( data) ) ;
if ( tip) return ;
_self. supportH5Video = function ( ) { return true ; } ;
alert ( '此浏览器不支持html5播放器,请更换浏览器' ) ;
}
function hookVideo ( ) {
_self. alert = console. log;
var config = arguments[ 1 ] ,
line = Ext. Array. filter ( Ext. Array. map ( config. playlines, function ( value, index) {
return value. label == setting. line && index;
} ) , function ( value) {
return Ext. isNumber ( value) ;
} ) [ 0 ] || 0 ,
http = Ext. Array. filter ( config. sources, function ( value) {
return value. label == setting. http;
} ) [ 0 ] ;
config. playlines. unshift ( config. playlines[ line] ) ;
config. playlines. splice ( line + 1 , 1 ) ;
config. plugins. videoJsResolutionSwitcher. default = http ? http. res : 360 ;
config. plugins. studyControl. enableSwitchWindow = 1 ;
config. plugins. timelineObjects. url = '/richvideo/initdatawithviewer?' ;
config. plugins. seekBarControl. enableFastForward = 1 ;
if ( ! setting. queue) delete config. plugins. studyControl;
var player = vjs. apply ( this , arguments) ,
a = '+ _self. config ( 'objectid' ) + '" target="_blank">' ,
img = ' ' ;
player. volume ( Math. round ( setting. vol) / 100 || 0 ) ;
Ext. get ( player. controlBar. addChild ( 'Button' ) . el_) . setHTML ( a + img + '' ) . dom. title = '下载视频' ;
player. on ( 'loadstart' , function ( ) {
setting. tip && this . play ( ) . catch ( Ext. emptyFn) ;
this . playbackRate ( setting. rate > 16 || setting. rate < 0.0625 ? 1 : setting. rate) ;
} ) ;
player. one ( [ 'loadedmetadata' , 'firstplay' ] , function ( ) {
setting. two = setting. rate == = '0' && setting. two < 1 ;
setting. two && config. plugins. seekBarControl. sendLog ( this . children_[ 0 ] , 'ended' , Math. floor ( this . cache_. duration) ) ;
} ) ;
player. on ( 'ended' , function ( ) {
Ext. fly ( frameElement) . parent ( ) . addCls ( 'ans-job-finished' ) ;
} ) ;
return player;
}
function hookAudio ( ) {
_self. alert = console. log;
var config = arguments[ 1 ] ;
config. plugins. studyControl. enableSwitchWindow = 1 ;
config. plugins. seekBarControl. enableFastForward = 1 ;
if ( ! setting. queue) delete config. plugins. studyControl;
var player = vjs. apply ( this , arguments) ,
a = '+ _self. config ( 'objectid' ) + '" target="_blank">' ,
img = ' ' ;
player. volume ( Math. round ( setting. vol) / 100 || 0 ) ;
player. playbackRate ( setting. rate > 16 || setting. rate < 0.0625 ? 1 : setting. rate) ;
Ext. get ( player. controlBar. addChild ( 'Button' ) . el_) . setHTML ( a + img + '' ) . dom. title = '下载音频' ;
player. on ( 'loadeddata' , function ( ) {
setting. tip && this . play ( ) . catch ( Ext. emptyFn) ;
} ) ;
player. one ( 'firstplay' , function ( ) {
setting. rate == = '0' && config. plugins. seekBarControl. sendLog ( this . children_[ 0 ] , 'ended' , Math. floor ( this . cache_. duration) ) ;
} ) ;
player. on ( 'ended' , function ( ) {
Ext. fly ( frameElement) . parent ( ) . addCls ( 'ans-job-finished' ) ;
} ) ;
return player;
}
function relieveLimit ( ) {
if ( setting. scale) _self. UEDITOR_CONFIG. scaleEnabled = false ;
$. each ( UE. instants, function ( ) {
var key = this . key;
this . ready ( function ( ) {
this . destroy ( ) ;
UE. getEditor ( key) ;
} ) ;
} ) ;
}
function beforeFind ( ) {
setting. regl = parent. greenligth || $. noop;
if ( $. type ( parent. _data) == 'array' ) return setting. regl ( ) ;
setting. div = $(
''
+
' ' +
'正在搜索答案...
' +
'暂停答题 ' +
'' + ( setting
. auto ? '取消本次自动提交' : '开启本次自动提交' ) + '' +
'重新查询 ' +
'折叠面板 ' +
''
+
'' +
'' +
'' +
' 题号 ' +
' 题目(点击可复制) ' +
' 答案(点击可复制) ' +
' ' +
' ' +
'' +
'' +
' 答案提示框 已折叠 ' +
' ' +
' ' +
'' +
'' +
' ' +
' ' +
' ' +
'
' +
' ' +
' '
) . appendTo ( 'body' ) . on ( 'click' , 'button, td' , function ( ) {
var len = $( this ) . prevAll ( 'button' ) . length;
if ( this . nodeName == 'TD' ) {
$( this ) . prev ( ) . length && GM_setClipboard ( $( this ) . text ( ) ) ;
} else if ( ! $( this ) . siblings ( ) . length) {
$( this ) . parent ( ) . text ( '正在搜索答案...' ) ;
setting. num++ ;
} else if ( len == = 0 ) {
if ( setting. loop) {
clearInterval ( setting. loop) ;
delete setting. loop;
len = [ '已暂停搜索' , '继续答题' ] ;
} else {
setting. loop = setInterval ( findAnswer, setting. time) ;
len = [ '正在搜索答案...' , '暂停答题' ] ;
}
setting. div. children ( 'div:eq(0)' ) . html ( function ( ) {
return $( this ) . data ( 'html' ) || len[ 0 ] ;
} ) . removeData ( 'html' ) ;
$( this ) . html ( len[ 1 ] ) ;
} else if ( len == 1 ) {
setting. auto = ! setting. auto ;
$( this ) . html ( setting. auto ? '取消本次自动提交' : '开启本次自动提交' ) ;
} else if ( len == 2 ) {
parent. location. reload ( ) ;
} else if ( len == 3 ) {
setting. div. find ( 'tbody, tfoot' ) . toggle ( ) ;
}
} ) . find ( 'table, td, th' ) . css ( 'border' , '1px solid' ) . end ( ) ;
setting. lose = setting. num = 0 ;
setting. data = parent. _data = [ ] ;
setting. over = '跳过此题 ' ;
setting. curs = $( 'script:contains(courseName)' , top. document) . text ( ) . match ( / courseName: \'(.+?)\'|$/)[1] || $(' h1').text().trim() || ' 无';
setting. loop = setInterval ( findAnswer, setting. time) ;
var tip = ( { undefined: '任务点排队中' , null: '等待切换中' } ) [ setting. tip] ;
tip && setting. div. children ( 'div:eq(0)' ) . data ( 'html' , tip) . siblings ( 'button:eq(0)' ) . click ( ) ;
}
function findAnswer ( ) {
if ( setting. num >= $( '.TiMu' ) . length) {
var arr = setting. lose ? [ '共有 ' + setting. lose + ' 道题目待完善(已深色标注)' , saveThis] : [ '答题已完成' , submitThis] ;
setting. div. children ( 'div:eq(0)' ) . data ( 'html' , arr[ 0 ] ) . siblings ( 'button:eq(0)' ) . hide ( ) . click ( ) ;
return setTimeout ( arr[ 1 ] , setting. time) ;
}
var $TiMu = $( '.TiMu' ) . eq ( setting. num) ,
question = filterImg ( $TiMu. find ( '.Zy_TItle:eq(0) .clearfix' ) ) . replace ( / ^ 【. * ? 】\s* / , '' ) . replace ( / \s* (\d+ \. \d+ 分)$/ , '' ) . replace ( / [ ( ] \s* [ ) ] 。$/ , '' ) . replace ( / (\s* )。$/ , '' ) . replace ( / [ ( ] \s* [ ) ] $/ , '' ) . replace ( / (\s* )$/ , '' ) . replace ( / 。$/ , '' ) ,
type = $TiMu. find ( 'input[name^=answertype]:eq(0)' ) . val ( ) || '-1' ;
GM_xmlhttpRequest ( {
method: 'POST' ,
url: 'http://129.204.175.209/cha_xin.php' ,
headers: {
'Content-type' : 'application/x-www-form-urlencoded'
} ,
data: 'content=' + encodeURIComponent ( question) ,
timeout: setting. time,
onload: function ( xhr) {
if ( ! setting. loop) {
} else if ( xhr. status == 200 ) {
var obj = $. parseJSON ( xhr. responseText. replace ( / ^ 操作数据失败!/ , '' ) ) || { } ;
if ( obj. code == 1 ) {
setting. div. children ( 'div:eq(0)' ) . text ( '正在搜索答案...' ) ;
var td = ' ,
answer = String ( obj. answer) . replace ( / & / g, '&' ) . replace ( / < ( ? ! img) / g, '<' ) ;
obj. answer = / ^ http/ . test ( answer) ? ' + obj. answer + '">' : obj. answer;
$(
'' +
td + ' text-align: center;">' + $TiMu. find ( '.Zy_TItle:eq(0) i' ) . text ( ) . trim ( ) + '' +
td + '" title="点击可复制">' + ( question. match ( ') ? question : question. replace ( / & / g, '&' ) . replace ( / < / g, '<' ) ) + '' +
td + '" title="点击可复制">' + ( / ^ http/ . test ( answer) ? obj. answer : '' ) + answer + '' +
' '
) . appendTo ( setting. div. find ( 'tbody' ) ) . css ( 'background-color' , fillAnswer ( $TiMu. find ( 'ul:eq(0)' ) . find ( 'li' ) , obj, type) ? '' : 'rgba(0, 150, 136, 0.6)' ) ;
setting. data[ setting. num++ ] = {
code: obj. code > 0 ? 1 : 0 ,
question: question,
option: obj. answer,
type: Number ( type)
} ;
} else {
setting. div. children ( 'div:eq(0)' ) . html ( setting. over + obj. answer || setting. over + '服务器繁忙,正在重试...' ) ;
}
setting. div. children ( 'span' ) . html ( obj. msg || '' ) ;
} else if ( xhr. status == 403 ) {
var html = xhr. responseText. indexOf ( '{' ) ? '请求过于频繁,建议稍后再试' : $. parseJSON ( xhr. responseText) . data;
setting. div. children ( 'div:eq(0)' ) . data ( 'html' , html) . siblings ( 'button:eq(0)' ) . click ( ) ;
} else {
setting. div. children ( 'div:eq(0)' ) . html ( '您的查询频率过快,已触发服务器防御,明天再来试试吧...' ) ;
}
} ,
ontimeout: function ( ) {
setting. loop && setting. div. children ( 'div:eq(0)' ) . html ( setting. over + '服务器超时,正在重试...' ) ;
}
} ) ;
}
function fillAnswer ( $li, obj, type) {
var $input = $li. find ( ':radio, :checkbox' ) ,
str = String ( obj. answer) . toCDB ( ) || new Date ( ) . toString ( ) ,
data = str. split ( / #| \x01| \| / ) ,
opt = obj. opt || str,
state = setting. lose;
obj. code > 0 && $input. each ( function ( index) {
if ( this . value == 'true' ) {
data. join ( ) . match ( / ( ^ | , ) ( 正确| 是| 对| √| T| ri) ( , | $) / ) && this . click ( ) ;
} else if ( this . value == 'false' ) {
data. join ( ) . match ( / ( ^ | , ) ( 错误| 否| 错| ×| F| wr) ( , | $) / ) && this . click ( ) ;
} else {
var tip = filterImg ( $li. eq ( index) . find ( '.after' ) ) . toCDB ( ) || new Date ( ) . toString ( ) ;
Boolean ( $. inArray ( tip, data) + 1 || ( type == '1' && str. indexOf ( tip) + 1 ) ) == this . checked || this . click ( ) ;
}
} ) . each ( function ( ) {
if ( ! / ^ A? B? C? D? E? F? G? $/ . test ( opt) ) return false ;
Boolean ( opt. match ( this . value) ) == this . checked || this . click ( ) ;
} ) ;
if ( type. match ( / ^ [ 013 ] $/ ) ) {
$input. is ( ':checked' ) || ( setting. none ? ( $input[ Math. floor ( Math. random ( ) * $input. length) ] || $( ) ) . click ( ) : setting. lose++ ) ;
} else if ( type. match ( / ^ ( 2 | [ 4 - 9 ] | 1 [ 08 ] ) $/ ) ) {
data = String ( obj. answer) . split ( / #| \x01| \| / ) ;
str = $li. end ( ) . find ( 'textarea' ) . each ( function ( index) {
index = ( obj. code > 0 && data[ index] ) || '' ;
UE. getEditor ( this . name) . setContent ( index. trim ( ) ) ;
} ) . length;
( obj. code > 0 && data. length == str) || setting. none || setting. lose++ ;
} else {
setting. none || setting. lose++ ;
}
return state == setting. lose;
}
function saveThis ( ) {
if ( ! setting. auto ) return setTimeout ( saveThis, setting. time) ;
setting. div. children ( 'button:lt(3)' ) . hide ( ) . eq ( 1 ) . click ( ) ;
_self. alert = console. log;
$( '#tempsave' ) . click ( ) ;
setting. regl ( ) ;
}
function submitThis ( ) {
if ( ! setting. auto ) {
} else if ( ! $( '.Btn_blue_1:visible' ) . length) {
setting. div. children ( 'button:lt(3)' ) . hide ( ) . eq ( 1 ) . click ( ) ;
return setting. regl ( ) ;
} else if ( $( '#confirmSubWin:visible' ) . length) {
var btn = $( '#tipContent + * > a' ) . offset ( ) || { top: 0 , left: 0 } ,
mouse = document. createEvent ( 'MouseEvents' ) ;
btn = [ btn. left + Math. ceil ( Math. random ( ) * 46 ) , btn. top + Math. ceil ( Math. random ( ) * 26 ) ] ;
mouse. initMouseEvent ( 'click' , true , true , document. defaultView, 0 , 0 , 0 , btn[ 0 ] , btn[ 1 ] , false , false , false , false , 0 , null) ;
_self. event = $. extend ( true , { } , mouse) ;
delete _self. event. isTrusted;
_self. form1submit ( ) ;
} else {
$( '.Btn_blue_1' ) [ 0 ] . click ( ) ;
}
setTimeout ( submitThis, Math. ceil ( setting. time * Math. random ( ) ) * 2 ) ;
}
function checkToNext ( ) {
var $tip = $( setting. job. join ( ', ' ) , document) . prevAll ( '.ans-job-icon' + setting. normal) ;
setInterval ( function ( ) {
$tip. parent ( ':not(.ans-job-finished)' ) . length || setting. jump && toNext ( ) ;
} , setting. time) ;
}
function toNext ( ) {
var $cur = $( '#cur' + $( '#chapterIdid' ) . val ( ) ) ,
$tip = $( 'span.currents ~ span' ) ,
sel = setting. review ? 'html' : '.blue' ;
if ( ! $cur. has ( sel) . length && $tip. length) return $tip. eq ( 0 ) . click ( ) ;
$tip = $( '.roundpointStudent, .roundpoint' ) . parent ( ) ;
$tip = $tip. slice ( $tip. index ( $cur) + 1 ) . not ( ':has(' + sel + ')' ) ;
$tip. not ( setting. lock ? ':has(.lock)' : 'html' ) . find ( 'span' ) . eq ( 0 ) . click ( ) ;
$tip. length || setting. course && switchCourse ( ) ;
}
function switchCourse ( ) {
GM_xmlhttpRequest ( {
method: 'GET' ,
url: '/visit/courses/study?isAjax=true&fileId=0&debug=' ,
headers: {
'Referer' : location. origin + '/visit/courses' ,
'X-Requested-With' : 'XMLHttpRequest'
} ,
onload: function ( xhr) {
var list = $( 'h3 a[target]' , xhr. responseText) . map ( function ( ) {
return $( this ) . attr ( 'href' ) ;
} ) ,
index = list. map ( function ( index) {
return this . match ( top. courseId) && index;
} ) . filter ( function ( ) {
return $. isNumeric ( this ) ;
} ) [ 0 ] + 1 || 0 ;
setting. course = list[ index] ? goCourse ( list[ index] ) : 0 ;
}
} ) ;
}
function goCourse ( url) {
GM_xmlhttpRequest ( {
method: 'GET' ,
url: url,
onload: function ( xhr) {
$. globalEval ( 'location.href = "' + $( '.articlename a[href]' , xhr. responseText) . attr ( 'href' ) + '";' ) ;
}
} ) ;
}
function autoRead ( ) {
$( 'html, body' ) . animate ( {
scrollTop: $( document) . height ( ) - $( window) . height ( )
} , Math. round ( setting. read) * 1E3 , function ( ) {
$( '.nodeItem.r i' ) . click ( ) ;
} ) . one ( 'click' , '#top' , function ( event) {
$( event. delegateTarget) . stop ( ) ;
} ) ;
}
function DisplayURL ( ) {
_self. WAY. box. hide ( ) ;
var $li = $( this ) . closest ( 'li' ) ;
$. get ( '/visit/goToCourseByFace' , {
courseId: $li. find ( 'input[name=courseId]' ) . val ( ) ,
clazzId: $li. find ( 'input[name=classId]' ) . val ( )
} , function ( data) {
$li. find ( '[onclick^=openFaceTip]' ) . removeAttr ( 'onclick' ) . attr ( {
target: '_blank' ,
href: $( data) . filter ( 'script:last' ) . text ( ) . match ( / n\( "(.+?)" / ) [ 1 ]
} ) ;
alert ( '本课程已临时解除面部识别' ) ;
} , 'html' ) ;
}
function getSchoolId ( ) {
var school = / ^ 1 \d{ 10 } $/ . test ( setting. username) ? '' : setting. school;
if ( ! isNaN ( school) ) return setTimeout ( toLogin, setting. time, school) ;
if ( school == '账号为手机号可以不修改此参数' ) return alert ( '请修改school参数' ) ;
$. getJSON ( '/org/searchUnis?filter=' + encodeURI ( school) + '&product=44' , function ( data) {
if ( ! data. result) return alert ( '学校查询错误' ) ;
var msg = $. grep ( data. froms, function ( value) {
return value. name == school;
} ) [ 0 ] ;
msg ? setTimeout ( toLogin, setting. time, msg. schoolid) : alert ( '学校名称不完整' ) ;
} ) ;
}
function toLogin ( fid) {
GM_xmlhttpRequest ( {
method: 'GET' ,
url: '/api/login?name=' + setting. username + '&pwd=' + setting. password + '&schoolid=' + fid + '&verify=0' ,
onload: function ( xhr) {
var obj = $. parseJSON ( xhr. responseText) || { } ;
obj. result ? location. href = decodeURIComponent ( $( '#ref, #refer_0x001' ) . val ( ) ) : alert ( obj. errorMsg || 'Error' ) ;
}
} ) ;
}
function submitAnswer ( $job, data) {
$job. removeClass ( 'ans-job-finished' ) ;
data = data. length ? $( data) : $( '.TiMu' ) . map ( function ( ) {
var title = filterImg ( $( '.Zy_TItle .clearfix' , this ) ) ;
return {
question: title. replace ( / ^ 【. * ? 】\s* / , '' ) ,
type: ( { 单选题: 0 , 多选题: 1 , 填空题: 2 , 判断题: 3 } ) [ title. match ( / ^ 【( . * ? ) 】| $/ ) [ 1 ] ]
} ;
} ) ;
data = $. grep ( data. map ( function ( index) {
var $TiMu = $( '.TiMu' ) . eq ( index) ;
if ( ! ( $. isPlainObject ( this ) && this . type < 4 && $TiMu. find ( '.fr' ) . length) ) {
return false ;
} else if ( this . type == 2 ) {
var $ans = $TiMu. find ( '.Py_tk, .Py_answer' ) . eq ( 0 ) ;
if ( ! $TiMu. find ( '.cuo' ) . length && this . code) {
return false ;
} else if ( ! $ans. find ( '.cuo' ) . length) {
this . option = $ans. find ( '.clearfix' ) . map ( function ( ) {
return $( this ) . text ( ) . trim ( ) ;
} ) . get ( ) . join ( '#' ) || '无' ;
} else if ( this . code) {
this . code = - 1 ;
} else {
return false ;
}
} else if ( this . type == 3 ) {
var ans = $TiMu. find ( '.font20:last' ) . text ( ) ;
if ( $TiMu. find ( '.cuo' ) . length) {
this . option = ( { '√' : '错误' , '×' : '正确' } ) [ ans] || '无' ;
} else if ( ! this . code) {
this . option = ( { '√' : '正确' , '×' : '错误' } ) [ ans] || '无' ;
} else {
return false ;
}
} else {
var text = $TiMu. find ( '.Py_answer > span:eq(0)' ) . text ( ) ;
if ( $TiMu. find ( '.dui' ) . length && this . code && ! / ^ A? B? C? D? E? F? G? $/ . test ( this . option) ) {
return false ;
} else if ( $TiMu. find ( '.dui' ) . length || text. match ( '正确答案' ) ) {
text = text. match ( / [ A- G] / gi) || [ ] ;
this . option = $. map ( text, function ( value) {
return filterImg ( $TiMu. find ( '.fl:contains(' + value + ') + a' ) ) ;
} ) . join ( '#' ) || '无' ;
this . key = text. join ( '' ) ;
} else if ( this . code) {
this . code = - 1 ;
} else {
return false ;
}
}
return this ;
} ) , function ( value) {
return value && value. option != '无' ;
} ) ;
setting. curs = $( 'script:contains(courseName)' , top. document) . text ( ) . match ( / courseName: \'(.+?)\'|$/)[1] || $(' h1').text().trim() || ' 无';
data. length && GM_xmlhttpRequest ( {
method: 'POST' ,
url: 'http://mooc.forestpolice.org/upload/cx/' + ( setting. token || 0 ) + '/?workRelationId=' + $( '#workId' ) . val ( ) ,
headers: {
'Content-type' : 'application/x-www-form-urlencoded'
} ,
data: 'course=' + encodeURIComponent ( setting. curs) + '&data=' + encodeURIComponent ( ( Ext. encode || JSON. stringify) ( data) ) + '&id=' + $( '#jobid' ) . val ( ) . slice ( 5 )
} ) ;
$job. addClass ( 'ans-job-finished' ) ;
}
function filterImg ( dom) {
return $( dom) . clone ( ) . find ( 'img[src]' ) . replaceWith ( function ( ) {
return $( '
' ) . text ( ' + $( this ) . attr ( 'src' ) + '">' ) ;
} ) . end ( ) . find ( 'iframe[src]' ) . replaceWith ( function ( ) {
return $( '
' ) . text ( ' $( this ) . attr ( 'src' ) + '">' ) ;
} ) . end ( ) . text ( ) . trim ( ) ;
}
你可能感兴趣的:(AL:言谈技术圈,程序人生,恰饭,经验分享)
【2021-01-24】人生十三信条
wc的一些事一些情
23:59一个人应当有良好的礼貌来突出他特有的天性。人人都喜欢出人头地,但这不应当引起别人的讨厌。——歌德1、节制:食不可过饱,饮不得过量。2、缄默:避免无谓闲扯,言谈必须对人有益。3、秩序:生活物品要放置有序,工作时间要合理安排。4、决心:要做的事就下决心去做,决心做的事一定要按时完成。5、节俭:不奢侈浪费,任何花费都要做到有益,不论是于人,还是于己。6、勤勉:珍惜每一刻时间,去除一切不必要之举
浅谈大模型 SFT 的实践落地:十问十答
大模型与自然语言处理
NLP与大模型 人工智能 大数据 深度学习 多模态 大模型 SFT
节前,我们星球组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学.针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。汇总合集:《大模型面试宝典》(2024版)发布!今天给大家带来一篇大模型SFT的实践落地经验总结SFT现在往往被称为“低端”工作,但它与业务紧密相连。相较于难以实施且多数公司没资源训
少年游
梅落香如故
图片发自App图片发自App图片发自App图片发自App少年游(定格)词林二部征尘滚滚逐沙场,问鼎至長江。千帆蔽日,豪情万丈,壮志捉周郎。纶巾羽扇言谈笑,纵火灭连帮。百万成灰,曹公急遁,三国史添芳。
购买莆田鞋有哪些套路和陷阱?怎样避免踩坑
芒果不芒
购买莆田鞋有哪些套路和陷阱?怎样避免踩坑小白在购买莆田鞋时有很多不懂的问题,而且莆田鞋商家卖的货又良莠不齐,为了避免踩坑今天我就把经验分享给大家,记住最重要的一点就是找到一个比较实在的良心商家购买,因为真正做生意的诚信商家是不会为了一点蝇头小利去坑人的,假如找到一个无良商家,它变着法的想着坑你,你怎样都会被骗的,俗话说得好:不怕贼偷就怕贼惦记!今天我顺便给大家推荐三家专门做高品质的莆田鞋商家也:k
API 接口应该如何设计?如何保证安全?如何签名?如何防重?
「已注销」
安全 SpringBoot 安全 github spring spring boot 后端
说明:在实际的业务中,难免会跟第三方系统进行数据的交互与传递,那么如何保证数据在传输过程中的安全呢(防窃取)?除了https的协议之外,能不能加上通用的一套算法以及规范来保证传输的安全性呢?下面我们就来讨论下常用的一些API设计的安全方法,可能不一定是最好的,有更牛逼的实现方式,但是这篇是我自己的经验分享.token简介Token:访问令牌accesstoken,用于接口中,用于标识接口调用者的身
第二单元 Linux常用命令及使用
Dovis_911b
1.目录切换命令1.1目录切换命令cdusr/切换到该目录下usr目录cd../切换到上一层目录cd/切换到系统根目录cd~切换到用户主目录2.目录操作命令2.1增加目录命令:mkdir目录名称示例:在根目录/下mkdirtest,就会在根目录/下产生一个test问目录need-to-insert-img2.2查看目录命令:ls[-al]父目录注意:ls-l可以缩写成ll2.3寻找目录命令:fin
浅谈计算机同步和异步调用;线程和进程
深巷卖樱桃
程序人生 改行学it 机器学习 人工智能 c语言
接触计算机不久,在这里用通俗的语言谈谈我对同步和异步的理解。前文说到cpu执行的方式无非就是电子对路径的选择。只要方向选对了,一定会到达终点,也就是屏幕。但是,这就够了吗?人类的欲望是无尽的。我们总是想要更快,更好,更强。在这里,我们希望cpu执行的速度也就是效率更快。怎么办呢?从数量和质量上入手。方法有二:1.增加cpu的数量2.改进cpu执行的路径先来看方法一,这种方法可以让指令同时在不同的设
踏青(一)——与经理同行
myth神话
我们商场每年都有一次春季踏青活动,今年的活动时间定在今天,地点是凤凰山。今天早上,我按约定的时间准时到达约定地点,等待同事一起出游。八点四十,出游的人员到齐,部门领导安排人员配车,我和杨姐安排在一起坐经理的车前往目的地。杨姐不如我大,别人叫她杨姐,我在此也这样称呼她,以表示礼貌;经理是大美女一个,快五十的人了还像三十多岁,有一种让人看不厌的感觉,对下属随和,言谈举止得体有度。这次的安排,正应了柜组
【职场】公开发言的万能公式
蜗牛yimi
职场中,经常需要公开发言,比如个人述职、工作竞聘、经验分享等等。但很多同学会因为怯场、没有做好准备等原因,表现不好,错失了机会。得到公认的职场写作高手罗砚老师说,做好公开发言并不难,这儿有一个万能公式:公开发言=一个挑战+三点方案+一次返场。一个挑战。一开始就要告诉听众,你今天要带着他们解决一个什么问题,让对方带着疑问听你的发言。如果你的发言主题是“2020年北京餐饮行业的经营概况”,可以改为“疫
大规模 K8s 集群管理经验分享 · 上篇
尔达 Erda
数据库 java jenkins
11月23日,Erda与OSCHINA社区联手发起了【高手问答第271期–聊聊大规模K8s集群管理】,目前问答活动已持续一周,由ErdaSRE团队负责人骆冰利为大家解答,以下是本次活动的部分问题整理合集,其他问题也将于近期整理后发布,敬请期待!Q1:K8s上面部署不通的应用对于存储有不同的要求,有的要高吞吐,有的是要低响应。大规模K8s部署的时候是怎么协调这种存储差异的问题?还是说需要根据不同的场
英语心得1
小坤的梦呓
姑且这段学习记录的名字就这么叫吧。现在看了很多学习方面的经验分享,自己也在实践当中。正如贾兄在经验分享中看到的那样,学习英语而不是学习知识。英语是语言,语言是用来说的,既然要说语言,那必然要从听开始。很多原理和道理也不细说了,这个还需要学习很久。我现在要做的就是根据这些经验和自己的感悟去学习,然后加以改进方法,提高学习效率。现在也有给自己定了一个短期的小目标,争取年底或明年初可以考过雅思。至少达到
五款好用的设计软件帮你提升设计水平
办公室的一块砖
大学四年里因为基本没什么课,为了兴趣,在网上浏览了不少大牛的设计作品和经验分享,开始接触设计行业,掌握了一些设计软件,从而转行进入设计行业。今天就根据我的自学经验,和大家一起分享下这也适合新手尝试的设计软件吧!Pixso这是国内有名的软件公司万兴科技筹备了一年多推出的在线设计软件。我个人觉得是非常适合新手的,集原型,设计,交付,协作和资源管理于一体,UI设计功能方面可以说已经比较全面了,具备矢量网
经历了风风雨雨学会了沉默
Qiao木木鱼的一休
我是谁?是被社会贴上标签最垮的一代,是漂在深圳的奋斗小青年,是父亲眼里自己家孩子,不是那个别人家的孩子,是旅行路上风雨兼程的浪子。我喜欢旅行,喜欢一个人旅行,可以在路上遇到最真实的自己。我曾经很宅,只是后来成了现在的样子。但我不讨厌现在自己,反而更喜欢现在的样子,可疾可缓,可闲庭信步。近些年我去过一些城市,遇见过一些人,也碰到过一些事情,大多数在路途中人都是装着一些事情。从言谈举止中都在刻意回避一
【经验分享】虚拟机Ubuntu20.04一招解决无法连接网络问题
Jason Yan
linux系统学习 ubuntu linux
虚拟机Ubuntu20.04一招解决无法连接网络问题网上试了很多方法都没解决无法上网的问题,最后一招解决!!!(简单的网上一堆教程自己找下,此教程适合解决不了的同学)第一步:先关闭虚拟机的ubuntu系统,然后虚拟机—>设置---->网络适配器,选择NAT模式。第二步:编辑—>虚拟网络编辑器-----选择更改设置,允许配置。第三步:还原默认设置打开虚拟机,大功告成!!解决问题的同学留下你的心得,谢
千万级规模高性能、高并发的网络架构经验分享
搬砖养女人
网络 架构 经验分享
主题:INTO100沙龙时间:2015年11月21日下午地点:梦想加联合办公空间分享人:卫向军(毕业于北京邮电大学,现任微博平台架构师,先后在微软、金山云、新浪微博从事技术研发工作,专注于系统架构设计、音视频通讯系统、分布式文件系统和数据挖掘等领域。)架构以及我理解中架构的本质在开始谈我对架构本质的理解之前,先谈谈对今天技术沙龙主题的个人见解,千万级规模的网站感觉数量级是非常大的,对这个数量级我们
《经验分享:Ubuntu 22.04 安装微信》
陈在天box
ubuntu linux 运维
一、引言在Ubuntu22.04系统中,虽然有很多优秀的开源软件可供使用,但对于一些习惯了使用微信进行沟通和办公的用户来说,能够在Ubuntu上安装微信是非常必要的。本文将分享在Ubuntu22.04上安装微信的方法,希望能帮助到有需要的人。二、安装方法方法一:通过Snap安装打开终端。检查Snap是否已经安装,如果没有安装,可以使用以下命令进行安装:sudoaptinstallsnapd安装微信
http.FileServer修改Header
hengshen
定义一个函数包裹Handler,返回HandleFunc,然后通过ResponseWriter修改Header。funcchangeHeaderThenServe(hhttp.Handler)http.HandlerFunc{returnfunc(whttp.ResponseWriter,r*http.Request){//Setsomeheader.w.Header().Add("Keep-Al
开源项目的认识理解
禁默
话题探讨 开源 程序人生
目录开源项目有哪些机遇与挑战?1.开源项目的发展趋势2.开源的经验分享(向大佬请教与上网查询)3.开源项目的挑战开源项目有哪些机遇与挑战?1.开源项目的发展趋势1.持续增长与普及-开源项目将继续增长,特别是在云计算、大数据、人工智能等领域。-开源软件在企业中的应用将更加普及,成为企业IT战略的一部分。2.企业的参与-企业将继续增加对开源项目的投资,通过赞助、捐赠或直接参与开发来推动开源项目的发展。
大数据面试刷题
陈吉俊
学习方法
de的题目解析和讨论区也非常活跃,可以帮助求职者更好地理解题目和解题思路。牛客网(牛客网-找工作神器|笔试题库|面试经验|实习招聘内推,求职就业一站解决_牛客网):牛客网是国内内容超级丰富的IT题库,不仅提供了大量的面试题,还涵盖了笔试题库、面试经验分享、实习招聘内推等多个方面。对于大数据方向的求职者来说,牛客网是一个一站式的学习平台,可以帮助他们系统地提升面试竞争力。超级码客(www.chaoj
阿里云服务器如何购买才更便宜,便宜购买经验分享
阿里云最新优惠和活动汇总
虽然阿里云各种便宜活动中都推出了不少便宜的云服务器,但是有些用户可能觉得活动中没有自己想要购买的云服务器配置,即使有自己想要的配置,有些朋友还想以更加便宜的价格购买阿里云服务器,下面小编分享的目前行之有效的便宜购买阿里云服务器的方法,总共4点经验,以供大家参考。第一,要想便宜购买阿里云服务器,必须先领取阿里云满减优惠券满减优惠券领取地址:阿里云官方活动中心满减优惠券面额:30元、50元、80元。阿
StarRocks Lakehouse 快速入门——Apache Paimon
StarRocks_labs
数据库 大数据 数据分析 数据湖 湖仓一体 Paimon flink
StarRocksLakehouse快速入门指南为您提供了湖仓技术概览,旨在帮助您迅速掌握其核心特性、独特优势和应用场景。本指南将指导您如何高效地利用StarRocks构建解决方案。文章末尾,我们集合了来自阿里云、饿了么、喜马拉雅和同程旅行等行业领导者在StarRocksxPaimonStreamingLakehouse活动中的实战经验分享。通过这些真实案例,您可以更直观地了解如何在实际应用中发挥
本土偶像肖战登意大利杂志《世界中国》,谦谦君子,未来可期,午夜南瓜起诉肖战一案昨日结案
3月14号
首先恭喜肖战,登上了意大利发行的最新一期《世界中国》杂志,杂志评价:“他被众人视为颠覆了以往娱乐圈偶像的固定形象,言谈举止如一泓清泉,具有儒家文化谦谦君子的气质,非港台,不日韩,无欧美,是中国娱乐圈偶像新标准,他是从办公室素人走来的演员插班生,演员肖战,未来可期”,作为一个真正的大陆本土艺人,能走出国门,让世界各地那么多人喜爱和肯定,是我们的骄傲。以前我们所崇拜和迷恋的往往都是欧美,日韩或港台的,
五个为什么分析法:项目负责人的视角
洋葱蚯蚓
比赛经验 个人开发 学习方法 经验分享
五个为什么分析法:项目负责人的视角前言1.**问题识别:深入挖掘问题的根源**2.**系统性思考:构建问题解决框架**3.**团队协作:促进团队成员的参与**4.**持续改进:将问题解决转化为持续改进的机会**5.**经验分享:将五个为什么分析法融入团队文化**结语前言 在当今快节奏和不断变化的工作环境中,项目管理已经成为企业和个人成功的关键。无论是在技术、商业还是非营利组织中,有效的项目管理技
爱是一种错觉
赵不明的书单
有时候,爱是一种错觉你翻阅他的人生履历,追寻着他的足迹,感受着他的喜怒哀乐,并为着他的开心而开心,为着他的忧郁而忧郁。你以为这就是爱了。你读他的文字,欣赏着他的才气,喜欢听他的言谈欢笑,喜欢贴近他的感觉,甚至为着他愿意与你说话,而欣喜异常。你以为这就是爱了。你对自己说你是愿意做他的新娘,愿意与他携手百年,愿意为他置一处温暖的家,让他从此不再漂泊,愿意为他生儿育女共享天伦。你以为这就是爱了。不可否认
一般人
像话读书爻
相中“一般人”这个笔名网名,是在“N年前”。一般人,顾名思义普普通通的老百姓。我们有着普普通通的能力,普普通通的梦想,平平谈谈的生活方式,平平淡淡的言谈举止。平凡的喜怒哀乐,不走极端的急功近利路径。这个时代,越来越多的人追求卓越。开公司、做老板、赚利润、收效益……都在想着大的目标规划奢想荣华富贵。但是,请不要忘记,天下大事莫不成于细小离不开点滴积累。一般人,正是因为“普通”才更显价值——只要你心中
礼仪微分享之“面试礼仪之妆容原则”:
翟夏妍形象礼仪培训师
#言谈举止#“爱美之心人皆有之”,有一部分人表示“面试要化妆”,但也有一部分的人表示“面试化妆要视情况而定”。那么到底要不要化妆呢?怎样化妆才合乎礼仪呢?#教资#笔试考完了,相信大家都顺利地进入到了#教资面试#环节。今天,夏妍老师就来和大家聊一聊,面试时需要注意的妆容原则。其实适当的化妆有助于提升自己精神气质,无形中中也给自己带来了自信,同时,也可以向面试官表明,自己是非常重视这次面试、这次机会的
第66期 | GPTSecurity周报
云起无垠
GPTSecurity AIGC gpt
GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练Transformer(GPT)、人工智能生成内容(AIGC)以及大语言模型(LLM)等安全领域应用的知识。在这里,您可以找到关于GPT/AIGC/LLM最新的研究论文、博客文章、实用的工具和预设指令(Prompts)。现为了更好地知悉近一周的贡献内容,现总结如下。SecurityPapers1.利用高级大语言模型
考研经验分享(仅供参考)
大江小竹
本人本科是双非一本,19年考研很幸运能够一战上岸,顺利考取某211高校。很荣幸有机会分享我的考研经历,考虑到每个人的情况不尽相同,所以接下来我分享的经验都是仅供大家参考,切不可生搬硬套,我只能保证下面这些话都是我的切身感受、亲身经历。众所周知,考研是场持久战。我从大三下学期开学3月份开始真正进入准备考研的学习状态到前不久3月底被正式录取,历时整整一年。这一年中绝大部分时间是在枯燥的学习和无尽的自我
基于Golang的云原生日志采集服务设计与实践
程序员小乐
运维 java 大数据 kubernetes 编程语言
点击上方"编程技术圈"关注,星标或置顶一起成长后台回复“大礼包”有惊喜礼包!每日英文Intheend,it'snottheyearsinyourlifethatcount.It’sthelifeinyouryears.人生到头来,你活了多少岁不算什么,重要的是,你是如何度过这些岁月的。每日掏心话但凡会错过,一定不是最好的。有时候不是不明白,而是明白了也无能为力,于是就保持了沉默。责编:乐乐|来自:
【Leetcode:3174. 清除数字 + 栈】
硕风和炜
LeetCode每日一题打卡 leetcode 算法 java 栈
算法题算法刷题专栏|面试必备算法|面试高频算法越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨作者简介:硕风和炜,CSDN-Java领域优质创作者,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享恭喜你发现一枚宝藏博主,赶快收入囊中吧人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?算法题目录题目链接⛲题目描述求解思路
枚举的构造函数中抛出异常会怎样
bylijinnan
java enum 单例
首先从使用enum实现单例说起。
为什么要用enum来实现单例?
这篇文章(
http://javarevisited.blogspot.sg/2012/07/why-enum-singleton-are-better-in-java.html)阐述了三个理由:
1.enum单例简单、容易,只需几行代码:
public enum Singleton {
INSTANCE;
CMake 教程
aigo
C++
转自:http://xiang.lf.blog.163.com/blog/static/127733322201481114456136/
CMake是一个跨平台的程序构建工具,比如起自己编写Makefile方便很多。
介绍:http://baike.baidu.com/view/1126160.htm
本文件不介绍CMake的基本语法,下面是篇不错的入门教程:
http:
cvc-complex-type.2.3: Element 'beans' cannot have character
Cb123456
spring Webgis
cvc-complex-type.2.3: Element 'beans' cannot have character
Line 33 in XML document from ServletContext resource [/WEB-INF/backend-servlet.xml] is i
jquery实例:随页面滚动条滚动而自动加载内容
120153216
jquery
<script language="javascript">
$(function (){
var i = 4;$(window).bind("scroll", function (event){
//滚动条到网页头部的 高度,兼容ie,ff,chrome
var top = document.documentElement.s
将数据库中的数据转换成dbs文件
何必如此
sql dbs
旗正规则引擎通过数据库配置器(DataBuilder)来管理数据库,无论是Oracle,还是其他主流的数据都支持,操作方式是一样的。旗正规则引擎的数据库配置器是用于编辑数据库结构信息以及管理数据库表数据,并且可以执行SQL 语句,主要功能如下。
1)数据库生成表结构信息:
主要生成数据库配置文件(.conf文
在IBATIS中配置SQL语句的IN方式
357029540
ibatis
在使用IBATIS进行SQL语句配置查询时,我们一定会遇到通过IN查询的地方,在使用IN查询时我们可以有两种方式进行配置参数:String和List。具体使用方式如下:
1.String:定义一个String的参数userIds,把这个参数传入IBATIS的sql配置文件,sql语句就可以这样写:
<select id="getForms" param
Spring3 MVC 笔记(一)
7454103
spring mvc bean REST JSF
自从 MVC 这个概念提出来之后 struts1.X struts2.X jsf 。。。。。
这个view 层的技术一个接一个! 都用过!不敢说哪个绝对的强悍!
要看业务,和整体的设计!
最近公司要求开发个新系统!
Timer与Spring Quartz 定时执行程序
darkranger
spring bean 工作 quartz
有时候需要定时触发某一项任务。其实在jdk1.3,java sdk就通过java.util.Timer提供相应的功能。一个简单的例子说明如何使用,很简单: 1、第一步,我们需要建立一项任务,我们的任务需要继承java.util.TimerTask package com.test; import java.text.SimpleDateFormat; import java.util.Date;
大端小端转换,le32_to_cpu 和cpu_to_le32
aijuans
C语言相关
大端小端转换,le32_to_cpu 和cpu_to_le32 字节序
http://oss.org.cn/kernel-book/ldd3/ch11s04.html
小心不要假设字节序. PC 存储多字节值是低字节为先(小端为先, 因此是小端), 一些高级的平台以另一种方式(大端)
Nginx负载均衡配置实例详解
avords
[导读] 负载均衡是我们大流量网站要做的一个东西,下面我来给大家介绍在Nginx服务器上进行负载均衡配置方法,希望对有需要的同学有所帮助哦。负载均衡先来简单了解一下什么是负载均衡,单从字面上的意思来理解就可以解 负载均衡是我们大流量网站要做的一个东西,下面我来给大家介绍在Nginx服务器上进行负载均衡配置方法,希望对有需要的同学有所帮助哦。
负载均衡
先来简单了解一下什么是负载均衡
乱说的
houxinyou
框架 敏捷开发 软件测试
从很久以前,大家就研究框架,开发方法,软件工程,好多!反正我是搞不明白!
这两天看好多人研究敏捷模型,瀑布模型!也没太搞明白.
不过感觉和程序开发语言差不多,
瀑布就是顺序,敏捷就是循环.
瀑布就是需求、分析、设计、编码、测试一步一步走下来。而敏捷就是按摸块或者说迭代做个循环,第个循环中也一样是需求、分析、设计、编码、测试一步一步走下来。
也可以把软件开发理
欣赏的价值——一个小故事
bijian1013
有效辅导 欣赏 欣赏的价值
第一次参加家长会,幼儿园的老师说:"您的儿子有多动症,在板凳上连三分钟都坐不了,你最好带他去医院看一看。" 回家的路上,儿子问她老师都说了些什么,她鼻子一酸,差点流下泪来。因为全班30位小朋友,惟有他表现最差;惟有对他,老师表现出不屑,然而她还在告诉她的儿子:"老师表扬你了,说宝宝原来在板凳上坐不了一分钟,现在能坐三分钟。其他妈妈都非常羡慕妈妈,因为全班只有宝宝
包冲突问题的解决方法
bingyingao
eclipse maven exclusions 包冲突
包冲突是开发过程中很常见的问题:
其表现有:
1.明明在eclipse中能够索引到某个类,运行时却报出找不到类。
2.明明在eclipse中能够索引到某个类的方法,运行时却报出找不到方法。
3.类及方法都有,以正确编译成了.class文件,在本机跑的好好的,发到测试或者正式环境就
抛如下异常:
java.lang.NoClassDefFoundError: Could not in
【Spark七十五】Spark Streaming整合Flume-NG三之接入log4j
bit1129
Stream
先来一段废话:
实际工作中,业务系统的日志基本上是使用Log4j写入到日志文件中的,问题的关键之处在于业务日志的格式混乱,这给对日志文件中的日志进行统计分析带来了极大的困难,或者说,基本上无法进行分析,每个人写日志的习惯不同,导致日志行的格式五花八门,最后只能通过grep来查找特定的关键词缩小范围,但是在集群环境下,每个机器去grep一遍,分析一遍,这个效率如何可想之二,大好光阴都浪费在这上面了
sudoku solver in Haskell
bookjovi
sudoku haskell
这几天没太多的事做,想着用函数式语言来写点实用的程序,像fib和prime之类的就不想提了(就一行代码的事),写什么程序呢?在网上闲逛时发现sudoku游戏,sudoku十几年前就知道了,学生生涯时也想过用C/Java来实现个智能求解,但到最后往往没写成,主要是用C/Java写的话会很麻烦。
现在写程序,本人总是有一种思维惯性,总是想把程序写的更紧凑,更精致,代码行数最少,所以现
java apache ftpClient
bro_feng
java
最近使用apache的ftpclient插件实现ftp下载,遇见几个问题,做如下总结。
1. 上传阻塞,一连串的上传,其中一个就阻塞了,或是用storeFile上传时返回false。查了点资料,说是FTP有主动模式和被动模式。将传出模式修改为被动模式ftp.enterLocalPassiveMode();然后就好了。
看了网上相关介绍,对主动模式和被动模式区别还是比较的模糊,不太了解被动模
读《研磨设计模式》-代码笔记-工厂方法模式
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
package design.pattern;
/*
* 工厂方法模式:使一个类的实例化延迟到子类
* 某次,我在工作不知不觉中就用到了工厂方法模式(称为模板方法模式更恰当。2012-10-29):
* 有很多不同的产品,它
面试记录语
chenyu19891124
招聘
或许真的在一个平台上成长成什么样,都必须靠自己去努力。有了好的平台让自己展示,就该好好努力。今天是自己单独一次去面试别人,感觉有点小紧张,说话有点打结。在面试完后写面试情况表,下笔真的好难,尤其是要对面试人的情况说明真的好难。
今天面试的是自己同事的同事,现在的这个同事要离职了,介绍了我现在这位同事以前的同事来面试。今天这位求职者面试的是配置管理,期初看了简历觉得应该很适合做配置管理,但是今天面
Fire Workflow 1.0正式版终于发布了
comsci
工作 workflow Google
Fire Workflow 是国内另外一款开源工作流,作者是著名的非也同志,哈哈....
官方网站是 http://www.fireflow.org
经过大家努力,Fire Workflow 1.0正式版终于发布了
正式版主要变化:
1、增加IWorkItem.jumpToEx(...)方法,取消了当前环节和目标环节必须在同一条执行线的限制,使得自由流更加自由
2、增加IT
Python向脚本传参
daizj
python 脚本 传参
如果想对python脚本传参数,python中对应的argc, argv(c语言的命令行参数)是什么呢?
需要模块:sys
参数个数:len(sys.argv)
脚本名: sys.argv[0]
参数1: sys.argv[1]
参数2: sys.argv[
管理用户分组的命令gpasswd
dongwei_6688
passwd
NAME: gpasswd - administer the /etc/group file
SYNOPSIS:
gpasswd group
gpasswd -a user group
gpasswd -d user group
gpasswd -R group
gpasswd -r group
gpasswd [-A user,...] [-M user,...] g
郝斌老师数据结构课程笔记
dcj3sjt126com
数据结构与算法
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
yii2 cgridview加上选择框进行操作
dcj3sjt126com
GridView
页面代码
<?=Html::beginForm(['controller/bulk'],'post');?>
<?=Html::dropDownList('action','',[''=>'Mark selected as: ','c'=>'Confirmed','nc'=>'No Confirmed'],['class'=>'dropdown',])
linux mysql
fypop
linux
enquiry mysql version in centos linux
yum list installed | grep mysql
yum -y remove mysql-libs.x86_64
enquiry mysql version in yum repositoryyum list | grep mysql oryum -y list mysql*
install mysq
Scramble String
hcx2013
String
Given a string s1, we may represent it as a binary tree by partitioning it to two non-empty substrings recursively.
Below is one possible representation of s1 = "great":
跟我学Shiro目录贴
jinnianshilongnian
跟我学shiro
历经三个月左右时间,《跟我学Shiro》系列教程已经完结,暂时没有需要补充的内容,因此生成PDF版供大家下载。最近项目比较紧,没有时间解答一些疑问,暂时无法回复一些问题,很抱歉,不过可以加群(334194438/348194195)一起讨论问题。
----广告-----------------------------------------------------
nginx日志切割并使用flume-ng收集日志
liyonghui160com
nginx的日志文件没有rotate功能。如果你不处理,日志文件将变得越来越大,还好我们可以写一个nginx日志切割脚本来自动切割日志文件。第一步就是重命名日志文件,不用担心重命名后nginx找不到日志文件而丢失日志。在你未重新打开原名字的日志文件前,nginx还是会向你重命名的文件写日志,linux是靠文件描述符而不是文件名定位文件。第二步向nginx主
Oracle死锁解决方法
pda158
oracle
select p.spid,c.object_name,b.session_id,b.oracle_username,b.os_user_name from v$process p,v$session a, v$locked_object b,all_objects c where p.addr=a.paddr and a.process=b.process and c.object_id=b.
java之List排序
shiguanghui
list排序
在Java Collection Framework中定义的List实现有Vector,ArrayList和LinkedList。这些集合提供了对对象组的索引访问。他们提供了元素的添加与删除支持。然而,它们并没有内置的元素排序支持。 你能够使用java.util.Collections类中的sort()方法对List元素进行排序。你既可以给方法传递
servlet单例多线程
utopialxw
单例 多线程 servlet
转自http://www.cnblogs.com/yjhrem/articles/3160864.html
和 http://blog.chinaunix.net/uid-7374279-id-3687149.html
Servlet 单例多线程
Servlet如何处理多个请求访问?Servlet容器默认是采用单实例多线程的方式处理多个请求的:1.当web服务器启动的