flock的是建議鎖,因此不適合題主的需求
ruby 用得不多,我猜測是你 Gemfile 有問題,如果 Gemfile 聲明的 gem 指向一個(gè) github(或者別的什么情況),那么這個(gè) gem 就應(yīng)該包含 gemspec,而你的報(bào)錯(cuò)也說了這個(gè)問題,minimal-mistakes-jekyll.gemspec不存在,你解決下這個(gè)不存在的問題
當(dāng)需要添加文章編輯權(quán)限時(shí):
源代碼 Parser/Tokenizer.c 進(jìn)行詞法分析。首先是依照編碼進(jìn)行解碼。然后通過tok_get 函數(shù)進(jìn)行詞法分析。
首先處理縮進(jìn);
然后是消除空白字符、注釋以及空白行;
再然后是標(biāo)識符、數(shù)字、字符串;
再然后是續(xù)行符('\'+直接輸入換行);
最后是操作符。
static int
tok_get(struct tok_state *tok, char **p_start, char **p_end)
{
int c;
int blankline, nonascii;
*p_start = *p_end = NULL;
nextline:
tok->start = NULL;
blankline = 0;
/* Get indentation level */
if (tok->atbol) {
int col = 0;
int altcol = 0;
tok->atbol = 0;
for (;;) {
c = tok_nextc(tok);
if (c == ' ') {
col++, altcol++;
}
else if (c == '\t') {
col = (col/tok->tabsize + 1) * tok->tabsize;
altcol = (altcol/tok->alttabsize + 1)
* tok->alttabsize;
}
else if (c == '\014') {/* Control-L (formfeed) */
col = altcol = 0; /* For Emacs users */
}
else {
break;
}
}
tok_backup(tok, c);
if (c == '#' || c == '\n') {
/* Lines with only whitespace and/or comments
shouldn't affect the indentation and are
not passed to the parser as NEWLINE tokens,
except *totally* empty lines in interactive
mode, which signal the end of a command group. */
if (col == 0 && c == '\n' && tok->prompt != NULL) {
blankline = 0; /* Let it through */
}
else {
blankline = 1; /* Ignore completely */
}
/* We can't jump back right here since we still
may need to skip to the end of a comment */
}
if (!blankline && tok->level == 0) {
if (col == tok->indstack[tok->indent]) {
/* No change */
if (altcol != tok->altindstack[tok->indent]) {
if (indenterror(tok)) {
return ERRORTOKEN;
}
}
}
else if (col > tok->indstack[tok->indent]) {
/* Indent -- always one */
if (tok->indent+1 >= MAXINDENT) {
tok->done = E_TOODEEP;
tok->cur = tok->inp;
return ERRORTOKEN;
}
if (altcol <= tok->altindstack[tok->indent]) {
if (indenterror(tok)) {
return ERRORTOKEN;
}
}
tok->pendin++;
tok->indstack[++tok->indent] = col;
tok->altindstack[tok->indent] = altcol;
}
else /* col < tok->indstack[tok->indent] */ {
/* Dedent -- any number, must be consistent */
while (tok->indent > 0 &&
col < tok->indstack[tok->indent]) {
tok->pendin--;
tok->indent--;
}
if (col != tok->indstack[tok->indent]) {
tok->done = E_DEDENT;
tok->cur = tok->inp;
return ERRORTOKEN;
}
if (altcol != tok->altindstack[tok->indent]) {
if (indenterror(tok)) {
return ERRORTOKEN;
}
}
}
}
}
tok->start = tok->cur;
/* Return pending indents/dedents */
if (tok->pendin != 0) {
if (tok->pendin < 0) {
tok->pendin++;
return DEDENT;
}
else {
tok->pendin--;
return INDENT;
}
}
if (tok->async_def
&& !blankline
&& tok->level == 0
/* There was a NEWLINE after ASYNC DEF,
so we're past the signature. */
&& tok->async_def_nl
/* Current indentation level is less than where
the async function was defined */
&& tok->async_def_indent >= tok->indent)
{
tok->async_def = 0;
tok->async_def_indent = 0;
tok->async_def_nl = 0;
}
again:
tok->start = NULL;
/* Skip spaces */
do {
c = tok_nextc(tok);
} while (c == ' ' || c == '\t' || c == '\014');
/* Set start of current token */
tok->start = tok->cur - 1;
/* Skip comment */
if (c == '#') {
while (c != EOF && c != '\n') {
c = tok_nextc(tok);
}
}
/* Check for EOF and errors now */
if (c == EOF) {
return tok->done == E_EOF ? ENDMARKER : ERRORTOKEN;
}
/* Identifier (most frequent token!) */
nonascii = 0;
if (is_potential_identifier_start(c)) {
/* Process the various legal combinations of b"", r"", u"", and f"". */
int saw_b = 0, saw_r = 0, saw_u = 0, saw_f = 0;
while (1) {
if (!(saw_b || saw_u || saw_f) && (c == 'b' || c == 'B'))
saw_b = 1;
/* Since this is a backwards compatibility support literal we don't
want to support it in arbitrary order like byte literals. */
else if (!(saw_b || saw_u || saw_r || saw_f)
&& (c == 'u'|| c == 'U')) {
saw_u = 1;
}
/* ur"" and ru"" are not supported */
else if (!(saw_r || saw_u) && (c == 'r' || c == 'R')) {
saw_r = 1;
}
else if (!(saw_f || saw_b || saw_u) && (c == 'f' || c == 'F')) {
saw_f = 1;
}
else {
break;
}
c = tok_nextc(tok);
if (c == '"' || c == '\'') {
goto letter_quote;
}
}
while (is_potential_identifier_char(c)) {
if (c >= 128) {
nonascii = 1;
}
c = tok_nextc(tok);
}
tok_backup(tok, c);
if (nonascii && !verify_identifier(tok)) {
return ERRORTOKEN;
}
*p_start = tok->start;
*p_end = tok->cur;
/* async/await parsing block. */
if (tok->cur - tok->start == 5) {
/* Current token length is 5. */
if (tok->async_def) {
/* We're inside an 'async def' function. */
if (memcmp(tok->start, "async", 5) == 0) {
return ASYNC;
}
if (memcmp(tok->start, "await", 5) == 0) {
return AWAIT;
}
}
else if (memcmp(tok->start, "async", 5) == 0) {
/* The current token is 'async'.
Look ahead one token.*/
struct tok_state ahead_tok;
char *ahead_tok_start = NULL, *ahead_tok_end = NULL;
int ahead_tok_kind;
memcpy(&ahead_tok, tok, sizeof(ahead_tok));
ahead_tok_kind = tok_get(&ahead_tok, &ahead_tok_start,
&ahead_tok_end);
if (ahead_tok_kind == NAME
&& ahead_tok.cur - ahead_tok.start == 3
&& memcmp(ahead_tok.start, "def", 3) == 0)
{
/* The next token is going to be 'def', so instead of
returning 'async' NAME token, we return ASYNC. */
tok->async_def_indent = tok->indent;
tok->async_def = 1;
return ASYNC;
}
}
}
return NAME;
}
/* Newline */
if (c == '\n') {
tok->atbol = 1;
if (blankline || tok->level > 0) {
goto nextline;
}
*p_start = tok->start;
*p_end = tok->cur - 1; /* Leave '\n' out of the string */
tok->cont_line = 0;
if (tok->async_def) {
/* We're somewhere inside an 'async def' function, and
we've encountered a NEWLINE after its signature. */
tok->async_def_nl = 1;
}
return NEWLINE;
}
/* Period or number starting with period? */
if (c == '.') {
c = tok_nextc(tok);
if (isdigit(c)) {
goto fraction;
} else if (c == '.') {
c = tok_nextc(tok);
if (c == '.') {
*p_start = tok->start;
*p_end = tok->cur;
return ELLIPSIS;
}
else {
tok_backup(tok, c);
}
tok_backup(tok, '.');
}
else {
tok_backup(tok, c);
}
*p_start = tok->start;
*p_end = tok->cur;
return DOT;
}
/* Number */
if (isdigit(c)) {
if (c == '0') {
/* Hex, octal or binary -- maybe. */
c = tok_nextc(tok);
if (c == 'x' || c == 'X') {
/* Hex */
c = tok_nextc(tok);
do {
if (c == '_') {
c = tok_nextc(tok);
}
if (!isxdigit(c)) {
tok->done = E_TOKEN;
tok_backup(tok, c);
return ERRORTOKEN;
}
do {
c = tok_nextc(tok);
} while (isxdigit(c));
} while (c == '_');
}
else if (c == 'o' || c == 'O') {
/* Octal */
c = tok_nextc(tok);
do {
if (c == '_') {
c = tok_nextc(tok);
}
if (c < '0' || c >= '8') {
tok->done = E_TOKEN;
tok_backup(tok, c);
return ERRORTOKEN;
}
do {
c = tok_nextc(tok);
} while ('0' <= c && c < '8');
} while (c == '_');
}
else if (c == 'b' || c == 'B') {
/* Binary */
c = tok_nextc(tok);
do {
if (c == '_') {
c = tok_nextc(tok);
}
if (c != '0' && c != '1') {
tok->done = E_TOKEN;
tok_backup(tok, c);
return ERRORTOKEN;
}
do {
c = tok_nextc(tok);
} while (c == '0' || c == '1');
} while (c == '_');
}
else {
int nonzero = 0;
/* maybe old-style octal; c is first char of it */
/* in any case, allow '0' as a literal */
while (1) {
if (c == '_') {
c = tok_nextc(tok);
if (!isdigit(c)) {
tok->done = E_TOKEN;
tok_backup(tok, c);
return ERRORTOKEN;
}
}
if (c != '0') {
break;
}
c = tok_nextc(tok);
}
if (isdigit(c)) {
nonzero = 1;
c = tok_decimal_tail(tok);
if (c == 0) {
return ERRORTOKEN;
}
}
if (c == '.') {
c = tok_nextc(tok);
goto fraction;
}
else if (c == 'e' || c == 'E') {
goto exponent;
}
else if (c == 'j' || c == 'J') {
goto imaginary;
}
else if (nonzero) {
/* Old-style octal: now disallowed. */
tok->done = E_TOKEN;
tok_backup(tok, c);
return ERRORTOKEN;
}
}
}
else {
/* Decimal */
c = tok_decimal_tail(tok);
if (c == 0) {
return ERRORTOKEN;
}
{
/* Accept floating point numbers. */
if (c == '.') {
c = tok_nextc(tok);
fraction:
/* Fraction */
if (isdigit(c)) {
c = tok_decimal_tail(tok);
if (c == 0) {
return ERRORTOKEN;
}
}
}
if (c == 'e' || c == 'E') {
int e;
exponent:
e = c;
/* Exponent part */
c = tok_nextc(tok);
if (c == '+' || c == '-') {
c = tok_nextc(tok);
if (!isdigit(c)) {
tok->done = E_TOKEN;
tok_backup(tok, c);
return ERRORTOKEN;
}
} else if (!isdigit(c)) {
tok_backup(tok, c);
tok_backup(tok, e);
*p_start = tok->start;
*p_end = tok->cur;
return NUMBER;
}
c = tok_decimal_tail(tok);
if (c == 0) {
return ERRORTOKEN;
}
}
if (c == 'j' || c == 'J') {
/* Imaginary part */
imaginary:
c = tok_nextc(tok);
}
}
}
tok_backup(tok, c);
*p_start = tok->start;
*p_end = tok->cur;
return NUMBER;
}
letter_quote:
/* String */
if (c == '\'' || c == '"') {
int quote = c;
int quote_size = 1; /* 1 or 3 */
int end_quote_size = 0;
/* Find the quote size and start of string */
c = tok_nextc(tok);
if (c == quote) {
c = tok_nextc(tok);
if (c == quote) {
quote_size = 3;
}
else {
end_quote_size = 1; /* empty string found */
}
}
if (c != quote) {
tok_backup(tok, c);
}
/* Get rest of string */
while (end_quote_size != quote_size) {
c = tok_nextc(tok);
if (c == EOF) {
if (quote_size == 3) {
tok->done = E_EOFS;
}
else {
tok->done = E_EOLS;
}
tok->cur = tok->inp;
return ERRORTOKEN;
}
if (quote_size == 1 && c == '\n') {
tok->done = E_EOLS;
tok->cur = tok->inp;
return ERRORTOKEN;
}
if (c == quote) {
end_quote_size += 1;
}
else {
end_quote_size = 0;
if (c == '\\') {
tok_nextc(tok); /* skip escaped char */
}
}
}
*p_start = tok->start;
*p_end = tok->cur;
return STRING;
}
/* Line continuation */
if (c == '\\') {
c = tok_nextc(tok);
if (c != '\n') {
tok->done = E_LINECONT;
tok->cur = tok->inp;
return ERRORTOKEN;
}
tok->cont_line = 1;
goto again; /* Read next line */
}
/* Check for two-character token */
{
int c2 = tok_nextc(tok);
int token = PyToken_TwoChars(c, c2);
if (token != OP) {
int c3 = tok_nextc(tok);
int token3 = PyToken_ThreeChars(c, c2, c3);
if (token3 != OP) {
token = token3;
}
else {
tok_backup(tok, c3);
}
*p_start = tok->start;
*p_end = tok->cur;
return token;
}
tok_backup(tok, c2);
}
/* Keep track of parentheses nesting level */
switch (c) {
case '(':
case '[':
case '{':
tok->level++;
break;
case ')':
case ']':
case '}':
tok->level--;
break;
}
/* Punctuation character */
*p_start = tok->start;
*p_end = tok->cur;
return PyToken_OneChar(c);
}
public function beforeAction($action)
{/*{{{*/
if (parent::beforeAction($action)) {
//... UserController 的 beforeAction 需要做的。
return true;
}
return false;
}/*}}}*/
public function beforeAction($action)
{/*{{{*/
if (parent::beforeAction($action)) {
//... BaseController 的 beforeAction 需要做的。
return true;
}
return false;
}/*}}}*/打斷點(diǎn)
F12開發(fā)者工具-sources
可以設(shè)置停止的點(diǎn)
執(zhí)行到你設(shè)置的停止點(diǎn),就中斷了。
將點(diǎn)設(shè)置到彈窗關(guān)閉前那句
具體設(shè)置方法,是在想要設(shè)置的那一行行數(shù)上點(diǎn)擊一下
把this保存起來,先驗(yàn)證第一個(gè),在第一個(gè)驗(yàn)證通過得里面,驗(yàn)證第二個(gè),可以試一下可不可以
你可能忘記了mybatis的xml文件可以寫ResultMap這個(gè)東西
多表查詢之后 結(jié)果映射到ResultMap里
idea的話,最好是結(jié)合maven一起使用,基于maven構(gòu)建項(xiàng)目,當(dāng)你在項(xiàng)目里使用ssh框架時(shí),idea會自動的檢測到并且提示里添加相關(guān)的框架支持。。。
2.7.0 開始可以這樣寫:
import { Button } from 'iview':height="tableHeight"
mounted(){
this.tableHeight=700;
}
這種方式是對的呀 運(yùn)行出來就是700
vue-touch 組件默認(rèn)的要給組件添加一個(gè)css屬性touch-action: none; 這個(gè)屬性禁止了用戶的所有手勢操作。你用了 左右的滑動事件。。 只要給 這個(gè)組件加一個(gè)css屬性 touch-action: pan-y!important; 就可以使用上下滾動了
給綁定事件的元素上加上手勢樣式 cursor: pointer
再給后臺上傳圖片路徑,可是獲取的圖片路徑一直是64位編碼的,后臺只要正常的圖片路徑
首先,這不是 base64編碼的路徑,這就是base64編碼之后的圖片實(shí)體,準(zhǔn)確的說是 base64編碼的DATA URI你通過H5的 File API拿到這一大坨DATA URI是沒問題的;
然后,"后臺只要正常的圖片路徑" 這是扯犢子,前端上傳個(gè)本地的 URL 路徑(比如c://assets/pic1.jpg)給后臺是沒有意義的,后臺需要的是你上面的那一大坨base64 URI,他需要自己decode
const fs = require('fs');
const path = require('path');
const baseStr = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKUAAAA6CAIAAABeeQ4bAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyNpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MUNBNDgwNEFEQjhFMTFFNDk2QTJGNjFEQjczMjVGRjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MUNBNDgwNDlEQjhFMTFFNDk2QTJGNjFEQjczMjVGRjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QURGQTdDMzVEQjhEMTFFNDk2QTJGNjFEQjczMjVGRjYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QURGQTdDMzZEQjhEMTFFNDk2QTJGNjFEQjczMjVGRjYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4chVw4AAAVNklEQVR42uxdCVgT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";
function fileSaver(base64Str, filename = 'your_file_name', outputPath) {
return new Promise((resolve, reject) => {
const data = base64Str.split(',')[1];
const buff = new Buffer(data, 'base64');
const type = base64Str.match(/(?:image\/)(\w+)(?=;)/)[1];
const savePath = path.resolve(outputPath, `${filename}.${type}`);
fs.writeFile(savePath, buff, (err) => {
if (err) {
return reject(err);
}
return resolve(savePath);
})
})
}
fileSaver(baseStr, '2', './').then(
(filepath) => console.log('File saved successfully,當(dāng)前遠(yuǎn)程地址是:%s', filepath ),
(err) => console.log('File saved failed, resean : ' + err)
);style可以提出來放到單獨(dú)的文件中通過@import來引入,而且不想感染到其他的組件加上scoped就行
<template>
<div></div>
</template>
<script>
export default {
}
</script>
<style scoped>
@import url('../style/common.css');
</style>
不知道ab.exe測試時(shí)什么原理,你自己寫一個(gè)多線程調(diào)用下就知道了會產(chǎn)生負(fù)數(shù)值的。
//php不會,用java寫了個(gè)test。
import redis.clients.jedis.Jedis;
public class Test {
public static void main(String[] args) throws Exception {
Jedis jedis = getJedis();
jedis.set("nums", 50+"");
close(jedis);
for(int i = 0;i < 1000;i++){ //啟動1000個(gè)線程
new Thread(new MyTask()).start();
}
}
public static Jedis getJedis(){
Jedis j = new Jedis("xxxxx", 6379);
j.auth("xxxx");
return j;
}
public static void close(Jedis jedis){
if(null == jedis){
return;
}
jedis.close();
}
}
class MyTask implements Runnable{
@Override
public void run() {
Jedis j = Test.getJedis();
String numStr = j.get("nums");
Integer nums = Integer.valueOf(numStr);
if(nums > 1){
j.decr("nums");
}else{
System.out.println(nums);
}
Test.close(j);
}
}
輸出結(jié)果出現(xiàn)負(fù)值。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
print('我愛魚C工作室........................')
import random
secret=random.randint(1,10)
temp=input('猜猜小甲魚心里想的是數(shù)字幾:')
count=3
while count:
while not temp.isdigit():
temp=input('這不合法,請輸入一個(gè)合法整數(shù):')
guess = int(temp)
if guess==secret:
print('猜對了,干的漂亮')
break
elif guess>secret:
print('大了大了',end='')
else:
print('小了小了',end='')
count-=1
print(count)
print('你還有%d次機(jī)會,請輸入:'%count,end=' ')
guess=int(input())
if count==1:
print('你的次數(shù)已經(jīng)用完,不玩了。')
print('小甲魚心里想的是數(shù)字%d'%secret,end=' ')
break
猜猜小甲魚心里想的是數(shù)字幾:7
2
你還有2次機(jī)會,請輸入: 9
1
你還有1次機(jī)會,請輸入: 2
你的次數(shù)已經(jīng)用完,不玩了。
小甲魚心里想的是數(shù)字3
一般來說RSA加密解密需要有兩方。一方拿公鑰加密,一方拿私鑰解密。你打算在小程序里實(shí)現(xiàn)的是加密還是解密呢?如果加密解密都有那意義何在?
可以明確一下具體需求嗎。
return() => import('./component/item1.form')
如果import有變量,那么需要使用字符串模板解析
return () => import(./component/item${this.formItem.item_type}.form);
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國制造2025”,實(shí)現(xiàn)中華民族偉大復(fù)興的升級產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。