- 博客(32)
- 收藏
- 关注
原创 Java 把一个int数字转换成特定位数二进制的字符串
首先明确一点,我想要的结果是这个数字经过进制转换得到一个二进制数组,且最长不超过n位。这里的n是可以调的,下面给出n=8时的例子。public static String binaryString(int num) { StringBuilder result = new StringBuilder(); int flag = 1 << 7; for (int i = 0; i < 8; i++) { int val = (flag &a.
2021-01-12 17:29:18
1855
原创 ORACLE如果某字段没有某值就插入,否则不操作
这个语句的意思是当table表的RULE_CODE有01的时候不操作,没有的话就插入INSERT INTO table(ID, RULE_CODE, RULE_NAME)SELECT 'testInstert', '01', 'advertising'FROM dualWHERE not exists (select * from tablewhere RULE_CODE = '01');...
2020-09-24 16:40:53
1323
原创 Git提交忽略request.js
这种方式可以保证远程库和本地库都有文件,但是本地库如何修改都不会被提交。git update-index --assume-unchanged abc/aaa/request.js
2020-07-02 16:51:34
381
1
原创 (手撸)SringBoot统一返回格式的接口数据封装成excel表格并且输出流下载
package com.lalala.ami.common;import com.alibaba.fastjson.JSONArray;import com.alibaba.fastjson.JSONObject;import com.doreen.core.annotation.Api;import com.doreen.core.annotation.Item;import com.doreen.core.annotation.JSON;import com.doreen.core.ao.
2020-06-22 18:05:29
296
原创 SpringCloud的Feign接口正确开发姿势
微服务中,直接在各模块之间暴露的接口上标注@FeignClient是不合规范的。像这样。应该是不被允许的。正确使用姿势是,各模块暴露的接口应该是纯粹的public interface RpcService { @GetMapping("hello") String hello();}而我们在使用的时候要搞一个接口去继承这个接口,在子接口上标注@FeignClie...
2020-04-02 14:28:42
1447
1
原创 Mysql的联合索引最左匹配原则小记
mysql的联合索引,也称为组合索引,指的是建立一个索引的时候选择多个字段。可能我们都听说过联合索引的最左匹配原则,今天我们就这个主题实战讨论一下。使用工具:navicat。创建表:我不喜欢上传建表语句,那样不直观。创建联合索引,ok,准备工作完成,让我们以各种查询姿势来观察下对应的查询计划。1select * 系列 select * 系列需要回表操作...
2020-03-25 09:49:36
314
原创 maven打包命令—P,指定springboot项目的配置文件
适用于jekins配置打包环境。线下我们使用的dev环境,线上,测试环境就有不同的配置文件了。只需要在jekins的打包命令加入-P prod,就可以了。prod对应相应的环境。但是还需要在maven的配置文件<project>节点里面加入<profiles> <!-- 开发 --> <profile> <!-...
2020-03-13 13:04:16
4294
1
原创 Windows上模拟MySQL主从设置,读写分离
对于互联网架构来说,MySQL读写分离是很重要的。所以今天我决定在我自己的电脑上模拟下。我一开始本以为可以用一个MySQL服务,建立两个数据库来模拟。但是网上的教程都是修改MySQL的配置文件,所以我只好另外又安装了个MySQL。为了避免不必要的麻烦,我们尽量保证MySQL版本一致。我第一个MySQL是msi安装包安装的,在网上我下载的第二个MySQL是压缩包形式的。所以,我们从配置这种解...
2020-03-06 16:16:18
267
1
原创 Mysql的隐式类型转换
注意,数字类型的索引,查询时可以加双引号,也可以不加,都会使用索引但是字符类型的索引,查询时必须加双引号,否则不会使用到索引所以,尽量不要发生类型隐式转换。...
2019-12-04 13:51:15
200
原创 Mysql查询记录加上固定长度的编号,right函数和concat函数的结合使用。
现在有这么个需求,mysql里面有了已经排序好的编号,1,2,3,4,5.....1100,不超过6位数。我需要做的是把这些编号变成固定长度的形式。比如11号,变成固定长度为6,就是前面填充4个0————000011;以前我都是用程序代码自己写的,不但效率低,还费脑子,需要判断长度,再去决定前面填充几个0.后来接触到mysql的right(x,y)函数,接收两个参数x和y。意思是返回查...
2019-11-28 14:56:05
711
原创 SpringBoot写入Redis数据库Hash类型数据并且设置过期时间
Java对于Redis的封装不是能满足所有的业务需求的,但是我们可以通过lua脚本来直接向Redis发送命令。下面这两句话,可以实现向Redis插入Hash数据,并且设置整个Hash的过期时间。putIfAbsent是set NX的意思,指的是如果没有才插入。redisTemplate是自动装配的StringRedisTemplate对象boolean a = redisTemplat...
2019-11-22 14:22:32
8786
7
原创 Docker学习笔记2,创建Nginx容器并且实现反向代理和负载均衡配置
首先还是 docker pull nginx然后根据刚刚pull下来的image创建容器,docker run -p 8800:80 --name mynginx -d nginx然后使用docker ps查看有木有这个容器(可能会看到you can get programm blabla.core,blabla.full什么的,笔者也没管,不知道做了操作了什么就好了。。。也许是没下载完把...
2019-11-01 16:43:50
324
原创 Docker学习笔记1,Docker创建Tomcat容器并且部署web项目。
使用docker部署俩tomcat,模拟负载均衡。1.首先去这个网站查看你需要下载的版本对应的标签https://hub.docker.com/u/library2.然后docker pull tomcat:你的标签。当然,不加标签的话一般默认使用最新版即lasted3.拉下来镜像之后,我们根据这个镜像创建并且启动两个容器。为了方便后续的操作,我们为这两个容器起名字。docker ru...
2019-10-31 19:30:33
413
原创 java关键字synchronized的内存可见性
以前保证内存可见性都是使用volatile关键字,下面代码的执行结果,让我猜到了synchronized关键字可能会刷新线程的工作内存。原来synchronized关键字也可以保证变量的内存可见性。因为,1、线程解锁前,必须把共享变量的最新值刷新到主内存中;2、线程加锁时,清空工作内存中共享变量的值,从而使共享变量是从主内存中重新读取最新的值(加锁与解锁需要统一把锁)线程执行互斥...
2019-10-30 14:16:55
314
原创 借助java的LinkedList实现插入排序
List<Integer> a=new ArrayList();a.add(1);a.add(2);a.add(7);a.add(7);a.add(0);a.add(3);a.add(4);a.add(212);List<Integer> sortedList=new LinkedList();a.forEach(sortNum ->{ ...
2019-09-02 16:12:39
1207
原创 记一次mysql死锁问题
这是我第一次遇到mysql死锁问题,通过这次死锁问题的分析,我对数据库的锁和有了更详细的认识。漫漫长路,一点点走。这是我的demo复现,出现的原因是在事务里面循环更新数据,注意,此时我的mysql默认事务隔离级别是提交读,且name和sex添加了组合索引。public void test() { User user = new User("a", "a", "aa"); ...
2019-08-30 14:26:59
289
原创 java的String.intern()方法小记
在jdk1.7及以后(外加其他的非hotspot虚拟机),String的intern()方法不再是把堆上面的字符串复制到字符串常量池中,并返回常量池里面此字符串的引用了。取而代之的是,inten()方法会在字符串常量池中记录首次出现的实例引用。 什么意思呢?假如说,有这样一段代码String str2 = new StringBuilder("计算机").append("软...
2019-06-15 15:41:11
385
原创 Git解决每次push和pull都需要输入用户名密码
gitBash里输入命令git config --global credential.helper store然后下次再pull或者push,还需要再输入一次用户名密码。但以后就不用输入了。
2019-03-07 16:39:59
682
原创 java实现根据前端的某个关键字进行线程控制
我的项目中,有个需求: 前端请求不能同时处理某一条数据。怎么实现呢?我的方法是,把数据里面的id当成锁,实现线程控制。可是,前端传入的对象在我们的虚拟机里都是新的对象,就算id值相同,也是两个对象啊,这样的锁,锁的住吗?机智的我,想到了字符串常量池。别忘了。字符串常量池不会存储两个相同值的对象的。那么问题来了,怎么把id当成字符串,再从堆里转移到字符串...
2019-02-18 15:53:17
202
原创 mongoTemplate或条件查询
不能这么写:query.addCriteria(Criteria.where("aaa").is("aaaa").orOperator(Criteria.where("bbb").is("bbb")));只能这么写Criteria criteria = new Criteria();criteria.orOperator(Criteria.where("aaa").is("aaa.
2019-01-22 18:56:03
2736
原创 Lambda表达式写的List foreach循环是单线程处理还是多线程处理?
自从有了jdk8,我的foreach循环从原来的for(String s:list){System.out.println(s);}潇洒的变成了list.stream.foreach((s) ->{System.out.println(s);});或者更风流的list.forEach(System.out::println);那么问题来了,jav...
2019-01-21 10:36:22
20698
原创 java服务器解密微信小程序
网上的大部分代码都很坑啊! 真不知道他们怎么解密出来的。 不是BadPading ....Exception就是解密出来的数据是空的或者是一大串看不懂的玩意儿。推荐一个代码,亲测可用,没亲测天打雷劈。 感谢!原文链接:https://yangguangftlp.iteye.com/blog/2339087代码我也不知道啥意思,白问我。运行截图为证!:...
2019-01-18 15:41:35
245
原创 mongotemplate查询的value有int,有String,怎么办?
有时候,前端和手机端给你的数据看起来一样,可是有时候某些字段的value却类型不相同。比如,id有传int,有传String。我们使用mongotemplate根据这个字段查询时候,总不能每次都写两个查询条件,一个(“key”).is(100)和一个("key").is("100")吧?想忽略类型直接查询value符合条件的记录,怎嘛办呢,老舔爷? ...
2019-01-17 19:45:40
927
2
转载 mongotemplate查询返回指定字段
BasicQuery查询语句可以指定返回字段 Query query=new BasicQuery(DBObject queryObject, DBObject fieldsObject) fieldsObject 这个字段可以指定返回字段 fieldsObject.put(key,value) ...
2019-01-17 19:21:59
6691
原创 mongotemplate判断文档中的数组是否含有特定的值
应用场景:我们数据库的的文档里面含有数组,而我的查询条件有根据数组里面某个key的值查询怎么办?比如我有三个json文档:{“name”:"MAZHIGANG","array":[{"key1":"val1", "key2":"val2" }]}{“name”:"MAZHIGANG","array"
2019-01-13 22:18:29
6600
5
原创 MongoTemplate使用$set根据文档自动更新值,不删除文档里面没有的key
mongotemplate.updateFirst(query,Update.fromDocument(document,"$set"),"yourcollectionName");这种写法会使数据库的查询到的文档更新为document,即把数据库集合更新为与document一毛一样,也就是说,这种写法会删除数据库文档里,documet里面没有写的值。可我们总是希望前端只给我们需要更新的j...
2019-01-03 12:13:06
2327
转载 付款码的一码多用思路
首先感谢强大的知乎,参考文章: https://www.zhihu.com/question/41709402 使用过友宝或者某些自动售货的无人售货机的同鞋们知道,友宝的二维码是一个二维码支持多种支付方式支付的。那么实现的思路是什么呢? 应该注意到,那个二维码不是普通的收款码,而是一个商品网页。 其实很简单,二...
2018-10-23 16:44:00
345
转载 用阻塞队列ArrayBlockingQueue实现简单生产者消费者案例
ArrayBlockingQueue 是一个用数组实现的有界阻塞队列,其内部按先进先出的原则对元素进行排序,其中put方法和take方法为添加和删除的阻塞方法。import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.TimeUnit;public class ArrayBlockingQueu...
2018-10-12 14:09:02
1893
原创 java线程池7个构造器参数
java.uitl.concurrent.ThreadPoolExecutor类是线程池中核心的一个类,可以看到,最后一个构造器的参数是最齐全的,前三个都是初始化了某些参数。所有参数说明:corePollSize:核心线程数。在创建了线程池后,线程中没有任何线程,等到有任务到来时才创建线程去执行任务。默认情况下,在创建了线程池后,线程池中的线程数为0,当有任务来之后,就会创建一个线...
2018-10-12 13:32:58
736
原创 java获取凌晨0点整的时间戳
java获取零点整的时间。long nowTime =System.currentTimeMillis();long todayStartTime =nowTime - ((nowTime + TimeZone.getDefault().getRawOffset()) % (24 * 60 * 60 * 1000L));
2018-07-28 11:43:33
17627
1
原创 Mybatis一级缓存导致分布式环境下的查询脏数据
Mybatis一级缓存,也称本地缓存,默认是SqlSession级别的缓存。在一次程序与数据库的会话(Sqlsession)中,mybatis会维护一个以hashmap为存储结构的一级缓存,在这个会话中,只要在两次相同条件的查询中间,这个会话里没有出现增删改的操作,那么Mybatis会在第二次查询时候在缓存中将这个结果返回,导致两次查询的返回结果对象其实是一个,用“==”比较结果为true...
2018-07-25 09:24:38
9547
8
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人