上海疫情数据:得出10项颠覆性结论

网友们越来越神通广大了.......

母子乱伦:和儿子做了,我该怎么办?

2021年推特网黄Top10排行榜

​突发!长江存储、上海微、寒武纪、兆芯等36家被列入“实体清单”

自由微信安卓APP发布,立即下载! | 提交文章网址

Java知音

SpringBoot 整合 Groovy 脚本,实现动态编程

的语法,内置映射(Map)、列表(List)、方法、类、闭包(closure)以及生成器。脚本语言不会替代系统编程语言,两者是相互补充的。大名鼎鼎的
11月30日 上午 10:05

Linux 最常用命令:能解决 95% 以上的问题

命令打开文件后,则进入命令模式,用户可以输入命令来执行各种功能。输入模式如果用户要对文件做修改,则可以使用下面几种命令,进入输入模式,用户进入输入模式之后,可以任意修改文件,除了
11月30日 上午 10:05

SpringBoot+ElasticSearch 实现模糊查询,批量CRUD,排序,分页,高亮

点击关注公众号,实用技术文章及时了解导入elasticsearch依赖创建高级客户端基本用法创建、判断存在、删除索引对文档的CRUD批量CRUD数据查询所有、模糊查询、分页查询、排序、高亮显示总结大致流程注意事项一、导入elasticsearch依赖在pom.xml里加入如下依赖
11月29日 上午 10:05

非常强,批处理框架 Spring Batch 就该这么用!(场景实战)

:ps:里面我的数据处理逻辑是,获取出读取数据里面的每条数据的blogItem字段,如果是springboot,那就对title字段值进行替换。其实也就是模拟一个简单地数据处理场景。import
11月29日 上午 10:05

复杂场景下的权限系统该怎么玩?ABAC权限模型帮你搞定它!

点击关注公众号,实用技术文章及时了解ABAC授权模型常用的授权模型ABAC的访问控制表达式语言SpEL性能ABAC实践crud代码security上下文数据库设计java程序测试类Spring
11月28日 上午 10:05

浅谈 Spring 事务底层原理

点击关注公众号,实用技术文章及时了解@EnableTransactionManagement工作原理Spring事务基本执行原理Spring事务详细执行流程Spring事务传播机制Spring事务传播机制分类案例分析情况1情况2情况3情况4Spring事务强制回滚TransactionSynchronization一、@EnableTransactionManagement工作原理开启Spring事务本质上就是增加了一个Advisor,但我们使用@EnableTransactionManagement注解来开启Spring事务是,该注解代理的功能就是向Spring容器中添加了两个Bean:AutoProxyRegistrarProxyTransactionManagementConfigurationAutoProxyRegistrar主要的作用是向Spring容器中注册了一个InfrastructureAdvisorAutoProxyCreator的Bean。而InfrastructureAdvisorAutoProxyCreator继承了AbstractAdvisorAutoProxyCreator,所以这个类的主要作用就是开启自动代理的作用,也就是一个BeanPostProcessor,会在初始化后步骤中去寻找Advisor类型的Bean,并判断当前某个Bean是否有匹配的Advisor,是否需要利用动态代理产生一个代理对象。ProxyTransactionManagementConfiguration是一个配置类,它又定义了另外三个bean:BeanFactoryTransactionAttributeSourceAdvisor:一个AdvisorAnnotationTransactionAttributeSource:相当于BeanFactoryTransactionAttributeSourceAdvisor中的PointcutTransactionInterceptor:相当于BeanFactoryTransactionAttributeSourceAdvisor中的AdviceAnnotationTransactionAttributeSource就是用来判断某个类上是否存在@Transactional注解,或者判断某个方法上是否存在@Transactional注解的。TransactionInterceptor就是代理逻辑,当某个类中存在@Transactional注解时,到时就产生一个代理对象作为Bean,代理对象在执行某个方法时,最终就会进入到TransactionInterceptor的invoke()方法。二、Spring事务基本执行原理一个Bean在执行Bean的创建生命周期时,会经过InfrastructureAdvisorAutoProxyCreator的初始化后的方法,会判断当前Bean对象是否和BeanFactoryTransactionAttributeSourceAdvisor匹配,匹配逻辑为判断该Bean的类上是否存在@Transactional注解,或者类中的某个方法上是否存在@Transactional注解,如果存在则表示该Bean需要进行动态代理产生一个代理对象作为Bean对象。该代理对象在执行某个方法时,会再次判断当前执行的方法是否和BeanFactoryTransactionAttributeSourceAdvisor匹配,如果匹配则执行该Advisor中的TransactionInterceptor的invoke()方法,执行基本流程为:利用所配置的PlatformTransactionManager事务管理器新建一个数据库连接修改数据库连接的autocommit为false执行MethodInvocation.proceed()方法,简单理解就是执行业务方法,其中就会执行sql如果没有抛异常,则提交如果抛了异常,则回滚三、Spring事务详细执行流程Spring事务执行流程图:https://www.processon.com/view/link/5fab6edf1e0853569633cc06四、Spring事务传播机制在开发过程中,经常会出现一个方法调用另外一个方法,那么这里就涉及到了多种场景,比如a()调用b():a()和b()方法中的所有sql需要在同一个事务中吗?a()和b()方法需要单独的事务吗?a()需要在事务中执行,b()还需要在事务中执行吗?等等情况…所以,这就要求Spring事务能支持上面各种场景,这就是Spring事务传播机制的由来。那Spring事务传播机制是如何实现的呢?先来看上述几种场景中的一种情况,a()在一个事务中执行,调用b()方法时需要新开一个事务执行:首先,代理对象执行a()方法前,先利用事务管理器新建一个数据库连接a将数据库连接a的autocommit改为false把数据库连接a设置到ThreadLocal中执行a()方法中的sql执行a()方法过程中,调用了b()方法(注意用代理对象调用b()方法)代理对象执行b()方法前,判断出来了当前线程中已经存在一个数据库连接a了,表示当前线程其实已经拥有一个Spring事务了,则进行挂起挂起就是把ThreadLocal中的数据库连接a从ThreadLocal中移除,并放入一个挂起资源对象中挂起完成后,再次利用事务管理器新建一个数据库连接b将数据库连接b的autocommit改为false把数据库连接b设置到ThreadLocal中执行b()方法中的sqlb()方法正常执行完,则从ThreadLocal中拿到数据库连接b进行提交提交之后会恢复所挂起的数据库连接a,这里的恢复,其实只是把在挂起资源对象中所保存的数据库连接a再次设置到ThreadLocal中a()方法正常执行完,则从ThreadLocal中拿到数据库连接a进行提交这个过程中最为核心的是:在执行某个方法时,判断当前是否已经存在一个事务,就是判断当前线程的ThreadLocal中是否存在一个数据库连接对象,如果存在则表示已经存在一个事务了。五、Spring事务传播机制分类其中,以非事务方式运行,表示以非Spring事务运行,表示在执行这个方法时,Spring事务管理器不会去建立数据库连接,执行sql时,由Mybatis或JdbcTemplate自己来建立数据库连接来执行sql。案例分析情况1@Componentpublic
11月28日 上午 10:05

