shen的博客

欢迎讨论
私信 关注
从程序猿到程序员
码龄7年

努力吧骚年

  • 196,922
    被访问量
  • 183
    原创文章
  • 23,917
    作者排名
  • 65
    粉丝数量
  • 目前就职 电子科技大学计算机学院
  • 于 2013-10-21 加入CSDN
获得成就
  • 获得84次点赞
  • 内容获得120次评论
  • 获得216次收藏
荣誉勋章
兴趣领域
  • #后端
    #Go/GoLang#Java#Python
TA的专栏
  • 设计模式的学习之路
    10篇
  • SSM学习之路
    23篇
  • java
    12篇
  • spring
    4篇
  • spring-mvc
    28篇
  • socket
    2篇
  • 线程
    1篇
  • nutch
    1篇
  • 爬虫
    1篇
  • 正则表达式
    1篇
  • Maven
    5篇
  • eclipse
    1篇
  • Mybatis
    19篇
  • 训练数据集
    1篇
  • opencv
    10篇
  • C++
    1篇
  • dlib
    4篇
  • 跟踪算法
    1篇
  • jni
    4篇
  • ndk
    1篇
  • android
    9篇
  • 设计模式
    10篇
  • Netty
    3篇
  • LeetCode
    10篇
  • 算法
    4篇
  • Bug坑集合
    2篇
  • Shiro
    11篇
  • Redis
    9篇
  • Nginx
    16篇
  • Java并发
    7篇
  • sql
    1篇
  • Spring实战?
    9篇
  • 数据增强/扩展/Data Augmentation
    1篇
  • JVM
  • 面经
    5篇
  • ffmpeg
    1篇
  • linux
    1篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

chan与Taylor定位比较.zip

chan算法(查恩)和Taylor(泰勒级数算法)的定位效果比较
zip
发布资源于 1 月前

可用的扩展卡尔曼滤波程序示例(m)

可用的扩展卡尔曼滤波程序示例(m)
zip
发布资源于 4 月前
腾讯春招CSIG提前批2电面+HR面(offer)
发布Blink于 1 年前

conda常用命令

创建环境conda create -n env_name python=x.x激活环境source activate env_name退出环境conda deactivate换源vim ~/.condarcchannels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ - https://mirror...
原创
151阅读
0评论
0点赞
发布博客于 2 年前

算法之单调栈与单调队列

单调队列单调队列顾名思义就是具有单一单调性的队列。例题给定一个数列,从左至右输出每个长度为m的数列段内的最小数和最大数。数列长度:N<=106,m<=N数列为:6 4 10 10 8 6 4 2 12 14,求长度为3的数列段内的最大数,使用单调递减栈。(1)(6,0)入队,此时队列为(6,0)(2)(4,1)入队,此时队列为(6,0) (4,1)(3)(10,2)入队...
原创
200阅读
0评论
0点赞
发布博客于 2 年前

pip更换源

阿里云 http://mirrors.aliyun.com/pypi/simple/清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/华中科技大学http://pypi.hustunique.com/临时可以在使用pip的时候,加上参数-i和镜像地址(...
原创
3705阅读
1评论
0点赞
发布博客于 2 年前

2019提前批——拼多多笔试题

一给定两哥数组A和B。其中数组A是几乎严格升序排列的,几乎的定义是只需改变其中一个数,即可满足完全升序排列。你的任务是从数组A中找到这个数字,并从数组B中选取1数将其替换,使得数组A是完全严格升序排列的严格升序排列,即不允许相邻两个为相同的数>请找出数组B中满足要求的最大数字,并输出最终有序的数组。如果不存在就输出输入描述:共两行,第一行是数组A,第二行是数组3,元素之间用空格...
原创
652阅读
2评论
3点赞
发布博客于 2 年前

Tomcat下图片验证码失效,awt报错

linux的tomcat服务器部署后,图片验证码功能失效,点开链接出现NoClassDefFoundError: Could not initialize class java.awt.Font错误,查阅资料,需要在catalina.sh配置以下参数JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true"重启tomcat即可...
原创
353阅读
0评论
1点赞
发布博客于 2 年前

成都EE部门三面面经

一面二面(1)写一个支持泛型的LinkedList 升序插入 删除时有重复的全删除掉(2)为啥用Netty理由(3)线程池介绍一下(4)JDK自带的bin下的工具用过没(5)JVM默认启动的时什么GC回收器,说下GC日志、CMS、垃圾回收算法三面(0)HashMap,ConcurrentHashMap,让你自己说,我就都说,结构以及put、get、resize/transfer...
原创
188阅读
0评论
2点赞
发布博客于 2 年前

LeetCode题解——684. 冗余连接(并查集)

题目https://leetcode-cn.com/problems/redundant-connection/在本问题中, 树指的是一个连通且无环的无向图。输入一个图,该图由一个有着N个节点 (节点值不重复1, 2, …, N) 的树及一条附加的边构成。附加的边的两个顶点包含在1到N中间,这条附加的边不属于树中已存在的边。结果图是一个以边组成的二维数组。每一个边的元素是一对[u, v] ...
原创
412阅读
0评论
1点赞
发布博客于 2 年前

字节跳动笔试1——马里奥弹跳板游戏(BFS)

题目一个数组代表跳板,数字代表向前或向后可以跳的最大距离(比如3,那么跳1,、2、3都行),0代表悬崖(跳上去摔死)。指定一个出生点P,求到终点需要跳的最小次数(终点是最后一个元素后面),无法到达输出-1。输入:第一行:数组长度N,出生点P第二行:N个数字输出:最小次数示例:输入:7 410 0 2 1 1 0 1输出:31<= N <= 10000...
原创
1300阅读
2评论
2点赞
发布博客于 2 年前

LeetCode题解——910. 最小差值 II

