开源中国

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

It appears you’re using an unsupported browser

为了获得更好的浏览体验,我们强烈建议您使用较新版本的 Chrome、 Firefox、 Safari 等,或者升级到最新版本的IE浏览器。 如果您使用的是 IE 11 或以上版本,请关闭“兼容性视图”。
博客专区 - 开源中国社区

精彩阅读

  • 最新推荐

  • 今日热门

  • 本周热门

  • 每日一博

  • 最新文章

调用腾讯优图开放平台进行人脸识别-Java调用API实现

调用腾讯优图开放平台进行人脸识别-Java调用API实现
小帅帅丶 发布于 20分钟前 阅读 7

PowerShell 中 function 返回值的陷阱

问题描述 PS 中的 function 使用起来非常自由,但它会对返回值做一种奇怪的处理。 我们一起来看下面这段代码,你认为这个 function 的返回值是什么类型? function TestReturn () { $ls = [System.Collections.Generic.List[int]]::new() $ls.Add(1) return $ls } $(TestReturn).GetType() 喂!这怎么看都是返回了一个 List<int> 吧? 但是你运行之后得到的结果是这样的: 啊!!!我 List<int> 呢??? 然后当我们“天真地”将这个返回值当作一个 List<int> 使用时,大概会得到一个: “Method invocation failed because [System.Int32] does not contain a method named 'xxx'.” 原因分析 不止 List<int> 会这样, Queue<int> 以及其他常用的泛型/非泛型集合、甚至 Array 都是副德性……那我们大概可以进一步推测:所有 collection 都是这德性(欢迎读者验证并评论)。 具体原因不明,大概只有 PS 的设计者能解释了吧。 我推测与它对于多个返回值的处理有关(http://www.pstips.net/powershell-specify-return-value-from-function.html),这个设计的逻辑感觉就像是: “多个返回值变成一个 Object[],只包含一个 item 的 collection 返回值会变成一个 it...
RareH 发布于 1小时前 阅读 13

快速了解人工智能结晶之语音转换文字

科技解放生产力,人工智能的应用如今是大热,那么今天就来给各位介绍一下IBM在这方面的一个小的尝试,语音转换文字。咱们来看一看相较于传统的转换,结合Watson的IBM是如何做到让识别率飙升的。
IBM Bluemix

Spring data 如何定义默认时间与日期

需求是这样的: 1. 创建时间与更新时间只能由数据库产生,不允许在实体类中产生,因为每个节点的时间/时区不一定一直。另外防止人为插入自定义时间时间。 2. 插入记录的时候创建默认时间,创建时间不能为空,时间一旦插入不允许日后在实体类中修改。 3. 记录创建后更新日志字段为默认为 null 表示该记录没有被修改过。一旦数据被修改,修改日期字段将记录下最后的修改时间。 4. 甚至你可以通过触发器实现一个history 表,用来记录数据的历史修改,详细请参考作者另一部电子书《Netkiller Architect 手札》数据库设计相关章节。
neo-chen 发布于 2小时前 阅读 24

React Native 中组件的生命周期

React Native 中组件的生命周期
北方人在上海 发布于 2小时前 阅读 14

曲线点抽稀算法-Python实现

## 何为抽稀 >在处理矢量化数据时,记录中往往会有很多重复数据,对进一步数据处理带来诸多不便。多余的数据一方面浪费了较多的存储空间,另一方面造成所要表达的图形不光滑或不符合标准。因此要通过某种规则,在保证矢量曲线形状不变的情况下, 最大限度地减少数据点个数,这个过程称为抽稀。 通俗的讲就是对曲线进行采样简化,即在曲线上取有限个点,将其变为折线,并且能够在一定程度保持原有形状。比较常用的两种抽稀算法是:道格拉斯-普克(Douglas-Peuker)算法和垂距限值法。 ## 道格拉斯-普克(Douglas-Peuker)算法 Douglas-Peuker算法(DP算法)过程如下: * 1、连接曲线首尾两点A、B; * 2、依次计算曲线上所有点到A、B两点所在曲线的距离; * 3、计算最大距离D,如果D小于阈值threshold,则去掉曲线上出A、B外的所有点;如果D大于阈值threshold,则把曲线以最大距离分割成两段; * 4、对所有曲线分段重复1-3步骤,知道所有D均小于阈值。即完成抽稀。 这种算法的抽稀精度与阈值有很大关系,阈值越大,简化程度越大,点减少的越多;反之简化程度越低,点保留的越多,形状也越趋于原曲线。 下面是Python代码实现: ```python # -*- coding: utf-8 -*- """ -----------------...
j_hao104 发布于 3小时前 阅读 18

nginx之proxy_pass指令完全拆解

nginx中有两个模块存在proxy_pass指令。proxy_pass后的后端服务器的uri到底是个啥?
永福 发布于 19小时前 阅读 1167 评论 5 点赞 1 打赏 1

给 Web 开发人员推荐的测试工具

用户对于现代 Web 应用除了美观要求之外,对产品体验度也有较高的要求。在推荐过几期开源图形库和通用独立 UI 组件后,觉着是时候推荐一些测试工具了。这应该也是该系列的最后一篇,感谢大家的支持。 给 Web 开发人员推荐的通用独立 UI 组件(二) 给 Web 开发人员推荐的通用独立 UI 组件(一) 给 Web 开发人员推荐的开源图形库 —— 2D/3D 给 Web 开发人员推荐的开源图形库 —— 动画 给 Web 开发人员推荐的开源图形库 —— 数据可视化 一、单元测试/测试运行器 1、Jest 知名的 JavaScript 单元测试工具,由 Facebook 开源,开箱即用。它在最基础层面被设计用于快速、简单地编写地道的 JavaScript 测试,能自动模拟 require() 返回的 CommonJS 模块,并提供了包括内置的测试环境 Dom API 支持、合理的默认值、预处理代码和默认执行并行测试在内的特性。通过在并行进程中同时运行测试,让测试更快地结束。 2、AVA 号称“未来的测试运行器”,利用 JavaScript 在 Node.js 里使得 IO 可以并行的优点,让你的测试可以并发执行,这对于 IO 繁重的测试特别有用。另外,测试文件可以在不同的进程里并行运行,让每一个测试文件可以获得更好的性能和独立的环境。测试并发执行强...
编辑部的故事 发布于 19小时前 阅读 1659 评论 2 点赞 4

MySQL进行Replace操作时造成数据丢失——那些坑你踩了吗?

## 一、问题说明 公司开发人员在更新数据时使用了 replace into 语句,由于使用不当导致了数据的大量丢失,到底是如何导致的数据丢失?现分析如下。 ## 二、问题分析 ### a. REPLACE 原理 REPLACE INTO 原理的官方解释为: > REPLACE works exactly like INSERT, except that if an old row in the table has the same value as a new row for a PRIMARY KEY or a UNIQUE index, the old row is deleted before the new row is inserted. > 如果新插入行的主键或唯一键在表中已经存在,则会删除原有记录并插入新行;如果在表中不存在,则直接插入 地址:https://dev.mysql.com/doc/refman/5.6/en/replace.html ### b. 问题现象 丢失数据的表结构如下: ```sql CREATE TABLE `active_items` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', `ad_id` char(32) NOT NULL DEFAULT '' COMMENT 'XXX', `ap_id` tinyint(4) NOT NULL DEFAULT '1' COMMENT 'XXX', `price` bigint(20) NOT NULL DEFAULT '0' COMMENT 'xxx', `rate` int(11) NOT NULL DEFAULT '0' COMMENT 'XXX', `cc_price` bigint(20) NOT NULL DEFAULT '0' COMMENT 'XXX', `sale_count` int(11) NOT NU...
o翡翠谷o 发布于 19小时前 阅读 184 评论 2

tangyuan-mongo,使用SQL语法访问MongoDB

## 1. 介绍 tangyuan-mongo是tangyuan框架中的MONGO服务组件,tangyuan-mongo组件将一系列的Mongo操作封装成Tangyuan中的服务,并提供统一的方式进行访问;同时还提供以SQL语法的方式访问Mongo。 ![示意图](http://www.xson.org/project/mongo/1.2.0/images/01.png) 项目源码: 官网地址: ## 2. 使用SQL语法访问Mongo 如果我们要查询性别为女性,年龄在18岁到28岁之间的用户,如果使用Mongo原始的语法,我们需要这样写: db.user.find({"gender":"Female", "age":{"$gte":18, "$lte":28}}) 现在,我们可以使用下面的方式: select * from user where gender = 'Female' and age >= 18 and age <= 28 是不是感觉就像SQL查询?是的没错,tangyuan-mongo就是提供以SQL语法的方式访问Mongo。 ## 3. 支持的SQL语法 ### 3.1 插入 > 语法 INSERT INTO tbl_name (col_name,...) VALUES (col_value,...) > 示例 INSERT INTO user_info(id, name, age, amount) VALUES(1, 'xsonorg', 18, 1000); > 解析后Mongo语法 db.user_info.insert({ "id" : 1 , "name" : "xsonorg" , "age" : 18 , "amount" : 1000}) ### 3.2 查询 > 语法 SELECT {col_name | expr}, ... [FROM tbl_name [WHER...
xson_org 发布于 20小时前 阅读 112 评论 3

单点优化系列--session共享踩坑记

由于公司一直使用nginx的iphash负载策略,iphash的优劣这里不做分析,在大量请求下,iphash策略是个坑, 抛开此策略,多个服务器做负载均衡就要先做session共享
java_龙 发布于 21小时前 阅读 238

利用Photoshop + Matlab 解析10-bit RAW

很多图像芯片都支持10bit/12bit Bayer RAW的输出,而大部分图像查看软件都无法直接处理这类文件。下面介绍一种办法,供大家参考。
ColorBeans 发布于 21小时前 阅读 56

springboot构建spring cloud 微服务项目 搭建ARTHUR框架分享

在此分享下本人最近搭建的一个springcloud微服务项目,包括注册中心、配置中心、熔断器、turbine熔断器集中监控中心、fegin、前后端负载均衡、swagger2、网关bus动态修改配置等等。项目只是初步搭建,之后还会加入各种好玩的技术,会不定期更新,感兴趣的可下载进行研究交流,微服务的明天会更好。 github arthur https://github.com/ArthurFamily/arthur.git config https://github.com/ArthurFamily/config-center.git 码云 https://git.oschina.net/ArthurFamily/arthur.git https://git.oschina.net/ArthurFamily/config-center.git (注:配置文件通过git项目读取,放到一个项目中读取超过5分钟才会有响应,经测试不是网络原因,配置文件单独放置一个项目没有问题。) <modules> <!-- 注册中心与配置中心使用jhipster2.6.0 --> <module>arthur-eureka</module> <!-- 配置中心 --> <module>arthur-config-center</module> <!-- 集中监控断路器仪表盘 --> <module>arthur-monitor-turbine</module> <!-- zuul网关 --> <module>arthur-gateway</module> <!-- 后台管理之服务网管理 --> <module>arthur-manage-serviceWeb</modu...
ooTll 发布于 22小时前 阅读 217 评论 5 点赞 1

腾讯祭出大招VasSonic,让你的H5页面首屏秒开

# VasSonic成长历程 --- ## 前言 2017.8.8 14时,SNG增值产品部Vas团队研发的轻量级高性能Hybrid框架VasSonic通过了公司最终审核,作为腾讯开源组件分享给大家。从当初立项优化页面加载速度,到不断摸索、优化,再到整理代码、文档,最终在Github上开源,并且在24小时内获取star数超过1600。我们非常高兴看到我们的成果收到这么多的关注,趁此机会,正好回顾一下VasSonic的成长历程,也希望能够让大家更了解VasSonic。 ## 项目背景 Web相信大家再熟悉不过了,它具有快速迭代发布的天然优势,但也存在中一些让人诟病的问题,比如加载速度慢,体验差等。在此之前,手Q上很多页面首屏打开速度居高不下,甚至有些耗时达到3s以上,这意味着用户打开页面必须经过3秒之后才能进行交互操作,体验相当差,很多用户忍受不了这个漫长的时间直接流失掉了。 为了提升用户体验和业务用户留存率,我们很多业务一开始通过Web开发,等页面模型验证符合预期后,再将H5页面转化成原生界面。我们很快意识到这不是一种健康的可持续的开发模式,一方面存在重复人力浪费,另外一方面原生商城除了速度快一点,要运营活动改版都很难。 所以后来团队改了切入方向,安排人力专心研究如何加快页面打开速...
腾讯开源 发布于 23小时前 阅读 790 评论 1 点赞 3

游戏中有哪些作弊方法?

了解一些游戏中的作弊方式,方便你氪金。
wier 发布于 1天前 阅读 398 点赞 2

Vue.js 2 入门与提高(一)

** Vue.js —— 渐进式前端框架 ** Vue.js作为一个后起的前端框架,借鉴了Angular 、React等现代前端框架/库的诸多特点,并且 取得了相当不错的成绩。 ![vue.js 2](http://xc.hubwiz.com/class/592ee9b2b343f27b0ae1ba99/img/front-frameworks.jpg "汇智网") Vue.js的定位是一个__渐进式__框架,作者的说法是: > 与其他框架的区别就是渐进式的想法,也就是__Progressive__——这个词在英文中定义是渐进, > 一步一步,不是说你必须一竿子把所有的东西都用上。 这或许是Vue.js受到越来越多关注的一个重要原因:你只需要具备基本的HTML/JavaScript/CSS 基础,就可以快速上手,让你用上这些现代Web开发中的先进技术来提高你的生产力: 响应式编程、声明式渲染、组件化开发、虚拟DOM、跨平台支持... ![vue.js 2](http://xc.hubwiz.com/class/592ee9b2b343f27b0ae1ba99/img/progressive.jpg "dom") 尽管Vue.js缺少令人眼前一亮的独创性前端开发理念,但它集中实现了最近几年前端领域技术 大跃进的诸多新理念、新技术。或许你认为这些创新起源于Angular、React或者Knockout, 但Vue.js可以无缝引导大量jQuery时代的前端工程师进入新的时代,这也是一个相当值得称赞的 巨大的成果...
笔阁 发布于 1天前 阅读 772 评论 3 点赞 3

8 个安全性最高的 Linux 发行版推荐

与 Windows 操作系统相比,Linux 和 macOS 被认为更安全,有一些专门的 Linux 发行版还可以满足特别关注安全的用户的需求,如使用 TOR,沙盒,防火墙等技术。一些提供匿名功能 Linux 发行版还能更好地提升安全性,保护隐私性,特别是当你想悄么么地浏览特殊网页又不想被发现的时候。 1、Tails Demo:https://tails.boum.org/ Tails(The Amnesic Incognito Live System) 是基于 Debian 的自启动光盘或 USB 发行,其目标是为用户提供完整的因特网匿名功能。 该发行装备了一些因特网应用程序,包括网页浏览 器、IRC客户端、邮件mail客户端、即时消息信使,这都以安全为理念进行了预配置,并对网络流量进行了匿名性处理。为达到此目标,Incognito 使用了 Tor 网络,以使得网络流量很难被追踪。 2、Whonix Demo:https://www.whonix.org/ Whonix 是一份聚焦于匿名性、隐私、安全的操作系统。 它基于 Tor 匿名网络、Debian GNU/Linux、基于隔离的安全性。Whonix 包括两部分,一部分只运行在 Tor 上并扮演网关角色,这部分叫做 Whonix-Gateway;另一部分叫做 Whonix-Workstation,位于隔离网络中。只有经由 Tor 的连接被允许。 3、Qubes OS Demo:https://www.qubes-os.org/ Qub...
编辑部的故事 发布于 2天前 阅读 3891 评论 25

折腾笔记——使用MongoDB(1、Windows安装MongoDB)

1、MongoDB简介         MongoDB是一个高性能,开源,无模式、易部署、易使用,存储数据非常方便的文档型数据库,是当前NoSql(Not Only SQL,但其实已经悄悄滴放弃了SQL的一些特性和功能)数据库中非常热门的一种。它在许多场景下可用于替代传统的关系型数据库或键/值存储方式。Mongo使用C++开发。Mongo的官方网站地址是:http://www.mongodb.org/ ,可以去下载编译好的二进制文件和压缩包。也可以去https://github.com/mongodb,下载源码(版本非常全面)。             主要功能特点有: MongoDB的提供了一个面向文档存储,操作起来比较简单和容易。 你可以在MongoDB记录中设置任何属性的索引 (如:FirstName="Sameer",Address="8 Gandhi Road")来实现更快的排序。 你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。 如果负载的增加(需要更多的存储空间和更强的处理能力) ,它可以分布在计算机网络中的其他节点上这就是所谓的分片。 Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。 MongoDb 使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段 。 Mongodb中的...
二十岁以后 发布于 2天前 阅读 358 点赞 1

Laravel 与 Alpaca-Spa 实现前后分离开发后台管理系统

Laravel 与 Alpaca-Spa前后端分离开发的一个后台管理系统的DEMO。Laravel用来实现后端功能,Alpaca-Spa用来实现前端功能,前后端之间通过Json交换数据。
大弹簧 发布于 2天前 阅读 274 点赞 1

深入浅出设计模式——从球赛中悟装饰者模式

装饰者模式,主要用来动态的给一个对象添加一些额外的功能,同时又不改变它的结构。就为对象增加功能这方面,装饰者模式比使用类的继承更加灵活。
珂jack 发布于 2天前 阅读 402 评论 2

Linux下使用shell+expect远程登录主机

最近使用Ubuntu系统想远程登录自己的vps主机,但是感觉自带的远程登录软件不太好使。于是乎想着怎么使用shell脚本来登录,于是Google之后整理了一下,记录一下,方便以后用到。 ## 1.准备工作:安装expect for Ubuntu ```bash sudo apt-get update sudo apt-get install expect ``` for Centos ```bash yum install expect ``` ## 2.新建脚本粘贴以下内容 ```bash #!/usr/bin/expect spawn /usr/bin/ssh root@114.114.114.114 -p 22 # 用户名、IP地址、端口号自行设置 expect "password:" send "remoteComputerPassword\r" # 密码请自行设置 expect efo interact ``` 脚本的用户名、IP地址、端口号以及密码,需要根据自己远程主机的实际情况来设置。 如果脚本无法执行,查看脚本是否添加了执行权限。
紅茶 发布于 2天前 阅读 256 评论 2 点赞 1

OpenCV图像哈希计算及汉明距离的计算

OpenCV均值哈希与感知哈希计算,对比图像相似度
美丽世界的孤儿 发布于 4周前 阅读 448 评论 1 点赞 1

Spring data 如何定义默认时间与日期

需求是这样的: 1. 创建时间与更新时间只能由数据库产生,不允许在实体类中产生,因为每个节点的时间/时区不一定一直。另外防止人为插入自定义时间时间。 2. 插入记录的时候创建默认时间,创建时间不能为空,时间一旦插入不允许日后在实体类中修改。 3. 记录创建后更新日志字段为默认为 null 表示该记录没有被修改过。一旦数据被修改,修改日期字段将记录下最后的修改时间。 4. 甚至你可以通过触发器实现一个history 表,用来记录数据的历史修改,详细请参考作者另一部电子书《Netkiller Architect 手札》数据库设计相关章节。
neo-chen 发布于 2小时前 阅读 24

曲线点抽稀算法-Python实现

## 何为抽稀 >在处理矢量化数据时,记录中往往会有很多重复数据,对进一步数据处理带来诸多不便。多余的数据一方面浪费了较多的存储空间,另一方面造成所要表达的图形不光滑或不符合标准。因此要通过某种规则,在保证矢量曲线形状不变的情况下, 最大限度地减少数据点个数,这个过程称为抽稀。 通俗的讲就是对曲线进行采样简化,即在曲线上取有限个点,将其变为折线,并且能够在一定程度保持原有形状。比较常用的两种抽稀算法是:道格拉斯-普克(Douglas-Peuker)算法和垂距限值法。 ## 道格拉斯-普克(Douglas-Peuker)算法 Douglas-Peuker算法(DP算法)过程如下: * 1、连接曲线首尾两点A、B; * 2、依次计算曲线上所有点到A、B两点所在曲线的距离; * 3、计算最大距离D,如果D小于阈值threshold,则去掉曲线上出A、B外的所有点;如果D大于阈值threshold,则把曲线以最大距离分割成两段; * 4、对所有曲线分段重复1-3步骤,知道所有D均小于阈值。即完成抽稀。 这种算法的抽稀精度与阈值有很大关系,阈值越大,简化程度越大,点减少的越多;反之简化程度越低,点保留的越多,形状也越趋于原曲线。 下面是Python代码实现: ```python # -*- coding: utf-8 -*- """ -----------------...
j_hao104 发布于 3小时前 阅读 18

快速了解人工智能结晶之语音转换文字

科技解放生产力,人工智能的应用如今是大热,那么今天就来给各位介绍一下IBM在这方面的一个小的尝试,语音转换文字。咱们来看一看相较于传统的转换,结合Watson的IBM是如何做到让识别率飙升的。
IBM Bluemix

React Native 中组件的生命周期

React Native 中组件的生命周期
北方人在上海 发布于 2小时前 阅读 14

Redis的两种持久化方式及原理

Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为“半持久化模式”);也可以把每一次数据变化都写入到一个append only file(aof)里面(这称为“全持久化模式”) 1.RDB方法 (1)第一种方法filesnapshotting:默认redis是会以快照的形式将数据持久化到磁盘的(一个二进 制文件,dump.rdb,这个文件名字可以指定),在配置文件中的格式是:save N M表示在N秒之内,redis至少发生M次修改则redis抓快照到磁盘。当然我们也可以手动执行save或者bgsave(异步)做快照。 (2)工作原理简单介绍一下:当redis需要做持久化时,redis会fork一个子进程;子进程将数据写到磁盘上一个临时RDB文件中;当子进程完成写临时文件后,将原来的RDB替换掉,这样的好处就是可以copy-on-write还有一种持久化方法是Append-only:filesnapshotting方法在redis异常死掉时, 最近的数据会丢失(丢失数据的多少视你save策略的配置),所以这是它最大的缺点,当业务量很大时,丢失的数据是很多的。 (3)详细过程 1.redis调用fork,现在有了子进程和父进程。 2. 父进程继续处理client请求,子进程负责将内存内容写入到临时文件。由于os的写时复制机制(copy on write)父子进程会共...
Vegetable 发布于 12小时前 阅读 13

Java学习之路:不走弯路,就是捷径

1.如何学习程序设计? Java是一种平台,也是一种程序设计语言,如何学好程序设计不仅仅适用于JAVA,对C++等其他程序设计语言也一样管用。有编程高手认为,JAVA也好C也好没什么分别,拿来就用。为什么他们能达到如此境界?我想是因为编程语言之间有共通之处,领会了编程的精髓,自然能够做到一通百通。如何学习程序设计理所当然也有许多共通的地方。 1.1 培养兴趣 兴趣是能够让你坚持下去的动力。如果只是把写程序作为谋生的手段的话,你会活的很累,也太对不起自己了。多关心一些行业趣事,多想想盖茨。不是提倡天天做白日梦,但人要是没有了梦想,你觉得有味道吗?可能像许多深圳本地农民一样,打打麻将,喝喝功夫茶,拜拜财神爷;每个月就有几万十几万甚至更多的进帐,凭空多出个"食利阶层"。你认为,这样有味道吗?有空多到一些程序员论坛转转,你会发现,他们其实很乐观幽默,时不时会冒出智慧的火花。 1.2 慎选程序设计语言 男怕入错行,女怕嫁错郎。初学者选择程序设计语言需要谨慎对待。软件开发不仅仅是掌握一门编程语言了事,它还需要其他很多方面的背景知识。软件开发也不仅仅局限于某几个领域,而是已经渗透到了各行各业几乎每一个角落。 如果你对硬件比较感兴...
Java程序员-10 发布于 7天前 阅读 238 点赞 1

排序--插入排序

本文给出插入排序算法原理以及Java实现,并提供了一种基于二分查找快速插入的优化方案。
蔡佳娃 发布于 13小时前 阅读 7

调用腾讯优图开放平台进行人脸识别-Java调用API实现

调用腾讯优图开放平台进行人脸识别-Java调用API实现
小帅帅丶 发布于 20分钟前 阅读 7

Docker镜像相关命令(学习笔记)

Docker镜像相关命令 镜像查看 #sudo docker images  //在本机进行镜像查看 #sudo docker inspect 镜像ID   //查看单个镜像的具体信息,以JSON格式返回 获取镜像 # sudo docker pull centos    //从DockerHub获取镜像   查询镜像 #sudo docker search 镜像名称  //从DockerHub按照镜像名称模拟查询镜像 制作镜像 通过Dockerfile构建镜像 #sudo cd /              //来到根“/”下 #sudo mkdir redis       //创建redis文件夹 #touch Dockerfile       //创建Dockerfile文件,文件内容见如下灰色部分 FROM        ubuntu:14.04 RUN         apt-get update && apt-getinstall -y redis-server EXPOSE      6379 ENTRYPOINT  ["/usr/bin/redis-server"]  #sudo docker build -t ningyougang/redis .     //通过dockerbuild制作镜像 参数解释 -t:tag名称 当前Dockerfile的路径,在此处表示当前文件夹下   对运行着的容器commit镜像 # sudo docker commit -m "Added json gem" -a"Kate Smith" 0b2616b0e5a8 ouruser/sinatra:v2 参数解释 -m:提交注释,如此处你加了什么特别的功能 -a:作者 0b2616b0e5a8:运...
ND小龙 发布于 12小时前 阅读 5

macvlan 网络结构分析 - 每天5分钟玩转 Docker 容器技术(56)

上一节我们创建了 macvlan 并部署了容器,本节详细分析 macvlan 底层网络结构。
CloudMAN 发布于 8小时前 阅读 5

一步步完成FastDFS + Spring MVC上传下载整合示例

在上一篇博文【CentOS上安装分布式文件系统FastDFS & 配置和问题解决】,我们给出了CentOS上单机安装FastDFS和相关配置,为文件的上传、下载等操作做好了准备~ 本文博文,我们将一步一步完成以FastDFS为文件存储,结合Spring MVC完成上传下载的整合示例 准备FastDFS连接jar包 下载代码 本文示例中,使用了两个代码库 【https://github.com/happyfish100/fastdfs-client-java】 【https://github.com/onefly/fastdfs.pool/】 将上述代码下载到本地,如 打包和Maven安装 将上述代码打包成一个jar包,如fastdfs-client-pool-java-0.0.1.jar 然后使用Maven完成从jar包安装~ mvn install:install-file -DgroupId=org.xxx -DartifactId=fastdfs-client-pool -Dversion=0.0.1 -Dpackaging=jar -Dfile=fastdfs-client-pool-java-0.0.1.jar C:\Users\wangmengjun>mvn install:install-file -DgroupId=org.xxx -DartifactId=fastdfs-client-pool -Dversion=0.0.1 -Dpackaging=jar -Dfile=fastdfs-client-pool-java-0.0.1.jar [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building Maven Stub ...
王孟君 发布于 1个月前 阅读 108 点赞 1

签发HTTPS证书 (acme.sh)

本文,介绍通过 acme.sh 开启https,并配置到nginx中。
dingdayu 发布于 2个月前 阅读 18

Skyline Web 二次开发- 拓展控件加载目录树

    使用拓展控件加载,显示目录树。 注意事项 采用拓展控件的方式加载fly,是无法像原来的方法一样添加目录树控件在同一个页面的,只能通过popup弹出框的方式,在另一个页面中显示目录树,但不影响使用。 需求分析 控件加载 弹出自定义网页 目录树加载 方法说明 这里的方法以前的文章都用过了,不懂的就翻回去看看或者直接查API,现在点几个重点,这种加载方式通过技术人员指点才知道可以这样用,且只能通过popup方法弹出才能加载成功。 在子网页加载目录树需要注意的一点是,需要通过window.document.getElementById("TerraExplorerInformationWindow").focus();来显示目录树,如果不加这个方法,目录树需要鼠标点击一下才能显示,且该对象不接受click等事件,崩溃。。。 关于确定主体显示对象位置,可通过$("#TerraExplorer").offset().top;和$("#TerraExplorer").offset().left;获取屏幕上的坐标,然后反算pop的位置信息可作无缝显示,且通过ShowCaption属性可以引出pop的标题栏,显示效果就一模一样了。 Jsp源码 主网页 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ include file="/WEB-INF/views/include/taglib.jsp"%> <html> <...
华山猛男 发布于 2个月前 阅读 12

卷积神经网络在自然语言处理的应用

CNN作为当今绝大多数计算机视觉系统的核心技术,在图像分类领域做出了巨大贡献。本文从计算机视觉的用例开始,介绍CNN及其在自然语言处理中的优势和发挥的作用。
Airship 发布于 6小时前 阅读 4

第17章 高级数据表示 17.3 抽象数据类型(ADT)

在电影的例子中,数据形成了一个项目列表,其中每一项包含一个片名(C的字符串)和等级(int值)。C中没有符合这个需求的基本类型,所以需要定义一个结构来表示每个项目,然后设计一此方法来把一系列结构链接成一个列表。 实际上 ,我们使用C的功能设计了一种符合需要的新的数据类型。但是我们的做法并不系统。 现在我们将用更为系统的方法来定义数据类型。 类型由什么组成?一个类型(type)指定两类信息:一个属性集和一个操作集。比如,int类型的属性是它表示一个整数值,因此它拥有整数的属性。它允许的算术操作是改变一个int数的符号、两个int数相加、相减、相乘、相除,以及一个int数对另一个取模。在声明一个变量为int时,您的意思是这些操作且只有这些操作可以对其起作用。 假设您想定义一个新的数据类型。首先,您需要提供存储数据的方式,可能是通过设计一个结构。第二,需要提供操作数据的方式。比如,考虑films2.c程序。它用一系列链接在一起的结构来保存信息,还提供了添加信息和显示信息的代码。但是这个程序并没有明确的表明我们在创建一个新的类型。应该怎么做呢? 计算机科学已经研究出一种定义新类型的成功的方法。这种方法使用3个步骤来完成从抽象到具体...
idreamo 发布于 5小时前 阅读 4

java 解压tar包

一、tar包解压代码: 说明:额外需要的jar: javatar-2.5.jar和jtar-1.1.jar,下载链接 http://pan.baidu.com/s/1dE2XPPR http://pan.baidu.com/s/1geJiLZP package tartofile; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import org.xeustechnologies.jtar.TarEntry; import org.xeustechnologies.jtar.TarInputStream; public class TarToFile {          public void uncompress(String sourceTarPath,String FilePath) {          InputStream inputstream = null;          OutputStream outputstream = null;          TarInputStream zis = null;          File tempFile = null;          try {              //读取压缩包的内容         File file = new File(sourceTarPath);          inputstream = new FileInputStream(file);          zis = new TarInputStream(inputstream);          //tar...
爱运动的小乌龟 发布于 3个月前 阅读 16

windows 下 udp socket

服务端  #include<stdio.h> #include<stdlib.h> #include<Winsock2.h> int main (int agrc,char*argv[]) { SOCKET socket1; WSADATA wsaData; int ErrorCode; if(WSAStartup(MAKEWORD(2,1),&wsaData))// windows socket dll; { printf("Winsock initiate failed!!\n"); WSACleanup(); return 0; } printf("Winsock start...\n"); struct sockaddr_in local; struct sockaddr_in client; int len = sizeof(client); local.sin_family = AF_INET; local.sin_port = htons(12345); //the port need listened local.sin_addr.s_addr = INADDR_ANY; //localhost socket1 = socket(AF_INET,SOCK_DGRAM,0); bind(socket1,(struct sockaddr*)&local,sizeof(local)); while (1) { char buffer[1024] = "/0"; printf("waiting message from the clients...\n"); if(recvfrom(socket1,buffer,sizeof(buffer),0,(struct sockaddr*)&client,&len) != SOCKET_ERROR) { printf("recevie message: [...
痞子汤 发布于 1个月前 阅读 17

Hive Lock 那些事儿

0、背景 最近两天数据仓库中一张核心表遭遇了锁的问题,导致数据插入失败,影响挺大,之前一直没注意到这个问题,借此总结一下这块的知识和遇到的坑。 hive 在 0.7 版本之后开始支持并发,线上的环境默认是用 zookeeper 做 hive 的锁管理,Hive开启并发功能的时候自动开启锁功能。 1、Hive 锁的类型与关系 hive 目前主要有两种锁,SHARED(共享锁 S)和 Exclusive(排他锁 X)。共享锁 S 和  排他锁 X 它们之间的兼容性矩阵关系如下: 总结起来就是: 1)查询操作使用共享锁,共享锁是可以多重、并发使用的 2)修改表操作使用独占锁,它会阻止其他的查询、修改操作 3)可以对分区使用锁。 以下情况会出发锁,以及它的类型和锁定范围如下: Hive Command Locks Acquired select .. T1 partition P1 S on T1, T1.P1 insert into T2(partition P2) select .. T1 partition P1 S on T2, T1, T1.P1 and X on T2.P2 insert into T2(partition P.Q) select .. T1 partition P1 S on T2, T2.P, T1, T1.P1 and X on T2.P.Q alter table T1 rename T2 X on T1 alter table T1 add cols X on T1 alter table T1 replace cols X on T1 alter table T1 change cols X on T1 alter table...
xrzs 发布于 2个月前 阅读 2362