这绝对是全网最全的大厂面试题合集 不信你看……

前两个月,公司java岗位面了50+候选人,面试下来发现几类过不了的情况,分享大家防止踩坑:新技术倒是掌握得挺多,基础的却一塌糊涂。工作多年,从未学习过工作之外的技术栈,也没有对技术有任何的兴趣,遇到问题就百度去csdn看解决方案。业务单一化和技术栈老化,技术简单,工作七八年,所有的项目都是spring+mybatis/hibernate+mysql。这些情况一般面试就没啥希望了,毕竟对于大部分程序员来说:最重要的肯定是建立一个系统的知识支撑体系,使自己具备扎实的Java基础能力。如果是冲击大厂的话,还能够满足大厂招聘需求,具备过硬的技术和较强的实战能力。除此之外,面试这一关也是需要好好下功夫的,其中关键的一环就是吃透大厂面试真题,建立面试的把握和自信。这里整理了一套跳槽涨薪300道Java面试题+解析,涵盖8大核心技术,各大厂技术重点、面试难点、进阶要点,有需要的自己扫码领取。注意!扫描文中二维码,关注「图灵课堂Tuling」公众号,后台回复暗号:面试资料。下面是面试题尝鲜,大家先自测一下,答案解析扫码可得,再次强调,这是免费资料,有效期3天,需要的早点扫码。Spring面试题(24道+)1、不同版本的
11月27日 下午 12:05

效率爆表:IntelliJ IDEA 高效配置教程来了,收藏起来!

template,快速写代码只要输入apr,就能自动提示,并且生成Autowired语句了。可以根据自己的代码习惯,自定义一些代码模板,帮助我们快速写代码。修改全局配置,提升工作效率1.
11月27日 下午 12:05

分布式ID生成方案总结整理

