- 博客(85)
- 收藏
- 关注

原创 技术分享
说明:本篇博客只是记录一些有用的技术方法,不做具体说明,大家可参考然后自己去查阅相关资源 1、根据ip获取用户地理位置信息2、关于服务的启动和更新,提供一个思路:当切换服务时,先检测是否仍有工作线程,直到工作线程全部结束后,停止旧的服务,然后更新启动新服务。3、常见的用户白名单限制,可单独抽取成一个服务,白名单是否生效,建议配置到一个json-config中,通过后端维护来进行开关...
2018-10-28 11:12:26
856
原创 IDEA快捷键贴
等号左侧补全-输入.var回车如我们要得到String name = “zhangsan”;只需输入"zhangsan".var 然后回车即可
2020-06-11 11:50:32
315
1
原创 解析xml并去读写相应数据
一、解析xml字符串步骤有些比较老的服务会通过传输xml字符串来进行传递参数对于这种场景,(在此采用dom4j的方式解析)获取数据步骤如下: //将xml字符串转为Document格式 Document doc = DocumentHelper.parseText(xml_String); //定位获取某节点 Node node = doc.select...
2018-11-15 20:21:54
582
原创 日志查看命令总结
1、查看最新日志tail -f filename2、规定行数显示tail -n 1000:显示最后1000行tail -n +1000:从1000行开始显示,显示1000行以后的head -n 1000:显示前面1000行从第3000行开始,显示1000行。即显示3000~3999行cat filename | tail -n +3000 | head -n 100...
2018-11-10 19:39:55
939
原创 rsa公钥私钥生成方式
rsa公钥私钥生成方式1)使用openssl terminal使用openssl命令: 输入openssl进入OpenSSL>模式 #生成私钥,1024是密钥长度 OpenSSL> genrsa -out rsa_private_key.pem 1024 #将私钥转换成PKCS8格式(按实际需要) OpenSSL> p...
2018-11-10 15:15:14
13261
原创 Java-Function接口函数使用
java.util.function中的Function,Supplier,Predicate和其他函数式接口广泛应用在支持lambda表达式的API中。在此简单介绍Function接口Fuction接口的主要方法有:R apply(T t) : 将对象对应到输入参数上并返回计算结果default<V> Function<T,V> : 将两个fuction整...
2018-11-08 15:53:01
6096
1
原创 Apollo配置中心之配置获取方式
apollo是携程开源的一款配置管理服务,开源地址https://github.com/ctripcorp/apollo apollo配置获取说明文档:https://github.com/ctripcorp/apollo/wiki/Java%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97#311-%E8%8...
2018-11-02 15:46:27
10751
原创 (五)架构篇之数据库开发规范
规范适用场景:并发量大、数据量大的互联网业务一、基础规范(1)必须使用InnoDB存储引擎原因:支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利用率更高(2)必须使用UTF8字符集原因:万国码,无需转码,无乱码风险,节省空间(3)数据表、数据字段必须加入中文注释原因:方便后来的人理解数据库设计(4)禁止使用存储过程、视图、触发器、Event原因:...
2018-10-29 20:39:26
288
原创 protobuf格式化插件protobuf support安装说明
proto 代码格式化插件使用说明1、打开 intellij "Preferences..." 窗口,选择 "Plugins" 选项卡,点击 "Browse repositories..."2、在打开的页面中搜索protobuf support,并点击install安装,如下图步骤2,3,43、如果从插件库无法成功安装,请采用如下方法到官网下载插件包(https://plug...
2018-10-27 12:52:43
11481
原创 (四)架构篇之负载均衡
一、概念负载均衡,是指通过不同的方式实现将request分发到多个服务器节点上,从而实现分布式部署。不同配置的服务器节点可以根据不同权值分配相应的request。二、介绍几种负载均衡的方案1、常见的负载均衡方案常见互联网分布式架构如上,分为客户端层、反向代理nginx层、站点层、服务层、数据层。可以看到,每一个下游都有多个上游调用,只需要做到,每一个上游都均匀访问每一个下游,就...
2018-10-26 12:53:47
247
原创 (三)架构篇之分布式id生成策略
分布式系统常见的一种场景就是要求id全局唯一,以下介绍七种,并分析优劣。1、利用数据库自增id特性。优点:1)简单。2)ID有序排列,分页和排序方便,方便统计数据增长。缺点:1)可用性难以保证:数据库常见架构是一主多从+读写分离,生成自增ID是写请求,主库挂了就玩不转了2)扩展性差,性能有上限:因为写入是单点,数据库主库的写性能决定ID的生成性能上限,并且难以扩展...
2018-10-24 13:58:08
280
原创 BigDecimal的简单使用
一、作用常用于高精度要求,BigDecimal可精确到20位比如:涉及钱的时候常用二、基础使用 //通过new BigDecimal(double)赋值 BigDecimal bigDecimal = new BigDecimal(5.5); //加 bigDecimal.add(BigDecimal.ONE); ...
2018-10-22 21:25:36
1465
原创 (二)架构篇之容量评估
容量评估的步骤与方法【步骤一:评估总访问量】如何知道总访问量?对于一个运营活动的访问量评估,或者一个系统上线后PV的评估,有什么好的方法?答案是:询问业务方,询问运营同学,询问产品同学,看对运营活动或者产品上线后的预期是什么。举例:如果要做一个APP-push的运营活动,计划在30分钟内完成5000w用户的push推送,预计push消息点击率10%,求push落地页系统的总访问量?...
2018-10-19 21:34:12
737
原创 (一)架构篇之架构概况总览
1、总体架构总结1)接入层架构要考虑的问题域为:高可用、扩展性、反向代理+扩展均衡2)nginx、keepalived、lvs、f5可以很好的解决高可用、扩展性、反向代理+扩展均衡的问题3)水平扩展scale out是解决扩展性问题的根本方案,DNS轮询是不能完全被nginx/lvs/f5所替代的最重要的一点就是服务不能宕机,宕机可以立马恢复。可根据实际情况来采用以下三种策...
2018-10-18 17:53:57
799
原创 mysql中的保留关键字,设计数据库时应注意
设计数据库时尽量不要用系统保留关键字,如果非要用,记得用``包裹,如:`desc`Mysq官方文档地址 http://dev.mysql.com/doc/refman/5.7/en/keywords.htmlMySQL 5.7ACCESSIBLE (R) ACCOUNT[a] ACTION ADD (R) AFTER AGAINST AGGREGAT...
2018-10-08 11:21:54
276
转载 数据库SQL语句性能分析
SQL 执行时间分析通过找到执行时间长的 SQL 语句,可以直观的发现数据层的效率问题。1.通过 show processlist 来查看系统的执行情况mysql> show processlist;+----+------+-----------+------+---------+------+-------+------------------+| Id | User ...
2018-10-04 17:23:57
873
原创 涉及钱的操作时数据类型
不要使用÷不要使用double,使用高精度类型BigDecimal(可精确到20位),常用使用方法请参考:https://blog.youkuaiyun.com/qq_37465368/article/details/83279148使用分为基本单位,如:1元 : 100 分...
2018-10-04 16:08:04
552
原创 Lambda表达式()-> {}
1、Lambda 表达式简介Lambda 表达式是一种匿名函数(对 Java 而言这并不完全正确,但现在姑且这么认为),简单地说,它是没有声明的方法,也即没有访问修饰符、返回值声明和名字。你可以将其想做一种速记,在你需要使用某个方法的地方写上它。当某个方法只使用一次,而且定义很简短,使用这种速记替代之尤其有效,这样,你就不必在类中费力写声明与方法了。Java 中的 Lambd...
2018-09-30 13:57:04
10819
转载 Thread和Runnable的区别
首先讲一下进程和线程的区别: 进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1--n个线程。 线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小。 线程和进程一样分为五个阶段:创建、就绪、运行、阻塞、终止。 多进程是指操作系统能同时运行多个任务(程序)。 多线程是指在同一程序中...
2018-09-30 13:41:06
191
原创 springboot整合redisson
遇到的最大问题:redisson配置了password之后依然显示的是未配置密码原因:启动redis的方式不对,没有走redis.config,本文最下边会说明。整合步骤1、添加redisson依赖包<!--redission 依赖包--> <dependency> <groupId>org.rediss...
2018-09-29 14:37:07
4237
原创 springboot整合缓存redis-cache
1、pom添加必要的redis、cache、common依赖 <!--cache 依赖包--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-star...
2018-09-29 11:45:41
1247
原创 Json字符串、Json对象、java对象之间的转换
JSONObject 不知道哪来的那么多的,又是alibaba的,又是org.json,又是net.minidev.json,统统都是废物在这里全部用的: import net.sf.json.JSONObject;反正在转换方面最有效的还是JSONObject.fromObject。话不多说,上例子package com.sky.hrpro.service;import c...
2018-09-28 20:46:22
1507
原创 将一个github项目克隆到另一个github项目步骤
将demo项目克隆并添加到新的github项目的步骤:方法一: 创建repository后,在code页最下边import code,import已存在的项目(使用git下载的url) 方法二: 1)git clone Demo项目 2)git remote rm origin 3) git remote add origin https://github....
2018-09-27 13:47:12
15476
转载 SpringBoot自定义<parent>
<parent> 顾名思义父亲,此处是说当前项目继承的哪个父项目大家在使用Springboot中都知道,默认使用了Springboot的parent。那有人疑问了,能不能不继承它,单独实现自己的parent呢,答案是肯定的。今天我们就来实现这个功能。第一步 配置父项目新建名为SpringBootLearn的maven空项目配置我们的SpringBootLearn项目的p...
2018-09-27 11:06:01
723
原创 记加入github
1、弄了个服务器,想自己搭个gitlab管理代码,没想到折腾了半天之后服务器内存不足2G,故无法安装gitlab。2、于是不想再折腾着弄自己的基站,于是换思路,反正都是暂存代码,学习用的,干脆用github吧。3、步骤github官网地址:https://github.com/1)创建github账号2)点击new repository进行创建一个新的仓库,用来存放自己的项目;...
2018-09-21 21:33:44
169
原创 JdbcTemplate&NamedParameterJdbcTemplate重要方法及事务处理相关简介
1、什么是JDBC? JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API, 可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。 而多的这个template,就是模板,是Spring框架为我们提供的. 所以JDBCTemplate就是Spring对JDBC的封装,通俗点说就是Spr...
2018-09-21 14:27:21
2533
原创 java将图片转换为base64码及解析base64为图片
1、基本流程2、图片转化成base64字符串public static String GetImageStr(String imgFile) {//将图片文件转化为字节数组字符串,并对其进行Base64编码处理 InputStream in = null; byte[] data = null; //读取图片字节...
2018-09-20 14:01:30
6453
1
原创 终端生成base64随机码
有时需要快速生成base64的字符串,可使用终端快速生成。openssl rand 32 -base64生成的字符如下:t4bbDwxtMzj9efw+iiKqlZDpUzUBbG9emWyNys0DTdQ=何为base64码: Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。可...
2018-09-20 13:16:16
4253
原创 配置登录服务器密钥登录
1、生成密钥:ssh-keygen -t rsa位置:~/.ssh下 id_rsa.pub 2、新建文件authorized_keystouch authorized_keysps: 将需要访问该服务器的机器密钥放到这个文件里 3、修改启动配置vi /etc/ssh/sshd_config(1)是否开启密码登录(2)开启密钥登录4、重启ss...
2018-09-19 19:46:56
2452
原创 hosts配置管理
手动修改hosts:vim /etc/hostshosts工具:switchhost 、hozz、multiple-hosthosts文件配置解析那么这个hosts文件的作用是什么呢?其是它是一个没有扩展名的系统文件,可以用记事本等工具打开,作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻...
2018-09-18 17:48:56
457
原创 正则表达式
1、普通字符普通字符包括没有显式指定为元字符的所有可打印和不可打印字符。这包括所有大写和小写字母、所有数字、所有标点符号和一些其他符号。2、非打印字符非打印字符也可以是正则表达式的组成部分。下表列出了表示非打印字符的转义序列:字符 描述 \cx 匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z ...
2018-09-17 15:30:03
683
转载 mysql中char&varchar&text&blob数据类型
(1)char: char不用多说了,它是定长格式的,但是长度范围是0~255. 当你想要储存一个长度不足255的字符时,MySQL会用空格来填充剩下的字符。因此在读取数据时,char类型的数据要进行处理,把后面的空格去除。(2)varchar: 关于varchar,有的说最大长度是255,也有的说是65535,查阅很多资料后发现是这样的:varchar类型在5.0.3以下的版本中的最大长...
2018-09-17 01:52:58
508
原创 Java中Split的坑
遇到问题:字符串spilt之后赋值给数组,继续给数组赋值之后发现ArrayIndexOutOfBoundsException原因:split切分之后会重新定义数组的长度。 String te[] = new String[9]; te[3] = "11"; String v = "1,2,3"; te = v.split(",...
2018-09-15 19:38:32
1026
转载 Map集合的四种遍历方式
import java.util.HashMap;import java.util.Iterator;import java.util.Map;public class TestMap { public static void main(String[] args) { Map<Integer, String> map = new HashMap<...
2018-09-15 15:36:28
166
原创 SpringBoot启动时执行代码
Springboot给我们提供了两种“开机启动”某些方法的方式:ApplicationRunner和CommandLineRunner。在项目启动的时候立即执行否个方法: 我们可以通过实现ApplicationRunner和CommandLineRunner,来实现,他们都是在SpringApplication 执行之后开始执行的。 CommandLineRunner接...
2018-09-09 01:32:58
1884
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人