题目https://leetcode-cn.com/problems/smallest-range-ii/给定一个整数数组 A,对于每个整数 A[i],我们可以选择 x = -K 或是 x = K,并将 x 加到 A[i] 中。在此过程之后,我们得到一些数组 B。返回 B 的最大值和 B 的最小值之间可能存在的最小差值。示例 1:输入:A = [1], K = 0输出:0解释:B ...
原创
279阅读
0评论
0点赞
发布博客于 2 年前

LeetCode题解——22. 括号生成(递归?)

题目https://leetcode-cn.com/problems/generate-parentheses/给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"]思路(1)一开始想的是生...
原创
229阅读
0评论
0点赞
发布博客于 2 年前

LeetCode题解——449. 序列化和反序列化二叉搜索树(二叉搜索树的特性)

https://leetcode-cn.com/problems/serialize-and-deserialize-bst题目序列化是将数据结构或对象转换为一系列位的过程,以便它可以存储在文件或内存缓冲区中,或通过网络连接链路传输,以便稍后在同一个或另一个计算机环境中重建。设计一个算法来序列化和反序列化二叉搜索树。 对序列化/反序列化算法的工作方式没有限制。 您只需确保二叉搜索树可以序列化...
原创
52阅读
0评论
0点赞
发布博客于 2 年前

LeetCode题解——978. 最长湍流子数组

https://leetcode-cn.com/problems/longest-turbulent-subarray/题目当 A 的子数组 A[i], A[i+1], …, A[j] 满足下列条件时,我们称其为湍流子数组:若 i <= k < j,当 k 为奇数时, A[k] > A[k+1],且当 k 为偶数时,A[k] < A[k+1];或 若 i <...
原创
158阅读
0评论
0点赞
发布博客于 2 年前

LeetCode题解——518. 零钱兑换 II(dp)

https://leetcode-cn.com/problems/coin-change-2/submissions/题目:给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。示例 1:输入: amount = 5, coins = [1, 2, 5]输出: 4解释: 有四种方式可以凑成总金额:5=55=2+2+15=2+1+1...
原创
540阅读
1评论
2点赞
发布博客于 2 年前

LeetCode题解——46. 全排列(回溯法)

题目给定一个没有重复数字的序列,返回其所有可能的全排列。输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]思路(回溯法)f(n) = f(n-1) + w,w为任选一个数字代码 public static List<List<Integer>>...
原创
378阅读
0评论
0点赞
发布博客于 2 年前

VIVO秋招提前批面试(offer)

整体来说比较水一面技术面自我介绍问项目,设计思路,负责什么内存怎么划分线程池的流程,空闲的线程如何退出线程同步ConcurrentHashMap计算机资源泄露,除了内存泄漏还有啥?想了半天,瞎扯了个输出流没有关,别的线程无法操作这个文件。面试官说这个其实就是文件句柄的泄露。二面HR面自我介绍自己的特点是什么:回答的毅力比较强,考研啥的项目中身份的介绍46级多少分...
原创
1804阅读
1评论
0点赞
发布博客于 2 年前

LeetCode题解——210.课程表II(拓扑排序)

https://leetcode-cn.com/problems/course-schedule-ii/题目:现在你总共有 n 门课需要选,记为 0 到 n-1。在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1]给定课程总量以及它们的先决条件,返回你为了学完所有课程所安排的学习顺序。可能会有多个正确的顺序,你只要返...
原创
186阅读
0评论
0点赞
发布博客于 2 年前

ffmpeg——图片序列转换视频

ffmpeg -threads 2 -f image2 -i F:\\IdeaProjects\\ImageEnhance\\markerTestResult\\%03d.png -vcodec h264 -r 30 -t 10-b 16000000 output.mp4(1) -vcodec 选择编码 h264 libx264等(2)-r 帧率(3) -t 时长(4)-b 码率...
原创
2310阅读
0评论
0点赞
发布博客于 2 年前

VIVO笔试题——背包问题

背景:VIVO提前批笔试题遇到了01背包,就记得动态规划动态规划,记得表格法,突然失忆怎么写。来自背包九讲01背包有 N 件物品和一个容量为 V 的背包。放入第 i 件物品耗费的容量是 Ci,得到的价值是 Wi。求解将哪些物品装入背包(每个物品只可放一件物品)可使价值总和最大(最优化问题)?思路自顶而下的方式去思考问题,设f(i,v)为选取前 i 件物品装入容量为 v 的背包中的物...
原创
427阅读
0评论
0点赞
发布博客于 2 年前

腾讯春招CSIG提前批2电面+HR面(offer)

2019年4月1日,愚人节。20点16分接到深圳腾讯电话,1面,csig事业群,时长34分钟:(0)没自我介绍(1)问项目(2)多线程(线程池)(worker,轮训任务队列,超时时间,核心线程数)(3)锁 (利用数昂缓冲队列,说了读写分离)(4)容器(ArrayBlockingQueue和ConcurrentHashMap)大概说的(5)内存模型(GC)(6)HTTP和HTTPS的...
原创
1266阅读
6评论
2点赞
发布博客于 2 年前

LeetCode题解——23.合并K个排序链表

合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入: [ 1->4->5, 1->3->4, 2->6 ]输出: 1->1->2->3->4->4->5->6Java想到两个链表合并,每次找最小的头结点,作为新的头结点,递归查找后面的...
原创
90阅读
0评论
0点赞
发布博客于 2 年前

LeetCode题解——862.Shortest Subarray with Sum at Least K

中文题目 官方答案,时间复杂度O(n)自己的思路: (1)暴力,超时了。 (2)opt(i,k):长度为i的数组,找和至少为k的连读子数组的长度。opt(i,k)=min{1+opt(i-1,k-A[i]), opt(i-1,K)},结果是失败的,要连续;故写成两种递归,若选了该值,后面都要选,不然不连续;修改后,还是超时,这是自上而下,且没用辅助数组存储结果,但是想想好像没法存,是...
原创
1415阅读
0评论
1点赞
发布博客于 2 年前