点击关注公众号,实用技术文章及时了解为什么需要分布式ID?业务系统对分布式ID有什么要求?分布式ID生成方案UUID数据库自增号段模式Redis实现雪花算法(SnowFlake)百度Uidgenerator美团Leaf滴滴TinyID1、为什么需要分布式ID?对于单体系统来说,主键ID可能会常用主键自动的方式进行设置,这种ID生成方法在单体项目是可行的,但是对于分布式系统,分库分表之后,就不适应了,比如订单表数据量太大了,分成了多个库,如果还采用数据库主键自增的方式,就会出现在不同库id一致的情况,虽然是不符合业务的2、业务系统对分布式ID有什么要求?全局唯一性:ID是作为唯一的标识,不能出现重复趋势递增:互联网比较喜欢MySQL数据库,而MySQL数据库默认使用InnoDB存储引擎,其使用的是聚集索引,使用有序的主键ID有利于保证写入的效率单调递增:保证下一个ID大于上一个ID,这种情况可以保证事务版本号,排序等特殊需求实现信息安全:前面说了ID要递增,但是最好不要连续,如果ID是连续的,容易被恶意爬取数据,指定一系列连续的,所以ID递增但是不规则是最好的3、分布式ID生成方案UUID数据库自增号段模式Redis实现雪花算法(SnowFlake)百度Uidgenerator美团Leaf滴滴TinyID3.1
11月26日 上午 11:30

我在代码里面故意留个漏洞,违法吗?

点击关注公众号,实用技术文章及时了解昨天我在逛知乎的时候,看到了这么一个问题:我看到了三个非常有意思的回答,分享给大家一看。首先是这个为了防止项目交付后收不到尾款埋下后门的回答:答主:特立独行的猪链接:www.zhihu.com/question/531724027/answer/2487270093早年给某台企做外包项目,定制一个Android系统的ROM。开发费用16万,一年期维护费用2万。开发费用分三期打款,订金4万,生产环境ROM交付8万,验收并交付源码后打尾款4万。生产环境ROM交付前留了一手,加了时间戳校验,混杂在驱动程序里,6个月后不能开机。果不其然,过了4个月对方也没把尾款打过来,显然是用着没什么毛病,源码不打算要了,维护费用也一起省了。每次催款都用各种理由搪塞。又过了2个月,埋的雷爆了,他们的下游客户开始各种投诉。这才把剩余款项收回来。懒得说这家公司的名字,挺有名的公司,估计很多人用过他们的产品。如果不留这一手,估计就要吃哑巴亏了,毕竟台湾省的官司打起来费劲儿。在这种情况下,这叫自我保护,不违法。这个回答让我想起了多年前我接私活的时候,给别人开发的软件交付后就玩消失的经历,那时候年轻,不知道做个时间限制啥的···不说了,说多了都是泪。话说回来,真像这位答主这样弄个后门,违不违法,答主说了不算,还得具体问题具体分析,法院说了才算,不过这种做法还是比较危险,慎重。那到底法律如何界定这种问题呢,来看一下网络安全界的大佬TK教主的回答:答主:tombkeeper链接:www.zhihu.com/question/531724027/answer/2539891264我国没有仅针对后门本身进行处罚的法律。主要原因是“后门”难以客观界定。比如,自动更新机制是不是后门?热补丁机制是不是后门?远程维护机制是不是后门?家里宽带有问题,你打运营商客服电话,运营商那边就能远程调整你的光猫——这是不是后门?所以现在法律在处理后门相关问题时,是根据利用行为定罪的。你留了后门,一辈子不用,没事。用来干坏事了,那就根据你具体干了什么坏事定罪量刑。代码里面藏后门属于初级玩家,来看一下高级的后门长啥样:答主:沧海链接:www.zhihu.com/question/531724027/answer/2487130220Ken
11月26日 上午 11:30

Sharding JDBC 实战:分布式事务处理

–Two-Phase-Commit)来保证分布式事务的完整性。后来J2EE也遵循了X/OpenDTP规范,设计并实现了java里的分布式事务编程接口规范-JTA,如下图所示,表示一个X/Open
11月25日 上午 9:40

国内最火的内存数据库,110000 QPS 没有之一!

秋招过后,根据学习群里很多小伙伴的反馈,发现在Java后端面试中,Redis是所有框架/中间件中被问到频率最高的。但是由于本身不熟悉Redis,再加上大厂的面试题也确实是很难,有些还偏重实战,大家又没有经验,导致很多人面试就挂在这上面,这里随便列上几道,看看大家能否答出来:👉大厂面试题1.
11月25日 上午 9:40

看了我的 MyBatis-Plus 用法,同事也开始悄悄模仿了

