首页 文章 精选 留言 我的

精选列表

搜索[网站开发],共10000篇文章
优秀的个人博客,低调大师

区块链开发知识框架

区块链学习更多的是去理解这种去中心化的思想和去中心化的价值所在,语言倒是其次的东西。 不过由于以太坊和Hyperledger Fabric 对go语言支持最好,所以go语言肯定是要学习的。 下面把我另外一个问题的答案copy过来,希望对你有所帮助。 背景介绍:本人从2015年开始研究区块链技术,也算是对区块链有一定的了解吧。 申明:预估看到本问题的知乎er应该都是想要入门区块链,那么本回答也主要是进行一个入门级别的介绍。只是入门级别介绍,不适合区块链从业人员提升学习。 ----------------------------------- 回答的目录如下: 一、区块链是什么? 二、从业务角度学习区块链技术? 三、从技术角度学习区块链技术? 四、学习资料推荐与共享? ------------------------------------- 一、区块链是什

优秀的个人博客,低调大师

Terraform alicloud provider开发入门

Terraform和AliCloud Terraform provider简介 Terraform是一家名叫HashCorp的洛杉矶公司推出的,HashCorp名称来源于它的创始人Mitchell Hashimoto姓氏的一部分。Terraform宣称可以“为任意的应用部署任意的基础设施资源”,这得益于丰富的Terraform provider,目前全球顶级云计算玩家和热门的云计算架构(OpenStack/Kubernetes/Docker)都为Terraform贡献了provider。阿里云也不例外,AliCloud Terraform provider作为支持Terraform的providers之一,目前支持ECS, Block Storage, SLB, VPC, Nat Gateway, RDS, ESS, OSS等云产品

优秀的个人博客,低调大师

php开发常用函数总结

1 2 3 4 5 6 7 8 9 10 http_build_query() <?php $data=array( 'foo' => 'bar' , 'baz' => 'boom' , 'cow' => 'milk' , 'php' => 'hypertextprocessor' ); echo http_build_query($data); foo=bar&baz=boom&cow=milk&php=hypertext+processor ?> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 mktime() <?php // 输出:October3,1975wasonaFriday echo "Oct3,1975wasona" . date ( "l" ,mktime(0,0,0,10,3,1975)). "<br><br>" ; // 在进行日期计算和验证时会用到mktime()函数 // 它会对超出范围的输入值自动计算正确的值: echo date ( "M-d-Y" ,mktime(0,0,0,12,36,2001)). "<br>" ; echo date ( "M-d-Y" ,mktime(0,0,0,14,1,2001)). "<br>" ; echo date ( "M-d-Y" ,mktime(0,0,0,1,1,2001)). "<br>" ; echo date ( "M-d-Y" ,mktime(0,0,0,1,1,99)). "<br>" ; ?> Oct3,1975wasonaFriday Jan-05-2002 Feb-01-2002 Jan-01-2001 Jan-01-1999 $today=mktime(0,0,0, date ( 'm' ), date ( 'd' ), date ( 'Y' )); 1 2 3 4 5 6 7 8 9 10 mb_strlen <?php // 测试时文件的编码方式要是UTF8 $str= '中文a字1符' ; echo strlen($str). '<br>' ; //14 echo mb_strlen($str, 'utf8' ). '<br>' ; //6 echo mb_strlen($str, 'gbk' ). '<br>' ; //8 echo mb_strlen($str, 'gb2312' ). '<br>' ; //10 ?> 1 2 3 4 5 6 7 8 9 10 11 12 strip_tags() <?php $text= '<p>Testparagraph.</p><!--Comment--><ahref="#fragment">Othertext</a>' ; echo strip_tags($text); echo "" ; // 允许<p>和<a> echo strip_tags($text, '<p><a>' ); ?> Testparagraph.Othertext <p>Testparagraph.< /p ><ahref= "#fragment" >Othertext< /a > 1 2 3 4 5 6 7 8 9 10 11 array_push() <?php $a=array(); array_push($a, "blue" , "yellow" ); print_r($a); ?> Array ( [0]=>blue [1]=>yellow ) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 array_merge() <?php $a1=array( "red" , "green" ); $a2=array( "blue" , "yellow" ); print_r(array_merge($a1,$a2)); ?> Array ( [0]=>red [1]=>green [2]=>blue [3]=>yellow ) 1 2 3 4 5 mb_substr() <?php $aaa= "this这是中文字符串" ; echo mb_substr($aaa,0,6, 'UTF-8' ); // 输出值为:this这是 1 2 3 4 strtotime <?php echo strtotime( date ( "Y-m-d" , time ())); //1483632000 1 2 3 4 5 6 7 8 9 10 11 12 13 14 intval()floatval()strval() <?php $str= "123.9abc" ; $int=intval($str); var_dump($int); $float=floatval($str); var_dump($float); $str=strval($str); var_dump($str); ?> int(123) float(123.9) string(8) "123.9abc" 本文转自ning1022 51CTO博客,原文链接:http://blog.51cto.com/ning1022/1889697 ,如需转载请自行联系原作者