Go开发问题集锦

记录自己开发go过程中遇到的问题
-启曙- 发布于 4小时前 阅读 4

Java三元运算符类型提升

(1)假如表达式1和表达式2具有相同的类型,那么整个条件运算符结果的类型就是这个类型。 (2)假如一个表达式的类型是T,T是byte或short或char,另一个表达式的类型是int类型的常量表达式,而且这个常量表达式的值是可以用类型T表示的(也就是说,常量表达式的值是在类型T的取值范围之内),那么整个条件运算符结果的类型就是T。 (3)除以上情况外,假如表达式1和表达式2的类型不同,那么将进行类型提升,整个条件运算符结果的类型就是提升后的类型 public static void main(String[] args) { int i=99; System.out.println("99999判断结果:"+(true?'a':99999)); System.out.println("-1判断结果 :"+(true?'a':-1)); System.out.println("0判断结果 :"+(true?'a':0)); System.out.println("65535判断结果:"+(true?'a':65535)); System.out.println("65536判断结果:"+(true?'a':65536)); System.out.println("i判断结果 :"+(true?'a':i)); } 99999判断结果:97 -1判断结果 :97 0判断结果 :a 65535判断结果:a 65536判断结果:97 i判断结果 :97...
ie四叶草 发布于 15小时前 阅读 4