点击关注公众号,实用技术文章及时了解本文主要介绍mybatis-plus这款插件,针对springboot用户。包括引入,配置,使用,以及扩展等常用的方面做一个汇总整理,尽量包含大家常用的场景内容。关于mybatis-plus是什么,不多做介绍了,看官方文档:baomidou.com/,咱们直接代码撸起来。一、快速开始本文基于springboot、maven、jdk1.8、mysql开发,所以开始前我们需要准备好这套环境。我的环境使用了nacos作为注册中心,不了解或需要搭建的参考:https://juejin.cn/post/7053977860612030477新建如下数据库:建议大家选择utf8mb4这种字符集,做过微信的同学应该会知道,微信用户名称的表情,是需要这种字符集才能存储的。我就默认其他环境已经准备好了,咱们直接从mybatis-plus开始。1.1
11月24日 上午 10:05

干掉 “重复代码”,这三种方式绝了!

点击关注公众号,实用技术文章及时了解软件工程师和码农最大的区别就是平时写代码时习惯问题,码农很喜欢写重复代码而软件工程师会利用各种技巧去干掉重复的冗余代码。业务同学抱怨业务开发没有技术含量,用不到设计模式、Java
11月24日 上午 10:05

SpringBoot 整合 Socket 实战案例 ,实现 单点发送、广播群发,1对1,1对多

"ALL","content":"给老师们推一条消息!!!","channel":"CHANNEL_TEACHER"}最后一个场景,也就是单点推送,指定某个人收到模拟
11月21日 上午 9:45

系统性能优化的十大策略(强烈推荐,建议收藏)

点击关注公众号,实用技术文章及时了解上篇提升系统性能,榨干计算机资源是程序员的极致追求,今天跟大家聊聊性能优化。分为上中下三篇,由浅及深的写了关于性能优化的方方面面,并不仅仅局限于代码层面,希望小伙伴们能有所收获。引言:取与舍软件设计开发某种意义上是“取”与“舍”的艺术。关于性能方面,就像建筑设计成抗震9度需要额外的成本一样,高性能软件系统也意味着更高的实现成本,有时候与其他质量属性甚至会冲突,比如安全性、可扩展性、可观测性等等。大部分时候我们需要的是:在业务遇到瓶颈之前,利用常见的技术手段将系统优化到预期水平。那么,性能优化有哪些技术方向和手段呢?性能优化通常是“时间”与“空间”的互换与取舍。本篇分两个部分,在上篇,讲解六种通用的“时间”与“空间”互换取舍的手段:索引术压缩术缓存术预取术削峰填谷术批量处理术在下篇,介绍四种进阶性的内容,大多与提升并行能力有关:八门遁甲
11月21日 上午 9:45

升级SpringBoot版本,引出了一个大Bug

前言最近项目组升级了SpringBoot版本,由之前的2.0.4升级到最新版本2.7.5,却引出了一个大Bug。到底是怎么回事呢?1.案发现场有一天,项目组的同事反馈给我说,我之前有个接口在新的测试环境报错了,具体异常是:Missing
11月20日 上午 10:40

以后面试官问你 为啥不建议使用Select *,请你大声回答他!

?我觉得是增大了,但是几乎不用理。因为这些都是正常的数据类型,开销增大不了多少。所以,真正隐藏的雷是什么?有大字段例如tinytext、text、mediumtext、longtext
11月20日 上午 10:40

4.5k star,一款开源的数据可视化分析平台,提供多种大屏模板,非常炫酷

点击关注公众号,实用技术文章及时了解DataGear是一款开源的数据可视化分析平台,可自由制作任何您想要的数据可视化看板,支持接入SQL、CSV、Excel、HTTP接口、JSON等多种数据源。系统主要功能包括:数据管理、SQL工作台、数据导入/导出、数据集管理、图表管理、看板管理等。功能特性动态接入多种数据源DataGear是一款开源的数据可视化分析平台,可自由制作任何您想要的数据可视化看板,支持接入SQL、CSV、Excel、HTTP接口、JSON等多种数据源。系统主要功能包括:数据管理、SQL工作台、数据导入/导出、数据集管理、图表管理、看板管理等。支持多种格式的数据集支持创建SQL、CSV、Excel、HTTP接口、JSON数据集,可将数据集定义为动态参数化数据集,可添加文本框、下拉框、日期框、时间框等类型的数据集参数,为构建动态可交互图表提供支持。丰富强大的图表功能图表可聚合多个不同格式的数据集,轻松构建同比、环比数据图表,内置折线图、柱状图、饼图、地图、雷达图、漏斗图、散点图、K线图、桑基图等50+开箱即用的图表,并且支持自定义图表配置项,支持编写和上传自定义图表插件。可自由编辑的数据可视化页面可视化页面采用原生的HTML网页作为模板,可自由编辑页面内容,支持导入任意HTML网页,为元素添加扩展属性即可绑定和配置图表,页面内置丰富的API,可构建图表联动、数据钻取、异步加载、交互表单等个性化的数据可视化页面。架构图安装DataGear1、安装JRE运行环境需要JRE
11月19日 上午 11:30

