- 博客(481)
- 资源 (23)
- 收藏
- 关注
原创 系统设计(二)如何写技术设计文档
如何写一份优秀的系统设计文档?作为一名架构师,系统技术方案设计文档应该是必备技能,一份优秀的设计文档应该包含:业务分析、系统架构设计、数据分析、风险防控和非功能性设计等几个大方面‘。
2021-12-19 20:30:20 13914 1
原创 mac maven配置
概述本篇介绍mac 下maven配置,以及解决配置之后环境变量不生效的问题;下载https://maven.apache.org/download.cgi双击下载文件,进行解压环境变量配置~/.bash_profile 文件是用户登录的时候会加载的配置文件,将配置填写到该文件中。打开配置文件~/.bash_profile将mvn的目录加入到系统PATH中(xx是用户名)export MAVEN_HOME=/Users/xx/Code/tools/m..
2021-03-07 16:41:02 1051 2
原创 系统设计(一)优秀的代码
前言一个优秀的架构师必须是一个优秀的coder,代码编写分为两个层级,代码整洁可读、扩展性好、效率高。一个应用系统新建之处,就必须有一个编码规范,指导团队相关同学日常开发,笔者认为编码规范可以包含如下几部分,另外可以有bad case 和bad case样板间,指导团队同学开发。系统对外接口规范(出参、入参) 命名规范(函数、方法、类、枚举、常量) 系统分层规范,每一层的入参、出参...
2020-01-17 22:28:19 1869
原创 Java8 Stream中 peek、map、foreach区别
一、前言在前面一篇文章中以Demo的形式介绍了Stream的API使用,其中peek和map看起来很像,这里再详细介绍一下。二、管道流一个流式也就是一条管道,操作分为三步数据准备 一步和多步中间操作,所有的操作都是懒操作,不会对数据产生影响 终止操作,数据输出三、peek、map区别peek入参是Consumer,没有返回值 * * @param...
2020-01-12 17:25:07 16900 2
原创 Java8 stream编程示例
最近在使用Java8编程,流式编程效率非常高,代码也比较简洁针对stream/parallelStream的常用方法foreach、filter、anyMatch、allMatch、Map、flatMap、reduce、limit、skip、distinct、summaryStatistics写了Demo示例,方便上手使用下面Demo主要有两个类,一个是Student实体类,一个是Stre...
2020-01-12 12:43:37 832
原创 浅谈分布式系统FailOver
目录概述具体措施存储层中间件层服务器编码方面概述根据百度百科的词条描述,失败转移(FailOver)是指一种备份操作模式,当系统的主要组件由于失效或预定关机时间的原因而无法工作时,这种模式的系统组件功能被转嫁到二级系统组件中。简单来讲就是当分布式系统中的某个组件出现问题,能够立马切换到新的节点继续进行工作,而不会直接导致整个系统宕机。具体措施在真实...
2019-11-03 20:23:58 1629
原创 TPS、QPS和系统吞吐量的区别和理解
一、QPS/TPSQPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。TPS:是TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响...
2018-10-21 21:36:21 152792 5
原创 Ubuntu18.04安装Nginx
Nginx是一个高性能的HTTP服务,可以用作反向代理服务器和静态文件下载服务器。本篇文章介绍下Ubuntu18.04上安装Nginx的过程,以及遇到问题的解决办法。一、安装依赖库更新源sudo apt-get update安装c++依赖库sudo apt-get install build-essentialsudo apt-get install libtool...
2018-09-27 17:13:13 13065 4
原创 Ubuntu18.04编译Nginx报错objs/Makefile:460: recipe for target 'objs/src/core/ngx_murmurhash.o' failed
问题描述在Ubuntu18.04上安装Ngnix,在编译步骤出现如下错误:cc1: all warnings being treated as errorsobjs/Makefile:460: recipe for target 'objs/src/core/ngx_murmurhash.o' failedmake[1]: *** [objs/src/core/ngx_murmurha...
2018-09-27 14:54:08 16504 11
原创 基于Lire库搜索相似图片
什么是LireLIRE(Lucene Image REtrieval)提供一种的简单方式来创建基于图像特性的Lucene索引。利用该索引就能够构建一个基于内容的图像检索(content- based image retrieval,CBIR)系统,来搜索相似的图像。LIRE使用的特性都取自MPEG-7标准: ScalableColor、ColorLayout、EdgeHistogram。此外该...
2018-07-22 16:50:58 4655 1
原创 基于Lucene、TF-IDF、余弦相似性实现长文本相似度检测
什么是TF-IDFTF-IDF(Term Frequency-Inverse Document Frequency),汉译为词频-逆文本频率指数。TF指一个词出现的频率,假设在一篇文章中某个词出现的次数是n,文章的总词数是N,那么TF=n/N逆文本频率指数IDF一般用于表示一个词的权重,其求解办法为IDFi=log(D/Dw),这里D指的是文本总量,Dw指的是词i在Dw篇文本中出现过。...
2018-07-21 21:06:23 4373 6
原创 WebMagic爬取应用市场应用信息
WebMagic资料官方教程 http://webmagic.io/docs/zh/官方网址 http://webmagic.io/代码实现爬取华为应用市场应用信息,统计华为应用市场应用数量,启动20个线程,自定义MyPiple来保存数据。AppStoreProcessor.java主类import us.codecraft.webmagic.Page;import ...
2018-07-18 22:13:10 1200
转载 Android静态安全检查(十六):WebView跨域访问漏洞
2017年12月7日,国家信息安全漏洞共享平台(CNVD)接收到腾讯玄武实验室报送的Android WebView存在跨域访问漏洞(CNVD-2017-36682)。攻击者利用该漏洞,可远程获取用户隐私数据(包括手机应用数据、照片、文档等敏感信息),还可窃取用户登录凭证,在受害者毫无察觉的情况下实现对APP用户账户的完全控制。由于该组件广泛应用于Android平台,导致大量APP受影响,构成较为严...
2018-07-10 22:26:01 1876
原创 Android静态安全检查(十五):WebView明文密码存储检测
明文密码存储Android的WebView组件默认打开了提示用户是否保存密码存储功能,如果用户选择了保存,用户名和密码就会被明文存储到该应用的database/webview.db文件中。明文存储的用户名和密码,不仅会被该应用随意的获取,其他的恶意程序也可能通过提权或者root的方式访问该应用的webview数据库,窃取用户的用户名和密码,导致信息泄露。检测方法因为webview默认开启的密码保存...
2018-07-10 22:18:08 2476 2
原创 Android静态安全检查(十四):开放服务检测
为什么应用开放服务不安全开启服务即创建监听端口的SocketServer,通过SocketServer开启服务,可以接受客户端的请求操作,通常使用NanoHTTPD库来创建Socket服务端。如果一个应用创建了ServerSocket,开启了服务监听,如果服务端对连接的客户端验证不严格的话,恶意应用就可以连接服务,使用服务端的功能,可能导致应用隐私数据泄露或其他的严重问题。检测方法检测应用代码中是...
2018-07-10 21:48:09 671
原创 Android静态安全检查(十三):剪切板使用检测
Android剪切板使用风险Android剪切板是可以暂存数据,剪切板在后台起作用,存放在内存中。如果把隐私数据,特别是密码,存放在剪切板中是不安全的,因为任何的应用程序都可以访问剪切板中的数据。如果一个恶意应用,注册了系统剪切板的监听器事件,当剪切板数据发生变化的时候,就能获取到剪切板的数据,通过下面的代码就可以注册监听器。 final ClipboardManager clipb...
2018-07-10 20:36:58 3706
原创 Android静态安全检查(十二):内部SQLite存储风险
内部SQLite存储风险简介内部SQLite指/data/data/包名/databases/路径下的文件,openOrCreateDatabase方法可以对该路径下的数据进行读写操作。 /** * Open a new private SQLiteDatabase associated with this Context's * application package....
2018-07-08 20:56:47 1036
原创 Android静态安全检查(十一):openFileOutput存储风险
OpenFileOutput存储风险简介Android应用内部文件是指/data/data/packageName/files路径下的文件,openFileOutput方法可以对内部文件的数据进行读写操作。通过ContextWrapper类的openFileOutput方法或者Context类的openFileOutput方法中的第二个参数mode设置文件的权限。Mode为MODE_PRIVATE...
2018-07-08 20:46:43 1335
原创 Android静态安全检查(十):Shared Preferences存储风险
Shared Preferences存储风险简介Android系统提供了以下四种Android应用本地存储方式:Shared Preferences、SQLite Databases、Internal Storage、External Storage等存储方式。Shared Preferences是一种轻量级的基于XML文件存储的键值对(key-value)数据的数据存储方式,一般用于储存应用的配...
2018-07-08 18:09:56 1900
原创 Android静态安全检查(九):不安全的SDCard存储检测
什么是SDCard读写Android系统中存放的文件存储卡有内置存储卡和外置的存储卡SDCard是外部存储卡,类似U盘,没有对文件进行权限控制,因此程序只需要有SDCard的读写操作权限,就可以对所有的SDCard文件进行读写,电脑也可以访问SDCard文件。手机内置的存储卡是有权限控制的,相对来说比较安全。SDCard路径有Environment.getExternalStorageDirect...
2018-07-08 17:07:41 2211
原创 Android静态安全检查(七):Content Provider文件目录遍历漏洞
漏洞描述Android应用的Content Provider存在文件目录遍历的漏洞,如果一个暴露的Content Provider组件(Android静态安全检查(一):组件暴露),没有组件的访问进行权限控制和对访问的目标文件的Content Query URI进行有效的判断,攻击者利用该暴露的组件的openFile()接口,进行文件目录遍历,可能导致隐私泄露。检测方法针对所有的openFile方...
2018-07-08 15:43:49 2154
原创 Android静态安全检查(六):Service劫持
什么是Service劫持Android应用中,Service是一个重要的组件,用于执行比较耗时的后台任务,启动一个Service常用的方法是ComponentName startService(Intent service),传入的参数是Intent,Intent使用有两种情况一个是设置action,接收到action的Service,然后启动。一个是明确指定要启动的Service和包名当应用陈故...
2018-07-08 15:32:03 1536
原创 Android静态安全检查(五):Activity劫持
什么是Activity劫持一般情况下分为两种第一种是,手机里面安装了恶意程序,恶意程序会注册一个Receiver,响应android.intent.action.BOOT_COMPLETED事件,这个Service会启动一个定时器,不停的循环查询当前运行的进程。一旦当前的进程正是我们要劫持的,并运行在前台,立马使用FLAG_ACTIVITY_NEW_TASK启动自己的恶意应用界面处于栈顶,用户看到...
2018-07-08 11:58:04 3756
原创 Android静态安全检查(四):允许调试检测
允许调试风险在Android应用的Manifest.xml有一个Debugable属性,决定应用程序可不可以在手机上进行调试。只有该值为true,我们才可以在手机上进行调试。使用Android Stdio进行打包时,该值默认是true,如果导出包,该值为false。如果应用程序运行调试,就可能存在被恶意调试的风险,导致敏感信息泄露。检测方法解析APK应用AndroidManifest.xml文件,...
2018-07-08 11:21:07 1051
原创 Android静态安全检查(三):允许备份检测
应用允许备份漏洞Android应用的Manifest.xml的Application标签下的allowBackup属性决定当前的应用程序可不可以备份,如果可以备份,则可能导致应用的敏感信息泄露。如果当前的应用程序确实需要备份功能,就必须明确的指定backupAgent属性,那么当备份的时候,会使用你指定的类来备份,第三方的外部程序就无法通过备份来窃取你的数据。检测方法如果一个应用程序的Androi...
2018-07-08 10:44:51 933
原创 Soot检测Android应用Zip目录遍历漏洞
Soot简介Soot是一个Java静态分析框架,它提供了四种中间(representation)表现用于分析与转换Java字节码.Soot既可以作为优化和检查class文件的工具也可以作为一个开发与优化Java字节码的框架。使用Soot可以对Android应用进行静态分析,Android静态分析指APK不在运行的情况下,根据某些代码特征来分析应用具有哪些行为。什么是Zip文件遍历攻击以及修复方案请...
2018-07-07 22:42:36 1898
原创 Android静态安全检查(二):Zip文件目录遍历攻击漏洞
什么是Zip文件遍历 Zip压缩包中,允许文件名存在"../"字符串,攻击者可以利用多个“../”在解压时改变ZIP包中某个文件的存放位置,覆盖掉应用原有的文件。如果被覆盖掉的文件是动态链接so、dex或者odex文件,轻则产生本地拒绝服务漏洞,影响应用的可用性,重则可能造成任意代码执行漏洞,危害用户的设备安全和信息安全。漏洞原理在linux系统中,../代表切换到上一级目录,Jav...
2018-07-07 22:32:08 3113
转载 Android应用五种数据存储方式
Android的五种数据存储方式文件存储SharedPreferencesSQLite数据库存储ContentProvider网络存储一、文件存储默认存储路径:/data/data/<PackageName>/files文件操作模式:MODE_PRIVATE(默认):覆盖、MODE_APPEND:追加写入文件public void save(){ String data =...
2018-07-07 20:33:43 1475
原创 Soot获取Android应用Manifest信息
Soot简介Soot是一个Java静态分析框架,它提供了四种中间(representation)表现用于分析与转换Java字节码.Soot既可以作为优化和检查class文件的工具也可以作为一个开发与优化Java字节码的框架。使用Soot可以对Android应用进行静态分析,Android静态分析指APK不在运行的情况下,根据某些代码特征来分析应用具有哪些行为。Manifest简介每个Android...
2018-07-06 21:38:26 1080
原创 Soot获取Android应用控制流图
Soot简介Soot是一个Java静态分析框架,它提供了四种中间(representation)表现用于分析与转换Java字节码.Soot既可以作为优化和检查class文件的工具也可以作为一个开发与优化Java字节码的框架。使用Soot可以对Android应用进行静态分析,Android静态分析指APK不在运行的情况下,根据某些代码特征来分析应用具有哪些行为。Soot的升级版FlowDroid可以...
2018-07-01 22:35:52 4408 4
原创 Soot检测Android应用中Email地址
Soot简介Soot是一个Java静态分析框架,它提供了四种中间(representation)表现用于分析与转换Java字节码.Soot既可以作为优化和检查class文件的工具也可以作为一个开发与优化Java字节码的框架。使用Soot可以对Android应用进行静态分析,Android静态分析指APK不在运行的情况下,根据某些代码特征来分析应用具有哪些行为。...
2018-07-01 19:08:51 780
原创 Soot检测Android应用中URL地址
Soot简介Soot是一个Java静态分析框架,它提供了四种中间(representation)表现用于分析与转换Java字节码.Soot既可以作为优化和检查class文件的工具也可以作为一个开发与优化Java字节码的框架。使用Soot可以对Android应用进行静态分析,Android静态分析指APK不在运行的情况下,根据某些代码特征来分析应用具有哪些行为。代码实现工程依赖的jar包gradle...
2018-07-01 19:06:29 1507 1
转载 Nginx常用功能
Http代理,反向代理:作为web服务器最常用的功能之一,尤其是反向代理。这里我给来2张图,对正向代理与反向代理做个诠释,具体细节,大家可以翻阅下资料。代理与反向代理Nginx在做反向代理时,提供性能稳定,并且能够提供配置灵活的转发功能。Nginx可以根据不同的正则匹配,采取不同的转发策略,比如图片文件结尾的走文件服务器,动态页面走web服务器,只要你正则写的没问题,又有相对应的服务器解决方案,你...
2018-06-24 22:18:44 297
原创 Zookeeper可视化客户端ZooViewer详细使用教程
前言目前Zookeeper可视化客户端不多,使用过zkui之后,感觉不太好用,就想自己开发一个,利用周末时间使用JavaFX开发了一个PC端可以直接运行的可视化客户端,起名叫ZooView,本篇文章讲解下如何使用。下载访问github地址下载zooview.zip,Github地址:https://github.com/HelloKittyNII/ZooView客户端登录将下载的zooview.z...
2018-06-24 17:53:36 36567 7
原创 JavaFX TreeView注册鼠标点击事件
使用JavaFX的TreeView控件,需要注册树节点的鼠标点击事件,下面是示例,鼠标点击之后,可以获取当前节点的值。这个是定义的TreeView: TreeView<String> nodeTreeView; nodeTreeView.addEventFilter(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent&...
2018-06-24 13:56:46 5941
原创 Java NIO示例
学习了Java的NIO框架,NIO是Java提供的非阻塞I/O,基于Channel和Buffer实现,下面给出Socket示例代码,服务端和客户端。一、服务端代码import java.io.IOException;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.channels.Sel...
2018-06-13 22:44:23 5974
原创 Java测试RabbitMQ生产者和消费者
一、环境准备请看上一篇文章,Ubuntu18.04安装RabbitMQ完成RabbitMQ服务端搭建,并创建admin用户。
2018-06-10 20:24:08 4134
原创 reply-code=530, reply-text=NOT_ALLOWED - access to vhost '/' refused for user user_admin
Java使用amqp-client连接rabbitmq服务端,报出如下异常Exception in thread "main" java.io.IOException at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:105) at com.rabbitmq.client.impl.AMQChannel.wrap(AMQCh...
2018-06-10 20:19:21 23306 3
基于Lire库搜索相似图片源码
2018-07-22
Zookeeper客户端Curator Framework使用代码
2018-05-05
cas单点登录测试配置
2018-04-29
Android的APp作为Socket服务端与pc通过USB通信
2016-05-14
Android作为Socket服务端与pc通过USB通信
2016-05-14
java swing入门教程
2016-03-16
福星阅读器
2016-03-15
局域网QQ聊天项目
2015-09-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人