【码云周刊第 33 期】6款程序员必备的开源中文处理工具

每周为您推送最有价值的开源技术内参!
开源中国码云 发布于 7天前 阅读 3449 评论 4 点赞 1

六大理由告诉你为什么 GNOME 仍然是最好的 Linux 桌面环境

一位资深 Linux 用户告诉你为什么 GNOME 仍然是最好的 Linux 桌面环境
编辑部的故事 发布于 3天前 阅读 3523 评论 50 点赞 2

自下向上的编写容易阅读的代码(上)

我在 [关于极简编程的思考](https://my.oschina.net/xiandafu/blog/894155) 中曾提到要编写可阅读的代码。因为代码是编写一次,阅读多次。 阅读者包括代码编写者,以及后来的维护人员。能让阅读代码更轻松,有利于增强项目或者产品的可维护性。 本博客分为上下俩部分,第一部分讲解在代码层次 编写可阅读的代码, 第二部分讲解方法,类,以及一些设计上的考虑 让代码更适合阅读。这些都是我在实际工作的一些体会以及代码审查过程中跟同事一起得出的一些经验。没有太高深的理论,适合所有人借鉴交流。 # 代码层次(上) ## if 语句保持主流程畅通 ``` if(xxx){ return false; } if(yyy){ return false; } if(zzz){ throw new Exception(); } //主逻辑代码在下面 ....... return true; ``` 使用if语句,对于不符合主逻辑的,要尽早返回,这样可以减轻代码阅读者的负担,下次再看,直接就可以从主逻辑开始。直接跳过不关心的代码块(这样代码块必然返回都是fasle) 如下是一个不好的例子 ``` if(xxx){ return false; } if(yyy){ return true; } //主逻辑代码在下面 ``` 在主逻辑前面分别返回了true 或者 false,阅读者会造成混乱,因为说明这个方法任何一处都有可能返回不同的...
闲大赋 发布于 4天前 阅读 2488 评论 35 点赞 22

基于 CSP 的设计思想和 OOP 设计思想的异同

Go语言推崇的CSP编程模型和设计思想,并没有引起很多Go开发者包括Go标准库作者的重视。标准库的很多设计保留了很浓的OOP的味道。本篇Blog想比较下从设计的角度看,CSP和OOP到底有什么区别。 下面,我们来看一个例子,如果我们有一个项目,需要做一个TCP连接中继器( 请原谅我的用词)。我们先按照OOP来设计下: 系统的结构:需要有一个客户端和一个服务器端。分两个进程分别跑在不同机器上。 系统对象关系拆分(这里有所简化,E-R图等省略):连接中继器类--系统的主类、config类--描述配置的类、connection类--每个连接一个conn类的实例、pipe类--提供一个管道,把上游的连接和下游的连接打通,把数据从A--pipe--B、encrypt工具类,提供各种加解密工具。 理清楚系统中各种对象(类)的作用关系,设计接口的细节。这里的接口,其实就是对象之间相互发送的同步阻塞的消息。 设计错误处理,日志等。 从性能方面审视整个设计,优化。 ===== 好,我们再按CSP的思路来设计下,是这么一个过程: 我们需要一个 main 协程来处理各种命令行参数的配置,收集处理配置文件; 如果是server,那么初始化server的主协程 -- tcpRemote;如果是client,则启动client的主协程 -- tcpLocal; 分...
LinkerLin 发布于 5天前 阅读 1790 评论 7 点赞 3

快速了解人工智能结晶之语音转换文字

科技解放生产力,人工智能的应用如今是大热,那么今天就来给各位介绍一下IBM在这方面的一个小的尝试,语音转换文字。咱们来看一看相较于传统的转换,结合Watson的IBM是如何做到让识别率飙升的。
IBM Bluemix

【软件周刊第 41 期】模板引擎 Velocity Engine 发布 2.0 版本;Bootstrap 4 首个 Beta 版发布

软件周刊(08.06 — 08.12):本周热门软件更新 — 七年磨一版:模板引擎 Velocity Engine 发布 2.0 版本;PgSQL 10 Beta 3 发布,和对所有受支持版本的安全修复;Node.js v8.3.0 发布,升级 V8 引擎至 6.0 版本;Sharding-JDBC 1.5.1 发布:支持 DDL
编辑部的故事 发布于 6天前 阅读 2320 评论 3

Spring源码-AOP(三)-Spring AOP的四种实现

There is a crack in everything, That's how the light gets in. 万物皆有裂缝,那是光照进来的地方。 -- 莱昂纳多 科恩
青离 发布于 5天前 阅读 943 评论 4

2017年前端开发工具趋势

本文来源于全球的5254份前端工具使用的调查报告,期望通过本文能够帮助大家更好的了解最新的前端开发工具趋势。 受访者组成 83%的受访者具有两年以上的前端技术经验,只有5%的受访者不到一年:   CSS 开发者中有63%为高级开发者和专家:   尽管CSS被认为只是属性-参数值对的简单集合,但是CSS却是很难掌握的。CSS3引入了许多的新特性,要想完全的掌握CSS变得越来越困难。   CSS预处理器 超过63%的开发者使用Sass,这也使得Sass成为无可争议的预处理首选者。8%的开发者使用PostCSS,通常情况下,PostCSS都是和AutoPrefixer等预处理器配合使用的。 仅有14%的开发者不使用任何预处理,他们更喜欢使用原始的CSS代码。尽管这种方式开发效率较慢,但是却是刚开始学习前端开发的最容易和最好的方式。如果86%的开发者使用预处理器,则平均一个网站需要进行7.2个CSS文件的请求。 仅有10%的受访者尝试过Less,19%的受访者尝试过Stylus,80%的受访者从未听闻Rework。   CSS的命名方式 46%的开发者在编码时会使用一种命名方式,对于CSS高级开发者和专家来说,这个比例上升到了57%。 最受欢迎的命名方式是BEM,占到总数的40%。接下来是CSS Modules(16%)、OOCSS(15%)和SMACS...
葡萄城控件技术团队 发布于 3天前 阅读 1081 评论 7 点赞 2

从设计上规避Go语言的 interface{} == nil 判断容易出错的简单办法

Go语言的interface{} 本质上是一个结构,含有一个type字段,一个pointer字段。 很多初学者会拿一个已经在某种情况下被赋予类型的interface{}和nil比较,然后惊讶的发现两者居然不等。 其实,从设计上,我们可以很容易规避这个问题,那就是利用Go的函数多返回值特性,在一般返回值后增加一个 ok bool类型的返回值,即可。 使用的时候,只判断最后一项返回值 ok 是不是等于true即可,完美避免了陷入x可能带有类型信息的麻烦。 对此有怀疑的同学可以比较下下面两种情况: 深究起来是因为任何指针赋值给interface{}的时候,都会把interface{}的类型信息字段给填上,于是就不等于nil了。再看下面这个例子: 变量t是一个空指针,赋值给i以后,i就不等于nil了。 为了代码的清晰可读,我建议采用本文开头推荐的函数返回值设计,绕开本文所描述的陷阱。          
LinkerLin 发布于 3天前 阅读 826 评论 10

有前途的程序员8个习惯,你拥有几个?

一个良好的习惯会影响人的一生!对于程序员来说,更是如此!良好的习惯不仅会让你的工作变得轻松,而且也能提升你的技能!因此特分享出优秀程序员具备的8个好习惯,希望各位技术人共同借鉴学习!   1谨慎说Yes   在没有搞清楚开发需求、任务工作量、团队期望值之前,有前途的程序员不会轻易答应。特别是对于新人来说,比较急于表现自己,对于同事或者老板的工作安排来者不拒,精神可嘉,方法不可取。承诺太多,会出现自己无法按时完成的情况,即使按时完成,也可能没有达到别人的期望值,长期以往别人对你的失望会越来越多。   2敢于说No   看起来和第一条雷同,其实细究起来不一样。第二条执行起来比第一条难得多。当遇到明显不合理的要求时,可以考虑拒绝,前提是准备好了全面充分的理由。不要经常说No,但是一旦说了,就要切中要害。有前途的程序员不会闷头干活,知道自己的定位和团队期望,分清楚哪些是不合理的要求,哪些是合理的要求,然后把明显不合理的要求和领导沟通下,取得支持。   3构建自己的知识体系   在信息爆炸的年代,碎片化的知识很多,系统学习的时间越来越少,如果没有自己的知识体系,很容易被淹没在知识的海洋中,而且难以记忆。100分程序员推...
小一天 发布于 3天前 阅读 692 评论 1

Spring Cloud实战小贴士:Zuul统一异常处理(三)【Dalston版】

> 本篇作为《Spring Cloud微服务实战》一书关于Spring Cloud Zuul网关在Dalston版本对异常处理的补充。没有看过本书的读书也不要紧,可以先阅读我之前的两篇博文:[《Spring Cloud实战小贴士:Zuul统一异常处理(一)》](http://blog.didispace.com/spring-cloud-zuul-exception-1/)和[《Spring Cloud实战小贴士:Zuul统一异常处理(二)》](http://blog.didispace.com/spring-cloud-zuul-exception-2/),这两篇文章都详细介绍和分析了Spring Cloud Zuul在过滤器设计中对异常处理的不足。同时,在这两篇文章中,也针对不足之处做了相应的解决方案。不过,这些方案都是基于Brixton版本所做的,在最新的Dalston版本中,Spring Cloud Zuul做了一些优化,所以我们不再需要做这些扩展就已经能够正确的处理异常信息了。那么,在Dalston版中,Spring Cloud Zuul中做了怎么样的修改以达到之前我们自己扩展的效果呢? ## 过滤器类型的变更 读者是否还记得我们之前分析了Spring Cloud Zuul自带的核心过滤器有哪些呢?我们先根据下图回忆一下: ![](http://blog.didispace.com/content/images/posts/spring-cloud-zuul-exception-3-1.png) 这次主要将`SendErrorFilter`过滤器的类型从`...
程序猿DD 发布于 4天前 阅读 644 评论 1

【源资讯 第39期】Go 和 Scala 成最赚钱的语言;外包公司400名高管接受买断工龄协议

【一周源资讯(2017.8.5-2017.8.11)】微软终于也决定取消对沃通和StartCom的信任,但 StartCom 的中间证书通过交叉签名逃避了浏览器厂商的限制;Google 却因工程师关于编程女性天生不如男性的备忘录引起公愤,那么找工作除了不要进外包公司,还要知道什么?
编辑部的故事 发布于 6天前 阅读 2308 评论 7 点赞 2

Elasticsearch Cluster 安装与配置

集群模式需要两个以上的节点,通常是一个 master 节点,多个 data 节点 首先在所有节点上安装 elasticsearch,然后配置各节点的配置文件,对于 5.5.1 不需要配置决定哪些节点属于 master 节点 或者 data 节点。
neo-chen 发布于 3天前 阅读 432

前端性能优化总结

从用户访问资源到资源完整的展现在用户面前的过程中,通过技术手段和优化策略,缩短每个步骤的处理时间从而提升整个资源的访问和呈现速度。网站的性能直接会影响到用户的数量,所有前端性能优化很重要。 前端性能优化分为如下几个方面: 一、代码部署: 1、代码的压缩与合并 2、图片、js、css等静态资源使用和主站不同域名地址存储,从而使得在传输资源时不会带上不必要的cookie信息。 3、使用内容分发网络 CDN 4、为文件设置Last-Modified、Expires和Etag 5、使用GZIP压缩传送 6、权衡DNS查找次数(使用不同域名会增加DNS查找) 7、避免不必要的重定向(加"/") 二、编码 html: 1、使用结构清晰,简单,语义化标签 2、避免空的src和href 3、不要在HTML中缩放图片 css: 1、精简css选择器 2、把CSS放到顶部 3、避免@import方式引入样式 4、css中使用base64图片数据取代图片文件,减少请求数,在线转base64网站:http://tool.css-js.com/base64.html 5、使用css动画来取代javascript动画 6、使用字体图标,图标库网站:http://fontawesome.io/icons/,在线制作网站:www.iconfont.cn 7、使用css sprite 8、使用svg图形 9、避免使用CSS表达式 a {star : expression(onfocus=this....
楠木楠 发布于 6天前 阅读 429

成为Java高手的25个学习要点

想要精通Java,成为Java高手,需要不断的学习和积累。本文给出了Java学习过程中需要注意的25个学习目标,希望可以给您带来帮助。 1. 你需要精通面向对象分析与设计(OOA/OOD)、涉及模式(GOF,J2EEDP)以及综合模式。你应该了解UML,尤其是class、object、interaction以及statediagrams。 2. 你需要学习Java语言的基础知识以及它的核心类库(collections、serialization、streams、networking、multithreading、reflection、event、handling、NIO、localization以及其他)。 3. 你应该了解JVM、classloaders、classreflect以及垃圾回收的基本工作机制等。你应该有能力反编译一个类文件并且明白一些基本的汇编指令。 4. 如果你将要写客户端程序,你需要学习Web的小应用程序(applet),必需掌握GUI设计的思想和方法,以及桌面程序的SWING、AWT、SWT。你还应该对UI部件的JavaBEAN组件模式有所了解。JavaBEANS也被应用在JSP中以把业务逻辑从表现层中分离出来。 5. 你需要学习Java数据库技术,并且会使用至少一种persistence/ORM构架,例如Hibernate、JDO、CocoBase、TopLink、InsideLiberator(国产JDO红工厂软件)或者iBatis。 6. 你还应该了解对象关系的阻抗失配的含义以及它是如何影...
Java程序员-10 发布于 4天前 阅读 349

假如时光倒流,我会这么学习Java

回头看看, 我进入Java 领域已经快15个年头了, 虽然学的也一般, 但是分享下我的心得,估计也能帮大家少走点弯路。 [入门] 我在2001年之前是C/C++阵营, 有C和面向对象的基础, 后来转到Java ,发现没有指针的Java真是好简单, 另外Java 的类库好用的让人哭啊。 后来我就看《Thinking in Java》 ,《 Java 核心技术 》, 感觉也不吃力。 如果我之前没学过别的语言,或者半路出家转到计算机行业, 我不会先看上面那两本, 相反我会选《Head First Java》, 这本书非常适合零基础的小白, 读起来轻松搞笑, 不信你看看第一页 但是光看书也挺无趣的,不妨和视频结合着看, 我觉得传智播客的Java基础视频很不错 (唉, 给传智打了个广告), 网上一搜就有,真搜不到就来我的QQ群里吧(群号码:523047986) 注意:视频的好处就是能看到敲代码的过程, 代码是活的, 这点很爽。 如果视频只是按PPT讲编程, 果断扔掉。 书也有书的好处,能写成书的, 肯定是作者经过系统化思考,梳理才能形成的东西, 所以系统性比较强。 书还有其他优点, 例如可以随便的翻, 找到重点反复的看。 所以混合着看经典书+优秀的视频 应该是最好的入门。 Java 入门, 我不会去上培训班,白白浪费钱 ,自...
Java程序员-10 发布于 4天前 阅读 332

给 Web 开发人员推荐的通用独立 UI 组件(二)

现代 Web 开发在将体验和功能做到极致的同时,对于美观的追求也越来越高。在推荐完图形库之后,再来推荐一些精品的独立 UI 组件。这些组件可组合在一起,形成美观而交互强大的 Web UI 。 给 Web 开发人员推荐的通用独立 UI 组件(一) 给 Web 开发人员推荐的开源图形库 —— 2D/3D 给 Web 开发人员推荐的开源图形库 —— 动画 给 Web 开发人员推荐的开源图形库 —— 数据可视化 上期已针对布局(Layout)、Icon(图标)、Progress(进度)、Button(按钮)、Picker(选择器)进行推荐,这期将针对 Overlay(弹出层/弹窗)、Input(输入)、Content(内容/目录)、Editor(编辑器)、Widget(组件/挂件)等继续做一些推荐整理。 一、弹出层/弹窗 1、vex 一个现代化的对话库,高度可配置,可随意定制。vex 很小(压缩后仅 5.6kb ),有一个清晰和简单的 API ,无外部依赖,完全平面风格,提供多种样式。支持同时打开多个对话框,可选单独或全部关闭它们。更适用于移动端。 Demo 2、Notie 一个简单干净的 javascript 通知、输入和选择套件,无外部依赖。 能轻松定制,可更改颜色以符合你的风格和品牌,字体大小会根据屏幕尺寸自动调整。 Demo 3、SweetAlert2 一个漂亮、响应式...
编辑部的故事 发布于 1周前 阅读 4180 评论 8 点赞 12

Java后端程序员1年工作经验总结

java后端1年经验和技术总结(1) 1.引言   毕业已经一年有余,这一年里特别感谢技术管理人员的器重,以及同事的帮忙,学到了不少东西。这一年里走过一些弯路,也碰到一些难题,也受到过做为一名开发却经常为系统维护和发布当救火队员的苦恼。遂决定梳理一下自己所学的东西,为大家分享一下。   经过一年意识到以前也有很多认识误区,比如:   偏爱收集,经常收集各种资料视频塞满一个个硬盘,然后心满意足的看着容量不行动。   不重基础,总觉得很多基础东西不需要再看了,其实不懂的地方很多,计算机程序方面任何一个结果都必有原因,不要只会用不知道原理,那是加工厂出来的。现在ide查看代码那么方便,ctrl+点击就进入了JDK查看实现细节。   好高骛远,在计算机基础不牢固的情况下,总想着要做架构,弄分布式,搞大数据之类。   不重视性能,只求能实现功能,sql查询是不是可以优化,是否有算法妙用,大对象是否要清除。   不重视扩展性,模块之间紧密耦合,常用方法不提取成工具类,调用关系混乱等问题。   ……   本文重点不在这些,故只列举了一小部分,下面进入正题。 2.语法基础  2.1 Java类初始化顺序   这是所有情况的类初始化顺序,如果实...
Java程序员-10 发布于 2天前 阅读 362 点赞 2

Java的21个核心技术点,你知道吗?

写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享给刚刚入门的Java程序员和打算入Java开发这个行当的准新手们,希望可以给大家一些经验,能让大家更好学习和使用Java。   这次介绍的主要内容是和J2SE相关的部分,另外,会在以后再介绍些J2EE相关的、和Java中各个框架相关的内容。   经过这么多年的Java开发,以及结合平时面试Java开发者的一些经验,我觉得对于J2SE方面主要就是要掌握以下的一些内容。 1. JVM相关(包括了各个版本的特性)   对于刚刚接触Java的人来说,JVM相关的知识不一定需要理解很深,对此里面的概念有一些简单的了解即可。不过对于一个有着3年以上Java经验的资深开发者来说,不会JVM几乎是不可接受的。   JVM作为java运行的基础,很难相信对于JVM一点都不了解的人可以把java语言吃得很透。我在面试有超过3年Java经验的开发者的时候, JVM几乎就是一个必问的问题了。当然JVM不是唯一决定技术能力好坏的面试问题,但是可以佐证java开发能力的高低。   在JVM这个大类中,我认为需要掌握的知识有: JVM内存模型和结构 GC原理,性能调优 调优:Thread Dump, 分析内存结构 ...
Java程序员-10 发布于 3天前 阅读 288

写给自己的Java程序员学习路线图

如下是我做开发这几年经常使用一些技术和工具,当然这些技术也都是需要加强的(有些是我一直使用的,不过不深入,有些内部的原理等等不是很清楚) 前端部分:        1)HTML:网页的核心语言,构成网页的基础        2)CSS:使网页更加丰富多彩灿烂的利器        3)JavaScript:使网页动起来的根本,加强了网页和用户之间的交互        4)HTML DOM:换一种更加形象化的角度来看待网页,让我们更加方便的控制网页        5)HTML BOM:与浏览器交互不可或缺的工具        6)JavaScript库,主要是:jQuery及其插件、YUI及其插件,使编写网页更加的方便快捷和健壮的强大工具        7)AJAX:异步提交,增强了用户使用网页的良好交互体验        8)JSON: 比 XML 更小、更快,更易解析的数据传输工具        9)FLEX:提供丰富多彩的动画效果        10)普元工作流:更加清晰明了的帮助用户处理业务流程上面的工作        11)JSP:Servlet的展示层,使网页逻辑与网页设计的显示分离        12)JSTL:加强和简化了JSP页面的开发        13)EL:使JSP页面写起来更加简单 后台部分: ...
Java程序员-10 发布于 3天前 阅读 288

