亚虎娱乐官方app中国

我们不支持 IE 10 及以下版本浏览器

It appears you’re using an unsupported browser

为了获得更好的浏览体验,我们强烈建议您使用较新版本的 Chrome、 Firefox、 Safari 等,或者升级到最新版本的IE浏览器。 如果您使用的是 IE 11 或以上版本,请关闭“兼容性视图”。
开源中国 - 找到您想要的开源项目,分享和交流 - 亚虎娱乐官方app_yahu999_亚虎国际pt客户端

精彩阅读

  • 最新推荐

  • 今日热门

  • 本周热门

  • 每日一博

  • 最新文章

工欲善其事必先利其器。100万项目资金助你成为自由职业者

广告
优质开发商申请规则细则落地了,赶紧来看看自己符合不符合。
众包

Linux TCP连接建立过程超时的参数调整

简述Linux TCP连接过程中的超时参数
摘下-满天星 亚虎国际pt客户端于 4小时前 阅读 23

Centos 7+CDH5.7.2全部署流程

Centos 7+CDH5.7.2全部署流程 一、前期准备 1、虚拟机配置     这个配置是我在网上看到的,我就借用了这个配置:     主节点:8g内存、硬盘80g     从节点:2g内存、硬盘80g     安装系统的时候,我建议将IP和主机名都给配置好,这样就省的在系统中进行配置了,当然下面也有在系统中配置的方法。     所以如果你要使用虚拟机来完成这个配置的话,那么,你的主机的配置内存就不能低于16G了。而且还要找一个盘符较大的磁盘空间,不然到后面操作CDH的时候会很尴尬,我第一次就被卡在了硬盘空间不足上,然后又重新找了一个较大的盘符进行了重新安装,包括虚拟机系统。 2、yahu999版本     1.JDK版本:jdk-8u131-linux-x64.tar.gz     2.Scala版本:scala-2.11.0.tgz     以上两个包建议使用rpm或者yum安装,这样可以省点事,不过我是使用的这两个包。     3.jdbc连接包:mysql-connector-java-5.1.38-bin.jar     4.MySQL相关包:     MySQL-client-5.6.29-1.linux_glibc2.5.x86_64.rpm     MySQL-server-5.6.29-1.linux_glibc2.5.x86_64.rpm     5.CDH安装相关的包:     cloudera manager包:cloudera-manager-centos7-cm...
星汉 亚虎国际pt客户端于 6小时前 阅读 195

中国人自己的框架——蚂蚁金服RPC框架结构分析

SOFA亚虎娱乐官方app项目让不在蚂蚁金服工作的程序员也能获得阿里的项目经验
码洞 亚虎国际pt客户端于 16小时前 阅读 536 评论 5

深入分析Kubernetes Scheduler的NominatedPods

本文对NominatedPods和NominatedNode的作用进行了阐述,并从源码角度分析了抢占调度时及抢占调度后,NominatedPods都有哪些变更操作,最后分析了PriorityQueue中Pod的Add/Update/Delete操作对PriorityQueue NominatedPods Cache的影响,希望有助于读者加深对scheduler抢占调度和优先级队列的理解。
WaltonWang 亚虎国际pt客户端于 1天前 阅读 94

基于前序遍历的无递归的树形结构的数据库表设计

本文介绍的方法基于多叉树的前序遍历序列,是所有数据库树结构存储方案中查询子树速度最快的方案。最早发表在这里"http://drinkjava2.iteye.com/blog/2353983",但那篇文章太啰嗦了,这是整理后的精简版,其实原理很简单,几句话就能说完。 目前常见的树形结构数据库存储方案有以下四种,但是都存在一定问题: 1)Adjacency List(邻接表):每个节点仅记录父节点主键。优点是简单,缺点是访问子树需要遍历,对数据库压力大(即使是支持遍历SQL的数据库)。 2)Path Enumerations( 路径枚举):用一个字符串记录当前节点所在路径。优点是查询方便,缺点是占用空间大,查询需要使用like模糊方法,效率低,插入新记录时要手工更改此节点以下所有路径,维护不便。 3)Closure Table(闭包表):专门一张表维护Path,缺点是占用空间大,操作不直观。 4)Nested Sets (嵌套集):记录左值和右值,优点是查询子树无需递归,缺点是非常复杂、难操作。 本文介绍的基于树形结构的前序遍历序列方法,示意图如下:   如上图左边的树结构,映射在数据库里的结构见右图表格,注意整个表格是一个排好序的树结构的前序遍历序列,相同节点深度的排序以line为准。 表格的最后一行(或每个根节点)必须有...
yong9981 亚虎国际pt客户端于 1天前 阅读 80 评论 2

Spring Cloud Zuul中使用Swagger汇总API接口文档