Java 8 Stream 之 collect() 的奇技淫巧

System.out.println(user.toString());}第二个小玩法聚合(求和、最小、最大、平均值、分组)找出年龄最大:stream.max()写法
11月19日 上午 11:30

海量请求下的接口并发解决方案

点击关注公众号,实用技术文章及时了解设定一个场景,假如一个商品接口在某段时间突然上升,会怎么办?生活中的例子来说,假设冰墩墩在当天晚上上热搜之后,迅速有十几万人去淘宝下单购买,此时并没有做好对该商品的缓存预热以及准备,如何操作?对于这个问题,在电商高并发系统中,对接口的保护一般采用:缓存、限流、降级
11月18日 上午 9:45

一个轻量级的分布式日志标记追踪神器,十分钟接入,非常好用!

任务框架支持(举例XXL-JOB框架)从1.3.0版本开始,TLog对开源框架XXL-JOB作了支持。在springboot环境下,你无需作任何改动。只需引入依赖包即可生效。而在spring
11月18日 上午 9:45

两万字盘点:那些被玩烂了的设计模式

之前有小伙伴私信我说看源码的时候感觉源码很难,不知道该怎么看,其实这有部分原因是因为没有弄懂一些源码实现的套路,也就是设计模式,所以本文我就总结了9种在源码中非常常见的设计模式,并列举了很多源码的实现例子,希望对你看源码和日常工作中有所帮助。单例模式
11月17日 上午 9:45

绩效从C到S,分享渣渣程序员逆袭秘诀!

绩效面谈结束,从会议室出来,有一种不真实的感觉——这个季度我竟然拿了S?!要知道,上个季度和上上个季度,我的绩效是C。C在我司意味着什么你们知道吗?拿3次C就意味着严重不胜任,公司就会让我收拾收拾包袱滚蛋。而我,那时候,离第三个C,就只差一个季度了。回过头来看,还是很感慨的,我真的在三个月的时间里,从部门里的渣渣绝地逆袭了。但其实只有我知道,我不是靠自己做到的,而是有人不离不弃地拉了我一把。01我在这家公司干后端开发干到第二年,表现开始下滑,拿到第二个C的时候,我真的心灰意懒,
11月17日 上午 9:45

SpringBoot 玩一玩代码混淆,防止反编译代码泄露

点击关注公众号,实用技术文章及时了解来源:https://blog.csdn.net/qq_35387940编译简单就是把代码跑一哈,然后我们的代码
11月16日 上午 9:45

3个腾讯开源的 GitHub 项目,非常实用!

等框架技术,框架只提供容器环境即可。开源地址:https://github.com/Tencent/cherry-markdown支持
11月16日 上午 9:45

线程池执行的用户任务抛出异常会怎样?

点击关注公众号,实用技术文章及时了解ThreadPoolExecutor.execute源码分析看源码可以知道,ThreadPoolExecutor中的任务都是在runWorker中执行的通过源码可以看到1149行执行用户任务1150~1155处理捕获任务异常,并抛出抛出异常后会退出,从任务队列中拉取任务的循环然后执行1167行,worker线程退出的逻辑看一下线程退出的逻辑如果是异常退出,参数completedAbruptly为true如果状态值比STOP小,即线程池没有停止,会重新创建一个worker线程总结ThreadPoolExecutor.execute
11月15日 下午 2:07

最近准备跳槽可以看看

大家好,最近有不少小伙伴在后台留言,其中一位小伙伴吐槽:近期的面试越来越难了,要背的八股文越来越多了,考察得越来越细,越来越底层,明摆着就是想让我们徒手造航母嘛!实在是太为难我们这些程序员了。庆幸的是最终拿到了offer!为了帮大家节约时间,给大家搞来了今年截止到10月份大厂Java面试题合集,内容非常的全面。一般技术面试官都会通过自己的方式去考察程序员的技术功底与基础理论知识。比如果这样的问题:项目框架,Spring、Mybatis
11月15日 下午 2:07

浅谈 Class.forName() 的用法

点击关注公众号,实用技术文章及时了解目录什么是class对象获得class对象的三种方法class的作用和方法Class.forName()用法什么时候用Class.forName()?newInstance和new关键字的区别应用问题解析情景一:载入数据库驱动的时候情景二:使用AIDL与电话管理Servic进行通信1.什么是class对象类是程序的一部分,每个类都有一个class对象。换言之,每当编写并且编译了一个新类,就会产生一个class对象(更恰当的说,是被保存在一个同名的class文件中)。为了生成这个类的对象,运行这个程序的Java虚拟机(jvm)将使用被称为“类加载器”的子系统。所有的类都是在对其第一次使用的时候被加载到JVM中。如当程序创建对第一个静态成员的引用时,就会加载这个类。或者使用new关键字创建新的对象的时候。因此java程序在它运行之前并非完全加载,其各个部分是在必须的时候才加载的。类加载器首先检查这个类的class对象是否已经加载。如果尚未加载,默认的类加载器就会根据类名查找.class文件。实际上在Java中每个类都有且只有一个Class对象。Class
11月14日 上午 9:45