低照图/低亮度视频的修复与优化(ALTM_Retinex实现高HDR)——Java及C实现

项目中遇到问题:低亮度视频与低亮度图片,无法进行后续的处理。分别测试了传统的变换方法,如:Gamma变换、Log变换、拉普拉斯提升等,效果均不好,参照大佬的Github:https://github.com/IsaacChanghau/OptimizedImageEnhance其中选取了ALTMRetinex算法,发现Github主的Java方法省略了源Matlab代码的局部提升及部分公式。...
原创
1583阅读
2评论
1点赞
发布博客于 2 年前

头条春招视频面(卒)

上来自我介绍,问了熟悉的语言,开始问JAVA基础、static、volatile、GC、问了HTTP、问了TCP、问了Linux命令。基本都不会0.0 恐怖+凉凉问1:项目中经常遇到GC “斯拜客”怎么处理:听都没听过啊,这啥玩意哦。查:gc spike? GC过于频繁,eden和老年代都是100%,应该检查内存溢出或者短时间内分配的大对象等情况造成的内存无法回收。问2:垃圾回收器都有哪些...
原创
582阅读
0评论
0点赞
发布博客于 2 年前

类加载机制笔记——类初始化时机

类加载机制虚拟机把描述类的数据从Class文件(可以以任何形式存在)加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。Java里天生可以动态扩展的语言特性就是依赖运行期动态加载和动态链接这个特点实现的。生命周期类从被加载到虚拟机内存中开始,到卸载出内存为止,他的整个生命周期包括:加载验证准备解析初始化使用卸载注:加载、...
原创
109阅读
0评论
0点赞
发布博客于 2 年前

JAVA+OpenCV图像增强——直方图均衡、自适应直方图均衡、拉普拉斯局部增强、对数变换增强、伽马增强

