
Java基础与框架
文章平均质量分 83
全面介绍Java开发设计的基础技术,以及上层设计的各种框架技术和原理
xiangzhihong8
著有《React Native移动开发实战》、《Kotlin入门与实战》、《Weex跨平台开发与实战》、《React Native开发进阶》和《Flutter跨平台开发实战》和《Android应用架构实战》
展开
-
通过 Java 代码生成请求 CSR证书
在 PKI(Public Key Infrastructure,公开密钥基础建设)体系中,证书签名请求(也称为 CSR 或证书请求)是由客户端提交给 CA(Certificate Authority)用于申请数字证书的信息。其中 PKCS#10 规范是 CSR 中最常见的格式。比如,张三和李四通过互联网进行信息传输,他们两者都希望接受到的信息就是对方发送的原始内容,没有被任何篡改,且不能被抵赖。要实现这个目的,其中一个方法就是使用 PKI。在 PKI 中,他们双方都需要生成密钥对,即公钥和私钥。原创 2023-09-27 11:26:04 · 66 阅读 · 0 评论 -
什么是架构,架构的本质是什么
定义 ”架构是什么“ 是件非常困难的事情,不同的组织对于软件架构有不同的定义,每个人心中也有自身对于系统架构定义的认知。就好比我们无法百分之百表述模型而只能产出模型不同维度的视图,对架构进行完备的定义是不可能的。正所谓,“道可道,非常道。名可名,非常名”。这也是行业内不同的组织和个人从不同的视角对 “什么是架构” 的定义或阐述。下面是IEEE组织对软件架构的定义:将系统架构定义为:架构是系统组织结构 + 组件及联系(组件间以及组件和环境之间) + 原则的组合。系统的组织:表达系统的宏观结构。原创 2023-08-31 11:03:11 · 698 阅读 · 0 评论 -
领英采用 Protobuf 进行微服务开发,网络延迟降低60%
这套解决方案中需生成一个用于动态生成 Protobuf 模式定义的符号表,但根据客户端类型的不同,符号表的交付方式也会有所不同。领英团队一直在寻求 JSON 的替代方案,一款负载大小紧凑、系列化效率高,可减少延迟并提升吞吐量的方案。最后,经过全面的思考,领英决定采用在各项考量中综合得分最高的Protobuf。领英平台所采用的是微服务架构,而多年以来,JSON 一直都是领英在微服务暴露的五万余 API 节点中所使用的序列化格式。在全公司范围的推广完成后,领英将延迟降低了 60%的同时,也提高了资源的利用率。原创 2023-08-28 09:53:19 · 244 阅读 · 0 评论 -
一文看懂CDN加速原理
随着互联网的发展,用户在使用网络时对网站的浏览速度和效果愈加重视,但由于网民数量激增,网络访问路径过长,从 而使用户的访问质量受到严重影响。特别是当用户与网站之间的链路被突发的大流量数据拥塞时,对于异地互联网用户急速增加的地区来说,访问质量不良更是一个 急待解决的问题。很多时候,大家都在谈CDN,那么何为CDN,原理是什么,今天就给大家普及普及。CDNCDN的全称是Content Deliv...原创 2018-10-18 15:31:51 · 35221 阅读 · 10 评论 -
面试官:一个Spring Boot项目能同时处理多少个请求
这个方法里面,标号为 ① 的地方,就是判断当前工作线程数是否小于核心线程数,小于则直接调用 addWorker 方法,创建线程。如果不能继续添加,说明队列满了,则来到标号为 ③ 的地方,看看是否能执行 addWorker 方法,创建非核心线程,即启用最大线程数。众所周知,JDK 的线程池,是先使用核心线程数配置,接着使用队列长度,最后再使用最大线程配置。所以如果这个表达式为 true,就表明当前线程池的线程数已经是配置的最大线程数了,那就调用 offer 方法,把当前请求放到到队列里面去。原创 2023-07-20 11:24:12 · 260 阅读 · 0 评论 -
国民级应用,微信是如何治理崩溃的
服务过载便是服务的请求量超出服务所能承受的最高值,可能会导致服务器负载太高,回应延迟时间增加,用户侧表现就是无法加载或是载入迟缓,这也会引起用户进一步的再试,服务一直在对待从前的失效请求,造成合理请求跌 0,甚至造成全部系统软件造成山崩。微信整个负载控制的流程如图所示:当用户从微信发起请求,请求被路由到接入层服务,分配统一的业务和用户优先级,所有到下游的字请求都继承相同的优先级。根据业务逻辑调用1个或多个下游服务。当服务收到请求,首先根据自身服务准入优先级判断请求是接受还是丢弃。转载 2023-06-30 10:42:35 · 54 阅读 · 0 评论 -
JDK 21 中的结构化将带来发编程的一次飞跃
当前的并发编程模型,如ExecutorService API,由于其不受限制的并发模式,引入了复杂性和风险。这种方法将在不同线程中运行的相关任务组视为一个工作单元,从而简化了错误处理和取消,提高了可靠性,并增强了可观测性。在单线程代码中,执行过程总是会强制保证任务和子任务的层次结构,每个子任务相对于其他子任务的生命周期是由代码的语法块结构来管理的。,结构化并发(第二轮孵化)。是甲骨文公司 Java 平台组的工程师,他们意图消除与并发编程相关的常见风险,如线程泄露和取消延迟,并增强并发代码的可观测性。原创 2023-06-25 16:56:03 · 623 阅读 · 0 评论 -
Mac OSX 安装 MongoDB
MongoDB是由C++语言编写,开源而且基于分布式文件存储的介于关系数据库和非关系数据库之间的产品;在高负载的情况下,通过添加更多节点保证服务器性能;旨在为WEB应用提供可扩展的高性能数据存储解决方案;以文档的形式存储数据,数据结构由键值对(key / value);其文档类似 JSON 对象,字段值可以包含其他文档、数组以及文档数组。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。原创 2022-12-20 10:37:51 · 643 阅读 · 1 评论 -
Redis集群部署的三种模式
主从模式是三种模式中最简单的,在主从复制中,数据库分为两类:主数据库(master)和从数据库(slave)。主数据库可以进行读写操作,当读写操作导致数据变化时会自动将数据同步给从数据库;从数据库一般是只读的,并且接收主数据库同步过来的数据;一个master可以拥有多个slave,但是一个slave只能对应一个master;slave挂了不影响其他slave的读和master的读和写,重新启动后会将数据从master同步过来;原创 2022-11-19 15:15:46 · 1097 阅读 · 1 评论 -
ELK保姆级安装部署教程
在后台开发中,日志系统是一个很重要的系统,一个架构良好的日志系统,可以帮助开发者更清楚的了解服务器的状态和系统安全状况,从而保证服务器的稳定运行。日志主要包括系统日志和应用程序日志,运维和开发人员可以通过日志了解服务器中软硬件的信息,检查应用程序或系统的故障,了解故障出现的原因,以便解决问题。目前,在大型的后端架构中,一个标准的数据采集方案通常被称为ELK,即ElasticSearch、Logstash和Kibana。当然,除了ELK,行业内还有一些轻量型数据采集方案,比如Beats、Loki。原创 2022-11-08 15:36:04 · 2660 阅读 · 5 评论 -
轻量级的搜索引擎MeiliSearch
总的来说,对于数据量不是很大的中小型企业来说(几百万到几千万的数据),都可以使用 MeiliSearch 搜索引擎。同时,它的使用场景基本可以覆盖当前主流的平台和技术,如管理后台搜索、小程序搜索等场景中。是一款真正轻量级安装部署、搜索速度快到极致,名副其实的轻量级且美丽搜索引擎。原创 2022-11-05 18:57:10 · 1520 阅读 · 0 评论 -
爱奇艺开源的高性能网络安全监控引擎
PPT。原创 2022-10-27 11:27:54 · 2797 阅读 · 0 评论 -
ClickHouse安装部署
最近由于业务需要,所以研究了一下ClickHouse,也踩了一些坑,在此记录一下。ClickHouse中文文档比较齐全,入门之前建议先看下官方文档,可以减少踩坑和降低学习成本,ClickHouse中文文档地址:https://clickhouse.com/docs/zh/getting-started/tutorial/1,本地安装部署由于我的电脑是mac m1的,所以采用的是下载源码自己构建的方式在本地运行ClickHouse的,参考的是如下的文章:MacOS M1芯片安装ClickHouse 。这原创 2022-05-31 10:47:35 · 789 阅读 · 0 评论 -
Redis官方可视化工具RedisInsight
最近逛了一下Redis官方网站,发现Redis不仅推出了很多新特性,而且还发布了一款可视化工具RedisInsight。试用了一下感觉非常不错,最关键的是能支持RedisJSON之类的新特性,这是第三方工具无法比拟的。RedisInsight简介RedisInsight是Redis官方出品的可视化管理工具,可用于设计、开发、优化你的Redis应用。支持深色和浅色两种主题,界面非常炫酷!可支持String、Hash、Set、List、JSON等多种数据类型的管理,同时支持远程使用CLI功能,功能非常强大.转载 2022-04-19 11:11:21 · 1580 阅读 · 1 评论 -
Intellij Idea 将Java项目打包成jar
最近,在做Android项目的时候,遇到一个下载zip文件并解压的需求,对于普通的文件解压,使用OutputStream和InputStream即可完成。但是,如果需要解压时需要密码什么的,普通的流读取就不行了。最后,找了大半天,找到了一个ZIP4J的开源库,ZIP4J支持以下特性:Create, Add, Extract, Update, Remove files from a Zip fileRead/Write password protected Zip filesAES 128/256 E原创 2022-04-08 16:56:29 · 2227 阅读 · 0 评论 -
Spring 漏洞及其修复方案
Spring社区发布了一篇名为《Spring Framework RCE, Early Announcement》的文章,官宣了最近网传的Spring漏洞。攻击者利用该漏洞,可在未授权的情况下远程执行命令。目前,漏洞利用细节已大范围公开,好在Spring官方已发布补丁修复该漏洞。漏洞分析Spring框架(Framework)是一个开源的轻量级J2EE应用程序开发框架,提供了IOC、AOP及MVC等功能,解决了程序人员在开发中遇到的常见问题,提高了应用程序开发便捷度和软件系统构建效率。2022年3月30原创 2022-04-01 16:35:23 · 2397 阅读 · 0 评论 -
Jenkins+Docker+Gitee+SpringBoot自动化部署
当我们使用传统的开发方式开发后台系统时,每写完一个功能点就需要重新运行一下项目,然后进行测试,如果是项目比较小还可以,但是如果项目比较大的话,由于涉及的人员比较多,这种开发方式就比较麻烦。基于此,我们就需要使用Jenkins配合Gitee搭建一个自动化部署平台,并将代码托管到服务器上,这样减轻了本地的电脑压力,也解放了部署的流程。1, 搭建Jenkins平台首先,我们需要搭建一下Jenkins自动化构建平台。首先,我们需要安装Docker,然后在Docker中安装Jenkins,安装的命令如下:# 安原创 2022-02-28 19:46:13 · 1409 阅读 · 4 评论 -
RedisJson发布官方性能报告,性能碾压ES和Mongo
一、概述近期官网给出了RedisJson(RedisSearch)的性能测试报告,可谓碾压其他NoSQL,下面是核心的报告内容,先上结论:对于隔离写入(isolated writes),RedisJSON 比 MongoDB 快 5.4 倍,比 ElasticSearch 快 200 倍以上。对于隔离读取(isolated reads),RedisJSON 比 MongoDB 快 12.7 倍,比 ElasticSearch 快 500 倍以上。在混合工作负载场景中,实时更新不会影响 Redis翻译 2021-11-25 10:51:56 · 5570 阅读 · 8 评论 -
Spring Boot项目搭建与启动
Spring Boot简介Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。在正式介绍Spring Boot之前,让我们先来看看Spring框架...原创 2020-10-12 18:22:26 · 543 阅读 · 0 评论 -
DBeaver,一款数据库管理工具
前不久,由于Navicat爆出了一些漏洞,具体参考:NAVICAT PREMIUM,公司要求必须卸载Navicat,即便是免安装版也不让使用,那么除了Navicat外,还有哪些可视化的数据库管理工具呢?大体搜索了下,不管是官方的Workbench,还是其他的一些软件,使用体验上都不是很好,偶然间,同事推荐了DBeaver。DBeaver 是一个基于 Java 开发,免费开源的通用数据库管理和开发工具,使用非常友好,且遵循ASL 协议。由于 DBeaver 基于 Java 开发,可以运行在各种操作系统上,比原创 2020-10-09 11:58:26 · 4970 阅读 · 9 评论 -
Spring Boot搭建Web应用
Spring Boot简介Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。 用一句话:不用自己做配置,搭建速原创 2017-02-21 22:57:21 · 4340 阅读 · 0 评论 -
macOS安装Mysql数据库
最近闲来没事,想使用Node+mysql搭建一套服务器环境,并对外提供接口的方式给移动客户端和微信小程序提供数据。这里采用的服务器技术是NodeJs+ThinkJs+mysql,运行的效果如下: 启动服务: 本地测试: 微信客户端从服务端读取数据: 安装Mysql1,下载Mysql安装(官方地址:https://dev.mysql.com/downloads/mysql/),选择对应原创 2017-09-21 10:46:23 · 1562 阅读 · 0 评论 -
Nginx 通过 Lua + Redis 实现动态封禁 IP
背景为了封禁某些爬虫或者恶意用户对服务器的请求,我们需要建立一个动态的 IP 黑名单。对于黑名单之内的 IP ,拒绝提供服务。架构实现 IP 黑名单的功能有很多途径:1、在操作系统层面,配置 iptables,拒绝指定 IP 的网络请求;2、在 Web Server 层面,通过 Nginx 自身的 deny 选项 或者 lua 插件 配置 IP 黑名单;3、在应用层面,在请求服务之前检...转载 2019-02-24 21:04:59 · 714 阅读 · 0 评论 -
mall4j开源商城
简介一个基于spring boot、spring oauth2.0、mybatis、redis的轻量级、前后端分离、防范xss攻击、拥有分布式锁,为生产环境多实例完全准备,数据库为b2b2c设计,拥有完整sku和下单流程的完全开源商城。Mall4j项目致力于为中小企业打造一个完整、易于维护的开源的电商系统,采用现阶段流行技术实现。后台管理系统包含商品管理、订单管理、运费模板、规格管理、会员管理...原创 2019-07-31 10:08:27 · 3481 阅读 · 3 评论 -
netty对http协议解析原理解析
本文主要介绍netty对http协议解析原理,着重讲解keep-alive,gzip,truncked等机制,详细描述了netty如何实现对http解析的高性能。1 http协议1.1 描述 标示ASCII描述字符CR 13Carriage return (回车) \n原创 2016-07-25 23:44:33 · 21067 阅读 · 12 评论 -
Spring 官网下载zip jar
第一步:打开官网:http://www.springsource.org/download/community;第二步:点击图片第三步:点击图标第四步:找到如下链接,点击进去第五步:再找到如下链接点击第六步:点击artifacts标签第七步:再在这个页面的左边菜单点击simple brower后再点击libs-原创 2015-12-29 14:28:28 · 1169 阅读 · 0 评论 -
spring 的OpenSessionInViewFilter简介
假设在你的应用中Hibernate是通过spring 来管理它的session.如果在你的应用中没有使用OpenSessionInViewFilter或者OpenSessionInViewInterceptor。session会在transaction结束后关闭。如果你采用了spring的声明式事务模式,它会对你的被代理对象的每一个方法进行事务包装(AOP的方式)。如下:原创 2014-09-25 13:47:58 · 3948 阅读 · 0 评论 -
hibernate 5.2.6新特性
概述Hibernate ORM 5.2.6 发布了,Hibernate是一种Java语言下的对象关系映射解决方案。 它是使用GNU宽通用公共许可证发行的自由、开源的软件。它为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架。 Hibernate ORM 5.2.6 发布不到一个月,网上关于Hibernate ORM 5.2.6 的资料甚少,这里我们只能借助官网的介绍来做一个简原创 2017-01-07 10:39:15 · 10198 阅读 · 3 评论 -
Hibernate之初体验
在开始学Hibernate之前,一直就有人说:Hibernate并不难,无非是对JDBC进一步封装。一句不难,难道是真的不难还是眼高手低? 如果只是停留在使用的层面上,我相信什么技术都不难,看看别人怎么做的,你也可以很快上手。 这难道是学习的最终目的吗? 不是,绝对不是。我们需要了解这门技术的基本概念,它到底是什么,它是干什么的,它有什么优缺点原创 2016-03-11 17:57:06 · 2378 阅读 · 0 评论 -
天下网上系统使用及介绍
源码我已经放在git上了,有需要的可以到https://github.com/xiangzhihong/B2CShop系统介绍本章的天下陶网络商城主要分为:前台游客浏览、普通用户操作和后台管理3部分。结合目前网上购物平台系统的设计方案,本项目具有以下特点:界面设计美观大方、操作简单。功能完善、结构清晰。普通用户的购物操作。能够实现后台用户和商品管理。能够实现推荐商品的操作。原创 2016-03-10 12:27:40 · 2900 阅读 · 1 评论 -
史上最强Spring mvc入门
最强Spring mvc入门转载 2016-04-02 22:35:56 · 2533 阅读 · 0 评论 -
Spring的声明式事务管理
在service类前加上@Transactional,声明这个service所有方法需要事务管理。每一个业务方法开始时都会打开一个事务。Spring默认情况下会对运行期例外(RunTimeException)进行事务回滚。这个例外是unchecked如果遇到checked意外就不回滚。如何改变默认规则:1 让checked例外也回滚:在整个方法前加上 @Transa转载 2016-01-31 12:15:09 · 2288 阅读 · 0 评论 -
hibernate链接数据库链接池c3p0配置
[html] view plain copybean id="dataSourceLocal" name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> property name="driverClass" value="${jdbc.dr转载 2016-01-31 10:00:48 · 985 阅读 · 0 评论 -
Spring 官网jar下载
1,首先输入http://spring.io/进入Spring官网2,点击project 栏,找到Spring framwork3,点击reference 4,找到Distribution Zip Files,点击下载spring的web链接,http://repo.spring.io/release/org/springframework/spring/原创 2015-12-29 14:51:18 · 2520 阅读 · 0 评论 -
使用schemaExport自动生成表结构
一.Hibernate原生状态 ?12345Configuration cfg = newConfiguration().configure(); SchemaExport export = newSchemaExport(cfg); expo原创 2015-12-29 09:27:09 · 2286 阅读 · 0 评论 -
eclipse搭建ssh后台
SSH框架是最常用的框架之一,在搭建SSH框架的时候总有人遇到这样,那样的问题。下面我介绍一下SSH框架搭建的全过程。 第一步:准备工作。 下载好eclipse,Struts2,Spring,Hibernate。 1.eclipse:eclipse下载的时候建议下载JavaEE版的eclipse。 当然你也可以下载eclipse-SDK。(下原创 2015-09-10 15:13:38 · 1234 阅读 · 0 评论 -
java造成内存泄露原因
一、Java内存回收机制 不论哪种语言的内存分配方式,都需要返回所分配内存的真实地址,也就是返回一个指针到内存块的首地址。Java中对象是采用new或者反射的方法创建的,这些对象的创建都是在堆(Heap)中分配的,所有对象的回收都是由Java虚拟机通过垃圾回收机制完成的。GC为了能够正确释放对象,会监控每个对象的运行状况,对他们的申请、引用、被引用、赋值等状况进行监控,Java会使用有向图的方原创 2015-04-04 21:59:12 · 1233 阅读 · 0 评论 -
解决Eclipse报errors running builder ‘javascript validator’ on project
今天导入jquery的js到项目中,Eclipse老是动不动就报错:errors running builder ‘javascript validator’ on project如图:解决办法:右击项目名–Properties–Builders–将JavaScript Validator前面的勾去掉即可。转载 2014-09-25 14:35:13 · 1430 阅读 · 0 评论 -
spring事务配置
1、声明式事务配置* 配置SessionFactory* 配置事务管理器* 事务的传播特性* 那些类那些方法使用事务具体配置如下:LocalSessionFactoryBean">classpath:hibernate.cfg.xml//这个classpath是spring为我们提供的专门用来读取classpath环境下的文件的原创 2014-09-25 14:08:34 · 1501 阅读 · 1 评论 -
Android+struts2+json方式模拟手机登录功能
涉及到的知识点: 1.Struts2框架的搭建(包括Struts2的jSON插件) 2.Android前台访问Web采用HttpClient方式。 3.Android采用JSON的解析。服务端主要包含一个Action,通过struts的web配置配置struts.xml驱动业务逻辑的执行,然后对于符合条件的登录,返回给客户端通过jsonobject包装的数据。原创 2016-03-14 15:28:19 · 6109 阅读 · 0 评论