5款程序员必备的免费在线画图工具,超级好用!

io这个网站是大家一提到思维导图流程图啥的就会搬出来的“大佬级”的网站,几乎全平台都可用,Windows、MAC、在线网站都可以直接使用。地址:https://app.diagrams.net/4.
11月14日 上午 9:45

小心,高并发系统居然被一行日志击垮?

ch.qos.logback.classic.spi.PackagingDataCalculator#loadClassprivate
11月13日 上午 11:30

实现一个简单的 Spring Bean 容器

这个源码级复杂框架的设计和实现精髓,就应该像开发一个项目一样,从零写一遍。只有你写了这个项目,才能知道具体细节是如何处理的,各类设计是如何实现的。手写Spring独乐不如众乐,小傅哥把手动实现简单版
11月13日 上午 11:30

使用 BeanUtils.copyProperties 踩坑经历

orderVO);一行代码搞定,很方便,运行结果也和原来一模一样。不过这个工具带来便利的同时,也带来了很多问题,稍微不注意就会踩坑,接下来就总结下使用这个工具常见的几个坑。3.
11月12日 下午 4:40

巧用 HTTP 协议,设计一个基 于B/S 架构的缓存框架!

骚话连篇程序设计无非就是时间问题和空间问题,但是现在本质已经变了现在的软件工程师已经不在乎软件质量以及代码质量,以增加系统复杂度的来解决并发问题,软件变成变成了PPT编程。其实大家都知道很多缓存方案
11月12日 下午 4:40

Web3,元宇宙,新能源,智能机器人……哪些新行业值得程序员提前入局?

转眼2022年仅剩2个月不到,对于程序员来说,今年是充满挑战的这一年。有人想要逃离,也有人正在排队入场,大家面临的困境和担忧的问题各有不同又整体相似,很多人目前的状态也有些“当局者迷”,未来职业发展的路到底在何方?这里精选出了目前一线程序员关心以及对大家最有帮助的十大热门问题,准备和大家畅聊一番,厘清形势!#互联网裁员潮下程序员职业发展该走向何处?##除了互联网公司还有其他IT公司可以选择吗?##国家大力支持的国产替代软件公司有哪些?##这波互联网裁员出来的程序员都去了哪里?##听说有程序员通过副业年入百万的,他们是怎么做到的?##最近比较或的AI绘画据说要取代插画师和平面设计师了?##那么AI编程会取代CRUD的程序员吗?##Web3,元宇宙,新能源,智能机器人这些新行业跟程序员有什么关系?##程序员需要提前入局Web3,元宇宙,新能源这些新行业吗?##程序员碰到面试跳槽找工作以及职业发展问题怎么办?#如果你对上面这些问题感兴趣,本周四、周五晚上八点,图灵课堂的大厂大咖直播夜话节目,欢迎大家一起来线上面基!一定不能错过的2022年互联网寒冬“过冬神器”,大佬们数十年经验娓娓道来,带大家拨开云雾。参与直播活动。除了有机会赢万元学费全额抵扣券、iPhone
11月11日 上午 9:45

一万字带你入门 Activiti 工作流,通俗易懂!

点击关注公众号,实用技术文章及时了解概念工作流。通过计算机对业务流程自动化执行管理,主要解决的是“使在多个参与者之间按照某种预定义的规则自动进行传递文档、信息或任务的过程,从而实现某个预期的业务目标,或者促使此目标的实现”。Activiti7介绍Activiti是一个工作流引擎,Activiti可以将业务系统中复杂的业务流程抽取出来,使用专门的建模语言BPMN2.0进行定义,业务流程按照预先定义的流程进行执行,实现了系统的流程由Activiti进行管理,减少业务系统由于流程变更进行系统升级改造的工作量,从而提高系统的健壮性,同时也减少了系统开发维护成本。在使用activiti之前,首先需要编写activiti.cfg.xml配置文件。并且引入相关依赖。
11月11日 上午 9:45

实现一款高可用的 TCP 数据传输服务器(Java版)