Java项目经验——程序员成长的钥匙

Java就是用来做项目的!Java的主要应用领域就是企业级的项目开发!要想从事企业级的项目开发,你必须掌握如下要点: 1、掌握项目开发的基本步骤 2、具备极强的面向对象的分析与设计技巧 3、掌握用例驱动、以架构为核心的主流开发方法 没有人愿意自己一辈子就满足于掌握了一些代码实现的技巧,别人告诉你要实现什么,你就用代码堆砌来实现别人的要求!你必须学会从整个项目的角度去思考!你必须学会假如你是项目经理,你该如何思考!你必须学会假如你是架构师,你该如何思考!你必须掌握针对某个特定问题领域的分析方法! 关于基础知识:你可以看看这些名词或知识点,看是否能说出个一二三四来。 JavaSE ----基本语法、数据类型、操作符等:int、long、Integer、Long、if、else、for、while ----面向对象:class(类)、Object(对象)、instance(实例)、state(状态)、behavior(行为)、field、method、new、可见性(访问控制)、attribute、property、package、import、static variable、class variable、instance variable、heap、method area、stack、GC(垃圾回收)、override、overload、对象转型(casting)、多态、this、super ----异常处理:理解编译期错误和运行...
Java程序员-10 发布于 4天前 阅读 273 点赞 1

