摔坏的DVD,部件还有可利用矿产资源破坏价值鉴定吗

引言:当我们使用nginx做集群,shiro-redis解决session共享的问题的时候,我们是否会遇到其他系统也要经过我们系统登陆才可以使用,这里我们将介绍nginx和shiro-redis(这里的配置就不多说了,直接可以查看上篇文章:解决使用redis进行基于shiro的session集群共享)来实现单点登陆问题,这里我们就以一台服务器来举例 upstream localhost{
server 127.0.0.1:8083;
server 127.0.0.1:8082;
#charset koi8-r;
#access_log
logs/host.access.
location / {
proxy_pass
client_max_body_size
#缓存相应的文件(静态文件)
location ~ .*\.(jsp|gif|jpg|png|htm|html|css|js|flv|ico|swf)(.*) {
proxy_pass http://
proxy_set_header Host $
proxy_cache cache_
目的:使用面向对象的API解析,构建,测试和处理文件名和路径,而不是底层的字符串操作。 Path表示 pathlib包含用于管理使用POSIX标准或Microsoft Windows语法格式化的文件系统路径的类。它包括所谓的“pure”类,它们对字符串进行操作,但不与实际的文件系统进行交互;“concrete”类将API扩展为包含反映或修改本地文件系统数据的操作。 pure类PurePosixPath和PureWindowsPath可以在任何操作系统上实例化和使用,因为它们只用于名称。要实例化正确的类来处理真实的文件系统,请使用Path来获取PosixPath或WindowsPath,具体取决于平台。 构建Path 要实例化路径,字符串作为参数。Path对象的字符串表示是该字符串。要创建引用相对于现有路径的值的新路径,请使用/运算符来扩展路径。运算符的参数可以是字符串或其他路径对象。 import pathlib
usr = pathlib.PurePosixPath('/usr')
print(usr)
usr_local = usr / 'local'
print(usr_local)
usr_share = usr / pathlib.PurePosixPath('share')
print(usr_share)
root = usr / '..'
print(root)
etc = root / '/etc/'
print(etc) 执行结果 /usr
/usr/local
/usr/share
/etc 正如示例输出中的root值所示,操作符按照...
—— 原文发布于本人的微信公众号“大数据与人工智能Lab”(BigdataAILab),欢迎关注。
什么是迁移学习? 迁移学习(Transfer Learning)是一种机器学习方法,是把一个领域(即源领域)的知识,迁移到另外一个领域(即目标领域),使得目标领域能够取得更好的学习效果。 通常,源领域数据量充足,而目标领域数据量较小,这种场景就很适合做迁移学习,例如我们我们要对一个任务进行分类,但是此任务中数据不充足(目标域),然而却又大量的相关的训练数据(源域),但是此训练数据与所需进行的分类任务中的测试数据特征分布不同(例如语音情感识别中,一种语言的语音数据充足,然而所需进行分类任务的情感数据却极度缺乏),在这种情况下如果可以采用合适的迁移学习方法则可以大大提高样本不充足任务的分类识别结果。
为什么现在需要迁移学习? 前百度首席科学家、斯坦福的教授吴恩达(Andrew Ng)在曾经说过:「迁移学习将会是继监督学习之后的下一个机器学习商业成功的驱动力」。
在本次2016年的 NIPS 会议上,吴恩达 给出了一个未来 AI方向的技术发展图,还是很客观的:
毋庸置疑,监督学习是目前成熟度最高的,可以说已经成功商用,而下一个商用的技术 将会是...
JVM垃圾回收器
微信小程序之多文件下载的简单封装
1. 在yum安装完keepalived之后,配置keepalived的配置文件 - 注意点 - 在master和backup的keepalived的配置文件中,网卡名字为当前机器的网卡名称 - VIP的选择为 可用的一个ip,通常在做高可用,局域网环境比较多, 所以这个vip是和两台机器同网段的一个内网ip。 如果用在外网环境下,无所谓在不在一个网段,只要客户端能访问到。 2. 停掉nginx服务,启动keepalived服务,会看到keepalived拉动nginx服务启动 - 若是无法启动失败,基本都是配置文件和脚本的问题,或者是 防火墙和selinux未关闭的原因。 ``` systemctl stop firewalld 关闭firewalld iptables -nvL setenforce 0 临时关闭selinux getenforce命令查看是否为Permissive ``` 3. keepalived的脚本需要设置成755权限,否则有可能会导致实验失败 4. 查看vip的时候,只能使用 ip add 命令 查看,而 ifconfig命令 是无法查看的 5. yum安装的nginx,默认的索引页在 /usr/share/nginx/html/index.html...
& 很多时候,我们在构建系统的时候都会自己创建用户管理体系,这对于开发人员来说并不是什么难事,但是当我们需要维护多个不同系统并且相同用户跨系统使用的情况下,如果每个系统维护自己的用户信息,那么此时用户信息的同步就会变的比较麻烦,对于用户自身来说也会非常困扰,很容易出现不同系统密码不一致啊等情况出现。如果此时我们引入LDAP来集中存储用户的基本信息并提供统一的读写接口和校验机制,那么这样的问题就比较容易解决了。下面就来说说当我们使用Spring Boot开发的时候,如何来访问LDAP服务端。 ## LDAP简介 LDAP(轻量级目录访问协议,Lightweight Directory Access Protocol)是实现提供被称为目录服务的信息服务。目录服务是一种特殊的数据库系统,其专门针对读取,浏览和搜索操作进行了特定的优化。目录一般用来包含描述性的,基于属性的信息并支持精细复杂的过滤能力。目录一般不支持通用数据库针对大量更新操作操作需要的复杂的事务管理或回卷策略。而目录服务的更新则一般都非常简单。这种目录可以存储包括个人信息、web链结、jpeg图像等各种信息。为了访问存储在目录中的信息,就需要使用运行在TCP/IP 之上的访问协议—LDAP。 LDAP目录中的信息是是按...
现在,3D 模型已经用于各种不同的领域。在医疗行业使用它们制作器官的精确模型;电影行业将它们用于活动的人物、物体以及现实电影;视频游戏产业将它们作为计算机与视频游戏中的资源;在科学领域将它们作为化合物的精确模型;建筑业将它们用来展示提议的建筑物或者风景表现;工程界将它们用于设计新设备、交通工具、结构以及其它应用领域;在最近几十年,地球科学领域开始构建三维地质模型,而且 3D 模型经常做成动画,例如,在故事片电影以及计算机与视频游戏中大量地应用三维模型。它们可以在三维建模工具中使用或者单独使用。为了容易形成动画,通常在模型中加入一些额外的数据,例如,一些人类或者动物的三维模型中有完整的骨骼系统,
比写不出代码更恶心的,是环境配置出问题,写好的代码运行不了。widows下electron中直接安装sqlite3,调用的时候会提示找不到sqlite模块。看似简单,却没有一点提示,国内网上资料残缺不全,大多互相复制。卡了接近一星期,百度谷歌翻到烂。今天终于编译成功,遂记录此过程,望能给他人一些解决思路。 安装步骤 1.安装vs2015! vs2015中包含编译用的c++环境 ed2k://|file|cn_visual_studio_community_2015_x86_dvd_6847368.iso||EB7F6605EDE173AC6574|/ 此为Visual Studio Community 2015中文版。把c++相关的安装上。安装完毕后,打开vs2015--》文件--》新建--》项目 选择c++空白模板,如果环境未安装完全,则会提示安装剩余部分,全装上!! 2.python 2.7 python官网上下载。一定要是2.7的,3.X的不支持。 安装时记得勾选设置环境变量。 3.安装cnpm 墙裂推荐cnpm,避免各种ETIMEOUT,有时候不是设置下换源就能解决的 4.安装sqlite3 前戏结束,进入正题。首先,确认当前electron版本 "scripts": {
"ev": "electron --version"
} 运行electron --version命令,为了省事我把其添加进package.json中了,npm run ev使用。 我的版本是1.7.1...
备注:本想在自己电脑上安装个oracle练习用,但是害怕安装过程中出现问题,而oracle的卸载又是出了名的麻烦,所以用虚拟机搭建了一个跟本机一样的系统,同时记录下安装的每一步。
环境: windows10系统 最好先安装jre或jdk(此软件用来打开oracle自带的可视化操作界面,不装也没关系;可以安装plsql,或者直接用命令行操作)
1、oracle下载 * 下载地址:http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html * 下载文件(版本11g、企业版、两份文件都要下)
2、oracle安装 a.将下载的两个压缩包解压到同一文件夹下,点击解压文件中的setup.exe开始安装
b.安装共分10个步骤。第一步,取消安全更新的勾选,点击“下一步”
c.选择“仅安装数据库软件”,点击“下一步”
d.选择“单实例数据库安装”,点击“下一步”
e.默认选择,点击“下一步”
f.选择“企业版”,点击“下一步”
g.此处选择oracle的安装目录,(就是软件在电脑中的位置),点击“下一步”
h.这里是你之前7个步骤选择的总结,可以在这里检查之前的选择是否错误。确认无误后,点击“下一步”
i.下面就是漫长的等待安装过程了。
j.安装完成...
Spring在事务管理时,对事务的处理做了极致的抽象,即PlatformTransactionManager。对事务的操作,简单地来说,只有三步操作:获取事务,提交事务,回滚事务。 ``` public interface PlatformTransactionManager { // 获取事务 TransactionStatus getTransaction(@Nullable TransactionDefinition definition) throws TransactionE // 提交事务 void commit(TransactionStatus status) throws TransactionE // 回滚事务 void rollback(TransactionStatus status) throws TransactionE } ``` 当然Spring不会仅仅只提供一个接口,同时会有一个抽象模版类,实现了事务管理的具体骨架。AbstractPlatformTransactionManager类可以说是Spring事务管理的控制台,决定事务如何创建,提交和回滚。 在[Spring事务管理(二)-TransactionProxyFactoryBean原理](https://my.oschina.net/u/2377110/blog/1611531)中,分析TransactionInterceptor增强时,在invoke方法中最重要的三个操作: 1. 创建事务 createTransactionIfNecessary 2. 异常后事务处理 completeTransactionAfterThrowing 3. 方法执行成功后事务提交 commitTransactionAfterReturning 在具体操作...
源码解读设计模式系列文章将陆陆续续进行更新中 ~
AbstractQueuedSynchronizer是一个基于first-in-first-out (FIFO)队列实现阻塞锁和同步器功能的框架。此类的设计目标是成为依靠单个原子 int 值来表示状态。子类必须定义更改此状态的受保护方法(如tryReleaseShared),并定义哪种状态对于此对象意味着被获取或被释放
windows10 git安装 下载安装包一直下一步 或者参考 :http://blog.csdn.net/shuyou612/article/details/ 配置 git的用户名身份设置 用户名和邮箱地址的作用: 用户名和邮箱地址是本地git客户端的一个变量,不随git库而改变。 每次commit都会用用户名和邮箱纪录。 github的contributions统计就是按邮箱来统计的 设置用户名和邮箱 $ git config --global user.name "username"
$ git config --global user.email "email" 这里我的设置是
$ git config --global user.name "颖辉小居"
$ git config --global user.email "" 查看自己的用户信息: $ git config user.name
$ git config user.email 本地新建项目 File create new project 下一步: 下一步: 下一步,然后 finish
开源中国(码云)新建项目
IDEA中打开终端 解决终端Terminal 中 'touch' 不是内部或外部命令的问题 错误提示: 解决办法: 上图为修改好的: 修改为图中的git的安装目录下的 Git\bin\bash.exe 创建README.md 文件 $ touch README.md 创建.ignore文件 $ touch .gitignore 编辑那些文件和目录被git忽略,不被git管理
#package file
Java生成SM2证书基于BouncyCastle(cer)
## Lightning 中使用SVG ### 1. SVG的定义 1. SVG 指可伸缩矢量图形 (Scalable Vector Graphics) 2. SVG 用来定义用于网络的基于矢量的图形 3. SVG 使用 XML 格式定义图形 4. SVG 图像在放大或改变尺寸的情况下其图形质量不会有所损失 5. SVG 是万维网联盟的标准 6. SVG 与诸如 DOM和 XSL 之类的W3C标准是一个整体 ### 2. 与其他图像格式相比,使用 SVG 的优势在于: 1. SVG 可被非常多的工具读取和修改(比如记事本) 2. SVG 与 JPEG 和 GIF 图像比起来,尺寸更小,且可压缩性更强。 3. SVG 是可伸缩的 4. SVG 图像可在任何的分辨率下被高质量地打印 5. SVG 可在图像质量不下降的情况下被放大 6. SVG 图像中的文本是可选的,同时也是可搜索的(很适合制作地图) 7. SVG 可以与 Java 技术一起运行 8. SVG 是开放的标准 9. SVG 文件是纯粹的 XML &以上引用[百度百科](https://baike.baidu.com/item/SVG/63178?fr=aladdin) ### 3. Lightning中使用SVG 1. 这里不讨论SVG本身的知识,[W3C上有文章描述](http://www.w3school.com.cn/svg/index.asp),另外有两篇博客的介绍[SVG图标颜色文字般继承与填充](http://www.zhangxinxu.com/wordpress/2014/07/svg-sprites-fill-color-curr...
### v-clock 用法总结 #### 先看以下这段代码 ``` {{ item.name }} ``` ##### 那么,当我们使用vue从后台读取的数据时或者是刷新页面的时候因为响应问题可能会闪现一下{{item.name}} 这个vue.js模板变量,这样给用户带来了不好的体验,这时候v-cloak 就要派上用场了 ##### v-cloak: 防止页面加载时出现 vuejs 的变量名。 ##### 方法:在 html 中的加载点加上 v-cloak ``` {{ item.name }} ``` ##### 然后在css中添加 ``` [v-cloak] { display: } ``` ##### 解释:包含 v-cloak 属性的 html 标签在页面初始化时会被隐藏。 ##### 在 vuejs instance ready 之后,v-cloak 属性会被自动去除,也就是对应的标签会变为可见。 ##### 那么问题又来了:在实际项目中,我们一般都是通过 [@import](https://my.oschina.net/u/3201731) 来加载 css 文件 ``` @import "style.css" ``` ##### 在页面 DOM 完全载入后才会进行加载,如果我们将 [v-cloak] 写在 [@import](https://my.oschina.net/u/3201731) 加载的 css 文件中,就会导致页面仍旧闪烁。 ##### 解决办法:将 [v-cloak] 写在 link 引入的 css 中,或者写一个内联 css 样式。 #### ok!...
Token 是在服务端产生的。如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回 Token 给前端。前端可以在每次请求的时候带上 Token 证明自己的合法地位
############################# System ############################# #唯一标识在集群中的ID,要求是正数。 broker.id=0 #服务端口,默认9092 port=9092 #监听地址,不设为所有地址 host.name=debugo01 #处理网络请求的最大线程数 num.network.threads=2 #处理磁盘I/O的线程数 num.io.threads=8 #一些后台线程数 background.threads = 4 #等待IO线程处理的请求队列最大数 queued.max.requests = 500 #socket的发送缓冲区(SO_SNDBUF) socket.send.buffer.bytes=1048576 #socket的接收缓冲区 (SO_RCVBUF) socket.receive.buffer.bytes=1048576 #socket请求的最大字节数。为了防止内存溢出,message.max.bytes必然要小于 socket.request.max.bytes =
############################# Topic ############################# #每个topic的分区个数,更多的partition会产生更多的segment file num.partitions=2 #是否允许自动创建topic ,若是false,就需要通过命令创建topic auto.create.topics.enable =true #一个topic ,默认分区的replication个数 ,不能大于集群中broker的个数。 default.replication.factor =1 #消息体的最大大小,单位是字节 message.max.by...
笔记和代码都放在码云:https://gitee.com/tangijia/anguarjs_learning_notes
SpringMVC的工作原理图: SpringMVC流程 1、
用户发送请求至前端控制器DispatcherServlet。 2、
DispatcherServlet收到请求调用HandlerMapping处理器映射器。 3、
处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。 4、
DispatcherServlet调用HandlerAdapter处理器适配器。 5、
HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。 6、
Controller执行完成返回ModelAndView。 7、
HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。 8、
DispatcherServlet将ModelAndView传给ViewReslover视图解析器。 9、
ViewReslover解析后返回具体View。 10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。 11、 DispatcherServlet响应用户。 组件说明: 以下组件通常使用框架提供实现: DispatcherServlet:作为前端控制器,整个流程控制的中心,控制其它组件执行,统一调度,降低组件之间的耦合性,提高每个组件的扩展性。 HandlerMapping:通过扩展处理器映射器实现不同的映射方式,例如:配置文件方式...
在项目运行过程中,是不是各种异常,如果我们每个都需要用 try{}catch(Exception e){}
的话,那么就会写特别特别多的重复代码,就会显得非常low,所以Spring为我们提供了全局异常处理机制,我们只需要往外抛异常就可以了: 1: 自定义异常类(没有不影响,只演示一下) package com.gy.demo.common.
* Description: 参数异常类
* @author geYang
public class ParamException extends RuntimeException {
public ParamException(ResultEnum resultEnum){
super(resultEnum.getMessage());
this.code = resultEnum.getCode();
public int getCode () {
public void setCode (int code) {
this.code =
2: 自定义返回状态枚举 package com.gy.demo.common.
* Description: 返回结果状态码
* @author geYang
public enum ResultEnum {
PARAM_NULL(401,"参数为空"),
PARAM_ERROR(402,"参数异常"),
SUCCESS(200,"SUCCESS"),
RETURN_NULL(201,"返回值为空"),
private String messa...
由于众所周知的原因,至今仍有大量生产环境的代码跑在 Python 2.7 之上,在 Python 2 的世界里,并没有一个官方的类型系统实现。那么生产环境的类型系统是如何实现的呢,为什么一定要在在线服务上实现类型系统?下文将针对这两个问题进行深入讨论。
设置 tab为4个空格 hard-tabs是硬件tab,就是按一个tab键,soft-tabs是软件tab,通过按4个space键实现。
设置编码为gbk(如果使用utf8有中文乱码的话)
设置exe文件不显示,将*.exe加入即可,在setting 中 tree-view 设置不显示指定类型文件
安装 插件 activate-power-mode
atom-beautify
去sorceforge上找uncrustify项目下载并解压,之后将解压好的uncrustify插件复制到.atom/packages/目录下面。
将uncrustify的目录添加到环境变量path路径下。
修改atom编辑器中的atom-beautify插件中对应的开发语言中的config path配置文件路径,若为空则是默认的代码格式化格式,个人觉得太丑了。这时候应该去C:\Users\Administrator.atom\packages\atom-beautify\examples\nested-jsbeautifyrc目录下找到uncrustify.cfg文件,将其添加到对应开发语言下的config path路径中。博主是将uncrustify.cfg文件拷贝到uncrustify插件目录下了。
file-icons gcc-make-run
配置g++路径,需要安装mingw
gpp-compiler
运行c++ Windows 使用 linter-cnew 代替linter-gcc,但是会出现一些bug,于是没有使用。。。...
### 问题背景 &我们的项目要拿到客户机上做私有化安装,服务器操作系统客户指定只能使用redhat7.2版本,且客户机为了保密需要不能访问外网,而操蛋的redhat系统自带的curl支持的是nss协议的https,而非openssl协议的https,执行curl访问https站点的时候会出现无法load key的报错。 网上查了一下解决方案,Stack Overflow上有答案说是生成的key的问题,需要将key转换成RSA的加密方式,我试了一下,curl命令不会报错,但我们的服务端代码实现不能正常的初始化相关加解密容器。 还有部分答案推荐重装curl,由于对redhat系统并不熟悉,且向来听说linux上离线安装的时候需要处理的依赖比较复杂,我的内心其实是拒绝的,但没有更好的解决办法,只能硬着头皮上了。。。 ### 安装zlib 1. 访问zlib官网,下载最新的zlib包,这里由于我的rhel是较新的7.2版本,因此直接使用了zlib的最新版,如果是老版本,可能需要考虑linux内核的兼容性问题; 2. 解压缩zlib安装包,cd到解压缩的zlib包目录下,运行以下命令: ```shell ./configure make test make install #这里安装的是静态库 make clean ./configure --shared make test make install #这里先clean,然后安装的是共享库 cp zutil.h...
一、出错情况
Navicat远程连接Oracle错误:ORA-28547:connection to server failed, probable Oracle Net admin error 二、解决方案 1、查找oralce安装目录中app\Administrator\product\11.2.0\dbhome_1\BIN中的oci.dll 2、复制oci.dll到Navicat的安装目录,并备份原本的oci.dll 3、打开Navicat中的工具-&选项-&OCI (直接指到复制的oci.dll中,若直接指到Oracle的oci.dll,可略过第二步骤) 参考地址:http://blog.csdn.net/dmaker1993/article/details/
**本文为原创文章,转载请标明[出处](http://metaphors.name/coding//Ionic16.html)** 个人做的开源 Demo 登录注册模块采用的是 [Wilddog 野狗通讯云](https://www.wilddog.com)的身份认证服务,不得不说各方面和 Google 收购的 Firebase 很像,十分简单易用。其中 `User` 有个 `photoURL` 字段是用来存放用户头像 URL 的,所以寻思着找了个免费的第三方图床([SM.MS](https://sm.ms))来存放用户头像。 用到的 Cordova 插件是 [Camera](https://ionicframework.com/docs/native/camera/) 和 [File Transfer](https://ionicframework.com/docs/native/file-transfer/),分别用来拍照、相册选择和上传图片,Cordova 插件的安装、导入、使用我就不赘述了,文档里都有,so 直接上关键代码。 ``` getPictureAndUpload(sourceType: number) { const cameraOptions: CameraOptions = { quality: 80, destinationType: this.camera.DestinationType.FILE_URI, sourceType: sourceType, allowEdit: true, encodingType: this.camera.EncodingType.JPEG, targetWidth: 200, targetHeight: 200, mediaType: this.camera.MediaType.PICTURE, correctOrientation: true, sa...
CentOS6上安裝完Python3,用pip3之后一直报错,提示没有ssl模块 例如这样: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available. Collecting xxx Could not fetch URL https://pypi.python.org/simple/xxxx/: There was a problem confirming the ssl certificate: Can’t connect to HTTPS URL because the SSL module is not available. - skipping Could not find a version that satisfies the requirement xxx (from versions: ) No matching distribution found for xxx 网上查说是缺少OpenSSL-dev,但是我本机是已经安装了OpenSSL的 于是我进入Python2,导入ssl模块没有问题,但是进入Python3,导入ssl模块报错了 本人查阅资料发现,在./configure过程中,如果没有加上–with-ssl参数时,默认安装的软件涉及到ssl的功能不可用,刚好pip3过程需要ssl模块,而由于没有指定,所以该功能不可用。 解决办法是重新对python3.6进行编译安装,用一下过程来实现编译安装: cd Python-3.6.2
./configure --with-ssl
sudo make install 这样就允许安装的python3使用ssl功能模块,进入python3中,执行import ssl发现...
One or more listeners failed to start. Full details will be found in the appropriate container log file
公布OPMS、CSOA、CSCRM、CSPM、EPMS、EPMS SASS六款应用系统的平台的帐号与密码,用户可以进行体验和试用,有好的意见可进行反馈。 OPMS: 网址:http://opms.demo.milu365.cn 用户名:libai 密码:opmsopms123 CSOA: 网址:http://csoa.demo.milu365.cn 用户名:libai 密码:123456 CSPM: 网址:http://cspm.demo.milu365.cn 用户名:libai 密码:123456 CSCRM: 网址:http://cscrm.demo.milu365.cn 用户名:libai 密码:123456 EPMS企业版与EPMS 云平台: 网址:http://epms.demo.milu365.cn 用户名:libai 密码:123456
================================== EPMS云平台: 网址:http://epms.milu365.cn
zookeeper作为分布式协调服务 是怎么在RPC中起作用,成为注册中心的呢
最近web页面的开发用到了一个渐进式的javascript框架vue.js,他可以通过使用简单的标签来代替复杂的js拼接代码。 只需要引入vue.js文件,并在需要传参的地方加一些特定标签就可以是在js中获取模板了。 在做列表下拉的时候使用了dropload移动下拉框架,通过vue整合把代码拼接的地方vue标签替代了。 具体的代码如下: 首先 我们需要引入必须的支持文件 ``` ``` 其次把需要模板输出的div 加上vue的标签: ![输入图片说明](https://static.oschina.net/uploads/img/45255_OHO0.png "输出模板") 然后在js中声明vue ``` var listVue = new Vue({ el : "#sale_list", data : { list : [], page : 1 } }); ``` 之后dropload下拉框架中输出位置listVue.list.push(data[i]);即可; 具体的可以参考下面的两个文档链接 dropload:http://www.jq22.com/jquery-info6960 vue:https://cn.vuejs.org/...
为了使动画无缝,利用了2个router-view的层叠 App.Vue &template&
&div id="app"&
&transition name="fold"&
&router-view class="Router"/&
&/transition&
&transition name="fold"&
&router-view class="Router Router2" name="newrouter"/&
&/transition&
&/template&
export default {
name: 'App',
&style type="text/css"&
width: 100%;
height:100%;
z-index: 100;
.fold-enter-active {
animation-name: inR
animation-duration:.3s;
.fold-leave-active {
animation-name: outR
animation-delay: 0.3s;
animation-duration:.3s;
@keyframes inRight {
-webkit-transform: translate3d(100%, 0, 0);
transform: translate3d(100%, 0, 0);
-webkit-transform:
transform:
@keyframes outRight {
-webkit-transf...
![组件化](https://static.oschina.net/uploads/img/91913_KDTe.jpg "组件化") ## 背景 大概在一个月之前,公司有一个需求需要出一个功能和业务逻辑和当前应用相同的新版本,所有的UI重新设置过而不止是配色字体图标等信息的简单修改。因为当时排期相对的不太紧,所有决定把整个项目做一个重构,为了实现更好的重构,发了点时间看了大概30多篇关于组件化的博客和文章,也会把这些文章的链接贴在底部,然后动手开工了,今天有时间把这次重构过程中的一些想法总结下。 本文主要涉及到以下几个主题: - 组件化遵循的原则 - 组件化分层模型 - 组件化集成方法 ## 遵循原则 - 高层依赖底层,下层不能对上层有依赖的关系 这点是基本的设计原则,可以通过依赖倒置来设计。 - 同层级的模块不依赖或者尽量少依赖 这点同时也是基本的设计原则,可以通过控制反转来设计,典型的就是使用观察者模式来实现同一个层级模块的解耦。 - 最小知识原则和自完备性 一个独立的模块尽量减少对其他低层模块的依赖,比如一个模块只是依赖低层模块的某个类的方法,不妨把这个方法拷贝到此模块中,如此一来这个模块就具有了更好的自完备性。 ## 分层结构 ![分层模块图2](https://static.osc...
本篇主要是分布式工程中,有些跨数据库操作的使用样例,一般可用在分布式事务上。 MQ的作用,当然有扛洪峰,消息堆集,异步处理的作用。 第一步:添加POM的依赖,版本当然由你自己选择 &dependency&
&groupId&com.alibaba.rocketmq&/groupId&
&artifactId&rocketmq-client&/artifactId&
&version&3.2.6&/version&
&/dependency& 第二步,消息生产者。 package com.xxx.consumer.
import com.alibaba.rocketmq.client.QueryR
import com.alibaba.rocketmq.client.exception.MQClientE
import com.alibaba.rocketmq.client.producer.*;
import com.alibaba.rocketmq.common.message.M
import com.alibaba.rocketmq.common.message.MessageE
import org.springframework.stereotype.C
import java.util.M
@Component
public class MQProducer {
private final String GROUP_NAME = "xxxx";
private final String NAMESRV_ADDR = "xxx.xxx.xxx.xxx:9876";
private TransactionMQP
public MQProducer() {
this.producer = new TransactionMQProducer(GROUP_NAME);
使用IPFS建立软件仓库源可以将版本永久保存,防止软件包灭失和版本错误。而且可以在任何地方建立存储,通过使用P2P机制传输,大大加快安装过程。不过,因为发现了IPFS目前还存在的一些重要问题,目前的实验不算成功,后续还需努力。
为了方便在局域网中安装CDH集群,搭建一个CDH的yum本地源,方便局域网内各节点安装。 在Cloudera的官网中给出了CDH本地源的搭建过程(官网说明文档链接),下面是本人亲自搭建的详细过程,首先要找一台能联网的主机来制作本地源,可自动下载必要的安装包(如果全部都无法联网,则手动下载相关的rpm安装包,只是麻烦了一些,过程是一样的),制作好本地源后该主机再断网给本地局域网作为yum源使用即可。 1、关闭防火墙、关闭selinux service iptables stop
chkconfig iptables off [root@test001 selinux]# cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
enforcing - SELinux security policy is enforced.
permissive - SELinux prints warnings instead of enforcing.
disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
targeted - Targeted processes are protected,
mls - Multi Level Security protection.
SELINUXTYPE=targeted 2、下载repo文件 根据操作系统下载repo文件(本人使用...
# Install Instructions - [Dependencies](#dependencies) - [Linux](#linux) - [Simple install](#simple-install) - [Arch](#arch-easy) - [Gentoo](#gentoo-easy) - [Slackware](#slackware-easy) - [FreeBSD](#freebsd-easy) - [Install git](#install-git) - [Arch](#arch-git) - [Debian](#debian-git) - [Fedora](#fedora-git) - [openSUSE](#opensuse-git) - [Ubuntu](#ubuntu-git) - [Clone qTox](#clone-qtox) - [GCC, Qt, FFmpeg, OpenAL Soft and qrencode](#other-deps) - [Arch](#arch-other-deps) - [Debian](#debian-other-deps) - [Fedora](#fedora-other-deps) - [openSUSE](#opensuse-other-deps) - [Slackware](#slackware-other-deps) - [Ubuntu &=15.04](#ubuntu-other-deps) - [Ubuntu &=16.04](#ubuntu-other-1604-deps) - [toxcore dependencies](#toxcore-dependencies) - [Arch](#arch-toxcore) - [Debian](#debian-toxcore) - [Fedora](#fedora-toxcore) - [openSUSE](#opensuse-toxcore) - [Slackware](#slackware-toxcore) - [Ubuntu &=15.04](#ubuntu-toxcore) - [sqlcipher](#sqlcipher) - [Compile toxcore](#compile-toxcore) - [Compil...
由于众所周知的原因,至今仍有大量生产环境的代码跑在 Python 2.7 之上,在 Python 2 的世界里,并没有一个官方的类型系统实现。那么生产环境的类型系统是如何实现的呢,为什么一定要在在线服务上实现类型系统?下文将针对这两个问题进行深入讨论。
在帮助小白解决了很多开源使用的问题后,我总结了小白的不科学的提问方式,以遭受9种伤害夸张的手法一一道来
我是程序猿,我的征途是星辰大海!
# 环境要求 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窗口,查看具体错误内容,直到无错误为...
微信自15年年底上线FOOM上报,每天FOOM次数与登录用户数比例接近3%,同期crash率1%不到。而16年年初某东老大反馈微信频繁闪退,接着16年8月不少外部用户反馈微信启动不久后闪退,分析大量日志还是不能找到FOOM原因。微信急需一个有效的内存监控工具来发现问题。
小光是一名私家侦探,是小光侦探事务所的负责人。这天,他正在事务所中喝茶,突然接到警官M的电话,说接到线上总共三台机器,有一台机器报警,Java堆内存占用超过95%,无法正常得到服务器的响应。小光安排警官M保留好现场,急匆匆的赶往了现场...
### Logstash ##### 使用yum安装 ###### 编辑 repo ``` vim /etc/yum.repos.d/elasticsearch.repo # 内容如下 [elasticsearch-6.x] name=Elasticsearch repository for 6.x packages baseurl=https://artifacts.elastic.co/packages/6.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md ``` ###### 安装 ``` sudo yum install logstash ``` #### 配置 Logstash ``` # 参考 https://www.elastic.co/guide/en/logstash/current/configuration-file-structure.html # input项配置源数据,此处为监听 "/log"目录下满足"insert.*.log"匹配的所有日志文件 # filter项过滤input输入的数据, "insert.*.log"中每条日志形式如:" | type | cid | src | eventId | reason", 所以使用" | "拆分每条日志 # output项是输出数据,此处为输出至ElasticSearch # 新建配置文件 insert.conf vim conf.d/insert.conf # 内容如下 input { file { path =& "/log/insert.*.log" } } filter { mutate{ split=&["message"," | "] add_field =& { "date" =& "%{[message][0]}" } add_field =& { "type" =& "%{[message][1]...
### 拷贝文件或文件夹 ``` /** * 拷贝文件 * * @param source 源文件 * @param target 目标文件 */ public void copyFile(String source, String target) { // 源文件 File sourceFile = new File(source); if (!sourceFile.exists()) { } // 目标文件 File targetFile = new File(target); // 文件拷贝 if (sourceFile.isFile()) { copyFromChanel(sourceFile, targetFile); } // 文件夹拷贝 if (!targetFile.exists()) { targetFile.mkdirs(); } for (File file: sourceFile.listFiles()) { copyFile(file.getAbsolutePath(), target + File.separator + file.getName()); } } ``` ### 利用文件管道拷贝文件 ``` /** * 利用文件管道拷贝文件 * * @param source 源文件 * @param target 目标文件 */ public void copyFromChanel(File source, File target) { // 文件流 FileInputStream fis = FileOutputStream fos = // 文件管道 FileChannel fci = FileChannel fco = try { // 文件流 fis = new FileInputStream(source); fos = new FileOutputStream(target); // 文件管道 fci = fis.getChannel(); fco = fos.getChannel(); ...
### 一.使用脚本切割 ##### 编辑脚本 ``` tianshl@tianshl nginx $ vim nginx_log_division.sh ``` ##### 脚本内容 ``` #! /bin/sh # 昨天日期 yesterday=`date -v -1d +%Y%m%d` # 日志目录 log_path="/usr/local/var/log/nginx/" # SDK日志路径 sdk_path=${log_path}sdk # 以天为单位切分日志 mv -f ${sdk_path}.log ${sdk_path}_${yesterday}.log # 重新生成日志文件 pid_path="/usr/local/var/run/nginx.pid" sudo kill -USR1 `cat ${pid_path}` ``` ##### 定时任务 ###### 切换到root身份 ``` tianshl@tianshl nginx $ sudo su root ``` ###### 编辑 crontab ``` sh-3.2# crontab -e ``` ###### crontab 添加一行 ``` 0 0 * * * sh /usr/local/var/log/nginx/nginx_log_division.sh ``` ###### 查看是否添加成功 ``` sh-3.2# crontab -l ``` ### 二.不使用脚本切割 ##### server 段增加以下代码 ``` if ($time_iso8601 ~ "(\d{4})-(\d{2})-(\d{2})") { set $time $1$2$3; } ``` ##### 日志文件路径中增加日期参数 ``` access_log /var/log/nginx/api-$time. ``` ##### 举个栗子 ``` events { worker_connections 1024; } http { server { # 监听88端口 listen 88;...
### 需求 ``` 对MySQL数据库中某个表的某个字段执行k-means算法,将处理后的数据写入新表中。 ``` ### 源码及驱动 ``` http://download.csdn.net/download/xiaobuding007/ ``` ### 源码 ```java import java.sql.*; import java.util.*; /** * @author tianshl * @version
上午11:13 */ public class Kmeans { // 源数据 private List origins = new ArrayList&&(); // 分组数据 private Map& // 初始质心列表 private L // 数据源 private String tableN private String colN /** * 构造方法 * * @param tableName 源数据表名称 * @param colName 源数据列名称 * @param cores 质心列表 */ private Kmeans(String tableName, String colName,List cores){ this.cores = this.tableName = tableN this.colName = colN } /** * 重新计算质心 * * @return 新的质心列表 */ private List newCores(){ List newCores = new ArrayList&&(); for(List v: grouped.values()){ newCores.add(v.stream().reduce(0, (sum, num) -& sum + num) / (v.size() + 0.0)); } Collections.sort(newCores); return newC } /...
## 更新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/15_added_entity_Overview.xml 将 changeSet中新增的三个column提取至新的changeSet中, 如下: 注意: changeSet的id不能与之前的相同 ``` ###### 4. 运行项目使配置生效 ``` 不需要手动修改MySQL,自动生效 ```...
### ElasticSearch ``` 现有三台服务器[192.168.1.30, 192.168.1.31, 192.168.1.32],使用这三台服务器搭建ElasticSearch集群 ``` #### CentOS 使用 yum 安装 ###### 编辑 repo ``` vim /etc/yum.repos.d/elasticsearch.repo # 内容如下 [elasticsearch-6.x] name=Elasticsearch repository for 6.x packages baseurl=https://artifacts.elastic.co/packages/6.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md ``` ###### 使用yum安装 ``` yum install elasticsearch ``` ###### 创建用户 ``` useradd elastic ``` ###### 修改权限 ``` # 数据 chown -R elastic:elastic /var/lib/elasticsearch # 日志 chown -R elastic:elastic /var/log/elasticsearch # 配置 chown -R elastic:elastic /etc/elasticsearch chown -R elastic:elastic /etc/sysconfig/elasticsearch # 指令 chown -R elastic:elastic /usr/share/elasticsearch ``` ###### 配置 ``` # 主节点 192.168.1.30 vim /etc/elasticsearch/elasticsearch.yml # 修改以下几项 cluster.name: etl_es node.name: node-30 node.master: true node.d...
知乎上有一个问题,内容是已知空间三个点的坐标,求三个点所构成的圆的圆心坐标(编程实现)? 根据圆的定义,这道题的核心就是找到一个点,到已知的三个点的距离相等,利用数学知识可以求解如下: 例如 :给定a(x1,y1) b(x2,y2) c(x3,y3)求外接圆心坐标O(x,y) 1. 首先,外接圆的圆心是三角形三条边的垂直平分线的交点,我们根据圆心到顶点的距离相等,可以列出以下方程:
(x1-x)*(x1-x)+(y1-y)*(y1-y)=(x2-x)*(x2-x)+(y2-y)*(y2-y);
(x2-x)*(x2-x)+(y2-y)*(y2-y)=(x3-x)*(x3-x)+(y3-y)*(y3-y); 2.化简得到:
2*(x2-x1)*x+2*(y2-y1)y=x2^2+y2^2-x1^2-y1^2;
2*(x3-x2)*x+2*(y3-y2)y=x3^2+y3^2-x2^2-y2^2;
令:A1=2*(x2-x1);
B1=2*(y2-y1);
C1=x2^2+y2^2-x1^2-y1^2;
A2=2*(x3-x2);
B2=2*(y3-y2);
C2=x3^2+y3^2-x2^2-y2^2;
即:A1*x+B1y=C1;
A2*x+B2y=C2; 3.最后根据克拉默法则:
x=((C1*B2)-(C2*B1))/((A1*B2)-(A2*B1));
y=((A1*C2)-(A2*C...
### 新增Python3编译环境 ``` Tools & Build System & New Build System 将默认内容替换为: { "cmd": ["python3", "-u", "$file"], "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", "selector": "source.python" } 保存为 Python3.sublime-build ``` ### 选中Python3环境 ``` Tools & Build System & Python3 ``` ### 使用Python3编译运行 ``` Ctrl + b ``` ### 可能遇到的问题 ##### 问题 ``` UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128) ``` ##### 原因 ``` 默认是ascii编码但是输出中包含中文 ``` ##### 解决 ``` Preferences & Browse Packages & Users & Python3.sublime-build 修改配置文件, 配置文件中新增一条 "env": {"LANG": "en_US.UTF-8"} 修改后如下: { "cmd": ["python3", "-u", "$file"], "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", "selector": "source.python", "env": {"LANG": "en_US.UTF-8"} } ```...
1. 格式化日志内容 2. 日志文件切割
# django ``` # 刚写的就不复制粘贴了 https://my.oschina.net/tianshl/blog/1611257 # 列一下目录结构 root@tianshl:~# cd server/ root@tianshl:~/server# tree server server ├── db.sqlite3 ├── manage.py └── server ├── __init__.py ├── settings.py ├── urls.py └── wsgi.py ``` # gunicorn ##### 安装 ``` pip install gunicorn ``` ##### 配置 ``` # 修改django项目的settings.py INSTALLED_APPS = [ ...... 'gunicorn', ] ``` ##### 运行 ``` root@tianshl:~# cd /root/server/server/ root@tianshl:~/server/server# gunicorn --pythonpath /root/server/venv/bin/python3 -w 3 -b 0.0.0.0:80 server.wsgi # 测试能否正常运行, 然后ctrl+c结束进程 ``` # supervisor ##### 安装 ``` pip install supervisor ``` ##### 配置 ``` # 默认配置 # 使用echo_supervisord_conf命令查看默认配置 root@tianshl:~# echo_supervisord_conf # 自定义配置 root@tianshl:~# mkdir /etc/supervisor root@tianshl:~# mkdir /etc/supervisor/conf.d root@tianshl:~# echo_supervisord_conf & /etc/supervisor/supervisor.conf root@tianshl:~# vim /etc/su...
### 写在开头 ``` 使用jhipster声明的OneToMany在One的一方DTO中是没有与Many的DTO的映射关系的, 为了在One的一方DTO中使用Many的DTO, 使用以下三步解决此问题。 ``` ### 步骤 ``` 1. OneDTO 中的"mark 1"处为自己写的一对多的关系, 此处变量名称不能与实体One中相应的变量名称一致,否则编译失败。 2. OneMapper 中的"mark 2"处 uses属性添加ManyMapper。 2. OneMapper 中的"mark 3"处使用@Mapping注解声明 Entity 转 DTO 的映射关系。 ``` ### Entity ``` @Entity @Table(name = "one") public class One { ... @OneToMany(mappedBy = "one") private Set manys = new HashSet&&(); ... public void setManys(Set manys) { this.manys = } public Set getManys() { } } @Entity @Table(name = "many") public class Many { ... @ManyToOne private O } ``` ### DTO ``` public class OneDTO { ... // mark 1 private Set manyDTOS = new HashSet&&(); ... public void setManyDTOS(Set manyDTOS) { this.manyDTOS = manyDTOS; } public Set getManyDTOS() { return manyDTOS; } } public class ManyDTO { ... private Long oneId; ... public...
如何快速申请免费的阿里云服务器
### 1.虚拟环境 ``` tianshl:workspace tianshl$ mkdir server tianshl:workspace tianshl$ cd server/ tianshl:server tianshl$ virtualenv venv --python=python3 tianshl:server tianshl$ source venv/bin/activate ``` ### 2. 安装依赖 ``` (venv) tianshl:server tianshl$ pip install django (venv) tianshl:server tianshl$ pip install djangorestframework ``` ### 3. 创建项目 ``` (venv) tianshl:server tianshl$ django-admin.py startproject server (venv) tianshl:server tianshl$ tree server/ server ├── manage.py └── server ├── __init__.py ├── settings.py ├── urls.py └── wsgi.py ``` ### 4. 更新配置 ``` (venv) tianshl:server tianshl$ cd server/ (venv) tianshl:server tianshl$ vim server/settings.py # 1.修改 INSTALLED_APPS = ( ... 'rest_framework', ) # 2.添加 REST_FRAMEWORK = { # Use Django's standard `django.contrib.auth` permissions, # or allow read-only access for unauthenticated users. 'DEFAULT_PERMISSION_CLASSES': [ 'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly' ] }...
每周为您推送最有价值的开源技术内参!
原文:[www.spring4all.com](http://www.spring4all.com) ### 1 线程中断 #### 1.1 什么是线程中断? 线程中断是线程的标志位属性。而不是真正终止线程,和线程的状态无关。线程中断过程表示一个运行中的线程,通过其他线程调用了该线程的 `interrupt()` 方法,使得该线程中断标志位属性改变。 深入思考下,线程中断不是去中断了线程,恰恰是用来通知该线程应该被中断了。具体是一个标志位属性,到底该线程生命周期是去终止,还是继续运行,由线程根据标志位属性自行处理。 #### 1.2 线程中断操作 调用线程的 `interrupt()` 方法,根据线程不同的状态会有不同的结果。 下面新建 InterruptedThread 对象,代码如下: ```java /** * 一直运行的线程,中断状态为 true * * @author Jeff Lee @ bysocket.com * @since 日19:03:02 */ public class InterruptedThread implements Runnable { @Override // 可以省略 public void run() { // 一直 run while (true) { } } public static void main(String[] args) throws Exception { Thread interruptedThread = new Thread(new InterruptedThread(), "InterruptedThread"); interruptedThread.start(); TimeUnit.SE...
用了好久的spring,对bean的生命周期一直 一知半解。今天百度谷歌详细了解了下,在此做个整理。 bean的生命周期 下面是我画的一个粗略的流程图
spring bean生命周期.png 下面介绍几个关键的接口 1. BeanFactoryPostProcessor 这个接口只有一个实现方法,它只有一个方法postProcessBeanFactory。 void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansE
spring会在构造完beanFactory后执行这个方法(所有的bean尚未初始化),这时候如果我们想对beanFactory进行修改,就可以实现这个方法。 注意,如果在BeanFactoryPostProcessor中注入其他的bean对象,这些对象会提前初始化,但是初始化前后不会调用BeanPostProcessor接口的对应方法 2. BeanPostProcessor 再来看看BeanPostProcessor类,在BeanFactoryPostProcessor 的postProcessBeanFactory被执行后,实现BeanPostProcessor接口的对应类就会被构造了。我们再来看看这个接口的两个方法: Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansE
Object postProcessAfterInitialization(Object bean, String beanName) throws BeansE
public class TestClass {
public static void main(String[] args)
TestClass tc = new TestClass();
tc.test();
public void test()
MethodTest mt = new MethodTest();
mt.getCaller();
class MethodTest{
public void getCaller()
StackTraceElement stack[] = (new Throwable()).getStackTrace();
for (int i = 0; i & stack. i++)
StackTraceElement s = stack[i];
System.out.format(" ClassName:%d\t%s\n", i, s.getClassName());
System.out.format("MethodName:%d\t%s\n", i, s.getMethodName());
System.out.format("
FileName:%d\t%s\n", i, s.getFileName());
System.out.format("LineNumber:%d\t%s\n\n", i, s.getLineNumber());
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的XML。当前其支持的语言限于Java、Groovy和Scala,计划未来将支持更多的语言。
从github上下载的源码发现都是使用gradle构建的,之前只用过maven,连ant都没用过,理解的不是很清晰在此引用些知乎上技术对gradle的理解来做个记录。 案例说明 作者:nonesuccess 链接:https://www.zhihu.com/question//answer/ 来源:知乎,著作权归作者所有 概念解释 ant可以自动化打包逻辑。 maven也可以自动化打包,相比于ant,它多做的事是帮你下载jar包。 但是maven的打包逻辑太死板,定制起来太麻烦,不如ant好用。gradle就是又能自动下jar包,又能自己写脚本,并且脚本写起来还比ant好用的这么个东西。 下载地址 https://gradle.org/releases/ 环境要求 JDK 7.0以上 下载安装
下载后解压即可,然后开始配置环境。 环境配置
新建“系统变量”,变量名:GRADLE_HOME,变量值:指向Gradle根目录;
修改变量“Path”,在末尾变量结束标记(;)后添加%GRADLE_HOME%\ 测试
打开cmd...
redis的发布订阅,实现缓存的更新
作为一个有割掉的程序员,对不起,这里应该是格调,酒喝多了有些糊涂。
好吧我们重来一遍。
作为一个有格调的程序员,我们根本不是外界说的那种闷骚宅,此刻的我又含了一汤匙川贝枇杷膏,狠狠的怼了一口野格,据说这是当下欧美流行趋势,对于我这种有格调有品位的人,就得这么喝酒。 眼瞅着半边天的节日就要到了,女神那边似乎不能放假半天导致她有些小情绪。怎么让我的女神高兴起来呢?这个命题拷问着我已经晕晕乎乎的灵魂,实话实说,我的灵感已经在情人节释放殆尽,随着呼呼的北风吹到了遥远的陌生地方。 班儿加到一半儿,看着不断报错的日志,我竟然突然有了灵感。我是一名资深的程序员啊同志们,有报错就要溯源,有bug就要解决,有需求就要迎难而上啊同志们!
说干就干!
我准备用最擅长人工智能的Watson为我做点什么! 说干就干!毫不犹豫的干起来!
首先我悄悄收集了女神朋友圈里精心拍出来的照片,接着,利用IBM Watson的接口,我为所有的图片都打上了标签。聪明的你一定想到了,这些标签经过整理,高频出现的一定就是女神的最爱! 当结果输出的一刻,内心五味杂陈的我流下了两行热泪…… 泪眼迷离的我望着枇杷膏的空瓶,狠狠的生怼了几口野格,看了...
http://www.jb51.net/article/90004.htm
![Gopher China 2018 讲师专访-柴树杉](https://static.oschina.net/uploads/img/13943_Vjpk.jpg "Gopher China 2018 讲师专访-柴树杉") ## 自我介绍 Go 语言代码的贡献者,《Go 语言圣经》翻译者,《Go 语言高级编程》开源免费图书作者,非主流Go语言码农。2010年入坑 Go 语言,因此我的网络 ID 是 chai2010(其实是王小波的一个的小说的名字)。其实我想说的是,即使当歌曲和传说都已经哑巴的时候,Go 语言代码也不会消失。 ## 什么原因,什么时候与 Go 结缘? 绝大部分人第一次听说 Go 语言都是因为它是 Google 发明的语言。但是我更感兴趣的是 Go 语言背后的故事:汤普森、派克、Plan9、UTF8、Alef 等等。2010年在深圳参与了一个可能是国内第一个 Go 语言交流会,聆听了韦京光大牛的分享(独立实现 cgo 对 windows 平台的支持)。2010年网上看到边疆同学号召翻译 Go 语言文档正式入坑。现在还记得叫《胡文 Go.ogle》的 Go 语言小说,感谢 fango。 ## 在工作中遇到哪些挑战? Go 还是比较新的语言,深度使用时会发现轮子严重不足。比如,如何解码一个视频,如何最大压缩比保持一个TIFF格式的图像?用 Go 语言实现重新全部显然是不切实际的,而通过 CGO 技术...
常用度注解都在这里了,如果有误,请大家指教
参考: * http://blog.csdn.net/zhongbeida_xue/article/details/ * http://www.cnblogs.com/endsock/archive//2281519.html * http://blog.163.com/ninja_wk/blog/static// * http://www.chinaunix.net/jh/4/16110.html ## tc命令——linux基于ip进行流量限制 ### 一、tc原理 Linux操作系统中的流量控制器TC(Traffic Control)用于Linux内核的流量控制,主要是通过在输出端口处建立一个队列来实现流量控制。 接收包从输入接口进来后,经过流量限制丢弃不符合规定的数据包,由输入多路分配器进行判断选择: * 如果接收包的目的主机是本主机,那么将该包送给上层处理,否则需要进行转发,将接收包交到转发块(Forwarding Block)处理。 * 转发块同时也接收本主机上层(TCP、UDP等)产生的包,通过查看路由表,决定所处理包的下一跳。 * 然后,对包进行排列以便将它们送到输出接口。 一般只能限制网卡发送的数据包,不能限制网卡接收的数据包,所以可以通过改变发送次序来控制传输速率。Linux流量控制主要是在输出接口排列时进行处理和实现的。 ### 二、规则 #### 2.1 流量控制方式 流量控制包括以下几种方式: * SHAPING(限制): 当流...
对于无状态的web服务,要做分布式部署相对比较简单,很多时候只要架一个反向代理就行。但是对于有状态的web服务,尤其是包含WebSocket成分的web应用,要做分布式部署一直是一个麻烦。传统做法是搞一个中间层,例如Redis之类的做pubsub,但是这样做就不得不改动源码。Erlang/Elixir这种“面向并发编程”的语言在这方面会不会高人一筹?Phoenix框架是否已经支持WebSocket的横向扩展了呢?下面我们就来做个实验。
有些时候可能我们需要在电脑上重新建一个工作空间或者新安装了一个eclipse,但是初始界面并不是你经常使用的,这时候可以使用下面的方法,将以前eclipse的使用界面导出来。 1、将你原来的workspace\.metadata\.plugins\org.eclipse.core.runtime\.settings文件夹放到新的eclipse工作空间的相同文件夹下。 2、将原来的workspace\.metadata\.plugins\org.eclipse.e4.workbench文件夹放到新的eclipse工作空间的相同文件夹下。
命令模式,实现批量执行命令和插销单个命令
虽然每天都有在看书,但发现如果每天都写一篇博文的话,难度有些大,主要是每天都会需要加班,故调整写博客的时间周期为两天,一天看一天写。
这两天又重新回顾了下,发现前面没有说到“草案”的环节,这里补充下。草案的目的在于,使得小组的每一个成员都能对即将开始的项目有个大体的认识,并且对目标进行明确。可以看出,有了草案才能明确目标并启动项目。
在本书主人公实施草案的过程中,有提到一点是现实中很多人都遇到的问题“怕疼”。比如怕自己做不好,所以拒绝接受挑战;再比如怕自己学不好,所以抗拒新生事物。但在现在这个社会,我们怕疼就意味着失去了更多更好的机会。我们要发挥不怕疼的精神,在机会及条件允许的情况下,大胆的去尝试,不要怕被人笑,不要怕犯错,但既定规则及原则性的东西就不要尝试了,那是给自己挖坑!
在前文中,我有提到项目的“独特性”,这里我要重新说说我新的理解。项目“独特性”是指既要传承过去,又要有所创新。像书中所说做红烧肉,其实红烧肉的菜谱基本上都是一样,只是其中自己会做些调整让更适合自己及家人的口味;又如“年会项目”,没一年都会做年会,但每年年会的主题、议程,地点及与会人员来说等都不一样;再以...
常见的几种web api 接口加密签名模式 1、最简单的 固态签名
sign = xxxxxx 的模式 ,通常配合time()时间戳传递,一般用来做为普通接口不涉及安全性的接口。
2、动态签名 这种 常规的: 1.请求参数 user_code :分配唯一标识,区分不同商户 order_no :请求单号,多个逗号隔开。 order_type:
请求单号类型: 0订单 号,1运单号 request_time:请求时间戳 YmdHis sign : 签名有字符串,签名规则: MD5(user_code+order_no+order_type+request_time+private_key) ,其中private_key为约定秘钥。 通常MD5加密的字符串 是按照ASCII排序 通过传递参数和动态md5加密 ,因为约定的private_key 只有双方知道,因此数据被抓包对面也没法加密出正确的sign
3、最稳妥的这种则是参考微信小程序登录的安全模式,个人觉得很棒 通过 wx.login() 获取到用户登录态之后,需要维护登录态。开发者要注意不应该直接把 session_key、openid 等字段作为用户的标识或者 session 的标识,而应该自己派发一个 session 登录态(请参考登录时序图)。对于开发者自己生成的 session,应该保证其安全性且不应该设置较长的过期时间。session 派发到小程序客户端之后,可将其存储在 st...
社区二进制版Mysql安装以及修改root默认密码(Linux,使用普通用户启动Mysql进程,mysql版本mysql-5.7.21-linux-glibc2.12-x86_64) 在linux上安装Mysql有三种方式: 通过各个linux的软件仓库安装,例如yum、apt; 通过源码编译安装 通过二进制包安装
本文主要讲通过二进制包安装的过程。 官方安装文档 https://dev.mysql.com/doc/refman/5.7/en/binary-installation.html 注:官方文档上运行Mysql Server是用的是新建的用户,名字为mysql,但是这篇文章使用已经存在的普通用户faith作为mysql进程的用户。 下载二进制包 解压 解压到如下目录下: /home/faith/Repository/Programs/mysql-5.7.21-linux-glibc2.12-x86_64 解压之后的目录结构 修改配置文件 多个配置文件的优先级 Mysql可以在很多地方记录配置文件,每个位置的配置文件的优先级不同,这些文件的优先级从小到大(作用域从大到小)为: /etc/my.cnf、~/.my.cnf 参考文章: 1、mysql-5.7.21-linux-glibc2.12-x86_64/support-files/mysql.server 2、 http://www.codeweblog.com/%E5%85%B3%E4%BA%8E-mysql-%E9%87%8D%E5%90%AF%E4%B8%8D%E8%AF%BB%E5%8F%96-etc-my-cnf-%E5%85%A8%E5%B1%80%E9%85%8D%E7%BD%AE%E7%9A...
首先注册商户账户,这个属于非技术流程 按步骤操作就可以了,不细讲了 首先需要创建一个应用 https://developer.paypal.com/developer/applications/ 在这里创建一个应用 然后可以获得 clientId 和 clientSecret ,在下面会用到,接下来是创建一个测试账号,同样是下面会用到 https://developer.paypal.com/developer/accounts/ 下来来讲PayPal的代码嵌入: 有三种方式 1.Server Side Express Checkout using REST 2.Client Side Express Checkout using REST 3.Express Checkout using Braintree SDK 因为我们有现有的支付体系,只是想额外支持PayPal这种支付方式,所以我们就采用了第一种方式 先说一下页面部分的实现 &!DOCTYPE html&
&meta http-equiv="X-UA-Compatible" content="IE=edge" /&
&meta name="viewport" content="width=device-width, initial-scale=1"&
&script src="https://www.paypalobjects.com/api/checkout.js"&&/script&
&div id="paypal-button-container"&&/div&
paypal.Button.render({
env: 'sandbox', // sandbox | production
// Show t...
小白望而不止步,势必得,初告捷。
入门教程链接: https://www.cnblogs.com/ysocean/p/6889906.html
RepositoryTest.testDeleteAll (1)
initializationError(org.junit.runner.manipulation.Filter)
java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayName=testDeleteAll], {ExactMatcher:fDisplayName=testDeleteAll(com.manage.dao.RepositoryTest)], {LeadingIdentifierMatcher:fClassName=com.manage.dao.RepositoryTest,fLeadingIdentifier=testDeleteAll]] from org.junit.internal.requests.ClassRequest@
at org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:40)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createFilteredTest(JUnit4TestLoader.java:80)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:71)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:46)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:523)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:761)
at org.eclipse.jdt...
最近在做一个项目,经常需要写 bat 脚本,后来由于需要把bat脚本的内容内嵌代码中,从而引发了一些问题。 # 执行启动Mysql命令 问题:在 Java 中执行 C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqld --defaults-file=C:\Program Files\MySQL\MySQL Server 5.1\bin\my.ini 这条命令? 初次看到这条命令时,很自然的就想到了以下的方式: ```Java @Test public void cmdTest1() { String sCommand = "\"C:\\Program Files\\MySQL\\MySQL Server 5.1\\bin\\mysqld\" --defaults-file=\"C:\\Program Files\\MySQL\\MySQL Server 5.1\\bin\\my.ini\""; try { Runtime.getRuntime().exec(new String[]{"cmd","/c",sCommand}); } catch (IOException e) { System.out.println("command :"+cmd+" "+e.getMessage()); } } ``` 这段代码从实现上看没有什么大的问题,然而在实际运行中却无法启动 Mysql 。那么这是什么原因呢? ## 探索原因 这还要从 JDK 源码中找到答案。本文以 jdk1.7.0_75 源码为例,不同 JDK 源码可能存在差异。首先,我们看以下部分JDK代码(本部分代码来自 Runtime 类中的 exec 方法): ```Java public Process exec(String command, String[] envp, File di...
好用!!!
实验:MySQL使用JDBC执行批处理性能测试
CheungSSH Web3.0 虽然不优秀,但衷心希望能给予支持和理解 项目地址:http://git.oschina.net/CheungSSH_OSC/CheungSSH 建议您使用git命令下载,因为文件比较大,如果用浏览器,和可能下载不完整 [root@CheungSSH ~]# git clone https://git.oschina.net/CheungSSH_OSC/CheungSSH.git 讨论QQ群:
在当今互联网的发展大势下,云计算和大数据已经成为主导。在两大趋势下,企业的服务器数量日益增多,如何有效的管理众多的服务器,已经成为了各大公司考虑的问题。在传统的人工管理模式下,已经很难做到高效的维护,是人管理服务器?还是服务器管理人?
为了解决这个问题,我痴迷于运维自动化研究,目前后端使用的Python语言+Django的Web框架,前端使用Bootstrap+Javascript+jQuery框架开发的CheungSSH Web3.0自动化运维系统,通信协议采用Linux系统自带的SSH协议,无Agent。并通过Paramiko库完成自动化登录,本系统可以基本满足日常的自动化运维需求。系统全程由我自主研发,不采用任何第三方工具和接口。
系统设计不足之处请各位朋友指出,也感谢大家的支持和信任,如果在使用过程中遇到任何问题,或者有任何的意见和建议...
Golang 因为其语法简单,上手快且方便部署正被越来越多的开发者所青睐,一个 Golang 程序开发好了之后,势必要关心其运行情况,今天在这里就给大家介绍一下如果使用 Elastic Stack 来分析 Golang 程序的内存使用情况,方便对 Golang 程序做长期监控进而调优和诊断,甚至发现一些潜在的内存泄露等问题。
Elastic Stack 其实是一个集合,包含 Elasticsearch、Logstash 和 Beats 这几个开源软件,而 Beats 又包含 Filebeat、Packetbeat、Winlogbeat、Metricbeat 和新出的 Heartbeat,呵呵,有点多吧,恩,每个 beat 做的事情不一样,没关系,今天主要用到 Elasticsearch、Metricbeat 和 Kibana 就行了。
Metricbeat 是一个专门用来获取服务器或应用服务内部运行指标数据的收集程序,也是 Golang 写的,部署包比较小才10M 左右,对目标服务器的部署环境也没有依赖,内存资源占用和 CPU 开销也较小,目前除了可以监控服务器本身的资源使用情况外,还支持常见的应用服务器和服务,目前支持列表如下: Apache Module Couchbase Module Docker Module HAProxy Module kafka Module MongoDB Module MySQL Module Nginx Module PostgreSQL Module Prometheus Module Redis Modu...
详细解读阿里巴巴开源技术,包括框架、组件、引擎、数据库/存储、平台/系统、解决方案、工具、中间件、Web Sever、设计等十大类73款!
一提起“分布式系统”,大家的第一感觉就是好高大上啊,深不可测,看各类大牛关于分布式系统的演讲或者书籍,也大多是一脸懵逼。本文期望用浅显易懂的大白话来就什么是分布式系统、分布式系统有哪些优势、分布式系统会面临哪里挑战、如何来设计分布式等方面的话题来展开讨论。
和C++以模板来实现静多态不同,Java基于运行时支持选择了泛型,两者的实现原理大相庭径。C++可以支持基本类型作为模板参数,Java却只能接受类作为泛型参数;Java可以在泛型类的方法中取得自己泛型参数的Class类型,C++只能由编译器推断在不为人知的地方生成新的类,对于特定的模板参数你只能使用特化。在本文中我主要想聊聊泛型的实现原理和一些高级特性。
最近上课比较忙,一直没有时间整理一些知识,今天把webpack2的一些常见用法都给总结了一下。
所谓mysql的优化,三分是配置的优化,七分是sql语句的优化,通过一些案例分析,希望给大家在工作中带来一些思路
Dubbo概述 oDubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案 oDubbo是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点 Dubbo背景 Dubbo的简介 oDubbo是一个分布式服务框架,Dubbo的架构如图所示: l节点角色说明: lProvider: 暴露服务的服务提供方。 lConsumer: 调用远程服务的服务消费方。 lRegistry: 服务注册与发现的注册中心。 lMonitor: 统计服务的调用次调和调用时间的监控中心。 lContainer: 服务运行容器。 dubbo模块分包 通讯关系 下载dubbo源码 o源码地址 https://github.com/alibaba/dubbo oEclipse maven工程引入 Dubbo项目编译打包 o环境是jdk8
oDubbo 工程 编译 oDubbo 工程 打包
服务安装 1.Zookper 安装(单点安装,集群安装也很简单) 2.Dubbo admin 安装 3.Dubbo moniter 安装 4.应用服务端启动(spring容器) 5.应用客户端启动(spring容器) Zookeeper安装 o下载解压 o进入zookeeper-3.4.8\conf目录下复制zoo_sample.cfg文件并修改为zoo.cfg o进入zookeeper-3.4.8\bin目录下点击zkServer.cmd,...
缓存系统的用来代替直接访问数据库,用来提升系统性能,减小数据库复杂。早期缓存跟系统在一个虚拟机里,这样内存访问,速度最快。 后来应用系统水平扩展,缓存作为一个独立系统存在,如redis,但是每次从缓存获取数据,都还是要通过网络访问才能获取,效率相对于早先从内存里获取,还是差了点。如果一个应用,比如传统的企业应用,一次页面显示,要访问数次redis,那效果就不是特别好,因此,现在有人提出了一二级缓存。即一级缓存跟系统在一个虚拟机内,这样速度最快。二级缓存位于redis里,当一级缓存没有数据的时候,再从redis里获取,并同步到一级缓存里。 现在实现这种一二级缓存的也挺多的,比如 hazelcast,新版的Ehcache..不过,实际上,如果你用spring boot,手里又一个Redis,则不需要搞hazelcastEhcache,只需要200行代码,就能在spring boot基础上,提供一个一二级缓存,代码如下:
import java.io.UnsupportedEncodingE
import java.util.concurrent.ConcurrentHashM
import org.springframework.beans.factory.annotation.V
import org.springframework.boot.autoconfigure.AutoConfigureB
import org.springframework.boo...
Quartz是一个完全由java编写的开源作业调度框架,它可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。为确保可伸缩性,Quartz采用了基于多线程的架构。启动时,框架初始化一套worker线程,这套线程被调度器用来执行预定的作业。这就是Quartz怎样能并发运行多个作业的原理。Quartz依赖一套松耦合的线程池管理部件来管理线程环境。 特点 可集群 可伸缩性 高可用性 负载均衡 整合示例 1. 使用maven配置示例所需依赖包
&properties&
&springframework.version&4.0.6.RELEASE&/springframework.version&
&quartz.version&2.2.1&/quartz.version&
&/properties&
&dependencies&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-core&/artifactId&
&version&${springframework.version}&/version&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-context-support&/artifactId&
&version&${springframework.version}&/version&
SpringBoot 很方便的集成 FreeMarker ,DAO 数据库操作层依旧用的是 Mybatis,本文将会一步一步到来如何集成 FreeMarker 以及配置的详解
nginx 日志分析及性能排查
对nosql出现背景、nosql类型做介绍,并解答nosql相关问题
本文讲述了C#开发人员应该了解到的13件事情,希望对C#开发人员有所帮助。 1. 开发过程 开发过程是错误和缺陷开始的地方。使用工具可以帮助你在发布之后,解决掉一些问题。 编码标准 遵照编码标准可以编写出更多可维护的代码,特别是在由多个开发人员或团队编写和维护的代码库中。例如FxCop,StyleCop和ReSharper等,就是常用的实施编码标准的工具。 开发人员:在压缩代码之前,请使用工具仔细检查是否违反了标准,并且对结果进行分析。使用工具发现的代码路径问题,不比你预期的少。 代码审查 代码审查和结对编程是任务开发人员审查他人编写的源代码的常见做法。通过这些方式希望能够检查出作者的错误,如编码错误或实现错误。 代码审查是一个很有价值的做法,但是它依赖于人类,易犯错误,所以很难扩展。 静态分析 静态分析工具会在不运行代码的情况下分析代码,在不需要编写测试用例的情况下,查找违反编码标准或存在缺陷的问题。它们能有效地找到问题,但你需要选择出那些能够定位出有价值问题的工具,找出有价值的问题。C#静态分析工具包括Coverity,CAT.NET和Visual Studio代码分析。 动态分析 动态分析工具在运行时分析代码,帮助你查找缺陷,如安全漏洞,性能和并发...
Tensorflow1.0正式发布,谷歌首届Tensorflow开发者大会在山景召开,深度学习迎来新的高潮和狂欢。随着深度学习框架的普及和推广,会有越来越多人加入到这场盛宴中来,就像Android技术的普及使得开发人员迅速扩大。在这里給大家带来一套小白入门深度学习的基础教程,使用得是Keras,一个高级神经网络库,同时也是Tensorflow1.0引进的一个高层API。
一年一度的虐狗节终于过去了,朋友圈各种晒,晒自拍,晒娃,晒美食,秀恩爱的。程序员在晒什么,程序员在加班。但是礼物还是少不了的,送什么好?作为程序员,我准备了一份特别的礼物,用以往发的微博数据打造一颗“爱心”,我想她一定会感动得哭了吧。哈哈 ### 准备工作 有了想法之后就开始行动了,自然最先想到的就是用 Python 了,大体思路就是把微博数据爬下来,数据经过清洗加工后再进行分词处理,处理后的数据交给词云工具,配合科学计算工具和绘图工具制作成图像出来,涉及到的工具包有: requests 用于网络请求爬取微博数据,结巴分词进行中文分词处理,词云处理库 wordcloud,图片处理库 Pillow,科学计算工具 NumPy ,类似于 MATLAB 的 2D 绘图库 Matplotlib ### 工具安装 安装这些工具包时,不同系统平台有可能出现不一样的错误,wordcloud,requests,jieba 都可以通过普通的 pip 方式在线安装, ```python pip install wordcloud pip install requests pip install jieba ``` 在Windows 平台安装 Pillow,NumPy,Matplotlib 直接用 pip 在线安装会出现各种问题,推荐的一种方式是在一个叫 Python Extension Packages for Windows [1] 的第三方平台下载 相应的...
之前我们讲过在Spring Boot中集成JPA“在spring Boot中使用Spring-data-jpa操作数据库”,本篇介绍另外一个ORM框架Mybatis在Spring Boot中的集成使用。
最近一直在用JPA,其实还是蛮喜欢JPA的风格,最近需要开一个新项目,还没定下具体用什么ORM框架,不过Mybatis的几率会大一些,本篇就相当于一个温习回顾吧,话不多说了,大家看下面步骤吧。 在Spring Boot中集成Mybatis 在POM中添加Mybatis的相关起步依赖,Spring Boot的项目构建大家可以参考我的这篇文章“Spring Boot快速入门 ” &dependency&
&groupId&org.mybatis.spring.boot&/groupId&
&artifactId&mybatis-spring-boot-starter&/artifactId&
&version&1.1.1&/version&
&/dependency&
&dependency&
&groupId&mysql&/groupId&
&artifactId&mysql-connector-java&/artifactId&
&/dependency&
配置数据库连接,我们在application.yml文件中配置一下内容 spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/restful?useUnicode=true&characterEncoding=UTF-8&useSSL=false
username: root
password: ro...
匈牙利算法,KM算法详解及java实现;2016华为软件精英挑战赛,思路总结之KM算法求解指派问题;
这篇文在主要是介绍,如何在 Controller 的方法里面,让校验注解 ( `@NotNull @Email @Size...等`),对基本类型的数据生效(基本类型 `Integer,String,Long等`)。 ## Spring MVC 有什么校验方式? 大家都知道,Spring MVC 默认依赖了 `hibernate-validator` 校验框架。使用这个,我们可以在可以在model的字段上,加相应的校验注解来轻松的实现数据校验。 例如: ```java // 实体类 public class User { @NotNull private S @NotBlank @Length(min = 6, max = 32) private S } // Controller 请求 @RequestMapping("save-user") // 使用 @Valid 注解,告诉 Spring MVC 要校验 user 对象的数据 public User save(@Valid User user){ ..... } ``` 相信大家都有接触过,使用这种方法来实现整体对象的校验,而且还可以根据不同场景,加上不同的 `@Group` 注解,来实现不同请求对数据的校验规则。 ## 我们想实现什么? 但是有些时候,我们的请求参数并不多,可能只是一些零碎的基本类型的参数 例如 `String` `Integer` `Long` 等等。就像下面这个请求: ``` @RequestMapping("update-user-status") public User update(String userId, Integer sta...}

我要回帖

更多关于 电脑哪个部件最容易坏 的文章

更多推荐

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

点击添加站长微信