怎么破解风流鼠博客的人人网加密日志破解?

502 Bad Gateway
502 Bad Gateway
nginx/1.12.1& 凡是我yii2学习社群的成员都知道,我不止一次给大家说构造表单100%使用yii2的ActiveForm来实现,这除了能和AR更好结合外就是自动生成csrf隐藏域,一个非常安全的举措。 今天北哥就给大家普及下csrf是啥?如果你已经知道了可以直接拉文章到底部点个赞。:smile: **CSRF**(Cross-site request forgery跨站请求伪造)是一种对网站的恶意利用,在 2007 年曾被列为互联网 20 大安全隐患之一。 关于CSRF,要从一个故事开始~ # 老王丢钱事件 这个故事要从程序员老王丢了1万块钱说起,总之是进了小偷,找回无果。丢钱后的老王一直在思考,**钱是怎么丢的、为何丢钱、为何是我丢钱~~** 后来老王出现了严重的心理问题,他决定报复社会。 老王首先研究了网银系统,他发现转账是通过GET形式 ```php https://bank.abc.com/withdraw?account=liuxiaoer&amount=1000&to=abei ``` 这意思就是说将 **liuxiaoer** 的1000元钱转给**abei**,当然当请求到达银行服务器后,程序会验证该请求是否来自合法的session并且该session的用户就是 **liuxiaoer** 并且已经登录。 老王自己也有一个银行账号 **wang2**,他尝试登录并且通过浏览器发送请求给银行,代码如下 ```php https://bank.abc.com/wi...
最近要找个H5的前端写个简单的DApp,聊过几个H5的工程师,都被跟以太坊交互的部分吓住了。虽然网上有N多的教程,但是对于H5工程师来说,还是有些困难。分析其原因,在于不了解ganache-cli(原来叫testrpc)/web3/以太坊节点/metamask之间的架构关系。 梳理一下架构关系: web3.js与以太坊通信是通过rpc的方式实现的。 以太坊节点本来提供了rpc的访问方式,但是因为以太坊节点的地址不确定,并且DApp需要访问钱包,所以用web3.js直接访问以太坊节点的rpc服务是不现实的。 ganache-cli模拟了一个以太坊的测试节点并提供对外的rpc访问方式(就是例子里经常说的http://localhost:7545或者http://localhost:8545)。同时在其中内置了M个以太坊帐号,用于测试。 MetaMask是一个以太坊的网络钱包插件,它也提供了web3的访问方式。而且可以通过这个插件指定后面的以太坊节点是什么。因为MetaMask是个钱包插件,所以解决了DApp中的支付问题。所以现在的DApp都依赖它。 有一个[以太坊教程](http://xc.hubwiz.com/course/5a952991adbd1),是在线学习的,大家可以去看看,如果自己本机上搞,开发DApp的基本过程都是一样的如下: 1、安装NodeJS 2、安装truffle:一个开发DApp的...
### 1. 简介
面向对象编程,也称为OOP(即Object Oriented Programming)最大的优点在于能够将业务模块进行封装,从而达到功能复用的目的。通过面向对象编程,不同的模板可以相互组装,从而实现更为复杂的业务模块,其结构形式可用下图表示: ![业务模块](https://upload-images.jianshu.io/upload_images/b43b08601ddc9c8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
面向对象编程解决了业务模块的封装复用的问题,但是对于某些模块,其本身并不独属于摸个业务模块,而是根据不同的情况,贯穿于某几个或全部的模块之间的。例如登录验证,其只开放几个可以不用登录的接口给用户使用(一般登录使用拦截器实现,但是其切面思想是一致的);再比如性能统计,其需要记录每个业务模块的调用,并且监控器调用时间。可以看到,这些横贯于每个业务模块的模块,如果使用面向对象的方式,那么就需要在已封装的每个模块中添加相应的重复代码,对于这种情况,面向切面编程就可以派上用场了。
面向切面编程,也称为AOP(即Aspect Oriented Programming),指的是将一定的切面逻辑按照一定的方式编织到指定的业务模块...
目前创建K8S集群的安装程序最受欢迎的有Kops,Kubespray,kubeadm,rancher,以及个人提供的脚本集等。
温馨提示: 本博客不是从零开始的文章,也不是什么高手精贴,只是一个菜鸡踩坑记录贴,建议懂得NDK+CMake流程的人观看,若是从零开始的,推荐先去看一下我之前跑的一个例子: 传送门在此:https://my.oschina.net/u/1462828/blog/1552937 本帖子只负责编译,具体的SoundTouch用法,还得另行专研。 目前来说的话,官方例子已经提供了setSpeed方法和setPitchSemiTones(参数是-12 到 12 )这两个方法,已经可以实现最简单的变速和变调了,本人亲测是可用的。更多的接口可参数,可以参考这个帖子: 传送门:https://blog.csdn.net/wkw1125/article/details/ 至于录音等实时操作的,网上随便下了一个demo,录音的时候居然崩了,估计是帖子太过久远,而我测试用的手机是8.0系统的,所以,目测这方面还有不少的坑,大家慢慢去踩吧。 帖子参考 https://blog.csdn.net/mazaiting/article/details/ 步骤1:下载 肯定是先下载SoundTouch了,直接去官网下最新(目前是2.0)的就好: 传送门:http://www.surina.net/soundtouch/sourcecode.html 步骤2:生成.h 复制一个SoundTouch.java并生成.h文件(详细步骤:自行百度,NDK生成.h文件) 我这里包名是com.touch,所以...
![Desktop](https://upload-images.jianshu.io/upload_images/9824247-cf33cdd.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) --- ## 0x01. 概述 SpringBoot平时我们用的爽歪歪,爽到它自己连Tomcat都自集成了,我们可以直接编写SBT启动类,然后一键开启内置的Tomcat容器服务,确实是很好上手。但考虑到实际的情形中,我们的Tomcat服务器一般是另外部署好了的,有专门的维护方式。此时我们需要剥离掉SBT应用内置的Tomcat服务器,进而将应用发布并部署到外置的Tomcat容器之中,本文就实践一下这个。 --- ## 0x02. 修改打包方式 修改项目的pom.xml配置,我们修改其打包方式为war方式,如: ``` com.example demo 0.0.1-SNAPSHOT war ``` --- ## 0x03. 移除SBT自带的嵌入式Tomcat 修改pom.xml,从maven的pom中移除springboot自带的的嵌入式tomcat插件 ``` org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat ``` --- ## 0x04. 添加servlet-api依赖 修改pom.xml,在maven的pom中添加servlet-api的依赖 ``` javax.servlet javax.servlet-api 3.1.0 provided ``` --- ## 0x05. 修改启动类,并重写初始...
原文来自:https://blogs.microsoft.com/blog//microsoft-github-empowering-developers/,能力有限,存在翻译不对的地方还请大佬们指出
profile: n.
侧面,半面; 外形,轮廓; [航]翼型; 人物简介; vt.
描…的轮廓; 给…画侧面图; 为(某人)写传略; [机]铣出…的轮廓; 这个词具体是什么意思,参考:https://www.zhihu.com/question/ 我的理解,就是一个配置。 一、spring中的profile
profile 说白了就是利用一个变量来控制加载哪些bean。主要用在实现在不同的环境下加载不同的bean。 比如在测试环境下,加载根据这个数据库的配信息生成的bean,在生产环境下使用另一个bean。 简单用法: 将spring-profile-test.xml和spring-profile-dev.xml都import入主配置文件中,但是由于spring.profile.active的值不同,真正加载的bean也不同(不满足profile值的bean不会被加载,此时相当于import了一个空文件) 在运行的使用配置下面参数来激活test环境需要加载的bean,profile的值可以有多个,测试需要用“,”隔开。 -Dspring.profiles.active=test 当然profile还有其他激活方法,如: DispatcherServlet的初始化参数传入 web app上下文参数传入 JNDI入口 环境变量 JVM系统属性 @ActiveProfiles 二、maven中的profile spring的核心是依赖反转(创建bean,注入bean),是所以spring的profile是影响bean的创...
1. 概述 github项目地址:https://github.com/superwujc 尊重原创,欢迎转载,注明出处:https://my.oschina.net/superwjc/blog/1824089 对于特定的传输层协议(包括TCP),每个套接字通过4元组{ 本端ip, 本端port, 对端ip, 对端port }进行唯一标识,该4元组另可划分为一个套接字地址对(socket pair):本端ip与本端port组成本端套接字地址,对端ip与对端port组成对端套接字地址。 默认情况下,内核仅允许对不同的本端套接字地址调用bind(2),但不允许相同的本端套接字地址复用,对已存在的本端套接字地址再次执行bind(2)时,将以EADDRINUSE错误失败,即地址已被占用;Linux内核根据不同的应用场景,设置了若干种套接字地址复用的条件,包括套接字选项SO_REUSEADDR,SO_REUSEPORT与SO_BINDTODEVICE。 2. 应用场景 Linux内核根据以下顺序判断本端ipv4套接字地址是否可以复用: 原套接字与新套接字都开启了SO_REUSEPORT选项,且创建原套接字与新套接字的进程EUID相同时,可以复用本端ip与本端port;或 原套接字与新套接字都通过SO_BINDTODEVICE选项绑定至不同的网络接口时,可以复用本端ip与本端port;或 原套接字与新套接字都开启了SO_REUSEADDR选项,且套接字状态都不为L...
你们要的tio udp文档来了!
Intellij IDEA神器那些让人爱不释手的小技巧
给大家聊一聊云收藏从 Spring Boot 1.0 升级到 2.0 所踩的坑
前阵子 Android 端的线上崩溃比较多,热修复被提上日程。实现方案是 Tinker,Jenkins 打包,最后补丁包上传到 Bugly 进行分发。主要在 Jenkins 打包这一块爬了不少坑,现记录下来,供大家参考。 1. Tinker + Bugly热修复实现 首先是本地实现,按照官方文档,只要一步一步按照文档来,这个步骤还是比较容易的,这里就不再赘述了,不懂的可以先参考官方文档:Bugly Android热更新使用指南、Bugly Android热更新详解。这里贴一下接入流程: 打基准包安装并上报联网(注:填写唯一的 tinkerId) 对基准包的 bug 修复(可以是 Java 代码变更,资源的变更) 修改基准包路径、修改补丁包 tinkerId、mapping 文件路径(如果开启了混淆需要配置)、resId 文件路径 执行 buildTinkerPatchRelease 打 Release 版本补丁包 选择 app/build/outputs/patch目录 下的补丁包并上传(注:不要选择 tinkerPatch 目录下的补丁包,不然上传会有问题) 编辑下发补丁规则,点击立即下发 杀死进程并重启基准包,请求补丁策略( SDK 会自动下载补丁并合成) 再次重启基准包,检验补丁应用结果 查看页面,查看激活数据的变化 这里说一下使用指南中的第三步:初始化 SDK,我这里使用的是 enableProxyA...
五月份开源中国社区收录了相当多的重量级开源项目,如 Node 之父 Ryan Dahl 的 deno,deno 也被认为是下一代 Node;Grails 框架作者的最新力作,微服务应用框架 Micronaut;还有少见的用 Vue.js 构建跨平台原生桌面应用的开源项目 Vuido
目前提升H5应用加载速度的方式有很多,比如缓存、cdn加速、代码压缩合并和图片压缩等技术。这些方法相信大伙如数家珍,然而这些招用完后,是否还有优化空间呢?现在我们祭出大杀器——HTTP 2.0 ...
keep-alive这个问题之前一直困扰着我,然后今天下午在QQ群里发现有人在询问keep-alive的事情,我想,我好像也没搞懂。于是我再去看了看
# 问题描述 最近经常做线上问题的排查,而排查问题用得最多的方式是查看日志,但是在现有系统中,各种无关日志穿行其中,导致我没办法快速的找出用户在一次请求中所有的日志。 # 问题分析 我们没办法快速定位用户在一次请求中对应的所有日志,或者说是定位某个用户操作的所有日志,那是因为我们在输出的日志的时候没把请求的唯一标示或者说是用户身份标示输出到我们的日志中,导致我们没办法根据一个请求或者用户身份标示来做日志的过滤。所以我们在记录日志的是后把请求的唯一标示(sessionId)或者身份标示(userId) 记录到日志中这个问题就可以得到很好的解决了。 # 解决方案 1. 在每次请求的时候,获取到请求的sessionId(或者自己生成一个伪sessionId),并在每次输出log的时候将这个sessionId输出到日志中。这个方式实现简单,代码侵入型强,每次输出都会多输出一个sessionId参数,工作量大,但是可控粒度高。 2. 我们使用Logback的MDC机制,日志模板中加入sessionId格式。在日志输出格式中指定输出sessionId。如: ``` %d{yyyy-MM-dd HH:mm:ss.SSS} [%X{sessionId}] -%5p ${PID:-} [%15.15t] %-40.40logger{39} : %m%n ``` 这种方式工作量小,代码侵入小,易扩展,...
之前做的项目都是中文环境,页面上的文本与标签也都是直接在代码中写的汉字,去年开始做了A项目,要求是代码与系统配置中不能出现任何中文,因为需要推广其它国家,由于习惯问题,在开发时都用的中文,后面再去补,导致没有很好的规划,用自定义标签替换,获取字段的标签也是写到了控制类中,如下截图,如果一个组件中涉及到多个对象的多个字段, 在初始化时就需要写一大段的代码,而在另一个组件中同样重复的代码又出现一次 ![](http://p380uyjgu.bkt.clouddn.com/18-6-3/.jpg) 关于自定义标签就更不用提了,每个人都新建一次,同样的意思的提示消息每个人都来一遍,导致混乱,同时,自定义标签是有数量限制的(5,000). 去年底在做B项目时,也需要支持多语言,鉴于上个项目的情况,计划在项目开始前就规范,但实际情况是在做完后再补(??),这次在新建自定义标签时,按类别先分类,目前暂时按如下截图,然后新建不同类别视图 ![](http://p380uyjgu.bkt.clouddn.com/18-6-3/.jpg) 自定义标签暂时按这种方法使用,那对于字段的标签如何管理,为了跟页面控制逻辑分离,通过写一个Lightning组件,这个组件比较特殊没有任何的内容,只有一个初始方法,初始化方法调后台,获取指定对象的Label...
把读取到配置文件的内容保存到系统内存, 下一次请求直接去内存读取数据。Asf 也提供非常简单的配置实现 Config Cache。
MySQL-性能优化-索引和查询优化 要知道为什么使用索引,要知道如何去使用好索引,使自己的查询达到最优性能,需要先了解索引的数据结构和磁盘的存取原理 参考博客:MySQL索引背后的数据结构及算法原理 如上这篇博客写的挺好,我就不再造轮子了,对如上博客,我总结如下几个重要的要点: 1. 不使用顺序查找,因为顺序查找比较慢,通过特定数据结构的特点来提升查询速度,这种数据结构就是可以理解成索引。 2. 索引一般以文件形式存储在磁盘上,索引检索需要磁盘I/O操作,为了尽量减少磁盘I/O。磁盘往往不是严格按需读取,而是每次都会预读,而且主存和磁盘以页为单位交换数据,所以在读取的数据不在主存中时,会从磁盘中读取一批数据(页)到主存中。 3. 不管在哪种程序优化上,要想快速挺高性能,直接将常用的、少变更的数据直接读取到内存中,使用的时候就直接在内存上读取,而不去磁盘上读取,减少I/O操作,这样就能使程序快上10倍以上。但由于内存容量的限制,也不可能将所有的数据都放内存中。 MySQL索引分类 普通索引:最基本的索引,没有任何限制。 唯一索引:与”普通索引”类似,不同的就是:索引列的值必须唯一,但允许有空值。 主键索引:它是一种特殊的唯一索引...
![Desktop](https://upload-images.jianshu.io/upload_images/9824247-cf33cdd.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) --- ## 0x01. 概述 SpringBoot平时我们用的爽歪歪,爽到它自己连Tomcat都自集成了,我们可以直接编写SBT启动类,然后一键开启内置的Tomcat容器服务,确实是很好上手。但考虑到实际的情形中,我们的Tomcat服务器一般是另外部署好了的,有专门的维护方式。此时我们需要剥离掉SBT应用内置的Tomcat服务器,进而将应用发布并部署到外置的Tomcat容器之中,本文就实践一下这个。 --- ## 0x02. 修改打包方式 修改项目的pom.xml配置,我们修改其打包方式为war方式,如: ``` com.example demo 0.0.1-SNAPSHOT war ``` --- ## 0x03. 移除SBT自带的嵌入式Tomcat 修改pom.xml,从maven的pom中移除springboot自带的的嵌入式tomcat插件 ``` org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat ``` --- ## 0x04. 添加servlet-api依赖 修改pom.xml,在maven的pom中添加servlet-api的依赖 ``` javax.servlet javax.servlet-api 3.1.0 provided ``` --- ## 0x05. 修改启动类,并重写初始...
原文来自:https://blogs.microsoft.com/blog//microsoft-github-empowering-developers/,能力有限,存在翻译不对的地方还请大佬们指出
详细解读阿里巴巴开源技术,包括框架、组件、引擎、数据库/存储、平台/系统、解决方案、工具、中间件、Web Sever、设计等十大类73款!
### 1. 简介
面向对象编程,也称为OOP(即Object Oriented Programming)最大的优点在于能够将业务模块进行封装,从而达到功能复用的目的。通过面向对象编程,不同的模板可以相互组装,从而实现更为复杂的业务模块,其结构形式可用下图表示: ![业务模块](https://upload-images.jianshu.io/upload_images/b43b08601ddc9c8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
面向对象编程解决了业务模块的封装复用的问题,但是对于某些模块,其本身并不独属于摸个业务模块,而是根据不同的情况,贯穿于某几个或全部的模块之间的。例如登录验证,其只开放几个可以不用登录的接口给用户使用(一般登录使用拦截器实现,但是其切面思想是一致的);再比如性能统计,其需要记录每个业务模块的调用,并且监控器调用时间。可以看到,这些横贯于每个业务模块的模块,如果使用面向对象的方式,那么就需要在已封装的每个模块中添加相应的重复代码,对于这种情况,面向切面编程就可以派上用场了。
面向切面编程,也称为AOP(即Aspect Oriented Programming),指的是将一定的切面逻辑按照一定的方式编织到指定的业务模块...
1. 概述 github项目地址:https://github.com/superwujc 尊重原创,欢迎转载,注明出处:https://my.oschina.net/superwjc/blog/1824089 对于特定的传输层协议(包括TCP),每个套接字通过4元组{ 本端ip, 本端port, 对端ip, 对端port }进行唯一标识,该4元组另可划分为一个套接字地址对(socket pair):本端ip与本端port组成本端套接字地址,对端ip与对端port组成对端套接字地址。 默认情况下,内核仅允许对不同的本端套接字地址调用bind(2),但不允许相同的本端套接字地址复用,对已存在的本端套接字地址再次执行bind(2)时,将以EADDRINUSE错误失败,即地址已被占用;Linux内核根据不同的应用场景,设置了若干种套接字地址复用的条件,包括套接字选项SO_REUSEADDR,SO_REUSEPORT与SO_BINDTODEVICE。 2. 应用场景 Linux内核根据以下顺序判断本端ipv4套接字地址是否可以复用: 原套接字与新套接字都开启了SO_REUSEPORT选项,且创建原套接字与新套接字的进程EUID相同时,可以复用本端ip与本端port;或 原套接字与新套接字都通过SO_BINDTODEVICE选项绑定至不同的网络接口时,可以复用本端ip与本端port;或 原套接字与新套接字都开启了SO_REUSEADDR选项,且套接字状态都不为L...
最近要找个H5的前端写个简单的DApp,聊过几个H5的工程师,都被跟以太坊交互的部分吓住了。虽然网上有N多的教程,但是对于H5工程师来说,还是有些困难。分析其原因,在于不了解ganache-cli(原来叫testrpc)/web3/以太坊节点/metamask之间的架构关系。 梳理一下架构关系: web3.js与以太坊通信是通过rpc的方式实现的。 以太坊节点本来提供了rpc的访问方式,但是因为以太坊节点的地址不确定,并且DApp需要访问钱包,所以用web3.js直接访问以太坊节点的rpc服务是不现实的。 ganache-cli模拟了一个以太坊的测试节点并提供对外的rpc访问方式(就是例子里经常说的http://localhost:7545或者http://localhost:8545)。同时在其中内置了M个以太坊帐号,用于测试。 MetaMask是一个以太坊的网络钱包插件,它也提供了web3的访问方式。而且可以通过这个插件指定后面的以太坊节点是什么。因为MetaMask是个钱包插件,所以解决了DApp中的支付问题。所以现在的DApp都依赖它。 有一个[以太坊教程](http://xc.hubwiz.com/course/5a952991adbd1),是在线学习的,大家可以去看看,如果自己本机上搞,开发DApp的基本过程都是一样的如下: 1、安装NodeJS 2、安装truffle:一个开发DApp的...
目前创建K8S集群的安装程序最受欢迎的有Kops,Kubespray,kubeadm,rancher,以及个人提供的脚本集等。
H5视频活体检测产品,是由两个接口组合而成,主要用于在H5场景下,通过用户新录制并上传一个视频,来进行活体检测的判断。相对于APP有动作校验+静默图片活体、静默图片活体这两种方式,H5视频活体方案比APP方案更加灵活,同时比单张图片活体方式更加安全。其主要功能如下所示: 语音校验码:为防止用户提交非当前操作的视频,在录制视频时,随机分配一个数字,用户需要读出这个数字,声音存于视频当中,并在后续识别时校验,以判断是否为此次会话。 视频多帧活体检测:录制并上传的视频,会在云端进行随机抽帧分析,并得出最终的活体检测分数。
& 凡是我yii2学习社群的成员都知道,我不止一次给大家说构造表单100%使用yii2的ActiveForm来实现,这除了能和AR更好结合外就是自动生成csrf隐藏域,一个非常安全的举措。 今天北哥就给大家普及下csrf是啥?如果你已经知道了可以直接拉文章到底部点个赞。:smile: **CSRF**(Cross-site request forgery跨站请求伪造)是一种对网站的恶意利用,在 2007 年曾被列为互联网 20 大安全隐患之一。 关于CSRF,要从一个故事开始~ # 老王丢钱事件 这个故事要从程序员老王丢了1万块钱说起,总之是进了小偷,找回无果。丢钱后的老王一直在思考,**钱是怎么丢的、为何丢钱、为何是我丢钱~~** 后来老王出现了严重的心理问题,他决定报复社会。 老王首先研究了网银系统,他发现转账是通过GET形式 ```php https://bank.abc.com/withdraw?account=liuxiaoer&amount=1000&to=abei ``` 这意思就是说将 **liuxiaoer** 的1000元钱转给**abei**,当然当请求到达银行服务器后,程序会验证该请求是否来自合法的session并且该session的用户就是 **liuxiaoer** 并且已经登录。 老王自己也有一个银行账号 **wang2**,他尝试登录并且通过浏览器发送请求给银行,代码如下 ```php https://bank.abc.com/wi...
这几天前端圈最火的事件莫过于 ry(Ryan Dahl) 的新项目 deno 了,很多 IT 新闻和媒体都用了标题:“下一代 Node.js”。这周末读了一遍 deno 的源码,特意写了这篇文章。长文预警(5000字,11图)。 0. 为什么开发 Deno? 这是我上周做的一张图,介绍了 JavaScript 的发展简史。刚才修改了一下,添加了对 Node.js 和 Deno 发布时间的标注。 Node.js 和 Deno 分别是 Ryan Dahl 在 2009 年和 2018 年,基于当年最新的前端技术开发的非浏览器 JavaScript 运行时。 Ryan Dahl 开发 deno 并不是因为 “just for fun”,也不是为了取代 node。下面慢慢解释。 1. 目前 deno 只是一个 demo 这两天花时间看了 deno 的源码(好在是初级阶段,源码很少,也很容易理解),顺带看了所有的 issue 和 pr。不知道“从官方介绍来看,可以认为它是下一代 Node”是如何脑补出来的。 既然是 Node.js 之父的新作,在讨论中自然离不开 Node.js。而作者很皮的回复到: The main difference is that Node works and Deno does not work : ) 最大的区别就是:Node 可以工作,而 Deno 不行 : ) 目前 Deno 只是一个 Demo,甚至连二进制发行版都没有。好在从源码编译比较简单(如果你使用的不是 Windows ...
MySQL大数据高并发处理之-查询的优化
温馨提示: 本博客不是从零开始的文章,也不是什么高手精贴,只是一个菜鸡踩坑记录贴,建议懂得NDK+CMake流程的人观看,若是从零开始的,推荐先去看一下我之前跑的一个例子: 传送门在此:https://my.oschina.net/u/1462828/blog/1552937 本帖子只负责编译,具体的SoundTouch用法,还得另行专研。 目前来说的话,官方例子已经提供了setSpeed方法和setPitchSemiTones(参数是-12 到 12 )这两个方法,已经可以实现最简单的变速和变调了,本人亲测是可用的。更多的接口可参数,可以参考这个帖子: 传送门:https://blog.csdn.net/wkw1125/article/details/ 至于录音等实时操作的,网上随便下了一个demo,录音的时候居然崩了,估计是帖子太过久远,而我测试用的手机是8.0系统的,所以,目测这方面还有不少的坑,大家慢慢去踩吧。 帖子参考 https://blog.csdn.net/mazaiting/article/details/ 步骤1:下载 肯定是先下载SoundTouch了,直接去官网下最新(目前是2.0)的就好: 传送门:http://www.surina.net/soundtouch/sourcecode.html 步骤2:生成.h 复制一个SoundTouch.java并生成.h文件(详细步骤:自行百度,NDK生成.h文件) 我这里包名是com.touch,所以...
最近沉迷于抖音无法自拔,常常连续花好几个小时在抖音漂亮小姐姐身上。 明人不说暗话,为了高效、直接地找到漂亮小姐姐,我用 Python + ADB 做了一个 Python 抖音机器人 Douyin-Bot
阿里云服务反射攻击,解决办法
### 一、pom中引入jar ``` 2.8.0 io.springfox springfox-swagger2 ${swagger2.version} io.springfox springfox-swagger-ui ${swagger2.version} ``` ### 二、配置swagger信息 ``` @Configuration @EnableSwagger2 public class Swagger2 { @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select() .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) .paths(Predicates.not(PathSelectors.regex("/error.*"))) .build() .globalResponseMessage(RequestMethod.GET, newArrayList(new ResponseMessageBuilder() .code(500) .message("系统繁忙!") .build(), new ResponseMessageBuilder() .code(200) .message("请求成功!") .build())) .globalResponseMessage(RequestMethod.POST, newArrayList(new ResponseMessageBuilder() .code(500) .message("系统繁忙!") .build(), new ResponseMessageBuilder() .code(200) .message("请求成功!") .build())) .globalResponseMessage(RequestMethod.DELETE, newArrayList(new ResponseMessageBuilder() .code(500) .message("系统繁忙!"...
1、git简介 git是目前流行的分布式版本管理系统。它拥有两套版本库,本地库和远程库,在不进行合并和删除之类的操作时这两套版本库互不影响。也因此其近乎所有的操作都是本地执行,所以在断网的情况下任然可以提交代码,切换分支。git又使用了SHA-1哈希算法确保了在文件传输时变得不完整、磁盘损坏导致数据丢失时能立即察觉到。 git的基本工作流程: git clone:将远程的Master分支代码克隆到本地仓库 git checkout:切出分支出来开发 git add:将文件加入库跟踪区 git commit:将库跟踪区改变的代码提交到本地代码库中 git push: 将本地仓库中的代码提交到远程仓库 git 分支 主分支 master分支:存放随时可供生产环境中的部署的代码 develop分支:存放当前最新开发成果的分支,当代码足够稳定时可以合并到master分支上去。 辅助分支 feature分支:开发新功能使用,最终合并到develop分支或抛弃掉 release分支:做小的缺陷修正、准备发布版本所需的各项说明信息 hotfix分支:代码的紧急修复工作 2、git在IntelliJ IDEA下的使用 2.1、IntelliJ IDEA下配置git 本地安装好git,并配置合理的SSH key,具体看这里 IntelliJ IDEA-&Performance-&Version Control-&git 将自己安装...
这里以360极速浏览器为例,打开浏览器,进入百度首页为例,其它基于chromium的浏览器也一样 2 点击浏览器左上角位的设置菜单,选择“工具----开发者工具” 3 也可以通过在在网中空白位,右键“查看审查元素”来进入开发者工具,通用快捷键为"F12" 4 在开发者工具中,选择toggle device mode按钮,译文为“模式切换装置”,如图所示 5 可以看到浏览器的视窗变为手机视窗,还可以选择不同手机来进行模拟,如果列表中没有,可以选择edit进行 6 我们来访问一下手机端的网站,如百度视频,完全和手机上显示的一致 7 通过设置这些参数,可以设置分辨率、显示比例、还可以实现横屏、竖屏方式的显示!
今天是 Github 嫁入豪门的第 2 天,炒得沸沸扬扬的微软 Github 收购事件于昨天(06月04日)尘埃落定,微软最终以 75 亿美元正式收购 Github。 随后,Gitlab 趁势带了一波节奏,在其官网上祝贺 Github 被微软收购,并表示此次收购代表着软件开发者的影响力的日渐增长,将软件开发的下一个发展看成是每个人都可以贡献的世界。 ![](http://p179cyr45.bkt.clouddn.com/18-6-4/.jpg) & 原文:https://about.gitlab.com//microsoft-acquires-github/ 更有网友称这是一桩最滑稽的收购案,世界上最大的闭源公司收购了世界上最大的开源公司。 微软公司的实力不用说,操作系统、办公套件几乎被微软垄断,你没见过国内用 Linux 系统上班的吧,Mac 也只是小众,太贵,也并不是所有普通人能用得起的。 Github 作为后起之秀,成立于 2008 年 4 月,截至 2018 年 3 月已刚好 10 年,其开源社区就已超过 2800 万开发人员,以及 8500 多万个代码库。我们 Java 的各种开源框架如 Spring、Mybatis、Dubbo 等都是托管在 Github下,所以说它是世界上最大的开源公司一点也不为过。 这 10 年来,Github 并未盈利,其主要盈利来源也只是其私有的个人仓库(7美元/月)及一些企业化的...
11.32 php扩展模块安装
# ===================================================================
# COMMON SPRING BOOT PROPERTIES
# This sample file is provided as a guideline. Do NOT copy it in its
# entirety to your own application.
# ===================================================================
# ----------------------------------------
# CORE PROPERTIES
# ----------------------------------------
debug=false # Enable debug logs.
trace=false # Enable trace logs.
logging.config= # Location of the logging configuration file. For instance, `classpath:logback.xml` for Logback.
logging.exception-conversion-word=%wEx # Conversion word used when logging exceptions.
logging.file= # Log file name (for instance, `myapp.log`). Names can be an exact location or relative to the current directory.
logging.file.max-history=0 # Maximum of archive log files to keep. Only supported with the default logback setup.
logging.file.max-size=10MB # Maximum log file size. Only supported with the default ...
1.9 使用PuTTY远程连接Linux
下载好putty后双击打开配置,输入要连接设备的IP,端口port默认22(可以修改),在window下有个内容行数设置2000,点击save保存会话session。最后open打开。然后通过putty远程连接linux 1.10 使用xshell连接Linux
安装好xshel后,和putty一样要新建一个会话,添加名称,主机IP,外观上可以选择字体,颜色等等。在用户身份验证里填上用户名和密码。其他选项可以根据需要更改,最后连接linux。 1.11 PuTTY密钥认证
打开puttygen,点击generate生成密钥对,创建个密码为了私钥被人拿到之后还可以多层保护,把私钥保存在文件夹中。然后在linux上mkdir创建目录,chmod修改权限为 700,用vi写个文件,点i进入编辑模式接着复制公钥进去,按esc 输入:wq保存退出。用setenforce 0把selinux关闭。ctrl+d退出窗口,重新打开putty点击ssh下的auth加载保存的私钥,保存。 1.12 xshell密钥认证
步骤基本和putty一样就不重复描述了,由于之前在putty已经操作过那几步,现在只需要把xshell这边的公钥复制进去 /root/.ssh/authorized_keys 就可以了。...
一 预览 二 开发步骤 基本面向过程的思想。没有面向对象的部分。 准备好成语库。db.js 选出每一关的成语。 对成语进行乱序。 初始化表格的同时,将单个字放到每个单元格的按钮上展示。 对tbody进行点击事件的监听。事件函数中获取btn。用变量记录选中的文字。 判断得分、判断下一关、判断游戏结束(成语库毕竟用数组来保存。成语数量有限。) 三 代码 只有两个文件:index.html和db.js 1 index.html代码如下: &!DOCTYPE HTML&
&meta charset="UTF-8" /&
table button{
width:100%;
width:25%;
table td .selectbtn{
background:
&script type="text/javascript" src="db.js"&&/script&
&div align="center"&成语消消乐&/div&
&div align="center"&
当前第&font color="green" id="current_level_text"&1&/font&关&
得分&font id="gain_scores_txt" color="green"&0&/font&分&
思考&font id="think_time" color="red"&0&/font...
·关·注·薇·xin·公·眾·號:【 蚂蚁影迷 】,进·入·影·院·搜·索·片·名·观·看 日本人气卡通《哆啦A梦》的最新电影版《大雄的金银岛》,上周六在日本上映后票房告捷,周末2天就创下8亿4300万日圆佳绩,观影人数71.7万人,不但刷新上一部电影《大雄的南极冰天雪地大冒险》首周的票房纪录,也超越同周上片的好莱坞漫威电影《黑豹》称冠,气势锐不可当。
《哆啦A梦》从1980年开始制作电影版,今年已是第38部,去年的《大雄的南极冰天雪地大冒险》,最终累积票房44亿3000万日圆,更创下历年来最高的票房纪录。今年的《大雄的金银岛》还找来长泽雅美、大泉洋、高桥茂雄配音,并由日剧《月薪娇妻》男星星野源演唱主题曲,上片前就先炒热话题。发行日本东宝电影公司也对该片深具信心,预估最终票房可能突破50亿日圆。
·关·注·薇·xin·公·眾·號:【 蚂蚁影迷 】,进·入·影·院·搜·索·片·名·观·看
它在电影院,问候你的过去、现在,和后来。 一场关于“后来”的观影旋风势必要在朋友圈刮起… 19年后,那个唱着“栀子花白花瓣,落在我蓝色百褶裙上”的奶茶。 现在用真心拍了这部《后来的我们》。 她邀请了三个好朋友献唱电影主题曲: 田馥甄 唱了《爱了很久的朋友》 “最痛苦的分手,总有快乐的理由” 爱了很久的朋友田馥甄 - 爱了很久的朋友 五月天 唱了《后来的我们》 “后来的我们,依然走着,只是不再并肩了” 后来的我们(电影《后来的我们》片名曲)五月天 - 后来的我们 陈奕迅 唱了《我们》 “我最大的遗憾,是你的遗憾,与我有关” 我们陈奕迅 - 我们 初听不懂曲中意,再听已是曲中人。最怕你在某个年纪,突然听懂一首歌。 是否有一句歌词,让你在听到的瞬间泪流满面? 或许,有些人只适合遇见。 或许,后来,我们什么都有了,却没有了我们。 这一切就像那句经典台词: 某天,你无端想起一个人,他曾让你对明天有所期许,但是却完全没有出现在你的明天里。 看完预告片,说真的,这是近几年来为数不多的片子,能让我看的时候笑里带着泪。 这部电影惊喜太多,尤其是周冬...
Intellij IDEA神器那些让人爱不释手的小技巧
你们要的tio udp文档来了!
·关·注·薇·xin·公·眾·號:【 一心影视】,进·入·回·复·片·名·或·在·影·院·搜·索·片·名·观·看 没想到新人导演的片子拍的这么熟练。两小我穿梭到不同年代,一段行云流水的混剪就交卸了时隔19年的白云苍狗。因为有科幻剧情,必将衍生出很多逻辑坑必要填,而导演竟然可以或许让配角们一边填坑,一边推动剧情成长,每填一个坑,就抖出一累赘笑料,让人物更平面一点。 又爽直,又入戏。 另有便是片子的价值观,在一众性笑剧,自恋的蜜意后任片子,智障玛丽苏故事当中,既清爽,又高档。同一小我,25岁的他,空空如也,但让你笑。44岁的他,腰缠万光,但让你哭。 钱没有了可以或许赚,但是少年的一颗至心啊,金不换。 片子可以或许建立另有一个重要的缘故原由是佟丽娅和雷佳音。两小我都有点脱线,有点大条,放在一起化学反应太妙了!现在的偶像拍恋爱片子,都是各美各的,粉丝之间还要互撕。事实证明,即使是销售恋爱理想,也还得真正的演员上阵更打动听啊!
### 前言 ``` 在某些情况下,允许指定用户可以传输文件到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
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 # ...
### 文件列表 ``` 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配置 ``` worker_processes 1; events { worker_connections 1024; } http { include mime. keepalive_timeout 65; server { listen 8000; server_name 本机IP; location / { # 前两行是认证(可不加) auth_basic "secret"; auth_basic_user_file /usr/local/nginx/passwd. # 路径 root /data/ # 首页 index index. } } } ``` ### 界面展示 ``` http://localhost:8000 ``` ###### 认证 ![这里写图片描述](https://img-blog.csdn.net/32301?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW9idWRpbmcwMDc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) ###### 播放器 ![这里写图片描述](https://img-blog.csdn.net/00537?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW9idWRpbmcwMDc=/f...
### 添加依赖 ``` 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 ChannelS private S @Value("${sftp.admin.username}") private S @Value("${sftp.admin.password}") private S @Value("${sftp.host}") private S @Value("${sftp.port}") private I private SftpService sftpS public EtlSftpTask (SftpService sftpService) { this.sftpService = sftpS } /** * 建立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) }catch (...
### 依赖 ``` org.quartz-scheduler quartz 2.2.1 ``` ### 任务工厂 JobFactory ``` // 解决SpringBoot不能再Quartz中注入Bean的问题 @Component public class JobFactory extends AdaptableJobFactory { /** * AutowireCapableBeanFactory接口是BeanFactory的子类 * 可以连接和填充那些生命周期不被Spring管理的已存在的bean实例 */ private AutowireCapableBeanF public JobFactory(AutowireCapableBeanFactory factory) { this.factory = } /** * 创建Job实例 */ @Override protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception { // 实例化对象 Object job = super.createJobInstance(bundle); // 进行注入(Spring管理该Bean) factory.autowireBean(job); //返回对象 } } ``` ### 任务调度器 Scheduler ``` @Configuration public class QuartzConfig { private JobFactory jobF public QuartzConfig(JobFactory jobFactory){ this.jobFactory = jobF } /** * 配置SchedulerFactoryBean * * 将一个方法产生为Bean并交给Spring容器管理 */ @Bean public SchedulerFactoryBean schedul...
给大家聊一聊云收藏从 Spring Boot 1.0 升级到 2.0 所踩的坑
```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/charset=UTF-8"); response.getWriter().write("文件不存在或已过期,请重新生成"); } String fileName = URLEncoder.encode(path.substring(path.lastIndexOf("/") + 1), "UTF-8"); response.setContentType("text/csv"); response.setHeader("Content-Disposition", String.format(" filename=\"%s\"", fileName)); InputStream is = OutputStream os = try { is = new FileInputStream(path); byte[] buffer = new byte[1024]; os = response.getOutputStream(); 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...
![这里写图片描述](http://img.blog.csdn.net/05200?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb2J1ZGluZzAwNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) ![这里写图片描述](http://img.blog.csdn.net/19115?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失效, 重新请求一下登录接口即可...
### 前言 ##### 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* # 如果上条命令无效: # set @@max_allowed_packet=5* # 重启mysql service mysql restart # ubuntu service mysqld restart # centos ```...
### 免登陆 ``` # 生成秘钥 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. 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 选择 项目根目录 ```...
## 1. 案情回顾 老码农在 [一场版本升级引发的性能血案的追凶过程](https://my.oschina.net/greenlaw110/blog/1815959) 中谈到了 ActFramework 在 TFB 第 [N](https://tfb-status.techempower.com/results/ae097e87-3b23-402c-8f51-a) 轮内部测试中全线溃败落入 Spring 朋友圈的不堪回首之往事. 历经三天两夜追凶过程, 老码农终于定位到了一 `ActContextBase.` 中以 500K 字节初始化 `S.Buffer` 为首的犯罪集团, 并提交了新的 PR, 最新的内部测试结果已经收到果然让 Act .................................................... 某些部分重回性能巅峰. 还是上图先: ### 1.1 JSON 测试结果比较 [TFB JSON - act-1.8.2](https://www.techempower.com/benchmarks/#section=test&runid=ae097e87-3b23-402c-8f51-a&hw=ph&test=json&l=hra0e7&c=6&o=6) ![image](https://user-images.githubusercontent.com/8bbe-63ce-11e8-8990-48ccfa94e7f7.png) [TFB JSON - act-1.8.8-RC6](https://www.techempower.com/benchmarks/#section=test&runid=acde94c4-fd61-4e83-91b4-15a110b8c695&hw=ph&test=json&l=hra0e7&c=6&o=6) ![image](https://...
MySQL-性能优化-索引和查询优化 要知道为什么使用索引,要知道如何去使用好索引,使自己的查询达到最优性能,需要先了解索引的数据结构和磁盘的存取原理 参考博客:MySQL索引背后的数据结构及算法原理 如上这篇博客写的挺好,我就不再造轮子了,对如上博客,我总结如下几个重要的要点: 1. 不使用顺序查找,因为顺序查找比较慢,通过特定数据结构的特点来提升查询速度,这种数据结构就是可以理解成索引。 2. 索引一般以文件形式存储在磁盘上,索引检索需要磁盘I/O操作,为了尽量减少磁盘I/O。磁盘往往不是严格按需读取,而是每次都会预读,而且主存和磁盘以页为单位交换数据,所以在读取的数据不在主存中时,会从磁盘中读取一批数据(页)到主存中。 3. 不管在哪种程序优化上,要想快速挺高性能,直接将常用的、少变更的数据直接读取到内存中,使用的时候就直接在内存上读取,而不去磁盘上读取,减少I/O操作,这样就能使程序快上10倍以上。但由于内存容量的限制,也不可能将所有的数据都放内存中。 MySQL索引分类 普通索引:最基本的索引,没有任何限制。 唯一索引:与”普通索引”类似,不同的就是:索引列的值必须唯一,但允许有空值。 主键索引:它是一种特殊的唯一索引...
·关·注·薇·xin·公·眾·號:【 蚂蚁影迷 】,进·入·影·院·搜·索·片·名·观·看 网剧《同学两亿岁》由徐静蕾监制,司维维和蒋笑笑导演,李庚希、朱致灵、梁宝羚等主演。这次徐静蕾特意不用流量演员,都是由新生代演员来出演,选择演员的标准首先要符合剧中人物设定,其次要自然“肯定不要整容脸,要有自然的质感”,希望为市场输入新鲜优秀的血液。 《同学两亿岁》 改编自作家疯丢子的同名小说《同学两亿岁》,已经于5月30日在爱奇艺上线播出了,该剧主要讲述了两亿年前,天蝎星系女元帅阿部多瑞意外降落地球,寄宿在高中生宣墨(李庚希 饰)身上,从而展开校园青春故事。 《同学两亿岁》剧照
Error:In FontFamilyFont, unable to find attribute android:fontVariationSettings
MySQL-性能优化-优化设计和设计原则 MySQL性能优化目的 如何合理的设计数据库? 什么样的数据库设计才能给后期DBA优化提供基石? 数据库设计与程序设计的差异? 数据库设计早期优化 1. 关系明确(理清表之间的关系,可以通过冗余的方式提高效率) 2. 节省空间(根据业务经验,设置字段长短) 3. 提高效率 数据库表开发流程 原型=&逐步完善(表的设计也是如此) 数据库种类 1. 层级数据库(注册表) 如:Windows操作系统的核心就是一个注册表,由于配置项比较多,采用层级关系的数据存储 2. 关系型数据库 如:MySQL 3. 时序数据库 4. 图数据库 如:最短路径,地理信息 5. Key-value数据库 如:Redis 6. 对象数据库 7. BigTable数据库 文件系统和数据库系统之间的区别? (1)文件系统用文件将数据长期保存在外存上,数据库系统用数据库统一存储数据; (2)文件系统中的程序和数据有一定的联系,数据库系统中的程序和数据分离; (3)文件系统用操作系统中的存取方法对数据进行管理,数据库系统用DBMS统一管理和控制数据; (4)文件系统实现以文件为单位的数据共享,数据库系统实现以记录和字段为单位的数据共享。 优化设计第一步 想要在表设计中节省空间,就必须精通各种数据类型的特...
  Java编程语言,在更迭迅速的互联网领域多年屹立不倒,足以得见Java这门语言旺盛的生命力,因此,会有很多想要进入互联网领域的朋友,想要学Java来转行开发。但是,所谓“隔行如隔山”,java有哪些版本呢?   Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点 。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等 。   Java SE是java的标准版,主要用于桌面应用软件的开发,也是java的基础内容。   Java EE是java的企业版,这个版本以前称为J2EE。能够开发和部署可移植、健壮、可伸缩且安全的服务器端Java应用程序。Java EE是在Java SE的基础上构建的,它提供Web服务、组件模型、管理和通信API,可以用来实现企业级的面向服务体系结构和Web3.0应用程序。   Java ME又称为J2ME,是为机顶盒、移动电话和PDA之类嵌入式消...
社交系统ThinkSNSPlus移动端本次更新版本号为V1.8.1,重点更新内容移除ping++;打赏由余额打赏调整为积分打赏等,请阅读正文详情,已更新/修复内容如下:   **重要说明**   1.移除ping++;   2.打赏由余额打赏调整为积分打赏;   3.针对上架,IOS移除钱包功能;   4.Android、IOS全面屏适配;   5.IOS增加gif保存;   **优化修复内容**   IOS   1.【发布-图片】开启付费,进入设置图片收费页面,默认选中了收费金额,没有默认选中“查看收费   2.【首页-动态列表】刚发布的图片动态,在列表上点赞,图片会闪   3.【发现-找人-搜索】没有默认显示光标和弹出键盘   4.【首页-动态详情】横屏的视频,在详情页视频被裁剪,不应该显示为正方形   5.【发布-动态】文字、图片动态的付费开关与设计图不符   6.【首页-动态列表】他人发布的动态,点击更多,缺少“举报”选项   7.【首页-动态详情】当评论数超过一页时,上拉加载,没有加载出更多数据   8.【发现-圈子-圈子详情】私聊圈主时,进入的聊天页面不对   9.【操作优化】-付费开关大小、点击区域优化   10.【全局】申请置顶时输入积分后,实际扣除了输入内容的100倍   11.【首页-动态详...
先说一下:什么是 SSH 密钥对
引用 SSH 密钥对,常简称为密钥对,是阿里云为您提供的新的远程登录 ECS 实例的认证方式,是一种区别于传统的用户名加密码模式的认证方式。
SSH 密钥对通过加密算法生成一对密钥,一个对外界公开,称为 公钥,另一个您自己保留,称为 私钥。
如果您将公钥配置在 Linux 实例中,那么,在本地或者另外一个 ECS 实例中,您可以使用私钥通过 SSH 命令或相关工具登录实例,而不需要输入密码。如果使用 SSH 密钥对登录 Linux 实例,默认禁用密码登录,以提高安全性。
前两天和版主鬼才神兵聊一起搞个事情,当知晓我还在使用root+八位密码登录这种古老方式来管理ecs服务器的时候推荐我使用更加安全的“密钥对”进行管理主机,增加主机的安全性。
在他说过之后,我也登陆我的控制台看到安全预警75个攻击和累计1176条暴力破解记录的时候真的是震惊了。
然后我又通过传统的模式登录到ecs,通过“lastb”命令查看服务器登录相关的日志,又是触目惊心,一个下拉框看不全。
那么,我就给我的ECS加把锁。
创建密钥对
首先进入你的云服务器ECS实例,我的是华东1(杭州),在网络和安全...
# ===================================================================
# COMMON SPRING BOOT PROPERTIES
# This sample file is provided as a guideline. Do NOT copy it in its
# entirety to your own application.
# ===================================================================
# ----------------------------------------
# CORE PROPERTIES
# ----------------------------------------
debug=false # Enable debug logs.
trace=false # Enable trace logs.
logging.config= # Location of the logging configuration file. For instance, `classpath:logback.xml` for Logback.
logging.exception-conversion-word=%wEx # Conversion word used when logging exceptions.
logging.file= # Log file name (for instance, `myapp.log`). Names can be an exact location or relative to the current directory.
logging.file.max-history=0 # Maximum of archive log files to keep. Only supported with the default logback setup.
logging.file.max-size=10MB # Maximum log file size. Only supported with the default ...
通过Fragments的特性,我们可以在一个React组件中返回多个并列元素。
教育作为一种投资,被越来越多的人所重视。终身学习概念的不断兴起也让各个领域的人开始寻求不断的成长。付费学习作为一种新型的学习模式已经被很多人所接受,而且,大家对于自己的教育投资一点都不吝啬,但是对于学习一门技能,尤其是像大数据开发这些的IT行业技能,究竟该如何选择大数据培训机构呢? 选择大数据培训机构需要考虑以下几个点: 第一:教学体系是否完善 目前市场上对于人才的需求往往是全方位的,所以就要求教育培训机构拥有成熟的教学体系,能够将学员培养成为一名大数据开发领域的“多面手”。 第二:课程安排是否合理 这一点与第一点相对应,好的课程安排能够让学员有系统的学习,而且,能够让小白也能够更快的入门,当然,课程还应该与市场需求相互对接,这样才能够让学员实现更好的成长。对于大数据培训课程大家可以参看加米谷的课程大纲。 第三:师资力量、硬件设施 名师出高徒,好的老师对于学生的成长意义非凡,选择一家教育机构其他的都可以忽略,唯独讲师的选择不能忽略。一个好的老师,能够将知识点讲的更清晰,而且授课方式也能更符合学员的习惯,当然,好的老师能够应对各种事项,能够处理很多关于授课、学员关系等问题。 第四:授课方式的选择...
在pom包中添加spring-boot-starter-test包引用
private static List&String& getMobiles() throws IOException {
List&String& mobiles = new ArrayList&String&();
String pathname = "D:\\input.txt"; // 绝对路径或相对路径都可以,这里是绝对路径,写入文件时演示相对路径
File filename = new File(pathname); // 要读取以上路径的input。txt文件
InputStreamReader reader = new InputStreamReader(new FileInputStream(
filename)); // 建立一个输入流对象reader
BufferedReader br = new BufferedReader(reader); // 建立一个对象,它把文件内容转成计算机能读懂的语言
String line = "";
line = br.readLine();
while (line != null) {
mobiles.add(line);
line = br.readLine(); // 一次读入一行数据
javascript面向对象中继承实现? 面向对象的基本特征有:封闭、继承、多态。 在JavaScript中实现继承的方法: 1. 原型链(prototype chaining) 2. call()/apply() 3. 混合方式(prototype和call()/apply()结合) 4. 对象冒充 继承的方法如下: 1、prototype原型链方式: function teacher(name){
this.name =
teacher.prototype.sayName = function(){
console.log("name is "+this.name);
var teacher1 = new teacher("xiaoming");
teacher1.sayName();
function student(name){
this.name =
student.prototype = new teacher()
var student1 = new student("xiaolan");
student1.sayName();
name is xiaoming
name is xiaolan
2、call()/apply()方法 function teacher(name,age){ this.name = this.age = this.sayhi = function(){ alert('name:'+name+", age:"+age); } } function student(){ var args = teacher.call(this,args[0],args[1]); // teacher.apply(this,arguments); } var...
设置了SecureTextEntry属性的输入框,设置一下textContentType属性,这是iOS11系统引起的,注意判断一下版本 passWordTextField.secureTextEntry = YES; if (@available(iOS 11.0, *)) {
passWordTextField.textContentType = UITextContentTypeN }
在做网站的过程中,大部分的页面结构都是相似的。如都有相同的头部和底部。各个页面这样仅仅是中间的部分不同。 Yii中的布局文件就是用来实现这样的功能。如: 布局文件:@app/views/layouts/main.php &!-- 前后的html 、head、body代码就省略了,只看最主要的部分 --& &header& &/header& &div class="wrap"&
&div class="container"&
&!-- $content变量的值 就是子页面渲染之后的代码。也就是说子页面中的内容将输出到这个地方--&
&?= $content ?&
&/div& &/div& &footer class="footer"& &/footer& 后台action: public function actionIndex() {
$this-&layout='@app/views/layouts/main.php';
return $this-&render('index'); } 执行顺序为: 先想找index视图文件, 渲染index视图文件 作为变量$output 查找布局文件@app/views/layouts/main.php 如果找到,则把$output值作为变量$content传递到布局文件 把渲染后的布局文件作为结果返回 如果没有找到布局文件,直接把$output作为结果返回 上面这个布局就是一列布局的页面,现在我们再增加另外一个布局:页面显示2列,左侧显示主要的内容,右侧显示统计信息。这个时候怎么办,再写一...
[Isaac Sacolick](http://blogs.starcio.com/2018/05/recommendations-devops-ci-cd-pipelines.html) CI/CD是devops的关键实践之一,它让团队能够在开发实践上保持一致,并确保有一种一致的、可靠的、自动化的方式将应用程序交付到多个计算环境。 以下是关于实现CI/CD的五个建议: ## 1. 确定业务和技术目标 对于大多数企业来说,CI/CD都不可能在一夜之间实现,通常会是一项渐进式的工程。这意味着大多数devops团队必须优先考虑要开发哪些实践、要自动化哪些过程以及要关注哪些平台堆栈。 值得参考的办法是查看短期业务优先级,并将devops和CI/CD目标对准它们。如果有新的应用正在开发中,那么这是聚焦它们的CI/CD管道的最佳时机。如果您正在进行上云迁移,那么标准化体系结构和为需要品牌更改的应用开发CD pipeline绝对是一个很好的起点。 ## 2. 从持续测试开始(continuous test) 做为企业,首先要关注“基础”,如确保源代码具备单元测试,通过了静态代码分析和安全扫描。 只有不断追求高质量的代码和近乎完美的应用,交付速度才能飞速提升,也就是说,我们需要在CI/CD中加入自动化测试的环节。不仅仅是单元测试,代码分析、安全性和性能测试,都应该在每次提交至交付或...
 你不知道的软件测试那些事?   一、写在前言   作为开发人员,我们都知道我们应该测试我们的代码。我们应该写单元测试,但这也通常是我们发现没时间时跳过的第一步。   作为团队的领导者或者管理者我们都知道测试是必要的,但是当截止日期临近的时候,我们倾向于减少测试,而把更多的重点放到编码上。这样看测试领域似乎很紧张。我们都知道测试对我们是有利的,但是一旦项目面临压力时我们就不再测试了。   二、我们为什么测试?   Edsger W Dijkstra 说过:测试可以用来找到显式的缺陷(bug),但是无法显示潜伏的软件缺陷(bug)。这意味着测试不能百分百保证你的软件没有缺陷(bug),但是它确实很有帮助。   我们也可以换种说法,如果我们不进行测试我们几乎可以百分百保证我们的软件会有缺陷(bug),除非我们是在编写像“hello world!”那样简单的程序。但是即使这么简单的程序你也会测试,因为一旦你输入完你的代码你就会很好奇它的输出是不是真的是“hello world!”。   而这就是第一类形式的测试,也是我们一直在做的: 手工测试. 我们编写程序,然后启动它去检验运行结果。 对于一个简单的“hello world”这可能是足够的,但是对于复杂度更高的程...
我们纵观市场,数字资产矿机商城平台之矿机托管系统(开发微信ruiec2723)在市场上还是很有发展潜力的。但是,很多人都把眼光放在了数字资产交易所之上,却忽视了生产数字资产的渠道,这也是商机,当然了数字资产挖矿行业和数字资产交易是两种截然不同的投资方式。也许会随着币价的上涨或者下跌,我们会产生一些相应的损失。但是对于数字资产交易来说,数字资产挖矿能够让我们不定期的相应的数字资产,而从矿池产出的比特币以及数字资产就相对于币市场上的比特币纯净。 现在有很多矿池持有者都会把相应的矿机资源选择放在市场上流动,进行用户也可以进行矿机挖矿的形式,当然了这就涉及到几种矿机的模式:一种是先从数字资产矿机商城购买矿机发到矿池再利用矿机托管平台进行挖矿产币管理。当然了还有一种就是虚拟矿机,这种我们通常叫做云矿机系统,对于这种系统呢很多时候都是以编写一套相应的算力去进行虚拟挖矿,在商城购买的矿机也只是一个虚拟矿机(只能够进行网络算力挖矿)。 当然了这种形式有很多,还有一些矿机租赁平台,这个看起来和这种矿机托管平台有点类似,但是做法却不相同。对于数字资产矿机商城开发、矿机托管系统开发很多时候都是这些矿池持有者或者运营...
svn: E170001报错的原因以及解决方案
![输入图片说明](https://static.oschina.net/uploads/img/33744_RMIC.png "在这里输入图片标题") ![输入图片说明](https://static.oschina.net/uploads/img/33804_csrT.png "在这里输入图片标题") ![输入图片说明](https://static.oschina.net/uploads/img/33818_CqQg.png "在这里输入图片标题") ![输入图片说明](https://static.oschina.net/uploads/img/33830_D2Zb.png "在这里输入图片标题")
Effictive Python》一书中对for-else用法提出了质疑,主要观点是可以通过封装成函数来取代这一用法,而封装成函数是更加通用易懂的做法,所以一般不会使用for-else用法。为了不影响文章的紧凑,我把评论区对书上内容的引用放在文末“**更新补充**”部分,有兴趣的读者可以去看一下。
MongoDB3.6的默认配置会拒绝未授权的链接对公共网络的访问,从而保护数据收到外部威胁。MongoDB只会监听本地链接,除非添加规则允许监听其他地址。本教程会简明的展示如何允许外部IP地址连接MongoDB节点,并保证联网服务器可以连接到你的数据库。通过本教程,你会发现配置MongoDB监听具体的网络端口是很容易的一件事情。 看本教程前,你需要: 安装MongoDB3.6 服务器上有多个网络接口(本例会使用AWS EC2实例) 了解IP网络的基本知识,会配置私有IP 我启动了安装有 Ubuntu 16.04 LTS的一台AWS EC2的实例,并且安装了MongoDB3.6我想允许我的部分VPC IP地址连接到我们的MongoDB数据库。通过这种方式,可以保证只有我们的指定IP以及本机才能连接到数据库,而其他陌生地址禁止访问数据库。 首先启动VPC公共子网中的Ubuntu实例。根据MongoDB官网文档安装mongodb3.6,通过以下命令可以查看进程占用了那个网络端口: ubuntu@ip-172-16-0-211:~$ sudo netstat -plant | egrep mongod
0 127.0.0.1:27017
2549/mongod 命令结果输出显示用户只允许通过本机的27017端口进行访问,如果想其他系统访问...
Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property XXX 原因:我的Controller中需要接收的是Date类型,但是在页面传过来的时间是String类型。前端表单包含时间的字符串传进去,转换成日期时报错了 解决:在Controller中加入
@InitBinder
public void initBinder(WebDataBinder binder) {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
dateFormat.setLenient(true);
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
或者 @InitBinder
protected void initBinder(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
参考: https://stackoverflow.com/questions//failed-to-convert-property-value-of-type-java-lang-string-to-required-type-java https://blog.csdn.net/lufeng20/article/details/7761689...
下载wkhtmltopdf https://wkhtmltopdf.org/downloads.html 安装完成后加入path路径,默认安装位置,可能需要重新启动pycharm C:\Program Files\wkhtmltopdf\bin github
https://github.com/JazzCore/python-pdfkit 安装python 包 pip install pdfkit
简单使用 Usage For simple tasks: import pdfkit
pdfkit.from_url('http://google.com', 'out.pdf')
pdfkit.from_file('test.html', 'out.pdf')
pdfkit.from_string('Hello!', 'out.pdf') import pdfkit
url = 'https://my.oschina.net/ahaoboy/blog'
pdfkit.from_url(url, 'p1.pdf')
You can pass a list with multiple URLs or files: pdfkit.from_url(['google.com', 'yandex.ru', 'engadget.com'], 'out.pdf')
pdfkit.from_file(['file1.html', 'file2.html'], 'out.pdf') Also you can pass an opened file: with open('file.html') as f:
pdfkit.from_file(f, 'out.pdf') If you wish to further process generated PDF, you can read it to a variable: # Use False instead of output path to save pdf to a variable
pdf = pdfkit.from_url('http://google.com', False) You can specify all wkhtm...
Intellij IDEA神器那些让人爱不释手的小技巧
目前提升H5应用加载速度的方式有很多,比如缓存、cdn加速、代码压缩合并和图片压缩等技术。这些方法相信大伙如数家珍,然而这些招用完后,是否还有优化空间呢?现在我们祭出大杀器——HTTP 2.0 ...
MySQL-性能优化-索引和查询优化 要知道为什么使用索引,要知道如何去使用好索引,使自己的查询达到最优性能,需要先了解索引的数据结构和磁盘的存取原理 参考博客:MySQL索引背后的数据结构及算法原理 如上这篇博客写的挺好,我就不再造轮子了,对如上博客,我总结如下几个重要的要点: 1. 不使用顺序查找,因为顺序查找比较慢,通过特定数据结构的特点来提升查询速度,这种数据结构就是可以理解成索引。 2. 索引一般以文件形式存储在磁盘上,索引检索需要磁盘I/O操作,为了尽量减少磁盘I/O。磁盘往往不是严格按需读取,而是每次都会预读,而且主存和磁盘以页为单位交换数据,所以在读取的数据不在主存中时,会从磁盘中读取一批数据(页)到主存中。 3. 不管在哪种程序优化上,要想快速挺高性能,直接将常用的、少变更的数据直接读取到内存中,使用的时候就直接在内存上读取,而不去磁盘上读取,减少I/O操作,这样就能使程序快上10倍以上。但由于内存容量的限制,也不可能将所有的数据都放内存中。 MySQL索引分类 普通索引:最基本的索引,没有任何限制。 唯一索引:与”普通索引”类似,不同的就是:索引列的值必须唯一,但允许有空值。 主键索引:它是一种特殊的唯一索引...
今年6月25日至27日, LinuxCon + ContainerCon + CloudOpen(LC3)将在北京国家会议中心召开。本次会议针对开源技术在人工智能和深度学习、区块链、云原生、虚拟服务器架构和微服务、新兴技术、基础实施和自动化、IoT和M2M、KVM、Linux系统、网络编排等10大前沿领域的应用,邀请了全球数百位业界大咖,用三天时间、超过200场分享,从市场、技术、产业甚至整个生态层面,将做全方位的探讨。
摘要: 在最近的飞天技术汇CDN Tengine开源技术沙龙上,阿里云CDN团队的高级开发工程师墨飏进行了《Tengine的调试与资源监控》的主题分享。本文为演讲记录,从Tengine的内存调试、核心结构、upstream、coredump四个部分展开,为大家整理和分享一些实践经验,希望能给关注Tengine的开发者带来一些帮助与启发。
老码农在[上一篇博客](https://my.oschina.net/greenlaw110/blog/1811714) 给出了如何从头开始创建一个 自带自动化测试工具的 RESTful 服务项目的例子. 今天我们在这个简单例子上做延伸, 把这个例子改写为一个简单的 TODO Task 应用. 该应用会提供以下服务端口: * GET /todos - 返回所有的 TODO 项 * GET /todos/?q=? - 查询 TODO 项, 所有描述符合 q 参数的 TODO 项都会被返回 * GET /todos/{id} - 返回指定 ID 的 TODO 项 * POST /todos - 添加一条 TODO 项 * DELETE /todos/{id} - 删除指定 ID 的 TODO 项 ## 1. 创建项目 下面开始创建初始项目: ``` mvn archetype:generate -B \ -DgroupId=demo.todo \ -DartifactId=todo-service \ -DarchetypeGroupId=org.actframework \ -DarchetypeArtifactId=archetype-simple-restful-service \ -DarchetypeVersion=1.8.8.5 ``` 下面我们将项目用 Intellij IDEA 打开. (推荐使用 IDEA 开发 Act 应用, 社区版足够使用了) ![image](https://user-images.githubusercontent.com/01817-cd25d77e--b55b77e1b.png) ## 2. 加入数据库访问插件依赖 可以删除掉项目创建的 `Service.java` 文件. 然后在 `pom.x...
MySQL-性能优化-优化设计和设计原则 MySQL性能优化目的 如何合理的设计数据库? 什么样的数据库设计才能给后期DBA优化提供基石? 数据库设计与程序设计的差异? 数据库设计早期优化 1. 关系明确(理清表之间的关系,可以通过冗余的方式提高效率) 2. 节省空间(根据业务经验,设置字段长短) 3. 提高效率 数据库表开发流程 原型=&逐步完善(表的设计也是如此) 数据库种类 1. 层级数据库(注册表) 如:Windows操作系统的核心就是一个注册表,由于配置项比较多,采用层级关系的数据存储 2. 关系型数据库 如:MySQL 3. 时序数据库 4. 图数据库 如:最短路径,地理信息 5. Key-value数据库 如:Redis 6. 对象数据库 7. BigTable数据库 文件系统和数据库系统之间的区别? (1)文件系统用文件将数据长期保存在外存上,数据库系统用数据库统一存储数据; (2)文件系统中的程序和数据有一定的联系,数据库系统中的程序和数据分离; (3)文件系统用操作系统中的存取方法对数据进行管理,数据库系统用DBMS统一管理和控制数据; (4)文件系统实现以文件为单位的数据共享,数据库系统实现以记录和字段为单位的数据共享。 优化设计第一步 想要在表设计中节省空间,就必须精通各种数据类型的特...
堆大小设置 JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。 典型设置: java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -Xmx3550m:设置JVM最大可用内存为3550M。 -Xms3550m:设置JVM促使内存为3550m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。 -Xmn2g:设置年轻代大小为2G。整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。 -Xss128k:设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在左右。 java -Xmx3550m -Xms3550m -Xss128k -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX...
git-analyze 是一个基于 libgit2 的 git 工具集,包括 git-analyze,git-complete, git-rollback,以及 git-cheat 等
![](https://static.oschina.net/uploads/img/9.png) ### 一、前言 前段时间跟朋友炒币,总是需要打开交易平台才能看行情,有点麻烦,而且那个窗口也特别大,内容也很杂。所以需要一个简洁的看板。下面是需求。 #### 需求: - 首先是可以看各种币行情的看板 - 关注的币种都不同,所以需要支持自定义交易币种 - 由于大家使用的系统不同,要支持跨平台。 ### 二、方案和工具 #### 方案 简单来讲就是electron套个aicoin插件 分三步: - 用vue来做个设置页面 - 用vue做个看板页面,把aicoin套到vue里 - 用vue-router组合起来放到electron里 #### 主要工具 - electron - vue - element-ui - aicoin ### 三、项目结构 ![输入图片说明](https://static.oschina.net/uploads/img/70033_Whbk.jpg) #### 主要文件说明 - MainPage用来配置要显示的货币类型 - ShowPage是看板页面 - aicoin是下载到本地的aicoin脚本,因为要翻墙所以先下好 - showcoin是具体显示数据的脚本。 #### electron和vue安装 这个教程比较多,参考[链接](https://github.com/SimulatedGREG/electron-vue),install的时候,建议使用cnpm快一些尤其是electron如果用npm特别慢。 #### 不...
Git v2 Protocol aka Git Wire Protocol
讲述C++协程的近况、设计与实现中的细节与决策
一 预览 二 开发步骤 基本面向过程的思想。没有面向对象的部分。 准备好成语库。db.js 选出每一关的成语。 对成语进行乱序。 初始化表格的同时,将单个字放到每个单元格的按钮上展示。 对tbody进行点击事件的监听。事件函数中获取btn。用变量记录选中的文字。 判断得分、判断下一关、判断游戏结束(成语库毕竟用数组来保存。成语数量有限。) 三 代码 只有两个文件:index.html和db.js 1 index.html代码如下: &!DOCTYPE HTML&
&meta charset="UTF-8" /&
table button{
width:100%;
width:25%;
table td .selectbtn{
background:
&script type="text/javascript" src="db.js"&&/script&
&div align="center"&成语消消乐&/div&
&div align="center"&
当前第&font color="green" id="current_level_text"&1&/font&关&
得分&font id="gain_scores_txt" color="green"&0&/font&分&
思考&font id="think_time" color="red"&0&/font...
## 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-a-b6af-a5f081c5e004&hw=ph&test=db&l=hra0e7&c=6&o=4) ![image](https://user-images.githubusercontent.com/a0-5cfa-11e8-972e-90df52a5b938.png) [act-1.8.8-RC4](https://www.techempower.com/benchmarks/#section=test&runid=ae097e87-3b23-402c-8f51-a&hw=ph&test=json&l=hra0e7&c=6&o=4) ![image](http...
gRPC是Google开源的通用高性能RPC框架,它支持的是使用**Protocol Buffers**来编写Service定义,支持较多语言扩平台并且拥有强大的二进制序列化工具集。
最近关于渐进式Web应用有好多讨论,有一些人还在质疑渐进式Web应用是否就是移动端未来。 但在这篇文章中我并不会将渐进式APP和原生的APP进行比较,但有一点是可以肯定的,这两种APP的目标都是使用户体验变得更好。 移动端Web应用有很多优秀的概念让人应接不暇,但好在编写一个渐进式Web应用不是一个很困难的事情。在这篇文章里将向你介绍如何把一个普通的网站转换成渐进式Web应用。你可以按照这篇文章一步一步地做,做完之后你的网站将可以实现离线访问,并且可以在桌面上创建该网站的图标。那么下面即将开始入门教程。 什么是渐进式Web应用? 渐进式Web应用是一种全新的Web技术,让Web应用和原生APP的体验相近或一致。 渐进式Web应用它可以横跨Web技术及Native APP开发的解决方案,对于开发者的优势如下: 你只需要关心W3C的Web标准,不用关心各种Native APP的代码。 用户可以在安装应用之前先试用。 在渐进式Web应用中,你不需要使用各种应用商店来分发应用,也不用关心应用发布时奇怪的审核标准以及应用内购的平台抽成。另外,应用程序更新是自动进行的,无需用户交互,所以整体的使用体验对于用户来讲更为的平滑。 渐进式Web应用的“安装”过程很快,只需要在主屏幕上添...
今天来写一下关于购物车的东西, 这里首先抛出四个问题: 1)用户没登陆用户名和密码,添加商品, 关闭浏览器再打开后 不登录用户名和密码 问:购物车商品还在吗?
2)用户登陆了用户名密码,添加商品,关闭浏览器再打开后 不登录用户名和密码 问:购物车商品还在吗?
3)用户登陆了用户名密码,添加商品, 关闭浏览器,然后再打开,登陆用户名和密码
问:购物车商品还在吗? 4)用户登陆了用户名密码,添加商品, 关闭浏览器 外地老家打开浏览器
登陆用户名和密码 问:购物车商品还在吗? 上面四个问题都是以京东为模板, 那么大家猜猜结果是什么呢? 1)在 2)不在了 3)在 4)在 如果你能够猜到答案, 那么说明你真的很棒, 那么关于这四点是怎么实现的呢? (如果有不认可的小伙伴可以用京东实验一下) 下面我们就来讲解下购物车的原理,最后再来说下具体的code实现. 1)用户没有登录, 添加商品, 此时的商品是被添加到了浏览器的Cookie中, 所以当再次访问时(不登录),商品仍然在Cookie中, 所以购物车中的商品还是存在的. 2)用户登录了,添加商品, 此时会将Cookie中和用户选择的商品都添加到购物车中, 然后删除Cookie中的商品. 所以当用户再次访问(不登录),此时Cooki...
因同事多线程下在同一个事务进行删除和插入操作导致数据库死锁,想解决此问题就要先了解innodb lock机制,本文将通过案例重现,结合innodb lock机制进行剖析。如有不当之处,望大神指正补充
之前有讲过单例模式,多例模式实际上可以看作是单例模式推广。在多例模式中,多例类可以有多个实例,并且多例类要负责创建、管理并且向外提供自己的实例。
最近接触了 gRPC 体会到虽然众多 RPC 框架各有各的特点但是他们提供的特性和功能有很多的相似之处 , 这就说明他们面对同样的分布式系统带来的问题。从 2016 年左右开始接触到 dubbo ,基本停留在使用的层面,对 dubbo 的设计以及着重要解决的问题都没有系统的研究过,通过对 dubbo 和其他类似 RPC 产品的系统学习 ,学习分布式系统中面临的共同问题以及解决之道。
微内核架构
微内核架构 (Microkernel architecture) 模式也被称为插件架构 (Plugin architecture) 模式。原本与内核集成在一起的组件会被分离出来,内核提供了特定的接口使得这些组件可以灵活的接入,这些组件在内核的管理下工作,但是这些组件可以独立的发展、更改(不会对现有系统造成改动),只要符合内核的接口即可。典型的例子比如 , Eclipse , IDEA 。
Dubbo 的微内核设计
根据我个人对 Dubbo 微内核设计的理解,以及阅读源码后总结。视觉总是最直观的,可以让大脑最快速度的有一个最直观的认识,一开始就一头深入到源码的细节中只会让人迷糊。不理解 Dubbo 的微内核设计架构的话,学...
在上一篇中,我们介绍了了用TensorflowJS构建一个神经网络,然后用该模型来进行手写MINST数据的识别。和之前的基本模型比起来,模型的准确率上升的似乎不是很大。(在我的例子中,验证部分比较简单,只是一个大致的统计)甚至有些情况下,如果参数选择不当,训练效果还会更差。 卷积网络,也叫做卷积神经网络(con-volutional neural network, CNN),是一种专门用来处理具有类似网格结构的数据的神经网络。例如时间序列数据(可以认为是在时间轴上有规律地采样形成的一维网格)和图像数据(可以看作是二维的像素网格)。对于MINST手写数据来说,应用卷积网络会不会是更好的选择呢? 先上图: 代码见Codepen 该图是我应用CNN对MINST数据进行训练的结果,准确率在97%,可以说和之前的模型来比较,提高显著。要知道,要知道在获得比较高的准确率后,要提高一点都是比较困难的。那我们就简单的看看卷积网络是什么,他为什么对于手写数据的识别做的比其他模型的更好? CNN的原理实际上是模拟了人类的视觉神经如何识别图像。每个视觉神经只

我要回帖

更多关于 鼠标宏加密 的文章

 

随机推荐