图像增强图片太亮、太暗等问题。环境:JAVA+Opencv4直方图均衡 /** * 增强对比度 * * @param src BGR格式图像 * @return */ public static Mat histEqualize(Mat src) { Mat dst = src.clone(); ...
原创
2191阅读
3评论
2点赞
发布博客于 2 年前

购物项目实战学习记录(9)——购物车及结算

进入购物车页面后台逻辑CartController @RequestMapping(value = "/cart", method = RequestMethod.GET) public String cart(Model model, HttpServletRequest request) { WebUser webUser = getCurrentLoginU...
原创
1373阅读
0评论
0点赞
发布博客于 2 年前

购物项目实战学习记录(8)——商品详情页

功能点详情展示调整购买数量加入购物车加入收藏加入开团提醒详情展示的后台逻辑DealController @RequestMapping(value = &amp;amp;quot;/item/{skuId}&amp;amp;quot;, method = RequestMethod.GET) public String detail(Model model, @PathVariable Long skuId, HttpServ...
原创
577阅读
0评论
0点赞
发布博客于 2 年前

购物项目实战学习记录(6)——用户注册及登录

用户注册(1)手机号注册(2)邮箱注册用户登录登录Controller /** * 显示登陆页面 * @param request * @param model * @return */ @RequestMapping(value = &amp;quot;/login&amp;quot;, method = RequestMethod.GET) pu...
原创
365阅读
0评论
0点赞
发布博客于 2 年前

数据增强/数据扩展/Data Augmentation/imgaug

深度学习深度学习大量的样本,即使基于迁移学习,但原样本可能并不适用当前的识别场景,还是需要大量的数据去进行微调。数据增强使用imgaug进行数据增强,他可以把标注点和图像同步进行变化。github:https://github.com/aleju/imgaugwindows底下使用pip安装imgaug,需要依赖库geos,需要将geos.dll``geos_c.dll放在环境中(系统环境...
原创
757阅读
9评论
1点赞
发布博客于 2 年前

购物项目实战学习记录(7)——分页功能实现

几个重要的类PagingResult分页结果的封装,结果(List)+分页信息。Search查询相关的类,封装查询条件+分页信息(当前页和每页记录数)。BaseMybatisDAO分页查询相关方法。前端分页显示通过PagingResult中的当前页码数、总页码数、每页显示数来计算最大显示页码。下面通过一些逻辑,来制定第一页、最后一页、中间页的显示。&amp;amp;amp;amp;lt;#macro pagi...
原创
200阅读
0评论
0点赞
发布博客于 2 年前

购物项目实战学习记录(5)——来访IP地区确定

流程(1)从Request中获取来访IP:真实IP、代理IP(x-forwarded-for字段)等。(2)利用第三方库或第三方API提供商(如淘宝http://ip.taobao.com/service/getIpInfo.php?ip=)获取到地区信息。(3)从本地数据库查询地区信息。代码(1)从Request获取IP: private static String getRe...
原创
110阅读
0评论
1点赞
发布博客于 2 年前

购物项目实战学习记录(4)——DAO设计(MyBatis)

DAO设计采用MyBatis进行与数据库的交互操作,使用Spring统一管理。BaseMybatisDAO(Mybatis基类)SqlSessionTemplateMyBatis提供的支持Spring的模板类。@Autowired private SqlSessionTemplate template;对应的配置文件applicationContext.xml &amp;lt;bean c...
原创
156阅读
2评论
0点赞
发布博客于 2 年前

购物项目实战学习记录(3)——缓存设计(Redis)

缓存方案Redis和Memcached中选择Redis,因为Redis可通过一些匹配的原则找到对应的Key,而Memcached需要在上层应用自己设计匹配规则。缓存对象(CacheObject )public abstract class CacheObject implements Serializable { private static final long serialVersi...
原创
116阅读
0评论
0点赞
发布博客于 2 年前

购物项目实战学习记录(2)——模板引擎及Helper设计

FreeMarkerFreeMarker 是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。模板编写为FreeMarker Template Language (FTL)。它是简单的,专用的语言, 不是 像PHP那样成熟的编程语言。...
原创
117阅读
0评论
0点赞
发布博客于 2 年前

win10下的geos.dll与geos_c.dll

win10下Py安装Shapely需要的依赖,win10下Py安装Shapely需要的依赖。
zip
发布资源于 2 年前

购物项目实战学习记录(1)——整体设计及首页代码设计

This is my study notes from MOOC.表设计表需求前台商品分类商品售卖地区用户信息商品列表商品详情购物车订单表个人中心:消息、收藏、收货地址、个人信息后台商品管理订单管理安全权限:独立模块,菜单、角色、用户表。地区管理商家管理结构ER图前台deal:商品deal_category:商品分类area:商品地区,虽然...
原创
304阅读
0评论
0点赞
发布博客于 2 年前

购物项目实战学习记录(1)——整体设计及首页代码设计

This is my study notes from MOOC.表设计表需求前台商品分类商品售卖地区用户信息商品列表商品详情购物车订单表个人中心:消息、收藏、收货地址、个人信息后台商品管理订单管理安全权限:独立模块,菜单、角色、用户表。地区管理商家管理结构ER图前台deal:商品deal_category:商品分类area:商品地区,虽然...
原创
304阅读
0评论
0点赞
发布博客于 2 年前

Android项目小记——nomedia文件与MediaStore媒体库

避免相册显示避免相册显示项目底下的多媒体文件,如.mp4、.png等文件。在目录下放置一个.nomedia文件,则可以放置媒体库扫描该目录。问题项目使用了Android原生的分享功能,该功能需要用到媒体库的数据库,问题:不想让看到,还想可以调用原生分享,强制插入到媒体库,相册(用的就是媒体库)又能看到。用FileProvider还分享不全-.-过程强制同步在媒体数据库。(1)使用Med...
原创
1283阅读
0评论
0点赞
发布博客于 3 年前

Oracle修改记录——用另一个表的查询值更改当前表的多个字段

update table1 a -- 使用别名set (a.xm,a.cj)=(select b.xm,b.cj from table2 b where b.xh=a.xh)where exists (select 1from table2 bwhere b.xh=a.xh);总感觉这样效率很低0.0 ,完成任务为主吧。...
原创
1621阅读
0评论
0点赞
发布博客于 3 年前

并发学习笔记(七)——锁优化的思路和方法

锁优化的思路减少锁持有时间public synchroized void fun(){ otherCode1(); mutexMethod(); otherCode2();}尽量改为如下形式:public void fun(){ otherCode1(); synchroized(this){ mutexMethod(); } otherCode2();}尽可能...
原创
144阅读
0评论
0点赞
发布博客于 3 年前

OpencvForAndroid记录——get()和put()函数

最近写这块代码的性能优化。public static Mat array2Mat(double[][][] data) { int height = data.length; int width = data[0].length; Mat mat = new Mat(height, width, CvType.CV_8UC3); ...
原创
1895阅读
0评论
0点赞
发布博客于 3 年前

OpencvForAndroid记录——get()和put()函数

最近写这块代码的性能优化。public static Mat array2Mat(double[][][] data) { int height = data.length; int width = data[0].length; Mat mat = new Mat(height, width, CvType.CV_8UC3); ...
原创
1895阅读
0评论
0点赞
发布博客于 3 年前

并发学习笔记(六)——涉及多线程的设计模式

单例模式不用说,线程池等。不变模式一个类的内部状态创建后,在整个生命周期都不会发生改变,就是不变类。不变模式不需要同步。// final无子类public final class Person{ private final String name; public Person(String name){ this.name = name; } public String g...
原创
96阅读
0评论
0点赞
发布博客于 3 年前

并发学习笔记(五)——并发包(线程池--了解)

线程池使用线程池可以避免线程的创建和销毁的代价。线程池的大概实现:wait、notify、Runnable target。类Executor:顶层接口,具有execute方法。ExecutorService:提供了一些额外的方法,如shutdown、isShutdown等方法,还提供了submit(Callable)方法,提供线程执行的返回值。ThreadPoolExecutor:线...
原创
137阅读
0评论
0点赞
发布博客于 3 年前

并发学习笔记(五)——并发包(线程池--了解)

线程池使用线程池可以避免线程的创建和销毁的代价。线程池的大概实现:wait、notify、Runnable target。类Executor:顶层接口,具有execute方法。ExecutorService:提供了一些额外的方法,如shutdown、isShutdown等方法,还提供了submit(Callable)方法,提供线程执行的返回值。ThreadPoolExecutor:线...
原创
137阅读
0评论
0点赞
发布博客于 3 年前

并发学习笔记(四)——并发包(并发容器)

HashMap/List/Set不是线程安全的容器。可以使用Collections.synchronizedMap(Map map)进行包装,从而达到线程安全的目的,适合并发量比较小时使用。 public V get(Object key) { synchronized (mutex) {return m.get(key);} } ...
原创
226阅读
0评论
0点赞
发布博客于 3 年前

并发学习笔记(三)——并发包(同步控制工具)

ReentrantLock(重入锁)可重入:单线程可以重复进入(次数),但要重复退出(相同次数)public class TestReentrantLock implements Runnable { private static ReentrantLock lock = new ReentrantLock(); private static int i = 0; ...
原创
99阅读
0评论
0点赞
发布博客于 3 年前

Android项目小结——硬解码(MediaCodec实现[MP4]转YUV420各种格式)

YUV420yuv420p:yv12(YYYYYYYY VV UU)、I420(YYYYYYYY UU VV)yuv420sp:nv12(YYYYYYYY UV UV)、nv21(YYYYYYYY VU VU)同样是三种方式(1)基于缓存(ByteBuffer)的同步编码(2)基于缓存(ByteBuffer)的异步编码(3)基于缓存数组的同步编码(废弃,可能效率没前面两种高吧)基...
原创
3352阅读
0评论
0点赞
发布博客于 3 年前

Android项目小结——硬编码(MediaCodec实现YUV420[p|sp]转[h264])

概述MediaCodec可以实现硬编码(相比FFmpeg来说,效率很高)。可供参考的博客非常多,只是记录一下自己参考后改写的东西,难免会忘记。三种方式(1)基于缓存(ByteBuffer)的同步编码(2)基于缓存(ByteBuffer)的异步编码(3)基于缓存数组的同步编码(废弃,可能效率没前面两种高吧)基于缓存(ByteBuffer)的同步编码很典型的代码例程。public c...
原创
2319阅读
3评论
1点赞
发布博客于 3 年前

Android项目小结——视频播放(MediaPlayer与SurfaceView实现)

一直在做安卓的项目,想着找个时间总结一下,可能太懒了,一直没总结。代码参考了许多Blog和Github,修修补补改改挺多地方,记录一下,侵删私信或注明出处。播放主要的类三个Interface:IMyPlayer:定义了设置资源、播放、暂停、停止、获取播放时长、当前位置、定位到、以及Activity状态等函数方法。IMyDisplay:定义了获取播放视图(View),播放的Surf...
原创
431阅读
0评论
1点赞
发布博客于 3 年前

Android项目小结——可对焦的视频录制(MediaRecorder与TextureView实现)

一直在做安卓的项目,想着找个时间总结一下,可能太懒了,一直没总结。代码(尤其是对焦框显示)参考了许多Blog和Github,修修补补改改挺多地方,记录一下,侵删私信或注明出处。录制主要的类MediaRecorder:安卓封装的视频录制的类AutoFitTextureView:继承自TextureView,实现自定义纵横比缩放,视频录制基于该组件。AnimationImageVie...
原创
1996阅读
0评论
1点赞
发布博客于 3 年前

并发学习笔记(二)——无锁

概念原子性原子性是指一个操作是不可中断的,即使是在多个线程一起执行的时候,一旦操作开始,就不会被其他线程干扰。有序性线程并发时,程序的执行可能就会出现乱序。可见性可见性是值当一个线程修改了某一个共享变量的值,其他线程是否能够立即知道这个修改。无锁无锁类的原理CAS(compare and swap)CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内...
原创
64阅读
0评论
0点赞
发布博客于 3 年前

并发学习笔记(一)——多线程基础

概念并发级别阻塞无障碍无锁无等待其中无障碍、无锁、无等待都是非阻塞式的。无障碍(Obstruction-Free)(1) 无障碍是一种最弱的非阻塞调度(2)自由出入临界区,宽进严出(3)无竞争时,有限步内完成操作(4)有竞争时,回滚数据举例:一群线程同时进入临界区,当某线程发现数据被修改时,回滚自己的操作,重新进行操作。注:有可能所有线程互相影响,都不能完成任务。无...
原创
69阅读
0评论
0点赞
发布博客于 3 年前

Nginx学习笔记——性能优化

文件句柄文件句柄Linux、Unix一切皆文件,文件句柄就是一个索引。设置方式系统全局修改(默认1024)、用户局部性修改、进程局部性修改全局/用户修改vim /etc/security/limits.conf加入如下内容:root soft nofile 65535root hard nofile 65535* soft nofile 25535* hard no...
原创
180阅读
0评论
0点赞
发布博客于 3 年前

Nginx学习笔记——压力测试

ab接口压力测试安装yum install httpd-tools使用ab -n 2000 -c 2 http://127.0.0.1/-n 总的请求数-c 并发数-k 是否开始长连接测试动静分离的性能将静态资源放在Nginx中,使用ab工具进行压测-n 2000 -c 20,request per second为8K级别。将静态资源放在Tomcat中,使用ab工具进行压测-...
原创
530阅读
0评论
0点赞
发布博客于 3 年前

Nginx学习笔记——相同server_name优先级、location优先级、try_files、alias

相同server_name多个虚拟主机优先级访问比如如下配置:server { listen 80; server_name testserver1 127.0.0.1; location { ... }}server { listen 80; server_name testserver2 127.0.0.1; location { ... }}比如配置了不...
原创
2652阅读
0评论
0点赞
发布博客于 3 年前

Nginx学习笔记——geoip模块(地域信息)

概述基于IP地址匹配MaxMind GeoIP二进制文件,读取IP所在地域信息。安装模块yum install nginx-module-geoip使用场景(1)区别国内外作HTTP的访问规则(国内访问国内服务器,国外访问国外服务器)(2)区别国内城市地域作HTTP访问规则(可作就近访问规则)测试(1)首先需要在/etc/nginx/nginx.conf中加载GeoIp模块loa...
原创
931阅读
0评论
0点赞
发布博客于 3 年前

Nginx学习笔记——Secure_link模块

作用(1)指定并允许检查请求的链接的真实性以及保护资源免遭未经授权的访问(2)限制链接生效周期配置语法Syntax:secure_link expression;Default:默认无Context:http,server,locationSyntax:secure_link_md5 expression;Default:默认无Context:http,server,locat...
原创
2712阅读
0评论
0点赞
发布博客于 3 年前

Nginx学习笔记——rewrite规则

Nginx的rewrite规则实现url重写以及重定向。场景URL访问挑战,支持开发设计页面跳转、兼容性支持、展示效果等SEO优化维护后台维护、流量转发等安全,使用rewrite可以实现伪静态语法配置Syntax:rewrite regex replacement [flag];Default:默认无Context:server,location,if如:rewri...
原创
142阅读
0评论
0点赞
发布博客于 3 年前

Nginx学习笔记——场景实践之《动静分离》

动静分离通过中间件将动态请求和静态请求分离。优势分离资源,减少不必要的请求消耗,减少请求延时。请求流程图场景以Tomcat为例,Tomcat处理jsp动态请求,而Nginx直接处理静态资源。场景演示Nginx与Tomcat配合,演示动静分离的场景,以Nginx为中间件,动态请求访问Tomcat,静态资源直接从中间件返回给客户端进行显示。(1)首先在Tomcat/webapps...
原创
154阅读
0评论
0点赞
发布博客于 3 年前

Nginx学习笔记——场景实践之《缓存服务》

缓存类型使用缓存,就是为了减少后端的压力。(1)服务端缓存:Memcached、Redis等。(2)代理缓存:Nginx、代理、中间件上的缓存。(3)客户端缓存:浏览器上面的。代理缓存proxy_cache配置语法先定义缓存路径:syntax:proxy_cache_path path [levels=levels][use_temp_path=on|off] keys_zon...
原创
190阅读
0评论
0点赞
发布博客于 3 年前

Nginx学习笔记——场景实践之《负载均衡》

负载均衡GSLB全局负载均衡。如:张三访问某应用,先请求了边缘调度节点,边缘调度节点由中心调度节点调控,然后再去请求应用服务。SLB调度节点和服务节点通常在一个逻辑地域。四层负载均衡和七层负载均衡四层负载均衡传输层控制,对客户端的请求,进行TCP/IP协议的包转发,性能快。七层负载均衡可以处理应用层,如改写HTTP的头信息、重定向等。Nginx就是一个典型的七层负载均衡...
原创
611阅读
0评论
1点赞
发布博客于 3 年前

Nginx学习笔记——场景实践之《代理服务》

代理服务Nginx可以做【HTTP、HTTPS】、【ICMP、POP、IMAP】邮件、【RTMP】流媒体的代理。正向代理比如:公司内只有一台电脑可以连入公网,所有的计算机一个代理,通过这台计算机(代理)都可以连入公网。反向代理比如:一个客户端请求一个网站,往往请求的是代理,通过代理给你分配一个服务器,让你访问。正反向的区别正向代理代理的对象是客户端。反向代理代理的对象是服务端。...
原创
117阅读
0评论
0点赞
发布博客于 3 年前

Nginx学习笔记——场景实践之《静态资源web服务》

前备知识适用场景静态资源非服务器动态运行生成的文件类型种类浏览器端渲染HTML、CSS、JS图片JPEG、GIF、PNG视频FLV、MPEG文件TXT等任意下载文件CDN内容分发网络,草图如下:功能1:静态资源的访问语法配置Linux下零拷贝技术:Syntax:sendfile on | off;Default:sendf...
原创
171阅读
0评论
0点赞
发布博客于 3 年前

Nginx学习笔记——访问控制

访问控制(1)基于IP的访问控制:http_access_module(2)基于用户的信任登录:http_auth_basic_modulehttp_access_module配置语法Syntax:allow address | CIDR | unix: | all;default:默认无Context:http,server,location,limit_exceptSyntax...
原创
553阅读
0评论
0点赞
发布博客于 3 年前

Nginx学习笔记——请求限制

请求限制(1)连接频率限制:limit_conn_module(2)请求频率限制:limit_req_module配置语法连接限制配置语法Syntax:limit_conn_zone key zone=name:size;Default:默认无Context:httpname:空间名字,size:空间大小并发数量Syntax:limit_conn zone number;De...
原创
153阅读
0评论
0点赞
发布博客于 3 年前

Nginx学习笔记——模块(官方模块)

模块分为官方模块、第三方模块。sub_status_module用于监控Nginx客户端连接的信息。配置语法Syntax:stub_statusDefault:默认无Context:server,location配置在/etc/nginx/conf.d/default.conf中增加如下配置: location /mystatus { stub_statu...
原创
87阅读
0评论
0点赞
发布博客于 3 年前

Nginx学习笔记——日志(log_format)

日志配置在/etc/nginx/nginx.conf中有log_format的配置。 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' ...
原创
5212阅读
0评论
0点赞
发布博客于 3 年前

Nginx学习笔记——Helloword

简述Nginx是一个开源且高性能、可靠的HTTP中间件、代理服务。优势(1)IO多路复用epoll(2)轻量级(3)CPU亲和(affinity)(4)sendfile环境部署(1)系统为CentOS 7.2 双核 1G内存(2)关闭iptables和selinuxiptables -Liptables -Fiptables -t nat -Liptables -t na...
原创
276阅读
0评论
0点赞
发布博客于 3 年前

Redis学习笔记——Jedis、JedisPool

导入Jar包(1)commons-pool-1.6.jar,池化需要的commons包。(2)jedis-2.1.0.jar,jedis的Jar包。连接Jedis(1)首先需要开启Jedis的Server,在终端中正常开启6379端口的Jedis服务器。public class TestPing { public static void main(String[] args){ J...
原创
10034阅读
2评论
2点赞
发布博客于 3 年前

Redis学习笔记——复制(Master/Slave)

概念也就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备机的master和slaver机制,Mater以写为主,Slave以读为主。作用(1)读写分离(2)容灾恢复使用(1)配从(库)不配主(库):主机不配置,从机才去配置。(2)从库的配置:slaveof主库IP主库端口1)每次与master断开之后,都需要重新连接,除非你配置进redis.conf文件。2)In...
原创
788阅读
0评论
0点赞
发布博客于 3 年前

Redis学习笔记——发布订阅(了解即可)

概述进程间的一种消息通信模式:发布者(pub)发送消息,订阅者(sub)接收消息。了解即可,不会使用Redis做消息中间件。订阅/发布消息图注:客户端订阅消息。注:服务器发送消息给订阅的客户。命令PSUBSCRIBE pattern [pattern ...]:订阅一个或多个符合给定模式的频道。PUBSUB subcommand [argument [argument ......
原创
83阅读
0评论
0点赞
发布博客于 3 年前

Redis学习笔记——事务

概述可以一次执行多个命令,本质是一组命令的集合。一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其他命令插入,不许加塞。特性一个队列中,一次性、顺序性、排他性的执行一系列命令。常用命令及场景模拟常用命令DISCARD:取消事务,放弃执行事务块内的所有命令。EXEC:执行所有事务块内的命令。MULTI:标记一个事务块的开始。UNWATCH:取消WATCH命令对所有key...
原创
57阅读
0评论
0点赞
发布博客于 3 年前

Redis学习笔记——持久化RDB和AOF

RDB(Redis DataBase)在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读入到内存里。Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能。如果需要进行大规模...
原创
128阅读
0评论
0点赞
发布博客于 3 年前

Redis学习笔记——解析配置文件

位置安装目录下,有一个出厂默认配置文件,一般修改前,都要拷贝进行修改。解析Units单位配置大小单位,开头定义了一些基本的度量单位,只支持bytes,不支持bit。对大小写不敏感INCLUDES包含可以通过includes包含,redis.conf可以作为总闸,包含其他配置文件。GENERALdaemonizeyes:配置为守护线程,当服务开启后,关闭终端等不会使服务结束,...
原创
135阅读
0评论
0点赞
发布博客于 3 年前

Redis学习笔记——数据类型

五大数据类型字符串 String(1)最基本的类型,一个Key对应一个Value。(2)String类型是二进制安全的,redis的String可以包含任何数据,比如Jpg图片或者序列化的对象。(3)一个Redis的字符串value最多是512M(理论)。哈希 Hash(类似Map)(1)hash是一个键值对集合。(2)hash是一个string类型的field和value的映射表,...
原创
155阅读
0评论
1点赞
发布博客于 3 年前

Redis学习笔记——安装

概述Redis:Remote Dictionary Server(远程字典服务),是一个高性能的(Key/Value)分布式内存数据库,基于内存运行,并支持持久化的NoSQL数据库。三个特点Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候再次加载进行使用。Redis不仅仅支持简单的Key-Value类型的数据,同时还提供list、set、zset、hash等数据结构...
原创
70阅读
0评论
0点赞
发布博客于 3 年前

Redis学习笔记——NoSQL

多数据源多数据类型多数据源多数据类型的存储问题。以淘宝举例:商品基本信息:不会经常变动,但经常查询,故使用Mysql进行存储。商品描述、详情、评价信息(多文字类):文字类会是读写IO性能变差,使用MongoDB存储。商品的图片:采用分布式文件系统,如淘宝的TFS、Hadoop的HDFS、Google的GFS等。商品的关键字(搜索引擎):淘宝内用ISearch。商品的波段性的热点高频信...
原创
88阅读
0评论
0点赞
发布博客于 3 年前

Shiro学习笔记——remember me

认证和记住我的区别subject.isAuthenticated(),表示用户进行了身份验证登录的,即使用subject.login进行了登录。subject.isRemebered(),表示用户是通过记住我登录的,此时可能并不是真正的你(如你的朋友使用你的电脑,或者你的cookie被窃取)在访问的。两者二选一,即subject.isAuthenticated()==true,则subje...
原创
134阅读
0评论
0点赞
发布博客于 3 年前

Shiro学习笔记——缓存

缓存CacheManagerAware接口Shiro内部响应的组件(DefaultSecurityManager)会自动检测响应的对象(如Realm)是否实现了CacheManagerAware并自动注入响应的CacheManager。Realm(举例)我们写的Realm是继承自AuthorizingRealm的,它的父类CachingRealm是实现了CacheManagerAware接...
原创
59阅读
0评论
0点赞
发布博客于 3 年前

Shiro学习笔记——会话管理

概述Shiro提供了Session的支持,主要用途是在Service层获取到Handler层的Session的信息。简单用法ShiroHandler.java: @RequestMapping(&amp;amp;quot;/testShiroAnnotation&amp;amp;quot;) public String testShiroAnnotation(HttpSession session) { ...
原创
640阅读
0评论
1点赞
发布博客于 3 年前

Shiro学习笔记——数据库读取权限信息(不使用硬编码的方式)

在ShiroFilterFactoryBean初始化的过程中,会执行一个setFilterChainDefinitionMap方法,传入了一个Map,该Map就是URL与权限的对应关系。编写一个实例工厂方法FilterChainDefinitionMapBuilder.java:public class FilterChainDefinitionMapBuilder { pub...
原创
822阅读
0评论
0点赞
发布博客于 3 年前

Shiro学习笔记——权限注解

使用位置可以放在Controller层的方法上,也可以放在Service层的方法上。注解概述@RequiresAuthenication:表示当前Subject已经通过login进行了身份验证,即Subject.isAuthenticated()返回true。@RequiresUser:表示当前Subject已经身份验证或者通过记住我登录的。@RequiresGuest:表示当前...
原创
81阅读
0评论
0点赞
发布博客于 3 年前

Shiro学习笔记——Shiro的标签

标签guest标签用户没有身份验证时显示相应信息,即游客访问信息。user标签用户已经经过认证/记住我登录后显示相应的信息。authenticated标签用户已经身份验证通过,即Subject.login(token)登录成功,不是记住我登录的。notAuthenticated标签用户未进行身份验证,即没有调用Subject.login(token)进行登录,包...
原创
226阅读
0评论
0点赞
发布博客于 3 年前

Shiro学习笔记——权限与授权

概念授权:访问控制,即在应用中控制谁访问哪些资源。主体: 访问应用的用户,Shiro里面的Subject代表该用户。资源:Web应用里面体现为用户可以访问的URL。权限:应用中,用户能不能访问某个资源。角色:权限的集合。授权方式编程式:通常写if/else授权代码块完成。if(subject.hasRole("admin")){ //有权限}els...
原创
65阅读
0评论
0点赞
发布博客于 3 年前

Shiro学习笔记——认证与加密

流程获取当前的 Subject, 调用 SecurityUtils.getSubject();测试当前的用户是否已经被认证,即是否已经登录。调用 Subject .isAuthenticated()若没有被认证,则把用户名和密码封装为UsernamePasswordToken 对象。 1)创建一个表单 2)把请求提交到SpringMVC的Handler 3)获取用户名和密码执行登...
原创
69阅读
0评论
0点赞
发布博客于 3 年前

Shiro学习笔记——工作流程与过滤器的配置

工作流程web.xml中配置了过滤器,整个访问请求都会被filter过滤 &amp;lt;filter&amp;gt; &amp;lt;filter-name&amp;gt;shiroFilter&amp;lt;/filter-name&amp;gt; &amp;lt;filter-class&amp;gt;org.springframework.web.filter.DelegatingFilte
原创
1282阅读
0评论
0点赞
发布博客于 3 年前

Shiro学习笔记——Spring集成

新建Maven Web工程Maven默认Web版本为2.3,更改Web版本为2.5,打开shiro-2\.settings\org.eclipse.wst.common.project.facet.core.xml,更改为&amp;lt;installed facet=&quot;jst.web&quot; version=&quot;2.5&quot;/&amp;gt;,重启工程。添加依赖打开pom.xml,添加如下依赖:&amp
原创
57阅读
0评论
0点赞
发布博客于 3 年前

Shiro学习笔记——HelloWorld

配置Maven管理依赖,pom.xml中添加如下:&amp;amp;lt;!-- Shiro模块 --&amp;amp;gt; &amp;amp;lt;dependency&amp;amp;gt; &amp;amp;lt;groupId&amp;amp;gt;org.apache.shiro&amp;amp;lt;/groupId&amp;amp;gt; &am
原创
145阅读
2评论
0点赞
发布博客于 3 年前

MyBatis学习笔记——自定义TypeHandler(处理枚举)

默认TypeHandler处理枚举类型EnumTypeHandlerEnumTypeHandler使用的是枚举的名字。 EnumOrdinalTypeHandlerEnumOrdinalTypeHandler使用的是枚举的索引。 自定义TypeHandler处理枚举类型枚举类//希望数据库保存的是100,200这些状态码,而不是默认的0,1索引或者枚举的...
原创
2907阅读
0评论
1点赞
发布博客于 3 年前

MyBatis学习笔记——调用存储过程

配置Mapper XML文件配置调用存储过程的Mapper XML文件,使用&lt;select&gt;标签。&lt;select id="getPageByProcedure" statementType="CALLABLE"&gt; {call hello_test( #{start,mode=IN,jdbcType=INTEGER}, #{en...
原创
91阅读
0评论
0点赞
发布博客于 3 年前

MyBatis学习笔记——批量sqlSession

BATCH模式在全局配置文件的setting中,有一个属性可以设置ExecutorType的类型,默认为SIMPLE,但是通常我们不会在全局配置文件中进行设置。 在使用中,通常在获取SqlSession的时候加以参数进行配置,SqlSession openSession = sqlSessionFactory.openSession(ExecutorType.BATCH);,以往我们都是使用...
原创
5426阅读
2评论
2点赞
发布博客于 3 年前

MyBatis学习笔记——PageHelper插件

依赖pom.xml加入如下:&lt;dependency&gt; &lt;groupId&gt;com.github.pagehelper&lt;/groupId&gt; &lt;artifactId&gt;pagehelper&lt;/artifactId&gt; &lt;version&gt;5.1.2&lt;/version&gt;&lt;/depe
原创
62阅读
0评论
0点赞
发布博客于 3 年前

MyBatis学习笔记——插件机制(AOP)

插件MyBatis所述的插件功能,其实就是一个拦截器功能。概述1、在四大对象创建的时候,每个创建出来的对象不是直接返回的,而是通过interceptorChain.pluginAll(parameterHandler)返回的。 2、pluginAll获取到所有的Interceptor(拦截器)(插件需要实现的接口),调用Interceptor.pluginAll(target),...
原创
1949阅读
0评论
0点赞
发布博客于 3 年前

无图形界面的Linux下部署Tomcat使用验证码出现的NoClassDefNotFound错误

接手助管系统的运维,第一天就出现Bug~前端传入后台,中文乱码(1)排查数据库编码,均为utf-8。 (2)系统采用前后端分离的架构,部署在Tomcat上,断点跟踪,发现前端数据到后端的入参为乱码数据,系统使用SpringMVC进行入参传递,在Controller中进行ISO8859的解码和utf-8的编码(前端一堆JS并看不懂,决定修改后台,但最好还是前后保持编码一致),存入数据库...
原创
370阅读
0评论
1点赞
发布博客于 3 年前

MyBatis学习笔记——运行原理

分层图图来自尚硅谷的MyBatis讲授视频,侵删~ SQLSessionFactory的初始化 (1)创建SqlSessionFactoryBuilder (2)使用build方法,调用三参数的build方法。 (3)创建了一个XML解析器(XPath)。 (4)解析全局配置文件 (5)解析Mapper XML (6)解析Mapper XML的...
原创
143阅读
0评论
0点赞
发布博客于 3 年前

MyBatis学习笔记——逆向工程之代码生成器

MyBatis Generator代码生成器,顾名思义,就是帮你生成一些代码,从数据库分析表,生成Bean类、Mapper接口、Mapper XML。加入Jar依赖pom.xml加入如下依赖: &lt;dependency&gt; &lt;groupId&gt;org.mybatis.generator&lt;/groupId&gt; ...
原创
1120阅读
0评论
0点赞
发布博客于 3 年前