优秀的个人博客,低调大师

阿里JAVA 开发手册----整理

1、命名严禁使用拼音与英文混合的方式。 2、领域模型命名规约 1) 数据对象: xxxDO, xxx 即为数据表名。 2) 数据传输对象: xxxDTO, xxx 为业务领域相关的名称。 3) 展示对象: xxxVO, xxx 一般为网页名称。 4) POJO 是 DO/DTO/BO/VO 的统称,禁止命名成 xxxPOJO。 3、long 或者 Long 初始赋值时,必须使用大写的 L,小写容易跟数字 1 混淆,造成误解。 4、避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成 本,直接用类名来访问即可。 5、说明: 可变参数必须放置在参数列表的最后。(提倡同学们尽量不用可变参数编程) 正例: public User getUsers(String type, Integer... ids);(可为null的参数放最后) 6、Object 的 equals 方法容易抛空指针异常,应使用常量或确定有值的对象来调用 equals。 正例: "test".equals(object); 7、所有的相同类型的包装类对象之间值的比较,全部使用 equals 方法比较。 说明: 对于 Integer var=?在-128 至 127 之间的赋值, Integer 对象是在 IntegerCache.cache 产生,会复用已有对象,这个区间内的 Integer 值可以直接使用==进行判断,但是这个区间之 外的所有数据,都会在堆上产生,并不会复用已有对象,这是一个大坑,推荐使用 equals 方 法进行判断。 8、注意 serialVersionUID 不一致会抛出序列化运行时异常。 9、关于基本数据类型与包装数据类型的使用标准如下: 1) 所有的 POJO 类属性必须使用包装数据类型。 2) RPC 方法的返回值和参数必须使用包装数据类型。 3) 所有的局部变量推荐使用基本数据类型。 10、final 可提高程序响应效率,声明成 final 的情况: 1) 不需要重新赋值的变量,包括类属性、局部变量。 2) 对象参数前加 final,表示不允许修改引用的指向。 3) 类方法确定不允许被重写。 11、对象的 clone 方法默认是浅拷贝,若想实现深拷贝需要重写 clone 方法实现属性对象的 拷贝。 12、Map/Set 的 key 为自定义对象时,必须重写 hashCode 和 equals。 正例: String 重写了 hashCode 和 equals 方法,所以我们可以非常愉快地使用 String 对象作 为 key 来使用。 13、ArrayList 的 subList 结果不可强转成 ArrayList,否则会抛出 ClassCastException 异常: java.util.RandomAccessSubList cannot be cast to java.util.ArrayList ; 说明: subList 返回的是 ArrayList 的内部类 SubList,并不是 ArrayList ,而是 ArrayList 的一个视图,对于 SubList 子列表的所有操作最终会反映到原列表上。 14、List<String> list = new ArrayList<String>(2); list.add("guan"); list.add("bao"); String[] array = new String[list.size()]; array = list.toArray(array); 说明: 使用 toArray 带参方法,入参分配的数组空间不够大时, toArray 方法内部将重新分配 内存空间,并返回新数组地址;如果数组元素大于实际所需,下标为[ list.size() ]的数组 元素将被置为 null,其它数组元素保持原值。 15、使用工具类 Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方法, 它的 add/remove/clear 方法会抛出 UnsupportedOperationException 异常。 说明: asList 的返回对象是一个 Arrays 内部类,并没有实现集合的修改方法。 Arrays.asList 体现的是适配器模式,只是转换接口,后台的数据仍是数组。 String[] str = new String[] { "a", "b" }; List list = Arrays.asList(str); 第一种情况: list.add("c"); 运行时异常。 第二种情况: str[0]= "gujin"; 那么 list.get(0)也会随之修改。 16、不要在 foreach 循环里进行元素的 remove/add 操作(会抛出ConcurrentModificationException)。 remove 元素请使用 Iterator 方式,如果并发操作,需要对 Iterator 对象加锁。 17、Map集合:values()返回的是 V 值集合,是一个 list 集合对象; keySet()返回的是 K 值集合,是 一个 Set 集合对象; entrySet()返回的是 K-V 值组合集合。 18、高并发时,同步调用应该去考量锁的性能损耗。能用无锁数据结构,就不要用锁;能 锁区块,就不要锁整个方法体;能用对象锁,就不要用类锁。 19、线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样 的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。 说明: Executors 各个方法的弊端: 1) newFixedThreadPool 和 newSingleThreadExecutor: 主要问题是堆积的请求处理队列可能会耗费非常大的内存,甚至 OOM。 2) newCachedThreadPool 和 newScheduledThreadPool: 主要问题是线程数最大数是 Integer.MAX_VALUE,可能会创建数量非常多的线程,甚至 OOM。 20、注意,子线程抛出异常堆栈,不能在主线程 try-catch 到。 21、注意 Math.random() 这个方法返回是 double 类型,注意取值范围 0≤x<1(能够取 到零值,注意除零异常)。 22、单表行数超过 500 万行或者单表容量超过 2GB,才推荐进行分库分表。 23、where a=? and b>? 多个查询条件,区分度高的在前,有=的在前。 24、禁止使用存储过程,存储过程难以调试和扩展,更没有移植性(隐藏在DB中,不直观难维护)。 25、删除和修改记录时,要先 select,避免出现误删除,确认无误才能 提交执行。 26、in 操作能避免则避免,若实在避免不了,需要仔细评估 in 后边的集合元素数量,控 制在 1000 个之内。 27、<isNotEmpty>表示不为空且不为 null 时执行; <isNotNull>表示不为 null 值时执行。 28、mysql类型DECIMAL 实际是以串存放的。尽量用DECIMAL取代float和double。 --分为Java语言部分、集合框架、Java线程与并发、数据库。 https://yq.aliyun.com/articles/240163?spm=5176.10695662.1996646101.searchclickresult.7b4515c54fNXir