> 有很多读者问过这样的一个问题:虽然使用Swagger可以为Spring MVC编写的接口生成了API文档,但是在微服务化之后,这些API文档都离散在各个微服务中,是否有办法将这些接口都整合到一个文档中?之前给大家的回复都只是简单的说了个思路,昨天正好又有人问起,索性就举个例子写成博文供大家参考吧。 如果您还不了解`Spring Cloud Zuul`和`Swagger`,建议优先阅读下面两篇,有一个初步的了解: - [Spring Cloud构建微服务架构:服务网关(基础)](http://blog.didispace.com/spring-cloud-starter-dalston-6-1/) - [Spring Boot中使用Swagger2构建强大的RESTful API文档](http://blog.didispace.com/springbootswagger2/) > 本文首发于:http://blog.didispace.com/Spring-Cloud-Zuul-use-Swagger-API-doc/ > > **如果您有本文的需求,也可以看看我的这个亚虎娱乐官方app项目,可以直接使用:https://gitee.com/didispace/swagger-butler** ### 准备工作 上面说了问题的场景是在微服务化之后,所以我们需要先构建两个简单的基于Spring Cloud的微服务,命名为`swagger-service-a`和`swagger-service-b`。 下面只详细描述一个服务的构建内容,另外一个只是名称不同,如有疑问可以在文末查...
程序猿DD 亚虎国际pt客户端于 2天前 阅读 511 评论 2

你了解的工厂模式可能有误

工厂模式,与简单工厂模式
温安适 亚虎国际pt客户端于 2天前 阅读 503 评论 5 点赞 3

使用Safe.js绑定联动快速开发用户信息页面

这篇文章将会讲解如何使用safe.js快速开发一个web应用程序。 前言 在这篇文章里面,我将简单制作一个用户信息输入的页面 【本文不会讲解safe.js每句代码的具体作用,如果想了解请点击此链接:https://gitee.com/skyogo/Safe/wikis/Safe.js】 开始 首先我们先建立一个Demo.html的文件,里面写上基本结构,并用script标签引入safe.js的文件:(Safe.js Gitee链接:https://gitee.com/skyogo/Safe)【safejs版本必须大于3.1.0】 <!DOCTYPE html> <html> <head> <title>Safe.js Demo</title> <meta charset="utf-8"> </head> <body> <script src="http://www.oschina.net/js/Safe.js"></script> <script> window.onload = function(){ } </script> </body> </html>  然后我们在body标签里面写上以下代码: <input id="nameInput" placeholder="请输入名字:" type="text"> <span id="name">你的名字:<span class="val"></span></span> <br> <br> <hr> <input id="ageInput" placeholder="请输入年龄:" type="text"> <span id="age">你...
Skyogo 亚虎国际pt客户端于 2天前 阅读 191 评论 3

分布式架构的演进过程

一.分布式架构的发展历史      1946年,世界上第一台电子计算机在美国的宾夕法尼亚大学诞生,它的名字是:ENICAC ,这台计算机的体重比较大,计算速度也不快,但是而代表了计算机时代的到来,再以后的互联网的发展中也有基础性的意义。      计算机的组成是有五部分完成的,分别是:输入设备,输出设备,存储器,存储器里面由运算器和控制器,有一个冯诺依曼的模型非常形象的对象计算机的组成进行了描述,不过计算机也是有数据流,指令流,控制流来进行计算的和正常运转的。如图:                ENIAC之后,电子计算机进入到了IBM主导的大型机的时代,   在1946年第一台IBM大型机SYSTEM/360诞生,这使得IBM在20世纪50~60年代统治了整个大型计算机的工业,在大型主机时代,计算机架构向两个方向发展CISC(微处理器执行的计算机语言指令集)CPU为架构的价格便宜的个人PC和RISC(精简指令集计算机)价格高的小型UNIX服务器。      大型主机的出现,凭借着计算能力和处理能力,高的稳定性和安全性,在很长的一段时间内引领到计算领域的发展。但是集中式的计算机系统来带来了一些问题,来越来越不能满足用户的需求比如说:       1.大型的主机非常贵,一般的小企业用不起。       ...
代码屠夫18 亚虎国际pt客户端于 2天前 阅读 384 点赞 1

使用 Git-Analyze 玩转 Git

git-analyze 是一个基于 libgit2 的 git 工具集,包括 git-analyze,git-complete, git-rollback,以及 git-cheat 等
Force武装卫队 亚虎国际pt客户端于 2天前 阅读 300 评论 3

jenkins编译之Optional小坑

背景 最近在部门内部一直推广Guava https://my.oschina.net/qixiaobo025/blog?search=guava 其中对于可空对象建议各位使用Optional封装。 问题 最近发现了奇怪的问题 [ERROR] COMPILATION ERROR : [INFO] ------------------------------------------------------------- [ERROR] /data/jenkins/workspace/f6-local-test-erp/biz-service-impl/src/main/java/com/air/tqb/service/base/impl/ServiceCategoryServiceImpl.java:[83,8] 错误: 对Optional的引用不明确 [ERROR] java.util 中的类 java.util.Optional 和 com.google.common.base 中的类 com.google.common.base.Optional 都匹配 /data/jenkins/workspace/f6-local-test-erp/biz-service-impl/src/main/java/com/air/tqb/service/base/impl/ServiceCategoryServiceImpl.java:[114,8] 错误: 对Optional的引用不明确 [ERROR] java.util 中的类 java.util.Optional 和 com.google.common.base 中的类 com.google.common.base.Optional 都匹配 /data/jenkins/workspace/f6-local-test-erp/biz-service-impl/src/main/java/com/air/tqb/service/base/impl/ServiceCategoryServiceImpl.java:[122,8] 错误: 对Optiona...
Mr_Qi 亚虎国际pt客户端于 3天前 阅读 395 点赞 1

chrome又出幺蛾子了之Cannot read property 'onMessage' of undefined?

背景 Chrome获取Mac地址实现 问题 这个问题其实还蛮影响开发和测试的 小伙伴加的代码如下 var isChrome = window.navigator.userAgent.indexOf("Chrome") !== -1;//判断是否是chrome浏览器 //获取插件mac地址 if(isChrome){ var editorExtensionId = "fndijacmgfpgicgknoceclheehanolhc"; function sendMessage(type){ chrome.runtime.sendMessage(editorExtensionId, {requestType: type}, function(response) { }); } sendMessage(); } 其实很明显这段代码容易出问题! 首先chrome.runtime从chrome23版本才有 那么不兼容老版本的chrome。 chrome.runtime Description: Use the chrome.runtime API to retrieve the background page, return details about the manifest, and listen for and respond to events in the app or extension lifecycle. You can also use this API to convert the relative path of URLs to fully-qualified URLs.  Availability: Since Chrome 23.  Content Scripts: connect , getManifest , getURL , id , onConnect , onMessage and sendMessage ...
Mr_Qi 亚虎国际pt客户端于 3天前 阅读 314

教程:一起学习Hystrix--Hystrix常用场景--失败

一起学习一下高并发架构中神器Hystrix,使用hystrix之前,建议先了解一下Rxjava,本文通过官方文档,对Hystrix进行初步了解,如有不当之处,望大神指正补充 ,后续通过项目示例对Hystrix再进一步深入学习
java_龙 亚虎国际pt客户端于 3天前 阅读 267

Guava之神奇的Ordering

背景 这年头想必没几个人没写过排序吧。。。而在jdk也默认提供了许多和排序相关的封装。 我们最常使用的想必就是 /** * Sorts the specified list into ascending order, according to the * {@linkplain Comparable natural ordering} of its elements. * All elements in the list must implement the {@link Comparable} * interface. Furthermore, all elements in the list must be * <i>mutually comparable</i> (that is, {@code e1.compareTo(e2)} * must not throw a {@code ClassCastException} for any elements * {@code e1} and {@code e2} in the list). * * <p>This sort is guaranteed to be <i>stable</i>: equal elements will * not be reordered as a result of the sort. * * <p>The specified list must be modifiable, but need not be resizable. * * <p>Implementation note: This implementation is a stable, adaptive, * iterative mergesort that requires far fewer than n lg(n) comparisons * when the input array is partially sorted, while offering the * performance of a traditional mergesort when the inpu...
Mr_Qi 亚虎国际pt客户端于 3天前 阅读 565 评论 1

渐进式Web应用(PWA)入门教程(下)

上篇文章我们对渐进式Web应用(PWA)做了一些基本的介绍。 渐进式Web应用(PWA)入门教程(上) 在这一节中,我们将介绍PWA的原理是什么,它是如何开始工作的。 第一步:使用HTTPS 渐进式Web应用程序需要使用HTTPS连接。虽然使用HTTPS会让您服务器的开销变多,但使用HTTPS可以让您的网站变得更安全,HTTPS网站在Google上的排名也会更靠前。 由于Chrome浏览器会默认将localhost以及127.x.x.x地址视为测试地址,所以在本示例中您并不需要开启HTTPS。另外,出于调试目的,您可以在启动Chrome浏览器的时候使用以下参数来关闭其对网站HTTPS的检查: ·         --user-data-dir ·         --unsafety-treat-insecure-origin-as-secure 第二步:创建一个应用程序清单(Manifest) 应用程序清单提供了和当前渐进式Web应用的相关信息,如: ·         应用程序名 ·         描述 ·         所有图片(包括主屏幕图标,启动屏幕页面和用的图片或者网页上用的图片) 本质上讲,程序清单是页面上用到的图标和主题等资源的元数据。 程序清单是一个位于您应用根目录的JSON文件。该JSON文件返回时必须添加Content-Type: application/manifes...
葡萄城控件技术团队 亚虎国际pt客户端于 3天前 阅读 345

自定义跨平台比特币实时行情看板

![](https://static.oschina.net/uploads/img/201805/24192235_l9n0.png) ### 一、前言 前段时间跟朋友炒币,总是需要打开交易平台才能看行情,有点麻烦,而且那个窗口也特别大,内容也很杂。所以需要一个简洁的看板。下面是需求。 #### 需求: - 首先是可以看各种币行情的看板 - 关注的币种都不同,所以需要支持自定义交易币种 - 由于大家使用的系统不同,要支持跨平台。 ### 二、方案和工具 #### 方案 简单来讲就是electron套个aicoin插件 分三步: - 用vue来做个设置页面 - 用vue做个看板页面,把aicoin套到vue里 - 用vue-router组合起来放到electron里 #### 主要工具 - electron - vue - element-ui - aicoin ### 三、项目结构 ![输入图片说明](https://static.oschina.net/uploads/img/201805/23170033_Whbk.jpg) #### 主要文件说明 - MainPage用来配置要显示的货币类型 - ShowPage是看板页面 - aicoin是下载到本地的aicoin脚本,因为要翻墙所以先下好 - showcoin是具体显示数据的脚本。 #### electron和vue安装 这个教程比较多,参考[链接](https://github.com/SimulatedGREG/electron-vue),install的时候,建议使用cnpm快一些尤其是electron如果用npm特别慢。 #### 不...
sharpcx 亚虎国际pt客户端于 3天前 阅读 930 评论 14 点赞 1 打赏 1

创建maven原型(artchetype)

maven自定义原型
666B 亚虎国际pt客户端于 3天前 阅读 269

码云即将支持 Git v2 Protocol

Git v2 Protocol aka Git Wire Protocol
Force武装卫队 亚虎国际pt客户端于 3天前 阅读 1192 评论 10 点赞 4

Why c++ coroutine?Why libgo?

讲述C++协程的近况、设计与实现中的细节与决策
Li_Mr 亚虎国际pt客户端于 3天前 阅读 2848 评论 45 点赞 7

WebMIS v1.0.0 源码解析,教你如何自建HMVC框架

时隔2年的调整,WebMIS的PHP框架再次突破局限创新,整理的大量计算机编程基础知识,吸取大量php框架核心部分,自主研发了一套简洁、灵活、快速的PHP框架,提供了快速开发后台初步解决多用户、多权限问题,封装的一套后台操作的前端效果。 在线体验:http://mvc.webmis.vip/admin 帐号:admin  密码:admin 环境:CentOS7+Nginx+PHP7+Mariadb 官网:https://webmis.vip 文档:https://webmis.vip/home/docs 注意:服务器设置为30分钟恢复一次数据,请大胆体验!服务器蹦了我去处理! 框架构思: 编程基础知识很重要!通过拆分_url参数、命名空间和自动加载类实现控制器,后面就是命名空间完成的模型和视图,得融会贯通面向对象开发思想啊! 1. 目录结构和public下的index.php入口文件 2. 框架启动文件(start.php),拆分参数获取模块、控制器、函数名 3.  通过命名空间实现自动加载类,实现调用控制器下的函数 4. 公共控制器(Controller.php) 5. 实现视图加载功能 6. 公共模型(Model.php) 网站有我们的联系方式,欢迎加入学习讨论!  ...
WebMIS 亚虎国际pt客户端于 4天前 阅读 156 评论 2

python+opengl显示三维模型小程序

在win7+python3.5环境下配置opengl,并显示三维模型
xiaoge2016 亚虎国际pt客户端于 3周前 阅读 27

值得看的电影

乱片当道,妖风横行,需慧眼识真
anlve 亚虎国际pt客户端于 1个月前 阅读 10

Yii2.0实现微信公众号后台开发

研读 微信公众平台开发者文档 ,然后再阅读本文,效果更佳! 接入微信 Yii2后台配置 1.在app/config/params.php中配置token参数 return [     //微信接入     'wechat' =>[         'token' => 'your token',     ], ]; 2.在app/config/main.php中配置路由 因为接口模块使用的RESTful API,所以需要定义路由规则。 'urlManager' => [     'enablePrettyUrl' => true,     'enableStrictParsing' => true,     'showScriptName' => false,     'rules' => [         [             'class' => 'yii\rest\UrlRule',             'controller' => 'wechat',             'extraPatterns' => [                 'GET valid' => 'valid',             ],         ],     ], ], 3.在app/controllers中新建WechatController <?php   namespace api\controllers;   use Yii; use yii\rest\ActiveController;   class WechatController extends ActiveController {       public $modelClass = '';       public function actionValid()  ...
botkenni 亚虎国际pt客户端于 1小时前 阅读 2

spring boot学习资料以及DEMO项目

  https://segmentfault.com/a/1190000011760385 https://github.com/souyunku/spring-boot-examples https://github.com/zhangyd-c/springboot https://github.com/JeffLi1993/springboot-learning-example
Skqing 亚虎国际pt客户端于 2个月前 阅读 28

Yii2.0 rules验证规则集合的详细介绍

我在学习Yii2的路上,学习笔记 required : 必须值验证属性 代码如下: [['字段名'],required,'requiredValue'=>'必填值','message'=>'提示信息']; #说明:CRequiredValidator 的别名, 确保了特性不为空. email : 邮箱验证 代码如下: ['email', 'email']; #说明:CEmailValidator的别名,确保了特性的值是一个有效的电邮地址. match : 正则验证 [['字段名'],match,'pattern'=>'正则表达式','message'=>'提示信息'];   [['字段名'],match,'not'=>ture,'pattern'=>'正则表达式','message'=>'提示信息']; /*正则取反*/ #说明:CRegularExpressionValidator 的别名, 确保了特性匹配一个正则表达式. url : 网址 代码如下: ['website', 'url', 'defaultScheme' => 'http']; #说明:CUrlValidator 的别名, 确保了特性是一个有效的路径. captcha : 验证码 代码如下: ['verificationCode', 'captcha']; #说明:CCaptchaValidator 的别名,确保了特性的值等于 CAPTCHA 显示出来的验证码. safe : 安全 ['description', 'safe']; compare : 比较 代码如下: ['age', 'compare', 'compareValue' => 30, 'operator' => '>=']; #说明:compareValue(比较常量值) - operator(比较操作符)  #说明:CCom...
botkenni 亚虎国际pt客户端于 1小时前 阅读 2 评论 2

Yii2实现QQ互联登录

Yii2中OAuth扩展及QQ互联登录的方法,实例分析了OAuth扩展的相关配置与QQ互联登陆的实现技巧。 具体如下: php composer.phar require --prefer-dist yiisoft/yii2-authclient "*" Quick start 快速开始 更改Yii2的配置文件config/main.php,在components中增加如下内容 'components' => [  'authClientCollection' => [  'class' => 'yii\authclient\Collection',  'clients' => [   'google' => [   'class' => 'yii\authclient\clients\GoogleOpenId'   ],   'facebook' => [   'class' => 'yii\authclient\clients\Facebook',   'clientId' => 'facebook_client_id',   'clientSecret' => 'facebook_client_secret',   ],  ],  ]  ... ] 更改入口文件,一般是app/controllers/SiteController.php,在function actions增加代码,同时增加回调函数successCallback,大致如下 class SiteController extends Controller {  public function actions()  {  return [   'auth' => [   'class' => 'yii\authclient\AuthAction',   'successCallback' => [$this, 'successCallback'],   ],  ]  }  public function successCallback($clie...
botkenni 亚虎国际pt客户端于 59分钟前 阅读 3

springboot + @scheduled 多任务并发

下面讲的是springboot + @scheduled 多任务并发,spring的定时任务(包括多任务并发)详解参见 传送门 一、问题 项目采用springboot搭建,想给方法添加@Scheduled注解,实现两个定时任务。可是运行发现,两个task并没有并发执行,而是执行完一个task才会执行另外一个。上代码: package com.autohome.contentplatform.tasks; import org.springframework.beans.factory.annotation.Configurable; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @Component @Configurable @EnableScheduling public class task1 { @Scheduled(cron = "0/5 * * * * ? ") public void startSchedule() { System.out.println("===========1=>"); try { for(int i=1;i<=10;i++){ System.out.println("=1==>"+i); Thread.sleep(1000); } } catch (InterruptedException e) { e.printStackTrace(); } } @Schedu...
叶落花开 亚虎国际pt客户端于 2个月前 阅读 46

PCI简介(一)

X86处理器系统简介 X86主板布局 PCI是Peripheral Component Interconnect(外设部件互连标准)的缩写,本文介绍x86处理器系统下PCI相关知识。x86主板图如图 1.1所示: 图 1.1 X86主板布局 从图中可以看出,靠近CPU的是北桥芯片(North Bridge),北桥芯片中集成了内存控制器、PCI控制器等,主要负责和高速设备通信,如内存、显卡等。在北桥芯片附近的是南桥芯片(South Bridge),主要负责和一些低速外设之间的通信。另外,内存插槽和PCI插槽都是靠近北桥芯片的,目的就是减少这些插槽到北桥芯片之间的布线长度,从而降低北桥芯片和这些设备的通信延迟和干扰。 芯片组系统框架 图 1.2 芯片组系统框架 如图 1.2所示,intel 82915P是一款典型的北桥芯片,intel ICH6x是南桥芯片,这两款芯片加在一起被称为i915P芯片组。某个芯片组的名称其实就是以北桥芯片的型号来命名的。从图 1.2可以了解到以下信息: CPU和北桥之间通过前端总线FSB通信 北桥负责和显卡、内存设备通信 南桥负责和低速外设通信,如USB设备、硬盘等 南桥不能直接和CPU通信,必须经过DMI和北桥通信,然后统一由北桥和CPU通信 图 1.2的这种的CPU、北桥、南桥架构是10几年前的经典架构,目前北桥的大部分功能已经被...
深山野老 亚虎国际pt客户端于 3个月前 阅读 10

Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean.

我是因为spring boot的启动程序的注解写错了,应该是springbootapplication,结果写成了springbootconfiguration了。
Germmy 亚虎国际pt客户端于 3个月前 阅读 34

《学会学习-从认知自我到高效学习》

无意见发现书架上还有这本书,刚好我最近又开始对学习效率产生的疑惑,不知道怎么提升,于是翻了一遍。 这本书列举了很多日本名人的学习方法,非常多,近二十种,比如:目标管理&命名思考法、不请自来学习法等等。针对不同的性格,给出了很多参考。 如果学习动力、学习方法上有问题,可以尝试从中找找有没有答案。
francis-x 亚虎国际pt客户端于 3个月前 阅读 43

《Golang 入门系列六》golang的控制语句

前言:本文主要阐述golang中的if else、switch语句和for循环的用法。   一、if else语句 1.1  基本语法 在有些情况下,条件语句两侧的括号是可以被省略的;当条件比较复杂时,则可以使用括号让代码更易读。条件允许是符合条件,需使用 &&、|| 或 !,你可以使用括号来提升某个表达式的运算优先级,并提高代码的可读性。 第一种形式: if condition { // do something } else { // do something } 第二种形式: if initialization; condition { // do something } 1.2  示例 package main import "fmt" func main() { // 第一种形式 n := 7 if n >= 0 { fmt.Printf("%d is >=0\n",n) } else { fmt.Printf("%d is <0\n",n) } //第二种形式 //初始化的变量为局部变量 if m := 9; m < 0 { fmt.Printf("%d is <0\n",m) } else if m > 0 { fmt.Printf("%d is >0\n",m) } else { fmt.Printf("%d is = 0",m) } //带bool值的 if bool1 := true; !bool1 { fmt.Printf("you are not right") } else if bool1 { fmt.Printf("you are right") } }   二、switch语句 2.1  基本语法 每一个case分支都是唯一的,从上至下逐一测试,直到...
IT--小哥 亚虎国际pt客户端于 2个月前 阅读 22

Redis 之 (2) 常用操作、操作键值、安全设置

# 13. redis常用操作 ## 1 Redis常用操作 for String数据 - SETNX 检测键值是否有value,如果有直接返回一个 0,如果没有直接返回一个 1 并且创建此 value。(string) ``` 如果一个key设置两个不同的值,第二个值会覆盖第一个值。 # redis-cli 127.0.0.1:6379> set key1 yun OK 127.0.0.1:6379> set key2 tai OK 127.0.0.1:6379> set key1 awkk OK 127.0.0.1:6379> get key1 "awkk" 使用setnx命令检测 127.0.0.1:6379> SETNX key1 aaa (integer) 0 127.0.0.1:6379> SETNX key3 aaa (integer) 1 127.0.0.1:6379> get key1 "awkk" 127.0.0.1:6379> get key3 "aaa" ``` - setex 针对某个key设置一个过期时间。(string) ``` setex key3 10 1 //给key3设置过期时间为10s,值为1,若key已经存在,会覆盖新的值。 ``` ## 2 Redis常用操作 for List数据 - LPUSH 插入值、LPOP 取(挤)出值、lrange 列出值(范围) ``` 127.0.0.1:6379> LPUSH kk 222 //从左侧添加一个数据,相当于从瓶子上方往里面放饼干,先存的在里面,后存的在外边 (integer) 1 127.0.0.1:6379> LPUSH kk 111 (integer) 1 127.0.0.1:6379> LPUSH kk 2222 (integer) 3 127.0.0.1:6379> LRANGE kk 0 -1 1) "2222" ...
周云台 亚虎国际pt客户端于 2个月前 阅读 49

Flutter 构建完整应用手册-持久化

Flutter 构建完整应用手册-持久化
scooplol 亚虎国际pt客户端于 2个月前 阅读 83

cordova android build FAILED

``` $ cordova run android Android Studio project detected CHCP plugin after prepare hook: config-file set to http://.../chcp.json ANDROID_HOME=/.../Library/Android/sdk JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home studio Subproject Path: CordovaLib Subproject Path: app publishNonDefault is deprecated and has no effect anymore. All variants are now published. Configuration 'compile' in project ':app' is deprecated. Use 'implementation' instead. The Task.leftShift(Closure) method has been deprecated and is scheduled to be removed in Gradle 5.0. Please use Task.doLast(Action) instead. at build_7iqq3l05h5ir45unzxq8vzck8.run(/.../platforms/android/app/build.gradle:145) :CordovaLib:preBuild UP-TO-DATE …… :app:transformDexArchiveWithExternalLibsDexMergerForDebug FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'. > java.lang.RuntimeException: java.lang.Runtim...
郭大鹏 亚虎国际pt客户端于 1个月前 阅读 94

Hive什么情况下可以避免进行mapreduce?

  1.本地模式下,hive可以简单的读取目录路径下的数据,然后输出格式化后的数据到控制台。比如有本地员工表employee,当执行 select * from employee时直接将文件中数据格式化输出。   2.查询语句中的过滤条件只是分区字段的情况下不会进行mapreduce。
无精疯 亚虎国际pt客户端于 1个月前 阅读 34

(转)hive中解析json数组

hive中解析一般的json是很容易的,get_json_object就可以了。 但如果字段是json数组,比如 [{"bssid":"6C:59:40:21:05:C4","ssid":"MERCURY_05C4"},{"bssid":"AC:9C:E4:04:EE:52","appid":"10003","ssid":"and-Business"}], 直接调用get_json_object返回空值。这样的话对于不会写UDF的同学来说,解析json数组就变得很棘手,好在hive中自带了explode函数,从而让解析json数组变得有可能了。这里先介绍一下explode的使用方法。 explode(array) select explode(array('A','B','C')) as col; select tf.* from (select 0 from dual) t lateral view explode(array('A','B','C')) tf as col; 运行结果: col  C B A 函数说明:explode的参数是数组,提供了类似于列转的功能;假如参数数组长度为3,则返回的记录会是3行,且每列为各个数组项,如上。回到  [{"bssid":"6C:59:40:21:05:C4","ssid":"MERCURY_05C4"},   {"bssid":"AC:9C:E4:04:EE:52","appid":"10003","ssid":"and-Business"}], 怎么解析出bssid?思路是通过explode把原数据变成2行数据 ({"bssid":"6C:59:40:21:05:C4","ssid":"MERCURY_05C4"}和  {"bssid":"AC:9C:E4:04:EE:52","appid":"10003","ssid":"and-Bu...
Avner 亚虎国际pt客户端于 2个月前 阅读 116

Mybatis架构设计及源码分析-mapper.xml文件解析

使用mybatis我们通常会自己去书写mapper.xml文件,文件内部通常会书写sql语句相关信息,下面我们将分析mybatis是如何解析这些信息并保存于全部配置类Configuration中。 回到之前的代码mapperElement(root.evalNode("mappers"));会解析mappers下面的节点信息。mybatis有四种方式配置mappers下面节点信息分别是: <!-- 使用相对于类路径的资源引用 --> <mappers> <mapper resource="org/mybatis/builder/AuthorMapper.xml"/> <mapper resource="org/mybatis/builder/BlogMapper.xml"/> <mapper resource="org/mybatis/builder/PostMapper.xml"/> </mappers> <!-- 使用完全限定资源定位符(URL) --> <mappers> <mapper url="file:///var/mappers/AuthorMapper.xml"/> <mapper url="file:///var/mappers/BlogMapper.xml"/> <mapper url="file:///var/mappers/PostMapper.xml"/> </mappers> <!-- 使用映射器接口实现类的完全限定类名 --> <mappers> <mapper class="org.mybatis.builder.AuthorMapper"/> <mapper class="org.mybatis.builder.BlogMapper"/> <mapper class="org.mybatis.builder.PostMapper"/> </mappers> <!-- 将包内的映射器接口实现全部注册...
申文波 亚虎国际pt客户端于 1小时前 阅读 4

5 中 IO 模型简单理解

1. 同步IO和异步IO 关键区别反映在数据拷贝阶段是由用户线程完成还是内核完成。 所以说异步IO必须要有操作系统的底层支持。 2. 阻塞IO和非阻塞IO 反映在IO操作的第一个阶段,在查看数据是否就绪时是如何处理的。 3. 多路复用IO模型 有一个线程不断去轮询多个socket的状态,只有当socket真正有读写事件时,才真正调用实际的IO读写操作。
Ryan-瑞恩 亚虎国际pt客户端于 1小时前 阅读 3

nginx 查看每秒有多少访问量

nginx访问量统计 1.根据访问IP统计UV awk '{print $1}' access.log|sort | uniq -c |wc -l 2.统计访问URL统计PV awk '{print $7}' access.log|wc -l 3.查询访问最频繁的URL awk '{print $7}' access.log|sort | uniq -c |sort -n -k 1 -r|more 4.查询访问最频繁的IP awk '{print $1}' access.log|sort | uniq -c |sort -n -k 1 -r|more 5.根据时间段统计查看日志 cat access.log| sed -n '/14\/Mar\/2015:21/,/14\/Mar\/2015:22/p'|more
浮躁的码农 亚虎国际pt客户端于 2个月前 阅读 68

ionic3中使用自定义配置

新工作接触了ionic,以前没用过,只是离职前短暂接触过类似的vuex,到需要修改公司项目的时候临时差什么学什么,其中一个是自定义配置项 配置是很常见的设置,之前用的thinkphp的配置很清晰,基本上是随写谁用,但在ionic需要用自定义配置时我懵了先是去搜自定义配置,前面一大堆的自定义插件的结果,就是没有配置,无论是百度还是搜狗全是无关的东西,用谷歌搜了一个符合问题的提问,点进去却没人回答 又是用谷歌搜了angular自定义配置,ionic配置啥啥啥一堆关键词,最后用常量总算是找到部分符合预期的答案了(https://blog.csdn.net/u010730897/article/details/53608869),具体的自己点进去看,我需要的是直接以属性的形式,自己尝试了一会总算搞定 具体方法: 在src/app下新建app.config.ts,写 export class AppConfig{ static Protocol="http"; static InterfacePreURL=AppConfig.Protocol+"://www.网址.com/" } 这两个配置项是我用于切换线上和调试url用的 在需要使用的地方导入它 import {AppConfig} from "../../app/app.config"; 上面的路径是phpstorm给我生成的,需要自行修改 具体使用 public slides = [ { src:AppConfig.InterfacePreURL+'resou...
gcudwork 亚虎国际pt客户端于 1个月前 阅读 170

一场版本升级引发的性能血案的追凶过程

## 1. 故事的开始 上周 ActFramework 推出 [act-1.8.8-RC4 版本](https://www.oschina.net/news/96046/act-starter-1-8-8-0-released) 后, 我兴致勃勃更新了 [TFB 性能 PK 项目](https://github.com/TechEmpower/FrameworkBenchmarks/tree/master/frameworks/Java/act) 到最新版, 经过漫长的 60 小时 ( TFB 的一次运行周期是 60 小时) 等待后终于等来了 .............................................. 噩耗: Act 这次的性能骤然下降, 不同测试的下降范围从 60% 到 90% 不等! 不多说了, 说起来都是泪啊. 先上图吧 (为了更加切合重点, 设置了测试过滤, 只显示 Java 全栈框架, 且排除掉了直接用 JDBC 的测试项目): ### 1.1 JSON 测试 [act-1.8.1](https://www.techempower.com/benchmarks/#section=test&runid=61ff99e2-2392-4d7a-b6af-a5f081c5e004&hw=ph&test=db&l=hra0e7&c=6&o=4) ![image](https://user-images.githubusercontent.com/216930/40289132-043035a0-5cfa-11e8-972e-90df52a5b938.png) [act-1.8.8-RC4](https://www.techempower.com/benchmarks/#section=test&runid=ae097e87-3b23-402c-8f51-1608e16dd11a&hw=ph&test=json&l=hra0e7&c=6&o=4) ![image](http...
罗格林 亚虎国际pt客户端于 5天前 阅读 2435 评论 18 点赞 9

RPC框架实践之:Google gRPC

gRPC是Google亚虎娱乐官方app的通用高性能RPC框架,它支持的是使用**Protocol Buffers**来编写Service定义,支持较多语言扩平台并且拥有强大的二进制序列化工具集。
CodeSheep 亚虎国际pt客户端于 6天前 阅读 2351 评论 1 点赞 3

简易html视频播放器

### 文件列表 ``` root@tianshl:/data/video# ls hch.mp4 test.mp4 xyx.mp4 index.html video.list jquery.js ``` ###### index.html ```html 视频列表 ``` ###### video.list ``` # 该目录下的所有MP4文件, 供jQuery解析 root@tianshl:/data/video# ls *.mp4 > video.list ``` ### nginx配置 ``` user root; worker_processes 1; events { worker_connections 1024; } http { include mime.types; sendfile on; keepalive_timeout 65; server { listen 8000; server_name 本机IP; location / { # 前两行是认证(可不加) auth_basic "secret"; auth_basic_user_file /usr/local/nginx/passwd.db; # 路径 root /data/video; # 首页 index index.html; } } } ``` ### 界面展示 ``` http://localhost:8000 ``` ###### 认证 ![这里写图片描述](https://img-blog.csdn.net/20180423110432301?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW9idWRpbmcwMDc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) ###### 播放器 ![这里写图片描述](https://img-blog.csdn.net/20180423105900537?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW9idWRpbmcwMDc=/f...
tianshl 亚虎国际pt客户端于 1个月前 阅读 14724 点赞 1

Java下载CSV文件

```java @GetMapping("/download") public void download(HttpServletResponse response, @RequestParam String path) throws Exception { // 让servlet用utf-8转码,默认为ISO8859 response.setCharacterEncoding("utf-8"); File file = new File(path); if (!file.exists()) { // 让浏览器用utf-8解析数据 response.setHeader("Content-type", "text/html;charset=utf-8"); response.getWriter().write("文件不存在或已过期,请重新生成"); return; } String fileName = URLEncoder.encode(path.substring(path.lastIndexOf("/") + 1), "utf-8"); response.setContentType("text/csv"); response.setHeader("Content-Disposition", String.format("attachment; filename=\"%s\"", fileName)); InputStream is = null; OutputStream os = null; try { is = new FileInputStream(path); byte[] buffer = new byte[1024]; os = response.getOutputStream(); int len; while((len = is.read(buffer)) > 0) { os.write(buffer,0, len); } }catch(Exception e) { throw new RuntimeException(e); }finally { try { if (is != null) is.close(); if (os != null) os.close(); } c...
tianshl 亚虎国际pt客户端于 1个月前 阅读 19471

JHipster修改JDL中的entity

## 更新model #### 需求 ``` 概览表增加"创建时间,修改时间,软删除" ``` #### 以往的方式 ###### 1. 修改model.jh, 在实体 Overview 中增加三个属性 ``` /** * 数据概览 -- 概览 */ entity Overview { id Long, ... /* 以下属性为新增的属性 */ /* 创建时间 */ createTime ZonedDateTime, /* 更新时间 */ updateTime ZonedDateTime, /* 是否删除 */ delFlag Boolean, } ``` ###### 2. 生成配置文件 ``` jhipster import-jdl model.jh ``` ###### 3. 运行项目使配置生效 ``` 运行项目时提示"Validation Failed",原因是配置文件的MD5值不同, 此时需要以下操作 1. 修改 DATABASECHANGELOG 表中相关记录的 MD5SUM 2. 在overview表中手动新增三个属性. ``` #### 现在的方式 ###### 1. 修改model.h, 在实体 Overview 中增加三个属性 ###### 2. 生成配置文件 ###### 3. 修改生成的配置文件 ``` src/main/resources/config/liquibase/changelog/20180302095615_added_entity_Overview.xml 将 changeSet中新增的三个column提取至新的changeSet中, 如下: 注意: changeSet的id不能与之前的相同 ``` ###### 4. 运行项目使配置生效 ``` 不需要手动修改MySQL,自动生效 ```...
tianshl 亚虎国际pt客户端于 3个月前 阅读 37203

SFTP服务搭建及基础配置

### 前言 ``` 在某些情况下,允许指定用户可以传输文件到linux系统中,但是不允许使用SSH,要实现这一目的我们可以使用SFTP,并构建chroot环境. 一般只要服务器开启了SSH服务默认就可以使用SFTP服务,只要设置一下权限即可,比如将用户限制到某个目录下. ``` ### 环境 ``` root@tianshl:~# uname -a Linux tianshl 4.4.0-62-generic #83-Ubuntu SMP Wed Jan 18 14:10:15 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux root@tianshl:~# ssh -V OpenSSH_7.2p2 Ubuntu-4ubuntu2.2, OpenSSL 1.0.2g 1 Mar 2016 # ssh需要OpenSSH4.8p1以后的版本.因为要使用chroot设置根目录 ``` ### sftp服务搭建及基础配置 ###### 创建根目录和组 ``` # 创建根目录 root@tianshl:~# mkdir /sftp # 设置属主及权限 root@tianshl:~# chown root:root /sftp root@tianshl:~# chmod 755 /sftp # 创建用户组 root@tianshl:~# groupadd sftp ``` ###### 设置SFTP服务用户目录权限 ``` # 备份配置文件 root@tianshl:~# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak # 修改配置文件 root@tianshl:~# vim /etc/ssh/sshd_config # 修改内容如下: # 注释掉 # Subsystem sftp /usr/lib/openssh/sftp-server # ...
tianshl 亚虎国际pt客户端于 1个月前 阅读 12897 点赞 1

Java使用sftp定时下载文件

### 添加依赖 ``` com.jcraft jsch 0.1.54 ``` ### 增加配置 ``` sftp: ip: 192.168.1.60 port: 22 timeout: 60000 retryTime: 3 admin: username: admin password: 2k3xrYjbd930. ``` ### 代码示例 ``` 每天凌晨1点在多个用户目录中下载csv文件至本地tmp目录 ``` ``` @Service public class SftpTask extends Thread { private ChannelSftp sftp; private Session session; @Value("${sftp.admin.username}") private String username; @Value("${sftp.admin.password}") private String password; @Value("${sftp.host}") private String host; @Value("${sftp.port}") private Integer port; private SftpService sftpService; public EtlSftpTask (SftpService sftpService) { this.sftpService = sftpService; } /** * 建立sftp连接 */ private void connect(){ try { JSch jSch = new JSch(); session = jSch.getSession(username, host, port); session.setPassword(password); session.setConfig("StrictHostKeyChecking", "no"); session.connect(); Channel channel = session.openChannel("sftp"); channel.connect(); sftp = (ChannelSftp) channel; }catch (...
tianshl 亚虎国际pt客户端于 2周前 阅读 6635

Packet for query is too large

### 前言 ##### max_allowed_packet ``` mysql根据max_allowed_packet限制server接收数据包的大小, 数据量超过这个限制时会导致写入或更新失败. ``` ##### 查看当前限制 ``` show VARIABLES like '%max_allowed_packet%'; ``` ### 修改 ``` 以下提供两种修改方式 ``` ##### 1. 修改配置文件 ``` # 查看配置文件路径 mysql --help | grep my.cnf # 修改 vim /etc/my.cnf 在[mysqld]段增加或修改以下内容: max_allowed_packet = 5M # 重启mysql service mysql restart ``` ##### 2. 命令行修改 ``` # 登录mysql mysql -u root -p # 运行指令 set global max_allowed_packet = 5*1024*1024 # 如果上条命令无效: # set @@max_allowed_packet=5*1024*1024 # 重启mysql service mysql restart # ubuntu service mysqld restart # centos ```...
tianshl 亚虎国际pt客户端于 1个月前 阅读 17313

Maven项目一键部署

### 免登陆 ``` # 生成秘钥 tianshl:.ssh tianshl$ ssh-keygen -t rsa -P '' # 将公钥添加至服务器的authorized_keys中 tianshl:.ssh tianshl$ ssh-copy-id -i ./id_rsa.pub root@192.168.1.54 ``` ### 创建脚本 ``` # 项目根目录下创建脚本,名为:update.sh, 内容如下 #!/usr/bin/env bash # 更新 git pull # 打包 mvn clean package -Dmaven.test.skip=true # 上传 scp target/etl-0.0.1-SNAPSHOT.war root@192.168.1.54:/root/ # 删除原日志 | 终止服务 | 启动服务 | 查看启动日志 ssh root@192.168.1.54 "rm etl.log; ps -ef | grep etl | awk '{print $2}' | xargs kill -9; nohup ./etl-0.0.1-SNAPSHOT.war > etl.log 2>&1 &; tail -f etl.log" ``` ### 配置IDE ``` Run / Edit Configurations... / "+" / Bash 1. Name 填写 2. Script 选择 update.sh 3. Working directory 选择 项目根目录 ```...
tianshl 亚虎国际pt客户端于 2个月前 阅读 28973

Postman自动登录,请求带token

![这里写图片描述](http://img.blog.csdn.net/20180323182705200?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb2J1ZGluZzAwNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) ![这里写图片描述](http://img.blog.csdn.net/20180323182719115?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb2J1ZGluZzAwNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) #### 添加一个环境 ``` Manage Environments(右上角的齿轮) => Add => 填写环境的名称 => Add ``` #### 添加登录接口 ``` # 比正常的请求多设置一下 "Tests" # 将登录接口返回的response中的token加入环境变量, 如: pm.environment.set("token", JSON.parse(responseBody).data.authorization); ``` #### 添加一个集合 ``` 1. New collection (左侧 目录) 2. 填写名称,如:"需要token的请求" 3. 切换到选项卡"Authorization" 4. 选择相应的 TYPE 5. Token 中填写 {{token}} 6. 点击Create 创建集合 ``` #### 添加需要token的请求 ``` 在刚创建的集合中添加的请求, Headers中都会自动添加 token, 如果token失效, 重新请求一下登录接口即可...
tianshl 亚虎国际pt客户端于 2个月前 阅读 27675

Java程序员必备的Intellij插件

善用Intellij插件可大幅提升我们的效率 以下是我用过不错的Intellij插件 1. .ignore 地址:https://plugins.jetbrains.com/plugin/7495--ignore 生成各种ignore文件,一键创建git ignore文件的模板,免得自己去写 截图:  2. lombok 地址:https://plugins.jetbrains.com/plugin/6317-lombok-plugin 支持lombok的各种注解,从此不用写getter setter这些 可以把注解还原为原本的java代码 非常方便 截图: 3. p3c 地址:https://plugins.jetbrains.com/plugin/10046-alibaba-java-coding-guidelines 阿里巴巴出品的java代码规范插件 可以扫描整个项目 找到不规范的地方 并且大部分可以自动修复  更多可看: https://github.com/alibaba/p3c/tree/master/idea-plugin 4. FindBugs-IDEA 地址:https://plugins.jetbrains.com/plugin/3847-findbugs-idea 检测代码中可能的bug及不规范的位置,检测的模式相比p3c更多, 写完代码后检测下 避免低级bug,强烈建议用一下,一不小心就发现很多老代码的bug 截图:  5. GsonFormat 地址:https://plugins.jetbrains.com/plugin/7654-gsonformat 一键根据json文本生成java类  非常方便 截图:  6. Maven Helper 地址:https://plugi...
Java工程师-Distance 亚虎国际pt客户端于 6天前 阅读 1619 评论 5 点赞 5

记一次死锁问题分析--详解数据库innodb lock机制

因同事多线程下在同一个事务进行删除和插入操作导致数据库死锁,想解决此问题就要先了解innodb lock机制,本文将通过案例重现,结合innodb lock机制进行剖析。如有不当之处,望大神指正补充
java_龙 亚虎国际pt客户端于 1周前 阅读 1822 评论 13 点赞 6

远程桌面发生身份验证错误,要求的函数不受支持

因为工作关系,一直需要远程登录服务器。以前都是正常的,偶尔的故障也是因为机器本身或是网络故障,今天登录远程桌面一直是上面的错误。开始以为是登录凭证的问题,删除本地凭证以后还是不能登录且所有服务器都是一样的错误,这时候能想到的也只能是系统本身的问题了。 电脑常期是没有关的,今天早上打开发现打开的VS项目已经关闭,想到应该是自动更新以后重启了。 这样看到应该就是昨天的更新的某个补丁导致了这样的问题,检查更新发现一个基于FLASH的更新和一个名为KB4103718(适用于基于 x64 的系统的 Windows 7 月度安全质量汇总)的常规更新,卸载更新KB4103718后重启,问题得到解决! 但是很多人可能与我想的一样,既然微软提供了这样的更新肯定是有他的用处的,卸载或许是解决了问题,但带来的其它的影响却不得而知。 经微软的support指点得出如下解决方案: 使用微软官方建议修改本地组策略: 计算机配置>管理模板>系统>凭据分配>加密Oracle修正 选择启用并选择易受攻击。 易受攻击– 使用 CredSSP 的客户端应用程序将通过支持回退到不安全的版本使远程服务器遭受攻击,但使用 CredSSP 的服务将接受未修补的客户端。 问题解决,收工!   PS:该操作仅用于专业版,...
孟凡陆 亚虎国际pt客户端于 2周前 阅读 4355

Intellij IDEA神器居然还有这些小技巧

# 概述 --- `Intellij IDEA`真是越用越觉得它强大,它总是在我们写代码的时候,不时给我们来个小惊喜。出于对`Intellij IDEA`的喜爱,我决定写一个与其相关的专栏或者系列,把一些好用的`Intellij IDEA`技巧分享给大家。本文是这个系列的第一篇,主要介绍一些你可能不知道的但是又实用的小技巧。 --- # 我最爱的【演出模式】 --- 我们可以使用【Presentation Mode】,将`IDEA`弄到最大,可以让你只关注一个类里面的代码,进行毫无干扰的`coding`。 可以使用`Alt+V`快捷键,弹出`View`视图,然后选择`Enter Presentation Mode`。效果如下: ![这里写图片描述](https://img-blog.csdn.net/20180506101049248?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpbnNvbmdiaW4x/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) 这个模式的好处就是,可以让你更加专注,因为你只能看到特定某个类的代码。可能读者会问,进入这个模式后,我想看其他类的代码怎么办?这个时候,就要考验你快捷键的熟练程度了。你可以使用`CTRL+E`弹出最近使用的文件。又或者使用`CTRL+N`和`CTRL+SHIFT+N`定位文件。 如何退出这个模式呢?很简单,使用`ALT+V`弹出view视图,然后选择`Ex...
Sam哥哥聊技术 亚虎国际pt客户端于 3周前 阅读 8494 评论 69 点赞 32 打赏 1

京东Java架构师讲解购物车的原理及Java实现

今天来写一下关于购物车的东西, 这里首先抛出四个问题: 1)用户没登陆用户名和密码,添加商品, 关闭浏览器再打开后 不登录用户名和密码 问:购物车商品还在吗?  2)用户登陆了用户名密码,添加商品,关闭浏览器再打开后 不登录用户名和密码 问:购物车商品还在吗?    3)用户登陆了用户名密码,添加商品, 关闭浏览器,然后再打开,登陆用户名和密码  问:购物车商品还在吗? 4)用户登陆了用户名密码,添加商品, 关闭浏览器 外地老家打开浏览器  登陆用户名和密码 问:购物车商品还在吗? 上面四个问题都是以京东为模板, 那么大家猜猜结果是什么呢? 1)在 2)不在了 3)在 4)在 如果你能够猜到答案, 那么说明你真的很棒, 那么关于这四点是怎么实现的呢? (如果有不认可的小伙伴可以用京东实验一下) 下面我们就来讲解下购物车的原理,最后再来说下具体的code实现. 1)用户没有登录, 添加商品, 此时的商品是被添加到了浏览器的Cookie中, 所以当再次访问时(不登录),商品仍然在Cookie中, 所以购物车中的商品还是存在的. 2)用户登录了,添加商品, 此时会将Cookie中和用户选择的商品都添加到购物车中, 然后删除Cookie中的商品. 所以当用户再次访问(不登录),此时Cooki...
Java工程师-Distance 亚虎国际pt客户端于 1周前 阅读 6712 评论 43 点赞 15