加速前后端并行开发,JApiDocs 可以帮到你

JApiDocs 作为一个衔接前后端开发的的工具,尽可能把重复劳动都自动化了,实现了代码即文档,持续集成接口测试的小目标,非常优雅的解决在前后端并行开发碰到的一些问题。
叶大侠 发布于 8分钟前 阅读 1 评论 2

ECLIPSE FAQ

切换主题 http://www.eclipsecolorthemes.org
南宫长万 发布于 12分钟前

73款阿里巴巴开源软件详解!

详细解读阿里巴巴开源技术,包括框架、组件、引擎、数据库/存储、平台/系统、解决方案、工具、中间件、Web Sever、设计等十大类73款!
阿里巴巴

调用腾讯优图开放平台进行人脸识别-Java调用API实现

调用腾讯优图开放平台进行人脸识别-Java调用API实现
小帅帅丶 发布于 20分钟前 阅读 7

FlashFXP 5.4.0注册码

注册名:flyfly 注册码: -------- FlashFXP Registration Data START -------- FLASHFXPuQBW1wi5uQAAAACvW7cJKQXzmx8Eu6ikXL4LbrYQHZVMq7mfHSjRKzM0w3zjeDjINl2n2CCLXvCAqjHmVEb9LHJqLPEEDv+CATn59totjYQM5loZ/jqYiTu8QkjpkqGe9ZV11N6YcbkP9GsDrHWwgIGEtYGT4vVW/7XfBw2+SZipoTbMu0yG1fLULHKj43y9BBDlTBmZLz8nefSWzKfqcVBBlmcqJux2CS9zxa7cL3Rg -------- FlashFXP Registration Data END --------
七律断舍离 发布于 23分钟前