优秀的个人博客,低调大师

intellij 开发调试elasticsearch插件

elasticsearch之所以功能比较强大,更多的是因为其插件机制比较灵活,可以直接不需要改动源码的情况下,被es的节点扫描加载。本篇文章就简单的讲一下如何进行调试插件,其实无论是river、analysis或者是其他的plugin,都是差不多的写法,所以我们用其中一个river的插件来演示下如何进行调试。 首先,在github上git clone对应的elasticsearch的源码,然后在intellij中将其import进来作为project。 然后,在github上git cloneelasticsearch-rabbitmq-river的源码,然后在intellij中作为elasticsearch项目的一个module进行import。 效果如图, 接下来进行运行,这步是最重要的,也是如何让plugin可以在elasticsearch加载的关键。 1、点击run菜单选择-》configure 2、新建一个application,Main class 选择 org.elasticsearch.bootstrap.Bootstrap 3、Vm options 中填-Des.foreground=true 保证可以让es在前台运行,并输出日志 4、最重要的,将Use classpath of module选择为插件的项目,即elasticsearch-river-rabbitmq 最后、Debug as 就OK了。

优秀的个人博客,低调大师

IOS开发——Protocol使用协议

protocol ['prəutəkɔl](样例:http://blog.sina.com.cn/s/blog_6aafe9c90100yozz.html)一、说明 两个类进行通讯,用协议就比較方便。 1.协议声明了能够被不论什么类实现的方法 2.协议不是类,它是定义了一个其它对象能够实现的接口 3.假设在某个类中实现了协议中的某个方法,也就是这个类实现了那个协议。 4.协议经经常使用来实现托付对象。一个托付对象是一种用来协同或者代表其它对象的特殊对象。 5:托付,就是调用自定义方法,别的类来实现。 6.新特性说明 @optional预编译指令:表示能够选择实现的方法 @required预编译指令:表示必须强制实现的方法 二、定义 .h @protocol ContactCtrlDelegate -(void)DismissContactsCtrl; @end @interface ContactsCtrl : UIViewController { id <ContactCtrlDelegate> delegate; } @property (nonatomic, assign) id <ContactCtrlDelegate> delegate; .m @synthesize delegate; 三、样例 比如:UITextView @protocol UITextViewDelegate <NSObject> @optional - (BOOL)textViewShouldBeginEditing:(UITextView *)textView; - (BOOL)textViewShouldEndEditing:(UITextView *)textView; - (void)textViewDidBeginEditing:(UITextView *)textView; - (void)textViewDidEndEditing:(UITextView *)textView; - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text; - (void)textViewDidChange:(UITextView *)textView; - (void)textViewDidChangeSelection:(UITextView *)textView; @end 假设要调用以上这些方法。就必须设置UITextView的托付:TextView.delegate = self; 四、Demo 1、ContactsCtrl.h #import <UIKit/UIKit.h> //定义协议 @protocol ContactCtrlDelegate -(void)DismissContactsCtrl; @end @interface ContactsCtrl : UIViewController { IBOutlet UINavigationBar *ContactNavBar; id <ContactCtrlDelegate> delegate; } @property (nonatomic, assign) id <ContactCtrlDelegate> delegate; -(IBAction)canCelBtn:(id)sender; @end 2、ContactsCtrl.m @implementation ContactsCtrl @synthesize delegate; // Implement viewDidLoad to do additional setup after loading the view, typically from a nib. - (void)viewDidLoad { [super viewDidLoad]; ContactNavBar.topItem.prompt = @"选取联系人发送短信"; } //调用协议中的方法 -(IBAction)canCelBtn:(id)sender{ [delegate DismissContactsCtrl]; } 3、ProtocolDemoCtrl.h #import <UIKit/UIKit.h> #import "ContactsCtrl.h" @interface ProtocolDemoCtrl : UIViewController <ContactCtrlDelegate>{//加入托付 ContactsCtrl *contactsView; } 4、ProtocolDemoCtrl.m #import "ProtocolDemoCtrl.h" #define BARBUTTONADD(SELECTOR) [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:SELECTOR] autorelease]; @implementation ProtocolDemoCtrl @synthesize contactsView; // Implement viewDidLoad to do additional setup after loading the view, typically from a nib. - (void)viewDidLoad { [super viewDidLoad]; self.navigationItem.rightBarButtonItem = BARBUTTONADD(@selector(addContactAction:)); } - (void)addContactAction:(id)sender{ ContactsCtrl *contactView = [[ContactsCtrl alloc] initWithNibName:@"ContactsCtrl" bundle:nil]; self.contactsView = contactView; contactsView.delegate = self;//设置托付 [self presentModalViewController:contactsView animated:YES]; [contactView release]; } //实现ContactCtrlDelegate协议中的方法 -(void)DismissContactsCtrl{ [contactsView dismissModalViewControllerAnimated:YES]; } 综上,假设A类.h文件定义了一个协议,在A类里面我们还须要定义一个托付delegate,协议里面有个必须实现的methodA方法(@required,这种方法在实现了协议的类里面实现),在A类的.m文件里须要调用这个methodA方法,我们使用托付调用这个methodA方法 [delegate DismissContactsCtrl]; 类B实现了这个协议,在.h文件里定义类A的对象a,在.m文件里须要实现methodA方法。而且须要设置托付 a.delegate = self;//设置托付 假设MethodA返回的是B类的对象,那么在A类中就能够调用B类属性和方法国,B这个类可以调用A的属性和方法。 版权声明:本文博客原创文章。博客,未经同意,不得转载。 本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/4657138.html,如需转载请自行联系原作者

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册