- 博客(387)
- 资源 (15)
- 收藏
- 关注
原创 JVM-对象
对象头一定是8的倍数,前8个字节存储的是mark world信息,后面8个字节存储的是类型指针。因为开启了指针压缩,第2个8个字节实际只占用了4个字节。
2023-02-08 17:32:53
235
原创 SpringBoot-启动原理
贪心算法是一种在每一步中都采取在当下状态最好或最优的选择,从而希望导致结果是全局最好或最优的算法贪心算法与动态规划的不同在于它对每个子问题的解决方案都做出选择,不能回退,动态规划则会保存以前的运算结果,并根据以前的结果对当前进行选择,有回退功能。...
2022-10-25 17:46:29
240
原创 Mybatis-SQL注入
/** * 测试sql注入攻击-sql会睡眠5秒才返回 */ @Test public void test02() { QueryWrapper<Result> queryWrapper = new QueryWrapper<>(); queryWrapper.select(Result.ID); String param = "' and (select * from (select sle...
2022-05-05 14:26:03
2053
原创 JVM--GC调优
基本原则Parallel除非确定,否则不要设置最大堆内存优先设置吞吐量目标如果吞吐量目标达不到,调大最大内存,不能让OS使用Swap,如果仍然达不到,降低目标。吞吐量能达到,GC时间太长,设置停顿时间的目标。设置metaspace设置吞吐量和停顿时间参数-XX:MaxGCPauseMillis=100-XX:GCTimeRatio=99设置动态扩容增量-XX:YoungGenerationSizeIncrement=30G1年轻代大小:避免使用-Xmn、-XX:NewRat
2022-03-06 23:01:59
375
原创 Java多线程-CompletableFuture
ExecutorService executorService = Executors.newFixedThreadPool(8); CompletableFuture<Integer> firstFuture = CompletableFuture.supplyAsync(() -> { log.info("开始执行第一个任务"); try { Thread.sleep(1000);
2022-01-27 10:42:19
460
原创 分布式事务
2PC(数据库层面的)将整个事务分为两阶段,准备阶段、提交阶段。准备阶段:事务管理器给每个参与者发送prepare消息,每个数据库参与者在本地执行事务,并写本地Undo/Redo日志,此时事务还没提交。提交阶段:事务管理者接收到了参与者执行成功或者失败、超时的消息,直接给所有参与者发送回滚消息,否则发送提交消息,参与者提交或者回滚事务Commit。注意:在没提交之前,会出现锁住资源的情况,其次就是协作者出现故障,在恢复之前执行者会出现阻塞。3PC基于2PC,引入的超时机制,协调者和执行者都有超时
2022-01-11 22:33:06
234
原创 分布式-基础理论
CAP理论C:Consistency,一致性,写操作后的读操作可以读取到最新的数据状态。因为可能会存在同步延迟,那么读的数据可能不是最新的数据状态,可以返回异常,但是不能返回错误信息。A:Availability,可靠性,任何操作都会得到相应的结果,不会出现超时或响应错误。P:Partition tolerance,分区容错性。分布式系统各个节点都部署在不同的网络分区中,不可避免的会由于网络问题而导致节点之间通信失败,此时仍可对外服务,这叫分区容忍性。CA组合:保证一致性和可用性,放弃分区容忍性,
2022-01-03 15:19:51
938
原创 SpringBoot-事件
SpringBoot事件demo发布方@Servicepublic class UserServiceImpl implements UserService, ApplicationContextAware { private Logger logger= LoggerFactory.getLogger(UserServiceImpl.class); private ApplicationEventPublisher applicationEventPublisher;
2021-11-19 15:44:08
942
原创 Maven--依赖冲突
依赖冲突案例配置如下 <!--测试maven冲突--> <dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils</artifactId> <version>1.9.4</version>
2021-09-05 15:31:19
162
原创 ElasticSearch--Doc Value
对于不分词的字段,聚合操作是基于Doc Value,即正排索引对于分词的字段,聚合操作是基于Fielddata,需要开启,结构和doc value类似,如果是ngram,会占用大量的内存。未完待续。。。
2021-09-04 16:50:05
204
原创 数据结构--链表实际场景应用
时间应用场景,构造一个固定长度的列表,达到固定长度后,自动淘汰尾部的节点 /** * 固定大小的容器,当添加的个数达到上限时, * 自动淘汰添加时间最长的元素 * * @param <E> */ private static class FixElementList<E> { /** * 头指针 */ private Node<E> he
2021-04-28 14:15:12
1601
原创 Redis-Lua脚本
local key = KEYS[1]if redis.call("get",key)+1 > tonumber(ARGV[1]) then return true;else return false;end初始化加载@PostConstruct public void init() { getRedisScript = new DefaultRedisScript<>(); getRedisScript.setResultType(
2020-11-25 17:59:43
235
1
原创 MybatisPlus-特殊用法整理
多层嵌套查询@Test public void test1(){ QueryWrapper<User> queryWrapper=new QueryWrapper<>(); queryWrapper.select(User.ID); String param="admin"; queryWrapper.eq(User.SEX, 0); queryWrapper.and(Objects.nonNu
2020-11-17 17:43:53
925
原创 MybatisPlus--基础用法
碰到前端设置时间为空,要求更新到数据,安装正常情况下,mybatis-plus只会更新不为空的数据,可以设置TableField注解的updateStrategy值为IGNORED,但是比较危险,所有使用这个pojo的位置都会受到影响,比如我现在只更新a字段,pojo中b字段则为null,那样的设置就会更新b。比较保守的方式如下: @PostMapping("/editTest") public Object editTest(@RequestBody InspectReviewPlanDO
2020-08-29 18:51:13
482
原创 Java--垃圾回收机制
垃圾回收算法思想引用计数复制拷贝标记清除标记整理主要的垃圾收集器Serial 串行只使用一个线程进行垃圾的回收。会暂停所有的用户线程。不适合服务器环境,类似于餐厅需要打扫垃圾,需要请客人出去,然后开始打扫垃圾。UserSerialGCParallel 并行多个垃圾收集线程并行的回收垃圾,用户线程是暂停的。适合允许中途暂停,适合弱交互的场景。性能比串行好。UserParall...
2020-08-09 10:39:27
533
1
原创 SpringBoot-写Starter
For/Join框架,案例摘自《Java并发编程的艺术》public class CountTask extends RecursiveTask<Integer> { /** * */ private static final long serialVersionUID = 1L; private static final int ...
2020-06-30 09:42:01
380
原创 JVM--异常情况
转自:http://blog.youkuaiyun.com/chaod5659/article/details/8250845 Java开发中主要用到的jar包介绍 commons-io.jar: 可以看成是java.io的扩展,用来帮助进行IO功能开发.它包含三个主要的领域:Utilityclasses-提供一些静态方法来完成公共任务.Filters-提供文件过滤器的各种实现.Streams-提供实用的
2020-05-17 17:36:10
760
1
原创 Java--定位问题工具
1 with rollupSELECT name,password,count(*) from user GROUP BY name,password with rollup在统计分析的场景蛮有用。
2020-04-29 18:50:24
919
1
原创 数据库-ACID
选择要添加文档的架包-》右键properties 按照图片上的顺序选择架包对应的javasource的位置 选择成功后悬停在要查看的位置,按F1,出现如下: 就可以查看相关信息了。
2020-04-11 12:46:30
869
1
原创 计算机网络--Https
参考博客: http://blog.youkuaiyun.com/weipf/article/details/4049001?locationNum=9&fps=1 //int转String int a1=1; String b1=(new Integer(a1)).toString(); //String转Integer Strin
2020-04-09 23:27:48
545
原创 RabbitMQ--消费限流与重回队列机制
1 由wsdl2java工具根据服务端生成客户端部分代码。工具下载位置: http://cxf.apache.org/download.html,解压后将文件路径添加到环境变量,和jdk的安装差不多。 在服务端之外另外创建一个项目,进行如下操作: 生成部分客户端的操作如下: 生成代码如下: 参考:http://blog.java1234.com/blog/articles/52.h
2020-04-06 17:00:27
954
原创 RabbitMQ--消息投递确认与100%投递成功方案
1 Integer中的部分内容 2 表示的范围; 源码: /** * A constant holding the minimum value an {@code int} can * have, -2<sup>31</sup>. */ @Native public static final int MIN_VALUE = 0x80000000;
2020-04-05 19:13:33
439
原创 Redis-布隆过滤器
1 把不能支持的类型转化为能支持 服务端:@WebServicepublic interface HelloService { @XmlJavaTypeAdapter(MapAdapter.class) public Map<Integer, List<User>> getMap();}@WebServicepublic class HelloServiceImpl impl
2020-04-03 23:33:28
312
原创 Redis--常见问题及方案
1 在服务端添加拦截器:System.out.println("web Server Start"); HelloService helloService=new HelloServiceImpl(); String address="http://192.168.199.146:8080/helloWorld"; JaxWsServerFactory
2020-04-03 18:26:18
587
1
原创 Redis--集群
1 简单实现一个DEMO,由Tomcat容器启动,将服务层暴露出来,类似RestFul,另外一段通过Http请求。 1.1 Maven依赖<!-- 统一管理Spring的版本, spring.version为自定义的,其他的也可比如log.version --> <properties> <spring.version>4.3.10.RELEASE</spring.vers
2020-04-03 16:35:40
356
原创 Redis--哨兵模式
构建Restful接口提供给用户,需要鉴权,设计的解决方案如下:客户端测试代码:@RunWith(SpringRunner.class)@SpringBootTestpublic class TestController { private static final int userId=1; private static final String TOKEN = "123";...
2020-04-03 11:52:37
598
原创 Redis--慢查询
将CXF整合到Spring,通过拦截部分请求由CXF进行处理 1 在一个SSM项目POM.xml添加如下依赖:<!-- Servlet支持 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>j...
2020-04-01 16:16:35
520
原创 Redis--String和Hash
1 CXF是一个WebService框架。 HelloService.class@WebServicepublic interface HelloService { public String say(String str);}HelloServiceImpl.class@WebService public class HelloServiceImpl implements Hell
2020-03-30 22:20:16
444
原创 Redis--BitMap与HyperLogLog
1 GET请求数据映射 1.1 将url中的数据映射到形参中 /** * 测试PathParam注解 * @param userId * @return */ @GET @Path("/user/getUserInfoByPathParam/{userId}") public User getUserInfoByPathP...
2020-03-29 22:54:44
482
原创 Mysql--关于NULL
公司DBA强制字段设置not null,不明觉厉,看了一下网上的文章,整理如下创建表CREATE TABLE `test02` ( `id` int(11) NOT NULL AUTO_INCREMENT, `col1` varchar(255) NOT NULL, `col2` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`), ...
2020-03-26 17:12:41
423
原创 SpringBoot-RestFul鉴权解决方案
在提供API接口给客户时,需要对客户的每一次请求进行鉴权,特整理如下:SIG=MD5(SID+TOKEN+TIME)AUTH=BASE64(SID:TIME)URL=VERSION/ACOUNTS/SID/FUNCTIOM/OPERATION?sig=SIGhttp包头中添加字段Authorization,值为AUTH后台鉴权流程:1 解码AUTH-》当前时间与Auth中的时间进行...
2020-02-15 15:03:03
2537
原创 Java--引用
强引用创建一个对象,让一个引用变量指向该对象,该引用变量就是强引用,处于可达的状态,是不可能被垃圾回收期机制回收的,,如果一个对象没有被引用对象指向,可认为是可以被回收的。只要有引用变量指向,都不会回收。 @Test public void test01() { Object obj1=new Object(); Object obj2=obj1; obj1=null; //...
2020-02-12 12:05:43
242
1
原创 Java多线程--阻塞队列
如果队列满了,添加元素的线程将会陷入等待状态,而队列为空,获取元素的线程将会陷入等待。有了BlockingQueue,我们不需要关心什么时候需要阻塞线程,什么时候需要唤醒线程。这一切都交给了BlockingQueue。...
2020-02-08 16:00:08
712
原创 Java--1.8Optional
class User { private String name; public User(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.na...
2020-01-02 20:30:58
251
1
原创 SpringBoot-日志收集与设置调用链requestid到日志中
log4j可以配置日志打印的格式、输出的位置,现在通过扩展,收集指定级别的日志,比如做日志监控什么的。log4j2.xml配置<configuration type="off" packages="com.test.config.LogAppender"> <Appenders> <Console name="ConsoleAppender...
2019-12-26 17:27:14
5875
原创 WEB-Session、Cookie个人理解
由于Http是无状态的请求,导致无法跟踪用户的一系列的请求,比如登陆后的执行的操作如何知道之前是否登录,无法标示当前登录者。这样就诞生了Cookie和Session。先说Cookie。Cookie是保存到浏览器端,设置过期时间则持久化到系统硬盘,没有设置过期时间则存储到系统内存中,当前窗口关闭,这cookie消失。和域名、请求相关联,这样就导致了Cookie在多个目录中共享的问题,即跨域请求问...
2019-12-22 23:23:26
300
SpringBoot-Mybatis多数据源.
2018-01-20
mina经典demo
2017-09-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人