easyinstall for Android文档

项目开源地址:https://github.com/Ocean0227/easyinstall-android 一、EasyInstall 需求收集: 需求背景 需求内容 优先级 备注 当前进度   增加可以下载历史包的功能,不仅局限于下载最新包,还可以提供最新包之前2个历史包的下载功能。 P0   已完成100% 提bug时时需要图片,手机截屏再传到电脑步骤繁琐、费时。 增加在APP上提bug的功能,直接将图片从手机传到bug提交页。   P1 通过在手机上调用外部浏览器访问提bug页面,可以实现在APP上直接提交bug 已完成100%   下载页下载时,删除按钮设置为不可点击,防止下载过程中删除安装包导致下载失败 P0   已完成100% 为了观看方便 将时间以及构建号从下载页外露,放置到首页,替换“jenkins最新包” P0   已完成100%   添加首页刷新的功能,底部添加一个刷新按钮 P0   已完成100%   增加标注打包人,打包时间。 P0 Jenkins中不记录打包人,因为现在不需要登录就可以打包;只能记录最终提交代码的RD。 已完成100%   支持日志导出分析。 P1 调起文件管理器显示日志列表,选择导出哪些日志文件,选好后弹出发送界面可选择百度hi发送到电脑。 已完成100% 二、EasyInstall 排期计划: 阶段 大体内容 产出 预估天数 预估日...
AwesomeQA 发布于 34分钟前

MyBatis入门(一) -- 简介

MyBatis 提供了一种“半自动化”的 ORM 实现,是一种 "SQL Mapping" 框架。MyBatis 并不完全是一种 ORM 框架,它的设计思想和 ORM 相似,只是它允许直接编写 SQL 语句,使得数据库访问更加灵活。 1、ORM ORM(Object/Relational Mapping),即对象关系映射,它完成面向对象的编程语言到关系数据库的映射。ORM 工具的唯一作用是:把持久化对象的保存、修改、删除等操作,转换成对数据库的操作。 ORM 基本映射关系: 数据表映射类 数据表的行映射对象(实例) 数据表的列(字段)映射对象的属性 2、MyBatis结构 2.1、功能架构 Mybatis的功能架构分为三层: API接口层:提供给外部使用的接口 API,开发人员通过这些本地 API 来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。 数据处理层:负责具体的 SQL 查找、SQL 解析、SQL 执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。 基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件,为上层的数据处理层提供最基础的支撑。  2.2、框架架构 加载配置:MyBatis 应用程序根据XML配置文...
兴趣使然的程序员 发布于 59分钟前 阅读 1

shiro 身份验证

    1、首先调用Subject.login(token)进行登录,其会自动委托给SecurityManager,调用之前必须通过SecurityUtils. setSecurityManager()设置; 2、SecurityManager负责真正的身份验证逻辑;它会委托给Authenticator进行身份验证; 3、Authenticator才是真正的身份验证者,Shiro API中核心的身份认证入口点,此处可以自定义插入自己的实现; 4、Authenticator可能会委托给相应的AuthenticationStrategy进行多Realm身份验证,默认ModularRealmAuthenticator会调用AuthenticationStrategy进行多Realm身份验证; 5、Authenticator会把相应的token传入Realm,从Realm获取身份验证信息,如果没有返回/抛出异常表示身份验证失败了。此处可以配置多个Realm,将按照相应的顺序及策略进行访问。 2、SecurityManager负责真正的身份验证逻辑;它会委托给Authenticator进行身份验证; a.Subject实现类 DelegatingSubject   public void login(AuthenticationToken token) throws AuthenticationException { clearRunAsIdentitiesInternal(); Subject subject = securityManager.login(this, token); PrincipalCollection principals; String hos...
会飞的鲨鱼 发布于 59分钟前 阅读 1

SpringMVC+Mybatis框架搭建

### 1. 准备环境 --- ##### 1. 所需jar包 * 数据库驱动包 * mybatis jars * mybatis和spring的整合包 * log4j包 * 数据库连接池包 dbcp * spring包 * jstl * junit * aspectjweaver.jar * commons-pool2-2.4.2 ##### 2. 工程结构 ![输入图片说明](https://static.oschina.net/uploads/img/201708/18114445_X2eS.png "在这里输入图片标题") ### 2. dao层 --- ##### 1. sqlMapConfig.xml * mybatis本身的配置文件 ``` ``` ##### 2. applicationContext-dao.xml * 配置:SqlSessionFactory、数据源、mapper扫描器 ``` ``` ##### 3. 逆向工程(generatorSqlmapCustom)生成po类以及mapper(单标增删改查) * 将生成的文件拷贝到工程中。 ##### 4. 手动定义商品查询mapper * 针对综合查询mapper,一般情况会有关联查询,所以建议自定义mapper。 * ItemsMapperCustom.xml ``` name like '%${itemsCustom.name}%' select * from items ``` * ItemsmapperCustom.java ``` package com.swxc.ssm.mapper; import com.swxc.ssm.po.ItemsCustom; import com.swxc.ssm.po.ItemsQueryVo; import java.util.List; /** * Description * Author shadowolf * Date 2017/7/26. 3:47 * Version ...
影狼 发布于 1小时前 阅读 2

同步工具类 -- CountDownLatch

一、概述 CountDownLatch 是一个同步工具类,它允许一个或者多个线程一直等待,直到其他的线程执行完后,再执行。例如,应用程序的主线程希望在负责启动框架服务的线程已经启动所有的框架服务之后再执行。 构造函数 CountDownLatch(int count) 初始一个整数值,此值是线程将要等待的操作数,这个值只能被设置一次,而且 CountDownLatch 没有提供任何机制去重新设置这个计数值。当某个线程为了想要执行这些操作而等待时,它要使用 await()方法。此方法让线程进入休眠直到操作完成。 当某个操作结束,它使用countDown() 方法来减少CountDownLatch类的内部计数器。当计数器到达0时,这个类会唤醒全部使用await() 方法休眠的线程们。 二、使用场景 开始执行前等待n个线程完成各自任务:例如应用程序启动类要确保在处理用户请求前,所有N个外部系统已经启动和运行了。 三、实现 /*** * video- conference 系统 */ public class Videoconference implements Runnable{ private CountDownLatch controller; public Videoconference(int num){ controller = new CountDownLatch(num); } //到达 public void arrive(String name){ System.out.println(name + " ha...
pan_1308 发布于 1小时前 阅读 1

节点操作,节点属性的操作及DOM event事件

##1. 节点操作 createElement(标签名) 创建一个指定名称的元素 someone.appendChild(new_node) 追加一个子节点(作为最后的子节点) someone.insertBefore(new_node,指定节点) 把增加的节点放到指定节点的前边 removeChild() 获取要删除的元素,通过父元素调用删除 someone.replaceChild(new_node,指定节点) 把指定节点替换成新节点 ##2. 节点属性操作 ###2.1 获取文本节点的值 innerText 获取一个标签的文本内容 innerHTML 获取一个标签的全部标签内容 例子: hello 结果如下: ![](https://static.oschina.net/uploads/img/201708/18114342_xY1e.png "在这里输入图片标题") ###2.2 attribute操作 elementNode.setAttribute(name,value) 为一个元素设置属性及属性值 elementNode.getAttribute(属性名) 获得一个元素的属性值 elementNode.removeAttribute("属性名") 删除一个元素的指定属性 ###2.3 value获取当前选中的value值 input select(selectedIndex) textarea ###2.4 innerHTML给节点添加html代码 tag.innerHTML=" 添加的内容" ###2.5 关于class的操作 elementNode.className 获取一个元素节点的类名 elementNode.classList.add 为一个元素节点添加类属性 elementNode.cl...
任平生7887 发布于 1小时前 阅读 1

让你的 Kotlin 代码远离 !!

对于 Null 的检查是 Kotlin 的特点之一。强制你在编码过程中考虑变量是否可为 null,因此可以避免很多在 Java 中隐藏的 NullPointerException。 但是,当你用插件直接将 Java 代码转换为 Kotlin 时,你会发现有很多 !! 在里面。但其实 !! 意味着「有一个潜在未处理的 KotlinNullPointerException 在这里」。 这里就介绍 6 个避免 !! 的方法: 1. 用 val 而不是 var 在 Kotlin 中 val 代表只读,var 代表可变。建议尽可能多的使用 val。val 是线程安全的,并且不需要担心 null 的问题。只需要注意 val 在某些情况下也是可变的就行了。 可以看看这里: Mutable vals in Kotlin 2. 使用 lateinit 有些情况我们不能使用 val,比如,在 Android 中某些属性需要在 onCreate() 方法中初始化。对于这种情况,Kotlin 提供了 lateinit 关键字。 private lateinit var mAdapter: RecyclerAdapter<Transaction> override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) mAdapter = RecyclerAdapter(R.layout.item_transaction) } fun updateTransactions() { mAdapter.notifyDataSetChanged() } 要注意,访问未初始化的 lateinit 属...
微笑的江豚 发布于 1小时前 阅读 2