码云即将支持 Git v2 Protocol

Git v2 Protocol aka Git Wire Protocol
Force武装卫队 亚虎国际pt客户端于 3天前 阅读 1192 评论 10 点赞 4

用t-io来写一个网页聊天室或客服是个怎样的体验

tio-websocket-server的首发教程,并且是以showcase的形式展现的----不仅仅是个教程,还是个可以放心使用的脚手架。
talent-tan 亚虎国际pt客户端于 3周前 阅读 5724 评论 41 点赞 15

JeeSite 4.0 开发环境部署运行调试(Eclipse)

# 环境要求 1、Java SDK 1.8 [下载](http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-downloads-2133151-zhs.html) 2、Eclipse IDE for Java EE Mars 2 (4.5.2) [下载](https://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/mars2) 3、Apache Maven 3.3+ [下载](https://maven.apache.org/download.cgi) 4、MySql 5.7+ [下载](https://dev.mysql.com/downloads/windows/installer/5.7.html) # 导入到Eclipse 1、检出JeeSite4源代码: ``` git clone https://gitee.com/thinkgem/jeesite4.git ``` 2、拷贝`web`文件夹,到你的工作目录(不包含中文和空格的目录)下,重命名为你的工程名,如:`jeesite-demo` 3、打开`pom.xml`文件,修改第13行,artifactId为你的工程名,如:`jeesite-demo` 4、导入到Eclipse,菜单 File -> Import,然后选择 Maven -> Existing Maven Projects,点击 Next> 按钮,选择第2步的`jeesite-demo`文件夹,然后点击 Finish 按钮,即可成功导入 5、这时,Eclipse会自动加载Maven依赖包,初次加载会比较慢(根据自身网络情况而定),若工程上有小叉号,请打开Problems窗口,查看具体错误内容,直到无错误为...
ThinkGem 亚虎国际pt客户端于 3个月前 阅读 19296 评论 45 点赞 9