点击关注公众号,实用技术文章及时了解1.netty能做什么首先netty是一款高性能、封装性良好且灵活、基于NIO(真·非阻塞IO)的开源框架。可以用来手写web服务器、TCP服务器等,支持的协议丰富,如:常用的HTTP/HTTPS/WEBSOCKET,并且提供的大量的方法,十分灵活,可以根据自己的需求量身DIV一款服务器。用netty编写TCP的服务器/客户端1.可以自己设计数据传输协议如下面这样:2.可以自定义编码规则和解码规则3.可以自定义客户端与服务端的数据交互细节,处理socket流攻击、TCP的粘包和拆包问题2.Quick
11月10日 下午 4:40

强烈推荐一个神奇网站,边玩游戏边学编程,爽歪歪!

最近发现了一个叫CodeGym的神奇网站,居然可以通过一个故事来学习Java编程,赶紧体验了一把,非常强大。比如我们可以通过一个《月球着陆器》的游戏,通过游戏提示,编写相应的代码,验证执行所有的关卡后,就可以自己发布游戏供网站其他人玩。浅尝做个“着陆版”俄罗斯方块:每个任务都必须上手敲代码编程,由CodeGym验证通过以后才能过关,同时会提供语法及规范检查。另外,CodeGym还很贴心地提供了很多游戏和具体的编写步骤,按照指导一步步来就实现经典的贪吃蛇、俄罗斯方块、太空射击等,非常有趣。这样的任务,一共有1000多个!分为40个级别,由浅入深,由易到难。它们涉及到:Java
11月10日 下午 4:40

686道面试真题+10小时视频课,这套资料简直是量身为Java开发面试打造的

最近感慨面试难的人越来越多了,一方面是市场环境,更重要的一方面是企业对Java的人才要求越来越高了。基本上这样感慨的分为两类人,第一,虽然挂着3、5年经验,但肚子里货少,也没啥拿得出手的项目,自己还意识不到问题;第二,自身有技术追求,但欠点儿火候,多练习多吸收知识,锤炼一下问题不大。说实话,从打算跳槽到准备简历再到初期面试,很多人其实都处于“心虚”的状态。
11月9日 上午 9:45

使用阿里巴巴 Druid 轻松实现加密!

"VwH1mu2IUpqjfKTd+gSikiZgJTi+3Y5zFIFRfxYnH1UqHzm1K8TIHnMaV3TErBaGsVEaGV0e63pb0Ys3Wdm7Kg==";//
11月9日 上午 9:45

不到 20 人的 IT 公司,要不要去呢?

点击关注公众号,实用技术文章及时了解群里经常有一些朋友问:一些初创的IT公司,一共几个人的配置,老板+1-2个前端+3-4个后端,老板描述的远景很宏大,说是未来会不断扩招,说可能下一个阿里就从他们开始。实际工作也不是很忙,但是薪水比预期低不少,这种公司到底要不要去?值不值得去?我们来看下广大的网友是怎么说的知乎网友「程墨Morgan」说:我在摩托罗拉工作时,认识一个读美国同事,他在美国读的大学,毕业之后,拿到了两个Offer,一个Offer来自于小公司,如果他加入,他才是第10个员工,另一个Offer就是摩托罗拉,当时他想,摩托罗拉是大公司,容易拿绿卡,他就据掉了小公司的Offer,来了摩托罗拉。被他据掉的那个小公司,就是Google。你以为我想说的是应该去不到
11月8日 上午 9:45

原理解析:线程池中多余的线程是如何回收的?

点击关注公众号,实用技术文章及时了解最近阅读了JDK线程池ThreadPoolExecutor的源码,对线程池执行任务的流程有了大体了解,实际上这个流程也十分通俗易懂,就不再赘述了,别人写的比我好多了。不过,我倒是对线程池是如何回收工作线程比较感兴趣,所以简单分析了一下,加深对线程池的理解吧。那么,就以JDK1.8为例分析吧。1.
11月7日 上午 9:45

2.7k star,这可能是我见过最强的开源支付系统!

点击关注公众号,实用技术文章及时了解项目介绍Jeepay是一套适合互联网企业使用的开源支付系统,支持多渠道服务商和普通商户模式。已对接微信支付,支付宝,云闪付官方接口,支持聚合码支付。Jeepay使用Spring
11月7日 上午 9:45

神级开发框架!疯传Java届

最近看了下粉丝们的后台留言以及面试情况,发现很多人知道自己的问题和短板在哪里,对自己的技术水平和能力认知也很清晰,都很迫切想要学习提高,奈何自己盲目学习的过程很费力,效果也不佳,遇到好些困难和阻碍。比如大部分正在学Spring的程序员兄弟们就反馈:1、虽然Spring全家桶的官方文档很全面,但面对庞杂的知识体系,很多兄弟不知从何下手2、市面上Spring全家桶的书籍很多,但平铺直叙的风格很难让人快速抓住重点3、网上分析Spring全家桶源码的文章也有,但太分散,都是围绕几个常见知识点“炒冷饭”,不成体系4、想要深度掌握单个框架或组件已经很难,还要将Spring全家桶整体结合到一起理解学习就更难了这样的反馈实在太多了,Spring又确实是面试和工作都绕不开的重难点,索性最近就花了半个月时间,
11月6日 上午 10:40