docker

1、安装docker 系统 CentOS7 官网安装地址:https://docs.docker.com/engine/installation/linux/docker-ce/centos/#install-using-the-repository   2、配置国内阿里云地址下载镜像 使用docker pull,命令下载镜像太慢了,默认是从国外的,本文记录下如何配置国内阿里云竞相加速方式。 过修改daemon配置文件/etc/docker/daemon.json来使用加速器 # cd /etc/docker # touch daemon.json # chmod 744 * # vi daemon.json # systemctl daemon-reload # systemctl restart docker daemon.json内容如下:   {   "registry-mirrors": ["https://xxxxx.mirror.aliyuncs.com"] }   3、下载镜像 官网地址:https://hub.docker.com/   4、常用命令 下载docker镜像     docker pull tomcat 删除镜像     docker rmi <IMAGE ID> <IMAGE ID> <IMAGE ID> 查询所有镜像     docker images 启动镜像创建容器     docker run --name  自定义容器名字 -d  -p 外网端口:容器端口 镜像名     docker run --name hyperledger-fabric-0.6 -d -p 7050:7050 -p 7051:7051 -p 7053:7053 hyperledger/fabric-membersrvc:x86_64-0.6.1-preview 删除容器     docker rm -f 容...
卢瑶 发布于 1小时前 阅读 2

给渗透测试人员的优秀GitHub项目学习资源汇总

今天给大家带来的是一套优秀的GitHub项目学习资源(Awesome Hacking),无论你是小白还是渗透测试人员,无论你是白帽子亦或是黑帽黑客,你都可以从中学到很多新的东西。 五星推荐项目 GitHub项目 简介 Android Security 提供了一套与Android安全相关的资源 AppSec 提供了大量关于应用程序安全方面的学习资源 Bug Bounty 汇总了目前热门的漏洞奖励计划,并且还有很多Bug Hunter大神提供的Write-Up Cheatsheets 提供了渗透测试和安全检测可用的Cheatsheet CTF 提供了一套CTF框架、代码库、资源以及软件列表 Cyber Skills 提供了一套黑客学习环境,你可以在这里合法地练习自己的黑客技术 DevSecOps 一套实用的安全开发工具,得到了多名安全研究人员的测试和贡献 Exploit Development 关于漏洞利用开发的学习资源 Fuzzing 提供了一套学习模糊测试的资源,你还可以在这里学习漏洞利用开发的初始阶段知识,例如针对漏洞的成因进行分析等等 Hacking 提供了优秀的黑客教程、工具以及资源 Honeypots 蜜罐相关的资源 Incident Response 提供了大量关于事件响应的工具 Industrial Control System Security 一套关于工业控制系统(ICS)安全的资源 InfoSec 优秀的信息安全课程以及培训资...
刀剑如梦 发布于 1小时前 阅读 1

彻底理解ThreadLocal

