- 博客(186)
- 收藏
- 关注
原创 Java后台服务— JPush 实现
随着App开发的普及,推送功能在App应用中也越来越重要。我们知道ios有自己的推送服务,但是Android并没有自己的原生推送机制,通常采用的是基于XMPP协议的推送。 这种开发很麻烦,因此市场上有很多第三方的推送服务,比如友盟、极光、亚马逊、百度云等等。我们在项目中用到的是极光推送。Android 推送原理一般如下:
2016-06-07 14:26:50 12634 4
转载 从0开始学习 GitHub 系列之「加入 GitHub」
原文转至: http://blog.csdn.net/skysky01/article/details/51545098看完昨天的文章「从0开始学习 GitHub 系列之「初识 GitHub」」估计不少人已经开始期待我继续更新了,这不赶紧马不停蹄,加班加点给你们更新了第二篇。在更新本篇文章之前先回答昨天大家留言的两个问题:GitHub 需要翻墙么?印象中 GitHub
2016-06-06 18:28:50 1094
原创 细谈Struts2框架(一) Struts2框架之原理
Struts 最早是作为Apache Jakarta项目的组成部分,项目的创立者希望通过对该项目的研究,改进和提高JavaServer Pages、Servlet、标签库以及面向对象的技术水准。最初的struts1.x很快在企业开发中流行起来,与此同事,当时还有一个非诚优秀的web框架诞生,webwork,webwork简洁、灵活功能强大,是一个标准的command模式框架实现,并且完全从web层脱离出来,但是webwork并没有像struts那样流行起来,而是进行了和struts合并。于是就诞生了Stru
2015-09-30 23:21:32 4446
原创 好莱坞原则—Spring的IOC容器
IOC容器的概念,之前在学习SSH的时候,就有接触过。但那时候也只是知道这么个概念,觉得它很难理解。其实并不是它难理解,而是我并没有停下来好好对它总结梳理过。IOC(Inversion of Control)简介:控制反转”,并不是一种技术,而是一种思想,一种主动提供服务的思想。所谓IOC,就是由Spring负责控制对象的生命周期和对象间的关系,与我们传统的在对象内部直接控
2015-06-25 15:53:01 1697 3
转载 tomcat中的几种log
原文:http://www.10tiao.com/html/240/201705/2649257445/1.html日志是程序员居家旅行必备,哦不对,是定位问题,修复bug,甚至是验证应用是否正常的必备利器。甚至很多时候,我们做一次部署仅仅是为了加一行log。虽然现在有各种各样的问题诊断工具,但是在定位线上问题时,我们很多时候还是希望有打印良好的log。打印良好的log很重要,但是知道我们需要...
2018-10-24 11:29:26 2380
原创 话说“学习金字塔”
“学习金字塔”理论学习金字塔是美国著名的学习专家爱德加.戴尔 1946年提出的一种现代学习方式的理论。它用数字形式形象显示了:采用不同的学习方式,学习者在两周以后还能记住内容(平均学习保持率)的多少。如下图所示: 在塔尖,第一种学习方式—”听讲”,也就是老师在上面说,学生在下面听,这种我们最熟悉最常用的方式,学习效果却是最低的,两周以后学习的内容只能留下5%。第二种,通过“阅读”方式学到...
2018-08-17 19:52:11 1136 1
原创 极限思想之阿基里斯和乌龟赛跑
阿基里斯是古希腊神话中跑的最快的英雄,并且刀枪不入,只有脚后跟一个缺点,后面被人用箭射中脚后跟射死了。有一天这个阿基里斯遇到了一只乌龟,乌龟对阿基里斯说,别看你跑的快,但是你永远也追不上我。为什么呢?因为在这个竞赛中,乌龟在前面先跑一千米,阿基里斯在后面追,就必须先到乌龟的出发点。而当阿基里斯达到乌龟的出发点后呢,乌龟此时又前进了一段距离。如此循环下去,不管阿基里斯与乌龟的距离多小,阿基里斯永...
2018-08-17 19:33:55 3825 2
原创 【机器学习实战】-Logistic 回归
一、逻辑回归介绍Logistic 回归,虽然名字叫逻辑回归,但是它并不是一个回归模型,而是分类模型。利用逻辑回归进行分类的主要思想是: 根据现有数据对分类边界线建立回归公式。介绍它的真正原理之前,我们要介绍一下回归的概念,那么什么是回归呢?假设我们现在有一堆数据点,我们用一条直线对这些点进行拟合,这个拟合的过程就叫做回归,而这条直线呢,我们就称为最佳拟合直线。正如上面所说的,我们利用log...
2018-03-01 20:03:18 792
原创 【机器学习实战】—KNN分类算法
一、KNN算法概述kNN分类算法本身简单有效,既可以分类又可以进行回归。 核心原理:已知样本数据集的每一个数据的特征和所属的分类,将新数据的特征与样本数据进行比较,找到最相似(最近邻)的K(k<=20)个数据,选择K个数据出现次数最多的分类,作为新数据的分类。简而言之: 物以类聚,人以群分二、举例:如下图所示: 蓝色方块和红色三角是已知类别,绿色圆圈是我们的待测数...
2018-02-21 11:17:50 1748
原创 【机器学习系列】—大纲总结
机器学习是人工智能的核心,主要分为有监督学习和无监督学习。那么什么叫有监督和无监督呢?是否有监督,主要看输入的样本数据集是否有目标变量。有监督学习是有明确的目标变量,而无监督学习,此类的数据没有类别信息,也不给定目标值。 这段时间主要学习了有监督学习,所以下面对有监督学习进行一个大纲总结:有监督学习有监督学习一般使用两种类型的目标变量:标称型和数值型。标称型的目标变量结果只在有限目标
2018-02-04 10:34:56 2458
原创 Mock 测试导出Excel文件
平时在做业务逻辑时,经常涉及到Excel文件的导出,如果我们需要调试,或者看导出文件的效果,经常启动Tomcat或其他容器,然后再拼装url 地址放在浏览器访问,效率很低。一般我们都有写单元测试的功能,但是在单元测试里,需要输出HttpServletResponse时,遇到困难了。 1. Controller 类导出接口代码如下: @GET @Path("/{versio
2018-01-01 11:20:54 9012 3
原创 Netty 实现简单RPC调用
RPC,即 Remote Procedure Call(远程过程调用),说得通俗一点就是:调用远程计算机上的服务,就像调用本地服务一样。RPC 可基于 HTTP 或 TCP 协议,Web Service 就是基于 HTTP 协议的 RPC,它具有良好的跨平台性,但其性能却不如基于 TCP 协议的 RPC。会两方面会直接影响 RPC 的性能,一是传输方式,二是序列化。众所周知,TCP 是传输层协议,H
2017-08-01 16:17:33 2361 2
原创 JavaNIO系列—Netty与传统RPC调用
传统的RPC框架或者基于RMI等方式的远程服务(过程)调用采用了同步阻塞IO,当客户端的并发压力或者网络时延增大之后,同步阻塞IO会由于频繁的wait导致IO线程经常性的阻塞,由于线程无法高效的工作,IO处理能力自然下降。下面,我们通过BIO通信模型图看下BIO通信的弊端: 采用BIO通信模型的服务端,通常由一个独立的Acceptor线程负责监听客户端的连接,接收到客户端连接之后为客户端连接创建一
2017-08-01 16:17:10 1225
原创 Mina框架实例
简介Apache MINA 是一个网络通信应用框架,也就是说,它主要是对基于TCP/IP、UDP/IP 协议栈的通信框架。 从MINA 的框架图可以看出,Mina 位于用户应用程序和底层java 网络API之间。我们开发基于mina的网络应用程序,就无需关心复杂的通信细节。 框架流程图 服务器端(右图)监听指定端口上到来的请求,对请求进行处理后,回复响应。它也会创建并处理一个连接过来的客户
2017-07-02 23:31:34 2110
原创 Java NIO 系列—Java NIO 与 IO
Nio 是java New IO的简称,在jdk1.4里提供的新api。Sun 官方标榜的特性如下: 1. 为所有的原始类型提供(Buffer)缓存支持。 2. 字符集编码解码解决方案 3. channel : 一个新的原始I/O 抽象。 4. 支持锁和内存映射文件的文件访问接口。 5. 提供多路(non-bloking)非阻塞式的高伸缩性网络I/O。 NIO创建目
2017-07-02 22:52:19 988
原创 使用jvisualVm 诊断java程序故障
最近一段时间,在线上环境的导出excel文件功能老是出现问题,在程序响应一段时间后,程序就中断了。 但是查看日志文件,没有报任何的堆栈信息。最后经过问题排查很诊断,应该是跟内存有关,所以在网上搜索了一些资料,发现jvisualVM 是一款比较好的监控工具。 通过jvisualVM 发现,在程序运行下,堆基本上达到了峰值。如下图: 由此可以推断出堆设的有点小,解决方案,调整tomcat 内存大小。t
2017-05-03 17:42:59 1615
转载 使用 VisualVM 进行性能分析及调优
概述开发大型 Java 应用程序的过程中难免遇到内存泄露、性能瓶颈等问题,比如文件、网络、数据库的连接未释放,未优化的算法等。随着应用程序的持续运行,可能会造成整个系统运行效率下降,严重的则会造成系统崩溃。为了找出程序中隐藏的这些问题,在项目开发后期往往会使用性能分析工具来对应用程序的性能进行分析和优化。VisualVM 是一款免费的性能分析工具。它通过 jvmstat、JMX、SA(
2017-05-03 16:55:11 1133
原创 VisualVM 实现JVM内存监控
VisualVM 简介VisualVm 集成在JDK1.6以上的版本中的一个分析工具,安装完jdk 之后,在jdk/bin 目录下直接运行jvisualVM.exe即可,也可以单独下载独立的jvisuanlVM。 VisualVM 可以用来监控内存泄漏、跟踪垃圾回收、执行时内存、cpu分析、线程分析…….Visual VM 远程监控进入服务器的/usr/local/jdk1.80/bin目录中,
2017-05-02 23:05:22 3525
原创 Spring Boot:简单Hello World
一、Spring Boot 介绍Spring Boot 官网:http://projects.spring.io/spring-boot/ 是这样介绍的,Spring Boot 是用来简化Spring 应用搭建到开发的过程,只需“just run”就可以启动项目。另外,多数Spring Boot 应用需要很少的spring 配置。二、Hello World 实战搭建环境:jdk : 建议使用jdk
2017-01-18 15:34:51 1203 1
原创 java实现Pub/Sub
jedis 实现Pub/Subredis支持的Pub/Sub消息模式,类似JMS的“topic” 功能,但是这些消息不支持持久化,而且redis的订阅端需要独占链接,消息接收将是阻塞的。 Redis 的消息即发即失,sever不会保存消息,如果publish 的消息没有任何client 处于subscribe状态,消息将会丢失,如果client在subscribe时,链接断开后重连,消息将会丢失
2016-08-09 13:31:38 3533
原创 Pub/Sub 机制
Pub/SubRedis 也支持消息的发布订阅模式,订阅者(Sub)通过SUBSCRIBE 命令和PSUBSCRIBE命令向redis 服务订阅频道(channel),当发布者通过PUBLISH 命令向chinnel发布命令时,订阅该频道的客户端都会受到此消息。 PUB/SUB 机制三个客户端都订阅channel1频道当有新消息通过PUBLISH命令发布到channel1时,这个消息会被发送给订阅这
2016-08-05 10:34:45 18459
原创 Java IO : ObjectInputStream、ObjectOutputStream
java IO 对象序列化什么是Java 对象序列化?java平台允许在内存中创建可复用的java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即这些对象的生命生命周期不会比JVM生命周期长。但在现实应用中,就可能要求在JVM停止运行之后能够保存(持久化)指定的对象,并在将来重新读取被保存的对象。 Java对象序列化就能够实现该功能。使用Java 对象序列化,在保存对象时,会将其转
2016-07-08 18:28:55 1456
原创 Java IO : RandomAccessFile
Java IO : RandomAccessFile标签(空格分隔): 【java】RandomAccessFile 支持“随机访问”的方式,程序可以直接跳转到文件的任意地方来读写数据。即既支持读取文件内容,也支持向文件输出数据。 RandomAccessFile 对象包含了一个记录指针,用以标识当前读写处的位置,新创建一个RandomAccessFile对象时,该对象的文件记录指针位于0处,当读/
2016-07-06 17:27:41 1550
原创 Java IO : outputStream 、Writer
在上篇文章中我们提及到,输出流往往和某些数据的目标媒介相关联,如文件、网络连接、管道等。 当写入到输出流的数据逐渐输出完毕时,目标媒介是所有数据的归属地。outputStream 和 write 两个流都采用了如下方法: void write(int b) : 将指定流的字节/字符输出到输出流中 void write(byte b[]) :将字节数组/字符数组中的数据输出到指定输出...
2016-07-04 17:49:05 1673
原创 Java IO : InputStream、Reader
Java 的输入流主要由InputStream 和Reader 作为基类,而输出流则主要由OutputStream 和 writer 作为基类。在前面的Java IO:概述中,我们已提到过,流分为字节流和字符流、节点流和处理流。字节流和字符流区别在于操作的数据单元不同,字节流操作最小数据单元是8位的字节,字符流操作的最小数据单元是16位的字符。字节流主要是由InputStream和...
2016-07-04 17:35:54 1230
原创 Java IO:File 类
Java.io 包下的File 类可以让你访问底层文件系统,通过File类,可以新建、删除和重命名文件和目录。注意:File类不能访问文件内容本身,如果需要访问文件内容,需要使用输入(FileInputStream)、输出流(FileOutputStream) 。1.实例化一个File 对象File f = new File("E:/javaFile/create.txt"); ...
2016-07-04 11:23:12 1199
原创 Java I/O : 概述
Java I/O 是机器获取和交换信息的主要渠道,当前在这个海量数据时代,数据在网络中随处流动,这个六到的过程都涉及到I/O问题,可以说I/O问题是整个人机交互的核心问题,很多Web应用系统的瓶颈都是I/O瓶颈。I/O 的概念:I/O 即我们所说的输入和输出,既然是输入和输出,那么肯定是一个应用程序从某个数据源进行读取,再将原始数据输出到目标媒介,下面我们看普通的数据源和媒介都有哪些:...
2016-06-23 19:20:17 1148
原创 细谈Struts2框架(四)Struts2框架之标签库
在早期的web开发中,jsp视图控制和显示技术主要依靠java脚本实现的,这样一来,jsp页面嵌入了大量的java脚本代码,维护起来极为困难。从jsp1.1规范后,JSP增加了自定义标签库的支持,标签库是一种组件技术,通过标签库,可以将复杂的java脚本代码封装在组件中,开发者只需要使用简单的java代码就可以实现复杂的java脚本功能,提高了开发者的开发效率。
2015-09-30 23:20:23 1588
原创 细谈Struts2框架(三)Struts2框架之ModelDriven
所谓ModelDriven,意思是直接把实体类当成页面数据的收集对象,例如DepartmentAction。假如要写一个Action,我们可以有三种方式: 1. 直接在Action中定义所有需要的属性,然后再JSP页面中直接用属性名称来提交数据。 坏处: 如果实体类的属性多,Action中也要定义相同的属性。 2. 直接在Action中定义Department对象,并添加Get和Set方法,然后再Jsp页面中通过对象.属性的方式来给对象赋值。 坏处: Jsp页面上表单域中的
2015-09-30 23:15:40 1492
原创 细谈Struts2框架(二)Struts2框架之Scope属性
新接到了一个模块,增删改查功能都基本上实现了,但是当我点击修改的时候,返回去再点添加的时候,发现修改的数据回显出现在添加里! 修改的取消,返回到列表页面时,查询条件框中带回值。弄了一上午都没有找出来是什么原因,首先知道肯定是Action中变量作用域的问题,但是没有解决方案!后来一个同事的一句话点醒了我,说你是不是更改了人家的作用域啊?我想,我更改了吗?我要是更改了,我会在哪更改,后来一
2015-09-28 23:42:37 4728
转载 T-SQL 公用表表达式(CTE)
在编写T-SQL代码时,往往需要临时存储某些结果集。前面我们已经广泛使用和介绍了两种临时存储结果集的方法:临时表和表变量。除此之外,还可以使用公用表表达式的方法。公用表表达式(Common Table Expression)是SQL Server2005版本的引入的一个特性。CTE可以看组是一个临时的结果集,可以再接下来来的一个SELECT,INSERT,UPDATE,DELETE,MERGE语句中多次引用。使用公用表达式CTE可以让语句更加清晰简练。与公用表达式作用类似的还有临时表和表变量。下面给出三种方
2015-08-31 22:11:25 1160
原创 程序媛开发之路—字符
大大小小的也做了好几个项目,每个项目不管是前台与后台交互,还是后台和数据库交互方面,都有碰到需要用到StringBuffer类进行字符串拼接的时候。那么StringBuffer和我们最常见的String类有什么区别呢? 和新加入的StringBuilder字符串变量有什么区别呢?简单说吧,这三者主要性能区别在于String是不可变的对象。为什么这么说呢?只要用到定义
2015-08-28 01:00:53 1380 1
原创 程序媛开发之路—JSP自定义标签
jsp自定义标签就是通过自定义标签实现类来实现复杂的、可重复利用的功能。简化jsp页面,提高代码的复用性。比如我们需要在页面上定义一个下拉框控件(Select),我们需要加载从数据库中查出来的数据。我们就可以通过定义select标签的方式,将SQL查询,组织数据,如循环遍历等事情全部在jsp标签类中实现。 这样有什么好处呢?主要目的是为了取代丑陋的jsp脚本,在Html页面中插入JSP
2015-08-25 17:16:30 1559 1
原创 MySQL点滴学习之日志管理
任何一种数据库,都有各种各样的日志,帮助DBA追踪数据库曾经发生过的各种事件。Mysql也不例外,在Mysql中,有四种不同的日志,分别是错误日志、二进制日志、查询日志和慢查询日志,这些日志可以帮助我们mysql服务器(mysqld)内部发生的事件,数据库性能故障,记录数据变更的历史,用户恢复数据库等等。
2015-07-31 22:06:29 1438 2
原创 MySQL点滴学习之索引类型
索引是一种特殊的文件,它们包含着对数据表里所有记录的引用指针。通俗地说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。
2015-07-31 22:05:46 1008 2
原创 Msql点滴学习之存储引擎
在关系数据库中数据的存储是以表的形式存储的,有的表简单,有的表复杂,有的表根本不用来存储任何长期的数据,有的表读取非常快,但是插入数据时却很差; 而我们在实际开发过程中,可能需要各种各样的表,不同的表,意味着存储不同类型的数据,数据的处理上也会存在着差异。对于MySQL来说,它默认支持多种存储引擎,以适用不同领域的数据库应用需要,用户可以通过选择使用不同的存储引擎提供应用的效率,提供灵活的存储,用户甚至可以按照自己的需要定制和使用自己的存储引擎,以实现最大程度的可定制行。
2015-07-30 20:07:38 1036 2
原创 MySQL点滴学习之事件调度器
事件调度器是MySQL5.1 后新增的功能,类似触发器,不过触发器只是针对某个表产生的事件执行一些语句,而事件调度器则是在某一个(间隔)时间执行一些语句。 事件是由一个特定的线程来管理的,也就是所谓的事件调度器
2015-07-28 23:01:03 946 3
原创 Spring的IOC容器—scope作用域
Scope用来声明容器中的对象的存货时间。即容器在对象在进入其相应的scope之前,生成并装配这些对象,在该对象不再处于这些scope的限定之后,容器通常会销毁这些对象。Sprign容器最初提供了两种bean的scope类型:singletoon和prototype。自Spring2.0之后,引入了另外三种scope类型,即request、session和global session类
2015-06-30 16:49:51 2623 2
原创 Spring的IOC容器—依赖注入
前面一篇博客大致讲了一下Spring的IOC容器的原理,IOC即控制反转主要是依靠依赖注入的方式来实现的。依赖注入是指所依赖的对象不是由自己new出来的,而是用别的方式像打针似的注入进来。 其实说白了不管是控制反转还是依赖注入都说明http://write.blog.csdn.net/postedit?ref=toolbar了Spring采用动态、灵活的方式来管理各种对象。Spring的依
2015-06-29 17:12:08 1109 3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人