鍍金池/ 問答/ 網(wǎng)絡(luò)安全問答
逗婦惱 回答

最簡單的就是socket命令嘛 .. if (sock.read() == 'close')

陌璃 回答

setTimeout 與 setInterval沒有精度可言, 它們只是把任務(wù)扔進js的事件循環(huán), 什么時候才輪到執(zhí)行可說不定,

setTimeout(()=>{xxx}, 0);也只是會盡快給你執(zhí)行, 不能保證立即執(zhí)行

參考
"事件循環(huán)"
實際延時比設(shè)置值更久的原因

只說參數(shù)的精度的話, 毫秒
參考API文檔

葬愛 回答

你給項目做偽靜態(tài)了嗎

櫻花霓 回答

樓主是需要自己搭建服務(wù)器嗎,自己部署私有云?工作量怎么來說呢?沒有辦法給一個具體的定位,還是要看你的具體的需求。網(wǎng)上相關(guān)的開源代碼也是挺多的,比如webrtc開源了所有的代碼,比如tucodec免費提供了SDK。你在這些SDK的基礎(chǔ)上,完成自己服務(wù)器搭建和UI設(shè)計就可以了~

悶騷型 回答

最強大的Google Analytics,你沒有在用?

clipboard.png

巫婆 回答

Crypto-JS 就是一個集合各種加密方式的庫、使用方式還是看 API 來的快。
需要加密的一般是各種認證、以 Vue 為例的話、一般在二次封裝的 Axios 中寫上全局的加密認證。
其他需要加密的就是傳輸內(nèi)容可控的、同時需要安全性的選項之類的、但是這種比較少。
以 MD5 加密為例、MD5 加密是不可逆的、同一字符串加密后得到的結(jié)果是唯一的。所以一般是前臺傳輸?shù)臅r候?qū)⒚艽a拼上一個特定的字符、然后再加密傳輸、服務(wù)器用同樣方式加密、然后對加密后的字符串進行比對。
服務(wù)器保存密碼是加密后的、保證維護人員也是不可見的。

墨小羽 回答

v-if 不可以么?

六扇門 回答

既然你給這個問題打了currying這個標簽,我很奇怪你為什么不知道這就是一般柯里化的寫法。

log函數(shù)接收一個tag參數(shù),然后返回一個接收target參數(shù)的匿名函數(shù),這個匿名函數(shù)又會返回一個接收message的匿名函數(shù),最后這個函數(shù)使用前面接收到的三個參數(shù)來完成write操作。

這個函數(shù)在調(diào)用的時候需要連著調(diào),像這樣:

log(aTag)(aTarget)(aMessage);
生性 回答

子組件的template有新增和刪除的時候會觸發(fā)父組件的更新

寫榮 回答

這里沒人嗎 要石沉大海了??

短嘆 回答

問題解決了,workerman論壇上的一個哥們提醒了我是死循環(huán)導(dǎo)致進程一直處于busy狀態(tài)。把php代碼中的死循環(huán)去掉:

// while (true) {
    $connection->send(根據(jù)接收到的客戶端的$data發(fā)送要發(fā)送的消息);
    // usleep(1000000); // 睡1秒  其實這個也可以去掉
// }

前端代碼中增加定時向后端發(fā)送消息的代碼,這樣后端就可以根據(jù)監(jiān)聽到的前端發(fā)送的消息往前端推送消息。worker進程只有在發(fā)送消息時才會處于busy狀態(tài),否則就會idle。之前就是因為死循環(huán)一直發(fā)送消息(busy),這樣就導(dǎo)致前端頁面每次加載都會導(dǎo)致后端創(chuàng)建一個新的進程(原來的worker進程一直沒釋放)。我之前對后端往前端推送消息的業(yè)務(wù)邏輯和技術(shù)細節(jié)沒想清楚,哎,自己給自己挖了個坑。

別逞強 回答

css貼出來看一下 ios有他特有的默認屬性的

雨蝶 回答

promotions.component.spec.ts:

import { ClubCodeGuard } from './../../../guards/club-code.guard';
import { EnrollMemberComponent } from './../enroll-member.component';
import { Router, ActivatedRoute } from "@angular/router";
import { EnrollMemberModule } from './../enroll-member.module';
import { MembershipService } from './../../../member/services/membership.service';
import { MemberForm } from './../models/enroll-member-form';
import { EnrollMemberPromotionsComponent } from './promotions.component';
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { DebugElement,Injectable,Component, OnInit, NgModule, ViewChild } from '@angular/core';
import { ComponentFixtureAutoDetect } from '@angular/core/testing';//自動變更檢測
import { async } from '@angular/core/testing';//異步的beforeEach
import { Member } from 'app/member/models/member';
import { FormsModule } from '@angular/forms';
import { ToastrModule } from 'ngx-toastr';
import { Observable, BehaviorSubject } from 'rxjs/Rx';
import { ProformaInvoiceComponent } from 'app/member-prospect-manager/enroll-member/proforma-invoice/proforma-invoice.component';
import { ClubService } from 'app/club/services';
import { HttpModule, Http } from '@angular/http';
import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
import { HandleErrorService } from '../../../shared-services/handle-error.service';
import { AccessTypeService } from '../../../club/services/access-type.service';
import { MemberService } from '../../../member/services/member.service';
import { CurrentUserService } from '../../../user/services/current-user.service';
import { GetCurrentUserService } from '../../../user/services/get-current-user.service';
import { PromotionService } from 'app/promotions/services/promotion.service';
import { FormService } from 'app/membership/services/form.service';
import { RouterTestingModule } from "@angular/router/testing";
import { EnrollMemberMembershipTypeComponent } from 'app/member-prospect-manager/enroll-member/membership-type/membership-type.component';
import { EnrollMemberMembershipInfoComponent } from 'app/member-prospect-manager/enroll-member/membership-info/membership-info.component';
import { EnrollMemberReviewAndPayComponent } from 'app/member-prospect-manager/enroll-member/review-and-pay/review-and-pay.component';
import { EnrollMemberConfirmationComponent } from 'app/member-prospect-manager/enroll-member/confirmation/confirmation.component';