知其然 synchronized这类线程同步的机制可以解决多线程并发问题,在这种解决方案下,多个线程访问到的,都是同一份变量的内容。为了防止在多线程访问的过程中,可能会出现的并发错误。不得不对多个线程的访问进行同步,这样也就意味着,多个线程必须先后对变量的值进行访问或者修改,这是一种以延长访问时间来换取线程安全性的策略。 而ThreadLocal类为每一个线程都维护了自己独有的变量拷贝。每个线程都拥有了自己独立的一个变量,竞争条件被彻底消除了,那就没有任何必要对这些线程进行同步,它们也能最大限度的由CPU调度,并发执行。并且由于每个线程在访问该变量时,读取和修改的,都是自己独有的那一份变量拷贝,变量被彻底封闭在每个访问的线程中,并发错误出现的可能也完全消除了。对比前一种方案,这是一种以空间来换取线程安全性的策略。 来看一个运用ThreadLocal来实现数据库连接Connection对象线程隔离的例子。 import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectionManager { private static ThreadLocal<Connection> connectionHolder = new ThreadLocal<Connection>() { @Override pro...
勇恒 发布于 1小时前 阅读 1

PowerDesigner 将表的字段name属性设置到comment注释

'****************************************************************************** '* File: name2comment.vbs '* Title: Name to Comment Conversion '* Model: Physical Data Model '* Objects: Table, Column, View '* Author: steveguoshao '* Created: 2013-11-29 '* Mod By: '* Modified: '* Version: 1.0 '* Memo: Modify from name2code.vbs '****************************************************************************** Option Explicit ValidationMode = True InteractiveMode = im_Batch Dim mdl ' the current model ' get the current active model Set mdl = ActiveModel If (mdl Is Nothing) Then MsgBox "There is no current Model " ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then MsgBox "The current model is not an Physical Data model. " Else ProcessFolder mdl End If ' This routine copy name into comment for each table, each column and each view ' of the current folder Private sub ProcessFolder(folder) Dim Tab 'running table for each Tab ...
梅花扣肉 发布于 1小时前 阅读 1

相对传统桌面设计器,在线报表设计器价值何在?

葡萄城报表自 v11.2 版本,隆重推出基于 HTML5 技术的在线报表设计器,从此报表设计工作跨进“在线”时代,究竟在线设计器带来对报表用户带来哪些便利和帮助呢? 本文通过对比两种设计器主要特性及使用场景,旨在说明在线报表设计器对于报表用户的价值所在。 与传统桌面设计器主要区别: 免安装 跨平台 自动更新 服务端自动保存 所见即所得   对报表用户的价值: 系统集成商 最终用户 报表开发人员   与传统桌面设计器主要区别 免安装 传统的桌面设计器在使用前,都要考虑安装环境的问题,比如操作系统、.NET 版本、Linux 中的文件权限、MAC中的系统版本等,这就是传统设计器往往会针对每种环境推出对应的设计器版本的原因。 造成设计器用户在在真正开始报表设计工作之前,往往在安装环节就需要耗费大量的时间和精力。 而在线设计器仅需用户通过浏览器即可使用,无需任何的安装或部署步骤,也无需考虑系统中是否存在依赖的插件,打开电脑,即可使用,让用户把精力和时间投入真正有价值的报表工作! 跨平台 面对不同的设备,如桌面电脑、平板电脑及手持设备,传统设计器需要面对不同设备终端发布不同的版本,但在线设计器而因天生的多平台支持,无需过多考虑平台特性,利用...
葡萄城控件技术团队 发布于 1小时前 阅读 1

十分钟帮你搭建专业的内容付费平台(APP/网站)

ThinkSNS全新版本ThinkSNS+目前已经发布了V0.8.4版本,其中最大的亮点就是付费、打赏、广告功能以及强大的后台付费管理功能,能够快速定制属于你自己的独立知识付费平台,快速上线运营。
ThinkSNS账号 发布于 1小时前 阅读 1

Cordova 微信支付cordova-plugin-wechat 问题总结

使用cordova-plugin-wechat 插件时遇到一些问题,记录一下。
lixinnan 发布于 1小时前 阅读 2

C/C++ 数据范围int

速查表 数据类型 取值范围(十进制) 所占字节数(Byte) char -128~+127 1 short -32767~+32768 2 unsigned short 0~65536 2 int -2147483648~+2147483647 4 unsigned int 0~4294967295 4 long -2147483648~+2147483647 4 long long -9223372036854775808 ~ +9223372036854775807 8 double 1.7*10^308 8  
天蚕宝衣 发布于 1小时前 阅读 1

Jenkins start windows jar

cd target/ @echo off taskkill /im javaw.exe /F start /B javaw -cp "xxx.jar;libs/*" com.xxx.Main web=true exit 0 @echo on
喔喔兒 发布于 2小时前 阅读 1

nginx之proxy_pass指令完全拆解

nginx中有两个模块存在proxy_pass指令。proxy_pass后的后端服务器的uri到底是个啥?
永福 发布于 19小时前 阅读 1167 评论 5 点赞 1 打赏 1

AntV - 我认为这是一个不严谨的错误

AntV 钟表是一个Bug吧,我咋不是很肯定,因为不同角度不同结果吧
andotorg 发布于 2天前 阅读 1407 评论 16 点赞 4

PHP实现定时任务(非linux-shell方式,与操作系统无关)

用PHP实现定时任务(非linux-shell方式,与操作系统平无关)。适用于定时精确时间不低于1秒。web服务重启、或者php重启。该定时任务不会自动重启。可以用来处理大部分定时任务的结局方案,商城定时自动收货,关闭评论,订单回滚;定时发送邮件,数据备份等
大弹簧 发布于 3天前 阅读 2281 评论 29 点赞 2

自下向上的编写容易阅读的代码(上)

我在 [关于极简编程的思考](https://my.oschina.net/xiandafu/blog/894155) 中曾提到要编写可阅读的代码。因为代码是编写一次,阅读多次。 阅读者包括代码编写者,以及后来的维护人员。能让阅读代码更轻松,有利于增强项目或者产品的可维护性。 本博客分为上下俩部分,第一部分讲解在代码层次 编写可阅读的代码, 第二部分讲解方法,类,以及一些设计上的考虑 让代码更适合阅读。这些都是我在实际工作的一些体会以及代码审查过程中跟同事一起得出的一些经验。没有太高深的理论,适合所有人借鉴交流。 # 代码层次(上) ## if 语句保持主流程畅通 ``` if(xxx){ return false; } if(yyy){ return false; } if(zzz){ throw new Exception(); } //主逻辑代码在下面 ....... return true; ``` 使用if语句,对于不符合主逻辑的,要尽早返回,这样可以减轻代码阅读者的负担,下次再看,直接就可以从主逻辑开始。直接跳过不关心的代码块(这样代码块必然返回都是fasle) 如下是一个不好的例子 ``` if(xxx){ return false; } if(yyy){ return true; } //主逻辑代码在下面 ``` 在主逻辑前面分别返回了true 或者 false,阅读者会造成混乱,因为说明这个方法任何一处都有可能返回不同的...
闲大赋 发布于 4天前 阅读 2488 评论 35 点赞 22

73款阿里巴巴开源软件详解!

详细解读阿里巴巴开源技术,包括框架、组件、引擎、数据库/存储、平台/系统、解决方案、工具、中间件、Web Sever、设计等十大类73款!
阿里巴巴

基于 CSP 的设计思想和 OOP 设计思想的异同

Go语言推崇的CSP编程模型和设计思想,并没有引起很多Go开发者包括Go标准库作者的重视。标准库的很多设计保留了很浓的OOP的味道。本篇Blog想比较下从设计的角度看,CSP和OOP到底有什么区别。 下面,我们来看一个例子,如果我们有一个项目,需要做一个TCP连接中继器( 请原谅我的用词)。我们先按照OOP来设计下: 系统的结构:需要有一个客户端和一个服务器端。分两个进程分别跑在不同机器上。 系统对象关系拆分(这里有所简化,E-R图等省略):连接中继器类--系统的主类、config类--描述配置的类、connection类--每个连接一个conn类的实例、pipe类--提供一个管道,把上游的连接和下游的连接打通,把数据从A--pipe--B、encrypt工具类,提供各种加解密工具。 理清楚系统中各种对象(类)的作用关系,设计接口的细节。这里的接口,其实就是对象之间相互发送的同步阻塞的消息。 设计错误处理,日志等。 从性能方面审视整个设计,优化。 ===== 好,我们再按CSP的思路来设计下,是这么一个过程: 我们需要一个 main 协程来处理各种命令行参数的配置,收集处理配置文件; 如果是server,那么初始化server的主协程 -- tcpRemote;如果是client,则启动client的主协程 -- tcpLocal; 分...
LinkerLin 发布于 5天前 阅读 1790 评论 7 点赞 3

当 Thrift 遇到 JDK Epoll Bug

将会擦出怎样的火花呢?
輕風 发布于 6天前 阅读 1628 评论 22 点赞 5

PHP实现依赖注入

控制反转(Inversion of Control,英文缩写为IoC)是框架的重要特征。控制反转(IOC)是一种思想,依赖注入(DI)是实施这种思想的方法。
o0无忧亦无怖 发布于 1周前 阅读 1928 评论 36 点赞 8

微服务开发的入门级框架Spring Boot详解(二)

1、Spring Boot的属性配置文件         1.1 Spring Boot的属性配置文件的第一种形式             使用properties配置文件,如下两个属性的含义是更改访问端口为8081,并且加了一个contextPath,可以理解为在地址栏多加层地址。 server.port=8081 server.context-path=/joyou                 右键点击DemoApplication.java ——》Run As ——》Spring Boot App启动程序             效果如下,首先从日志上看,端口已经变为8081             浏览器访问效果如下。                 补充:             属性文件是最常见的管理配置属性的方式。Spring Boot 提供的 SpringApplication 类会搜索并加载 application.properties 文件来获取配置属性值。SpringApplication 类会在下面位置搜索该文件: 1.当前目录的/config子目录 2.当前目录 3.classpath 中的/config包 4.classpath 上面的顺序也表示了该位置上包含的属性文件的优先级。优先级按照从高到低的顺序排列。 可以通过spring.config.name这个key的配置属性来指定不同的属性文件名称。也可以通过spring.config.location来添加额外...
二十岁以后 发布于 1周前 阅读 4209 评论 24 点赞 4

Java使用Hutool实现AES、DES加密解密

在Java世界中,AES、DES加密解密需要使用Cipher对象构建加密解密系统,Hutool中对这一对象做再包装,简化了加密解密过程。
路小磊 发布于 2周前 阅读 2382 评论 21 点赞 9

SQL注入详解

日前,国内最大的程序员社区CSDN网站的用户数据库被黑客公开发布,600万用户的登录名及密码被公开泄露,随后又有多家网站的用户密码被流传于网络,连日来引发众多网民对自己账号、密码等互联网信息被盗取的普遍担忧。 网络安全成为了现在互联网的焦点,这也恰恰触动了每一位用户的神经,由于设计的漏洞导致了不可收拾的恶果,验证了一句话“出来混的,迟早是要还的”,所以我想通过专题博文介绍一些常用的攻击技术和防范策略。 SQL Injection也许很多人都知道或者使用过,如果没有了解或完全没有听过也没有关系,因为接下来我们将介绍SQL Injection。
暴雪首席执行官 发布于 2周前 阅读 3632 评论 20 点赞 4

实弹军演-基于Ceph对象存储的实战兵法

保障国家权益的第一道防线是军队,而保障数据安全的最强壁垒则是存储。老司机多年经验总结,分享几点基于Ceph的对象存储实战兵法.
秦牧羊 发布于 2周前 阅读 946 评论 4 点赞 3

浅谈Hybrid

Android web开发入门篇
Android小闹 发布于 2周前 阅读 1820 评论 4 点赞 6

图解LZ77压缩算法

数据压缩是一个减小数据存储空间的过程,目前被应用在软件工程的各个地方,了解其一些原理,方便我们更好的甄选压缩方案。
wier 发布于 2周前 阅读 3303 评论 7 点赞 15

使用Spring自定义注解实现任务路由

在Spring mvc的开发中,我们可以通过RequestMapping来配,当前方法用于处理哪一个URL的请求.同样我们现在有一个需求,有一个任务调度器,可以按照不同的任务类型路由到不同的任务执行器。其本质就是通过外部参数进行一次路由和Spring mvc做的事情类似。简单看了Spring mvc的实现原理之后,决定使用自定义注解的方式来实现以上功能。 ### 自定义TaskHandler注解 ```java @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Component public @interface TaskHandler { String taskType() default ""; } ``` 以上定义了任务处理器的注解,其中@Component表示在spring 启动过程中,会扫描到并且注入到容器中。taskType表示类型。 ### 任务处理器定义 ```java public abstract class AbstractTaskHandler { /** * 任务执行器 * * @param task 任务 * @return 执行结果 */ public abstract BaseResult execute(Task task); } ``` 以上定义了一个任务执行的处理器,其他所有的具体的任务执行器继承实现这个方法。其中Task表示任务的定义,包括任务Id,执行任务需要的参数等。 ### 任务处理器实现 接下来,我们可以实现一个具体的任务处理器。 ```jav...
wangyan9110 发布于 3周前 阅读 3310 评论 8 点赞 8

数据库中间件 Sharding-JDBC 源码分析 —— SQL 解析(二)之SQL解析

![](https://www.yunai.me/images/common/wechat_mp_2017_07_31.jpg) > 🙂🙂🙂关注**微信公众号:[【芋艿的后端小屋】](http://www.yunai.me/images/common/wechat_mp.jpeg)**有福利: > 1. RocketMQ / MyCAT / Sharding-JDBC **所有**源码分析文章列表 > 2. RocketMQ / MyCAT / Sharding-JDBC **中文注释源码 GitHub 地址** > 3. 您对于源码的疑问每条留言**都**将得到**认真**回复。**甚至不知道如何读源码也可以请教噢**。 > 4. **新的**源码解析文章**实时**收到通知。**每周更新一篇左右**。 > 5. **认真的**源码交流微信群。 ------- - [1. 概述](#) - [2. SQLParsingEngine](#) - [3. SQLParser SQL解析器](#) - [3.1 AbstractParser](#) - [3.2 SQLParser](#) - [3.2.1 #parseExpression() 和 SQLExpression](#) - [3.2.2 #parseAlias()](#) - [3.2.3 #parseSingleTable()](#) - [3.2.4 #skipJoin()](#) - [3.2.5 #parseWhere()](#) - [4. StatementParser SQL语句解析器](#) - [4.1 StatementParser](#) - [4.2 Statement](#) - [5. 彩蛋](#) ------- # 1. 概述 上篇文章[《词法解析》](http://www.yunai.me/Sharding-JDBC/sql-parse-1/)分享了**词法解析器...
芋艿V 发布于 3周前 阅读 2432 评论 19 点赞 7

RSA公私钥快速生成和RSA证书快速创建"利器"

RSA公私钥生成,RSA pkcs12证书创建, rsa密钥对
钟声已经敲响 发布于 3周前 阅读 1375 评论 5 点赞 3

SpringBoot入门——局部与全局的异常处理

SpringBoot入门——局部与全局的异常处理 1、构建测试代码 (1)、新建MAVEN项目 打开IDE—新建Maven项目—构建一个简单Maven项目 (2)、编写pom.xml引入包 编写pom配置引入jar包 注:引入完毕后可能项目会报红叉,更新maven即可 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.springboot</groupId> <artifactId>springboot</artifactId> <version>0.0.1-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.1.RELEASE</version> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> </properties> <dependencies> <!-- 引入web相关包 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</...
DLQ丁 发布于 3周前 阅读 4301 评论 22 点赞 15

Android 桌面加载图标过程分析

### 桌面应用图标流程 #### 前言 本人工作上碰到这么一个需求,开发一款滤镜引擎,将桌面上所有的图标进行统一的滤镜化,这就需要了解一下整个桌面去取图标的过程,了解了整个过程,找到真正拿图标的地方,在真正取图标的地方将图片进行替换,或者滤镜化,之前分析情况,现在整理下,与大家分享。**本文所用的代码,是基于Android 5.1** #### 桌面组件介绍 ![一级页面](https://static.oschina.net/uploads/img/201707/25114347_zV1r.png "一级页面") - 一级菜单 - **WorkSpace**:他是一个ViewGroup,要想在桌面上显示东西,就得往这个ViewGroup里添加自己的View - **BubbleTextView**:他是一个TextView,上方是图标,下方是名称,在桌面上的图标都是由这个类表示 - **FolderIcon**:他也是一个ViewGroup,用来表示桌面上的文件夹图标,里面添加了缩略处理过的bitmap,他的背景图片就是文件夹的形状 - **HotSeat**: 他是个FrameLayout,是桌面下方的固定快捷区,包含了几个常用的图标,中间的AllApp按钮是固定位置,也是一个TextView ![抽屉桌面](https://static.oschina.net/uploads/img/201707/25114317_XbLg.png "抽屉桌面") - 抽屉页面 组件 - **PagedView**:他是一...
蔡小鹏 发布于 4周前 阅读 1549 评论 8 点赞 4

MySQL 死锁与日志二三事

最近线上 MySQL 接连发生了几起数据异常,都是在凌晨爆发,由于业务场景属于典型的数据仓库型应用,白天压力较小无法复现。甚至有些异常还比较诡异,最后 root cause 分析颇费周折。那实际业务当中咱们如何能快速的定位线上 MySQL 问题,修复异常呢?下文我会根据两个实际 case,分享下相关的经验与方法。 1、Case1:部分数据更新失败 某天渠道同学反馈某报表极个别渠道数据为 0,大部分渠道数据正常。这个数据是由一个统计程序每天凌晨例行更新的,按理来说,要么全部正常,要么全部失败,那会是什么原因导致极个别数据异常呢? 首先我们能想到的自然是根据统计任务日志来看了,但是看了统计程序打印的日志没有发现诸如 SQL update 失败的异常描述,那当时的数据库究竟发生了什么呢?在查看 MySQL-server 日志之前,习惯性的看了下数据库状态: SHOW ENGINE INNODB STATUS\G 恰好看到了凌晨这个 update 发生了死锁: ------------------------ LATEST DETECTED DEADLOCK ------------------------ 2017-07-17 04:09:01 0x7f6de03c8700 *** (1) TRANSACTION: TRANSACTION 215208479, ACTIVE 0 sec fetching rows mysql tables in use 3, locked 3 LOCK WAIT 5 lock stru...
xrzs 发布于 4周前 阅读 7567 评论 9 点赞 16 打赏 1

从字节码和JVM的角度解析Java核心类String的不可变特性

从字节码和JVM的角度解析Java核心类String的不可变特性
kailuncen 发布于 4周前 阅读 3056 评论 36 点赞 22
顶部