环境搭建 脚手架安装:npm i -g @angular/cli 新建项目:ng new my-app 如果安装脚手架报错,强制清理npm缓存后重新安装
组件与模板 当你下载好官方案列后,你可能对目录都不太熟悉,不过不用关心
理解模板表达式上下文 组建实列就是模板表达式的上下文对象(Expression context)
表达式中的上下文变量是由 模板变量 、 指令的上下文变量(如果有)和 组件的成员变量 叠加而成的。 当存在相同的表达式变量优先顺序:模板变量、指令的上下文变量、组件的成员变量
import { Component } from '@angular/core';
//my-app/src/app/app.component.ts @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent { private data0:Number = 1121; data1 = '
dddddd
'; data2 = { aaa:222 }; data3(){ }; data4 = null; data5 = undefined; data6 = [1,2,3] }
data0 :{{data0}}
data1 :{{data1}}
data2 :{{data2}}
data3 :{{data3}}
data4 :{{data4}}
data5 :{{data5}}
data6 :{{data6}}
data7 :{{data7}}
理解HTML attribute 与 DOM property 先来看一个列子
//html:
var outPutVal = function(inO){
console.log('getAttribute:',inO.getAttribute('value'));
console.log('inO.value',inO.value);
}
window.onload = function(){
var inO = document.querySelector('input');
// 初始化value后打印
outPutVal(inO);
//getAttribute: a
//test.html:14 inO.value a
document.onclick = function(){
// 修改value为aaaaa后打印
outPutVal(inO);
//getAttribute: a
//test.html:14 inO.value aaaaa
}
}
//1.少量 HTML attribute 和 property 之间有着 1:1 的映射,如 id。
//2.有些 HTML attribute 没有对应的 property,如 colspan。
//3.有些 DOM property 没有对应的 attribute,如 textContent。
//4.大量 HTML attribute 看起来映射到了 property…… 但却不像你想的那样!
angular中模板绑定是通过 property 和事件来工作的,而不是 attribute
特殊的attribute 绑定
[attr.aria-label]="actionName"
1 2 指令 属性指令 ngClass ngStyle ngModel 结构型指令 ngIf ngFor ngSwitch ng-template *号语法 {{hero.name}}
{{hero.name}}
1 2 3 4 5
({{i}}) {{hero.name}}
({{i}}) {{hero.name}}
1 2 3 4 5 6 7 ng-template 会将内部包裹的元素变成注释
ng-container ng-template 会无副作用的包裹内部元素
组件(拥有模板的指令) ng g c components/A 创建组件 1 组件通信 1.输入属性 @Input() //a.component.ts @Input() inAttr:String;
private _name:String = '';
@Input() set inAttr2(name:String){ this._name = name; }
get inAttr2():String{ return this._name; }
2.输出属性 @Output() //子组件中 @Output() myEvent:EventEmitter = new EventEmitter(); this.myEvent.emit(Data);
//父组件中
(myEvent)="myHandleEvent($event)"
myHandleEvent(Data:DataType){
}
3.中间人模式(兄弟组件通过公共的父组件传值) 4.父组件获得子组件引用 #child(只可以在组件模板中使用)
@ViewChild()父组件类插入子组件 (可以在类中使用) 被注入的计时器组件只有在 Angular 显示了父组件视图之后才能访问 Angular 的单向数据流规则会阻止在同一个周期内更新父组件视图。应用在显示秒数之前会被迫再等一轮。 使用 setTimeout() 来等下一轮 @ViewChild(CountdownTimerComponent) private timerComponent: CountdownTimerComponent;
ngAfterViewInit() { // Redefine seconds()
to get from the CountdownTimerComponent.seconds
... // but wait a tick first to avoid one-time devMode // unidirectional-data-flow-violation error setTimeout(() => this.seconds = () => this.timerComponent.seconds, 0); }
6.通过服务传递数据 自定义指令 ng g d myDirective/demo 1 1.属性型指令
import { Directive, ElementRef, HostListener, Input } from '@angular/core';
@Directive({ selector: '[appDemo]' }) export class DemoDirective {
constructor(private el:ElementRef) { } // 注册事件 @HostListener('click') show(){ console.log(this.el.nativeElement); console.log(this.ss); } //指令参数,当参数名与指令名相同时,可以直接赋值给指令 @Input() ss:String = 'aaa'; }
2.结构型指令
import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';
/**
Add the template content to the DOM unless the condition is true. */ @Directive({ selector: '[appUnless]'}) export class UnlessDirective { //第一次传入true时不执行任何if分支 private hasView = false;
constructor( private templateRef: TemplateRef, private viewContainer: ViewContainerRef) { }
@Input() set appUnless(condition: boolean) { if (!condition && !this.hasView) { this.viewContainer.createEmbeddedView(this.templateRef); this.hasView = true; } else if (condition && this.hasView) { this.viewContainer.clear(); this.hasView = false; } } }
目录结构 依赖注入 angular实现控制反转的手段就是依赖注入 依赖注入的好处:依赖注入会让你用一种松耦合的方式去写代码,易于调试 注入器: //只有加入@injectable()才能注入其他 construct(private productService:ProductService){...}; 1 2 提供器 作用域与优先级 provider:[ProductService] provider:[{provide:ProductService,useClass:ProductService}] provider:[{provide:ProductService,useClass:AnotherProductService}] provider:[{provide:ProductService,useFactory:(参数A)=>{return ob},deps:[参数A]}] provider:[{provide:"IS_DEV_ENV",useValue:{isDev:true}}] 1 2 3 4 5 @angular/router路由 1 2 //app.module.ts //导入路由核心模块 import { Routes, RouterModule } from '@angular/router';
const routes: Routes = [ {path:'**',component:AComponent} ];
@NgModule({ ... imports: [RouterModule.forRoot(routes)] ... }) export class AppModule { }
Routes路由配置介绍 path "**"表示匹配所有 redirectTo “表示要转走的路径” pathMatch "full"表示匹配程度 component 表示要显示的组件 data 数据传递 children:[] 子路由 canActivate canActivate:[PermissionGuard] canDeactivate canDeactivate:[FocusGuard] outlet 辅助路由 resolve resolve:{Stock:StockResolve} Router可调用navigate与navigateByUrl() RouterLink routelink routelink routelink 辅助路由 http://localhost:4200/a(aux:aaa) 1 2 3 4 路由数据传递: //1. [routerLink] = "['/path',1]" //http://localhost:4200/path/1 // this.routeInfo.snapshot.queryParams //2. [routerLink]="['/b',1]" [queryParams]="{id:3}" // http://localhost:4200/b/1?id=3 // this.routeInfo.snapshot.params // 3. {path:'a',component:AComponent,data:{id:666}} //this.routeInfo.snapshot.queryParams //this.routeInfo.snapshot.data
ActivatedRoute 常用:this.routeInfo见上面 守卫路由 1.canActivate export class PermissionGuard implements CanActivate{ canActivate(){ let hasPemission:boolean = Math.random() < 0.5; return hasPemission; } } 1 2 3 4 5 6 2.canDeactivate export class FocusGuard implements CanDeactivate{ canDeactivate(component:CComponent){ if(component.isFoucs){ return true; }else { return confirm('不关注一下嘛?'); } } }
9 3.resolve 读取数据前 @Injectable() export class StockResolve implements Resolve{ constructor( private route:Router ){} resolve(route:ActivatedRouteSnapshot,state:RouterStateSnapshot){ return new Stock(1,'name'); } }
响应式编程: import {Observable} from "rxjs"; Observable.from([1,2,3,4]) .filter(e => e%2 == 0) .map(e => e*e) .subscribe( e => console.log(e), err => console.error(err), () => console.log("结束啦") ) //4,16,结束啦
10 生命周期钩子 初始化阶段 //1.constructor //2.ngOnChanges父组件初始化子组件输入属性时被调用 (不可变对象的改变) ngOnChanges(changes:SimpleChanges):void{
} //3.ngOnInit //4.ngDoCheck 一定要判断一下你想要的变化发生时 //5.ngAfterContentInit //6.ngAfterContentChecked //7.ngAfterViewInit //8.ngAfterViewChecked 1
11 变化阶段 //1.ngOnChanges //2.ngDoCheck //3.ngAfterContentChecked //4.ngAfterViewChecked 1 2 组件销毁阶段 //1.ngOnDestroy // 在路由变更时改变 1 2 ngAfterViewInit,ngAfterViewChecked //1.子组件组装好父组件才会组装 //2.组件是在试图组装完毕调用 //3.再此方法中不可以更改视图数据
//s.component.ts greeting(name:string){ ... } //f.component.html //f.component.ts @viewChild("child1") child1:sCompenent;
this.child1.greeting(...);
ngAfterContentInit,ngAfterContentChecked 投影 1.子组件
2.父组件 .......
表单 // 在imports中: // ReactiveFormsModule响应式表单 // FormsModule模板式表单 1 2 3 模板式表单 // 在angular中会自动加上ngForm来处理表单,如果不用angular来处理则加上ngNoForm //在表单中加上#myForm="ngForm",则可以在页面使用{{myForm.value | json}}去检测表单中有ngModule的value 对象名为name值 //(ngSubmit)="..."
NgForm => FormGroup ngModel=> ngModelGroup
{{myForm.value | json}} second值是:{{second.value}}
模板式表单校验 指令: // ng g directive f/s @Directive({ providers:[{provide:NG_VALIDATORS,useValue:mobileValidator,multi:true}] }) 1 2 3 4 响应式表单 private nickName = new FormControl('tom'); private passwordInfo = new FormGroup({ password: new FormControl(), passwordConfirm:new FormControl() }); private email = new FormArray([ new FormControl('[email protected] '), new FormControl('[email protected] ') ]);
FormControl FormGroup FormArray
private formModel:FormGroup; private fb:FormBuilder = new FormBuilder(); /this.formModel = new FormGroup({ nikname:new FormControl(), emails:new FormArray([ new FormControl() ]), mobile:new FormControl(), passwordInfo:new FormGroup({ password:new FormControl(), passwordConfirm:new FormControl() }) }); / this.formModel = this.fb.group({ nikname:[''], emails:this.fb.array([ [''] ]), mobile:[''], passwordInfo:this.fb.group({ password:[''], passwordConfirm:[''] }) });
angular表单 校验器 //自定义校验器 xxx(param:AbstractControl):{[key:string]:any}{ return null; } // eg: moblieValid(moblie:FormControl):any{ .......... // return null;表示成功 // return {...};不成功 }
//预定义校验器 Validators.required ...... nikname:["xxxx",[Validators.required,.....]] ..................... let niknameValid;boolean = this.formModel.get('nikname').valid; passwordInfo:this.fb.group({ password:[''], passwordConfirm:[''] },{validator:this.passwordValidator}) //一次校验多个字段
22 显示错误信息
1 异步校验 状态字段: ———————————————— 版权声明:本文为CSDN博主「fullSE」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_31631167/article/details/78319788
你可能感兴趣的:(angula7.0.0使用指南)
ChatGPT提示词优化大师使用指南
weixin_58606202
AI大模型应用实战 chatgpt 人工智能
我希望你成为我的ChatGPT提示词优化大师。您的目标是帮助我根据自己的需要制定尽可能最好的提示。你提供的提示应该是站在我向ChatGPT发起请求的角度来写的。我的初始提示词如下:此处填入你的初始提示词ChatGPT提示词生成器我希望你充当提示词生成器。比如,我会给你一个这样的标题:《______》。然后,你会给我一个这样的提示:“_______________________”你应该根据我给的主
Android干净架构MVI模板使用指南
井美婵Toby
Android干净架构MVI模板使用指南android-clean-architecture-mvi-boilerplateAforkofourcleanarchitectureboilerplateusingtheModel-View-Intentpattern项目地址:https://gitcode.com/gh_mirrors/an/android-clean-architecture-mv
Java并发编程-AQS详解及案例实战(上篇)
猿与禅
Java技术栈源码分析 java AQS 并发编程 原理
文章目录AQS概述AQS的核心概念AQS的工作原理AQS的灵活性使用场景使用指南使用示例AQS的本质:为啥叫做异步队列同步器AQS的核心机制“异步队列”的含义“同步器”的含义总结加锁失败的时候如何借助AQS异步入队阻塞等待AQS的锁队列加锁失败时的处理流程异步入队的机制总结ReentractLock如何设置公平锁策略以及原理设置公平锁策略公平锁的运作原理尝试获取锁释放锁性能与公平性的权衡tryLo
Linux 调试器 GDB 使用指南
方歧
LInux linux 运维 服务器
在Linux环境下开发和调试程序时,GNU调试器(GDB)是一个强大的工具。它支持多种编程语言(如C、C++、Fortran等),并且可以帮助开发人员检测、排除和修复程序中的错误。GDB能够让你在程序运行时暂停,查看内存和变量的状态,甚至修改程序的执行流程,是开发人员不可或缺的调试工具之一。在本篇博客中,我们将详细介绍如何使用GDB进行调试,帮助你快速上手并掌握这款工具的基本功能。一、GDB简介G
轻松切换npm镜像源:npm config set registry使用指南
小柒笔记
npm 前端 node.js
在开发过程中,我们经常需要从npm安装依赖包。然而,有时候npm的官方源可能因为网络问题而变得缓慢,影响我们的工作效率。本文将介绍如何使用npmconfigsetregistry命令来切换npm镜像源,提高安装依赖包的速度。npmconfigsetregistry命令简介npmconfigsetregistry命令用于设置npm的镜像源,它支持多种镜像源,如cnpm、taobao、npmjs等。通
天猫京东淘宝返利机器人使用指南,购物更省更赚!_
测评君高省
淘宝返利机器人是一种通过机器人程序实现返利功能的工具。以下是一些关于淘宝返利机器人的网友观点和个人观点:【高省】APP(高佣金领导者)是一个自用省钱佣金高,分享推广赚钱多的平台,百度有几百万篇报道,运行三年,稳定可靠。高省APP,是2021年推出的平台,0投资,0风险、高省APP佣金更高,模式更好,终端用户不流失。高省是公认的返利最高的软件。古楼导师高省邀请码555888,注册送2皇冠会员,送万元
whois 批量查询使用指南
jackywangjia
网络工具 通讯技术
Internet的IP地址和AS号码分配是分级进行的。ICANN(TheInternetCorporationforAssignedNamesandNumbers),负责全球Internet上的IP地址进行编号分配的机构(原来是由IANA负责)。根据ICANN的规定,ICANN将部分IP地址分配给地区级的Internet注册机构(RegionalInternetRegistry),然后由这些RIR
Eureka介绍与使用,超级详细
康斯坦丁·奥尔基耶维奇·洛夫斯基
eureka
Eureka介绍与使用指南Eureka是由Netflix开发的一个RESTful服务,主要用于中间层服务的发现,具有高可用性、可扩展性和容错性。在微服务架构中,服务发现机制是至关重要的,Eureka正是为了解决这一问题而诞生的。1.Eureka介绍1.1Eureka的核心组件EurekaServer:服务注册中心,负责服务实例的注册和管理。EurekaClient:注册到EurekaServer上
Python 函数使用指南:定义、参数设置与变量作用域详解
敲代码不忘补水
Python 编码 python 开发语言
Python函数使用指南:定义、参数设置与变量作用域详解文章目录Python函数使用指南:定义、参数设置与变量作用域详解一函数1未定义函数的常规操作2定义函数3不含输入参数的函数4拿出函数处理的结果(有返回参数)5参数设置二全局和局部变量1私有变量2公有变量3变量值修改三完整文件示例四源码地址本文详细介绍了Python中函数的定义与使用,包括如何通过定义函数减少重复操作、处理输入参数、设置默认值及
Unity-Python 项目使用指南
秋或依
Unity-Python项目使用指南unity-pythonPythonpluginforUnity3D.项目地址:https://gitcode.com/gh_mirrors/un/unity-python项目介绍Unity-Python是一个开源项目,旨在为Unity游戏引擎提供Python脚本支持。该项目通过集成Python解释器,使得开发者可以在Unity中使用Python进行游戏逻辑的编
精准打击:Conda中conda remove命令的高效使用指南
2401_85743969
conda
精准打击:Conda中condaremove命令的高效使用指南在Python项目开发中,Conda作为Anaconda发行版中的包管理器,不仅用于安装和管理包,还提供了强大的环境管理功能。随着项目的发展,有时需要从环境中移除不再需要的包。condaremove命令是Conda提供的一个关键工具,它允许用户从当前环境中移除特定的包。本文将详细介绍如何在Conda中使用condaremove命令,并通
HTML到React解析器 - 使用指南及教程
罗昭贝Lovely
HTML到React解析器-使用指南及教程html-react-parser:memo:HTMLtoReactparser.项目地址:https://gitcode.com/gh_mirrors/ht/html-react-parser一、项目介绍HTML到React解析器(html-react-parser)是由remarkablemark开发的一款开源工具库,专为将普通的HTML字符串转换成R
RSocket-JS 使用指南
郁俪晟Gertrude
RSocket-JS使用指南rsocket-jsJavaScriptimplementationofRSocket项目地址:https://gitcode.com/gh_mirrors/rs/rsocket-js1.项目介绍RSocket-JS是一个实现了RSocket协议(版本1.0)的JavaScript库,专为在浏览器环境及Node.js中使用设计。该库允许开发者通过RSocket协议进行高
VitePress 布局插槽使用指南
软考鸭
vitepress vitepress 博客
VitePress是一款基于Vite和Vue3的静态网站生成器,专为文档编写而设计。VitePress的默认主题提供了丰富的布局插槽,允许开发者在页面的特定位置注入自定义内容。本文将详细介绍如何使用这些布局插槽来自定义VitePress站点。一、布局插槽概述VitePress的组件内置了多个插槽,这些插槽允许你在页面的不同区域插入自定义组件或内容。通过利用这些插槽,你可以轻松实现页面布局的个性化定
京东商城手机优惠券使用指南:如何巧妙省钱购物?
日常购物技巧呀
京东商城以其丰富的商品种类、优质的购物体验和完善的售后服务,赢得了广大消费者的青睐。为了回馈广大用户,京东商城不定期推出各种优惠活动,其中手机优惠券作为一种直接而实用的优惠方式,备受消费者关注。那么,京东商城手机优惠券怎么用呢?一、了解手机优惠券的种类和获取方式京东商城的手机优惠券种类繁多,包括满减券、折扣券、直降券等。这些优惠券的获取方式也多种多样,包括但不限于以下几种:签到领取:每天登录京东商
【Rust光年纪】从心理学计算到机器学习:Rust语言数据科学库全方位解读!
friklogff
Rust光年纪 机器学习 rust 人工智能
Rust语言的数据科学和机器学习库大揭秘:核心功能、使用指南一网打尽!前言随着数据科学和机器学习在各个领域的广泛应用,使用高效、稳定的编程语言来实现这些功能变得尤为重要。Rust语言作为一种安全且高性能的系统编程语言,正逐渐成为数据科学和机器学习领域的热门选择。本文将介绍几个优秀的Rust库,它们分别用于心理学计算、统计分析、数据科学和机器学习,让我们一同探索它们的核心功能、使用场景和API概览。
CoreUI免费Laravel管理模板安装与使用指南
皮静滢Annette
CoreUI免费Laravel管理模板安装与使用指南coreui-free-laravel-admin-templateCoreUIFreeLaravelBootstrapAdminTemplate项目地址:https://gitcode.com/gh_mirrors/co/coreui-free-laravel-admin-template1.项目目录结构及介绍CoreUI免费Laravel管理
LangChain系列使用指南:LangChain快速入门
IT猫仔
langchain 语言模型 深度学习 人工智能 数据库
文章目录设置JupyterNotebook安装LangSmith使用LangChain构建LLM链OpenAIOllamaAnthropicCohere深入了解检索链OpenAIOllamaCohere深入探讨对话检索链代理深入探讨使用LangServe进行服务服务器游乐场客户端下一步在本快速入门中,我们将向您展示如何:配置LangChain、LangSmith和LangServe使用LangCh
GPT-4访问入口与使用指南
IT管理圈
python 开发语言 gpt chatgpt 人工智能
深入探讨GPT-4:访问与使用指南随着人工智能技术的飞速发展,GPT-4作为OpenAI推出的最新语言模型,在各个领域中都展现了其强大的能力和潜力。本文将详细介绍如何访问和使用GPT-4,探讨其应用场景,并分享一些使用经验和技巧。什么是GPT-4?GPT-4(GenerativePre-trainedTransformer4)是OpenAI开发的最新一代语言模型。它基于Transformer架构,
WakaTime浏览器扩展程序安装与使用指南
宗隆裙
WakaTime浏览器扩展程序安装与使用指南browser-wakatimeChromeextensionforautomatictimetrackingandmetricsgeneratedfromyourbrowsingactivity.项目地址:https://gitcode.com/gh_mirrors/br/browser-wakatime1.目录结构及介绍WakaTime的浏览器扩展程
ClickHouse安装与使用指南
富艾霏
ClickHouse安装与使用指南clickhouseNodeJSclientforClickHouse项目地址:https://gitcode.com/gh_mirrors/clic/clickhouse项目介绍ClickHouse是由Yandex开发的一个用于在线分析处理(OLAP)的列式数据库管理系统(DBMS)。此开源项目位于https://github.com/TimonKK/click
Pueue 开源项目安装与使用指南
潘惟妍
Pueue开源项目安装与使用指南pueue:stars:Manageyourshellcommands.项目地址:https://gitcode.com/gh_mirrors/pu/pueue1.项目目录结构及介绍Pueue是一个用于管理长时间运行的shell命令的命令行工具,它允许用户以顺序或并行的方式执行任务。下面是其主要的目录结构和关键文件的简要说明:config/:此目录可能包含了Pueu
windows hook之进程防杀(任务管理器)
Wite_Chen
windows 进程防杀 dll注入/卸载
任务管理器防杀指定进程minihook使用指南1、原理注入dll到任务管理,hookOpenProcessAPI实现进程信息获取操作,达到进程防杀2、dll实现#include"pch.h"#include#include"../include/minihook/MinHook.h"#include#include#ifdef_WIN64#pragmacomment(lib,"../include
windows hook之隐藏进程
Wite_Chen
windows dll注入/卸载 进程隐藏
任务管理器隐藏指定进程minihook使用指南1、原理注入dll到任务管理,hookNtQuerySystemInformationAPI实现进程信息获取忽略,达到进程隐藏2、dll实现#include"pch.h"#include#include"../include/minihook/MinHook.h"#include#ifdef_WIN64#pragmacomment(lib,"../in
Linux文本编辑器使用指南:nano、vim、gedit等常见文本编辑器的使用
爱技术的小伙子
Linux运维 linux vim 运维
Linux文本编辑器使用指南:nano、vim、gedit等常见文本编辑器的使用引言在日常的开发工作中,文本编辑器是程序员必不可少的工具。无论是编写代码、编辑配置文件,还是记录笔记,选择一款合适的文本编辑器都能极大地提高工作效率。本文将详细介绍几款常见的文本编辑器:nano、vim和gedit,涵盖其基本使用方法、常用命令及实际应用场景。nano文本编辑器安装在大多数Linux发行版中,nano通
探索微软Edge浏览器的内置开发者工具:功能与使用指南
原机小子
edge 服务器
引言微软Edge浏览器作为Windows10的默认浏览器,不仅提供了现代化的用户体验,还内置了一系列强大的开发者工具,帮助开发者调试网页、分析性能、优化代码等。这些工具对于前端开发者来说,是日常工作中不可或缺的助手。本文将详细介绍Edge浏览器的内置开发者工具,包括它们的功能和使用方法。1.开启开发者工具通过右键点击网页元素并选择“检查”来开启开发者工具。使用快捷键F12或Ctrl+Shift+I
Knife4j自动生成API接口文档,springboot3配置Knife4j
枫斗.
java spring boot
Knife4j自动生成API接口文档Knife4j是一个为Java应用程序提供API文档生成和可视化的开源工具,它基于Swagger和OpenAPI规范。以下是Knife4j的基本使用文档,包括安装、配置和使用指南。1.概述Knife4j是为Java应用程序提供API文档生成、测试、监控的增强解决方案,它整合了SwaggerUI、SwaggerEditor、SwaggerCodegen的功能,同时
软件测试之Selenium 使用指南
测试老哥
selenium 测试工具 python 软件测试 自动化测试 职场和发展 单元测试
视频学习:文末有免费的配套视频可观看点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快Selenium是网页应用中最流行的自动化测试工具,可以用来做自动化测试或者浏览器爬虫等。官网地址为:相对于另外一款web自动化测试工具QTP来说有如下优点:免费开源轻量级,不同语言只需要一个体积很小的依赖包支持多种系统,包括Windows,Mac,Linux支持多种浏览器,包括Chrome,FireF
问答泛单页目录站群通用程序——码山侠
dv20kuxiang
服务器
功能特性:内置ASCII码转换功能:可通过简易开关控制文章中ASCII码的添加。内置缓存管理功能:提供程序缓存开关,以优化性能和响应速度。打开:i5i.net使用指南:本程序无需依赖数据库,仅需部署在支持PHP的服务器环境中。将程序文件放置于网站根目录并配置相应的伪静态规则即可使用。本问答泛目录系统采用单一页面模板设计,若需修改页面上的联系方式,请进入mb(模板)目录,编辑模板文件,并将“填写您的
数据中心代理IP的使用指南:提升网络体验的秘密武器
天启代理ip
网络 tcp/ip 网络协议
在互联网的广阔海洋中,数据中心代理IP是一种常见且实用的工具。无论是个人用户还是企业,使用数据中心代理IP都能带来诸多好处。本文将详细介绍数据中心代理IP的概念、优势以及使用技巧,让你在网络世界中游刃有余。什么是数据中心代理IP?数据中心代理IP是指由数据中心提供的代理IP地址。数据中心通常是大型的服务器集群,拥有大量的IP地址资源。这些IP地址并不与具体的互联网服务提供商(ISP)绑定,而是由数
jsonp 常用util方法
hw1287789687
jsonp jsonp常用方法 jsonp callback
jsonp 常用java方法
(1)以jsonp的形式返回:函数名(json字符串)
/***
* 用于jsonp调用
* @param map : 用于构造json数据
* @param callback : 回调的javascript方法名
* @param filters : <code>SimpleBeanPropertyFilter theFilt
多线程场景
alafqq
多线程
0
能不能简单描述一下你在java web开发中需要用到多线程编程的场景?0
对多线程有些了解,但是不太清楚具体的应用场景,能简单说一下你遇到的多线程编程的场景吗?
Java多线程
2012年11月23日 15:41 Young9007 Young9007
4
0 0 4
Comment添加评论关注(2)
3个答案 按时间排序 按投票排序
0
0
最典型的如:
1、
Maven学习——修改Maven的本地仓库路径
Kai_Ge
maven
安装Maven后我们会在用户目录下发现.m2 文件夹。默认情况下,该文件夹下放置了Maven本地仓库.m2/repository。所有的Maven构件(artifact)都被存储到该仓库中,以方便重用。但是windows用户的操作系统都安装在C盘,把Maven仓库放到C盘是很危险的,为此我们需要修改Maven的本地仓库路径。
placeholder的浏览器兼容
120153216
placeholder
【前言】
自从html5引入placeholder后,问题就来了,
不支持html5的浏览器也先有这样的效果,
各种兼容,之前考虑,今天测试人员逮住不放,
想了个解决办法,看样子还行,记录一下。
【原理】
不使用placeholder,而是模拟placeholder的效果,
大概就是用focus和focusout效果。
【代码】
<scrip
debian_用iso文件创建本地apt源
2002wmj
Debian
1.将N个debian-506-amd64-DVD-N.iso存放于本地或其他媒介内,本例是放在本机/iso/目录下
2.创建N个挂载点目录
如下:
debian:~#mkdir –r /media/dvd1
debian:~#mkdir –r /media/dvd2
debian:~#mkdir –r /media/dvd3
….
debian:~#mkdir –r /media
SQLSERVER耗时最长的SQL
357029540
SQL Server
对于DBA来说,经常要知道存储过程的某些信息:
1. 执行了多少次
2. 执行的执行计划如何
3. 执行的平均读写如何
4. 执行平均需要多少时间
列名 &
com/genuitec/eclipse/j2eedt/core/J2EEProjectUtil
7454103
eclipse
今天eclipse突然报了com/genuitec/eclipse/j2eedt/core/J2EEProjectUtil 错误,并且工程文件打不开了,在网上找了一下资料,然后按照方法操作了一遍,好了,解决方法如下:
错误提示信息:
An error has occurred.See error log for more details.
Reason:
com/genuitec/
用正则删除文本中的html标签
adminjun
java html 正则表达式 去掉html标签
使用文本编辑器录入文章存入数据中的文本是HTML标签格式,由于业务需要对HTML标签进行去除只保留纯净的文本内容,于是乎Java实现自动过滤。
如下:
public static String Html2Text(String inputString) {
String htmlStr = inputString; // 含html标签的字符串
String textSt
嵌入式系统设计中常用总线和接口
aijuans
linux 基础
嵌入式系统设计中常用总线和接口
任何一个微处理器都要与一定数量的部件和外围设备连接,但如果将各部件和每一种外围设备都分别用一组线路与CPU直接连接,那么连线
Java函数调用方式——按值传递
ayaoxinchao
java 按值传递 对象 基础数据类型
Java使用按值传递的函数调用方式,这往往使我感到迷惑。因为在基础数据类型和对象的传递上,我就会纠结于到底是按值传递,还是按引用传递。其实经过学习,Java在任何地方,都一直发挥着按值传递的本色。
首先,让我们看一看基础数据类型是如何按值传递的。
public static void main(String[] args) {
int a = 2;
ios音量线性下降
bewithme
ios音量
直接上代码吧
//second 几秒内下降为0
- (void)reduceVolume:(int)second {
KGVoicePlayer *player = [KGVoicePlayer defaultPlayer];
if (!_flag) {
_tempVolume = player.volume;
与其怨它不如爱它
bijian1013
选择 理想 职业 规划
抱怨工作是年轻人的常态,但爱工作才是积极的心态,与其怨它不如爱它。
一般来说,在公司干了一两年后,不少年轻人容易产生怨言,除了具体的埋怨公司“扭门”,埋怨上司无能以外,也有许多人是因为根本不爱自已的那份工作,工作完全成了谋生的手段,跟自已的性格、专业、爱好都相差甚远。
一边时间不够用一边浪费时间
bingyingao
工作 时间 浪费
一方面感觉时间严重不够用,另一方面又在不停的浪费时间。
每一个周末,晚上熬夜看电影到凌晨一点,早上起不来一直睡到10点钟,10点钟起床,吃饭后玩手机到下午一点。
精神还是很差,下午像一直野鬼在城市里晃荡。
为何不尝试晚上10点钟就睡,早上7点就起,时间完全是一样的,把看电影的时间换到早上,精神好,气色好,一天好状态。
控制让自己周末早睡早起,你就成功了一半。
有多少个工作
【Scala八】Scala核心二:隐式转换
bit1129
scala
Implicits work like this: if you call a method on a Scala object, and the Scala compiler does not see a definition for that method in the class definition for that object, the compiler will try to con
sudoku slover in Haskell (2)
bookjovi
haskell sudoku
继续精简haskell版的sudoku程序,稍微改了一下,这次用了8行,同时性能也提高了很多,对每个空格的所有解不是通过尝试算出来的,而是直接得出。
board = [0,3,4,1,7,0,5,0,0,
0,6,0,0,0,8,3,0,1,
7,0,0,3,0,0,0,0,6,
5,0,0,6,4,0,8,0,7,
Java-Collections Framework学习与总结-HashSet和LinkedHashSet
BrokenDreams
linkedhashset
本篇总结一下两个常用的集合类HashSet和LinkedHashSet。
它们都实现了相同接口java.util.Set。Set表示一种元素无序且不可重复的集合;之前总结过的java.util.List表示一种元素可重复且有序
读《研磨设计模式》-代码笔记-备忘录模式-Memento
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
import java.util.ArrayList;
import java.util.List;
/*
* 备忘录模式的功能是,在不破坏封装性的前提下,捕获一个对象的内部状态,并在对象之外保存这个状态,为以后的状态恢复作“备忘”
《RAW格式照片处理专业技法》笔记
cherishLC
PS
注意,这不是教程!仅记录楼主之前不太了解的
一、色彩(空间)管理
作者建议采用ProRGB(色域最广),但camera raw中设为ProRGB,而PS中则在ProRGB的基础上,将gamma值设为了1.8(更符合人眼)
注意:bridge、camera raw怎么设置显示、输出的颜色都是正确的(会读取文件内的颜色配置文件),但用PS输出jpg文件时,必须先用Edit->conv
使用 Git 下载 Spring 源码 编译 for Eclipse
crabdave
eclipse
使用 Git 下载 Spring 源码 编译 for Eclipse
1、安装gradle,下载 http://www.gradle.org/downloads
配置环境变量GRADLE_HOME,配置PATH %GRADLE_HOME%/bin,cmd,gradle -v
2、spring4 用jdk8 下载 https://jdk8.java.
mysql连接拒绝问题
daizj
mysql 登录权限
mysql中在其它机器连接mysql服务器时报错问题汇总
一、[running]
[email protected] :~$mysql -uroot -h 192.168.9.108 -p //带-p参数,在下一步进行密码输入
Enter password: //无字符串输入
ERROR 1045 (28000): Access
Google Chrome 为何打压 H.264
dsjt
apple html5 chrome Google
Google 今天在 Chromium 官方博客宣布由于 H.264 编解码器并非开放标准,Chrome 将在几个月后正式停止对 H.264 视频解码的支持,全面采用开放的 WebM 和 Theora 格式。
Google 在博客上表示,自从 WebM 视频编解码器推出以后,在性能、厂商支持以及独立性方面已经取得了很大的进步,为了与 Chromium 现有支持的編解码器保持一致,Chrome
yii 获取控制器名 和方法名
dcj3sjt126com
yii framework
1. 获取控制器名
在控制器中获取控制器名: $name = $this->getId();
在视图中获取控制器名: $name = Yii::app()->controller->id;
2. 获取动作名
在控制器beforeAction()回调函数中获取动作名: $name =
Android知识总结(二)
come_for_dream
android
明天要考试了,速速总结如下
1、Activity的启动模式
standard:每次调用Activity的时候都创建一个(可以有多个相同的实例,也允许多个相同Activity叠加。)
singleTop:可以有多个实例,但是不允许多个相同Activity叠加。即,如果Ac
高洛峰收徒第二期:寻找未来的“技术大牛” ——折腾一年,奖励20万元
gcq511120594
工作 项目管理
高洛峰,兄弟连IT教育合伙人、猿代码创始人、PHP培训第一人、《细说PHP》作者、软件开发工程师、《IT峰播》主创人、PHP讲师的鼻祖!
首期现在的进程刚刚过半,徒弟们真的很棒,人品都没的说,团结互助,学习刻苦,工作认真积极,灵活上进。我几乎会把他们全部留下来,现在已有一多半安排了实际的工作,并取得了很好的成绩。等他们出徒之日,凭他们的能力一定能够拿到高薪,而且我还承诺过一个徒弟,当他拿到大学毕
linux expect
heipark
expect
1. 创建、编辑文件go.sh
#!/usr/bin/expect
spawn sudo su admin
expect "*password*" { send "13456\r\n" }
interact
2. 设置权限
chmod u+x go.sh 3.
Spring4.1新特性——静态资源处理增强
jinnianshilongnian
spring 4.1
目录
Spring4.1新特性——综述
Spring4.1新特性——Spring核心部分及其他
Spring4.1新特性——Spring缓存框架增强
Spring4.1新特性——异步调用和事件机制的异常处理
Spring4.1新特性——数据库集成测试脚本初始化
Spring4.1新特性——Spring MVC增强
Spring4.1新特性——页面自动化测试框架Spring MVC T
idea ubuntuxia 乱码
liyonghui160com
1.首先需要在windows字体目录下或者其它地方找到simsun.ttf 这个 字体文件。
2.在ubuntu 下可以执行下面操作安装该字体:
sudo mkdir /usr/share/fonts/truetype/simsun
sudo cp simsun.ttf /usr/share/fonts/truetype/simsun
fc-cache -f -v
改良程序的11技巧
pda158
技巧
有很多理由都能说明为什么我们应该写出清晰、可读性好的程序。最重要的一点,程序你只写一次,但以后会无数次的阅读。当你第二天回头来看你的代码 时,你就要开始阅读它了。当你把代码拿给其他人看时,他必须阅读你的代码。因此,在编写时多花一点时间,你会在阅读它时节省大量的时间。
让我们看一些基本的编程技巧:
尽量保持方法简短
永远永远不要把同一个变量用于多个不同的
300个涵盖IT各方面的免费资源(下)——工作与学习篇
shoothao
创业 免费资源 学习课程 远程工作
工作与生产效率:
A. 背景声音
Noisli:背景噪音与颜色生成器。
Noizio:环境声均衡器。
Defonic:世界上任何的声响都可混合成美丽的旋律。
Designers.mx:设计者为设计者所准备的播放列表。
Coffitivity:这里的声音就像咖啡馆里放的一样。
B. 避免注意力分散
Self Co
深入浅出RPC
uule
rpc
深入浅出RPC-浅出篇
深入浅出RPC-深入篇
RPC
Remote Procedure Call Protocol
远程过程调用协议
它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发