哪个平台直播现在玩什么游戏人最多多最好

分享给朋友:通用代码: <input id="link4" type="text" class="form_input form_input_s" value="" />复 制flash地址: 复 制html代码: <input type="text" class="form_input form_input_s" id="link3" value="" />复 制分享视频到站外获取收益&&手机扫码分享视频二维码2小时内有效第二十七期 中国有真正的独立游戏吗?下载至电脑扫码用手机看用或微信扫码在手机上继续观看二维码2小时内有效第二十七期 中国有真正的独立游戏吗?扫码用手机继续看用或微信扫码在手机上继续观看二维码2小时内有效,扫码后可分享给好友没有优酷APP?立即下载请根据您的设备选择下载版本选集相关片段
药品服务许可证(京)-经营-请使用者仔细阅读优酷、、Copyright(C)2017 优酷
版权所有不良信息举报电话:系统现状: 由于系统目前提醒是在公共模块,对于提醒的数目实时计算。对于db的压力较大。因此采用J2cache的两级缓存。关于两级缓存的说明 但是当部分业务更新时需要将缓存删除,导致系统在某个时间点出现db负载过大。 对应业务系统出现大量慢sql以及由于超时无法完成的请求 出现了系统雪崩的场景。 两级缓存实现分析之缓存设置
===》当大量请求提醒的业务sql过来导致系统无法及时的响应。而提醒sql又出现超时是的无法真正的缓存下来。使的sql越积越多,db负载过高。直到有成功将缓存写入或者db被击穿。 对策: 改写sql,尽量提高sql效率
在缓存处加分布式锁,避免同时回源 第一个策略对于系统并没有得到很好的缓解。主要是由于该发生提醒缓存失效使用的用户较多,用户频繁请求数据,导致结果无法在有效的h时间内缓存,出现大量慢sql请求直至系统超时。 那么我们要做的就是在缓存上增加blockingcache的功能。 那么何为blockingCache呢?需要哪些功能呢? 对于系统同一个缓存在多个请求过来时能hold住其他请求,单个请求执行业务 防止出现死锁,在系统挂掉的情况下锁能够自动释放 可定义的超时时长 其他请求在缓存中设置过值之后自动苏醒,返回缓存结果 支持可重入 其他...
通过王者荣耀,我们来聊一聊帧MOBA游戏的技术实现以及同步方式
& 通过上一篇[《Spring Cloud构建微服务架构:服务消费(基础)》](/spring-cloud-starter-dalston-2-1/),我们已经学会如何通过`LoadBalancerClient`接口来获取某个服务的具体实例,并根据实例信息来发起服务接口消费请求。但是这样的做法需要我们手工的去编写服务选取、链接拼接等繁琐的工作,对于开发人员来说非常的不友好。所以,下来我们看看Spring Cloud中针对客户端负载均衡的工具包:Spring Cloud Ribbon。 ## Spring Cloud Ribbon Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。它是一个基于HTTP和TCP的客户端负载均衡器。它可以通过在客户端中配置ribbonServerList来设置服务端列表去轮询访问以达到均衡负载的作用。 当Ribbon与Eureka联合使用时,ribbonServerList会被DiscoveryEnabledNIWSServerList重写,扩展成从Eureka注册中心中获取服务实例列表。同时它也会用NIWSDiscoveryPing来取代IPing,它将职责委托给Eureka来确定服务端是否已经启动。 而当Ribbon与Consul联合使用时,ribbonServerList会被ConsulServerList来扩展成从Consul获取服务实例列表。同时由ConsulPing来作为IPing接口的实现。 我们在使...
Golang不使用cgo,直接操作共享内存。
火热的八月,OSC源创会带着自由、开放、分享的开源精神,也带着满满的干货主题,邀请珠海的各位来约。
博主上一编博文分析了小米的温湿度协议,提出了些疑问,本期解答
据拉里·沃尔(一位非常著名的程序员)说,懒惰是一种美德。懒惰的程序员提出节省劳力的解决方案。 如果你想节省自己和别人的时间,让micropython代码易于重复使用、阅读。 本文假设您已经熟悉对象、类和组合的概念,并且知道如何用Python编写类定义。如果您不熟悉Python的对象定位(O O),您可能会发现代码很难遵循。我在本文后面对O作了简短的介绍。 有几种学习Python的方法。这里有一个“官方”教程,但是我不确定初学者是否会觉得很容易理解。有一本看起来不错的书。它需要大量的时间和金钱投入,但是我认为如果你需要提高你的Python技能是值得的。 我可能会着手写我自己的介绍,但这是一个重大项目,需要一段时间。现在,即使您不熟悉O,也应该能够跟踪大多数文章并运行示例代码。 Python(micropython)对物理计算非常有用
Python是当之无愧的物理计算应用中一个非常流行的语言。 Python很容易学习,它很有表现力,可以在Linux、Mac OS和微软Windows上免费使用。 Python让树莓派充满活力,大量代码树莓派的代码都是用Python实现的。 最近,micropython带来了语言的几个流行的单片机平台,包括BBC microbit。 但… 大多数已发表micropython脚本使用Python程序风格...
递归是一种符合人的思维习惯的解决问题方法,文章针对不理解递归的朋友的程序员朋友去剖析和理解递归.
# 简介 最近工作中需要使用zookeeper配置中心管理各系统的配置,也就是需要在项目启动时,加载zookeeper中节点的子节点的数据(例如数据库的地址,/config/db.properties/db.addr),并替代spring xml里的占位符。既然需要替代占位符,那么自然会想到PropertyPlaceholderConfigurer这个类,该类实现了在容器的bean初始化前,替代spring容器的BeanDefinition中的值。 本文将对PropertyPlaceholderConfigurer源码进行解析。 为了简化整个分析流程,假设定义了一个bean ZookeeperUtil,需要PropertyPlaceholderConfigurer类修改beanDefinition定义,替换${zookeeper.addr}。 ``` classpath:config.properties ``` --- # 什么是BeanFactoryPostProcessor org.springframework.beans.factory.config.BeanFactoryPostProcessor接口是spring的一个扩展点。它提供了在容器创建bean之前,对bean的定义(配置元数据)进行处理的方法。 BeanFactoryPostProcessor接口定义了一个抽象方法: ``` void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansE ``` 其中,beanFactory是bean工厂,里面封装了beanDefinition,也就是bean在xml的定义。...
这是一篇主要针对技术小白的文章。本文尽量使用通俗易懂但又不失要义的文字,带你深入剖析当前备受追捧的比特币背后的深层技术原理,最后会简要介绍一下业界市场的现状。
软件周刊(06.25 — 07.01):本周热门软件更新 — JCP EC 投票通过 Java 模块化系统,RedHat 弃票;LibreOffice 5.3.4 发布,与微软 Office 文档兼容良好;Opera 46 引入了对 APNG 文件的支持,注重稳定性;Sharding-JDBC 1.5.0.M2 发布,兼容各种主流数据库
【一周源资讯(-)】“想哭”病毒风波刚刚平息,本周又发生了不少安全事故。类似“WannaCry”的新勒索病毒席卷欧洲;Windows 10 源代码网上泄漏……
每周为您推送最有价值的开源技术内参!
视频在这里:/x/page/b0519geiro4.html 《初心》十集技术人物纪录片 | 第八集 由 InfoQ 二叉树 出品 吴瀚清,又称刺、aullik5、大风、道哥、小黑,现任阿里云首席安全研究员,云盾负责人。《白帽子讲Web安全》作者,微信公众号:道哥的黑板报。 少年时代 我从小到大一直都是学霸,除了上大学之后。 我出生在一个医生和教师的家庭,在湖南大学长大,周围的同学可能都是大学老师的孩子,这种环境的熏陶让我养成了在学习方面比较刻苦的习惯,考试总是拿第一第二。 但其实这种环境比较压抑人的个性,也就导致我的内心实际上还是有一点点的叛逆,在进入大学没人管之后,就开始叛逆,然后开始研究黑客技术。 我大学没有做对一件事情,可能唯一做对的事情就是把幻影(注:吴瀚清在大学期间创办的安全社区)做下去了。 我觉得幻影有它有运气的地方,也有它没有运气的地方,其实当时创办它没有那么复杂的想法,纯粹是出于技术上的一种狂热,所以就成立了这么一个团体。 我们没有收入来源,在当时遭遇了一些 DDOS 攻击,然后就把它给关掉了,到今天比较惋惜。 难能可贵的是其中有一些人把他们做的事情一直延续到了今天,这些人基本上都成为了现在这些安全公司的一些...
感觉好久没更新xposed教程了。应该有两个月了,主要是工作太忙,没有时间写博客。这节主要讲解XposedHelpers类的一些用法,对前面内容有遗忘的可以再回过去预习下。 更多精彩内容可以关注我的博客:[]()
最近在群里看到一问题:说一个脚本执行了很长时间不知道执行多少了,有没有什么方法能够知道进度,就想起许早时接触换行符的经历,就着墨一二以做记录。
前言 最近生产环境有个老项目一直内存报警,不时的还出现内存泄漏,导致需要重启服务器,已经严重影响正常服务了。 分析 1.dump内存文件 liunx使用如下命令: ./jmap -dump:format=b,file=heap.hprof pid 2.使用Eclipse Memory Analysis进行分析 异常如下: t org.apache.poi.xssf.usermodel.XSSFRow.&init&(Lorg/openxmlformats/schemas/spreadsheetml/x2006/main/CTRLorg/apache/poi/xssf/usermodel/XSSFS)V (XSSFRow.java:68)
at org.apache.poi.xssf.usermodel.XSSFSheet.initRows(Lorg/openxmlformats/schemas/spreadsheetml/x2006/main/CTW)V (XSSFSheet.java:157)
at org.apache.poi.xssf.usermodel.XSSFSheet.read(Ljava/io/InputS)V (XSSFSheet.java:132)
at org.apache.poi.xssf.usermodel.XSSFSheet.onDocumentRead()V (XSSFSheet.java:119)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.onDocumentRead()V (XSSFWorkbook.java:222)
at org.apache.poi.POIXMLDocument.load(Lorg/apache/poi/POIXMLF)V (POIXMLDocument.java:200)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.&init&(Ljava/io/InputS)V (XSSFWorkboo...
在处理定制的返回结果时,Spring framework 4.0 提供了比较完整的方法,包括正常返回和异常处理
Python 由于本身的易用优势和强大的工具库储备,成为了在人工智能及其它相关科学领域中最常用的语言之一。尤其是在机器学习,已然是各大项目最偏爱的语言。 其实除了 Python ,也不乏有开发者用其他语言写出优秀的机器学习项目。在上期的文章中(除了 Python ,这些语言写的机器学习项目也很牛(一)),我们已经列了一些其他语言(C、C++、Go、Java、Javascript)值得关注的开源机器学习项目,本期将针对 PHP、Ruby、Objective C、Swift、Scala 进行补全,同时应上期留言要求,在文末列了一些 .NET 平台上的机器学习项目。 1、PHP PHP-ML —— 机器学习库 PHP-ML 是 PHP 的机器学习库,同时包含算法、交叉验证、神经网络、预处理、特征提取等多种特性。要求 PHP 版本 & = 7.0 。 PHP-ML 提供的机器学习算法包括:关联规则学习(Apriori 算法)、分类器(SVC、KNN、贝叶斯)、回归(最小二乘线性回归、支持向量回归)、聚类(KMeans、基于密度的聚类算法)、矩阵运算相关(准确率、混肴矩阵、与分类相关的结论如精确度、召回率、F1 值、支持率)、模型运算管道(Pipeline)、神经网络(多层感知机)等。 2、Ruby Treat ——自然语言处理框架 Treat 是一个自然语言处理和...
大多数程序员和项目经理回避单元测试是因为工作量巨大且在面向数据库应用没有很好的工具能支撑,XLSUnit是我在公司研发部开发的一款面向数据库的单元测试工具,它能有效减少单元测试代码量和辅助面向数据库应用测试
继wannacry之后,Petya勒索软件攻击再次席卷全球,对欧洲、俄罗斯等多国政府、银行、电力系统、通讯系统、企业以及机场造成了不同程度的影响。
研究发现,Petya 会锁定磁盘的 MFT 和 MBR 区,导致计算机无法启动。除非受害者支付赎金解锁,否则无法恢复他们的系统。但在此前的wannacry勒索软件事件发生的时候,阿里聚安全就建议大家不要支付赎金,一方面支付赎金后不一定能找回数据,其次这些赎金会进一步刺激攻击者挖掘漏洞,并升级攻击手段。
好消息是Cybereason安全研究员Amit Serper已经找到了一种方法来防止Petya (notpetya / sortapetya / petna)勒索软件来感染电脑,这种方法简直一劳永逸!
研究员蜂拥寻找killswitch机制 在Petya 爆发的第一时间,国内外安全研究人员们蜂拥而上对其进行分析,一开始他们认为Petya无非是新瓶装旧酒,和其他勒索软件相似。但在进一步研究过程中,他们发现这是一种全新的勒索蠕虫病毒。因此它的名字从Petya逐渐变为Notpetya,Petna,以及SortaPetya。
研究员分析勒索软件的运作机制后,发现NotPetya会搜索本地文件,如果文件已经在磁盘上存在,那么勒索软件就会退出加密。这意味着,受害者只需要在自己电脑上创建这个文...
【一周源资讯(-)】Flash 该不该开源?Angular 和 Vue你站那个?如何客观评价程序员的好坏?
由于新版本的Angular修改的幅度非常大,导致有一些新特性Vue一时间没来得及抄过去。那么,具体有哪些呢? 目前已经比对过的特性列表如下(如有遗漏后面再补充,在对比研究的过程中,发现一些新特性已经被抄过去了,小括号有标注): @angular/cli 集成测试工具Protractor TypeScript AOT&Tree Shaking(已被抄) Dependency Injection(已被抄) NgModule 路由守卫(已被抄) RxJS Ionic @angular/cli 在开篇《Angular有哪些地方比Vue更优秀?》中已经说过这一点,细节请自行跳转过去阅读。 为了有一个直观的感受,我再把两幅对比图贴到这里: 集成测试工具Protractor 这一点在《Angular有哪些地方比Vue更优秀?》中同样已经做过细节说明,这里不再重复。 正是由于vue-cli的薄弱,它完全没有对集成测试提供任何支持,而Angular有专门设计的集成测试工具Protractor: TypeScript 有很多开发者仍然对使用TypeScript存有疑问,而实际上TypeScript并不需要花费你太多的学习时间,你可以一边上手玩,一边熟悉它。 对于新版本的Angular为什么要选择TypeScript作为开发语言,Victor Savkin的这篇长长的文章做了详细的解释,/writing-angular-2-in-typescript-1...
![](https://www.yunai.me/images/common/wechat_mp_.jpg) & ???关注**微信公众号:【芋艿的后端小屋】**有福利: & 1. RocketMQ / MyCAT / Sharding-JDBC **所有**源码分析文章列表 & 2. RocketMQ / MyCAT / Sharding-JDBC **中文注释源码 GitHub 地址** & 3. 您对于源码的疑问每条留言**都**将得到**认真**回复。**甚至不知道如何读源码也可以请教噢**。 & 4. **新的**源码解析文章**实时**收到通知。**每周更新一篇左右**。 & 5. **认真的**源码交流微信群。 ------- - [1. 概述](#) - [2. SelectStatement](#) - [2.1 AbstractSQLStatement](#) - [2.2 SQLToken](#) - [3. #query()](#) - [3.1 #parseDistinct()](#) - [3.2 #parseSelectList()](#) - [3.3 #skipToFrom()](#) - [3.4 #parseFrom()](#) - [3.5 #parseWhere()](#) - [3.6 #parseGroupBy()](#) - [3.7 #parseOrderBy()](#) - [3.8 #parseLimit()](#) - [3.9 #queryRest()](#) - [4. appendDerived等方法](#) - [4.1 appendAvgDerivedColumns](#) - [4.2 appendDerivedOrderColumns](#) - [4.3 ItemsToken](#) - [4.4 appendDerivedOrderBy()](#) - [666. 彩蛋](#) ------- # 1. 概述 ...
JAVA内存模型JMM是JVM虚拟机所独创的专为并发而优化的内存模型,也是JAVA实现并发的原理所在,了解它对并发编程有极高的意义。
一、客户端代码 ``` public class UploadPicClient { public static void main(String[] args) throws IOException { //新建一个客户端socket,确定服务端的ip和端口 Socket s = new Socket("192.168.1.100",10007); //源:创建读取指定图片的读取流 FileInputStream fis = new FileInputStream("F:\\Desert.jpg"); //目的:获取socket的输出流 OutputStream out = s.getOutputStream(); //频繁读写 int len = 0; byte[] buf = new byte[1024]; while((len=fis.read(buf))!=-1){ out.write(buf,0,len); } //告诉服务端图片发送完毕,不要等着读了 s.shutdownOutput(); //读取服务器反馈的成功消息 InputStream in = s.getInputStream(); byte[] bufIn = new byte[1024]; int lenIn = in.read(bufIn); System.out.println(new String(bufIn,0,lenIn)); //关闭 fis.close(); s.close(); } } ``` 二、服务端代码 ``` public class UploadPicServer { public static void main(String[] args) throws IOException { System.out.println("上传图片服务端运行..."); //创建server socket ServerSocket ss = new ServerSocket(10007); while (true){ //获取客户端 Socket s = ss....
参考: /developerworks/cn/java/l-jfreechart/#icomments 写的很好 引入jar
jcommon-1.0.13.jar
jfreechart-1.0.10.jar 柱状图源码:
生成一个jpg文件,可以修改文件名和指定保存的路径
import java.io.FileOutputS
import java.io.IOE
import org.jfree.chart.ChartF
import org.jfree.chart.ChartU
import org.jfree.chart.JFreeC
import org.jfree.chart.plot.PlotO
import org.jfree.data.category.CategoryD
import org.jfree.data.category.DefaultCategoryD
* 该类用于演示最简单的柱状图生成
public class BarChartDemo {
public static void main(String[] args) throws IOException{
CategoryDataset dataset = getDataSet(); //获取一个演示用的简单数据集对象
CategoryDataset dataset = getDataSet2(); //获取一个演示用的组合数据集对象
JFreeChart chart = ChartFactory.createBarChart3D(
"水果产量图", // 图表标题
一.水平格式化的7个属性:
margin-left,border-left,padding-left,width,margin-right,border-right,padding-right 这7个属性的值相加必须等于其包含块的宽度(即其父元素的width值) 1.这7个属性中只有3个可以设置为auto: margin-left,width,margin-right 如果这三个都设置成确定值,若水平格式化的7个属性值相加不等于包含块的宽度,则margin-right被强转为auto 如果两个外边距都设置为auto,此元素将在父元素中水平居中 如果三个属性都设置为auto,则外边距被设置为0,width会尽可能宽,这种情况和默认值即不显示声明外边距和宽度的情况一样 水平外边距不会合并(垂直外边距会合并) 二.垂直格式化的7个属性:
margin-top,border-top,padding-top,height,margin-bottom,border-bottom,padding-bottom 和水平格式化的7个属性一样,这7个属性的值相加必须等于其包含块的高度(即其父元素的height值) 1.这7个属性中只有3个可以设置为auto: margin-top,height,margin-bottom 如果将一个元素的上下外边距设置为auto,实际上它们会重置为0 可以将元素的上下外边距设置成25%使元素居中,但是百分数是根据父元素的高度计算的,如果没有显示声明父元素的height,百分...
—图论和网络爬虫
因为工作需要正在研究中..... js-sdk 官方 文档说明:https://mp./wiki?t=resource/res_main&id=mp
绑定js安全域名 2. 引入微信接口文件
http://res./open/js/jweixin-1.2.0.js 3.获取access_token 有个测试地址:https://mp./debug/,填入appid和appsecret,就可以获取到, 或者 通过地址 https://api./cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET 红色部分改成自己的,成功后有效期两个小时 4.获取jsapi_ticket 通过以下链接获取: https://api./cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi 成功返回,有效期两个小时 {
"errcode":0,
"errmsg":"ok",
"ticket":"bxLdikRXVbTPdHSM05e5u5sUoXNKd8-41ZO3MhKoyN5OfkWITDGgnr2fwJ0m9E8NYzWKVZvdVtaUgWvsdshFKA",
"expires_in":7200
} 5.对jsapi_ticket 进行加密获取signature noncestr=Wm3WZYTPz0wzccnW
jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg
timestamp=
url=http://mp.?params=value u...
Curator框架提供了一套高级的API, 简化了ZooKeeper的操作。 它增加了很多使用ZooKeeper开发的特性,可以处理ZooKeeper集群复杂的连接管理和重试机制。
总结了一些爬虫代理的资料和知识,并尝试使用asyncio和aiohttp使用代理ip访问目标网站,按代理IP的访问效果实时更新代理IP得分,初始获取3000左右代理IP,在稳定后,对摩拜单车信息的访问可以达到40次/秒-100次/秒。
有的时候上游传过来的字段是string类型的,但是我们却想用变成数字来使用。 本来用一个json:",string" 就可以支持了,如果不知道golang的这些小技巧,就要大费周章了。 参考文章:http://attilaolah.eu//json-and-struct-composition-in-go/ 临时忽略struct字段 type User struct {
string `json:"email"`
Password string `json:"password"`
// many more fields…
} 临时忽略掉Password字段 json.Marshal(struct {
Password bool `json:"password,omitempty"`
User: user,
}) 临时添加额外的字段 type User struct {
string `json:"email"`
Password string `json:"password"`
// many more fields…
} 临时忽略掉Password字段,并且添加token字段 json.Marshal(struct {
string `json:"token"`
Password bool `json:"password,omitempty"`
User: user,
Token: token,
}) 临时粘合两个struct type BlogPost struct {
string `json:"url"`
Title string `json:"title"`
type Analytics struct {
int `json:"visitors"...
1.spring boot的web项目的tomcat端口改为8008 2.nginx的配置改为,即可将所有访问80的请求转发到tomcat的8008端口: location / {
proxy_pass http://localhost:8008/;#主要是这里,这是tomcat的端口
proxy_set_header
proxy_set_header
proxy_set_header
X-Forwarded-For $proxy_add_x_forwarded_
} 另外,spring boot内置的web应用默认的路径都是root的,不需要输入项目名称即可访问
supervisorctl restart nginx 报错 : nginx: ERROR (no such process) nginx: ERROR (no such process) 把 nginx.ini 放到 /etc/supervisord.d/nginx.ini 下 内容为: [program:nginx] command=/usr/sbin/nginx autorestart=true stopsignal=QUIT sudo supervisorctl update supervisorctl restart nginx 解决问题
面向对象设计原则是OOPS编程的核心, 但我见过的大多数Java程序员热心于像Singleton (单例) 、 Decorator(装饰器)、Observer(观察者) 等设计模式,而没有把足够多的注意力放在学习面向对象的分析和设计上面。学习面向对象编程像“抽象”、“封装”、“多态”、“继承” 等基础知识是重要的,但同时为了创建简洁、模块化的设计,了解这些设计原则也同等重要。我经常看到不同经验水平的java程序员,他们有的不知道这些OOPS 和SOLID设计原则,有的只是不知道一个特定的设计原则会带来怎样的益处,甚至不知道在编码中如何使用这些设计原则。 (设计原则)底线是永远追求高内聚、低耦合的编码或设计。 Apache 和 Sun的开源代码是学习Java和OOPS设计原则的良好范例。它们向我们展示了,设计原则在Java编程中是如何使用的。Java JDK 使用了一些设计原则:BorderFactory类中的工厂模式、Runtime类中的单例模式、java.io 类中的装饰器模式。顺便说一句,如果您真的对Java编码原则感兴趣,请阅读Joshua Bloch 的Effective Java,他编写过Java API。我个人最喜欢的关于面向对象设计模式的是Kathy Sierra的Head First Design Pattern(深入浅出设计模式),以及其它的关于深入浅出面向对象分...
a framework of thinking system monitoring
因为一直学习与尝试负责公司的推送相关业务,包括整个应用的实现,其中就采用了基于消息队列的异步事件驱动模型来做解耦异步处理,所以就要去做了解一些相关的知识点,这边稍作总结,并整理一下消息补偿机制的一套简单实现的代码设计图。 采用基于消息队列的异步事件驱动模型来解决问题的时候,一个计较棘手的问题就是事务的一致性。 案例:现在用户发起一个创建订单的请求,如果我们是单系统架构,那么修改订单表,修改库存表可能都是在同一个事务中完成,所以轻而易举就达到了事物一致性原则,但是这不是我们要讨论的,所以就带过。现在微服务架构在互联网公司大火特火,热度未减,分布式是事务也成为了一个亟待解决的问题,阿里云GTS标榜如何让分布式事务更简单。 比如,用户发起一个创建订单的请求,首先在订单服务上生成了新的订单,同时还要去库存服务中减去库存,因为是分布式架构,所以库存扣减与订单创建可能是在两个遥远的机器上,如果想要通过本地事务来解决那几乎是不可能的,保证两个事务之间的状态一致性——订单创建成功,库存扣减失败,如何回滚订单?一直都是分布式架构中绕不开的挑战。 分布式架构中如何解决事务问题,在很多技术群都上都在讨论,比如d...
1、redis安装成功,外部无法访问问题?
原因:redis所在端口的监听地址为127.0.0.1
导致外部网络无法连接
解决方法:修改redis.conf 配置文件
bind 127.0.0.1
为 bind 101.200.166.125(真是ip地址)
解决过程使用的命令总结:
①查看指定端口的监听状态
netstat -anp | grep 9000
③外部测试端口是否可以正常访问
telnet host port
telnet 101.200.189.125 6379
④redis启动方法
redis-server /etc/redis.conf
⑤redis关闭方法
redis-cli -p port -a password shutdown
eg:redis-cli -p 6379 -a mypassword shutdown
⑥修改redis端口号和设置密码
------打开redis.conf配置文件
修改port 6379为 port 9999(默认为6379端口)
------打开redis.conf配置文件
修改requirepass mypassword
(设置redis密码)
⑦查看端口状态
/etc/init.d/iptables status
⑧修改防火墙,开发端口命令
linux开启允许外网访问的端口
查看指定端口的状态信息
netstat -an | grep LISTEN
LINUX开启允许对外访问的网络端口
LINUX通过下面的命令可以开启允许对外访问的网络端口:...
1、先确定用户有创建 dblink 的权限 select * from user_sys_privs t where t.privilege like upper('%link%'); 如果没查询到数据,那么直接查询 select * from user_sys_privs;当权限是"UNLIMITED TABLESPACE",表示这个用户有系统权限,也可以不授予dblink的权限。 授权dblink: grant create
database link to 用户名 ; --私有dblink
grant create public
database link to 用户名 ;--公有dblink 2、创建dblink (1)create public database link dblink名称 connect to 链接库用户名 identified by 链接库密码 using '链接库ip/链接库servername';
(2)create public database link dblink名称 connect to 链接库用户名 identified by 链接库密码 using ‘'(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=链接库ip)(PORT=链接库端口号)))(CONNECT_DATA=(SERVICE_NAME=链接库servername)))’; 以上方法创建的是public权限 的dblink; 也可以直接创建默认权限的dblink。 小细节:当密码中有@或者$等字符时,密码用“”包含,在创建的时候也可以直接用“”包含; 查询servername:select name,value from v$parameter where name='service_name...
Java资源大全中文版(Awesome最新版) /best/p/5876559.html
目录 业务流程管理套件 经典的工具与库 (Ancients) Bean映射 (Bean Mapping) 构建工具 (Build) 字节码操作 (Bytecode Manipulation) 缓存 (Caching) 群集管理 (Cluster Management) 代码分析 (Code Analysis) 代码覆盖 (Code Coverage) 代码生成 (Code Generators) 命令行参数解析器 (Command-line Argument Parsers) 编译器 (Compiler-compiler) 配置 (Configuration) 约束满足问题求解器(Constraint Satisfaction Problem Solver) 持续整合(Continuous Integration) (CSV) 数据库(Database) 数据结构(Data structures) 日期和时间(Date and Time) 依赖注入(Dependency Injection) 开发(Development) 分布式应用(Distributed Applications) 分布式数据库(Distributed Databases) 分发(Distribution) 文件处理(Document Processing) 格式验证(Formal Verification) 功能编程(Functional Programming) 游戏开发(Game Development) 地理空间(Geospatial) 图形用户界面(GUI) 高性能(High Performance) 超媒体类型(Hypermedia Types) 集成开发环境(IDE) 图像处理(Imagery) (JSON) JSON处理...
大家都知道,Vue一直紧跟Angular(含AngularJS 1.x)的脚步,借鉴了大量的特性。但是,借鉴毕竟是借鉴,复制品不太可能比正品行货做得更精致。最近一个月仔细研究了Vue的所有文档和常见的Demo项目,本文将会进行非常细致全面的对比。 Round 1:打包工具 大家都知道,Angular有自己的打包工具@angular/cli,Vue也有自己的打包工具vue-cli。看起来挺像的,但是你仔细使用一下就会发现,这两个东西完全就不是一个级别。为了给出一个直观的对比,我们简化一下,就看看这两款工具分别实现了多少功能吧。 以下是vue-cli能支持的功能: 包括help在内,一共只有可怜巴巴的4个命令。 我们再来看@angular/cli能做什么: 怎么样,有直观感受了吧?简而言之,如果说@angular/cli是一架坦克的话,vue-cli就是一架玩具坦克: vue-cli要做到@angular/cli这么完善基本上没有可能,因为人力和资金都够不上。也正是因为vue-cli是如此简陋,导致很多日常开发必备的功能都需要开发者自己去下载配置第三方的Node模块。 噢,这里要特别提一下,@angular/cli的底层集成了webpack,Angular项目组在此基础上做了自己的封装,如果你有兴趣去看@angular/cli的源代码,应该已经发现了这一点。 Round 2:...
现代 Web 开发在将体验和功能做到极致的同时,对于美观的追求也越来越高。在推荐完图形库之后,再来推荐一些精品的独立 UI 组件。这些组件可组合在一起,形成美观而交互强大的 Web UI 。 给 Web 开发人员推荐的开源图形库 —— 2D/3D 给 Web 开发人员推荐的开源图形库 —— 动画 给 Web 开发人员推荐的开源图形库 —— 数据可视化 下面将针对布局(Layout)、Icon(图标)、Progress(进度)、Button(按钮)、Picker(选择器)、Accordion(折叠)、Input(输入)、Overlay(重叠)、Content(内容/目录)、Editor(编辑)、Widget(挂件)等分别做一些推荐整理。由于篇幅有限,将分两期发布,欢迎保持关注。 一、布局 1、Split.js 一个轻量级的 JavaScript 工具,用于创建可调整的分割视图或者窗格,gzip 大小仅 2 KB。视图可以水平或者垂直分割,没有附加的开销和窗口,使用纯 CSS 进行调整。同时,还保证了与 IE9 和 IE8 ,以及 Firefox / Chrome / Safari / Opera 等主流浏览器的兼容性。 Demo 点此查看 2、Bricks.js 一个快速的布局堆砌器,不需要 HTML 标记或 CSS 样式表即可完成布局。功能强大,配置文件可读。 Demo 点此查看 3、masonry 一个老牌布局框架,已开发...
如果您的应用程序不工作,或者您希望在寻找更多信息,这 20 个命令将派上用场。
随着各行各业的发展,CAD已经广泛应用于工业、服装、建筑以及电子产业等设计领域。AutoCAD 是一种流行的商业CAD软件,虽然很强大,但并不是免费的。因此本文推荐了几种免费重量轻的CAD工具/软件,如有其他更好的选择,欢迎在评论区留言,以供更多开发者学习和交流。 开源 CAD/CAE工具 FreeCAD FreeCAD是一个基于OpenCASCADE的开源CAD/CAE工具。 OpenCASCADE是一套开源的CAD/CAM/CAE几何模型核心,来自法国Matra Datavision公司,是著名的CAD软件EUCLID的开发平台。 CAD 应用程序 QCAD QCad 是一个专业的 CAD 系统。QCad 使用户能够创建技术图纸,如计划、建筑、室内装饰、机械部件或架构和图表。它采用 DXF 文件作为其标准的文件格式。虽然其它 CAD 软件包往往是使用复杂,但 QCad 试图有所不同。 计算机辅助设计系统 BRL-CAD BRL-CAD 是一个构造实体几何(CSG) 实体模型计算机辅助设计(CAD) 系统。BRL-CAD 包括一个交互式的几何编辑器,光学跟踪支持图形着色和几何分析,计算机网络分布式帧缓存支持,图像处理和信号处理工具, 可以进行几何编辑、几何分析,支持分布式网络,可以进行图像处理和信号处理。 3D建模软件 OpenSCAD 为有创造力的web开发者而设计,OpenSCAD是...
IBM Bluemix,包含认知、物联网、大数据分析、安全、DevOps、应用、应用整合、移动、计算、网络、存储等 11 大类共 140 多个服务的云计算平台。
在Spring mvc的开发中,我们可以通过RequestMapping来配,当前方法用于处理哪一个URL的请求.同样我们现在有一个需求,有一个任务调度器,可以按照不同的任务类型路由到不同的任务执行器。其本质就是通过外部参数进行一次路由和Spring mvc做的事情类似。简单看了Spring mvc的实现原理之后,决定使用自定义注解的方式来实现以上功能。 ### 自定义TaskHandler注解 ```java @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Component public @interface TaskHandler { String taskType() default ""; } ``` 以上定义了任务处理器的注解,其中@Component表示在spring 启动过程中,会扫描到并且注入到容器中。taskType表示类型。 ### 任务处理器定义 ```java public abstract class AbstractTaskHandler { /** * 任务执行器 * * @param task 任务 * @return 执行结果 */ public abstract BaseResult execute(Task task); } ``` 以上定义了一个任务执行的处理器,其他所有的具体的任务执行器继承实现这个方法。其中Task表示任务的定义,包括任务Id,执行任务需要的参数等。 ### 任务处理器实现 接下来,我们可以实现一个具体的任务处理器。 ```jav...
【一周源资讯(-)】最近各大浏览器停用或取消默认使用 Flash 的新闻不断,现在Adobe 终于宣布,计划终结 Flash 浏览器插件,但这似乎已经没什么影响了……
SpringBoot入门——局部与全局的异常处理 1、构建测试代码 (1)、新建MAVEN项目 打开IDE—新建Maven项目—构建一个简单Maven项目 (2)、编写pom.xml引入包 编写pom配置引入jar包 注:引入完毕后可能项目会报红叉,更新maven即可 &project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"&
&modelVersion&4.0.0&/modelVersion&
&groupId&com.springboot&/groupId&
&artifactId&springboot&/artifactId&
&version&0.0.1-SNAPSHOT&/version&
&groupId&org.springframework.boot&/groupId&
&artifactId&spring-boot-starter-parent&/artifactId&
&version&1.4.1.RELEASE&/version&
&properties&
&project.build.sourceEncoding&UTF-8&/project.build.sourceEncoding&
&java.version&1.8&/java.version&
&/properties&
&dependencies&
&!-- 引入web相关包 --&
&dependency&
&groupId&org.springframework.boot&/groupId&
&artifactId&spring-boot-starter-web&/...
昨天发了一篇文章《Angular有哪些地方比Vue更优秀?》,碰到了小白们的痛处。从评论可以看出来,在国内这种以抄袭和跟风为荣的风气之下讲道理是很难的。 今天,我想再来撩一撩小白们脆弱的自尊。 请注意仔细看好标题,是“只会”,不是“会”,能理解区别吧? 比如某个人去你公司面试前端,你一定要问清楚他会哪些东西,除了Vue之外,还会不会jQuery?YUI?ExtJS?Dojo?Flex?Angular?React?Bootstrap?PWA?AMP? 如果他告诉你只会Vue,你一定要小心了,原因: 1、如果他只会Vue,那他就真的只会这一个东西了。但是,如果他同时还会Angular或者其它一些前端框架,一般就意味着这个人的性价比会非常高。首先,如果他会Angular,那么降低一个维度去写Vue是完全没有问题的,毕竟Vue里面大部分内容都是从AngularJS 1.x(而不是新版本Angular)里面抄出来的。其次,大量的Angular开发者都同时会一种或几种后端语言,如Java和C#,这就意味着你用同样的工钱招到了一个能干更多事情的人。 2、只会Vue的人缺乏学习能力,你招到的可能只是个“拷贝工程师”。你经常看到这种小白会吐槽TypeScript是他人生道路上的障碍,而实际上TypeScript的大部分语法都来自于ES6(还有ES7),如果...
现代 Web 开发在将体验和功能做到极致的同时,对于美观的追求也越来越高,数据可视化、动画交互、2D/3D 等元素已然成为标配。 以下是为 Web 开发者推荐的一些精品开源图形库,旨在专注于最常见的问题和最常用的东西。将针对动画(Animation)、数据可视化(Data Visualization)、2D/3D 分别整理,欢迎保持关注。 给 Web 开发人员推荐的开源图形库 —— 动画 给 Web 开发人员推荐的开源图形库 —— 2D/3D 数据可视化 1、D3.js 最流行的可视化库之一,被各种表格插件、库、框架所使用。它允许绑定任意数据到 DOM ,然后将数据驱动转换应用到 Document 中。你可以使用它从数组中生成 HTML 表,或是使用相同的数据创建具有平滑过渡和交互的交互式 SVG 条形图。 效果预览:点此查看 2、Recharts 基于 React 的组合式图表,用解耦的、可重用的 React 组件快速构建你的图表。依赖于轻量级的 D3 子模块构建 SVG 元素,还可以调整组件的属性与传递组件来自定义图表。 效果预览:点此查看 类似的将 React 和 D3 结合在一起的还有: Victory 一个用于构建图表模块化和交互式数据可视化的 ReactJS 库。效果预览 VX 可重用的 low-level 可视化组件集合。效果预览 3、ECharts 一个由百度...
每周为您推送最有价值的开源技术内参!
![](https://www.yunai.me/images/common/wechat_mp_.jpg) & ???关注**微信公众号:[【芋艿的后端小屋】](http://www.yunai.me/images/common/wechat_mp.jpeg)**有福利: & 1. RocketMQ / MyCAT / Sharding-JDBC **所有**源码分析文章列表 & 2. RocketMQ / MyCAT / Sharding-JDBC **中文注释源码 GitHub 地址** & 3. 您对于源码的疑问每条留言**都**将得到**认真**回复。**甚至不知道如何读源码也可以请教噢**。 & 4. **新的**源码解析文章**实时**收到通知。**每周更新一篇左右**。 & 5. **认真的**源码交流微信群。 ------- - [1. 概述](#) - [2. SQLParsingEngine](#) - [3. SQLParser SQL解析器](#) - [3.1 AbstractParser](#) - [3.2 SQLParser](#) - [3.2.1 #parseExpression() 和 SQLExpression](#) - [3.2.2 #parseAlias()](#) - [3.2.3 #parseSingleTable()](#) - [3.2.4 #skipJoin()](#) - [3.2.5 #parseWhere()](#) - [4. StatementParser SQL语句解析器](#) - [4.1 StatementParser](#) - [4.2 Statement](#) - [5. 彩蛋](#) ------- # 1. 概述 上篇文章[《词法解析》](http://www.yunai.me/Sharding-JDBC/sql-parse-1/)分享了**词法解析器...
之前就被朋友安利使用小程序,最近接近了小程序,发现了它竟然带来了一场“大革命”。 简单说,它就是一个可以实现之前只能是原生态APP可以实现的效果和功能。比如说,一些酷炫的页面与转场,一些可以直接和手机硬件交互的功能,录音啊,拍视频啊,调用手机的重力感应啊,GPS啊等等。
最近一直在写一个脚本语言,主要对标对象是润乾的集算器、Python等。感觉润乾的集算器有一定的应用场景,但是类似excel的方式严重影响编程可接受程度,另外其有些语法感觉与java习惯也非常不一致,因此就自己动手写了一个,目前正在紧张的验证中,验证完毕将完全开源。 欢迎感兴趣的同学mark,到时一起玩耍。 最终开源的git地址是:http://git.oschina.net/tinyframework/tinyscript 正常是完善好文档再开源,如果fork超过1000+,马上开源,开源协议是Apache V2。
JAVA学习路线图,特此声明; 仅希望对热爱JAVA学习有所帮助 如若转载或者使用本图,请注明出处,避免后期出现版权问题,谢谢!!!
JAVA学习路线图 此乃是java攻城狮的学习路线图,由简到繁,由易到难,一步步的学习,最后成为 JAVA攻城狮。希望对大家的学习有所帮助 阶段一
1:学习HTML
3:Javascript
6:Bootstrap
7:JAVAse基础
8:mysql数据库
9:Powerdesigner
11:JAVAWEB
阶段三 12:oracle
13:struts2
14:Hibernate
15:Spring 阶段四 16:Maven
17:SpringMVC
18:MyBatis
保障国家权益的第一道防线是军队,而保障数据安全的最强壁垒则是存储。老司机多年经验总结,分享几点基于Ceph的对象存储实战兵法.
### 简介 本章我将用Spring Boot开发一个类似于"Hello, World"的程序,我们将它称之为“Hello, Spring Boot”。 通过这个小小的Demo程序,让对Spring Boot完全不了解的Java开发者可以快速上手,使用Spring Boot进行开发。 ### 源码下载 本章的示例代码放在“码云”上,大家可以免费下载或浏览: [https://git.oschina.net/terran4j/springboot/tree/master/springboot-hello](https://git.oschina.net/terran4j/springboot/tree/master/springboot-hello) ### 软件版本 相关软件使用的版本: * Java:
1.8 * Maven:
3.3.9 程序在以上版本均调试过,可以正常运行,其它版本仅作参考。 ### 创建项目 我们用Eclipse(其它IDE类似)创建一个Maven项目,pom.xml文件的内容如下: ```xml 4.0.0 terran4j springboot-hello 0.0.1-SNAPSHOT jar springboot-hello http://maven.apache.org org.springframework.boot spring-boot-starter-parent 1.5.2.RELEASE 1.8 org.springframework.boot spring-boot-starter-web ``` spring-boot-starter-**的项目称之为Spring Boot启动器(Starter), 是 Spring Boot 提供的四大神器之一。它们能够非常方便的进行包管理, 很大程度上减少了...
Spring data 目前还不支持 Elasticsearch 5.5.x 所以需要通过注入 TransportClient 这就意味着使用 5.5.x 版本你无法使用 ElasticsearchRepository 这种特性,只能通过官方的 TransportClient 操作 Elasticsearch。
现代 Web 开发在将体验和功能做到极致的同时,对于美观的追求也越来越高,数据可视化、动画交互、2D/3D 等元素已然成为标配。 以下是为 Web 开发者推荐的一些精品开源图形库,旨在专注于最常见的问题和最常用的东西。将针对动画(Animation)、数据可视化(Data Visualization)、2D/3D 分别整理,欢迎保持关注。 给 Web 开发人员推荐的开源图形库 —— 动画 给 Web 开发人员推荐的开源图形库 —— 数据可视化 2D 一、绘图渲染 1、图形 PixiJS 一个 HTML5 构建引擎,用最快、最灵活的 2D WebGL 渲染器创建漂亮的数字化内容。旨在提供一个可以在所有设备上运行的快速轻量级 2D 库,帮助你创建丰富的交互式图形、跨平台应用和游戏,而无需深入到 WebGL API 或处理浏览器和设备的兼容性。 效果预览:点此查看 Fabric.js 一个可以轻松使用 HTML5 canvas 元素的库,在 Canvas 元素之上提供交互对象模型,同时还包含 SVG-to-canvas 解析器。它可以帮助你在画布上创建和填充对象,从简单的几何图形到成百上千路径组成的复杂图形。你可以通过鼠标轻松的移动、缩放和旋转这些对象,修改它们的属性(颜色、透明度,层叠顺序)等等。 效果预览:点此查看 2、立体像素 Obelisk.js 这是...
大家都知道,Vue有大量的设计思想(甚至代码)是从Angular(JS)里面抄过来的。在Vue的官方文档里面也大量出现了用Angular(JS)来类比解释的文本。当然,Vue一般都会说自己是“借鉴”。 那么,Vue里面到底有多少东西是抄袭的Angular呢?本文将会做出详细的列举和解释。 1.双向数据绑定 “双向数据绑定”是现代前端框架必备的特性,也是8年前AngualrJS 1.x出来的时候最受开发者欢迎的特性,之一。 “双向数据绑定”的设计思想最早是在微软的.NET实现的,2009年,AngularJS 1.x第一个把这种思想应用到了前端开发领域。现在,几乎所有前端开发框架都接受了“双向数据绑定”的设计思想,当然也包括一直不断抄袭的Vue。 那么问题就来了: 什么是“双向数据绑定”? 双向数据绑定有什么优点? 要实现双向数据绑定有什么技术难点? AngularJS 1.x里面是如何实现双向数据绑定的? Angular新版本里面是如何实现双向数据绑定的? Vue里面是如何实现双向数据绑定的? 我尽量用人话来解释以上问题(一边解释案例一边回答,没有顺序)。 假设你有这样的一个非常简单的登录表单: 这个表单里面有2个输入项,你最终想要的数据结构是这样的: {userName:'damoqiongqiu',password:'123456'}
## 1. 项目介绍 ![Xson](http://www.xson.org/project/xson/1.0.2/images/00.png) Xson是一个Java对象序列化和反序列化框架。支持Java对象到字节数组的序列化,和从字节数组到Java对象的反序列化。 官网地址: 项目地址: ## 2. 新版本特性 1. 新增`buffer`包,此包中的相关类提供对序列化过程中的byte[]进行分配、使用、回收的管理;进一步提供序列化的速度,并减少Full GC。 2. 提供带有偏移内容的API支持; 3. 提供XCO对象序列化和反序列的支持; 4. 提供扩展配置文件的支持; ## 3. 使用教程 ### 3.1 基本使用 & a. 添加依赖 org.xson xson 1.0.2 & b. 序列化 User user = new User(); // set... byte[] data = XSON.encode(user); & c. 反序列化 // byte[] data User user = XSON.decode(data); & d. 带有偏移内容的序列化和反序列化 ![偏移内容](http://www.xson.org/project/xson/1.0.2/images/01.png) int x = 6; User user = new User(); // set... byte[] data = XSON.encode(x, user); // byte[] data User user = XSON.decode(x, data); ### 3.2 配置文件 & 1.xson.properties文件配置示例: # Support for XCO xco=true # ByteArrayManager configuration by...
使用gitlab token登录maven私服(sonatype nexus),这里需要用到nexus-gitlab-token-auth-plugin。
###1,创建与合并分支 1,原理:每次提交,git把版本串成一条时间线这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。 一开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点: ![1-1](/files/attachments/7492135fbf4bbd24dfcbcd36d000/0) 每次提交,master分支都会向前移动一步,这样,随着你不断提交,master分支的线也越来越长: 当我们创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上: ![1-2](/files/attachments/e2d844eefb11f5cf5d5) 你看,Git创建一个分支很快,因为除了增加一个dev指针,改改HEAD的指向,工作区的文件都没有任何变化! 不过,从现在开始,对工作区的修改和提交就是针对dev分支了,比如新提交一次后,dev指针往前移动一步,而master指针...
将 Spring boot 日志写入 ELK 有多种实现方式,这里仅提供三种方案: Spring boot -& logback -& Tcp/IP -& logstash -& elasticsearch 这种方式实现非常方便不需要而外包或者软件 Spring boot -& logback -& Redis -& logstash -& elasticsearch 利用 Redis 提供的发布订阅功能将日志投递到 elasticsearch Spring boot -& logback -& Kafka -& logstash -& elasticsearch Kafka 方法
火热的八月,OSC源创会带着自由、开放、分享的开源精神,也带着满满的干货主题,邀请珠海的各位来约。
要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法。 元注解:   元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。Java5.0定义的元注解:     1.@Target,     2.@Retention,     3.@Documented,     4.@Inherited   这些类型和它们所支持的类在java.lang.annotation包中可以找到。下面我们看一下每个元注解的作用和相应分参数的使用说明。   @Target:    @Target说明了Annotation所修饰的对象范围:Annotation可被用于 packages、types(类、接口、枚举、Annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数)。在Annotation类型的声明中使用了target可更加明晰其修饰的目标。   作用:用于描述注解的使用范围(即:被描述的注解可以用在什么地方)   取值(ElementType)有:     1.CONSTRUCTOR:用于描述构造器     2.FIELD:用于描述域     3.LOCAL_VARIABLE:用于描述局部变量     4.METHO...
个人感觉微信小程序的IDE用起来有时候不太方便,可能是之前用惯了Eclipse的原因吧。微信小程序的开发工具不支持直接将文件拷贝到目录下,所以首先要将图片文件导入到本地目录下,然后编写工具类获取屏幕的宽度和高度.
spring的技术比较成熟,并且当前用户量极大,spring本身提供了很的多扩展点,如果想要扩展spring的schema还是比较简单的。本次需求是要做一个RPC框架,但是在本节中并不讲解RPC的东西,只是扩展一下spring的schema已被以后使用。
Spring Boot + Mybatis + Druid 读写分离实现 MySQL 主从模式配置
**这次发布的是小程序版的轻管理后台。** 上次web|小程序二选一的问卷,结果是小程序作为管理占多数,有机会再用node.js现学现卖写个web版的。 # 后台直接置于小程序端 通过isAdmin字段判断后,全局存储作为管理员令牌 ![设置页](http://upload-images.jianshu.io/upload_images/e8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) # 店铺配置 ![店铺配置.png](http://upload-images.jianshu.io/upload_images/fb650ca73d9d1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) # 菜品添加 ![菜品添加](http://upload-images.jianshu.io/upload_images/db2d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) # 分类添加 ![分类添加](http://upload-images.jianshu.io/upload_images/2599324-cc04dfc0eee73570.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) # 订单列表二合一 对于普通会员显示唤起支付的按钮,于是管理员显示跳转到详情的按钮 ![订单列表.png](http://upload-images.jianshu.io/upload_images/eec2ffa94b1ee8.png?imageMogr2/auto-orient/strip%7Ci...
客户端 ``` procedure TfrmClient.btnSaveClick(Sender: TObject); var cmd:S //服务器通信命令 ASize,TotalSize:Int64;//缓冲区大小,文件流大小 AFileStream:TFileS//文件流变量 begin IdTCPClient1.Host:=Edit1.T IdTCPClient1.Port:=StrToIntDef(Edit2.Text,9225); IdTCPClient1.C Try IdTCPClient1.IOHandler.WriteLn('BEGIN');//提示客户端开始接收 cmd:=IdTCPClient1.IoHandler.ReadLn; //以'|'分离文件名 dlgSave.FileName:=Copy(cmd,Pos('|',cmd)+1,Length(cmd)); if not dlgSave.Execute then begin IdTCPClient1.IOHandler.WriteLn('CANCEL');//告诉服务器取消 IdTCPClient1.D E //分离文件大小 TotalSize:=StrToInt(Copy(cmd,0,Pos('|',cmd)-1)); //建立文件流准备接收 AFileStream:=TFileStream.Create(dlgSave.FileName,fmCreate); try //开始循环接受 Repeat IdTCPClient1.IOHandler.Writeln(IntToStr(AFileStream.Size));//发送当前传输的位置 ASize:=Min(TotalSize-AFileStream.Size,IdTCPClient1.IOHandler.RecvBufferSize); //选择剩余大小和缓冲区大小小的一个作为传输的大小 IdTCPClient1.IOHandler.ReadS...
 和MySQL主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,下图为级联结构。
  Redis主从复制可以根据是否是全量分为全量同步和增量同步。 1 全量同步   Redis全量复制一般发生在Slave初始化阶段,这时Slave需要将Master上的所有数据都复制一份。具体步骤如下:
  1)从服务器连接主服务器,发送SYNC命令;
  2)主服务器接收到SYNC命名后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令;
  3)主服务器BGSAVE执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令;
  4)从服务器收到快照文件后丢弃所有旧数据,载入收到的快照;
  5)主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令;
  6)从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令;
  完成上面几个步骤后就完成了从服务器数据初始化的所有操作,从服务器此时可以接收来自用户的读请求。 2 增量同步   Redis增量复制是指Slave初始化后开始正常工作时主...
上一节我们搭建好实验环境,配置并运行了consul,今天开始创建 overlay 网络。
PHP /malc0mn/vultr-api-client GO /JamesClonk/vultr python /spry-group/python-vultr
解决 lispbox macOS 不兼容问题, 误打误撞,解决了很重要的入门级问题,简要记录下.
有时候使用java写一些功能,封装为一个JAR包,提供给项目使用,这些项目最终发布为WAR包。 但是有的时候,我提供的功能需要少许的页面,如jsp,JS,HTML和图片等。 但是又不能侵入到项目的代码。 当然,使用Servlet3.0可以实现在JAR中内嵌视图资源的功能。 但是如果不使用Servlet3.0,可以写一个过滤器实现这个功能。 过滤器拦截URL中以"/Web/virtual/"开头的请求,并将JAR包中resource下的同名资源返回。 代码如下:
import java.io.IOE
import java.io.InputS
import javax.servlet.F
import javax.servlet.FilterC
import javax.servlet.FilterC
import javax.servlet.ServletE
import javax.servlet.ServletR
import javax.servlet.ServletR
import javax.servlet.annotation.WebF
import javax.servlet.http.HttpServletR
import mons.io.IOU
* Servlet Filter implementation class ResourceFilter
@WebFilter(urlPatterns = "*")
public class ResourceFilter implements Filter {
public void destroy() {
阿里云o云市场
阿里云o云市场为您提供全面、可靠的一站式API服务,轻松拓展业务功能。 官网地址,1分钱起调起:/m/27450/
阿里云o云市场
企业应用市场 o
涵盖了OA,CRM,ERP,人事管理,财务管理等海量面向企业的智能办公应用,供企业挑选 o
提供针对科技创新,新零售,教育,金融,游戏,电商等多领域的办公解决方案 o
阿里云云市场保证,客户不满意100%退款。 官网地址,欢迎选购: /m/27448/ 阿里云o云市场
初创企业服务市场 o
帮助企业解决,公司注册,知识产权,资质办理,法务,等问题,让企业无后顾之忧 o
商品多云化,满足不同阶段,不同类型,不同行业的企业需求 o
阿里云云市场交易,服务全程监管,提供阶段性验收确认,100%保障服务质量 官网地址,欢迎选购:/m/27449/
“理想改变了我们的模样,也让我懂得了,要珍惜朋友的肩膀,听着“朋友的酒”,忽然有点伤感,想起了过去的经历,想起了过去的朋友,很少写总结,新的工作已经开始,总结一下过去也好。 ---------------------------------------------- 07年、毕业、广州
从小在农村长大,经历着80后一样的经历,平平稳稳的在07年大学毕业,向往着北上广的大城市生活,毕业就奔赴了广州,梦想着能找一份不错的本专业工作(电子信息工程),但是当梦想照进现实,总是不那么如意,漂泊了半年,做过工程布线、安装过工厂的视频监控、焊接交换机的排线,因为公司比较小,就6、7个人,没有活的时候大家都呆着,忙起来还好,一旦闲着总觉得不舒服,不想白白的浪费大好的日子,于是半年后辞职,准备做自己喜欢做的工作,程序员。
编程的兴趣一直都有,只不过没有系统的学习过,大学的课程也觉得没什么深度,所以参加了Java的培训,也认识了好多朋友,现在还记得大家总是被我的东北话逗笑,能给他们带来快乐,我很高兴,这样我也不用刻意的板着不说家乡话了。毕业后又开始学习生活,我很珍惜,基本上除了吃饭睡觉,就是在看书,公交车上,等着教室开门时的走廊里,晚上还要演...
& 这是一篇博客福利! 相信很多关注Spring Cloud的爱好者们,不论是读我的系列文章和书籍还是看其他朋友们写的博客佳文,都不可避免的启动多个项目来体验Spring Cloud带来的整套微服务架构方案。其中,Eureka注册中心几乎是每个试验都必须要启动的应用。在整个学习过程中,我们不厌其烦的启动它,为了让微服务之间能够正常的发现并调用服务接口。 所以...我花了点业余时间,对Spring Cloud Eureka Server的UI增加了一些说明,并将在博客上公开出来给Spring Cloud的初学者和开发者们使用,大家可以方便的使用它来调试我博客和《Spring Cloud微服务实战》书中的诸多示例,或是利用此开发和调试自己的应用。 该Eureka注册中心关闭了自我保护机制,所以当各位开发者的服务下线后,稍等片刻就会被剔除,所以大家不用担心服务的长时间停留在该服务注册中心上。说了那么多,这个开放的注册中心在哪里呢?请看下面,它主要分为两部分: - Dashboard : / - 客户端配置:`eureka.client.serviceUrl.defaultZone=/eureka/` 关于该服务注册中心的源码如下,欢迎给予*Star*支持! - 码云:/didispace/didi-eu...
小白一枚,最近在看深入理解java虚拟机2这本书,怕看过之后就忘了,看一节然后写一片博客消化消化,加深印象与理解。有理解错误的地方还望指出。
Java虚拟机主要分为方法区,虚拟机栈,本地方法栈,程序计数器,堆。其中方法区与堆是线程共享区域;虚拟机栈,本地方法栈,程序计数器是线程私有区域。
方法区主要存放加载的类信息,常量,静态常量,即时编译器编译后的代码等,也有人称之为永久代,二者并非一样,或者说是HotSpot虚拟机用永久代实现了虚拟机的方法区,为了方便HotSpot垃圾收集器可以向管理java堆一样去管理这块区域。
虚拟机栈是线程私有的,在java方法执行的时候会创建一个栈帧,用来存放局部变量表,动态链接,操作数栈,方法出口等信息。其中局部变量表存放8个基本数据类型与对象的引用。64位长度的long类型与double会占用2个局部变量空间,其余的占用1个。在编译期间,方法需要分配的局部变量空间是确定的。
本地方法栈与虚拟机栈非常类似,只不过虚拟机栈是为java方法服务,本地方法栈是为Native方法服务。
程序计数器是线程私有的,用来记录当前线程正在执行的虚拟机字节码指令地址,如果正在执行Native方法,...
Pocket Perceptron 是 Perceptron 算法的改进算法
防止xss攻击的安全措施 为了防止xss问题,magento推荐以下规则来转义模版里的输出内容: 1.如果一个方法表名已经被转义过了,不要再次进行转义:比如getHtmlTitile(),getTitleHtml() (这个title 已经可以进行html 输出) 2.类型定义和PHP方法不需要转义 3.单引号里的输出不需要被转义 4.双引号里没有变量不需要转义 5.其他的情况,使用特定的转义方法进行转义 以下的代码示例模版 xss 安全输出: &?php echo $block-&getTitleHtml() ?&
&?php echo $block-&getHtmlTitle() ?&
&?php echo $block-&escapeHtml($block-&getTitle()) ?&
&h1&&?php echo (int)$block-&getId() ?&&/h1&
&?php echo count($var); ?&
&?php echo 'some text' ?&
&?php echo "some text" ?&
&a href="&?php echo $block-&escapeXssInUrl($block-&getUrl()) ?&"&&?php echo $block-&getAnchorTextHtml() ?
模版转义方法 以下输出情况使用特点的方法来生成xss安全输出。 即将发布的magento 2.2将会丢弃这些方法。 示例: JSON输出 方法: 不需要方法转义
&!-- In this example $postData is a JSON string --&
&button class="action" data-post='&?php /* @noEscape */ echo $postData...
上篇介绍了 Spring-data-jpa一些使用方法,都是基于mysql数据库来讲解的,但是在实际项目中,由于访问量的不断增大,数据库的压力会越来越大,这时候类似于mysql的数据库往往只是为了兜底或者在降级时才会有查询操作,大部分的读操作都会集中在缓存或者像elasticsearch这种全文搜索引擎,本篇主要介绍一下如何在SpringBoot中使用Redis,后续会介绍如何集成elasticsearch
1、添加Redis起步依赖 &dependency&
&groupId&org.springframework.boot&/groupId&
&artifactId&spring-boot-starter-redis&/artifactId&
&/dependency& 2、添加Redis相关配置 spring:
host: localhost
port: 6379
max-idle: 100
min-idle: 1
max-active: 1000
max-wait: -1 3、编写Redis配置类 @Configuration
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport {
* 生成key的策略
public KeyGenerator keyGenerator() {
return new KeyGenerator() {
public Object generate(Object target, Method m...
本人作为一个屌丝程序员,**年少无为,卖马为生**,买不起服务器,买不起域名,但是又想拥有属于自己的博客网站,那就只有通过技术来实现这一切了。先上成果:[点击](http://z77z.oschina.io/),现在我把我自己搭建博客的过程共享出来,只要你按照步骤一步步走下去,一定会搭建成功,如果大家在搭建过程中遇到什么问题,欢迎在我的博客评论区留言,也欢迎大神进来,教我做码,带我装逼,带我飞。**[博客地址](http://z77z.oschina.io/)**,JUST DO IT(`离开舒适区`)。
通过ssh远程连接linux服务器,上传Oracle11g的安装包,在无图形化界面的情况,安装Oracle服务器端。本例中linux服务器系统为CentOS6.5.
踩过很多次GC的坑,基本每次性能问题,除了数据库,其它高发地区就是GC问题了
持续集成(Continuous Integration),也就是我们经常说的 CI,是现代软件开发技术的基础。本文论述了如何使用 TeamCity 持续集成工具来实现项目的持续集成。
1.SequoiaDB介绍 SequoiaDB是国内一款自主研发的分布式文档型数据库。它与过去开发者所熟悉的关系型数据库不同,它的数据结构是BSON类型,一种与JSON结构非常相近的数据类型。 SequoiaDB与关系型数据库除了在数据类型上有比较明显的差异外,还原生支持分布式存储。用户在搭建一个能够应对海量数据以及包含高并发操作的系统时,不再需要像过去一样,在业务层面做复杂的分表分库工作,直接在定义数据表时,明确告诉数据库此表需要根据哪个字段以及何种规则进行分布式存储,数据分布式存储对于用户来说变得透明。用户可以更加专注以业务逻辑开发,而不是关注如何分表分库。 2.SequoiaDB总体架构介绍
图1:SequoiaDB 总体架构示意图 SequoiaDB整个集群中,主要角色构成是三个,协调节点,编目节点和数据节点。 1.1 协调节点 协调节点(英文称呼为Coord),是SequoiaDB的任务分发节点(一般用户成为Master节点),本身不存储任何数据,主要负责接收应用程序的访问请求。所以一般用户在与SequoiaDB打交道时,访问的都是协调节点,对于其他角色的节点,一般情况下是不建议用户去访问的。 在SequoiaDB老版本中,协调节点在数据库集群中是类似孤岛式部署的。怎么说呢,主要因为...
博卡君的小程序使用教程
#### 为什么想做这个东西 一直好奇像亚马逊这类网站的搜索是如何做到推荐的,最近刚好看到一篇文章:[Redis 与搜索热词推荐](/95780/),然而只写了思路。所以,就是想自己实现一个。 先上个效果图,再聊: ![xxx](https://showme.codes/assets/images/index.lsp.gif) P.S. 按四年前,要写这样的前端效果,对于我这个后台开发,还是挺困难的。而现在,简单的学了下Vue.js,再加上同事的小小指点,就搞定了。? #### 热词推荐的本质 假如你预先就知道了用户输入:s、sz、shen、深这些字时,就是想搜“深圳”,那是不是说,我们只要提前将这些字放到一个Map结构中,将用户的输入想像出一个key,value就是“深圳”。 说到底,热词推荐的本质就是一个大大的Map。**难点就在于如何更新这个Map**,以至于让用户觉得“智能”,或觉得我们在给他们做“推荐”。 这个Map,常常被人称为“索引”。其实使用“索引” 这个名词也更准确一些。Map中的Key是不能重复的。但是我们数据结构是要求可重复的,为什么呢?因为,在系统中,s、sh、shen、深等等这些都是key,而它们对应的value,可能相同,又可能不同。举个例子: ``` hotword:0&zrevrange s 0 10 1) 鼠蛟...
## 准备 - 了解微信小程序是什么? [微信小程序官方文档](https://mp./debug/wxadoc/dev/index.html) - 了解应用状态管理方案: [Redux], 也是[Flux架构](/blog/2016/01/flux.html)的具体实现 - 了解Javascript打包工具: [webpack] - 了解ES6/7代码转译(transcompile)工具: [Babel], 原理大致是借助语法分析工具(Esprima之类的), 将代码解析成抽象语法树, 再"重写"成最终的代码. - Javascript测试工具: jest, mocha等等, 请根据需要选择. ## TL;DR; 微信小程序目前版本的API实现需要兼顾方方面面, 所以仍然使用callback写法, 众所周知的`Callback-Hell`是传统js语法上的历史问题, 但毕竟称手的工具是开发效率的源泉. 因此笔者对当前版本的微信小程序API做了简单的封装 [weapp]. 同时, 微信小程序框架本身专注于交互和UI的实现, 并未提供内置的状态管理, 如果众多的异步操作都直接在App或者Page中一一实现, 相信写起来会是一场噩梦, 而且不易于测试, 笔者又因此针对微信小程序实现了一个基于Redux方案的状态管理模块, 用以方便的在小程序中实现应用状态管理 [redux-weapp]. 特别地, 微信小程序构建(编译)时不支持从App scope之外requi...
本文针对jdk1.8的ConcurrentHashMap # 1 1.8的HashMap设计 ## 1.1 整体概览 HashMap采用的是**数组+链表+红黑树**的形式。 数组是可以扩容的,链表也是转化为红黑树的,这2种方式都可以承载更多的数据。 用户可以设置的参数:初始总容量默认16,默认的加载因子0.75 初始的数组个数默认是16 容量X加载因子=阈值 一旦目前容量超过该阈值,则执行扩容操作。 什么时候扩容? - 1 当前容量超过阈值 - 2 当链表中元素个数超过默认设定(8个),当数组的大小还未超过64的时候,此时进行数组的扩容,如果超过则将链表转化成红黑树 什么时候链表转化为红黑树?(上面已经提到了) - 当数组大小已经超过64并且链表中的元素个数超过默认设定(8个)时,将链表转化为红黑树 目前形象的表示数组中的一个元素称为一个桶 ## 1.2 put过程 - 根据key计算出hash值 - hash值&(数组长度-1)得到所在数组的index - 如果该index位置的Node元素不存在,则直接创建一个新的Node - 如果该index位置的Node元素是TreeNode类型即红黑树类型了,则直接按照红黑树的插入方式进行插入 - 如果该index位置的Node元素是非TreeNode类型则,则按照链表的形式进行插入操作 链表插入操作完成后,判断是否超过阈值...
换取openid-&统一下单-&发起支付,三步走,其中二次签名比较坑人。
我们通常衡量一个Web系统的吞吐率的指标是QPS(Query Per Second,每秒处理请求数),解决每秒数万次的高并发场景,这个指标非常关键。举个例子,我们假设处理一个业务请求平均响应时间为100ms,同时,系统内有20台Web服务器,配置MaxClients为500个(表示服务器的最大连接数目)。 那么,我们的Web系统的理论峰值QPS为(理想化的计算方式): 20*500/0.1 = 100000 (10万QPS) 在高并发的实际场景下,机器都处于高负载的状态,在这个时候平均响应时间会被大大增加。 就Web服务器而言,他打开了越多的连接进程,CPU需要处理的上下文切换也越多,额外增加了CPU的消耗,然后就直接导致平均响应时间增加。因此上述的MaxClient数目,要根据CPU、内存等硬件因素综合考虑,绝对不是越多越好。可以通过Apache自带的ab来测试一下,取一个合适的值。然后,我们选择内存操作级别的存储的Redis,在高并发的状态下,存储的响应时间至关重要。网络带宽虽然也是一个因素,不过,这种请求数据包一般比较小,一般很少成为请求的瓶颈。负载均衡成为系统瓶颈的情况比较少,在这里不做讨论哈。 那么问题来了,假设我们的系统,在5w/s的高并发状态下,平均响应时间从100ms变为250ms(实...
## 简介 类型签名轻轻诉说着函数最不可告人的秘密。短短一行,就能暴露函数的行为和目的。O(∩_∩)O~ ## 作用 虽然js是动态类型的语言,但并不意味否定类型的存在,我们在写代码的时候还是要和Number,Boolean,String,Array等打交道,只不过没有在语言层面做类型检查。 - 简洁美观(对于我来说这一点就足够了) - 降低阅读代码成本 - 有效节约沟通成本(附带装X技能) 以下是描述同一个函数的 - A:fs.readFile 函数有三个参数 第一个是字符串的文件路径,第二个是编码,第三个是回掉函数 回掉函数内部第一个代表错误,第二个代表文件内容(字符串) 无返回值 - B:fs.readFile :: String:路径 -& String:编码 -& (Error -& String) -& () - C:fs.readFile :: String -& String -& (Error -& String) -& () - 编译期间检查错误(js未实现) - 生成文档 ## 简单的例子 ```javascript // Number -& Number -& Number function add(a,b){ return a + } ``` `add` 上方的一行注释描述了函数从入参到返回值的过程,即 `add` 函数接受两个数字返回数字 - `Number`代表数字类型 - 最后一个`Number` 代表函数返回值的类型 前面两个`Number`分别代表函数的第一参数和第二个参数 ## 数组 函数...
在这里,我想跟大家分享另外一种脚本语言的交互方式,就是使用Lua与原生的ObjC语言进行交互。
出于对负载均衡工具的疑问,分别对haproxy和nginx的负载均衡进行了抓包分析,分析的过程跟大家分享下。先说下对haproxy抓包得到的结论吧:haproxy在负载均衡的一台后端挂掉后,如果还没达到探测的时间点时,请求还会往挂掉的这台转发,请求会丢失。 haproxy负载均衡的实验过程如下: 1: 先看下haproxy的配置。配置inter 20000为20s检测一次,这个是为了更明显的抓下haproxy的负载均衡探测机制。 listen test9090
bind 127.0.0.1:9090
server localhost90 127.0.0.1:90 check inter 20000
server localhost91 127.0.0.1:91 check inter 20000 2: 后端我是用nginx进行测试,看下nginx的配置如下。可在/var/www/html/建个index.html进行测试 server {
location /{
root /var/www/
} 先用curl 127.0.0.1:9090进行测试,并在机器上开两个窗口看下抓包是否均衡正常,两个窗口运行的命令分别如下:tcpdump -i lo -nn 'port 90'
tcpdump -i lo -...
本文主要介绍JDK动态代理的基本原理,让大家更深刻的理解JDK Proxy,知其然知其所以然。明白JDK动态代理真正的原理及其生成的过程,我们以后写JDK Proxy可以不用去查demo,就可以徒手写个完美的Proxy。下面首先来个简单的Demo,后续的分析过程都依赖这个Demo去介绍,例子采用JDK1.8运行。 ##JDK Proxy HelloWorld ``` package com.yao. /** * Created by robin */ public interface Helloworld { void sayHello(); } ``` ``` package com.yao. import com.yao.HelloW /** * Created by robin */ public class HelloworldImpl implements HelloWorld { public void sayHello() { System.out.print("hello world"); } } ``` ``` package com.yao. import java.lang.reflect.InvocationH import java.lang.reflect.M /** * Created by robin */ public class MyInvocationHandler implements InvocationHandler{ private O public MyInvocationHandler(Object target) { this.target= } public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("method :"+ method...
前言 前段时间写了一篇对协程的一些理解,里面提到了不管是协程还是callback,本质上其实提供的是一种异步无阻塞的编程模式;并且介绍了java中对异步无阻赛这种编程模式的支持,主要提到了Future和CompletableFuture;之后有同学在下面留言提到了RxJava,刚好最近在看微服务设计这本书,里面提到了响应式扩展(Reactive extensions,Rx),而RxJava是Rx在JVM上的实现,所有打算对RxJava进一步了解。 RxJava简介 RxJava的官网地址:/ReactiveX/RxJava, 其中对RxJava进行了一句话描述:RxJava – Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM. 大意就是:一个在Java VM上使用可观测的序列来组成异步的、基于事件的程序的库。 更详细的说明在Netflix技术博客的一篇文章中描述了RxJava的主要特点: 1.易于并发从而更好的利用服务器的能力。 2.易于有条件的异步执行。 3.一种更好的方式来避免回调地狱。 4.一种响应式方法。 与CompletableFuture对比 之前提到CompletableFuture真正的实现了异步的编程模式,一个比较常见的使用场景: CompletableFuture&In...
使用 Java+Elasticsearch+Kibana 爬取了知乎 60 万用户数据,做了简单的可视化分析。
久违的Git协作后续终于得空和大家一起分享了,希望可以对大伙有用。
附踩坑记录!!}

我要回帖

更多关于 哪个直播平台明星最多 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信