Spring技术内幕:设计理念和整体架构概述

程序员都很崇拜技术大神,很大一部分是因为他们发现和解决问题的能力,特别是线上出现紧急问题时,总是能够快速定位和解决。 一方面,他们有深厚的技术基础,对应用的技术知其所以然,另一方面,在采坑的过程中不断总结,积累了很多经验。 相信大家都使用过Spring,有些人了解它的核心:IOC和AOP,但只是了解它们的基本概念、使用了反射和动态代理,关于如何管理对象、代理的具体实现了解的比较浅。 有些人使用Spring MVC,使用Spring集成数据库、事务、消息队列以简化操作,但对集成的具体设计思路和实现了解的也比较浅。 我也这一块也比较菜,所以,后面的一段时间会梳理和总结Spring相关的技术原理,以「Spring技术内幕:深入解析Spring架构与设计原理」书籍为核心,结合自己的使用经验和疑问,以及网络上大牛的文章,来补足自己这方面的缺失。 > 这本书作者是计文柯,以Spring源代码为依托,从宏观上揭示了Spring的设计思路和架构思想,从微观上剖析了Spring各功能模块的实现原理和运行机制。一方面希望读者能通过深入了解Spring的底层机制来更好地解决实际开发中遇到的各种难题,另一方面是希望读者能吸收Spring设计和实现中的优秀方法和思想。 全书共三部分,分别阐述...
情情说 亚虎国际pt客户端于 6天前 阅读 774

