- 博客(26)
- 收藏
- 关注
原创 常用的mysql查询--mybatis
1. <select id="getOrdersGoodByTime" resultMap="BaseResultMap"> select distinct resourceId,goods_name(去掉俩个字段都重复的情况) from orders_goods <where> <...
2018-11-09 23:01:38 187
原创 反面法
反面法:在实际的代码编写的过程中,我们常常困于从正面思考会出现问题,但是倒过来思考往往会简单很多!|举例:做过的行业云项目 问题:我们在查询账单信息的时候,顺便从我们数据库中取出商品名! 原思路:先从我们库中去查询商品名和resourceId,然后根据resourceId去第三方去调接口! 问题:因为从我们库中取出的resourceId去第三方接口查询的时候,可能会出现查询不到这样的...
2018-11-09 22:56:12 225
原创 map在实际项目的中妙用
1.需求描述:在批量编辑购物车的时候,考虑到因为阶梯价不同,导致商品编辑的库存超过总库存!比如这样的数据:[{"cartId":"1","goodsId":1,"skuId":"1","deliveyId":"1","number":1},{"cartId":"2","goodsId":1,
2018-11-09 22:46:29 599
原创 常用的linux命令
1.cat catalina.out | grep c.t.service.orders.api.AppletController--------具体定位到某一个错误日志
2018-11-09 21:58:08 187
转载 idea中git的版本回退
git的版本回退的前提:回退的版本必须是已经提交的版本参考:https://blog.csdn.net/gomeplus/article/details/78241070问题:自己的远端被污染了怎么办?第一种方式:git push -f第二种方式:git push origin –delete <分支名> 再推到新建的分支 ...
2018-11-08 13:42:10 484
原创 栈
一.什么是栈?1.后进者先出,先进者后出,这就是典型的栈结构。2.从栈的操作特性上来讲,是一种操作受限的线性表,只允许在端插入或删除。类比:摆盘子,后放者在上面,先放者在下面。二.为啥需要栈1.栈是一种操作受限的数据结构,其操作特性用数组或者链表均可实现。2.任何数据结构都是对特定应用场景的抽象,数组和链表虽然使用起来比较灵活,但却暴露了所有的操作,难免比较危险。3...
2018-10-23 09:26:18 125
转载 Java使用正则表达式去除小数点后面多余的0功能
直接上代码 BigDecima(10,2)--->在转化为字符串的时候会加上后面的0------》比如BigDecimal a=79;String ss=a+""--->ss=79.00这个时候就会要把后面的0去掉/** * 去掉多余的.与0 * @author Hust * @Time 2011-11-7 */public class TestString...
2018-10-10 17:04:14 1119
原创 数组与链表之于cpu缓存
cpu的缓存机制:cpu从内存中读取数据的时候,会先把读取的数据加载到cpu的缓存中。而cpu每次从内存中读取数据并不是只读取那个特定要访问的地址,而是读取一个数据块(视情况而定一段连续的内存地址)并保存到cpu的缓存中,然后下次访问内存数据的时候就会先从cpu缓存开始查找,如果找到就不需要再从内存中取。这样就实现了比内存访问速度更快的机制,这同时也是cpu缓存存在的意义:为了弥补内存访问速度过慢...
2018-10-08 15:25:39 827
原创 如何实现LRU缓存淘汰算法
缓存是一种提高数据读取性能的技术,比如常见的cpu缓存以及浏览器缓存!但是缓存的大小有限,当缓存用满的时候,哪些数据应该被清理出去,哪些数据应该被保留?解决方案:FIFO--->先进先出 LFU---> 最少使用 LRU-->最近最少使用 比方:买来很多技术书太占用书房空间了,这时候会选择扔掉一些书籍,但是采取啥样的策率呢?一般就是上面三种策率!问题:...
2018-10-06 09:54:22 5115 5
原创 为啥编程语言中的数组都从0开始编号?
我们在学习任何一种语言的时候,都会遇到数组这种数据类型,但是你是否下意识的想过为啥数组的下标是从0开始编号,而不是从1开始编号?1.首先来对数组做一个定义:数组(Array)是一种线性表数据结构,它用一组连续的内存空间,来存储一组具有相同类型的数据。1)名词解释---线性表:线性表就是数据排成像一条线一样的结构。每个线性表上的数据最多只有前和后俩个方向!线性表与非线性表做对比:...
2018-10-03 16:39:18 268
原创 分布式系统的基石--序列化以及反序列化
1.序列化的意义序列化:就是把对象变为可存储或者可传输的形式过程---》把对象转化为字节序列反序列化:就是序列化的逆向过程,把字节序列恢复为对象2.序列化面临的挑战序列化的俩个重要指标:1.序列化以后数据的大小 2.序列化操作对本身操作系统的开销java语言本身对序列化提供了支持,也是java语言本身最重要的底层机制之一,java本身提供了序列化机制存在俩个问题1.序列...
2018-10-02 10:33:11 268
原创 https协议的原理
https简介:https相对于http,在于它对数据进行了一层加密,相当于 http+SSL/TLS那么http---》https的演变经历哪些问题与思考?1.既然对数据加密,那我们使用对称数据加密产生问题:2.非对称加密就是说我们所有客户端都是用统一的公钥进行加密,然后在服务端用私钥进行解密!问题:我们客户端的公钥从哪去拿?1).通过服务端去分发...
2018-09-30 17:47:20 127
原创 时间复杂度
一般情况下,我们程序中的时间复杂度主要分为4种,分别是:1.最好情况时间复杂度:判断代码最快结束的情况2.最坏情况时间复杂度:判断代码最慢结素的情况3.平均情况时间复杂度:考虑每种可能情况执行的次数K以及对应的概率P之和(也就是我们经常说的期望)4.均摊时间复杂度:代码块的执行存在俩种截然相反的时间复杂度的情况,一般取出现频率最多的情况为时间复杂度!举例:在这段代码中...
2018-09-29 14:08:03 205
原创 滑动窗口
常规收发数据的方式:这里既有发送缓存区又有接收缓存区,但是有一个问题是假设我是发送方,我源源不断地给接收方发送数据,这个时候接收方来不及接收,这个时候就会出现丢包的问题!这个场景就类似于,打电话的时候让别人记电话号码,别人一般一下子只能记住4个数字,通常的报数:1345 6789 321 先说4个字母等到对方确认收到之后再接着说后面4个字母!如何解决这个问题呢?这就引入了滑动窗口这...
2018-09-27 17:12:37 166
原创 一个 http 请求在整个网络中的请求过程!
1.以我们访问www.baidu.com为例,首先是去访问DNS获取到对应的ip,接下来的流程如下图 当然,上面这俩张图纯粹只是发请求到服务器接收!同样的,服务器响应到浏览器也是同样的过程问题1:在网络传输的过程当中,会出现报文丢失这一种情况,因为IP协议只是一个尽力而为的协议,那这种情况怎么处理?方案:在传输层提供俩种可供选择的协议,Tcp和Udp协议,其中Tcp协议可以...
2018-09-27 12:00:06 1719
原创 常用视频截图的俩种方式
1.ffmpeg这种方式需要我们安装ffmpeg这个客户端软件!然后在java代码中打开程序并且截图!直接上代码:---------》ffmpegPath:ffmpeg安装的路径 upFilePath:视频的路径 (可以是线上地址) mediaPicPath:截图想要存放的路径 String url = AbstractOssClientUtil.putObject(picture...
2018-09-26 21:11:07 518
原创 cdn加速
名词解释:DNS:万维网上作为域名和IP地址相互映射的一个分布式数据库,让用户更加方便的去访问互联网,而不用去记可以被计算机识别的IP串。CDN:内容分发网络!目的让用户能够就近访问内容,提高命中率!传统的访问网络的流程:步骤:1.用户通过浏览器访问一个域名 2.从DNS获取与域名一一对应的IP地址,返回给 浏览器3.浏览器通过获取的IP访问相应的主机4.主机根据相应的请求返回...
2018-09-26 12:15:19 976
原创 如何过滤表情
我们一般在项目中会遇到用户输入表情,然后我们按照正常的方式存储到数据库中,结果取出来就变成来乱码!那今天我们就来解决如何处理表情的问题!1.引入maven依赖<dependency> <groupId>com.vdurmont</groupId> <artifactId>emoji-java</artifactId&g...
2018-09-25 10:07:10 714
原创 redis---芝麻信用分
遇到的问题:redis存储数据key固定数据覆盖的问题问题描述:步骤:1.前端调用获取芝麻信用分接口2.在获取芝麻信用分接口中调用支付宝接口,获取芝麻信用分3.支付宝在异步回调中推给我们芝麻信用分4.根据芝麻信用分去更新入库出现问题:1.调用获取芝麻信用分接口,这个时候要用redis保存nailUserId,以及nailCropId,在回调里面去去做更新!但如果...
2018-09-19 23:38:35 138
原创 业务--复杂度
业务:产品制定的需求!例如:原思路:1.先查询出店铺相关的信息2.根据shopId分别去查询店铺销售总额和收益,邀请分润,平台奖励--放入一个集合中3.根据集合中销售总额的属性进行排序附上关键代码:Collections.sort(dataList, new Comparator<Map>() { /* * int compare(Map...
2018-09-19 20:37:51 957
原创 gitlab项目从新建到部署
1.首先新建一个空的项目,在已有的项目里面新建自己的项目!2.这里项目建完之后,实际上这是一个空的项目,这就需要我们把自己本地的项目推上去!具体在自己的本地执行如下命令1)进入项目目录 cd2)git init3)git remote add origin git@git.cnjiang.com:java/taozugong-dingding.git(空项目地址)4)g...
2018-08-23 19:05:15 3036
原创 计算机语言发展史
在讲Spring思想之前,我先提一下计算机语言的发展史,我认为要想理解一个事物,首先要理清历史背景以及推动因素!机器语言(1940年之前)使用0和1的二进制码,但是在做计算的时候,比如768 ,我们要写为1100000000,其它的数以此类推,如果再做加减乘除就会变的更加的麻烦,如果要输出一个helloworld,可能要几百个01的组合,看都没法看,更不要说去查找错误了!归纳一下,机器语言的...
2018-08-15 11:37:07 4623
原创 计算机发展史--》进程---》线程
首先,我觉得如果想要深入理解一个事物的本质,最好的方式就是去追寻这个事物出现的历史背景以及和推动因素,因为自己不是计算机专业,所以理解相关的概念会有疑惑,虽然知其然,但不知其所以然,这是我最近新的感悟,关于计算机发展历史,再到今天的我们熟悉的线程和进程!计算机发展历史:1.一开始我们的计算机其实就是相当于一个计算器,你输入一个指令,然后经过计算机进行运算,最后得出结果,这样的缺点显而易见,...
2018-08-12 10:23:50 725 1
原创 apache poi的使用
第一步:首先引入依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>${poi.version}</version></dependency&
2018-08-12 09:05:40 207
原创 SpringBoot整合PageHelper插件
SpringBoot整合pageHelper插件的时候主要分为以下几步?1.在pom.xml中引入依赖<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId&...
2018-03-28 20:50:24 4017 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人