describe('when navigate to promotion selecte', () => {

let component: EnrollMemberPromotionsComponent;
let fixture: ComponentFixture<EnrollMemberPromotionsComponent>;
let de: DebugElement;
let el: HTMLElement;

let location: Location;
let router: Router;
let mockAR: any = {
    params: {
      subscribe: function() {
        console.log('Subscribed.');
        Observable.of({ id: 123 });
      }
    }
  }
  let mockRouter = {
    navigate: jasmine.createSpy('navigate')
  } 
beforeEach(async () => {
    TestBed.configureTestingModule({
        providers: [
            MembershipService,
            ClubService,
            HandleErrorService,
            AccessTypeService,
            MemberService,
            GetCurrentUserService,
            PromotionService,
            CurrentUserService,
            Router,
            ActivatedRoute,
            FormService,
            { provide: Router, useValue: mockRouter }
        ],
        imports: [
            FormsModule,
            EnrollMemberModule,
            HttpClientModule,
            HttpModule,
            ToastrModule.forRoot(),
            RouterTestingModule.withRoutes([
                {
                  path: 'tab',
                  component: EnrollMemberComponent,
                  data: {
                    title: 'EnrollMemberComopnent',
                    iconClass: 'fa fa-bullhorn'
                  },
                  canActivate: [ClubCodeGuard],
                  children: [
                    {
                      path: '',
                      redirectTo: 'membership-type',
                      pathMatch: 'full'
                    },
                    {
                      path: 'membership-type',
                      component: EnrollMemberMembershipTypeComponent,
                      data: { title: 'EnrollMemberMembershipTypeComponent', iconClass: 'fa fa-bullhorn' },
                      canActivate: [ClubCodeGuard]
                    },
                    {
                      path: 'membership-info',
                      component: EnrollMemberMembershipInfoComponent,
                      data: { title: 'EnrollMemberMembershipInfoComponent', iconClass: 'fa fa-bullhorn' },
                      canActivate: [ClubCodeGuard]
                    },
                    {
                      path: 'promotions',
                      component: EnrollMemberPromotionsComponent,
                      data: { title: 'EnrollMemberPromotionsComponent', iconClass: 'fa fa-bullhorn' },
                      canActivate: [ClubCodeGuard]
                    },
                    {
                      path: 'review-pay',
                      component: EnrollMemberReviewAndPayComponent,
                      data: { title: 'EnrollMemberReviewAndPayComponent', iconClass: 'fa fa-bullhorn' },
                      canActivate: [ClubCodeGuard]
                    },
                    {
                      path: 'confirmation',
                      component: EnrollMemberConfirmationComponent,
                      data: { title: 'EnrollMemberConfirmationComponent', iconClass: 'fa fa-bullhorn' },
                      canActivate: [ClubCodeGuard]
                    }
                  ]
                },{
                  path: '',
                  redirectTo: 'tab',
                  pathMatch: 'full'
                }
              ])
        ]
    }).compileComponents();  // compile template and css


    router = TestBed.get(Router);
    location = TestBed.get(Location);
    fixture = TestBed.createComponent(EnrollMemberPromotionsComponent);
    router.initialNavigation();
});

beforeEach(() => {
    router = TestBed.get(Router);
    location = TestBed.get(Location);

    component = fixture.componentInstance;
    fixture.detectChanges();
});

it('should create', () => {
    expect(component).toBeTruthy();
});

});

妖妖 回答

少量用游標算,大量用服務(wù)器算,畢竟服務(wù)器計算能力比Python快

九年囚 回答

我看了一下源碼,確實沒有默認的配置文件,但實際上該類的父類中有#setConfigLocation(String location)setConfigLocations(String... locations)方法可以設(shè)置配置文件,也就是說無參數(shù)構(gòu)造方法需要配合這些設(shè)置配置文件的方法使用,應(yīng)該無法單獨使用,這可能是Spring提供了一種配置方式,就好像注入Bean的時候,可以使用構(gòu)造方法注入,也可以使用setter注入是一個道理。

哎呦喂 回答

你的 DOM 里就沒設(shè)置 id 屬性啊。

薄荷糖 回答

有滾動時間,直接偵聽容器的 scroll 事件即可。

念初 回答

去官網(wǎng)的API文檔找一下吧,如果沒有可能需要自己實現(xiàn),或者無法實現(xiàn):
http://www.treejs.cn/v3/api.php
個人覺得是這個配置:
圖片描述

舊言 回答

node的環(huán)境變量配一下

乖乖噠 回答

https://github.com/emrahgundu...
github上bom頭清除的一個腳本,放在網(wǎng)站根目錄下,訪問就可以批量清除掉所有的bom頭