Guava之神奇的Ordering

背景 这年头想必没几个人没写过排序吧。。。而在jdk也默认提供了许多和排序相关的封装。 我们最常使用的想必就是 /** * Sorts the specified list into ascending order, according to the * {@linkplain Comparable natural ordering} of its elements. * All elements in the list must implement the {@link Comparable} * interface. Furthermore, all elements in the list must be * <i>mutually comparable</i> (that is, {@code e1.compareTo(e2)} * must not throw a {@code ClassCastException} for any elements * {@code e1} and {@code e2} in the list). * * <p>This sort is guaranteed to be <i>stable</i>: equal elements will * not be reordered as a result of the sort. * * <p>The specified list must be modifiable, but need not be resizable. * * <p>Implementation note: This implementation is a stable, adaptive, * iterative mergesort that requires far fewer than n lg(n) comparisons * when the input array is partially sorted, while offering the * performance of a traditional mergesort when the inpu...
Mr_Qi 亚虎国际pt客户端于 3天前 阅读 565 评论 1

Yii2实现QQ互联登录

Yii2中OAuth扩展及QQ互联登录的方法,实例分析了OAuth扩展的相关配置与QQ互联登陆的实现技巧。 具体如下: php composer.phar require --prefer-dist yiisoft/yii2-authclient "*" Quick start 快速开始 更改Yii2的配置文件config/main.php,在components中增加如下内容 'components' => [  'authClientCollection' => [  'class' => 'yii\authclient\Collection',  'clients' => [   'google' => [   'class' => 'yii\authclient\clients\GoogleOpenId'   ],   'facebook' => [   'class' => 'yii\authclient\clients\Facebook',   'clientId' => 'facebook_client_id',   'clientSecret' => 'facebook_client_secret',   ],  ],  ]  ... ] 更改入口文件,一般是app/controllers/SiteController.php,在function actions增加代码,同时增加回调函数successCallback,大致如下 class SiteController extends Controller {  public function actions()  {  return [   'auth' => [   'class' => 'yii\authclient\AuthAction',   'successCallback' => [$this, 'successCallback'],   ],  ]  }  public function successCallback($clie...
botkenni 亚虎国际pt客户端于 59分钟前 阅读 3

5 中 IO 模型简单理解

1. 同步IO和异步IO 关键区别反映在数据拷贝阶段是由用户线程完成还是内核完成。 所以说异步IO必须要有操作系统的底层支持。 2. 阻塞IO和非阻塞IO 反映在IO操作的第一个阶段,在查看数据是否就绪时是如何处理的。 3. 多路复用IO模型 有一个线程不断去轮询多个socket的状态,只有当socket真正有读写事件时,才真正调用实际的IO读写操作。
Ryan-瑞恩 亚虎国际pt客户端于 1小时前 阅读 3

Mybatis架构设计及源码分析-mapper.xml文件解析

使用mybatis我们通常会自己去书写mapper.xml文件,文件内部通常会书写sql语句相关信息,下面我们将分析mybatis是如何解析这些信息并保存于全部配置类Configuration中。 回到之前的代码mapperElement(root.evalNode("mappers"));会解析mappers下面的节点信息。mybatis有四种方式配置mappers下面节点信息分别是: <!-- 使用相对于类路径的资源引用 --> <mappers> <mapper resource="org/mybatis/builder/AuthorMapper.xml"/> <mapper resource="org/mybatis/builder/BlogMapper.xml"/> <mapper resource="org/mybatis/builder/PostMapper.xml"/> </mappers> <!-- 使用完全限定资源定位符(URL) --> <mappers> <mapper url="file:///var/mappers/AuthorMapper.xml"/> <mapper url="file:///var/mappers/BlogMapper.xml"/> <mapper url="file:///var/mappers/PostMapper.xml"/> </mappers> <!-- 使用映射器接口实现类的完全限定类名 --> <mappers> <mapper class="org.mybatis.builder.AuthorMapper"/> <mapper class="org.mybatis.builder.BlogMapper"/> <mapper class="org.mybatis.builder.PostMapper"/> </mappers> <!-- 将包内的映射器接口实现全部注册...
申文波 亚虎国际pt客户端于 1小时前 阅读 4

第一个php扩展

在阅读yaf源码的前提驱动下,了解了php扩展开发的基本步骤。基于php-src提供的ext_skel脚手架生成php扩展的基础代码,我的目的主要是先了解扩展开发的基本步骤,没有改其中的代码,以快速地过一遍php扩展开发重要的流程。这里有个前提是需要准备好指定版本的php-src源码并完成编译安装。 ## 1. 使用ext_skel生成基础代码 进入 php-src/ext/目录,执行: ```sh //我给我的第一个扩展名取名叫firstext $ ./ext_skel --extname=firstext ``` 返回: ``` Creating directory firstext Creating basic files: config.m4 config.w32 .gitignore firstext.c php_firstext.h CREDITS EXPERIMENTAL tests/001.phpt firstext.php [done]. To use your new extension, you will have to execute the following steps: 1. $ cd .. 2. $ vi ext/firstext/config.m4 3. $ ./buildconf 4. $ ./configure --[with|enable]-firstext 5. $ make 6. $ ./sapi/cli/php -f ext/firstext/firstext.php 7. $ vi ext/firstext/firstext.c 8. $ make Repeat steps 3-6 until you are satisfied with ext/firstext/config.m4 and step 6 confirms that your module is compiled into PHP. Then, star...
robinfly 亚虎国际pt客户端于 1小时前 阅读 3

程序员懂点经济--机会成本与比较优势

职场中,为何看到有人当领导,有人架构师,有人高级程序员,为何有那么多分工,比如 设计师,产品等等.今天就用经济的角度来分析分析.
冰雪情缘l 亚虎国际pt客户端于 2小时前 阅读 4

SSL/TLS 协议运行机制的概述

互联网的通信安全,建立在SSL/TLS协议之上。   本文简要介绍SSL/TLS协议的运行机制。文章的重点是设计思想和运行过程,不涉及具体的实现细节。如果想了解这方面的内容,请参阅RFC文档。     一、作用   不使用SSL/TLS的HTTP通信,就是不加密的通信。所有信息明文传播,带来了三大风险。   (1) 窃听风险(eavesdropping):第三方可以获知通信内容。 (2) 篡改风险(tampering):第三方可以修改通信内容。 (3) 冒充风险(pretending):第三方可以冒充他人身份参与通信。   SSL/TLS协议是为了解决这三大风险而设计的,希望达到:   (1) 所有信息都是加密传播,第三方无法窃听。 (2) 具有校验机制,一旦被篡改,通信双方会立刻发现。 (3) 配备身份证书,防止身份被冒充。   互联网是开放环境,通信双方都是未知身份,这为协议的设计带来了很大的难度。而且,协议还必须能够经受所有匪夷所思的攻击,这使得SSL/TLS协议变得异常复杂。   二、历史   互联网加密通信协议的历史,几乎与互联网一样长。   1994年,NetScape公司设计了SSL协议(Secure Sockets Layer)的1.0版,但是未亚虎国际pt客户端。 1995年,NetScape公司亚虎国际pt客户端SSL 2.0版,很快发现有严重漏洞。 19...
寰宇01 亚虎国际pt客户端于 2小时前 阅读 3

【防衰老教程】-三种预处理器之px2rem转换

以前小主写手机端页面时,单位这个问题一直困扰着小主,有时候活不多的时候,小主还会用计算器来计算rem,有时候就是凭感觉直接写个数字,哈哈,不要学我哈
Weijue 亚虎国际pt客户端于 2小时前 阅读 4

linux随笔

1,CentOS下载地址 网易镜像:http://mirrors.163.com/centos/6/isos/ 搜狐镜像:http://mirrors.sohu.com/centos/6/isos 2,虚拟机网络连接模式 ①,桥接模式 与本主处于同一网段,能相互访问,但容易造成ip冲突;网关一般是192.168.1.1,广播地址一般是192.168.1.255,这两个地址是不能用的,所有同一网段中能用的只有253个地址。 ②,nat模式 网络地址转换方式,能访问外网,不会造成ip冲突;本机和虚拟机不处于同一网段,假设本机是192.168.2.123,虚拟机为192.168.46.78;那么同一局域网的192.168.2.198就不能访问虚拟机192.168.46.78,但虚拟机可以通过本机访问外网 ③,主机模式 linux是一个独立主机,不能访问外网
暗中观察 亚虎国际pt客户端于 2小时前 阅读 3

Spring

1.Spring整体架构 (1)Core container 核心容器包括了Core、Beans、Context和Expression Language模块。 Core和Beans模块是框架的基础部分,提供了IoC和DI特性,这里的基础概念是BeanFactory,它提供对Factory模式的经典实现来消除对程序性单例模式的需要,并真正地允许你从程序逻辑中分离出依赖关系和配置。 ØCore主要包含Spring框架的核心工具类 ØBeans主要包含访问配置文件、创建和管理bean以及DI相关的一些类 ØContexts基于Core和Beans模块之上,为Spring提供大量的扩展,提供了国际化,资源加载等 ØExpression Language提供了一个强大的表达式语言用于在运行时查询和操作对象。 (2)Data access/Integration Data access/Integration层包含了JDBC、ORM、OXM、JMS和Transation模块,主要是和数据库相关的操作。 (3)Web Web上下文模块建立在应用程序上下文模块之上,为基于Web的应用程序提供了上下文。 (4)AOP AOP模块提供了一个符合AOP联盟标准的面向切面编程实现,可以降低耦合性。 (5)Test Test模块支持各种测试框架。 2.依赖注入(DI)和面向切面编程(AOP) 控制反转(IoC)又称依赖注入。控制反转概念包含两个层面的意思,“控制”是接口实现类的选择控制权;...
哲别0 亚虎国际pt客户端于 2小时前 阅读 4

golang log 包

一、快速使用 Golang的log包短小精悍,可以非常轻松的实现日志打印转存功能。不用多说,log支持并发操作(即协程安全-相对于JAVA中的线程安全而言),其结构定义如下: type Logger struct { mu sync.Mutex // ensures atomic writes; protects the following fields prefix string // prefix to write at beginning of each line // 日志行前缀 flag int // properties // 日志打印格式标志,用于指定每行日志的打印格式 out io.Writer // destination for output // 用于指定日志输出位置,理论上可以是任务地方,只要实现了io.Writer接口就行 buf []byte // for accumulating text to write // 日志内容 } log包定义了一些日志格式标志: // These flags define which text to prefix to each log entry generated by the Logger. const ( // Bits or'ed together to control what's printed. There is no control over the // order they appear (the order listed here) or the format they present (as // described in the comments). A colon appears after these items: // 2009/01/23 01:23:23.123123 /a/b/c/d.go:23: ...
易野 亚虎国际pt客户端于 2小时前 阅读 4

别只是看起来很努力

时间打磨完一些东西,也会留下一些东西,留下的,都是最好的。 你以为你在合群,其实你在浪费青春。 与众不同,不是你错了。很多时候,英雄都是孤独的。 任何没有计划的学习,都只是作秀而已,任何没有走心的努力,都只是看起来很努力。 行动这件事,从来不需要等到什么好天气好状态,此时此刻就是永远,此时此刻就是一切。 如果你第一步不迈出,就永远不知道你的梦想是多么容易实现。 很有幸能够参加铭哥的猿课,目前已经开课两周了,通过这一段时间的学习,发现有个引路人确实很重要。 我现在的工作基本上跟运维没有多大关系,不过自己之前有个目标:做一个很牛的程序员,可是现实很残酷发现自己并不适合,后来了解到了linux系统运维,一样可以敲代码,一样可以把牛吹上天,然后自己就在网上搜集各种资料准备自学,网上说学习三四个月就能够月薪过万,真是羡慕嫉妒恨,于是就下定决心自学,买了很多种版本的linux书籍,下载了很多视频教程,可是,并不是那么简单,每本书的编写角度不同,每个视频教程授课方法不同,可想而知,看多了看乱了,自己没有了思路,没有了自己的想法,在自己学习过程中遇到了问题,百度,谷歌,出来的都是一段段代码,命令,看不懂,理解不了,...
Linux学习笔记 亚虎国际pt客户端于 2小时前 阅读 3

通过 spring-boot-devtools 进行热部署

# 一、概述 热部署一直是Java码农头疼的问题,目前比较好的解决方案有两种: 1、JRebel ,但是JRebel 需要钱钱,而且不少,而且在配置文件或静态资源发生改变的时候,JRebel就无能为力来。 2、spring-boot-devtools:它可以通过快速(一般是5秒)容器来实现热部署,可以监控配置文件、静态资源等。 因此这里只介绍 spring-boot-devtools。 想要使用devtools支持,只需将模块依赖关系添加到你的构建中。 ``` org.springframework.boot spring-boot-devtools true ``` 运行打包的应用程序时,spring-boot-devtools 会自动禁用。如果你通过 java -jar或者其他特殊的类加载器进行启动时,都会被认为是“生产环境的应用”。 将依赖标记为optional可选是一种最佳做法,可以防止将devtools依赖传递到其他模块中。 # 二、属性默认值 Spring Boot 支持的一些库中会使用缓存来提高性能。例如模版引擎将缓存编译后的模板,以避免重复解析模板文件。 此外,Spring MVC可以在服务静态资源时向响应中添加HTTP缓存头。 虽然缓存在生产中非常有益,但它在开发过程中可能会产生反效果,它会阻止你看到刚刚在应用程序中进行的更改。 因此,spring-boot-devtools将默认禁用这些缓存选项。 缓存选...
Mechanic 亚虎国际pt客户端于 2小时前 阅读 4

AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式

原 AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式 2014年05月11日 21:20:23 阅读数:156467 HTTP请求中,如果是get请求,那么表单参数以name=value&name1=value1的形式附到url的后面,如果是post请求,那么表单参数是在请求体中,也是以name=value&name1=value1的形式在请求体中。通过chrome的开发者工具可以看到如下(这里是可读的形式,不是真正的HTTP请求协议的请求格式): get请求:   [plain] view plain copy print? RequestURL:http://127.0.0.1:8080/test/test.do?name=mikan&address=street   Request Method:GET   Status Code:200 OK       Request Headers   Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8   Accept-Encoding:gzip,deflate,sdch   Accept-Language:zh-CN,zh;q=0.8,en;q=0.6   AlexaToolbar-ALX_NS_PH:AlexaToolbar/alxg-3.2   Connection:keep-alive   Cookie:JSESSIONID=74AC93F9F572980B6FC10474CD8EDD8D   Host:127.0.0.1:8080   Referer:http://127.0.0.1:8080/test/index.jsp   User-Agent:Mozilla/5.0 (Windows NT 6.1)AppleWe...
kisshua 亚虎国际pt客户端于 3小时前 阅读 4

微信小程序,保存相册,开启用户授权友好提示

saveImg: function () { var that = this; if ((that.data.codePic == '') || (that.data.codePic == null)) { app.basic_dialog('图片加载失败'); return false; } wx.getSetting({ success: function(res) { if (res.authSetting["scope.writePhotosAlbum"] == false) { app.confirm_dialog('授权提醒', '您还未授权保存相册,请授权', function(res) { if (res.confirm == true) { wx.openSetting({ success: function(res) { if (res.authSetting["scope.writePhotosAlbum"] == true) { // 保存相册 that.saveImg(); } else { app.toast_none('授权失败'); that.setData({ ...
韩庚庚 亚虎国际pt客户端于 3小时前 阅读 3

IntelliJ IDEA配置Tomcat 运行Web项目

以前都用MyEclipse写程序的 现在想将以前的项目导入Idea中
Vegetable 亚虎国际pt客户端于 3小时前 阅读 4

CentOS 目录介绍

Ⅰ 装了一个虚拟机,小伙伴有一个CentOS.iso,就用这个学习一下好了,机子是win7本 原本使用virtualbox,关于怎么连接网络,折腾了半天,没有搞出来,好玩是这个东西只要鼠标触到下面工具栏上就会报一个 00x00000f00 系统不能written. 的错误,是我太年轻了.  next: 还是下了一个VMware,一样的操作,网络我是选择 ↓↓↓ 就可以ping通网络了,其他人使用的是NAT模式,但是我用了就是不行,尬操作.   Ⅱ 安装一套下去,cd /,进入根目录, 命令: ls 查看目录中的文件 bin  : 该文件夹包含一些基础的命令,如上面的ls,其他的cp,mkdir等等,里面的文件都是可执行的,反正都是关于命令,系统类的操作,我想是不需要去碰他们.  boot : 存放系统内核以及引导系统程序所需的文件 data : 记得是自己分区的时候,分的一个文件区,所以这个可以我自己操控 dev : 设备文件存储目录,应用程序通过对这些文件的读写和控制就可以访问实际的设备 etc : 系统配置文件,一些服务器的配置文件也在这里,如账户的账号及密码等配置文件 home : 普通用户的主目录,如果创建了下面就有,没有就没有了,在安装的时候有个选择添加用户,就是那个 lib : 库文件目录,都懂 mnt : 一般用于存放挂在存储设备的挂载目录,比如C...
___大侠 亚虎国际pt客户端于 3小时前 阅读 3

缓存中常见的一些问题

整理了一些缓存相关的问题 #### 术语 - 命中 根据百度百科的解释,终端用户访问加速节点时,如果该节点有缓存住了要被访问的数据时就叫做命中,如果没有的话需要回原服务器取,就是没有命中。取数据的过程与用户访问是同步进行的,所以即使是重新取的新数据,用户也不会感觉到有延时。 命中率=命中数/(命中数+没有命中数), 缓存命中率是判断加速效果好坏的重要因素之一。简单来说,就是先去读取缓存,读取到了就是命中了。 - 过期 **过期有两种,一种是时间过期,一种是淘汰过期。** 时间过期好说,就是时间到了,被消除了。 所谓淘汰过期,只是在某些缓存服务器中对缓存内容大小进行了限制,当缓存接近于设置大笑时,会根据缓存服务的缓存策略进行操作,例如redis含有的一些淘汰策略: - voltile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰 - volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰 - volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰 - allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰 - allkeys-random...
hirainn 亚虎国际pt客户端于 3小时前 阅读 4

对缓存使用的一些思考

一、使用缓存 1、缓存的使用适用于变化不频繁,需要大量被访问的数据,例如线路、仓库名称等,每次大促来临之时,业务上会禁止一些数据的变更,以便于数据预热到缓存时能与DB保持一致,大促之时,系统基本从缓存中读取数据,以此减少IO次数,同时也是为了保护高流量下DB不会击垮。 2、缓存分为本地缓存 & 分布式缓存,本地缓存是将热点数据存储到本地JVM中,系统访问数据时先从本地缓存中读取,没有再从分布式缓存中获取,先读取本地可以有效地降低网络通信的耗时(访问分布式缓存需要走网络通信)。本地缓存如今有许多亚虎娱乐官方app框架供以选择,例如guava cache、Caffine等,当然最简单的还是使用JDK的ConcurrentHashMap,在高并发系统中,Caffine性能好于guava,一般系统中,使用guava即可。该模式理解为二级缓存,有效解决热点问题,本地缓存失效时间设置稍短约于分布式缓存。 3、使用缓存的场景是高并发 & 允许出现短时间的数据不一致。如果业务是实时性的,需要考虑采用主动推送的方式更新缓存,当数据库出现变化时,主动put最新值到缓存中,但update & put操作还是存在时间差的,这段时间里还是会出现缓存不一致的情况,但好于缓存失效之后再去DB中捞取数据。 二、使用缓存 ...
SaintTinyBoy 亚虎国际pt客户端于 3小时前 阅读 4

JavaEE(1)—JDBC系列

JDBC Java DataBase Connectivity 数据库连接。 SUN公司提供的一种数据库访问规则、规范, 由于数据库种类较多,并且java语言使用比较广泛,sun公司就提供了一种规范,让其他的数据库提供商去实现底层的访问规则。 我们的java程序只要使用sun公司提供的jdbc驱动即可。
Chason-洪 亚虎国际pt客户端于 3小时前 阅读 3

2018 一份"有点难"的iOS面试题(5年iOS开发)

序言: 之前一时兴致在本站上出过一份iOS的中级面试题,引起一些关注,不少同学表示对”隐藏关卡“感兴趣。升级版iOS面试题来了,目测难倒90%iOS程序员,目测一大波程序员撸着袖子在靠近。 每道题都不难,对知识广度有要求,请摸着良心回答,不要百度。声明:这份面试题和iOS程序员本身技术水平没任何关联,无论你能否全部答出,都不要对自己产生任何正面或消极的评价,权当做闲暇之余的消遣。 其实做为一个开发者,有一个学习的氛围跟一个交流圈子特别重要这是一个我的iOS交流群:638302184,,不管你是小白还是大牛欢迎入驻,分享BAT面试题、面试经验,讨论技术, 大家一起交流学习成长!希望帮助开发者少走弯路。 面试题 1.NSString如何计算字符的个数? 2.PKI体系当中加密和签名有什么区别? 3.如何自己高效实现NSUserDefault? 4.解释下tcp的慢启动特性。 5.如何用HTTP实现长连接? 6.HTTP2.0针对同一个域名的多个请求,会建立多少个tcp连接? 7.数据库建表的时候索引有什么用? 8.Full Text Search为什么快? 9.iOS下如何实现指定线程数目的线程池? 10.介绍下iOS设备获取唯一设备号的历史变迁。 11.函数式编程当中的 first-class function是什么意思呢? 12.如何...
原来是泽镜啊 亚虎国际pt客户端于 4小时前 阅读 4

码云即将支持 Git v2 Protocol

Git v2 Protocol aka Git Wire Protocol
Force武装卫队 亚虎国际pt客户端于 3天前 阅读 1192 评论 10 点赞 4

Why c++ coroutine?Why libgo?

讲述C++协程的近况、设计与实现中的细节与决策
Li_Mr 亚虎国际pt客户端于 3天前 阅读 2848 评论 45 点赞 7

6月25日至27日,为何全球亚虎娱乐官方app大咖齐聚国家会议中心?LC3来啦!

广告
今年6月25日至27日, LinuxCon + ContainerCon + CloudOpen(LC3)将在北京国家会议中心召开。本次会议针对亚虎娱乐官方app技术在人工智能和深度学习、区块链、云原生、虚拟服务器架构和微服务、新兴技术、基础实施和自动化、IoT和M2M、KVM、Linux系统、网络编排等10大前沿领域的应用,邀请了全球数百位业界大咖,用三天时间、超过200场分享,从市场、技术、产业甚至整个生态层面,将做全方位的探讨。
LinuxCon + ContainerCon + CloudOpen(LC3)

一场版本升级引发的性能血案的追凶过程

## 1. 故事的开始 上周 ActFramework 推出 [act-1.8.8-RC4 版本](https://www.oschina.net/news/96046/act-starter-1-8-8-0-released) 后, 我兴致勃勃更新了 [TFB 性能 PK 项目](https://github.com/TechEmpower/FrameworkBenchmarks/tree/master/frameworks/Java/act) 到最新版, 经过漫长的 60 小时 ( TFB 的一次运行周期是 60 小时) 等待后终于等来了 .............................................. 噩耗: Act 这次的性能骤然下降, 不同测试的下降范围从 60% 到 90% 不等! 不多说了, 说起来都是泪啊. 先上图吧 (为了更加切合重点, 设置了测试过滤, 只显示 Java 全栈框架, 且排除掉了直接用 JDBC 的测试项目): ### 1.1 JSON 测试 [act-1.8.1](https://www.techempower.com/benchmarks/#section=test&runid=61ff99e2-2392-4d7a-b6af-a5f081c5e004&hw=ph&test=db&l=hra0e7&c=6&o=4) ![image](https://user-images.githubusercontent.com/216930/40289132-043035a0-5cfa-11e8-972e-90df52a5b938.png) [act-1.8.8-RC4](https://www.techempower.com/benchmarks/#section=test&runid=ae097e87-3b23-402c-8f51-1608e16dd11a&hw=ph&test=json&l=hra0e7&c=6&o=4) ![image](http...
罗格林 亚虎国际pt客户端于 5天前 阅读 2435 评论 18 点赞 9

RPC框架实践之:Google gRPC

gRPC是Google亚虎娱乐官方app的通用高性能RPC框架,它支持的是使用**Protocol Buffers**来编写Service定义,支持较多语言扩平台并且拥有强大的二进制序列化工具集。
CodeSheep 亚虎国际pt客户端于 6天前 阅读 2351 评论 1 点赞 3

渐进式Web应用(PWA)入门教程(上)

最近关于渐进式Web应用有好多讨论,有一些人还在质疑渐进式Web应用是否就是移动端未来。 但在这篇文章中我并不会将渐进式APP和原生的APP进行比较,但有一点是可以肯定的,这两种APP的目标都是使用户体验变得更好。 移动端Web应用有很多优秀的概念让人应接不暇,但好在编写一个渐进式Web应用不是一个很困难的事情。在这篇文章里将向你介绍如何把一个普通的网站转换成渐进式Web应用。你可以按照这篇文章一步一步地做,做完之后你的网站将可以实现离线访问,并且可以在桌面上创建该网站的图标。那么下面即将开始入门教程。 什么是渐进式Web应用? 渐进式Web应用是一种全新的Web技术,让Web应用和原生APP的体验相近或一致。 渐进式Web应用它可以横跨Web技术及Native APP开发的解决方案,对于开发者的优势如下: 你只需要关心W3C的Web标准,不用关心各种Native APP的代码。 用户可以在安装应用之前先试用。 在渐进式Web应用中,你不需要使用各种应用商店来分发应用,也不用关心应用亚虎国际pt客户端时奇怪的审核标准以及应用内购的平台抽成。另外,应用程序更新是自动进行的,无需用户交互,所以整体的使用体验对于用户来讲更为的平滑。 渐进式Web应用的“安装”过程很快,只需要在主屏幕上添...
葡萄城控件技术团队 亚虎国际pt客户端于 1周前 阅读 1269 评论 2

京东Java架构师讲解购物车的原理及Java实现

今天来写一下关于购物车的东西, 这里首先抛出四个问题: 1)用户没登陆用户名和密码,添加商品, 关闭浏览器再打开后 不登录用户名和密码 问:购物车商品还在吗?  2)用户登陆了用户名密码,添加商品,关闭浏览器再打开后 不登录用户名和密码 问:购物车商品还在吗?    3)用户登陆了用户名密码,添加商品, 关闭浏览器,然后再打开,登陆用户名和密码  问:购物车商品还在吗? 4)用户登陆了用户名密码,添加商品, 关闭浏览器 外地老家打开浏览器  登陆用户名和密码 问:购物车商品还在吗? 上面四个问题都是以京东为模板, 那么大家猜猜结果是什么呢? 1)在 2)不在了 3)在 4)在 如果你能够猜到答案, 那么说明你真的很棒, 那么关于这四点是怎么实现的呢? (如果有不认可的小伙伴可以用京东实验一下) 下面我们就来讲解下购物车的原理,最后再来说下具体的code实现. 1)用户没有登录, 添加商品, 此时的商品是被添加到了浏览器的Cookie中, 所以当再次访问时(不登录),商品仍然在Cookie中, 所以购物车中的商品还是存在的. 2)用户登录了,添加商品, 此时会将Cookie中和用户选择的商品都添加到购物车中, 然后删除Cookie中的商品. 所以当用户再次访问(不登录),此时Cooki...
Java工程师-Distance 亚虎国际pt客户端于 1周前 阅读 6712 评论 43 点赞 15

记一次死锁问题分析--详解数据库innodb lock机制

因同事多线程下在同一个事务进行删除和插入操作导致数据库死锁,想解决此问题就要先了解innodb lock机制,本文将通过案例重现,结合innodb lock机制进行剖析。如有不当之处,望大神指正补充
java_龙 亚虎国际pt客户端于 1周前 阅读 1822 评论 13 点赞 6

深入浅出设计模式——从球赛中悟多例模式

之前有讲过单例模式,多例模式实际上可以看作是单例模式推广。在多例模式中,多例类可以有多个实例,并且多例类要负责创建、管理并且向外提供自己的实例。
珂jack 亚虎国际pt客户端于 1周前 阅读 935 评论 5 点赞 2

理解 Dubbo SPI 扩展机制

写在前面         最近接触了 gRPC 体会到虽然众多 RPC 框架各有各的特点但是他们提供的特性和功能有很多的相似之处 , 这就说明他们面对同样的分布式系统带来的问题。从 2016 年左右开始接触到 dubbo ,基本停留在使用的层面,对 dubbo 的设计以及着重要解决的问题都没有系统的研究过,通过对 dubbo 和其他类似 RPC 产品的系统学习 ,学习分布式系统中面临的共同问题以及解决之道。    微内核架构         微内核架构 (Microkernel architecture) 模式也被称为插件架构 (Plugin architecture) 模式。原本与内核集成在一起的组件会被分离出来,内核提供了特定的接口使得这些组件可以灵活的接入,这些组件在内核的管理下工作,但是这些组件可以独立的发展、更改(不会对现有系统造成改动),只要符合内核的接口即可。典型的例子比如 , Eclipse , IDEA 。                           Dubbo 的微内核设计         根据我个人对 Dubbo 微内核设计的理解,以及阅读源码后总结。视觉总是最直观的,可以让大脑最快速度的有一个最直观的认识,一开始就一头深入到源码的细节中只会让人迷糊。不理解 Dubbo 的微内核设计架构的话,学...
j4love 亚虎国际pt客户端于 2周前 阅读 1694 评论 2

在浏览器中进行深度学习:TensorFlow.js (六)构建一个卷积网络 Convolutional Network

在上一篇中,我们介绍了了用TensorflowJS构建一个神经网络,然后用该模型来进行手写MINST数据的识别。和之前的基本模型比起来,模型的准确率上升的似乎不是很大。(在我的例子中,验证部分比较简单,只是一个大致的统计)甚至有些情况下,如果参数选择不当,训练效果还会更差。 卷积网络,也叫做卷积神经网络(con-volutional neural network, CNN),是一种专门用来处理具有类似网格结构的数据的神经网络。例如时间序列数据(可以认为是在时间轴上有规律地采样形成的一维网格)和图像数据(可以看作是二维的像素网格)。对于MINST手写数据来说,应用卷积网络会不会是更好的选择呢? 先上图: 代码见Codepen 该图是我应用CNN对MINST数据进行训练的结果,准确率在97%,可以说和之前的模型来比较,提高显著。要知道,要知道在获得比较高的准确率后,要提高一点都是比较困难的。那我们就简单的看看卷积网络是什么,他为什么对于手写数据的识别做的比其他模型的更好? CNN的原理实际上是模拟了人类的视觉神经如何识别图像。每个视觉神经只负责处理不同大小的一小块画面,在不同的神经层次处理不同的信息。 卷积和核 大家可能有用过Photoshop的经验,Photoshop提供很多不同类型的...
naughty 亚虎国际pt客户端于 2周前 阅读 1402 评论 12 点赞 4

高并发大容量NoSQL解决方案探索

大数据时代,企业对于DBA也提出更高的需求。同时,NoSQL作为近几年新崛起的一门技术,也受到越来越多的关注。本文将基于个推SRA孟显耀先生所负责的DBA工作,和大数据运维相关经验,分享两大方向内容:一、公司在KV存储上的架构演进以及运维需要解决的问题;二、对NoSQL如何选型以及未来发展的一些思考。 据官方统计,截止目前(2018年4月20日)NoSQL有225个解决方案,具体到每个公司,使用的都是其中很小的一个子集,下图中蓝色标注的产品是当前个推正在使用的。 NoSQL的由来 1946年,第一台通用计算机诞生。但一直到1970年RDMBS的出现,大家才找到通用的数据存储方案。到21世纪,DT时代让数据容量成为最棘手的问题,对此谷歌和亚马逊分别提出了自己的NoSQL解决方案,比如谷歌于2006年提出了Bigtable。2009年的一次技术大会上,NoSQL一词被正式提出,到现在共有225种解决方案。 NoSQL与RDMBS的区别主要在两点:第一,它提供了无模式的灵活性,支持很灵活的模式变更;第二,可伸缩性,原生的RDBMS只适用于单机和小集群。而NoSQL一开始就是分布式的,解决了读写和容量扩展性问题。以上两点,也是NoSQL产生的根本原因。 实现分布式主要有两种手段:副本(Replication)和分片(...
illy安智 亚虎国际pt客户端于 2周前 阅读 2929 评论 4 点赞 6

这些年一直记不住的 Java I/O

本文目录 参考资料 前言 从对立到统一,字节流和字符流 从抽象到具体,数据的来源和目的 从简单到丰富,使用 Decorator 模式扩展功能 Java 7 中引入的 NIO.2 NIO.2 中的异步 I/O 总结 参考资料   该文中的内容来源于 Oracle 的官方文档。Oracle 在 Java 方面的文档是非常完善的。对 Java 8 感兴趣的朋友,可以从这个总入口Java SE 8 Documentation开始寻找感兴趣的内容。这一篇主要讲 Java 中的 I/O,官方文档在这里Java I/O, NIO, and NIO.2。 前言   不知道大家看到这个标题会不会笑我,一个使用 Java 多年的老程序员居然一直没有记住 Java 中的 I/O。不过说实话,Java 中的 I/O 确实含有太多的类、接口和抽象类,而每个类又有好几种不同的构造函数,而且在 Java 的 I/O 中又广泛使用了 Decorator 设计模式(装饰者模式)。总之,即使是在 OO 领域浸淫多年的老手,看到下面这样的调用一样会蛋疼: BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("somefile.txt")));   当然,这仅仅只是我为了体现 Java I/O 的错综复杂的构造函数而虚构出来的一个例子,现实中创建一个 BufferedReader 很少会嵌套这么深,因为可以直接...
Java工程师-Distance 亚虎国际pt客户端于 2周前 阅读 2903 评论 11 点赞 14

基于Docker搭建MySQL主从复制

本篇博文相对简单,因为是初次使用Docker,MySQL的主从复制之前也在Centos环境下搭建过,但是也忘的也差不多了,因此本次尝试在Docker中搭建。
秋田君 亚虎国际pt客户端于 2周前 阅读 2881 评论 15 点赞 16

基于容器应用设计的原则,模式和反模式

容器和容器编排(Kubernetes)的广泛使用,让我们可以轻松的构建基于微服务的“云原生”(Cloud Native)的应用。容器成为了云时代的新的编程单元,类似面向对象概念下的对象,J2EE中的组件或者函数式编程中的函数。 在面向对象时代,有许多著名的设计原则,模式和反模式等,例如: SOLID (单一功能、开闭原则、里氏替换、接口隔离以及依赖反转) Design Patterns: Elements of Reusable Object-Oriented Software Anti-Pattern 在新的容器背景下,相应的原则和模式有助于帮助我们更好的构建“云原生”的应用。我们可以看到,这些原则和模式并非对之前模式的颠覆和推翻,更像是适应新环境的演进版本。 原则 单一职责原则 SINGLE CONCERN PRINCIPLE (SCP) 与OO的单一功能相对应,每一个容器应该提供单一的职责,只关注于做好一件事。单一职责使得容器更容易重用。通常容器对应于一个进程,而该进程专注于做好一件事。 高可观测性原则 HIGH OBSERVABILITY PRINCIPLE (HOP) 容器像对象一样,应该是一个封装良好的黑盒子。但是在云的环境下,这个黑盒子应该提供良好的观测接口,使得其在云的环境下得到相应的监控和管理。这样,整个应用才能提供一致的生命周期的管理。 可观测...
naughty 亚虎国际pt客户端于 2周前 阅读 902 评论 4 点赞 4

秒杀架构实践

![](https://ws2.sinaimg.cn/large/006tKfTcly1fr1z9k79lrj31kw11zwt8.jpg) ## 前言 之前在 [Java-Interview](https://github.com/crossoverJie/Java-Interview/blob/master/MD/Spike.md) 中提到过秒杀架构的设计,这次基于其中的理论简单实现了一下。 > 本次采用循序渐进的方式逐步提高性能达到并发秒杀的效果,文章较长请准备好瓜子板凳(liushuizhang😂)。 本文所有涉及的代码: - [https://gitee.com/crossoverJie/SSM](https://gitee.com/crossoverJie/SSM) - https://gitee.com/crossoverJie/distributed-redis-tool](https://gitee.com/crossoverJie/distributed-redis-tool) 最终架构图: ![系统架构设计.png](https://i.loli.net/2018/05/08/5af079ea8618b.png) 先简单根据这个图谈下请求的流转,因为后面不管怎么改进这个都是没有变的。 - 前端请求进入 `web` 层,对应的代码就是 `controller`。 - 之后将真正的库存校验、下单等请求发往 `Service` 层(其中 RPC 调用依然采用的 `dubbo`,只是更新为最新版本,本次不会过多讨论 dubbo 相关的细节,有兴趣的可以查看 [基于dubbo的分布式架构](https://crossoverjie.top/%2F2017%2F04%2F07%2FSSM11%2F))。 - `S...
crossoverJie 亚虎国际pt客户端于 3周前 阅读 3203 评论 37 点赞 15

Intellij IDEA神器居然还有这些小技巧

# 概述 --- `Intellij IDEA`真是越用越觉得它强大,它总是在我们写代码的时候,不时给我们来个小惊喜。出于对`Intellij IDEA`的喜爱,我决定写一个与其相关的专栏或者系列,把一些好用的`Intellij IDEA`技巧分享给大家。本文是这个系列的第一篇,主要介绍一些你可能不知道的但是又实用的小技巧。 --- # 我最爱的【演出模式】 --- 我们可以使用【Presentation Mode】,将`IDEA`弄到最大,可以让你只关注一个类里面的代码,进行毫无干扰的`coding`。 可以使用`Alt+V`快捷键,弹出`View`视图,然后选择`Enter Presentation Mode`。效果如下: ![这里写图片描述](https://img-blog.csdn.net/20180506101049248?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpbnNvbmdiaW4x/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) 这个模式的好处就是,可以让你更加专注,因为你只能看到特定某个类的代码。可能读者会问,进入这个模式后,我想看其他类的代码怎么办?这个时候,就要考验你快捷键的熟练程度了。你可以使用`CTRL+E`弹出最近使用的文件。又或者使用`CTRL+N`和`CTRL+SHIFT+N`定位文件。 如何退出这个模式呢?很简单,使用`ALT+V`弹出view视图,然后选择`Ex...
Sam哥哥聊技术 亚虎国际pt客户端于 3周前 阅读 8494 评论 69 点赞 32 打赏 1

接口方法上的注解无法被@Aspect声明的切面拦截的原因分析

Spring中使用MyBatis的Mapper接口自动生成时,用一个自定义的注解标记在Mapper接口的方法中,@Aspect定义一个切面拦截这个注解以记录日志或者执行时长。但是惊奇的发现,在Spring Boot 1.X(Spring Framework 4.x)中,并不能生效,而在Spring Boot 2.X(Spring Framework 5.X)中却能生效。这是为什么呢?
光闪 亚虎国际pt客户端于 3周前 阅读 1529 评论 8 点赞 9

利用Zipkin追踪Mysql数据库调用链

![Profile](https://upload-images.jianshu.io/upload_images/9824247-2f04485338ca6443.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) --- ## 概述 在前面:[微服务调用链追踪中心搭建](https://www.jianshu.com/p/da80ea881424) 一文中我们利用Zipkin搭建了一个微服务调用链的追踪中心,并且模拟了微服务调用的实验场景。利用Zipkin的库Brave,我们可以收集一个客户端请求从发出到被响应 **经历了哪些组件**、**哪些微服务**、**请求总时长**、**每个组件所花时长** 等信息。 本文将讲述如何利用Zipkin对Mysql数据库的调用进行追踪,这里同样借助OpenZipkin库Brave来完成。 --- ## 扩展ZipkinTool组件 ZipkinTool是在[《微服务调用链追踪中心搭建》](https://www.jianshu.com/p/da80ea881424)一文中编写的与Zipkin通信的工具组件,利用其追踪微服务调用链的,现在我们想追踪Mysql数据库调用链的话,可以扩展一下其功能。 - pom.xml添加依赖: ``` io.zipkin.brave brave-mysql 4.0.6 ``` - 在ZipkinConfiguration类中添加MySQLStatementInterceptorManagementBean ``` @Bean public MySQLStatementInterceptorManagementBean mySQLStatementInterceptorManag...
CodeSheep 亚虎国际pt客户端于 3周前 阅读 2186 评论 3 点赞 6

在MySQL中使用explain查询SQL的执行计划

1、什么是MySQL执行计划        要对执行计划有个比较好的理解,需要先对MySQL的基础结构及查询基本原理有简单的了解。         MySQL本身的功能架构分为三个部分,分别是 应用层、逻辑层、物理层,不只是MySQL ,其他大多数数据库产品都是按这种架构来进行划分的。 应用层,主要负责与客户端进行交互,建立链接,记住链接状态,返回数据,响应请求,这一层是和客户端打交道的。 逻辑层,主要负责查询处理、事务管理等其他数据库功能处理,以查询为例。         首先接收到查询SQL之后,数据库会立即分配一个线程对其进行处理,第一步查询处理器会对SQL查询进行优化,优化后会生成执行计划,然后交由计划执行器来执行。         计划执行器需要访问更底层的事务管理器,存储管理器来操作数据,他们各自的分工各有不同,最终通过调用物理层的文件获取到查询结构信息,将最终结果响应给应用层。 物理层,实际物理磁盘上存储的文件,主要有分文数据文件,日志文件。    通过上面的描述,生成执行计划是执行一条SQL必不可少的步骤,一条SQL性能的好坏,可以通过查看执行计划很直观的看出来,执行计划提供了各种查询类型与级别,方面我们进行查看以及为...
Oo若离oO 亚虎国际pt客户端于 3周前 阅读 1705 评论 2 点赞 5

用t-io来写一个网页聊天室或客服是个怎样的体验

tio-websocket-server的首发教程,并且是以showcase的形式展现的----不仅仅是个教程,还是个可以放心使用的脚手架。
talent-tan 亚虎国际pt客户端于 3周前 阅读 5724 评论 41 点赞 15
顶部