分布式定时调度:xxl-job 万字详解

点击关注公众号,实用技术文章及时了解一.定时任务概述1.定时任务认识1.1.什么是定时任务定时任务是按照指定时间周期运行任务。使用场景为在某个固定时间点执行,或者周期性的去执行某个任务,比如:每天晚上24点做数据汇总,定时发送短信等。1.2.常见定时任务方案While
11月6日 上午 10:40

ThreadLocal 搭配线程池使用造成内存泄漏的原因和解决方案

点击关注公众号,利用碎片时间学习ThreadLocal是什么ThreadLocal是一个本地线程副本变量工具类。主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互不干扰,在高并发场景下,可以实现无状态的调用,特别适用于各个线程依赖不通的变量值完成操作的场景。下图为ThreadLocal的内部结构图从上面的结构图,我们已经窥见ThreadLocal的核心机制:每个Thread线程内部都有一个Map。Map里面存储线程本地对象(key)和线程的变量副本(value)但是,Thread内部的Map是由ThreadLocal维护的,由ThreadLocal负责向map获取和设置线程的变量值。所以对于不同的线程,每次获取副本值时,别的线程并不能获取到当前线程的副本值,形成了副本的隔离,互不干扰。ThreadLocalMapThreadLocalMap是ThreadLocal的内部类,没有实现Map接口,用独立的方式实现了Map的功能,其内部的Entry也独立实现。和HashMap的最大的不同在于,ThreadLocalMap结构非常简单,没有next引用,也就是说ThreadLocalMap中解决Hash冲突的方式并非链表的方式,而是采用线性探测的方式。(ThreadLocalMap如何解决冲突?)在ThreadLocalMap中,也是用Entry来保存K-V结构数据的。但是Entry中key只能是ThreadLocal对象,这点被Entry的构造方法已经限定死了。static
11月5日 下午 4:40

SpringCloud微服务组件:Sentinel限流熔断

点击关注公众号,实用技术文章及时了解前言什么是雪崩问题?微服务之间相互调用,因为调用链中的一个服务故障,引起整个链路都无法访问的情况。解决雪崩问题的常见方式有四种:超时处理:设定超时时间,请求超过一定时间没有响应就返回错误信息,不会无休止等待舱壁模式:限定每个业务能使用的线程数,避免耗尽整个tomcat的资源,因此也叫线程隔离。熔断降级:由断路器统计业务执行的异常比例,如果超出阈值则会熔断该业务,拦截访问该业务的一切请求。流量控制:限制业务访问的QPS,避免服务因流量的突增而故障。前三种是一种已经出现后的应对措施可以避免因服务故障引起的雪崩问题;后一种是一个预防方案,可以避免因瞬间高并发流量而导致服务故障与Hystrix对比簇点链路:就是项目内的调用链路,链路中被监控的每个接口就是一个资源。默认情况下sentinel会监控SpringMVC的每一个端点(Endpoint),因此SpringMVC的每一个端点(Endpoint)就是调用链路中的一个资源。流控、熔断等都是针对簇点链路中的资源来设置的,因此我们可以点击对应资源后面的按钮来设置规则:Sentinel概述Sentinel
11月4日 上午 9:45

一网打尽:异步神器 CompletableFuture 万字详解!

最近一直畅游在RocketMQ的源码中,发现在RocketMQ中很多地方都使用到了CompletableFuture,所以今天就跟大家来聊一聊JDK1.8提供的异步神器CompletableFuture,并且最后会结合RocketMQ源码分析一下CompletableFuture的使用。Future接口以及它的局限性
11月4日 上午 9:45

性能爆表:SpringBoot利用ThreadPoolTaskExecutor批量插入百万级数据实测!

点击关注公众号,实用技术文章及时了解前言开发目的:提高百万级数据插入效率。采取方案:利用ThreadPoolTaskExecutor多线程批量插入。采用技术:springboot2.1.1mybatisPlus3.0.6swagger2.5.0Lombok1.18.4postgresqlThreadPoolTaskExecutor具体实现细节application-dev.properties添加线程池配置信息#
11月3日 上午 9:45

公司砍的就剩我俩了,万万没想到...

http://apifox.cn/a101javazy1关注官方公众号,了解最新一手咨询!您也可以通过点击阅读原文体验
11月2日 上午 9:45